月 | 火 | 水 | 木 | 金 | 土 | 日 |
---|---|---|---|---|---|---|
28 | 29 | 30 | 31 | 1 | 2 | 3 |
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 1 |
地元の友人(年下!!)が出産したとゆーので、みんなで冷かしに・・・もとい、お祝いしに行った。 周りがぽこぽこ子供を作り出してるんで、負けちゃ〜いらんねぇ!とか思ったりもしてしまう(^^;;
・・・ところで。
出産祝いって何を渡すのが普通なんだろ?
・・・の、佳作受賞者への寸評で 鳥山明*1が
まとまってはいるが、ネタが古い。
ってコメントしてた。
・・・まんま、自分のことぢゃん(爆笑)
自分のようにはなってほしくないってゆー親心なのか、 単なる同属嫌悪なのか・・・(悪笑)
う〜ん。まだ続いてたのか・・・(^^;; ま、本編はともかく、微熱口紅(ルージュ)は結構良し。 デビュー作だそうだ。
・・・でも・・・。
絵、作風、ストーリー、キャラクター。。。 全てまつもと泉ぢゃん。 『「きまぐれ☆オレンジロード」の人が描きました』 って言っても誰も疑わないと思うぞ(笑)
アシスタントでもしてたのかなぁ。。
ジャンプを古本屋に売りに行ったら、コレが400円で売ってたので思わず買ってしまった。 うん。けっこー面白いかも。 「気」とか「念」とか「怨」とかってのが出てくる話は好きだから・・・かな?(^^;;
とりあえず、続きを買ってくるとしよう。
何を思い立ったか、家マシンを
Windows98SE + Windows2000
から
Linux + Windows2000
に変更することにした。
前に挫折したときに買った雑誌にいろんなディストリビューションが付いてきてたのに わざわざVine Linuxな本を一冊買ってしまった。 本はまったく読んでないんで、付属のCD-ROM(Vine Linux 2.1.5)のためだけに2,600円も払ってしまったのは・・・、 やっぱり無駄なんだろな(T-T)
んで、家に帰って早速インストール。 ・・・しようとしてるんだけど、どーしてもパッケージのインストールが終わった後に 固まってしまう。 どうもあなこんださんが悪さしてる(ってとーぜんか(T-T))みたいなんだけど よくわかんない。 これなら、インストール本を買ったほうがよかったかなぁ。。。
なんて、悩んでても仕方ないんで家に転がってた RedHat Linux7.1 を入れてみることにした。 Xの設定(ってゆーかディスプレイの選択)で戸惑ったり、 グラフィカルログイン(だっけ?)にしなかったので、Xの起動方法がわからず泣いてみたり、 と3〜4回ほどやり直した気はするが、Vineのときとは比べ物にならないくらい あっけなくインストール完了(^-^)v 解像度が低いんだけど、これは後で設定方法を調べてみることにしよう。
さて、今日はここまでにしてWindows2000の方を起動するか。 って思ったところで問題発生。 LILOがWin2Kのことなんて知らないって駄々をこねてやがる。
あ〜ん。どーしよー。。。(T-T)
*1: 後ろに「せんせ」がつくかどうかはその作家の好き度で決まるらしい(^^;;
大方の予想通り、続きを買ってきた。
話はよいのだが、13巻あたり *1 でめちゃめちゃ絵が壊れてたのが気になるぞ。 見るに耐えんぐらいひどい。 どーしたんだろ。
*1: 闇己んちに居候することになる男の子(名前忘れた)が初登場する話のときの
斧で頭をスパンと殺られる女性とか
結局ちゃんと全部揃えてしまった(^^;;
寧子ちゃんがどんどん壊れていくのが見てて楽しい(微悪) このまんま我が道を突っ走ったあげく、闇ちゃんパパの手下になるのが 非道でよいなぁ。。。(本悪)
しをりちゃんが闇ちゃんパパのところに行くのはわかる気がするんだけど、 七地んとこに戻ってきた理由がどーもよくわからん。 とゆーか、納得いかん。 ・・・パパに脅されて七地を騙してるのかしら。
さて。Win2Kの存在に気づいてくれない状態の家マシン。 どうやら原因はLILOをMBR(マスタブートレコード)に入れてしまったせいらしい。 Linux活用日記を見ると、
のどちらかでOKらしい。
LinuxからSCSIなハードディスクを見る方法がわからなかったんで *1、後者の方法をとることにした。 上のサイトの<URL:http://www.a-yu.com/system/nt03.html>を見ながら、言われたとおりやったのだが、 再起動すると、OS-LoaderもLILOも起動しなくなってしまった。
しょーがないんで、IDEなハードディスクだけでWin2KもLinuxもブートできるようにすることにした。 この方があとあとらくちんな気がするしね。
とりあえず、Win2Kだけをインストールしたところで、今日はお休み。。。
Win2Kのアップグレード版をインストールするときに、旧バージョンのWindowsのCD-ROMを要求されるじゃない。 「めんどくせー」とか思いつつWindows95のCD-ROMを入れたら、
こんなCD-ROM知らねーよ。ちゃんとしたもんを持ってきな!
とか文句をいいやがんの。 プロダクトアップグレードだから95でも98でもNTでもなんでも平気なはずなのに。
ぶつぶつぶつぶつ。。。。
・・・と悩むこと数十分。 しょーがないんでWin98SEのCD-ROMを入れたら、こっちはばっちり成功。 Micr○$○ftめ。Win95からのアップグレードOKは口だけか。 これだから、この会社は・・・。
と思ったところで、Win95のCD-ROMを改めてみてみた。
・・・PC-9800用だった(汗)
教訓
*1: 認識してなさそうな気がしてるんだよな
ももにっきを更新した。
まだ中学卒業しないのか(笑)
次巻ではついにグインとナリスが会うことになりそうだな。
にしても。
最近、ストーリー展開がゆっくりになった気がしてならない。 新刊に追いついちゃったせいで一気に読んでないからなのか、 単にサビとサビの間の間奏の部分だからなのか。。。
ひきこもり完了(謎汗)
ふともも作り直し計画*1 のために、ほげほげてんぷれーとらいぶらりと遊んでるところ。 CもC++もろくに書けないくせに無謀もいいとこなんだけどさ。 ま、Win32SDKなプログラムの基本ぐらいはVBで覚えたからなんとかなるかな〜って(無茶)
・・・とは言っても、会社のマシンにVC++環境がないんで、 いまんとこはShellExecuteなコアな部分をBCCでがりがり書いているだけだけどね。 BCCでATL&WTLを使う方法を知ってる人はぜひ教えてほしいものです(他人任せ(--;)v-)
んで、文字列をがりごり操作するのにstd::stringを使おうとしたんだけど、 どーもうまくいかない。 メモリのことを気にしなくていいのはいいんだけど *2 コード量がどーしても多くなっちゃうってゆーか、なんてゆーか。
ん〜。他言語にはあった関数が、メンバ変数にないのが原因なんだろうな。 自作して追加するか。 ・・・とはいえ、関数で機能追加って美しくないしなぁ。。。
Rubyみたいに動的にクラスにメソッドを追加できればいいのに。 ・・・って、あ。 もしかして、std::stringを継承して拡張とかってできるのかな? 明日にでもやってみよっと。
Win2Kだけ再インストールしたっきり、Linuxのことは忘れてたよ(大汗) とは言っても、今の興味は[SAW]TLに移っちゃったからなぁ。
とーぶんは、作業中断かな。
・・・って、全然「奮闘記」ぢゃないぢゃん(涙)
*1: 開発言語:VB→VC++、組込みインタープリタ:VBS→Ruby
*2: ってゆーか気にしなきゃいけない言語って使ったことないんだけど(汗)
ShellExecuteExで嵌った。 構造体をちゃんとZeroMemoryしてあげないといけないんだね。
SHELLEXECUTEINFO sei; ZeroMemory(&sei, sizeof(SHELLEXECUTEINFO)); //←こいつがなくて原因不明のエラーになってたらしい。 sei.cbSize = sizeof(SHELLEXECUTEINFO); : : : return ShellExecuteEx(&sei);
一歩前進♪
ちなみに。
SHELLEXECUTEINFO *sei; ZeroMemory(sei, sizeof(SHELLEXECUTEINFO)); sei->cbSize = sizeof(SHELLEXECUTEINFO); : : : return ShellExecuteEx(sei);
とかやってもー一度嵌ったのは秘密(汗) そりゃ、領域確保してないのにがりごりやったら危険なことになるわ。
みよーみまねで初めて作ったSTLを使った関数。 こんな使い方でいいのかしら。
#include <string> //前後の指定文字を削除 std::string trim(std::string &str, char ch = ' ') { if(str.length() == 0){ return str; } int sPos = str.find_first_not_of(ch); int ePos = str.find_last_not_of(ch); if(sPos == -1){ return str.erase(); } return str.substr(sPos, ePos - sPos + 1); }
なんか美しくない気がするなぁ。。。
って面白いのね。これってももにっきの更新にも応用できそう。
今ってRubyでファイル日時チェックして、がりごり更新用のバッチファイルをつくって、 それからそのバッチファイルを実行してたんだけど、
>ruby make.rb > make.bat >make.bat
makefile書けば、
>make
一発ですむぢゃん。
今度挑戦してみよう。
・・・ま、実際に買ったのは昨日だけどさ。
いや〜。あのノートパソコンほしいわ。 パソコンへの入力インターフェースが音声だけ(他にもあるかもだけど) ってのがちょっと・・・いや、かなり恥かしいけど。 2巻(6/29発売らしい)の初版本限定で、すももちゃんストラップがついてくるみたい。 チェックしとかねば。
で、思ったんだけど。 ちぃって昔のBASICマシンみたいなもんかな? BASICってプログラム言語の変わりに、自然言語でプログラムしてるって考えればさ。
言葉を教える→BASICでプログラム書く。 テレビとかを見て覚える→ベーマガのプログラムをひたすら入力(^^;;
みたいな感じで。
ん〜、ちょっと苦しいか。。。
それはそうと、複線が露骨(に見える)のがちょぃ気になる。 これで、そのまんまな展開だったら笑うぞ。 だ〜いど〜んで〜んが〜えしに期待。
全然慣れない。 って一日二日で使えるようになるしろもんだとは思ってないけどさ。
で、今日はvectorを使った。
#include <stdio.h> #include <string> #include <vector> #include <algorith> int main(void) { std::vector<std::string> list; std::vector<std::string>::iterator it; list.push_back("foo"); list.push_back("bar"); list.push_back("baz"); sort(list.begin(), list.end()); for(it = list.begin(); it != list.end(); it++){ printf("%s\n", it->c_str()); } return 0; }
こんな感じかな。 イテレータの型の宣言の仕方(std::vector<std::string>::iterator)と、 イテレータでくるくる回したときの要素の参照方法(it->c_str()) でなやんでしまった。 イテレータ型ってその要素のポインタでもあるのね。 *1
で、コレを使って、↓に書いてるレジストリ操作クラスのRegEnumKeyExを ラッピングしたんだけど、コンパイルエラーもバグも無しに 一発で思うように動いたときはちょっと感動したよ。
いつもこーうまくいけばプログラムって楽しいんだけどな〜(妄)
レジストリ操作用クラスを作った。 って言っても、ほとんど形になってないんだけどさ。 REG_SZなRegQueryValueExとRegEnumKeyExをラッピングしただけ。
ゆくゆくは、 レジストリの階層構造そのまんま扱えるようなクラスにしたいなぁ。。。
*1: ってこんな言いかたであってるのかな?
某有名エディタの正式リリース記念オフ会に行ってきた。
幹事さんが一次会でずっと居眠りしてたり、 シェアウェアで食べてけるって話を聞いて感動したり、 ゲーセンで初めてタンバリンと戯れたり、 女の子が横で飲むよ〜な店に連れてかれたり、 朝までカラオケになっちゃったりで、 幹事さんにお金を借りることになる大失態をやらかしてしまったのだった。
ごめんなさい。今度返しますm(_ _)m
・・・のは実際には昨日なんだけど。 呑み歩いてたから何度か忘れて帰りそうになっちゃったよ(^^;; ま、オフ会参加直前に本屋さんに行くのは危険ってのを学んだぞ、と。
ま、まだ全然読んでないから感想とかあったら後日。
幹事さんにお金返せました♪
よかった、よかった。
・・・ってゆーか、二日連荘*1はちょっと疲れた・・・(^^;;
*1: わたしゃ麻雀してないぞ(謎)
WinNT Serverを巻き込んで落ちやがった。 慌ててソースを問題発生前に戻したので、どこが問題だったか確かめられなかったんだけど *1、 WinProcのなかで宣言したクラス*2 のデストラクタにMessageBoxなんかを書いたせいかな、と。
ん〜、よくよく考えてみるとめちゃめちゃ怖いコーディングをしてたんだなぁ。。(^^;; って、だからNTを巻き込んで落ちたんだけどさ。
VBとかスクリプト言語とかと違ってメモリを直接いじることが多いんだから、 気をつけないとな〜と反省したりしてる今日この頃なのでした。
*1: だって、怖かったんだもん(^^;;
*2: この時点で危なっかしいよーな
・・・のは例によって、昨日なんだけど。
これといー、ゴクドーくんといー、本編終わってるのに 外伝だけ続くのはどーなんだろ。
ま、今回の2作品はけっこー好きだったからいいんだけどね。
にしても、神坂一ってきっちり連載終わらせてるからえらいよな〜。 書きかけのまんまってないし。 ちょっとは見習え〜(笑)>あかほり
標準出力を横取りする仕組みを作った。 ま、ほとんどWebからのカッペなんであんまり理解できてないんだけど。 CreateProcessに渡すSTARTUPINFO構造体が鍵ってところまでは突き止めたんだけど、 パイプを作ったりしてる部分がまだいまいちわからない。 もーちょっとちゃんと理解できたらここに方法を書くことにしようか。
とはいえ、これで新ももめも(仮称)ではコンソールアプリも そのまんま使えるランチャーになってくれそうだぞ。 標準入力も横取りできたほうがいいんだろーけど、 うまいインターフェースが思い浮かばないんでとりあえず保留にしとこう。
とりあえず、早くUIを作らないとな〜。 会社じゃVC++を使えないからWTLなテストが遅々として進まないのよ。
ついでに初めてCreateThreadも使ってみた。 これってなんでVBで使うとよろしくないんだっけ。 なんかふつーに使えそうな気がするんだけどな。。。 暇ができたら試してみよう。
そうそう。
ダイアログベースじゃないウィンドウに コントロールを乗っける方法がわからなくて悩んでたんだけど、 CreateWindow(Ex)でWS_CHILDなウィンドウを作ればいいだけだったんだね。 ちょっと感動。 さらに、そのコントロールから通知されるメッセージはWM_COMMANDで 処理すればいいことも判明。 WM_COMMANDのLOWORD(wParam)が通知元のコントロールのIDで HIWORD(wParam)が通知されるメッセージだから、
case WM_COMMAND: switch(LOWORD(wParam)){ case IDC_EDIT1: switch(HIWORD(wParam)){ case EN_CHANGE: ::MessgeBox(hWnd, "へんこうされたのだ。", "テストメッセージ", MB_OK); break; } break; }
ってな感じで書けばいいわけだ(たぶん)
さらに言うと、lParamにはそのコントロールのウィンドウハンドルが入ってるらしい。 これも要チェックだぁね。
でも、WM_COMMANDで通知されないメッセージを処理する方法は 相変わらずわからない。 サブクラス化するしかないのかな〜。
メッセージクラッカーってのを知った。 windowsx.hをインクルードしてやれば、ウィンドウプロシージャが こんなふーに書けるようになるみたい。
LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) { switch(msg){ HANDLE_MSG(hwnd, WM_CREATE, OnCreate); default: return (DefWindowProc(hWnd, msg, wp, lp)); } return 0; } BOOL OnCreate(HWND hwnd, LPCREATESTRUCT lpCreateStruct) { return TRUE; }
要は、ウィンドウプロシージャがアホみたいに長くなるのを防げるわけだ。
MFCとかWTLとかのメッセージマップってのもこんな風に実装されてるのかな? ・・・って、MFCもWTLもぜんっぜんわかんないんだけどね。
さらにヘッダファイルをぼ〜っと眺めてると、SendMessageをラッピングした マクロがたくさんあった。
SendMessage(hEdit, EM_LIMITTEXT, max_len, 0);
が
Edit_LimitText(hEdit, max_len);
って書けるようになるみたい(試してないけど)。
あ、昨日のWM_COMMANDで通知されないメッセージを受け取る話。 やっぱりサブクラス化が必要みたい。 WM_KEYDOWNでVK_TABとかVK_RETURNとかを拾いたいだけだったのに。 Tabキーでのコントロールのフォーカスの制御なんかもサブクラス化して 実装しないといけなそうなんで、結構面倒だぁね。
そうそう。
VCPPに入った。 さっそく有用な情報が手に入ったんでほくほくしてるとこ。 なにかってゆーと、ヘッダファイルに関数の本体を実装しちゃいけないよって話。 分割コンパイルをしてるときに、 そーやって書かれたヘッダファイルを複数箇所でincludeすると 多重定義エラーがでてしまうわけだぁね。
このページにリンクを張りたい人はご自由にどうぞ。
疑問・感想・要望・不満・文句・愚痴等々ありましたら↓までメール下さいましm(_ _)m