スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

近況

最近やったことのメモ
  • ImageMagickで写真を比較明で合成:
    convert aaa.jpg bbb.jpg -background none -compose lighten -flatten output.jpg
  • Ubuntu 9.04の正式版が出たのでアップデート。
  • LuaのObjective-Cバインディングをいじった。メソッドを実装できるようにしたけど、どういうインターフェースにすればいいか悩む。構造体のアライメントが面倒。現在放置中。
  • iPod touch買った。
  • 現在MacPortsでGCC 4.4をビルド中。
  • とある雑誌の表紙で赤と緑が使われてて色覚異常な俺には見分けづらいんだが、デジカメ越しに見ると多少見分けやすくなる件。
  • ScintillaのExtInput.cxxを流用するとwxSTCで日本語のインライン入力ができるようになる気がするんだけどやってみたらEnterで確定されない。
  • 誰かおすすめのR6RS対応Scheme処理系を教えてください。
  • open -h stdio.hでヘッダを開ける。openコマンドすげー
  • デスクトップの背景を定期的に変えられることを知る。スリープ解除のタイミングで変更するようにした。
  • iStat menusを入れた。
  • 最近曇りとか雨とかばっかり。今も強風が吹いてる。
スポンサーサイト

乱数が絡むプログラムを検証する

単純で正しそうなものが正しいとは限らない - Radium Software
http://d.hatena.ne.jp/KZR/20081203/p2
を以前見て気になってた。
検証するには、上の記事のリンク先のように、実際に実行した結果に偏りがないことを確認すればよい。
しかし、数千回、数万回実行するのは時間がかかる。無駄だ。
もしrand()が可能な値全てを返すことができれば、何万回も実行しなくても検証できるのではないだろうか?
例えば、乱数を使ったこんなコードがあるとする。
int a = rand(5); // 0から4までの値を一つ返す
int b = rand(5); // 同様
printf("(a,b)=(%d,%d)\n", a, b);// (0,0),(0,1),…,(4,4)が等確率で表示される。
次のように書き換える。
for(int a = 0; a < 5; ++a) { // 0から4までの値を全部
for(int b = 0; b < 5; ++b) { // 同様
printf("(a,b)=(%d,%d)\n", a, b); // (0,0),(0,1),…,(4,4)が同じ数(1つずつ)表示される
}
}
つまり、rand()を使う代わりにfor文を使う。rand()の代わりに使うために、for文を関数のように扱いたい。Schemeのファーストクラスの継続を使えばそれを実現できる。
例えば、上の記事の、配列の中身をシャッフルするコードは以下のようになる。

続きを読む

テーマ : プログラミング | ジャンル : コンピュータ

サクラエディタをMinGWでコンパイル

サクラエディタのUNICODE版をMinGWでコンパイルしてみた。
MacからクロスコンパイルしたけどWinでもいけると思う。
ソースコードの問題:
  • ヘッダの依存関係がごちゃごちゃ
    何でもかんでもStdAfx.hで#includeしてるので、ヘッダを一つ修正しただけで全部再コンパイルになってしまう。
  • VC++依存。C++の標準に反してる。
    VC++はテンプレートが絡むと名前解決が遅延されて(ry
MinGWの問題:
  • ヘッダが足りない
    Platform SDKから持ってくる
  • 構造体/定数の定義が足りない
    定義をMSDNからコピペ
その他:
  • ***_sは自前で定義・実装
  • クラッシュダンプは無効化
  • CConvert_Base64Decodeが紛らわしい。消せよ。

.cppはコンパイルできるけどリソースがコンパイルできない。
起動できないのでバージョン情報ダイアログも見れない。
パッチ
パッチ 改訂版(5/5)


追記
Windows環境からリソースコンパイラをもってきてビルドした。
サクラエディタのスクリーンショット

追記(5/5)
微妙に修正した
  • 可変長引数マクロの修正
  • 最新リビジョンへの追従

テーマ : プログラミング | ジャンル : コンピュータ

プロフィール

minoki

Author:minoki
好きなプログラミング言語:
Haskell,Lua
GitHubアカウント
Twitter

最新記事
月別アーカイブ
カテゴリ
検索フォーム
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。