プログラミングの作業に何の価値も見出せなくなってしまった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タグのついている部分のコンテンツの引用はご遠慮願います。ご協力よろしくお願いします。


 | 

2005-12-31 コンフィグファイルは皆さんどうやっていますか?part2

[][][][]Lua話 + 化物というか・・・ライバル!!! Lua話 + 化物というか・・・ライバル!!!を含むブックマーク Lua話 + 化物というか・・・ライバル!!!のブックマークコメント

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

ちっす!大晦日です!d金魚です!!年越しそばgoogle:どん兵衛で済ませてますか〜!!

でも書いているの12月30日です。おrz!!!


Mistyさん、前回は詳細なコメントありがとうございました。

では、早速MistyさんのLuaの素晴らしさを語っていただくと共に返信いたしましょう!




>もろこしヘッドの Misty です。Lua の素晴らしさを伝えるべく、toge 氏の日記より飛んでまいりました。笑

あざっすo(*^▽^*)o

>汎用ファイルフォーマットとしての Lua はとても便利です。

>現在開発中の MistEngine ver.0.45 では、シェーダ (GLSL)や、メッシュ (テクスチャを除く、頂点や法線に頂点インデックスなど) も全て Lua スクリプトとして書かれています。

なるほど、Luaはやっぱりかなり柔軟なんですね(といいますか、プログラム言語でスモンね・・・)BulletMLLuaで拡張されていましたし(google:LuaBullet

それから思い出したことですか、google:Ogre3Dのそのような定義は独自の定義形式だった覚えがあります。(http://www.ogre3d.org/docs/manual/manual_14.html#SEC23)

>Luaスクリプト言語なので、当然演算子も定義されてますね。

>なので、(簡単な例ですが) こんなことも出来ます。

  window = {
    width = 800, 
    height = width * 3 / 4
  }

>width に値を代入すれば、自動的に 4 : 3 の比率で height を設定してくれます (この場合は 600 ですね)。

>うーん、色々と想像が膨らみますね。笑

ですね。Luaってソフトウェアを外部からイジるタイプに特化した?スクリプト言語ですからこの手の開発をしているプログラマにとっては憧れみたいなものがこめられていると思います。

http://d.hatena.ne.jp/ryoko_komachi/20000301より RYOKO氏も「プログラムから、外部のスクリプトを制御するのって憧れるんですよね」との事を前この記事で見てこれ超→分かる!と思ってました。特にソースコード内に#defien定義がconst int値があふれ再コンパイルするのがめんどくさくてたまらなかった経験があったものですから^^;

>> APIが解釈してC言語変数として代入してくれる

>自動的に代入されるわけではありませんが、Lua 変数get/set が可能なので問題無いですよ。

>> LuaAPIはスタックを意識してガシガシ組まなくてはいけない

>えぇ。それはもうバリバリに。爽

>C と Lua を結ぶデータのやりとりには必ずスタックが絡んできます。イメージとしてはこんな感じです。

 C <=> Stack <=> Lua

>慣れれば問題無いのですが、やはり面倒くさいです。

>そういうときは Luapper (るあっぱー) を使いましょう。

>→ http://d.hatena.ne.jp/toge/comment?date=20051218#c (toge氏の記事のコメントに書いてしまいました)

>ソースコードURL もここに張っておきました。BSDライセンスで公開します。

ソースコードの公開に感謝します。( ・・)( -.-)( _ _)

http://mistyrain1st.nobody.jp/luapper.h

http://mistyrain1st.nobody.jp/luapper.cpp

分かりやすい良いソースコードですね。

あ、ちなみに私はgoogle:GameCatapult(google:gctp)に入っていたgoogle:luna.hppというのに目を付けていました。

LuaのSJISパッチの製作者さん(http://www.water.sannet.ne.jp/sowwa/)なんでもしかしたらご存知かもしれません。*1

詳しくは見ていませんが、どうなんでしょう?来年にでも比較しますね。

>では軽く宣伝したところで次へ。


>> LuaAPIのライブラリライブラリサイズが重い!?

>私が現在使っている Win32用 lua.lib は 138KB、lualib.lib は 98KB です。あ、ちなみに Luaバージョンは 5.02 です。

>ダイナミックリンクしているので実行ファイルは小さく済んでます。

なるほど、結構小さいですね。Luaをダウンして軽くコンパイルしただけでまだ使っていなくてしったかぶっててスンマセンデス。


>>P.S. 私もd金魚氏と同じく学生で、現在高校1年生です。負けてられませんな!

いや、負けておれませんな・・・というより、私が既に負けてしまっていますから・・・おrz!!!




と、言うこと結論

それから、d金魚Misty氏に負けている!!!(笑)

高校一年生の時は酷い物ばら撒いていましたよ。(未だにとあるサイトでダウンできたりする・・・失言・・・)

いや、shinichiro.h氏もhttp://shinh.skr.jp/m/?date=20051225#p05にて化物と例えていますが、全く持ってそのとおり。

もう、氏のサイト http://rainer.blog7.fc2.com/ を見ればオーラ発せられてます。

すごいっすよ、いや、マジで!!怪物君ですよ。高校生1年で鬼ですよ。

その頃なんてもう、私はもう「何でだろうの教えて君」だったのですから・・・。ライブラリ製作技術なんて皆無でまともになり始めたのが2年くらい前なんですから・・・。

なんか、もう・・・こういう感じでしか表現できないけど・・・

ライブラリ製作に逃げている時点で負けかなと思っている。(爆)*2

てか、高校一年生のMisty氏・・・。来年のProCon2006*3であたるかもしれない(いや、トーナメントとかじゃないけどさ。)

私は来年のプロコンが最後のチャンスなので(年もろばれ)今までのPC人生かけるつもりだ。

是非Misty氏も来年プロコンに作品を出品してみては!と薦めてみたり^^

と、いいますか、絶対!出てください〜!!!!!!!!!!!!!!!!!!!(熱奨!半ば強引!?)

来年のプロコンはレベルが高いぞ〜ヽ(゜▽゜*)乂(*゜▽゜)ノ バンザーイ♪(私が低くしたりして・・・笑)

あわよくば表彰式で是非会いたい〜〜!!!!とLove call してみたり・・・(やりすぎ・・・)

*1:ちなみにこの方もLuaラッパーを製作されております。

*2:なんかこういう文体いろんなサイトで見るんですよ。流行ですね^^調べてみたら元ネタ発見google:負けかなと思っている

*32006年度 U20プログラミングコンテスト

MistyMisty 2006/01/03 17:42 (あれあれ、なんだかリスペクトされてる?笑)

私自身の中で、高校生活の3年間をかけて1つのブツを作るという計画がありまして。もし来年の U-20 プログラミングコンテストに出品するとしても間に合うかどうかが心配です。焦

今はその準備段階ということで Mist Engine を制作しています。今年中には完成しそうですが、エンジンだけ完成してもコンテストには出せないですよね (苦笑)

何にせよ、d金魚氏は今年が最後のチャンスということで是非頑張ってください!

studiokingyostudiokingyo 2006/01/14 01:28 こんにちは。なるほど。1つのブツですか。いろいろなサイトを回ってますが学生プログラマ諸氏は最近レベルが上がってきている気がします。なのですごい!って感じでした。
なるほど、ブログでも拝見しましたがけっこう出来上がってきているみたいですね。完成したら見てみたいです^^
>エンジンだけ完成してもコンテストには出せないですよね (苦笑)
エンジンだけでも出してみるのもチャレンジャーかもしれない!?
(私もやばい時はライブラリのみを出品したりして(笑))
うぃ!コメントありがとうございます!最後のチャンス生かします!では^^

2005-12-30 最速のSwap方法かも!? part2

[][][][]学生プログラマの為の最速swapping入門 学生プログラマの為の最速swapping入門を含むブックマーク 学生プログラマの為の最速swapping入門のブックマークコメント

前回の記事 http://d.hatena.ne.jp/studiokingyo/20040322 もう一年上前か・・・ 

あの時は私はアセンブラを覚えていなかった。

それでもあのスワップ方法は早いと思っていた。

しかし、それを揺るがす記事を目撃してしまった。

http://d.hatena.ne.jp/Will_NET/20051228

である。

なる・・・、最近のハイエンドCPUでは・・・そうなんですか?

いや、ハイエンドかどうか分からないけど2532MHzはハイエンドですよね!?ですよね!!?(それとも1000MHzでハイエンドだと思っている私は時代に遅れているのかしら?)

とにかく、レポートをどうぞ。


どんな風にSWAP処理するか!それが課題だ!


続きを読む

[][]待ったまってくれ!!!私が間違っていた。 待ったまってくれ!!!私が間違っていた。を含むブックマーク 待ったまってくれ!!!私が間違っていた。のブックマークコメント

&a==&bを考慮していなかった・・・おrz!!!

それを考慮しなかったらSWAP_NUM()はC言語最速かもしれないけどね・・・。

やっぱり、safeかつ最速を目指すならばSWAP_FAST32()らしいですよ。旦那。(すなわちPODswapさせるにはinline assemblerが最高って事ね。)

つことで「どんな風にswappingするか!それが課題だ!」を更新いたしました。

最終結論

C++によるGenericなswap

続きを読む

aa 2005/12/29 09:20 ちなみにa^=b^=a^=bは1つの式の中に同じ変数に対して副作用が何回も出てくるので
C/C++の規格からしてみればこの式を行ってどうなるかは未定義となっていますよ。

studiokingyostudiokingyo 2005/12/30 16:09 なるほど。未定義だったんですか・・・、コメント有難うございます。

bb 2006/02/18 13:47 規格は日本語でも見るだけならできます。
http://www.jisc.go.jp/
ここから「JIS検索」→規格番号にX3010或いはX3014を入力して一覧表示を押すと該当するPDFを見れます。(X3010がC99、X3014がC++です)
ごにょごにょするとローカルにも保存できて……。

トラックバック - http://d.hatena.ne.jp/studiokingyo/20051230

2005-12-29 MD5 Optimized in ... part6

[][][][]MD5 Optimized in MMX part9 speed test MD5 Optimized in MMX part9 speed testを含むブックマーク MD5 Optimized in MMX part9 speed testのブックマークコメント

前回の続き:(http://d.hatena.ne.jp/studiokingyo/20051228

さて、前回残酷なまでの現実を突きつけられ打ちひしがれていた(わたくし)ですが、さらに現実を見せようじゃありませんか!はい。

どうぞ!

続きを読む

トラックバック - http://d.hatena.ne.jp/studiokingyo/20051229

2005-12-28 MD5 Optimized in ... part5

[][][][]MD5 Optimized in MMX part8 complate!!! but... MD5 Optimized in MMX part8 complate!!! but...を含むブックマーク MD5 Optimized in MMX part8 complate!!! but...のブックマークコメント

前回の続き:(http://d.hatena.ne.jp/studiokingyo/20051225

やったぞ!ついに完成した!MMXを使うための良い練習になった。

もっとがんばれば細かいところを最適化できるかもしれない。


この場を借りましてこのソースコードの製作に関することでアドバイスをしてくださった

hoshu氏*1 id:togeid:bake_3572氏に心より感謝申し上げます。

続きを読む

bake_3572bake_3572 2005/12/28 09:56 MD5の値を更新する度に。emms命令使っていませんか?
emms命令は、使ったMMXレジスタを全てFPUレジスタ用にリフレッシュするのでPentiumMMXで最大50clock程消費する重い命令です。
どうでしょう?

studiokingyostudiokingyo 2005/12/28 14:17 試しにemmsを削除してみましたが、どうもダメなようです。
計算対象のデータが大きくなるにつれて遅くなるようです。
MD5 Optimized in MMX part9にレポートします。

トラックバック - http://d.hatena.ne.jp/studiokingyo/20051228

2005-12-27 ニ分木はどのように組みますか?

[][][]ニ分木はどのように組みますか? ニ分木はどのように組みますか?を含むブックマーク ニ分木はどのように組みますか?のブックマークコメント

http://d.hatena.ne.jp/bake_3572/20051216/p1

より。

木についての話題があった。いわいるiteration処理をどうするかについてであった。

http://d.hatena.ne.jp/tailliar/20051216#p1

にてその改善方法が語られていた。

なるほど。

私も木の処理には悩んだたちです。

ちなみにgoogle:dkutil_cのなるたけ最新版に入っているdkc2Tree.cという奴です。

確か、バグを出さないために一部で面倒事を避けるために再帰処理を使っていますが、個人的に再帰処理は嫌いなのです。*1

なぜなら・・・STACK OVERFLOWが怖いからです。

まぁ、滅多な事ではならないんですが、絶対にエラーのない安全なプログラムを美徳とする私は非再帰の方が好きなんです。

なのでmallocして取得した擬似スタックを使ったりしてiteration処理するのですが、これでもやっぱり木が深くなるほどメモリを使います。

なので、なるたけ深くならないような木が欲しい訳なのですよ。普通のニ分木の場合は最悪線型リストと同じ構造になってしまいますし・・・。

で、ムカーし昔?(いつごろだっけ?ワスレタ)に目を付けたのがAVL木でした。

AVL木とは?

すべての節において、左部分木と右部分木の高さの差が1以内に収まらなければならない。

アルゴリズム論1 平衡木

とあります。なーる。

続く・・・。

*1:なので書き直したいです。

トラックバック - http://d.hatena.ne.jp/studiokingyo/20051227

2005-12-26 2005年度 dKingyo Utility Toolkit Project の まとめ

[][][][][]2005年度 dKingyo Utility Toolkit Project の まとめ 2005年度 dKingyo Utility Toolkit Project の まとめを含むブックマーク 2005年度 dKingyo Utility Toolkit Project の まとめのブックマークコメント

最近のワタシの活動に対する反響を調べてみた。

ちょっと思ったのだが私の活動に対する知名度ってどうなのだろうか?

ぶっちゃけgoogle:dKingyo Utility Toolkitの成果物を使ってなにかしらのプログラムや作品や自分用ユーティリティや小物やプロジェクトに利用した方っていらっしゃるのでしょうか?

私が知る限り数えるほどしかいなかった覚えがあるので・・・。

コメントトラックバックくださるとうれしいっす!!m(>_<)m

トラックバック - http://d.hatena.ne.jp/studiokingyo/20051226

2005-12-25 MD5 Optimized in ... part4

[][][]MD5 Optimized in MMX part6 MD5 Optimized in MMX part6を含むブックマーク MD5 Optimized in MMX part6のブックマークコメント

前回の続き:(http://d.hatena.ne.jp/studiokingyo/20051224

はい!早速バグ発見。アホですね。ワタシ・・・あはははは・・・。。。 おrz!!!!

#define MD5_VC_MMX_F1(d,x,y,z)\
  _asm pxor y,z\
  _asm pand x,y\
  _asm pxor z,x\
  _asm movq d,z

早速アップデートしてはいけないyをpxorでアップデートしています。はい。

そうなんです。

この際ですからアップデートしちゃう場合は作業用mmxレジスタ(各自が決める)に一回代入してから処理するのが鉄則のようです。はい。分かりやすいようにBタグで囲んで強調しますね。

レジスタ内容をアップデートしてしまう処理は一回作業用レジスタに入れてから処理する!

そうです。そのとおりです。(よね!?)

はい。アセンブラもうダメです。いや大丈夫でふ。ふふふ。

ちょっと乙に入っているので後々追記します。あざっす!o(*^▽^*)o


[][]__asm{}内でのアセンブラの#define定義に注意 __asm{}内でのアセンブラの#define定義に注意を含むブックマーク __asm{}内でのアセンブラの#define定義に注意のブックマークコメント

__asm{
#define COPY(a,s) \
 mov a,s
 mov eax,s\
 mov ebx,s

 COPY(ecx,10)
}

このように\が抜けているとバグルので注意!(上記の例は厳密には当てはまらないかもしれないが・・・)

[][][]MD5でのrotate部 MD5でのrotate部を含むブックマーク MD5でのrotate部のブックマークコメント

#define MD5_VC_MMX_ROTATE(d,w,s)\
	_asm movq	d,w\
	_asm psllq d,s\
	_asm psrlq w,32-s\
	_asm por		d,w

#define MD5_VC_MMX_ROTATE2(d,a,s)\
	_asm movq d,a\
	_asm pslld d,s\
	_asm psrld a,32-s\
	_asm por d,a

どちらとも同じ処理結果なのだが・・・ウーム。自爆!!!*1

[][]MD5 Optimized in MMX part7 MD5 Optimized in MMX part7を含むブックマーク MD5 Optimized in MMX part7のブックマークコメント

以下のような感じのマクロでワタシのMD5テストには合格した。よって示しておこうと思う。

続きを読む

トラックバック - http://d.hatena.ne.jp/studiokingyo/20051225

2005-12-24 MD5 Optimized in ... part3

[][]MD5 Optimized in MMX part5 MD5 Optimized in MMX part5を含むブックマーク MD5 Optimized in MMX part5のブックマークコメント

前回の続き:(http://d.hatena.ne.jp/studiokingyo/20051216

MD5のMMX用のマクロは以下ので間違いないはずなんですが・・・(テストをしましたが多分どこか間違っている。)

どうも、マクロなためデバッガで追いにくいのでバグがチマチマと発生しているようです。

続きを読む

トラックバック - http://d.hatena.ne.jp/studiokingyo/20051224

2005-12-23 MASM vs NASM vs inline aseembler part1

[][][][][]アセンブラではC言語配列の参照できない!? アセンブラではC言語の配列の参照できない!?を含むブックマーク アセンブラではC言語の配列の参照できない!?のブックマークコメント

http://www.nk.rim.or.jp/~jun/lxasm/asm02.html

より。

例えば次の例ではラベルの宣言が異なりますが,

    foo   equ  1
    bar   dw   2
          mov  ax, foo
          mov  ax, bar
この場合は ax には定数値が代入され,

          move ax, [foo]
          move ax, [bar]
この例では,ax には メモリの内容が代入されます. 
....

なーる。だから、いつも私のほしかった値とは違った値が代入されていたわけか。なーる。おrz

あれれ?でもVCでのインラインアセンブラの場合はcount[0]のようにしてもレジスタに代入できるんですけど・・・ウーン。なーる。

あれれ?

あ!なーる。MASM形式でだとこうなるわけか。インラインアセンブラとは違うのか。アナルホド。

まぁ、いいや、支離滅裂意味不明御免。

いや、ちょっとまて、

	_asm	movq mm0,abcd[0]
	_asm	movq mm1,abcd[1]
	_asm	movq mm2,abcd[2]
	_asm	movq mm3,abcd[3]

とするとmm1以降がすべて違う値が代入されるのだが・・・(ワタシのデバッガの場合・・・)

何でだろぉ〜なんでだろぉ〜 おrz!!!!

やっぱりアドレッシングがなんとやらになるのかな?。。。アセンブラよく分からないなり!ムキィ!


解決:やっぱりワタシのあたむぁが残念なだけでした。

uint64 tinpo[16];

という配列があったとして

この配列

tinpo[3];を参照したい時は

_asm movq mm4,tinpo[3]

とやっては上手く参照できない。

なので、

uint64 *ptinpo = tinpo;
_asm{
 mov		esi,ptinpo
 movq mm4,[esi+3*8]
}

のように参照する。以上也!

[][]inline assembler is not a macroassembler. inline assembler is not a macroassembler. を含むブックマーク inline assembler is not a macroassembler. のブックマークコメント

http://www.microsoft.com/japan/developer/library/vccore/_core_masm_macro_directives_in_inline_assembly.htm

(ノ_<。)うっうっうっ

インラインアセンブラでもデバッガで追えるマクロ機能がほしいよぉ!

トラックバック - http://d.hatena.ne.jp/studiokingyo/20051223

2005-12-22 GLIBとSTLを比較

[][]GLIBとSTLを比較 GLIBとSTLを比較を含むブックマーク GLIBとSTLを比較のブックマークコメント

google:GLIB STL 比較というキーワードで引っかかっていたので私なりの独断的で先入観バリバリな答えを示そうと思う。

GLIBはC言語のみの環境では非常に有用だ。基本的にDLLとしてリンクすればLGPLライセンスの再配布やソースコード公開の義務から自分のソフトが開放される。(static linkは昔、指摘されたのだが実は今でも良く分からない。)

inline展開できないのでC++も使える環境だと遅い。

上手くinline展開するようにソースコードを改造すればSTLっぽいのになるかもしれない。

STLは使用の仕方によってはバイナリサイズが大きくなる。例えばchar short int およびunsigned付き のvectorを用意したとすると方の要素を増やした分バイナリサイズが大きくなるそうだ。*1

でも大体inline展開されるしそれほど遅いと感じることも無いし個人的にはSTLが好きだ。

google:STLPORTを使ってほしい。 私お気に入りのSTLだ。STLが好きになったら今度はboostに手を出してみてほしい。VC6では泣いてしまうようなライブラリ設計になってきているのだがこれが無いと私はプログラミングできない病になり始めている。

ちなみにModern C++ Designで有名なLokiには手を出さないほうが良いと思う。昔苦戦した思い出がある。しかしgoogle:AssocVectorは好きだ。*2

どちら様かがGLIBとSTLを簡単に比較していたサイトがあったような気がするがもう思い出せない。御免。


追記:2005/12/28

std::vector vs glib garrayの比較を行っています。http://chasen.org/~taku/blog/archives/2001/05/stl_vs_glib.html

まぁ、なんというか、予想通りglib遅いです。多分、inline展開されていないからだと思ったりします。昔、VCでビルドできるglibをダウンロードできるようにしていたのですが、最近、そのHPスペースを消されちゃいまして・・・ (ToT)>゛すまんこってす。

それからglibのtree系アルゴリズム?はAVL木で実装されているらしい。STLPortはRed Black treeである。よってgoogle:AVL vs RED BLACKとかgoogle:AVL RED BLACK treeとかで検索するのも速度比較を知るために良いのではないかと感じる。


追記:2005/12/26

はい!簡単に結論!

  • GLIBはC言語のみでコーディングする時に使うべし!
  • STLC++でのコーディングの大黒柱!

以上!解釈は各自に任せる!あざっす!o(*^▽^*)o

トラックバック - http://d.hatena.ne.jp/studiokingyo/20051222

2005-12-21 いきなりですがdKingyoUtility3を投下しました。

[][][]dKingyoUtility3 1.0.0.0をリリースしました。 dKingyoUtility3 1.0.0.0をリリースしました。を含むブックマーク dKingyoUtility3 1.0.0.0をリリースしました。のブックマークコメント

http://sourceforge.jp/projects/dkingyoutility/

にてダウンロードできます。

使用方法などリファレンスマニュアルは今のところありませんが、ただ、なんとなく・・・したかったので・・・。いいよね^^;

トラックバック - http://d.hatena.ne.jp/studiokingyo/20051221

2005-12-20 奇妙な食べ合わせ part1

[][]カレークリームソーダ カレー+クリームソーダを含むブックマーク カレー+クリームソーダのブックマークコメント

カレーを食べた後にクリームソーダを飲むとワキガ気味の…*1舐めたような味が残る。

実際それがわかる人はコメントに書くこと!(苦笑)

それから奇妙な食べ合わせネタ無差別バトン化します!我こそは!という方はトラックバック送って頂戴!

*1:どこを?と聞くのは野暮である(--)

トラックバック - http://d.hatena.ne.jp/studiokingyo/20051220

2005-12-19 ファイル収集ソフトウェアの為の定義ファイルを提案

[][][]ファイル収集ソフトウェアの為のXMLによる定義ファイルを提案 ファイル収集ソフトウェアの為のXMLによる定義ファイルを提案を含むブックマーク ファイル収集ソフトウェアの為のXMLによる定義ファイルを提案のブックマークコメント

昔々、XMLによるシグネチャ定義の提案をしたことがあった*1が、今度はファイル収集に関するXML定義を考えてみようと思う。


#defineマクロみたいに定義するには以下の構文
<def name="定義名" value="定義値"></def>

ファイル検索定義
<file_search uri="URLとかfile://とかftp://とか?"
 timeout="どのくらいでさじを投げるか"
 その他拡張してもろもろ>
<file name="ファイル名前 ワイルドカードOK"
 size="ファイルのサイズ 無くてもOK"
 その他もろもろelements>
 <md5 value="MD5値等 無くてもOK"></md5>
 以下shaやripemd値もOK...
  そのたファイルの内容に関する定義
</file>
</file_search>


なーる。XMLって簡単に定義系の物が作れますな。

しかもelementsを拡張してもソフトウェアではただ読み取ってくれないって事だから、とりあえず、がんばろうとすれば下位互換は保たれると・・・なーる。

いつか作りたいなぁ〜。これをProCon2006ネタにしようかな?

[]確かにカプセル化面倒です(>_<) 確かにカプセル化面倒です(>_<)を含むブックマーク 確かにカプセル化面倒です(>_<)のブックマークコメント

http://d.hatena.ne.jp/kenmo/20051218#p1

にてカプセル化について語られてます。

私はライブラリ組んでいるのでカプセル化は往々にして行っているのだが・・・

確かに面倒。

で、ちょっと思い出したことはWTL7.1のクラスってほとんどがpublic:なんだよね。(これを言いたかっただけ・・・)

中身の変数もらいまくりなんですよ!CFileDialogとか中身の変数アクセスしてダイアログの処理結果をもらうんですよ。MSライブラリがそんな有様だったとは分からなかった。やっぱり個人的なコーディングスマートさから考えるとFOXの方が良かった気がする。

*1http://d.hatena.ne.jp/studiokingyo/20050120#p1http://d.hatena.ne.jp/studiokingyo/20041214#p1等 実際これはダメでもう少ししたら自分で考えたとある規格に沿ったソフトをなるものをアップする

トラックバック - http://d.hatena.ne.jp/studiokingyo/20051219

2005-12-18 コンフィグファイルは皆さんどうやっていますか?

[][][][][]config fileは皆さんどうやっていますか? config fileは皆さんどうやっていますか?を含むブックマーク config fileは皆さんどうやっていますか?のブックマークコメント

前回(http://d.hatena.ne.jp/studiokingyo/20051217#p1)、mcppというツールを紹介していただいたid:toge氏のはてなに訪問。

http://d.hatena.ne.jp/toge/20051218#1134905287

にてコンフィグファイルはどうするかについて少しふれられていた。


今まで、私はコンフィグファイルはどうしようかと悩んでいた。

ぶっちゃけGUI作ってそのデータをバイナリ出力でいいじゃん!?って昔は思っていた。

確かにUserから見ればその方が楽かもしれないのですが・・・いちいちGUI作るの面倒ですし。Developer側からしたら…うんうん。

テキストエディタ編集できれば十分ですよね。みたいな^^

私が知る限り便利なコンフィグファイル形式は

  • ini
  • XML(いろんな書き方があるけど)
  • その他独自形式

くらいしかなかった。

そんでもってコンフィグファイル伝統的なiniを2-3年前から少し愛用していたりもした。

しかしながらWin32APIで提供されるiniファイル入力関数google:GetPrivateProfileSectionWindows95ではセクションのサイズは32KBを超えてはいけません。との事なのだ。(google:GetPrivateProfileStringで一つづつ読み出していけばいいのかもしれないが・・・)なのでこれはOS Independentではないので嫌だと思い、boost::spiritでparserを作った時期があった。様々なサイトを参考にし、完成したのだが未だに使っていない(笑)

今度アップする(いったいいつになるのやら・・・)google:dkutilにはそのパーサーが組み込まれるはずだ。


また、XMLもいい感じだと思う。parserを作るのが面倒だったので未だに利用してはいなかったのだが・・・

今はexpatをラップしてXML読み込みコンテナを作っていてそれが最近出来上がったところだ。

あとは全部の要素を巡回できるiteratorを実装して終わりといった感じだ。


さて、これが最近のdKingyo Utility Toolkit(以下DKUT)成果物状況だが・・・

このLuaの記述もナカナカ簡潔な記述でイイのである。

http://rainer.blog7.fc2.com/#374

にてLuaでのコンフィグファイルの作成が魅力的に感じられた。

以下に私が感じた長所短所を並べておく。

長所

  • Lua予約語が結構定義してあってそれをAPIが解釈してC言語変数として代入してくれるはず?(実はまだLuaをいじり倒していない)だったと思ったので
  • INIファイルの解析処理(何byte整数、実数かまたは文字列か・・・)のような奇怪な処理を組まなくて良い。
  • LuaAPIはMIT/X Licenceなのでライセンス的にもすごく緩いので商用利用やその他GPLのような問題なし。

短所

  • でも一つ一つ読み込むのにLuaAPIをスタックを意識してガシガシ組まなくてはいけないらしい。(?)
  • LuaAPIのライブラリライブラリサイズが重い!?かなぁ?いや、富豪的に言うならありでしょ。STLPortを使っているくらいですもの。

だが、私の組んだiniやXMLの読み込みコンテナやLuaによるコンフィグファイル変数からの読み込みはコンフィグファイルに記述されている要素をマップして簡単に入出力する機構(serialize deserializeする奴)としては弱いと感じた。


一つ一つの変数コンフィグファイルに記述されている要素をmapして変数の型やデータ形式に合わない場合はthrowしてくれるようなライブラリがあればなぁと思ったりする。


うーん。今後の課題!?いや、作っても誰も使ってくれなさそうな気もなかったりあったり・・・支離滅裂御粗末御免。

[][][][]config file == text file == character code problem config file == text file == character code problemを含むブックマーク config file == text file == character code problemのブックマークコメント

そういえばコンフィグファイル系等のテキスト処理の場合文字コード問題もありましたね。これ系のライブラリもあるので特集しなきゃなァ〜(前やった覚えがあったけど・・・ http://d.hatena.ne.jp/studiokingyo/20040719#p5)実はakaxiso2やicuやGreenPadを覗くといいソースがあったりする。皆さん ライセンスに従ってオマージュしましょう /(>_<)/キャー

続く!?

MistyMisty 2005/12/22 23:15 もろこしヘッドの Misty です。Lua の素晴らしさを伝えるべく、toge 氏の日記より飛んでまいりました。笑

汎用ファイルフォーマットとしての Lua はとても便利です。
現在開発中の MistEngine ver.0.45 では、シェーダ (GLSL)や、メッシュ (テクスチャを除く、頂点や法線に頂点インデックスなど) も全て Lua スクリプトとして書かれています。

Lua はスクリプト言語なので、当然演算子も定義されてますね。
なので、(簡単な例ですが) こんなことも出来ます。

  window = {
    width = 800,
    height = width * 3 / 4
  }

width に値を代入すれば、自動的に 4 : 3 の比率で height を設定してくれます (この場合は 600 ですね)。

うーん、色々と想像が膨らみますね。笑


> APIが解釈してC言語の変数として代入してくれる
自動的に代入されるわけではありませんが、Lua 変数の get/set が可能なので問題無いですよ。


> LuaAPIはスタックを意識してガシガシ組まなくてはいけない
えぇ。それはもうバリバリに。爽
C と Lua を結ぶデータのやりとりには必ずスタックが絡んできます。イメージとしてはこんな感じです。

 C <=> Stack <=> Lua

慣れれば問題無いのですが、やはり面倒くさいです。
そういうときは Luapper (るあっぱー) を使いましょう。

→ http://d.hatena.ne.jp/toge/comment?date=20051218#c (toge氏の記事のコメントに書いてしまいました)

ソースコードの URL もここに張っておきました。BSDライセンスで公開します。
では軽く宣伝したところで次へ。


> LuaAPIのライブラリはライブラリサイズが重い!?
私が現在使っている Win32用 lua.lib は 138KB、lualib.lib は 98KB です。あ、ちなみに Lua のバージョンは 5.02 です。
ダイナミックリンクしているので実行ファイルは小さく済んでます。



P.S. 私もd金魚氏と同じく学生で、現在高校1年生です。負けてられませんな!

studiokingyostudiokingyo 2005/12/31 00:24 返信遅くなってすみません。コメント有難うございます。ちょっと長かったのと皆さんにコメントを紹介したかったのでhttp://d.hatena.ne.jp/studiokingyo/20051231
にて返信します。

2005-12-17 C/C++言語のマクロ展開をする方法

[][][][][]C言語ファイルマクロ展開する方法 C言語のファイルをマクロ展開する方法を含むブックマーク C言語のファイルをマクロ展開する方法のブックマークコメント

cppというコマンドラインツールを使うらしい。

via http://www.wakhok.ac.jp/~kanayama/C/03/node114.html

が、その他にはなにかいいツールはないのかなぁ〜。

なんかcpp使うと#の付いたいらない行が出力されるしなぁ〜。

う〜ん。

解決:

mcpp(http://www.m17n.org/mcpp/)を使って、-Pとか付けると幸せになれますよん。

id:toge氏に感謝

どこかで見たことあると思ったらhttp://d.hatena.ne.jp/studiokingyo/20050130#p1

にて私も既に認知していたものだった。ボケか・・・?おrzおrz

togetoge 2005/12/18 20:18 おじゃまします。mcpp(http://www.m17n.org/mcpp/)を使って、-Pとか付けると幸せになれますよん。

studiokingyostudiokingyo 2005/12/19 03:03 有難うございます。mcppの存在忘れてました。ココ最近Programmingから離れていたもので・・・おかげさまで幸せになりました。:-)

トラックバック - http://d.hatena.ne.jp/studiokingyo/20051217

2005-12-16 MD5 Optimized in ... part2

[][][]MD5 Optimized in MMX part4 MD5 Optimized in MMX part4を含むブックマーク MD5 Optimized in MMX part4のブックマークコメント

前回の続き:(http://d.hatena.ne.jp/studiokingyo/20051214

ただ今、MMXMD5最適化中。

結構曲者である。MMXレジスタほとんどを使用してしまう勢いだ。(ただ単に考え方が未熟なだけかもしれないが・・・)


ちょっと他力本願質問なのだが、0xd76aa478という32bitデータをmm0レジスタの32bit上位下位両方に入れたいのだがどのようにすればいいのだろうか?

やっぱりビット演算駆使して64bitデータにしてどうにかするしかないのだろうか?

解決:mm0の下位32bitに0xd76aa478を代入した後、punpckldqで下位32bitの内容を上位32bitに写す。教えてくださったhoshu氏に感謝


さて、コンパイルできるところまでこぎつけたが・・・どんなデータを入れても常に間違った可笑しい値が出てくる・・・。

一つ一つのステップC言語版と比較していくしかないのかしら(泣)

もーやだ!つかれだー _| ̄|○⇒_|\○_⇒_/\○_⇒____○_ {続く・・・ zoo...

hoshuhoshu 2005/12/17 19:09 mm0の下位32bitに0xd76aa478を代入した後、punpckldqで下位32bitの内容を上位32bitに写す、というのはどうでしょうか。

studiokingyostudiokingyo 2005/12/17 22:05 なるほど。
http://homepage1.nifty.com/herumi/adv/adv10.html
の最後のほうに書いていました。見落としてました。MMX奥深し。ありがとうございます。

トラックバック - http://d.hatena.ne.jp/studiokingyo/20051216

2005-12-15 DLLから関数の名前を抽出してLoadLibraryしたいよぉ

[][]DLLから関数の名前を抽出してLoadLibraryするソースコードを吐くツールをどこかで見かけたはずなのですが・・・ DLLから関数の名前を抽出してLoadLibraryするソースコードを吐くツールをどこかで見かけたはずなのですが・・・を含むブックマーク DLLから関数の名前を抽出してLoadLibraryするソースコードを吐くツールをどこかで見かけたはずなのですが・・・のブックマークコメント

ご存知の方、URL先教えていただけませんか。m(>_<)m

[][][]DLLに定義されている関数を列挙して出力するソフト DLLに定義されている関数を列挙して出力するソフトを含むブックマーク DLLに定義されている関数を列挙して出力するソフトのブックマークコメント

数ヵ月後に通りすがりの方に教えていただき解決しました。http://d.hatena.ne.jp/studiokingyo/20060726

情報ありがとうございました。感謝します。

http://www.chiyoclone.net/details.html#listexp

トラックバック - http://d.hatena.ne.jp/studiokingyo/20051215

2005-12-14 MD5 optimized in ... part1

[][]MD5 optimized in MMX MD5 optimized in MMXを含むブックマーク MD5 optimized in MMXのブックマークコメント

久々にプログラミングがしたくなった。

MD5はまだまだ現役のようで最適化したら皆さん使ってくれるかな〜

なんて思ったりして。

なのでgoogle:MD5 optimizegoogle:MD5 MMX | SSE | SSE2 | 3DNowとかしてちょっと探してみても出てこないので自分で作ってみようかな〜

なんて思ったりして。

で、仕様書*1見ながらがんばってみたのね。

だけどね。最適化をどこですればいいのか分からない・・・

いわいるUpdate部?ROUND1からROUND4まであるあたりを最適化しようと思うんだけどどうも見た感じ思いつかないんだよね。いかにしてMMXレジスタに詰めるか・・・あれ〜?

MMX最適化したのが見つからないのが少し分かるような気がする・・・

もうちょっとがんばってみる。

[][][]MD5 optimized in MMX part2 MD5 optimized in MMX part2を含むブックマーク MD5 optimized in MMX part2のブックマークコメント

MMX最適化する場合、プロセスを二つ立てることくらいしか思いつかないよぉ〜

つまり

mm0,mm1...それぞれに二つの32bitの対象分のデータを詰め込んで二つ同時に計算するって言う・・・MMX利用の際に考えられる初歩の初歩のテクニック。

例えば、file0とfile1があったとしてそれを同時にMD5で計算するとかだよね。もしかしたらSHA系やRIPEMD系にも応用利くかもしれません?

MD5のコアの計算部分が前回計算した結果に依存しているからどうも最適化案が思い浮かばないのですよ。

最適化できるところを見つけられる人がいるんだったらすごひと思う!

[][][]MD5 optimized in MMX part3 MD5 optimized in MMX part3を含むブックマーク MD5 optimized in MMX part3のブックマークコメント

#define MD5STEP(f, w, x, y, z, data, s) \
  ( w += f(x, y, z) + data,  w = w<<s | w>>(32-s),  w += x )

ってのがMD5のコアの部分をマクロ化した所なのですよ。*2

f()関数、rotation部*3はpart2で発見した最適化ですべてMMX化できます。

問題は足し算しているところなのです。32bitだとオーバーフローしていいところなのだろうけど(定かではないが)MMXレジスタは32bit変数を二つ並べて持っているわけだからオーバーフローしたら隣の変数領域まで侵食していくのですよ。(追記:資料を見て思ったんだけどなんか侵食しないような気が・・・しました!)

さて、どうするべきか〜。

http://homepage1.nifty.com/herumi/adv/adv10.html

http://www1.kcn.ne.jp/~robe/pf/pf009.html

http://hp.vector.co.jp/authors/VA014520/asmhsp/chap8.html

http://mcierror.axisz.jp/wares/c_tips/mmx_1.html

を読んでみてもっと考えてみようと思う。記事と著者に感謝

... I Can't optimize MD5 algorithm in MMX! :-(

解決:padddとか使えば別に普通に大丈夫みたいですね。ではでは。

[][][][]VCのインラインアセンブラC言語マクロが使えない・・・ VCのインラインアセンブラでC言語のマクロが使えない・・・を含むブックマーク VCのインラインアセンブラでC言語のマクロが使えない・・・のブックマークコメント

解決:一つ一つの命令に_asmをつければ#defineしたインラインアセンブラ構文も認識してくれるらしいですよ。hoshu氏に感謝

例:

#define MD5_VC_MMX_F3(d,x,y,z)\
  _asm pxor y,z\
  _asm pxor x,y\
  _asm movq d,x

以下、解決前の記事

続きを読む

*1google:MD5 RFC

*2:出展:google:GNETmd5.c public domainです。

*3:カンマで区切っている2番目のところ

hoshuhoshu 2005/12/17 01:44 初めまして。時々来ては楽しく読ませてもらってます。defineマクロにアセンブリ言語コードを含ませるとき、全てのオペレータの先頭に_asmを付加すれば、認識してくれると思いますよ。

studiokingyostudiokingyo 2005/12/17 12:30 こんにちは。pbaすごく参考になりました。
_asmを付加してみましたらコンパイルは上手くいきました。有難うございます。
これからテストしてMD5 optimized in ... part2にて発表してみたいと思います。では。

トラックバック - http://d.hatena.ne.jp/studiokingyo/20051214

2005-12-07 スクリーンショットも許しません!!?

studiokingyo2005-12-07

[][]スクリーンショットは許されちゃいます。 スクリーンショットは許されちゃいます。を含むブックマーク スクリーンショットは許されちゃいます。のブックマークコメント

はい。右のような画像のバナーの広告を出しているソフトウェア会社がありました。

なーる。スクリーンショットも許さないのね。

はいはい。ディスプレイ上からデジカメで撮ってしまえば完璧なのね。

だから、今、私は笑い男技術を開発しているのね。はいはい。

トラックバック - http://d.hatena.ne.jp/studiokingyo/20051207

2005-12-06 Red Black Tree in C part2

[][]Red Black Tree in C part2 Red Black Tree in C part2を含むブックマーク Red Black Tree in C part2のブックマークコメント

前回のソース:(http://d.hatena.ne.jp/studiokingyo/20050321)にメモリリー

クがあったので修正版をのっけておきます。

ちなみに原因はlogic部ではなくmainから抜ける時にdeleteNodeで最後までメモリ開放していないためです。

続きを読む

トラックバック - http://d.hatena.ne.jp/studiokingyo/20051206

2005-12-05 d金魚によるRuby日記 part1

[]d金魚 VS Ruby d金魚 VS Rubyを含むブックマーク d金魚 VS Rubyのブックマークコメント

前回(http://d.hatena.ne.jp/studiokingyo/20040929#p2)Rubyを勉強してみようかな^^?

と言ってから1年程が過ぎ・・・

最近、Rubyをちょっといじった。


WideStudioに付属のRubyを最近使っている。WideStudioのを使うと設定の手間が省けて便利だからだ。

しかしながらC言語とかなり違うのでかなり戸惑うところがあった。特にループ構文はC言語とあまり似ていないので戸惑った。

と、言うことでこういう時は私はサンプルプログラムを見て直感で構文解釈するのだが・・・

そんなサイトを探していたら見つけた。

http://www.mnet.ne.jp/~tnomura/algorithm.html

より。

これはいい勉強になる!

続く・・・(また一年後だったりして!?)

トラックバック - http://d.hatena.ne.jp/studiokingyo/20051205

2005-12-04 改行コード一括変換方法 プロジェクトファイルが開けない方へ

studiokingyo2005-12-04

[][][][]VC6 Tips / 改行コード一括変換=expatのVC6用プロジェクトファイルを開く方法 VC6 Tips / 改行コード一括変換=expatのVC6用プロジェクトファイルを開く方法を含むブックマーク VC6 Tips / 改行コード一括変換=expatのVC6用プロジェクトファイルを開く方法のブックマークコメント

http://www.kashim.com/index.html

にて「文字コード」および「改行コード」一括変換ツールが公開されている。

KanjiTranslaterというツールだ。

これは非常に便利だ。tar.gzという拡張子のファイルにVisual C++ 6.0(以下 VC6)用のプロジェクトファイル(*.dsw,*.dsp)ファイルが含まれている場合、

大体の場合、改行コードがCR-LFではないのでVC6では上手く開けないのだ。

その昔、それらの改行コードを一括変換する中途半端なソフトを作ったことがあったが、自分で作ったソフトよりこちらの方がGUIがシンプルで洗練されていて直感的で好きだ。

そんな時にこのツールを使ってほしい。

一気にプロジェクトファイルが開けるようになるはずだ。

私は「文字コード」および「改行コード」を変換できるので愛用している。

検索キー:google:dsw 開けない

トラックバック - http://d.hatena.ne.jp/studiokingyo/20051204

2005-12-03 つまづいた時にどうやって立ち直るか?

[][][]躓いた時にどうやって立ち直るか? 躓いた時にどうやって立ち直るか?を含むブックマーク 躓いた時にどうやって立ち直るか?のブックマークコメント

http://d-moog.cocolog-nifty.com/who_else/2005/10/post_10d3.html

より。

心の状態というのはよくよく考えてみると案外変化自在なので心の中では「つまづかなかったことにする」ベターだと思います。はい。

それでも辛かったら・・・何らかのプラスな行動を実行する事をオススメしますよ。はい。

こういう時は頭より体です^^ はい。

ただの経験則ですが・・・。はい。


今の若い人たちのつながり方って、「仲間・友達」って

ヘコんだ時に、「気持ちわかるよ。」

なんて言ってヨシヨシするつながり方なわけでしょ。

・・・

「人とのつながり方」をほんとにしっかり考えていかないと、

・・・

これちょ→分かります。

そうなんですよ。うんうん。分かるよって感じ、です。

人とのつながり方は大切だよ・・・。どのように大切かは上手く表せないけどさ・・・と、最近の若者っぽくお茶を濁してみる・・・。*1

*1:実は確信をもってこれはこうだと言えないだけだったりする。だってまだまだ青いですもん。(と、若いことを理由に回避・・・)

トラックバック - http://d.hatena.ne.jp/studiokingyo/20051203

2005-12-02 理科離れの原因?

[][][]理科離れはどうして起こっているのか? 理科離れはどうして起こっているのか?を含むブックマーク 理科離れはどうして起こっているのか?のブックマークコメント

子供は時代の流れに従順ってなんかの本で読んだ気がするが・・・

理科離れが進んでいるのって・・・

http://ja.wikipedia.org/wiki/%E7%94%A3%E6%A5%AD

のように

三次産業がなんとやらって事じゃないかなと勝手に思ってみたりしているのだが・・・

そんな事チェックしてらんないので今日もライブラリ作りに励んでいたりしたり・・・

トラックバック - http://d.hatena.ne.jp/studiokingyo/20051202

2005-12-01 2005年度12月用備忘録

[][][]2005/12用備忘録 2005/12用備忘録を含むブックマーク 2005/12用備忘録のブックマークコメント

(アア、疲れた・・・ } _| ̄|○⇒_|\○_⇒_/\○_⇒____○_ { zoo... )

トラックバック - http://d.hatena.ne.jp/studiokingyo/20051201
 | 
Program | Debug | dKingyo Utility Toolkit | library | D言語 | 御本とか | 備忘録 | テクニック | WayBack | 格言 | 英語 | 他力本願 | news | software |

デースケドガー
Connection: close