Tuesday, March 31, 2009

03/31/2009


  • 今日は、ある田町のクライアントでの最後の業務だった。

  • もうひとりのエンジニアは、対応する作業もなかったようで、午前中のみで退社した。

  • 彼ともう少し仕事をしてみたかったが。

  • ほぼ定時で終業して、軽く挨拶して退社した。

  • 明日から、初台のクライアントとの仕事を開始する予定だ。

Monday, March 30, 2009

03/30/2009


  • 15:00 からのミーティングにて、本日と明日の作業を決定した。

  • 最終日の事務的な作業などを確認した。

  • 18:15 ごろに退社した。

  • X31 にインストールできない FreeBSD について twitter 経由でコメントをもらったので、リプライしたら、またリプライをもらった。

  • だけど、まだ対応していない。

Sunday, March 29, 2009

03/29/2009


  • 11:00 から散髪した。いつもの人に担当してもらった。キレイな人ですね。

  • ThinkPad X31 に FreeBSD をインストールしようと考えていたが、7.1 も 7.0 も CD-ROM から起動したあと、一定の時間が経過するとフリーズしてしまう。謎。あきらめた。

  • 例の本が配送された。

  • つか、X31 かダンボールか、どちらか不明だが、すごい灯油?臭くて大変だった。もう大丈夫そう。

  • バッテリーのゴム足が欠損しているようだった。地味に悲しい。

Saturday, March 28, 2009

03/28/2009


  • 10:30 ごろ起床した。

  • 今日からエビと一緒に生活する。エサは不要らしい。

  • 本を読んだ。

  • Vim 勉強会に参加する手続きをした。

  • 発送されたらしい ( ThinkPad X31、メモリ、本

Friday, March 27, 2009

03/27/2009


  • プロパな人は朝からお客さんのお客さんの本社?でミーティングらしく。

  • このミーティングで大きな問題が発生しなければ、残りの数日をマッタリすごせるハズ。

  • そして、大きな問題は発生しなかったようだ、たぶん。

  • 18:00 で終業した。


Thursday, March 26, 2009

03/26/2009


  • 今月末まで一緒に仕事をする人が今月末で自社を退社すると聞いて驚いた。

  • 今日からナンバーディスプレイを有効にしている。

  • 発信者が番号を通知しない場合、電話の着信音が鳴らない仕組み。



Wednesday, March 25, 2009

03/25/2009


  • N にて 14:00 から 18:00 までミーティング...。

  • つか、長すぎるんだよね。

  • 休憩とか考えてほしす。

  • 女性が乗った自転車にひかれた。


Tuesday, March 24, 2009

03/24/2009


  • 寝不足

  • 23:30 ごろに寝た。




Monday, March 23, 2009

03/23/2009


  • 18:30 ごろ職場を出た。

  • ただし、書類的に 17:45 で終了なんですけどね。

  • デバッグに printf でなく debugger を活用するように、と神からのお告げをいただいた。

  • そのため、今日からデバッグに gdb を使用する。


Sunday, March 22, 2009

03/22/2009

Saturday, March 21, 2009

03/21/2009


  • たぶん 8:00 ごろに就寝、たしか 13:30 ごろに起床した。

  • ずっと bug ってたプログラムを修正した。

  • = の部分を == と記述していたようだ...、これはヤバい。

  • FreeBSD 7.1 on ThinkPad T61 を設定した。

  • Handbook どおりに設定しても、Wireless LAN を設定できない。なぜ?

Friday, March 20, 2009

03/20/2009


  • キムチ鍋





Connecting To The Internet Via Internet Sharing On MacBook

ThinkPad T61 に FreeBSD 7.1 をインストールしようとしていた。bootonly の ISO イメージを使用したため、インストールに必要なファイルをインターネットからダウンロードしなければならなかった。

"""どれを使用してインターネットに接続しますか?"""

のような質問が表示されたが、選択肢に 内蔵の wireless network カードは存在しなかった。FreeBSD を有線コネクションでインストールしなけばならない?ようだ。FreeBSD をインストールしようとしているマシンと、AirPort Extreme は、3 m ほど離れている。この距離を満足させる ethernet ケーブルを所持していなかった。

ふと、Mac OS X の Internet Sharing 機能を思い出した。この機能を ethernet ケーブルで使用し、つまり、MacBook と ThinkPad を ethernet ケーブルで直結したら、インターネットに接続できるだろ?と思った。ただし、問題が存在した。マシンを直結するなら ethernet crossover cable を必要とするだろうと。以前まで多くのケーブルを所有していたが、家内のネットワークを無線で構築した後、ほとんどのケーブルを廃棄してしまった。おそらくクロスケーブルも。そのため、短いストレートケーブルしか所有していなかった。

ダメもとで、ストレートケーブルを MacBook と ThinkPad に装着してみた。こんな感じのネットワークとなる:

"""The Internet <---> AirPort Extreme <---> MacBook <---> standard straight through cable <---> ThinkPad"""

この構成で MacBook の Internet Sharing を有効してみたところ、ThinkPad から Internet にアクセスできる!クロスケーブルじゃなくても大丈夫なのか...。おそらく、MacBook が対応しているんだろう、こうい状況に。

Installing FreeBSD 7.1 on ThinkPad T61, X31

FreeBSD 7.1 を ThinkPad にインストールしたときの作業をメモしておく。FreeBSD を自宅のデスクトップ用途に使用するためのインストレーションだ。FreeBSD 7.1 をインストールしたマシンは、T61 - 889703U - と X31 - 2672-1E9 - だ。



以前、satoshiabe.jp : Installing FreeBSD 6.0 on an IBM ThinkPad T41 にて解説したフローと同様に作業する。ただし、もともと私が FreeBSD を得意としていないため、そもそも勘違いしていたり、または、回りくどい何かをしてしまっているかもしれない。間違いを発見したら、都度、本ポストをアップデートする予定だ。



01. Burning an iso image file

FreeBSD を ThinkPad にインストールするため、ISO イメージをダウンロードし、CD に焼く。使用した ISO イメージは、これだ。


T61 用 :
7.1-RELEASE-amd64-bootonly.iso

X31 用 :
7.1-RELEASE-i386-bootonly.iso


つまり、インストールに必要なパッケージを、インターネットからダウンロードしつつインストールする。そのため、インターネットに接続していなければならない。FreeBSD をインストールするとき、T61 と X31 ともに有線によるインターネット接続 - SATOSHI ABE ON BLOG: Connecting To The Internet Via Internet Sharing On MacBook - で作業した。インストールした後に無線の設定を実施した。


###
bootonly な CD-ROM を使用し、ThinkPad X31 に FreeBSD 7.1 または 7.0 をインストールしようとしたところ、インストレーションの途中で必ずフリーズしてしまった。最終的に、bootloader のメニューにおいて "4. Boot FreeBSD in single user mode" を選択したところ、フリーズしなかった。原因は不明だ。
###





02. Choosing options before installing

デフォルト?のエディタを "ee" から "vi" へ変更した。



パーティションを、以下のように分割した。

/ : 512 MB
swap : 1024 MB
/var : 1024 MB
/tmp : 1024 MB
/usr : 残りすべて





03. Installing FreeBSD

一般ユーザを "operator" と "wheel" グループに追加する。





04. Setting up stuff...

tmp ディレクトリを整理しておく。

# mv /var/tmp/* /tmp
# rm -fr /var/tmp
# ln -s /tmp /var/tmp


後ほど Window Manager の Xfce をインストールするが、Xface を startx コマンドで実行するとき、ホスト名から IP address を解決できないと、エラーが発生してしまう。そのため、"/etc/hosts" コマンドの既存のエントリに、ホスト名と、FQDN を追加しておく。

# vi /etc/hosts

127.0.0.1 localhost localhost.localdomain

127.0.0.1 localhsot localhost.localdomain apple apple.satoshiabe.jp
のように変更した。



ntpd を設定しておく。次回の起動から ntpd が起動される。

# vi /etc/ntpd.conf
server ntp.jst.mfeed.ad.jp
server 127.127.1.0
driftfile /etc/ntp/ntp.drift
logfile /var/log/ntpd.log

# vi /etc/rc.conf
ntpd_enable="YES"



以前、私が FreeBSD 6.x を使用していたとき、CVSup を実行していたが、どうも変更されたようだ。
CVSup でなく csup を使用する。

# ls -l /usr/share/example/cvsup/ports-supfile
r--r--r--
# cp /usr/share/example/cvsup/ports-supfile /etc
# chmod 644 /etc/ports-supfile

# vi /etc/ports-supfile
### 51 行目あたり
* default host = CHANGE_THIS.FreeBSD.org
### を
* default host = cvsup2.jp.freeBSD.org
### に変更する。


国内で有効そうなサーバのリストは以下のとおり。最新の情報を確認していない。

cvsup.jp.freeBSD.org
cvsup2.jp.freeBSD.org
cvsup3.jp.freeBSD.org
cvsup4.jp.freeBSD.org
cvsup5.jp.freeBSD.org
cvsup6.jp.freeBSD.org



アップデートする。

# csup -g /etc/ports-supfile





05. Setting up X Window System

xorg の設定とか

# cd /usr/ports/x11/xorg
# make install clean

# /usr/X11R6/bin/Xorg -configure

# cp /root/xorg.conf.new /etc/X11/xorg.conf
# vi /etc/X11/xorg.conf

### フォントの設定を追記する
FontPath "/usr/X11R6/lib/X11/fonts/TrueType/"

### モジュールの設定を追記する
Load "xtt"

### トラックポイントを有効にする
### /dev/sysmous をコメントアウトし、/dev/psm0 を追記する
# Option "Device" "/dev/sysmouse"
Option "Device" "/dev/psm0"



ウィンドウマネージャの Xfce をインストールする。

% su -
# cd /usr/ports/x11-wm/xfce4
# make install clean

いろいろエラーが発生するが、基本的に dependency なパッケージをインストールするか、または、dependency なパッケージをアップグレーとしてあげればよい。

# make deinstall
# make reinstall

# exit
% /usr/X11R6/bin/startxfce4" >> ~/.xinitrc
% startx





06. Setting up Japanese environment

日本語を入力するための設定

% su -
# cd /usr/ports/japanese/scim-anthy
# make install clean
# cd /usr/ports/japanese/anthy
# make install clean
# exit

% vi ~/.xinitrc
# 最後の行の後に以下を追記する
export XMODIFIERS=@im=SCIM
export GTK_IM_MODULE=scim
echo '*inputMethod: SCIM' | xrdb -merge
scim -d &

いったんログアウトし、ログインしなおした後、Ctrl + Space で、Anthy のバーが表示され、日本語を入力できるなら、設定を成功している。





07. Setting up Firefox and Flash player

% su -
# cd /user/ports/www/firefox3
# make install clean


see :
http://www.freebsd.org/doc/en/books/handbook/desktop-browsers.html

# cd /usr/ports/www/nspluginwrapper
# make install clean

ほか





10. others

この設定は必須でない。自分は、3 分とか、ある一定時間が経過したら液晶の電源を OFF したい。そのための設定を以下のとおり実施する。

# vi /etc/xorg.conf
Section "ServerFlags"
[...]
Option "BlankTime" "3" # just blank the screen
Option "StandbyTime" "5" # DPMS state "stand by"
Option "SuspendTime" "5" # DPMS state "suspend"
Option "OffTime" "5" # DPMS state "off
EndSection

Section "Monitor"
[...]
Option "DPMS" # enable DPMS
EndSection





11. Setting Up Wireless Networking

無線ネットワークを設定する。T61 と X31 ともに無線 LAN のモジュールが搭載されている。


T61 の場合 :

FreeBSD Daily Topics : 2008 年 5 月 2 日 ワイヤレスドライバの設定方法概論 | gihyo.jp … 技術評論社 のとおりに実行した。

ちなみに、T61 は、Intel(R) PRO/Wireless 3945ABG のモジュールを搭載している。無線 LAN のアクセスポイントに、Apple - AirPort Extreme を使用している。

# vi /boot/loader.conf
if_wpi_load="YES"
wlan_load="YES"
wlan_amrr_load="YES"
firmware_load="YES"
wpifw_load="YES"
legal.intel_wpi.license_ack=1


# vi /etc/wpa_supplicant.conf
network={
    ssid="${SSID}"
    scan_ssid=1
    key_mgmt=WPA-PSK
    psk="${PASSWORD}"
}


# /etc/rc.d/netif start



X31 の場合 :

# vi /boot/loader.conf

// TODO


# cat /etc/wpa_supplicant.conf
network={
    ssid="${SSID}"
    psk="${PASSWORD}"
}


# vi /etc/rc.conf
ifconfig_ath0="WPA DHCP"


# /etc/rc.d/netif start

Thursday, March 19, 2009

03/19/2009


  • 18:00 に終業しようとタイミングを見計らっていたら、

  • 結局 22:00 すぎまで残業だった...。




Wednesday, March 18, 2009

03/18/2009


  • 13:30 から 18:00 すぎまでミーティング...。

  • 疲れた。




Tuesday, March 17, 2009

03/17/2009


  • 職場の近くで茶トラの猫を発見!





Monday, March 16, 2009

03/16/2009


  • カーネル読書会に参加した。





カーネル読書会に参加して

記念すべき今日の出来事について書き残しておこう。

本日、私は、YLUG が主催する "カーネル読書会" に参加した。場所は、ミラクル・リナックスだ。この会社は、言うまでもなく、カーネル読書会の中心人物である、よしおか氏の会社でもある。これまで何度かこのビルまで移動していたため、迷わずに移動できた。

19:00 から読書会が開始される予定で、18:30 ぐらいから入室できるだろうと情報を入手していた。ビルに到着した時刻は、だいたい 18:15 ごろ。ちょっと早く到着してしまった。18:30 までの時間に、持参した ThinkPad をインターネット接続させるために S11HT の設定を確認する作業をしていた。余談だが、WMWifiRouter をインストールした S11HT は、正常に機動しなくなってしまった。Windows Mobile の機能で、自らを初期化し、なんとかインターネットに接続できるようになった時刻は、19:30 ごろだった...。もうインストールしないかも。

18:35 ごろに会場の部屋へ移動した。もう 10 名ほどの参加者が集まっていて、既にプレゼンらしき何か?が発表されていた。

この日のメイン?な話題は、どうやらこれだったらしい。

linux.conf.au 2009 | 19 - 24 Jan | Marchsouth to Hobart

参加した人たちが、簡単な出張報告?のようなプレゼンを続けていた。ちなみに自費でオーストラリアのカンファレンスに参加するために必要な最低の金額は、だいたい 25 万円くらいだそうだ。とても自腹で支払えそうにないが...。

今日、japan.cnet.com で閲覧していたが、

標準カーネル統合間近!TOMOYO Linux の足跡:第1回--コミュニティの熱い力:ニュース - CNET Japan

偶然にも、NTT データの原田さんらも読書会の参加していて、たいへん HOT な話題を提供してもらえた。そういえば、Cnet Japan に記事を書いた人も参加していた!女性だった。

他、現在の自分がまったくついていけない話題の連続であり、まさに違う世界に住む人たちのような感覚だった。

吉藤さんが、最後に手短なプレゼンをして終了、そのままピザパーティー。乾杯した後、O'Reilly Japan の人が、"Debug Hacks" について紹介した。この本は、4 月の下旬に出版される予定であり、よしおか氏も書いているらしい。

私は 21:30 ごろに、途中で抜けて自宅へ戻った。予想どおり、ほとんどの話題についていけなかったので、悔しいというか何というか...。印象的だった点は、発表している人も聞いている人も、本当に楽しそうだった。ここに参加している人は、やっぱり好きだから参加している、という点を確認できた。まぁ、好きじゃなきゃ参加しないだろうけど。

# かんたんなまとめ

実力のない自分が主張しても意味ないかもしれないけど、技術者はこういう勉強会に積極的に参加すべきだろう。少なくとも Linux エンジニアとして食べている人は、一度、このカーネル読書会に参加してみるべき。いつもカーネルを読んでるわけじゃなさそうだから、決してプログラミングを得意としていなくても大丈夫だと思う。得意なら better だけれど。国内で活躍する Linux エンジニアの生の声や発表を聞いたら、強烈に刺激されるだろう、間違いなし。もし、刺激されないなら、既にスーパーな Linux エンジニアであるか、または、もう何も感じなくなってしまったのかも、終了ですね。発表のスライドは、基本的に英語だ。Linux を活用している人なら、"英語ヤダ" なんて言ってたら失格でしょう。いないか、そんな人は。

正直、自分は今日の内容をほとんど理解できなかったが、今日、この日にもらった刺激で、自分を高めていきたいと思うし、いつか、彼らのようになりたいと思うし、そういう刺激が自分のモチベーションを更に高めている。こんな刺激を日々の仕事で受けるなんて、なかなかない、というか、ありえない。ぜひ、未来ある技術者が、積極的に参加してほしいと思う。

Sunday, March 15, 2009

03/15/2009


  • キムチ鍋





Saturday, March 14, 2009

03/14/2009


  • 18 時から原宿で地元の友人と食事をする予定だった。

  • 10 分ほど遅刻した。

  • 20:30 に店を出て、結局そのまま解散に。



Friday, March 13, 2009

03/13/2009


  • 10:00 から N の本社でミーティングだった。

  • 終了した時刻は、14:00 ごろ...。

  • 途中、何度か落ちそうになった。



Thursday, March 12, 2009

03/12/2009


  • 明日の 10:00 から N の本社でミーティングだが、

  • まったくヤル気なくなってしまった 18:00 以降、

  • 資料も中途半端なママで...。



Wednesday, March 11, 2009

03/11/2009


  • 定例ミーティングにて共有する情報を事前にまとめておいた...。

  • 昨日のトークは散々だったので。

  • 18:10 くらいに会社を出た。

  • 田町で雪っぽい something が降っていた。


Tuesday, March 10, 2009

03/10/2009


  • WILLCOM の 3 回線の解約を手続きした。

  • イー・モバイルのデータ通信カードの解約を手続きした。

  • 金曜日に、また N の本社でミーティングらしい。



データ通信カードの解約

本日、契約してからの期間で初めて、イー・モバイルのカスタマーセンターに電話した。目的は、データ通信カードの契約を解約するためだ。

私が契約していたデータ通信カードは、D01HW だ。解約する理由は、サービスに不満を感じているわけでない。私は、S11HT も所有しているため、S11HT で代替できるためだ。ただし、MacBook を使用しているとき S11HT を通信カードの代替として使用すると bluetooth 経由となるため、かなり遅い速度で通信するハメになる。しかし、そもそも MacBook を外出するときに携帯しないため、ほぼ問題なかった。

イー・モバイルの契約を解約する場合、カスタマーセンターに電話しなければならない。電話番号は、このページに記載されている。

お電話からのお問い合わせ|お問い合わせ|イー・モバイル

電話し、オペレータと会話しながら解約を手続きすれば OK だ。ただし、解約の処理を完了するために、後日、イー・モバイルが送付してくる封筒に、SIM カード ( データ通信カードにセットされている SIM カードを抜き取り、かつ、ハサミで 2 つに分割する ) を同梱し返送する。イー・モバイルが受け取り、確認、処理して、やっと本当の解約を意味するようだ。

幸い、私は年間契約をしていなかったようで、解約するとしても費用は発生しなかった。驚いた点を最後に紹介しよう。D01HW に装着されていた SIM カードを返却すると、D01HW 本体だけ手元に残るはず。このポイントをイー・モバイルは見逃していなかった。イー・モバイルは、プリペイド方式のデータ通信サービスも提供している。最後にオペレータは、次のように言った。

弊社からお客様へプリペイド方式の SIM カードを差し上げます。その SIM カードに 3,000 円の金額が含まれています。お客様が所有していらっしゃる D01HW にその SIM カードを装着すれば、3,000 円分までご利用いただけます。ご利用になってもご利用にならなくても結構ですが、その SIM カードにチャージして引き続きご利用もいただけます。どうぞ、ご活用ください。

イー・モバイルが提供するプリペイド方式のサービスを認識していて、それはそれで魅力的だと感じていた。ただし、解約の手続きをするための最後の電話で、このようなサービスを提案してくるイー・モバイルに関心せずにいられなかった。

Monday, March 09, 2009

03/09/2009


  • 月曜日なので、まったくヤル気なく...。

  • 自宅に財布を忘れた。

  • 定時で終業した。

  • 綾瀬に到着する時刻の件でケンカ...


Getting Started With GDB

C 言語の学習をしているが、debug に GDB を活用してみようかと考え、使用に関係するメモを。環境は Ubuntu Linux で、本ポストの場合、特別、バージョンの差異を意識せずに済ませられるはず。


GDB をインストールする。

% sudo apt-get install gdb


例とするプログラムをコンパイルする。

% gcc -g -Wall -o hello_world.o hello_world.c


GDB でプログラムを実行する。"(gdb)" は GDB のプロンプトのようだ。

% gdb ./hello_world.o
GNU gdb (GDB) 7.0-ubuntu
Copyright (C) 2009 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later ≶http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law. Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-linux-gnu".
For bug reporting instructions, please see:
...
Reading symbols from /home/satoshiabe/Desktop/HelloWorld.o...done.
(gdb)


プログラムを実行する。

% (gdb) run


プログラムを終了する。

% (gdb) quit

Sunday, March 08, 2009

03/08/2009


  • 自宅でダラダラしていた。

  • 久しぶりに C 言語の学習を再開した。

  • 前回つまずいていた問題は、単純な typo だった。

  • そも問題を解消したが、また別問題でつまずいている。


Saturday, March 07, 2009

03/07/2009


  • 昼、知人が仕事をしている歯科にて、ハズれたインレイと、噛み合わせを調整してもらった。

  • 横浜の勉強会に参加した。




Friday, March 06, 2009

03/06/2009


  • 機種依存文字の対応などを検討した。





Thursday, March 05, 2009

03/05/2009


  • N の本社でミーティング





Wednesday, March 04, 2009

03/04/2009


  • ひたすら設計書を確認して不明な点を抽出した。

  • 5 日の 10:00 から N の本社でミーティングだ。

  • iPhone ゲームをプレイしすぎて手の状態がヤバい。



Tuesday, March 03, 2009

03/03/2009


  • とりあえず前倒しで作業を進めてみようと考えていたら、

  • 次の木曜日の午前中に打ち合わせをスケジュールされてしまい、

  • それに間に合わせるために 4 日の夕方までに状況をまとめよと指示され、

  • レビューとか十文じゃないと思うので少し心配だったりするわけで。

  • ThinkPad X31 を落札し、メモリも注文した。

Monday, March 02, 2009

03/02/2009


  • 9:30 からキックオフミーティングが開催された。

  • 俺に設計させていいのかよっ!




Learning C - Structure Pointer Operator

The following two expressions are equivalent :

(*current_ptr).data = value;
current_ptr->data = value;



Here is an example :

#include <stdio.h>
#include <stdlib.h>

struct person
{
    int id;
    char name[50];
    int age;
};

int main()
{
    struct person *person_a_ptr;
    person_a_ptr = malloc(sizeof(struct person));

    (*person_a_ptr).id = 10;
    printf("%d\n", (*person_a_ptr).id);
    printf("%d\n", person_a_ptr->id);

    if (person_a_ptr == NULL)
    {
        fprintf(stderr, "out of memory\n");
        exit(10);
    }

    free(person_a_ptr);
    person_a_ptr = NULL;

    return(0);
}

Sunday, March 01, 2009

03/01/2009


  • だらだら二度寝してしまい、13:30 ごろに起床した。

  • iDracula をプレイしすぎて左手の人差し指にマメができた。