« January 2006 | Main | March 2006 »

2006.02.25

今日の読書

電波男読みました。

文系から見たオタクっぽい話でしょうか。なかなか新鮮な
切り口でそこそこ楽しめました。もともと、こういう自虐的な
オタク向け本って、プログラマー向けの書籍でしか見たこと
なかったので、ああこういう考え方もあるのか と思ったり
あーだこーだ考えたりしました。(萌えの基本は手塚治虫とか)
いろんな漫画が出てくるので、漫画好きの人にお勧め。
どーでもいいけど、日出処の天子はもう一回読みたい。

なぜ、「できる人」は「できる人」を育てられないのか? 読みました。
なかなか微妙な話題。
しかし、いくつか読んだコーチングの本の中では、もっとも実践的で
心に響く本だった。「できる人」と「できない人」の2極化がなぜおきる
のかを丁寧に説明している。

ハードができるエンジニアを育てることは難しい、ソフトに比べると
失敗の取り返しがつかない事が多い。自分は最初のハードの設計が
1999年にもかかわらずISAボードの設計だった。十分枯れていたにもかか
わらず、いっぱい失敗した。そこから学んだことは多い。
今、うちの会社の仕事は1500ピンクラスのFPGAをいくつも使う。
経営的に失敗は許されない。失敗→リカバリの体験をどこでさせるのか、
そこが問題だと思う。言い方を変えるとEASYに感じる仕事はどんどん若い人に。
失敗してもなんとかなりそうな仕事を無理矢理取ってくることも、
組織としては大事なんだと思う。

p56より「ます、自分がいちばん仕事をしているという実感。これが
あったら要注意です」。忘れちゃ行けない言葉。自分(もしくは誰か)
に負荷が集中していると思ったら、分散させる努力をしよう。最初から
いつでも分散できるように、プロジェクトを進めよう。理想は、ペアプロ。

XPの本もよまなきゃなぁ


ファウスト Side-A 読みました
子荻たん、キタ━━━━━━(゚∀゚)━━━━━━!!!!
「正々堂々手段を選ばず真っ向から不意討ってご覧に入れましょう」

| | Comments (0) | TrackBack (0)

2006.02.23

技術書置き場

ずいぶん前の記事ですが、ここにトラックバック。上手くいくかどうか不安。

会社に私物の本をおきまくってる私としては、これはすごい
大事なことだと思ってます。他の人の本棚を見ることで、その人の
スキル、目標が見えてきます。この記事で指摘されるまで、本棚に
よるコミュニケーションの重要性に気がつきませんでした。

そういえば、前の会社もみんな私物の本を持っていて、それをきっかけ
に知らない先輩と話したりして、すごく勉強になった。
ワインバーグのプログラミングの心理学にも、コンピュータのバッチ
処理を待っている間にするくだらない話の逸話があったし、私自身と
してはタバコを吸うところの有効性をずっととなえています。
タバコ吸うところっていろんな人あつまるから、いろんな話ができる
んですよ。前の会社だと、タバコも吸わないのに良くうろうろしてい
ました。タバコに関しても、健康促進法とかで、ものすごい僻地に
追いやられて、そのコミュニケーション能力もずいぶん下がってしまった
と思います。

なんていうのか、チャットや掲示板みたいに自分から意識して情報交換
するのではなく、自然にくだらない話が始まる場所が大事なんですよね。

| | Comments (0) | TrackBack (0)

2006.02.14

The Pragmatic Programmer: From Journeyman to Master

達人プログラマーの原書
キタ━━━(゚∀゚)━( ゚∀)━(  ゚)━(  )━(  )━(゚  )━(∀゚ )━(゚∀゚)━━━!!!!!

というわけで、1回邦訳で読んだのですが、今度は原書で読みます。
原書で読む意味は無いのですが、まあ勉強と言うことで。

3月からまた勉強できない環境に投入されるので、それまでにはC++の
勉強を進めないと。

| | Comments (0) | TrackBack (0)

2006.02.08

父親教室と電源の立ち上がり

市が主催している父親教室に行ってきました。
勉強になりましたが、講師の方がTVとゲームが大嫌い
なようでした。
「森教授の研究成果によると、ゲームをしている間は
脳が全く働いていない・・・・」とか始まると、

ゲーム脳 キタ━━━━━━(゚∀゚)━━━━━━!!!!

と一人盛り上がっていました。僕の中で、よく調べずに
ゲーム脳を信じる大人は、全員ゲーム脳に犯されています。

「TVのように、スイッチを押すとパッと状況が変わる
ような物は子供の成長に良くない」とある意味、僕の
仕事を全否定。しょぼーん。

次からは、成長過程の子供に優しく、電源入れたら
じわじわと立ち上がる優しいシステム作りをしようと
思いました。

あっ、でも、電源を投入すると、各電圧の立ち上がりや
CLKの安定、リセットシーケンス、CPUブートなどが
目で確認できるような基板があると、新人教育にいいかも。

そんな事より一番ショックだったのは、自分が市内で
一番優しいお父さんだと思っていたが、他のお父さんも
優しいお父さんばっかりだったこと。

| | Comments (2) | TrackBack (0)

2006.02.06

ドアドア

Behind Closed Doors 読みました。

英語の勉強がてら読み始めた本ですが、完全にマネージメントの本で、
開発テクニックみたいなものは全然ありませんでした。

その中で気になった点をピックアップ

エンジニアを続けるか、マネージャーになるか?
・技術的な決定をコントロールしたいか?
・人間関係よりも、技術的な問題を調整したいか?
この両方にYesなら、エンジニアを続けた方が良いらしい。
これは、エンジニア最大の悩みだと思うな。そして、大半のエンジニアは
上の質問両方にYESだと思う。

優先順位は技術的につけるべきか、営業的につけるべきか?
原文は、Is priority Business or Technical ?
これについては、はっきりとBusinessと書かれている。今なら当たり前だと
思うけど昔はそうじゃなかったし、書籍によっては「納得のいかない物を
リリースするな、営業のプレッシャーに屈するな」みたいなことを書いて
ある本もある。そういう考え方も大事だけど、やっぱり仕事をする意味って
のは、対価をもらうことだ。技術がつっぱしてはいけない。
とはいえ、大事なのは落としどころ、譲れるラインと、譲れないラインを
はっきりさせて、常日頃から徹底するべきだと思う。営業やビジネスって
表現が気に入らない場合は、お客に置き換えよう。お客あっての仕事ですよ。

Meetingについて
最初に、目的、アジェンダ、時間をはっきりさせて、必要な人間だけで
Meetingをするとか当たり前の事が書いてあるけど、気になった点が
一つ。Meetingが終わったら、参加者に議題毎に点数を付けるシステム
が紹介されていた。会議の目的を達成したら2点、達成できなかったら0点
という風に、全員に聞いていく。その時に、理由も聞いていくと、どんどん
会議が良くなっていく、とのこと。おもしろい発想だと思った。
なかなかできないけど。

| | Comments (0) | TrackBack (0)

2006.02.04

SysytemCの最初の一歩

libsystemc.a内に目的の関数があることが分かったので、あとはリンカーの問題。
リンカーのコマンドがデフォでこう。

/usr/bin/ld -V -dynamic-linker /libexec/ld-elf.so.1 /usr/lib/crt1.o /usr/lib/crti.o /usr/lib/crtbegin.o -L/home/natu/system_data/systemc-2.1.v1/lib-linux/ -L/usr/lib -lsystemc arith01.o -lstdc++ -lm -lgcc -lc -lgcc /usr/lib/crtend.o /usr/lib/crtn.o

-V -dynamic-linkerがちょっと気になるが、まあまあ予想通り。
一般的に組み込みCのリンカってのはこんな動きをする。

・.oを aliginとかの情報に従って並べる。
・このとき、アドレスが解決できないラベルがあれば、指定されたライブラリから
飛び先を探しに行く。たいがい、最初に見つけたライブラリを結合するので、
同じ関数が、別のライブラリにあるときなどは、ライブラリのサーチパスの
順番で挙動がかわったりする。
・どうしても解決できない場合は、エラーで終了
・組込用の特徴として、「誰からも参照されていない関数、変数を削除」というのは
デフォでは行われない。(アセンブラで飛んだり、DMA領域だったりするから)

で、今 crtnから呼び出されているmain()は見つかったのだから、libsystemc.aは
ちゃんと読み込まれている。で、libsysytemc.aからarith01.o内のsc_main()を
呼び出し、そのsc_main()が、またlibsystemc.a内のsc_dt::sc_signed::sc_signed(int)
を読み出す。
OK、分かった。sc_main()のあるユーザープログラムと、libsystemc.aが相互参照
になっているんだ。

そんな仮説を立てながら、リンカコマンドを試行錯誤し、うほっ動いた。
/usr/bin/ld -V -dynamic-linker /libexec/ld-elf.so.1 /usr/lib/crt1.o /usr/lib/crti.o /usr/lib/crtbegin.o -L/home/natu/system_data/systemc-2.1.v1/lib-linux/ -L/usr/lib -lsystemc /home/natu/system_data/systemc-2.1.v1/lib-linux/libsystemc.a arith01.o -lsystemc /home/natu/system_data/systemc-2.1.v1/lib-linux/libsystemc.a -lstdc++ -lm -lgcc -lc -lgcc /usr/lib/cr
tend.o /usr/lib/crtn.o

仮説はあっているようだ。もうちょっと、直してみて、完成
/usr/bin/ld -V -dynamic-linker /libexec/ld-elf.so.1 /usr/lib/crt1.o /usr/lib/crti.o /usr/lib/crtbegin.o -L/usr/lib -L/home/natu/system_data/systemc-2.1.v1/lib-linux/ arith01.o /home/natu/system_data/systemc-2.1.v1/lib-linux/libsystemc.a -lsystemc -lstdc++ -lm -lgcc -lc -lgcc /usr/lib/crtend.o /usr/lib/crtn.o

夢にまで見た a.out
./a.outで、
-256 -256から始まって、最後-256、-256まで変化する事を確認。

大きな一歩だけど、まだまだ入り口

| | Comments (0) | TrackBack (0)

デマングル(demangle)

ようやく、SysytemCが再開。

最初のエラーがこれなので、
arith01.o(.text+0x1cc): In function `sc_main':
: undefined reference to `sc_dt::sc_signed::sc_signed(int)'

要するに、sc_mainから呼んでいる、sc_signedが見つかりませんと言われている。
nmコマンドで、エントリを見てもそれっぽいのあるんだけど、変な文字列で
よくわからない。

いやなブログで目的の解答を発見。感謝。
c++filtコマンドを使うと、人間が分かる形にしてくれる。

こんな感じで、grepかけてみる。
> nm libsystemc.a | c++filt | grep sc_dt::sc_signed::sc_signed

U sc_dt::sc_signed::sc_signed(int)
U sc_dt::sc_signed::sc_signed(int)
000158c8 T sc_dt::sc_signed::sc_signed(sc_dt::sc_unsigned const*, int, int)
0001519c T sc_dt::sc_signed::sc_signed(sc_dt::sc_signed const*, int, int)
(省略)
0000a02c T sc_dt::sc_signed::sc_signed(sc_dt::sc_signed_subref_r const&)
0000a60c T sc_dt::sc_signed::sc_signed(sc_dt::sc_unsigned_subref_r const&)
000095e0 T sc_dt::sc_signed::sc_signed(sc_dt::sc_signed const&)
00014b74 T sc_dt::sc_signed::sc_signed(sc_dt::sc_signed const&, int)
0000953c T sc_dt::sc_signed::sc_signed(int)
00014d58 T sc_dt::sc_signed::sc_signed(int, int, int, unsigned long*, bool)
U sc_dt::sc_signed::sc_signed(sc_dt::sc_signed_subref_r const&)

えー、下から3つめにちゃんとエントリーあるじゃん。

ついでだけど、C++の名前空間と、関数のオーバーロードの仕組みも理解。
名前空間て、C言語でいう所のstaticと同じ事やっているのか。
同じくオーバーロードも結局引数のバリエーションだけ、関数作ってるんだな。

なんとなくそうかなとは思っていたけど、これで一つ自信がついた。

| | Comments (0) | TrackBack (0)

gccで調べ物

gccコマンドとg++コマンドの違いが分からないのでman gccと格闘

g++ is a program that calls GCC with the default language set to C++, and automatically specifies linking against the C++ library.

なんでagainstが使われているか分からないけど、ファイルをデフォでC++にして、
自動的にC++ライブラリをリンクしてくれるみたい。

| | Comments (0) | TrackBack (0)

2006.02.02

今日の読書

ホゲゆに読みました。
どうみても256倍シリーズです。
ありがとうございました。

MINIXが懐かしくなって、アマゾンで最新の本が欲しくなったが我慢。
勉強の手を広げすぎたら駄目だ。

本の内容は十分楽しめましたよ。
256シリーズが好きな人はお勧め。

| | Comments (2) | TrackBack (0)

無事帰宅

準備等も含めると3週間ほど、いろいろと頑張ってきました。
この3週間の成果

英語の勉強 0時間
読書 0ページ
あつめたポケモン 62匹
得られた経験 いろんな意味でプライスレス

まずは、ずたずたになった勉強のリズムを取り戻さなくては!

| | Comments (0) | TrackBack (0)

« January 2006 | Main | March 2006 »