ChaichanPapa-World !

燈明日記(2008/11

◆ インデックス

◆ 2008年11月

2008-11-30 ファイルテスト演算子

ファイルテスト演算子を使用すれば、ファイルの属性を参照、或いは取得することができます。


◆ ファイルテスト演算子
    -r  : 読み込み可能であれば
    -w  : 書き込み可能であれば
    -x  : 実行可能であれば
    -o  : 自分のものであれば
    -R  : 実uid/gidで読み込み可能であれば
    -W  : 実uid/gidで書き込み可能であれば
    -X  : 実uid/gidで実行可能であれば
    -O  : 実uidのものであれば
    -e  : 存在すれば
    -z  : サイズが0であれば
    -s  : サイズが0でなければ(ファイルサイズを返す)
    -f  : 通常ファイルであれば
    -d  : ディレクトリであれば
    -l  : シンボリックリンクであれば
    -p  : 名前付きパイプであれば
    -S  : ソケットであれば
    -b  : ブロック型スペシャルファイルであれば
    -c  : キャラクタ型スペシャルファイルであれば
    -u  : setuidビットが立っていれば
    -g  : setgifビットが立っていれば
    -k  : stickyビットが立っていれば
    -t  : ファイルハンドルが tty としてオープンされていれば
    -T  : ファイルがテキストファイルであれば
    -B  : ファイルがバイナリファイルであれば
    -M  : perl起動時における、ファイルの更新時刻からの日数
    -C  : perl起動時における、ファイルの作成時刻からの日数
◆ ファイルテスト演算子使用サンプルソース(ftest.pl)
use strict;
use warnings;
use utf8; 
binmode STDOUT, ':encoding(shiftjis)';
if (-r "ftest.pl") {
    print '読み込み可能', "\n";
}
else {
    print '読み込み不可能', "\n";
}
if (-w "ftest.pl") {
    print '書き込み可能', "\n";
}
else {
    print '書き込み不可能', "\n";
}
if (-x "ftest.pl") {
    print '実行可能', "\n";
}
else {
    print '実行不可能', "\n";
}
if (-R "ftest.pl") {
    print '実uid/gidで読み込み可能', "\n";
}
else {
    print '実uid/gidで読み込み不可能', "\n";
}
if (-W "ftest.pl") {
    print '実uid/gidで書き込み可能', "\n";
}
else {
    print '実uid/gidで書き込み不可能', "\n";
}
if (-X "ftest.pl") {
    print '実uid/gidで実行可能', "\n";
}
else {
    print '実uid/gidで実行不可能', "\n";
}
if (-e "ftest.pl") {
    print '存在する', "\n";
}
else {
    print '存在しない', "\n";
}
if (-z "ftest.pl") {
    print 'サイズが0です', "\n";
}
else {
    print 'サイズが0でない', "\n";
}
if (-s "ftest.pl") {
    print 'サイズが ' . (-s "ftest.pl") . " です", "\n";
}
else {
    print 'サイズが0です', "\n";
}
if (-f "ftest.pl") {
    print '通常ファイルです', "\n";
}
else {
    print '通常ファイルでないです', "\n";
}
if (-d "ftest.pl") {
    print 'ディレクトリです', "\n";
}
else {
    print 'ディレクトリでないです', "\n";
}
if (-l "ftest.pl") {
    print 'シンボリックリンクです', "\n";
}
else {
    print 'シンボリックリンクでないです', "\n";
}
if (-p "ftest.pl") {
    print '名前付きパイプです', "\n";
}
else {
    print '名前付きパイプでないです', "\n";
}
if (-S "ftest.pl") {
    print 'ソケットです', "\n";
}
else {
    print 'ソケットでないです', "\n";
}
if (-b "ftest.pl") {
    print 'ブロック型スペシャルファイルです', "\n";
}
else {
    print 'ブロック型スペシャルファイルでないです', "\n";
}
if (-c "ftest.pl") {
    print 'キャラクタ型スペシャルファイルです', "\n";
}
else {
    print 'キャラクタ型スペシャルファイルでないです', "\n";
}
if (-u "ftest.pl") {
    print 'setuidビットが立っている', "\n";
}
else {
    print 'setuidビットが立っていない', "\n";
}
if (-g "ftest.pl") {
    print 'setgifビットが立っている', "\n";
}
else {
    print 'setgifビットが立っていない', "\n";
}
if (-k "ftest.pl") {
    print 'stickyビットが立っている', "\n";
}
else {
    print 'stickyビットが立っていない', "\n";
}
if (-t "ftest.pl") {
    print 'ファイルハンドルが tty としてオープンされている', "\n";
}
else {
    print 'ファイルハンドルが tty としてオープンされていない', "\n";
}
if (-T "ftest.pl") {
    print 'ファイルがテキストファイルです', "\n";
}
else {
    print 'ファイルがテキストファイルでないです', "\n";
}
if (-B "ftest.pl") {
    print 'ファイルがバイナリファイルです', "\n";
}
else {
    print 'ファイルがバイナリファイルでないです', "\n";
}
print 'perl起動時における、ファイルの更新時刻からの日数=', -M "ftest.pl" ,"\n";
print 'perl起動時における、ファイルの作成時刻からの日数=', -C "ftest.pl" ,"\n";
◆ 補足

ファイルテスト演算子でよく使用するのは、存在有無の『-e』とサイズ取得の『-s』ですね。

尚、上記以外に『-A』の『ファイルの参照時刻からの日数』というのが、ありますが・・・今回これをテストした値が謎の値だったので、割愛しました。

2008-11-29 WebページからIEのホームページ(レジストリ)を変更する(JavaScriptバージョン)

時代はJavaScript・・・以前にVBScriptで組んだ以下を、JavaScriptでマイグレーション(書き換え)してみました。

ちなみに、以下は、WebページからIEのホームページ(レジストリ)を変更するスクリプトです。


留意点として、WebページからのActiveXObject使用なのでIEの警告メッセージがでます。

また、レジストリ操作スクリプトのお約束メッセージ『ご自分の責任でおこなってください』です。


◆ VBScriptのサンプルソース
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
<title>WebページからIEのホームページ(レジストリ)を変更する</title>
</head>
<body>
<script language="VBScript">
chg_HomePage()
Function chg_HomePage()
    If msgbox("IEのホームページを現ページに変更します。よろしいですか?",1) = 1 then
        Set WshShell=CreateObject("WScript.Shell")
       'RegReadメソッドで、レジストリ内の指定キー(現ホームページ)の設定値を取得する
        msgbox("元のホームページ -> " & WshShell.RegRead("HKCU\Software\Microsoft\Internet Explorer\Main\Start Page"))
        'レジストリ内の指定キーの設定値を第2引数に指定された値で更新。第3引数には、レジストリに格納する値のデータ型を指定する
        WshShell.RegWrite "HKCU\Software\Microsoft\Internet Explorer\Main\Start Page",document.location, "REG_SZ"
        msgbox("変更後のホームページ -> " & WshShell.RegRead("HKCU\Software\Microsoft\Internet Explorer\Main\Start Page"))
        Set WshShell = Nothing
    End If
End Function
</script>
</body>
</html>
http://d.hatena.ne.jp/chaichanPaPa/edit?date=20080219

◆ JavaScriptのサンプルソース
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
<title>WebページからIEのホームページ(レジストリ)を変更する</title>
</head>
<body>
<script type="text/javascript">
chg_HomePage();
function chg_HomePage() {
    if (confirm("IEのホームページを現ページに変更します。よろしいですか?")) {
        var WshShell = new ActiveXObject("WScript.Shell");

        //RegReadメソッドで、レジストリ内の指定キー(現ホームページ)の設定値を取得する。
        alert("元のホームページ -> " + 
         WshShell.RegRead("HKCU\\Software\\Microsoft\\Internet Explorer\\Main\\Start Page"));
 
        //レジストリ内の指定キーの設定値を第2引数に指定された値で更新。
        //第3引数には、レジストリに格納する値のデータ型を指定する
        WshShell.RegWrite("HKCU\\Software\\Microsoft\\Internet Explorer\\Main\\Start Page",
                          document.location, "REG_SZ");

        //RegReadメソッドで、レジストリ内の指定キー(現ホームページ)の設定値を取得する。
        alert("変更後のホームページ -> " + 
         WshShell.RegRead("HKCU\\Software\\Microsoft\\Internet Explorer\\Main\\Start Page"));
        WshShell = null;
    }
}
</script>
</body>

◆ VBScriptからJavaScriptへのマイグレーションポイント

2008-11-28 未満の反対は、何と言う?

たとえば、1000円以上と言えば、1000円を含んでそれより大きいお金です。

また、1000円以下と言えば、1000円を含んでそれより小さな金です。

そして、1000円未満と言えば、1000円を含まないでそれより小さな金です。


では、1000円を含まないでそれより大きなお金は何と言うのでしょうか?

普通は、1001円以上と言いますね。


しかし、1001円以上だと、1000円と1001円の間の数値(銭)が入りません。

なので、このような場合は、1000円以下以外と言えば、1000円を含まないでそれより大きいお金のことになると思います。


これ、入力項目の説明の時などにも使えますね。

たとえは、MAX10桁入る入力項目で、『10桁以下以外はエラーです』とか・・・。


関連コンテンツ

2008-11-27 シフトJISからUTF-16へ変換

VBScriptでシフトJISからUTF-16への変換ルーチンを組んでみました。


◆ソース(sj2utf.vbs)
Call FromTo("sj.txt", "shift_jis", "utf16.txt", "utf-16")
'FromToサブの第4引数を以下を参照して替える
'BOM付きビックエディアン unicodeFEFF
'BOM無しビックエディアン utf-16be
'BOM無しリトルエディアン 不明
'BOM付きリトルエディアン unicode, unicodeFFFE, utf-16, utf-16le, 

Public Sub FromTo(inFileName, inCharset, outFileName, outCharset)
Const adSaveCreateOverWrite = 2
Dim inStream
Dim outStream

    Set inStream = CreateObject("ADODB.Stream")
    inStream.Charset = inCharset
    inStream.Open

    Set outStream = CreateObject("ADODB.Stream")
    outStream.Charset = outCharset
    outStream.Open

    inStream.LoadFromFile inFileName
    inStream.CopyTo outStream
    outStream.SaveToFile outFileName, adSaveCreateOverWrite

    outStream.Close
    inStream.Close
    Set outStream = Nothing
    Set inStream = Nothing
End Sub
◆実行方法

sj2utf.vbsとsj.txt(シフトJISのコードのデータ)を同じフォルダにして以下のコマンドを実行。または、単にsj2utf.vbsをダブルクリックする。

C:\wk>CScript sj2utf.vbs

◆補足

FromToサブの第4引数は、レジストリの以下に登録されているものとのことですが、それ以外にもあるようです。

HKEY_CLASSES_ROOT\MIME\Database\Charset

また、『BOM無しリトルエディアン』の指定の方法が不明です。

ちなみに、PerlのEncodeでは、『BOM付きリトルエディアン』の指定の方法が不明だったのですが・・・。


◆蛇足

Perlと同じように標準入出力でプログラムを組みたかったのですが、VBScriptではバイナリデータを標準出力することが出来ないみたいです(テキストなら出来る)。

また、直接的な変換関数もなく、Asc,Hex,Valを組み合わせば出来そうなのですが・・・来なかったです。

そこで、標準入出力と独自変換はあきらめ、ファイル指定の入出力とADODB.Streamの変換を使ってみました。

ADODB.Streamでのコード変換は、VBScriptでの定石のようです。

2008-11-26 シフトJISからUTF-16へ変換

PerlでシフトJISからUTF-16への変換ルーチンを組んでみました。


◆ソース
use strict;
use warnings;
use Encode qw(from_to);
binmode STDIN;
binmode STDOUT;
while (<>) {
    from_to($_, "shift_jis", "UTF-16BE");
    print $_;
}
# from_to関数の第3引数を以下を参照して替える
# BOM付きビックエディアン UTF-16
# BOM無しビックエディアン UTF-16BE
# BOM無しリトルエディアン UTF-16LE
# BOM付きリトルエディアン 不明

◆実行方法
C:\wk>perl sj2utf16.pl < sj.txt > UTF-16.txt

C:\wk>perl sj2utf16.pl < sj.txt > UTF-16BE.txt

C:\wk>perl sj2utf16.pl < sj.txt > UTF-16LE.txt

Encodeモジュールのfrom_to関数で、なぜか、BOM付きリトルエディアンの指定が不明です。

知っている方、教えてください。(Supported.podを見ても分かりませんでした)


◆関連コンテンツ

2008-11-25 ワードで半角クォートを入力しても全角クォートになってしまう?

MS-Wordで、半角のクォート(シングル・ダブル両方)を入力しているにもかかわらず、全角のクォートが入力されることがあります。

例の余計なお世話ってヤツです。


これを解決するには
  1. メニューのツール(T)を選択する。
  2. オートコレクトのオプション(A)を選択する。
  3. 入力オートフォーマットタブを選択する。
  4. 『''を‘’に変更する』のチェックを外す。
  5. OKボタンをクリックする。

すると、半角クォートはちゃんと半角クォートで入力が出来るようになります。


尚、上記は、ワード2000と2003で確認しています。

2008-11-24 よかった探しリース2008

本コンテンツは、結城浩先生のページで毎年行われている企画『よかった探しリース』に参加しています。

◆よかった探し
  1. 今年も家族が皆、元気に暮らせて、感謝です。
  2. 今年も仕事が順調で、感謝です。
  3. 長男は、ペニーレインでの長男メインのライブが、満席立ち見の盛況で、感謝です。
  4. 次男は、大学受験で頑張っており、感謝です。
  5. 三男は、バスケットの部活で、都大会出場が出来、感謝です。

とにかく、毎日が普通に暮らせること・・・実は、すごく幸せなことなのだな・・・と思える今日この頃です。


もしよろしければ、長男のメッセージ(作詞・作曲)を聴いてやってください!

メッセージ / 小池啓仁

2008-11-24 UTF-16は、実は5種類ある!

ユニコードは、コード自体は一つ(ユニーク)なのだけど、そのエンコードの方法には沢山があります。

よく使われるエンコードは、UTF-8とUTF-16です。

UTF-8は、Web系やPerlでよく使われていて、1バイト文字はアスキーコードと互換性があり、漢字は3バイトでエンコードします。


一方、UTF-16は、なんとUTF-16だけでも5種類のエンコード方法があるのです。知っていましたか?

基本的に文字を2バイトのコードで表現するエンコードです(今回サロゲートペアについての説明はパス)。


バイトの並び方の違いでビックエンディアンとリトルエンディアンあり、なおかつ、各々にBOM(Byte Order Mark)が付くエンコードがあります。

まず、BOMの付かない、以下の2通りのエンコードがあります。

そして、単にUTF-16と言った場合、以下の3通りが許されるとのことです。

と言うことで、UTF-16は、以上の5種類があるのです。


◆サンプル:『A』をUTF-16で表現したときの5つのエンコード

エンコード名エンコード
UTF-16BE00 41
UTF-16LE41 00
UTF-16 FE FF 00 41
UTF-16 FF FE 41 00
UTF-16 00 41

2008-11-24 都大会2回戦敗退

実は、私が佐渡へ行っている間(23日)に中学バスケット都大会2回戦がありました。

結果は、以下の通り、三鷹七中は中野二中に54対49で2回戦敗退をいたしました。

なぜか、ベストメンバーでなく戦ったとのことで、私は、なにも言えませんが、勝てる試合を落としたと・・・本人達もママ達もかなり落胆をしていました。


それでも本人は、今日(24日)もまた部活に出かけて行きました(根性がある)。

ここ数週間は、試合のことで、腫れ物に触るように三男に接していましたが、試合に負けて、なぜか、いい子になったような気がしました。


とりあえず、ブロック2位だし、ベストメンバーでなく5点差で戦えたことは、本人達の自信にもなったと思います。あとは、『春の大会』、『夏の大会』と続いてきますが、彼達ならやってくれるでしょう!

さぁー、リベンジや!

2008-11-23 佐渡

佐渡に社員旅行に行ってきました。


赤い風船(日本旅行)の1泊2日のツアーに参加しての社員旅行でした。

東京駅から新幹線で・・・、新潟港からジェットフォイルで両津港(佐渡)まで約1時間で着きました。

ツアーバスで金山・朱鷺・砂金・たらい舟と観光をしました。


佐渡は、1000メートル級の山脈や結構広い平野があり、島というより大陸という感じがしました。

そうそう、曽我ひとみさんとジェンキンスさんの娘さんが、アルコール共和国で働いていました。

娘さんから、お酒を注いでもらいました。


天候は、一日目は曇りで、2日目は小雨&晴れ間で、写真の通り虹が出ていました。

f:id:chaichanPaPa:20081123230708j:image

マウスポインタまで入ってしまった・・・

2008-11-21 社員旅行

明日から一泊二日で、佐渡島へ社員旅行に行ってきます。

月曜日には、みあげ話しをアップしますね!

2008-11-21 文字列で各言語での『'』と『"』自体のエスケープの違い

◆ Perl

シングルクォート『'』で囲まれた文字列は、変数が展開されない。文字列中に『'』がある時は『\'』でエスケープします。

ダブルクォート『"』で囲まれた文字列は、変数が展開される。文字列中に『"』がある時は『\"』でエスケープします。


◆ JavaScript

『'』や『"』で囲まれた文字列は同等で、文字列中に『'』または『"』がある時は『\'』または『\"』でエスケープします。


◆ html

『'』や『"』で囲まれた文字列は同等で、文字列中に『'』または『"』がある時は文字参照(『'は、&rsquo;』『"は、&quot;』)を使う。


◆ VBScript

『"』で囲まれたものが文字列で、 『'』で囲まれたものは文字列ではありません。文字列中に『"』がある時は『""』でエスケープします。


◆ SQL

『'』で囲まれたものが文字列で、 『"』で囲まれたものは文字列ではありません。文字列中に『'』がある時は『''』でエスケープします。

2008-11-20 光学式マウスの動作原理

普通のマウスのポインタ移動量は、マウス内のボールの動きで直感的に理解ができますが、光学式マウスは、どうやってポインタ移動量をもとめているのでしょうか?


初期の光学式マウスは、専用マウスパッドが必要で、そのパッドに縦横の線が引いてあり、マウスが移動した時にその線を規準に移動量を検出しました。


最近の光学式マウスは、専用マウスパッドが必要なく、デジタルカメラで使われているような「イメージセンサー」と呼ばれる素子を利用して、マウスの移動量を検出します。


要は、今撮影した画像(たとえば、机の表面の画像)と、直前に撮影した画像とを比較して、それらに含まれる「同一部分」がどれくらいずれたのかを検出してやれば、どの程度マウスが移動したのかが分かるわけです。


したがって、机等の表面が鏡のように同じ模様のものは、移動量が検出できないのです。

2008-11-19 split関数の第一引数

split関数の第一引数は、通常、パターン(正規表現)を『/』区切り文字で指定します。

しかし、『/』区切り文字以外にも『'』や『"』も使えるみたいです。

またしかし、『/ /』と『' '』は、振る舞いが、以下のように違う感じです。


◆サンプル
use strict;
use warnings;

my @xtbl;
my $xtbl = "aaa  x+  bbb  x+  ccc";
@xtbl = split(/ /, $xtbl);
print "-----『/ /』を使用------\n";
print $xtbl[0], "\n";
print $xtbl[1], "\n";
print $xtbl[2], "\n";
print $xtbl[3], "\n";
print $xtbl[4], "\n";
print $xtbl[5], "\n";
print $xtbl[6], "\n";
print "\n-----『' '』を使用------\n";
@xtbl = split(' ', $xtbl);
print $xtbl[0], "\n";
print $xtbl[1], "\n";
print $xtbl[2], "\n";
print $xtbl[3], "\n";
print $xtbl[4], "\n";
print $xtbl[5], "\n";
print $xtbl[6], "\n";

◆上記実行結果
C:\Documents and Settings\koike\wk>perl split.pl
-----『/ /』を使用------
aaa

x+

bbb

x+

-----『' '』を使用------
aaa
x+
bbb
x+
ccc
Use of uninitialized value in print at split.pl line 22.

Use of uninitialized value in print at split.pl line 23.

実は、『' '』は『/\s+/』と解釈されるみたいです。

これ以外は、『'』や『"』はパターン指定として『/』と同様に使える感じです。

そう、split関数では『'』や『"』は文字列指定でなく、あくまでもパターン指定(正規表現)なのです。

2008-11-18 とまり

今日は月一度の宿直の日です。

某教会に泊まって、宿直グループの人達とお話しをする日なのです。

では、これから行ってきます。

2008-11-17 mマッチ演算子の区切り文字について

mマッチ演算子の区切り文字は、通常『/』を使用します。

しかし、実は、任意の非英数字(空白文字は除く)でも大丈夫なのです。

またしかし、非英数字でもカッコ系は、開き/閉じのペアでないとなりません。

またまたしかし、以下の3つに関しては、注意が必要です。

  1. 『#』を使う場合は、mマッチ演算子との間にスペースを入れないこと(入れるとコメント認識される)。
  2. 『'』を使う場合は、パターン内で変数が展開されなくなる。
  3. 『?』を使う場合は、m??マッチ演算子になる(1回しかマッチしない)
use strict;
use warnings;

my $s = "abcxxxxabcyyyyabczzzz";
if ($s =~ m/abc/) {
   print "マッチした! \n"; 
}
else {
   print "マッチしない!\n"; 
}
if ($s =~ m@abc@) {
   print "マッチした! \n"; 
}
else {
   print "マッチしない!\n"; 
}
if ($s =~ m<abc>) {
   print "マッチした! \n"; 
}
else {
   print "マッチしない!\n"; 
}

my $a = 0;
while($s =~ m/abc/g) {
   $a++;
}
print $a, "\n";

$a = 0;
while($s =~ m?abc?) {
   $a++;
}
print $a, "\n";

2008-11-16 コマンドプロンプトでPerlスクリプトをパイプやリダイレクトする時の留意点

WindowsコマンドプロンプトでPerlスクリプトをパイプやリダイレクトする時は、以下のように必ずPerlスクリプトの前にPerlコマンドを指定しないとなりません。

そうしないと上手く行きません。

D:\data>perl testscript01.pl < a.csv | perl  testscript02.pl > b.csv

ちなみにUNIX系では、その必要はありません。Perlスクリプトだけで大丈夫です。

2008-11-16 都大会第一戦突破!!

今日、武蔵野4中体育館で三鷹7中バスケット部の東京都中学校バスケットボール新人大会第一回戦がありました。

相手は目黒区立東山中で、結構余裕で勝てました。とりあえず都大会第一戦突破です!!


三鷹7中は、先生や生徒達、後輩のミニバスの子供達やその監督とコーチなどなど、沢山の応援を頂き、期待にこたることが出来ました。やった!

これで都内32位以内は確定です。

来週の日曜日に日野1中か中野2中と対戦です。


三鷹7中は、背の小さな子ばかりで飛びぬけて凄い子はいませんが、全員が平均して、なにげにバスケが上手いのです。

背の小さな子のチームが、背の大きな子のチームに勝つと、なにげに快いですね。

2008-11-15 Perlで配列の要素を削る

たとえば、CSVデータとして出力するときに、列数を任意の数に合わせるため、処理中の配列の要素を削りたい場合が、あったりします。

配列の要素を削るには、以下のように最大インデックスを保持する『$#all_tbl』へ、それより小さい値を代入すると、それが最大インデクスになり、結果的に要素を削ることになるのです。

use strict;
use warnings;

my @all_tbl = ("aaa", "bbb", "ccc", "ddd");

print "最大インデクスは、$#all_tblです\n";
print @all_tbl, "\n"; # aaabbbcccdddと表示
$#all_tbl = 2;
print "最大インデクスは、$#all_tblです\n";
print @all_tbl, "\n"; # aaabbbccと表示

2008-11-15 IE最速起動パート2

前回の『IE最速起動』のつづきです。

WindowsXPタスクバーには『クイック起動を表示する(Q)』という機能があり、それをチェックします。

するとタスクバーにクイック起動の表示エリアが出て、そこにデフォルトでIEのショートカットが入っています。


ですので、そのショートカットをクリック一発で、最速のIE起動が出来るようになります。


ちなみに、『クイック起動を表示する(Q)』をチェックするのは、以下の手順です。

2008-11-14 今度は無呼吸症候群!

過敏性腸症候群は、腹巻きとコーヒー断ちで、もうほとんど治った感じですが・・・。

今日、ママから『夜る寝ている時に、息していないよ!』って言われました。


そう今度は、無呼吸症候群になっているみたいなのです。

私は、寝ているので自覚は全くなので、『ホントかよ!』って感じですが・・・なんか心配です。

こんどは、無呼吸症候群を勉強して克服しないと・・・。


原因は、やはりネットのやり過ぎとかによる寝不足かな・・・。

とにかく、早寝して体調を整えますね。

2008-11-14 VBScriptでプロセッサタイプ、OS名、解像度を求める

MS-WordがインストールされているPCなら、以下のVBScriptで『プロセッサタイプ、OS名、解像度』を表示します。

With CreateObject("Word.Application").System
    MsgBox .ProcessorType, vbInformation, "プロセッサタイプ"
    MsgBox .Operatingsystem & " " & .Version, vbInformation, "OS名"
    MsgBox .HorizontalResolution & "x" & .VerticalResolution, vbInformation, "解像度"
End With

2008-11-13 携帯サイトの作り方

携帯サイト作り方のウェブページを見つけたのでリンクしときます。


◆ 携帯サイトとPCサイトはここまで違う!

携帯がどんどん進化してPCに近づいたとしても、携帯サイトの作りがPCサイトと同じになることは無いでしょうね。

なので、上記ページのノウハウは、まだまだ当分は、利用価値が高いものです。


しかし、携帯サイトを作るには各社キャリア毎の仕様の違いを吸収するのは容易ではありませんね。

私には、今のところ携帯サイトを作るような仕事はありませんが・・・携帯サイト作りは大変な仕事ですね。

2008-11-12 PC同士直結のファイルコピー

ネットワークに繋がっていないPC同士でファイルをコピーしたい場合、両PCを擬似的に同じLANになるようにTCP/IPの設定をして、ネットワークケーブル(ストレートケーブル)で繋いでコピーします。

私がやった時は問題なく出来ました。しかし、それは、たまたま、出来たらしいのです。


本来、PC同士で繋ぐときは、クロスケーブルを使うか、または、通信相手がMDIかMDI-Xかを自動判別するAutoMDI/MDI-X対応のNIC(ネットワーク・インターフェイス・カード)を使うかのどちらかということです。

MDIとMDI-Xに関しては以下を参照

では、なぜ、私は問題なく出来たのか・・・。

まず昔は、PC同士やハブ同士の接続は、クロスケーブルでないと繋がらなかった。

しかし、ハブ同士は、カスケードポート(内部でクロス)があればストレートケーブルでも繋がります。


最近は、NIC(PC)もハブもAutoMDI/MDI-X対応になってきているので、とにかく繋げれば、繋ぎ先がいいように判断して繋がる・・・ということみたいです。

時代はいい方向へ変化していますね。

2008-11-11 VBScriptで末日を求める

えーと、昔VB6で組んだ『末日を求める』をVBScriptで組み直してみました。


◆『末日を求める』VBScript版
msgbox GetMatujitu(DateAdd("m", -2, Now))

Function GetMatujitu(MyDate)
     Dim strWkDate, vntMatubi
     strWkDate = Year(MyDate) & "/" & Month(MyDate) & "/31"
     vntMatubi = 30
     '日付として認識できるまで繰り返す
     Do While Not IsDate(strWkDate)
          strWkDate = Year(MyDate) & "/" & Month(MyDate) & "/" & vntMatubi
          '1日前にする
          vntMatubi = vntMatubi - 1
     Loop
     GetMatujitu = strWkDate
End Function

2008-11-10 VBScriptの途中終了

VB系では普通、プログラムの途中終了は、ロジックの中でEndステートメントを実行します。

しかし、VBScriptにはEndステートメントは、ありません。


VBScriptで途中終了するには、WSHの『WScript.Quit』を実行します。

ちなみに、引数を付けて実行すると上位プログラムへその引数値がプロセス終了コードとして渡せます。


たとえば以下は、サンプルr10.vbsで『WScript.Quit 10』のように10をプロセス終了コードとして返した場合のr10.batバッチファイルのサンプルです。


◆ r10.vbsソース
WScript.Quit 10
◆ r10.batソース
@echo
CScript r10.vbs
IF ERRORLEVEL 10 GOTO STS10
echo "ステータス無し"
GOTO END
:STS10
echo "ステータス10"
:END

2008-11-09 免疫力低下か・・・

ここのところ、歯が痛くなったり、目が赤くなったりしている(結膜炎?はやり目?)。

仕事には身が入らず、家庭ではママや子供達が頑張っているのになぜか他人ごと・・・。

体の免疫力が低下しているみたいだな・・・。


とにかく、家族5人が一つの家で暮らしていけること、この歳でプログラマとして働けること。

本当に本当に感謝感謝なんだけど、なぜか、気が入らない・・・。


明日からは、気合いを入れていかないと、体調も仕事も家庭も崩壊してしまうかも・・・とにかく気合いだ!!自分!

2008-11-09 QWERTY(クワティー)とは

最近、携帯端末の記事の「QWERTYキーボード搭載」などで、よく目にするQWERTY(クワティー)とは、なんでしょうか?


実は、パソコンの普通のキーボードと同じ配列のキーボードのことなのです。

キーボードには、アルファベットが3段あって、左上の配列のキーが左から右へQWERTYと並んでいるので、QWERTY(クワティー)と呼ばれています。


そもそも、QWERTYキーボードの配列は、上段だけで『TYPE WRITER』と打てて、セールスマンが『TYPE WRITER』と打ちやすくするためとの説があります。

ちなみに、ご存知のようにパソコンのキーボードは、『TYPE WRITER』が元ですね。

2008-11-08 近況

えーと、三男(マサ)の顎の打撲は、整形外科でレントゲンを撮って見ましたが、骨には異常がなく、今は元気に都大会に向けて毎日練習をしております。

考えてみれば、小学校の時にミニバスケットで東京2位(関東3位)だったファルコンの子達が、そのまま三鷹7中に行ったので都大会出場は、用意された席だったのかもしれません。


次男(ヤス)は、大学のAO受験になかなかパスできず、もんもんした日々を送っております。

いや、本人はそれほどでもなく、ママの方が、もんもんとしている感じです。


長男(ヒロ)は、相変わらず、めちゃくちゃな規則で生活をしております。

とにかく、同じ家にいながら、なかなか会う機会がなく、会えば、『ちゃんと寝ろよ』と言うだけの関係になっております。でも、仲は良いです。


ママは、子供達の心配事で、あまりここのところは、調子が良くない感じです。

しかし、長男のライブや三男の都大会出場の頑張りが、元気の源になっているようです。


私は、仕事にイマイチ気が入らず、ちょっと無気力な感じです。

今の仕事で働けるのは、本当に感謝なのですが、なぜか気力がでない・・・。

こんな状態だと世界同時不況の波に流されてしまいそうです。


いやーなんとか、気力を出して、リストラされないようにしないと・・・頑張れ自分!!

2008-11-08 スクリーンキーボードとソフトキーボード

キーボードが壊れたとか、なにかの事情でキーボードが使えない場合、ソフト的なキーボードがマウスだけで使えます。

ソフト的なキーボードには、以下の2つがあります。


◆スクリーンキーボードの起動

すると、スクリーンキーボードが起動されます。


◆ソフトキーボードの起動

すると、ソフトキーボードが起動されます。

2008-11-07 システム情報を知る for WindowsXP

Windowsのシステム情報を知るには、以下の2つのコマンドが便利です。

コマンドは、コマンドプロンプトで実行します。

コマンドプロンプトは、スタートメニューのプログラムの中にあります。


◆systeminfoコマンド

システムのほとんどの情報はもちろん、パッチ情報(ホットフィックス)まで知ることが出来ます。

◆ipconfigコマンド

IPアドレスはもちろん、allオプションを使うとMacアドレスまで知ることが出来ます。


ちなみに、リンクしたページ、コマンドプロンプト画面をCSSで上手にデザインしていますね。すばらしい!

2008-11-06 Perlでの『|=』と『||=』の違い

『|=』は、ビット演算子と代入演算子の組み合わせで、ビット演算子でビット単位の論理和を行い、代入演算子で代入します。

『||=』は、論理和演算子と代入演算子の組み合わせで、論理和演算子で左オペランドが偽のときだけ、右オペランドを評価(代入演算子で代入)し、左オペランドが1回でも真になると右オペランドを評価しない。

use strict;
use warnings;
my $str_data;
my $scalar;

   $str_data = "";  # 空文字列は偽
   $scalar = "A";
   $str_data ||= $scalar;
   $scalar = "B";
   $str_data ||= $scalar;
   print $str_data, "\n"; # Aを表示

   $str_data = "";
   $scalar = "A";
   $str_data |= $scalar;
   $scalar = "B";
   $str_data |= $scalar;
   print $str_data, "\n"; # Cを表示
# (Aは0x41の01000001, Bは0x42の01000010なので、ORすると01000011となりCとなる)

ビット演算子は、滅多に使う機会がないと思いますが、論理和演算子は使える場面が結構あります。

ですので、論理和演算子の特性を覚えておくとなにかと吉です。

2008-11-05 最速IE起動

普通のエクスプローラの起動は、「Windowsキー」+「eキー」で、たぶん最速起動だと思います。

しかし、IEは、エクスプローラのようなショートカットがWindowsで用意されていません。


なので、IEでの最速起動を考えた時に、2つ思いつきました。

しかし、2つとも前もっての設定が必要なのですが・・・。


1つ目は、まず、エクスプローラのツールバーにホームアイコンを追加します。

そして、「Windowsキー」+「eキー」でエクスプローラを起動後、ホームアイコンをクリックしてのIE起動。


ちなみに、ツールバーにホームアイコンを追加する方法は以下の通り。

  1. ツールバー(標準ボタン)で右クリックして、ユーザ設定を選択する。
  2. ツールバーの変更ダイアログが出たら、追加ボタンでホームアイコンを左から右に移動。

2つ目は、デスクトップにIEのショートカットを作成し、プロパティでショートカットキーを設定(たとえば、Ctrl+Alt+Iとか)し、そのキーでIE起動。

(ショートカットアイコンをクリックしてもよいが、デスクトップにアイコンが沢山あると探さないとならない)


ちなみに、IEのショートカット作成方法は以下の通り。

  1. スタートメニュー
  2. すべてのプログラム(P)をクリック
  3. Internet Explorerを探す
  4. Internet Explorerの上で右クリック
  5. 送る(N)を選択
  6. デスクトップ(ショートカット作成)を選択

2008-11-04 啓仁ランキング

小池啓仁のオリジナル(作詞・作曲)の再生回数ランキングです。

順位曲名再生回数追加日場所
1桜咲く季節に626 2008年08月18日原宿ペニーレイン
2HAPPY ENDLESS288 2008年08月22日 原宿ペニーレイン
3明日の風が吹く!!113 2008年09月27日大沢八幡
4約束92 2008年10月18日吉祥寺路上
5メッセージ41 2008年10月28日原宿ペニーレイン
6つながり40 2008年10月17日 吉祥寺路上
7メッセージ(学園祭版)372008年11月01日国際基督教大学
830 2008年10月29日原宿ペニーレイン
9つながり(ライブ版)28 2008年10月30日原宿ペニーレイン
10扉(学園祭版)24 2008年11月01日国際基督教大学

一ヶ月後にまた集計してみます。楽しみです。

2008-11-04 リサーチ機能とは

リサーチ機能とは、Webページ上やワードページ上の単語の説明(語彙や翻訳)をWebページとは別のフレームに表示します。

Webページで分からない単語など、別のフレームにその単語の意味(国語&英語で)が検索できるので、結構使えますよ!


◆ リサーチ for IE

Office2003が入っているPCのIEでは、リサーチ機能(ツールバーの標準ボタンにある)が使えます。

具体的な操作は、ツールバーにあるリサーチボタンをクリックし、Webページ上の単語をAltキーを押しながらクリックすると検索(リサーチ)が開始します。

◆ リサーチ for Word

リサーチ機能は、WordやExcelでも使用できます。

Wordでは、「Altキーを押しながら単語をクリック」以外に「リバース表示させた単語に対してAlt+Shift+F7」でも検索(リサーチ)が開始します。

2008-11-03 中学バスケット新人戦決勝リーグブロック準優勝!!

今日、中学バスケットの新人戦決勝リーグがありました。

三男の三鷹7中は、ブロック9(武蔵野・三鷹・府中・調布・狛江)に属し、ブロック中2位を獲得しました!!

三鷹大会優勝から負けしらずでしたが、府中6中に壮絶な負けを喫したそうです。

えーと、私は、今日は別件で、試合を見に行けなかったのです。


ママの話だと府中6中は、身長の高い子が多く、高校生と試合をしていたみたいだと言っていました。

試合中は、体格差から、みんな相手から吹っ飛ばされていたとのことで、それでも負けずに歯向かって、壮絶な試合だったとのことでした。


実際、三男は、両顎を打撲して食事ができない状態でした。

みんな、名誉の負傷をしていたとのことでした。

いや、バスケットって格闘技なのですね。


ということで、三男がまたまた頑張った今日一日でした。

両顎の打撲、明日病院に連れて行かないダメかも、もうチョット様子を見てみます。

2008-11-03 ワードで表に列を追加するには

ワードで表に列を追加するには、たとえば、2列目と3列目の間に列を挿入する場合、2列目にカーソルを置いて以下のようにします。

  1. 罫線メニュー
  2. 挿入
  3. 列(右)

列を追加するのに、ワードでは表関係のメニューを探しても見つからず、罫線のメニューにあるのです。

ちょっと、はまったのでメモしときます。

ちなみに、上記はワード2000と2003で確認しています。

2008-11-02 マウス選択でのCtrlキーとShiftキー

普通のエクスプローラで複数のファイルを選択する時は、マウスでのファイルクリック選択とCtrlキーまたは、Shiftキーを組み合わせます。

まぁこれは、PC使いの人には常識かもしれません。


しかし、実は、ワードやエクセルでも同様に使えるのです。

そう、WINDOWSでの統一的な操作になっているのです。

2008-11-02 正弦定理で解く

前回、ピタゴラスの定理を使って解きましたが、今回は正弦定理を使って解いてみます。


◆問題

『三角形でA角が45度、B角が75度、C角が60度で、BCの長さが√6のとき、ACの長さを求めよ』

f:id:chaichanPaPa:20081012220524j:image


◆ツール
正弦定理:

三角形の各辺BC ,AC ,AB と各角A ,B ,C の間には正弦定理という以下の関係があります。

BC/sinA = AC/sinB = AB/sinC

加法定理:

sin(α+β) = (sinα*cosβ)+(cosα*sinβ)

sin cosの各値:

sin30°= 1/2

sin45°= 1/√2

cos30°= √3/2

cos45°= 1/√2


◆解答
BC/sinA = AC/sinB 

√6 / sin45°= AC / sin75°

AC = (√6 * sin75°) / sin45°

AC = (√6 * sin(30°+ 45°)) / sin45°

AC = (√6 * ((sin30°* cos45°) + (cos30°* sin45°)) / sin45°

AC = (√6 * (1/2 * 1/√2 + √3/2 * 1/√2 ) / (1/√2)

AC = (√6 * ((1+ √3)/2√2)) / (1/√2)

AC = (√6 * (1 + √3)) / 2

AC = (√6 + √18) / 2

AC = (√6 + 3√2) / 2 
◆答え

AC = (√6 + 3√2) / 2

ピタゴラスの定理で解いた答えと一致した(ホッ)。

国際基督教大学の学園祭でのライブ

今日、長男:小池啓仁の国際基督教大学の学園祭でのライブを見てきました。

この間の原宿ペニーレインでの演奏より上手く出来た感じです。

しかし、本人は、寝不足で魂の入り方が、イマイチだったと言っていました。

でも、メロディーと詩は、結構いいですよ!

どうぞ、聴いてやってください。


メッセージ / 小池啓仁


扉 / 小池啓仁

『歌うたいのバラッド』と『やさしさに包まれたなら』も動画を撮りましたが、いろいろあるのでアップできなくて残念です。

2008-11-01 ワード2003で段落番号を振り直す時、メニューがグレー表示だったら

ワードで文書を作成する時、一覧に段落番号を付けることが結構あります。

段落番号は、ワードが勝手に採番するので、こちらで振り直したい場合が結構あります。


振り直す場合は、一覧をリバース選択して、右クリックメニューで「番号を振り直す」を指定します。

しかし、その時それが指定できないグレー表示の時があるのです。


そのような時は、振り直したい先頭行だけリバース選択すると「番号を振り直す」が指定できるようになります。

すると他の下の行も一緒に振り直せるのです。