prog

うむる

「近所の花火大会」季節も終わりかけてるけど 色々あってUMLの勉強を始めることになりました。 UMLってどうよ 前職ではUMLの必要性を余り感じておらず、ほとんど勉強の手をつけていませんでした。というより、周りでUMLの話をする人もいなかった…

このイライラをみんなにも分け与えたい

ちょっと調べ物をしていたら見つけたスレ。 http://bbs.wankuma.com/index.cgi?mode=al2&namber=8817&KLOG=9 やっぱり、日本語も良識もダメそう。 という誰かのポストで締めくくられたこのスレッド、風影という方の余りもの論理の無さに、血圧が急上昇します…

仕事がっ!大変っ!

「こんな風に遠くまで見通せたら」 更に状況悪化、当初の見通しが甘く、実装テストを兼ねた調査を進めるにつれて浮かび上がってくる不都合な新事実… うーん、自分にこの分野での経験と才能があって最短距離で仮説立てと検証が行えていたら、この問題は3週間…

仕事プログラム

「がりがりがりがり」 一日中プログラムを書いて、帰り際にひたすら仕様書を書いてました。そういえば前の職場だと仕様書を書くなんてことほとんどなかったなあ、とか思いだしながら。 今日はスレッド周りのプログラムを書いていて、自分はこの辺かなり苦手…

適当に思いついた格言

どの人のコードを見てもこれは分かりにくい、と感じられるようなら 自分自身のコード読解力に問題があるという可能性を疑え 割と自分の思考は子供だなあと思った今日この頃。

技術嗜好指向思考

before after http://labs.wanokoto.jp/olds これが http://d.hatena.ne.jp/ryocotan/20080331/p2 こうなって http://d.hatena.ne.jp/nitoyon/20080407/bakumatsu_hack こうなるという話ですが、この流れを一言で表すと 「コロンブスの卵」 ハックした人も、…

微分方程式

progジャンルでは無いのですがmiscと比べてどちらかというとこっちかな、と。 今日は一日家に引きこもってネット閲覧したり数学の教科書の復習をしたり。数学の勉強なんて1月ぶりくらいかも。たまに手を動かして数式を写経すると心が落ち着くのです。よくサ…

セクショナリズム関数の排除

A = a + b + c; B = a - (b + c); という計算式を t = b + c; A = a + t; B = a - t; と置き換えることで計算が速くなります(b+cの計算を二回しなくてすむので)。スカラー演算はともかく、ベクトル演算においてはこの種の最適化をコンパイラに期待するのは難…

自分を信じちゃいけないよ -assertの効用-

とあるそれ程難しくないデータ構造とそれを操作する関数を実装してたのだけれど、一気に書いてコンパイルエラー潰したら動作するさ、と思ったらデバッグで数時間ハマりました。一気に書いたコードにバグがまぎれてしまうと検出が非常に難しい。 よく言われる…

キーボードを叩く前に大切な事

たかだかストリーム読み込みラッパークラスを作るのにデバッグで2時間もかかってしまった。原因は仕様を勘違いしていたこと。つまり、こう引数がきたらこう動作する、という理解を誤っていたのでテストコードが通らなかったのです。オリジナルのソースコード…

いつだってvirtualでいたいけど

継承による多態性とinline最適化との相性は悪い。virtualだとコンパイル時にコード展開できないからね。粒度が小さく呼び出し回数が多い処理は多態で実装するとパフォーマンスが落ちる。そこは上手くtemplateでほげるべきなのか。粒度が大きければそんなに気…

誤解されたら困るのが

別にMTマンセーではないですので。MTがあれば全て解決!!などとは思ってません。 結局一番粒度の細かいところは激しいドキュメント参照とプロファイラ活用とチューニングの嵐が待ってるでしょうしね。 ただ、アプリケーションのレイヤーで見た場合、とっても…

言っちゃった

その「ユーザ事例」の一つに私は居ます!!名前は消されましたけど('A`) あと、RawSPU,SPUThread,spursのうち、SPUThreadだけがどうにも中途半端なもんで、後はスレッド切り替えが頻繁に起こるていうたらこれはspursしかないだろう、という思考過程での推測で…

超業務寄りな与太話

MTフレームワークが各スレッドをソフトウェアスレッドとして実装、実処理をSPEに外注→すなわちSPE上での処理変更はソフトウェアスレッドが責任を持つ→spurs taskで実装している場合、高優先度タスクの待機を感知してのyield()発行はしない と推測できまいか?…

パフォーマンスの見積もりって難しいなあ

描画系の技術って、ハードウェアが複雑になっちゃってて、ある技術を実装したときにそれがどのくらいの速さなのかが中々事前に推測できなくなってますね。 CPUでのセットアップ時間はどのくらいなのか、マルチコアを使ったらどうなるのか、タイトルで使うと…

長かった…

数日苦しめられた謎のバグが、たった一行の初期化を呼び忘れていたからだったとは… ヌルポ関数ポインタアクセスで飛ぶと、スタックが見えなくなって何がなんだかわからなくなっちゃいますね。 更にプラットフォームがアレだったのでさらに地獄を見ました。 …

OpenGLでテクスチャが使えない、貼れない問題 (ふて4)

不定期開発日誌(4)、略してふて4という事で。 猫にキーボードを踏まれながら日々ちくちくといじってます。といっても帰って寝るまでの間の30分から1時間程度ですが。今日は適当にサンプルを拾ってテクスチャを貼ろうとしたのですが、なぜか上手く行きません…

いかんなあ

シリンダ形状へのレイキャストの実装に1時間半もかかってしまった(しかもそんなに最適化とかしてないの)。30分くらいでひょひょいとできるつもりだったのになあ。まだまだ仕事見積もりが甘い&場合分け脳が未熟です。 しかもなんだか結局使わなさそうな予感(…

プロファイラの理想と現実

2日にわたるパフォーマンスプロファイリングが終了しました。データを集めるのは簡単です(もちろん良いツールを使えば、という前提だけれど)。問題は、そのデータをどう解釈するか、です。実のところ、2日間の時間をかけたうち半分以上の時間はデータの意味…

エージング

エージングをなめてました。エージングてのは、言ってみれば耐久テストのことです。ライブラリを作ったとき、ライブラリを使ったサンプルみたいなのを作ってそれを延々と動かして、落ちないか、リークが無いか、assertにひっかからないか、などなどを確認し…

assertの効用

コードの「意図」はコメントなんかじゃなくてassertにがんがん仕込む。意図したとおりに動かないときはすぐ止まって教えてくれるのだから。 もちろんややこしい数式の意図なんかはコメントに書かないとしゃーないですけど。 と、デバッグテクニック本からの…

プログラム&スクリプト、デバッグ&調整の関係

ゲームにスクリプトエンジンを組み込むときに、どこまで制御させればいいのかが割と問題になりますが、なんでもスクリプトに載せてしまいたいという誘惑には負けてはならないと思います。スクリプトを作りこみすぎてデバッグが大変になったって?C/C++で書い…

自分をごまかさない(ひとりXP)

疲れてくるとコードが汚くなることを自覚する。 早く機能を仕上げたいという誘惑に負けそうになっている自分を自覚し、その自分を客観的な視点で見つめ、「本当にその実装でいいの?」と他人に聞くような感じで聞いてみる。 設計が正しいかどうか、自分の心に…

ランディングポイントと精神衛生

ある機能を実装するときに、「これもできたらいいな」「あれもできたらいいな」というものがどんどん浮かんでくることがあると思います。それはそれで大変結構な話なんですが、それら全ての機能を実装しようと、あれこれ全てを詰め込んだプログラムを書こう…

ツールを引き継ぐの巻

少し前の話ですが、ライブラリ1つ、ツール2つの開発と管理をしていました。ツールの一つは安定期に近づいたものの、アップデートが頻繁に必要で、時間は食うわりに達成感の少ない状態でした。良く出来たエンジニアなら、こういった退屈な作業を、例えば自…

設計病

「僕が一番ガンダムをうまく使えるんだ!」じゃなかった、「僕が一番設計を良く分かってるんだ!」という病。別に全然一番でもなんでもないですけど。 コードなんて動けばいいんですよ。少なくともそれに相手が責任を持ってくれている状態においては。自分も…

色々慣れてきたのかな…

リードorライト、ビッグorリトル、メモリorファイル両用のストリームクラスを書いて脳内で簡易3Dメッシュフォーマットを作って適当にそれ用のコンバータ書いて表示ルーチンを呼び出して、コンパイルしてコンパイルエラーを潰して実行して実行時アサートを…

ふと、おうちで猛烈に作りたいものができてしまったので、

その下準備を始めています。 家に早く帰れる日ていうのが少ないうえに相当こだわりポイントが多くてまともに作れるかどうかが不安ではありますが、やれるだけやってみようと思います。 とりあえず今日は画像を表示する為にSDLのテストとバージョン管理システ…

strategyパターン?

を使ってみました。オプションによって部分的にアルゴリズムを切り替えるような処理にかなり効果的に働きます。 しかもそのアルゴリズムが走っている部分からは透過的に扱えるの。 複数のアルゴが簡単に切り替えられる様を見て、ちょっと感動しました。

力と価値

納期に誠実でなければ書いていけない コードに誠実でなければ書いている価値がない ユーザに誠実でなくても書いている価値がない …上手くまとまらないなあ(´・ω・`)