知的な誠実さ

February 04, 2010category: Books 

コードコンプリートの下巻に「プログラミングのプロたるものはこうあるべきだ論」があった。(P.437)

  • 専門家でないのに専門家のふりをしない。
  • 自分の過ちを素直に認める。
  • コンパイラの警告メッセージを出ないようにするのではなく、それを理解することに努める。
  • プログラムのコンパイルが通るかどうかを確かめるのではなく、プログラムをきちんと理解する。
  • 現状どおりの進捗を報告する。
  • 現実的なスケジュールを見積もり、経営陣がスケジュールの調整を求めてきても一歩も引かない。

ですよね、的な内容。具体例を挙げるとこんな感じだろうか?

専門家でないのに専門家のふりをしない。

×「HTML5 ね。はいはい。動画見られるよね (実装したこと無いけど)」

自分の過ちを素直に認める。

×「ライブラリのコードにバグがあったんです!」

コンパイラの警告メッセージを出ないようにするのではなく、それを理解することに努める。

×「意味不明なエラーが出るなあ。try...catch で囲っておけばいいか」

プログラムのコンパイルが通るかどうかを確かめるのではなく、プログラムをきちんと理解する。

×「< を <= にしたら動いた。ラッキー」

現状どおりの進捗を報告する。

×「90% できました!(本当は 50%)」

現実的なスケジュールを見積もり、経営陣がスケジュールの調整を求めてきても一歩も引かない。

×「仕方ない。テスト期間を減らして 20 営業日を 15 営業日にしましょう」

そうは言っても

5 つめまでは自省すれば済むことだが、最後のやつが問題。"一歩も引かない" とあるが、現実は厳しい。何故なら力関係があるから。
自分よりパワーを持つ者 (上司やクライアント) から理不尽な機能追加依頼や工数削減の依頼が来た場合、どう対処すればよいだろう?交渉力?

comments (0)

Vim script で数当てゲームを作った

February 03, 2010category: Vim 

Vim script の勉強ということで、数当てゲームを作ってみた。プラグイン作成までの道のりは長い…。

let n = 9
let temp = matchend(reltimestr(reltime()), '\d\+\.') + 1
let b:answer = reltimestr(reltime())[temp : ] % (n + 1)

function! WaitUserInput()
  let l:userInput = input("数字を入力してください: ")

  if match(l:userInput, "^\\d\\+$") == -1
    call WaitUserInput()
  endif

  if b:answer == l:userInput
    redraw
    echo "あたり!正解は" . b:answer
  elseif b:answer < l:userInput
    echo l:userInput . "より小さいです\r"
    call WaitUserInput()
  elseif b:answer > l:userInput
    echo l:userInput . "より大きいです\r"
    call WaitUserInput()
  endif
endfunction

call WaitUserInput()

hoge.vim などと適当なファイルに保存して、:so hoge.vim で実行されます。

参考サイト

comments (0)

私の手帳術 2010

February 03, 2010category: Business Diary 

システム手帳を使うようになって 1 年以上経過しました。ここらで雑感をば書きなぐります。また、自分なりの手帳術も紹介します。おすすめの手帳術がありましたらコメントください。

システム手帳以前

システム手帳以前はリングノートを使っていたのですが「大人っぽく」なりたいがためにシステム手帳を導入。

使っているシステム手帳

Filofax のバイブル型。大きすぎず小さすぎず調度良い。

入れているリフィル

  • クリアポケット
  • 月間カレンダー
  • 6 穴パンチ
  • 下敷き
  • 白紙
  • 鉄道マップ
  • 地図(世界/国内)
  • ポストイット

罫線が苦手なのでノートは白紙。6 穴パンチが意外と便利で、A4 の資料を折り曲げてファイリングしています。地図系はあまり必要ではないがにぎやかしに。

システム手帳の利点

  • カスタマイズできる
  • ずっと使える
  • 「デキるっぽい」を演出できる
  • PC に依存しない

システム手帳の欠点

  • 左のページが書きづらい
  • 図などを書くときは狭い
  • リフィルを買いに行くのが面倒くさい
  • PC に保存できない

私の手帳術

出社したら、まずその日のすべてのタスクを書き出します。"すべて" なので「メールのチェック」「ネット (feed) のチェック」も含みます。書き出しが終わったらメールをチェックして、メールにタスクがあった場合はそれを追加します。あとはひたすら、タスクを片付けつつ新規タスクが発生したら追加、のループを実行します (昔はこれをホワイトボードで行っていました)。

20100203a.jpg

字が汚いのは仕様。この日は忙しかったので、優先度が低いものは翌日に持ち越した。

comments (0)

Dynamic Dummy SWF Generator を作った

January 28, 2010category: Develop Diary 

Dynamic Dummy Image Generator を真似て Dynamic Dummy SWF Generator を作りました。ダミーの SWF が欲しい方 (いるのか?) に使っていただければと。

comments (0)

CentOS 5.4 に Ming を入れた

January 27, 2010category: CentOS Develop PHP Server 

CentOS 5.4 に Ming を入れた。yum でも入れられるけど、PHP から使いたかったのでソースからコンパイル。

# wget http://downloads.sourceforge.net/project/ming/Development%20Snapshots/ming%200.4.0-rc2/ming-0.4.2.tar.bz2?use_mirror=jaist
# tar xvf ming-0.4.2.tar.bz2 
# cd ming-0.4.2
# ./configure --enable-php --enable-perl

...

Config summary: 
  C++ enabled
  Perl extension enabled
  PHP extension enabled
  Python extension disabled
  Tcl extension disabled
  ZLIB enabled (-lz)
  Freetype library enabled (/usr/bin/freetype-config)
  GIF library enabled (-lungif)
  PNG library enabled (-lpng)

# make
# make install
# echo "extension=ming.so" > /etc/php.d/ming.ini
# service httpd restart

途中、make install で以下のようなエラーが出た。

make[2]: Leaving directory `/usr/local/src/ming-0.4.2/php_ext/tmp'
/usr/bin/install -c -d ""/`php-config --extension-dir`
/usr/bin/install -c -m 755 tmp/modules/ming.so" ""/`php-config --extension-dir`
/bin/sh: -c: line 0: unexpected EOF while looking for matching `"'
/bin/sh: -c: line 1: syntax error: unexpected end of file
make[1]: *** [install] Error 2
make[1]: Leaving directory `/usr/local/src/ming-0.4.2/php_ext'
make: *** [install-recursive] Error 1

php_ext/Makefile にミスがあるらしいので修正する。

tmp/modules/ming.so"

この部分を

"tmp/modules/ming.so"

にすれば OK。

追記

Ming/PHP で、Dynamic Dummy SWF Generator を作った。

comments (2)