ToDo:
そういえばそんな偉そうなことも言った気がする。けど別にコード読むのが特別良いとは思ってない。まぁ他の人が僕に比べてコード読まないと感じることは多い。そうそう shi3z さんの最適化の話とかすごいたくさんはてぶとかついてて、 twitter でもたくさんコメントされてたのに、誰もかけ算の回数数え間違ってると指摘してなくて、あの時もいやーホントみんなコード見ないもんだなと感心した。いや、僕も途中とかめんどくさいから最適化された後とされるコードしか見てないけど。
けど僕もそんな四六時中読んでるわけでもなくてもっともりもり読んでる人もいるし、あと読む派の人も色々ある気がする。
読む派の色々は、最初から最後まで全部読んでく人と、おおまかな設計とかを調べるのが好きな人、気になるとこの実装だけ細かく読む人、みたいなのがある気がする。僕は最後の派閥で、おおまかな設計の把握とかはあまり得意じゃなくて、森を見ず木だけ見た的な理解でカンでコード書いてて文句言われることが多い。
だいたいパターンとしては、なんか面白げな話を聞いて、「えっ、そんなことできるの」って思って、「できるとするとこんな感じでやるのかなー」とか妄想してから、その妄想があってるかの答えあわせにコード読むとか、そういうのが多い気がする。んで僕の場合コード>ドキュメント>論文みたいな優先順位で調べるみたいで、コードの優先順位が高い。
コード読んだりするのが新しいことを学ぶ効率がいい方法とはあんまり思えなくて、実際効率悪いと思う。ただ、コード読む速度速いと共同作業に強くなるので、まぁ労働者としての能率は上がるように思う。でまぁ労働者としての能率が高いと面白いことできる可能性が増えていってそれはそれで勉強になるので良いという側面はあると思う。
でも、まぁ普通にネット見たり論文読んだり仕様書読んだり話聞いたり本読んだりの方が学習効率自体は良いケースが多いと思うんで、あまりコード読むのがすごく万人に勧められるかっていうとそうでもない。
そして当たり前だけどやりたいことによるわけで。僕とかは割と広く浅く知ってると嬉しい派なのでざっくりとした理屈がわかるように勉強するけど、まぁなにかコレ一筋みたいなジャンルがある人は論文とか読んだ方がいいんだろうし、とか。
ところで僕はコード読むのが好きなので、もっとコード読む人が増えるに越したことはないので、コード読む楽しさとかを宣伝するといいんだろうけど、なかなか。
(01:54)
auxv を取ってくる関数だけど、この覚えにくさは異常。まぁ普通のユーザコードで取ってきたいことがあるのか知らんけど…
man 見てるとなんでこんな情報渡してんだろってのが結構多いな…ざっとながめてみる
(14:34)
http://www2.ha-channel-88.com/soudann/soudann-00006495.html
なんか意識の高そうな歯医者が言い争ってて面白い。
しかしこのスレッドでは意識が高い医者が「文献を検索してるのですが見つからず…」とか言ってる中、そこらの主婦が「論文見つけました〜」とか現れて、しかし医者は「おお〜」と言う以外に中身の議論をせず、その主婦が「論文訳しました〜」医者「おお〜」みたいな感じで、なんか恥ずかしい記録な気がするんだけど…
あと歯医者は英語の論文なんて一回も読んだことない人がほとんどとか歯医者が言ってて、うーんそんなもんなのかーという。
プログラマもそうだと思うが、資格も無い職業と比べられてる時点でイマイチすぎる感が
(21:08)
はそういえばだいぶビジネスぽい感じになったのかなぁ。比較的僕みたいな趣味人にはどうでもよさげなのが増えた気がする。まあ単純に ruby とか結構な回数起動するけど、まぁ難しい用途にはあまり使ってないから興味がないというのもある。
並列並行は過渡期というか、まじめに使いはじめてパフォーマンスとか気になり出してきて、なんか並列並行の議論を遅れてやってる感が強い気がする。
あとなんだろ、外人の人でカリスマ見習いみたいな人が結構いるのかな。まぁ開発方法論とか興味が無さすぎるから悪口にしかならないのでやめる
(21:47)
そういえば @nari3 さんに ICFPC とかよく頑張りますね的なこと聞かれた。その場でも答えたんだけど、ああいう時にだいたい僕は最初の1時間でやべー問題読み終わってすらいねーと思ってて、3時間くらいで問題意味わかってすらいねーと思ってて、6時間くらいでやっぱ賢いヤツには勝てんよ、と多かれ少なかれ、思ってて、まぁなんか終わってから感想ブログとかを読むと他の人も同じようなこと思ってたんだなと安心する。
まぁそれでなんである程度の成績がおさめられるかっていうと、諦めが悪いのと暇だってのしか無いと思ってて、まあなんか特別賢いコードを書いてたり、特別高速にコード書いたりはしてないと思う。実際僕が出たほとんどの ICFPC で lightning は本戦よりかなり悪い成績なはずで、まぁちゃんと3日間めげずにやるってのが重要っていう。あとその際に「ほげほげやればいいんだろうけど、できるかわかんないからふがふがでいいや」みたいなのは、間に合うと信じてほげほげをやっちゃった方がいいというのがあると思う。特に疲れてくると、プログラマは動いてる部品の改良が好きだからローカルミニマムに陥りがちで、なんか新しいのをはじめる自信も気力も無くなってくるけど、まぁそのへんごまかしてやってしまえば案外なんとかなる、気がする。
話が微妙にそれた。さてでは暇はどうやって確保しますか、って言われたら所属期間の休みを取るしか無いので、どうやって諦めの悪さを確保するかってのが本題なんだった。
諦めの悪さってのは、訓練できるし積極的に訓練するべきものな気がする。訓練のしかたは、なんか俺でもちょっと諦めずやってたらなんかできた、みたいなのがある気がする。
だいたい今でもなんかこういうプログラム書きたいなーと書き始めると、5割くらいは挫折してるんだけど、プログラム勉強しはじめた頃はもっと失敗率高かったと思う。そういう頃のどうしようもない失敗群でなんかよかったなぁと思ったのは自分が使える程度の window manager ができたくらいか。当時は X の関数ってなんでこんな引数多いんだろうなあ意味がわからないよと思いながら、他の window manager のコードをコピペしたりして動かしてたと思う。 async とか sync とか意味わかってないから、そのへんのパラメータはたいてい他のマネしてるだけだったと思う…
その window manager にしたってたしか4回目くらいでやっとやりたいことができた感じだったと思う。最初は icewm いじって、 twm いじろうとして、 scratch から書こうとして、そんで evilwm ベースにしたと思う。まぁそんなでも、一応自分がやりたかったことができると、案外やればできるんだなー的なことを思って、諦めの悪さが身につく…んじゃないかな…
しかしそんだけあれこれ失敗できたのは暇があったという理由がでかい気がするしあんま意味ない議論だなぁと書いてから思う。だいたいこういう偉そうに俺の場合こうやったらこうなった的な話はなんの役にも立たないと相場が決まっていてですね…
(22:19)
買ったから遊ぼうと思ったんだけど、いろいろまだせっていちゅう。とりあえずなんか静かなのは良い。
とりあえず debian 入れて /home の移動とかして、 apt で欲しそうなもん適当に入れまくった。
苦労したのは dual display の設定。 windows で遊ぶかぎり dual display できるはずなので、頑張れば動くはず…とがんばった。
どう見ても Xorg が haswell を認識してないので、いろいろ新しくする必要ありそうだなーと。ネットで見る限り linux 3.8 以降が必要的なことが書いてあったので、 sid から 3.8 を入れるとドライバがイマイチぽかったので、 sid から 3.9-1 と r8168-dkms というのを入れる。
まだ haswell ちゃんだめぽいので、 xorg も新しくしようと思う。 sid のやつ入れてみた感じだと、まだ haswell という文字が見えないので、しゃーないと experimental 。
結局
sudo apt-get install -t experimental xserver-xorg-video-intel sudo apt-get install -t experimental libdrm-intel1 sudo apt-get install -t experimental xorg sudo apt-get install -t experimental gnome sudo apt-get install -t experimental libgl1-mesa sudo apt-get install -t experimental libgl1-mesa-glx sudo apt-get install -t experimental libgl1-mesa-dri
と入れたところで dual display になった。デフォルト教の人に怒られそうなことやってるな…と思いつつも、途中特に起動しなくなったりしなかったあたり、最近の debian さんはよくできてるなあ…とか思う。
自分でコンパイルしないといけないものとして、 sevilwm と w3m インストールした。
~/.Xsession を動かかす方法がよくわからなかったので、
$ cat /usr/share/xsessions/sevilwm.desktop [Desktop Entry] Type=Application Encoding=UTF-8 Name=sevilwm Exec=/usr/local/bin/sevilwm NoDisplay=false X-GNOME-WMName=sevilwm # sevilwm doesn't talk XSMP yet, so don't start in the WindowManager phase: X-GNOME-Autostart-Phase=Applications X-GNOME-Provides=windowmanager
などと適当に足す。本当は .Xsession 動かして起動時に色々画面設定とかやって欲しいんだけど、まぁとりあえず良いこととする。
そろそろ haswell ちゃん自体で遊びたいけど、眠いし根幹治療とやらをしている歯の奥が痛いので寝る…
(01:54)
ちょっと笑っちゃうくらいいたいな。ぐぐるのそういうもんらしいが。
もらった鎮痛薬切れたからバファリン飲みまくってるけど、先週は効いてたのに今は少しマシになるくらいのレベルだ…
(04:29)
http://mkosaki.blog46.fc2.com/blog-entry-1234.html
なんか SF ネタをひくのは年寄りハッカーの基本ぽいからマネしたいけど、なかなか教養がなくてパッと出てこないな、 42 以外。
そもそも 42 以外あんま SF が元ネタのネタとかぱっと思い出せないあたりで難しい。
mostly harmless を見ると引用なのかなぁとか一瞬思ってしまうんだけど、まぁどう考えても普通に使う組み合わせでもある。
あと同じくダグラスアダムスの anything that happens, happens も見たことある気がするけど SF ネタだったんだな…
http://www.quotationspage.com/quote/35360.html
ああちらちら見るのは最近のネタだけど we must go deeper があるか。
ああ resistance is futile
SF やめれば all your base とか Y Y とか、でもあのへんはどっちかというと 2ch 語的な感じだよねたぶん
(05:27)
もやしもんのあの教授てどっかで見たことあると思ったら安西先生かーと思ったけど、ああいうパターンのキャラてスラムダンクが最初なんだろうか。なんか他にもいそうだけどどうだろう
(15:51)
http://www.garbagecollect.jp/~usa/d/201305b.html#id20130516_P2
うーんおもしろかった。なんか基本、低レイヤな部分の橋渡しみたいなの好きらしいので。
おつかれさまでした。
(11:51)
浮動少数の ABI がいろいろある。
$ cat fadd.c float fadd(float x, float y) { return x + y; }
soft だと関数呼び出しになる。引数は r0, r1, ... なんかの汎用レジスタを使うぽい。
00000000 <fadd>: 0: b508 push {r3, lr} 2: f7ff fffe bl 0 <__aeabi_fadd> 6: bd08 pop {r3, pc}
softfp だと浮動少数命令を使う。でも引数は r0, r1, ... のまんま。 soft のやつと互いに呼んだりできるわけだね。
00000000 <fadd>: 0: ee07 0a10 vmov s14, r0 4: ee07 1a90 vmov s15, r1 8: ee37 7a27 vadd.f32 s14, s14, s15 c: ee17 0a10 vmov r0, s14 10: 4770 bx lr 12: bf00 nop
hard だと calling convention が変わって s0, s1, ... が使われる。
00000000 <fadd>: 0: ee30 0a20 vadd.f32 s0, s0, s1 4: 4770 bx lr 6: bf00 nop
readelf して出てくる、
Tag_ABI_VFP_args: VFP registers
ていうのがこっちの calling convention 使ってますよ、って目印らしい。
(15:26)
arm-eabihf-tcc は hard だと思うけどビルドされてないから確認できない。
arm-eabi-tcc と arm-vfp-tcc は今回のファイルから出力されてるバイナリから見分けがつかないけど、コード見る感じ vfp のほうがレジスタ数が多いとか、まぁリッチなんだとおもう。
arm-fpa*-tcc は古いものらしい。
長年のどうでもいい謎だった arm-*-tcc がなんでこんなたくさんできるのか問題が、少しだけマシな理解になった。
しかし、実は tcc for arm って実はコレ真面目に使ってるんじゃ…
(15:43)
面白いて話なので論文を斜め読み。
http://bitcoin.org/bitcoin.pdf
ざっと概要を聞いた感じでは、採掘の方はうまい仕組みだな、と思ったものの、多分できそうだなーと思った。一番疑問だったのは新規参入者が現在の状態をどうやって知るかっていうのとか、取引のチェックとかどうすんの、ってことだった。これは採掘する時に新しい状態を作る人が今までのトランザクションログをハッシュにつっこむ感じでできてるらしい。採掘用とトランザクション用でデータは分けて持つイメージだったんだけど、それを混ぜるってのはかっこいいというか、よくできてるなーと感心した。なんていうか一人ひとりの質問にいちいち答えるんじゃなくて、一気に答えるってのは、いいと思う。
んでいくつか疑問が。
まずスケールするの? てこと。
https://en.bitcoin.it/wiki/Scalability
ここに色々書いてある。 disk がちょっと危なっかしいのと、論文にあったツリーの枝狩りってやつをなんでやっていいのかよくわかってないけど、なんとなくそれっぽいことが書いてある気がする。ただ、僕が気になるのは latency で、本当にアホほど使われるようになってからも10分後のブロックにちゃんとverifyされた結果が入ってくるか、っていうと、本当にうまくいくのかピンときてない。
次に DOS されるときつくね、っていう。すごい細かいトランザクションを無駄に大量に流されるときつくね?
verify するだけの子とかが参加してる前提ぽいけど、現状彼らのインセンティブはなんなんだろうか。採掘ノードはタイムスタンプサーバを機能させるインセンティブはおおいにあるわけだけど、別にトランザクションの verify を手伝う理由はないと思う。
SHA256 が死なない前提な気がするけど、大幅に有効ビットとか減ると大変なことになったりしないかな。まあなんかソフトのアップデートとかやってるぽいから、何とかならんこともないのかなぁとか思う。
マシンたくさん持ってるアタッカーも、うまくいっても自分の前回の取引をキャンセルするくらいのことしかできないから、それよりは採掘した方がいいってのはなんかよくできてるなぁと思うんだけど、全体の価値が高まったあとだとどうだろうかなぁと。 bitcoin を叩き潰したい国家が大量のノードを動かして全力で謎の長い歴史を捏造したりすると、もちろんそれで大儲けとかはできないだろうけど、 bitcoin の機能を止めることはできる気がする。世界通貨ドルを潰すためにアメリカを戦争で叩き潰すよりは、はるかに敷居が低いと思うんだけど。
あと、この程度複雑なソフトって、バグとかちょうこわいんですが。 buffer overflow させて verification 通す! とか。
あと初期ノードは IRC からとってくるとか。最新のプロトコルが最古のプロトコルに依存するなんてかっこいい…
(17:07)
買いたいかどうかを少し考えてみる。最終的な流通量は2100万BTCらしい。今は1BTC12000円くらい。今の価値のまんまBTCが採掘終了を迎えると2.5兆円。うーんそんな市場規模になるもんなのかなぁ。んで、100倍とかになるとうれしいわけだけど、なるとすると250兆。あんま現実的じゃない気がする。
この計算が適切な計算なのかは知らない。マネーゲーム的な理由ですごい増えるとかはありえるのかなぁ。よくわからない
(17:22)
前 | 2025年 7月 |
次 | ||||
日 | 月 | 火 | 水 | 木 | 金 | 土 |
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
全てリンクフリーです。 コード片は自由に使用していただいて構いません。 その他のものはGPL扱いであればあらゆる使用に関して文句は言いません。 なにかあれば下記メールアドレスへ。