本買った

これ。。

まつもとゆきひろ コードの世界?スーパー・プログラマになる14の思考法

まつもとゆきひろ コードの世界?スーパー・プログラマになる14の思考法

惹きが強過ぎて通り過ぎることができなかった。
かっこいいです、まつもとさん。


日経Linuxの連載「まつもと直伝 プログラミングのオキテ」をまとめて加筆・修正したものらしいので、興味のある節をちょっとした時間につまみ読みするのにも適していると思う。

Bazaar 入れた

詳解 MySQLを買ったので、早速この本の中で紹介されているBitKeeperなるソースコード管理ツールを入れようと思ったが、
現在は Bazaar という別のツールに移行している模様。なので早速こちらをインストールしてみる。

Bazaar インストール

1. MacOSXBundle - wiki.bazaar.canonical.com からダウンロード
2. インストーラをダブルクリックでインストール
3. 早速 bzrコマンドを…と思ったら「/usr/local/bin/」パスが通ってなかったので、パスを通す

$ vi ~/.bashrc
export PATH=/usr/local/bin/:/Users/sato_k/bin:/opt/local/bin:/opt/local/sbin/:$PATH

MySQLソースコードをチェックアウト

1. ワーキングコピー(ブランチ)用のディレクトリ作成

$ mkdir bzr

2. shared repository(共用レポジトリ?)を作成
必須という訳ではないが、一度作っておくと各リビジョンのヒストリを一つのディレクトリで管理してくれるので、別ブランチを作成する際のダウンロード時間が短縮されるらしい。

$ cd bzr
$ bzr init-repo .
Shared repository with trees (format: pack-0.92)
Location:
  shared repository: .

3. ブランチの作成(CVSでいうチェックアウト)
MySQL Server in Launchpadの「Series and milestones」からチェックアウトしたいリリースを選択。
左下の「:lp:mysql-server」をクリック。
「Get this branch」という項目が選択したブランチ作成のためのコマンドとなっている。
それではブランチ作成。ちょっと時間が掛かるので、気長に待つ。

$ bzr branch lp:mysql-server
You have not informed bzr of your Launchpad ID, and you must do this to
write to Launchpad or access private data.  See "bzr help launchpad-login".
|   1864kB @   46kB/s                                                               

NHKの英語講座が素晴しい

のは前からだけど、今年からはWebとの連動も本格的に始まってさらに良くなっている。
特に、テキストが無く、Webサイトでの学習に焦点を絞ったニュースで英会話 - トップが非常に使えることにさっき気づいた。
NHKの持っている英語コンテンツを活かしているので他はマネできないと思う。


とりあえずこの「ニュースで英会話」と「トラッドジャパン」、「英語5分間トレーニング」だけは毎日聴いてみる。


ほんとNHKにはお世話になってるなぁ。受信料支払い拒否とかよく聞くけど、単に活用してないだけな気がする。
むしろ自分はもっと払う。テレビ無いけど。

Windows でも Mac の commandキーを使いたい

眠いのでとりあえずメモだけ。
後で書き直す。
会社のWindowsでもMacみたいにControlキーとCommandキーを使い分けたい。なぜなら、Unixキーバインド(Ctrl-d 等)を使用しても、Firefoxのショートカットキー(Command-d 等)に影響を与えないから。

実行手順

窓使いの憂鬱で、WindowsキーをAltに割り当てる
Firefoxの設定で、ショートカットキーのプレフィックスをControlからAltに変更する

いまここ。できるか分からないので要調査。
keyconfigを使えばいいのかもしれないけど、あくまでもショートカットキーのプレフィックスのみを変更できれば嬉しい。できなかったらkeyconfigで地道に変更する。
追記
keyconfigではAltとの組み合わせは無理っぽい。Shiftにするか…。

窓使いの憂鬱の設定方法は分かったので、後はFirefoxのショットカットキーのプレフィックスをCtrlからAltに変える方法が見つかれば望みが叶う。

追記 (2009/03/13(金))

できたので、忘れない内にメモ。

手順

1. Firefoxの accelKey を Control から Alt に変更
「%APPDATA%\Mozilla\Firefox\Profiles\xxxxxxxx.default\」に user.js を以下の内容で作成する。
コメントで教えていただいた。
(なぜかabout:configでは設定が有効とならなかった)

user_pref("ui.key.accelKey", 18);
user_pref("ui.key.generalAccessKey", 0);
user_pref("ui.key.menuAccessKey", 0);

2. 窓使いの憂鬱を使用して、LWinキーをAltに割り当て & Emacs(というよりUnix?)風キーバインド設定
以下の内容で作成する。
[TODO]
全て選択を追加(C-a でとられてしっまている)
検索を追加(C-f でとられてしまっている)

keymap Global

# HHK Pro は104キーボード
include "104.mayu"

# LeftWindowsキーをaltに割り当てる
# refer to http://mayu.sourceforge.net/mayu/doc/README-ja.html (iii. モディファイヤキー割り当ての変更)
mod alt = LWin
key *LWin = *LAlt

# PuTTy 起動時はEmacs風キーバインドを使用しないようにする
# refer to:
# http://jisx6004.client.jp/mayu2.html#9
# http://jisx6004.client.jp/mayu2.html#9
# 正規表現に否定の先読み /(?!PuTTy.exe)/ を利用して、PuTTy以外を指定したかったが、できない模様。。
window PuTTY /(firefox|iexplore|gvim|TeraPad)\.exe/ : Global


# 存在するとskkimeなどに干渉するEmacsのキーバインドもあるので、
# 適宜必要なものだけを定義。
include "default.mayu"
#include "emacsedit.mayu"

 key C-A		= Home			# 行頭
 key C-B		= Left			# ←
 key M-B		= C-Left		# ←(単語)
 key C-E		= End			# 行末
 key C-F		= Right			# →
 key M-F		= C-Right		# →(単語)
 key C-G		= Escape		# CANCEL
 key C-N		= Down			# ↓
 key C-P		= Up			# ↑
 key C-D		= Delete				# 削除
 key C-K		= $EmacsEdit/kill-line	l		# 行末まで削除
 key C-M		= Return				# RETURN
# Redoと被るので保留
# key C-Y		= C-V


これで大分Macの操作感に近付いた。


後は出来れば、コピー・ペーストを Control-* の組み合わせの替りに Alt-* で実行できるようにしたい。また、Firefoxで、マウスを使用して新規タブでウインドウを開くときは変わらず Control-クリック なので、できればこちらも Alt-クリックにしたい。


今日これで寝る。また進捗があれば追記する。


追記

結局いろいろ障害があって、FirefoxのaccelキーにAltを使うのは諦めたorz
FirefoxではC-hのみを使って、TeraPadなどではEmacsキーバインドにしておく。
.mayu

# HHK Pro は104キーボード
include "104.mayu"

keyseq $WindowClose = A-F4



keymap Global
	# windowsキーを一回押したときはWindowsキーに、長押しではshiftキーとして使用する

	mod shift += !!Space # SandS

	key C-H		= BackSpace


keymap KeymapDefault = &Default
	# windowsキーを一回押したときはWindowsキーに、長押しではshiftキーとして使用する
	mod shift += !!Space # SandS

	# LeftWindowsキーをaltに割り当てる
	# refer to http://mayu.sourceforge.net/mayu/doc/README-ja.html (iii. モディファイヤキー割り当ての変更)
#	mod alt = LWin
#	key *LWin = *LAlt

	# LeftAltをLeftlWindowsキーに割り当てる
#	mod windows = LAlt
#	key *LAlt = *LWin


include "emacsedit.mayu"


keymap2 EmacsGlobalC-X : EmacsC-X
# key C-S        = C-S           # 上書き保存(S)
# key C-W        = LAlt F A      # 名前を付けて保存(A)...
# key C-F        = C-O           # 開く(O)...
# key K          = C-N           # 新規作成(N)
# key C-C        = $WindowClose  # 終了(X)

window EmacsGlobal /(iexplore|TeraPad)\.exe/ : EmacsEdit
#	key C-X		= &Prefix(EmacsGlobalC-X)
	key C-X		= &Prefix(KeymapDefault) # mayu に左右されないキー入力(Windowsのショートカットを使いたいとき用)

.emacsedit.mayu

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# 窓使いの憂鬱 - emacsedit.mayu
# Copyright (C) 1999-2005, TAGA Nayuta <nayuta@users.sourceforge.net>
#


#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# Emacs 風移動コマンド
#

keymap	EmacsMove : Global
 key C-Space		= &Undefined		# Mark
 key C-A		= Home			# 行頭
 key C-B		= Left			# ←
 key C-E		= End			# 行末
 key C-F		= Right			# →
 key C-G		= Escape		# CANCEL
 key C-L		= &WindowRedraw &Recenter # 再描画
 key C-N		= Down			# ↓
 key C-P		= Up			# ↑
# key C-S		= C-F			# 検索

key S-C-A		= S-Home		# 行頭(選択)
key S-C-B		= S-Left		# ←(選択)
key S-C-E		= S-End			# 行末(選択)
key S-C-F		= S-Right		# →(選択)
key S-C-N		= S-Down		# ↓(選択)
key S-C-P		= S-Up			# ↑(選択)
key S-C-V		= S-Next		# 次頁(選択)
key S-M-V		= S-Prior		# 前頁(選択)


#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# Emacs 風編集コマンド
#

 keyseq	$EmacsEdit/kill-word		= S-C-Right C-X
 keyseq	$EmacsEdit/backward-kill-word	= S-C-Left C-X
 keyseq	$EmacsEdit/transpose-chars	= S-Right C-X Left C-V Right
 keyseq	$EmacsEdit/upcase-word		= S-C-Right C-C *&Sync \
					  &ClipboardUpcaseWord C-V
 keyseq	$EmacsEdit/downcase-word	= S-C-Right C-C *&Sync \
					  &ClipboardDowncaseWord C-V
 keyseq	$EmacsEdit/kill-line		= &EmacsEditKillLineFunc S-End C-X \
			&Sync &EmacsEditKillLinePred((Delete), (Return Left))
 keyseq	$EmacsMark/cancel		= Left Right


keymap	EmacsEdit : EmacsMove
keymap2	EmacsMark : EmacsEdit = $EmacsMark/cancel &KeymapWindow
keymap2 EmacsMarkEscape : EmacsMark = &KeymapParent

keymap2	EmacsC-X : EmacsEdit
 event prefixed		= &HelpMessage("EmacsEdit C-x-", "C-x u\tundo")
 event before-key-down	= &HelpMessage
 key *U			= C-Z					# UNDO

keymap2 EmacsC-U0_9C-U : Global \
		= &Repeat((&KeymapWindow), 100) &HelpMessage &Variable(0, 0)
 key C-G	= &HelpMessage &Variable(0, 0) &Ignore
 
keymap2 EmacsC-U0_9 : EmacsC-U0_9C-U
 event prefixed		= &HelpVariable("繰り返し")
 key _0 Num0		= &Variable(10, 0) &Prefix(EmacsC-U0_9)
 key _1 Num1		= &Variable(10, 1) &Prefix(EmacsC-U0_9)
 key _2 Num2		= &Variable(10, 2) &Prefix(EmacsC-U0_9)
 key _3 Num3		= &Variable(10, 3) &Prefix(EmacsC-U0_9)
 key _4 Num4		= &Variable(10, 4) &Prefix(EmacsC-U0_9)
 key _5 Num5		= &Variable(10, 5) &Prefix(EmacsC-U0_9)
 key _6 Num6		= &Variable(10, 6) &Prefix(EmacsC-U0_9)
 key _7 Num7		= &Variable(10, 7) &Prefix(EmacsC-U0_9)
 key _8 Num8		= &Variable(10, 8) &Prefix(EmacsC-U0_9)
 key _9 Num9		= &Variable(10, 9) &Prefix(EmacsC-U0_9)
 key C-U		= &Prefix(EmacsC-U0_9C-U)

keymap2 EmacsC-U : EmacsC-U0_9C-U
 event prefixed		= &HelpVariable("繰り返し")
 key _0 Num0		= &Variable(0, 0) &Prefix(EmacsC-U0_9)
 key _1 Num1		= &Variable(0, 1) &Prefix(EmacsC-U0_9)
 key _2 Num2		= &Variable(0, 2) &Prefix(EmacsC-U0_9)
 key _3 Num3		= &Variable(0, 3) &Prefix(EmacsC-U0_9)
 key _4 Num4		= &Variable(0, 4) &Prefix(EmacsC-U0_9)
 key _5 Num5		= &Variable(0, 5) &Prefix(EmacsC-U0_9)
 key _6 Num6		= &Variable(0, 6) &Prefix(EmacsC-U0_9)
 key _7 Num7		= &Variable(0, 7) &Prefix(EmacsC-U0_9)
 key _8 Num8		= &Variable(0, 8) &Prefix(EmacsC-U0_9)
 key _9 Num9		= &Variable(0, 9) &Prefix(EmacsC-U0_9)
 key C-U		= &Variable(4, 0) &Prefix(EmacsC-U)

keymap	EmacsEdit
 key C-Space		= &Prefix(EmacsMark)			# Mark
 key C-C		= C-C
 key C-D		= Delete				# 削除
 key C-H		= BackSpace				# BS
 key C-J		= Return				# RETURN
 key C-K		= $EmacsEdit/kill-line			# 行末まで削除
 key C-U		= &Variable(0, 4) &Prefix(EmacsC-U)
 if ( !ZXCV ) key C-X	= &Prefix(EmacsC-X)
# key C-Y		= C-V					# PASTE
 key C-Slash		= C-Z					# UNDO

keymap2	EmacsMark
 key Home		= S-C-Home	&Prefix(EmacsMark)	# 文頭
 key End		= S-C-End	&Prefix(EmacsMark)	# 文末
 key C-A		= S-Home	&Prefix(EmacsMark)	# 行頭
 key C-B		= S-Left	&Prefix(EmacsMark)	# ←
 key C-E		= S-End		&Prefix(EmacsMark)	# 行末
 key C-F		= S-Right	&Prefix(EmacsMark)	# →
 key C-G		= $EmacsMark/cancel &Undefined		# キャンセル
 key C-N		= S-Down	&Prefix(EmacsMark)	# ↓
 key C-P		= S-Up		&Prefix(EmacsMark)	# ↑
 if ( !ZXCV ) key C-V	= S-Next	&Prefix(EmacsMark)	# 次頁
 key Left		= S-Left	&Prefix(EmacsMark)	# ←
 key Up			= S-Up		&Prefix(EmacsMark)	# ↑
 key Right		= S-Right	&Prefix(EmacsMark)	# →
 key Down		= S-Down	&Prefix(EmacsMark)	# ↓

はぁ、なんだか疲れただけだったなぁー。。
keyremap4macbookみたいなのがWindowsにもあればいいのに。。

ディスプレイ買った

Macbookの画面の狭さが嫌になってきたので、デュアルディスプレイにするために購入。
買ったのはこれ。

秋葉原のヨドバシで14万9800円 + ポイント20%。あと、Macbookとの接続に必要なアップル Apple Mini DVI-DVIアダプタ M9321G/Bも買った。Dvi延長ケーブル(オス-オス)も買ってしまったんだけど、実はディスプレイにも付いてきたのでいらなかった。。
あと、3万円分ポイントが付いたので、HHKPro2ももう一個会社用に購入した。

買った後にやったこと

ファインコントラストモードの種類を「Text」に変更

若干赤みがかった発色になるけど、白を基調とした画面を見るときには目が疲れにくくなる気がする

ディスプレイを縦表示にする

最初、何も考えずに縦表示にしたら縦横比のバランスが崩れた表示になってちょっと焦ったが、Macbookビデオカード自身に縦表示機能が備わっていて、それがモニターの「ActiveRotationII」とかいう機能と干渉してしまったのが原因ぽい。
この機能をOffにしたらちゃんと表示できるようになった。
参考:

一つ困ったことがあったので、その解決法をメモ。

Macbookを一度スリープ状態にして復帰したときに、メイン画面のMacbookのディスプレイに何も表示されなくなってしまう(画面は真っ黒な状態)。
MacbookのminiDVIのケーブルを抜き差しすれば元に戻るのだけど、そもそもこんなことせずに済む方法はないのかなぁ。。
参考:MacBook をデュアルモニタで使っていてメインの方に何も表示されなくなった場合の対処方法 - 頭ん中

子クラスから親クラスのコンストラクタを呼ぶ

コード
<?php
class parentCls
{
    public function __construct() {
        echo "in parent constructor.\n";
    }
}

class childCls extends parentCls
{
    public function __construct() {
        parent::__construct();
        echo "in child constructor.\n";
    }
}

$c = new childCls();
?>
実行結果
in parent constructor.
in child constructor.

子クラスにコンストラクタが指定されていない場合は親クラスのコンストラクタが自動的に呼ばれるみたい。

はてなスター

もう大分前に自分が付けたブクマにスターを付けてもらえることがある。
その時に付けたブクマコメントを見て、その時に感じたこと、知りたかったことを思い出す。
はてなスターが付かなかったらもう見ることがなかったかもしれないブクマ。
はてなスターが導入されたときは全く存在意義が分からなかったけど、こういった価値もあるんだなぁ。