ChaichanPapa-World !

燈明日記(2008/04

◆ インデックス

◆ 2008年4月

2008-04-30 有難嬉悲しメモ(2008/04/30)


もしよろしかったら「有難嬉悲しメモリング」参加、よろしくお願いいたします。

2008-04-29 有難嬉悲しメモ(2008/04/29)

法華経ブログ:http://hokekyou-blog.blogspot.com/


また、もしよろしかったら「有難嬉悲しメモリング」参加、よろしくお願いいたします。

2008-04-29 WINDOWSでのPerl漢字処理(文字化けやエラーマッチについて)

ついにこの悩ましいPerlでの聖域(漢字処理)に手を少し出します。

WINDOWSでのPerl漢字処理のパターンは、とりあえず、私の中では以下があります。

  1. ソースコードは、shiftjisで書き、文字化けやエラーマッチは随時処理する。
  2. ソースコードは、EUC-JPで書き、滅多に起きないエラーマッチは随時処理する。
  3. ソースコードは、shiftjisで書き、encodingプラグマでshiftjisを指定する。
  4. ソースコードは、utf8で書き、utf8プラグマを指定する。

1は、WINDOWSとしても、Perlとしても自然なんだけど、shiftjis自身の性質により、いろいろとご批判を頂くパターンです。

2は、UNIXでPerlだったら、自然なんだけど、WINODWSだとイマイチで、また、滅多に起きないエラーマッチ問題があります。

3は、JPerlにかわるもで、お手軽だけど副作用が大きいとのことです。

4は、Perlの方向性としては、一番いいらしいです。


1でやりたい人は、http://homepage1.nifty.com/nomenclator/perl/shiftjis.htm が参考になります。

2でやりたい人は、http://www.din.or.jp/~ohzaki/perl.htm が参考になります。

3と4でやりたい人は、http://www.rwds.net/kuroita/program/Perl_unicode.html が参考になります。


3と4の場合は、UTF8フラグという概念と内部コードと外部コードの区別が絡み合って、いろいろと悩むことになるのです(たぶん)。

なので実は、私は1でやっています。そんなに漢字を使わなければ、とりあえず今のところ大丈夫なのですが・・・。

2008-04-29 最悪のスタート(>_<)

今日からゴールデンウィークの始まり!それなのに・・・体調最悪(>_<)

こんなに天気もいいのに・・・身体が痛くて動けない(*_*)

明日は元気になれるかな・・・やりたい事がいっぱいあるのに!

家の模様替えや三男の誕生日会、ちゃいちゃんのお墓参りとカラオケにもいきたい!

ちょっと欲張りかな(^○^)でもパパが休みのうちに絶対にやるぞ〜(^0_0^)

とりあえず今日は休養日にしま〜す

なんか日記書いてたら少し元気が出てきたぞ〜(^o^)丿

パパのマッサージが効いてきたかも§^。^§  

2008-04-28 有難嬉悲しメモ(2008/04/28)

もしよろしかったら「有難嬉悲しメモリング」参加、よろしくお願いいたします。

2008-04-28 ゴミ箱に入れないで削除する!

ゴミ箱に入れないでファイルを削除したい場合があります。

以下はその方法です。

また、以下の方法でもOKです。

ゴミ箱に入れないので、当然、元には戻せません。自己責任でお願いします。

2008-04-27 有難嬉悲しメモ(2008/04/27)

もう一度、読み返すしかないかな。そのクダリを探すために・・・。


もしよろしかったら「有難嬉悲しメモリング」参加、よろしくお願いいたします。

2008-04-27 『教授の恋』 飯田史彦

飯田先生の本を久しぶりに読んでみました。

この本は、小説になっていて、実は、小説を読んだのは何年ぶりだろ(しかし、数学ガールも小説だったかも)。


主人公の若手教授が、夢ビジョンで見た『赤い糸の人(ツインソウル)』を求めて、北海道から四国・九州と日本列島横断をはちゃめちゃに、そしてテンポの速いストーリー展開・・・。

一気に読み終えました。


実は、まだ感想を書くべきものが頭に浮かんでこないのですが、とにかく、ツインソウルということで、ママと仲良しになれたので、よかったよかった。

まだ独身の人は、この本を読んで、是非、『赤い糸の人』を見つけてみてください。

教授の恋

教授の恋

2008-04-27 文字列内から正規表現がマッチした文字列を抽出して配列に入れる

文字列内を任意の正規表現でマッチさせ、そのマッチした文字列を配列に入れることができます。


サンプルソース(str2array.pl)
use strict;
use warnings;

$_ = '123abc567x8y9z0';
my @wk1 = /[0-9]+/g;

print '対象文字列 ', $_, "\n";
print '抽出正規表現 ', '[0-9]+', , "\n";
print $wk1[0], "\n";
print $wk1[1], "\n";
print $wk1[2], "\n";
print $wk1[3], "\n";
print $wk1[4], "\n";

my $wk = $_;
my @wka = $wk =~ /[a-z]+/g;

print '抽出正規表現 ', '[a-z]+', , "\n";
print $wka[0], "\n";
print $wka[1], "\n";
print $wka[2], "\n";
print $wka[3], "\n";
実行結果
C:\Documents and Settings\test>str2array.pl
対象文字列 123abc567x8y9z0
抽出正規表現 [0-9]+
123
567
8
9
0
抽出正規表現 [a-z]+
abc
x
y
z

2008-04-26 有難嬉悲しメモ(2008/04/26)

はてなリングが、サービス終了延期になったことだし、「有難嬉悲しメモリング」よろしくお願いいたします。

2008-04-26 はじめまして

はじめまして、ちゃいちゃんママです(^○^)

お陰さまでだいぶ体の調子が良くなってきました。

ちゃいちゃんが天使になって八年が経ち、やっと前向きに生きて行こうと思えるようになりました。

それを待っていたかのように、我が家でいろいろな事がおきています!

でも、そのお陰さまで毎日頑張れるようになりました!有り難いです・・・ちょっと無理してるかな(^○^)

次から次へと悩み事は尽きないのかな・・・(^○^)

2008-04-26 ママ、ブログデビュー

ママが、なぜか心境の変化で、ブログを書きたいと始めました。

ふだん、キーボードを触ったことのない人なので、一行10分以上もかかり、やっと書けました。


カーソルの移動、マウスのカーソルとキーのカーソルの違い、ローマ字入力、小さい字(っゅ等)入力、顔文字入力

コピー&ペースト、アンドュウ・・・。


普段、我々は、何気なく入力をしていますが、初心者には大変なことなのだと、あらためて痛感しました。

とりあえず、続くかどうかわかりませんが、「ママのつぶやき」をよろしくお願いいたします。

2008-04-26 不要なサービスを削除するには

ここでいうサービスとは、WINDOWSサービスのことです。

普通、サービスの削除は、コントロールパネルの『プログラムの追加と削除』を行いますが、そこに無い場合がありますね。

そのような時は、以下の scコマンドを試してみてください。

C:\>sc.exe delete 『不要Service』
[SC] DeleteService SUCCESS

参考:http://blog.livedoor.jp/akf0/archives/50911412.html

2008-04-25 復活

ママとも仲直り出来たし、また、ぼちぼちと、ネットを再開します。

2008-04-25 有難嬉悲しメモ(2008/04/25)

朝食は、ご飯を食べると調子よい感じです。

しかし、今年はヒノキ花粉にやられた・・・。

2008-04-25 スタートアップにはショートカットを!

以下のフォルダへプログラムのショートカットを入れておくと、パソコン(WINDOWS系)立ち上げ時に自動起動されます。

C:\Documents and Settings\『ユーザ名』\スタート メニュー\プログラム\スタートアップ

あくまでもショートカットで、プログラムまたはバッチファイルそのものを入れるとNGのようです(はまった)。

2008-04-19 おやすみ

わけあって、また、ネットをしばらく休みます。

とりあえず、手持ちのネタを全部放出します。

ネットは魔物・・・。あなたも家庭不和にならないようにほどほどに・・・。

2008-04-19 配列を操作する関数たち

use strict;
use warnings;
my @array = ('A01', 'B02', 'C03', 'D04');
print @array, "\n";
pop(@array);
print @array, "\n";
push(@array, 'D04');
print @array, "\n";
shift(@array);
print @array, "\n";
unshift(@array, 'A01');
print @array, "\n";
C:\test>tstarray.pl
A01B02C03D04
A01B02C03
A01B02C03D04
B02C03D04
A01B02C03D04

2008-04-19 ENDサブルーチン

ENDサブルーチンは、BEGINサブルーチンがプログラム開始時(コンパイル時)に実行されの対し、プログラム終了時に実行される。

END サブルーチンは、スクリプト終了前に自動的に呼び出されます。このことから、END サブルーチンは終了処理に向いています。END サブルーチンは、 die で終了した場合でも呼び出されますが、異常終了したときなどは実行されないので、注意してください。

http://www.rfs.jp/sb/perl/04/01.html#ENDサブルーチン

基本的には、プログラムが終了するとファイルハンドルやオブジェクトインスタンスは開放されるので、ENDルーチンあまり必要がないと思うんだけど、とりあえず。

2008-04-19 IEのタイトル表示の振る舞い

ブラウザIEで、WEBページが表示された時に、タイトルバーへ表示されるタイトルは、以下のようになっています。

2008-04-19 @cc_on ってなに?

「/*@cc_on」と「@*/」間にJScript(IEのJavaScript)を記述するとIEブラウザだけが有効になるようです。

2008-04-19 一行で IE の JavaScript を高速化する方法

半年遅れだけど、知りました。

/*@cc_on _d=document;eval('var document=_d')@*/

この一行を読み込むことによって IE での document へのアクセスが 5 倍速くなります。

http://d.hatena.ne.jp/amachang/20071010/1192012056

しかし、高速化するほどJavaScriptのコードを書いたことがないです。

2008-04-19 JavaScriptのlint

JavaScriptはエラーがあっても無応答になるケースが結構あります。

そんなときは、迷わずlintです。

上記ページをIEのファイルメニューから「名前を付けて保存」すれば、オフラインでも使用できます。

尚、Mozilla Firefoxならもっとよいツールがあるようです。

2008-04-19 表での行とは?

表での行とは、横の列のこと。「ロウ」rowという。

しかし、縦書きの文章だと縦の列を行といい、まぎらわしい。

ちなみに、表での縦の列は「カラム」columnという。


とにかく、行といえばrowで、列といえばcolumnである。

行の旁(つくり)は横2本線なので横の並び、列の旁は縦2本線なのでの縦の並びと覚える。

2008-04-19 EXCELでセル内にタブを入力するには

Excelのセル内にどうしてもタブを入力したい時の方法。

[入力]

=”abc”&CHAR(9)&”xyz”

[Excel上の表示]

“abcxyz”

[それをTextに貼り付けたときの表示]

“abc xyz”

http://note.area93.net/it/?p=102

ちなにみ、ダブルクォーテーションは半角でも全角でのOKですね。

2008-04-19 Windows(NTFS)でのファイルプロパティの「作成日時・更新日時・アクセス日時」について

この3つの日時から、いつ作成したか、最後に更新修正したか、最後にファイルを開いたかがわかる。

ちなみに、 更新日時は、コピー&ペーストを繰り返してもコピー元でファイルを最後に書換えた日時となる。

つまり、更新日時は、作成日時より過去のことが普通にあります。

2008-04-19 SQL Server 2005で大量データがInsertできない

PerlでのOLEモジュールのADODBオブジェクトからDBへアクセスする時に、SQL Server 2000では、問題なく大量データのInsertが出来たのに、そのデータをSQL Server 2005では、Insertが出来ないのです。

これは、DBのオープン/クローズの仕方を変更すると解決する可能性が高いです。


SQL Server 2000では、複数のSQL発行に対して、複数分DBオープン/クローズをしてもTCPセッションが1です。

しかし、SQL Server 2005では、複数分のTCPセッションが張られるようなのです。


なので、約2000弱のTCPセッションが張られるとエラー メッセージ『SQL Server が存在しないか、アクセスが拒否されました』になるのです。


結論:SQL Server 2005で大量データをInsertする時は、DBオープンは一回のみとする!

2008-04-19 つもり違い10ヶ条

高尾山薬王院に「つもり違い10ヶ条」と言うものがあるという。

たしかに、そう、思う。

2008-04-17 Silverlightってなに?

MicrosoftからSilverlightが出て、もう一年が経つらしい。

Windows Vistaで使われているWindows用のプレゼンテーション・サブシステム、「WPF(Windows Presentation Foundation)」のサブセットとして開発された。

http://www.atmarkit.co.jp/fwcr/special/silverlight/silverlight_1.html

要は、Microsoft版フラッシュのようなものかな・・・。

ここにもAjaxの陰が・・・、時代はAjaxかも。

2008-04-16 SMTPオブジェクトへのメールアドレス設定の留意点

メール送信する時、SMTPオブジェクトのtoメソッドに複数の送信アドレスを配列で渡します。

その時、配列の中に不正アドレスがあっても、通常、正しいアドレスには送信がされます。

しかし、以下の3種類のアドレスのいずれかがあると、全滅するのです(正しいアドレスにも送信されない)。

以下のように間違って「@, xxx@, @yyy.co.jp」を指定してしまう場合、送信が全滅する。

my $mailto = 'aaa@bbb.co.jp, @, xxx@, @yyy.co.jp'; # 複数のアドレスを、文字列内リストで表現
my @mailto = split(',', $mailto);                  # 複数のアドレスを、配列変数リストで表現
#メールヘッダー設定
my $header = << "MAILHEADER";
To: $mailto
Subject: $subject
:
:
#メール送信
my $smtp = Net::SMTP->new('mailhost');
if ( !$smtp ) {
     print "メールサーバーにアクセスできません!";
     exit;
}
$smtp->to(@mailto);

つまり、メールアドレスをDBや画面入力から持ってくるとき、アドレスにユーザ名やドメイン名がちゃんと入っているかのチェックが必要ということです。(しかし、メールアドレスの正規表現は怒涛です。)


尚、SMTPモジュールを使ったメール送信サンプルは以下に

2008-04-15 おんなじことのくりかえし

最近、朝起きて、会社へ行く仕度して、会社で仕事して、家に帰ってきて、ブログを更新して、就寝。

おんなじことのくりかえし。まぁ、ある意味、すごく有り難いことなんだろうけど、なぜか虚しい気持ちに襲われる。


とにかく、三男(中2)が大学に入るまでは、頑張らんとならん・・・。

2008-04-15 The Crusaders - Street Life (1979)

大学の時、モダンジャズクラブでへただけどベースやっていたよ。その時よく聴いた曲です。

D

2008-04-15 魔界の仮面弁士さんのブログ

VB系のBBSでは超有名な魔界の仮面弁士さんのブログをたまたま見つけたのでリンクしときます。

いつもありがとうございます。

2008-04-15 WINDOWS-XP(NTFS)系でのログインユーザは、デフォルトではUsersグループになる?

たとえば、Usersグループ以外の Aグループの Bユーザが、Cフォルダ内のファイルをコピー&ペーストしたとします。

Cフォルダには、Bユーザと Aグループの ACL はありません。

すると、コピー&ペーストする以前に、Cフォルダへのアクセスができません。


つぎに、CフォルダのACLへ Usersグループを書き込み許可で追加します。

すると、コピー&ペーストができるのです。


つまり、BユーザはUsersグループでないのに、Cフォルダでコピー&ペーストができるのです。

ということは、ログインユーザは、デフォルトでは、Usersグループになるっていると思われるのです。

あっていますでしょうか?


という質問を某フォーラムへ投稿しましたが、なかなか回答がつきません・・・。


ちなみに、ACL とは、アクセス制御リストで以下参照

2008-04-14 PLCでケーブルだらけのLANにさようなら

PLCは、「Power Line Communications」の頭文字で、電源コンセントでインターネットができるヤツです。

スピードは、理論上30Mbps以上が出るそうです。


PLCでケーブルだらけのLANにさようなら

光が来る前に来て欲しかったなぁ。


PLCは「アマチュア無線家が危惧(きぐ)する漏えい電波」等の問題があるとのことです。

2008-04-14 アクセス権の5つの基本原則

WINDOWS-XP系で使用しているファイルシステムNTFSでの「アクセス権の5つの基本原則」です。

  1. 「許可」されていないかぎり、ユーザーはその権利を使用することができない
  2. グループに与えられた権利は、グループに所属するユーザーにも適用される
  3. 自身あるいは所属するグループの“すべて”の「許可」の権利を使用することができる
  4. あるユーザーに対して「許可」と「拒否」の両方の権利が設定されている場合は、「拒否」が優先される
  5. アクセス権はAdministrator(管理者)に対しても設定どおりに評価される
http://www.windows-world.jp/special/-/25881-2.html

2から5までは、納得なんだけど、1は、違うような気がする。

ログインユーザは、デフォルトでUsersグループの権限が付与されている気がするのですが・・・。

つまり、「許可」されてなくても、Usersグループがあって、Usersグループに「許可」があれば、使用できるのです(実際)。

2008-04-13 贅沢な昼寝

昨晩は教会の宿直だったので、5時に起床して、いろいろとお役をこなし、7時半に家に帰って来ました。

そして、今日のメイン記事「openエラー取得について」をまとめたり、「Perlノート」の3月分をホームページに反映したりしました。

昼食後、宿直で寝不足のこともあり、17時頃まで贅沢な昼寝をさせていただきました。神さま仏さまへ感謝。忘れてたママへも感謝!

2008-04-13 固定電話はもちろん、携帯電話もなくなる?

IP電話はネットワーク内なら無料です。会社も固定電話からIP電話に置き換えられました。

実は、IP電話は携帯電話も駆逐する潜在能力があるのです。


通話網を脅かすSkypeの仕組み、分かりやすく解剖!

つまり、携帯IP電話が実用化されれば、世界中どこにかけても、通話料がタダの時代がすぐそこまできているのです。たぶん。

2008-04-13 スパムブログ

スパムメール、スパムコメント、スパムトラックバックは、知っていましたが、スパムブログがあるのは、知りませんでした。

そういえば、私の文章が変な形で引用しているブログがあったり、今思うとこれが、スパムブログだったのかもしれません。


ブログの4割はスパム」を発表したニフティに聞くスパムブログの実態

2008-04-13 openエラー取得について

open は、ファイルが開けなかった場合に未定義値(偽)を返すので、それを否定(!)し、真にしてエラー取得を行います。


オーソドックス
if(!open FH, ">ABC.txt") {
   die "open error $!";
}

上記を下記のように記述することもできます。

「or」と「||」は、open 関数を評価してファイルを開く(真)ことができれば、die関数を評価せずに次の行に処理を移します。

「or」と「||」の違いは、評価の優先順位が「or」は「||」に比べて低いのです。


スマート
open(FH, ">ABC.txt") or die "open error $!";
または
open FH, ">ABC.txt"  or die "open error $!";
または
open(FH, ">ABC.txt") || die "open error $!";

しかし、上記を下記にするとエラーが取得できないのです。


バグ
open FH, ">ABC.txt"  || die "open error $!";

たぶん、「||」の優先順の関係だと思うんですが(よくわかりません)・・・結構、はまります。


kitsさんから教えていただきました。いつもありがとうございます。

open FH, (”>ABC.txt” || die ”open error $!”);

( )内は、”>ABC.txt” が真なので || 以降は評価されず、”>ABC.txt”という値が返ります。
そのため結果的に

open FH, ”>ABC.txt”;

と同じことになります。

2008-04-12 整体とその他いろいろ

今日は、朝に「JavaScriptで文字列のバイト数を求める」をまとめました。

で、

if (escape(str.charAt(i)).length < 4) {

の『charAt(i)』の横の括弧が一つ足りないとファンクション呼び出しが無視される。

しかも、オブジェクトがどうのこうのってメッセージで、予定よりかなり時間を費やしてしまいました。

その代わり、JavaScriptのlintができるサイトが何件かあるのを知りました。

これからは、悩んでいないですぐlintですね。


11時から整体に行きました。

なんだかんだ一年ぶりで、いろいろ子供のことでアドバイスをいただきながら、つぼを押してもらいました。

プロの指圧は、本当に快い・・・。


帰ってきてから、昼食にお蕎麦を頂き、3月分のネタを各ページに反映しました。

あと、Perlノートだけ残っています。これは、明日反映させる予定です。


そして、今日は約月一度の宿直の日(ボランティア)です。

今から、教会へお泊まり行って来ます。

では、また明日、お会いしましょう!

2008-04-12 JavaScriptで文字列のバイト数を求める

countByteは、文字列のバイト数を求める関数です。

<html>
<body>
<script type="text/javascript">
<!--
function countByte(str) {
    var count = 0;
    for(var i = 0; i < str.length; i++) {
       if (escape(str.charAt(i)).length < 4) {
          count++;
       }
       else {
          count += 2;
       }
    }
    return count;
}
// -->
</script>
<form name="FM">
<p>
<input type="text" name="IT" size="30">
<input type="text" name="CountByte" size="10" readonly="readonly">
</p>
<p>
<input type="button" value="文字バイト数取得" onclick="document.FM.CountByte.value=countByte(document.FM.IT.value)">
</p>
</form>
</body>
</html>

charAtで文字列中の1文字を取り出し、escapeでjavascriptでのURLエンコードを行う。

するとアスキー文字系は1バイト、&!#等は3バイト、漢字は4バイト以上になる。

2008-04-11 裏ワザ?バグ?Googleで検索した画像が踊りだす技

裏ワザ?バグ?Googleで検索した画像が踊りだす技
javascript:R=0; x1=.1; y1=.05; x2=.25; y2=.24; x3=1.6; y3=.24; x4=300; y4=200; x5=300; y5=200; DI= document.images; DIL=DI.length; function A(){for(i=0; i<DIL; i++){DIS=DI[ i ].style; DIS.position='absolute'; DIS.left=Math.sin(R*x1+i*x2+x3)*x4+x5; DIS.top=Math.cos(R*y1+i*y2+y3)*y4+y5}R++}setInterval('A()',5 ); void(0)  

上記をブラウザのアドレスバーへコピー&ペーストをしてみてください。

面白いことがおこります(画像が踊りだす)。

ちなみに、Google検索画面以外でも大丈夫です。

2008-04-11 米国で著名ブロガー死亡相次ぐ 日本でも「ドクターストップ」発生

米国で著名ブロガー死亡相次ぐ 日本でも「ドクターストップ」発生

生活もかかっていたのだろうけど、ある意味、ネット中毒死ですね。

私も軽いネット中毒なので、気を付けます(いや、結構重いかも)。

2008-04-11 JavaScriptで謎のエラー

謎明かしから言うと、script要素のtype属性で javascript のスペルを間違えると onclick でエラーとなるのです。

本人は、JavaScriptのロジックばかり追いかけて、それに気がつかないのです。

たとえば、
<script type="text/javascript">
を
<script type="text/javascrript">
とか。

2008-04-10 努力を続けていないとチャンスはつかめない!?

人間には、一生のうちに何度かチャンスがめぐって来ると言われています。

しかし、そのチャンスは、普段から努力して実力を蓄えていないと通り過ぎてしまうそうです。

つまり、実力を蓄えていないとチャンスが来たことすら気がつかないのです。


人間の脳は、「出来る」と思うと、それを実現するために脳をフル回転させるそうです。

反対に「出来ない」と思うと、脳をフル回転させて、出来ない理由を考えはじめるそうです。


とにかく、自分の夢を「出来る」と思って、脳をフル回転させ努力すれば、きっとチャンスをつかめるのです。

努力を続けいれば、才能などなくても、きっと夢を実現することができるのです。


がんばれ! だれにともなく・・・

2008-04-10 エクスプローラでデフォルト表示項目の列順を変えるには

デフォルトでは、「名前」「サイズ」「種類」「更新日時」の順番になっていると思っています。

私は、「更新日時」を良く使うので「名前」「更新日時」「サイズ」「種類」の順にしています。

変更手順は以下の通り。

  1. エクスプローラの任意の項目列で右クリックメニューで「その他」を選択する。
  2. 「詳細表示の設定」ダイアログ表示する。
  3. チェック項目を選択して、上ボタン・下ボタンで列順を変更する。
  4. 変更後、「メニュー」→「ツール」→「ファイルオプション」→「表示タブ」→「すべてのフォルダに適用」

2008-04-09 shiftの使い道

shiftは、引数の配列の要素を全体的にシフトして、先頭の要素を取り除き、それをリターン値とします。


サンプル(shift.pl)
use strict;
use warnings;
my @array =('A01', 'B02', 'C03');
my $top = shift @array;
print $top, "\n";
実行結果
C:\Documents and Settings\wk>shift.pl
A01

しかし、shiftの引数の配列を指定しないケースを見かけます。

これは、sub内では、「@_」で、sub外では、「@ARGV」がデフォルトの配列になります。

ちなみに、「@_」は、サブルーチンの引数の配列で、「@ARGV」は、コマンドラインの引数の配列です。

2008-04-08 お花がたくさん

ちゃいちゃんデー(4/6)に沢山お花を頂き、仏壇(ご宝前)は、お花で埋め尽くされました。

お花がいっぱいのご宝前は、別世界のようで、ご供養をしていると異次元に居るようです。

そういえば、今日は、お釈迦さまの誕生日です。仏壇がお花でいっぱいで、よかった。


お釈迦さまの誕生のエピソードは以下に

また、そういえば、ヤフーにて「釈尊」で検索すると上記ページがトップに来る。

グーグルでも6位!


いつのまにか、「釈尊」でトップをとった!やった!

2008-04-08 SQL Sever Management Studio(2005)での2大欠点

最近、使い始めているのですが、SQL Sever Management Studio(2005)でいろいろと不満があるのです。

まず、2000のEnterprise Managerに比べ、めちゃくちゃ重いです。

まぁ、これは我慢できるとして、以下の2つが2大欠点だと思うのです。

  1. テーブルの「最新の情報に更新」が利かない。
  2. CSVでエクスポートしたデータをインポートできない。

1は、一度タブを終わらせてからでないと最新の情報にならないのです。

2は、NULLデータがある時にインポートができないのです。


1は、たぶんバクだと思うけど、2は、仕様らしい。

少なくとも、Enterprise Managerでは、このようなことはなかったです。

2008-04-07 テーブルが存在したら削除する

Microsoft SQL Serverにてテーブルが存在したら削除するSQLです。

IF OBJECT_ID(N'[dbo].[xxxTBL]', N'U') IS NOT NULL
drop table [dbo].[xxxTBL]
GO
OBJECT_IDにつて

スキーマ スコープ オブジェクトのデータベース オブジェクト ID 番号を返します。

OBJECT_ID ( '[ database_name . [ schema_name ] . | schema_name . ] object_name' [ ,'object_type' ] )

引数

' object_name '

使用するオブジェクトを指定します。object_name のデータ型は varchar または nvarchar です。object_name のデータ型が varchar の場合、暗黙的に nvarchar に変換されます。データベース名とスキーマ名の指定は省略可能です。

' object_type '

スキーマ スコープのオブジェクトの種類を指定します。object_type のデータ型は varchar または nvarchar です。object_type のデータ型が varchar の場合、暗黙的に nvarchar に変換されます。オブジェクトの種類の一覧については、sys.objects (Transact-SQL) の type 列を参照してください。

http://msdn2.microsoft.com/ja-jp/library/ms190328.aspx
Nについて

N プレフィックスの使用

ストアド プロシージャ内やトリガ内など、サーバーで実行されるコード中の Unicode 文字列定数には、定数の前に大文字の N を付ける必要があります。これは、参照される列が既に Unicode として定義されている場合にも当てはまります。N プレフィックスを付けないと、文字列はデータベースの既定のコード ページに変換されます。このとき、特定の文字は認識されないことがあります。

http://msdn2.microsoft.com/ja-jp/library/ms191313.aspx
'U'について

U = テーブル (ユーザー定義)

http://msdn2.microsoft.com/ja-jp/library/ms190324.aspx
IFについて

IF キーワードおよびその条件に続く Transact-SQL ステートメントは、条件が満たされる (ブール式から TRUE が返される) 場合に実行されます。

http://msdn2.microsoft.com/ja-jp/library/ms182717.aspx
GOについて

Transact-SQL ステートメントのバッチの終了を SQL Server ユーティリティに通知します。

http://msdn2.microsoft.com/ja-jp/library/ms188037.aspx

2008-04-06 ちゃいちゃんデー

今日は、ちゃいちゃんの8回目の命日です。

午前中に大掃除をし、そしてケーキを買いにいきました。

午後は、沢山の方々が、お参りに家へ来て下さいました。

まず、田辺さん、生江さん、後藤さん、坂部さんのお母さん方と坂部君。

つぎに、あちゃん母子、そして、もえちゃん、モリンボちゃん、まんなちゃん。

途中で、指田さん、馬場さんのお母さん方。

最後に友清兄妹、村井兄弟、ムック、なお君、指田くん。


皆さま、8年も経つのに忘れない頂いて、ありがとうございました。


しかし、みんな美人さんに成長していて、なぜか嬉しかったです。

ちゃいちゃんも、きっと美人さんになっていたのかな・・・。

2008-04-06 配列を任意の一文字で初期化するには

@Array=();にすると各要素にアクセスする時は、未定義になります。

では、任意の一文字で初期化するには、どうしたらよいでしょうか?

たとえば、10個「"0"」で初期化するには、以下の感じ。

@Array = ("0", "0", "0", "0", "0", "0", "0", "0", "0", "0");

スマートに書くと

@Array = ("0") x 10;

掛け算記号にエックスを使うなんてオチャメ。


以下は、出来そうだけどNGです。

@Array = map {$_ . "0"} @Array;

未定義と文字列は連結できないようです。ていうか、これできたら大変なことになる(謎)。

要素数が0であるため{ }内が一度も実行されないからではないでしょうか。

私もそう思います。(ご指摘受けるまでは、気づきませんでした)

kitsさん、いつもご指摘ありがとうございます。

2008-04-05 丸8年:ちゃいちゃん

今日(4/5)で丸8年、明日(4/6)、ちゃいちゃんの祥月命日です。

明日は、お客さまが沢山くるとのことで、今日、お墓参りに行って来ました。

私とママとママのお母さんの3人で行きました。


いつも、ママと2人で行く時は、法華経をお墓の前で読誦するのですが、お母さんが来るとのことで、読誦グッズ(ご供養道具)を持って行きませんでした。

すると、お母さんがご供養道具を持ってきていて、3人で法華経を読誦することが出来ました。


もう泣くことなどないと思っていたのですが、法華経を読誦し始めると、とめどもなく、流れてくるんです。

悲しいという思いは、全くないのに、流れてくるんです。結局、前半は、参加できず。後半にほそぼそと参加しました。


お墓には、ちゃんちゃんのお友達のメッセージカードがあり、ちゃいちゃんにいろいろ相談をしているのです。

また、明日は、毎年恒例でお友達とお母さん方が来ます。


どんだけ、ちゃいちゃんは、凄いんだろ丸8年も経っているのにこの影響力。

パパも、ちゃいちゃんに負けないように頑張るね・・・。

2008-04-05 結城先生の次の本は夏休みごろ?

昨日、偶然、結城先生のチャットに入れました。

結城先生以外、まだ誰もいなかったので、質問をしました。

chaipapa : 次の本は、いつごろ、本屋さんにならぶのですか?

hyuki : いつごろでしょう。おそらく、私の手から原稿がいったん離れるのが5月くらい?だから、今年中は確実です。夏休みまでには…かなあ。

http://www.lingr.com/room/ipOz0HgEwTw/archives/2008/04/04

とのことでした。

結城ファンなら、言わずもがなだけど、待遠しい。

2008-04-05 substrの振る舞い

substr関数は、全文字列中(expr)をオフセット(offset)から指定長分(length)を取得したり、それを置換文字列で置換したりします。

ただし、正規表現は使えない。

offsetやlengthをマイナスにする時は、要チェックです。


構文

substr(expr, offset, length)


テストサンプルソース(test.pl)
use strict;
use warnings;
my $string = "01234567890123456789";
my $str1 = substr($string, 0);
my $str2 = substr($string, 2);
my $str3 = substr($string, 2, 3);
my $str4 = substr($string, -1);
my $str5 = substr($string, -2);
my $str6 = substr($string, 0, -1);
my $str7 = substr($string, 0, -2);
my $str8 = substr($string,  3,  2);
my $str9 = substr($string,  3, -2);
my $str10 = substr($string, -3,  2);
my $str11 = substr($string, -3, -2);
print "\$string \t\t\t = 01234567890123456789\n";
print "substr(\$string, 0);      \t = $str1", "\n";
print "substr(\$string, 2);      \t = $str2", "\n";
print "substr(\$string, 2, 3);   \t = $str3", "\n";
print "substr(\$string, -1);     \t = $str4", "\n";
print "substr(\$string, -2);     \t = $str5", "\n";
print "substr(\$string, 0, -1);  \t = $str6", "\n";
print "substr(\$string, 0, -2);  \t = $str7", "\n";
print "substr(\$string,  3,  2); \t = $str8", "\n";
print "substr(\$string,  3, -2); \t = $str9", "\n";
print "substr(\$string, -3,  2); \t = $str10","\n";
print "substr(\$string, -3, -2); \t = $str11","\n";

テストサンプル実行結果
C:\test>perl test.pl
$string                          = 01234567890123456789
substr($string, 0);              = 01234567890123456789
substr($string, 2);              = 234567890123456789
substr($string, 2, 3);           = 234
substr($string, -1);             = 9
substr($string, -2);             = 89
substr($string, 0, -1);          = 0123456789012345678
substr($string, 0, -2);          = 012345678901234567
substr($string,  3,  2);         = 34
substr($string,  3, -2);         = 345678901234567
substr($string, -3,  2);         = 78
substr($string, -3, -2);         = 7

ちなみに、データの抽出だけでなく、substrを左辺に書けば代入もできる。

substr($string, 2, 3) = '234';

2008-04-04 有難嬉悲しメモ(2008/04/04)

実は、3回のうち、1回は本当にぶつかりました。横断歩道が赤になったので止まったら、後ろから突っ込まれた。

会社では、昼休みに、新入社員が増えてごった返している食堂のところで、人とぶつかりそうになるし・・・。

とにかく、今日は、あぶない日でした。

2008-04-04 SQL Server Management Studioでのエクスポートとインポート

SQL Server Management Studio(以後SQL2005と記述)でのインポートに以下の問題点があります。


エクスポートとインポートの手順としては、SQL Sever Enterprise Manager(以後SQL2000と記述)とほぼ一緒なのですが、SQL2005では、エクスポートしたCSVが、インポート出来ないのです(特にNULLデータの時)。


SQL2000では、同CSVを同テーブル同データへ問題なくインポートが出来ます。

SQL2005でエクスポートして、SQL2005でインポートが出来のは、問題ではないでしょうか?


回避策は、ないみたいです。

私は、PerlでCSVを読み込んでinsertするスクリプトを組みました。

2008-04-03 白川静さんに学ぶ漢字は怖い/本当は怖ろしい漢字

「白川静さんに学ぶ漢字は怖い」は、そんなに怖ろしいくなかったです。

白川ワールドをわかり易く解説してあって、お奨めの一冊です。


さて、「本当は怖ろしい漢字」ですが、はっきりいって、心臓の弱い人には、お奨めできません。

私は、読んでいて目眩がして吐き気を催しました。でも、頑張って2回も読んでしまいました。

白川静さんに学ぶ漢字は怖い

白川静さんに学ぶ漢字は怖い

本当は怖ろしい漢字

本当は怖ろしい漢字

2008-04-03 有難嬉悲しメモ(2008/04/03)

2008-04-03 SQL Sever Enterprise Managerでcsvファイルをテーブルのデータにインポートする。

以下は、SQL Sever Enterprise Managerで、csvファイルからのデータをテーブルへインポートする手順です。

2008-04-02 SQL Sever Enterprise Managerでテーブルのデータをcsvファイルにエクスポートする。

以下は、SQL Sever Enterprise Managerでテーブルのデータをcsvファイルにエクスポートする手順です。

2008-04-01 有難嬉悲しメモ(2008/04/01)

これ、MsSqlServer2000なら全然問題なく出来る。完璧なデグレードやな。

とにかく、エクスポートしたものが、インポート出来ないなんて、何考えているんだ->MS!

2008-04-01 Re:京都の桜はきれいだろうか?

はてなと京都とPerlと某テクニカルライター

サタンの声の特徴は、「嘘八百にほんのちょっぴりの本当をまぜる」こと。詐欺師と同じだ。ほんのちょっぴりの本当があると、ついうっかり他の嘘八百まで本当だと思ってしまう。

サタンの声への対策

まさに、これにやられた(不覚)。

2008-04-01 JavaScriptの関数へ「&#39;」はエスケープしないと引数として渡せない?

以下のようにonclickからJavaScriptの関数をコールする場合は、「&#39;」はエスケープ(\&#39;)しないと引数として渡せない。

以下で、確認しました。ただしIE6のみ確認。

<html>
<body>
<form name="FM">
<input type="text" name="IP"  value="ケース1:反応あり" onclick="subx('cb\&#39;b&quot;\\bc')">
<input type="text" name="IP"  value="ケース2:反応なし" onclick="subx('cb&#39;b&quot;\\bc')">
<input type="text" name="IP"  value="ケース3:反応なし" onclick="subx('cb'b&quot;\\bc')">
</form>
<script>
function subx(a){
  alert(a);
}
</script>
</body>
</html>

ケース2とケース3は同じように無反応になります。

たぶん、&#39;は「'」と解釈されていると思われます。

このような場合は、「\&#39;」にするとonclickが反応します。


あと、ダブルクォートのエスケープについては。

JavaScriptのロジックの文字列で、文字としての「\」を記述するときは、エスケープして「\\」となります。

これをCGIから標準出力する場合、Perlでのダブルクォート文字列では、Perlでのエスケープが加わって「\\\\」となります。