2007年10月29日月曜日

Windows Mobile 2003のプログラミング



C#でやるのがいいのかな?


ってことで、C#の勉強をしてみることにしました。


C#のいい本を探してみる。


WindowsCE関係のプログラミング関係の本があんまりない。





WILLCOMなんかでスマートフォンはやって、すこしは増えてるのかな。


WILLCOM携帯アプリプログラミングブック


ISBN:4839919682





Windows Mobile 5.0 アプリケーション開発 Beginner's Book


ISBN:4774128910






VS2003は持ってるので、追加で必要なSDKなどのリンクのメモ。


eMbedded Visual C++ 4.0 (日本語版)


http://www.microsoft.com/japan/msdn/vstudio/device/evc_download.aspx





eMbedded Visual C++ 4.0 SP3 (日本語版)


http://www.microsoft.com/downloads/details.aspx?FamilyID=5bb36f3e-5b3d-419a-9610-2fe53815ae3b&displaylang=ja





Windows Mobile 2003 Second Edition-based Pocket PC 用エミュレータ (英語)


http://www.microsoft.com/downloads/details.aspx?FamilyId=4953D34D-692F-4C87-AC69-CB235DBDAD1D&displaylang=en





Windows Mobile 2003 software for Pocket PC 日本語版 ソフトウェア開発キット (SDK) (日本語版)


http://www.microsoft.com/downloads/details.aspx?displaylang=ja&FamilyID=9996B314-0364-4623-9EDE-0B5FBB133652





Windows Mobile 2003 - based Pocket PCs : 他言語エミュレータ イメージ (英語)


http://www.microsoft.com/downloads/details.aspx?FamilyID=57265402-47a8-4ce4-9aa7-5fe85b95de72&DisplayLang=en





2007年10月17日水曜日

買ってみた



少し臨時収入があったのでPDAを買ってみました。


ipaqの2410で無線LANもついてて思いのほかいい感じです。


通勤電車のなかで音楽を聞きながらpdfの文章を読んだりしてます。


さすがに長文はかけないなぁ・・


これぐらいの長さで限界です。





2007年10月16日火曜日

4.22の設定



やること:


1.無線LANの設定(PCMCIAの周辺が変更?orinocoのドライバがないみたい)


ドライバはカーネルに組み込まれることになったようなので、ついでに色々いじってカーネルを再構築してみまた。


2.Subversionのインストール(contrib)


3.FluxBoxが1.0になったのでコンパイルしなおして、設定も1からやりなおす。


/usr/local/share/fluxboxの中身を$HOME/.fluxboxにコピーして色々いじる。





2007年10月1日月曜日

シグナル



カーネルやユーザからプロセスになにかを通知するために送られる。


何種類かあって、それぞれにデフォルトの動作が決まっているが、


デフォルトで無視されるものもある。


システムコールを捕捉(キャッチ、トラップ)して、プロセスが受け取った


ときに動作(シグナルハンドラ)を変更できる。





キャッチできないシグナルもある。例えばSIGKILLは、確実にプロセスを終了させる


ために、変更したりできなくなっている。











int sigaction(int signum,const struct sigaction *act,struct sigaction *oldact)


対象シグナルを指定して、プロセスが受け取った際の動作を変更する。





signum


対象となるシグナルを指定する。


SIGKILLとSIGSTOPは、指定できない。





const struct sigaction *act


シグナルを受け取った時の動作などを指定する。



struct sigaction{


void (*sa_handler) (int);


void (*sa_sigaction) (int,siginfo_t *,void *);


sigset_t sa_mask;


int sa_flags;


void (*sa_restorer) (void);


}






sa_handlerとsa_sigactionは、どちらかのみを利用して、シグナルハンドラを指定する。


sa_maskは、ブロックするシグナルを指定するのに使う。


シグナルは、プロセスが実行されている時のいつ送られてくるか分からない。そうすると、シグナルハンドラ実行中に、同じシグナルが送られてきて、シグナルハンドラが二重にじっこうされるかもしれない。それを止めるために、シグナルハンドラ実行中にシグナルが送られてきたとき、そのシグナルを保留(ブロック)しておく。


このブロックしておくシグナルを指定するのにsa_maskを使う。


sigaction()で、シグナルハンドラ実行中は、基本的にsigaction()で指定されているシグナルはブロックされる。





マスクをつくる関数


int sigemptyset(sigset_t *set);マスクsetを空にする。


int sigfillset(sigset_t *set); マスクsetに全てのシグナルを指定する。





struct sigaction *oldact


sigaction()が実行されたときのシグナルハンドラが入る。


必要ないときはNULLを指定。








理解できてるような、できてないような中途半端な感じ。。。。