Saturday 31 December 2011

入門Git


入門Git
自炊して読みました。自炊の質があんまり良くないが… 17inch で見開きだと、普通の本を読んでいるのと変りがない。Perview ですね。書き込みや book mark できれば良いけど、別に必須というわけでもないです。自炊の質が悪いと古本読んでいるような気分になる。
入門って書いてありますが、入門書ではないのはいつもの通り。最初から全速力で書いてある感じ。僕は、Mercurial user だから、別にそれで構いませんでけどね。
CVSやRCS、svn に、まったく触れないのが Good 。
かなり最初の頃から過去のcommitの修正とか出てくるので重い感じです。rebase やら stash もそうだけど、index と work の区別とかは重い感じ。
blame とか追跡とか patch の話は、Linux 開発を例に使っているので、そういう読み物として面白いです。自分ではあまり使わないかも。
Mercurial の方は、
hgbook
を一気に読みました。こっちの方が入門的かな。Mercurial は version が進むのが早い。1.9.1 使っている間に、もう2.0かぁ。

Friday 30 December 2011

Ruby on Rails

Database の授業も一通りやったので(採点がまだだが)、最後は Ruby on Rails やろうかと思ってます。

で、Mac OS X Lion に installするのだが、いつも通り一筋縄ではいかない。いったいなんでだよ?

default の ruby は 1.8.7で、それで

% gem install rails
とかすると、rack のdependency が解けないとかいうので、そこだけ、gem install rack をやってあげる。しかし、

% rails new ~/src/rails/app1

で、

/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/rubygems.rb:230:in `activate': can't activate rack (~> 1.3.5, runtime) for ["actionpack-3.1.3", "rails-3.1.3"], already activated rack-1.4.0 for ["rack-cache-1.1", "actionpack-3.1.3", "rails-3.1.3"] (Gem::LoadError)

とかいう。どうも、rack が再帰的にactivateされるので文句言っているらしい。先のエラーとも関係するらしい。これは諦めた方が良さそうなので、ruby 1.9 でやることに。

epkg には、1.9.1p337 とかいうのがあるので、それを入れるのだが、そうすること今度は、gem intall rails で、

% gem が古い

あ、そうですか。そこで根性が尽きたが、昼飯食いながら、easy package の ruby のversionを 1.9.3 に上げることに。研究室OBがやってくれいたようだが、どうも、Makefile が少し変。

% make Document のmakeに時間が…
% make plist で、もう一度 compile する
% make install しようとすると、install なんてentryがない

確かに、ruby-1.9.3 directory の下は「まっさらなパッケージ」。make plist で make distclean しているせいらしい。make にはかなりの時間がかかるのだが、心で泣きながら、もう一度 make 。三回目だよな、これ。

で、make の途中で、YAMLがなんとかとかいうメッセージを見かけたので libyaml もついでに epkg へ。そして、また、やり直し。おぃ〜

これで、ruby-1.9.3 は epkg に入った。えーと、何やってたんだっけ。そうそう、gem install rails ね。今度は順調に終わる。が、

% rails new ~/src/rails/app1

で、

Gem::Installer::ExtensionBuildError: ERROR: Failed to build gem native extension.

/usr/local/bin/ruby extconf.rb
checking for sqlite3.h... yes
checking for sqlite3_libversion_number() in -lsqlite3... no
sqlite3 is missing. Try 'port install sqlite3 +universal'

お前な〜 これは一体なんだろう。もちろん、sqlite3 は入っている。library も /usr/lib なんで落ちるはずないんだが。いったい、どこの sqlite3 呼んでるんだ?

+leo+kono locate sqlite3.h
/usr/include/php/ext/sqlite3/libsqlite/sqlite3.h
/usr/include/sqlite3.h
/usr/local/include/sqlite3.h

わかりましたよ。2006年に入れた sqlite3 が悪さをしていたらしい。sqlite3 を読んだ時があったので、その時のかな。epkg かも。/usr/local な sqlite3 を消して、ようやっと通りましたよ。

ここまでで二時間二十分もかかってるし。

local でやるか、herok でやるかは迷うところだが、まぁ、両方かな。

Thursday 29 December 2011

昨日は恒例の飲み会

あれって東工大の友人の集まりってことになるのかな。渋谷のポーランド料理屋ということで、ズブロッカばかりがんがん飲んできました。料理はボルシチとソーセージというロシアとドイツのまぜこぜみたいな。
そこに行く前になぜか実家を追い出されたので、サンシャインでやっていた「まどマギ展」に行ってきました。ガラガラでした。なんか行列スペースの方が広い。はっきり言って、
日程よく調べてなかっただろ?
だよね。シーンや書かれているセリフはアニメのを持ってきただけだけど、流れているセリフはオリジナルだった。みどころは、そこだけか?


なぜか、まみさんの「マスケット銃型ケーキ」があって1mぐらいある。買いそうになってましたが思いとどまりました。いや、ネタにはなったか。

Wednesday 28 December 2011

イヤホン


諦めて Apple 純正使うかと持ち歩いんたんですが、結局使わず。牧港のヤマダ電機はたいしたもの置いてなかった。

EX90SLは久しぶりのヒットだったんだけどね。
http://www.sony.jp/headphone/products/MDR-EX90SL/index.html
レビューによると買ったのは2006/9。長く使った〜
http://mixi.jp/view_item.pl?id=462088&reviewer_id=2510

その前は、888を買い換えてました。
http://www.sony.jp/headphone/products/MDR-E888LP/

今回は、東京に来たら探そうと思っていて、池袋の西口のビッグカメラには一通りそろってました。Audio Technica はパス。モンスターとかは違うよね。

と思ったらソニーの新しいのが出てた。XBA-1,2,3,4 と。ユニットの数なのか。わかりやすい。って言うより狙いすぎ。1 はともかく、2 は妥当な感じ。

試聴して気がついたんだけど Noise Canceller が結構良くなっているのね。演算後のノイズが嫌いだったんだが。耳も衰えてきていると思うので、そのせいかもね。高音のノイズは不快だったが。 とはいえ、沖縄で満員電車に乗るわけでも頻繁に飛行機乗るわけでもないので。いや、それでも乗っている方か。

Apple 純正は安物で高音のビビリがなぁ。あと、もう少しまともなネットつければ良いのに。電話する時には良いんだけどね。携帯耳に持って行って通話するのは微妙に嫌。

でも、いろいろ見ているうちに、ER-4S でいいやって気に。少しポイント残っているだろうし。XBA-2 買うんだったら。最初からそのつもりだったんだろ :-p

http://www.etymotic.com/ephp/er4.html

ってな感じで ER-4S 買ってきました。線が太い。音は90SLに近いモニタっぽい感じ。そういうのを選んでるんだから、当然か :-p いくつかパッドが付いてくるのね。あと「中のフィルタが汚れたら変えろ」ですか。ふーん。

MDR-EX90SL は細かい部品を人手でチューニングしていたらしい。音漏れが有名。ってことは遮音性も良くない。そんなこんなでディスコンらしい。888の壊れやすさにも参ったけど、こいつも線が細くて。それでももった方か。

ER-4S がどれくらい持つのかは謎です。つうか「邪魔」なんだけど。線が太すぎて。

Blogger へのメールが詰まっているみたいだなぁ。こっちも直接投稿にするか。

Tuesday 27 December 2011

mixi の日記を移動



そういえば、Blogger には import あったなと思いだしたので。でも、

* FCブログを使って、Atom を生成する
* http://www.neko01.com/pc/t-blog/mixi.php

ってのが簡単らしいです。

でも、それは使わずに、手元に backup mixi で取ったのがあるので、それを使います。気分的な問題だな。

Blogger の Setting の Option に import/export があるので、まず、export してみてファイルを確認。id とか update の日付
と title と contents をまとめて entry にするという xml 。RSS で使われている形式で、ATOM というらしいです。blog の移
行にも使えるのか。

で、それを生成する前に、backup mixi が生成した HTML を見るのだが、table のと css のと混じってる… それは簡単に切り
出せたんだが、atom に変換しても Blogger が読んでくれない。

そこで、w3c のチェッカを使う。

* http://validator.w3.org/feed/

簡単じゃん。tag が閉じてないとか、そんなのだった。これを通しても読み込んでくれない。

なので、Blogger から生成したものを読みこませると、それはいく。そこで、自分の生成したのと Blogger のを見比べて治すと
いう方式ね。どうも、id が Blogger の望む形式 (tag: hoge ) になってないとダメらしい。

で、2005-2008年分を ATOM を生成て Blogger に読みこませるんですが「写真がおかしくなってる」。写真は、大学の方に上げ
て、そこへのリンクにしたんですが、リンクそのものが入ってないな。なんと、diary を dialy と書いていた。馬鹿じゃん?

で、読み込ませると、100個ずつしか操作できないみたいです。publish は手動なので 1400だから14回ね。はいはい。

それで、めでたく移行完了。これで、Blogger の方でサーチが使える。写真も移ったし。と思ったら大学のサーバへのリンクか。
Pisca に上げてやればよかったよ。ま、良い。

とりあえず任務完了ということで。script は使い捨てっぽく書いちゃった。ま、そんなものだよね。

Facebook のTime line は結構面白いので、それに全部載ると良いと思うけど、可能なのかな。なんらかのAPIがあるんだろうな〜


Monday 26 December 2011

12/26-1/9 東京

です。1/6-1/8 はプロシンで湯河原らしい。それ以外は、採点かなんかしてるでしょう… 呼び出してくれれば、さぼる言い訳になります。既に 28 は飲み会が入ってます。
特に意味なく先週は、毎日飲んでました。年末だからな。別に酒は必須ではないらしい。ワイン一本ぐらいなら問題ありません。そのせいか、寒いせいか、少し血圧高め。147-101 ぐらいです。下が90切らないと、いろいろ言われる。でも、今の毒にも薬にもなってない感じの薬がいいかなぁ。安いし。去年も年末は高かった。
飛行機は空いてました。羽田に降りる時に、ちょうど陽が沈むが見えた。富士山も綺麗に見えてました。東京は、16:34 に日没なのか。早いよ。那覇だと 17:45 。すっかり、そっちに慣れたってことか。

国際線ターミナルで、おでんを食べてみました。

Sunday 25 December 2011

Twitter client on iPhone

iPhone 3G を買って最初に入れたのが、Twitterific (有料) だったはずです。1,300円ぐらいしたような記憶がある。コマンドラインから Twitter に書いていた頃です。

で、マルチアカウントに対応しているという理由で、Tweetie に移ったはずです。他にも夜フクロウとか夏ライオンとか、いろいろあったけどね。

で、Twitter 社が「Twitterという名前を入れてはならん」と言ったので、Twitterific は Echofon になった。で、Tweetie は、Twitter に買収されて、Twitter.app という名前になりました。ややこしいんだよ。

というわけで、当時、一番快適だった iPhone クライアントが正式なものになったので、かなり幸せでした。

ところが、4.0 に version に上がったあたりで、かなりひどいことに。ほとんどゴミ。

* Tweet や Web page がコピペ禁止
* Near by search がなくなった
* List 変更がバグってできない

で、ぶち切れてきたので、他のクライアント探すことに。Twitter に書いたら候補は2つ。

* Echofon
* Soicha/j

Soicha はかなり高機能。Echofon は前の Twitter.app に近いです。しばらく使ってみましたが、Soicha は、少し不安定で結構落ちる。機能は高くて良いんだけど。flick gesture とか半透明発言パネルとか。

なので、Echofon Pro かな。既に購入していたので、今回はお金はかかりませんでした。

Twitter の Web 側の UI の変更も意味なく左右を入れ替えるという神経逆なでだったしな。まぁ、急に伸びた会社がユーザの希望と離れたことをやり始めるのは mixi に限ったことじゃないってわけだね。

* * * *

なおったと思った iPhone の写真同期は、1万枚ほど追加されただけで、4000枚ほど同期抜けがあり、症状は変わらず。同じ事をやっても、今度は同期しないという感じ。もういいよ〜 少し放置。前より少しましだとということで。

Saturday 24 December 2011

iPhoto vs iPhone 解決編

どうにもこうにも同期しなくて、もう iPhoto やめて Photo Stream だけにしようかと思っていたんですが、なんか、void が「徐々に同期を増やしていったら同期した」とか言っているので、もう少し頑張ってみました。

まず、iPhone を 5.0.1 に上げてと。まだ、JB ないけど、iTether は手に入れたのでテザリングはできるので問題ないです。JB は、だいたい3ヶ月はかかるらしい。でも、もう結構立ってるんだけどね。JB は、要するにセキュリティのバグなので、それが必ずzある状況ってのは学者的には微妙な状況。どうせ帯域制限しているわけだからテザリングさせないのは根拠ないと思うけど。

でも、もちろん、それで同期が治るわけもなく。少し期待したんだけど。

同期させるとバックアップとアプリと音楽の同期の後に写真の同期に行くわけだけど、そこで waiting items to copy とかのメッセージで止まるパターン。でも、Photo Stream は動いているので最新の写真は見れる。写真の同期を外すと同期自体は終了するので写真だけの問題らしい。

でも、4万中1万ぐらい落ちている。2008 年のとか30枚だったり。(iPhoto 11 だと、2008/1/1-2009/1/2 と設定すると年毎に分けられます。2007/12/31-2008/12/31 ではバグる)

で、その年毎のアルバムだけを同期させてみる。waiting for changes to be applied ダメじゃん。一つだけにしてもだめ。そんなことだろうと思ったよ。

で、void が(またかよ) 「アップグレードした iPhoto だとなりやすい」とか言うので、iPhoto Library Manager (昔はこれで複数のライブラリに分けていた) で、新規 iPhoto にして、そこに 2011 分だけ放り込みます。そこで、同期。「置き換えるか」と聞いてくるので yes 。そこで、同期。waiting for changes to be applied ダメじゃん。

そこで諦めて、元に戻して新しい方は消して、念のために最後の同期。「置き換えるか」と聞いてくるので yes 。で、waiting for changes to be applied 当然だよな。なんだけど、そこ放置して寝てたら、

copying 5035 in 10789

とか出た。1万ってなんだよ? あれれ。そのまま無事同期終了。なんだよ。でも、同期できたみたいです。

ということは iPhoto Library Manager の switch が効いたってこと? あるいは、wating for changes to be applied の待ちが足りなかったか。

Friday 23 December 2011

Prof. Asharif's Party

うちのカレーパーティと同じで、毎年あるパーティです。イラン人の先生なので「基本バーベキュー」肉ばっかり。

人類は肉食に適応したらしく、肉ばっかり食っても問題ないらしい。カロリーやビタミン的にはバランスは良い。

頑張って菜食主義も良いけど、バランスを保つのは難しい。ジョブズも菜食主義だったけど、別に長生きできるわけじゃないんだよね。

というわけで、肉ばっかり食べてきました。

Thursday 22 December 2011

17inch PB 修理の続き

プラグの先が中に埋まっているので取り出さないといけないんだけど、うまくいかないです。
HDの中身もみないといけないので、ばらしてHDは抜き出して、EIDEでつないで。でも、なんと17PBは、もう一台あるので、そっちの電池と入れ替えれると「普通に動く」。そうか、それで取り出せば良いわけね。
ばらしてもプラグの受け側はオープンな構造ではないので、やっぱりダメ。少しいじったら、プラグははまるようになったが、一緒に端子も壊してしまったらしく、電源は通じない。あらら。ショートしてるのかも。





たぶん、メスプラグを外して、電源コードに直結すれば治る。けど、そこまでする価値あるのかな。1GHz, 1MB, 60GB なPCに。もっとも、電源以外は健全なんだけど。

Wednesday 21 December 2011

初代17inch PowerBook の電源

たっきーのところで元気に動いてます。10年選手です。いや、2003年からか。今使っているのは4代目。

で、電源がどうこうっていうから見てみると「なんか焦げてる」。でも「電源交換だね」と言い放って帰ってきたんですが、

「先にピンのあるやつ」え? 調べてみても、そんなものはない。もしかして...

電源プラグの先が抜けて詰まった

あ、そうですか。引き抜こうとしてみるが全然ダメ。開けて、中からか。いずれにせよ、もう少し道具が必要か...

いや、PowerPC 1GHz 1MB memory だし。捨ててくださいって気もするね。

1440×900 かぁ。今は、1920x1200だ。結構小さくなった気もするけど、そうでもないのか。

「HDDの中身も... 」おいおい。バックアップ取れよ〜

Tuesday 20 December 2011

googlecl

% goocle docs

とかやると、google docs にアクセスできるらしいです。でも、欲しいのは、これではないっぽい。困ったものだ。そうではなくて、他人の docs を短縮URLから取り寄せるのが欲しいんだけど。 どっかに、Oauth token を覚えているはずなだが、見当たらず。どこだ?

 * * *

OS の授業も古臭くなっているので、なんとかしたいのですが、意外に直せない。

Thread worker の作成
worker への synchronized queue を作った仕事分配

と、

socket read
task execute
socket write

のパイプラインぐらい流したいのだが。

そこまでいかずに、昨日のDBの授業と同じ dead lock の話をしてました。dead lock のは、面白いんだけどね。Perl の script をいじるのは嘘臭い。

http://babelfish.arc.nasa.gov/trac/jpf

Java Pathfinder は、並行プログラムを教えるには良いツールだと思う。なんだが、動かし方を忘れてて、少し苦労した。Eclipse の中からも動かせるらしいんだよな。やってみたことはないんだけど。

race condition (競合状態)とか dead lock(閉塞状態)とかを一発で見つけてくれるのはすごい。sleep で調整するのも面白いけどね。

Perl で書いた dead lock をやらずに、Pathfinder のみでも良いか。

Pathfinder で指定されたバグを作る問題ってのを出せば良いのかな?

Monday 19 December 2011

SQL and Transaction

一通り理解しているつもりだけど、SQLの個別の状況まではな〜

で、学生に実習させてみるんですが… Perl のは、ちゃんと動いて問題ないんだけど、SQL がどうも妙な動きをする。動かしながらわかったんですが、

start transaction と lock table とかの振る舞いは個々のDBで全然違う。start transaction -> commit なわけだけど、

* SQLite3 start transaction で、select/update で自動的に read/write lock がかかる
* MYSQL select for update で write lock、select lock for share で read lock。
* PosgreSQL select for update で write lock、select for share で read lock。

MYSQL では lock table は「それまでの lcok を解除してから、lock を取得」で、unlock tables は勝手にcommitするので以後 roll back 不可らしい。なので、事実上、lock table は使えないので、select for update を使えってことらしいです。ひどい。

SQLite3 方式が正しい ( two phase lock に自動的になるから ) と思うが、strict two phase lock は performance の問題もあるからなぁ。

lock table では lock はかからなくて、update/select して始めて lock がかかるとかがあるので、動作のチェックも難しい。まったくね。

なので、transaction log を見ようと思ったんですが、transaction log は存在するはずなのだが、mysql ではアクセスできない。どうも、起動時にオプションで --binlog とかつけるらしい。実際、それで Mac OS X では動くんですが…

Windows では、どうするの? 勝手にサーバ上がっているんですが。mysql.ini に書くのでは動かないみたい。何故だ〜 というところで授業の時間が尽きたみたい。後は来年ですね。

Sunday 18 December 2011

カレーパーティ

今回はカレーを一生懸命作った割には人が余り来なかったので、だいぶ余りました。20人いかなかったかも。
キーマカレー
 チキンカレー (骨付き)
タンドリーチキン
 エビとカシューナッツのカレー
 サグマトンカレー (羊とほうれん草)
チャナ豆のカレー
 じゃがいもとグリーンピースのサブジ
ワダ (豆のコロッケ)
 チャツネ
 アチャール
 パパド (豆のおせんべい)
チャパティ
でした。
あんまり、真面目に人に声かけなかったからな。来年は、もっとちゃんと呼ぼう :-p



バルスも見れたし。

Saturday 17 December 2011

カレーパーティ、今日の分の準備はだいたいできました

最初のベースとかタンドーリチキンは僕の監督で、残りは奥様が監督してくれました。

買い物もサンエーが近いから。でも4回も行ったよ。ラベルのないスパイス瓶は勘弁してください。かなり古いスパイスも。

今年の学生は料理したことないらしく、

「レシピ見てから作れ!」
「コンロの上の油から目を離すな!」
「ちゃんと計れ」
「包丁は先でなく手元で体重をかけてすべられせて使う」

あたりから。でも、それだけに新鮮だったようです。そういえば包丁研ぎやらせるの忘れた :-p

玉ねぎペーストとかフードプロセッサとかあるので、時間的には短い。1時間半は短くなっていると思う。こっちの経験値も上がってきてるしね。

なんかチャナ豆が売ってなくて、ちょっと困ってます。缶詰が便利だね。

風邪流行ってるみたい。なんか血圧高いし。カレーで治ると良いけどね。

明日 12/18 はカレーパーティ

で、準備してます。タンドーリチキンとカレーベースからだな。

新しい3年生の料理の練習みたいなところがあるんですが、なんか、この後に及んで「まだ研究室配属が決まってない」と。来週決まるとか言ってる。でも、もう決まってると本人たちは言っているので、そうなんでしょう。

料理とプログラミングはかなり似てるので、どちらに習熟しても、どちらにも良い効果があるはず。

ちゃんと進めば、夜になるまで出来るはずです。

あんまり声かけてないけど、参加した人はどうぞ。

Friday 16 December 2011

iPhone と近視

iPhone 4S にしてから絶対近視進んでる。

MBP 17 の 1920 x 1200は、かなり細かいので、結構、近くないとつらい。なんですが、メガネをかけないと、15cm ぐらい。これだと、かなり前かがみになる。

http://www.atmarkit.co.jp/fjava/rensai4/community01/01.html

の写真の写真みたいになっちゃう。

なので、ちょっと弱めのメガネを作ったんですが、今まで、それでもMBPは遠くて辛かったんですが、最近、それで丁度良くなってる。まずいかも。強く作ったメガネも弱くなってる。

この歳で近眼が進むのはなぁ。

iPhone, MBP 用の専用メガネが必要?

Thursday 15 December 2011

つぶれたところが多い

近所にあった千円ステーキなゲーム機喫茶ひまわりはつぶれてました。たまに行ってたんだけどな。向かいの満点食堂よりは良かった気がするんだけど、でも、なにせゲーム機ばかりなので居心地が悪い。もっとも食堂の方も床がべたべたで居心地は悪いんだけどさ。

別に惜しくはないですが、安直に肉食べたい時には便利だったんだがな〜

中部商業付近は建物取り壊しているのが多い。時期的な問題なのかな。

沖縄の街の店の問題は、

 駐車場

だと思う。ダメなお店でも駐車場があれば生き残れるし、そうでなければダメ。例えば、小さなカフェで何かの二次会でもするとすると、人数分の駐車場が必要。まぁ、そういうことです。

サンエーとかメインプレイスとかは無料の駐車場があるけど、街中の駐車場になんかのサポートはできないものなのかな。

Wednesday 14 December 2011

勉強という変な言葉

辛いことを一生懸命やっても良い結果になるわけじゃないと思う。

トレーニングは体力でも知力でも、繰り返し使って鍛えるわけだけど、単純に肉体的に辛いとか、繰り返し作業が単調で退屈だとか、それが原因で辛いわけではない。痛くて我慢できないってのとは違うから。

一つは目標だと思う。そして、そこに向かって進んでいるという測定。いくらやっても進まないものを頑張っても辛いだけ。

そのやり方や測定方法を示すのが教育だと思うけど、勉強って言葉には、そういう印象がないよね。

自分が、それを示せていると自信があるわけではないけど、これができれば良いという基準は重要だと思う。それを下げたら教育そのものが無意味。そこまでそんなに遠いわけじゃない。みんなにオリンピック選手になれという要求しているわけではないから。

基準という意味では、教え方よりはカリキュラムで決まってしまうところがあるのかも。まぁ、いろいろ試行錯誤だなぁ。情報工学科でも授業よりは実験や他の演習の方が重要な気がするし。もちろん、授業は淡々とこなして欲しいけどさ。

どんな方法をとってもできる学生はできるみたいな所があって、教師なんて、所詮は、トレーニングのための邪魔なハードルぐらいってことなのかも。それに小学校で気づかないのは逆に不幸かもね。あんまり教師が良すぎるのも…

Tuesday 13 December 2011

クロノトリガー

最初はスーパーファミコンですか。95年だったはず。父が亡くなった時と重なっているんだよな。朝、4時かなんかに電話がかかってきて、雨の中を病院にいったみたいな… でも別にトラウマではないです。むしろ、面白かったな。

その次に PlayStation 版が出たはず。これは「CDROMの読み込みの分遅い」ってな代物。でも、一応、やったんじゃないかなぁ。でも、手元にはないみたい。

去年ぐらいに、DS版が出て、それは学生に借りてやった記憶が… (せこい) さすがに買う気はしなかった。

なんだけど、iPhone 版が 1,200円で出たので、それは買ってしまいました。非常にスムース。絵はエミュレータくさいけど。噂によるとDS版準拠らしい。

iPhone の設定は英語なので、英語になってしまようです。アプリ自体には言語の設定はない。ボッシュがメルキオールとかになってたりして面白いです。古代っぽいへんな言い方も、一応、頑張ってはいるようだ。むにゃむにゃとかの日本語特有の表現が*で入っていたり。面白いです。

ただ、画面が小さいので近眼酔いする感じ。DSもそうだったけど… まぁ、なんか楽しいです。

クロノトリガーは時間の流れが変わるタイプ。理論的には変わらない方が簡単。サマータイムマシンブルース方式だね。アニメ版時をかける少女も変わるタイプ。

自分自身に出会うってのは微妙に避けられているんだけど、一部のキャラクタは過去の自分に会ってます。

時間の流れが変わるのは、リーマン面的に変る前と変わった後が両方存在すると考える方が良い。リーマン面ってには、要するに多重世界解釈ですね。クロノトリガーはフラグで管理されているので変更は単調。つまり、元には戻らない。いや、戻っている場合もあるか。このあたりをいい加減にやると、一貫性のない話になってしまう。Startrek Voyger は、かなり一貫性に欠けていたな。あまり気にしませんけどね。

一周目なのでボス戦で負けまくってます。

Sunday 11 December 2011

授業の準備

Lion の mysql は、前のinstallが悪さをしているらしく、

111210 18:34:40 [ERROR] Fatal error: Can't open and lock privilege tables: Table 'mysql.host' doesn't exist

とか。あぁ、もう。でも、

sudo /usr/local/mysql/scripts/mysql_install_db

で良いらしいです。これで問題のチェックができるよ。mysql は動かしっぱなしにするとよくないので、/Library/StartupItems には入れない。

epkg に上げられないのはサーバ側でなんかすれば良いのかもしれないけど、よくわからない。

OSで使う Fedora 16 も ovf にするのだが、なんかuploadできない。VMWare側でVirtual Machineのversion を下げる必要があるらしい。いまいち理解できないが、ESXi のversionが古いかららしいです。でも、下げたら、今度は「権限がありません」。それは権限を出してもらえば良いだけ。

なんだが、ip address がぁ。IPv6は自動割り当ててつながるのだが、IPv4はセグメントがほげほげらしく割り当てられない。domain を変えれば良いとか言っているが、そうかなぁ。まぁ、IPv6 があれば困らないので良いよ。

* * *

iPhone のクロノトリガー結構良いです。すごくエミュレータくさい。なんか、やってないゲームが溜まってる。MSG4、FF13、Ace combat 、Stiens; Gate。別に急ぐ必要ないしね。でも、Ace combat は疲れる。ヘリコプターでめげてます。

PS3 は洋ゲー化していて難易度が高くなってるみたい。PS3 というかゲーム自体がオワコンなのかも。昔のゲーム良かったねとか思うようではね。

Saturday 10 December 2011

Closed Caption

Closed Caption な機器が欲しい気もするが、日本では全滅。ブルレイ/DVDには入っているんだけど。Apple TV は CC対応なはずだが、ちょっと違うんだよね。Apple TVはソフトの値段高すぎるし。スーパードラマチャンネルって、昔はCC対応だったんだけど、HDでなくなったらしい。で「日本語字幕入り」を放送してたり。バカみたい。つうか馬鹿だろ? アメリカはCCは義務なので問題ないんだが… どうも日本って英語を勉強するのを邪魔するのを生きがいにしている人がいる感じ。よくいるよね、英語で発音すると笑うやつ。CCも、そういうのが落としたんでしょう。

でも、Yasulab さんが言っていたように、

 「どんなにすごいアイデアを持っていても、英語が話せないというだけで馬鹿だと思われる」

これが現実です。まぁ、でも以前より CC 欲しいとは思わない。前より聞き取れてるのか、前より気にしなくなったのか。

日本語字幕は英語の勉強には向かないです。子供の頃、従姉に字幕を読んでもらって映画を見たことがある。海底二万マイルだったな。字が読めなかった頃の記憶って結構ある。片仮名は読めるけど平仮名がダメだった頃とか。

で字幕自体は映画に関しては邪魔なんだよね。日本人は日本語字幕好きなんだけど、邪魔だよ。特に3Dでは。なので海外で主流の吹き替えに変わっていくと思います。

文字と音声と言語的にどっちが先かといえば、音声が先なのは自明だと思う。なので文字から入るのは良くない。音楽は聞き取れない。桑田をちゃんと聞き取れる日本人なんていないでしょ? 結局、AFN 流しっぱなしがいいのかとも思う。ってわけなので、CCにはこだわらない感じです。

AFN は最近方針が変わったのか、あの「毎朝、White Room が流れる」ってのはなくなって、結構、いろんな音楽流すようになったみたい。毎朝、White Room はひどいかった…

毎日放送している英語ドラマが良いね。Stargate や Startrek Enterprise が終わってから、毎日見るものがないので、ちょっとさびしいです。200話ぐらいあっても1年で見れちゃうからなぁ。やっぱり、V 見るべきだったか?

別にCCは real time である必要ないのでWebで見てもいいんだよね。あらすじでも十分だし。イギリスのお笑いものは落ちがわからないことが多くて :-p

Friday 9 December 2011

gmail

G と言えば、gmail ですが、学科のメールを Gmail にしようかと。話だけは 3,4年前から出ていてドメインで区別して併用すれば良いと思っていたんですが、

* サーバ班で、やってくれる人がいなかった

まぁ、学生なんて、そんなものだし。先生がやる気出さないとやらんよね。でも、最近、よくメールが止まる。サーバ班の根性がというよりは、安易に止めるようになったのか。で、

* 研究室のメールを gmail

にするって話が。つうか、この間、研究室のサーバふっ飛ばしたしな。割と簡単で、DNS/MXの設定の権限さえあればできる。で、うちの研究室のを移行したので、学科のも移行しようかと。

「文句言う人がいるかもしれない」とか言ってましたが、既に、複数の研究室が gmail に移行しているので、問題ないはずです。

残念ながら、また、毎年アカウント登録しないといけないけどね。琉大全体のメールも gmail に移行するのは時間の問題かも。

メール自体が時代遅れになっている割に、smtp over ssl とか domain key とか ldap とか妙に複雑になって、学生でメンテするのはきつい。それよりはクラウドな技術に慣れたほうが良いしね。タイミング的には遅いような気もするが。

ただ、spam を gmail に転送しまくると止められてしまうようです。気をつけよう…

もっとも、僕は自前の smtp server で受けているのだった :-p 送信はどうなるんだろう? 研究室のメールは自分では使ってないという変な状況ではあるんだよな。普通に学科の送信メールサーバに送れば良いはずだが…

Wednesday 7 December 2011

Programming 4 の発表は 1/11

3年目の「好きなプロジェクトやって単位がもらえる」授業です。最近は、どこでもやっていることかも。

今年のProgramming 4 は3グループ。いろいろやってくれているようです。割と放任な授業だが、そうであるべきだとも思う。いや、フォローしてくれる人がいるから、そんなことしていられるのかも。

結構手間のかかる授業でもあるので、1/11 に発表できるのはうれしい。JABEEとか出席とか、うるさく言われると、こういうのがやりにくい。いや、それでもやるけどさ。

かんばん方式 とか Red Mineとか、Mindmap とか UML とか、いろいろ教えますが、大学で一週間半徹夜とかだと、そういうツールはあんまり関係ないっちゃ関係ないでしょう。やることが決まればね。

Ruby on Rails が多いみたい。やっぱり、入りやすいってことなのかなぁ。

Monday 5 December 2011

MySQL

データベースの授業で使うんだけど、朝から MySQL と格闘してました。

EasyPackage に入っているのが古いので update するんだが、configure ではなくて cmake に変わっているのね。Lion は Universal Binary と、ちょっと相性が悪いので、そこで引っかかる。64bit only で良いのだが。

なぜか、EasyPackage に upload 出来なかった。しかも、

* mysqld が起動しない

data のpermissionが出てないとかなんとか。

Perl の DBD::MySQL も mysqlclientlib が見つからんとか言ってくるし。なんで symbolic link 張らんとあかんの?

結局、Server は動かなくて ( *.dmg 取ってくれば動くのはわかっているんだが ) 、クライアントしか動かない。

そこで時間切れで、高専へ。こっからは Windows 編に突入。

高専でも、まぁ、MySQL 使うところで終わりだろうなと思っていたんだが、案の定、はまりまくり。高専は Windows で、

* mysql の port は firewall で切られている

あっそ。IP address と port の解説もさせられたし… Firewall を、いきなりググッている奴はいるし…

Windows だから cpan でなくて ppm で入れるんだけど、

* ppm で入れた moduleを perl が見つけられない

なんだよ。つまり ppm と perl が別物らしい。で、.pm を検索して、-I で指定したら動きました。

あと、mysql のユーザ作成って、あのアホさ加減はなんなの?

* grant all on *.* to kono identifyed by 'password_of_kono';
* flush priviledges;

まぁ、他にもいろいろありましたが、楽しめました。

明日は、OS の授業が…

Team Spot Jumble Break

http://www.spot-jumble.com/e3762603.html

毎年恒例なんですが、Team Spot Jumble の公演を見に行ってきました。沖縄市民会館で少し大きかったので顔が良く見えなかったよ。その代わり、動きが大きくて走り回っているのが良く見れました。

今年は、パクリが多く、子供向けだった。ドリフっぽかったね。怪しい車のオモチャが、あーいうことになろうとは。なぞなぞは多すぎだろうとは思ったが、あーいうしつこさは子供には受けるかも。

31歳のニートと最強なメイドさんのペアが、ぐっと来ました。あぁいうのよいよな。

会場では咳する人がたくさん。風邪流行ってる?

観劇は最近は珍しい。小田急線沿いに住んでたのに下北沢の劇場には一回しかいかなかった。小さい劇場で、そばで見るのが面白い。大学の劇団とか。高校生の時に見た「楽屋」は良かったな。海に棲むヒトデ。

http://plaza.rakuten.co.jp/itoyaonline555/diary/200906090000/

劇ってのは、わざとらしいものなんだけど、そういう文法なんだよね。恥ずかしい感じが良いのかも。

Sunday 4 December 2011

LLVM ソースの続き

ソースをわざと追跡できないようにする難読化なんていう技術もあるんですけどね。

最近読んだ Linux Kernel と LLVM は、そういう難読化が入っているわけではないのだが読みにくい。共通しているのは、
<pre>
Preprocessor の文字結合を作ったコード生成
</pre>

かな。もちろん、gcc -E で Preprocessor 処理後のコードを見れば良いわけなのだが、

<pre>
 定義されている部分をgrepやcode referencerで追跡できない
</pre>

ってのは厳しい。script で成形する手法の方が良いと思うのだが Windows だと言語に閉じる方が好まれるんだろうな。

あとは、LLVMのポインタタグ。古い技術だと思うし欠点も結構議論されていたと思うんだよね。おかげで C++ の意味不明 cast 連発。gdb で trace する時に cast を何重にも追跡する羽目になる。見かけを良くするためにだけ階層を深くするというあれですね。

利点としてはメモリを食わないのとポインタの先を見に行かなくても条件判断できるってのがあるんだけど、CPUやキャッシュの予測を下げてしまうし、ソースは読みづらいし。いや、まぁ、CPUが「ポインタのアライメント分は無視する」ってな構造だったらよいのかもしれないけどさ。今でも「アドレスの上位は使わないからタグに使う」とかのセコイ技多い。

Parse/ParseExpr.cpp の中で定義されているクラス名が Parser::ParseExpression ってのは、なんかの冗談ですかね。

あと、これ

<pre>
llvm::Value *&DMEntry = LocalDeclMap[&D];
  DMEntry = GV;
</pre>

かな。LocalDeclMap は Hash 表で [] の中はキーなんだだよね。&D というアドレスがキーというわけ。しかも、それを *& で受けるから、

<pre>
  DMEntry = GV;
</pre>

これは、DMEntry を変更しているのではなくて、 Hash 表の中に GV をコピーしているわけだ。なんで、

<pre>
LocalDeclMap->put(D);
</pre>

じゃあかんのか?

これ見てもそうなんだけど、変数は引数を含めて基本的に大文字。小文字はmodule名にしか使わないらしい。Windows っぽいかな。Unix 流ではないね。

namespace を明示するルールらしい。
<pre>
if (Tok.isNot(tok::identifier)) {
Diag(Tok, diag::err_expected_property_name);
return ExprError();
}
</pre>
みたいな。長い名前は苦にならないらしい。IDEは何を使っているんだろう? Emacs?

コメントは「バグの言い訳」で機能のコメントはしないという方針らしいです。標準もないみたい。/**/ は使わないのは良いかな。FIXME. が多い。

複雑な条件も問題ありません。
<pre>
// Support 'Class.property' and 'super.property' notation.
if (getLang().ObjC1 && Tok.is(tok::period) &&
(Actions.getTypeName(II, ILoc, getCurScope()) ||
// Allow the base to be 'super' if in an objc-method.
(&II == Ident_super && getCurScope()->isInObjcMethodScope()))) {
ConsumeToken();
</pre>
なんかため息出ちゃうよ… コンパイラのコードなんてこんなものだけどね。

class でなく struct を使って、そこにメソッドを書くってのも LLVM の流行らしい。

<pre>
struct DestroyNRVOVariable : EHScopeStack::Cleanup {
DestroyNRVOVariable(llvm::Value *addr,
const CXXDestructorDecl *Dtor,
llvm::Value *NRVOFlag)
: Dtor(Dtor), NRVOFlag(NRVOFlag), Loc(addr) {}

const CXXDestructorDecl *Dtor;
llvm::Value *NRVOFlag;
llvm::Value *Loc;

void Emit(CodeGenFunction &CGF, Flags flags) {
// Along the exceptions path we always execute the dtor.
</pre>

assert が多い。落ちたらどーすんだ。Release時にassert落とすななんていう説もあるのは知っているけど。

まぁ、いろいろ楽しめるコードだな。動いているコードは汚いものだが。それでも、今まで見た C++ では、まともな方だと思う。Iterator が多く使われてます。

<pre>
for (DeclStmt::decl_iterator I = DS->decl_begin(), E = DS->decl_end();
I != E; ++I) {
</pre>

clang には最適化は入ってないので、ある意味で読みやすい。今回は、clang しか読めませんでしたが、続きはいつかな〜

Saturday 3 December 2011

iPhone と LLVM

朝、出るときに iPhone を忘れたので、家内に「よければ大学に持ってきて」と言って来たんですが、

お昼ご飯の時にアパートに寄ったら、もうない。ないです。

ってことは、なんか行き違ったようだ…

まぁ、別になくても大学にいる分には困らないよ。

なんか、321 を使うつもりがすでに使われていて、322 を使ったら、午後からはなんか埋まっていて、結局、406 で LLVM 読み会をやってます。

LLVM は、ようやっとコード生成しているところにはいきついたみたい。

BackendConsumer::HandleTopLevelDecl から
Codegen::CodeGenModule::EmitGlobalFunctionDefinisition

ですか。C++ なかなかしんどい。trace がキャストの嵐に突っ込んで戻ってこなかったり。

Friday 2 December 2011

せこいプログラミング

LLVM clang の続き。

LLVMのActionResultはポインタタグを使っているのね。ポインタは下2bit-3bit空いているのが普通。そこにフラグを入れるのをポインタタグという。その変換にいろんなテクニックがあるんだけど、LLVMは Template を使っているらしい。はいはい。

PtrTy get() const {
void *VP = reinterpret_cast<void *>(PtrWithInvalid & ~0x01);
return PtrTraits::getFromVoidPointer(VP);
}

これねぇ。

p *RHS.take()

とかすると良いようです。

CompundStatement は配列ですか。別に普通にリストで良かったと思うんだけど。

Body = new (C) Stmt*[NumStmts];

うーん。さらに SmallVector も使っているらしい。

コンパイラで富豪プログラミングすると結構ハマることも確かなんだけどね。LISPっぽく全部リストにして欲しかったかな。gcc はリストだったはず。

iterator 使えば見かけは同じという説もあるけどさ。でも、せこいプログラミングだと読みづらいよ。

たぶん、デバッグ用のブラウザがあると思うんだけど。

あと、gdb が enum をうまく扱えないので少し困りました。

enum TokenKind {
#define TOK(X) X,
#include "clang/Basic/TokenKinds.def"
NUM_TOKENS
};

で、*.h にないっては愛嬌があるんだけど

p (int)tok::identifier

とか動くんだけど、逆がだめ。

p (enum tok::TokenKind)257

が表示できない。

p tok::identifier

だと、

$10 = tok::identifier

とかでるくせに〜

明日は、コード生成を読むつもりです。が、どうなることやら… 今日も結構はまったしな〜

LLVM読み会

C++ なので泣きたくなるほど読めないです。

ExprResult Parser::ParseExpression() {
ExprResult LHS(ParseAssignmentExpression());
return ParseRHSOfBinaryExpression(move(LHS), prec::Comma);
}

って書いてあるだけなんだけど、ExprResult.h なんかない。これが、

ExprResult という型を持つ LHS 変数

と読むのは僕は苦痛。ただでさえ分かりにくいのに何故、関数呼び出しと間違うような書き方にした。

ExprResult *LHS = new ExprResult(ParseAssignmentExpression());

と同じだと思うのだけど。で、ExprResult は、

typedef ActionResult<Expr*> ExprResult;

で、ActionResult は、

template<typename PtrTy>
class ActionResult<PtrTy, true> {

ですか。gdb で、ExprResult を表示してみて中にある
uintptr_t PtrWithInvalid;
を頼りに探し当てました。typedef でgrepするという手はあったな。

困ったものだ。まぁ、でも Parser は楽勝なはずです。

Thursday 1 December 2011

小論文

特に苦労した記憶ないです。中学校の頃から日記を良く付けてた。そのせいかな。 いや、もちろん、本が好きで大量に読んでいた からだと思う。やっぱり量だよね?

それでも、小学校で「感想文書け」って言われて全然書けなかったことはあった。そりゃそうだよね。感想ってなんだよ。書き方教えてくれるわけでもないし。それでも作文嫌いにならなかったのだから奇跡みたいなものだな。

自分が漢字はいい加減だから誤字脱字とか、そんなに重要だと思わない。もちろん、あれば「馬鹿だな」とは思うけど。その辺りに神経質な先生が「誤字脱字のある卒論、修論は読まない」とか言ってたことはある。まぁ、チェックはするけど全部チェックできるはずもないし。

重要なのは「伝えたいことがあるかどうか」だと思う。伝えたいことの一つは「課題を理解して分析した」ということのはず。まぁ、そこに「こんなアホな課題出して」みたいなメッセージを入れてしまうこともあるが、受験の時はやめた方が良いです。

どうも中学高校では自分で考えるということを教えてないのではないという疑惑を感じる。小論文は感想文じゃないんだよ。感想文という目的のない文章を書く練習とかしているからいけないんじゃないかなぁ。

まず、Mind Map を書いて、課題を分析して、そこで自分の主張を考えて、その主張に至る道筋を書けば良いだけだよね。まぁ、課題によっては結論を書きにくいものはあるとは思うけど、それでも何かでっち上げることができないといけないと思う。

無から自分の結論を、しかも他の人が考えていないであろうものを考える。それが大学での要求だが、いろんなものの基本なはず。それを身につけるのは、それほど難しいことなんだろうか?

言いたいことがあれば、それを表現することは自然に身につく。そういう気がする。人に見せるかどうかは関係ない。自分で書いて自分で納得できる文章を書けるかどうか。そういうこと。それができない人って、怖い感じがする。自分でやってることを自分でわかっているのかな?

授業でも論述はやってもらうようにしてますが、白紙の前で途方にくれるのは大学生では恥ずかしいことだよ。高校生でも恥ずかしいか。今だったら、Blog がいいよね。