2003年05月11日(Sun) 街の南までドライブ
● この道を通ると迷うんだろうなぁ、と思っていた道で、やっぱり迷った。やっぱり地図を買おうかなあ、と街の南に来る度に思う。いつも買い物に行く道はおぼえつつあるんだけどな。
● 今日も陶器市へ
帰りにお城の博物館(日曜日だけ無料)に行ったら、娘はイースターの飾り物のニワトリを見つけておおよろこびでした。
2004年05月11日(Tue) 雨になったり晴たり
● 今日は自動車も家も見にいきませんでした。ごめんです。
● BitChannelをインストールする
仕事場マシンでメモ代わりに活躍してもらおうと。
まずはインストールの仕方を眺める。 要求環境: Ruby 1.8.1以降。ありー。SuSE9.0*1だとまだ1.8.0だよ。 そういうわけで、まずはRubyのCVS版を。
むふふ。
次に、レポジトリの用意。 そのうち、持ち歩いてるノートPC(まだないけど)から編集して、 ネットワークにつないだ時点でcommit (wwwサーバーの動いてるホストとレポジトリのあるホストが違う) みたいな改造をしたいと思ってるので (そんな時間はないけど)、 ssh越しにcommitできるように考えてみる。
- BitChannelをcvs checkout。
- cvsさんでcvs init。
- wwwrunさんにちょっとだけの間shellをあげて、 パスフレーズなしのssh鍵をつくり、cvsさんのauthorized_keysに追加。
- BitChannelのインストールの仕方にしたがって、デフォルトのページをcvsさんのレポジトリにimport。
- CVS_RSH=sshしておいてwwwrunさんでcvsさんのレポジトリから ワーキングコピー2つ(wc.readとwc.write)をcheckout。
- index.cgiの最初に、
ENV['CVS_RSH']=ssh
を記載。弱っ! - wwwrunさんのシェルをおとりあげ。
さて、ページの更新はできているようです。 しかしmod_rubyにしたかったらこうはいかないよねぇ。
*1 Momongaを入れたいところだけどビルドマシンはまだ船のなかなのです。
2005年05月11日(Wed) プチ寝坊
● NFSの上のファイルが壊れたように見える
\0がたくさん並んじゃった。いやーな感じ。何回か同じ処理してmd5sumとるかのう…。
と思ったら職場Solarisにはmd5sum(1)無いでやんの。つかえんのう…。いや、もちろんsha1sumも無いよ。
(追記) そして5回やりなおしてみたらこの5回ではすべて同じ結果になってしまうという。ファイルの大きさしか確認はしてませんが。はぁ…。
● [memo] 自プロセスのメモリ使用量を確認する
proc(5)より、Linuxでは/proc/self/statmの6番目のフィールドを見ればよさそう。Solarisにも/proc/[pid]/はあるんだけど職場のものはprocのman pageがない。まあLinuxで問題なければいいのだろう…ほんとか?
● フロスが歯の間に残る
ついにやってしまった。歯の間に押し込んだフロスを外そうとしたらフロスが裂けて歯の間に残った。歯ブラシでも取れないしラジオペンチでひっぱろうにも細くてつかめない。他のフロスで救出しようとしてももう二度と歯の間に入らない。
うー。きもちわるいー。
2007年05月11日(Fri) 朝方に起こされるとつらいっすよ
● ボードワークステーションがブートできないなんて一大事と思ったらネットワークの線が抜けていたというオチ。tftpサーバは線の向こうだったんだよね。
● [Momonga] x86_64に行こうとする
まずはi686でできたシステムを別のパーティションにコピーしてそこから起動。
Vine Linux 3.1 AMD64化 (碧色工房) によると、まずはクロスコンパイル環境が必要 なのだとか。そーかー。そんなに簡単じゃないのねん。
というわけで上記ページにしたがって。 まずはクロスコンパイル用のbinutilsを作る。 パッチはMomongaのtrunkより。
次にクロスコンパイル用のgccを作る。 パッチはMomongaのtrunkより。
makeにCFLAG=-I/usr/includeを指定しないと下記のエラーを吐く。
gcc41-gnuc-rh-release.patchを当てると下記のエラーを吐く。
で、下記のエラー。
~/trunk-x86_64/cross/src/gcc-4.1.2-cross/x86_64-unknown-linux-gnu/libmudflap のconfig.logには下記が残っている。
crt1.o、32ビットのものでもいいのかなあ…。今日はここまで。
2008年05月11日(Sun) 調子悪いなりに遅々として…
● ボロい方の自動車の修理をしようとする
先日前から1番目のシリンダーのケーブルを抜いてみたらノッキングが少し減ったような気がしたので、ほかの気筒についてもやってみた。3、4番目はポコっと抜けてポコっと入ったのだけれど、2番目だけはどうがんばってもはずれなかった。ノッキングの原因はもしかしてこの中か?
● ボロくない方の掃除機の修理をしようとする
いつの日からかすごい音がするようになった掃除機。モーターからとおもわれる匂いもすごい。
どうせ分解しきれないだろうなあ、と思って分解をはじめると案外中まで行けた。モーターの中にものすごい量と密度の埃がつまっていたので、とにかく掻き出した。もう一台の掃除機できれいにして組み立て。
匂いはおさまったけれど音はそのまま。最後に分解しきれなかった、モーターに直結しているファンかそのカバーがぶつかってるんだね。
● ボロい方の体の修理をしようとする
午後早くに知人がマッサージ(のようなもの)をやりに切てくれた。午後じゅう家族の相手もできずぐっすり寝た。
これで皮膚の痒みがなくなるかと思ったけれどやっぱり夜に起きちゃいました。ひととおりwwwサイトを見てまわるとみんなプログラムをいじっているようでうらやましい。だんだん良くはなってるので近々復帰したいところ。
2011年05月11日(Wed) Google I/O 2日目
● 少しだけ雨がぱらつくかな?と思う2日目の朝。てなわけで今目がさめますた。朝ごはんの配給にいかなきゃ。もぐもぐ食べてたらなんだか集っているというので行ってみたら解散直前だけど集合写真その1・その2にだけ入っちゃいました。みんな良い顔してるよなー :)
● Keynote 2日目 (google.com)
今日はChrome一色のようだ。
ライブコーディングも交えつつ進む。
HTML5も使った三次元グラフィックスの例ROME。手元のChromeでは残念ながらWebGLに対応していないとかで見られなかった。
今日のおまけはChromebookとのこと。後日もらい方のメールが来る。Hackできない計算機はなあ... (自分勝手w
● Cloud Robotics (google.com)
Robot Operating System (ROS)はmessage passing systemとのこと。この名前、どっかのレイバーに載ってたOSみたいな名前だね (それはHyper Operating System)。
ROSほ最初からクラウドで働くように作られている。PR2などロボットの消費電力はモーターではなく計算機に消費されているため、処理をクラウドに預けた方が有利だから。
センサーも高い。だがkinnectで変わった。
自分のロボツトで家の中のストビューを!
rosjavaを使うとROSとAndroidとの間での通信が可能になる。
● 昼飯。3階の使われていない部屋に持って行って食べると、すいていて静かで良い。
● Designing and Implementing Anrdoid UIs for Phones and Tablets (google.com)
HoneycombではBackに加えてUpボタンが追加されるとのこと。また混乱が加速されるような...
Google IOスケジュールアプリのコード。例ではHoneycomb用のリソースに、-v11という接尾辞が付いてる。API levelから来てるのかな。どのリソースをどのテバイスに使うかは自由に決められるって言ってたからv11から昆布への対応はAndroidmanifestかなにかに書くのかもしれない。
● Identity and Data Access: OpenID and OAuth (google.com)
下記は手書きのメモからの再構成です。誤りが含まれている可能性が大きいのでご注意ください。
OpenIDがAuthenitcation (本人確認) を担当し、OAuthがAuthorization (リソースへのアクセス許可) を担当する。
OpenIDではIdentity Provider (実社会だと例えば運転免許を発行する機関)とRelying Party (実社会だと例えば警察官)が存在する。
2要素認証(Two-Factor Authentication)。Who you areあるいはWhat you knowに加えて、What you have (携帯電話機)などで本人確認をする。持ってるモノを使うので強い…落としたりしたらどうなるのかな。
Google Identity Toolkitを使えばモバイルアプリもOpenIDを使える。 アプリケーション内からブラウザを起動して、httpsのURLを表示させると、 ユーザーが同じブラウザで既にログインしている場合にクッキーを活用して 手間を省けるのが良い。確認後アプリケーションに処理を戻す。 ClientLogin #FAILを参照。
OAuthはアクセス先のリソースの管理を誰がしているか、 によって使うべきプロトコルが分かれる。
リソースを、Authenticateされた個人が持っている場合は、OAuth 2.0を使う。 開発者がclient_id、client_secretを得て、 ユーザーはclient_idとredirect_uri、scopeをリソースに渡す。 リソースはcode=<auth_code>が付いたURLにリダイレクトする。 アプリケーションは、clinet_id、client_secret、auth_codeを返し、 リソースからaccess_tokenとrefresh_tokenをもらう。 access_tokenでリソースにアクセスし、この有効期限が切れたら/切れる前に、 refresh_tokenで有効期限の延びたaccess_tokenをもらいなおす。
リソースをユーザー以外のビジネスなどが持っている場合は、 2-leggedd OAuth 1を使う。
consumer_keyやconsumer_secretなどの取り扱いに ハッシュ関数などが絡んできて複雑なので、ライブラリを使うべき。
● Android Development Tools (google.com)
Room 11Tへの列。交通整理してくれてるお姉さんも「入れるかなあ」とか…。
新しくなったWyswygレイアウトエディタ、カスタムビューのコード変えたらちゃんと変化したすげー。言語とかテーマとかも選べる。画面の大きさも。右クリックからリソースなのかたまりをincludeにくくりだすこともできる。アニメーションも動く。パワーポイントみたい。
プロファイラ。なんか表示がかっこいい。
エミュレータ。「GLのレンダラもARMのコードに変換されてから実行されてるので解像度が高いと遅い。ハードウェアにレンダリングさせることで速くしたい。サンドボックスとの兼ね合いと、ハードウェアのGLとのバージョン?の違いをなんとかしないといけない」
GLをハードウェアに任せているエミュレータのデモ。現在はGLの部分とそうでない部分が別のウインドウで走るw
リブート速くするスナップショット機能はもうリリースされてたかも。
● Memory Management for Android apps (google.com)
みんな大好きガーベッジコレクションのお話。廊下一本分並んでるよ。
Dalvikのヒープの大きさはテバイスで決まってる。G1:16MB、Droid:24MB、Nexus One:32MB、Xoom:48MB。ActivityManager.getMemoryClass()で得られる。 アプリから大きいヒープを要求したい時はAndroidManifest.xmlの<application …>内に「android:largeHeap="true"」と書けば良いが推奨はできない。
Gingerbreadからガーベッジコレクションのやり方を変えた。 これまでは、単純なMark & sweep。GCの時は他の実行は止める。 ヒープが大きいとポーズも長い。 Honeycombでからはmostly concurrent、paetiall collections。
ビットマップイメージ。 これまで実データはnativeメモリに覚えていた。 解放するにはfinalizerが喚ばれるのを待つ必要があった。 Honeycombからはdalvikのヒープ内に実データも置くようにした
メモリの解析はheap dumpで。 ddmsから緑のタンクの横に赤い矢印のアイコンをクリックする。 hprofに変換してMAT (Eclipse Memory Analyzer)で解析する。
Androidアプリケーションのメモリリーク。 contextとかviewとかactivityを参照してると 解放できないオブジェクトがたくさんになる。
メモリの解析。 Retained heap。あるオブジェクトを解放したときに一緒に解放できるヒープ。 Dominator treeを見るべし。
メモリリークする例。staticな変数からactivityのインナークラスへの参照。 例えば、Activityのインスタンスが複数あったら要注意。 Staticではないinner class (Runnableとか)、キャッシュとかも要注意。 インスタンス変数はstaticにすると参照を離さないのでGCを妨げる。 (てかzundaはJavaの勉強をちゃんとすること)
- http://android-developers.blogspot.com
- "Memory Analysis for Anrdoird Applications"
- "Avoiding Memory Leaks" by Romain Guy
- Markus Kohler's Java Performance Blog
● 夜はkimitakeさんにJapan Townに連れて行ってもらってごはん。焼き鳥定食に牛肉が入ってるのは許せなかったが、あやしい感じにもかかわらずそこそこおいしかったよ。
● 夜は、ベッドでごろごろしてたらみんながホテルの近くのアイリッシュバーでたむろしてるという情報を得て、行ってみましたよ。ビールが出てこないのでベースボールバーに移動して、しばらくSimejiを使ってないのを思い出して使ってみたり(Android 2.3.4以前よりはずーっと安定してたけど、結局落ちちゃった)、なにより皆さんにお会いできたのがうれしかったのですが、やっぱり覚えられない…。それにしても同年代の人がけっこういらっしゃるのですね。
> ブチャ猫 [すみません>フロス コツは上から入れて、下まで来たら、横に抜くんです。]
> zunda [いえいえ、ブチャ猫さんに謝っていただく必要はぜんぜん無いです。横に抜くと指に巻きなさおさなきゃいけないのが面倒くさく..]
> kotak [僕も親知らずを抜歯する以前は常にフロスが歯の間に残って困ってました。その頃見つけたOral-BのUltrafloss..]
> ブチャ猫 [日本で売ってるんでしょうか?]
> zunda [Ultrafloss試しました。こちらでは「Longs Drugs」というところにありました。メインランドにもあるの..]