職人の技
心地よい木の香り…
最高のリクライゼーション…
檜風呂…
毎日が温泉気分に浸れる…かもかも…。
もちろん、買えません…。
でも、さわら風呂ぐらいなら買えそう…。
まあ…小市民なボケとしては、
タンブラー桶(木のコップ)
ぐらいで手を打ちたし…。
これで酒を飲んで…
昭和33年の東京下町…
と洒落込む…。
きっとほんわか温かいに違いない…。
木の手触りを得たいのならここがお勧め。
| 固定リンク | コメント (0) | トラックバック (0)
心地よい木の香り…
最高のリクライゼーション…
檜風呂…
毎日が温泉気分に浸れる…かもかも…。
もちろん、買えません…。
でも、さわら風呂ぐらいなら買えそう…。
まあ…小市民なボケとしては、
タンブラー桶(木のコップ)
ぐらいで手を打ちたし…。
これで酒を飲んで…
昭和33年の東京下町…
と洒落込む…。
きっとほんわか温かいに違いない…。
木の手触りを得たいのならここがお勧め。
| 固定リンク | コメント (0) | トラックバック (0)
蛇足だけど…
もし、「while(1)」を「for」で実現すると…
「for(;1;)」で同じになるかなぁ~と
void main(void)
{
int a = 0;
for(;1;)
{
a++;
}
while(1)
{
a++;
}
}
をコンパイルしてみる…。
1: void main(void)
2: {
00401010 push ebp
00401011 mov ebp,esp
00401013 sub esp,44h
00401016 push ebx
00401017 push esi
00401018 push edi
00401019 lea edi,[ebp-44h]
0040101C mov ecx,11h
00401021 mov eax,0CCCCCCCCh
00401026 rep stos dword ptr [edi]
3: int a = 0;
00401028 mov dword ptr [ebp-4],0
4: for(;1;)
0040102F mov eax,1
00401034 test eax,eax
00401036 je main+33h (00401043)
5: {
6: a++;
00401038 mov ecx,dword ptr [ebp-4]
0040103B add ecx,1
0040103E mov dword ptr [ebp-4],ecx
7: }
00401041 jmp main+1Fh (0040102f)
8: while(1)
00401043 mov edx,1
00401048 test edx,edx
0040104A je main+47h (00401057)
9: {
10: a++;
0040104C mov eax,dword ptr [ebp-4]
0040104F add eax,1
00401052 mov dword ptr [ebp-4],eax
11: }
00401055 jmp main+33h (00401043)
12: }
00401057 pop edi
00401058 pop esi
00401059 pop ebx
0040105A mov esp,ebp
0040105C pop ebp
0040105D ret
結果同じになった…。
だからどうだと言う訳では無いのだが…。
なんとなく確認…。
| 固定リンク | コメント (0) | トラックバック (0)
無限ループで良く見かける方法で「for (;;) 」と「while(TRUE)」とかがある…。
で、隣の人のソースを覗くと…「while(TRUE)」が使われている…。
でも、なぜかマイクロソフトのソースでは、「for (;;) 」を良く見かける…。
二つには、違いが有るのかなぁ~?と以下のソースをコンパイルしてみる…。
void main( void )
{
int a = 0;
for(;;)
{
a++;
}
while(1)
{
a++;
}
}
コンパイラの結果…。
1: void main( void )
2: {
00401010 push ebp
00401011 mov ebp,esp
00401013 sub esp,44h
00401016 push ebx
00401017 push esi
00401018 push edi
00401019 lea edi,[ebp-44h]
0040101C mov ecx,11h
00401021 mov eax,0CCCCCCCCh
00401026 rep stos dword ptr [edi]
3: int a = 0;
00401028 mov dword ptr [ebp-4],0
4: for(;;)
5: {
6: a++;
0040102F mov eax,dword ptr [ebp-4]
00401032 add eax,1
00401035 mov dword ptr [ebp-4],eax
7: }
00401038 jmp main+1Fh (0040102f)
8: while(1)
0040103A mov ecx,1
0040103F test ecx,ecx
00401041 je main+3Eh (0040104e)
9: {
10: a++;
00401043 mov edx,dword ptr [ebp-4]
00401046 add edx,1
00401049 mov dword ptr [ebp-4],edx
11: }
0040104C jmp main+2Ah (0040103a)
12: }
0040104E pop edi
0040104F pop esi
00401050 pop ebx
00401051 mov esp,ebp
00401053 pop ebp
00401054 ret
結論!
「for (;;) 」だとノーチェックの無限ループに対し
「while(TRUE)」だと無駄無意味なチェックが入っていることが分かる。
以下の部分が「while(TRUE)」の意味無しコードだ。
0040103A mov ecx,1
0040103F test ecx,ecx
00401041 je main+3Eh (0040104e)
ちょっとの違いだが…無駄な処理は、無い方が良い…。
だって、ループする回数によってペナルティが増えていくんだもん…。
100回ループすれば、X100ペナルティ…。
10000回ならX10000…
と、言う事で、無限ループで「while(TRUE)」を使っているソースをみたら心の中で『クスクス』笑おう…。<性格悪!
ゆえに!「while(1)」と「for(;;)」は違うのだ!
えっへん!
…。
ふと、『最近のコンパイラは、頭が良い!』ともっぱらな噂だが…
リリース版でコンパイルすると…
もしかして結果が違うかも…
と言う事で…
恐る恐る確認…。
1: void main( void )
2: {
00401000 jmp main (00401000)
こんだけ…。
見事な…完璧な…無限ループ。
意味無しコードは、気持ちが良いぐらいスッパリと全て削除…。
侮りがたし、コンパイラ…。
試しに、以下のソースをコンパイルしてみた…
void main( void )
{
int a = 0;
for(;;)
{
a++;
if(a>1000)
break;
}
while(1)
{
a++;
if(a>100000)
break;
}
}
結果…
1: void main( void )
2: {
00401000 mov eax,3E9h
3: int a = 0;
4: for(;;)
5: {
6: a++;
7: if(a>1000)
8: break;
9: }
10: while(1)
11: {
12: a++;
00401005 inc eax
13: if(a>100000)
00401006 cmp eax,186A0h
0040100B jle main+5 (00401005)
14: break;
15: }
16: }
0040100D ret
恐るべし…最適化…。
何も言う事はありません…。
ゴメンナサイ、マイクロソフト様、私が悪うございました…。
この様に最近のコンパイラは、素晴らしいのです!
って、ヨイショする以外無いでしょう的な結果でした…。
タイトルと違うやん!(T_T)
| 固定リンク | コメント (0) | トラックバック (0)
とか思ったのは、早合点だった…。
任天堂オリジナルデザインの純金トランプ
三菱マテリアルが任天堂にトランプのデザインを依頼したようだ。
まあ任天堂は、元々花札やトランプ等のメーカーであるし…。
ちなみに三菱マテリアルは、
「三菱の金貨千両箱」
「阪神タイガース球団承認、2005セントラルリーグ優勝胴上げ純金カード」
「ゴールドカレンダー2006」
「三菱の純金鯱鉾(しゃちほこ)」
など…素晴らしい(奇抜な?)商品を開発・販売しています…。
だが!
三菱マテリアルは、分かっていない
なぜ!純金製NDSを作らせない!
任天堂の意味無いジャン…と思う…。
成金趣味バリバリで間違い無く来年一番のアイテムになるだろうにぃ~。
ずっしり重く携帯するだけで筋トレにもなるぞ!
まあ、ど~でも良いけど…。
だって金なんかに無縁のボケですから…。
| 固定リンク | コメント (0) | トラックバック (1)
「そんな物は、無いよ!」
と言われるに違いない…。
そりゃあ、バグが有ったらまずいよね…。
でも、結局取りきれず残ってしまうことがしばしば!
だとすれば、どんなバグが許されるか…?
東証システムの不具合が判明 大量誤発注取り消せず
「取り消」が機能しなくて400億ですよ…。
誤って入力したみずほ証券の発注者は、血が引く音を聞いたに違いない…。
無論取り消す方法を知っていたので
「数百万は、損害かぁ~。ボーナス無いだろうなぁ~。減棒幾だろうなぁ~。」
などと悲しい気分で取り消しを入力していたに違いない…。
で、エラーが返ってきた時、彼の頭の中では、天変地異が起きたに違いない…。
「そんなばかな!」
と思うと同時に秒針と共にカウントアップする脳内損害カウンター!
速攻で直接東京証券取引所に電話連絡し取引停止を依頼するが…。
東証に蹴られる!
担当者は、少なくとも10年寿命が縮み白髪になたのでは…?
何秒か心臓も止まったかもしれない…。
そしてこのニュースを見た富士通の担当SEは、茶碗を落とすのである…!
頭の中では、「あれってデバッグしたっけ?デッケー損害?」などがぐるぐる…。
「どうする俺!」
カードを見る
「減給・降格・クビ・メスメディア攻勢…」
あまり良いカードは無い…。
結局、許されるバグ・許されないバグの基準は、被害の規模だろう…と思う…。
システム障害引責で東証社長が辞任
進退は、考えていないとか言っていたけど結局辞任に…。
他にも専務・常務も辞任…。
当然当事者(システム関係者)も…クビ…でしょう。(と思う…。)
社長を辞任させたのだから…バグも本望だろう…かもしれん…。
そう言ったプログラマーは、大変だなぁ…。
でも、金も一杯貰っているんだろうなぁ~。
俺は、あんまり貰ってないけど…
ウン億の損害をもたらすバグも無いもん…。えっへん!(笑)
などど、漠然と思うボケでした。
| 固定リンク | コメント (0) | トラックバック (0)
ニフティのココログフォームの中に有ったので試しに変えてみた…。
無料だし…まあ、いいか…ぐらいの感覚で…変えました…。
…いや!変えたであります!(ちょっとなりきり…。)
そうしたらさ~、いきなり
「ケロロニュース!!」が付いてさ~
イベント情報&ケロロ軍曹公式サイトに
リンクしちゃってこりゃ便利!?
「ケロロ軍曹ラブ!リング」がさりげなく付いていてびっくり!
しかも「★アミーゴ★」なんて有って
もしかして…見てみたら
やっぱり「野ブタ。をプロデュース」の
「青春アミーゴ」だし…。
「めだかの日々」は、鹿児島の積雪の様子を
ムービーにしているし…。
その他の「ケロロ軍曹ラブ!リング」も徒然のままに
眺めてみよう…
と思うのであります!
| 固定リンク | コメント (2) | トラックバック (0)
初代よりワースト記録を更新したのは、びっくり!
取り合えず、いちゲームユーザー(ライト)から言わせてもらえれば…
マイクロソフトは、今回もマーケティングを失敗した!
と思った…。(小声)
PS2とXBOXが、ほぼ同時に発売されたときには…
安いDVDプレイヤーとしてPS2を買った!
ゲームは、おまけ…。(なにせライトですから…。)
XBOXは、ダサくて邪魔でDVD再生も出来なくゲームの種類も無い…
PS2に対してのアドバンテージが何も無い!
のでやめた。
もし、XBOXがDVDが再生できPS2より小く安ければ間違い無く買った!
のに…。
商機を逃しましたよマイクロソフトさん…。
逆にPS2は、DVDプレーヤーで間違い無く販売に弾みが付いたと思う。
さらにPS2のDVDプレイヤーは、色々な所に波及した…。
映画をDVDで買うようになったし…。
ツタヤのレンタルでDVDが増えたし…。
PS2の功績は、間違い無くDVDの普及ですね…。
て、ゲームは…?
XBOXの功績は、PS2を安くしたこと!
だよね!?
| 固定リンク | コメント (0) | トラックバック (0)
最近ネット上の書き込みで社会的制裁を受ける事件が発生している…。
「冗談でやった」――Wikipediaへの偽投稿で謝罪
このほかにも
エイベックス殺害予告、別の殺害予告の容疑者が関与か
「オタ」「きもい」──スタッフのブログ発言、企業を巻き込む騒動に
仲間内なら冗談で済んだかもしれない…。
まあ、仲間内なら大抵の事は冗談で済む…。
でも、第三者が見たら?
というか、第三者が見れるような所にお茶目な事を書くなと言う事…。
特に良く参照される「Wikipedia」や「2ちゃんねる」に書くのは、洒落でしたでは済まない…。
まあ、書いてある事を読むと誹謗中傷ですねぇ…。
殺害予告に至っては…脅迫ですよぉ…。
ここだってググれるから変な事書くとヤバイと思うので気を使っているのですよ!
ホント…。(汗
これも、インターネットが子供からお年寄りまで手軽に使えるインフラになったからと言えるでしょう!
ゆえに「あなたは、登録されました!8万円振り込みなさい!」とブラウザに出ると焦る人が多いのだろう…。
素人から「どうしよう…。」と相談を受けた…。
「無視しなさい!」とは言っておいたが…
自分では、当てた事無いのに何で素人が当てる?
毎晩ネットサーフィンしているのに…
まだまだ修行が足りなのだと痛感…。(笑
| 固定リンク | コメント (0) | トラックバック (0)
人に教える事は、とても難しい…。
ボケには、無理なので誰かに依頼したいものだ…。
教えるときの心がけ
こんな事を書ける人なら教えられるのかもしれない…。
実際プログラマーの知識や技術は、結構偏ったりする…。
取り合えず「プログラミング言語C ANSI規格準拠」を読もう…。
「なんか関数の呼び出しが変だよ…。引数が合わないよ…。」
とか言われて良く聞くとデフォルト引数を知らなかったとか…。
…とは言え自分も五十歩百歩…。
と言う訳でたまに読み返しますが…。
その時には、使い方が思い付かなかったものも
今読めば使い方が思いつく場合もあるし…。
またVC++のサンプルやダイレクトXのサンプルを
分解すると色々なノウハウを発見できるので
勉強の教材として適当かと…。
…勉強方法は、ともかく…。
知識や技術の是正するために…
一生懸命マニュアルなんぞ書いたときも有った…。
そんな偏りを是正する効果的な方法は、あるのかなぁ…
とか考えていたところにエクストリームプログラミングの記事を読んで衝撃を受けた。
(この当たり…ボケプログラマーさが出ているでしょうぅ…。)
プログラム品質・プロジェクト品質を安定させる手法…
本当にこんなこと出来るのか?とか…。
Xp-jp
特にペアプログラミングは、凄いやり方だ…。
分担するので無く文字通り一つのプログラムをペア(二人)で作成する…。
いろいろな意味で困難な問題山積だが…
実行することで得られることも多いと思われる…。
一人だと気が付かなくても、もう一人が気が付く可能性は高い。
例えば、銀行で金勘定は二人で行うそうだ。
大抵二人で作業を行うと作業を分担しがちだ…
だがそれでは、一人でやっているのと変わらない…。
最近、金融でコンピュータートラブルが伝えられるが
これもペアプログラミングで間違い・勘違いやミスを
減らせられると思われる。
でも、やっぱり実行するのは、難しいだろうな…。
少なくとも自分の所では…。
でもたまには、同僚の後ろでジット眺めてみるか…
てっ嫌がらせか?
| 固定リンク | コメント (0) | トラックバック (1)
失敗した…。
ONとOFFを繰りかえすフラグの
処理としてこんなのを作ったが…。
BOOL Flag = FALSE;
void FlagChange( void )
{
Flag ^= TRUE;
}
基本的にこれでOKなのだが…
今回、たまたま
Flag = -1;
など、入れた奴がいたので
上記の処理が機能しなくなってしまった…。
多分よりベターな方法は
これだ!…と思う…。
void FlagChange( void )
{
Flag = !Flag;
}
しかし!
Flag = -1;
をやった奴は、もちろんバグなので
潰しておかなくてはならない!
念のためセーフティをつけるのなら
こんな感じ?
void FlagChange( void )
{
#ifdef _DEBUG
if( ( unsigned )Flag > TRUE )
MessageBox( GetActiveWindow( ), "FLAG VALUE ERROR!", "ERROR", MB_OK );
#endif
Flag = !Flag;
}
「BOOL」は、結局「int」なので
「unsigned」キャストで負の数を無くしておいて
チェックすると
if( ( Flag < 0 ) || ( 1 < Flag ) )
と書かなくて済むし、比較も一回で済むし…。
ちょっと幸せになれるかも…。
| 固定リンク | コメント (0) | トラックバック (0)
最近のコメント