タグ

ブックマーク / 0xcc.net (5)

  • 複雑なソフトウェアのコードリーディング #3

    先日、HTML5 の File APIChrome の中でどのように実装されているか調べた。JavaScript の中から readAsText() でファイルを読んだときにブラウザの中では一体なにが起きるのだろうか? そんなの fread() を呼んで終わり、だったら楽なのだが、 Chromeではそうはいかない。そもそもページを描画したりJavaScriptを実行したりしているレンダラーはサンドボックスされたプロセスの中で実行されているので、ファイルアクセスが一切できない。ではどうやるかというと、ブラウザ体のプロセスに「このファイルを読んでください」というリクエストを投げる。プロセス間通信、IPC である。 で、このリクエストはブラウザ体ではIPC用のスレッドが受け取るのだが、このスレッドでは同期的なファイルアクセスができない。同期的なファイルアクセスをこのスレッドでやってしま

    mizchi
    mizchi 2018/06/14
  • 一から自分でコードをバリバリ書くという幻想 #21

    友人からこんなコメントをもらった。「最近 bk ノートが、何か困ると同僚に聞きに行くキャラになりつつありますよ。もっと上から目線で書かないと。するとカコイイ! とか言ってくれる人が出てきますよ」 そんなことを言われても、困ったら助けてもらうというのは事実なんだからしょうがない。そもそも、自分の弱さを認めるが強さの始まりというものだ、うんぬん。こんなことを書けば上から目線っぽい?。。が、やっぱりやめておこう。 話を変える。既存のコードをちまちまリファクタリングして、少しだけ新しいコードを追加して、デバッグして、なんてことを年がら年中やっていると、一から自分でコードをバリバリ書けたらどんなに楽しいだろう、なんてことを考えることがある。大きなプロジェクトの中で何かをやっていると、そういう機会は滅多にない。ぶつぶつ言いながら既存のコードをいじくりまわしていることの方が多いのだ。 が、あるとき、ひと

    mizchi
    mizchi 2016/09/04
  • バッドノウハウと「奥が深い症候群」

    計算機を使っていると、何でこんなことを覚えないといけないのだ ろうか、とストレスを感じつつも、それを覚えないとソフトウェア を使いこなすことができないためにしぶしぶ覚えなければならない、 といった類いのノウハウは多い。そうした雑多なノウハウのことを、 来は知りたくもないノウハウという意味で、私はバッドノウハウ と呼んでいる。 バッドノウハウは、ソフトウェアの複雑怪奇な仕様が歴史的に引き ずられ、根的な改善は行われないまま、そのノウハウが文書によっ て受け継がれることによって蓄積が進行する。Unix 上で広く使わ れているツールとしてはTeX, Emacs, sendmail, bind, perl, gnuplot, procmail などは、役に立つツールであると同時に、その 複雑怪奇な仕様によって長年に渡ってユーザを苦しめ続け、バッド ノウハウの温床として悪名が名高い。こうしたツー

    mizchi
    mizchi 2015/12/30
  • yak shaving で人生の問題の80%が説明できる問題 - bkブログ

    yak shaving で人生の問題の80%が説明できる問題 つい最近、 yak shaving (ヤクの毛を刈る)、という言葉を知りました (原典)。これは「一見無関係に見えるけど、真の問題を解くのに必要な問題を解くのに必要な(これが何段階も続く)問題を解くのに必要な活動」という意味の言葉です。 yak shaving は、ようするに「ある問題を解こうと思ったら別の問題が出てきて、それを解こうと思ったらさらに別の問題が出てきて…」ということが延々と続く状況を表しています。ちなみに、ヤクとは毛が長い、牛の一種です。 yak shaving は、以前に覚えた bikeshed と同じくらい便利そうな表現です。というもの、プログラムを書いていると yak shaving 的な状況がすぐに発生するためです。 たとえば、「Amazon のほしい物リストを CSV 形式に変換して Excel で読み

    mizchi
    mizchi 2013/03/12
    "Acutally, my whole life is just one big yak shaving exercise.
  • UNIXコマンドで順列・組み合わせの問題を解こう

    薩摩順吉著『確率・統計』 p.15 の問題を UNIXコマンドと順列生成プログ ラムを使っていんちきなやり方で解きます。 (注意: この方法は、文字列が長くなるとすぐに破綻します) 準備 文字列の順列を生成するプログラム permstr が必要です (Schemeで書かれていま す)。permstr を動かすには guile が必要です。 permstrの動作例: % permstr abcde | column abcde adceb bcade becda cdabe daceb deabc ebcda abced adebc bcaed bedac cdaeb daebc deacb ebdac abdce adecb bcdae bedca cdbae daecb debac ebdca abdec aebcd bcdea cabde cdbea dbace debca ecab

    mizchi
    mizchi 2012/04/06
  • 1