ChaichanPapa-World !

燈明日記(2009/09

◆ インデックス

◆ 2009年9月

2009-09-30 VB2005でショートカットを作成する

以下のサンプルは、"All Users"のスタートアップにアプリケーションAP.exeのショートカットを作成します。

AP.exeは、引数とワークのフォルダにあるファイルを使います。

Dim objShell As Object = CreateObject("WScript.Shell")
Dim objShortcut As Object = objShell.CreateShortcut("C:\Documents and Settings\All Users\スタート メニュー\プログラム\スタートアップ\AP.lnk")
objShortcut.Description = "説明"                      '省略可能
objShortcut.TargetPath = "C:\Program Files\AP\AP.exe" 'リンク元の実行ファイル名
objShortcut.Arguments = "STARTUP"                     '実行ファイル名の引数(省略可能)
objShortcut.WorkingDirectory = "C:\Program Files\AP"  'ワークのフォルダ(省略可能)
objShortcut.Save()

ちなみに、"All Users"のスタートアップフォルダにショートカットを作成すると、すべてのユーザがログインした時にそれが自動実行されます。

また、スタートアップフォルダにはショートカットを置き、実行ファイルそのものではNGです。

2009-09-30 サモアとスマトラは、どこ?

今日、サモアとスマトラで大地震があったようです。

しかし、どこなのかさっぱりわかりません!


なのでちょっと、ネットで調べてみました。

サモアは、オーストラリアやユージーランドの右上あたりで、オーストラリア領でなくアメリカ領ですね。

スマトラは、インドネシアで、大きな地震が多いところみたいです。

大きな災害があると、いつも某団体で寄付の募金があるのですが、私に出来るのはそれぐらいですね……。

2009-09-29 モラトリアムとは

ここのところ亀井大臣の中小企業への融資に関するモラトリアム発言が話題になっていますが…。

そもそも、モラトリアムってなんでしょうか?

要は、金銭債務の支払いを一定期間猶予することですかね。


とにかく、亀井モラトリアム発言は、リーマンショックや円高で壊滅状態に近い中小企業を救済するためのもので、私も賛成です。

とにかく、日本は中小企業でもっているようなものですからね。まずは、中小企業が元気にならないとね!

2009-09-29 今月26,27日の2つライブ

f:id:chaichanPaPa:20090519200350j:image:right

26日の地元の大沢のお祭りも、長男にとって3回目(3年目)のステージとなり、1回目2回目に比べて大分成長したあとが伺えました。

お客さんも、結構盛り上がっていた感じです。アンコールもあったし…。


27日の秋葉原DRESS HALLは、当初見に行く予定でしたが、いろいろあってパスしました。

しかし、少し後悔しています。

それは、長男のブログや今回サポートして頂いた宇都宮奏恵さんのブログを読むと、凄くよかったとのことです。


今回、宇都宮奏恵さんからピアノやコーラスをしてもらい、長男のブログのコメントには『格段に心に響くものがありますね』書かれています!

それに、『それにしても宇都宮さんとの夫婦?漫才なMCはウケましたよ』とのことで…。

私も見に行けばよかった(残念)!


尚、ライブのではないのですが、以下の2曲のピアノも宇都宮奏恵さんが弾いているとのことです。

2009-09-29 VB2005でホスト名を取得する

VB2005で、はじめてだと、ホスト名すら求めるのに苦労する…。なのでメモです。

Dim strHostName As String = System.Net.Dns.GetHostName

2009-09-29 VB2005で現日時を取得する

VB2005で、はじめてだと、現日時すら求めるのに苦労する…。なのでメモです。

Dim dtmNow As DateTime = System.DateTime.Now

2009-09-28 3つの一時的なアクセスアップ

永続的なアクセスアップは、人様のためになる情報を地道に発信するしかないのですが……。

一時的なアクセスアップなら、以下の3つ方法で結構アクセスアップが出来ますね!

  1. 旬なキーワードを解説する。
  2. 人気テレビ番組の感想を書く。
  3. 人気ブログに取り上げてもらう。

1は、昨日書いた『Googlle』のエルが一つ多いヤツで、一日で約400のアクセス数がありました。また、サマージャンボ抽選日に当選ページを紹介しただけで、今でも結構アクセスがありますよ!


2は、先日『働くゴン!』の感想を書いただけで、関連キーワード(ゴン、篠原涼子等)で約100のアクセス数がありました。


3は、人気ブログに取り上げてもらえないと、話になりませんが……。弾さんのところで取り上げてもらえると数100単位でアクセス数が増えますね。

2009-09-28 タスクバーに入れたくない!

VB2005でWindowsアプリケーションを作成した場合、そのアプリケーションを起動するとタスクバーにもアイコンが入ります。

いかにも起動しているって感じで、うざいと思うこともありますね。


そんな時は、以下の一行をフォーム(Form)のロジックに追加するとタスクバーにはアイコンが入らなくなリます。

Me.ShowInTaskbar = False

要は、フォーム(Form)のShowInTaskbarプロパティをFalseにすればいいのです。

2009-09-27 Googleはmetaタグの"Keywords"は『無視』で"description"は『利用することがある』!

私の認識が半分当たった!!

やはり、metaタグの"Keywords"は『無視』ですか…。ちょっと期待していたのですが…。

"description"の方は、私の認識通りでした。


「グーグルはメタタグのキーワードは使わない」というタイトルです。

:

使用例として「description」メタタグを挙げています。検索結果を表示するスニペットとして利用する“ことがある”と述べています。

http://mywebseo.blog83.fc2.com/blog-entry-2.html

次のmeta要素のDescriptionは、html文書の概要を指定します。

必ずではないですが、グーグルとヤフーでは、ここに書かれている概要が検索内容で表示されることがあります。

http://d.hatena.ne.jp/chaichanPaPa/20090304/1236169917

2009-09-27 Googlle ???????????

まずは、下をクリック!

なんか、『l』が一つ多いのですが…

…と思ったら、創立11周年で、llと11を引っ掛けているのですね。


Google社は、スタンフォード大学生の二人(ラリー・ペイジとセルゲイ・ブリン)が1998/09に設立しました。

私が、Googleを使い始めた2000年頃は、それまでのどうでもいいリンクが沢山引っ掛かっていた検索エンジンと違って、的確なリンクが引っ掛かるGoogleに驚愕し絶賛しました。

また、当時のインターネットの巨人Yahoo!のサーチエンジンに採用されました。

そう、Yahoo!のサーチエンジンがGoogleの時代があったのですよ!

しかし今や、企業規模は完全に逆転しましたね。

このペースなら、MSにも逆転する日が近いですね。


ということで、Google創立11周年で、ロゴが『Googlle』になっていた…というお話しでした。

2009-09-27 フォームをデスクトップの任意の位置に表示させる

VB2005でフォームをデスクトップの任意の位置に表示させるには、以下の4つの要素が必要です。

  1. デスクトップの高さ(System.Windows.Forms.Screen.GetWorkingArea(Me).Height)
  2. デスクトップの幅(System.Windows.Forms.Screen.GetWorkingArea(Me).Width)
  3. フォームの高さ(Me.Size.Height)
  4. フォームの幅(Me.Size.Width)

この4つの要素の値がわかれば、上手く計算して座標を求めることができ、デスクトップの任意の位置に表示することができますね。

そして、表示するメソッドは、『SetDesktopLocation(幅,高さ)』を使用します。

Dim intDesktopHeight As Integer
Dim intDesktopWidth As Integer
Dim intFormHeight As Integer
Dim intFormWidth As Integer

intDesktopHeight = System.Windows.Forms.Screen.GetWorkingArea(Me).Height
intDesktopWidth = System.Windows.Forms.Screen.GetWorkingArea(Me).Width
intFormHeight = Me.Size.Height
intFormWidth = Me.Size.Width

'デスクトップ左上
Me.SetDesktopLocation(0, 0)
'デスクトップ左下
Me.SetDesktopLocation(0, intDesktopHeight - intFormHeight)
'デスクトップ右上
Me.SetDesktopLocation(intDesktopWidth - intFormWidth, 0)
'デスクトップ右下
Me.SetDesktopLocation(intDesktopWidth - intFormWidth, intDesktopHeight - intFormHeight)

2009-09-25『働くゴン!』を見た!

先日(9/23)テレビドラマ『働くゴン!』を見ました。


篠原涼子が主演で、あの『ハケンの品格』を彷彿させるコメディで、大変おもしろかったです。

働くことと家族愛がテーマで、スターの篠原涼子が息子の検便すり替えから痔治療のくだりまでやるとは、さすがです。


このドラマは、以下のドラマを彷彿させるキャストで、ちょい役で"加藤あい"も出演していましたね。

『アイシテル〜海容〜 』では、はなについた佐藤詩音ちゃんも今回は凄く可愛く感じられました。


『ブザービート』や『救命病棟24時』の最終回も凄くよかったですね!

って、結構、ドラマを見ているな…自分。

2009-09-24 インストール時にいろいろ処理したい(カスタム動作)!

VB2005では、カスタム動作と云って、インストール時にいろいろな処理を追加することが出来ます。


普通にWINDOWSアプリケーション等を作成した後、通常はインストーラも作らないとなりません。

また、インストーラ作成後、インストールするだけでなく、任意の処理を行いたい場合も結構ありますね!


そんな場合は、インストーラを作成した後、カスタム動作で任意の処理をインストーラへ追加することが可能です。

手順は以下の通り。

  1. WINDOWSアプリケーション等を作成する。
  2. インストーラを作成する。
  3. カスタム動作を作成する。
◆ WINDOWSアプリケーション等作成

1は、まぁ普通に作成してください。


◆ インストーラ作成

2は、以下のリンク先を参照してインストーラを作成してください。

基本的には、ソリューションにセットアッププロジェクトを追加して、プロジェクト出力をするのですね。

おまけ的には、スタートメニューやデスクトップにショートカットの設定をします。


◆ カスタム動作作成

3は、ソリューションエクスプローラでセットアッププロジェクトを右クリックしてカスタム動作を選択します。

すると、カスタム動作タブが現れるので、そこの『インストール』を右クリックしてカスタム動作追加を選択します。

すると、『プロジェクトから項目を選択』画面が現れるので、以下のように2回OKボタンをクリックします。

つぎに、ソリューションエクスプローラでアプリケーションプロジェクトを右クリックしてインストーラクラスを追加します。

このインストーラクラスにインストール時に行いたいいろいろな処理を記述します。


あとは、アプリケーションプロジェクトとセットアッププロジェクトをリビルドするとmsiファイルが出来ます。

msiファイルをクリックすると、インストーラが起動され、インストールと共にインストーラクラスに記述した処理が実行されます。


◆ 留意点

尚、カスタム動作タブで『インストール』の他に『確定』『ロールバック』『アンインストール』あります。

つまり、この4つのタイミングに処理を起動することができます。

また、なぜか、『インストール』には必ず1回は『プライマリ出力』をセットします。

これをしないで『確定』や『アンインストール』等を行うとエラー(状態ファイル無し?)となります。

そのあと、『インストール』での『プライマリ出力』が必要なければ、削除します。

ちなにみ、『ロールバック』は、インストール時にエラーがあった場合に処理が起動するとのことです。


◆ デバック方法

あと、インストーラクラスのデバックは、構成マネージャでデバック指定して、インストーラクラスの先頭に以下の一行を入れてビルドします。

すると、実行時にインストーラクラスにデバッガーがアタッチするようになります。

System.Diagnostics.Debugger.Launch()

参考リンク

2009-09-23 打ち上げ

えーと、先月に行った長男(小池啓仁)の100人ライブの身内での打ち上げが今日ありました。

場所は、長男が6年以上もアルバイトをしているレストラン木曽路の三鷹店です。


長男がすべてセッティングをして、私を含めて身内を招待してくれました。

人数は、私の家族(長男も含めて)5人、ママの実家が6人、妹家族4人で計15名でした。


しかし、席が16席あったのです。

間違って一つ多く席を取ったのかと私は思ったのですが……。


実は、その意味を気が付かなかったは私だけだったようです。

そうだよね。ちゃいちゃんがいるんだよね…。


長男は、いつもちゃいちゃんと一緒だったんだね。やっぱ。

しかし、私は、ちゃいちゃんのことをすっかり忘れていて、ダメパパや…ゴメンちゃいコ。


◆ For Me / 小池啓仁

2009-09-22 For Me / 小池啓仁(バックバンドバージョン)

昨日に引き続き、先月8月30日に行った、小池啓仁100人ライブの動画をユーチューブにアップしました。

もしよろしかったら見てやってください!


◆ For Me / 小池啓仁


なんか、カッコイイでしょう!!

また、今月の26日、27日の土曜日と日曜日にライブを行うそうです。

もしよろしかったら、彼(長男)の歌を聴きに来てください!

よろしくお願いします。


◆ 小池啓仁ライブ情報

今月の終わりの土曜日 日曜日2日ライブやります

26日(土)

地元の八幡祭りで、ライブやらせて頂きます

出演者時間は19時から19時30分の間でやらせて頂きます

今回で3度目の出演になります


27日(日)

『novel colors主催ライブ2days!!〜カラフルストーリー 第3話〜』

場所、秋葉原 DRESS HALL

OPEN17:30 START18:00 ADV/2000 DAY/2500

ACT:novel colors/宇都宮奏恵/小池啓仁/小山あかり/堤谷直子/早瀬美和/しょう and

more...

http://koikehirohito.blog7.fc2.com/blog-entry-155.html

地元の皆様へ

9/26日(土)は、大沢の八幡さまで行いますよ!

お友達もお誘いして、是非いらしてください!もちろん無料です!

よろしくお願いいたします。

2009-09-21 Michi / 小池啓仁

某一部の人達から絶賛を頂いた、先月8月30日に行った、小池啓仁100人ライブの動画をユーチューブにアップしました。

もしよろしかったらご覧ください!


◆ Michi / 小池啓仁


◆ 小池啓仁ライブ情報

今月の終わりの土曜日 日曜日2日ライブやります

26日(土)

地元の八幡祭りで、ライブやらせて頂きます

出演者時間は19時から19時30分の間でやらせて頂きます

今回で3度目の出演になります


27日(日)

『novel colors主催ライブ2days!!〜カラフルストーリー 第3話〜』

場所、秋葉原 DRESS HALL

OPEN17:30 START18:00 ADV/2000 DAY/2500

ACT:novel colors/宇都宮奏恵/小池啓仁/小山あかり/堤谷直子/早瀬美和/しょう and

more...

http://koikehirohito.blog7.fc2.com/blog-entry-155.html

地元の人へ

9/26日(土)は、大沢の八幡さまですよ!

お友達もお誘いして是非いらしてください!もちろん無料ですよ!

よろしくお願いいたします。

2009-09-20 文字を変換する(StrConv)

VBA(.NETでもあるけど)では、文字を変換する際、普通ストラコンブ(StrConv)を使います。

StrConvは、『大文字/小文字変換』や『半角/全角変換』や『ひらがな/カタカナ変換』等を行います。


◆構文

StrConv(変換する文字列, 変換指定定数)

リターン値は、変換された文字列が返ります。


◆変換指定定数
定数 内容
vbUpperCase 1 文字列を大文字に変換
vbLowerCase 2 文字列を小文字に変換
vbProperCase 3 文字列の各単語の先頭の文字を大文字に変換
vbWide 4 文字列内の半角文字を全角文字に変換
vbNarrow 8 文字列内の全角文字を半角文字に変換
vbKatakana 16 文字列内のひらがなをカタカナに変換
vbHiragana 32 文字列内のカタカナをひらがなに変換
vbUnicode 64 システムの既定のコードページ(普通シフトJIS)を使用して、文字列を Unicodeに変換
vbFromUnicode 128 文字列を Unicode からシステムの既定のコードページ(普通シフトJIS)に変換

vbWideとvbNarrowは、東アジアに適用され、vbKatakanaとvbHiraganaは、日本にのみ適用されます。


◆サンプルソース
Sub StrConv_Sample()
    Dim str As String

    str = "abcABCabcABCあいうえおアイウエオ"

    Debug.Print StrConv(str, vbUpperCase)
    Debug.Print StrConv(str, vbLowerCase)
    Debug.Print StrConv(str, vbProperCase)
    Debug.Print StrConv(str, vbWide)
    Debug.Print StrConv(str, vbNarrow)
    Debug.Print StrConv(str, vbKatakana)
    Debug.Print StrConv(str, vbHiragana)
  
    Dim i As Integer
    Dim x() As Byte
    x = StrConv(str, vbFromUnicode)
    For i = 0 To UBound(x)
        Debug.Print x(i)
    Next
    Debug.Print StrConv(x, vbUnicode)
End Sub

◆サンプル実行結果
ABCABCABCABCあいうえおアイウエオ
abcabcabcabcあいうえおアイウエオ
Abcabcabcabcあいうえおアイウエオ
abcABCabcABCあいうえおアイウエオ
abcABCabcABCあいうえおアイウエオ
abcABCabcABCアイウエオアイウエオ
abcABCabcABCあいうえおあいうえお
 97 
 98 
 99 
 65 
 66 
 67 
 130 
 129 
 130 
 130 
 130 
 131 
 130 
 96 
 130 
 97 
 130 
 98 
 130 
 160 
 130 
 162 
 130 
 164 
 130 
 166 
 130 
 168 
 131 
 65 
 131 
 67 
 131 
 69 
 131 
 71 
 131 
 73 
abcABCabcABCあいうえおアイウエオ

◆参考リンク

2009-09-19『〜は』と『〜が』の違い

たとえば、以下の違いは、なんでしょうか…共に『私イコール小池啓仁』ですが…。


『私小池啓仁です』と『私小池啓仁です』


たとえば、自分を全く知らない人達の前では、いきなり『私が小池啓仁です』とは普通いいません。

この場合は、『私は小池啓仁です』ですね。


また、名前だけ有名になった場合、人達の前では、『私が小池啓仁です』ですね。

この場合は、『私は小池啓仁です』とは普通いいません。


これは、『〜は』は、『小池啓仁』が新情報で、『〜が』は、『私』が新情報なのです。

2009-09-19 雑記(2009/09/19)

ここほぼ1週間、いろいろなことがあり、ブログを書く余裕がなかったです。


家の方は、日曜日につまらないことから夫婦喧嘩となり(今は仲直り)、また妻方の実家で地鎮式が木曜日にあり…。

仕事の方は、新しい仕事に取っ掛かり、苦手なVB2005で、ストレス貯まり過ぎ…。


しかし、Perlなら5分で出来そうなことが、VB2005では、ネットで調べまくって1時間以上掛かる…とかが常ですね。

いや〜、疲れます。ストレス貯まり過ぎ!


特にWINDOWSサービスとかインストーラ周りの開発は、すごく難しいですね。

その内にブログネタにして、またメモにしていきますね。


実は、まだいろいろと忙しいのです。

今日は、某教会でお彼岸のイベントがあり、途中で抜けて、三男を杏林大学病院へ連れて行きました(単なる検査)。


明日は、霊園奉仕(受付をけしたり、掃除したり…)に行きます。

佼成霊園なので、もちろん、ちゃいちゃんのお墓参りもしてきますよ。


ということで、ブログは、スロースタートしていきます。

そうそう、政権交代も小泉さんの悪政がつぎつぎにひっくり返されて、今後の成行がめちゃくちゃ面白くなってきましたね。

2009-09-14 雑記(2009/09/14)

ここ3〜4日、プライベート(家と会社)でいろいろなことがあり過ぎ、ちょっとパニック状態になっています。

余裕が出来たら、また、ガンガン更新していきますね!

2009-09-13 URLからPathを抜き出すには

URLは、RFC1738では、以下のようになっています。

HTTP URL は、以下のような形態を取る

http://<host>:<port>/<path>?<searchpart>

http://www.spencernetwork.org/reference/rfc1738-ja-URL.txt

以下にURLから<path>を抜き出す正規表現を書いてみました。


◆サンプル

use strict;
use warnings;

my $wkURL = 'http://d.hatena.ne.jp/chaichanPaPa/searchdiary?word=%2a%5bPerl%a5%ce%a1%bc%a5%c8%5d';

$wkURL =~ /^http:\/\/.*?(\/.*?)(\?|\Z)/;

print $1, "\n";
最短マッチの『.*?』がポイントですね。
はじめの『.*?』は『\/』までの最短マッチで、つぎの『.*?』は、『(\?|\Z)』までの最短マッチです。

追記:今回の場合は正規表現を使わないで、以下のようにURIモジュールを使った方がベターです。(tyruさんから教えていただきました)
use strict;
use warnings;
use URI;

my $uri = URI->new('http://d.hatena.ne.jp/chaichanPaPa/searchdiary?word=%2a%5bPerl%a5%ce%a1%bc%a5%c8%5d');
print $uri->path;

2009-09-12 ExcelVBAで行コピー

ExcelVBAで行コピーをしたい場合は、Rangeプロパティでコピーしたい行を指定してCopyメソッドし、インサートしたい行の範囲をRangeプロパティで指定してInsertメソッドします。

尚、CopyメソッドとInsertメソッドのRangeプロパティで指定した行数が異なるとエラーします。


◆サンプル(20行〜22行を25行目の前にコピーする)
Range("20:22").Copy
Range("25:27").Insert

2009-09-10 小池啓仁・ダブルライブ告知!!

f:id:chaichanPaPa:20090519200350j:image:right

今日は帰社日で、その後、みんなで飲み屋さんに行きました。

そして、今さっき家に帰ってきました。

なので、今日のブログは、長男のライブ告知だけにさせて頂きます。


今月26,27日で、2つライブがあるとのことです。

ご縁がありましたら、是非、長男の歌を聴いてやってください。

結構、いい曲なのですよ・・・コレが(親バカ炸裂)


今月の終わりの土曜日 日曜日2日ライブやります



26日(土)

地元の八幡祭りで、ライブやらせて頂きます


出演者時間は19時から19時30分の間でやらせて頂きます

今回で3度目の出演になります


27日(日)

『novel colors主催ライブ2days!!〜カラフルストーリー 第3話〜』

場所、秋葉原 DRESS HALL

OPEN17:30 START18:00 ADV/2000 DAY/2500

ACT:novel colors/宇都宮奏恵/小池啓仁/小山あかり/堤谷直子/早瀬美和/しょう and

more...

http://koikehirohito.blog7.fc2.com/blog-entry-155.html

2009-09-09 MicrosoftWordで図形を素早くコピーする!

ワードで図形をコピーするには、普通に図形を選択して、Ctrl-cして、Ctrl-vすれば・・・出来ます。

しかし実は、もっと簡単に素早くコピーすることが出来るのです。


それは、Ctrlキーを押しながら図形をドローするだけコピーができるのです!


で、実はここからが本題で・・・。

フローチャートを書く時には、図形と図形をコネクトの直線やカギ線 (折れ線)で繋ぎますが、カギ線で繋いだ後、図形を動かしたり、サイズを変更したり、普通のコピーをしたりするとカギ線がデフォルトの形に戻ってしまうのです。

一つの図形に一つのコネクトならそれほどでもないのですが、複数のコネクトがあると・・・その複数分のカギ線を引き直さないとなりません。


これの回避作をヘルプやネットで調べてまくっても、見つからないのです。

こんなことで悩んでいる人は皆無なのです。


で、やっと、コピーだけは、Ctrlキーを押しながら図形をドローすると、カギ線がデフォルトの形に戻らないで大丈夫なのです。

しかし、図形を動かしたり、サイズを変更したりの回避作が、まだ見つからないのです。

もしかしたら、これは仕様で、回避は不可能なのかもしれません・・・。


ちなみに、Word2000では、コネクト線のオートシェイプは無いですね。Word2003からみたいです。

2009-09-08 Google経済学

ちょっと分かり辛いところもありますが、まぁまぁいい本だと思います。

グーグルがユーチューブを16億5千万ドルで買収した意味やデリバティブのことが良くわかります。

あと、人口問題や食料問題を考えさせられる一冊でした。


そうそう、世界の人口は毎日に20万人づつ増えつづけ、日本の借金は利払いだけで毎日300億のお金が消えています。

知ってましたか!!


日本は、毎日300億が借金の利子だけで消えるんですよ!

Google経済学(グーグル経済学)~10年後にトップに立てる新経済学入門~

Google経済学(グーグル経済学)~10年後にトップに立てる新経済学入門~

2009-09-07 MicrosoftWordで線や図形をピッタ(微調整)と合わせる!

ワードでフローチャート等を書いていると線や図形が微妙にずれて、合わそうすると余計づれたりして・・・イライラする場合がありますね!(ーー;)

そんな時は、Altキーを押しながらマウスで線や図形をドローするとピッタと合わせることが出来ますよ!(^o^)

また、Ctrlキーを押しながら矢印キーでも同様にできます。


要は以下の2つです!

2009-09-07 今週のお題:夢

とりあえずの夢は、あと6年で『ブログアクセス数一日1万PV』と『Webページアクセス数一日10万PV』です。


実は、あと6年で定年なのです。

なので、定年後、趣味と実益を兼ねて、のんびりと暮らしたいのです。

たぶん、一日11万PVあれば、ネット収入でなんとか暮らせるかな・・・なんて目論んでいるのです。


ちなみに、現状は『ブログアクセス数一日約2千PV』と『Webページアクセス数一日約3万PV』です。

Webページアクセス一日約3万PVが凄いと思ったあなた・・・、実はWebページは約1万ページあります。

なので、1ページあたり一日3PVなのです。

しかも、ロボットも数に入るから、一日1ページ1PVぐらいですか・・・orz


そうそう、今週のお題はreikonさんからスターをもらえるのだけれど・・・数秒単位で過ぎ去っていきますね。

本当に、全部の「今週のお題」を読んでくれているのでしょうか・・・。

2009-09-06 列のアルファベット指定と番号指定の変換

Excelの列はA,B,C,・・・,AA,AB,・・・IVと言う風になっています。

また、RangeプロパティではRange("A2")という感じに『アルファベット指定列と行』でセルを指定します。

一方、cellsプロパティではCells(2, 1)という感じに『行と番号指定列』でセルを指定します。

ということで、列のアルファベット指定と番号指定の変換が結構必要な場合がありますね。


今回、アルファベット指定列と番号指定列の変換と逆変換の関数を作って見ました。


◆ アルファベット指定列から番号指定に変換するalphabet2number関数

Function alphabet2number(strAlphabetCol As String) As Integer
    alphabet2number = Range(strAlphabetCol & 1).Column
End Function

◆ 番号指定からアルファベット指定列に変換するnumber2alphabet関数

Function number2alphabet(intNumberCol As Integer) As String
   Dim intAlpha1 As Integer
   Dim intAlpha2 As Integer
   
   intAlpha1 = Int((intNumberCol - 1) / 26)
   intAlpha2 = intNumberCol - (intAlpha1 * 26)
   If intAlpha1 > 0 Then
      number2alphabet = Chr(intAlpha1 + 64)
   End If
   If intAlpha2 > 0 Then
      number2alphabet = number2alphabet & Chr(intAlpha2 + 64)
   End If
End Function

◆ テストサンプル

    Dim intNumberCol As Integer
    Dim strAlphabetCol As String

    intNumberCol = alphabet2number("AB")
    strAlphabetCol = number2alphabet(intNumberCol)

2009-09-05 プログラミングの基礎の基礎

えーと、前回以下のWebページを作りましたが、しかし本当の初心者にはまだまだ取っ掛かりが高いと思いますので本コンテンツを追加します。


◆ はじめに

今ここを読んでいるということは、プログラミングに興味があり、Perlでもやってみようかなぁ・・・なんて思っているのだと思います。

そのプログラミングは、基礎を知らないで突っ走っても、なかなか上達しないですね。

なので、とりあえず本コンテンツ『初めてでないPerl』をひと通り読んでいただければ、プログラミングとPerlの基礎がマスター出来るようになっているのです(たぶん)。


そもそも、プログラミングは、かなり昔、メモリ上に直接命令コードを書いて、それをCPUに読み込ませて、計算したり、プリンタ出力したり・・・、していた時代がありました。

メモリ上に直接命令コードを書くのは、凄く大変なことでした。

そこで徐々に、機械語ができ、アセンブラができ、フォートランやコボルやC言語ができて、今の時代になってPerlやJavaなどが主流になってきたのです。


特にPerlは、私が知る限り、プログラミングが非常にラクチンに出来る言語なのです。

なので、この際、Perlをマスターしてしまいましょう!


まずは基礎の基礎からで、プログラムの6つの基本要素を理解し、そして以下の拡張要素や補助要素をからめて徐々に完成度のあるプログラミングをマスターして参りましょう!

では、スタートです!


◆ プログラムの基本要素

プログラムの基本要素は、以下の6つです(たぶん)。

プログラムを組むときは、この6つを組み合わせます。


・変数

変数は以下の3種類があります。


・演算子

以下以外にもまだまだ沢山あります。


・代入文

代入文は、代入演算子を使って、以下のように変数へ値を代入します。

my $value = 10;

・判断文

判断文は、if文等で、以下のような感じで使用します。

if ($value == 10) {
    $value += 1;
}
else {
    $value += 2;
}

・繰り返し文

繰り返し文は、for文やforeach文等で、以下のような感じで使用します。

my @value;
for (my $i = 0; $i < 10; $i++) {
    $value[$i] = $i * 2;
}

◆ プログラムの拡張要素

プログラムは、基本要素の組み合わせで、大体できてしまいます。

しかし、実際は、上記5つの基本要素以外に、以下の拡張要素も組み合わせます。


◆ プログラムの補助要素

プログラムは未来の自分も含めて、誰にでも分かりやすいプログラム作りを心がけないとなりません。

そのために以下を熟慮します。


◆ プログラミングのはじめの一歩

最後にPerlでのプログラミングのはじめの一歩『Hello World』です。

本当は『print "Hello World";』だけなんですが、上記の要素を入れてみました。

use strict;
use warnings;

my $strmsg = 'Hello World';
if ($strmsg eq 'Hello World') {
    for (my $i = 0; $i < length($strmsg); $i++) {
         print substr($strmsg, $i, 1);
    }
}

2009-09-04 ExcelVBAのFindメソッドの留意点

ExcelVBAのシートオブジェクトには、任意のセルに格納されている値(検索文字列)を検索できるFindメソッドがあります。

以下のサンプルのようにRangeプロパティで検索するセルの範囲を指定して、Findメソッドで『検索文字列を指定』し検索して、マッチすればそのセルオブジェクト(一つのみ)を返し、マッチしなければ Nothing を返します。


・サンプル

Dim objCell As Variant
Dim objCell_first As Variant

    Set objCell = Range("A5:A20").Find(What:="Chaichan")
    If objCell Is Nothing Then
       MsgBox "ノーマッチ!!"
    Else
        objCell_first = objCell.Address
        Do
            MsgBox objCell.Row & "行目にマッチ!"
            Set objCell = Range("A5:A20").FindNext(objCell)
        Loop While Not objCell Is Nothing And objCell.Address <> objCell_first
    End If
    Set objCell = Nothing
    Set objCell_first = Nothing

で、留意点なのですが、検索するセルがセル結合していて、かつその結合範囲の一部が検索範囲をはみ出していると、マッチしないのです。

というか、セル結合は何かと引っ掛かります。

いつも、セル結合には泣かされますね。

なので、セル結合には気をつけろ!

という、留意点でした・・・。


尚、複数マッチしたいケースでは、FindNextメソッドを使用します。

FindNextメソッドは、検索範囲内をループ的(下まで行ったらまた上から)に検索します。


・追記:Findメソッドの引数

引数 定数 内容 省略 デフォルト
What   検索対象のデータをバリアント型 (Variant) 型で指定します。 不可  
After   ここで指定したセルの次のセルから検索が開始されます。  
LookIn   数式または表示された値を検索するかどうかを指定します。  
  xlFormulas 数式を検索対象に指定します。    
xlValues 値を検索対象に指定します。    
LookAt   検索方法  
  xlPart 一部が一致するセルを検索します。  
xlWhole 全てが一致するセルを検索します。    
SearchOrder   検索を行う順番  
  xlByRows 列方向に検索します。  
xlByColumns 行方向に検索します。    
SearchDirection   検索を行う方向  
  xlNext 順方向に検索します。  
xlPrevious 逆方向に検索します。    
MatchCase   大文字と小文字の区別  
  True 大文字と小文字を区別します。    
False 大文字と小文字を区別しません。  
MatchByte   半角と全角の区別  
  True  半角と全角を区別します。    
False 半角と全角を区別しません。  

2009-09-03 燈明日記8月分をWebページへ

燈明日記8月分をWebページへ変換しました。

2009-09-03『選択の最短マッチ(最小マッチ)は可能ですか?』の答え

昨日のつづきです。

◆選択の最短マッチ(最小マッチ)は可能ですか?

◆答え(masa-kさんに教えていただきました)
$wkstr =~ /^(A.*)(CCC|DDD)/;

$wkstr =~ /^(A.*?)(CCC|DDD)/;

とする。


・サンプル
$wkstr = "AAABBBCCCDDDEEE";
$wkstr =~ /^(A.*?)(CCC|DDD)/;
print "No.4 ", $1, "\n";
C:\perltest>perl t04.pl
No.4 AAABBB

いやー、分かってみれば当たり前なんだけど・・・、勘違いのツボにはまると不可能に思えてしまう・・・orz

今回の勘違いは、最短マッチというのは『複数マッチする場合に最短のもの』と理解していて・・・。

今回は『A.*』にマッチするのは一つ(単数)しかないので・・・思いつかなかったのです。

最短マッチは、単数マッチの場合でも、選択がからむ時は有効なのですね!


ちなみに、ここで言っている『選択』とは、正規表現の『選択』です。

たとえば、(CCC|DDD)の場合、CCCか、またはDDDを選択するかの意味です。

2009-09-02 選択の最短マッチ(最小マッチ)は可能ですか?

まず、Perlでの文字列マッチは、デフォルトでは最長マッチ(最大マッチ)です。

たとえば、以下の感じです。


◆最長マッチ
$wkstr = "AAABBBCCCAAABBBCCC";
$wkstr =~ /^(A.*)CCC/;
print $1, "\n";
C:\perltest>perl t01.pl
AAABBBCCCAAABBB

これを『.*?』を使って最短マッチにすると以下の感じです。


◆最短マッチ
$wkstr = "AAABBBCCCAAABBBCCC";
$wkstr =~ /^(A.*?)CCC/;
print $1, "\n";
C:\perltest>perl t02.pl
AAABBB

◆選択の最長マッチと最短マッチ

ここからが本題です。

では、以下の選択では、最短マッチが可能なのでしょうか?

$wkstr = "AAABBBCCCEEE";
$wkstr =~ /^(A.*)(CCC|DDD)/;
print "No.1 ", $1, "\n";


$wkstr = "AAABBBDDDEEE";
$wkstr =~ /^(A.*)(CCC|DDD)/;
print "No.2 ", $1, "\n";


$wkstr = "AAABBBCCCDDDEEE";
$wkstr =~ /^(A.*)(CCC|DDD)/;
print "No.3 ", $1, "\n";
C:\perltest>perl t03.pl
No.1 AAABBB
No.2 AAABBB
No.3 AAABBBCCC

私がテストした限りでは、選択も最長マッチなのです。

つまり、CCCよりDDDのほうが最長で、これがマッチします。


これをCCCの方の最短マッチにしたいのですが、どうやるかわからないのです。

これは、可能なのでしょうか?


具体的には、No.3のマッチ結果をAAABBBCCCでなく、AAABBBとしたいのです。


◆追記:上記の答え(masa-kさんに教えていただきました)
$wkstr =~ /^(A.*)(CCC|DDD)/;

$wkstr =~ /^(A.*?)(CCC|DDD)/;

とする。


・サンプル
$wkstr = "AAABBBCCCDDDEEE";
$wkstr =~ /^(A.*?)(CCC|DDD)/;
print "No.4 ", $1, "\n";
C:\perltest>perl t04.pl
No.4 AAABBB

いやー、分かってみれば当たり前なんだけど・・・、勘違いのツボにはまると不可能に思えてしまう・・・orz

今回の勘違いは、最短マッチというのは『複数マッチする場合に最短のもの』と理解していて・・・。

今回は『A.*』にマッチするのは一つ(単数)しかないので・・・思いつかなかったのです。

最短マッチは、単数マッチの場合でも、選択がからむ時は有効なのですね。

2009-09-01 雑記

長男のライブは、いろいろなところでいろいろな人が口をそろえて『凄くよかった!』『感激!感激!』『エネルギーをもらったよ!』。

などなど嬉しいコメントを沢山頂きました。親としてもとても嬉しくなりました。


話は変わって、技術系のネタですが、少し貯まってきました。

時間的、精神的に余裕が出来次第、アップしていきたいと思います。


ということで、今日はこれで・・・おやすみなさい・・・。


しかし、ライブは125人も来て頂いたのですが、ペイできず、場所代(新宿ミュージックイン)とバス代(ツアーバス2台)が結構かかりましたね。

ということで、夜も寝ないでバイトの日々が待っているようですね。小池啓仁くん、がんばれ!がんばれ!