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
で、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 がどれくらい持つのかは謎です。つうか「邪魔」なんだけど。線が太すぎて。
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 東京
特に意味なく先週は、毎日飲んでました。年末だからな。別に酒は必須ではないらしい。ワイン一本ぐらいなら問題ありません。そのせいか、寒いせいか、少し血圧高め。147-101 ぐらいです。下が90切らないと、いろいろ言われる。でも、今の毒にも薬にもなってない感じの薬がいいかなぁ。安いし。去年も年末は高かった。
飛行機は空いてました。羽田に降りる時に、ちょうど陽が沈むが見えた。富士山も綺麗に見えてました。東京は、16:34 に日没なのか。早いよ。那覇だと 17:45 。すっかり、そっちに慣れたってことか。
国際線ターミナルで、おでんを食べてみました。
Sunday, 25 December 2011
Twitter client on iPhone
で、マルチアカウントに対応しているという理由で、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 解決編
まず、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 の電源
で、電源がどうこうっていうから見てみると「なんか焦げてる」。でも「電源交換だね」と言い放って帰ってきたんですが、
「先にピンのあるやつ」え? 調べてみても、そんなものはない。もしかして...
電源プラグの先が抜けて詰まった
あ、そうですか。引き抜こうとしてみるが全然ダメ。開けて、中からか。いずれにせよ、もう少し道具が必要か...
いや、PowerPC 1GHz 1MB memory だし。捨ててくださいって気もするね。
1440×900 かぁ。今は、1920x1200だ。結構小さくなった気もするけど、そうでもないのか。
「HDDの中身も... 」おいおい。バックアップ取れよ〜
Tuesday, 20 December 2011
googlecl
とかやると、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
で、学生に実習させてみるんですが… 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
カレーパーティ
キーマカレー
チキンカレー (骨付き)
タンドリーチキン
エビとカシューナッツのカレー
サグマトンカレー (羊とほうれん草)
チャナ豆のカレー
じゃがいもとグリーンピースのサブジ
ワダ (豆のコロッケ)
チャツネ
アチャール
パパド (豆のおせんべい)
チャパティ
でした。
あんまり、真面目に人に声かけなかったからな。来年は、もっとちゃんと呼ぼう :-p
バルスも見れたし。
Saturday, 17 December 2011
カレーパーティ、今日の分の準備はだいたいできました
買い物もサンエーが近いから。でも4回も行ったよ。ラベルのないスパイス瓶は勘弁してください。かなり古いスパイスも。
今年の学生は料理したことないらしく、
「レシピ見てから作れ!」
「コンロの上の油から目を離すな!」
「ちゃんと計れ」
「包丁は先でなく手元で体重をかけてすべられせて使う」
あたりから。でも、それだけに新鮮だったようです。そういえば包丁研ぎやらせるの忘れた :-p
玉ねぎペーストとかフードプロセッサとかあるので、時間的には短い。1時間半は短くなっていると思う。こっちの経験値も上がってきてるしね。
なんかチャナ豆が売ってなくて、ちょっと困ってます。缶詰が便利だね。
風邪流行ってるみたい。なんか血圧高いし。カレーで治ると良いけどね。
明日 12/18 はカレーパーティ
新しい3年生の料理の練習みたいなところがあるんですが、なんか、この後に及んで「まだ研究室配属が決まってない」と。来週決まるとか言ってる。でも、もう決まってると本人たちは言っているので、そうなんでしょう。
料理とプログラミングはかなり似てるので、どちらに習熟しても、どちらにも良い効果があるはず。
ちゃんと進めば、夜になるまで出来るはずです。
あんまり声かけてないけど、参加した人はどうぞ。
Friday, 16 December 2011
iPhone と近視
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
クロノトリガー
その次に PlayStation 版が出たはず。これは「CDROMの読み込みの分遅い」ってな代物。でも、一応、やったんじゃないかなぁ。でも、手元にはないみたい。
去年ぐらいに、DS版が出て、それは学生に借りてやった記憶が… (せこい) さすがに買う気はしなかった。
なんだけど、iPhone 版が 1,200円で出たので、それは買ってしまいました。非常にスムース。絵はエミュレータくさいけど。噂によるとDS版準拠らしい。
iPhone の設定は英語なので、英語になってしまようです。アプリ自体には言語の設定はない。ボッシュがメルキオールとかになってたりして面白いです。古代っぽいへんな言い方も、一応、頑張ってはいるようだ。むにゃむにゃとかの日本語特有の表現が*で入っていたり。面白いです。
ただ、画面が小さいので近眼酔いする感じ。DSもそうだったけど… まぁ、なんか楽しいです。
クロノトリガーは時間の流れが変わるタイプ。理論的には変わらない方が簡単。サマータイムマシンブルース方式だね。アニメ版時をかける少女も変わるタイプ。
自分自身に出会うってのは微妙に避けられているんだけど、一部のキャラクタは過去の自分に会ってます。
時間の流れが変わるのは、リーマン面的に変る前と変わった後が両方存在すると考える方が良い。リーマン面ってには、要するに多重世界解釈ですね。クロノトリガーはフラグで管理されているので変更は単調。つまり、元には戻らない。いや、戻っている場合もあるか。このあたりをいい加減にやると、一貫性のない話になってしまう。Startrek Voyger は、かなり一貫性に欠けていたな。あまり気にしませんけどね。
一周目なのでボス戦で負けまくってます。
Sunday, 11 December 2011
授業の準備
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
でも、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
* サーバ班で、やってくれる人がいなかった
まぁ、学生なんて、そんなものだし。先生がやる気出さないとやらんよね。でも、最近、よくメールが止まる。サーバ班の根性がというよりは、安易に止めるようになったのか。で、
* 研究室のメールを gmail
にするって話が。つうか、この間、研究室のサーバふっ飛ばしたしな。割と簡単で、DNS/MXの設定の権限さえあればできる。で、うちの研究室のを移行したので、学科のも移行しようかと。
「文句言う人がいるかもしれない」とか言ってましたが、既に、複数の研究室が gmail に移行しているので、問題ないはずです。
残念ながら、また、毎年アカウント登録しないといけないけどね。琉大全体のメールも gmail に移行するのは時間の問題かも。
メール自体が時代遅れになっている割に、smtp over ssl とか domain key とか ldap とか妙に複雑になって、学生でメンテするのはきつい。それよりはクラウドな技術に慣れたほうが良いしね。タイミング的には遅いような気もするが。
ただ、spam を gmail に転送しまくると止められてしまうようです。気をつけよう…
もっとも、僕は自前の smtp server で受けているのだった :-p 送信はどうなるんだろう? 研究室のメールは自分では使ってないという変な状況ではあるんだよな。普通に学科の送信メールサーバに送れば良いはずだが…
Wednesday, 7 December 2011
Programming 4 の発表は 1/11
今年のProgramming 4 は3グループ。いろいろやってくれているようです。割と放任な授業だが、そうであるべきだとも思う。いや、フォローしてくれる人がいるから、そんなことしていられるのかも。
結構手間のかかる授業でもあるので、1/11 に発表できるのはうれしい。JABEEとか出席とか、うるさく言われると、こういうのがやりにくい。いや、それでもやるけどさ。
かんばん方式 とか Red Mineとか、Mindmap とか UML とか、いろいろ教えますが、大学で一週間半徹夜とかだと、そういうツールはあんまり関係ないっちゃ関係ないでしょう。やることが決まればね。
Ruby on Rails が多いみたい。やっぱり、入りやすいってことなのかなぁ。
Monday, 5 December 2011
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
毎年恒例なんですが、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
お昼ご飯の時にアパートに寄ったら、もうない。ないです。
ってことは、なんか行き違ったようだ…
まぁ、別になくても大学にいる分には困らないよ。
なんか、321 を使うつもりがすでに使われていて、322 を使ったら、午後からはなんか埋まっていて、結局、406 で LLVM 読み会をやってます。
LLVM は、ようやっとコード生成しているところにはいきついたみたい。
BackendConsumer::HandleTopLevelDecl から
Codegen::CodeGenModule::EmitGlobalFunctionDefinisition
ですか。C++ なかなかしんどい。trace がキャストの嵐に突っ込んで戻ってこなかったり。
Friday, 2 December 2011
せこいプログラミング
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読み会
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 がいいよね。