Tuesday, 31 July 2012

DatagramChannel

java 7 から入った DatagramChannel の select は動かないという結論になりつつある。いろいろやったけどな。

でも、select するより潔く別Thread で read/receive しろよって話はある。そっちの方が速いなんていう論文も。

いやでもさぁ、read/receive したら、そこで停まって終わりだよね。プロセスが終われないっていう問題があるんだよな。まぁ、いいんだけど。

別 Thread で受けて、SynchronizedQueue で通信してやれば良いんだよな。

この辺り、こまごまと実験しないと実装できないのがなぁ。Java の問題でもある。C だったら、問題ないのに。まぁ、C は C でプログラムがなぁ。

Monday, 30 July 2012

Weather News Touch

iPhone の定番アプリなんだけど、

* update が悪評

「いきなり(無料)会員登録」させられるってのは、どうなの。しかも、トップページが変な SNS に。あらあらあら。 さらに、GPS の扱いがバグっているらしい。

なんだけど、GPS は iPhone の設定側から切れば良いらしい。これはバグだね。

で、トップ画面をMy CHから登録できて、それを本日の天気にすれば、今までとおんなじに。なるほど。

でもさ、ここまでやってくれるユーザはいないよ。みんな黙って消していると思う。

しかし、そこを乗り越えた有料会員とかがターゲットなんだろうから、無料の天気予報に使っている人たちがどうこう言おうと、あまり関係ないのだろうな。

 * * *

Kobo の方もいろいろ悪評立っている。社長のインタビューがさらに火に油を注いでいるし。でも、iPhone も Kindle も最初はひどかった。ま、長い目で(といっても半年ぐらいか?) 見るかな。

でも、個人的には見送りかな。ソニーリーダーも見送り。Kindle Touch も。

Kindle でもひどいのはひどいので、むしろ編集が重要かも。電子書籍で編集の重要性は高くなっていると思う。

Saturday, 28 July 2012

Selector と blocking mode

Java 5 から入った java.nio の機能なんだけど、socket のデータが来ているかどうかを調べようと思うと、Selector と Channel を使う。Unix の select に相当する(実際には kevent ) わけだけど。

でも、何故か、socket を non blocking に設定しないといけない。そうしないと library level で文句を言ってくる。この non blocking は、fcntl の F_SETFL/O_NONBLOCK なはず。

これは、おかしいと思うんだよな。O_NONBLOCK は、read() がデータがないと -1 を返すってやつなはず。select できるかどうかとは関係ないじゃん。

select すればデータは来ていることがわかるけど、どれくらい来ているかまではわからない。なので、read しようとすると block する可能性がある。なので、O_NONBLOCK したい場合があるのはわかる。でも、データがあるなら、1 packet は取りたいはずだよね? block してでも。

僕は普通は、

* 先頭にパケット長を入れておいて、その長さまで読む

という実装になると思う。つうか、ほとんどそうなはず。本当は Datalink 層にそういう機能があるはずだけどさ。

この問題は、TCP か UDP とも独立。

UDP は、本来 packet が受け取れるか受け取れないかどちらかのはずなので、block するはずないんだよね。UDP なら read は、1 packet 読んで戻って来るべきで、1 packet ないなら -1 を返すべきだと思う。でも、そうはならずに、read で指定された長さまで block して読むか、まったく読まないで -1 を返すということになったの? なんで、こんなことになったのか良くわからないです。

O_NONBLOCK をセットすると read で読み足りない場合の処理を書かないといけない(まぁ、書かないといけないんだけど)し、その処理は busy wait になってしまいがち。

Friday, 27 July 2012

HDD を消費する

去年、バックアップ用に750GB 3台ぐらい買ったはずだが、今年1TB を4台入れたので、その辺りのがゴロゴロ。

MBP17 も 500GB を 1TB に入れ替え。何に使うかって、VM か動画の持ち歩きとか、そんなものだな。

/dev/disk0s2 931Gi 327Gi 604Gi 36% /

Mountain Lion は入れますけど(OSの授業は、*また*新しいOSかぁ)、まだ入れてません。そういえば、~/Library にゴミが溜まりまくっているらしい。とはいえ、もはや 1GB ととか誤差だしなぁ。

du -sh ~/Library
20G /Users/kono/Library

いや、さすがに20GBは誤差とは言えないか。

昔の250GBなTime Machineとか、G4 Cube に入っていた3.5inch な500GB がスピーカーの重しになっていたりとか。まぁ、いろいろひどい。

Time Capsule もHDを4TBに入れ替えてみましたが、まだ、使い道を見つけられず。二重化するのが良いのかな?

PS3 の250GBも、MBP17 の500GBに入れ替え。PS3 は、もはやゲームはほとんどしないので、こっちも動画のキャッシュかぁ。

昔のHDDって、SATAになって割と読めるよね? BD-R よりも信頼性は高いかも。もっとも、容量が大きい分落ちた時の被害がでかいんだよな。

10 port USB hub を買って、iMac に3台つなげました。

いや、こんなことせずに、ゴミなHDDをZFSで合わせて使うとかが良い気もするが、あまり気が進まず。来年になったら考えようぐらいです。そういう2.5inch x X な筐体がきっと出るよね? それを大学とアパートで二重化するのが良さそうだ。

容量無制限な cloud disk もいくつかあって bitcasa とかも入れてみたんだけど、いまいち使う気が起きません。Desktop に50TBとか表示されるのは確かに面白いけどさ。

Wednesday, 25 July 2012

試験

前期の授業は終わり。 まぁ、いろいろあったけど。ちなみに試験はやりません。試験勉強が無駄だとは思わないけど、採点面倒だし。

* 試験勉強するくらいなら課題やれば?

ってなところです。

CCNA な授業の時には、Cisco Network Academy の試験*だけ*でした。これは、覚えゲー的なところがあるんだが、それでも落とすのがいるのは、不思議。実際のCCNAの試験も、そうなんだけど、そっちは「そういう本を買わないとダメ」らしい。なので、やめました。

でも、CNA は一応網羅的なんだよね。なので、落としたのは少し後悔してます。もっとも、学生の知識量がそれで変わったかというと微妙だけど。

高校の数学の勉強とかは問題集ばかりやっていた。そもそも授業がそんな授業だったし。まぁ、手抜きな授業だったな、あれは。でも、結局、問題解くのが一番なことは確か。

でも、受験勉強の時の模擬試験を繰り返し受けるのは面白かった。自分の進歩の度合いがわかるから。範囲の決まった個別試験よりも、そういう総合的な試験の方が僕には向いていたらしいです。

実際の世の中も、総合的な試験の連続みたいなもの。父も「学校を卒業して試験がなくなると思ったら、社会人は毎日試験みたいなものだった」と言っていた。

* 試験の範囲を聞いて、そこだけ勉強する

って、変だと思うだろ? 分野は限定するにしても、さらに狭い範囲に限定した試験とかは

* そんなものは自分でやれ

という感じ。そこを理解したかどうかは課題をやれば自分でわかるはず。

そんなこんな理屈をこねて、試験をさぼるってところか。

Tuesday, 24 July 2012

MBP HDD 換装の続き

大学で終わらなかったので、途中で止めて、家で続き。Carbon Copy Cloner は、途中で止めても問題ない。

大学で5時間、家で3時間ぐらいで終わったようです。Copy し終わったのを見ると 321GB。始める前は 342GB。なんか少ないんですけど。だいじょうぶかなぁ。

で、起動ディスクを変えて終わり。というわけで教訓は、

* HDD 換装は Time Machine backup してから

ってことですね。前回の iMac の入れ替えとかを見ると、Time Machine からの復帰の方が高速らしい。Time Machine は、sparse bundle で block 化されているので、入力側のopen の手間が少ないからかな。データコピーで差が出るとは思えないので。

で、気がついたんだけど、

* iPhoto の Database の下には、写真と同じ数のフォルダがあり、そこに2-3の数百byteのファイルが置いてある

ってこと。このコピーに時間がかかる。こういう小さいファイルがたくさんあるのは HFS+ とか rsync は苦手なんだよね。この Database 設計した奴は馬鹿だと思う。iPhoto は sqlite3 も使っていて、この情報は sqlite3 側にもあるんで、何かおかしなことが起きない限り、こういうものが作られることはないはずなんだが。反 sqqlite3 な人がいるか、sqlite3 の backup かなんかか?

写真を4万枚も置いているからいけないって説もあるが。iPhoto 馬鹿だから、全部を iPhoto に置くのは止めるべきだな。iPhoto は Photo Stream / 入力専用にして、メインの管理は別なアプリを使うのが良いと思う。

ただ、問題は乗り換え先に何が良いかということだけど。

Monday, 23 July 2012

MBP のHDD換装

昔は良くやってたけど。まさか、500GBで足りないと思うとかないと思ったんだけどさ。でも、ふっと見ると、

/dev/disk1s2 465Gi 342Gi 123Gi 74% /

74%? ありえんし。今HDD やっすいしなぁ。ということで、1TBに入れ替えるんですが、

物理的な入れ替えは楽勝。ネジ外して、HDDを入れ替えるだけ。HDDについているぼっちが硬かったけど。

で、Command R で立ち上げてと思ったら、Time Machine からでないと新規インストールか。まぁ、仕方ないか、どうせ、あとで、Clone すると言ってくるし。と思ったが、

途中で停まる。なんで?

「ネットワークが落ちてる」

ええ? 一応、復帰した見たいだけど、Apple のrestoreなサイトにだけ繋がらない。たぶん、なんかのfilterに引っ掛かったか。え、じゃ restore できないのか。

Tiem Machine からは復帰できそうだが、Time Machine の最後のbackup は6/10らしい。換装してからだと、backup をupdateできないらしい。ぐ。はまったじゃん。

なので、仕方ないので、Carbon Copy Cloner でコピーするかと思ったのだが... いつのまにか有料に?! あ、そうか、recovery partition とかいるのね。というわけで、うざい広告見ながら CCC してます。これで、上がるのかな。

5GB 12分だから、

342/5*12 = 816