日々のことを取り留めもなく書く日記

この人のサイトへ
Twitterへ
378119
20040506070809101112
2005010203040506070809101112
2006010203040506070809101112
2007010203040506070809101112
2008010203040506070809101112
20090102030405060708091011
201001020304071012
2011010203040506070809101112
2012010203040506070809101112
2013010203040506070809101112
2014010203040506070809101112
2015010203040506070809101112
2016010203040512
201712


2006-09-29

[]SP2 10:42

XP SP1へのセキュリティパッチの提供が10月で終わるそうですね。
うちはSP2にすると、Windowsムービーメーカーバージョンアップという名の改悪が施されるので、未だSP1なんですよね。
うーん、これはラジオの録音を別のソフトにするべきか。
今までずっとWMAでやってきたのでWMAで録音できるやつの方が良いんですが、なかなか無いんですよねぇ。
むう、MP3に変えた方が良いんでしょうか。

トラックバック - http://d.hatena.ne.jp/white-ball/20060929

2006-09-28

[]C#で字句解析/構文解析 03:23

最近C#に手を出し始めました。
.NET系の言語も扱えるようになっておきたいですしね。じゃあ別にC++.NETでいいじゃないというのは置いといて。
 
で、そんなC#初心者がいきなりコンパイラコンパイラを使うプログラミングに挑戦ですよ。
使うのは、Compiler Tools in C#
C#コードを吐くlex&yaccで、Unicode対応。
問題があるとすれば、日本語資料が皆無なことでしょうか。でも付属の説明書がきちんとしているので、英語が読めれば問題ないですね、読めれば。
目標は大きく、なでしこC#処理系。まあ言うだけは只ですからね。
Unicodeが使えるので、文字コードに関しては悩まなくてもいい…はず。
まずはなでしこの文法のBNF定義からですねぇ。

[]SAORIの多重ロード 03:32

そういえばSAORIって、仕様書には「シングルサーバシングルクライアントである」って書いていないんですね。
SHIORIはさくらみかげの作業記録文書に複数のクライアントからの接続は想定しなくてもいいとあるので、多重ロードすべきではないものであるはずなんですが。
SAORIにこの一文がないことを考えると、やはり多重ロードしても問題ないものを作るべきなのでしょうか。

トラックバック - http://d.hatena.ne.jp/white-ball/20060928

2006-09-24

[][][]DAEv2、ソース公開へ 18:21

個人的にはとても嬉しいニュース
 
ベースウェアって結構いろんな事してますから、非常によいサンプルコード集にもなると思うんです。
で、ちょっとコードの拝借を(ry

[]なでしこブログ 18:21

クジラ飛行机さんがなでしこの開発ブログを開設されました。
これでもう少しはなでしこの開発状況について知ることが出来る……のですかね?

トラックバック - http://d.hatena.ne.jp/white-ball/20060924

2006-09-22

[][]Ruby栞とPython21:25

narをアップするところにて公開されていますね。
こう、人が何かやっているのを見ると、私も早くなでしこ栞を作らなくては、とか思っちゃいますね。
喋らせるだけなら動くんですけどねぇ。

トラックバック - http://d.hatena.ne.jp/white-ball/20060922

2006-09-14

[]cdecl 21:22

またもや時間が空いてしまった日記&久方ぶりのなでしこの話題。
 
なでしこではDLLを呼び出す時に呼び出し規約の指定が出来ません。
stdcallしかないのです。
つまりSHIORIとか呼び出せません。無理矢理呼び出すと変なところでエラーが出ます。
そこでこれ、cdeclで呼び出すサンプル。
でも、これと大差ないので、プログラム掲示板に投稿するのは気が引ける。
だから、ここで公開。

●VirtualAlloc({参照渡し}lpAddress,dwSize,flAllocationType,flProtect)=DLL("kernel32.dll",
"LPVOID VirtualAlloc(
LPVOID lpAddress,
int dwSize,
DWORD flAllocationType,
DWORD flProtect
)")
●VirtualFree({参照渡し}lpAddress,dwSize,dwFreeType)=DLL("kernel32.dll",
"BOOL VirtualFree(
LPVOID lpAddress,
int dwSize,
DWORD dwFreeType
)")
●MoveMemory({参照渡し}d,{参照渡し}s,l)=DLL("kernel32.dll",
"VOID RtlMoveMemory(
LPVOID Destination,
LPVOID Source,
int Length
)")
●GetProcAddress(hModule,{参照渡し}lpProcName)=DLL("kernel32.dll",
"DWORD GetProcAddress(
HMODULE hModule, // DLL モジュールハンドル
LPCSTR lpProcName // 関数
)")
●LoadLibrary(lpFileName)=DLL("kernel32.dll",
"HMODULE LoadLibraryA(
LPCTSTR lpFileName
)")

!MEM_COMMIT=$1000
!MEM_RELEASE=$8000
!PAGE_EXECUTE_READWRITE=$40
!NULL = 0
!変数宣言が必要

●AddBinary({参照渡し}target,value,size)
 MoveMemory(target,POINTER(value),size)
 target=target+size

●CallFuncPtr(pfunc,params,count)
 pbinarycodeとは整数
 pcとは整数
 もし、countが(-1)ならば、count=paramsの要素数
 
 pbinarycode=VirtualAlloc(NULL,256,MEM_COMMIT,PAGE_EXECUTE_READWRITE)
 pc=pbinarycode
 AddBinary(pc,$55,1)        //push edp
 count 回
  AddBinary(pc,$68,1)
  AddBinary(pc,TOINT(params[count-回数]),4) //push TOINT(params[count-回数])
 
 AddBinary(pc,$B8,1)
 AddBinary(pc,pfunc,4)       //mov eax,pfunc
 AddBinary(pc,$D0FF,2)       //call eax
 AddBinary(pc,$C483,2)
 AddBinary(pc,count*4,1)        //add esp,count*4
 AddBinary(pc,$5D,1)        //pop edp
 AddBinary(pc,$C3,1)       //ret
 EXEC_PTR(pbinarycode,0,「」,「DWORD」)

#サンプル
!変数宣言が不要
ハンドルはLoadLibrary("crtdll.dll")
関数ポインタはGetProcAddress(ハンドル,"strcat")
メッセージ0=「1番目{\0}        」
メッセージ1=「2番目」
引数はPOINTER(メッセージ0)&改行&POINTER(メッセージ1)
CallFuncPtr(関数ポインタ,引数,2)
表示
メッセージ0を表示
POINTER(メッセージ0)を表示

トラックバック - http://d.hatena.ne.jp/white-ball/20060914

2006-09-06

[]めでたい 18:49

新たな親王殿下誕生されました。喜ばしいことです。
お名前はどうなるのでしょうかね?
やはり「仁」の字をつけるのでしょうか。

トラックバック - http://d.hatena.ne.jp/white-ball/20060906

2006-09-02

[][]ブラウザ情報取得saori 16:28

巡回していて見つけた。
http://project.hacca.jp/2006/09/post_264.html
思いついた手段。

  1. キャッシュ走査
  2. DDE
  3. COM

キャッシュ走査は力業過ぎるので論外として、やっぱりDDEですかねぇ。GetWindowInfoでタイトルURLも取れますし。
でも、OperaとかはOpenURLにしか対応してないらしかったり(だいたい動くそうですが)、LunaとかDonutとかは対応状況がわからなかったり。
IEコア系はCOMを使った方がいいんでしょうかねぇ。

20040506070809101112
2005010203040506070809101112
2006010203040506070809101112
2007010203040506070809101112
2008010203040506070809101112
20090102030405060708091011
201001020304071012
2011010203040506070809101112
2012010203040506070809101112
2013010203040506070809101112
2014010203040506070809101112
2015010203040506070809101112
2016010203040512
201712
Connection: close