トップ 最新

2006-01-01

λ あけましておめでとうございます

ことよろ

初詣は湯島天神を通過だけしてきた。

λ Nintendo WiFi connection

年越しイベントの前後は全然つながらなかった。設定変更なしで朝はつながっていたのでこっちのせいではないと思う。

まあインターネットなのでNintendoのサーバのせいとも限らない訳だが、


2006-01-02

λ Write Great Code Vol.1

個人的には新ネタなし。

後輩用の教科書としてはよさげだ。


2006-01-03

λ BBexcite解約

ADSLのプロバイダー契約を解約するの忘れてた。 今月の課金が発生するため、アカウント全体の削除は来月までできない。

λ [.NET] RSAParameters

Serializable だっていうから、シリアライズした時にてっきり全部中身を出力してくれるのかと思ったら、 多分公開鍵部分しか出力してくれてなかった。

まあそれなりの扱いをしなきゃいけない訳ではあるが。


2006-01-04

λ [.NET] ReportViewer Controls

ReportingServices のドキュメントだけ読んでたら全然分からなかったのだが、 ASP.NET に ReportingServices が生成するレポートを貼り付けることが可能。

直接表示しないで、Renderした結果を PDF にしてダウンロードさせることも結構簡単に出来そうな雰囲気。 ReportViewer は裏では WebService で通信していて、WebServiceに対するプロキシオブジェクトみたいな感じだ。 SOAPさえしゃべれれば.NET環境じゃなくてもRenderした結果の取得はできる? (当面はやらんけど)

画面レイアウト作業は基本的に苦手なので、そういう作業を別の人にまかせられるVisual環境はありがたい。


2006-01-05

λ [.NET] RSAParameters 続き

RSACryptoServiceProvider の ExportParameters の時点で KeyContainerPermission を要求するということで、 開発環境じゃないIISマシンに移管したところでエラー発生。

ついにコードアクセスセキュリティ の設定で caspol.exe を使わなきゃいけなくなってきた。 が、それ以前にdllに署名しないといかんようだ。 コードアクセスセキュリティのところ手足のようには使えてないんでちゃんと勉強せんと…

λ BeTrusted SSLサーバ証明書乗り換えキャンペーン

他社証明書の残存期間を無料で発行してくれる。

これってSSL123みたいな実在証明がぞんざいな格安証明書をとってすぐに乗り換えでもやってくれんのかなあ。 日本語のWebシールがどーしても欲しい時は検討してもいいかも。

λ [.NET] asp:Login ログイン情報を保存する の謎

ログイン情報を保存する というチェックボックスは、 なんとなく常識的には「IDとパスワードをクッキーで保存してくれる」 んじゃないかという機能のように思えたのだが、全然違う機能だった。

これは、ログインした状態をクッキーで50年保持する機能。 ブラウザを閉じてもログインした状態を保持してくれるが、自分でログオフした場合は状態はクリアされる。

ログイン画面が明示的には表示されないようなタイプのサイトではよいが、 mixiのようにトップにログイン画面を置くような場合には大変まぎわらしい。


2006-01-06

λ [.NET] ASP.NET でコード アクセス セキュリティを使用する

.NET Framework 2.0 Configuration ツールで設定するのかと思っていたら、Web.config 経由だったのが判明。

そこに至るまでには Essiential .NET を読み返し、 ASP.NET動作専用のアカウントで caspol -resolveperm 〜\Bin\App_Code.dll とやって

アクセスを許可する =
<PermissionSet class="System.Security.PermissionSet" version="1" Unrestricted="true"/>

としか出ないなあとか無駄な調査をやっていた。

ビジネスロジックもプレゼンテーションも自力開発する際は、ビジネスロジックのDLLを 特権コードをサンドボックス化する に従って 公開メソッドで必要な権限は 「SecurityAction.Assert を使って呼び出し元の権限はチェックしない」にしておく。 でもって ビジネスロジックのDLL をGACにインストールしてしまえば、「GACにあるものはデフォルトでFullTrust」なので 動作するようになる。という方針が一番簡単そうだ。

log4net.dll に関しては StrongName に対する FileIOPermisson を定義したポリシーを設定してログの書き込み先を制限しといた方がいいかも?

しかし何の設定もしてない状況だった時 ローカルAdministrator で動かすと拒否されないのに、 IIS_WPG グループに参加しているASP.NET動作専用のアカウントで動かすと拒否される理由は未だにさっぱり分からん。

λ [.NET] JetBrains .NET Power Pack

dotTrace Profiler だけのつもりだったけど、ReSharper 2.0 へのアップグレード権つきで+$50だったら買っちゃえみたいな。

1月15日まで。

λ TortoiseSVN ChangeLog

VisualStudio.NET対策のために .svn の代わりに _svn を利用していた環境について

NEW: Setting the environment variable SVN_ASP_DOT_NET_HACK makes TSVN use '_svn' as the Subversion admin dirs instead of '.svn'. A restart of Windows is required for this to take effect. (Stefan)

これで TortoiseSVNの配布物がひとつになった。素晴らしい。

λ [.NET] ASP.NETでのWebアプリケーションのエラー処理

ASP.NET内で発生したエラーはとにかく詳細に記録する、ってのを Global.asax に記述してみた。

void Application_Error(object sender, EventArgs e) 
{
    System.Text.StringBuilder str = new StringBuilder();
    str.Append("Path: "); str.Append(Request.Path); str.Append("\r\n");
    str.Append("User: "); str.Append(HttpContext.Current.User.Identity.Name); str.Append("\r\n");

    str.Append("Request.Params::\r\n");
    foreach (string key in Request.Params.Keys)
    {
        str.Append(key); str.Append("="); str.Append(Request.Params[key]); str.Append("\r\n");
    }
    str.Append("Session::\r\n");
    foreach (string key in Session.Keys)
    {
        str.Append(key); str.Append("="); str.Append(Session[key].ToString()); str.Append("\r\n");
    }

    システムLogger.Error(str.ToString(), Server.GetLastError());
}

システムLoggerは例によって log4net のラッパー。

クラシックASPでIISのログに含まれる 500 を見つけて想像するよりは随分問題箇所の特定が楽だ。

Sessionに埋め込んだDataSetに関しては、ToString() メソッドをoverrideして追跡に必要な情報を出力するようにすると更によい。 partialクラス万歳。


2006-01-07

λ [.NET] RSAParameters 続々

実際にCalPol.exeとか .NET Framework 2.0 Configuration でポリシーの設定をして、KeyContainerPermission が付与されない環境で System.Security.Cryptography.RSACryptoServiceProvider.ExportParameters を呼んでみた。 エラーの時にはどういうpermissionsetが与えられた環境なのかも出力してくれるのね。

発生する例外は SecurityException (この記事末尾参照)であって、ASP.NET で発生した Exception Details: System.Security.Cryptography.CryptographicException: 指定されたファイルが見つかりません。 ではない! ASP.NET で発生していた理由は、本当にファイルがないのかもしれんなあ。動作アカウントに関連した C:/Documents And Settings の下に ユーザ用のキーストアが無いとか。

(1月9日追記: 一度そのアカウントでローカルログオンしたら解消した。この予想が合っていた証拠が増えた。)

今回はSmartCardってわけではなくて、ASP.NETで利用環境が閉じてるのでむしろ managed なクラスが欲しいところだ。

Unhandled Exception: System.Security.SecurityException: Request for the permission of type 'System.Security.Permissions.KeyContainerPermission, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' failed.
   at System.Security.CodeAccessSecurityEngine.Check(Object demand, StackCrawlMark& stackMark, Boolean isPermSet)
   at System.Security.CodeAccessPermission.Demand()
   at System.Security.Cryptography.RSACryptoServiceProvider.ExportParameters(Boolean includePrivateParameters)
   at hoge.Main(String[] argv)
The action that failed was:
Demand
The type of the first permission that failed was:
System.Security.Permissions.KeyContainerPermission
The first permission that failed was:
<IPermission class="System.Security.Permissions.KeyContainerPermission, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
version="1"
Flags="NoFlags">
<AccessList>
<AccessEntry KeyStore="User"
ProviderName="Microsoft Strong Cryptographic Provider"
ProviderType="1"
KeyContainerName="CLR{05628A34-E00C-4FA9-B752-1074597FAC0D}"
KeySpec="1"
Flags="Export"/>
</AccessList>
</IPermission>

The demand was for:
<IPermission class="System.Security.Permissions.KeyContainerPermission, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
version="1"
Flags="NoFlags">
<AccessList>
<AccessEntry KeyStore="User"
ProviderName="Microsoft Strong Cryptographic Provider"
ProviderType="1"
KeyContainerName="CLR{05628A34-E00C-4FA9-B752-1074597FAC0D}"
KeySpec="1"
Flags="Export"/>
</AccessList>
</IPermission>

The granted set of the failing assembly was:
<PermissionSet class="System.Security.PermissionSet" version="1">
<IPermission class="System.Security.Permissions.FileDialogPermission, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" version="1" Access="Open"/>
<IPermission class="System.Security.Permissions.IsolatedStorageFilePermission, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" version="1" Allowed="ApplicationIsolationByUser" UserQuota="512000"/>
<IPermission class="System.Security.Permissions.SecurityPermission, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" version="1" Flags="Execution"/>
<IPermission class="System.Security.Permissions.UIPermission, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" version="1" Window="SafeTopLevelWindows" Clipboard="OwnClipboard"/>
<IPermission class="System.Security.Permissions.UrlIdentityPermission, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" version="1" Url="file:///c:/temp/hoge.exe"/>
<IPermission class="System.Security.Permissions.ZoneIdentityPermission, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" version="1" Zone="MyComputer"/>
<IPermission class="System.Drawing.Printing.PrintingPermission, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" version="1" Level="SafePrinting"/>
</PermissionSet>

The assembly or AppDomain that failed was:
hoge, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
The method that caused the failure was:
Void Main(System.String[])
The Zone of the assembly that failed was:
MyComputer
The Url of the assembly that failed was:
file:///c:/temp/hoge.exe

λ WindowsXP で フォントキャッシュ が壊れた場合の修復方法

Safeモードで、%SystemRoot%\system32\fntcache.dat を消すというだけではあるが、結構探すのに手間取ったのでメモ。

λ 確認メールに URL

メーリングリストの登録などで、登録確認のためにURLを埋め込んだりするが、

をURLEncodeして埋め込むとWebメールで問題が起きる模様。

例えば http://example.com/confirm/key=abcdefg%2bhij というのが、URL表示の時点で http://example.com/confirm/key=abcdefg+hij と解釈されてしまい、 最終的に受け取った際にkeyの値が "abcdefg hij" と+の部分がスペースになっていた。

今回乱数をBase64エンコードした文字列をUrlEncodeしてつっこむという仕様のものを作っていて、 通常のローカルメーラを使ってる環境でのテストでは全く問題が出ていなかったので発見が遅れた。

Base64で利用される記号は +/ であるが、これを ._ に変更したBase64改エンコーディングを利用することにした。 なんかUrlEncodeと相性のいいエンコード方法が規格化されないもんかしら。


2006-01-08

λ smbclient

回線細いところで作業するには、リモートのFreeBSDマシンに smbclient あると便利だな。

ちょっとしたログは、RDPclientのclipboard経由で転送してしまったりするけど。

λ pairon

4月1日にしか注文できないのが残念だ。

λ Microsoft Visual Studio Team Suite with MSDN Premium Subscription ステップアップ パッケージ

定価だと+75万, サブスクリプションレベル変更だと +50.4万 のようだったのだが、このぐらいだったら何とか手が出せるかも。

あとはTeamFoundationServerがどうなるかだな…


2006-01-09

λ R-Studio version 3.0

USBメモリの中身を飛ばしてしまった知人のデータ復旧作業をしてみた。ハードウェア的な損傷ではないので dd conv=noerror は必要なし。

R-Studioを使って ・Imageファイルを作成 ・Imageファイルに向かってScan ・Recover という順での作業をした。なんかメールのMIMEパートがテキストファイルの断片として大量に出てきたけど、 まともなファイルはほとんど復旧できず。 FAT32ファイルシステムで結構断片化が進んでいた模様。

USBメモリだと寿命をかせぐために書き込み時に、同一物理メモリばっかり使わないようシャッフルしている可能性もあり、 それが復旧を困難にする原因になっているかもしれない。


2006-01-10

λ HTTP ヘッダを見たい!

Windows環境だと、Fiddler が超便利。

ただし、こういうProxy型やパケットキャプチャ型だと、SSL通信の中身は分からんので、 Firefox拡張の LiveHTTPHeaders というのは収穫だった。 個人的にはHeaderと言わず中身も含めてもりもりキャプチャして欲しいことがあるが。

λ [.NET] Visual Studio 2005 Team System を使用しての Unit Test Framework の単体テストおよびソース コード生成

VSTS は、プライベート アクセサ、または "プライベート" メソッドおよびプロパティに基づく単体テストを生成する機能を備えるラッパー クラスを使用してプライベート テストをサポートします。
プライベート メソッドのテスト機能 - この記事の前の部分で説明したように、Unit Testing Framework には、プライベート メソッドを "プライベート アクセサ" クラスを使用してテストする機能があります。コード生成エンジンは、これらのアクセサ クラスに関連する "Plumbing code" のすべてを作成します。

こいつはびっくりだ。パブリックメソッドしかテストできないと思ってたよ。

λ ソフトウェアファクトリー―パターン、モデル、フレームワーク、ツールによるアプリケーションの組み立て

全体としては悪くないはず、なんだけど、読んでていまいち頭に入らんかった。

λ 「積読」するならフォトリーディング

とりあえずぼけーと本を流し読みしといて、後から「何かこの話どっかで読んだぞ」と思い出せるのがじゅーよー。 詳細はすぐに思い出せなくてよい

「どっかで読んだぞ」の時に探し回って有限時間で見つかればよいのだ。 多分俺は中学生以前から無意識に実践している。

ただし小説でフォトリーディングをやると、時たま全く理解できないまま読み終わることがあった。

λ Intel Mac 間近か?

MacOSX 内(または並列)の仮想マシンで、Windowsが高速に動くようになるはず。 Apple,Intel,Microsoft すべてが美味しい方向性なので、時期はともかくとして実現するのは間違いないだろう。

タイミングは次期OSXかなあ。


2006-01-11

λ [.NET] Uploading Files in ASP.NET 2.0

複数ファイルをいっぺんにアップロードできるようになったのか。

ここで説明されているFileTypeの制限は、ファイル名の拡張子を見るだけなので相手がMacだと役に立たんなあ。 ファイルタイプを制限したいなら、ファイルの先頭部分を取り出して判別する方が正道と思われる。

Mac が application/x-macbinary で送ってきたときのPHPでの対処法。 リソースフォークから実体部分のLengthを取り出している。

λ 使える!確率的思考

個人的な思考パターンへの影響としてはあんまりなかったけど、心にひっかかったトピック:

  • 幾何分布だと「平均より事象が起きやすいように感じるのは、無限回という確率が微小に存在するが、それは実感できない」
  • 貨幣は優柔不断の確保(超越した流動性)

λ Gemini Screen Capture(Capture Toolから、ダイレクトにBTSに登録)

影舞生活であんまり困ってなかったんだけど、スクリーンキャプチャをBTSに投げられるってのは Windows依存とはいえかなり有用だな。

テスト部隊が「むしろ素人歓迎」な状況な場合は特に有用そうだ。

λ Intel Mac は BIOS? EFI?

どうもBIOSらしい。FireWireブートしないんじゃ萎えですよ。BIOSのくせにFireWireブートするのかもしれんが。

12日追記: EFIですた。 やはりBIOSの呪縛から逃れる道は Mac 先導で作られるのか。やた!

どーも初期に確実な情報がなくて困ったのだが、EFIなんて知ってるのIA64に興味のあったサーバ屋だけだからな。 昨年6月4日の予想は半分当たったことになる。

NorthbridgeがIntelだったのは予想外だ。


2006-01-12

λ [FreeBSD] SecurityAdvisory 4連発

最初の3つをみてまあ大体こんな感じで作業開始した。

cd /usr/src
make update
cd /usr/src/gnu/usr.bin/texinfo/libtxi
make obj && make depend && make
cd /usr/src/gnu/usr.bin/texinfo/texindex
make obj && make depend && make && make install && make clean
cd /usr/src/usr.bin/ee
make obj && make depend && make && make install && make clean
cd /usr/src/gnu/usr.bin/cpio
make obj && make depend && make && make install && make clean

src/sys/netinet/ip_fw2.c にも更新が入ってるので、その後カーネル更新。

FreeBSD-4.11 なマシンはカーネル更新なし。

ipfw2 は使ってないし、まあそれほどインパクトのあるSAでもないのでリモートマシンはおいおいやる。

(13日追記)/usr/src/gnu/usr.bin/texinfo/libtxi での再構築が必要だった。最初のSAメールに含まれてたスクリプトが間違ってたようだ。

λ [.NET] VS 2005 Web プロジェクト システム: Web プロジェクト システムとは。そして、なぜこうしたのか。

新規作成メニューが分離していることによる一番最初の混乱以外は、VS.NET2003よりずいぶんよくなっているとは思う。

λ CollabNetより(EFIの)Foundationコードおよびドライバ開発キットがリリースされる予定

Subversion開発元のCollabNet!

Intelのプレスリリースもあるのね。 EFIはBIOS同様後からアップデートもできるだろうし、EFIなPC(Macでなく)が出たら買っちゃうかも。 そしてそこでMacOSXは動くのだろうか…

λ Orenosp Secure Reverse Proxy

SSLProxyで、かつURL書き換えを少ししたかった 時の話。 VisualStudio2005の開発ASP.NETサーバから REFERER チェックのかかる外部サイトとの連携をさせたいというのが元々の状況。

多分apache2の mod_ssl + mod_proxy でもできるんだけど、 Windows用のバイナリがなかったので、Orenosp を使ってみた。

設定ファイルがかなりstunnelチックな風情。やりたいことの片方が1行で済んだのでとりあえずの役には立った。

proxy_pass_by = url lis-ssl://mimori.org/ http://127.0.0.1:1234/Site/

コンテンツに含まれるURLの書き換えまでしたいんだったら、Orenosp を購入する価値はあるかもしれない。

とはいえapache2でもproxyの途中にコンテンツフィルター噛ませられなくもなさそうな。 apache2.2だったら mob_proxy_balancer もあるしな。 1ヶ月以内にSSLとproxyを有効にした apache2 バイナリを作ろう…

λ [FreeBSD] Postfixの設定でClamSMTPとSpamAssassinを利用する

SpamPDってのがあるのか。ふみふみ。FreeBSDの ports/mail/spampd にもあるな。

Rubyフィルタ方式は概ね順調だけど、巨大ファイルの受け取りで失敗することがあってどうしたもんかなあと、たまに思っていた。

λ コンカレントとパラレル

単純に英単語として concurrent は con-current なんだから「一緒にカレントって感じ」で、 パラレルは平行とか並列とか。 なんとなく俺的イメージを図にしてみた。

コンカレントは重なってる パラレルは線が並んでる

それがコンピューティング上どうなのか、ってのは元記事通りだろうと思う。

本日のツッコミ(全1件) [ツッコミを入れる]

λ stealthinu [ClamSMTPとSpamAssassinのフィルタの件で、参照させていただきました。ありがとうございます。 MLで..]


2006-01-13

λ Javaの魅力は言語仕様以外にある

Javaが登場して熱狂的ブームだった時期に少し触って「俺的印象はダメぽ」と思ったのは、 objective-C と比較してだったかな。俺のオブジェクト指向言語の源流は objective-C/smalltalk な訳で。当時は Eiffel も若干勉強してた。

この10年無理矢理にでも時流に乗った言語故に揃ったライブラリの充実は確かに利点だが、 それをMS資金力で更にムリヤリ充実させている .NET Framework。

λ 三井住友銀行 ワンタイムパスワード

欲しい。けどもう口座増やしたくない。

新生 か 埼玉りそな でこういうのやってくんねえかなあ。

λ [.NET] C# マイコーディングルール

枠組みと単体テストをどわーっと書いている間のマイコーディングルール

  • 書かないと次の単体テストに失敗する時の未実装部分: throw new NotImplementedException()
  • 書かなくても単体テストは通るが、結合できないはずの未実装部分: // UNDONE: コメント
  • 書かなくてもしばらくはなんとかなりそうな未実装部分: // TODO: コメント

枠組みが出来たら上から順番にやっつける。

VSTSのクラスダイアグラムのあたりをもうちっと勉強すると、この辺のが何かあるのかもしれぬ。


2006-01-14

λ 「インフレ」をどうやって子どもに説明しようか

正月に読んだこの記事は結構印象に残っていて、「インフレを説明する がらがらポン」になるといいなと思いながら、 コンカレントとパラレル の図を描いてました。 ちょっと感動とまで言って頂けて「結構嬉しい」。

池上語録:

まず首都圏向けのニュースのキャスターになったときに、初めて他人の書いた原稿を読む立場になってみて、「なんてNHKの原稿ってわかりにくいんだろう。やさしい話を難しく、面白い話をつまらなく伝えている」と愕然としたわけです。
私も一応デスクで他人の原稿に手を入れることができる権限を与えられていたので、まず原稿を書き直すわけですよ。書き直しをしたり、あるいは最初につかみの表現を入れてみたり

首都圏向けのニュースの中の1コーナー、845情報の後のダジャレは俺的伝説。毎回ドキドキしながら待ち構えてた。 NHKアーカイブス で検索しても 845情報はなさげだな。 ちょっとでいいから公開してくれないかな。

本日のツッコミ(全2件) [ツッコミを入れる]

λ プティ [私には遠距離の彼がいます。 最近様子がおかしいので、問い詰めに問い詰めた結果、パソコンのパスワードおしえてと言ったの..]

λ kamiya [リカバリーディスクを使うと 自分で考えたパスワードに変更できます。]


2006-01-15

λ [FreeBSD] Ruby 1.8.4

本業多忙につき日曜といえど Ruby の更新はちょっと怖い。

λ なぜ関数プログラミングは重要か

ここには tarai は出てこないのね。

メインストリームのロジックは 関数プログラミング で美しくできていて、 現実世界とのやりとりを後からぺたぺた貼り付ける、 あるいは針を突き立てるような感じの AOP 可能な言語があるといいのかなあ。

現在は C# でメソッドに属性を後からぺたぺた貼り付ける感、が段々身になってきたところ。

λ [.NET] RSAParameters の ASP.NET でのエラー解決したはず

CSP for this implementation could not be acquired CryptographicException error during instantiation より

You have to instruct RSACryptoServiceProvider or DSACryptoServiceProvider to use machine key store (as in the following sample code) in scenarios such as a Web service, ASP Page, or COM+, where the user profile is not loaded by the system for performance reasons.

原因はまさしくこれだろう。RSACryptoServiceProvider を初期化する時に、「MachineKeyStoreを使え」という指定をする。

CspParameters CSPParam = new CspParameters();
CSPParam.Flags = CspProviderFlags.UseMachineKeyStore;
RSACryptoServiceProvider rsa = new RSACryptoServiceProvider(CSPParam);

エラーのタイミングとエラーメッセージが違うせいで見つけるのに苦労した。

ちなみにこれをしなかった場合のエラー発生のタイミングは、「現在ローカルログオンしていない」という条件だった。 「ローカルログオンを一度でもすれば」ではなく。

λ [.NET] TableAdapter が ID 列を更新してエラー

データセット側の ID列の値が {0,1,2,3} で、データベース側の設定で ID int IDENTITY(1,1) なフィールドに割り当てられている時、 最初のID=0の列をINSERTした際に、データベースへのINSERTへの結果として ID=1 が割り当てられ、 データセット側に値を反映させる際に「データセットの側のUnique 制約」にひっかかってエラーになる。

データセット側に値を反映させる処理を自動にしなきゃいいし、パフォーマンス上はその方が望ましいんだけどさ。


2006-01-16

λ バージンココナッツオイル

パラオで買ってきたバージンココナッツオイルをここ数ヶ月風呂上がりにリンス代わりに使っていて、 すこぶるいい感じ。1本8ozで $12.5 だったんだから安いもんである。

冬場の常温では固まってしまうのだが、風呂に入っている間に湯船に浮かべれば溶けてくれるのでこれも問題なし。

λ TortoiseSVN 1.3.0

自分で環境変数設定しなくても、インストール時に "ASP.NET Hack" という項目が現れる。

λ 続・「サニタイズ言うなキャンペーン」とは

ASP.NETで書いていて SQLinjection対策に関しては「とにかくパラメタライズドクエリ、文字列の結合するな」という方針なので、 いわゆるサニタイズは関係ない。

ASP.NET 2.0 だと、フレームワークが勝手に入力文字列のチェックをするのがデフォルトなので、 何もやらないと危険なinputに対してエラーを出してくれる。 まあ普通はエラー画面のまま放置はありえないので、フレームワークのチェックを外して項目ごとに自分でチェックしなきゃいけないわけだが…

まあセキュリティ意識がなくとも「ふつーにコーディングしているとそうしないといけない」フレームワーク重要。


2006-01-17

λ BIGGEST BIZ

やはり最高! このシリーズ、松尾貴史パワーの方が圧倒的で ひろひと大王があんまり怪しくないというのが、怪しさを表していると思う。


2006-01-18

λ NTT東日本レンタル機器 ご返却のご案内

Bfletsマンションの工事の時に、担当者がADSLモデムとスプリッタを持っていってしまったのに、 「返却しろ」という案内が来た。

確かに本体だけ持っていってしまったので返却キットと箱は残っているわけだが。

「NTT側で明らかに担当がはっきりしてるだろう」という案内なのに、問い合わせ先電話番号が 116 ってのは、 その後のたらい回しを考えるとかける気失せる… 還付先の住所は書いてあるんだよな。

λ MCP オンライン コンシェルジェ

(MCPの人しか見れない) 無料でチャット相談ができた上に、なぜかマウスプレゼントしてくれるそうだ。

オンライン コンシェルジェは、技術情報の中からすばやく目的の情報を検索することをサポートするサービスであり、技術的な質問にお答えするサービスではではございません。ご了承ください。

自分で探すより速いのかどうかやってみないと分からないつーか。

λ みずほダイレクトのセキュリティ対策

英数6桁から最大32桁までのログインパスワードをご登録いただけるようになります。

これなら少しは使ってみる気になる。22日から。

λ WUXGA液晶搭載ノート

今開発メインで使ってるのは 2048x1536 液晶だがさすがに字が小さすぎて情報量的メリットがないんだよな。 17インチWUXGAは使いやすいのかしら。


2006-01-19

λ C#: 昨日、今日、明日: アンダース ヘルスバーグへのインタビュー Part 2

LINQは、(SQL,XMLに留まらない)オブジェクトに対するクエリ言語。

(Java登場前夜)C++ と ObjectStore で出来ていたイケてた感じが、やっとメインストリームにやってくるのかもしれない。

大抵そうだと思うんだけど、カプセル化の目的は隠すことだって考えるよね。それはカプセル化の目的じゃないんだ。目的は何かを簡単に使えるようにすることで、下にあるものを隠すことじゃない。

この一文は奥が深いな。

λ 昨日の cacti グラフ

なぜか穴だらけ。特にそれらしいログはなさそうだが…

グラフに穴

λ [.NET] Instrumenting and Re-Signing Assemblies

MSDN VS Team Ed w./Suite にアップグレード完了。 コードカバレッジ機能を初めてまともにやろうとして、コード署名のところですこしはまった。 とはいえ VisualStudioだと、コードカバレッジ指定する画面に、鍵ファイル指定する欄がこれみよがしにあるので指定するだけだったのだが。

やってみたら、70.57% で結構一所懸命テスト書いたのにーと思ったら、自動生成されたDataSetやTableAdapterのとこが 0% とか出てたりして、 そこをわざわざ潰す作業はありえないな。 あとは、基本的に出ない例外発生の行に行かないとか。

なんだろう、イテレーション毎に一度通して、不足しているテストの枠組みをがしがし作るっていう感じなのかしら。


2006-01-20

λ NFL Steelers vs Colts

このPlayoffで一番の注目カードだったが、期待に違わず最後の最後まで面白い試合だった。 こうなったら Steelers The Bus(Bettis) にスーパーボウルに行って欲しい。

しかしなんといっても Steelers 一番の見所は Polamaru Power! アイシールド21にも早晩 オールラウンドディフェンダー ほら丸 が出てくるね。 ベンガルズの茶渡 尊尊もおいしかったが、ほら丸が 今一番おいしい?キャラだ。

λ Selenium 生活

FireFoxのSeleniumRecorderだと問題起きなかったのが、XPSP2 の IE6 にもっていくと色々問題が。

  • ローカルファイル上だと動作させずらい。TestRunner.hta なら動くが、パラメータの渡し方が不明。開発サイトに置く方が無難。
  • ElementLocator のうち、xpath がそのままで動かない。xpathはFireFoxでも遅くて生産性落ちるので id 指定に変更。
  • FileUpload フィールドに値を入れてもファイルを送ってくれない。[参照]ボタンを押してファイルを選ぶと同じ文字列なのに送ってくれる。そーゆーセキュリティ強化がされてるのか? しょうがないので waitForValue で手入力することにする。

(27日追記) FileUpload フィールドの件は、FireFoxのSeleniumRecorder環境で動く方が特殊のようだ。


2006-01-21


2006-01-22

λ PKI 安全通信

認証パスの検証ができない証明書によるSSL通信は、SSL暗号通信として正しく動作しないのであって、盗聴され得るものなのだということをいいかげん知ってほしい。

「プライベートCAで発行した証明書」そのものについては、ActiveDirectory環境でのプライベートCA証明書の配布機構の元での運用は アリかなあと思っているところではあるのだけれど。(この場合は警告は出ない)

ここは『もしかすると、高木氏は「『警告なんて無視すれば良い』なんて状況を作り上げたら』という反論が藪蛇で、 警告を無視しようという運用は明らかに許容しえない。

「SSL暗号通信は通信路がなんとなく暗号化されてればよい」という理解をしがちなのは「SSL暗号通信」という言葉そのものから来るイメージがあるからじゃないだろうか。

認証パスの検証を必須とするということを明確にするためにせめて「PKI安全通信」という用語はどうだろう。

そのまんまの日本語だと「公開鍵暗号基盤安全通信」。でも常用するのは アリエネーな。 「お墨付き通信」だと盗聴できないという機能が表されてないし。

λ VisualStudio2005 を入れたので デフラグ

MSDN,SQL2005と合わせると 6GB 以上インストールしてるかもなので、インストール後にはデフラグをかける。 38%ファイルの断片化とか言ってるよ。


2006-01-23

λ [.NET] テーブルアダプタのSQL文を データセット定義 の図(裏はXML) に書く

SQL文だけ書けば自動化してくれる、ということ以上に

  • テーブル定義に変更があった
  • データセットの構造変えなきゃ
  • データセットに値を渡すSQL文変えなきゃ

という一連のシチュエーションで、SQL文の変更を忘れにくいというのがメリットなんだなと思った。

データセットにFillする時のSQL文のみならず、スカラー値を返すクエリも書ける。 要するにデータアクセス層はここで完結させるべきで、partial class のパワーもあって C#コードを追加することも可能。

要はデータアクセス層なのではあるが、図がほぼ自動的にメンテナンスされるありがたさ。

λ [.NET] dotTrace 1.1 で WebApplication のプロファイリング

impersonate (偽装) により実行アカウントを変更した場合に、dotTrace 側が例外を起こしてプロファイルが取れないことがあった。 dotTraceの中なので詳細は分からないが、CryptographicException だったんでその辺は外部からちょっかい出せなくてもしょうがないかも。

プロファイリング取った結果は、DataSet+XmlSerialiver のあたりで上位7位。 自分で書いた部分のホットスポットは8位でやっと登場して 2.24%。 この部分も予想通りのループにあったし、さすがにバックエンドロジックを一人で書いただけあってほぼ想定内だ。

λ SQL2005 Reporting Services の中の文字列を整形する

Reporting Services の中は VB しか使えなさそうなのだが、VBの流儀で書きたくない俺。

かといって、別プロジェクトで C# のカスタムアセンブリを作る のも面倒だと思っていたが、カスタムアセンブリの参照が出来るんなら System 名前空間は当然使えるよな。

郵便番号の3文字目の後ろにハイフンを入れる、textbox への Value の指定:

=System.Convert.ToString(Fields!郵便番号.Value).Insert(3, "-")

これならC#でaspx書いてるのと全然変わらないぞ! しかも式ビルダの中ではちゃんとIntelliSenseが効く。

ちなみにこうなる直前は

=CStr(Fields!郵便番号.Value).Insert(3, "-")

と書いていた。VB.NET って奴はなかなかのヘテロ環境である。


2006-01-24

λ load average 400+

手も足も出ない。

λ MSDN2 Library

VS2005+SQL2005な環境専用。MSDN Library からのオンライン問い合わせをこっちに飛ばせるのかな?

つーかすでに飛んでいた。

λ IE Snapshot ACCALIA

IEでの印刷は、A4横 にすれば大体すむので、A4縦から横にデフォルト設定を変更してくれる方法が一番知りたい。

それでも駄目な時はPDF化するだろうけど。

λ [.NET] Building a DAL using Strongly Typed TableAdapters and DataTables in VS 2005 and ASP.NET 2.0

SelectCommand,InsertCommand,UpdateCommand,DeleteCommand を編集するところが 今までわからかったんだけど、 「テーブル名TableAdapter をクリックしてプロパティを表示」だったか。 (プロパティウィンドウ表示しっぱなしならクリックするだけ)

λ [.NET] SqlMembershipProvider でロックアウトから自動回復の実装

PasswordAnswerAttemptLockoutDuration は ActiveDirectoryMembershipProvider なら有効だけど、 SqlMembershipProvider になくてだまされたーと思って自分で実装してみた。

Default.aspx.cs にasp:Loginをはっつけた後のコード。

public partial class _Default : System.Web.UI.Page 
{
  protected void Page_Load(object sender, EventArgs e)
  {
      loginControl.LoggingIn += new LoginCancelEventHandler(loginControl_LoggingIn);
  }

  const int PasswordAnswerAttemptLockoutDuration = 30;
  protected void loginControl_LoggingIn(object sender, LoginCancelEventArgs e)
  {
      foreach (MembershipUser u in Membership.FindUsersByName(loginControl.UserName))
      {
          if (u.IsLockedOut)
          {
              if (u.LastLockoutDate < DateTime.Now.AddMinutes(- PasswordAnswerAttemptLockoutDuration))
              {
                  u.UnlockUser();
                  Membership.UpdateUser(u);
              }
          }
      }
  }
}

LoggingInイベントは、当初は OnLoggingIn 属性としてaspx側に書いていたら、 デザイナーの方で消されたのに別にエラーは発生せず、いつの間にか無効になっていたという事件も発生した。

イベントの追加は、どうせコード本体をC#で書くのでコード側でやった方がよい。 出来上がった行は長いけど、キー操作としてはたいしたことないし。+=[Tab] で右辺は全部補完してくれる。

λ SQL2005 Reporting Services から自動PDF出力

[Renderなんとか]みたいなメソッドを延々と探っていたのだが、 http://サーバ名/ReportServer/Pages/ReportViewer.aspx?%2fReport+Project%2fReport_example&rs%3aCommand=Render&rs:Format=PDF&パラメータ=1234 みたいなURLをたたくだけだった。 レポートに渡すパラメータも本当にそのまま指定するだけやん。 最初につかまえたドキュメントは URLでの表示形式の指定

ちなみにPNGを出力させたい時は、rs:Format=PDFの代わりに rs:Format=IMAGE&rc:OutputFormat=PNG&rc:DpiX=300&rc:DpiY=300 といったように指定する。 ドキュメントに出てくるデバイス情報設定 パラメータへのプレフィックスは rc: だ。


2006-01-25

λ ライブドア問題と民主主義

政治家の発言も「法律違反があったとすればホニャホニャ」と歯切れが悪い割りに、 トップニュースの一部になってたりしてなんじゃありゃでしたよ。

λ load average 再発

昨日は /var/log/messages がすべてswap_pager_getswapspaceで埋め尽くされていてきっかけになった時間が分からなかったのだが、 今日はつかまえられた。

Jan 25 06:32:14 usen kernel: swap_pager: out of swap space
Jan 25 06:32:16 usen kernel: swap_pager_getswapspace(16): failed
Jan 25 06:32:16 usen kernel: pid 31283 (ruby), uid 999, was killed: out of swap space
Jan 25 06:32:16 usen kernel: pid 31301 (ruby), uid 999, was killed: out of swap space
Jan 25 06:32:16 usen kernel: swap_pager_getswapspace(16): failed

なんとなくそんな気がしてたが、tdiary だったか。アクセスログを見て原因が判明。Yahoo?から月ごとの出力取得がまとめてきている。

203.141.52.51 - - [25/Jan/2006:06:21:37 +0900] "GET /~h/tdiary/200507.html HTTP/1.1" 500 540 "-" "Y!J/1.0 (http://help.yahoo.co.jp/help/jp/search/indexing/indexing-15.html)"
203.141.52.42 - - [25/Jan/2006:06:27:27 +0900] "GET /~h/tdiary/200409.html HTTP/1.1" 500 540 "-" "Y!J/1.0 (http://help.yahoo.co.jp/help/jp/search/indexing/indexing-15.html)"
203.141.52.50 - - [25/Jan/2006:06:22:13 +0900] "GET /~h/tdiary/200506.html HTTP/1.1" 500 540 "-" "Y!J/1.0 (http://help.yahoo.co.jp/help/jp/search/indexing/indexing-15.html)"
203.141.52.46 - - [25/Jan/2006:06:25:54 +0900] "GET /~h/tdiary/200403.html HTTP/1.1" 500 540 "-" "Y!J/1.0 (http://help.yahoo.co.jp/help/jp/search/indexing/indexing-15.html)"
203.141.52.36 - - [25/Jan/2006:06:25:56 +0900] "GET /~h/tdiary/200508.html HTTP/1.1" 500 540 "-" "Y!J/1.0 (http://help.yahoo.co.jp/help/jp/search/indexing/indexing-15.html)"
203.141.52.43 - - [25/Jan/2006:06:29:43 +0900] "GET /~h/tdiary/200307.html HTTP/1.1" 500 540 "-" "Y!J/1.0 (http://help.yahoo.co.jp/help/jp/search/indexing/indexing-15.html)"
203.141.52.44 - - [25/Jan/2006:06:29:31 +0900] "GET /~h/tdiary/200508.html HTTP/1.1" 500 540 "-" "Y!J/1.0 (http://help.yahoo.co.jp/help/jp/search/indexing/indexing-15.html)"
203.141.52.44 - - [25/Jan/2006:06:24:15 +0900] "GET /~h/tdiary/200412.html HTTP/1.1" 500 540 "-" "Y!J/1.0 (http://help.yahoo.co.jp/help/jp/search/indexing/indexing-15.html)"
203.141.52.36 - - [25/Jan/2006:06:28:17 +0900] "GET /~h/tdiary/200406.html HTTP/1.1" 500 540 "-" "Y!J/1.0 (http://help.yahoo.co.jp/help/jp/search/indexing/indexing-15.html)"
203.141.52.42 - - [25/Jan/2006:06:30:28 +0900] "GET /~h/tdiary/200506.html HTTP/1.1" 500 540 "-" "Y!J/1.0 (http://help.yahoo.co.jp/help/jp/search/indexing/indexing-15.html)"
203.141.52.39 - - [25/Jan/2006:06:24:29 +0900] "GET /~h/tdiary/200309.html HTTP/1.1" 500 540 "-" "Y!J/1.0 (http://help.yahoo.co.jp/help/jp/search/indexing/indexing-15.html)"
203.141.52.38 - - [25/Jan/2006:06:27:02 +0900] "GET /~h/tdiary/200512.html HTTP/1.1" 500 540 "-" "Y!J/1.0 (http://help.yahoo.co.jp/help/jp/search/indexing/indexing-15.html)"
203.141.52.40 - - [25/Jan/2006:06:22:32 +0900] "GET /~h/tdiary/200512.html HTTP/1.1" 500 540 "-" "Y!J/1.0 (http://help.yahoo.co.jp/help/jp/search/indexing/indexing-15.html)"
203.141.52.37 - - [25/Jan/2006:06:23:12 +0900] "GET /~h/tdiary/200504.html HTTP/1.1" 500 540 "-" "Y!J/1.0 (http://help.yahoo.co.jp/help/jp/search/indexing/indexing-15.html)"
203.141.52.43 - - [25/Jan/2006:06:26:34 +0900] "GET /~h/tdiary/200401.html HTTP/1.1" 500 540 "-" "Y!J/1.0 (http://help.yahoo.co.jp/help/jp/search/indexing/indexing-15.html)"

月ごとファイルはnamazu用に作った静的HTMLがいいか…と確認したら10月25日以降出力されてない! 月ごとファイルも生成してないし。

とりあえずapache2に100MBのメモリ制限かけてみた。

λ httpcfg

HTTPプロトコルが http.sys カーネルドライバになっているので、そいつに向かっての設定は httpcfg で行う必要があるというわけだ。 Windows XP SP2, Windows Server 2003 で有効。


2006-01-26

λ [.NET] How To: Configure MachineKey in ASP.NET 2.0

この キーの長さを探すことがよくあるのでメモ

  • For SHA1, set the validationKey to 64 bytes (128 hexadecimal characters).
  • For AES, set the decryptionKey to 32 bytes (64 hexadecimal characters).
  • For 3DES, set the decryptionKey to 24 bytes (48 hexadecimal characters).

λ [.NET] SQL Server 2005 HTTP エンドポイントを作成,権限設定サンプル

HTTP経由でSQLサーバにアクセスできる。 FreeBSDからSQLたたきたい時とかに便利そうだ。

また HTTPエンドポイントに対して GRANT で許可する時に、特定のユーザを指定することができ、 この特定のユーザが出来る権限を絞っておけば比較的安全と思われる。 基本はやっていい StoredProcedure を個別に指定、ということになるだろう。

λ ソフトウエア業界の「バカ世界地図」

.NET + Ruby 生活の俺はどうすれバインダー(笑) と書いてから思ったが、異システム間の binding はここでの重要な主題の一つだよな。

「Java VS Perl が論争になる境界として SQL が存在する」のが燃え上がる原因かな。 SQLという国境線で戦っているJava国とPerl国がある世界地図。

λ PowerConnect 3400

L2スイッチでPoE。こういう機器にもSSHログインでの管理がついてきたのは喜ばしい。


2006-01-27

λ ぺんてる エアペン

昔から文房具メーカーの中では、ぺんてる が一番好きなんだよね。 今週末までヨドバシ新宿に展示しているようなので見に行こう。

λ FreeBSD-SA-06:07.pf

近場のマシンはカーネル再構築してリブート。

SAの中身を確認したけど、 scrub fragment cropscrub fragment drop-ovl も未使用だったら影響なし、ということでいいのかな。 scrub の指定は今までのところもっとも多くても以下の通りだった。

scrub in all
scrub out all random-id

λ ジャパンネット銀行がワンタイム・パスワードを採用,利用者全員が対象

ここのところ振込作業は新生銀行ばっかりだが、JNB口座は当面維持する気になった。

λ Selenium で自動チェックできなそうなこと

ブラウザのBackボタンで戻ることの調査

[goBack]ってそのまんまなコマンドが用意されてたよ。

λ SQL2005 tablediff ユーティリティ

同じデータベースの同じテーブルに向かって比較しているのに、have different schemas と言われる。

Table [testDB].[dbo].[申込番号] on localhost and Table [testDB].[dbo].[申込番号] on localhost have different schemas and cannot be compared.
The requested operation took 0.2603588 seconds.

image型(BLOB)持ってるからという訳でもなく、intとnchar(1)だけのテーブルでも different schemas。どゆこと?

どうもcascadeする外部キー制約が怪しい。

λ YAMAHA RT/RTX でパケットダンプ

今まで隣のFreeBSDにまかせていたので使う機会がなかった。

nat descriptor log on     …NATディスクリプタのログ出力を許可
syslog notice on          …NOTCEレベル(フィルタ)のログ出力を許可
syslog debug on           …DEBUGレベル(デバッグ)のログ出力を許可
packetdump [インターフェース名] [キャプチャする数]

でいけるんじゃないかな(未確認)

λ Unit Testing MembershipProviders

SqlMembershipProviderによる Membership の挙動を、Web経由でなく単体テストしたい場面があって調査。 ここのURLが参考になりそうだ。

大体同じコードを書いたところ、 SQLサーバへの接続をしようとしてconnectionStringの取得に失敗してエラーというとこまではいったようなのだが、 最後まで詰め切れなかった。


2006-01-28

λ [.NET] 型付DataSet をフィールド長の違う別の 型付DataSet にシリアライズで送り込む

ある特定のフィールドについて MaxLength の違う型付DataSetに、シリアライズでデータを送り込んだところ、 送信元のMaxLengthが設定された状態の型付DataSetが出来上がった。

保持しているテーブルが増えている別の型付DataSetに送り込んだら、 増えたテーブルの分はnullに定義された状態でデシリアライズされた。

後者は型付DataSetはタダのDataSetに皮を被せただけだと思えば自然な挙動ではあるが。 MaxLengthまでシリアライズで送られて再現されるとは思わなかった。 デシリアライズ後にむりやり変更することは可能であるので、 (データの失われない)フィールド長の拡張であるならばこの辺は自動的に移行する処理を書くことはできる。

λ 実在証明をしていないショッピングサイト

以前から GeoTrust QuickSSL が発行する証明書の Subject が何か知りたかったのだが、やっとつかまえられた。

CN = cart03.lolipop.jp
OU = Domain Control Validated - GeoTrust QuickSSL Premium(R)
OU = See www.geotrust.com/resources/cps (c)04
OU = https://services.choicepoint.net/get.jsp?GT68248340
O = cart03.lolipop.jp
C = JP

村上ユカ グッズは売ってない。


2006-01-29

λ [.NET] U+00d7 ×

ASP.NET 2.0 環境で × を入力させると、U+00d7 (iso-8859-1) になってやってくる。 最初はDataSetかSQLServer を疑っていたのだが、フォームにある asp:TextBox の Text プロパティの値からしてそうなっていた。 Unicodeだとそうなるもんらしい。

Web.config には以下のように書いてある状況。

<globalization requestEncoding="shift-jis" responseEncoding="shift-jis" culture="ja-JP" uiCulture="ja" />

λ Intel core iMac

ヨドバシの新宿に普通に置いてあった。ちょっと触っただけでは違いは分からない。


2006-01-30

λ e-Tax ソフトウェ アインストール

ルート証明書として MOF Certification Authority を最初にインストール。クリックしただけでfingerprintの確認もなく完了。 e-Tax(Kokuzei-cho) が署名で、この証明書の失効状態は確認できないそうだ。CRLが見れないのはいけてない。

e-Tax(Kokuzei-cho)証明書の他に、Verisign が副署名していた。副署名なんて初めてみた。 こいつは Verisign Time Stamping Services Signer って署名時刻用だ。

住基カード側のアプリケーションCDROMを発掘しないと先に進めないので今日はここまで。


2006-01-31

λ もし今サーバーを立てるなら

OSよりは「家庭で24時間稼動させるハードウェア」という観点のが重要だと思うけどなあ。 そういう意味では Mac mini は第一候補。

第二候補はグラタンとか玄箱とか。 でもLinuxにしてもBSDにしても 日々のセキュリティ対策を、マニアックでない人がやるのは厳しいと思う。

もしノートPCが余っているとかでサーバに仕立てるんだったら、Microsoft登録パートナーになって Microsoft Action Pack サブスクリプションにある Small Business Server を立てるな。

λ もう XML 言語を開発するな

5大主力言語 が総括か。UBL は勉強しなくちゃいけない気がしてきた。

λ 米IBM、DB2の無料版を公開

余裕があったら速度比較とかしてみたい。誰かにやって欲しいけど、こういうやつのベンチマーク公表はほぼ禁止されてっからなあ…

むしろLinuxでの利用がメインになるかもしれない。

λ DoCoMo PHSサービスの終了に関するお知らせ

とうとう発表された。あと1年半程だ。

λ Dr. K's SQL Serverチューニング研修

具体的な話は次回からだった。

x64で4GBオーバーのマシンに SQL Server 入れて運用してみたいなあ。結局まだ2GBまでしかやったことない。

本日のツッコミ(全1件) [ツッコミを入れる]

λ arton [反応どうもです。グラタンはちょっと惹かれますね。]


2003|05|06|07|08|09|10|11|12|
2004|01|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|

using plugin: amazon calendar2 category html_anchor makelirs makerss recent_comment3 recent_trackback3 squeeze tb-send tb-show recent_list

Copyright(C) 2003-2007 by KAMIYA Satosi (上美谷 智史) All rights reserved.
gmail 無断リンク上等! ただし自動的に捕捉されます。