プログラミングの作業に何の価値も見出せなくなってしまったd金魚による日記 このページをアンテナに追加 RSSフィード

 iTunes Music Store(Japan) なかのひと あわせて読みたいブログパーツ
|

0001 | 00 |
2004 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2005 | 01 | 02 | 03 | 04 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2006 | 00 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2007 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 |
2008 | 01 | 02 | 03 | 05 | 07 | 08 | 09 | 10 | 11 | 12 |
2009 | 01 | 02 | 03 |
2010 | 03 | 04 | 06 | 07 | 09 | 10 | 11 |
2011 | 01 | 02 | 10 |
2012 | 04 |
2013 | 01 | 05 | 06 | 07 | 08 | 10 |
2014 | 02 | 03 | 05 | 09 |
2015 | 04 |
2016 | 09 | 11 | 12 |
はてな一覧
アンテナに追加
私のアンテナ
私のダイアリー
私のアーカイブ
私のアイデア
私のブックマーク
私のグループ
私のキーワード
ニュース系、今まで続いているシリーズモノの読み物
dKingyo Utility Toolkit Projectのリリース情報
やっぱり暗号化は大人の味(笑)
プログラムのパッキング方法を調べよ
ココが厳しいよMinGW
ライブラリアン通信
ゲームプログラミングどうしよう
CRCについて
ビット演算練習
d金魚の今更Ajax
Windows Tips
VC6 Tips
Win32 WTL Tips
Ruby for C++ User
Ruby Tips
今日のRubyで嵌った事
正規表現PIECE
書きかけ
続く・・・

私のダイアリーの人気記事
新しくブックマークされた記事


あまり、役に立たなそうな個人的に調べた情報や妄想に耽った事、今 勉強している事ヒソヒソと公開していたりします。 | 登録してくれている方々 | d金魚にメール | 当サイトは640x480の画面解像度に対応しています。
日記へのリンク、アンリンクはフリーですが、selfタグのついている部分のコンテンツの引用はご遠慮願います。ご協力よろしくお願いします。


 

2010-06-07 std::sortをスレッドを使って分割すると処理速度が速い事もある

[][]VC6 Tips / VC6で「std::stringのclear()が宣言されていない、ブロックが大きすぎる・・・」といった内容のエラーへの対処VC6 Tips / VC6で「std::stringのclear()が宣言されていない、ブロックが大きすぎる・・・」といった内容のエラーへの対処法 - プログラミングの作業に何の価値も見出せなくなってしまったd金魚による日記 を含むブックマーク VC6 Tips / VC6で「std::stringのclear()が宣言されていない、ブロックが大きすぎる・・・」といった内容のエラーへの対処法 - プログラミングの作業に何の価値も見出せなくなってしまったd金魚による日記 のブックマークコメント

 std::stringのclear()が宣言されていない、ブロックが大きすぎるという謎のコンパイルエラーについて・・・VC6の標準STLを使っているとVC6が駄々をこねるという構造。STLPortのパスを間違って設定した事が原因。

[][][][]VC6 Tips / iteratorがPODに対応しない時の対応 VC6 Tips / iteratorがPODに対応しない時の対応 - プログラミングの作業に何の価値も見出せなくなってしまったd金魚による日記 を含むブックマーク VC6 Tips / iteratorがPODに対応しない時の対応 - プログラミングの作業に何の価値も見出せなくなってしまったd金魚による日記 のブックマークコメント

 主に、VC6+STLPortでC++ sort library saltを使うときに気になったので対処法のまとめ

http://bit.ly/cAPGMy

tiitii 2010/09/21 18:59 http://codezine.jp/article/detail/5039
こんなんありますよ

2010-04-13 VCでRelease設定で~allocatorがエラーになる時

[][][][]VC6 Tips / VCでReleaseの設定でSTLPortを使用し、deallocateにてHeap corruption detected at ... とエラーになる場合対処方法 VC6 Tips / VCでReleaseの設定でSTLPortを使用し、deallocateにてHeap corruption detected at ... とエラーになる場合の対処方法 - プログラミングの作業に何の価値も見出せなくなってしまったd金魚による日記 を含むブックマーク VC6 Tips / VCでReleaseの設定でSTLPortを使用し、deallocateにてHeap corruption detected at ... とエラーになる場合の対処方法 - プログラミングの作業に何の価値も見出せなくなってしまったd金魚による日記 のブックマークコメント

VCでReleaseの時にのみ

Heap corruption detected at 009D1090
HEAP[foo.exe]: Invalid Address specified to RtlFreeHeap(

エラーデバッガに表示されたら

STLPortを使用している場合

#define _STLP_NO_OWN_IOSTREAMS

を宣言すればよい。

 昔、よく嵌っていたのだが、数年ぶりにこのエラーになって対処の方法を忘れていたのでメモ

2008-02-15 プライマリパーテーションと論理パーティション

[][]プライマリパーティションでフォーマットしたハードディスクドライブ プライマリパーティションでフォーマットしたハードディスクドライブ - プログラミングの作業に何の価値も見出せなくなってしまったd金魚による日記 を含むブックマーク プライマリパーティションでフォーマットしたハードディスクドライブ - プログラミングの作業に何の価値も見出せなくなってしまったd金魚による日記 のブックマークコメント

Powered by dKingyo 逆引きハンドブック | Access | CSS | Java | Eclipse

 最近HDDが安くなってきたのでついに買ってしまった。

 HDDには10000円の法則というのがあり、この値段のHDDは1GB単価が安いのだ。

 早速フォーマットし、古いHDDから新しいHDDにファイルを移そうと思ったら、新しいHDDが認識しない・・・。ただの「USB Device」としてしか認識しないのだ。これはおかしい・・・。

 BIOSの設定でも悪いのかと思い、更新したり、設定を書き換えたり、ドライバを確認したり、パス文字列を変更したり、デバイスの削除や付け替えを繰り返していたが、どうやら原因は「プライマリパーティション」でフォーマットしたかららしい。


http://www.logitec.co.jp/ms/winxp/hdfmtxp/part.htm

より引用

拡張パーティションで論理ドライブを作成することをお勧めします。


なんとまぁまぁ!!!これは盲点だった。

 Windowsでのディスク管理に関してはパソコン店の店員でもない限り経験する事が少ないためこういったことで躓くこともあるのだなと思った。

 

 それにしても最近のHDDは静かで驚いた。

http://studiokingyo.myminicity.com/

2007-03-26 シーゲンガーのためのルビー PART.5

[][]Ruby for C++ User / gsub!中にパターンマッチした文字が上手く置換されない Ruby for C++ User / gsub!中にパターンマッチした文字が上手く置換されない - プログラミングの作業に何の価値も見出せなくなってしまったd金魚による日記 を含むブックマーク Ruby for C++ User / gsub!中にパターンマッチした文字が上手く置換されない - プログラミングの作業に何の価値も見出せなくなってしまったd金魚による日記 のブックマークコメント

Powered by dKingyo Java | C言語 | C++ | C言語 | 逆引きハンドブック

今日のRubyで嵌った事。

Rubyの String#gsub! はsに行った処理によってオブジェクト内の文字列の置換してくれるのだと思っていた。

だが、違っていたのだ。

str = "abc def"
i = 0
str.gsub!("abc"){|s|
 s = %Q(Ruby[#{i}])
 p s
 i = i+1 
}

処理結果

"Ruby[0]"
"1 def"

sに処理結果を入れたので"1 def" ではなくて"Ruby[0] def"になってほしいのだ。


この原因は ...

str = "abc def"
i = 0
str.gsub!("abc"){|s|
 s =%Q(Ruby[#{i}])
 p s
 i = i+1 # ここにある。
}

最後に処理した結果がsに反映されてしまうのだ。

おそらくRubyの関数の仕様と同じ働きなのだろう・・・。

よって・・・

str = "abc def"
i = 0
str.gsub!("abc"){|s|
 ts = %Q(Ruby[#{i}])
 p ts
 i = i+1 
 ts
}
p str

にて期待する処理結果が返ってくる。

"Ruby[0]"
"Ruby[0] def"

嗚呼、これに気付けず無駄な時間を過ごす・・・。

この問題に3時間も費やしてしまった。

2007-01-02 USB機器がUSB2.0で動作しているかどうか確かめる方法 part5

[][]FILE DEVICE BENCHMARKの自家製版のバグの原因 PART.2 FILE DEVICE BENCHMARKの自家製版のバグの原因 PART.2 - プログラミングの作業に何の価値も見出せなくなってしまったd金魚による日記 を含むブックマーク FILE DEVICE BENCHMARKの自家製版のバグの原因 PART.2 - プログラミングの作業に何の価値も見出せなくなってしまったd金魚による日記 のブックマークコメント

1秒あたり何KB/secの読み込みができるかと言う部分でファイルサイズの指定を一部間違っているパラメータを渡している部分がありこれも影響していてバグが取れなかったというのもあります。

見た目バグではないのですが、処理結果がどうも腑に落ちないのでかなりの間ソースをチェックしてはいたのですがこれは最後の方まで気付きませんでした。

この手のバグは自分が間違っている事に気付きにくいのが落とし穴と言う事を意識させるのにもっとも良い経験だと感じました。

2006-12-26 USB機器がUSB2.0で動作しているかどうか確かめる方法 part4

[][]忘れられないコーディングミス 忘れられないコーディングミス - プログラミングの作業に何の価値も見出せなくなってしまったd金魚による日記 を含むブックマーク 忘れられないコーディングミス - プログラミングの作業に何の価値も見出せなくなってしまったd金魚による日記 のブックマークコメント

for(i=0;i<count;i++)

のところを

for(i=0;count;i++)

として無限ループ

このせいでHDに大量の無駄なファイルが書き込まれ落ちる寸前まで行った。

オソロシヤオソロシヤ・・・

こんなコードを認めないで!!!コンパイラ!!!

[][][]FILE DEVICE BENCHMARKの自家製版のバグの原因 FILE DEVICE BENCHMARKの自家製版のバグの原因 - プログラミングの作業に何の価値も見出せなくなってしまったd金魚による日記 を含むブックマーク FILE DEVICE BENCHMARKの自家製版のバグの原因 - プログラミングの作業に何の価値も見出せなくなってしまったd金魚による日記 のブックマークコメント

処理結果を表示するテキストボックスを上と下で間違えていたという極めて人的な陥りやすいバグでした・・・。

なんか、orzって感じになります。

とりあえず、処理にばらつきはあれどFILE DEVICE BENCHMARKに極めて近い状態になってきました。

きさらきさら 2007/01/03 01:57 野暮は承知のツッコミですが、

>> for(i=0;count;i++)

このコードが意図された無限ループかどうかを、コンパイラに判断させるのは無理でしょう。ループ内の処理次第ではちゃんと終了するループなんですから。breakしなくても、変数countにfalse入れたら終わるんですから。もしくはtrap仕掛けておく場合もありますよね。
それに、意図的に終了しない無限ループを組む場合もあるので、認めてくれないと逆に困ります。
まぁアレですよ、境界値試験重要。

studiokingyostudiokingyo 2007/01/17 22:05 こんにちは。コメントありがとうございます。

>無限ループかどうか・・・
そうですね。(/ω\) ハジカシーです。
i<countと書くことを前提でforを書いていたので(forの定型分のようなものですし・・・)先入観でこのはずなのに!!!といった感じのミスです。
>意図的に終了しない無限ループを組む場合もあるので
そうですよね。事前のcountの値で無限ループにするかしないかという組み方も出来ますし・・・

>こんなコードを認めないで!!!コンパイラ!!!
はfor(i=0;i<count;i++)とする定型文をマクロ化でもしてしまえばよいのかもしれませんね。
#define COUNT_FOR(i,c) for(i=0;i<c;i++)
のように・・・。
そうすればソース上で確認しやすくなります。
ですが、個人的にはマクロを使って予約語を新たに作るような使い方は邪道だと思ってしまう性質があったりするのでこのジレンマは今後も続くのかと思います。

このジレンマを解決するための言語が既に存在するような気がします。多分VBかRubyあたりに・・・

きさらきさら 2007/01/18 01:08 >> #define COUNT_FOR(i,c) for(i=0;i<c;i++)

変数iは使い捨てなので、COUNT_FOR(c)にした方がいいのでは?

別解として、ループは常に while(1)を使って、抜ける時breakするとか(笑) これはこれでバグ作りそうです。

studiokingyostudiokingyo 2007/01/19 01:30 >変数iは使い捨てなので
実はここはバッドノウハウなのですが古いバージョンのコンパイラだとfor内に宣言した使い捨て変数を再定義するとエラーになると言う仕様があるみたいなのです。
http://tmz.skr.jp/messages/msg0208.html#d20020819:1
なのでここは面倒ですがこういう手法を取らざる終えないと言う事があります。こんなコンパイラは無視・・・という方法もあるのですが・・・

そういえば今思い出しました。
#define for if(false) else for
という方法でそれを回避できるのを・・・。
確かこれはDirectXライブラリLunaで使われていたのを見た覚えがあります。

2006-10-28 ライブラリアン通信 VOL.40

[]google:ローカル関数の定義が正しくありません。 [google:ローカル関数の定義が正しくありません。] - プログラミングの作業に何の価値も見出せなくなってしまったd金魚による日記 を含むブックマーク [google:ローカル関数の定義が正しくありません。] - プログラミングの作業に何の価値も見出せなくなってしまったd金魚による日記 のブックマークコメント

error C2601: 'filesize' : ローカル関数の定義が正しくありません。

コードは間違っていない・・・。何故だ!?

...

......

.........

int filesize;

ではなく・・・

int filesize:

と定義されていた。

コロンじゃなくてセミコロンにしなくちゃ!!!

久々にこういうミスをやると特定しにくいものである。

TakamiChieTakamiChie 2006/11/05 12:20 > コロンじゃなくてセミコロンにしなくちゃ!!!
そういうときに限ってコンパイラが見当違いのところを警告してくるから嫌ですね。波カッコの個数を間違えると最悪。VSならオートフォーマットがヒントを投げてくれるからまだ良いものの。

> 人は己の快楽の追求こそ最大の力を発揮する
29日分ともかぶりますので、そっちに。


それにしても、ブログモードのほうが良くないでしょうか?うちも途中で日記モード>ブログモードに変更したクチですが、いままでのコメントはちゃんと保持されますし(別の手違いで然消ししてしまいましたけどね、わたしは)。

studiokingyostudiokingyo 2006/11/05 19:59 >波カッコ
そうですね。個数を間違えると最悪でした。特にヘッダだけで構成されたファイル群の中にその間違いを含めるとそれらのヘッダファイルを大量に検査しなくてはならなくなり、boostを個人的に改造したもの等を使っている時に遭遇して泣きを見ました。

>ブログモード
すべての記事をid記法にて記述していないので変更によるアンリンクを避けるために出来る限り現状維持の方針です。
実は、日記モードが好きではてなダイアリーを使いつづけているというのもあります。

>コメント
私も消してしまった事がありました。コメントもログファイルとしてエクスポートして欲しいですよね。

TakamiChieTakamiChie 2006/11/07 06:49 いつも下の行ばっかり指摘してくるから困りますね。わかるのは「指摘されたより上にバグが存在する」ということのみ。
C言語だとそれもあったか、stdio.hを毎回指摘されたりして面倒でしたねえ(改変した記憶はないのですが)。

>ブログモード
別にID記法でなくてもリンク切れは生じなかったと思います。
べつにID記法だって、id:〜を単純にhttp://〜に書き換えてるだけでしょうし(Hatena::Textの実装は知らないので何とも言えませんが。Femoの挙動を見ると――)。

2006-06-05 ライブラリアン通信 VOL.19

[][]VCのインラインアセンブラの怪 sizeはダメ!? VCのインラインアセンブラの怪 sizeはダメ!? - プログラミングの作業に何の価値も見出せなくなってしまったd金魚による日記 を含むブックマーク VCのインラインアセンブラの怪 sizeはダメ!? - プログラミングの作業に何の価値も見出せなくなってしまったd金魚による日記 のブックマークコメント

sizeは関数の引数です。

mov ecx,size

だと

error C2400: 'オペランド 2' の 'newline' はインライン アセンブラの構文エラーになります。

になり

関数の引数をsizにして

mov ecx,siz

とすると、

上手くコンパイルできます。

こんなのにかなり時間かけちゃいました。もう訳が分かりません(泣)。

2006-04-20 やっぱり暗号化は大人の味(笑) part27

[][]Camellia実装記 part5 Camellia実装記 part5 - プログラミングの作業に何の価値も見出せなくなってしまったd金魚による日記 を含むブックマーク Camellia実装記 part5 - プログラミングの作業に何の価値も見出せなくなってしまったd金魚による日記 のブックマークコメント

実は、CamelliaのCBC CFB OFB版を作っていたのだが、どうがんばってもCFBとOFBを上手く複合化できない。


何故だ!と思った所、

Camelliaの暗号はConvert形式ではなかったのだ。

私がここで勝手にConvert形式と呼んでいるが、Encrypt Decrypt処理が同じということだ。欲に言うxor処理なんかをイメージしていただくと良い。

ストリーム暗号のarc4なんかがそれだ。


なので、CFBとOFBの処理の場合はCamelliaのEncrypt処理で複合化(データを暗号化していない状態に戻す)しなければならないので、これだとCamelliaの真価は発揮できていないのかもしれないと感じた。


ちょっとCamelliaの公式記事を読んだのだが、確かにCFBとOFBに関する記述は無かった。

イレギュラーな方法を使って私のdkcCamellia.cの実装ではCFBとOFBをサポートしているがやはりCBCモードを使ってほしいと感じた。

2006-04-11 BigEndian Simulatorが欲しい!!!

[][]環境依存な発見が難しいセキュリティーホールの元なバグ 環境依存な発見が難しいセキュリティーホールの元なバグ - プログラミングの作業に何の価値も見出せなくなってしまったd金魚による日記 を含むブックマーク 環境依存な発見が難しいセキュリティーホールの元なバグ - プログラミングの作業に何の価値も見出せなくなってしまったd金魚による日記 のブックマークコメント

OFBエンコードデコードのアルゴリズムをついさっきまで組んでいたのだ。

OFBはエンコードおよびデコードのプログラムは同じはずである。

しかしながらデコードすると全く違う値が返ってくるのだ。

これはオカシイ。

OFBの実装の仕方が悪かったのかと考え並々ならぬ時間をかけていろいろと試行錯誤したのだが・・・

どうにもこうにも解決しない・・・。普通は30分から1時間あればテストかけて完全にリリースできる至極簡単なプログラムのはずなのだが・・・。

で、バグはOFB関数内部ではなくOFB関数外部に潜んでいたのだ。

http://d.hatena.ne.jp/studiokingyo/20060407#p3

そう、この前紹介したこの関数の引数のconst T &srcに注目してほしいのだ。

これは絶対に変更されないと保証されている変数なのだ。

しかし、デバッガで追っていくと「とある条件」になるとこの変数が変更されていたのだ。

で、外部のInitial Vector値(srcに入れた変数の元の変数)が変更されてしまいOFBのデコード時に入れるInitial Vector値がまったく見当違いの値になっていたのだ。


さて、その「とある条件」だが、これがまたまたアホなもので・・・

///uint32はWin32環境でのunsigned int型と思ってくれ
uint32 target[32]
encoder.ofb(target,ivec,sizeof(target),cipher);

はい!分かる人! 分かった人はこの記事を読む必要はありません!時間取らせてごめんなさい。

はい!続きを読むリンクをクリックした分からない人!

sizeof(target)は何バイトとですか!?

32です!

おぉ!心の友よ!

んなわけないだろ!

128だっつの!

よって訂正

#define DKUTIL_ARRAY_NUM_OF(s) ( sizeof(s) / sizeof(s[0]) )
encoder.ofb(target,ivec,DKUTIL_ARRAY_NUM_OF(target),cipher);

のようにしないとOFB関数の仕様を満たした値を第三引数に入れる事が出来ないんです。

なので、関数内部でtargetはアクセスバイオレーションをおこしスタックを破壊してInitial Vector値(上記の関数例ではivec)を上書きしてしまうバグを引き起こしてしまったのです。

まぁ、このようにしてセキュリティーホールなるものは空けられるのだなと身をもって経験したのであります。

みなさんも気を付けましょうね。\(-_-;) オイオイ、あなたが一番気をつけなきゃならないんでしょ! 

togetoge 2006/04/12 00:46 Big Endianであればいいだけならqemuでも十分だと思います。
http://www.h7.dion.ne.jp/~qemu-win/qemu-doc-ja.html#SEC42
けど、環境整えるのめんどうそうですね。

hoshuhoshu 2006/04/12 01:15 gcc pccとかgcc クロスコンパイラとかpowerpc-apple-macosとかGoogle先生に聞いてみたりすると良いことがあるかも知れません。

studiokingyostudiokingyo 2006/04/12 01:47 togeさんhoshuさんコメントありがとうございます。
そこらへんの情報やキーワードの類、かなり疎いものでどうにもこうにも手がつけられなくて困っていました。後々レポートしてみたいと思います。が、qemu見た感じ、かなり難しそうです。時間的、環境的に試行錯誤出来るか心配です。
他にソリューションがありましたらコメントいただけると嬉しいです^^

2006-03-26 Ajax 実装のための基礎テクニック プレゼント希望

[][][][]BMLDLLの不具合を報告してくれた方へ BMLDLLの不具合を報告してくれた方へ - プログラミングの作業に何の価値も見出せなくなってしまったd金魚による日記 を含むブックマーク BMLDLLの不具合を報告してくれた方へ - プログラミングの作業に何の価値も見出せなくなってしまったd金魚による日記 のブックマークコメント

送ってきてくれたメールをスパムと一緒に削除されてしまったようなのでもう一回送っていただけないでしょうか?メーラーのトラブルでメールアドレスもちょっと紛失してしまったもので・・・すみません。

確か、BML_LoadXMLFileで18回目の所でエラーすると言ったことでしたが・・・こちら側では再現しないんです。出来ればそれらのBMLファイルを送っていただけるとかなり善処できると思います。よろしくお願いします。

BML_CreateBullet()の5番目の引数のcallbackはNULLだとエラーするようにプログラムされています。

2006-03-21 ライブラリアン通信 VOL.14

[][][]AVL木 part4 AVL木 part4 - プログラミングの作業に何の価値も見出せなくなってしまったd金魚による日記 を含むブックマーク AVL木 part4 - プログラミングの作業に何の価値も見出せなくなってしまったd金魚による日記 のブックマークコメント

前回の記事:(http://d.hatena.ne.jp/studiokingyo/20060307

ってか、最近気づいたのだが・・・私が移植したAVL木のlibdsって再帰構造を使っているんだよね・・・orz 自分で書き直しかなぁ・・・。libdsって自分にとっては結構見難い部類のソースにはいるんで・・・

私は再帰呼び出し構造がキライです。スタックオーバーフローキライです。

いちいちエラーハンドリングがメンドイです。

ちなみにスタックオーバーフローのエラーハンドリングの仕方は

http://www.nminoru.jp/~nminoru/programming/stackoverflow_handling.html

のようにやるらしいです。

via http://beautiful.homelinux.net/~sky-software/diary/?date=20060318

なーるねぇ。

ちょっと疑問なんだが、Windows9x系でstack over flowした時はどうすればいいのでしょうね。

やっぱり伝家の宝刀ブルースクリーン!!?

2006-03-11 switch caseにbreak書かないのはfall throughって言うんだって

[][]fall through bug fall through bug - プログラミングの作業に何の価値も見出せなくなってしまったd金魚による日記 を含むブックマーク fall through bug - プログラミングの作業に何の価値も見出せなくなってしまったd金魚による日記 のブックマークコメント

各caseの最後にbreak文を記述しないと,それ以降の処理が無条件で 実行されてしまうので注意が必要です. これはフォールスルー(fall through)と言い、よくバグの温床として 問題視されてきました. そのためC#など,breakを記述しないと コンパイルエラーを出すような言語も存在します.

http://prog.usamimi.info/java/control/switch.html

より。


switch caseでbreak書かないで下のcaseまで言っちゃう奴。

最近この現象の名前を知ったよfall throughって言うらしい。ナルホド。

私も良くこういうふうになってバグ出した事あったし、

これを利用してコーディングした事もあった。

2006-03-02 ライブラリアン通信 VOL.12

[][]Linux の wchar_t は 4byte だった orz Linux の wchar_t は 4byte だった orz - プログラミングの作業に何の価値も見出せなくなってしまったd金魚による日記 を含むブックマーク Linux の wchar_t は 4byte だった orz - プログラミングの作業に何の価値も見出せなくなってしまったd金魚による日記 のブックマークコメント

そう言う実装もあるらしい。気を付けなければ・・・

関連:(http://d.hatena.ne.jp/studiokingyo/20050901#p1

はむ!はむ! 2006/03/06 15:48 d金魚さん、取り上げていただいてどうもありがとうございます〜
今後もLuaに注目していきますのでよろしくです。
ここのところSquirrelもちょっと気になったりしますけど。

studiokingyostudiokingyo 2006/03/07 03:27 http://hammm.blog21.fc2.com/blog-entry-49.html
の記事、オツカレサマです。感謝します。d金魚です。
Luaの情報、すごく為になります。お蔭様で私もLuaを恙無く楽しめそうです。
Squirrel?初耳です。今度私も調べてみたいと思います。
訪問アリガトウゴザイマス!それでは^^

2006-01-31 デバッグ脳

[][][]d金魚の頭の中のデバッグ回路 d金魚の頭の中のデバッグ回路 - プログラミングの作業に何の価値も見出せなくなってしまったd金魚による日記 を含むブックマーク d金魚の頭の中のデバッグ回路 - プログラミングの作業に何の価値も見出せなくなってしまったd金魚による日記 のブックマークコメント

http://d.hatena.ne.jp/xor/20060204/p3

より、

どこでエラーが発生しているのか頭の中で解きなさいとの事。

なるなる。

どれどれ、フローチャートは以下のような感じだ。

  • 見た感じ、割り算を使っているので多分0除算、よって除算部を念頭に頭に状態遷移を作りつつ見ていく。
  • 着目したのが以下の行
    6  b := (a+c)/b;
    9  b := (a/b)+c;
    11 a := (a+2)/(b-3);
    12 b := (b-1)/a;
    17 a := (c+5)/(a-2);
    18 b := (a+c)/b;
    19 c := (c/b)+1;
    20 a := c/a;
    
  • まじめに計算して考えていくと7番目くらいで記憶破壊。別のアプローチを考える。
  • 4行目のa = a + b ということだから5行目はc = c+b-(a+b)みたいに、足したりひいたりを頭の中でやりやすいように持っていく。 それを頭の中でVisualizeする。*1
  • 前の行の計算結果が次の計算式に入り込んでいることが多い。これから割る数が0になる可能性のある状態を直感で予測しておく。
  • ゴメン、IQ人並み以下*2のうちには無理だったわ・・・9行目あたりで記憶破壊が起きる。

ってか、私はライブラリばっかり作成する方なのでこのようなプログラムの組み方はなかなかしないのだ。

というより、意図的にこのような状態のプログラムになるのを避けている気がする。

つか、眠い!!!寝かせて!!!

(はい、見苦しい言い訳でした・・・)

ちなみに0で割ることについて熱く書いているサイトを発見http://www.uja.jp/contents/math/divbyzero.html

*1:いま、ちょっと思ったが、この頭の中でVisualizeする技能って関数型プログラミングに必要な気がしてならない。

*2http://d.hatena.ne.jp/studiokingyo/20041103

 
Program | Debug | dKingyo Utility Toolkit | library | D言語 | 御本とか | 備忘録 | テクニック | WayBack | 格言 | 英語 | 他力本願 | news | software |

デースケドガー