2008年1月30日水曜日

後輩がBlogはじめたらしい.

僕の後輩がBlogはじめたらしい.情報公開って大切だよね.

各駅停車

僕と同じプログラミング言語が好きな人種なので,エントリの内容が楽しみ.あと,研究がニューラルネットワークだからそっちの話題も書いてくれるらしい.彼は優秀だから期待できるな~.

さて,僕も負けないようにしないとなぁ.

2008年1月22日火曜日

ADC Student Membershipが届いた.

林檎生活100:ADC Student Membershipを購入したら,Mac OS X Leopardが送られてくるの?でも書いたけど,Mac OS X Leopardがほしくて,ADC Student Membershipに加入した.それが今日届いた.結構前に注文してたんだけど,在学証明書と学生証を送るのを忘れていて,この時期になってしまった・・・.

なんといっても驚いたのが,アメリカから直接送付されてくること.家に届いたとき何が届いたんだって思ってしまったw当然中身は英語だけど,Mac OS X Leopardは,多国語対応だから問題なし.Mac OS X Leopardは,卒論終わってからインストールしよ.

あと困ったのが,I Apple Code(Appleは,あの林檎マーク.)ってロゴの入ったTシャツ.Tシャツが付くことが問題じゃなくて,サイズがXLってことwでかいw着るとワンピースみたいwwwサイズ選べたらいいんだけどなぁ・・・.あとロゴが小さいことと・・・.

2008年1月20日日曜日

PHPのmbstringの設定が間違ってた.

僕の書いた林檎生活100:CentOS 5でつくるPHP開発サーバ.#4林檎生活100:CentOS 5でつくるPHP開発サーバ.Zend Core編#6のmbstringの設定が間違ってた件について.参考にしてしまった人すみません.間違ってる内容はつぎのページが詳しいのでそちらを参照してください.

ぎじゅっやさん:PHPの文字化けを本気で解決する

2008年1月17日木曜日

Smalltalk入門.オブジェクト指向の始祖だよね.

久しぶりの更新.卒論がねぇ・・・.(いいわけにつき,以下略.

今回は,Smalltalkの入門について.Simulaはどうしたといわれそうなタイトルだな.まあ,僕の中ではSmalltalkが始祖なんだって.

なんで,Smalltalkって思う人もいるかもしれないんだけど,オブジェクト指向について考えててぶつかったからなんだよね.(「オブジェクト指向における再利用のためのデザインパターン」を読んでるせいもある.)オブジェクト指向の始祖であるSmalltalkのオブジェクト指向ってのが,いま主流のC++とかJavaとかのクラスベースオブジェクト指向とJavaScriptとかSelfとかのプロトタイプベースオブジェクト指向のどちらとも違うってところでね.だけど,どこが違うとかの情報がなくて,どう違うのかがいまいちピンとこないから,実際に書いてみればわかるはずだってことで,Smalltalk入門ってなわけだ♪

処理系は,MacPortsで,GNU Smalltalkをインストール.(MacPortsを$ sudo port selfupdateしてからインストールしよう.なんか,アップデート前はIntel Macに対応してないとかで,インストールできなかった・・・.)
$ sudo port -c install gst


とりあえず,起動,Hello, world!,終了をやってみた.
$ gst
GNU Smalltalk ready

st> 'Hello, world!' printNl(「Hello, world!」文字列オブジェクトにprintNlメッセージを送信する.)
'Hello, world!'(表示結果.)
'Hello, world!'(評価結果の戻り値.)
st> ObjectMemory quit(終了方法.)
$


Hello, world!は,ほとんど普通の言語と同じだねぇ・・・.普通の言語は述語,主語の順だけど,Smalltalkは主語,述語の順ってかんじだね.

さてと,つぎはお約束の階乗計算プログラム♪っていつもなら軽いノリで書くんだけど,Smalltalkのプログラミングはかなり苦戦した〜.その苦戦したソースをどうぞw
Integer extend [
factorial [
self = 0 ifTrue: [ ^1 ].
self > 0 ifTrue: [ ^(self - 1) factorial * self ].
]
]

10 factorial printNl.


これは,既存のIntegerクラスを拡張して,factorialメソッドを追加する(実際は,factorialメソッドが存在するのでオーバライドになる.)という意味.末尾の10 factorial printNlでメッセージ送信をしてて,10っていうIntegerインスタンスへfactorialメッセージを送信し,その結果にprintNlメッセージを送信しているってかんじ.10は,factorialメソッドでいうところのselfになって,再帰されるようなね,そんな感じだと思う・・・たぶん・・・.

実行結果は当然普通だ.
$ gst factorial.st
3628800
$


Smalltalkって言語と環境ってこともあるせいか,処理系によって方言がある模様.ってかそもそも,Smalltalkのシステムブラウザから追加するもんだから,GNU Smalltalkは独自の記述に近いのね・・・.悩ましいなぁ.それに,GNU Smalltalkで解説してるとこってほとんどないんだね.やっぱり,Squeakが多いみたい.まだまだわからないことだらけだなぁ・・・.

FizzBuzzもやってみたけど,ひどいな・・・.
| fizzbuzz |
fizzbuzz := [
(1 to: 100) do: [ :n |
n \\ 3 = 0 ifTrue: [
n \\ 5 = 0 ifTrue: [
'FizzBuzz' printNl.
] ifFalse: [
'Fizz' printNl.
].
] ifFalse: [
n \\ 5 = 0 ifTrue: [
'Buzz' printNl.
] ifFalse: [
n printNl.
].
].
].
].

fizzbuzz value.


無理矢理4つに分岐させるようなコードを書いたかんじ.Smalltalkerはこれをどうやって書くんだろう.まだまだ理解不足だね.

うむぅ.不出来すぎるんで,Squeak本読んで出直してこよう・・・.Smalltalkの考え方についていけてない.必要なのは,オブジェクト脳っていうよりSmalltalk脳?

参考文献:
GNU Smalltalk User's Guide
Smalltalkイディオム

2008年1月16日水曜日

MacBook AirとTime Capsule.

詳細は,Appleで見てね.ニュースサイトとかでも取り上げられてるし.さて,林檎生活100としては,MacBook AirTime Capsuleが買いかどうかを考えてみる.

まずは,MacBook Airだね.僕としては,MacBook miniってかんじのものを期待してたんだけど,これはMacBook Pro slimってかんじで値段もそこそこするから手を出しづらいね.まあ,デザインは秀逸ですばらしいから欲しいけどねwこのデザインからすると,iMacと並べたとしてもMac Proと並べたとしても似合うから,MacBook Airの立ち位置はいいよね.Mac mini,MacBookユーザを対象としてる製品ではないはずだし.あとは実物を見てみないとね.デザインの観点からはこんなところで,スペックの観点からが重要かな.スペックからすると買いじゃないというのが正直なところ.CPUはとりあえずいいんだけど,メモリが2GBでオンボードだから長い期間使えない気がするんだよね.あと,やっぱりSSDがいいよね.でも,SSDが搭載されてる方はかなり高いんだよな.SSDが高いから仕方ないってのもあるし,SSDの64GB搭載でこの値段はむしろ安いんだろうけどね.これからSSDは間違いなく値下がりするんだから,2世代目のMacBook Airを買うべきかなぁと.マイナーアップデートでSSD標準搭載になって,4GBメモリ搭載モデルがラインアップされるんじゃないかなぁと思うのさ.20万円台で.(希望的観測だけどね・・・.)だから,僕としては待ってて,マイナーアップデートされた瞬間に購入が正解だと思う.

次は,Time Capsule.AirMac ExtremeにUSB接続HDDを外付けするか,HDDを内蔵しているTime Capsuleにするかの比較次第だろうけど,値段的に500GBならとんとん,1TBならTime Capsuleのがちょっと高いってかんじかな.ただ,ひとつにまとまってくれた方がデザイン的にいいなぁって思う.相性問題もないし.容量足りなくなってHDDを交換ってことができないのはあるけどね.MacBookでIEEE802.11nを使えるのに,Wi-FiはAirMac Expressで対応してないって僕としては買いだね.この前,バックアップ用に外付けHDDを買ってしまったけどね・・・.

ぐだぐだ書いてしまったな.あと,MacBook Airの外付け光学ドライブってMacBookで使えないのかなぁ.DVD-R DLを書けるドライブがほしいんだよねぇ.