ページ

2008年11月20日木曜日

InstantRails備忘

今までPerlで作っていた出欠表を作り直そうと思い立ってRuby on Railsの勉強をはじめました。
手順をメモしながら勉強を進めていきます。
ちなみにまずはInstantRails2.0で試してみます。


1. プロジェクトの作成
C:\InstantRails\rails_apps>rails rollbook

このコマンドで C:\InstantRails\rails_apps\rollbook というフォルダを生成します。


2. スキャフォールドの作成
テーブル名からモデル名を命名。単数形のアッパーキャメルケースに変更。

C:\InstantRails\rails_apps\rollbook>ruby script\generate scaffold RollBook schedule:date attendance:string


3. マイグレーションファイルの作成
C:\InstantRails\rails_apps\rollbook>ruby script\generate migration create_table

このコマンドでdb\migrate\001_create_table.rbを生成します。


4. ここでいったんデータベースの準備をして動作テスト
C:\InstantRails\rails_apps\rollbook>rake db:migrate
C:\InstantRails\rails_apps\rollbook>ruby script\server

ブラウザから以下のURIにアクセス。

http://127.0.0.1:3000/roll_books


5. 認証処理用プラグインrestful_authenticationをインストール
C:\InstantRails\rails_apps\rollbook>ruby script\plugin install http://svn.techno-weenie.net/projects/plugins/restful_authentication/


6. 認証モジュールの生成
C:\InstantRails\rails_apps\rollbook>ruby script\generate authenticated user sessions


7. ここでいったんデータベースの準備をして動作テスト


C:\InstantRails\rails_apps\rollbook>rake db:migrate

C:\InstantRails\rails_apps\rollbook>ruby script\server



ブラウザから以下のURIにアクセス。



http://127.0.0.1:3000/users/new



2008年9月22日月曜日

Thunderbird PortableをGoogleデスクトップで検索する

Thunderbird Portableを標準の電子メールに設定しても、それだけではGoogleデスクトップは検索対象とはしてくれないみたい。
そこで状況は違うけどダメ元で以下のサイトの情報を参考に試してみます。

アイテムを検索できない : Firefox ウェブ履歴 - ヘルプ センター

ちなみに2で検索すると3つではなく5つファイルが見つかる。試しに5つともコピーしてまずは試してみよう。


GoogleDesktopMozilla.dll

GoogleDesktopMozilla.png

GoogleDesktopMozilla.src

GoogleDesktopMozillaStub.js

GoogleDesktopMozillaStub.xpt

その先は5でファイルを削除するところもあるし、いきなり削除するのも怖いし。
そしたらうまくいったみたい。とりあえずうまくいったみたいだけど、そのうち上記URL通りのことも試してみようかな。

なお、適当にやったことなので、参考にする場合にはあくまで自己責任の上でお願いします。



Visual C++ 2005 Express EditionでBoost C++を使おう!

このページでは主に以下の手順についての概要をまとめてあります。
ただ正直細かい点はあまり覚えてないので省略してたりもします。(^^;


    1. Boost C++ Librariesをインストール
    2. bjamをインストール
    3. Boost C++ Librariesのビルド
    4. VC++2005でのパス設定






1. Boost C++ Librariesをインストール



私は今回SOURCEFORGE.NETからboost_1_34_1.zipをダウンロードして利用しました。
まずはダウンロードしたファイルを展開し、任意のフォルダにコピーします。
ここでは、展開したフォルダを「C:\Program Files\boost」以下に移動しています。
インストール後のフォルダ構成はこんな感じです。
※深いところは省略しています。


C:\Program Files\boost\boost_1_34_1:.
├─boost
├─doc
├─libs
├─more
├─people
├─regression
├─status
├─tools
└─wiki


2. bjamをインストール



またまたSOURCEFORGE.NETからダウンロード。ここではboost-jam-3.1.16-1-ntx86.zipをダウンロードして利用しました。
ダウンロードしたファイルを展開し、任意のフォルダにコピーします。
ここでは、展開したフォルダを「C:\Program Files\boost」以下に移動しています。


3. Boost C++ Librariesをビルド



コマンドプロンプトを起動し、「C:\Program Files\boost\boost_1_34_1」に移動します。
次に以下のコマンドを実行します。


>..\boost-jam-3.1.16-1-ntx86\bjam --toolset=msvc --stagedir=. stage


ビルドに結構時間がかかりますが、これで完了(のはず)です。
正直、文字化けなメッセージがたくさん出てきたので、ちゃんとできてるか心配です。
そのうちちゃんと調べないと。。。


ちなみにビルドされたライブラリ群は、「C:\Program Files\boost\boost_1_34_1\lib」に配置されたようです。


4. VC++2005でのパス設定



最後にVC++2005で利用可能にします。
[ツール]→[オプション]からオプションダイアログを表示します。
[プロジェクトおよびソリューション]→[VC++ ディレックトリ]を表示します。
ディレクトリを表示するプロジェクトから、[インクルード ファイル]、[ライブラリ ファイル]に以下を登録します。



  • C:\Program Files\boost\boost_1_34_1\boost

  • C:\Program Files\boost\boost_1_34_1\lib

これで一通りの設定が完了(のはず)です。
近いうち簡単なサンプルでも作って試してみないと。。。



2008年8月29日金曜日

WTLでスライダーバーを使いたい

今日はWTLにチャレンジ
スライダーバーを使おうとしてMSG_WM_HSCROLLマクロを埋め込んだところ、なにやら未解決のメソッドが出てきた。
そこでよくatlcrack.hを見ると以下のコメントが、

// Note about message maps with cracked handlers:
// For ATL 3.0, a message map using cracked handlers MUST use BEGIN_MSG_MAP_EX.
// For ATL 7.0 or higher, you can use BEGIN_MSG_MAP for CWindowImpl/CDialogImpl derived classes,
// but must use BEGIN_MSG_MAP_EX for classes that don't derive from CWindowImpl/CDialogImpl.

BEGIN_MSG_MAPをBEGIN_MSG_MAP_EXに置き換えたら見事ビルドが通りました。
使い方は以下みたいな感じ。

class CMainDlg : public CDialogImpl<CMainDlg>, public CUpdateUI<CMainDlg>,
        public CMessageFilter, public CIdleHandler
{
private:
    CTrackBarCtrl    track_bar;    // トラックバー

…中略…

    BEGIN_MSG_MAP_EX(CMainDlg)
        MSG_WM_HSCROLL(OnHScroll)
        MESSAGE_HANDLER(WM_INITDIALOG, OnInitDialog)
        MESSAGE_HANDLER(WM_DESTROY, OnDestroy)
    END_MSG_MAP()

    void OnHScroll(int nCode, short nPos, HWND hWnd)
    {
        CTrackBarCtrl trackbar = hWnd;
        ATLTRACE("%d\n", trackbar.GetPos());
    }

    LRESULT OnInitDialog(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& /*bHandled*/)
    {


…中略…


        // コントロール設定
        track_bar = GetDlgItem(IDC_SLIDER_MAIN);

        // スライダーバーの初期化
        track_bar.SetRange(0, 32767);    // 値の範囲(32767が最大値)
        track_bar.SetTicFreq(3276);        // 解像度
        track_bar.SetPageSize(3276);    // PageUp/PageDown での移動量
        track_bar.SetLineSize(328);        // カーソルキーでの移動量

        return TRUE;
    }


…中略…




}


2008年8月23日土曜日

Visual C++ 2008 Express EditionでWTLを使おう!

このページでは主に以下の手順についての概要をまとめてあります。
ただ正直細かい点はあまり覚えてないので省略してたりもします。(^^;


    1. Visual C++ 2008 Express Editionをインストール
    2. Microsoft Platform SDKをインストール
    3. WTL8.0をインストール






1. Visual C++ 2008 Express Editionをインストール



特に大変なことはありません。ウイザードに沿ってインストールを進めます。
ちなみに私は以前マイクロソフトのサイトからダウンロードしていたものを使用しました。

2. Microsoft Platform SDKをインストール





Windows Server 2003 SP1 Platform SDK ISO Installを使ってインストールします。
インストール後に、VC++2008の[ツール]->[オプション]からオプション設定ダイアログを開き、include・libのパスを設定します。
[プロジェクトおよびソリューション]->[VC++ ディレクトリ]->[ディレクトリを表示するプロジェクト]->[インクルード ファイル]

3. WTL8.0をインストール



SOURCEFORGE.NETより最新版を入手します。


(1) 自己解凍書庫を展開したものを任意のフォルダに移動します。


(2) 移動後に、VC++2008の[ツール]->[オプション]からオプション設定ダイアログを開き、includeのパスを設定します。
[プロジェクトおよびソリューション]->[VC++ ディレクトリ]->[ディレクトリを表示するプロジェクト]->[インクルード ファイル]


(3) セットアップスクリプトをVC++2008EE用に編集します。

- setup80x.jsをコピーしてsetup90x.jsというファイルを作成します。
- setup90x.jsをテキストファイルで開いて、「8.0」という文字列を「9.0」に置換します。
- setup90x.jsを保存して閉じます。
- setup90x.jsを実行し、セットアップが完了します。



2008年8月9日土曜日

EeePC 901-X購入

ここ最近ずっと気になっていたミニノートPCのEeePC 901-Xをついに購入してしまいました。
ヨドバシで3台入荷しましたというセールストークにまんまと引っ掛かった感じですかね。(^^ゞ


2008年7月18日金曜日

お仕事メールの整理

http://lhgtd.seesaa.net/article/19261200.html で紹介されている内容をベースにさせていただき、項目レベルのまとめをしておきます。

  1. 【受信トレイ】
    • この中のメールは次のアクションのために即分類、分類は2~6。
  2. 【至急】
    • 半日レベル/終日レベルに分類。
    • このフォルダの中身がなくなるまでは基本的に帰宅しない。
    • メールの内容を満たせない場合には、必ず返事をしてから【作業中】フォルダに移動。
  3. 【ToDo】
    • グループウェアに完了予定を投入。
    • 作業完了で【記録】フォルダに移動。
    • 帰宅前にこのフォルダの内容をチェックして作業漏れを防ぐ。
  4. 【応答待ち】
    • 部下・上司・顧客など依頼を出したものに関しては、その応答があるまでこのフォルダに保存。
    • 応答があった時点で【記録】フォルダに移動。
  5. 【記録】
    • 案件ごとに保存。
    • 自身の担当技術など案件に紐付けるべきでないものは期間ごとに保存。
    • 期間は月単位にしておき、年単位にバックアップ。
    • 古いバックアップはメーラーで管理するとメーラーが重くなるのでエクスポートして外部保存。
  6. 【参考資料】
    • 他社情報や業界情報はここに保存。
    • 優先度が高いものは、【ToDo】フォルダで保存。



2008年4月1日火曜日

Subversionの起動

今日はSubversionをWindows上でサービス起動してみます。


 


1. コマンドプロンプトを起動してサービスを登録



コマンドプロンプトで以下のコマンドを実行します。



>sc create svnserve binPath= "\"C:\Program Files\Subversion\bin\svnserve.exe\" --service --root D:\usr\repository" DisplayName= "Subversion Repository" depend= Tcpip start= auto



  • > はプロンプトです。

  • 上記を一行で入力します。

詳細な説明に関しては、svnserve ベースのサーバを参照して下さい。


 


 2. サービスマネージャからサービスを起動



起動タイプをautoにしているので、PCの再起動でも問題ないですが、[コントロールパネル]→[管理ツール]→[サービス]でサービスマネージャを起動して、上記で登録したサービスを直接起動することもできます。


 


あとは、TortoiseSVNのリポジトリブラウザで、svn://localhost/のようにURLを入力するだけでアクセスできますね。


以下は関連サイトです。参考に。


svnserveを自動起動サービスとして登録する | Sarabande


 



2008年3月30日日曜日

Boostのインストール

今日はBoostのセットアップの覚書を残すことにします。


 


1. TortoiseSVNのセットアップ



今回の目的としてBoost::Asioを使うことなのですが、残念ながら現時点での最新版(boost_1_34_1)にはこのライブラリが含まれていないようです。


近々公開されるとは思うのですが、何となくそれも待っていられないので、今回はSubversionで公開されている最新版を取得して、自分でビルドしてみようかと思います。


そこで、Subversionのリポジトリにアクセスするのに便利なツールとしてTortoiseSVNをセットアップして使います。TortoiseSVNに関してはそのうち気が向いたら覚書をまとめるとして、とりあえず今はTortoiseSVNをインストールしたということだけにしておきますかね。


※って書いてる間に昨日(2008/3/29)公開されたみたい。。(^^;;


 


2. レポジトリから最新版を取得



TortoiseSVNのリポジトリブラウザを起動して、以下のサイトから最新版をチェックアウトします。


http://svn.boost.org/svn/boost/trunk


結構ファイル数がありますので、それなりに時間はかかると思いますので、気長に待ちましょう。


 


3. Boost::Jamのインストール



インストールとは言っても、Windows版では実行形式のファイルがそのまま取得できますので、今回はそれを利用して行うことにします。



  • boost-jam-3.1.16-1-ntx86.zip

SourceForgeから取得可能です。


解凍したフォルダをBoostを配置したフォルダと並列に配置します。私は以下のような構成になりました。



C:\Program Files\boost

├ boost_1_35_0
└ boost-jam-3.1.16-1-ntx86


 


4. Boostのビルド



やっとこさビルドに取り掛かります。


4.1. Visual C++ 2005 Express Editionを起動しましょう。


4.2. パスを通します。




    • [ツール(T)]→[オプション(O)]からオプション設定ダイアログを起動します。

    • [プロジェクトおよびソリューション]から、[VC++ ディレクトリ]を選択します。

    • [ディレクトリを表示するプロジェクト(S)]から、インクルード ファイルを選択します。

    • C:\Program Files\boost\boost_1_35_0 を新規に追加します。

    • [ディレクトリを表示するプロジェクト(S)]から、ライブラリ ファイルを選択します。

    • C:\Program Files\boost\boost_1_35_0\lib を新規に追加します。

4.3. [ツール(T)]→[Visual Studio 2005 Command Prompt]を起動します。


4.4. boost_1_35_0フォルダに移動します。


4.5. bjam.exeを実行します。



私は実行時のオプションを以下のようにしました。詳細はマニュアルを参照下さい。



>..\boost-jam-3.1.16-1-ntx86\bjam.exe -q -a --prefix=. --toolset=msvc --without-python --build-type=complete --stagedir=. stage > ..\%boostdir%_build_log.txt


かなーり時間がかかりますが、ビルドが無事終われば完了です。
ちなみに私はこの工程用に超シンプルなバッチプログラムを作りました。
あまりにも警告がたくさん出たので、仕方ないなーと思うところは無視するようにしてしまいました。


ちなみにこのバッチプログラムを利用することの責任は一切持てませんので、利用する方は各自の自己責任にてお願いします。


 



2008年3月29日土曜日

着モーション作成

ここではフリーソフトで着モーションを作成したときの覚書を残しています。
あくまでも私の環境での話ですのでご注意下さい。


1. 画像の準備
着モーションにしたいMPEGファイルを準備します。私は「TMPGEnc MPEG Editor 2.0」というソフトを購入しているので、普段はそれを利用しています。

2. MPEGファイルをAVIファイルに変換
フリーソフトの「MPEG2AVI」を利用して、MPEGファイルをAVIファイルに変換します。
私の場合、主に副音声とか多言語のときに片チャネルだけ利用する目的で使っています。

以下の設定で変換してみました。

2.1. 映像側
利用CODEC無圧縮DIB
フレームレート15fps
オーバーラップON
出力サイズを変更する有効
出力サイズ176×144
拡大縮小時に色補完するON
2.2. 音声側
圧縮の有無無圧縮PCM
形式16KHz Mono
モノラル変換モードL

3. AVIファイルを3GPPファイルに変換
フリーソフトの「携帯動画変換君」を利用して、AVIファイルを3GPPファイルに変換します。

以下の設定で変換しました。
設定を確認したら、変換対象のAVIファイルをメインウインドウ上部の白いエリアにドラッグ&ドロップします。 

3.1. 3GPPファイル
音声AMR形式一般設定QCIF標準画質15fpsモノラル


4. 3GPPファイルを着モーション化
フリーソフトの「着もと」を利用して、3GPPを着モーションに変換します。


5. 完成した3GPPファイルを携帯にメールで送信します。
メモリカード(私の場合はmicroSDカード)経由でできるかどうかはそのうち試してみたいです。


6. 着信設定で完了!


7. 参考リンク

2008年3月16日日曜日

ヘッダだけじゃダメみたいね

Boost C++ Librariesを使うときに、以下の機能を使う場合にはヘッダファイルだけじゃダメみたいね。
これらを使うときは、対応するライブラリを準備しておかないと。

date_time, regex, thread, python, signals, test, filesystem, serialization, program_options


_SCL_SECURE_NO_DEPRECATEが必要みたい

Boostライブラリを用いたプログラムのビルド時には、数多くの警告(C4996)が出てきます。
どうやらVC++のセキュア関数は未サポートなようです。
http://www.boost.org/のトップページに書いてあるのがそういうことだと思う。(2008/3/16現在)


したがって、プリプロセッサの定義に「_SCL_SECURE_NO_DEPRECATE」を追加して、これを抑圧するのがいいのかも。。



2008年2月24日日曜日

靭帯損傷

先週のフットサルでまたもや左足首を故障してしまいました。

やはり年に一度は大きめの怪我をするみたい。。。