あまちゅあプログラマ 活動履歴 08/25 〜 08/31

03/08/25

えと、今日は激しく疲れたので、簡単に日記を書いて寝ます。^^;

というのもですね、今日は学校の共同研究室っていう名前まんまの部屋の大掃除が在りました。9:15分集合ってことだったんですが……… すみません。11:00に学校へ付きました ^^;(ホンマごめんなさい…) 清掃するため荷物を一旦部屋からほぼすべて出し、床下に配線されてるLanケーブル等を撤去…という事になってたんですが、私がついた頃にはすべて終わってました…… あぁぁぁぁぁぁ…… ^^;
さすがに、このままではなんとなく申し訳がたたないので、皆が休憩取っている間も簡単な雑務をこなす事にしました……(到着した頃は、作業が人段落したため、昼休み中だったのです)。 んで、昼休みも明け、午後の作業の説明をするために作業員待機部屋(仮)に行ってみると………おぉ、すげぇ人数あつまっとる!! 大体50人ぐらいいたような気がします。 さすがにコレだけの人数が居れば、いくらモノがすごい事になっているそれなりに広い研究室も、午前中で机から何から運び出せますわな。

んで、午後からの作業なんですが、つまりは荷物の搬入をするわけですね。 まぁ、搬入をするためには、まず床下にLanケーブルを配線して床を閉める必要があるわけですが……床板が激しく重いんですよ。^^;  普段ひきこもっている私にとっては、ものすごい辛い作業でした……。
床板をすべてはめたところで次は、床上にカーペットをひきます。これはこれで辛い作業で…………カーペットが正方形状になっており、それを一面にひいていくわけですが……… 広い…部屋が広いんです……。普段は机とかあって、狭く感じる研究室なのですが、モノがなくなるとめちゃんこ広く感じます……。 その広いエリアを1枚ずつ、せっせこせっせこはめていきます……力仕事ではないのですが、屈んでの作業となるためこれはこれで辛い………。
カーペットが引き詰まったところで、荷物の搬入です。机とかを入れていくわけですが………なんで机ってあんなに持ちづらいんですかね? おまけに、引き出しに物が入ったままだし! 重いっちゅーねん!!  …というような事が3回ぐらい続き(苦笑)、体力的にも精神的にもかなり疲れました……

……なんつーか、文章まとまってねぇ^^;
いやぁもうね、とにかく寝たいんですよ(爆  というわけで、えらい簡単な内容ですが、もう寝ます。 激しくお疲れ〜……

03/08/26

なんつーか、寝ます

いやね、今日も学校の清掃活動をし、帰宅が27日0時で27日も8時起きして、学校に行かなきゃいけないとなると、寝なきゃまずいわけですよ。 帰宅してから、飯食って、風呂入ってHP定期巡回してたら、もう02:00ですがな!! あー、なんか最近まともに睡眠とってねぇ〜(涙
というわけで、今回もさくっと内容書いて、素直に寝ますわ…

さて、今日やった事。学校の清掃活動2日目なんですが、 基本的な物の移動というのは前日に終了しているので、今日はゼミ単位での作業が基本となりました。
まず、ゼミ内のLanを整えないといけないわけですが……Lanケーブル、自分等で自作しました…いやはや、ケーブル自体を作ったのは初めてだったので、良い経験といえばそうなのですが、 「配線を間違う」やら「ケーブルが上手くそろってくれない」やら「上手く先っぽのコネクタ内部に配線が入ってくれない」やら…正直メンドウでした。(爆 ^^; ただ、コレの利点は、 本当に必要な分だけの長さにする事が可能なため、ぴっちり配線が可能という点でしょうか。 ケーブルを買ってくるとなると、長さが固定なため必ずどこかで「ケーブルのあまり」が発生して、それがケーブルの絡みに発展して、PC動かすときにムカついて…と発展してしまいます。 これが無いという点は評価できますね。……まぁ、逆に完成するまでがムカつくわけですケド。(爆 ^^;

ケーブル作成が完了したら、次は実際に配線する事になりますが、配線は基本的に床下に埋める方向なので、再度重たいパネルをひっぺがえしての作業になりました…。 今回の場合何が辛いかというと、すでに机等が搬入されているので、その机等をどかしながら必要なパネルをはずしてケーブルを通してゆく…というような感じなので、偉い大変でした。床パネルも、机も激しく重いんじゃー!(爆

さて、そのケーブルも引き終わり、PC・ディスプレイの電源も接続し、キーボード・マウスも接続。 いよいよ、清掃後の初起動です!! ちなみに時刻はすでに21時!! 毎回帰宅時刻が遅くなっていくのでありました……^^;
ただ、起動・ログオンに関してはいろいろテストしてみても、基本的に問題なくできていたので、作業自体はさくっと終わりました。まぁ、終わった時刻は22:00なんですが。(爆 ^^;

そんなこんなで、帰宅に2時間かかった結果、27日00:00に帰宅…というわけです。
なんか、即興で文章書いているため、そんなに激しく苦労している印象は受けないのですが、実際はもっと過酷な作業が続いております……。^^;

さて帰宅途中の話なのですが、 早く帰ろうと、千葉駅にて本来 内房線にのって帰るところを、早く出発する外房線にのりました。 上手くいくと、蘇我駅にて、東京駅からやってくる 内房線乗り入れ京葉線快速 に乗り換えする事が可能で、 千葉駅で発車する内房線の電車より、1つ前の電車に乗ることが可能なのです。
が! 23:00を過ぎると、そんな乗り入れしてくる快速電車もなくなるわけで、見事に作戦は失敗。(爆 仕方なく、 千葉駅を発車する、内房線各駅停車を蘇我駅待つ事に………意味ねー!!
そんな、蘇我駅での出来事……(注:あくまで前フリだったらしい)

「ノォォォォー!」という心境で、とぼとぼと駅構内を歩いていると、 私と同じく内房線各駅停車をしている人たちの中に、"ホワイトロリィタさん" がおりました。…つーか、内房線なんていう超ローカルなところで、 ロリータさんがいるとは思わなんだ!!! と、内心発見にびっくりしましたが……… やっぱり、えぇですな〜。 とまぁ、私は驚き・関心を持ったのはいいのですが、そのまま通り過ぎ、いつもの乗換時の定期乗車位置へと到着。 到着してから「あまり見る機会無いんだから、もうちっと確認できるような位置で並んどいたほうが良かったかなー…」と少し後悔 ^^;
しかし、そう思ったときには既に時遅し、待っていた各駅停車が入線してきました。 清掃で疲れている私は、とぼとぼと電車の奥へと進み、通路に立って発車を待っていました。 ……ふと、私のたっている前の座ってる人をみると…………"ゴスロリさん""甘ロリさん" やんかぃな!!! 正直びっくり!!  つーか、だから何でこんなローカルな路線でこんなに遭遇率が高いですかぃな!!! ……う〜ん、今日はどこかでライブでもやってたんですかねぇー。
……ただ、私は、そんな彼女等3人に言いたい。 ヘッドドレスは常に実装しとけぃぃぃーーー!! ……これないと、キまらないと思うんだがなぁ……

とまぁ、いろいろ語っていたら、いつのまにか1時間過ぎてます。^^;
えと、寝ます。いや、もう寝ます。つーか、寝ないと死にます。 といわけで、撤収。 明日も学校だー!(涙 <用事は違うけど

03/08/27

うっひょー! 寝ちまったーー!!^^;

力仕事等で連続3日間の学校通いだったため、家帰ったら速攻で寝てしまいました………。最後に記憶している時間は…20時ぐらいか。^^;
というわけで、この日記は28日の正午ぐらいに書いてます。何で正午かというと、それぐらいの時間に起きたからという理由だったりします。^^;<寝すぎ

んで、3日目は学校で何があったかというと………特に何もありませんでした。^^; 話を聞くだけ…だったりします……
3・4年生合同でのゼミ集会だったのですが、内容としては「4年生の研究状況発表」「4年生からの就職活動するときのアドヴァイス」という感じ。 3年生は出番無し!(爆
んで、何が辛いって………やっぱり疲れが出ていたのでしょう…「寝ないようにがんばる」のが一番辛かった……。正直、家に帰り布団の上でぐっすり寝たかった……

そんな良く分からないゼミ集会が終わった後は、いつのまにか注文していたワクチンソフトが届いていたので、そのソフトのインストール作業をする事に。 んで、そのソフトのパッケをみたところ……私の知らないワクチンソフト「マカフィー」……なんじゃこりゃ。^^; ま、まぁとりあえず、 インストールをして〜っと…んで、再起動。起動後にワクチンパターンをアップデート………って「お使いのパターンは最新です」ってなんでヤねん!最初からついてる 02年9月のパターンが最新なのかよ!! まぁ絶対にそれは無いのであれやこれや調べてみると、ブラウザでアクセスして手動アップデートが可能らしい…というか、 学校の環境だと、ブラウザからの手動アップデートでしかアップデートできない模様………このソフトだめぽ……

まぁそんな作業も終わり、家に帰宅。 そして、すぐ飯を食って寝る……ちかれました………
それにしても、ようやくプログラマに戻れます。この3日間全くソース打ててないですからね……夏休み明けるぐらいには形にしたいものですわ。

03/08/28

かっ…体がいたひ……だるい………

3日間の疲れが出て、もうだめぽ… ホンマに今日は集中できませんでしたわ……プログラムもやってないし…^^; ゲームも少ししかやっとらんし…… どーも、だらだらしてるだけだったなぁ……… あぁぁぁぁぁ……=■●_

というわけでネタが無ければ用意もしてません、どうしましょ……

あー、どうでもよくないネタとしては「住基ネットのパスワード漏洩」があったらしいですね。NHKで。 いくらお偉いシステム構築しても、こんな状態があるんであれば意味ないっぽ。^^; まぁ、そもそも この国がそんなにセキュリティ高いシステム組めるとも思えませんけど(爆。実際、クライアントPCはNT4だった気がしますし。

窓の時点でもうだめぽ。

03/08/29

今日はしっかりソース打ったぞーーーっ!! というか、何日ぶりやねん。^^;
というわけで、ソースを打ち込みまくりました。まぁ、打ち込みまくった結果「アルゴリズムどうしよう〜」と激しく悩んでる現状もあったりしますが^^;、それは後々…

さて、ソースを打ちこんだってことで、今日のネタはC++ネタになります。えと…大勢の方ごめんなさい。^^;
んで、今日は何を作っていたかというと「ファイル読み込み関係」です。具体的には次のようなクラスを作りました。


// テキストファイル読み込みクラス
class C9TextFileStd :
    public I9FileReaderText
{

    tstring         m_strFullPathName;
    FILE*           m_pHandle;

public:

    C9TextFileStd(LPCTSTR szFileName, const E9FileOpenMode eOpenMode);
    C9TextFileStd();
    virtual ~C9TextFileStd();

    virtual int     OpenText(LPCTSTR szFileName, const E9FileOpenMode eOpenMode, void* pUserParam);
    virtual tchar*  GetFullPathName(LPTSTR szFileName, CUINT nBuffSize, tchar** ppFileTitle);
    virtual int     Close();
    virtual int     Flush();
    virtual int     Read(LPTSTR szBuff, CUINT nBuffSize);
    virtual int     Read(tstring* strBuff, CUINT nBuffSize);
    virtual int     Write(LPCTSTR szBuff, CUINT nNoUsed);
    virtual int     Write(tstring* strBuff, CUINT nNoUsed);
    virtual UINT    Seek(CINT nRel, const E9FileSeekPos ePos);
    virtual UINT64  Seek64(CINT64 nRel, const E9FileSeekPos ePos);
    virtual UINT    GetSize();
    virtual UINT64  GetSize64();
    virtual BOOL    IsEOF();
    virtual BOOL    IsOpen();
};

というような感じ。まぁ、ここで「んな、fstream 使えばえぇやん!!」と突っ込みが出来る人もいるでしょうが……ぢつは私は 未だに fstream が良く分かってません(爆。ついでに言うと、fstream のメンバ関数がすべて小文字ってのも納得できないわけですわ。^^;  んで、こうやって自分なりに、文字列を読み書きするためのクラスを作成したわけです。
ただ、ポイントとしては I9FileReaderText を継承している事 でしょう。コレが非常に重要なのですよ!! この I9FileReaderText を継承したクラスであれば、どんなファイルでも読み書きできてしまうのです。たとえば次のようなソースが将来的には可能になるわけです。


class C8TextReader
{

    I9FileReaderText*   m_pTextReader;

public:

    C8TextReader() :
        m_pTextReader(NULL){}
    ~C8TextReader()
    {
        DeletePtr(m_pTextReader);
    }

    void SetReader(I9FileReader* pReader)
    {
        DeletePtr(m_pTextReader);
        m_pTextReader = pReader;
    }

    void Message()
    {
        string strMsg;
        string strTitle;

        m_pTextReader->Read(&strMsg, 1024);
        m_pTextReader->Read(&strTitle, 1024);

        // メッセージボックスで読み込んだ文字列を表示
        ::MessageBox(NULL, strMsg.c_str(), strTitle.c_str(), MB_OK);
    }

};

/*------------------------------------------------------*
 *
 *  C9LhaReader とか C9CabRerader とかは、
 *  I9FileReaderText を継承しているとする。
 *
 *------------------------------------------------------*/
int main()
{
    C8TextReader r;

    // lzh ファイル内のテキストを直接読む。
    r.SetReader(new C9LhaReader("test.lzh\\test.txt"));
    r.Message();

    // cab ファイル内のテキストを直接読む
    r.SetReader(new C9CabReader("test.cab\\test.txt"));
    r.Message();

    // どこかのサーバー上にあるファイルを ftp でとってきて表示 -> こんなもん作らんと思う。(笑
    r.SetReader(new C9FTPTextReader("ftp.laura.co.jp", 21, "dir/test.txt", "ID_Manna", "Pass_Manna");
    r.Message();

    // http 編
    r.SetReader(new C9HTTPTextReader("www.ayuayu.com", 80, "taiyaki/test.htm");
    r.Message();

    // Fifth シナリオリーダー
    r.SetReader(new C9FifthTextReader("data1.mp3"));
    r.Message();

    return 0;
}

こんな事が出来るんですね。あくまで夢のお話ですけど。 まぁ、 こんなインターフェースクラス作らずに テンプレートで流し込んでしまった方が速度的にはいいと思うんですが……… テンプレートクラスにしちゃうと、ソースを ヘッダにすべて書かなきゃいけなくなっちゃって、管理が大変なのよねー。^^; なもんで、実行速度はちと低下しますが、 仮想関数を利用してのファイル読み取りでした。

まぁ、ここまでは比較的良かったんです(きっと後にとんでもない穴があることに気付くんでしょうけどね。^^;)  何が問題か…?
今のところ、C9TextFileStd という C の関数を利用した読み取りクラスが出来ました。…が、実際に Read 関数を読んでみた文字列を見ると、一番語尾にゴミがついてるんですよ……。 何かなー? と思ったら…「改行コード」……… あぁぁぁぁ、そうだ。fgets() は改行コードまで読んではくれるけど、改行コード自体は削除されないんだったーー!!!(涙
ってことで、この改行コードを削除するためのソースコードを打つ事に。まぁ、単に改行コードを消すだけであれば、さくっと出来てしまうのですが……… どうも後々の兼ね合いを考慮していまいまして………「文字・文字列置き換え処理を作ろう!」とたくらんでしまったわけです。んで、結局のところこれがいけなかったのであります……。

…とまぁ、熱く語りたかったのですが、あまりにもメンドウだったので(爆)、概略だけ…
同じ文字列の長さ同士であればこの処理簡単なんですが、文字数が増えたり減ったりした場合の処理が、今の考えだととんでもなく遅くなってしまうのです。 文字のコピーが無駄に大量に発生してしまうからなのです。
更に言うと、文字以外のバイナリ値にも対応したいよね。とかワケ分からん事考えてたりするんで、またタチわるい…… ああぁぁぁぁぁぁ…… ^^;

というわけで、今日はエセプログラマっぽいことをたくさん書きました。この日記見ている方の何人が分かってくるか、非常に不安ですが ^^; 今日はこのネタしかなかったので、あしからず………

さて…問題解決に向けてがんばりますか……うぐぅ…

03/08/30

む〜ん…どうも、良い汎用置き換えアルゴリズムが思いつかん……。 同じ要素数(文字数とか)ならさくっと出来てしまう…というか、すでに replace っていう関数("命令"と 思ってくれてもとりあえずOK)が用意されてるんですけど…… 置き換え前と置き換え後で要素数が変わってしまう場合が一番厄介なわけで……関数呼び出しで、要素の増減ってのが非常に難しいんですよね〜……。 反復子(iterator)を関数の仮引数に渡すとした場合、それだけで要素の追加削除なんてのは出来ないので、増減したいとなると STL のコンテナオブジェクトを渡す事になる……こんな感じですね。


template<typename SrcStl, typename OldStl, typename NewStl>
__inline 何か replace(SrcStl& stlSrc, OldStl& stlOldElement, NewStl& stlNewElement)
{
    return 何か;
}

んじゃぁ、ここで追加削除をしてみようとします。


template<typename SrcStl, typename OldStl, typename NewStl>
__inline 何か replace(SrcStl& stlSrc, OldStl& stlOldElement, NewStl& stlNewElement)
{
    // 処理自体は適当に何か在るとする。

    stlSrc.insert(アレ);    // vector list map set とかと共通する引数を持ってる insert ってあるっけか?
    stlSrc.erase(コレ);     // vector list (中略) てる erase ってあるっけか?
    return 何か;
}

とまぁ、こんな感じに 追加削除の保証が出来ないわけですよ(多分)。 仮に、特定のコンテナだけにとりあえず対応したものを作ったとしても、 保証が無い以上テンプレートまで使って関数を作る意味なんてーのは皆無なわけで…… あぁぁ、困った ^^;
というか、この関数だと 単なる配列が送られてきたときに対処が出来ないのです。んじゃぁ、こんなの作りますか?


template<typename InIt, typename OutIt, typename OldIt, typename NewIt>
__inline 何か replace(
    InIt   itInB,  InIt   itInE,    // 置き換え元となる要素列への反復子
    OutIt  itOutB, OutIt  itOutE,   // 置き換え後の要素列を入れるバッファへの反復子
    OldIt  itOutB, OldIt  itOldE,   // 置き換える元の要素列への反復子
    NewIt  itNewB, NewIt  ItNewE)   // 置き換え後の要素列への反復子
{
    // あれやこれや…

    return 何か;
}

めんどくせーよ

なんで引数8個も渡さなあかんねん! つーか、このままだと、コンテナオブジェクトだと出力できないじゃん! itOutB, itOubE に指定されたあらかじめ確保しておいたバッファに、出力結果を代入してゆく…という考え方だったんですが……… これがコンテナオブジェクトだったら大困り…set とかだったらコンテナ壊れるじゃん…しかも、どうやってバッファ確保するんだ?^^;

…というわけで、いろいろ試行錯誤した挙句の結論。

作るの や〜めた

状況によってあれやこれや変わるんだ、その時々に専用の作ればえぇや。(ぉぉぉ

とまぁこんな感じに、思いっきりやる気が低下する結論にたどり着いてしまったために、案の定やる気が低下しました。^^; なもんで、現在プログラムから離れて BGM作成に作業移行。 今は新しい曲のアレンジに入ったのですが、知人にあらかじめアレンジをしてもらっていたものを、それをさらに弄くるという作業をしています(当然許可ありでです)。 んで、知人がアレンジした曲調が Jazz だったんですよ。……Jazz……… Jazz のドラムってどんな感じや。^^; というような感じで、現在試行錯誤中…… あぁぁぁぁ…Jazz わけわかんねぇよぉぉぉーーーーー!!

03/08/31

引き続き Jazz に苦戦中………。私的にはビックバンドジャズをイメージして曲をアレンジしてるんですが…… サックス群、ブラス群、ピアノをどう絡めていいのかが全く分からず。^^; やっぱりさほど聞かない音楽ジャンルに手を出すのはよくないですねー……

…とまぁ、今日の状況は、今のですべて語ってしまいました。^^;
なもんでネタ放出。(笑

先日MSNメッセンジャーの互換ソフトである「偽メッセンジャー」を立ち上げたところ、すぐさま誰かから声がかけられました。 「なんやなんや?誰や〜?」と思って確認してみると……

Microsoft!!
わ、びっくり!^^;

Microsoft 自体からメッセージが来るとはおもわなんだ。(笑
とはいえ、どうやら自動メッセージのようで、ユーザーがログオンした時「特定の条件を満たす」と自動的にメッセージが送信されるようです。 実際、ウィンドウに表示されたメッセージが注意文でした。いや、別に悪い事はしてないですよ

とりあえず、こんなウィンドウめったに開かないですし、何よりこのウィンドウに対してメッセージを返したらどうなるかが気になったので、メッセージを送信してみる事にしました。 …無いとは思うけど、もしかしたら自動メッセージじゃなくて「MSの人が手動でがんばっており、返事が帰って来るかも」なんていう良くわからない期待をしながら……^^;
んで、下記が実験の結果です。

MSを「お兄ちゃん♪」と呼んでみた。
怒られますた。

そうですかそうですか。MSさんは、野郎からの「お兄ちゃんコール」はエラー内容不明なほどの致命的なエラーとして返しますか。そうですかそうですか。(違

まぁ実際のところは、10月ぐらいから「偽メッセンジャー」などの「サードパーティー製のメッセンジャー」は使用不可になるらしいので、その対策が今から始まっているのでしょう。 なにやら、セキュリティ上の問題が云々…らしくて。  …あー、偽メッセンジャー使いやすかったのにな〜。(ちなみに regnessem は、どうも好かんかった)
いつかは、MSNメッセンジャー6に移行しないといけないのか〜。…とは言え私的には、MS純正のソフトを使う事自体が「セキュリティが云々」の問題に引っかかるような気がしてならないんですけどねぇ〜。むむ〜ん。