やっとのことで、中間テスト終了。
ということで、今日は今までプログラミングしてました。
さて、内容はというと、Free Typingの改造ですが、
今回は終了時に詳細な結果を表示するような
改造をしてみました。
まだ、完成しているわけではないのですが、
一通りの枠組みはできているので、あとは、
肉付けをしていくだけです。
まぁ、ここのところが、どんな機能をつけようかと
迷うところで、面白いところです。
今回は、タブで制御できるようにしてあるので、
ある程度はスペースも確保できるので
いろいろな角度から分析できるようにしようと思います。
正直なところ、他のタイピングソフトと比べて、
殺風景で見劣りするので、こういうところで
差異をつけていくように考えています。
あと、今日やってて思ったことを二つほど。
・STLのエラーわかり辛い
最初、こんな感じでエラーが出たのですが、
エラー 2 error C2784: "bool std::operator <(const std::Tree<Traits> &,const std::Tree<Traits> &)"
: テンプレート 引数を "const std::Tree<Traits> &" に対して "const std::string" から減少できませんでした
(改行付加して、シングルクォーテーションをダブルクォーテーションに変更)
これを見て、一体何のエラーなのか、わかるものなんでしょうか。
(一概には言えないと思いますが)自分の場合、このエラーの原因は、
<string>がインクルードされていないのが原因でした。
STLのmapを使おうとして、検索のキーの型にstringを指定して、
コンパイラがmapに必要な比較演算子を探しても、
見つからなかった、ということだと思います。
・同一のプロシージャに複数のウィンドウから
メッセージをを送出するのは、危険すぎるかなぁ
ウィンドウクラス(Win32APIのじゃなくて、C++のクラス)が存在して、
そのインスタンスを複数生成すると、ウィンドウクラスの
staticの一時的なウィンドウプロシージャに、生成した
ウィンドウすべてが一度メッセージを送出することになるので、
それってどうなのかなぁ、ってことです。
最初は、危険かなぁ、と考えていましたが、
いろいろ、他の人が書いてあるのを見てみたり、
自分なりに考え見ましたが、結局、
よくよく考えてみると、根底の部分では、
TranslateMessageとか呼び出す前は、
全部共通のメッセージのはずなので、
ある程度、信頼性が確保できるのなら、
問題ないのかなぁ、という自分の中での結論に至りました。
最後に、今日のプログラミングで書いたソースコードの行数。
大体、5,6時間程度やって、400行・・・。
時間の割りに、あんまりかけてないかなぁ。
普段自分はサクラエディタというテキストエディタを使っています。
まぁ、このエディタ自体は、ソースコードの色分け表示ができたり、
文字コードの変換とか、改行コードの変換とか、簡単にできて、
非常に重宝しています。
Japanese Text Editor
http://sakura-editor.sourceforge.net/
さて、今回、ファイルを保存するときの初期ディレクトリを
デスクトップにする、というのと、ファイルを保存するときの
初期拡張子を"txt"にする、という二つの設定をできないかと、
いろいろと探してみたのですが、そのような設定が
見当たらなかったので、まぁ、面倒だからソースコードレベルで
設定しようと思い、やってみました。
んで、まぁ、前置きが長くなったけど、以下そのときのメモ。
一応、作業を行った環境を書いておくと、
Windows XP Professional SP2
Visual Studio 2005 Professional
サクラエディタのリビジョン:969
です。
多分、以下で行うような作業だけなら、
Visual C++ 2005 Express + Platform SDK
の環境でも、おそらく(未確認)できると思います。
まず、ソースコードは、上記のサイトのSubversionの
Repositoryからチェックアウト。
このとき、TortoiseSVNがインストールされていると
「TortoiseSVNで最新のソースコードをサクラエディタ開発Trunkからチェックアウト」
と書いてあるところをクリックするだけでチェックアウトできます。
チェックアウトするときに、証明書云々と問われますが、
問題ないと確認したら、先に進んでチェックアウトを行ってください。
チェックアウトが完了したら、Visual Studioでソリューションを
開いて、「CDlgOpenFile.cpp」を開きます。
そして、以下の箇所をそれぞれ修正。
・ファイルを保存するときの初期ディレクトリをデスクトップにする
911行目をコメントアウト。
//mofn.lpstrInitialDir = mszInitialDir;
以下のソースをコメントアウトした行の次の行に挿入。
意味は、デスクトップのパスを取得(SHGetFolderPath)して、
OPENFILENAME構造体の変数 m_ofn の lpstrInitialDir に渡す。
char DesktopPath[255] = "";
SHGetFolderPath(NULL,CSIDLDESKTOP,NULL,0,DesktopPath);
mofn.lpstrInitialDir = DesktopPath;
・ファイルを保存するときの初期拡張子を"txt"にする
922行目の記述を以下のように変更。
意味は、OPENFILENAME構造体の拡張子が指定されなかった場合に
自動的に付加する拡張子を指定する変数、lpstrDefExt の値を変更。
m_ofn.lpstrDefExt = "";
↓
m_ofn.lpstrDefExt = "txt";
以上でそれぞれの変更が完了。
後は、コンパイルして、確認して、Releaseに変更して、
再度コンパイルして、以上で完了です。
サーバーの移行等も完了し、サーバーが使うことがなくなったので、
サーバーの停止。
以下、そのときのメッセージ。
[root@localhost root]# mysql stop
ERROR 1049: stop なんてデータベースは知りません.
妙に堅苦しくないメッセージなので、
最初出たときに少し驚いた(==
[root@localhost root]# shutdown -h now
Broadcast message from root (pts/1) (Sat May 20 21:23:13 2006):
The system is going down for system halt NOW!
そして、shutdown...
さて、明日もテストなので、勉強してくるかな。
午前中は、補講で、午後はそのまま学校残って自習。
自習の間に、ついうとうとして、30分ほどの睡眠を
2回ほどしたような気がするのは秘密。
うん、多分誰も気づいてないから、まぁいいや。
って、よくよく考えてみると、なぜそこで眠気に襲われるかって、
昨晩遅くまで起きてたのが原因なんだろうなぁ。
しかし、今回はパソコンやってて眠くてこうなった、というのは、
自分が馬鹿だった、ってそれだけでいいんだけど、
例えば、遅くまで勉強してて眠くなった、というのは、
どう対処すればいいんだろうか。
自分が悪いっていうのは、確かだけど、これから、
そういう状況になるってことも、大いにありえるだろうし、
なんていうかな、そういう耐性っぽいものを
つけていかないと、いけないのかもしれない。
まぁ、よくわからないことかいてるけど、
さっさと寝て、明日もがんばることにしよう。
Free Typingのログの切り離し作業完了。
一応、動く程度にはなってるけど、少し、
クラス間の関連が怪しいのと、新しい
機能をいくつか入れてみたいので、公開は
まだ先になりそうです。
さて、明日は午前中は補講。
多分、午後もそのまま自習室によってくと思う。
んでまぁ、帰ってきたら、今日の続きと、
サーバー停止させて、バックアップ取ったりとか、
やろうと思う。
今日から、来週の火曜日まで中間テスト。
今日は、現代文、英語2、物理だったけど、
あんまり芳しくない感じだなぁ。
明日は、数学3と地理だけど、毎度地理が足を
引っ張ってるので、がんばるようにしないと。
数学3の方は、これだけ70分テストだけど、
どんな問題になるかが気になるところ。
範囲が、微分のところ全部なので、
微分したりとか、グラフ書いたりとか
すると、結構時間がかかったり。
あとは、近似式がちょっとやばい感じかなぁ。
f(a + h) ≒ f(a) + f'(a) * h
f(x) ≒ f(0) + f'(0) * x
の使い分けとかがいまいちわかってなかったり。
なんか、重大なことを見落としてる感じがするなぁ。
Webサイトのコメント送信のところの文字化けを、
修正してなかったのを思い出して、急いで修正。
何度か、手違いでいろいろとやってしまい、
結構時間がかかるはめに・・・。
まぁ、とりあえず、何とか直せたと思う。
先ほど、サクラエディタのソースコードを
見ようと思って、サクラエディタのページを見てたのですが、
スキーム名に「tsvn:」って指定すると、TortoiseSVNが
コロン以下のアドレスから、チェックアウトしようとしてくれるようです。
リポジトリを公開することがあったら、これをやってみるようにしよう。
物理がまずい・・・。
今回の範囲は、電気の一番最初のところ(斥力が
どうこうとか、コンデンサがどうこうとか)なわけですが、
いまいち、よく理解ができていない・・・。
明後日がテストだけど、もう一度問題を解きなおすとして、
どうにかなるだろうか。
化学の有機のところがわからないとか、そういうのなら、
まだ、いいような気がするんですがね、工学系等の
道に進むというのに、コンデンサのあたりがわからないとか、
あんまりしゃれにならないので、どうにかしないといけない。
約1年半ほど稼動し続けたサーバーですが、
Webサーバーの移行も完了し、リポジトリの停止も
通知したので、これでやっと、サーバーを
停止できる状況まで持ってこれました。
まぁ、停電とかでたまにサーバーが停止してる
こともありましたが、本当によくがんばってくれたと思います。
スペックもかなり低い割には、そんなに遅さを
感じることも無かったし、6年近くたつパソコンの割りに、
特に目立った故障とかも無くて、よかったと思う。
ちなみに、自分で覚えてる限りで、最長の連続稼働日数は
130日ほどだったと思います。
毎度毎度、100日越そうとすると、暴風だったり、
ブレーカー飛んだりで、いわゆるジンクスがあったわけです。
この130日ってのも、つい先週までの記録なわけですが、
このときは、暴風とかそういうのじゃなくて、
早朝に送電側で電源切り替えたのかわからないけど、
瞬間的に停電したようでした。
さて、それで、これからバックアップ作業に入って、
完全に停止しようと考えてるのですが、どうやって、
バックアップしようかというのが問題でして、
まず、バックアップ方法をどうしようか、というのと、
純粋に時間が無い、ということ。
前者の方は、ハードディスクのイメージごと、
フルバックアップしたいのですが、Linuxの
ファイルシステム(名前忘れた)がWindows上で
マウントできるようなソフトを探して、
そっからバックアップしないといけないんです。
多分、Linux上でSambaとか何か経由するにしても、
できないことは無いだろうけど、ちょっと時間がかかりそう。
だから、いっそのこと、Windows上でマウントして作業した方が
楽そう、っていうことです。
それに、ハードディスクの容量が、ちょうどDVDにはいる
ぐらいのサイズなので、そっちにバックアップしたいってのもあります。
で、結構切実なのが、後者。
こっちの方は、結構問題ありまして、まず、今からサーバー止めて、
作業するにも時間が無いっていうのも問題なんですが、
仮に、今サーバー止めて、一週間放置したら、ハードディスクが
動くかどうかわからないっていうのがあるんです。
ものがものですし、耐用時間もかなり越えてるはずだし、
あんまり悠長なことをやってられない。
まぁ、来週に作業を移せば、それでもいいんですが、
なんとなく、一週間何もせずに放置ってのもなんとなく気が引ける。
勉強のあいまにでも、ちょこちょことやってけば、
何とかできるだろうか・・・。
まぁ、そんな感じでうだうだと書いて見ましたが、
そんなことかいてる暇あったら、作業した方がいいですね。
多分、最後の方の理由により、停止するのは、来週くらい・・・?
手を加えてみよう、とは思うものの、いまいち案がまとまらない。
もうちょっと、動的な表示を増やしたいかなぁ、とも思うけど、
何をどうしようか・・・迷う(==
とりあえず、つれづれと心にうつりゆくよしなしごとを
書いてみようと思います。
・結果の表示方法を変更する
・ログの履歴を残せるようにする
・ロードできる画像の種類を増やす
・音楽ファイルのファイルの種類を自分で調べるようにする
・カスタマイズできる項目を拡張する
・問題ファイルを増やす
・問題ファイルを暗号化して、1ファイルにまとめる
・ローマ字の「si」と「shi」の区別とかを自動認識する
上から、やる気がある順番に並べてある。
とりあえず、今は結果の表示周りを改造してみようかと思う。
なんというか、ここら辺はかなりめちゃくちゃな実装になってて、
ソースコード見てもらえればわかるのだけど、
何故か結果の集計をKeyboard側でやってるんですよね・・・。
まぁ、それゆえに結果表示の拡張性が下がってるのだと思う。
土曜日で、テスト週間なのに、補講があるとのことです orz
まぁ・・・別に受験勉強もテスト勉強も、同じだと考えれば、
あまり時間もないことだし、妥当といえば妥当か。
補講自体は、午前中で終わるのだけども、午後家に帰ってきて、
勉強に集中できるわけもなさそうだし、多分、
学校の自習室によってくると思う。
ところで、昨日言ってた雑誌のInterfaceにマイコンが
ついてるとのことですが、まぁ、面白そうなので、
買ってきてみました。
今は作るときはないけど、大学入ってから、
おもちゃとして遊ぼうかと考え中。
学校の近くに赤ペンが切れたので、それを買いに行ってきました。
別にそんなことはどうでもいいんですが、
ついでに、パソコン関連の雑誌を物色してたら、
日経ソフトウェアの「プログラミング実力アップ大作戦!」という
特集の中で、Haskellに関する説明が載ってました orz
名前と多少の特徴は友人から聞いて知ってたけど、
Web上にあまり日本語の情報が無いようなのに、
こういう形で取り上げられていたのが少し驚き。
あとその雑誌に「C言語まるごと学習ブック」とか言うのも
あって、少しほしいかなぁ、と思ったけど、
とりあえず、勉強に集中できなくなるので、やめといた orz
あと、もうひとつそこの本屋で見かけたのが、
Interfaceに付録としてマイコンがついてました。
これって、以前に一度作ったことがあるのだけど、
そのときのCPUのソケットの部分をかえれば、動くのだろうか。
ポートの配置が同じなら、ソケット変えるだけでも
動くような気はするけどなぁ。
まぁ、ちょっと父親に聞いて、
興味がわいたら買ってみようかと思う。
今に始まった話でもないけど。
今、Yahooの天気情報見てみると、明日の午前6時ごろが強雨(==
通学が面倒だから、やめてください orz
さてと、あんまりパソコンも長々とも
やってられないので、日記も短めで。
スクリプトの修正とか、諸所の早急を要さない用事は、
おそらく金曜日の夜当たりに片付ける予定。
結局、昨日、日記のスクリプトを直したわけですが、
あんまり、うまくいってなかったようです。
んでまぁ、データベースのデータを再度、
エスクスポートしたり、スクリプト書き直したりして、
暫定的な処置はたぶん完了。
さて、とりあえず、今からは、数学のワークを
やらないといけない。
意外と、テストが近くて、数学3のワークが30ページほど。
数学Cの方が、80問程度だったか。
急がないと、提出に間に合わなくなる。。。
現在、XREAのサーバー側のドメイン設定の反映待ち中・・・。
いやぁ、よくよく考えてみたら、DNSサーバーの設定だけじゃなくて、
Webサーバー側の設定しないといけないこと忘れてましたよ。。。
これは、とんだ誤算だ orz
まぁ、だから、いまこうやって待ちながら日記を書いてるわけです。
さて、巷では明日がゴールデンウィーク最後の日、といわれますが、
受験生の身分の自分は、今日で実質終わりに近いです。
まぁ、そう言っても、結局、今までだってずっと
勉強ばかりしてたから、結局変わらないんですがね。
というのも、明日は模試があって、それで、
9時30分から、19時50分まで某所にて軟禁状態です orz
朝が少し遅いのはうれしいけど、終わる時間がこんなに遅いとは・・・。
でも、よくよく考えてみると、家に着くのは
部活やってたときと同じくらいの時間か。
いや、それより問題なのは、明日の天気かもしれない。
天気予報見てみると、強雨とか書いてあるし。
行くのが面倒だ・・・。
長々と待ち続けてますが、時間がかかりそうなので、
明日にまわします・・・。
結局、Webサイトのドメインの設定の変更はやってないです。
まだ内容的に、しっかりとしてないというか、
あんまり作業がはかどってないのです。
まぁ、反映自体は、数分で終わるので、
明日でも大丈夫かなぁ。
今日もあんまり作業してないけど、多分
Webサイトの移行作業は、大方完了してきてると思う。
んで、問題は、いつ反映させるかだけど、
明日の晩あたりが一番いいのかなぁ。
一日様子見てみたいわけだけど、土曜日の晩だと、
日曜日に模試でずっと出払ってる関係で、
様子を見ることがあまりできないんだよねぇ。
まぁ、本当は、Free Typingのマニュアルとかも、
この際に刷新したかったけど、それもどうなるかわからないな。
なんとなく、やる気がしない。
頭がボーっとしているような感じだろうか。
風邪とか、そういう感じじゃないんだけどね。
多分、時間はあって、逼迫してないから、
どうにもだらだらしてしまうのだと思う。
まぁ、別に好きでやってるようなことだし、
だらだら、って言う言葉は若干語弊があるけど。
とりあえず、寝ると何をするべきなのか忘れるので、
一応、メモをしとこうとおもう。
○Free Typing関連
・問題文の表示色を変えるようにする
・JPEG、PNG形式でも読み込めるようにする
・マニュアルの刷新
・問題ファイルの追加
○Webサイト関連
・移行の準備を行う
○その他
・Subversionのリポジトリの移行の準備
・メールの同期設定
・計算機のソフトを公開するなら、それの準備
(どうするかは、未定)
この程度だろうか。
なんてことを書き綴りながら、ふと、
やる気が出てきたので、JPEG,PNG形式での読み込みを
実装しようと模索していたのですが、
最初に考えていたのは、SetDIBitsToDevice関数を使って、
(詳細はMSDNで関数名で検索してみてください)
読み込もうと考えていました。
というのも、以下のような記述があったからです。
Windows 98 と Windows 2000:SetDIBitsToDevice は、
転送元イメージとして JPEG と PNG(Portable Network Graphics)の
各イメージを渡せるよう拡張されました。
とのことだったので、いろいろと試行錯誤して
みたのですが、どうにもできない・・・。
Bitmapでの表示はできるんですけどね・・・。
結局、PNG/JPEGが表示できるという割には、
引数に「DIB ビットからなる配列」とか
「ビットマップ情報」とか、含んでるわけでして、
自分の中の結論としては、結局は、ビット配列を渡すのなら、
いったんBitmapに解凍する必要があるのでは・・・という
ことにしときました。
自己完結で終わると、アレなので、一応言い訳しとくと、
ネットで情報を探してみると、できなかった、との報告は
いくらか出てくると思います。
まぁ、結局、libpngとか使わないと、無理っぽいですね・・・。
さすがに、GDI+は使う気にはなれないし、
とりあえず、見送りになるのかなぁ・・・。
できたら、実装するようにしたいけど。
さて、とりあえず、今日はパソコンはここら辺までにしとこう。
まぁ、借りている本を読んで、それで寝ることにしようかな。
Webサーバーの移行作業、結局、ゴールデンウィーク入って、
その中で徐々に作業していくことになってます。。。
本来なら、先週の段階で終わらせる予定だったけど、
時間がなくてできなかった・・・。
まぁ、ゆっくりやってくか・・・。
といっても、ゴールデンウィーク中でも、終わるかどうか、
微妙なところ(==
まぁ、何とかがんばろう。
今、XREA+のサービスを試用しているのですが、
サーバーの移行に伴って、本格稼動させる前に
借りていたわけです。
で、その期限が5月2日まで、ということで、
早急に支払いをしないといけない状態になったのですが、
手元にWebMoneyはある。が、WebMoney側で保管してるのが
一枚あって、それを取り出そうとしたら、見事に、
緊急のメンテナンスとバッティング orz
おそらく、今日の12時が期限だと思うのだけど、
支払えなかったら、一部データがまた
吹っ飛ぶことになるので、ひやひやしてました。
まぁ、それが9時ごろの話で、先ほど確認したら、
一部を除いて復旧していたので、何とか、
支払いはできました。