java 7 から入った DatagramChannel の select は動かないという結論になりつつある。いろいろやったけどな。
でも、select するより潔く別Thread で read/receive しろよって話はある。そっちの方が速いなんていう論文も。
いやでもさぁ、read/receive したら、そこで停まって終わりだよね。プロセスが終われないっていう問題があるんだよな。まぁ、いいんだけど。
別 Thread で受けて、SynchronizedQueue で通信してやれば良いんだよな。
この辺り、こまごまと実験しないと実装できないのがなぁ。Java の問題でもある。C だったら、問題ないのに。まぁ、C は C でプログラムがなぁ。
Tuesday, 31 July 2012
Monday, 30 July 2012
Weather News Touch
iPhone の定番アプリなんだけど、
* update が悪評
「いきなり(無料)会員登録」させられるってのは、どうなの。しかも、トップページが変な SNS に。あらあらあら。 さらに、GPS の扱いがバグっているらしい。
なんだけど、GPS は iPhone の設定側から切れば良いらしい。これはバグだね。
で、トップ画面をMy CHから登録できて、それを本日の天気にすれば、今までとおんなじに。なるほど。
でもさ、ここまでやってくれるユーザはいないよ。みんな黙って消していると思う。
しかし、そこを乗り越えた有料会員とかがターゲットなんだろうから、無料の天気予報に使っている人たちがどうこう言おうと、あまり関係ないのだろうな。
* * *
Kobo の方もいろいろ悪評立っている。社長のインタビューがさらに火に油を注いでいるし。でも、iPhone も Kindle も最初はひどかった。ま、長い目で(といっても半年ぐらいか?) 見るかな。
でも、個人的には見送りかな。ソニーリーダーも見送り。Kindle Touch も。
Kindle でもひどいのはひどいので、むしろ編集が重要かも。電子書籍で編集の重要性は高くなっていると思う。
* 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 になってしまいがち。
でも、何故か、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とか表示されるのは確かに面白いけどさ。
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 は一応網羅的なんだよね。なので、落としたのは少し後悔してます。もっとも、学生の知識量がそれで変わったかというと微妙だけど。
高校の数学の勉強とかは問題集ばかりやっていた。そもそも授業がそんな授業だったし。まぁ、手抜きな授業だったな、あれは。でも、結局、問題解くのが一番なことは確か。
でも、受験勉強の時の模擬試験を繰り返し受けるのは面白かった。自分の進歩の度合いがわかるから。範囲の決まった個別試験よりも、そういう総合的な試験の方が僕には向いていたらしいです。
実際の世の中も、総合的な試験の連続みたいなもの。父も「学校を卒業して試験がなくなると思ったら、社会人は毎日試験みたいなものだった」と言っていた。
* 試験の範囲を聞いて、そこだけ勉強する
って、変だと思うだろ? 分野は限定するにしても、さらに狭い範囲に限定した試験とかは
* そんなものは自分でやれ
という感じ。そこを理解したかどうかは課題をやれば自分でわかるはず。
そんなこんな理屈をこねて、試験をさぼるってところか。
* 試験勉強するくらいなら課題やれば?
ってなところです。
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 / 入力専用にして、メインの管理は別なアプリを使うのが良いと思う。
ただ、問題は乗り換え先に何が良いかということだけど。
大学で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
/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
Subscribe to:
Posts (Atom)