四方山話 ( 2010/03/01 - 2010/07/31 )


このページは、私が思いついた時に(だから毎日ではない)、思 いついたことを(だからコンピュータだけの話ではない)、思いついたなりに (だから日本語むちゃくちゃ)頑張って綴るページです。



2010/07/31 (Sat)
以前作ったスクリプトの改造版につ いて。先日、隣人が「特定のディレクトリ以下のディレクトリ構造を表示させ たい」と言っていたので、さっさと二十分ほどで作ったもの。特にネタもない ので、とりあえず紹介しておく。ちなみに WinXP と Win7、WinXP mode で動作 確認済み。ついでに適当な解説。1行目は得意の戒め。3行目から11行目まで はサブルーチンで、プログラムは13行目から実行開始。そのサブルーチン PrintFolderList は対象フォルダにあるサブフォルダ名を表示するとともに、 サブフォルダに対しては再起呼出し(8行目)するようになっている。こうし てプログラム実行時に指定されたフォルダ(指定がない場合にはカレントフォ ルダ)以下のすべてのフォルダ名をインデント付で列挙するようになっています。
MyDirTree.vbs
 1: REM Option Explicit
 2:
 3: Sub PrintFolderList( Lv, FolderPath )
 4:    If oFS.FolderExists( FolderPath ) = True Then
 5:       Set oDir = oFS.GetFolder( FolderPath )
 6:       For Each oFolder in oDir.SubFolders
 7:          WScript.Echo Space( Lv*2 ) & oFolder.Name
 8:          Call PrintFolderList( Lv+1, oFolder.Path )
 9:       Next
10:   End If
11: End Sub
12: 
13: Set oArgs = WScript.Arguments
14: 
15: If oArgs.Count < 1 Then
16:    DirName = "."
17: Else
18:    DirName = oArgs(0)
19: End If
20: 
21: Set oFS = CreateObject( "Scripting.FileSystemObject" )
22: If oFS.FolderExists( DirName ) = True Then
23:    Call PrintFolderList( 0, DirName )
24: Else
25:    WScript.Echo DirName & " : フォルダが見つかりません。"
26: End If
2010/07/25 (Sun)
ドコモ携帯電話の着信音にできる音楽ファイルの作成方法に関する備忘録。

ちなみに動作確認は WinXP SP3 + QuickTime 7.6.6 + QTConverter 1.3.0 + 着もと v5.0.0.2 で行っております。以前は 動画変換君で 3gp ファイルを作成していたのですが、最新の QuickTime だと動画変換君がうまく 動かないようなので、今回から QTConverter に乗り換えました。あと、 RealPlayer SP についてくる RealPlayer Converter でも 3gp ファイルは作成できるのですが、着もとで形式が違うと言 って怒られます。理由はよくわかりません。3gp ファイルもいろんな種類があ るということなのでしょう。それから、調子に乗って多くのファイルを携帯電 話に download すると、あとでパケット代で泣くことになるので注意しましょ う(笑)

2010/07/22 (Thu)
さて、前回からえらく間があきまし たが、めでたく?復活、第6回 Windows プログラミングメモ。すぐにまた挫折 と思いますけど...それはさておき、前回は内部コードとして Unicode を使用 するプログラムについてメモしました。今回はその続き。基本的にこのメモで は IDE を利用していませんが、IDE を使った方が便利または楽ちんだという話 もあります。試しに IDE で新しいプロジェクトを作成して、そのソースを見て みたところ...
int APIENTRY _tWinMain(HINSTANCE hInstance,
                     HINSTANCE hPrevInstance,
                     LPTSTR    lpCmdLine,
                     int       nCmdShow)

てなことになっています。ここで、「_tWinMain」ってなんだ?これまでの 話では「WinMain」か「wWinMain」のどちらかだということじゃなかったのか、 ということになるわけです。ちなみにこれは VC++ 2010 Express の場合で、 バージョンが違う又は設定が違えば異なる場合もあります。当方の場合、第1 回メモ時点では VC++ 2008 Express を使っていましたが、その後 Win7 に乗り 換えた際に VC++ 2010 Express に変更しております。確か VC++ 2008 Express で install 直後だと _tWinMain じゃなかったような記憶が...で、この「 _tWinMain」は一体何かというと、実は「tchar.h」の中で以下のように定義さ れています。

tchar.h より抜粋
*Purpose:
*       Definitions for generic international functions, mostly defines
*       which map string/formatted-io/ctype functions to char, wchar_t, or
*       MBCS versions.  To be used for compatibility between single-byte,
*       multi-byte and Unicode text models.

#ifdef  _UNICODE

#define _tmain      wmain
#define _tWinMain   wWinMain

#else   /* ndef _UNICODE */

#define _tmain      main
#define _tWinMain   WinMain

#endif  /* _UNICODE */

目的の部分を意訳して簡潔にすると、「multi-byte と Unicode との互換 性確保」ということで、_tWinMain は _UNICODE が定義してある場合には wWinMain に、してない場合には WinMain となるわけです。まあ「過去」( multi-byte)を考えた場合の意義は認めますが、「現在」及び「将来」を考え ると文字コードとしては Unicode が default でしょうから何の意味もない気 がします。というわけで、以後のメモにおいては tchar.h は使用しない、 wWinMain を使うという方針で行きたいと思います。と言いつつ、とりあえず 前回のサンプルプログラム No.5b を tchar.h を使用した場合として書き換え てみましょう。

サンプルプログラム No.6
 1: // ファイル名 : sample006.cpp
 2: #include <windows.h>
 3: #include <tchar.h>
 4: 
 5: int WINAPI _tWinMain( HINSTANCE hCurInst, HINSTANCE hPrevInst,
 6:                       LPTSTR lpsCmdLine, int iCmdShow )
 7: {
 8:    MessageBox( NULL, _TEXT("_tWinMain 関数"), _TEXT("_tWinMain"), MB_OK );
 9:    return 0;
10: }
コンパイル結果
[C:\src] cl sample006.cpp user32.lib /link /out:multi.exe
Microsoft(R) 32-bit C/C++ Optimizing Compiler Version 16.00.30319.01 for 80x86
Copyright (C) Microsoft Corporation.  All rights reserved.

sample006.cpp
Microsoft (R) Incremental Linker Version 10.00.30319.01
Copyright (C) Microsoft Corporation.  All rights reserved.

/out:sample006.exe
/out:multi.exe
sample006.obj
user32.lib

[C:\src] cl /D "UNICODE" /D "_UNICODE" sample006.cpp \
        user32.lib /link /out:unicode.exe
Microsoft(R) 32-bit C/C++ Optimizing Compiler Version 16.00.30319.01 for 80x86
Copyright (C) Microsoft Corporation.  All rights reserved.

sample006.cpp
Microsoft (R) Incremental Linker Version 10.00.30319.01
Copyright (C) Microsoft Corporation.  All rights reserved.

/out:sample006.exe
/out:unicode.exe
sample006.obj
user32.lib

[C:\src] dir multi.exe
 ドライブ C のボリューム ラベルがありません。
 ボリューム シリアル番号は 009A-4699 です

 C:\src のディレクトリ

2010/07/21  00:21            32,256 multi.exe
               1 個のファイル              32,256 バイト
               0 個のディレクトリ  184,371,261,440 バイトの空き領域

[C:\src] dir unicode.exe
 ドライブ C のボリューム ラベルがありません。
 ボリューム シリアル番号は 009A-4699 です

 C:\src のディレクトリ

2010/07/21  00:11            31,744 unicode.exe
               1 個のファイル              31,744 バイト
               0 個のディレクトリ  184,371,195,904 バイトの空き領域

[C:\src] 

ファイルサイズが Unicode バージョンのほうが若干小さいですね。 実行結果 [ PNG, 13KB ] を見比べても、 少なくとも私には差異がないように見えました。Win95/98 とかで動かせば違 いがわかるのでしょうか?

2010/06/17 (Thu)
いやー、いつのまにかワールドカップが始まってますね。忙しくてこれま で試合を見ることができていなかったのですが、今日はアルゼンチン vs 韓国 の試合を見ながら、MS-Office2010(64bit)のインストール。韓国は4対1で負 けたものの、非常に良い試合をしていました。しかし、アルゼンチンのマラド ーナがピッチに立つのはいつだろう(笑)

2010/06/09 (Wed)
今日の疑問事項。普通?に生活をしていてよくわからないことがあったの で、ちょっと調べてみたメモ。
連成計
正および負のゲージ圧を測定する計器のことらしい。正のゲージ圧を測定 するのが圧力計、負のゲージ圧を測定するのが真空計
HEPAフィルタ
JIS Z 8122:2000「コンタミネーションコントロール用語」によれば「high efficiency particulate air filter」ということで「定格流量で粒径が0.3μm の粒子に対して99.97%以上の粒子捕集率をもち、かつ初期圧力損失が245Pa{ 25mmH2O}以下の性能を持つエアフィルタ」のこと。が、JIS Z 4812:1995「放射性エアロゾル用高性能エアフィルタ」では、「定格流量で粒 径が0.150μmの粒子に対して99.97%以上の粒子捕集率をもち、かつ初期圧力損 失が、標準型では250Pa以下、多風量型では300Pa以下の性能をもつエアフィル タ」と定義されているらしい。ちなみに ULPA フィルタ ( ultra low penetration air filter ) というのもあって、こちらは「定格流量で粒径が0.15μmの粒子 に対して99.9995%以上の粒子捕集率をもち、かつ初期圧力損失が245Pa以下の 性能をもつエアフィルタ」とのこと。
2010/05/22 (Sat)
とりあえず CPU の換装、2TB HDD の format、Win7(64bit) の install が終わったので、お約束の Windows エ クスペリエンス インデックス を実行してみた。なお、Vista では最大値が 5.9 だったようだが、Win7 では 7.9 である模様。
コンポーネント 評価についての詳細 サブスコア
プロセッサ1秒あたりの計算 7.3
メモリ (RAM)1秒あたりのメモリ操作 7.3
グラフィックスWindows Aeroのデスクトップ パフォーマンス 5.2
ゲーム用グラフィックス3Dビジネスおよびゲーム グラフィックス パフォーマンス 6.1
プライマリ ハード ディスクディスクのデータ転送速度 5.9

しかし、やはり Win7 はものすごく使い勝手が悪い。なぜ explorer をこ んな風に変更したのか...それと、システム付属のペイントが非常に使い勝手 の悪いリボンインタフェースになっていた(只今 Office2007 で四苦八苦中) 。ものすごく期待していた XP mode も想像していたものとぜんぜん違うし... このためだけに CPU まで交換したのに(笑)あと、HDD の 100M をシステム予 約として領域確保された。これはいったい何に使うつもりなんだろう?どちら にしてももう戻れない、使って慣れますか...

2010/05/16 (Sun)
兎角この世は忙しい。忙しすぎて仕事を整理整頓している暇もなく、その 結果効率が悪くなり、それでさらに忙しくなるという負のスパイラルに陥る一 方である。この状況を打破するためには結局のところ仕事をするしかなく、忙 しいのからは逃げることはできなさそうだ。で、仕方がなく自宅勤務モードを 発動しているのだが、どーも自宅では仕事をする気がわかない(当たり前な話 だと思うが...) この原因についていろいろ検討した結果、自宅 PC に MS-Office が install されていないからという結論に達した(んなアホな)。これまでは OpenOffice を使ってだらだら仕 事をしていたのだが、近々 MS-Office2010 が release されるらしいので購入 すれば自宅での仕事もはかどるに違いない(当然、まったくの根拠なし)、じ ゃあそれにあわせて OS を WinXP から Win7 に変更しようかな、Win7 の XP mode を利用するためには CPU が VT対応していないとだめらしい(最近に なって VT に対応していな くてもなんとかなる patch が release されているようだけど)、Core 2 の時代は終わったの で手に入れられるうちに CPU を VT 対応のものに乗せ換えておくか、という論理展開により、気がつくと Core 2 Quad Q9650 ( 3.00GHz / 1333MHz / L2 6MB*2 / VT / LGA775 ) と、Win7 (64bit) Ultimate DSP版、そして安かった 2TB HDD をぽちっていた。うーん、 忙しいというのは人を狂わすなぁ(笑)

2010/04/29 (Thu)
自宅→最寄の駅→集合場所→淡路島→四国上陸→一泊(テント)

2010/04/28 (Wed)
なんだか年度末と年度初めで非常に忙しく、結局 Windows プログラミン グは入口のところで中断してしまった。できれば早い時期に再開したいと思っ ているうちにゴールデンウィークである。相変わらず忙しいのだが、世間一般 的に休みな状況では仕事も如何ともしがたく、仕方がないので当方も休みに突 入することとする。折角の休みということでやはり旅に出ようと思い立ち、今 回は四国へ行くことと相成った。四国に旅立つ前に「 水曜どうでしょう」 を見て四国の旅に備えようかと思ったのだが、事前は午前様プラス土日出勤 というくらい忙しく、結局、前日にあわてて旅の支度をする始末。まあ、今回 は友人の車に乗っけてもらってという予定なため楽といえば楽なのだが、荷物 を最低限にしないといけないので事前の準備が非常に重要となる。で、準備を 始めたところ、デジカメが行方不明だとか、換えの携帯の電池が行方不明だと か、いろいろと問題があったものの(普段からちゃんと整理していないだけだ と思うが...)なんとか旅支度も整い、何か忘れているような気がして微妙に気 になりつつ明日に備えて寝る。

2010/03/01 (Mon)
さすがにこんなペースで更新していくほど体力と時間があるわけじゃない。 前回の説明も中途半端な形で終わってしまってるし...まあ年度末だから仕方 がない。とりあえず今後もできるだけ時間を見つけてちょっとずつ書き足して いくことにしよう。そんなわけで今回は Windows プログラミングをする際に 参考にしているサイトを紹介して場を繋ぐ。


Copyright(C) 2010 Hiroaki Fujiuchi ( fujiuchi@gmail.com )
inserted by FC2 system