タグ

ブックマーク / bn.dodgson.org (25)

  • はじめての Chromium Land - steps to phantasien(2011-02-19)

    はじめてまじめに ...といってもたぶん 500 行くらい... WebKit ではなく Chromium 側のコードを書いている. まだレビューをとおってないため現在形. でかすぎてビルドの遅い Chromium より Mac WebKit をいじる方が快適という同僚もいたけれど, コード自体は Chromium の方がだいぶモダンだよなあ. 普通に unit test が書けるありがたさといったらない. Developer testing まず gtest が良くできていて感心する. static initializer を使ってケースの登録を分散化したり, コマンドラインフラグでテストケースを一覧選別できたり, プロセスを分離してクラッシュに強くしたり, クラッシュしたテストケースの backtrace をだしたり. でかい C++ のコードベース相手にテストをスケールするための工夫

    f99aq
    f99aq 2017/02/26
  • Clang のコード補完 - Backnumbers: Steps to Phantasien

    Clang のツリーを眺めていたら, "clang-completion-mode.el" というファイルがあった. clang のプログラムを呼び出してコード補完ができるらしい. (使いかたを説明してくれている人もいた.) 以前読んだ時 は気付かなかったけど, 二年前からあったようだ. こんなものがプラグインで書けてしまうなんてさすがモダンなコンパイラは違うなーインデクスはどうするのかなーと 感心しつつコードを見ていたらインデクスのような前処理はないようす. それに全然プラグインじゃない. Clang 組み込みの機能として実装されていた. 以前から Xcode(4) がどんな風に Clang を統合するのか気になっていた. コード補完はそうした取り組みの一環かもしれない. 高々 Emacs のため Clang 組込みの機能を増やすとも思えないからね. というわけでざっとコードを眺めてみよ

    f99aq
    f99aq 2011/08/14
    clangのコード補間
  • 呼び出しプラス記法の由来, そのほか瑣細なメール技法のこと - steps to phantasien(2011-07-18)

    そんなわけで仕事の話を書いてみよう. どこかで誰かの名前を呼ぶとき, Twitter が @ で mention するように Google+ では "+名前" と書く. 人の名前の所は名字でもメールアドレスでも適当に補完してくれる. "+" の記法はきっとサービス名にちなんだのだろうけど, 以前からメールの中で使われてきた慣習でもある. 今の勤務先にやってきて, かつてよりだいぶ多くのメールを読むようになった. 以前は会社もチームも小さかったし分散開発でもなかったから, 一日の有効メール量は 10 通くらいだった気がする. 私は朝と晩の二回しかメールを読まなかったけれど, ほとんど支障はなかった. 今や私の Gmail は pin tab され, 一日 50 通くらい届くメールをさばいている. これは webkit-dev や chromium-dev, webkit-bugzilla (

  • ピンポン怪談と Conjunction fallacy : steps to phantasien(2011-03-14)

    ついに家にも来た!「輪番停電の作業のためおうかがいしました。」とピンポンする人たち。 インターホンの画面に映ったのは深々と帽子被った男数人。 でも耳たぶにたくさんのピアス見えた。作業があるなんて市役所から連絡ないし。 この手口で家に入られそうになる人多いらしい。みなさんも気をつけて! 巷で噂になっているような Twitter デマ情報や怪談の類が届かず 寂しい思いをしている私を気遣ってか, following の一人が新しいのを一つ retweet してくれた. ありがとう. この怪談はいくつかの点でよく書けている. なんといってもつかみがいい. ついに家にも来た! 前例を仄めかし, 読み手に自分の知らない流行があったと焦らせる煽りがバズに初速を与える. 伝聞ではない当事者の語り口が retweet の敷居を下げる. 体験談でありながら同時に後半の伝聞パート この手口で... を補強してい

  • Core Animation - Safari の隠し味 - steps to phantasien(2009-08-22)

    2009-08-22 近況 WEB+DB PRESS の連載はなんとか打ち切りにならず続行中. 読んでもらえているとのフィードバックもいくつかいただき, ありがたいことでございます. 今回は CSS 周辺を読んでみました. ようやくブラウザらしくなってきたので興味のある方はごらんください. 記事の準備と称してコードを読む週末副業も今のところ続行中. 遠くに行くのがだんだん億劫になってきたので, 近所の安コーヒー屋に通っている. ひきこもり体質の改善はならず. 連載はこのあとレイアウト, レンダリングと続く予定. その準備にレンダリングまわりのコードを読んでいたら, 連載で書くにはややしんどいけれど WebKit らしいコードをみかけた. 今日はその話を書いてみたい. Core Animation - Safari の隠し味 CSSCSS 3D Transforms Module とい

  • RPC サーバの遅延リターン - steps to phantasien(2009-07-04)

    最近は過労気味でウェブにものを書くこともできない, という話で上司の同情を誘うべく 日人の労働時間やストレスの実態をまとめた エンドレス・ワーカーズ を読んだら, 自分の労働時間は日人労働者の上位 2 割から漏れていることを知り愕然とした. あんなに働いたってのに...残業エリートへの道は険しい. 道を進みたいわけじゃないけれど. (平均は越えてたぜ!) いずれにせよ流行からはすっかり脱落しているので, 時流を無視して仕事の話でもしよう. 以前, 会社の blog で RPC の結果をノンブロッキングスタイルで受け取るプリミティブ "弱関数" を提案した. でも試行錯誤の結果, いまは使っていない. C++ での弱参照は意図しないリークを作りやすい. 使いわすれることも多く, 忘れた頃にクラッシュする. 要求は明示的にキャンセルした方がいいことがわかった. (世間はみんなそうやってます

  • V8 祭りつづき - Backnumbers: Steps to Phantasien

    前回の続きです. コードは飽きないうちに読め. これまでのあらすじ: プロパティアクセスを速くしたいから JIT をしようぜ. コンパイラ概観 V8 のコンパイラは JavaScript の AST を機械語に変換する. (AST はパーサがつくる.) AST のツリー構造は, Node クラスのサブクラス一族で構成されている (ast.h) コンパイラは関数の AST である FunctionLiteral オブジェクトをうけとって Code オブジェクトを生成する. AST とコンパイラは(またしても) Visitor パターンでつながる. (Visitor 好きは Strongtalk からの伝統らしい. Strongtalk VM のコンパイラも同じようなことをしている. 20 世紀の残り香が...) AST 側は Vistor のインターフェイスを提供する: //ast.h cl

    f99aq
    f99aq 2008/09/20
  • Tamarin での文字列 - steps to phantasien(2008-08-31)

    2008-08-31 近況 LL Future というイベントに呼んで頂き, 中野へ. 前日の激しい雷で眠りが浅く寝坊したら, 基調講演は Larry Wall だったらしい. 聞き逃した. なんてこったい... そしてサインを貰う準備もしていなかった. 昼飯をべる暇があったら紀伊国屋に駆けこむんだったといまだに後悔している. おしいことをした. 宴会でゴルフ場経営者に見せてもらった サイン実物はとても気が利いたもので, まったくうらやましい. 彼のは年季が入った版の上にかなり読みこまれた形跡があったので, Larry Wall も嬉しかったことだろうな. 私もいつか実現するであろう Stroustrup の来日に向け, 件のを読み込んでおかねばなるまい. パネルの内容は shibuya.js 番外編というかんじで, JS や ActionScript の上で実装した処理系の紹介を中

  • steps to phantasien(2008-09-07) v8祭り

    ウェブっ子の間では Google Chrome の JS 処理系である V8 祭りが絶賛開催中らしい. いつもは出遅れる私もたまにはやんやしたいと思っていろいろ読んでみたものの, VM に傷気味な自分に気付いた. けれど, そうは言っても祭りは別腹. 一通り騒いでみます. 販促マンガ や 資料 によれば, V8 は以下のような特徴を備えている. hidden class transition と fast property access generational accurate GC accurate だから incremental GC もできる オブジェクトの rellocation はするけど handle は使わず参照元書き換え 中間表現のインタプリタなしの native code 生成. instruction cache コードをみたところ, incremental GC

  • Failgrind: Failmalloc on Valgrind framework

    以前, Failmalloc がなかなか良いという話をした. その中で書いた "malloc() の失敗するタイミングを呼出元の関数名で制限する" 機能. スタックを覗いたりが面倒で vaporware のまま放置してたんだけど, Valgrind を使うとあっさり実現できた. 家リスペクトで Failgrind と命名. (レポジトリ, スナップショット) インストール Failgrind は Valgrind に対する patch になっている. patch といっても中のコードは手つかずで, ビルドシステムに相乗りするだけ. Valgrind は マニュアルに拡張の仕方が載っている だけあって, フレームワークとしての利用を前提としている. なので patch という響きを嫌がらないでください. まず valgrind-3.3.0 を展開: $ tar xvjf ~/Downloa

  • 分散プロジェクトの誤謬 - steps to phantasien t(2008-02-26)

    タネンを始めとする分散システムの教科書で必ずとりあげられる話題に "分散コンピューティングの誤謬" がある. 以下 Wikipedia から引用. ネットワークは信頼できる. レイテンシはゼロである. 帯域幅は無限である. ネットワークはセキュアである. ネットワーク構成は変化せず一定である. 管理者は一人である. トランスポートコストはゼロである. ネットワークは均質である. ネットワークプログラミングをしたことがあれば, いずれも該当のバグに思いあたる節があると思う. これらはみな複数台の計算機が関わる際の問題であり, いわばコミュニケーションの問題. 同じ問題は計算機同士に限らず, 人と人の間, 組織の間でもおこる. 順番に例を並べてみる. <伝言や連絡は信頼できる> : できない(よね?) ミーティングには欠席者がいる. 後輩は話を聞いてない. メモもとらない. メールはスパムに

  • Sociometric Badge - Backnumbers: Steps to Phantasien

    Social Network Feedback in Real Time という記事があった. あるワークショップで参加者の social network (SN) を可視化してみせたところ, 参加者同士が anomaly に気付き自主的にそのネットワークを改善したという話. いろいろ面白い. 参加者の SN ってどうやったらわかるの? それを改善するってどういうこと? というわけで最初の疑問から. 参加者の SN を抽出するために, 著者らは "sociometric badge" というデバイスを使っている. これはマイクと赤外線センサ, 無線などを内蔵した小型計算機(センサ)で, 首から提げて持ち歩く. 大きさはケータイくらい. (関係者のページ に写真がある.) マイクや赤外線の情報は無線でホスト計算機に送られ, ホスト計算機がデータを分析する. 赤外線の記録から badge 同士

  • Consitent Hashing - steps to phantasien t(2007-12-01)

    訳したのを Yukiwiki に公開しました. 楽天テクノロジーカンファレンスの記事 で amazon の Dynamo というのが紹介されていた. そんなのがあるのかとぐぐってみつけた Dynamo の話を読む. その中で consistent hashing が使われており. シンプルでよくできたアルゴリズムだと感心, 紹介しようと思った次第. WWW8 に出たオリジナルの記事も読んでみたけれど, もともと単純なアイデアなので大した詳細はない. Chord や Dynamo の記事に含まれる紹介で十分ことたりている. でも Chord が consitent hashing だというのは件の記事を読むまで気付かなかったなあ. わっかの上をぐるぐる周るやつ, くらいの記憶しかなかった... Dynamo consistent hashing にはじまり, Dynamo は分散アルゴリズム

  • K のこと -- steps to phantasien t(2007-11-03)

    友人の話をしよう. 先達に敬意を表し, 仮に彼を K と呼ぶ. (イニシャルは便宜的なものだ; 向上心云々と罵ったこともないし, 恋人を寝取ってもいない.) ある時期, 私は K と一緒に働いていた. 今は違う会社にいるけれど, 互いに暇なのか, このごろもよく二人で管を巻いている. 1 K は優秀なプログラマだ. いつも敵わないと思う. 一緒に仕事をしていたこともあり, プログラマとしての私は K から強い影響をうけている. たとえば私が自動テストを始めた発端には K がいる. コードレビューもそう. この日記に出てくる話も K の影響は色濃い. 私は K のあとを追いかけるようにプログラマを続けている. K と働いてはじめて, ああ, 物事とはこう改善していくものなのかと知った. 何か問題を感じると K は試行錯誤を始める. 問題は私が諦めていたものもあるし, そもそも気付かないものも

    f99aq
    f99aq 2007/12/20
  • sparsetable - steps to phantasien t(2007-09-07)

    Matz日記 で紹介されている google-sparsehash を眺めてみた. ひさびさに Google 気分. :~/src/sparsehash-0.8 omo$ wc `find src/google/ -type f` 253 1348 10336 src/google//dense_hash_map 237 1309 9884 src/google//dense_hash_set 238 1244 9616 src/google//sparse_hash_map 223 1214 9245 src/google//sparse_hash_set 919 4776 37957 src/google//sparsehash/densehashtable.h 42 189 1187 src/google//sparsehash/sparseconfig.h 884 4642 371

  • steps to phantasien t(2007-08-04) : 20 号棟のハッカーたち

    和田英一による LL Spirit の基調講演に感銘を受けた. 話そのものより語り口や立ち振舞いがなんというか, カリスマがかっている. しびれる. ハッカー気質の文脈で語られた MIT の思い出話も印象的だった. むこうから歩いてくる知人が黒く汚れた格好に肩からケーブルを提げている. なにかと思ったら建物にイーサケーブルを引いていた, という話. インターネット黎明期の生ける伝説といった風情がある. かっこいい. 建物は MIT の 20 号棟だろうか. そうならいいのにと思う. 最近 "How Buildings Learn" というを少しづつ読んでいる. その中で紹介される "building 20" のエピソードは, ハッキングやプログラミングについてある示唆を与えてくれる. MITの 20 号棟は, 第二次世界大戦中の 1943 年にレーダー開発の拠点として建てられた. 開発を

    f99aq
    f99aq 2007/08/06
  • steps to phantasien t(2007-06-13) - 最近使った boost

    仕事腰を入れて C++ を使うになり, 久々に boost をさわっている. 以前より色々ライブラリが増えていて嬉しい. 今日は喜びの声をすこし. 普段から boost を使っている人にとっては当たり前の話題だと思います. boost::optional たとえば設定ファイルを扱うコードで, あるかどうかわからないオプションの扱いをを考える. "--log foo.log" と指定されたらログを foo.log に出力し, 何も指定されなければ標準エラー出力に書き出したいというような場合. けっこう悩ましい. よくある方法はこんなかんじ: class foo_config_t { ... bool has_log() const { return m_hash.contains("log"); } std::string logname() const { assert(has_log

    f99aq
    f99aq 2007/07/19
    boost::optional, boost::xpressive
  • 1975 年のプログラミング - steps to phantasien t(2007-06-17)

    少し前に Varnish という逆プロキシサーバが紹介されていた: 【レポート】高速化プログラミングの参照実装としても活用される「Varnish」 (2) vanishが採用している実装技術 : エンタープライズ : マイコミジャーナル. 気になったので資料を眺めてみる. プロジェクトの Wiki にある記事 Notes from the Architect, あとは 講演のスライド(PDF) などが概略には良さそうだ. 中味は仮想記憶やキャッシュ, SMP を有効活用して高速化しましょうという話. 仮想記憶の活用方法は二つ紹介されている. 一つ目は, "サイズに合わせて realloc() するかわりに最初からでかいサイズを malloc() しろ" というもの. 確保してもアクセスしなければ物理メモリにはコミットされないから, 拡張のたびにコピーの必要な realloc() より この

  • 最近みた TechTalks: Mercurial Project

    Mercurial という分散 SCM の紹介. Python 製で, シンプル軽量スケーラブルが売り. 開発を初めたきっかけは linux の BitKeeper 事件だという. (だから GIT がライバルらしい.) OpenSolaris や OLPC など, けっこう採用実績があるのに驚いた. 私は分散 SCM を触ったことがない. SVK をちょっとつついたくらい. 話を聞く限り Mercurial はけっこう良さそう. (スライドは Wiki に公開されている.) 分散はさておき軽量なのがいい. たとえばレポジトリのためにわざわざ svnrepos みたいな別ディレクトリを作る必要がない. 作業コピーの中に .hg ディレクトリができて, ここに履歴が収められる. つまり作業コピーのディレクトリでレポジトリが閉じている. svn だとレポジトリを作るのが面倒でバージョン管理を先

    f99aq
    f99aq 2007/01/19
  • steps to phantasien t(2007-01-03) いつもの派閥争いの話

    去年の未読 feed を消化していたら, XML vs JSON という話がぞろぞろ出てきた. 火事と喧嘩は XML の華. 最近ちょっとおとなしかったけれど, たまにはこういうのがないと寂しいよね. 火元は JSON の親玉である Douglas Crockford が XML2007 で行った講演 "JSON, The Fat-Free Alternative to XML" らしい (スライドの ppt) . XML 愛好家の集りで XML でないフォーマットの話をするとは豪胆だ. しかも暗に "おまいらおでぶちゃんとは違うんだぜ" と煽っているわけだから, XML ファンが刺激されるのも仕方ない. まとめ記事によると, 反撃の狼煙を上げたのは Scripting News らしい. でも読んでみるとあんまし JSON をわかってない節がある. 人も自覚があるのか, 議論をうながし