ChaichanPapa-World !

燈明日記(2009/02

◆ インデックス

◆ 2009年2月

2009-02-28 スランプ・・・かも、そして「ブログを書くこと」とは・・・

技術ネタがことごとく、練れない・・・練ってる途中で撃沈する。


すると、そもそもなんでブログを書いているんだろ・・・なんて思い始めるのです。

そして、アクセス数や購読数が気になってきて、悩みが増えるわけです。


そうすると、毎日ブログを更新しなくてはいけない・・・などの強迫観念が芽生えてきて、益々苦しくなってくるのです。


とにかく、今後は、無理や背伸びをせず、またアクセス数や購読数を気にせず、本来の「日記」と「技術メモ」に帰ります。

って、今もほぼそうなのですが・・・。これからもよろしくです!

2009-02-28 マチャ(三男)、中学校バスケット多摩大会3位!!

今日、東京都武蔵野市の武蔵野総合体育館で中学校バスケット多摩大会決勝/準決勝がありました。

三男マチャの三鷹七中が準決勝で惜しくも敗退し、参加約200校中3位となりました。


準決勝では、前半はリードした場面もありましたが、その後つねに10点前後リードされ・・・終わり1分前に3点差まで追い上げて、勝てそうな流れだったのですが、時間が足らず敗退しました。

3点差までの追い上げ時は、めちゃくちゃ盛り上がりました。


とにかく、試合に負けたのは残念だったけど、子供の頑張りを見るのは親としては、嬉しいものですね。

終わり10秒前の怒涛の攻撃は、感動ものでした。


しかし、ネットに中学校バスケット多摩大会の情報がないのは、どういうわけなんだろう・・・。

2009-02-27 今日の日記

今日は、ママが更年期なのか、ここのところ調子が悪く、杏林大学病院へ連れて行きました。

ということで、会社はお休みしました。


家では、今日の技術ネタの『他のPCを「c$」でネットワークからCドライブがアクセスできる』をテストしていたのですが・・・。


アクセスができなくて、いろいろPCをいじっていたら、PCがおかしくなってしまって、それどころじゃなくなってしまいました・・・(とほほ)。


ということで、その技術ネタがこのネタになってしまいました。


明日は、三男のバスケットの多摩大会準決勝があります。勝てば決勝です。

私が応援に行くと、負けるジンクスがあるのですが、行ってしまいます。


そうそう、ママの診察結果はまだわからず、3/2に次の検査あり、そのあと結果がわかるとのことです。


では、また!

2009-02-26 ExcelVBAでワークシートモジュールのシート名を求めるには?

ワークシートモジュールで、そのシートのシート名を求めるには、以下のようにMeのNameプロパティから取得します。

Private Sub Worksheet_Deactivate()
    Dim strSheetName As String
    strSheetName = Me.Name
End Sub

ActiveSheetのNameプロパティで取得ができそうなのですが・・・、たとえば、Worksheet_Deactivateイベント時では、すでにつぎのシートになっていて、取得ができないのです。なのでMe.Nameを使います。


ちなみに、標準モジュールにはMeはありません。

また、ワークシートモジュールとは「Microsoft Excel Objects」の一つです。

2009-02-25 なんか疲れた・・・

どうやら、仕事を根詰めてやってしまったみたい・・・なんかやけに疲れました。


そうそう、最近、少飲少食を実行しているせいか、空腹感を感じる時が多くなりました。

空腹感って、久々のような気がします。


日本では、この飽食の時代に空腹を感じる人はいるのでしょうか・・・。

しかし、これからは不景気で食べる物も満足に買えない時代が、すぐそこまで来ている気がします。かも。


ということで、今日は、疲れて技術系のネタを練る気力が出ないので、これで終わりにします。

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

2009-02-24 今、思っていること

すみません。

CSS段組レイアウトの解説ですが、気力がイマイチで遅れています。

近いうちに、なんとかしたいです。


また、技術ネタは、そろそろ尽きます。

あと、「組み込み関数とcoreモジュールの関係」とかがありますが・・・まとめるのが難しいです。

逆に日常ネタは、結構沢山残っていますが・・・半分はタイミングを逸して腐っていますね(悲)。


そうそう、マチャ(三男)の三鷹7中バスケット部が中学多摩大会(200校以上参加)でベスト4に残りました。

今週の土曜日に武蔵野市総合体育で準決勝・決勝が行われます。

もちろん、ママと一緒に応援に行く予定です。


今、Perlを一から勉強し直そうかと思っています。

まずは、ラクダ本を通読精読します。

いままでは、拾い読みしかしたことがなかったので・・・。


実はやっと、インサイドPerlに興味を持ち始めました。

組み込み関数がどのような仕組みになっているのか・・・とか、PerlからどのようにDLLをコールしているのか・・・とか、XS(C言語で組んだ処理をPerlに組み込む)とか・・・。

その内、ネタになるかもしれません。

2009-02-24 標準関数と組み込み関数

すみません。Perlでの標準関数と組み込み関数を勘違いしていました。

組み込み関数だけを標準関数だと思い込み、標準モジュール関数は標準関数でないと思っていました。


標準関数と云うのは、以下の通り、標準で使える関数なので、組み込み関数も標準モジュール関数も標準関数なのですね。

ちなみに、組み込み関数とは以下です。

私はC言語から来たので(意味不明)、組み込み関数という概念を理解していませんでした。

いまさらだけど、C言語には、%includeの標準関数だけで、組み込み関数は存在しないのですね。


ということで、組み込み関数を標準関数と云っていたのは間違いではないけれど、標準モジュール関数を標準関数でないと思っていたのは間違いでした。

2009-02-23 少食少飲

40歳を過ぎると運動不足や老化でお腹の筋肉がなくなり、メタボになっていきますね。

また、仕事のストレスや大不況の不安で、お腹の調子は、悪くなる一方です。


私の場合、さらに過敏性腸症群なので大変なわけです。

で、編み出したのは、「コーヒー断ち」と「腹巻き」でした。

これは、かなり効果がありました。


今回、さらに「少食少飲」を実行しようと思っています。

とにかく、トイレが近いので(1時間に1回)、もうこれしかないですね。


しかし、つい「食べ過ぎ」「飲み過ぎ」をしてしまい、我慢するのが大変ですが・・・。

がんばって、「少食少飲」を実行し、快適なお腹になりたいです!

2009-02-23 Perlでファイルコピー

えーと、Perlではファイルコピーの組み込み関数がありません。

では、どうやってコピーするかというと標準モジュールのFile::Copyを使います。

use File::Copy;
copy("from_file", "to_file");
http://okwave.jp/qa885014.html

2009-02-22 ボケ老人

ボケ老人とは、私のことです。

最近、ボケボケで情けない思いの連続です。

そのことで、自分自身への怒りが込み上げてきて、壁にストレートを打ち込んだりしています。


・・・その一例。

実は昨日、長男のライブが赤坂ムーブというところでありました。

JR武蔵境駅から地下鉄千代田線赤坂駅まで、一族(おじいさん、おばあさん・・・etc)を引率して行きました。

赤坂など行ったことがないので、ネットで調べて行きました。


四ツ谷駅までは、順調に行きましたが、そこから丸の内線や千代田線の連絡乗り換えがまるで迷路で、また赤坂見附を赤坂と勘違いしたり、やっとの思いで赤坂駅に辿りつけました。


赤坂ムーブまでは、長男が赤坂駅に迎えに来てくれていたので大丈夫でした。

しかし、赤坂ムーブは、場末のビル4Fで、こんなところに人が来るの・・・みたいなところでした。


帰りに、おばあさんとおじいさんが歩くのが大変だから四ツ谷駅までタクシーで帰ろうということになりました。

その時、私は何を思ったか、四ツ谷駅は地下鉄だけで、JRがないから市ヶ谷駅にしましょうなんて言っているのです。


そうしたら、おばあさんとおじいさんもそうだねと同意したので、先にタクシーで市ヶ谷駅へ向かいました。

後続のタクシーで次男が四ツ谷駅だってJRが通っているよと指摘され、よく考えたら来た時は四ツ谷駅で乗り換えたのでした。急いで携帯でおじいさんに連絡して四ツ谷駅に変更ができました。


・・・と、こんな感じで、ボケボケで情けない毎日を送っています。


えーと、長男のライブの方は、4曲を歌いましたが・・・感動がイマイチで、歌もギターもまだまだですね。

今度は、もっと行きやすいライブハウスでライブしてください。

おじいさんとおばあさんのためにもお願いします。

2009-02-22 Windowsプログラマのためのlinux勉強のリンクメモ

以下は、Windowsプログラマのためのlinux勉強のリンクメモです。

2009-02-22 EXCELでシート名を文字列として扱う制限について

たとえば、EXCELのHyperlink関数は、普通、以下のようにシート名を引数の一部に指定します。

=HYPERLINK("#Sheet2!H8", "S2_H8")

で、上の例では「Sheet2」で大丈夫ですが、シート名に中括弧やスペースが入っていると以下のようなエラーになるのです。

参照が正しくありません。

ちなみに、シート名には、「/」「\」「*」「?」「:」は使用できません。

しかし、これらを使わずにシートを作成したとしても、シート名に半角or全角の中括弧やスペースがあると、Hyperlink関数で引っ掛かるのです。たぶん、Hyperlink関数以外にもあると思います。


シート名に半角or全角の中括弧やスペースがある場合は、シート名を以下のようにシングルクォートします。

=HYPERLINK("#'Sheet(2'!H8", "S2_H8")

逆に言うと、シングルクォートしない場合は、たまたま上手くいっているだけなので、シート名を文字列として扱う場合はシングルクォートした方がよいですね。

2009-02-19 円ヤスと次男のヤス

98円台になりましたね、円ヤスが・・・、早くサブプライム以前の120円台に復活して欲しいです。


全然関係ないけど、 次男のヤスくんが、NECのネットブック:LaVie Lightを1万チョイで買いました。

本当は8万ぐらいするんだけど・・・Eモバイル加入と抱き合わせってヤツです。

日本の主要都市ならどこでもインターネットできるEモバイルです。かも。


家の無線LANには、上手く繋がらなかったけど、とりあえず、無線LAN親機から有線で繋がりました。

えーと、なぜEモバイルなのに家の無線LANにも繋ぐかというと、EモバイルだとMAX月7千円弱かかり、使わなければ3千円チョイでいいので・・・。

丁度、ヤスくんの部屋に無線LANの親機がおいてあったのでよかったよかった。


しかし、主に大学でネットブックを使うらしいです。(このときは、Eモバイルかな)

やっと、ヤスくんも今年の4月から大学生になりますよ!


円ヤスも4月には120円台になっているといいですね!

2009-02-19 VBAのサブルーチンスコープ

任意の標準モジュールでのサブルーチンは、デフォルトではPublic(グローバルスコープ)になります。

もちろん、Subの前にPublic でグローバルスコープを明示しても問題はありません。

また、そのサブルーチンを該当の標準モジュールだけに有効としたい場合は、Subの前にPrivate (モジュールスコープ)を記述します。

'グローバルスコープのサブルーチン
Public Sub Macro1()
  :
  :
End Sub


'モジュールスコープのサブルーチン
Private Sub Macro2()
  :
  :
End Sub

2009-02-19 Excelで同一ブック内の複数シートを見比べるには

通常、ブックをクリックしてExcelを立ち上げ、次に別のブックをクリックすると、MDIの中に2つのブックなり、見比べることが可能です。

では、1つのブック内の複数シートを見比べるにはどうしたらよいでしょうか・・・。

答え、以下の手順で新たなウィンドウを開きます。

2009-02-18 Excelオブジェクト作成を連続要求すると発生するエラー

『RPC サーバーを利用できません』や『リモート プロシージャコールに失敗しました』のエラーが出たら・・・

sub excel_io {
    $excel = Win32::OLE->GetActiveObject('Excel.Application') || Win32::OLE->new('Excel.Application', 'Quit');
    :
    :
    $excel->Quit();
}

たとえば、上記のようなOLE経由でExcelオブジェクト作成し処理が終わったらQuitするサブルーチンを連続でコールすると以下のようなエラーになる場合があります。

Win32::OLE(0.1707) error 0x800706ba: "RPC サーバーを利用できません。

Win32::OLE(0.1707) error 0x800706be: "リモート プロシージャコールに失敗しました。

これは、Quitしても実際にはまだQuitされていない状態で、またExcelオブジェクトを取得または作成しようとして、システムの処理が追いつかないで発生している感じです。かも(シーナ)。


なので、連続要求の合間にsleep関数をかますと上手くいきます。

   excel_io();
   sleep(3);
   excel_io();
   sleep(3);
   excel_io();

しかし、これは根本的な解決ではないですね。

Excelの場合はMDI(マルチドキュメントインターフェイス)なので、一度Excelオブジェクトを作成したらプログラムが終了する直前までQuitしないことですね。

つまり、以下のようにQuitをしなければ、連続要求でも上手くいきます。

sub excel_io {
    $excel = Win32::OLE->GetActiveObject('Excel.Application') || Win32::OLE->new('Excel.Application', 'Quit');
    :
    :
    #$excel->Quit();
}

2009-02-17 VBAで複数行コメントをするには

普通の言語では、一行コメントはもちろん、複数行コメントも当然できるようになっています。

しかし、VBAでは言語仕様的に複数行コメントの機能がないのです(悲)。


その代わりにVBでは一行コメント表現を使ってVBE(エディタ)機能で複数行のコメントが可能です。

それは以下の手順です。

ちなみに、コメントを元に戻すには、「非コメントブロック」アイコンでクリックする。

2009-02-17 タッチパッドを軽く叩くと・・・

タッチパッドとは、ノートPCについているマウスの代わりになるポインティングデバイスです。

マウス派の私は、つい最近まで知らなかったのですが、子供(中2)がタッチパッド派で、タッチパッドを軽く叩くとマウスクリックと同じ効果になるのです。


知ってましたか・・・って、知らなかったのは私だけだな・・・たぶん。

2009-02-17 VBAと秀丸での単語検索

たまに、VBAをやると忘れてしまうのでメモ。

VBAのエディタ(VBE)で検索する時は、任意の単語の上にカーソルを置いて「Ctrl+F3」で、あとはF3で下、Shift+F3で上に任意の単語を検索します。


一方、秀丸は、任意の単語の先頭にカーソルを置いて「Ctrl+f」で、あとはVBAと同じF3で下、Shift+F3で上に任意の単語を検索します。

2009-02-17 内部統制とJ-SOX法

内部統制とは「Internal Control」の直訳で、企業内のリスクを把握し、リスクが発現しないように分析し、分析結果に対して対策をたて、対策を社員へ徹底すること。


2000年代初頭にかけてアメリカの巨大企業である「エンロン」や「ワールドコム」が会計不祥事により破綻し、その会計を監査していた巨大会計事務所「アーサーアンダーセン」も消滅しました。


それをうけて、2002年にポール・サーベンス(Sarbanes)氏とマイケル・G・オクスリー(Oxley)氏が財務報告に対する内部統制の構築維持のため法案を連名で提出し、制定された法をSarbanes氏とOxley氏の名前に因んで「SOX法」といわれています。


日本の「金融商品取引法」は、財務報告に対する内部統制の構築維持を義務付けている部分が「SOX法」の影響を受けているので、「SOX法」に因んで「J-SOX法」といわれています。

2009-02-16 SNMP/SNTP/SMTPは紛らわしい・・・

SNMP/SNTP/SMTPは紛らわしいので整理しときます。

要は・・・

SNMPは、通信機器をネットワーク経由で監視・制御するためのプロトコル。

SNTPは、ネットワークを通じてコンピュータの時刻を同期させるためのプロトコル。

SMTPは、メールのやり取りをするためのプロトコル。

2009-02-16 TCP/IPプロトコルスタックとは

TCP/IPプロトコルスタックとは以下の4層のプロトコルのこと。

  1. FTPやHTTP等のアプリケーション層(OSI参照モデルの5〜7層に対応)
  2. TCPとUDPのトランスポート層(OSI参照モデルの4層に対応)
  3. IPとICMPとARPのインターネット層(OSI参照モデルの3層に対応)
  4. イーサネット等のネットワークインターフェイス層(OSI参照モデルの1〜2層に対応)

ちなみに、ソケット通信をしているAPは、TCP/IPプロトコルスタックとは言わず、TCP/IPプロトコルスタックとの標準インタフェースを使用しているだけ。

2009-02-16 劫濁(こうじょく)

法華経の方便品に劫濁(こうじょく、または、濁劫という場合もある)という言葉がでてきます。

これは、世の中が同じ状態が長くつづくと動脈硬化をおこして汚れてくるという意味です。


今の世の中、まさにコレですね。

天下りや渡り、2世3世議員、いつの間にか国のトップは、普通のおじさん達になってしまいましたね。

特に、A総理大臣とか、N財務大臣とかに国をまかしていいのでしょうか・・・。


菅義偉(すが よしひで)選挙対策副委員長の発言も無責任ですね。

小沢さんが呆れるのに同感です。


しかし、A総理大臣やN財務大臣が普通のおじさんだったら、人間味があって好きになれるけど、国のトップとなると話は別ですね。

2009-02-16 花粉症が目にキターーーー!

土曜日ぐらいから、ついに花粉症が目に来ました。

市販の目薬で、とりあえず凌いでいます。

5月まで続くのかと思うと気が重いです・・・。

2009-02-15 今日は2月15日でお釈迦さまが亡くなった涅槃会です!

今日は、仏教三大行事の一つ涅槃会です。

私も某教会の涅槃会で法華経を読誦して参りました。

で、すぐ帰ってきて、家の用事(炊事・洗濯)をしながら、以下を練りました。

とにかく、ネタが沢山貯まっているので、腐る前に放出します。


ちなみに、仏教三大行事のあとの2つは、生まれた『降誕会・4/8』とおさとりの『成道会・12/8』です。

2009-02-15 視覚効果のパフォーマンスを優先

WindowsXPでセキュリティ系のソフトを3つも4つも入れないとならない場合が結構あります。

すると、マシン立ち上げ時にやたら時間が掛かったり、メモリが足りなくなったりします。

そんなときは、視覚効果の「パフォーマンスを優先」にすると少しは改善されるようです。

以下は、その手順です。

2009-02-15 VBAやVB6でのグローバル変数とモジュール変数

すぐ忘れてしまうのでメモ。

グローバル変数はモジュールの先頭でPublic宣言

Public SalesPrice As Integer
Public UnitsSold As Integer
Public CostPerUnit As Integer
Private Markup As Long

モジュール変数はモジュールの先頭でDimまたはPrivate宣言

Dim A As Integer        ' Module-level variable.
Private B As Integer    ' Module-level variable.

ちなみに、グローバル変数はグローバルに参照できる変数で(そのまんま)、モジュール変数は宣言されたモジュール内のみで参照できる変数です。

2009-02-15 スタティックリンクとダイナミックリンク

以下は、UNIX系のスタティックリンクとダイナミックリンクの解説だけどコンパクトにまとまっているのでご紹介。

2009-02-15 レキシカル変数の寿命

すぐ忘れてしまうのでメモ。

sub内でmy宣言した変数(レキシカル変数)の寿命は、普通、my宣言した時からそのsub処理が終われば変数の寿命も終わりです。

しかし、return値としてその変数を指定した時は、sub処理が終わっても生き続け、どこからも参照されなくなるまで生き続けます。

2009-02-15 IPアドレスの正規表現の解説

前回、以下にご紹介したIPアドレスの正規表現を今回は解説してみます。

まず、IPアドレス(IPv4)の構造は、以下のようになっています。

A.B.C.D (A〜Dで各々とる値は、0〜255です)


IPアドレスの正規表現

/^(\d|[01]?\d\d|2[0-4]\d|25[0-5])\.(\d|[01]?\d\d|2[0-4]\d|25[0-5])\.(\d|[01]?\d\d|2[0-4]\d|25[0-5])\.(\d|[01]?\d\d|2[0-4]\d|25[0-5])$/

始めの『/^』は、IPアドレスの先頭からマッチさせます。

終わりの『$/』は、IPアドレスの末尾までマッチさせます。

途中の3個の『\.』は、A.B.C.Dの『.』のことで、A〜Dは同じ (\d|[01]?\d\d|2[0-4]\d|25[0-5])となっています。

\dは、[0-9]とイコールです。

?は、直前の表現が0個か1個であることを示します。

|は、またはです。

なので(\d|[01]?\d\d|2[0-4]\d|25[0-5])を噛み砕くと・・・。

[0-9]かまたは、[01]?[0-9][0-9]かまたは、2[0-4][0-9]かまたは、25[0-5]です。

さらに・・・

[0-9]は、0〜9です。

[01]?[0-9][0-9]は、00〜199です。

2[0-4][0-9]は、200〜249です。

25[0-5]は、250〜255です。

よって、0〜255を表現しています。

2009-02-15 PerlでSwitch文(Case文)

Perlでは、言語仕様的にはSwitch文はありませんが、Switchモジュールを使用することで実現が可能です。

 use Switch;
 switch ($val) {
  case 1  { print "number 1" }
  case "a" { print "string a" }
  case [1..10,42] { print "number in list" }
  case (@array) { print "number in list" }
  case /\w+/ { print "pattern" }
  case qr/\w+/ { print "pattern" }
  case (%hash) { print "entry in hash" }
  case (\%hash) { print "entry in hash" }
  case (\&sub) { print "arg to subroutine" }
  else  { print "previous case not true" }
 }
http://perldoc.jp/docs/modules/Switch-2.09/Switch.pod

ワタシ的にはif文の方が好きです。

2009-02-14 CSS段組レイアウト雛型(レイアウトテンプレート)

CSS段組レイアウトテンプレートを公開します。

尚、IE系とFirefoxで見栄えを確認しています。


CSS段組レイアウトは大変で結構苦労しました。

なにかの参考になれば幸いです。


HTMLのボディ構造は以下としました。

メインコンテンツが左、サイドバーが右に並ぶCSS段組レイアウトになっています。


CSSの記述はボディ構造の『Summary layout』部分とその他の『Detail layout』部分に分けました。

尚、メインコンテンツが右、サイドバーが左に並ぶCSS段組レイアウトにするには、『Summary layout』のmarginとfloatとclearの記述でrightとleftの記述を逆にします。

ただし、IEの場合はバグがあり、上記プラス、contentsの子要素に対して各々マージンを加えないとなりません。


<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html lang="ja">
<head>
<meta http-equiv="Content-Style-Type" content="text/css">
<meta http-equiv="Content-Script-Type" content="text/javascript">
<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
<meta name="Description" content="ページの概要">
<meta name="Keywords" content="キーワード1,キーワード2,キーワードetc">
<title>テスト</title>
<style type="text/css">
/*--- Summary layout ---*/
* {
    margin:0;
    padding:0;
}
body {
    text-align:center;
}
#container {
    width:96%;
    margin-left:auto;
    margin-right:auto;
    margin-top:1em;
    text-align:left;
}
#header {
    background:#66ff66 url("xhappaki06.jpg");
    background-position: 0% 0%;
    background-repeat: no-repeat;
}
#menubar_container {
    height:2.2em
}
#menubar {
    width: 100%;
    background: #eee;
    position: relative;
}
#contents {
    background:#ccf;
    width:100%;
    float:left;
    margin-right:-200px;
}
#contents>* {
    margin-right:200px;
}
#sidebar {
    background:#fcc;
    width:200px;
    float:left;
}
#footer {
    background:#cfc;
    width:100%;
    clear:left;
}

/*--- Detail layout ---*/
/*--- body ---*/
body {
    font-family: "MS Pゴシック", sans-serif;
}
#container {
    border: 1px solid #cccccc;
}

/*--- header ---*/
#header {
    padding: 1em 20px 1em;
}

/*--- footer ---*/
#footer {
    padding: 1em 0px 1em;
    text-align: center;
}
#footer p { text-align: center; }

/*--- menubar ---*/
#menubar ul {
    width: 100%;
    list-style-type: none;
    position: absolute;
    background-color: #eeeeee;
}
#menubar li {
    width: auto;
    float: left;
    border-right: 2px groove #cccccc;
    height:2.2em
}
#menubar li a {
    text-decoration: underline;
    display: block;
    width: auto;
    padding: 0.5em 1em;
    background-color: #eeeeee;
    color: #000000;
}
#menubar li a:hover {
    background-color: #99ccff;
    color: #ff0000;
}

/*--- sidebar ---*/
.sidetitle {
    padding: 0.5em 0;
    border-bottom: 1px solid #666666;
}
.sidenavi {
    list-style-type: none;
    margin-bottom: 2em;
}
.sidenavi li { display: inline; }
.sidenavi a {
    text-decoration: underline;
    display: block;
    width: 170px;
    padding: 0.5em 5px;
    background-color: #fcc;
    color: #000000;
}
.sidenavi a:hover {
    text-decoration: underline;
    background-color: #99ccff;
    color: #ff0000;
}

/*--- contents ---*/
#contents p {
    line-height: 1.4em;
    margin-bottom: 0.5em;
}
#contents ul {
    margin: 1em 0 1em 20px; 
}
#contents ol {
    margin: 1em 0 1em 28px; 
}
#contents li {
    margin-bottom: 0.5em; 
}

/*--- h1〜h6 ---*/ 
h1,h2,h3,h4,h5,h6 {
    margin-bottom: 0.5em;
    padding: 5px 0 5px 5px;
    border-top: 1px solid #888888;
    border-bottom: 1px solid #888888;
}
h1 {
    color:#3d7097;
    font-size:2.4em;
    font-family:"Courier New",Courier;
    font-weight:bold;
    margin:1em 1em 1em 10em;
    padding:0;
    border-top:0px;
    border-right:0px;
    border-bottom:1px solid gray;
    border-left:0px;
    text-align:right;
}
h2 {
    font-size: medium;
}
h3 {
    font-size: small;
}
h4 {
    font-size: x-small;
}
h5,h6 {
    font-size: xx-small;
}
</style>
</head>

<body>
<div id="container">

<div id="header">
<h1>見出し1</h1>
<p>テキスト</p>
</div>

<div id="menubar_container">
<div id="menubar">
<ul>
  <li><a href="#">リンク</a></li>
  <li><a href="#">リンク</a></li>
  <li><a href="#">リンク</a></li>
  <li><a href="#">リンク</a></li>
  <li><a href="#">リンク</a></li>
</ul>
</div>
</div>

<div id="contents">
<h2>見出し2</h2>
<p>テキスト</p>
<p><a href="#">リンク</a></p>
<h3>見出し3</h3>
<ul>
<li>aaaaaaaaaaaaa</li>
<li>bbbbbbbbbbbbb</li>
</ul>
<ol>
<li>1111111111111</li>
<li>2222222222222</li>
</ol>
<h2>見出し2</h2>
<p>テキスト</p>
<p>テキスト</p>
<p>テキスト</p>
<p>テキスト</p>
<p>テキスト</p>
</div>

<div id="sidebar">
<p class="sidetitle">サイドタイトル1</p>
<ul class="sidenavi">
  <li><a href="#">リンク</a></li>
  <li><a href="#">リンク</a></li>
  <li><a href="#">リンク</a></li>
  <li><a href="#">リンク</a></li>
  <li><a href="#">リンク</a></li>
</ul>
<p class="sidetitle">サイドタイトル2</p>
<ul class="sidenavi">
  <li><a href="#">リンク</a></li>
  <li><a href="#">リンク</a></li>
  <li><a href="#">リンク</a></li>
  <li><a href="#">リンク</a></li>
  <li><a href="#">リンク</a></li>
</ul>
</div>

<div id="footer">
<p>Copyright &copy; 著作権表記. All Rights Reserved.</p>
</div>

</div>
</body>
</html>

この雛型でデザインが決まったら、style要素を外だしにして、xxstyle.cssにしたほうがいいですよ。


尚、本コンテンツのHTMLソースは、今後、ステップ毎に解説をしていきたいと思っています。

ですので、新カテゴリー『CSSレイアウト』としました。

これからの『CSSレイアウト解説シリーズ』を期待しないでお待ちください。

いや、ソースステップ毎の解説だと大変な数のネタになりますね(ネタ不足解消)。

2009-02-13 EXCELで書式のコピー

WORDだとコピーしたい書式のある文字を『Ctrl+shift+c』で書式コピーし、『Ctrl+shift+v』でペーストが出来ます。

EXCELでもコピーしたい書式のあるセルで書式コピーして同じようなオペレーションをしたいのですが、残念ながら出来ません。


EXCELでは、WORDのような書式コピーのショートカットがなく、ツールバーの「標準」の中のペイントブラシ風のアイコンで書式をコピーし、それを任意のセルにクリックしてペーストします。

しかし、この方法では、連続しての書式のペーストが出来ません。


どうしても、ショートカット風でやりたい時や連続して書式ペーストをやりたい時は、以下ようにすると可能です。

  1. 書式コピーしたいセルを選択します。
  2. セルコピー『Ctrl+c』をします。
  3. 『Alt+e』,s,t,Enterと順番にキーを押していく。
  4. 書式をペーストしたいセルを選択し『Ctrl+y』(注意『Ctrl+v』でない)。
  5. 4は、連続して出来る。

ちなみに、この手順は、EXCEL2003ではOKですが、EXCEL2000ではNGのようです。


2009-02-12 CSSでの段組レイアウトについて思う

最近、CSSでの段組レイアウトの世界に手を出しています。

この世界は、すっごーーーーーく大変な世界です。


HTMLとCSSの基礎知識(要素、ハイト、ウィドス、パディング、ボーダー、マージの各違い)はもちろん、ブラウザ毎、各ブラウザのバージョン毎、各ブラウザの各バージョンのDOCTYPE毎にCSSレンダリング違いの知識・・・。


また、IE系はCSSについては、バグだらけで、それを考慮して、Firefox等と両方同じように段組レイアウトがされるようにしないとなりません。


実際の段組レイアウトでは、CSSのfloatを使用しますが、CSS2.1仕様書は難解で理解するのが大変です。

ということで、やさしく噛み砕いたCSSでの段組レイアウト解説サイトを見つけましたのでご紹介します。



当分ここでCSSマルチカラムレイアウトを勉強してみます。

2009-02-11 PerlでZIP/UNZIP

WindowsXPでは標準装備で、ZIPでの圧縮/解凍機能がありますが・・・。

Perlでも標準モジュール(Archive)で、ZIPでの圧縮/解凍機能があります。

簡単なサンプルを組んで見ましたので、何かの機会に参考になれば幸いです。


◆ZIP圧縮サンプル(zip.pl)
use strict;
use warnings;
use Archive::Zip;

my $zip_file = 'file.zip';

my $zip = Archive::Zip->new();
$zip->addFile('data/file.txt');
$zip->addFile('data/file2.txt');
$zip->addTree('aaa', 'aaa');
$zip->addTree('bbb', 'ccc');
$zip->addTree('./a/b/c', 'd');
$zip->writeToFileNamed($zip_file);

addFileは引数のファイルを、addTreeは第1引数のフォルダをZIP圧縮します。

ちなみに、addTreeの第2引数は解凍される時のフォルダ名を指定します。

圧縮は、引数で指定したファイルやフォルダがあるフォルダ内でzip.plを実行します。


◆ZIP解凍サンプル(unzip.pl)
use strict;
use warnings;
use Archive::Zip;

my $dir = '.';
my $zipfile = "$dir/file.zip";

my $zip = Archive::Zip->new($zipfile);
my @members = $zip->memberNames();
foreach (@members) {
    $zip->extractMember($_, "$dir/$_");
}

解凍は、file.zipがある同じフォルダ内でunzip.plを実行します。


◆参考リンク

2009-02-06 ちょっと遅めの新年会

昔の職場の仲良しグループの新年会があり、今ちょっと前に帰ってきました。

メンバーの都合がなかなか合わず、ちょっと遅めの新年会となりました。


一年に1〜2回しか遭わない人もいて、お互いに年をとったなぁって感じでした・・・。

ということで、飲みすぎて気持ちが悪いので、この辺にしときます。


そうそう、風邪はかなり良くなりました。たぶん、もう大丈夫かな・・・。

いくら、風邪薬と花粉症の薬を飲んでも、良くならなかったのに、リポビタンゴールドを3本飲んだら良くなりました。


3本といっても、一気に飲んだのではなく、帰宅時、就寝時、起床時です。

リポビタンゴールドは、あなどれないですよ!

2009-02-05 PC立ち上げ直後にエクスプローラ起動でストール

かなり前に、最速エクスプローラ起動で『WINキーを押しながらeキー』をご紹介致しましたが・・・。


これ、PC立ち上げ直後に『WINキーを押しながらeキー』するとNGです。ストールします。

折角、PCが立ち上がった直後なのにストールするので気が萎えます。


PC立ち上げ直後にエクスプローラを起動するには、スタートメニューからマウスで行うのがベターですね。

ちなみに、ストールとは、PCが固まって、キーボードもマウスも効かない状態です。

2009-02-05 カレントディレクトリを取得する

プログラムを組んでいるとカレントディレクトリを知りたいことが結構よくあります。

実は、Perlでは、カレントディレクトリを取得する組み込み関数はありません。

ですので、標準モジュールのCwdモジュールを使います。

use strict;
use warnings;
use Cwd;

my $cur_dir = getcwd();
print $cur_dir, "\n";

ちなみに、以下の3つは組み込み関数です。

use strict;
use warnings;

chdir('wkwk') or die "Can't change dir $!\n";
mkdir('wk') or die "Can't make dir $!\n"; 
rmdir('wk') or die "Can't remove dir $!\n"; 

2009-02-04 風邪だと思う・・・

今日、無理して会社に行ったのですが、鼻と喉が辛くて、仕事にならなかった・・・。

今も、調子が悪いけど、熱を計ったら36度台なので、インフルエンザではないと思う。


明日は、休暇にしようかなぁ・・・。

2009-02-03 風邪か花粉症か・・・

熱がないのでインフルエンザではないと思うのですが・・・。

鼻ズルと喉ガラガラと咳、そして結膜炎。

結膜炎だけど、目は全然痒くなく、なので花粉症でなく、風邪っぽいです。

今日は、お風呂に入らず、ご供養して、早く寝ます・・・って、もう10時過ぎましたキャー。

2009-02-03 CGIからEXCELにアクセスするとオープンでロックされる!

PerlスクリプトからEXCELのブックをオープンするプログラムがありました。

このスクリプトをコマンドプロンプトから実行すると問題なくブックをオープンすることが出来ました。

しかし、このスクリプトをブラウザからCGI経由で実行するとオープンでロックされてしまうのです。


とにかく、動かさなくてはと、Perl.exeやExcel.exe,ブック.xls,ブックのあるファルダなどすべてフルアクセスにして、IISユーザにAdministatorsを入れたりしたのですが、それでも全く動きません。


また、かつての『PerlでIIS−CGIからEXCELを起動すると『アクセスが拒否されました』になったら』でもなかったのです。


で結局、ブックのアクセス許可*1ドメインユーザのログイン時だけの設定になっていたのです。


つまり、普通にログインするとドメインユーザになる設定になっていたのでブックをオープンすることができ、CGIからだと、ドメインユーザでないので、ブックをオープンできなかったのです。


とりあえず、原因はわかりました・・・。

*1:アクセス許可の設定は、Excel2003ではファイルメニューにあります。Excel2000にはないですね。

2009-02-02 Microsoft SQL Server2000とXPファイアウォール

大体、TCP/IP通信が上手く行かない時は、アンチウィルスソフトかファイアウォールにブロックされています。

しかし、特殊なケースに遭遇しましたのでメモしときます。


CGI経由でWEBサーバー(WindowsXP)上のPerlスクリプトからDBサーバー(WindowsXP)へのSQL認証ログインが出来なかったのです。


しかし、CGI経由でなく、WEBサーバー上のコマンドプロンプトからそのPerlスクリプトを実行すると問題なくSQL認証ログインが出来ました。


で結局、DBサーバーのファイアウォールにsqlservr.exeを例外設定したら、CGI経由でもSQL認証ログインができるようになりました。


で、逆になぜ、コマンドプロンプトからだと例外設定なしにSQL認証ログインが出来たのか不思議に思い、調べてみました。


どうやら、「ファイルとプリンタの共用」の例外設定があると、sqlservr.exeの例外設定なしにコマンドプロンプトからSQL認証ログインが出来るようです。


これから先は私にはわかりません。あとは、プロの方よろしく・・・。

2009-02-01 天地人

NHK大河ドラマ「篤姫」もよかったけど、「天地人」もいいですね。

「天地人」の主人公の直江兼続は、私利私欲のない「義」に厚い人だったようです。


直江兼続は、幼名を樋口与六いい、直江家の姫:お船の養子となり、直江兼続となりました。

幼少の頃、利発さが上杉謙信の姉である仙桃院の目にとまり、上杉景勝の近習として取り入られました。


ドラマでは、幼少の兼続は、寺修行が辛くて実家に帰ってしまい、少年景勝が向かいに来る、あの名シーンになりました。


後に、兼続は上杉家の使者として初めて織田信長と接見したとき、信長に義の精神をぶつけるのですが、信長は古くさい考えと一蹴します。


しかし、「義」に厚い性格は、関が原で負けたあと、120万石から30万石に減らされた、約6000人の家臣のいる上杉家をリストラすることなく、立て直したのです。


イメージとしては、信長がアメリカ型の個人能力主義に対して、兼続は日本型の年功序列主義だったのですね。


リストラの嵐の今(2008/2現在)、兼続のような経営者は、いないものですかね・・・。


ちなみに、天地人とは、「天の時、地の利、人の和……いにしえよりこの3つが揃った武将だけが天下を収めることができると言われている」と信長がドラマのなかで言っていましたね。

2009-02-01 「はてダ(はてなダイアリー)」で被リンク数を自動で稼ぐ方法

被リンク数とは、自ページ以外のページから自ページへリンクされている数です。

そして、被リンク数が多いほど、検索結果では上位に表示されるようになるのです。


たとえば、「はてダ」では、「設定」の「日記全体の設定」で「日記タイトルを日記のトップページにリンクする」というのがあります。


こいつをチェックすると、日記の記事を書く数分、「日記のトップページ」の被リンク数が増えることになるのです。

したがって、日記を書けば書くほど「日記のトップページ」が検索結果で上位になる可能性が大きくなるわけです。


つまり、「はてダ」で被リンク数を自動で稼ぐ方法とは、「日記タイトルを日記のトップページにリンクする」をチェックすることでした!!


ただし、チェックしても、日記を書かなければ意味がありません。

2009-02-01 グーグル検索結果すべて「コンピュータに損害を与える可能性あり」!!

問題のあるサイトのリストは、StopBadware.orgという非営利団体から提供を受けており、StopBadware.orgは機械検出ではなく、手作業でこのリストを作成していた。

 そして今回Googleが受け取ったリストの中には、「人的ミス」(Google)によって、「/」というものが入っていた。これが「すべてのURL」と解釈され、結果としてGoogleからどのサイトにもアクセスできなくなったのだ。ちなみに、これはGoogleプロパティのサイトも例外ではなく、Google自体やGmail、YouTubeなどにもアクセスできなかった。

http://japan.cnet.com/news/media/story/0,2000056023,20387408,00.htm

さすが、グーグル! 凡ミスでも世界的ですね。

とにかく検索で、グーグルがだめなら、ヤフーがあるわけで、あまり慌てないことですね。

2009-02-01 コマンドプロンプトの横幅を調整する!

Windowsでは、CUIやMS-DOSの時代の互換性を残すためにコマンドプロンプトが用意されています。

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


コマンドプロンプトのウインドウの縦幅はマウスで簡単に変えられますが、横幅はマウスでは変えられません。

これ、MS-DOSの時代の互換性で、わざとそうなっていると思っていたのですが・・・。


実は、コマンドプロンプトのプロパティのレイアウトタブで簡単に横幅も変えられますね。

コマンドプロンプトのプロパティは、タイトルバー左端のアイコンを右クリックし、プルダウンメニューの一番下にあります。


ちなみに、「画面のバッファのサイズ」と「ウインドウのサイズ」の違いは、「ウインドウのサイズ」が物理的なサイズなのに対して、「画面のバッファのサイズ」は論理的なサイズですね。