なうろーでいんぐ
キーボード↑↓
でもいいぞ
旧サイト形式へ帰りたい人
DIBへの落とし込み
2011年04月09日17時18分
相変わらずDIBSectionの件は解決してないけど、
とりあえずDIBSectionからDIBに落とし込んで
普通に動いてたのでソースage。
アルファ値考慮 部分画像 合成関数
上の方のコメントアウトは無視で。
ファイル 365-1.png
画像の出力先と入力元の位置計算まで含んでたから
計算超面倒だったわ・・・。
ほれこのとーり、今度は解放不可エラー起きないわ。
ファイル 365-2.png
まさかこんな時間までかかるとは思わなかった;
次、休憩入れてから音のダブルバッファな。
因みに、関数の引数は

LPDWORD DIB :ビットマップ画像自身、転送先
const CDibSection &dib :DIBSection、転送元
CPoint to :転送先のx,y座標位置
CSize size :転送するx,yの各サイズ
CPoint from :転送元のx,y座標位置
float a :アルファ値

である。


同日 21:08
結構手間取ったわ。
マルチではないけどシングルで再帰的にWAV
を読み込んで連続再生。ブツ切りにはなるが
継続してBGMを流す事はできた。
ファイル 365-3.png
これからマルチバッファして、次はタイマやな。


4月9日 0:57
マルチバッファ&タイマ実装。
ファイル 365-4.png
漸くボール制御側もタイマで一定速度になりました。
それまではブロックサイズが変わるだけで顕著に
スピードが変化してたので面白かったけど。
次はコード整理とダイアログの機能追加かね。

同日 2:23
ソース改善中、動作が徐々に良くなると気持ちいい。


同日 3:24
衝突音の変更とかボールサイズ変更とか実装。
ファイル 365-5.png
フルパスからもCreateFileできるので、簡単。
カレントディレクトリにさえ注意してればよい。
機能拡充は範囲が幅広いなぁ・・・;
記事カテゴリ:プログラム関連
唐突に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
銃面倒なのと良く分からん部分があるが、
まぁそれなりに見ながら真似してるわ。
記事カテゴリ:プログラム関連