2005年10月

iTunesに登録してある曲の管理をしたいけど

iTunesはちょっと重いしぃ、エクセルとかで管理できないかな

csv形式とかで吐き出せないかと探してみたら

iTunesのファイル メニューに

「ライブラリをエクスポート」ってのがあるじゃん

早速エクスポートしてみるとxml形式のみの吐き出しみたいです
(バージョン4.8.0.31 で確認)

これをcsvに変換するツールを作ろうと思い立ったわけです


xmlファイルを読み込んで必要なキーワードをピックアップして

csvファイルに吐き出す、単純な処理です(と思う)


気になる点としては

・xmlファイルの文字コードがUTF-8である → Shift_JISに変換しないと

・文字列の比較が大量に発生するので、実用的なスピードがでるか?


ま、近いうちにやってみます
続きを読む

2005年10月28日│Comments(0)TrackBack(0)C 
やっとコーディングを始める事が出来そうです

「ボタンを1つ追加して、それを押すと Hello World と表示」

こんな事をやってみましょう


左の Resource View から Hello リソース¥Dialog¥IDD_HELLO_DIALOG

をダブルクリックしてリソースエディタに表示させます


そしてコントロールウィンドウを探してください(^^;

画面のどこかにドッキングしているか、フローティングしているか…

無ければツールメニューからカスタマイズを選び

ツールバータブ内のツールバーリストボックスの

コントロールにチェックを入れると、ほうら出てきた


コントロールウィンドウのボタンのボタン(笑)を

ドラッグしてダイアログ上の適当な場所に配置します


配置したボタンを右クリックしてプロパティを表示して

IDとキャプションを適当に変更しましょう

MS的なIDの付け方は ID+IDの種類_名前 でしょうか

ID+Control_HelloWorld って事で

IDC_HELLO にしときましょう

キャプションも Hello World にします

これでボタンが Hello World になったと思います


続いて Hello World ボタンを右クリックして

ClassWizawdを選びます


メッセージマップタブのオブジェクトIDの

IDC_HELLO が選択された状態だと思うので

右のメッセージリストボックスの BN_CLICKED を選択して

さらに右の関数の追加ボタンをクリック!


メンバ関数の追加ダイアログが出て

デフォルトで関数名 OnHello が入っているのでそのままOK

そしてクラスウィザードをOK


左の Class ViewCHelloDialog を展開すると

関数 OnHello が出来ているので

ダブルクリックしてソースを開きます


関数の中身はカラでコメント

// TODO: この位置にコントロール通知ハンドラ用のコードを追加してください

とあるだけです

このコメントが既に意味不明ですが(^^;

とりあえずここにコードを追加していきます

コメントの下の行に以下のように書きましょう

AfxMessageBox( _T("Hello World") );


以上です、早速

F5キーを押して、ビルド→実行しましょう

Hello World ボタンを押して Hello World のメッセージボックスが

出たら大成功!やったー!



今回の操作については次回解説する事にしまする


2005年10月22日│Comments(0)TrackBack(0)C 
いよいよコーディングしましょう!

と前回書いたけど、その前にちょっとだけ

Visual Studio の操作などについて

以前作成したワークスペース Hello を開きます

そうすると Visual Studio の画面は3分割されていると思います
(自由に動かせるドッキングウィンドウなので不確かだけど…)

多分右側にあるのがワークスペースウィンドウで

Class View」「Resource View」「File View」の3つのタブがあります

右上の×ボタンで表示を消せるし

再度表示したかったら表示メニューのワークスペースで出ます

それぞれのViewのタブも右クリックで表示・非表示できます

Class View はクラスごとにツリー表示してくれて
 クラス宣言や関数などにジャンプできます

Resource View はダイアログなどのリソースを管理

File View はプロジェクト内のファイルをツリー表示

と言った感じでその時に応じて使い分けましょう


次に、下にあるのがアウトプットウィンドウで

ビルドログの表示や、デバッグ時の変数の値の表示や

検索結果の表示など、さまざまなアウトプットがなされます


最後に一番大きいウィンドウ

ソースエディタやダイアログエディタの部分です

ここはこれからイヤってぐらい使うのでそのうち覚えるでしょう


それぞれのウィンドウにフォーカスがある状態でF1キーを押すと

簡単なヘルプが表示されるので、読んでおくといいかな

ただしMSDNライブラリがインストールされている状態だと
(じゃなくても、かもしれないけど(^^;)

ソースエディタでF1キーを押すとMSDNライブラリが起動して

カーソルのある場所の単語についてのトピックが表示されます

知らない関数やクラスが出てきたらとりあえずF1を押してみましょう!


難しい話はこれぐらいにして

次回こそコーディングに入りたいと思います


2005年10月21日│Comments(0)TrackBack(0)C 
実際にソースファイルを見てみましょう!

Hello.h
Hello.cpp
HelloDlg.h
HelloDlg.cpp
の4つのファイルです

Javaでは1つのファイルに宣言と実装部分を同時に書いたけど

C++では以下のように

拡張子hのヘッダファイルにクラス宣言
拡張子cppのソースファイルに関数の中身を実装
をそれぞれ記述します
ヘッダファイルに実装する事もできるけど)

簡単に説明すると

Hello.h
Hello.cpp
アプリケーション本体について記述

CWinAppから派生したCHelloAppがアプリケーション本体
↑このリンク、IE以外だと上手く表示できないようです
○IE、Sleipnir2 △Firefox1.0.6 ×Sleipnir1.66 でした

関数InitInstance()でダイアログを生成、呼び出してます

InitInstanceは名前が示す通り

インスタンスが生成されたら最初に呼び出される関数です

アプリケーションの初期化処理なんかを記述します


Java的に言うとmainメソッドがあるクラスになります

CWinAppも実際はmain関数でインスタンス生成されて

InitInstanceが呼ばれているんじゃないかと思うけどね


HelloDlg.h
HelloDlg.cpp
今回作成したダイアログについて記述

現状で出来ている関数については

DoDataExchange
ダイアログに配置したコントロールからデータを取得したり
コントロールクラスとの関連付けを行ったりします

OnInitDialog
ダイアログの初期化処理を記述

OnSysCommand
右上のアイコンをクリックしたら出てくるメニューの
コマンドを実行した時の処理を記述

OnPaint
ダイアログ描画に関する記述

OnQueryDragIcon
その名の通り、ドラッグした時のアイコンイメージの問合せです

Microsoft的な命名規則として

On〜は何らかのイベントが発生した時

Query〜は何かの問合せ
システム・フレームワークからの問合せ、かな


前置きはこのぐらいにして

次回からコーディングしていきましょう

2005年10月18日│Comments(0)TrackBack(0)C 
その1で作った開発環境の構成ファイルについて

C:\test\Hello の中には

フォルダが2つ、Debug と res とファイルが16個あります

ファイル名でソートされているとして

~VC1A.tmp
~VC19.tmp
Hello.aps
何のファイルかわかりません

Hello.clw
クラスウィザードのファイルです
詳しくはまた今度書きます

Hello.cpp
拡張子cppのファイルがC++のソースファイルです

Hello.dsp
プロジェクトファイル
プロジェクトの設定などが記述されている

Hello.dsw
プロジェクトワークスペース
これをダブルクリックでVisualStudioが起動する

Hello.h
拡張子hのファイルがヘッダファイル

Hello.ncb
Hello.opt
何のファイルかわかりません

Hello.plg
HTML Document ビルドログがHTMLで出力される
コンソールに出力されているものと同じ

Hello.rc
リソースファイル
ダイアログのサイズや配置してあるボタンなどのコントロールの詳細が記述されています
リソースエディタが記述してくれるのでほとんど触ることはない

HelloDlg.cpp
今回作成したダイアログが記述されているソースファイル

HelloDlg.h
今回作成したダイアログが記述されているヘッダファイル

ReadMe.txt
MFC AppWizardが吐き出したReadMe
簡単な説明や使用方法などが書いてあります

Resource.h
リソースのヘッダファイル

StdAfx.cpp
#include "StdAfx.h" だけ書いてある
なぜあるのかよくわかりません

StdAfx.h
プロジェクトに共通の include を記述

Debugフォルダ
  Hello.exe
  デバッグビルドされたexeファイル
  デバッグ情報が含まれているのでファイルサイズが大きい

  他全部
  同名のcppファイルをコンパイルした中間ファイルなど
  とりあえずは気にしなくてもいいでしょう

resフォルダ
  Hello.ico
  アイコンファイル

  Hello.rc2
  拡張(?)リソースファイル
  とりあえず触る事は無いでしょう



2005年10月13日│Comments(0)TrackBack(0)C 
って事でこれからVC++でのプログラム開発について書いていきまーす

開発環境、と言うかこれを書く上でのテスト環境は

Microsoft Visual C++ 6.0 ServicePack5
MFCMicrosoft Foundation Class)使用
OSはWindowsXP HomeEdition

早速VC++を起動!

メニューから[ファイル] - [新規作成]を選ぶ(またはCtrl+N)と

「新規作成」のダイアログが出てきます


初期状態では「プロジェクト」タブが開いていて

ATL COM AppWizard が選ばれていると思います


右側にはプロジェクト名と位置の設定があります

位置はデフォルトではC:\Program Files〜 かな

とりあえずC:\testぐらいにしておきましょう

そしてプロジェクト名はHelloぐらいで


位置がC:\test\Helloになっているのを確認して

左のリストの中からMFC AppWizard(exe)を選んでOKをクリック!


MFC AppWizard - ステップ1ではダイアログベースを選んで[次へ]

MFC AppWizard - ステップ2/4 〜 4/4 はそのままで終了!

新規プロジェクト情報もOKすると、これでプロジェクトの出来上がり〜


ここで[ビルド] - [ビルド Hello.exe](またはF7キー)で

コンパイルされHello.exeが作られます

[ビルド] - [実行 Hello.exe](またはCtrl+F5キー)で

プログラムの実行、ダイアログが表示されますね

OKでもキャンセルでも×でもプログラムの終了です


これだけじゃ寂しいので表示を変えましょう

TODO:ダイアログの〜 を右クリックしてプロパティを選ぶと

キャプションの中にさっきTODO:〜がありますね

それを「Hello World」に変更してEnter

再度ビルドして実行! Hello World が表示されましたね


テキストのみでわかりにくかった? 次回ちょっと詳しく書いてみます


2005年10月06日│Comments(0)TrackBack(0)C 
つい最近「D言語」なるものを知りました

Dとその他の言語の比較を見ると C/C++,C#Javaのいい所どりな言語みたいです

C++プログラマの立場から見たD言語は

・ガベージコレクションがある
  (メモリの解放を支配できないので、最初はなじみにくい)

・文字列によるswitchができる
  (誰もがやりたいと思ったことがあるはず)

・多重継承が無い
  (なくても困らなそう)

・foreach
  (コレクションを全ループしてくれて便利。sizeやPOSITIONなどが不要)

などなど

まだ発展途上の言語のようなので今後が楽しみです

続きを読む

2005年10月04日│Comments(1)TrackBack(0)その他 
Hotwired Japanに面白い記事がありました

C++Javaなどのプログラミング言語の基本を楽しみながら遊べるボードゲーム

その名もc-jump

すごろくチックなボードゲームでマスにはいろんな制御文が並んでいて

次のマスに進むにはそこにかかれている制御文を理解しなきゃいけない

よくあるテキストのように難解な文章で書かれるよりは

わかりやすく楽しく学べるんじゃないでしょうか

会社の新人研修とかで使うと面白いんじゃないかな

プログラマ同士であれこれ言いながらやってみたりね



ゲームとして面白いかどうかが問題だけどね



2005年10月03日│Comments(0)TrackBack(0)