ChaichanPapa-World !

燈明日記(2007/08

◆ インデックス

◆ 2007年8月

■ 2007-08-31 Perlでの一行if文

C言語での一行if文は、以下の感じです。

if (a == 0) a = 2;

Perlでも一行if文は、ありますが、実行文が前にきて、C言語と雰囲気が違うのです。

$a = 2 if ($a == 0);

■ 2007-08-30 ドライブタイプの取得

以下で、PCに実装されているドライブの種類を取得することが出来ます。

    Dim allDrives() As DriveInfo = DriveInfo.GetDrives()
    Dim d As DriveInfo
    For Each d In allDrives
        If d.IsReady = True And d.DriveType = DriveType.Fixed Then
           MsgBox(d.Name & "は、固定ディスクです。")
        End If
    Next
*ポイント解説

DriveInfoオブジェクトのGetDrives()メソッドで、実装されているすべてのドライブ情報が、ドライブ毎に配列に格納されて取得ができます。

配列の一つの要素は、一つのドライブ情報で、その中のDriveTypeプロパティでドライブタイプを取得することが出来ます。


*DriveType列挙体メンバ

参考:

http://msdn2.microsoft.com/ja-jp/library/system.io.drivetype(VS.80).aspx

■ 2007-08-29 sort関数についてのメモ

sort関数には3つの構文があります。


1の構文例
@list = (0,1,2,3,4,5,6,7,8,9,10,11,12);
@result = sort @list;

これで@listには、(0,1,10,11,12,2,3,4,5,6,7,8,9)というリストになります。


これを数値の値順にしたい場合、2番目と3番目の構文を使います。

まず、2番目の構文を使う場合、二つの数値を比較する次のようなサブルーチンが必要になります。


2の構文例
sub number {
    if ($a < $b) {
        return -1;
    } elsif ($a == $b) {
        return 0;
    } elsif ($a > $b) {
        return 1;
    }
}
@result = sort number @list;

実は、このサブルーチンは、便利な『<=>』という演算子を使うと以下のように簡単に記述できます。

sub number {
    $a <=> $b;
}
@result = sort number @list;

これで@listには、(1,2,3,4,5,6,7,8,9,10,11,12)というリストになります。


尚、$a と $b は、sort関数が内部で使う専用変数なので、変更してはなりません。

また、my宣言してもなりません。my宣言しなくても、strictになりますので大丈夫。


3の構文例

プログラム中でこのようなソートを複数回使うのなら、サブルーチンでもいいのですが、

一度しか使わないのなら、sortの3番目の構文を使ってサブルーチンを使わず、以下のように記述します。

@result = sort {$a <=> $b } @list;

尚、数値の比較は <=> ですが、文字列の比較は cmp を使用します。

■ 2007-08-28 ソケットのVB6からVB2005移行へのメモ

VB2005では、ソケットはクラス(http://www.atmarkit.co.jp/fdotnet/special/networkprog/networkprog_01.html)でサポートされているので、VB6のロジックをそのまま移行することは、まずないと思います。

しかし、特殊な環境(.NETに依存しない)だとどうしてもソケットAPIで組まないとならないケースがあるのです。

そんな人(実は自分)のためにのメモです。


固定長文字列の移行

FixedLengthStringを使用します。

ただし、文字列はvalueプロパティに格納されます。

VB6
Dim hostname As String * 256
VB2005
Dim hostname As New VB6.FixedLengthString(256)
構造体の移行

まず、VB6の構造体はTypeで定義し、VB2005の構造体はStructureで定義します。

つぎに、VB6は16ビット言語で、VB2005は32ビット言語です。

したがって、VB6のIntegerは、VB2005ではShortです。

また同じく、VB6のLongは、VB2005ではIntegerです。

VB6でByte型で確保したエリアは、マーシャリング(MarshalAs)してString型で確保します。

ちなみに、マーシャリングとは、異なる言語間でのデータ変換のことです。

VB6
   Private Type WSADATA
       wversion As Integer
       wHighVersion As Integer
       szDescription(0 To 256) As Byte
       szSystemStatus(0 To 128) As Byte
       iMaxSockets As Integer
       iMaxUdpDg As Integer
       lpszVendorInfo As Long
   End Type
VB2005
   Private Structure WSADATA
        Dim wversion As Short
        Dim wHighVersion As Short
        <MarshalAs(UnmanagedType.ByValTStr, SizeConst:=256 + 1)> Dim szDescription As String
        <MarshalAs(UnmanagedType.ByValTStr, SizeConst:=128 + 1)> Dim szSystemStatus As String
        Dim iMaxSockets As Short
        Dim iMaxUdpDg As Short
        Dim lpszVendorInfo As Integer
   End Structure
Any型の移行

VB6のどんな型でも受けられるAny型は、VB2005ではサポートされませんでした。

VB2005では、『どんな型でも』をオーバーロードで対応します。

つまり、引数タイプの異なる同名のAPIを複数定義するのです。


VB6
    Private Declare Sub RtlMoveMemory Lib "KERNEL32" (hpvDest As Any, ByVal hpvSource&, ByVal cbCopy&)
VB2005
    Private Declare Sub RtlMoveMemory Lib "KERNEL32" (ByRef hpvDest As Integer, ByVal hpvSource As Integer, ByVal cbCopy As Integer)
    Private Declare Sub RtlMoveMemory Lib "KERNEL32" (ByRef hpvDest As HOSTENT, ByVal hpvSource As Integer, ByVal cbCopy As Integer)
    Private Declare Sub RtlMoveMemory Lib "KERNEL32" (ByRef hpvDest As Byte, ByVal hpvSource As Integer, ByVal cbCopy As Integer)

■ 2007-08-28ロングネームをショートネーム(8.3形式)へ変換

DOSコマンドのfor文で、パス・ファイルのロングネームをショートネーム(8.3形式)へ変換が出来ます。

たとえば以下は、/TR の %~sA に C:\Documents and Settings\NOTEPAD.EXE のショートネームが設定される。

for %A in ("C:\Documents and Settings\NOTEPAD.EXE") do SCHTASKS /CREATE /SC DAILY /TN 半角スペースフォルダ /TR %~sA /ST 10:15:00

留意:

VBのプログラム内から実行する時は、

%A は、%%A

%~sA は、%%~sA

になります。

参考:

http://www.fpcu.jp/dosvcmd/bbs/log/taskkillstart/at/4-0842.html

■ 2007-08-27 eval関数についてのメモ

eval関数は、引数に渡す文字列($expr)をPerlプログラムとして解釈し、それを実行する命令です。

$rc = eval($expr); 

$expr は、式 or ブロックで、省略時は $_ が使用される。

eval引数の$expr実行正常時の$rc は、最後に評価した値、または return 関数で返された値がセットされる。

eval引数の$expr実行異常時の$rc は、undefを返し、$@にエラーメッセージを格納される。


例1(引数をPerlプログラムとして解釈するケース1)
print "4 * (6 + 4)" , "\n";        # 文字列 4 * (6 + 4) が表示される。
print eval("4 * (6 + 4)") , "\n";  # 40が表示される。

例2(引数をPerlプログラムとして解釈するケース2)
$num = 40;
$in = 100;
eval "\$data$num = $in";
print "\$data40 = $data40" , "\n"; # これで$data40に$inの値(100)が入る。

例3(最後に評価した値が返るケース)
$rc = eval {$aaa = 5 * 4; $bbb = 6 * 5;};
print $rc . "\n";

例4(リターン値が返るケース)
$rc = eval {$aaa = 5 * 4; return $aaa;};
print $rc . "\n";

例5(0除算等で、perlが異常終了するのを防ぐケース)
$x = 10; $y = 0;
$rc = eval { $x / $y; };
if (!defined($rc))  { warn "WARNING: $@"; }

例6(dbmopen, symlink, flockなど、実装されているかどうか分からない命令でperlが異常終了するのを防ぐケース)
open(OUT, "> aaa.txt");
$rc = eval { flock(OUT, 2); };
if (!defined($rc)) { warn "WARNING: flock isn't supported($@).\n"; }

■ 2007-08-26 VBからAPIを使用するときの文字列型引数引き渡しの非常識

VBの関数では、引数を『値渡し(ByVal)』と『参照渡し(ByRef)』の2種類で受けることが出来ます。

ByValで受けた変数を関数内で変更すると、呼び出し元の変数は変更されません。

ByRefで受けた変数を関数内で変更すると、呼び出し元の変数は変更されます。

これ、VBの常識です。


しかし、APIの引数へ文字列型変数受け渡しに関して、この常識が通用しないのです。

API側の引数型がC言語の文字列ポインタで受けるのもは、VB側ではすべてByValで渡すのです。

そして、APIは、ByValで受けても、ちゃんとが値を設定してくれるのです(VBでは非常識)。

つまり、『ByValで受けた変数を関数内で変更すると、呼び出し元の変数は変更されます』になるのです!!


たとえば、以下では、gethostname関数(ソケットAPI)をコールするとByValなのにnameへホスト名が設定される。


VBでの定義
Public Declare Function gethostname Lib "wsock32.dll" _
 (ByVal name As String, ByVal namelen As Long) As Long

C言語(ソケットAPI)での定義
int gethostname (char FAR * name, int namelen);

この辺に詳しい識者の方、もしよろしければ、ご教示願います。

尚、APIの引数型が、整数型、整数ポインタ型、構造体型、構造体ポインタ型ではVBの常識通りです。

つまり、APIへ情報を渡すだけならByValで、APIから情報を取得するときはByRefになります。

■ 2007-08-25 タスクスケジューラへ半角スペースありフォルダでも登録可能!

タスクスケジューラへ登録する実行プログラムは、8.3形式でないとダメだと思っていましたが……。

以下の方法で半角スペースありフォルダのロングネームでも登録可能です。


前提説明:

strCmdAddには、この行を実行する前にschtasksコマンドや他のオプションがすでに設定されている。

strTaskCommandPathには、タスクスケジューラに登録する半角スペースありフォルダのパスの実行ファイルが設定されている。

strCmdAdd = strCmdAdd & " /TR " & "\""""" & strTaskCommandPath & "\"""""
ポイント説明
VBでは、『"』のエスケープは『"』を2つ重ねるのが普通です。
しかし、タスクスケジューラに関しては、『\』も必要なのです。

参考URL:

http://support.microsoft.com/kb/823093/en-us

■ 2007-08-24 インストーラカスタム動作へのデバックアタッチ

まず、VB2005でAP(アプリケーション)を作成し、つぎに、そのインストーラを作成します。

そして、そのインストーラで任意の処理を行いたい場合が有ります。


そのような時は、カスタム動作でのロジックをインストール用クラスに記述します。

しかし、デバッグ時、普通にはデバッガー(Visual Studio 2005)がインストール用クラスのソースにアタッチしないのです。


そんな時は、以下の1行をカスタム動作(イベント)でのロジックの先頭に入れると、ソースにアタッチが可能(ダイアログが出る)になり、ステップ毎にデバックが出来るようになります。

System.Diagnostics.Debugger.Launch()

■ 2007-08-23 カレントディレクトリの取得

VB2005でカレントディレクトリを取得するには、以下で求められます。

Dim strCurrentDir As String = System.IO.Directory.GetCurrentDirectory()

■ 2007-08-22 WINDOWS-XPで中国語(ピンイン)を入力するには?

WINDOWS-XPでは、予め中国語を入力する機能が備わっています。

以下の手順で中国語を入力することが出来ます。


*入力設定

*入力方法

以上で中国語の入力が出来ました。

■ 2007-08-21 Open関数で第二引数の省略

普通、Open関数は以下の感じで、第二引数のスカラー変数($filename に格納されているパス名のファイル)をオープンしています。

open FH, "$filename";

しかし、$filename等の第二引数が省略したケースに遭遇するときがあります。

その場合、何をオープンしているのでしょうか?


それは、ファイルハンドルと同名のスカラー変数に格納されているパス名のファイルをオープンするのです。

$file = "c:\aaa.txt";
open file;

尚、my宣言してあるスカラー変数では、このオープンは不可で、つまり、このようなオープンは strict では使えない。

■ 2007-08-20 いろいろと忙しい

リアルワールドがいろいろと忙しくなりました。

ネットワールドでの活動を縮小します。

しかし、また、余裕が出来次第更新します。

■ 2007-08-19 『神』と『仏』

神という字は、申(シン)が音符の形声文字で、申は稲妻の形です。

稲妻は天にある神の威光のあらわれと考えられたので「かみ」の意味になりました。

つまり、申は神の元の字で、申が「かみ」以外に「もうす」などの意味に用いられたので、

示偏をつけて「神」の字になりました。


一方、仏の元の字は「佛」で、弗(フツ)が音符の形声文字です。

意味は、彷彿(ほうふつ)等ように「ほのかな、かすか」です。

のちに、梵語で正しい悟りを意味するブッタの音訳に充てられ仏陀となりました。

この世で「正しい悟り」を得たのは釈尊一人ということなので、

釈尊イコール仏陀となって、釈尊を仏さまという。

■ 2007-08-18 日本語と中国語での漢字

ご存知のように中国語は、すべて漢字です。

今から3300年前に出来た漢字が、中国語と日本語で別々に進化を遂げました。

しかし、元は同じ漢字なので、日本語と中国語での漢字の類似性を調べてみました。


*漢字の発音の類似性

今の中国語は、『北京語音を標準音、北方語を基礎語彙として典型的な白話文(口語文)を語法の規範とする』と定義されています。

また、上海や広東等の方言が沢山ありますが、すべて漢字なのは同じなのです。

一方、日本語の漢字の発音には、旧仮名と呼ばれるものがあります。

旧仮名は、日本語が中国語の漢字字音を受け入れたとき、 日本語の発音としては相当に無理をしながら中国語を忠実に音写しようとしたが、

しかし、発音しやすいように変形してしまったものだそうです。

以下は、中国語、旧仮名、新仮名の発音の比較表です。

 中国語 旧仮名 新仮名
タン タウ トウ
チャン チャウ チョウ
リャン リャウ リョウ
ヤン ヤウ ヨウ
サン サウ ソウ
カオ カウ コウ
マオ マウ モウ
ラオ ラウ ロウ
パオ ハウ ホウ
ハオ カウ コウ
http://www.asahi-net.or.jp/~hi5k-stu/nihongo/kanji.htm

確かに、なんとなく、発音変化の類似性が感じ取れます。


*漢字の意味の類似性

今の中国語の漢字は、簡体字と呼ばれ、第二次世界大戦後にそれまで使われていた繁体字から変更になりました。

日本でも同じく常用漢字化(当用漢字)されましたが、簡体字とは、全く無関係に変更になりました。

したがって、第二次世界大戦後以前の漢字は、日中ほぼ一緒で、日本人と中国人は、漢字での意思疎通ができたと言われています。

今日でも、漢字ならある程度意味がわかると、中国人の知り合いから聞いています。

もし、第二次世界大戦後の漢字改革を日中が合同で行っていれば、もっと中国語を習得しやすかったかなと思う次第です。


*参考

http://www.pacific-en.co.jp/x260-1.html

■ 2007-08-17 『生』という漢字

『生』は、草の生え出る形の象形文字です。

草が発芽し、生長することから「うまれる、そだつ、いきる、いのち」の意味になりました。


とりあえず、今日は、これだけです。

■ 2007-08-16 『列リストが使用されていて、IDENTITY_INSERTが ON のときだけ…』が出たら

SQLを発行時に以下のメッセージに遭遇することがあります。

列リストが使用されていて、IDENTITY_INSERTが ON のときだけ、

テーブル 'xxx' の ID 列に明示的な値を指定できます。


この場合は、以下を行う。

SET IDENTITY_INSERT xxx ON

を発行し、ID 列に『*』を使わず、すべて明示的に値を列挙する。

■ 2007-08-15 キーボード入力方法についてのいろいろ

普段、なにげなくキーボード入力をしていますが、実は入力方法は結構複雑です。

そこで、キーボード入力方法を整理してみました。


*直接入力(半角英数直接入力と半角カタカナ直接入力の2つがある)

*日本語入力(ローマ字入力とかな入力の2つがある)

*切り替え

*モード

*変換ファンクションキー

■ 2007-08-14 法華経ブログを立ち上げ

これからは、法華経ネタは、新たなブログ:『法華経ブログ』に書きます。

こちらは、基本的に法華経ブログ更新のお知らせだけにします。

法華経ブログの方も、よろしくお願い致します。

■ 2007-08-14 Perlでのグローバル変数宣言

Perlでの変数は、基本的に宣言なしで使え、しかも広域なスコープのグローバル変数になります。

しかし、今の時代は、strictの時代で、レキシカルスコープのmy宣言が推奨です。

すると、strictでは、my宣言が必要で、グローバル変数が使えなくなってしまうのです。

そのような場合は、our宣言するとグローバル変数になります。

use strict;

my  $aaa = "111";
our $bbb = "222";

&ddd($aaa);

sub ddd {
    my ($ccc) = @_;
    my $aaa = "333";
    print $ccc, "\n";
    print $bbb, "\n";
    print $aaa, "\n";
}

■ 2007-08-13 反省するな! 希望を持つな!

とある宗教評論家の人が、以下のようなことを言っていました。


仏教の教えは、『いま・ここで・わたしが生きている』という、しっかりと自分を生きることの教えです。

過去でもなく、未来でもなく、今なのです。


確かに、今一瞬一瞬をしっかり生きれば、つねに充実しているので、過去を反省する必要はないし?

未来はよい方向に開けていくので、特に希望など持たなくても大丈夫?


だから、私に向いているのかな仏教は…、場当たり的な所がぴったりとか(-_-;)

■ 2007-08-13 KANAキーロック状態からの脱出

たとえば、『コンピュータのロックの解除』を行う時に、KANAキーロック状態だったら、

英数のパスワードが入力できません。

日本語入力インジケータも『コンピュータのロックの解除』状態では、表示されていません。


ではどうやって、パスワードを入力すれば(KANAキーロックを外せば)よいでしょうか?

それは、以下の手順で、KANAキーロック状態から脱出ができます。

  1. パスワード入力エリアから、ユーザ名入力エリアにカーソルを移す。
  2. 「ALT」+「半角/全角」キーを押す。(これで、KANA入力が、かな漢字入力になる)
  3. 「ALT」+「カタカナひらがな」キーを押す。(これで、ローマ字漢字入力になる)
  4. 「ALT」+「半角/全角」キーを押す。(これで、ローマ字入力になる)
  5. パスワード入力エリアにカーソルを移し、パスワードを入力する。

1に関しては、なぜか、パスワード入力エリアでは、入力モードの変更ができないのです。

■ 2007-08-12 MS SQL ServerのEnterprise Managerで<NULL>を入力するには

Enterprise Managerでデータ項目(セル)に<NULL>を入力したい場合があります。

そのような時は、以下のようにすれば、<NULL>が入力できます。

コントロールキーを押しながら、0 を入力し、改行するか、カーソルを他に移す。

■ 2007-08-12 先祖供養は未来休養!?

7月は東京のお盆、8月は田舎のお盆、9月は秋のお彼岸です。

お先祖さまを供養する行事が続きます。


実は、過去のお先祖さまの誰一人欠けても、自分は存在しないのです。

そう、お先祖さまあっての自分なのです。


また、供養とは、そのようなお先祖さまに対する感謝の心を表す行為です。

具体的には、お墓参りとか、ご仏前にお花、お水、お茶をお供えし、お経の読誦とかです。

そして、これらの行いは、善い行いとしてお先祖さまへ回向されるのです。


善い行いをすると、善い報いが来ると説くのが、仏教です。

だから、供養を行うと、必ず、未来に善い報いが来るのです。


それは、自分に来る場合もあるし、子孫へ来る場合もあるのです。

まさに、 先祖供養は未来休養になるのです。

■ 2007-08-12 CGI.pmでURLパラメータを受け取るには

フォームからのデータを受け取るには、param()メソッドを使用します。

では、URLパラメータを受け取るには……、url_param()メソッドを使用します。

これ、ファイルアップロードの時などに、補助情報をURLパラメータで渡せるので便利です。

<form method="POST" action="xxx.cgi?user_id=yyy" ENCTYPE="multipart/form-data" name="FM">
<input type="file" name="upload_file" size="40">
<input type="submit" value="アップロード">
use CGI
$query = new CGI;

# $filenameへはファイル名でもあり、ファイルハンドルでもあるものが格納される。
# アップロードされるファイルの実体は、このファイルハンドルを元に取得ができる。
$filename = $query->param('upload_file');

# form要素のaction属性値のURLパラメータuser_idの値(yyy)が格納される。
# つまり、URLパラメータを受け取ることが出来るのです。
$user_id = $query->url_param('user_id');

■ 2007-08-12 7月分を更新

以下のページに7月分を追加更新しました。

■ 2007-08-12『漢字起源と字解』ページ、いきなりトップ!

新しいページ『漢字起源と字解』をアップしたのが、8月4日で、三日後にグーグルで『漢字字解』で検索すると、なんとトップで出てきました。

いやー驚いた!。たった3日でトップ。


しかし、気が付いたことがあります。

それは、グーグルに表示されているコメントが、『漢字起源と字解』とは関係のない文言……。

私の他のページを元に『漢字起源と字解』を作った時に、以下のmeta要素の内容を修正するのを忘れていて、元ページの文言が表示されていたのです。

<meta name="description" lang="ja" content="ここは、あなたのホームページを応援……">

逆に言うと、グーグルは、このタグを重要視していますよ!

って、誰にともなく…。

あと、titleタグも重要視しています。h1タグは、それほどでもないみたいです。

■ 2007-08-11 用紙一枚に4ページを印刷するには

普通、1ページは、用紙一枚に印刷します。

しかし、最近は資源の節約や環境を配慮して、表裏2ページづつに合計4ページを印刷するのが普通になりつつあります。

またしかし、それをやると、印刷の設定が複雑で、結構失敗し、結局、一枚1ページになったりするわけです。

そこで、一枚4ページ印刷のポイントをメモしときます。


印刷の設定は複雑ですが、一枚4ページ印刷に関しては、プリンタのプロパティのみの設定です。

ですので、これに関しては、プリンタのプロパティ以外の設定をしてはなりません。

あくまでも、一枚4ページ印刷に関して、さわるのは、プリンタのプロパティのみです。

ちょっとしつこく言ったのは、プリンタのプロパティ以外にも、それっぽい設定があるので惑わされるからです。


尚、上記は、プリンタのプロパティに『両面印刷』と『複数ページレイアウト』の機能がある場合の話しです。

■ 2007-08-11 モデム(バブ?)不良でブログ更新が出来ず!

ここ2日間(9日、10日)と回線が繋がらず、ネットが出来ませんでした。

いま少し前、プロバイダの人が調べに来てくれて、原因はモデム(バブ?)でした。

モデムを取り替えて、復活です!

これからも、ガンガン行きますので、よろしくお願い致します。

■ 2007-08-08 Perlで引数に複数の配列を指定するには

Perlのサブルーチンは、引数を配列 @_ で受け取ります。

したがって、スカラー変数や一つの配列なら問題がないのですが、複数の配列を引数に指定すると、

受け取り側が一つの配列 @_ なので、複数の配列が一つにまとめられて、想定外の結果になってしまいます。

そのような場合は、配列のリファレンスを引数に指定します。


サンプル
use strict;

my (@aaa, @bbb);

@aaa = (111, 222, 333);
@bbb = (999, 888, 777);

&ccc(\@aaa, \@bbb);

print @aaa, "\n";
print @bbb, "\n";

sub ccc{
  my ($refaaa, $refbbb) = @_;
     $$refaaa[1] = "000";
     $$refbbb[2] = "000";
}

■ 2007-08-08 WINDOWSのヘルプボタンとは

普通、WINDOWの右上には、『_最小化ボタン』『□最大化ボタン』『×閉じるボタン』があります。

しかし、たまに、『?ヘルプボタン』に遭遇するときがあります。


この時、『?ヘルプボタン』をクリックするとマウスの形が『?』になります。

そのまま、知りたい項目やボタンの上に移動(ドロー)してクリックするとヘルプが表示されます…よ。


たとえば、『システムのプロパティ』とか『タスクスケジューラ』のWINDOWなどは、『?ヘルプボタン』があります。

■ 2007-08-07 Perlで配列の最大インデックスを参照するには

for文なので、配列の個数や最大インデックスが知りたい場合があります。

そのような時は、$#変数名 で配列の最大インデックスを求めることができます。

$#array;

また、以下は配列の個数を求めています。

$num = @array;

ちなみに、『配列の個数』=『最大インデックス』+ 1 です。

■ 2007-08-07 可と歌

すでに何度かご紹介しているように、漢字起源の時代は、神と人が渾然とした文化の時代です。

可と歌の漢字もそのように成り立ちました。


可の口は、もう何度もご紹介しているように、くちの口でなく、祝詞を入れる口(サイ)です。

可の丁(代用)は、木の枝で、そして、祝詞の入ったサイに対して、木の枝を振りかざして打ち、

神に、願いがかなうように、実現す「べし」と迫ることを表したのが『可』なのです。

また、それに対して、神が「よし」と許可するので「ゆるす」の意味が生まれました。


可を2つ上下に重ねた『哥』は、神に願いがかなうようにと、木の枝を振りかざした時に発する声とのことです。

そして、『哥』に、人が口を開いて叫んでいる姿の『欠』を加え『歌』となりました。

ですので、『哥』は『歌』の最初の字形です。

■ 2007-08-06 顔文字を入力するには

たぶん、知っている人の方が多いかもしれませんが、顔文字の入力方法です。


IMEのデフォルトで『般』になっている変換モードを、話し言葉優先の『話』にします。

そして、メモ帳などで、「かお」と入力し、後はスペースキーでお好みの顔文字を選択します。(^。^)


今日は、これだけです。すみません。m(__)m

もしかしたら、風邪引いたかも、なんとなく頭が痛い・・・。(T_T)

■ 2007-08-05 ADOアクセスで、Win32::OLE::Variant=SCALAR(0x......)の値がでたら

PerlからSQL-Serverへ、ADOのSelet文で、datetime型データを取得する時に、以下のような値に遭遇することがあります。

Win32::OLE::Variant=SCALAR(0x......)

このような時は、以下のuse文を追加してみてください。

use Win32::OLE::Variant;

すると、datetime型データを文字列で取得することが出来るようになります。

なぜそうなるのかは、わかりません。

以下のURLを読んでもわかりませんでした。

■ 2007-08-04 7月分を更新

燈明日記ブログ7月分を各ページへ追加更新しました。

また、新ページ 『漢字起源と字解』 をアップしました。よろしくお願い致します。

■ 2007-08-04 VB2005でのインストーラとWindowsサービス作成のリンク集

とにかくこれらは、ここで説明できるレベルのものじゃないです。

以下のリンク先を読んでなんとかして下さい。


Windowsサービスは、はじめに簡単な雛型を作ってから、プロセスにアタッチするとVisual Studio 2005でデバックができます。


一方、インストーラでは、カスタム動作での任意の処理をVisual Studio 2005でデバックすることが出来ませんでした。(カスタム動作での任意の処理にアタッチできない……だれか教えて

インストーラのカスタム動作での任意の処理をVisual Studio 2005でデバックするには

以下の1行をカスタム動作(イベント)のロジックの先頭に入れると、ソースにアタッチが可能(ダイアログが出る)になり、ステップ毎にデバックが出来るようになります。

System.Diagnostics.Debugger.Launch()

◆インストーラ

10 行でズバリ !! セットアップ プログラムの作成

http://www.microsoft.com/japan/msdn/thisweek/300x10/phase2/setup_program/default.aspx


チュートリアル : カスタム動作を使用した、インストール時のメッセージの表示

http://msdn2.microsoft.com/ja-jp/library/9cdb5eda(VS.80).aspx


方法 : 配置プロジェクトを作成または追加する

http://msdn2.microsoft.com/ja-jp/library/fyh6k4k4(VS.80).aspx


Windows インストーラ配置のタスク

http://msdn2.microsoft.com/ja-jp/library/ybshs20f(VS.80).aspx



◆Windowsサービス

特集:初めて作る.NET Windowsサービス

http://www.itmedia.co.jp/enterprise/articles/0502/01/news083.html


方法 : Windows サービスを作成する

http://msdn2.microsoft.com/ja-jp/library/9k985bc9(VS.80).aspx


Windows サービス アプリケーションのデバッグ

http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/vbcon/html/vbtskdebuggingserviceapplications.asp


Windowsサービスのデバッグ方法

http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?forum=7&topic=24965


チュートリアル : コンポーネント デザイナによる Windows サービス アプリケーションの作成

http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/vbcon/html/vbwlkwalkthroughcreatingwindowsserviceapplication.asp


WindowsサービスにおけるProcessの使用について

http://forums.microsoft.com/MSDN-JA/ShowPost.aspx?PostID=655284&SiteID=7


お題:イベントログを監視するサービスを作ろう

http://www.tk-engineering.com/LogWatcher/main.htm

■ 2007-08-03 売れるホームページの“文章の作り方”

“売れる文章”は、きちんと読み手の「相槌」を想像しながら書かれている。

「へぇ〜そうなんだ」

「ほぉ〜なるほどね」

「うんうん、そう思う」

あなたの文章を読んだとき、読み手がこの3つの相槌を打ってくれたら、売れる確立が飛躍的に上がるだろう。

この3つの相槌は、それぞれが大切な意味を持っている。

「へぇ〜そうなんだ」

と、商品・サービスのある新しい世界に興味を引いてもらい、

「ほぉ〜なるほどね」

と、納得してもらい、

「うんうん、そう思う」

と、共感してもらう。

この3つのプロセスが、“売れる文章”には大切なのだ

http://japan.internet.com/wmnews/20070803/6.html

しかし、アマゾンの本の広告入れたけど、2ヶ月経っても1冊も売れない……。

上記を読んで勉強や〜!

■ 2007-08-02 テキストにアンダーバーを引くには

メールやメモ帳に文章を書く時は、普通、プレーンテキストの文字です。

このプレーンテキストを強調したい時は、アンダーバーが引ければいいですね。


そんな時は、次ぎの行にオーバーラインで、あたかもアンダーバーにします。

具体的には、漢字入力モードでシフトキー押しながらチルダ(~)にし、スペースキーでオーバーラインに変換します。


ただし、フォントが固定幅のMSゴシック等でないとずれます。

また、WINDOWS-98だとダメみたい、WINDOWS-XPなら大丈夫です。

尚、WINDOWS-98の場合は、『きごう』と入力して変換を繰り返せば、『 ̄』が出てきます。

 

 

■ 2007-08-01 バイナリ構造体とは

バイナリ構造体とは、ある一塊のバイナリデータ(0と1の状態)とイコールみたいです。

Perlでのバイナリ構造体とは、pack関数のリターン値のことです。

pack関数は、第二引数のリスト値を、第一引数のテンプレートに従って、バイナリ構造体(リターン値)に変換します。


たとえば、以下は2進数文字列『"1111"』を、テンプレート『"B"等』に従って、バイナリ構造体に変換しています。

各行の右側のコメントは、単なるprint結果でなく、バイナリ構造体の中を16進数で表したものです。

$strbin = "1111";
print $strbin;                                            # 31313131
print pack("B", $strbin), "\n";                           # 80
print pack("B*", $strbin), "\n";                          # F0
print pack("B32", $strbin), "\n";                         # F0000000
print pack("b", $strbin), "\n";                           # 01
print pack("b*", $strbin), "\n";                          # 0F
print pack("b32", $strbin), "\n";                         # 0F000000
print pack("B*", substr("0" x 32 . $strbin, -32)), "\n";  # 0000000F
print pack("B32", substr("0" x 32 . $strbin, -32)), "\n"; # 0000000F

ちなみに、2進数文字列を10進数文字列に変換するには、以下の感じです。

print unpack("N", pack("B32", substr("0" x 32 . $strbin, -32))); # 3135