なうろーでいんぐ
キーボード↑↓
でもいいぞ
旧サイト形式へ帰りたい人
唐突にjavaを
2011年04月08日17時22分
勉強する必要が出てきたのでこれまた勉強中。
先日はサーバーの動きを見たが、マルチプロセスが
微妙に理解できてないので余裕ができたらそれを
今日は残りで調べるつもり。


同日 18:14
本を読む速度がありえねぇ事になってるのに驚く。
いくら入門書とはいえ、200ページ以上が
30分そこらで終わるのには驚愕した。
何事も、分かりにくい部分がなければ脳内で
直結するもんだなとしみじみ感じるのであった。

javaはライブラリ、サブクラス、スーパークラス、
インターフェース、アプレットを残して
本を読むのをちょっと休憩する。


同日 19:30
JAVA入門読破。インターフェースによる多重継承、
ファイル入出力や、Thread、Runnable、アプレット等、
C言語に比べれば非常に楽な感じでした。
やはり、クラスのライブラリや関数が最初から
ある程度簡略化されてるからこそ、とっつきやすい。
コンストラクタやメモリの確保もnewで終わるし、
おそらくプログラマ初心者はCよりJAVAから
先にやるといいと思える程、丁寧で分かりやすかった。

では、マルチプロセスについて調べるか・・・。
資料として一番よさげなのはこちらかな。
http://www.fides.dti.ne.jp/~tokai/vc/vcchips1.html
・ パイプでプロセス間通信の基本 という題目の箇所。
プロセスはタスクマネージャのプロセスを見れば
という意見があって、成る程確かにマルチじゃねーか
と妙に納得した。exe同士が会話するのに
パイプを繋ぐ必要があって、それがややこしい。
定数からまずは理解せんとな・・・。


同日 21:06
パイプは親プロセスと子プロセスを繋ぐが、
stdin,stdout,stderrの3つの情報をやり取りする
必要があるのと、親→子と子→親で継承してはいけない
パイプハンドルが存在するのでそれは複製する。
(ちょっと理解不足)
パイプの設定が終わったら、実際に実行するプロセス
をGetEnvironmentVariable関数を用いて
環境変数からフルパスで取得し、CreateProcess。
プロセスが終了=やり取りを終えたかを確認する為に
WaitForSingleObject関数を使い、子から返された
結果をReadFileして表示すれば完了。という流れ。

環境変数から取得とは粋な技だこと。
記事カテゴリ:プログラム関連
溜まってた余計な私事を
2011年04月07日17時10分
ぼちぼち片付けてたら、こんな時間に・・・。
今からまたプログラム解析ちょこっとやるわ。


同日 20:04
ブラウザからのページ閲覧の仕組みを理解。
結局コンソールと挙動は余り変わらず、
ブラウザが命令をsendしてそこから
サーバーが応答した内容をrecvするので、
情報に応じてページが表示できる。
インターネットの中身を垣間見た感じでした。
cgiとの接続も載ってるっぽいので、
そこも詳しく見ていこうと思いますわ。

クライアントの要求をrecvして解析してsendする、
その一連の流れは頭の中にかなりはっきりとした
イメージを作る事ができましたとさ。


同日 23:03
cgiとの連携プレイについては、
パイプ処理によってR/Wのパイプを形成し、
しかるべき設定値をしかるべき値にセットして
execve関数でcgiと連携してた。
膨大な環境変数は、流石他のプロセスと
言わざるを得ない。
記事カテゴリ:プログラム関連
FTP理解。
2011年04月06日13時45分
ホストとFTPでconnectする所まではほぼ変わらず。
今回の場合は接続後、USER、PASS、TYPEを
sendして、PORTかPASVかで処理を分けていたが、
どちらもホストの情報からIPアドレスを割り出して
sendし、RETRコマンドをpath情報と共にsendすると、
結果をrecvできるという形だった。


FTPの通信ポートと、ファイル送信用のポートを別々に
用意する必要があり、サンプルのコードでは、
ホスト情報から送信用IPアドレスを割り出して
クライアント側から指定し、acceptを待つのがPORT、
サーバー側に依頼してconnectするのがPASVだった。


IPアドレス関連関数でちょっと迷ったのは、
inet_addr : アドレス→生IPデータ
inet_ntoa : 生IPデータ→アドレス
といったアドレス関連関数や、
ntohs : バイトオーダーをプロセッサに応じて変更
といったエンディアンの指定だった。


次はいよいよ、WEBサーバーに入る。
例に漏れず非常に長いサンプルになってる;
分割してちょくちょく手を出すしかなさげだが…。

ネットワーク機能を如何にして利用するか、
そこが問題だな。

4月7日 2:19
突発的に3時間程度進める。
ファイル 362-1.png
銃面倒なのと良く分からん部分があるが、
まぁそれなりに見ながら真似してるわ。
記事カテゴリ:プログラム関連
徐々に進むプロトコル理解
2011年04月05日15時23分
HTTPでのTCP受信ができた後、SMTPを見る。
以前本で読んだ事もあって、理解が早かった。
添付データについては、multipart定義で大方
--Boundaryによりデータが分けられているのも、
既知でなんか個人的に嬉しかった。

今回新たに分かったのは、MIMEエンコードの利点。
Base64であれQuoted-Printableであれ、
メールではデータを送る際に8bitから7bitに
落とし込む事が多い。主には文字コードに左右されず
データを送信先で保持する為だが、
これに加えてパリティビット等の誤り検出の1bitを
追加するのに非常に適しているのである。
・・・なんとまぁ便利な。
文字コードはEUC→JISが丁寧に説明されてたので、
頭が働いてる時に理解しようと思う。
コード見ただけで泥作業とわかるあれはwww
先にPOP3プロトコルについてを読むかな。


4月6日 1:32
文字コードはこれだから嫌いである。
調べても情報が散っていて、収束させるのが面倒。
何とか解析終えた。
ファイル 361-1.png
エスケープ制御はチンプンカンプンだったので
激しく労力を割いた・・・とりあえずSMTP終了や。
POP3も読んでみたが、MD5(ハッシュ関数)で
取得したユーザー名、パス、タイムスタンプを変換し、
認証に使用してる点を理解すれば、
メッセージの処理が面倒なだけでそこまで難しいとは
思わなかった。更に次はTELNETだが、俺は未だに
この有用性が理解できてないので、ちょっと
これから軽く調べてみる。

同日 1:58
で、TELNETについて調べてみたんだが、かなり
問題を抱えている模様、後、ネゴシエーションが
相当面倒な事になってる。
windowsだと特に制御が複雑で、そもそも今は
SSHの方がリモート操作は主流なので、
横好きでない限りは勉強するのをおススメしない。
ざっと見てやり取りが単純作業に近かったので、
飛ばして次のFTPを見てみるとしよう。
記事カテゴリ:プログラム関連