macportsからsubversionをインストールしようとしたらdb46のインストールでハマったのでメモ。

db46単体でインストールしようとするとこんなエラーが。

$ sudo port install db46

--->  Computing dependencies for db46
--->  Fetching db46
--->  Verifying checksum(s) for db46
--->  Extracting db46
--->  Applying patches to db46
--->  Configuring db46
--->  Building db46
Error: Target org.macports.build returned: shell command failed
Log for db46 is at: /opt/local/var/macports/logs/_Users_sanojimaru_db46/main.log
Error: Status 1 encountered during processing.
To report a bug, see <http://guide.macports.org/#project.tickets>

ログにgrepをかけてみる。

$ cat /opt/local/var/macports/logs/_Users_sanojimaru_db46/main.log | grep 'error'

:info:build ../dist/../libdb_java/db_java_wrap.c:123:17: error: jni.h: No such file or directory
:info:build ../dist/../libdb_java/db_java_wrap.c:147: error: expected ')' before '*' token
:info:build ../dist/../libdb_java/db_java_wrap.c:196: error: expected ')' before '*' token
:info:build ../dist/../libdb_java/db_java_wrap.c:200: error: expected '=', ',', ';', 'asm' or '__attribute__' before '*' token
以下略

javaが悪いことしてそう。
とりあえずググると、/System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDKに何かシンボリックリンクを張ったら動いたとの記述を発見(ソース失念><)したので、とりあえず該当パスを見てみた。

$ ls /System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK

drwxr-xr-x  11 root  wheel   374 10 28 16:07 .
drwxr-xr-x   3 root  wheel   102 10 12 14:56 ..
drwxr-xr-x  11 root  wheel   374 10 22 14:16 Classes
drwxr-xr-x  41 root  wheel  1394 10 22 14:16 Commands
drwxr-xr-x   6 root  wheel   204 10 22 14:16 Home
-rw-r--r--   1 root  wheel  1576 10 12 14:39 Info.plist
drwxr-xr-x  50 root  wheel  1700 10 22 14:16 Libraries
drwxr-xr-x   3 root  wheel   102 10 22 14:16 MacOS
drwxr-xr-x  21 root  wheel   714 10 22 14:16 Resources
-rw-r--r--   1 root  wheel   454 10 12 14:42 version.plist

あれ、Headersがない。。。
とりあえず、JDKの方のCurrentJDK/Headersにシンボリックリンクを張りつつ再チャレンジ。

$ ln -s /Developer/SDKs/MacOSX10.6.sdk/System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK/Headers /System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK/Headers
$ sudo port -f clean --all db46
$ sudo port install db46
--->  Computing dependencies for db46
--->  Fetching db46
--->  Attempting to fetch patch.4.6.21.1 from http://download.oracle.com/berkeley-db/patches/db/4.6.21/
--->  Attempting to fetch patch.4.6.21.2 from http://download.oracle.com/berkeley-db/patches/db/4.6.21/
--->  Attempting to fetch patch.4.6.21.3 from http://download.oracle.com/berkeley-db/patches/db/4.6.21/
--->  Attempting to fetch patch.4.6.21.4 from http://download.oracle.com/berkeley-db/patches/db/4.6.21/
--->  Attempting to fetch db-4.6.21.tar.gz from http://download-uk.oracle.com/berkeley-db/
--->  Verifying checksum(s) for db46
--->  Extracting db46
--->  Applying patches to db46
--->  Configuring db46
--->  Building db46
--->  Staging db46 into destroot
--->  Installing db46 @4.6.21_6
--->  Activating db46 @4.6.21_6
--->  Cleaning db46

通ったよっと。
30分ぐらいハマった。

今日は忙しいので原因究明は我慢するっ

–2010年11月5日修正–
–$ ln -s /Developer/SDKs/MacOSX10.6.sdk/System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK/Headers /Library/Frameworks/JavaVM.framework/Versions/CurrentJDK/Headers
++$ ln -s /Developer/SDKs/MacOSX10.6.sdk/System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK/Headers /System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK/Headers
リンクの置き場所のパスが間違っていました、申し訳ございません。

 

ゼロスタートコミュニケーションズの@zakiさん主催で、#startupdating エンジニアブレークスルーというイベントがあったので参加してきました。

10月7日麹町でスタートアップ・デイティングーー「エンジニアはどうやって成長するか?」をテーマにパネルも同時開催

nanapiの@wadapさん、@okachimachiorzをはじめとして、話題のネットベンチャーから大手SIerまで選りすぐりの9人が、パネリストとして「エンジニアの成長」について熱いトークを繰り広げるというとても面白いイベントとなりました。

私もマスター・ヨシオカこと@hyoshiokの教えに従い「勉強会では必ず質問する」を実践出来たこと、Twitterで絡ませて頂いてる@zakiさんにご挨拶できたことで大満足でした。

トーク自体はパネルディスカッションということで、九者九様の様々な意見がありましたので、私のメモ書きを箇条書きにしたものを以下に記しておきます。

・エンジニアは不足してるか?
母数は十分だが、ニーズにマッチするエンジニアが足りない。
ニーズにマッチするエンジニアとは、技術力に限らず常識、コミュニケーション
能力を持つエンジニアのことをいう。

・目標設定が大切
10年、3年、プロジェクト、四半期、1日、1時間などあらゆる切り口で目標を設定することが大切。
具体的な目標とは、アウトプットを設定することである。「勉強する」は目標にならない。

・自分を追い込むことも大切
やらなければならないことを、1日や1時間など短いスパンでタスクに切り分けて、一つずつしっかり
やり遂げれば必ず成長する。一見困難な課題でも、小さく切り分ければ乗り越えられる。

・仕事を楽しむ
書いたものが動いたら楽しい。
書き方に悩んでるくらいなら、汚くてもいいからとりあえず動かすこと。
後でいくらでもリファクタリングできる。

・書いたコードは人に見せる
コードを人に見せる人は成長する。
同時に、人の書いたコードを読んでいる人は成長する。

・自分に合う勉強方法を見つける
学校的な暗記ベースの勉強では何も身に付かない。
googleやtwitterなどで正しい情報を素早く見つけられる今、調べられる=知っているが成立する。
調べる技術(ググる力)は非常に重要である。

・新技術を学ぶ
お客さんや上司を騙してでも、新技術の案件は取れるだけ取る。

・time is moneyを忘れない
悩んで手を止めて浪費している時間も貴重な財産であることを忘れない。
悩んでいる暇があったらすぐに質問して次に進むことが大切。
真面目な人ほど悩んだり遠慮したりするので心が折れやすい。
聞く方は遠慮せず、聞かれる方は聞きやすい環境を作ってあげよう。

・心身ともに健康であること
100の力を出し続ける為には心身ともに健康であること。しっかり寝ること。
50の力で15時間働くより、100の力で8時間働いた方が効率がいい。
自分が100の力を出している時にしか成し得ないことが多々ある

だいぶ意訳がありますが、社内にも展開したかったのである程度は私の主観でまとめさせて頂きました。
ちなみに、メモ書きはevernoteでっす。超便利。

 

10/2,3に開催されたPHP開発者のハッカソン&カンファレンスであるPHP Matsuri 2010に参加してきました。

私はスタッフとしての参加であり、主にPHP Matsuri 2010公式サイトのTwitter連携部分と、会場での受付(Tシャツ係)を担当させて頂きました。

開催当日のレポートなどは他の方が大変詳しく書いて下さっています。
感想ブログ、写真 – PHP Matsuri 2010

みなさんと同じクオリティでレポートを書こうとすると心が折れそうになるので、このイベントで私が学んだとても大切な2つの事を簡単に書くことにします。

達人から学ぶ

我々のようなプログラマには、オープンソースコミュニティという最強の味方がいるということ。
Linuxカーネルからwordpressまで、あらゆるソフトウェアのソースコードが読めること。
それらのソースコードの中には超一流のハッカーが書いたものもあり、当然全て読めること。

これがどれだけ素晴らしいことか。
頭では分かったつもりになっていても、間近で見ることで自分の認識の甘さを痛感し、自分が恥ずかしくなりました。

「どう書いたらカッコいいんだろう」
「どう書くのがスマートなんだろう」

なんて悩んでる場合じゃありません。
悩んでる暇があったら達人のソースを読んで学びましょう。

英語を話す

英語がわからないから、話しかけられても苦笑いしてしまう…
なんていうコメディアンも真っ青な事故が数回ありました。

オープンソースコミュニティでは主に英語が使われています。
それどころか、日本のコミュニティでも英語を使うような習慣が出てきてるそう。
最新情報も英語、コアデベロッパーも英語、MLも英語、英語英語英語。

英語が話せないプログラマは、あっという間においてけぼりだ。
そんな強烈な危機感を感じました。

まとめ

私はこれからもずっとこの世界に生き続けたいと願っていますが、行動しなければ確実に淘汰されるなと。そんな危機感は一見恐ろしいようで実は大変心地よく、モチベーションに変換されてブルブルッと体を震えさせてくれるわけです。

実は9月末で「この会社で死んでやろう」なんて心底愛していた会社をひょんな事から退職するなどしており、大変憂鬱な日々が続いてた今日この頃でしたが、おかげ様で仕事のモチベーションだけは好記録を叩き出しております。

という訳で、大変よい刺激になりました、というお話。

蛇足ですが、私は@hyoshiokが大好きです。
いちスタッフではありますが、「PHPmatsuriに参加できて本当によかった。」なんて書いて頂けて大変光栄でした。涙が出そうでした。
20年後の今、@hyoshiokのように生きていたい。

© 2011 sanojimaru.com Suffusion theme by Sayontan Sinha