タイトル/名前 | 更新者 | 更新日 |
---|---|---|
読書メモ/「ゲームで極める シェルスクリプトスーパーテクニック」 | msakamoto-sf | 2010-11-26 15:25:13 |
読書 | msakamoto-sf | 2010-11-25 11:17:35 |
C言語系/「デーモン君のソース探検」読書メモ/A11(Intermission), exit(2) → wait4(2) | msakamoto-sf | 2010-11-24 16:31:09 |
C言語系/「デーモン君のソース探検」読書メモ/A05, time(1) | msakamoto-sf | 2010-11-24 12:33:19 |
C言語系/「デーモン君のソース探検」読書メモ/A10, popen(3) | msakamoto-sf | 2010-11-24 11:45:35 |
C言語系/「デーモン君のソース探検」読書メモ/A08, pause(3), sigsuspend(2) | msakamoto-sf | 2010-11-24 09:22:43 |
C言語系/「デーモン君のソース探検」読書メモ/A09, write(2) + O_APPEND | msakamoto-sf | 2010-11-23 23:59:37 |
C言語系/「デーモン君のソース探検」読書メモ/A07, nohup(1) | msakamoto-sf | 2010-11-23 12:02:59 |
C言語系/「デーモン君のソース探検」読書メモ/A06, su(1) | msakamoto-sf | 2010-11-22 21:49:00 |
技術/UNIX/libtinyaup | msakamoto-sf | 2010-11-22 15:30:12 |
2007年発売で、購入したのは去年か一昨年ごろです。Amazonではなくてリアル書店で見つけました。これも、少なくとも1年は本棚に積んだままになってた本です。勇気を出して頁をめくり、サンプルコードを打ち込み始めてみたら、実質2日ほどで読み終えることが出来ました。
非常にユニークで面白い本でした。シェルスクリプトの全くの初心者にはオススメできませんが、ある程度シェルスクリプトを自分で組んだり、sttyコマンドを聞いたことがあり実際に弄ってみたことのある人であれば十分楽しめるレベルです。
Amazonでは在庫が無く、中古商品になってしまうのが残念です。
エスケープシーケンスについては、今まで本気で調べようとしなかったので良い資料が見つからなかっただけみたいで、"escapse sequence vt100"とか"escapse sequence xterm"とかで検索すると、ぼろぼろ見つかりました:
他。なぜBourne Shellでは他のソースを取り込むのが"."(dot)コマンドなのか:
で、実はChapter8以降のテトリスやタイピング、スネークゲームのサンプルコードは打ち込んでません。データ打ち込むのが大変そうなんで・・・。
代わりに、自分でも本書で紹介されているテクニックを使ったゲーム未満のおもちゃスクリプトを組んでみました。
画面上に枠が表示され、10個の"o"がばらけて表示されます。枠の中を縦横に動き回ります。枠にぶつかったら反転します。
"q"で終了、"SPACE"で縦横方向が一斉に切り替わります。
ターミナル上でこうしたゲームもどきをシェルスクリプトで作れるというのも、新鮮で楽しいです。
オススメしたい本や読んだ本の感想など。
他、「読書」カテゴリで検索。
お題:sys_wait4を中心に、だらだら、ぐだぐだと関連ソースを眺めてみる
・・・つもりが、気が付いたら"exit(2) → wait4(2)"の流れの舞台裏を調べていた。
※この章は「デーモン君のソース探検」に載っていませんが、msakamoto-sf自身が個人的に興味を持って調べ、"Appendix"として読書メモシリーズに入れてありますのでご注意下さい。
お題:time(1)コマンドがプログラムを起動し、時間をカウントする仕組みを調査せよ
※この章は「デーモン君のソース探検」に載っていませんが、msakamoto-sf自身が個人的に興味を持って調べ、"Appendix"として読書メモシリーズに入れてありますのでご注意下さい。
お題:popen(3)でNetBSDが"r+"モードをサポートしている仕組みを調査せよ
※この章は「デーモン君のソース探検」に載っていませんが、msakamoto-sf自身が個人的に興味を持って調べ、"Appendix"として読書メモシリーズに入れてありますのでご注意下さい。
お題:pause(3)関数を使う上での問題点と、sigsuspend(2)による対処法を検討せよ
※この章は「デーモン君のソース探検」に載っていませんが、msakamoto-sf自身が個人的に興味を持って調べ、"Appendix"として読書メモシリーズに入れてありますのでご注意下さい。
(今回の内容は、"Advanced UNIX Programming 2nd Ed"(AUP), "9.2 Waiting for Signal" のパクリです。)
お題:open(2)でO_APPENDが指定されたファイル記述子に対してwrite(2)するとき、ファイルポジションが自動的に末尾に設定する箇所を特定せよ
※この章は「デーモン君のソース探検」に載っていませんが、msakamoto-sf自身が個人的に興味を持って調べ、"Appendix"として読書メモシリーズに入れてありますのでご注意下さい。
お題:nohup(1)コマンドが、端末からログアウトしても終了しないように子プロセスを起動する仕組みを調査せよ
※この章は「デーモン君のソース探検」に載っていませんが、msakamoto-sf自身が個人的に興味を持って調べ、"Appendix"として読書メモシリーズに入れてありますのでご注意下さい。
お題:su(1)コマンドが異なるユーザーIDでプログラムを起動する仕組みを調査せよ
※この章は「デーモン君のソース探検」に載っていませんが、msakamoto-sf自身が個人的に興味を持って調べ、"Appendix"として読書メモシリーズに入れてありますのでご注意下さい。
"Advanced Unix Programming", AUP のサンプルコードで使われてるエラーチェックが便利そうだったので、そこだけ抜き取って簡単なstaticライブラリにしました。
関連:読書メモ/"Advanced UNIX Programming"
codereposにUPしてあります。
http://coderepos.org/share/browser/docs/msakamoto-sf/libtinyaup
$ svn co http://svn.coderepos.org/share/docs/msakamoto-sf/libtinyaup or $ svn export http://svn.coderepos.org/share/docs/msakamoto-sf/libtinyaup
でどうぞ。
使い方についてはAUPを参照してください。一応簡単なCUnitコードも付けてありますが、実際のシステムコールをどう組み合わせるかについては書籍のサンプルコードを参照したほうが分かりやすいでしょう。
動作確認は CentOS 5.x で行っています。
コンパイルにはC++用のヘッダーが必要なので注意してください。
AUPのサンプルそのままですと、マルチスレッド対応していたりエラーコードをpushできる独自のスタック構造をとっていたり、その影響でmutexを使っていたり、さらにはコードがばらけていたりと、小回りが効きません。
libtinyaupはそうした、凝った機能をばっさりと削り、エラーチェックマクロとstderrへの簡単なprintだけにしていますので、マルチスレッドも不要です。
簡単な実験コードを書くときに使ってください。