プログラミング所感 - 前へ 目次次へ


07/01/09(火)

新年である。抱負はなし。

OR学会誌は、ゲームの特集で面白い。囲碁ソフト彩の作者の論文もある。モンテカルロ囲碁がよいそうだが、 強化学習の方がよいだろう。Backgammonの最強ソフトは、強化学習だが、囲碁もそうなるのではないか。 学会誌に強化学習の話が1つもないのは寂しい。


07/01/11(木)

効果の測定について。
教育の効果などは、すぐにはわかりにくい。このようなものも強化学習だと評価可能かもしれない。 もちろん、具体的な方法はないし、できたとしても相当時間もかかるだろうが。
企画力、リーダーシップ、プレゼン能力、コミュニケーション能力など、どうやって測定したらよいか難しいときがある。 横に図りたいもの、縦に評価しやすいもので行列を作り、線形結合で表されるとすれば、評価しやすいものから 図りたいものを最小自乗法で評価できる。例えば、プロジェクトAで納期を守れたかどうか(0/1)=α×リーダシップ+ β×コミュニケーション能力…のように。たぶん、線形式じゃないだろうし、パラメータの決定も難しい。 (大量の事例があれば、パラメータの推定は可能だが)

07/01/16(火)

理想のシミュレーション言語 を考えている。条件は、指定時間だけシミュレーション時間で wait してもメソッドが分断されないことである。
Console.WriteLine("Now {0}", SimSystem.Instance.Now);
WAIT 10
Console.WriteLine("Now {0}", SimSystem.Instance.Now);
例えば、上記のメソッドを持つ2つのオブジェクトについて、それぞれ、時刻3と時刻5で実行すると、 「Now 3 Now 5 Now 13 Now 15」と出力される。すなわち、WAITのところで、別メソッドに飛び、 別メソッドの処理後に、同じ位置に戻って実行を継続できる。Cだとlongjumpでできなくもないが、 スタックは壊れるし、当然ローカル変数はおかしくなると思う。
独自の言語でないと難しいと思っていたが、シングルスレッドでも、C#で制限つきで可能である。 ILでは分断されるのだが、プログラムは分断されずに書ける。ローカル変数も問題なく使える。 勘がいい人は、想像できるだろう。

07/01/29(月)

読書録。 isbn:4652078145「日本という国」中学生ぐらいが対象か?非常によい。 日本人は読んで考えるべき。学校の社会で何で教えないかな。
isbn:4270001445「まっとうな経済学」最初しか読んでないが、なかなかよい。

07/02/01(木)

去年、DotNetNukeを 入れたときは、すんなりいけた。もう一度やろうと思ったら、SQL Serverのsaのパスワードが分からない。 しょうがないので、MSDEの新インスタンスを追加で入れた。 (setup SECURITYMODE=SQL SAPWD="XXX" INSTANCENAME="YYY") で、サーバ名を(local)\YYYにしてうまくいった。

07/02/22(木)

出張が多い。

会社のメールサーバにスパムフィルタを入れたようだ。 毎日数十通も来てたのに、今日は1通も来ない。

会社の法律関係の教育で、テストを受けた。著作権は満点だったが、契約は0点だ。トータルは不合格だ。ううむ。


07/03/02(金)

連続系シミュレーションで。 田の字型の部屋があり、各部屋1人ずつ入っている。時計回りに移動することを考える。 1部屋には同時に1人しか入れない。1人ずつ動かそうとすると動かない。同時なら動く。
どのようにモデル化するか。
(*)ユニットごとに処理済みかどうかのフラグを用意する。全ユニットを未処理にする。 各ユニットが移動可能かどうか自明ならば処理する。
残りの未処理ユニットから1つ取り出し、移動する。再帰的に処理(*から開始)し、 矛盾が出たら、移動しないで処理済とする。これを繰り返す。

07/03/22(木)

K先生の還暦祝い&同窓会。 数年ぶりで会う人が多い。同期はいなかったが。

07/04/03(火)

ちょっと古い話題だが、 string.IsNullOrEmptyにバグがあるそうだ。正確にはJITコンパイラのバグなので、 string.IsNullOrEmptyを置き換えて済む問題でもないだろう。実際には、普通に記述していれば問題ないようだが。 http://blogs.wankuma.com/ogiogi/archive/2006/12/12/50253.aspx

07/04/06(金)

ジェネリクスについて。 C++でminを書く場合、自由度は少ない。 C#だといろんな書き方がある。
static int Min1(int i, int j)
{
	return i.CompareTo(j) < 0 ? i : j;
}
static T Min2<T>(T i, T j) where T : IComparable<T>
{
	return i.CompareTo(j) < 0 ? i : j;
}
static T Min3<T>(T i, T j) where T : IComparable
{
	return i.CompareTo(j) < 0 ? i : j;
}
static IComparable<T> Min4<T>(IComparable<T> i, T j) where T : IComparable<T>
{
	return i.CompareTo(j) < 0 ? i : j;
}
static IComparable Min5(IComparable i, IComparable j)
{
	return i.CompareTo(j) < 0 ? i : j;
}
速度は、Min1 = Min2 < Min3 < Min4 < Min5 となる。 結論として、Min2で作成し、よく使うものは Min1 でオーバロードすればよい。

勉強会で、PostSharp、VSTO 、Wintellect Power Collection 、デバッガビジュアライザの発表をする予定。

新しい try構文を考えた。
try
{
  ...
catch (XxxException e1):
catch (YyyException e2):
catch:
  ...
finally:
  ...
}
ブロックは1つになり、catchと finallyはラベルとなる。 こうすると、try ブロックの変数をcatch ブロックで使える。 また、XxxExceptionの処理とYyyExceptionの処理が同じなら、switchと同じく1つ書くだけでよい。


07/04/17(火)

GetTypeについて。
Console.WriteLine(typeof(object).GetMethod("ToString").IsVirtual);
Console.WriteLine(((object)1).ToString());
Console.WriteLine(typeof(object).GetMethod("GetType").IsVirtual);
Console.WriteLine(((object)1).GetType());
上記の出力はどうなるか?結果は以下の通り。

True
1
False
System.Int32
GetTypeは非仮想である。Objectのメソッドで非仮想なのは、これとMemberwiseCloneだ。
GetTypeは非仮想なのに、仮想のように振舞う。これは、クラスのオブジェクトが全て型へのポインタを 持っているからである。GetTypeは、このポインタの値を(非仮想で)返すので非常に高速である。 Int32は、クラスではないが、GetTypeはObjectのメソッドなので、呼出すときにボクシングされる。
オブジェクトは、どうせvftblのポインタを持っているのだから、GetTypeを仮想にしてもよかったのに と思うのだが。(GetTypeの呼出しがちょっと遅くなるだけで、メモリ使用量は減る)

いろいろやっていると、忘れるのでメモしておこう。提案だけで受注してないのも混じっている。

  • 大規模データベースの最適配置(通信業)
  • 多重無線ネットワークの最適設計(電力業)
  • 移動体通信におけるチャネルの最適割当(通信業)
  • 地上デジタルTVにおけるチャンネルの最適割当(官公庁)
  • 専用船積付け支援システム設計開発(流通業)
  • 光ネットワーク網の最適パス設計(通信業)
  • ロジスティクス最適ネットワーク設計開発(製造業)
  • 3次元パッキング最適化システム開発(流通業)
  • 最適配送計画システム開発(独立行政法人)
  • 衛星通信最適リソース割当(通信業)
  • 最適ロットサイズ決定(製造業)
  • 最適板取決定(製造業)
  • 乗務員負荷平準化スケジューリング(輸送業)
  • 最適バッファ配置計画(製造業)
  • 安全在庫最適化(製造業)
  • 最適サイクルタイム計画(製造業)
シミュレーションもやっているので、通信業が一番多い。
「データベース」のは、国際学会で発表。多重無線は制約条件が厳しい。 積付けシステムは、学会で賞をもらった。光ネットワーク網は、非線形混合整数計画問題に 定式化して10ページぐらいになった。3次元パッキングのコンテナは、立方体以外にも数種類の形状あり。 最適リソース割当は、大規模で出力ファイルはギガクラスだ。

07/04/18(水)

「3つの質問」の ゲームを作ってみた。
http://plaza.harmonix.ne.jp/~fakira/turedure/ThreeQuestions.zip 著作権で問題があれば消すので、コメントに書いて下さい。

07/05/11(金)

VSTOではまったこと。 普段、管理者権限で開発しているから気づかないが、利用者が制限ユーザだと、VSTOがインストールできない。 インストールだけ、管理者権限で実行してもらったが、制限ユーザで利用できない。インストール時に caspolでセキュリティの設定をしているのだが、インストールしているユーザにだけ設定していたためだった。 直して、無事に制限ユーザでもVSTOができるようになった。

別のバグ。1つのメソッドを2つの状態で使用できるようにしていた。半年後に機能の修正をしたが、1つの状態でしか 対応していなかった。結局、もう1つの状態(特殊なのでたまにしかおきない)でバグった。

別のバグ。座標の原点の仕様が変わり、ロジック部に手を入れずに、入出力で変換するようにした。単純なスペルミスで 右の値と左の値を間違えていた。基本的に右と左は同じ値を設定するので、しばらく気づかなかった。

学会の委員会の初会合。終わってから先生方と飲んだが、なかなかよかった。


07/05/15(火)

セキュリティ強化。 社外に持出すノートPCは、基本的に営業情報は入れていなかった。さらに社内に置いてあるものもセキュリティ強化する ことになった。具体的には、TrueCryptを利用する。100GB単位で暗号化して使っている。

07/05/16(水)

パズル。 3軒の家に、各々水道、電気、ガスを引く。(計9本の線) http://www.supuzzle.com/ http://plaza.harmonix.ne.jp/~fakira/turedure/supuzzle.JPG

07/05/21(月)

世阿弥の 「花鏡」の初心忘るべからず。この後、「是非の」「時々の」「老後の」と続く。 私なりの解釈では、最初が肝心、中も肝心、終わりも肝心といったところか。
「初心を忘れない」とは「常に、一生懸命、物事を成す」ことだと思っている。

07/05/23(水)

子供が赤ん坊の ころ、つねられたら異様に痛かったが、4,5歳になるとそうでもなくなった。これは、意識的にコントロールできるようになったからだろう。 赤ん坊は何も考えず、いつでも火事場の馬鹿力のようだ。

07/05/28(月)

Newtonの最新号で、 光のしくみを立読みした。光は電磁波である。観測装置が粒子に反応するので、粒子の性質を示す。 納得した。でも電磁波とは何だろう。電子よりずっと小さい粒子なのか?

07/05/30(水)

Googleの画像検索で &imgtype=faceとつけると顔が出やすいそうだ。やっぱりGeekはGoogleのオプションとかすらすら手打ちできるのだろうか。

WindowsアプリをSDIで作ることが多い。ファイルフォーマットはXMLだ。ファイルサイズが気になるなら、 数行書くだけで、圧縮もできる。
以下、汎用的に使える手法。

  • Excelだと、xlsの拡張子をxltにするとテンプレートになる。実装は、拡張子がテンプレートだったら内部で 保持しているファイル名をクリアするだけだ。(ファイル名が「無題」になるので、ちょっと違うが)
  • 初心者向けに、サンプルを提供するとき、「exeと同じところに、sampleフォルダを作ると、 ファイルメニューのサンプルサブメニューの中から、sample内のファイルが選べる」ようにする。テンプレートとしてもよい。
  • testフォルダにリグレッションテスト用のケースファイルを用意しておく。 テスト画面で、ケースの一覧、全リグレッションテストの実行などをできるようにする。 ファイル内に入力データと出力データが入っているので、再実行してファイルの同一性を比較するだけで確認できる。
  • 複数ケースの実行。1ケース1ファイルとする。任意の複数ファイルを比較対象として保持できるものとする。 これらをバッチ実行できるようにする。
  • ケース間の比較。上記のケース管理したものから値を取り出し、 一覧をCSV保存やグラフで確認できる。
    例えば、シミュレーションソフトで、パラメータを変えて複数ケース実行し、装置Aの稼働率を比較するなど。
    ファイルは、XMLなので、値の指定をXPathにすれば、汎用的に作成できる。 但し、doubleデータをBase64エンコードしたりしていると、うまくいかない。

07/06/06(水)

この前、SONYの携帯プレーヤーを 買おうと思って行ったら、何故か、ワンセグの見れる gigabeat を買ってしまった。 通勤では、音楽を聴くより、深夜TV番組の録画ばかり見ている。PCに落とせないので、見たら消すしかないのが残念。 ちなみに、携帯プレーヤーを買うのは生まれて初めて。

07/06/15(金)

携帯は、基本的に マナーモードにしている。実際には携帯が振動していないのに、振動したかのように 感じる人がいるそうだ。私もそうだ。記事では、錯覚のように書かれていたが、 私の場合、血流のブレのせいだと思っている(携帯は、胸ポケットに入れており、 心臓のすぐ近くだ)。別に不整脈なわけではないと思うが。 携帯を持つ前は、そのようなことはなかったので、胸付近での振動に敏感に反応するようになったのだろう。

07/07/02(月)

新年度だ。2人増えた。

記憶を消す薬ができたらしい。SFみたいだ。 私は、都合の悪いことは忘れることが多い。 円周率は100桁覚えて、必要もないのに30年近く覚えている。 麻雀の点数計算は、20年以上やっているが、覚えなかった。


07/07/05(木)

読書録。 「数学的にありえない」isbn:4163253106 が面白い。
「月に繭 地には果実」isbn:4344007654 は、50ページぐらい読んで、ガンダムの話だと気づいた。

ノーヒントクロスワードが得意だ。
http://www.gamedesign.jp/flash/crossword/crossword_jp.html
大体、平均で5分ぐらいで解ける。速いと200秒くらいだ。 オフラインでもできるように、移殖してしまった。問題は、画像処理で解析して取得した。 全部で1000題あった。私は、創造力はないが、想像力はあるようだ。


07/07/09(月)

年度の初めに、 ちょうど、名刺の在庫が空になった。1年で1箱(200枚)使っている。

07/07/11(水)

「どう書く?org」に いろいろ出してみた。「コメント削除」は、慌ててたので無駄なことを書いている。
文字の比較は、String.StartWithを使えばよかった。 正規表現は、2回もする必要なかった。
http://ja.doukaku.org/

07/07/18(水)

ようやく、gigabeatが 修理されてきて戻ってきた。 修理というより、本体が交換されて、データも移動されていた。 ただし、以前のワンセグの録画データは見れなかった。 これは、本体が変わったため復号化に必要な本体識別コードが変わったためだろう。 新しく録画したものは見れた。ワンセグ以外のデータは問題なく見れた。 ワンセグに限らず、ある程度情報の劣化した画像や動画は著作権の対象外にしてもいいんじゃないかと思う。 例えば、160×100ピクセルに縮小したら、コピーフリーにするとか。

07/07/19(木)

「ダンボール肉まん」は、 TV局の捏造という記事を読んだ。全く信頼できない。 嘘の上塗りにしか聞こえない。 中国産の食品は買うのをやめようと真剣に思った。 中華料理も避けるか。

07/07/25(水)

動画。 ソニーのMotionPortraitはすごい。モノリスのFrameFreeと組合せると面白いんじゃないだろうか。 どちらも、少ないデータから動画を作成できる。人物のプロフィールとか、建物に応用してナビで見せるとか。 いろいろできんじゃないだろうか。
http://www.itmedia.co.jp/news/articles/0707/10/news079.html
http://www.monolith-prime.co.jp/

「ひとり言スレ」ですか。この日記もひとり言みたいなものだな。もうすぐ10年だ。
http://www.itmedia.co.jp/bizid/articles/0707/17/news021.html

強化学習勉強会では、順調にいろんな課題をプログラミングしている。


07/08/10(金)

例によって、 gigabeatで録画した「コマネチ大学」を通勤で見ていた。今週の問題は、 「120度から5度づつ増えていく多角形は、9角形ともう1つは何角形か」。
私は暗算で解いて、コマ大は5時間かけて違う答えを出していて 「そこまでして、間違うかい」と思ったものの、間違えたのは私だった。
やられた。

07/08/14(火)

OR学会誌の最新号は、 「情報」の教育とORだ。
巻頭の中森先生の記事が面白い。例えば、測定データがおかしいときに、 呼ばれた統計学者が「どのような調査方法で取得されたか不明ならば、データを処理することはできない」 「次からは、データ取得後ではなくデータ取得前に呼んでくれ」という話がある。
プロジェクトでも、煮詰まってから呼ばれるよりは、「最初から相談してくれれば」と思うことが多い。 とくに、データ構造やGUIに関しては、?と感じることが多い。

07/08/21(火)

出張先から更新。 大阪港の夜景がきれいだ。 次に会社に行くのは9月だ。

07/09/12(水)

外出が続いたら、 体調崩した。健診で機械の視力測定をした。左目は、1つもわからないまま適当に押してたらそのまま終わってしまった。

07/09/21(金)

顧客から、「OR学会は 学術すぎる」「自分のやっていることはORではない」と言われた。 貴重な意見である。その顧客は、研究者なので別の学会にはいろいろ発表しているし、 やっていることの一部は確かにORだと思う。しかし、ORやOR学会への印象をよく表していると思う。
OR学会は、「ORが実務に役立つ」ことをアピールし、もっと研究者でない企業の人たちを取り込むべきだ。 「学術的」よりも「使える、実務的」と思われるようにすべきだ。

OR学会誌の「ORの図解」を元に勉強会をすることにした。今のところ若人は積極的だ。

「プログラマはマシン語を理解するべきか」で盛り上がっているらしい。 私は、アセンブラのマニュアルを、本の角がとれてボロボロになるまで、読んだ口だが、 全ての職業プログラマが理解するべきとは思っていない。でも、マシン語をやったかどうかで プログラマの厚みが違うとも感じる。
本をボロボロにしたのは、高校のときで、大学のプログラミングの授業で先生から、 (オブジェクト指向っぽくないので)「プログラムの書き方が良くない」と言われたことがある。


07/10/03(水)

ASP.NETで画像を動的に 作成する方法のメモ。
  • 画像は、サーバにファイルを作らずに行う。
  • 画面に図を埋め込めるように、部品として定義する。
  • 部品なので、GETに対応させる。必要なパラメータは、URLに含める。
  • 部品の作成 ジェネリックハンドラを作成 以下のように記述
    public bool IsReusable { get { return false; } }
    public void ProcessRequest (HttpContext context)
    {
        using (Bitmap bmp = new Bitmap(500, 500))
        using (Graphics g = Graphics.FromImage(bmp))
        {
            Font font = new Font("MS UI Gothic", 11);
            g.Clear(Color.White);
            int i = 0;
            foreach (string key in context.Request.QueryString)
                g.DrawString(string.Format("{0}, {1}", key, context.Request[key]),
                    font, Brushes.Black, 10, i += 14);
            context.Response.ContentType = "image/gif";
            bmp.Save(context.Response.OutputStream, ImageFormat.Gif);
        }
    }
    
  • 部品の利用 Imageコントロールを貼り付け、ImageUrl="Handler.ashx?abc=123&para1=xyz"とする。

ASP.NETでのクッキーの利用法。

利用
HttpCookie ck = Request.Cookies["MyData"];
if (ck != null) TextBox1.Text = ck.Value;
設定
HttpCookie ck = new HttpCookie("MyData", TextBox1.Text);
ck.Expires = DateTime.Now.AddYears(1);
Response.Cookies.Add(ck);

07/10/05(金)

今回のWindowsUpdateは、 IE7かよ。大胆だな。WindowsUpdateの自動更新やめる人が増えるんじゃないか。

07/10/17(水)

かかえている仕事と直近の締切りを 書き出してみる。
  • 公募提案(10/23目処)
  • 官公庁プロジェクト(近日)
  • 帯域割当プロジェクト(近日)
  • 大規模データ分析プロジェクト(近日)
  • シミュレーションプロジェクト(10/19目処)
  • 物流最適化プロジェクト(11月)
  • スケジューラ作成プロジェクト(11月)
  • 教育担当(随時)
  • 大学講演(11/12)
  • 学会発表(10/26)
  • 勉強会主催(10/16以降)
  • ナレッジデータベース作成(10/19)
  • ビジネスプラン作成と普及(10/24)
部内で帰宅は一番早い。

07/10/30(火)

消費税について。 現行5%だが、将来的にはあがるだろう。上げると一時的にせよ消費は落ち込み、景気は悪くなるので、 すぐには上げないだろうが。上げるとすると何%がよいだろうか?個人的には、100/9%を推したい。 理由は、9の倍数の値段の税込み価格が10の倍数になり端数が生じないからだ。 以下のルールを考えている。
  • 11%から100/9%の幅を認め、販売者が決定できる。販売者は、購入者から預かった額を納めなければいけない。
  • 1円未満は請求していけないものとする。端数は切捨てとする。
  • 100/9%を11.1%と表記してよい。90円の11.1%は、9円でなく10円となる。
例によって、通勤中にふと思いついただけ。

07/11/11(日)

ブログ10周年記念。 初回記事10年分記事

プログラマ30歳定年説なんていうのもあったが、このブログ(プログラミング所感)を書き始めた時点で30は超えていて、 未だに今日も書き続けている。

ニッポンIT業界絶望論
http://japan.cnet.com/blog/kenn/2007/11/09/entry_25001425/
の中で、SIerはクリエイティブでないと言われているが、私はいつも違うことばかりしている。 これは、業界の中でも社内の中でさえ珍しいと思う。後継もほとんどいないし営業も大変である。 社内の営業に営業しても通じにくい。

オペレーションズ・リサーチ(OR)の最適化はこれからさらに伸びていくと思う(若手がどんどん入ってくれば)。 そのためには、種々の問題を類型問題に帰着し、汎用ソルバで解くのは有効だろう。


07/11/20(火)

ProAtlas SV3 SDKメモ。 サンプルにはC++、VB6、VB(VB.NET)しかないが、C#でも当然できる。
但し、初期化は、ifset.ApplyEnvironment("PROATLASSV2", true);としなければいけない。
デフォルトでは、デバッグができない。レジストリに HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\MDA=0 を追加し、ソリューションのデバッグ設定で 「アンマネージコードデバッグを有効にする」をチェックすれば、デバッグできるようになる。

面白そうなのがあったので貼る。

  1. 理解が深い人は目標を持ち,自分にテーマを課す。 理解が浅い人は目標感がなく,自分にテーマを課せない。
  2. 理解が深い人はイメージする。 理解が浅い人はイメージしないか,そもそもできない。
  3. 理解が深い人は体験する。 理解が浅い人は体験しない億劫な性格である。
  4. 理解が深い人は切迫感を持つ。 理解が浅い人は切迫感が弱く,締め切りに緩い。
  5. 理解が深い人は常にアウトプットする。 理解が浅い人はアウトプットを嫌がる。
  6. 理解が深い人は何でも興味を持ち好きになる。 理解が浅い人はものに興味がなく,無感動で怠惰。
  7. 理解が深い人は常に批判的に見て考える。 理解が浅い人は批判的に見れず,疑問を持たず,鵜呑みにする
  8. 理解が深い人は何回でも根気良く繰り返す。 理解が浅い人は繰り返さず,その場限りですぐ忘れる。
http://itpro.nikkeibp.co.jp/article/Watcher/20071119/287543/

07/12/04(火)

OR学会のターゲット について。経営者や法律家や政治家を取り込むようにしたらどうかとの意見をもらった。
あるいは、トヨタなどの成功企業から講師を呼んで話してもらうとか。
ORセミナは参加者が少なかった。月曜と金曜はダメらしい。
OR手法は、1度解を出して終わりではなく、それを参考にして人が最終的に作るということが重要とのこと。 AHPでは、多数の候補は絶対評価で絞り、その後、相対評価(一対比較)を行えばいいのではないかとのこと。
AHPで得られた重みをコストにしてナップザック問題を解いたりするといいかもしれない。 AHPの評価尺度に「不確定要素」を入れて、その重みを恣意的に変えることにより、リスク評価できるかも。 AHPの代替案をある尺度(例えば、地域的な偏り)で平準化したいとき、重み和と1/分散の有向フロンティアが欲しい。

子供にLOGOを教えようと思って作ってみた。
http://plaza.harmonix.ne.jp/~fakira/turedure/Logo.zip


07/12/05(水)

アドバイス。
  • 好奇心を持つこと。広く読むこと。新しいことに挑戦すること。 多くの人が知性と呼ぶものは、実質的には好奇心なのだと思う。
  • すべてにイエスと言うこと。プロジェクトにせよ、インタビューにせよ、 友人にせよ、ノーと言うことで多くのトラブルに見舞われてきた。 イエスと言うことの結果として、たくさんのことを試みることになり、 その多くが失敗したとしても、依然何かを成し遂げることができた。
  • みんな自分のやっていることがわかっていないと仮定すること。 多くの人は何かを試みることを避けるが、それはそのことについて 十分に知らないと感じるためか、自分の考えつくようなことは誰かが すでに試しているだろうと思うためだ。物事を正しくやる方法について 何かアイデアを持っている人というのはごくわずかで、 新しいことを実際試みる人となるとさらに少ない。 だから何かについて最善の努力をするなら、結構うまくいくものなのだ。
http://www.aoky.net/articles/aaron_swartz/howtoget.htmより

07/12/13(木)

バイナリサーチにバグの 記事から。
http://iiyu.asablo.jp/blog/2006/06/05/393464
int mid =(low + high) / 2;だと、オーバフローの危険があるというもの。 修正は、int mid = low + ((high - low) / 2);とする。
int mid = low / 2 + high / 2; では正しくない。
「(X+Y)/2」を Visual Studio 2005\Projects の下で正規表現で検索したら、200箇所近くあった。 ほとんどは、無関係((n+1)/2など)か変数がdoubuleだ。残りは、描画時のものが多い。2箇所だけ直した。

07/12/18(火)

汎用的なバイナリヒープを実装したが、 速度は、SortedDictionaryとほとんど変わらない。キーの値の変更だけわずかに早いが。

07/12/20(木)

シミュレーションクラスの イベント管理をバイナリヒープにしようと考えたが、単純なバイナリヒープではよくない。 要件として、キー(時刻)が同じなら、スケジュール順に処理しなければいけない。 ソートで言うなら安定ソートのようなイメージだ。 バイナリヒープをいろいろ変えたが、結局うまくいかずあきらめた。

07/12/21(金)

プロジェクト・ブック isbn:4395241018 が面白い。 p71の話をまとめてみよう。
    新撰組の組織としての特徴
  • 小さなピラミッドをたくさん持つフラットな組織。組織的に対応でき、意思決定も早い。
  • ひとりでは動かない。フォーメーションを組む。
  • リーダが死ぬと、ピラミッドは解体。部下がリーダになることはない。
  • 組織の鮮度を重視し、コラボレーションを前提。
  • 年功上列や終身雇用ではない。積極的なリクルート(隊士募集)。
  • 戦闘から帰ってきた兵士の刀を検分し、刃のこぼれ具合などから活躍の度合いを評価。
    海援隊の組織としての特徴
  • 3年しか存在せず。
  • 坂本龍馬を指揮者にフラットな組織。プロジェクトごとにチームを編成。
  • 海援隊約規で組織の目的、責任の所在などを明記しメンバで共有。
  • 隊員は自分に合った仕事を選択した。会社ではなく仕事を目的に海援隊に入るため、プロ意識の人材が集まる。 給料は一律。報酬よりもやりがいで報いた。
  • 目的がはっきりしており、指示待ちにはならない。個々も能力向上を怠らない。

最近読んだ面白い本。isbn:4862481221, isbn:4163246800, isbn:416660595X, isbn:4061498916, isbn:4837976735, isbn:4569690815, isbn:4526058521, isbn:4254270046, isbn:4893086715。


プログラミング所感 - 前へ 目次次へ