2016年07月18日

「Linuxネットワークプログラミングバイブル」と「C言語によるTCPIPセキュリティプログラミング」を再読中

C言語によるTCPIPセキュリティプログラミングの、
3章共通ライブラリ作成

を読んでます。


◎Linuxネットワークプログラミングバイブル:円
Linuxネットワークプログラミングバイブル -
Linuxネットワークプログラミングバイブル -

◎C言語によるTCPIPセキュリティプログラミング:3,456円
C言語によるTCP/IPセキュリティプログラミング -
C言語によるTCP/IPセキュリティプログラミング -

◎:円

posted by アンドレアス at 12:04| Comment(0) | TrackBack(0) | C言語 | このブログの読者になる | 更新情報をチェックする

2016年04月26日

コストパフォーマンスも内容も十分過ぎる!発売中「Interface (インターフェース) 2016年 6月号」は付録もついてお買い得。やるなCQ出版。

買ってきました。

Interface (インターフェース) 2016年 6月号は
とうとう付録までつきました。
なのに、価格は、1,080円です。

中身は、驚きの充実した内容です。
「サウンドプログラミング入門」も良い本ですが、
3,000円を超えています。
また音声信号処理の数も半端じゃないくらい多いですので、
凄く参考になると思います。
音楽やるにしても、音声応答・音声合成・音声認識やるにしても。

また、後で、追記しますが、
CQ出版、ノリにのってるな。

◎Interface (インターフェース) 2016年 6月号:1,080円
Interface (インターフェース) 2016年 6月号 -
Interface (インターフェース) 2016年 6月号 -

ノってるな、CQ出版(^^)。

今、1番勢いありますね、IT系書籍の出版社として。

ちょうど

◎サウンドプログラミング入門:3,218円
サウンドプログラミング入門――音響合成の基本とC言語による実装 (Software Design plus) -
サウンドプログラミング入門――音響合成の基本とC言語による実装 (Software Design plus) -



○まとめ
参照:はじめてのAIプログラミングC言語で作る人口知能と人口無能

4章 音声処理技術
音声処理技術は大きく2種類あり。

・コンピュータが音声を発する音声合成技術
 音を出す

・人間の発する音声をコンピュータが認識する音声認識技術
 音を聞く


4.1 音声合成
・A/D変換、D/A変換
・音or音波 = 空気の振動

量子化ビット数・・・・どのくらいの精度で音の強さを記録するか

サンプリング周波数
・・・1秒間に何回音を記録するか

・音楽CD:量子化ビット数16bit, サンプリング周波数44.1kHz(44,100回/秒),ステレオ2チャンネル
・電話 :量子化ビット数8bit,サンプリング周波数8kH

WindowsのWAVファイル:RIFF(Resource Interchange File Format)


◎はじめてのAIプログラミングC言語で作る人口知能と人口無能:3,024円
はじめてのAIプログラミング―C言語で作る人工知能と人工無能 -
はじめてのAIプログラミング―C言語で作る人工知能と人工無能 -





◎はじめての人工知能 Excelで体験しながら学ぶAI:円
はじめての人工知能 Excelで体験しながら学ぶAI -
はじめての人工知能 Excelで体験しながら学ぶAI -

posted by アンドレアス at 20:51| Comment(0) | TrackBack(0) | C言語 | このブログの読者になる | 更新情報をチェックする

人口知能に絡んで、音声にフォーカスした「Interface (インターフェース) 2016年 6月号」は、全集CD付き! 音声信号処理が体感できてお得です。

Interface (インターフェース) 2016年 6月号は
とうとう付録までつきました。
◎Interface (インターフェース) 2016年 6月号:1,080円
Interface (インターフェース) 2016年 6月号 -
Interface (インターフェース) 2016年 6月号 -

ノってるな、CQ出版(^^)。

今、1番勢いありますね、IT系書籍の出版社として。

ちょうど

◎サウンドプログラミング入門:3,218円
サウンドプログラミング入門――音響合成の基本とC言語による実装 (Software Design plus) -
サウンドプログラミング入門――音響合成の基本とC言語による実装 (Software Design plus) -



○まとめ
参照:はじめてのAIプログラミングC言語で作る人口知能と人口無能

4章 音声処理技術
音声処理技術は大きく2種類あり。

・コンピュータが音声を発する音声合成技術
 音を出す

・人間の発する音声をコンピュータが認識する音声認識技術
 音を聞く


4.1 音声合成
・A/D変換、D/A変換
・音or音波 = 空気の振動

量子化ビット数・・・・どのくらいの精度で音の強さを記録するか

サンプリング周波数
・・・1秒間に何回音を記録するか

・音楽CD:量子化ビット数16bit, サンプリング周波数44.1kHz(44,100回/秒),ステレオ2チャンネル
・電話 :量子化ビット数8bit,サンプリング周波数8kH

WindowsのWAVファイル:RIFF(Resource Interchange File Format)


◎はじめてのAIプログラミングC言語で作る人口知能と人口無能:3,024円
はじめてのAIプログラミング―C言語で作る人工知能と人工無能 -
はじめてのAIプログラミング―C言語で作る人工知能と人工無能 -





◎はじめての人工知能 Excelで体験しながら学ぶAI:円
はじめての人工知能 Excelで体験しながら学ぶAI -
はじめての人工知能 Excelで体験しながら学ぶAI -


posted by アンドレアス at 06:52| Comment(0) | TrackBack(0) | C言語 | このブログの読者になる | 更新情報をチェックする

2014年08月21日

C・C++環境を準備して「モダンC言語プログラミング 統合開発環境、デザインパターン、エクストリーム・プログラミング、テスト駆動開発、リファクタリング、継続的インテグレーションの活用」を読みながら進める

C++環境を整備します。

やはりEclipseは使いたい。

で、買ったまま自炊して
読むのを忘れていた(読む時間が無かった)
「モダンC言語プログラミング 統合開発環境、デザインパターン、エクストリーム・プログラミング、テスト駆動開発、リファクタリング、継続的インテグレーションの活用」
を読み始めました。



◎モダンC言語プログラミング 統合開発環境、デザインパターン、エクストリーム・プログラミング、テスト駆動開発、リファクタリング、継続的インテグレーションの活用:3,024円
モダンC言語プログラミング 統合開発環境、デザインパターン、エクストリーム・プログラミング、テスト駆動開発、リファクタリング、継続的インテグレーションの活用 -
モダンC言語プログラミング 統合開発環境、デザインパターン、エクストリーム・プログラミング、テスト駆動開発、リファクタリング、継続的インテグレーションの活用 -

◎C言語ポインタ完全制覇:円
C言語ポインタ完全制覇 (標準プログラマーズライブラリ) -
C言語ポインタ完全制覇 (標準プログラマーズライブラリ) -
posted by アンドレアス at 08:00| Comment(0) | TrackBack(0) | C言語 | このブログの読者になる | 更新情報をチェックする

2014年08月09日

Zabbix2.2.5のソースコードを読む・・・その2

今日は、Zabbix Web 管理GUIの
PHPのソースを中心に読みたいと思います。



◎改訂版 Zabbix統合監視実践入門 ~障害通知、傾向分析、可視化による省力運用:3,780円
改訂版 Zabbix統合監視実践入門 ~障害通知、傾向分析、可視化による省力運用 (Software Design plus) -
改訂版 Zabbix統合監視実践入門 ~障害通知、傾向分析、可視化による省力運用 (Software Design plus) -


◎Chef実践入門 ~コードによるインフラ構成の自動化:2,992円
Chef実践入門 ~コードによるインフラ構成の自動化 (WEB+DB PRESS plus) -
Chef実践入門 ~コードによるインフラ構成の自動化 (WEB+DB PRESS plus) -

◎実践 Vagrant:2,808円
実践 Vagrant -
実践 Vagrant -
posted by アンドレアス at 08:16| Comment(0) | TrackBack(0) | C言語 | このブログの読者になる | 更新情報をチェックする

2013年11月13日

Webサービス「広告を表示して効果を測定する」という内容が、「VS2010で作るWeb-DBアプリ入門」にあったので、作成してみることにする(その1)

自炊中にパラパラ本をめくっていると、
「VS2010で作るWeb-DBアプリ入門」に
「広告を表示して効果を測定する」という内容が、ありました。

広告はこう表示させるのか、なるほど!

と、冷静に考えると、この内容で書かれているように
XMLファイルから読み込む or DBから読み込む、と
なるんでしょうけど、なかなか、
広告システムとか、課金システムを作る機会もありませんので、
この機会にやってみます。

・・・で、いつやろうか?

Visual Studio用のPCひな形をClonezillaで作成しておうことにする。

今の環境に入れると、動きが微妙に悪くなるので。


◎VS2010で作るWeb-DBアプリ入門:2,520円
VS 2010で作るWeb-DBアプリ入門 (DB Magazine SELECTION) [単行本(ソフトカバー)] / 金宏 和實 (著); 翔泳社 (刊)

◎WEB+DB PRESS Vol.70:1,554円WEB+DB PRESS Vol.70 [大型本] / 成田 一生, 高津戸 壮, Dr.Kein, 近藤 宇智朗, 後藤 秀宣, mala, 中島 聡, 森田 創, 堤 智代, A-Listers, はまちや2, 佐藤 裕介, 久森 達郎, 大窪 聡, 本田 謙, 和田 英一, 天野 祐介, 藤 吾郎(gfx), 奥野 幹也 (著); WEB+DB PRESS編集部 (編集); 技術評論社 (刊)
■特集3 Web広告最前線 では、

「RTBを実現する技術」「広告エンジニアのススメ」は面白い&普段見たり聞いたりできない話なので、
この機会に読んでおくと、非常にタメになると思います。

ビジネス直結だし、レスポンスタイムが50ミリ秒を切る、などのための
工夫などの話も、目を通したい内容です。

■キーワード
FreakOut!,SSP,DSP,100ミリ秒という高速応答要求,LVS,nginx,Plack,
Devel::NYTProf,CTR(Click through rate),検索連動型広告,アドネットワーク,インプレッション,
広告枠の売買が先物取引から現物取引へ
posted by アンドレアス at 22:20| Comment(0) | TrackBack(0) | C言語 | このブログの読者になる | 更新情報をチェックする

2013年08月14日

Fedora19,C言語,malloc(),oom-killer

そうか、oom-killerって小文字だったか。


==============
usemem.c
==============

#include
#include

int main(int argc,char *argv[])
{
char *p;
int i,j,mem;
if(argc != 2){
printf("Usage %s Memory[MB]\n",argv[0]);
return 1;
}
mem = atoi(argv[1]);
for(i=0;i
posted by アンドレアス at 08:21| Comment(0) | TrackBack(0) | C言語 | このブログの読者になる | 更新情報をチェックする

2013年04月28日

10Gbps対応の開発における「ネットワークパケット処理の高速化」とRSSに関する小俣氏の「プログラマー社長のブログ」を読んでいると、面白いです。

・ネットワーク側の方が速くて、プログラム側の処理が追いつかない

か・・・。

これ、Open vSwitchなんかを使うと、
更に吹き出る問題なのかな?

これまで、Open vSwitchを使った時は、
1Gbpsのネットワークインターフェースしか使ったこと
なかった気がしますが・・・。

ネットワーク部分が速くなったら、
今度は、次なる問題出現か。


メモリーコピーのオーバーヘッドすら問題になるほど10Gbpsは速い

か・・・・・。

■ネットワークパケット処理の高速化
http://blogs.itmedia.co.jp/komata/

◎ルーター自作でわかるパケットの流れ:1,974円ルーター自作でわかるパケットの流れ [単行本(ソフトカバー)] / 小俣 光之 (著); 技術評論社 (刊)


◎Linuxネットワークプログラミングバイブル:3,990円Linuxネットワークプログラミングバイブル [単行本] / 小俣 光之, 種田 元樹 (著); 秀和システム (刊)
posted by アンドレアス at 11:39| Comment(0) | TrackBack(0) | C言語 | このブログの読者になる | 更新情報をチェックする

2013年04月27日

GW明けから「名目上は、休み」になるので、今日は、ゴールデンウィーク開始にも関わらず、C言語のポインターとC++を学習の日になっちゃっているのです。

今日は、さすがに、人が多かったですね。

今日からGWのスタートとなり、
4/30,5/1,5/2も休みにして、
「連続10連休」にした人も、多いことでしょうね。

私の方は、GW明けから「名目上は、休み」になるため、
今日は、C言語のポインターとC++の学習日です。

(一応、休みですけど・・・)

書籍を雑誌が、たまっているので、
大量の「自炊」は、
筋トレしながら「レッドカーペット」を見つつ、
ながら作業で、PM9:00頃から、実施することにします。

今日、我慢して書籍を買わなかった理由も、
この大量の「自炊」処理を先に済ませないといけない、と
思ったからなのです。

でないと、また、自分の居住するスペースが
圧迫されるので・・・(^^)。



◎C言語ポインタ完全制覇:2,394円
C言語ポインタ完全制覇 (標準プログラマーズライブラリ) [単行本] / 前橋 和弥 (著); 技術評論社 (刊)

アマゾンレビューにもある通り、
ポインタを学ぶ最良の書籍は、まず、この本です。

他の書籍より、圧倒的に「あー、なるほど」が
多い本です。

既に10年経過しているのに、内容が色あせていません。

ぜひ!



◎C言語 配列+ポインタ よくわかる実践学習室:2,079円C言語 配列+ポインタ よくわかる実践学習室 (標準プログラマーズライブラリシリーズ) [大型本] / 谷尻 豊寿, 谷尻 かおり (著); 技術評論社 (刊)
posted by アンドレアス at 18:10| Comment(0) | TrackBack(0) | C言語 | このブログの読者になる | 更新情報をチェックする

2013年03月05日

「C言語ポインタ完全制覇」で、ポインタの復習をしています。

0章 本書の狙いと構成・・・朝、読み終わり

1章 まずは基礎から・・・予備知識と復習

2章 実験してみよう・・・Cはメモリをどう使うのか
おそらく新入社員的な人は、ここが一番役立つかな、と思います。

私にも、役立つから、新入社員レベルってことか(^^)

3章 Cの文法を解き明かす・・・結局のところ、どういうことなのか?

一気に読みます。

4章以降は、すべて電車で読み、ですね。

◎C言語ポインタ完全制覇:2,394円
C言語ポインタ完全制覇 (標準プログラマーズライブラリ) [単行本] / 前橋 和弥 (著); 技術評論社 (刊)

「CUDA高速GPUプログラミング入門」も併読中です。

そろそろ、ノートPC買おうかなー。
32GBで、NVIDIAのGPUのっているのを。

◎CUDA高速GPUプログラミング入門:円CUDA高速GPUプログラミング入門 [単行本] / 岡田 賢治 (著); 小山田 耕二 (監修); 秀和システム (刊)
posted by アンドレアス at 22:23| Comment(0) | TrackBack(0) | C言語 | このブログの読者になる | 更新情報をチェックする

2013年02月25日

「ゲームを動かす技術と発想」を読む。

そろそろエンべディッドを申し込まないといけないな。
忘れないようにしないと。

さて、昨晩から、
「ゲームを動かす技術と発想」を読んでます。

長い間、ほったらかしになっていました。

P67付近、GPUに関連する処理フロー、を読んでます。

CPUとGPUのフロー、描画キック、
P76 実際に何を並列させるか、など、すごく興味津々で読んでいます。


◎ゲームを動かす技術と発想:2,520円ゲームを動かす技術と発想 [単行本] / 堂前 嘉樹 (著); ソフトバンククリエイティブ (刊)


じゃあ、ちょっとフリンジを久しぶりに見るとするかー。

◎FRINGE / フリンジ 〈ファースト・シーズン〉セット1:1,000円FRINGE / フリンジ 〈ファースト・シーズン〉セット1 [DVD] / アナ・トーヴ, ジョシュア・ジャクソン, ジョン・ノーブル, ランス・レディック, ブレア・ブラウン (出演)


なんと、セット1が1000円になってるやん!
posted by アンドレアス at 21:36| Comment(0) | TrackBack(0) | C言語 | このブログの読者になる | 更新情報をチェックする

2013年02月20日

I succeded to compile by using '-lm' option of gcc when I use sqrt() by including math.h!


$ gcc -Wall -o pow -lm pow.c

$ gcc -o sincostan -lm sincostan.c


I understood this option -lm.


◎C言語逆引きハンドブック:3,150円C言語逆引きハンドブック [単行本(ソフトカバー)] / 林 晃 (著); シーアンドアール研究所 (刊)


◎エキスパートCプログラミング―知られざるCの深層:3,262円エキスパートCプログラミング―知られざるCの深層 (Ascii books) [単行本] / ピーター ヴァン・デ・リンデン (著); Peter van der Linden (原著); 梅原 系 (翻訳); アスキー (刊)
posted by アンドレアス at 00:58| Comment(0) | TrackBack(0) | C言語 | このブログの読者になる | 更新情報をチェックする

2013年02月06日

エンベデッドシステムスペシャリスト試験のための学習(その1)

参照:情報処理教科書 エンベデッドシステムスペシャリスト 2013年版 P57

●CPUアーキテクチャー

・CPU高速化アーキテクチャー

・バイプライン

・パイプラインバブル

・パイプラインハザード・・・3種類あり。

1.データハザード
2.構造ハザード
3.制御ハザード

・スーパパイプライン

・スーパスカラ

・アウトオブオーダ実行=>文字通り、順番関係ねぇー、という実行で、

CPUの処理に最適なように実行順番を替えることらしい。

いずれにしても、効率良くパイプラインを使うために、
滞らないように(待ちが発生しないように)しないといけない、ということ。


◎情報処理教科書 エンベデッドシステムスペシャリスト 2013年版:4,074円
情報処理教科書 エンベデッドシステムスペシャリスト 2013年版 [単行本(ソフトカバー)] / 牧 隆史, 松原 敬二 (著); 翔泳社 (刊)

posted by アンドレアス at 23:39| Comment(0) | TrackBack(0) | C言語 | このブログの読者になる | 更新情報をチェックする

2013年02月04日

「リンカ・ローダ実践開発テクニック」の、第2章ELF形式の解析、を朝から読む

■ELF形式の構造

・オブジェクトフォーマット
 組み込み分野では、COFF形式が多い
 PC-UNIXでは、ELF形式が多い。

・ELF32とELF64

・ELF
 セクションヘッダ
 プログラムヘッダ

 2重構造

・セグメント・・・あってもなくても、構わない
         ロードの単位。

・セクション・・・セグメントに必ず属する必要は無い。
         リンクの単位。リンカのために存在する

・オブジェクトファイルは、プログラムヘッダを持たない

・ELFヘッダ


◎リンカ・ローダ実践開発テクニック:2,940円リンカ・ローダ実践開発テクニック―実行ファイルを作成するために必須の技術 (COMPUTER TECHNOLOGY) [単行本] / 坂井 弘亮 (著); CQ出版 (刊)
posted by アンドレアス at 07:45| Comment(0) | TrackBack(0) | C言語 | このブログの読者になる | 更新情報をチェックする

2013年02月01日

「Cによる探索プログラミング 基礎から遺伝的アルゴリズムまで」を読む

自炊したおかげで、あれこれ、PCからPDFファイルを開いて
読めるのって、大きいです。

壊れても良い、3万円くらいのPCを買おうかなー。

iPadとかNEXUS7とは位置づけが違うけど。

◎Cによる探索プログラミング 基礎から遺伝的アルゴリズムまで:3,360円Cによる探索プログラミング―基礎から遺伝的アルゴリズムまで [単行本] / 伊庭 斉志 (著); オーム社 (刊)

posted by アンドレアス at 23:40| Comment(0) | TrackBack(0) | C言語 | このブログの読者になる | 更新情報をチェックする

2013年01月31日

「リンカ・ローダ実践開発テクニック」

今から「第2章ELF形式の解析」を読み始めます。



◎リンカ・ローダ実践開発テクニック:2,940円リンカ・ローダ実践開発テクニック―実行ファイルを作成するために必須の技術 (COMPUTER TECHNOLOGY) [単行本] / 坂井 弘亮 (著); CQ出版 (刊)
posted by アンドレアス at 21:41| Comment(0) | TrackBack(0) | C言語 | このブログの読者になる | 更新情報をチェックする

2013年01月30日

C Pointer,again!




$ cat pointer.c
#include

int main(void)
{
int hoge=5;
int piyo=10;
int *hoge_p;

printf("&hoge..%p\n",&hoge);
printf("&piyo..%p\n",&piyo);
printf("&hoge_p..%p\n",&hoge_p);

/* */
hoge_p = &hoge;
printf("hoge_p..%p\n",hoge_p);

/* */
printf("*hoge_p..%d\n",*hoge_p);

*hoge_p = 10;
printf("hoge..%d\n",hoge);

return 0;

}

--------------------------
$ gcc -o pointer pointer.c
--------------------------
$ ./pointer
&hoge..0x7fffebac2fcc
&piyo..0x7fffebac2fc8
&hoge_p..0x7fffebac2fc0
hoge_p..0x7fffebac2fcc
*hoge_p..5
hoge..10


◎ルーター自作でわかるパケットの流れ:1,974円
ルーター自作でわかるパケットの流れ [単行本(ソフトカバー)] / 小俣 光之 (著); 技術評論社 (刊)


◎C言語ポインタ完全制覇 :2,394円
ようやく今日から目を通せます。
1回目は、2日で一気に、読み通したいですね。
随所に、コードも書きながら。

C言語ポインタ完全制覇 (標準プログラマーズライブラリ) [単行本] / 前橋 和弥 (著); 技術評論社 (刊)


Good night!
posted by アンドレアス at 00:37| Comment(0) | TrackBack(0) | C言語 | このブログの読者になる | 更新情報をチェックする

2013年01月29日

「リンカ・ローダ実践開発テクニック」第1章リンカとローダの役割、より

朝から、読む。

リンカ・ローダ実践開発テクニック
第1章リンカとローダの役割

・リンカ、リンク

・実行形式

・スタートアップルーチン

・gcc hello.c -Wall -o hello -v

・crt = C RunTime start up


・cclが、正しい意味でのコンパイラ。

 gccは、コンパイラ・ドライバ、と言う方が正確

・コンパイルとリンクは、別のもの。

・実行ファイル

 以前      最近
 a.out形式 --------> ELF形式
(Assembler output) (Executable and linking format)

・sizeコマンド

3つの領域
- text
- data
- bss(block started by symbol)

・ローダ

・ELF形式は、任意数の「セクション」を持つ。
 様々な属性を領域に持たせることができる。

・「領域」「セクション」「セグメント」

言葉の使い分けに注意する。

・VMAとLMA

VMA :Viirtual Memory Address : セクションをリンクする時にベースとなるアドレス
LMA : Load Memory Address : セクションを展開する先のアドレス

objdump -h hello

・a.out形式用sizeコマンドとELF形式用sizeコマンドの違いに注意。


◎リンカ・ローダ実践開発テクニック:2,940円リンカ・ローダ実践開発テクニック―実行ファイルを作成するために必須の技術 (COMPUTER TECHNOLOGY) [単行本] / 坂井 弘亮 (著); CQ出版 (刊)
posted by アンドレアス at 08:13| Comment(0) | TrackBack(0) | C言語 | このブログの読者になる | 更新情報をチェックする

2013年01月28日

今月号のInterface 2013年3月号は、フレッシャーズ準備号、と銘打たれていて、「特集 入門 絵とき!マイコン」です。マイコンとなってますが、Linuxカーネルの理解にもつながる、クロックとかデータ&命令のメモリ読み書きとか、仮想化案件・クラウド案件に関わるサーバエンジニアにも、絶対役立つ内容です。

面白いなー、と思って、これ読んでたんですが・・・

http://www.kumikomi.net/archives/2013/01/in05nys5.php


で、今月号のInterface 2013年3月号を、今、ぱらっと読んでいると、
4ページに、この アークスさんの「10GビットEthernetシステム」の話が
出ていて、ビックリ。

おそるべき、シンクロ。

偶然にしても、すごい。

れにしても、ここ最近のInterfceの面白さと、わかりやすさ、
価格の安さは、素晴らしいとしか言いようがありません。


定期購読状態に突入しそうです。



◎Interface (インターフェース) 2013年 03月号:980円
Interface (インターフェース) 2013年 03月号 [雑誌] [雑誌] / CQ出版 (刊)


◎Interface (インターフェース) 2013年 02月号:980円Interface (インターフェース) 2013年 02月号 [雑誌] [雑誌] / CQ出版 (刊)


◎Interface (インターフェース) 2013年 01月号:980円Interface (インターフェース) 2013年 01月号 [雑誌] [雑誌] / CQ出版 (刊)
posted by アンドレアス at 00:55| Comment(0) | TrackBack(0) | C言語 | このブログの読者になる | 更新情報をチェックする

2013年01月25日

「組込みユーザのための アセンブリ/C言語読本」を読みながら、C言語プログラムの動作解析を学習する

3章 C言語プログラムの動作解析、
を読んでます。

多次元配列や抽象化のところなど、
参考になります。


◎組込みユーザのための アセンブリ/C言語読本:2,730円組込みユーザのための アセンブリ/C言語読本 [単行本(ソフトカバー)] / 橋本 洋志, 小林 裕之, 冨永 和人 (著); オーム社 (刊)
posted by アンドレアス at 01:51| Comment(0) | TrackBack(0) | C言語 | このブログの読者になる | 更新情報をチェックする

2013年01月20日

Linuxデバイスドライバ関連・・・「Linux デバイスドライバプログラミング」を読んで、メモリを学ぶ。自問自答可能なように、Q&A形式にしました。

いつでも使えるように、また、記憶脳を刺激できるように
自問自答可能にしました。


Q1.ページングとは、何ですか?

OSのメモリ管理の仕組み。最近のOSは、これを使用している。

Q2.ページングで使用されるハードウェアのしくみは、CPUと何?

MMU(Memory Management Unit)

Q3.ページングで使用する物理メモリの管理単位は、何?

ページ。常にページサイズ単位で物理メモリが確保されます。



Q4.ページは、固定長ですか?

はい。

Q4.Linuxのページサイズは、どれくらいの大きさですか?

IA-32:4KB(4096バイト)
64bit:


Q5.レガシーハードウェア互換性のために、物理メモリ上で、アクセスできない範囲を何と呼ぶか?

メモリホール



Q6.バディシステム(バディアロケータ)とは、何か?

物理メモリをページ単位で管理するしくみ、の名称。



Q7.OS内のモジュールから、128バイトのメモリを要求された場合、何ページを返すか?


1ページ。



Q8.ゾーンには、3種類ある。各々のゾーン名は、何か?

・DMA :16MB未満
・Normal :16MN〜896MB
・HighMem :896MB



Q9.ドライバからのメモリ管理を容易に行うために、用意されているインターフェイス名は何か?

スラブアロケータ。




Q10.スラブアロケータの3つのアルゴリズムを答えよ。


・SLAB
・SLOB
・SLUB・・・Linux2.6.23.1のデフォルト




Q11.スラブアロケータの使用状況がわかるコマンドは?

/proc/slabinfo



この辺で、いったん、C言語の「ポインタ本」を読んだ方がいいな。
スタックとか

つづく・・・・・・・・・。


◎Linuxデバイスドライバ 第3版:5,775円Linuxデバイスドライバ 第3版 [単行本] / Jonathan Corbet, Alessandro Rubini, Greg Kroah-Hartman (著); 山崎 康宏, 山崎 邦子, 長原 宏治, 長原 陽子 (翻訳); オライリージャパン (刊)

posted by アンドレアス at 17:11| Comment(0) | TrackBack(0) | C言語 | このブログの読者になる | 更新情報をチェックする

2013年01月15日

Linuxデバイスドライバ関連・・・「Linux デバイスドライバプログラミング」を読んで、メモリを学ぶ。バディシステムとかスラブアロケータとか。

参照:Linuxデバイスドライバプログラミング第8章メモリ

# cat /proc/buddyinfo
Node 0, zone DMA 1 1 0 0 2 1 1 0 1 1 3
Node 0, zone DMA32 7 9 4 8 7 6 9 5 3 5 654
Node 0, zone Normal 5105 2829 1070 1979 923 433 242 139 85 21 2858


# cat /proc/slabinfo
slabinfo - version: 2.1
# name : tunables : slabdata
nf_conntrack_ffff88041b960000 0 0 312 26 2 : tunables 0 0 0 : slabdata 0 0 0
fuse_request 208 208 608 26 4 : tunables 0 0 0 : slabdata 8 8 0
fuse_inode 1196 1196 704 23 4 : tunables 0 0 0 : slabdata 52 52 0
rpc_inode_cache 0 0 640 25 4 : tunables 0 0 0 : slabdata 0 0 0
nf_conntrack_expect 0 0 240 34 2 : tunables 0 0 0 : slabdata 0 0 0
nf_conntrack_ffffffff81ca1b00 728 728 312 26 2 : tunables 0 0 0 : slabdata 28 28 0
ib_mad 0 0 448 36 4 : tunables 0 0 0 : slabdata 0 0 0
kvm_async_pf 0 0 144 28 1 : tunables 0 0 0 : slabdata 0 0 0
kvm_vcpu 0 0 15616 2 8 : tunables 0 0 0 : slabdata 0 0 0
kvm_mmu_page_header 0 0 168 24 1 : tunables 0 0 0 : slabdata 0 0 0
UDPLITEv6 0 0 1088 30 8 : tunables 0 0 0 : slabdata 0 0 0
UDPv6 180 180 1088 30 8 : tunables 0 0 0 : slabdata 6 6 0
tw_sock_TCPv6 0 0 256 32 2 : tunables 0 0 0 : slabdata 0 0 0
TCPv6 96 96 1984 16 8 : tunables 0 0 0 : slabdata 6 6 0
dm_raid1_read_record 0 0 1064 30 8 : tunables 0 0 0 : slabdata 0 0 0
dm_snap_pending_exception 0 0 104 39 1 : tunables 0 0 0 : slabdata 0 0 0
kcopyd_job 0 0 3240 10 8 : tunables 0 0 0 : slabdata 0 0 0
dm_uevent 0 0 2608 12 8 : tunables 0 0 0 : slabdata 0 0 0
dm_rq_target_io 0 0 416 39 4 : tunables 0 0 0 : slabdata 0 0 0
cfq_queue 280 280 232 35 2 : tunables 0 0 0 : slabdata 8 8 0
bsg_cmd 0 0 312 26 2 : tunables 0 0 0 : slabdata 0 0 0
mqueue_inode_cache 72 72 896 36 8 : tunables 0 0 0 : slabdata 2 2 0
isofs_inode_cache 0 0 608 26 4 : tunables 0 0 0 : slabdata 0 0 0
hugetlbfs_inode_cache 81 81 600 27 4 : tunables 0 0 0 : slabdata 3 3 0
jbd2_journal_handle 1360 1360 24 170 1 : tunables 0 0 0 : slabdata 8 8 0
jbd2_journal_head 2124 2124 112 36 1 : tunables 0 0 0 : slabdata 59 59 0
jbd2_revoke_record_s 896 896 32 128 1 : tunables 0 0 0 : slabdata 7 7 0
ext4_inode_cache 22200 22200 880 37 8 : tunables 0 0 0 : slabdata 600 600 0
ext4_xattr 230 230 88 46 1 : tunables 0 0 0 : slabdata 5 5 0
ext4_free_data 576 576 64 64 1 : tunables 0 0 0 : slabdata 9 9 0
ext4_allocation_context 6390 6390 136 30 1 : tunables 0 0 0 : slabdata 213 213 0
ext4_io_end 232 232 1128 29 8 : tunables 0 0 0 : slabdata 8 8 0
ext4_io_page 6656 6656 16 256 1 : tunables 0 0 0 : slabdata 26 26 0
configfs_dir_cache 0 0 88 46 1 : tunables 0 0 0 : slabdata 0 0 0
dquot 256 256 256 32 2 : tunables 0 0 0 : slabdata 8 8 0
dio 100 100 640 25 4 : tunables 0 0 0 : slabdata 4 4 0
pid_namespace 30 30 2128 15 8 : tunables 0 0 0 : slabdata 2 2 0
UDP-Lite 0 0 896 36 8 : tunables 0 0 0 : slabdata 0 0 0
ip_fib_trie 292 292 56 73 1 : tunables 0 0 0 : slabdata 4 4 0
UDP 288 288 896 36 8 : tunables 0 0 0 : slabdata 8 8 0
tw_sock_TCP 336 336 192 21 1 : tunables 0 0 0 : slabdata 16 16 0
TCP 306 306 1792 18 8 : tunables 0 0 0 : slabdata 17 17 0
blkdev_queue 48 48 1984 16 8 : tunables 0 0 0 : slabdata 3 3 0
blkdev_requests 886 987 376 21 2 : tunables 0 0 0 : slabdata 47 47 0
fsnotify_event_holder 1360 1360 24 170 1 : tunables 0 0 0 : slabdata 8 8 0
fsnotify_event 1054 1054 120 34 1 : tunables 0 0 0 : slabdata 31 31 0
bip-256 7 7 4224 7 8 : tunables 0 0 0 : slabdata 1 1 0
bip-128 0 0 2176 15 8 : tunables 0 0 0 : slabdata 0 0 0
bip-64 0 0 1152 28 8 : tunables 0 0 0 : slabdata 0 0 0
bip-16 42 42 384 21 2 : tunables 0 0 0 : slabdata 2 2 0
sock_inode_cache 875 875 640 25 4 : tunables 0 0 0 : slabdata 35 35 0
net_namespace 20 20 3008 10 8 : tunables 0 0 0 : slabdata 2 2 0
shmem_inode_cache 2256 2256 664 24 4 : tunables 0 0 0 : slabdata 94 94 0
Acpi-State 408 408 80 51 1 : tunables 0 0 0 : slabdata 8 8 0
Acpi-Namespace 2652 2652 40 102 1 : tunables 0 0 0 : slabdata 26 26 0
taskstats 192 192 328 24 2 : tunables 0 0 0 : slabdata 8 8 0
proc_inode_cache 3666 3666 624 26 4 : tunables 0 0 0 : slabdata 141 141 0
sigqueue 225 225 160 25 1 : tunables 0 0 0 : slabdata 9 9 0
bdev_cache 273 273 832 39 8 : tunables 0 0 0 : slabdata 7 7 0
sysfs_dir_cache 22068 22068 112 36 1 : tunables 0 0 0 : slabdata 613 613 0
inode_cache 11049 11049 560 29 4 : tunables 0 0 0 : slabdata 381 381 0
dentry 53445 53592 192 21 1 : tunables 0 0 0 : slabdata 2552 2552 0
selinux_inode_security 12188 12544 72 56 1 : tunables 0 0 0 : slabdata 224 224 0
buffer_head 36855 36855 104 39 1 : tunables 0 0 0 : slabdata 945 945 0
vm_area_struct 17586 17871 176 23 1 : tunables 0 0 0 : slabdata 777 777 0
mm_struct 324 324 896 36 8 : tunables 0 0 0 : slabdata 9 9 0
files_cache 230 230 704 23 4 : tunables 0 0 0 : slabdata 10 10 0
signal_cache 360 360 1088 30 8 : tunables 0 0 0 : slabdata 12 12 0
sighand_cache 315 315 2112 15 8 : tunables 0 0 0 : slabdata 21 21 0
task_xstate 975 975 832 39 8 : tunables 0 0 0 : slabdata 25 25 0
task_struct 366 405 5904 5 8 : tunables 0 0 0 : slabdata 81 81 0
anon_vma 7051 7672 72 56 1 : tunables 0 0 0 : slabdata 137 137 0
shared_policy_node 12113 13770 48 85 1 : tunables 0 0 0 : slabdata 162 162 0
numa_policy 1260 1260 136 30 1 : tunables 0 0 0 : slabdata 42 42 0
radix_tree_node 9540 9716 568 28 4 : tunables 0 0 0 : slabdata 347 347 0
idr_layer_cache 1260 1260 544 30 4 : tunables 0 0 0 : slabdata 42 42 0
dma-kmalloc-8192 0 0 8192 4 8 : tunables 0 0 0 : slabdata 0 0 0
dma-kmalloc-4096 0 0 4096 8 8 : tunables 0 0 0 : slabdata 0 0 0
dma-kmalloc-2048 0 0 2048 16 8 : tunables 0 0 0 : slabdata 0 0 0
dma-kmalloc-1024 0 0 1024 32 8 : tunables 0 0 0 : slabdata 0 0 0
dma-kmalloc-512 32 32 512 32 4 : tunables 0 0 0 : slabdata 1 1 0
dma-kmalloc-256 0 0 256 32 2 : tunables 0 0 0 : slabdata 0 0 0
dma-kmalloc-128 0 0 128 32 1 : tunables 0 0 0 : slabdata 0 0 0
dma-kmalloc-64 0 0 64 64 1 : tunables 0 0 0 : slabdata 0 0 0
dma-kmalloc-32 0 0 32 128 1 : tunables 0 0 0 : slabdata 0 0 0
dma-kmalloc-16 0 0 16 256 1 : tunables 0 0 0 : slabdata 0 0 0
dma-kmalloc-8 0 0 8 512 1 : tunables 0 0 0 : slabdata 0 0 0
dma-kmalloc-192 0 0 192 21 1 : tunables 0 0 0 : slabdata 0 0 0
dma-kmalloc-96 0 0 96 42 1 : tunables 0 0 0 : slabdata 0 0 0
kmalloc-8192 68 72 8192 4 8 : tunables 0 0 0 : slabdata 18 18 0
kmalloc-4096 234 240 4096 8 8 : tunables 0 0 0 : slabdata 30 30 0
kmalloc-2048 1062 1088 2048 16 8 : tunables 0 0 0 : slabdata 68 68 0
kmalloc-1024 1728 1728 1024 32 8 : tunables 0 0 0 : slabdata 54 54 0
kmalloc-512 2035 2208 512 32 4 : tunables 0 0 0 : slabdata 69 69 0
kmalloc-256 7428 7872 256 32 2 : tunables 0 0 0 : slabdata 246 246 0
kmalloc-128 2592 2592 128 32 1 : tunables 0 0 0 : slabdata 81 81 0
kmalloc-64 11904 11904 64 64 1 : tunables 0 0 0 : slabdata 186 186 0
kmalloc-32 5760 5760 32 128 1 : tunables 0 0 0 : slabdata 45 45 0
kmalloc-16 6656 6656 16 256 1 : tunables 0 0 0 : slabdata 26 26 0
kmalloc-8 11264 11264 8 512 1 : tunables 0 0 0 : slabdata 22 22 0
kmalloc-192 3427 3570 192 21 1 : tunables 0 0 0 : slabdata 170 170 0
kmalloc-96 4326 4326 96 42 1 : tunables 0 0 0 : slabdata 103 103 0
kmem_cache 32 32 256 32 2 : tunables 0 0 0 : slabdata 1 1 0
kmem_cache_node 448 448 64 64 1 : tunables 0 0 0 : slabdata 7 7 0


4Kスタック


◎Linuxデバイスドライバプログラミング:4,725円
>Linuxデバイスドライバプログラミング [大型本] / 平田 豊 (著); ソフトバンククリエイティブ (刊)

IPMIに関する解説が、わかりやすく&詳しく出ている書籍は少ないですので、
この本は貴重です。




◎Linuxデバイスドライバ 第3版:5,775円Linuxデバイスドライバ 第3版 [単行本] / Jonathan Corbet, Alessandro Rubini, Greg Kroah-Hartman (著); 山崎 康宏, 山崎 邦子, 長原 宏治, 長原 陽子 (翻訳); オライリージャパン (刊)
posted by アンドレアス at 23:49| Comment(0) | TrackBack(0) | C言語 | このブログの読者になる | 更新情報をチェックする

2013年01月14日

「マルチコアCPUのための並列プログラミング」を買ってきました。合わせて「CUDA 高速GPUプログラミング入門」も。

スイッチをつくるぞー、ということで、せっかくC言語をやっているので、
以下の2冊も買ってきました。

◎マルチコアCPUのための並列プログラミング:3,360円
マルチコアCPUのための並列プログラミング―並列処理&マルチスレッド入門 [単行本] / 安田 絹子, 飯塚 博道, 青柳 信吾, 小林 林広, 阿部 貴之 (著); フィックスターズ (編集); 秀和システム (刊)



◎CUDA 高速GPUプログラミング入門:円
CUDA高速GPUプログラミング入門 [単行本] / 岡田 賢治 (著); 小山田 耕二 (監修); 秀和システム (刊)


今年は、「趣味レベル」でGPUプログラミングをやろうかなーと
思ってます。

posted by アンドレアス at 00:11| Comment(0) | TrackBack(0) | C言語 | このブログの読者になる | 更新情報をチェックする

2012年12月18日

C言語、ポインタ,malloc(),free(),strcpy,strncpyなど

「本当は怖いC言語」のP504まで。

早起きすると、時間が有効に使えますね。
仕事中に寝ないようにしないとな(^^)。


■参考:make -f Makefile.strlen_testという具合に使用します。


---------------------
Makefile.strlen_test
---------------------
PROGRAM = strlen_test
OBJS = strlen_test.o
SRCS = $(OBJS:%.o=%.c)
CC = gcc
CFLAGS = -g -Wall
LDFLAGS =

$(PROGRAM):$(OBJS)
$(CC) $(CFLAGS) $(LDFLAGS) -o $(PROGRAM) $(OBJS) $(LDLIBS)


◎ルーター自作でわかるパケットの流れ:1,974円
ルーター自作でわかるパケットの流れ [単行本(ソフトカバー)] / 小俣 光之 (著); 技術評論社 (刊)


◎C言語ポインタ完全制覇 :2,394円
アマゾンのレビュー評価が高いのは、正当な評価だと思います。
非常に面白いです。
C言語ポインタ完全制覇 (標準プログラマーズライブラリ) [単行本] / 前橋 和弥 (著); 技術評論社 (刊)

posted by アンドレアス at 07:30| Comment(0) | TrackBack(0) | C言語 | このブログの読者になる | 更新情報をチェックする

2012年12月17日

C言語学習メモ、ポインタと配列、仮想アドレスに関して

学習メモです。

1. p[i] は、*(p + i)の簡便記法である。

[]には、もともと、そういう意味しかない。配列とは無関係。
(あくまで、式の中の[]の話)

2. 関数の仮引数の宣言に限り、配列の宣言は、ポインタに読み替えられる。
  要素数が入っていても無視される。
  これも、シンタックスシュガーの1つ。


P70「なぜCは、配列の範囲チェックをしてくれないのか?」
キーワード:領域破壊

P74〜  2.1 仮想アドレス

P82〜  Cでは、メモリ領域の寿命が3種類ある。

・静的変数
・自動変数
・malloc()



◎ルーター自作でわかるパケットの流れ:1,974円
ルーター自作でわかるパケットの流れ [単行本(ソフトカバー)] / 小俣 光之 (著); 技術評論社 (刊)


◎C言語ポインタ完全制覇 :2,394円
アマゾンのレビュー評価が高いのは、正当な評価だと思います。
非常に面白いです。
C言語ポインタ完全制覇 (標準プログラマーズライブラリ) [単行本] / 前橋 和弥 (著); 技術評論社 (刊)

posted by アンドレアス at 01:35| Comment(0) | TrackBack(0) | C言語 | このブログの読者になる | 更新情報をチェックする

2012年12月13日

寝る前にC言語を学ぶ。「固定長の入出力」fread(3)fwrite(3)

「固定長の入出力」を読み終えたら、寝ます。
fread(3)

fwrite(3)


◎ふつうのLinuxプログラミング Linuxの仕組みから学べるgccプログラミングの王道:2,940円
ふつうのLinuxプログラミング Linuxの仕組みから学べるgccプログラミングの王道 [単行本] / 青木 峰郎 (著); ソフトバンククリエイティブ (刊)




◎ルーター自作でわかるパケットの流れ:1,974円
ルーター自作でわかるパケットの流れ [単行本(ソフトカバー)] / 小俣 光之 (著); 技術評論社 (刊)


今年も残り少ないですが、
C言語でスイッチ作成、ルータ作成を中心に行う予定です。


来年からの大きな深みのある知識・経験につながるように
数段のレベルアップ、「進化」しないといけません。



◎C言語による スーパーLinuxプログラミング Cライブラリの活用と実装・開発テクニック:3,570円
C言語による スーパーLinuxプログラミング Cライブラリの活用と実装・開発テクニック [単行本] / 飯尾 淳 (著); ソフトバンククリエイティブ (刊)

明日が終われば、2日休みだな。



◎ Linuxネットワークプログラミングバイブル:3,990円
Linuxネットワークプログラミングバイブル [単行本] / 小俣 光之, 種田 元樹 (著); 秀和システム (刊)


◎苦しんで覚えるC言語:2,310円
苦しんで覚えるC言語 [単行本] / MMGames (著); 秀和システム (刊)


◎本当は怖いC言語:2,520円
本当は怖いC言語 [単行本] / 種田 元樹 (著); 秀和システム (刊)

P128
feof(3)・・・使ってはいけない、と書いているぞ。(^^)

ferror(3)・・・ほとんど使わない関数らしい。

clearerr・・・ときどき必要。


おしまい。寝ます。
posted by アンドレアス at 23:33| Comment(0) | TrackBack(0) | C言語 | このブログの読者になる | 更新情報をチェックする

2012年12月11日

そう、今朝は、早起きして、ポインタの学習してました。復習というべきか。

明日も、朝起きて、ポインタ学習です。

来年は、ますますクラウド・SDN・OpenFlowというキーワードを、
毎日のように耳にすることと思いますが、
キーとなるのは、C言語だと自分は思っています。


◎C言語ポインタ完全制覇 :2,394円
復習ですが、1章は、「自炊」してPDFにしてもいいかな、もう。
やはり、さすがに、先月の記憶は残ってました(^^)

C言語ポインタ完全制覇 (標準プログラマーズライブラリ) [単行本] / 前橋 和弥 (著); 技術評論社 (刊)


◎ルーター自作でわかるパケットの流れ:1,974円
ルーター自作でわかるパケットの流れ [単行本(ソフトカバー)] / 小俣 光之 (著); 技術評論社 (刊)

posted by アンドレアス at 23:50| Comment(0) | TrackBack(0) | C言語 | このブログの読者になる | 更新情報をチェックする

2012年12月10日

OpenvSwitchのソース・リーディング(その1)

なかなか、時間が無いんですが、
今から、1時30分までソース読みです。


いつもは、tar.gzファイルをDLするんですが、
2013年のことも考えて、git cloneしました。

◎ルーター自作でわかるパケットの流れ:1,974円
ルーター自作でわかるパケットの流れ [単行本(ソフトカバー)] / 小俣 光之 (著); 技術評論社 (刊)


今年も残り少ないですが、
C言語でスイッチ作成、ルータ作成を中心に行う予定です。


来年からの大きな深みのある知識・経験につながるように
数段のレベルアップ、「進化」しないといけません。



◎C言語による スーパーLinuxプログラミング Cライブラリの活用と実装・開発テクニック:3,570円
C言語による スーパーLinuxプログラミング Cライブラリの活用と実装・開発テクニック [単行本] / 飯尾 淳 (著); ソフトバンククリエイティブ (刊)


ひとまず、

$cd openvswitch/lib へ移動。

まず、ヘッダファイルを見ていきます。

1.ovsdb-types.h
この23行目でincludeしている
#include "uuid.h"
を見たんですが、UUIDって、適当に使用されているのかと
思ってたら、RFCで定義4122で定義されているんですね。

Universally Unique IDentifier (UUID) compliant with RFC 4122

■参考:http://www.ietf.org/rfc/rfc4122.txt

2.packets.h

Ethernet,IP,TCP,などのheaderなどの値が
定義されています。

122行目にniciraランダム、とかありますね。

static inline void eth_addr_nicira_random(uint8_t ea[ETH_ADDR_LEN])

360には、 ICMPの定義あり。


◎ Linuxネットワークプログラミングバイブル:3,990円
Linuxネットワークプログラミングバイブル [単行本] / 小俣 光之, 種田 元樹 (著); 秀和システム (刊)


◎苦しんで覚えるC言語:2,310円
苦しんで覚えるC言語 [単行本] / MMGames (著); 秀和システム (刊)


◎本当は怖いC言語:2,520円
本当は怖いC言語 [単行本] / 種田 元樹 (著); 秀和システム (刊)

おしまい。寝ます。
posted by アンドレアス at 00:25| Comment(0) | TrackBack(0) | C言語 | このブログの読者になる | 更新情報をチェックする

2012年11月16日

C言語 Autotoolset活用で、 configureスクリプト・Makefileを作成してみるには、このようにする

OS:Fedora17

1.事前定義マクロ(Predefined macro)の一覧を見る

$ echo | cpp -dM | grep linux
#define __linux 1
#define __linux__ 1
#define __gnu_linux__ 1
#define linux 1


2.Autotoolset活用による開発の実際
aclocal -> autoconf -> automake -> ./configure -> make

---------------------
list0423.c
---------------------

#include

int main()
{
printf("Hello world!\n");
return 0;
}

---------------------
Makefile.am
---------------------

bin_PROGRAMS = hello
hello_SOURCES = list0423.c

---------------------
configure.in
---------------------

AC_INIT(hello,0.1)
AC_PREREQ(2.68)
AC_CONFIG_SRCDIR(list0423.c)
AM_INIT_AUTOMAKE
AC_PROG_CC
AC_PROG_INSTALL
AC_OUTPUT(Makefile)

参照:「C言語による スーパーLinuxプログラミング Cライブラリの活用と実装・開発テクニック」
  P72〜P73付近
注)
書籍では、AC_PREREQ(2.65) です。
私が使用しているFedora17にインストールされている
autoconfのバージョンが、2.68なので、
AC_PREREQ(2.68) となってます。

◎C言語による スーパーLinuxプログラミング Cライブラリの活用と実装・開発テクニック:3,570円
C言語による スーパーLinuxプログラミング Cライブラリの活用と実装・開発テクニック [単行本] / 飯尾 淳 (著); ソフトバンククリエイティブ (刊)





◎ルーター自作でわかるパケットの流れ:1,974円
ルーター自作でわかるパケットの流れ [単行本(ソフトカバー)] / 小俣 光之 (著); 技術評論社 (刊)


◎C言語ポインタ完全制覇 :2,394円
アマゾンのレビュー評価が高いのは、正当な評価だと思います。
非常に面白いです。
C言語ポインタ完全制覇 (標準プログラマーズライブラリ) [単行本] / 前橋 和弥 (著); 技術評論社 (刊)
posted by アンドレアス at 08:14| Comment(0) | TrackBack(0) | C言語 | このブログの読者になる | 更新情報をチェックする

2012年11月10日

ソフトウェアL2スイッチ(ブリッジ)をつくる(その14)・・

自動変数(スタック)のところですが、
すごく、理解が進んだ気がします。

先週の自分より確実に頭が良くなった気がする(勘違いか(^^))。

再起呼び出し、まで来ましたが、
いったん、寝ます。

スタックのオーバーフローが、
本当にメモリを見つつ、意味がわかった。
ちょっとだけ、成長したな。たぶん・・・・。

やっぱ、もっともっと、学習せねば、いかんですね。


■超良書「C言語ポインタ完全制覇」P74〜P109を参照して下さいな。

◎ルーター自作でわかるパケットの流れ:1,974円
ルーター自作でわかるパケットの流れ [単行本(ソフトカバー)] / 小俣 光之 (著); 技術評論社 (刊)


◎C言語ポインタ完全制覇 :2,394円
アマゾンのレビュー評価が高いのは、正当な評価だと思います。
非常に面白いです。
C言語ポインタ完全制覇 (標準プログラマーズライブラリ) [単行本] / 前橋 和弥 (著); 技術評論社 (刊)
posted by アンドレアス at 02:31| Comment(0) | TrackBack(0) | C言語 | このブログの読者になる | 更新情報をチェックする

2012年11月09日

ソフトウェアL2スイッチ(ブリッジ)をつくる(その13)・・グローバル変数、static変数、ローカル変数、mallocで確保するメモリ領域などを表示してみた

変数やmalloc()で確保されたアドレスを
表示させたのが、下記です。
関数の場合、
式の中では、関数のポインタが、
先頭アドレスとして表示されてます。

ここまでやると、よくわかります。
memoryにアサインされる時に、
近い位置にアサインされるものを見ると、
あーー、なるほどと感心します。


$ ./print_address
&func1 .. 0x40052c
&func2 .. 0x400560
string literal .. 0x400748
&global_variable .. 0x600b08
&file_static_variable .. 0x600b00
&func1_variable .. 0x7fffc440123c
&func1_static_variable .. 0x600b04
&func2_variable .. 0x7fffc440123c
malloc address .. 0xac1010


実際は、物理アドレスではなく、
仮想アドレスみたいですが・・・。

超良書「C言語ポインタ完全制覇」P80〜P86を参照して下さいな。
アマゾンのレビュー評価が高いのは、正当な評価だと思います。

非常に面白いです。





◎ルーター自作でわかるパケットの流れ:1,974円
ルーター自作でわかるパケットの流れ [単行本(ソフトカバー)] / 小俣 光之 (著); 技術評論社 (刊)


◎C言語ポインタ完全制覇 :2,394円
ようやく今日から目を通せます。
1回目は、2日で一気に、読み通したいですね。
随所に、コードも書きながら。

C言語ポインタ完全制覇 (標準プログラマーズライブラリ) [単行本] / 前橋 和弥 (著); 技術評論社 (刊)



今月の日経Linuxの最後の方のページで、OOM Killerの話が
出てますが、ここ数日、メモリの使用に関する理解が、
前よりは進んだので、せっかくだから、
別のブログにしてしまおうかな。

Linux とメモリ、とか適当なブログ名で。わーい(嬉しい顔)
posted by アンドレアス at 23:40| Comment(0) | TrackBack(0) | C言語 | このブログの読者になる | 更新情報をチェックする

2012年11月08日

ソフトウェアL2スイッチ(ブリッジ)をつくる(その12)・・Packetキャプチャーになると、急に内容がレベルアップしたが、これを乗り越えないと

packetのアナライズをするソースは、
ある一定パターンになっていますが、
これは、2、3日見続けて理解しないと、
なかなか、わかりにくいですね。

/usr/include/net/以下のヘッダーファイルは、
毎日見ないといけないな。



◎ルーター自作でわかるパケットの流れ:1,974円
ルーター自作でわかるパケットの流れ [単行本(ソフトカバー)] / 小俣 光之 (著); 技術評論社 (刊)


◎C言語ポインタ完全制覇 :2,394円
ようやく今日から目を通せます。
1回目は、2日で一気に、読み通したいですね。
随所に、コードも書きながら。

C言語ポインタ完全制覇 (標準プログラマーズライブラリ) [単行本] / 前橋 和弥 (著); 技術評論社 (刊)
posted by アンドレアス at 22:55| Comment(0) | TrackBack(0) | C言語 | このブログの読者になる | 更新情報をチェックする

2012年11月07日

ソフトウェアL2スイッチ(ブリッジ)をつくる(その11)・・memset,strncpy関数を理解しようとしていたら、mallocとfree関数の深い話を読むことになった

ブリッジのポートから入ったデータを
別のポートにコピーする部分です。(の、はず。(^^))


■データのコピー。
・スタック:自動変数。
・ヒープ:この場合は、こっちです。
     malloc()関数を使いメモリを確保する。


・メモリを確保する関数 malloc()
 システムから正式な手続きで、メモリを借りる関数。

・メモリを確保できたら voidポインタが返る。
 確保できないと、NULLポインタが返る。

■備考
ところで、P506〜P508の話は、深い〜です。

「本当にここで、free()して良いのか?」というところ、です。
でも、そうすると、
その判断は、一体何を基準にすれば、良いのだろうか? 
と思ってしまいますね。

free使用直後では、何も問題が起きないことが多い
と書かれてますが。。
(直後、って何秒後とか、具体的に表現すると、どう表現できるのかな?)



==================
memory.c
==================
(途中省略)

printf("one_string=%p\n",one_string);
free(one_string);

printf("one_string=%p\n",one_string);
/* test after free() */
strncpy(one_string,"hello,world\n",14-1);
one_string[14-1] = '\0';
/* test after free() */
int *ptr = malloc(sizeof(int));
*ptr = 2147483647;


/* 以下は、わかりやすく表示させるため、書籍より多くprintfしてます。*/
printf("%d\n",*ptr);
printf("*ptr=%p\n",ptr);
printf("%s",one_string);
printf("one_string=%p\n",one_string);

return 0;
}


$ ./memory
Memory allocation error!
one_string=(nil)
one_string=0x7f0e600008c0
hello,world
one_string=0x7f0e600008c0
one_string=0x7f0e600008c0
2147483647
*ptr=0x7f0e600008c0
���o,world
one_string=0x7f0e600008c0




■以下は、ブリッジのソース部分です。
 memsetとstrncpyを理解できれば、それで良いと思ったけど、
 malloc()の話の深さを考えると、もっと、学ばねば・・・。
 ついでに、calloc()も、やっておこうかな。

extern int InitRawSocket(char *device,int promiscFlag,int ipOnly)
{

memset(&ifreq,0,sizeof(struct ifreq));
strncpy(ifreq.ifr_name,device,sizeof(ifreq.ifr_name)-1);

}


◎本当は怖いC言語:2,520円
うーーむ、この本は、非常におもしろい。
買って良かった!

本当は怖いC言語 [単行本] / 種田 元樹 (著); 秀和システム (刊)

◎ルーター自作でわかるパケットの流れ:1,974円
ルーター自作でわかるパケットの流れ [単行本(ソフトカバー)] / 小俣 光之 (著); 技術評論社 (刊)



◎ Linuxネットワークプログラミングバイブル:3,990円
Linuxネットワークプログラミングバイブル [単行本] / 小俣 光之, 種田 元樹 (著); 秀和システム (刊)


◎苦しんで覚えるC言語:2,310円
苦しんで覚えるC言語 [単行本] / MMGames (著); 秀和システム (刊)




posted by アンドレアス at 18:18| Comment(0) | TrackBack(0) | C言語 | このブログの読者になる | 更新情報をチェックする

ソフトウェアL2スイッチ(ブリッジ)をつくる(その10)・・ブリッジで使用する関数の引数が、どのヘッダーファイルに記載されているかを追う。

1.
int PrintEtherHeader(struct ether_header *eh,FILE *fp)
で引数となっている、
struct ether_header *eh は、

/usr/include/linux/if_ether.h の128行目

struct ethhdr {
unsigned char h_dest[ETH_ALEN]; /* destination eth addr */
unsigned char h_source[ETH_ALEN]; /* source ether addr */
__be16 h_proto; /* packet type ID field */
} __attribute__((packed));

ここのETH_ALENは、
同じ /usr/include/linux/if_ether.h の
#define ETH_ALEN 6
で定義されています。

コメントに、

Octets in one ethernet addr

とあるように、6オクテットを意味するようです。
6バイトのことですね。


2./usr/include/sys/socket.h の

21行目

#ifndef _SYS_SOCKET_H
#define _SYS_SOCKET_H 1

は、定義済みか、未定義かを調べて、
未定義なら(_SYS_SOCKET_H == 0なら。_SYS_SOCKET_H ==1ではない、なら。)、
_SYS_SOCKET_H を1として定義しろ、という処理になります。



■参照:「C言語による スーパーLinuxプログラミング Cライブラリの活用と実装・開発テクニック」P35〜48

◎C言語による スーパーLinuxプログラミング Cライブラリの活用と実装・開発テクニック:3,570円
C言語による スーパーLinuxプログラミング Cライブラリの活用と実装・開発テクニック [単行本] / 飯尾 淳 (著); ソフトバンククリエイティブ (刊)


◎ルーター自作でわかるパケットの流れ:1,974円
ルーター自作でわかるパケットの流れ [単行本(ソフトカバー)] / 小俣 光之 (著); 技術評論社 (刊)



◎ Linuxネットワークプログラミングバイブル:3,990円
Linuxネットワークプログラミングバイブル [単行本] / 小俣 光之, 種田 元樹 (著); 秀和システム (刊)


◎苦しんで覚えるC言語:2,310円
苦しんで覚えるC言語 [単行本] / MMGames (著); 秀和システム (刊)



◎本当は怖いC言語:2,520円
本当は怖いC言語 [単行本] / 種田 元樹 (著); 秀和システム (刊)
posted by アンドレアス at 16:31| Comment(0) | TrackBack(0) | C言語 | このブログの読者になる | 更新情報をチェックする

ソフトウェアL2スイッチ(ブリッジ)をつくる(その10)・・make、暗黙ルール、擬似ターゲット

擬似ターゲット として cleanを作成したMakefileを作成。

何度もmakeのテストをする場合に、たいへん便利です。

========================
Makefile
========================
CC = gcc
TARGET = list0311
OBJS = list0311A.o list0311B.o

$(TARGET): $(OBJS)
$(CC) $^ -o $@

clean:
@rm -rf *.exe *.o *.bak *.deps *.tgz *.c~ $(UNAME)
=========================================================

■擬似変数・・・2つ覚えておけば、まあ、なんとかなるさ。
$^ : ターゲットが依存する全てのファイル
$@ : ターゲットファイル

他にもあるけど、詳しくは、
「C言語による スーパーLinuxプログラミング Cライブラリの活用と実装・開発テクニック」を
読んで下さいな。


■参照:「C言語による スーパーLinuxプログラミング Cライブラリの活用と実装・開発テクニック」P35〜48

◎C言語による スーパーLinuxプログラミング Cライブラリの活用と実装・開発テクニック:3,570円
C言語による スーパーLinuxプログラミング Cライブラリの活用と実装・開発テクニック [単行本] / 飯尾 淳 (著); ソフトバンククリエイティブ (刊)


◎ルーター自作でわかるパケットの流れ:1,974円
ルーター自作でわかるパケットの流れ [単行本(ソフトカバー)] / 小俣 光之 (著); 技術評論社 (刊)



◎ Linuxネットワークプログラミングバイブル:3,990円
Linuxネットワークプログラミングバイブル [単行本] / 小俣 光之, 種田 元樹 (著); 秀和システム (刊)


◎苦しんで覚えるC言語:2,310円
苦しんで覚えるC言語 [単行本] / MMGames (著); 秀和システム (刊)



◎本当は怖いC言語:2,520円
本当は怖いC言語 [単行本] / 種田 元樹 (著); 秀和システム (刊)
posted by アンドレアス at 13:26| Comment(0) | TrackBack(0) | C言語 | このブログの読者になる | 更新情報をチェックする

ソフトウェアL2スイッチ(ブリッジ)をつくる(その9)・・makeではなく、Cmakeを使うと、こうなります。

今でもmakeは当然のように使用している人が多いですが、
徐々にcmakeも浸透しています。

以前、ここでも記載したことがあったはずですが、
すっかり忘れているので、再度、試してみました。

●OS:Fedora17
 cmakeのバージョン:2.8.9-1

$ rpm -qa | grep cmake
cmake-2.8.9-1.fc17.x86_64

$ rpm -qa | grep make
cmake-2.8.9-1.fc17.x86_64
automake14-1.4p6-22.fc17.noarch
automake-1.11.6-1.fc17.noarch
automake17-1.7.9-16.fc17.noarch
make-3.82-13.fc17.x86_64

===============
CmakeLists.txt
===============
cmake_minimum_required (VERSION 2.6)
project (list0431)

add_executable(list0431 list0431main.c list0431A.c list0431B.c)
================================================

・Directory構成

ソースディレクトリ:CmakeLists.txtやソースファイル、ヘッダファイルを置く。

BUILDディレクトリ:ここでcmake、次に makeする。
          オブジェクトファイルや実行プログラムが作成される。

つまり、cmakeでmakeファイルを作成するわけです。

■参照:「C言語による スーパーLinuxプログラミング Cライブラリの活用と実装・開発テクニック」P74〜78

◎C言語による スーパーLinuxプログラミング Cライブラリの活用と実装・開発テクニック:3,570円
C言語による スーパーLinuxプログラミング Cライブラリの活用と実装・開発テクニック [単行本] / 飯尾 淳 (著); ソフトバンククリエイティブ (刊)


◎ルーター自作でわかるパケットの流れ:1,974円
ルーター自作でわかるパケットの流れ [単行本(ソフトカバー)] / 小俣 光之 (著); 技術評論社 (刊)



◎ Linuxネットワークプログラミングバイブル:3,990円
Linuxネットワークプログラミングバイブル [単行本] / 小俣 光之, 種田 元樹 (著); 秀和システム (刊)


◎苦しんで覚えるC言語:2,310円
苦しんで覚えるC言語 [単行本] / MMGames (著); 秀和システム (刊)



◎本当は怖いC言語:2,520円
本当は怖いC言語 [単行本] / 種田 元樹 (著); 秀和システム (刊)
posted by アンドレアス at 10:56| Comment(0) | TrackBack(0) | C言語 | このブログの読者になる | 更新情報をチェックする

2012年11月06日

ソフトウェアL2スイッチ(ブリッジ)をつくる(その8)・・リンクレイヤープログラムで使用されたヘッダーファイルを目で見て追いかける

OS:Fedora17

/usr/include配下に、ヘッダーファイルがあります。

$ view linux/if.h をまずは、開いてみます。

「ルーター自作でわかるパケットの流れ」(P46第2章リンクレイヤープログラミングの基本)
、で使用されているヘッダーファイルですが、
開くと、

・ltest.cで使われている構造体(の中にある共用体)
 struct ifreq ifreq;

・ltestの
 strncpy(ifreq.ifr_name,device,sizeof(ifreq.ifr_name)-1);
 で使用されている ifreq.xxxxx などが、
 以下で定義されているのが、わかります。

206 #define ifr_flags ifr_ifru.ifru_flags /* flags */
(省略)
212 #define ifr_ifindex ifr_ifru.ifru_ivalue /* interface index */




参照:「ルーター自作でわかるパケットの流れ」P46〜P53付近


◎ルーター自作でわかるパケットの流れ:1,974円
ルーター自作でわかるパケットの流れ [単行本(ソフトカバー)] / 小俣 光之 (著); 技術評論社 (刊)



◎ Linuxネットワークプログラミングバイブル:3,990円
Linuxネットワークプログラミングバイブル [単行本] / 小俣 光之, 種田 元樹 (著); 秀和システム (刊)


◎苦しんで覚えるC言語:2,310円
苦しんで覚えるC言語 [単行本] / MMGames (著); 秀和システム (刊)



◎本当は怖いC言語:2,520円
本当は怖いC言語 [単行本] / 種田 元樹 (著); 秀和システム (刊)
posted by アンドレアス at 19:04| Comment(0) | TrackBack(0) | C言語 | このブログの読者になる | 更新情報をチェックする

ソフトウェアL2スイッチ(ブリッジ)をつくる(その7)・・ポインタ変数を配列みたいに使える、というところを学ぶ

これで、大分、成長したかなー。
後は、スイッチ作成のソースを更に分解して
小さくして動かすことと、大きくしていく(機能追加していく)ことを
やれば、いいな。

=========================
pointer2.c
=========================
#include

int main(void){

int *data;
int i;
int average = 0;
int array[10] = {15,78,98,15,98,85,17,35,42,15};

data = array;

for(i=0;i<10;i++){
average += data[i];
}
printf("%d\n",average / 10);
return 0;
}



参照:「苦しんで覚えるC言語 配列とポインタの奇妙な関係」P293〜P324付近
参照:「本当は怖いC言語 Chapter11ポインタと配列」P311〜P402付近
参照:「 CHARPER4 なんてこったい!配列とポインタは別物だったのか!」P113〜P121


◎苦しんで覚えるC言語:2,310円
苦しんで覚えるC言語 [単行本] / MMGames (著); 秀和システム (刊)



◎本当は怖いC言語:2,520円
本当は怖いC言語 [単行本] / 種田 元樹 (著); 秀和システム (刊)
posted by アンドレアス at 16:06| Comment(0) | TrackBack(0) | C言語 | このブログの読者になる | 更新情報をチェックする

ソフトウェアL2スイッチ(ブリッジ)をつくる(その6)・・メモリアドレスを表示する

・変数のアドレス
・配列のアドレス

char arrayとint arrayの違いを確認できるように
なってます。
というか、書籍を流し見て、さっと作成したら、
intのところをcharにしてて、
なんで、書籍は4バイト間隔の配列なのに、
自分のは1バイトなんだ?と、悩んでました。

char ではなく、intだと気づいたら、
あっさりわかりました。
無駄な時間を過ごしたけど、記憶に残ったから、
良しとしましょうか。

==================
memory.c
==================
#include

int main(void){

int i,j,k,l,m;
printf("%p\n",&i);
printf("%p\n",&j);
printf("%p\n",&k);
printf("%p\n",&l);
printf("%p\n",&m);
printf("============================\n");

char array[10];
printf("array __%p\n",array);
printf("array[0] %p\n",&array[0]);
printf("array[1] %p\n",&array[1]);
printf("array[2] %p\n",&array[2]);

printf("===P287======================\n");

int arr[10] = {1,2,3,4,5};
printf("arr __(%p)\n",arr);
printf("arr[0] (%p)\n",&arr[0]);
printf("arr[1] (%p)\n",&arr[1]);
printf("arr[2] (%p)\n",&arr[2]);

printf("===P291======================\n");

char str[256];
scanf("%s",&str[0]);
printf("%s\n",str);

printf("===P292======================\n");

char str2[256] = "DRAGON";
scanf("%s",&str2[6]);
printf("%s\n",str2);

return 0;

}


そろそろ、ブリッジ作成に復帰するとするかな。

============================


参照:「苦しんで覚えるC言語 15章ポインタ変数の仕組み」P280〜P324付近
参照:「本当は怖いC言語 Chapter11ポインタと配列」P311〜P402付近
参照:「 CHAPTER4 なんてこったい!配列とポインタは別物だったのか!」P113〜P121


◎苦しんで覚えるC言語:2,310円
苦しんで覚えるC言語 [単行本] / MMGames (著); 秀和システム (刊)


◎エキスパートCプログラミング:3,262円
エキスパートCプログラミング―知られざるCの深層 (Ascii books) [単行本] / ピーター ヴァン・デ・リンデン (著); Peter van der Linden (原著); 梅原 系 (翻訳); アスキー (刊)

◎本当は怖いC言語:2,520円
本当は怖いC言語 [単行本] / 種田 元樹 (著); 秀和システム (刊)
posted by アンドレアス at 13:21| Comment(0) | TrackBack(0) | C言語 | このブログの読者になる | 更新情報をチェックする

C言語本セット「C言語ビギナー向け、一気に先輩エンジニアよりも、上のレベルへ」を選んでみました。最近のC言語本は、この2冊を買って学びつつ、「エキスパートCプログラミング」と「ルーター自作でわかるパケットの流れ」をプラスすれば、かなりC言語を使える人になれそうな感じ。

最近のC言語の本は、本当に説明がわかりやすく
丁寧になりましたねー。

プラス、読んでいて、おもしろくなるような文と
実操作を意識した書籍の作りになってます。

特に、この2冊は、優秀です。


◎苦しんで覚えるC言語:2,310円
苦しんで覚えるC言語 [単行本] / MMGames (著); 秀和システム (刊)



◎本当は怖いC言語:2,520円
本当は怖いC言語 [単行本] / 種田 元樹 (著); 秀和システム (刊)



この2冊にプラスして、以下の2冊を買っておけば、
「C言語ビギナー向け、一気に先輩エンジニアよりも、上のレベルへ」という
セットになりそうな気がします。

ソースを読めるだけではなくて、
作れる・改良できる、時代に突入してますからね。


◎エキスパートCプログラミング:3,262円
エキスパートCプログラミング―知られざるCの深層 (Ascii books) [単行本] / ピーター ヴァン・デ・リンデン (著); Peter van der Linden (原著); 梅原 系 (翻訳); アスキー (刊)

◎ルーター自作でわかるパケットの流れ:円



posted by アンドレアス at 00:06| Comment(0) | TrackBack(0) | C言語 | このブログの読者になる | 更新情報をチェックする

2012年11月05日

ソフトウェアL2スイッチ(ブリッジ)をつくる(その5)・・文字列処理関数を一気に学ぶ

だいぶん、横道にそれてますけど、
これをやっておかないと、先に進むと挫折するからなー。

明日は、ポインタ集中の日となります。



参照:「苦しんで覚えるC言語 文字列を扱う方法」P252〜P278付近
参照:「本当は怖いC言語 Chapter7データ型と変数」P105〜P120付近


◎苦しんで覚えるC言語:2,310円
苦しんで覚えるC言語 [単行本] / MMGames (著); 秀和システム (刊)



◎本当は怖いC言語:2,520円
本当は怖いC言語 [単行本] / 種田 元樹 (著); 秀和システム (刊)
posted by アンドレアス at 23:49| Comment(0) | TrackBack(0) | C言語 | このブログの読者になる | 更新情報をチェックする

ソフトウェアL2スイッチ(ブリッジ)をつくる(その3)・・少し横道にそれて、C言語の関数を学ぶ

「苦しんで覚えるC言語」のP197〜P216を学ぶ。

- 引数なし(void)
- 引数あり(int1つ)
- 引数あり(int 2つ)

書籍のサンプルとは違いますが・・・。

--------------------
function.c
--------------------
#include

int sum(int num1,int num2);

int main(void)
{
int p,q;
scanf("%d,%d",&p,&q);
sum(p,q);
return 0;
}

int sum(int num1,int num2)
{
printf("%d\n",num1 * num2);
return 0;
}

■確認
gcc function.c -o function
./function

数字入力 例)10,11 のように

220 と表示されれば、OK。


◎苦しんで覚えるC言語:2,310円
苦しんで覚えるC言語 [単行本] / MMGames (著); 秀和システム (刊)










◎ルーター自作でわかるパケットの流れ:1,974円
ルーター自作でわかるパケットの流れ [単行本(ソフトカバー)] / 小俣 光之 (著); 技術評論社 (刊)



◎ Linuxネットワークプログラミングバイブル:3,990円
Linuxネットワークプログラミングバイブル [単行本] / 小俣 光之, 種田 元樹 (著); 秀和システム (刊)
posted by アンドレアス at 15:51| Comment(0) | TrackBack(0) | C言語 | このブログの読者になる | 更新情報をチェックする

2012年02月19日

手元にオライリーの「デバッグ本」を置いてstrace

このstraceの具体的な使い方の情報は、
デバッグ本なんかの方が詳しかったりします。

単なるコマンドをうって、それで終わりという時に、
使うものではないですからねー。


$ strace ls

*strace -o ls_result.txt ls して、ls_result.txtファイルに書き出しても良い。


execve("/bin/ls", ["ls"], [/* 44 vars */]) = 0
brk(0) = 0x9193000
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb78db000
access("/etc/ld.so.preload", R_OK) = -1 ENOENT (No such file or directory)
open("/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=100497, ...}) = 0
mmap2(NULL, 100497, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb78c2000
close(3) = 0
open("/lib/libselinux.so.1", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\340\306\257D4\0\0\0"..., 512) = 512
fstat64(3, {st_mode=S_IFREG|0755, st_size=126776, ...}) = 0
mmap2(0x44af8000, 130128, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x44af8000
mmap2(0x44b16000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1d) = 0x44b16000
close(3) = 0
open("/lib/librt.so.1", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0 \231\250D4\0\0\0"..., 512) = 512
fstat64(3, {st_mode=S_IFREG|0755, st_size=46704, ...}) = 0
mmap2(0x44a88000, 37428, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x44a88000
mmap2(0x44a90000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x7) = 0x44a90000
close(3) = 0
open("/lib/libcap.so.2", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\240m\372D4\0\0\0"..., 512) = 512
fstat64(3, {st_mode=S_IFREG|0755, st_size=16696, ...}) = 0
mmap2(0x44fa6000, 17908, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x44fa6000
mmap2(0x44faa000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x3) = 0x44faa000
close(3) = 0
open("/lib/libacl.so.1", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0@\206*F4\0\0\0"..., 512) = 512
fstat64(3, {st_mode=S_IFREG|0755, st_size=32272, ...}) = 0
mmap2(0x462a7000, 29312, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x462a7000
mmap2(0x462ae000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x7) = 0x462ae000
close(3) = 0
open("/lib/libc.so.6", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\1\1\1\3\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\20\370\214D4\0\0\0"..., 512) = 512
fstat64(3, {st_mode=S_IFREG|0755, st_size=1996196, ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb78c1000
mmap2(0x448b6000, 1751644, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x448b6000
mmap2(0x44a5c000, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1a6) = 0x44a5c000
mmap2(0x44a5f000, 10844, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x44a5f000
close(3) = 0
open("/lib/libdl.so.2", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0`\32\250D4\0\0\0"..., 512) = 512
fstat64(3, {st_mode=S_IFREG|0755, st_size=19888, ...}) = 0
mmap2(0x44a81000, 16500, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x44a81000
mmap2(0x44a84000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x2) = 0x44a84000
close(3) = 0
open("/lib/libpthread.so.0", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\0\233\246D4\0\0\0"..., 512) = 512
fstat64(3, {st_mode=S_IFREG|0755, st_size=135556, ...}) = 0
mmap2(0x44a64000, 107004, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x44a64000
mmap2(0x44a7b000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x16) = 0x44a7b000
mmap2(0x44a7d000, 4604, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x44a7d000
close(3) = 0
open("/lib/libattr.so.1", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\340\35\307E4\0\0\0"..., 512) = 512
fstat64(3, {st_mode=S_IFREG|0755, st_size=18316, ...}) = 0
mmap2(0x45c71000, 19552, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x45c71000
mmap2(0x45c75000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x3) = 0x45c75000
close(3) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb78c0000
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb78bf000
set_thread_area({entry_number:-1 -> 6, base_addr:0xb78bf740, limit:1048575, seg_32bit:1, contents:0, read_exec_only:0, limit_in_pages:1, seg_not_present:0, useable:1}) = 0
mprotect(0x8063000, 4096, PROT_READ) = 0
mprotect(0x44b16000, 4096, PROT_READ) = 0
mprotect(0x44a90000, 4096, PROT_READ) = 0
mprotect(0x44a5c000, 8192, PROT_READ) = 0
mprotect(0x44a84000, 4096, PROT_READ) = 0
mprotect(0x448b2000, 4096, PROT_READ) = 0
mprotect(0x44a7b000, 4096, PROT_READ) = 0
munmap(0xb78c2000, 100497) = 0
set_tid_address(0xb78bf7a8) = 10404
set_robust_list(0xb78bf7b0, 0xc) = 0
rt_sigaction(SIGRTMIN, {0x44a695b0, [], SA_SIGINFO}, NULL, 8) = 0
rt_sigaction(SIGRT_1, {0x44a69630, [], SA_RESTART|SA_SIGINFO}, NULL, 8) = 0
rt_sigprocmask(SIG_UNBLOCK, [RTMIN RT_1], NULL, 8) = 0
getrlimit(RLIMIT_STACK, {rlim_cur=8192*1024, rlim_max=RLIM_INFINITY}) = 0
uname({sys="Linux", node="f16.example.com", ...}) = 0
statfs64("/sys/fs/selinux", 84, 0xbf9130cc) = -1 ENOENT (No such file or directory)
statfs64("/selinux", 84, 0xbf9130cc) = -1 ENOENT (No such file or directory)
brk(0) = 0x9193000
brk(0x91b4000) = 0x91b4000
open("/proc/filesystems", O_RDONLY|O_LARGEFILE) = 3
fstat64(3, {st_mode=S_IFREG|0444, st_size=0, ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb78da000
read(3, "nodev\tsysfs\nnodev\trootfs\nnodev\tb"..., 1024) = 366
read(3, "", 1024) = 0
close(3) = 0
munmap(0xb78da000, 4096) = 0
open("/usr/lib/locale/locale-archive", O_RDONLY|O_LARGEFILE) = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=104993328, ...}) = 0
mmap2(NULL, 2097152, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb76bf000
mmap2(NULL, 978944, PROT_READ, MAP_PRIVATE, 3, 0x48cd) = 0xb75d0000
close(3) = 0
ioctl(1, SNDCTL_TMR_TIMEBASE or SNDRV_TIMER_IOCTL_NEXT_DEVICE or TCGETS, {B38400 opost isig icanon echo ...}) = 0
ioctl(1, TIOCGWINSZ, {ws_row=24, ws_col=80, ws_xpixel=0, ws_ypixel=0}) = 0
openat(AT_FDCWD, ".", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY|O_CLOEXEC) = 3
getdents64(3, /* 88 entries */, 32768) = 3080
getdents64(3, /* 0 entries */, 32768) = 0
close(3) = 0
open("/usr/lib/gconv/gconv-modules.cache", O_RDONLY) = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=26242, ...}) = 0
mmap2(NULL, 26242, PROT_READ, MAP_SHARED, 3, 0) = 0xb75c9000
close(3) = 0
futex(0x44a5ef68, FUTEX_WAKE_PRIVATE, 2147483647) = 0
fstat64(1, {st_mode=S_IFCHR|0620, st_rdev=makedev(136, 0), ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb75c8000
write(1, "1128_EC2_ACCESS_KEY.txt 8.txt"..., 451128_EC2_ACCESS_KEY.txt 8.txt test.img
) = 45
write(1, "20111127\t\t build-bundle\t\t tes"..., 4220111127 build-bundle test_qc2.img
) = 42
write(1, "20111127~\t\t build-bundle2\t wo"..., 3520111127~ build-bundle2 work
) = 35

途中省略。多すぎるので。

close(1) = 0
munmap(0xb75c8000, 4096) = 0
close(2) = 0
exit_group(0) = ?



◎Debug Hacks -デバッグを極めるテクニック&ツール:3,360円

Debug Hacks -デバッグを極めるテクニック&ツール [単行本(ソフトカバー)] / 吉岡 弘隆, 大和 一洋, 大岩 尚宏, 安部 東洋, 吉田 俊輔 (著); オライリージャパン (刊)


◎実践 デバッグ技法 ―GDB、DDD、Eclipseによるデバッギング:2,940円
実践 デバッグ技法 ―GDB、DDD、Eclipseによるデバッギング [大型本] / Norman Matloff, Peter Salzman (著); 相川 愛三 (翻訳); オライリージャパン (刊)



◎現場で使えるデバッグ & トラブルシュート Java編:2,940円
現場で使えるデバッグ & トラブルシュート Java編 [大型本] / 小堀 一雄, 茂呂 範, 佐藤 聖規, 石垣 一, 飯山 教史 (著); 飯山 教史, 飯山 教史 (監修); 翔泳社 (刊)

他にもサンプル例をあげておきます。

使わないとすぐに忘れてしまうし。(^^)



$ strace -f -o ~/ovs_con.txt -e execve ./configure
とか
$ strace -f -o ~/ovs_con.txt -e exit ./configure

◆参考:execve
http://linuxjm.sourceforge.jp/html/LDP_man-pages/man2/execve.2.html
http://www.kernel.org/doc/man-pages/online/pages/man2/execve.2.html

exit
http://man7.org/linux/man-pages/man3/exit.3.html



-f -Fは、下記を使うとわかりやすいです。
*-Fは、obsoleteだから、-fだけでも良いみたい。
strace -f -F -o http_result.txt /etc/init.d/httpd start

# /etc/init.d/httpd stop した後、
 下記を実行すると、上と下の出力ファイルの違いが分かって
 理解もぐっと深まるはず。
strace -o http_result_without_f_F.txt /etc/init.d/httpd start


多いなぁー、とか思うだけでは意味ないんですが(^^)



◆システムコールなどを学ぶ必要がある場合、
 まずは、下記書籍が、理解しやすい&&挫折しにくいかと思います。


◎ふつうのLinuxプログラミング Linuxの仕組みから学べるgccプログラミングの王道:2,940円
ふつうのLinuxプログラミング Linuxの仕組みから学べるgccプログラミングの王道 [単行本] / 青木 峰郎 (著); ソフトバンククリエイティブ (刊)


◎ふつうのコンパイラをつくろう 言語処理系をつくりながら学ぶコンパイルと実行環境の仕組み:3,360円
ふつうのコンパイラをつくろう 言語処理系をつくりながら学ぶコンパイルと実行環境の仕組み [単行本] / 青木 峰郎 (著); ソフトバンククリエイティブ (刊)


◆参考:http://sourceforge.jp/magazine/03/10/28/1054253
posted by アンドレアス at 01:02| Comment(0) | TrackBack(0) | C言語 | このブログの読者になる | 更新情報をチェックする

2011年08月15日

「Linuxネットワークプログラミングバイブル」のChapter3を読む・つくる(その3)

◆sockaddr型構造体
環境:Fedora15の場合です。
   (CentOS5.5も同じようですが、確認はしてません)

/usr/include/bits/socket.h


/usr/include/netinet/in.h



============================
/usr/include/netdb.h
============================

/* Extension from POSIX.1g. */
#ifdef __USE_POSIX
/* Structure to contain information about address of a service provider. */
struct addrinfo
{
int ai_flags; /* Input flags. */
int ai_family; /* Protocol family for socket. */
int ai_socktype; /* Socket type. */
int ai_protocol; /* Protocol for socket. */
socklen_t ai_addrlen; /* Length of socket address. */
struct sockaddr *ai_addr; /* Socket address for socket. */
char *ai_canonname; /* Canonical name for service location. */
struct addrinfo *ai_next; /* Pointer to next in list. */
};




◎Linuxネットワークプログラミングバイブル:3990円
Linuxネットワークプログラミングバイブル [単行本] / 小俣 光之, 種田 元樹 (著); 秀和システム (刊)


◎ルーター自作でわかるパケットの流れ:1974円
ルーター自作でわかるパケットの流れ [単行本(ソフトカバー)] / 小俣 光之 (著); 技術評論社 (刊)
posted by アンドレアス at 15:57| Comment(0) | TrackBack(0) | C言語 | このブログの読者になる | 更新情報をチェックする

「Linuxネットワークプログラミングバイブル」のChapter1を読む・つくる(その2)

「Linuxネットワークプログラミングバイブル:3990円」P4〜

・ヘッダファイルのインクルードの順番

1.カーネル系インクルードファイル
2.ネットワーク系インクルードファイル
3.その他をアルファベット順にソート


何気ないことですが、
3を見て、そこまで意識したことなかったですね。

Objective-CやC++でも意識すべきかな、そうなると。



さすが、小俣さん本だけあって、
includeするserver.cの#include行が、
この1、2、3を明確に判別できるようにするため、
1行ずつ、空行を入れてくれてます。

さりげない心配りを感じると同時に、
細部にいたるキメ細さを感じますね。

うーーむ、すごい!



◎Linuxネットワークプログラミングバイブル:3990円
Linuxネットワークプログラミングバイブル [単行本] / 小俣 光之, 種田 元樹 (著); 秀和システム (刊)


◎ルーター自作でわかるパケットの流れ:1974円
ルーター自作でわかるパケットの流れ [単行本(ソフトカバー)] / 小俣 光之 (著); 技術評論社 (刊)
posted by アンドレアス at 13:30| Comment(0) | TrackBack(0) | C言語 | このブログの読者になる | 更新情報をチェックする

「Linuxネットワークプログラミングバイブル」のChapter1を読む・つくる

簡単に、小俣さん本で学びます。

なんせ、時間が無いので、今くらいしか
できないし。

Chapter1

TCP/IPプログラムは、最初に以下のどちらを作成するか決める必要あり。

・接続を受け付ける役目を担当するプログラム:サーバプログラム
・サーバに接続するプログラム:クライアントプログラム



◎Linuxネットワークプログラミングバイブル:3990円
Linuxネットワークプログラミングバイブル [単行本] / 小俣 光之, 種田 元樹 (著); 秀和システム (刊)


◎ルーター自作でわかるパケットの流れ:1974円
ルーター自作でわかるパケットの流れ [単行本(ソフトカバー)] / 小俣 光之 (著); 技術評論社 (刊)
posted by アンドレアス at 12:46| Comment(0) | TrackBack(0) | C言語 | このブログの読者になる | 更新情報をチェックする