トップ 最新

2005-11-01

λ VisualStudio 2005 Professional + SQL Server 2005 on x64

Wisdows Server 2003 x64 の上に構築してみるテスト。

SQL Server 2005 x64 システムの管理ツールが自動でインストールされなかったようだ。 そういうもんなんだろうか。管理ツールのみ x86 側もインストールしてみた。


2005-11-02

λ ダブリンの鐘つきカビ人間

役者は何人か入れ替わってたけど、自分がDVDを見て持ってたイメージそのまんまだった。良くも悪くも。


2005-11-03

λ 入間基地航空祭

天候が霞んでいてイマイチ。


2005-11-04

λ [.NET] ASP.NET membership

ASP.NET 2.0 ユーザ管理のサンプル を見ながらユーザ管理部分のチュートリアルを自分でやってみようかと思いつつ、 色々ハマる。

環境変数

Windowsユーザに対する環境変数の設定で、VS2003時代のINCLUDES, LIBS が残っていて文句言われた。これは環境変数を単に消して解決。 そもそも x64環境で動かすという勝負をしているあたりで 環境に対する疑念があったりして探索しまくり。

SQLServerの接続先

Membership Provider(メンバーシップに限らんけど)のデフォルトが AspNetSqlProvider らしいというのは分かっていたが、 ASP.NET Configuration 画面を利用してもProviderにつながらないと文句言われるだけ。

  • aspnet_regsql でデータベースの中身を作成する
  • connectionStrings として LocalSqlServer を設定する

前者についてはぐぐって比較的早めに見つかったが、後者についての話がなかなか見つからなかった。 最終的にはGotDotNet掲示板で情報入手。

その後 %SystemRoot%/Microsoft.NET/Framework/V2.0.*/config/machine.config にあるマシン全体の設定項目で LocalSqlServer という接続先がデフォルトになっているのを確認、 まあ実運用ではこのへんのプロバイダ設定については、デフォルトに頼らずに自分で web.config に書けるようにならんとまずそうな気はする。

しかし、Personal Web Starter Kit で、LocalSqlServer にローカルファイルを無理やりSQLServerのデータベースとして利用してしまう文字列が生成されていた にもかかわらず、いまいち動かなかったのも謎。

Configuring ASP.NET 2.0 Application Services to Use SQL Server 2000 or SQL Server 2005 が今回やりたかったことそのものの情報だった。


2005-11-05

λ ヘビーメタルサンダー

ヘビメタ映像作品。右近健一ファンとしては大満足だった。

ジャンケン+αという ゲームシステムかと思いきや、 「常に相手の出す手を教えてくれる」ってゲームとしては駄目駄目だろ。 賞金でロボットをカスタマイズするという要素もあるのだが、 敵の攻撃をくらうことがあまりに稀なため防御性能を捨てると自ずとパーツは決まってくる。 結局敵ロボットとの対戦で1回も負けなかった。プレイ時間は5時間ぐらい?

λ Network solutions のSSL Certificates

networksolutionsで管理しているドメインだけが対象かもしれんが、かなり安い。 ここ自身の証明書からして Root CA は GTE Cybertrust な模様。(verisignじゃない?)

次回のmimori.org証明書の更新はここを使う予定。


2005-11-07

λ [FreeBSD] UFS2 snapshot 固まった

6.0-RELEASE にしていたこのマシンでも、今日の0時に /home の snapshot を取ろうとして固まってしまった。 /home 以外のファイルシステムへのアクセスは動いていたようで状況は以前と同じ。 やっぱりダメなのかー

λ BitTorrent で 6.0-RELEASE-i386-disc1 をもってきた

ctorrent --help で出てきたサンプルほぼそのままに

ctorrent -e 12 -C 32 -p 6881 6.0-RELEASE-i386-disc1.torrent

で12時間ファイルを提供してみることにした。

CHECKSUM.SHA256 で確認しようと思ったら、openssl 0.9.7 だと sha256 がサポートされてないような。 sha256を計算する標準コマンドはもしかして無い?

6.0-RELEASE だと/sbin/sha256 なんてところにあった。

まあISO扱うのはWindowsマシンのが多いから、cygwin環境(openssl 0.9.8) の openssl dgst -sha256 コマンドだな。

λ [FreeBSD] mpd で l2tp

らしい。ドイツ語は苦手だ。

λ CISCO 多ルータ環境 virtual lab

専用の virtual lab ソフトもあるが、FreeBSD仮想マシンを VirtualServer 上にがんがん立ててテストしてみようと思っているところ。 VirtualServer は仮想NICを4つまでしか持てないが、IPv4-over-IPv6 トンネルを作ればなんとかなるかなあ。 BGPの練習が主な目的なので、Point-to-Point接続が増やせれば大丈夫なはず。

各マシンへのログインはIPv6経由で。こんな感じの/etc/rc.confを作って、各バーチャルマシンは hostname, ipv6_ifconfig_de0 だけ書き換える方法で対処した。

hostname="freebsdv2"
## IPv6
ipv6_enable="YES"
ipv6_ifconfig_de0="xxxx:xxxx:xxxx:xxxx::2"
# services
sendmail_enable="NONE"
inetd_enable="YES"
sshd_enable="YES"
quagga_enable="YES"

IPv6ルーティングはお手軽に ripngd で配布。

λ FreeBSD-6.0 on VirtualServer

APICが有効だとブートしなかった。以下の記述を /boot/loader.conf に書く。

hint.apic.0.disabled=1

当初はACPIを無効にしていたが、ACPI無効だとshutdown -p nowが使えなくて悲しかったので、APIC無効に変更。 毎度思うがまぎらわしい。


2005-11-08

λ [.NET] Visual Studio ExpressEditionは1年間無料に!

ASP.NET の見た目(*.aspx)側をWebデザイナーに頼む時に、無料の ExpressEdition 使ってもらうってのはアリなのかな。 便利HTMLエディターとしてだったら英語版でも、ある程度のメニューを教えれば何とかいけそうな。

SQLExpressのサンプルDB含めてテスト動作環境を渡せるようになるんだったら、Microsoft 太っ腹すぎ。

λ Bluetooth キーボード と スタンバイ

Let's note R3 に外付けの WACOM UD-23011 Bluetooth IF をつけた状態で、 Bluetooth キーボード&マウス生活をしているのだが、 スタンバイから復帰すると一瞬キーボードが使えるもののその後使えなくなる。 使えない割には Bluetooth IF の LED はキーストロークに反応しているので、無線的にはリンクしている模様。 (マウスは正常に使える)

しかもその状態でWindowsの再起動をかけると、Windows終了までやたらと時間がかかる。 状況的には Bluetooth ドライバの問題っぽい。

スタンバイを経由せずに休止モードを利用した場合は、正常に復帰できる。 スタンバイを経由した場合は、休止モードに以降しても復帰後の状況はスタンバイ単独の時と同じ不具合。

λ [FreeBSD] pf.conf

実験セグメントとの境界のマシンで 外向きには ssh と ripngだけ通ればいいや、と最初さぼった設定を書いたら、ICMPが通らなかったせいで通信できなくなってしまった。(unreach あたり?)

ICMPだけはまじめに設定して、あとは適当な pf.conf 例:

ext_if="de3"
int_if="{de0, de1, de2}"

scrub in all

# ICMP
icmp_in_types = "{echoreq, echorep, unreach, squench, timex}"
icmp_out_types = "{echoreq, echorep, unreach, squench, timex}"
pass in quick inet proto icmp all icmp-type $icmp_in_types keep state
pass out quick inet proto icmp all icmp-type $icmp_out_types
pass quick inet6 proto ipv6-icmp all

block log all
# pass log all
pass in on $int_if all
pass out on $int_if all

pass  in  quick on $ext_if proto tcp from any to any port 22
pass  in  quick on $ext_if proto {tcp, udp} from any to any port ripng
pass  out quick on $ext_if all

VirtualServer上に FreeBSD 6.0マシンを9台作成完了。

λ 今日のSpam

突然すいません。私の知っている人のホームページで、あまりにもひどい書き込みがあったんです。なんとか削除したいのですが。。。。 そのための方法、またはパスワード解析するソフト・・・教えてもらえないでしょうか???

なんでパスワード解析するソフトやねん。


2005-11-09

λ VirtualServer 内の FreeBSD 時計狂いまくり

エミュレーションしているCPUのクロックが安定しているわけもなく、ntpdを設定しても無駄。 cron で適当に ntpdate かけることにした。今回はログのタイムスタンプが大体合っていれば事足りるのでこれでよし。

…(FreeBSDではないが)だから VirtualServer 上での SQLServer 稼動が未サポートなのか!! ( DBの時刻合わせに気をつけよう参照 ) この問題はゲストOSのカーネル内時計呼び出しを、ホストOSにスルーするような ゲスト側OSカーネル そのものの改変を伴わないと解決しなさげだ。 Longhorn Server だと解決するかな??

λ Framework Design Guidelines

ASP.NET 2.0 および ADO.NET 2.0 での汎用的なデータ アクセス コードの記述 のコードもそうなんだけど、 公開APIのコレクション用引数には IEnumerable, IDictionary を使うのがよい、ってのが一番の収穫。

APIは汎用にしておいて、実際に実装する際にどういうコレクションを使うのかはアプリケーションの特性によって最適なものを選択する、 というデザインには深い見識を感じた。

その他C#でコードを記述するにあたってのガイドが盛り沢山。 C# 2.0 生活をするなら必読なんではないかと思うぐらいだ。

あと個人的に読んでいて楽しかった。

λ SQL Server 2005 を使用して、行レベル セキュリティとセル レベル セキュリティを分類されたデータベースに実装する

証明書=非対称鍵暗号 で 対象鍵暗号用の[鍵] を暗号化し、対象鍵暗号用の[鍵]が本文を暗号化する、というよくあるパターンの実装なのだが、 このシステムのキモは復号の時である。復号にあたっては DecryptByKey() で何のオプションパラメータもなくて一体どうなっているのやら 最初さっぱり理解不能だった。

おそらくSQLの中に証明書ストアがあって、SQLユーザとしてパスワード付でログインしておけば、自動的に復号されている。 要するに

  • ログインしているユーザを元に、証明書ストアを検索し、そこから非対称鍵暗号の秘密鍵を取り出してくれる
  • 暗号化されたテーブル内のセルは、暗号化された対象鍵暗号用の[鍵] が何であるか知っている

あと、SQLServerにログインする際のパスワードについても、パスワードの強度ポリシーは WindowsServerOS のパスワードポリシーに従うことになっている。 なのでデフォルト状態で tako とかいうパスワードにしようとしても拒絶される。

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

λ にぐる [お初です。 「VirtualServer 内の FreeBSD 時計狂いまくり」ですが、FreeBSDのusers..]

λ 上美谷 [情報ありがとうございました。詳細は11日に。]


2005-11-10

λ 入間航空祭の写真

絵にならないけど一応。


2005-11-11

λ [FreeBSD] VirtualServer 用カーネル構築

APIC無効にすると吉というコメントをもらい、 ブートローダでAPICを無効にしても状況は改善しなかったので、専用カーネルを作ることにした。

不要なデバイスをずばずば削ったconfigファイル:

machine		i386
cpu		I586_CPU
cpu		I686_CPU
ident		VIRTUALPC

options 	SCHED_4BSD		# 4BSD scheduler
options 	PREEMPTION		# Enable kernel thread preemption
options 	INET			# InterNETworking
options 	INET6			# IPv6 communications protocols
options 	FFS			# Berkeley Fast Filesystem
options 	SOFTUPDATES		# Enable FFS soft updates support
options 	UFS_ACL			# Support for access control lists
options 	UFS_DIRHASH		# Improve performance on big directories
options 	NFSCLIENT		# Network Filesystem Client
options 	NFSSERVER		# Network Filesystem Server
options 	MSDOSFS			# MSDOS Filesystem
options 	CD9660			# ISO 9660 Filesystem
options 	PROCFS			# Process filesystem (requires PSEUDOFS)
options 	PSEUDOFS		# Pseudo-filesystem framework
options 	GEOM_GPT		# GUID Partition Tables.
options 	COMPAT_43		# Compatible with BSD 4.3 [KEEP THIS!]
options 	COMPAT_FREEBSD4		# Compatible with FreeBSD4
options 	COMPAT_FREEBSD5		# Compatible with FreeBSD5
options 	SCSI_DELAY=5000		# Delay (in ms) before probing SCSI
options 	KTRACE			# ktrace(1) support
options 	SYSVSHM			# SYSV-style shared memory
options 	SYSVMSG			# SYSV-style message queues
options 	SYSVSEM			# SYSV-style semaphores
options 	_KPOSIX_PRIORITY_SCHEDULING # POSIX P1003_1B real-time extensions
options 	KBD_INSTALL_CDEV	# install a CDEV entry in /dev
options 	AHC_REG_PRETTY_PRINT	# Print register bitfields in debug
					# output.  Adds ~128k to driver.
options 	AHD_REG_PRETTY_PRINT	# Print register bitfields in debug
					# output.  Adds ~215k to driver.
options 	ADAPTIVE_GIANT		# Giant mutex is adaptive.

device		isa
device		pci

# Floppy drives
device		fdc

# ATA and ATAPI devices
device		ata
device		atadisk		# ATA disk drives
device		atapicd		# ATAPI CDROM drives
options 	ATA_STATIC_ID	# Static device numbering

# atkbdc0 controls both the keyboard and the PS/2 mouse
device		atkbdc		# AT keyboard controller
device		atkbd		# AT keyboard
device		psm		# PS/2 mouse

device		vga		# VGA video card driver

device		splash		# Splash screen and screen saver support

# syscons is the default console driver, resembling an SCO console
device		sc

# Floating point support - do not disable.
device		npx

# Power management support (see NOTES for more options)
#device		apm
# Add suspend/resume support for the i8254.
device		pmtimer

# Serial (COM) ports
device		sio		# 8250, 16[45]50 based serial ports

# Parallel port
device		ppc
device		ppbus		# Parallel port bus (required)
device		lpt		# Printer

# PCI Ethernet NICs.
device		de		# DEC/Intel DC21x4x (``Tulip'')

# Pseudo devices.
device		loop		# Network loopback
device		mem		# Memory and kernel memory devices
device		io		# I/O device
device		random		# Entropy device
device		ether		# Ethernet support
device		tun		# Packet tunnel.
device		pty		# Pseudo-ttys (telnet etc)
device		md		# Memory "disks"
device		gif		# IPv6 and IPv4 tunneling
device		faith		# IPv6-to-IPv4 relaying (translation)

# The `bpf' device enables the Berkeley Packet Filter.
# Be aware of the administrative consequences of enabling this!
# Note that 'bpf' is required for DHCP.
device		bpf		# Berkeley packet filter

options 	IPSEC			#IP security
options 	IPSEC_ESP		#IP security (crypto; define w/ IPSEC)
options 	IPSEC_DEBUG		#debug for IP security

# altq(9). Enable the base part of the hooks with the ALTQ option.
# Individual disciplines must be built into the base system and can not be
# loaded as modules at this point. In order to build a SMP kernel you must
# also have the ALTQ_NOPCC option.
options 	ALTQ
options 	ALTQ_CBQ	# Class Bases Queueing
options 	ALTQ_RED	# Random Early Drop
options 	ALTQ_RIO	# RED In/Out
options 	ALTQ_HFSC	# Hierarchical Packet Scheduler
options 	ALTQ_CDNR	# Traffic conditioner
options 	ALTQ_PRIQ	# Priority Queueing
# options 	ALTQ_NOPCC	# Required for SMP build
options 	ALTQ_DEBUG

確かに時計があんまり狂わなくなった。素晴らしい。でも ntpd では相変わらず時刻同期しない。

…altq は有効になっとらんな。なんでだろう。


2005-11-12

λ セントレア

17時過ぎまでに大阪到着すればよかったので、セントレア経由で行こうかと以下のような予定を立ててみた。

8時30分 東京
    のぞみ
	名古屋
    JR中央本線 (ここまで 新幹線回数券)
	金山
    名鉄 名古屋本線 (790円)
11:00	セントレア
14:00	セントレア
    高速船 (1890円)
14:40	津なぎさまち
14:50
    バス (200円)
15:00
15:20	津
    近鉄名阪乙特急 (2920円)
16:59	近鉄難波

朝起きれなくて実行失敗。

λ 大阪 なんばHatch

相変わらず一体感のない会場。ピアノ弾き語り自体は 長年望んでいた形式だ。


2005-11-14

λ [FreeBSD] mgetty and 6.0-RC1

6.0-RELEASEでも同じ現象発生。mgetty動かん。

続く話 で /etc/ttys に記述したことによる init からの起動では問題があるが、 コマンドラインから起動すれば動くという話があった。

ttys に書くのを止めて、daemontools 管理下に置くことにしたら解決。 そもそも ttys ファイルの他のフィールドを mgetty が参照している訳でもなさそうだし、 この方が「提供サービスは daemontools 管理下に置くの原則」に従うことになって楽だ。

/var/log/wtmp への書き込みがおかしくなっている模様。Faxしか受けないからどうでもいいけど。 (mergemaster実行時にひっかかるネタが減ることになる)

λ [.NET] Building Secure ASP.NET Applications: Authentication, Authorization, and Secure Communication

.NET 2.0 だと SslStream クラスがあって SSLトンネルが楽に作れそうと思って、証明書ストアへのアクセス方法を調査。

These APIs can be accessed only through unmanaged code. Also, CAPICOM is a COM-based API for the CryptoAPI, which can be accessed via COM Interop.

.NET Framework 内に X509Certificate2UI クラスとかあって証明書を選択するインターフェースまで用意してるのに、API直接叩くしかないのかよー。

てことは証明書ストアからエクスポートした結果を .NET Framework で使うしかない訳で、SmartCard 認証したい野望には全く近づかない。 だったら wstunnel でいいや。

(11/17 追記: .NET 2.0 ならどうもありそうなのが判明。上記ドキュメントは2002年のものだった。)

λ [Mac] OS9 用ブラウザ

現在作成予定中のWebアプリケーションで、Mac OS9 をサポートしろ、という指示。 デザインは多少崩れても機能を満たす必要がある。 Mac IE5 は最悪だし、Netscape Communicator 4.7 もそれ以上に撲滅したいし…

Opera 6.03 が一番モダンなブラウザ、ということになるのかしら。たぶん無料になってるはずだし。

なってた: Operaの広告バナーとライセンス料金が不要に

λ SQL Server 2005 の暗号化機能

機能としては面白いし実装そのものは楽になりそうではあるが、 高負荷更新系アプリケーションの場合 SQL Server 自体の負荷は可能な限り下げるべき、 という方向性からすると実際のところ利用するのはかなり危険。

同時利用ユーザ数が決まっていて、パフォーマンスが足りなければ SQL Server を分離できるようなデータモデルでなければいけない。 そういう意味ではWebアプリには不向きで、専用アプリケーションを開発するような状況で利用するのがいいか。 Windows Mobile 端末アプリケーションの開発とか。 しかしWindows Mobile端末でさえクライアント側のがCPUパワーあるしなあ…

アプリケーションはローカルSQLExpress を叩いて、SQLExpress上で暗号化、データと証明書とユーザ情報をまとめて 本部SQL Serverにレプリケーションとか、 そーゆーレプリケーション機能が出来たら神だな。


2005-11-15

λ [Mac] Opera 6.03

OSX,OS9 両対応らしいのはいいんだが、OSX 上で起動する際に強制的に Classic 環境で起動する方法が分からん。

… OS9 の入った G4 Cube を発見したので悩むのヤメ。

λ 千代田区でコスプレ大会

http://anime.2ch.net/test/read.cgi/anichara2/1107277631/91-96


2005-11-16

λ IEでは警告が出ないが Firefox では警告が出るサイト

mixiのMCPコミュで、IE以外のブラウザだと警告が出るのはMSが「オレオレ証明書を提供してるからでは」疑惑の話が出たので 調査してみた。

おそらくIISサーバに中間証明書をインストールしてないために、SSLネゴシエーションで中間証明書を提供してくれないのが原因。 IEで警告が出ないのは、IEの証明書ストア内に必要な中間証明書があらかじめインストールされてるから。

SSLネゴシエーションにおける中間証明書の提供状況は、openssl s_client コマンドを利用して調査した。 openssl s_client -connect mcp.microsoft.com:443 -CAfile /usr/local/share/curl/curl-ca-bundle.crt -verify 5 -showcerts の結果

verify depth is 5
CONNECTED(00000004)
depth=0 /C=US/ST=WA/L=Redmond/O=MS/OU=mscomops/CN=mcp.microsoft.com
verify error:num=20:unable to get local issuer certificate
verify return:1
depth=0 /C=US/ST=WA/L=Redmond/O=MS/OU=mscomops/CN=mcp.microsoft.com
verify error:num=27:certificate not trusted
verify return:1
depth=0 /C=US/ST=WA/L=Redmond/O=MS/OU=mscomops/CN=mcp.microsoft.com
verify error:num=21:unable to verify the first certificate
verify return:1
---
Certificate chain
 0 s:/C=US/ST=WA/L=Redmond/O=MS/OU=mscomops/CN=mcp.microsoft.com
   i:/DC=com/DC=microsoft/DC=corp/DC=redmond/CN=Microsoft Secure Server Authority
-----BEGIN CERTIFICATE-----
MIIFijCCBHKgAwIBAgIKH0+lrQACAAAyUDANBgkqhkiG9w0BAQUFADCBizETMBEG
CgmSJomT8ixkARkWA2NvbTEZMBcGCgmSJomT8ixkARkWCW1pY3Jvc29mdDEUMBIG
CgmSJomT8ixkARkWBGNvcnAxFzAVBgoJkiaJk/IsZAEZFgdyZWRtb25kMSowKAYD
VQQDEyFNaWNyb3NvZnQgU2VjdXJlIFNlcnZlciBBdXRob3JpdHkwHhcNMDUwNjIy
MTkzMjM1WhcNMDYwNjIyMTkzMjM1WjBoMQswCQYDVQQGEwJVUzELMAkGA1UECBMC
V0ExEDAOBgNVBAcTB1JlZG1vbmQxCzAJBgNVBAoTAk1TMREwDwYDVQQLEwhtc2Nv
bW9wczEaMBgGA1UEAxMRbWNwLm1pY3Jvc29mdC5jb20wgZ8wDQYJKoZIhvcNAQEB
BQADgY0AMIGJAoGBAN6XPA9bQnOe2mtGhXlodI/dCLW6FCG4GJLq4Mtnt2ossYOT
X30e6xVJaqYkFrzbPAbbf/EPkwE1d3NOgn5tVx45XulsdcC2CE6SRa5lU+XP2c0H
N+xwxboDWnJ54/Ev9tNV9xXhJj5rtRbYfl6vAMfYMLmpirsNktHlY+aPE1hDAgMB
AAGjggKUMIICkDALBgNVHQ8EBAMCBaAwRAYJKoZIhvcNAQkPBDcwNTAOBggqhkiG
9w0DAgICAIAwDgYIKoZIhvcNAwQCAgCAMAcGBSsOAwIHMAoGCCqGSIb3DQMHMB0G
A1UdJQQWMBQGCCsGAQUFBwMCBggrBgEFBQcDATAdBgNVHQ4EFgQUoPfQwnjes1n6
W7UHS9byDGwvUZAwHwYDVR0jBBgwFoAU3ywh0+MZc7xLYRMcYOpLveauIEQwga8G
A1UdHwSBpzCBpDCBoaCBnqCBm4ZWaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3Br
aS9tc2NvcnAvY3JsL01pY3Jvc29mdCUyMFNlY3VyZSUyMFNlcnZlciUyMEF1dGhv
cml0eSgyKS5jcmyGQWh0dHA6Ly9jb3JwcGtpL2NybC9NaWNyb3NvZnQlMjBTZWN1
cmUlMjBTZXJ2ZXIlMjBBdXRob3JpdHkoMikuY3JsMIG/BggrBgEFBQcBAQSBsjCB
rzBeBggrBgEFBQcwAoZSaHR0cDovL3d3dy5taWNyb3NvZnQuY29tL3BraS9tc2Nv
cnAvTWljcm9zb2Z0JTIwU2VjdXJlJTIwU2VydmVyJTIwQXV0aG9yaXR5KDIpLmNy
dDBNBggrBgEFBQcwAoZBaHR0cDovL2NvcnBwa2kvYWlhL01pY3Jvc29mdCUyMFNl
Y3VyZSUyMFNlcnZlciUyMEF1dGhvcml0eSgyKS5jcnQwPwYJKwYBBAGCNxUHBDIw
MAYoKwYBBAGCNxUIg8+JTa3yAoWhnwyC+sp9geH7dIFPg8LthQiOqdKFYwIBZAIB
BTAnBgkrBgEEAYI3FQoEGjAYMAoGCCsGAQUFBwMCMAoGCCsGAQUFBwMBMA0GCSqG
SIb3DQEBBQUAA4IBAQCkkWOj0my0HCbOJLtfE8FNfOZZeHDkDAN9/0gwvqeSGxBH
N4isuwWh15pP7p38QdimY/o1DUCJPeB8dSxCAk/IbxYnAL/CcagMDSkpsBbpUPCf
xwkuionquQb8dUoyZt3UFlo/f4IHryGVv/dwnkawREx1jgZ15+kOYezDilZ9T8V2
JQ/KC004C+aJi2TPDX5IJ91u7SU4Py9XF0/Ry0/OCHy8Tnc98qbIBuFFuvjz2H4V
0rPeY55czcWQqEPknlCg+JC0+Bh1h9ApedqXfp/BxsGudikMAWLTevpxFLiflC5c
Y32bjbdCfo8ZyUIQmWK44ARO+YYWoGdMdfdtdCye
-----END CERTIFICATE-----
---
Server certificate
subject=/C=US/ST=WA/L=Redmond/O=MS/OU=mscomops/CN=mcp.microsoft.com
issuer=/DC=com/DC=microsoft/DC=corp/DC=redmond/CN=Microsoft Secure Server Authority
---
No client certificate CA names sent
---
SSL handshake has read 1558 bytes and written 324 bytes
---
New, TLSv1/SSLv3, Cipher is RC4-MD5
Server public key is 1024 bit
SSL-Session:
    Protocol  : TLSv1
    Cipher    : RC4-MD5
    Session-ID: (略)
    Session-ID-ctx: 
    Master-Key: (略)
    Key-Arg   : None
    Start Time: 1132073332
    Timeout   : 300 (sec)
    Verify return code: 21 (unable to verify the first certificate)
---
DONE

この中のCERTIFICATE部分を openssl x509 -text に渡すと、以下のように発行元の証明書のありかが含まれていることが分かる。

Authority Information Access: 
    CA Issuers - URI:http://www.microsoft.com/pki/mscorp/Microsoft%20Secure%20Server%20Authority(2).crt
    CA Issuers - URI:http://corppki/aia/Microsoft%20Secure%20Server%20Authority(2).crt

1つ目の方の証明書を実際に取得して、もう一周発行元の証明書のありかを調べて取得する作業をすると GTE Cybertrust Root CA にたどりつくので、証明書チェーンを検証することは可能だが、 Firefox等のブラウザはこの Authority Information Access を利用して証明書チェーンを自動検証する仕組みを 持っていないために警告を発することになるようだ。IEも多分「この経路での自動検証」をする仕組みは持っていない。

ちなみに同じ GTE CyberTrust Global Root を利用している networksolutions のサイトに接続してみると、 以下のように中間証明書を一緒に送ってくれる。(BEGIN CERTIFICATE〜END CERTIFICATE のかたまりが2つあり、2つ目が中間証明書) 通常の GTE CyberTrust Global Root を元にしているSSLサイトはこのように設定されているのが普通と思われる。

openssl s_client -connect www.netsolssl.com:443 -CAfile /usr/local/share/curl/curl-ca-bundle.crt -verify 5 -showcerts

verify depth is 5
CONNECTED(00000004)
depth=2 /C=US/O=GTE Corporation/OU=GTE CyberTrust Solutions, Inc./CN=GTE CyberTrust Global Root
verify return:1
depth=1 /C=US/O=Network Solutions L.L.C./CN=Network Solutions Certificate Authority
verify return:1
depth=0 /C=US/2.5.4.17=20171/ST=Virginia/L=Herndon/2.5.4.9=13200 Woodland Park Rd./O=Network Solutions, LLC/OU=Registrar/OU=Secure Link SSL Wildcard/CN=*.netsolssl.com
verify return:1
---
Certificate chain
 0 s:/C=US/2.5.4.17=20171/ST=Virginia/L=Herndon/2.5.4.9=13200 Woodland Park Rd./O=Network Solutions, LLC/OU=Registrar/OU=Secure Link SSL Wildcard/CN=*.netsolssl.com
   i:/C=US/O=Network Solutions L.L.C./CN=Network Solutions Certificate Authority
-----BEGIN CERTIFICATE-----
MIIEqzCCA5OgAwIBAgIRALotrfhGiAIK4fzzoXPjZDcwDQYJKoZIhvcNAQEFBQAw
YjELMAkGA1UEBhMCVVMxITAfBgNVBAoTGE5ldHdvcmsgU29sdXRpb25zIEwuTC5D
LjEwMC4GA1UEAxMnTmV0d29yayBTb2x1dGlvbnMgQ2VydGlmaWNhdGUgQXV0aG9y
aXR5MB4XDTA1MDIyNDAwMDAwMFoXDTA4MDIyNDIzNTk1OVowgdYxCzAJBgNVBAYT
AlVTMQ4wDAYDVQQREwUyMDE3MTERMA8GA1UECBMIVmlyZ2luaWExEDAOBgNVBAcT
B0hlcm5kb24xIDAeBgNVBAkTFzEzMjAwIFdvb2RsYW5kIFBhcmsgUmQuMR8wHQYD
VQQKExZOZXR3b3JrIFNvbHV0aW9ucywgTExDMRIwEAYDVQQLEwlSZWdpc3RyYXIx
ITAfBgNVBAsTGFNlY3VyZSBMaW5rIFNTTCBXaWxkY2FyZDEYMBYGA1UEAxQPKi5u
ZXRzb2xzc2wuY29tMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQD4UoSqupz1
qtEyIbYCYowbxTbyCKZrStCClK4CSqnZwH4eUSMg1UMPJ5hbEz3YVKTSF/yVOSyP
nKSZb2TPCL9hy91d2QwQP+MaXcF4jxuRA9UYfYSRHPx9quzXgULWk6reEW4eH7gl
CZgCiVsAtCdO2o1bMulJ+Pdx7Ar1C8lITwIDAQABo4IBaTCCAWUwHwYDVR0jBBgw
FoAUAbmYlDcvUo5mlZdgiFn32IWb94cwHQYDVR0OBBYEFAKJEzI8YuA2siB1UnXC
AMCZz3KYMA4GA1UdDwEB/wQEAwIFoDAMBgNVHRMBAf8EAjAAMB0GA1UdJQQWMBQG
CCsGAQUFBwMBBggrBgEFBQcDAjBZBgNVHSAEUjBQME4GDCsGAQQBhg4BAgEDATA+
MDwGCCsGAQUFBwIBFjBodHRwOi8vd3d3Lm5ldHNvbHNzbC5jb20vcmVwb3NpdG9y
eS9yZWx5aW5ncGFydHkweAYDVR0fBHEwbzA1oDOgMYYvaHR0cDovL2NybC5uZXRz
b2xzc2wuY29tL05ldHdvcmtTb2x1dGlvbnNDQS5jcmwwNqA0oDKGMGh0dHA6Ly9j
cmwyLm5ldHNvbHNzbC5jb20vTmV0d29ya1NvbHV0aW9uc0NBLmNybDARBglghkgB
hvhCAQEEBAMCBsAwDQYJKoZIhvcNAQEFBQADggEBAI/1TQDIUODqcyFcNVS0D+e4
AyD+bclSZlirYyPQgEQcn958Hsn2gzbmRXMcCZyM6nLu5xWZiEfWQZqYncfAKS7G
5+07+b/Ng/efdiSBVohyVDpeJVlhq1rJ0FIICPxZOBMht1tVMJ5vG7AlsLQbpaCK
JbJgFCUnkKVsBt0C6QlMkeMjhWl/poWDs2XDNMu1Dn+iU8V7BoySxsThx1Gh8Stm
sdvm9jwgX2c4p3hm5S1QpVPH5GGlHZOpY6lbMlVkEWe1qNnFxoW6o+ExUOdF6T2P
lLVYPTleIV+w67dx1hQwVfpS/KJGEwjXgxcoDoQpKjy16LwrwxPD9Wa/rtWTg9s=
-----END CERTIFICATE-----
 1 s:/C=US/O=Network Solutions L.L.C./CN=Network Solutions Certificate Authority
   i:/C=US/O=GTE Corporation/OU=GTE CyberTrust Solutions, Inc./CN=GTE CyberTrust Global Root
-----BEGIN CERTIFICATE-----
MIIEkDCCA/mgAwIBAgIEBAADxTANBgkqhkiG9w0BAQUFADB1MQswCQYDVQQGEwJV
UzEYMBYGA1UEChMPR1RFIENvcnBvcmF0aW9uMScwJQYDVQQLEx5HVEUgQ3liZXJU
cnVzdCBTb2x1dGlvbnMsIEluYy4xIzAhBgNVBAMTGkdURSBDeWJlclRydXN0IEds
b2JhbCBSb290MB4XDTA1MDIwODE5MTcwMFoXDTEyMDIwODIzNTkwMFowYjELMAkG
A1UEBhMCVVMxITAfBgNVBAoTGE5ldHdvcmsgU29sdXRpb25zIEwuTC5DLjEwMC4G
A1UEAxMnTmV0d29yayBTb2x1dGlvbnMgQ2VydGlmaWNhdGUgQXV0aG9yaXR5MIIB
IjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAy62ek00PKRG9e0xcFYe1uFMJ
SGhRtkiY9sqYZaIEuaWpngf7vuUJd7ZoUuO6lEQuYI18QWWRMZ9sJUV1I1qN2csv
OKNsI8MA5dFSH8cq+ur+dCvprS3xll+MBFjCAw9ArcatppLD1L9YUNBLMWjwXIDO
G5K17tMbeNA2dQu4uCAqa2R7nJPaBhssGH7ZcgsnxFWy1vMla3A4nzd99/C7rwJI
EiDtM1GFPl7cv1s2bBUnqHIoEzH9nWkAWBJATcqkxH189iu4bFxv4TQfeEq1CIF0
qmSOUBKNu2JKsjYC2fXlWTTjJ0oJr77Y02tZzIR11kBu6Zsyt+8/cRp0d4UvywID
AQABo4IBujCCAbYwRQYDVR0fBD4wPDA6oDigNoY0aHR0cDovL3d3dy5wdWJsaWMt
dHJ1c3QuY29tL2NnaS1iaW4vQ1JMLzIwMTgvY2RwLmNybDAdBgNVHQ4EFgQUAbmY
lDcvUo5mlZdgiFn32IWb94cwgZ0GA1UdIASBlTCBkjBIBgkrBgEEAbE+AQAwOzA5
BggrBgEFBQcCARYtaHR0cDovL3d3dy5wdWJsaWMtdHJ1c3QuY29tL0NQUy9PbW5p
Um9vdC5odG1sMEYGDCsGAQQBhg4BAgEDATA2MDQGCCsGAQUFBwIBFihodHRwczov
L3d3dy5uZXRzb2xzc2wuY29tL3JlcG9zaXRvcnkvQ1BTMIGJBgNVHSMEgYEwf6F5
pHcwdTELMAkGA1UEBhMCVVMxGDAWBgNVBAoTD0dURSBDb3Jwb3JhdGlvbjEnMCUG
A1UECxMeR1RFIEN5YmVyVHJ1c3QgU29sdXRpb25zLCBJbmMuMSMwIQYDVQQDExpH
VEUgQ3liZXJUcnVzdCBHbG9iYWwgUm9vdIICAaUwDgYDVR0PAQH/BAQDAgEGMBIG
A1UdEwEB/wQIMAYBAf8CAQAwDQYJKoZIhvcNAQEFBQADgYEAfEk2kSeNpHd6WV9C
KQFPt782VaUow9rXZRFxvs68pOwd8ktobk2ITkTt8LIBRxMERxATH4JFB1HxWJQ9
6uJLVPn5TNrQbDwyDQiFJDxQcODMMlOTbq6fH3bk3E+nK1z2Ow5aerOu+Ga4l1eT
UpSTSVSzHX3qMgtALXAfqCUFvoc=
-----END CERTIFICATE-----
---
Server certificate
subject=/C=US/2.5.4.17=20171/ST=Virginia/L=Herndon/2.5.4.9=13200 Woodland Park Rd./O=Network Solutions, LLC/OU=Registrar/OU=Secure Link SSL Wildcard/CN=*.netsolssl.com
issuer=/C=US/O=Network Solutions L.L.C./CN=Network Solutions Certificate Authority
---
No client certificate CA names sent
---
SSL handshake has read 2930 bytes and written 332 bytes
---
New, TLSv1/SSLv3, Cipher is EDH-RSA-DES-CBC3-SHA
Server public key is 1024 bit
SSL-Session:
    Protocol  : TLSv1
    Cipher    : EDH-RSA-DES-CBC3-SHA
    Session-ID: (略)
    Session-ID-ctx: 
    Master-Key: (略)
    Key-Arg   : None
    Start Time: 1132073803
    Timeout   : 300 (sec)
    Verify return code: 0 (ok)
---
DONE

…ん、netsolssl の暗号化ってただのDES? マジ?


2005-11-17

λ Trac 0.9 をWindowsにインストールする話

ここも。 最初にインストールするだけだったらいいけど、これら10前後あるモジュールの更新に追従するのは骨だなあ。

Collaboa も使ってみようかと思ったけどちょっと保留。

λ [FreeBSD] Trac のインストール

まちゅダイアリー を参考にインストール作業。

portinstall converters/py-cjkcodecs www/trac, sudo -u svn trac-admin /home/svn/trac_hoge initenv で、プロジェクト名とリポジトリの指定をしてやれば環境構築してくれる。 あとはapacheの設定をちょりっとやるだけだった。 Tracのバックエンドは Sqlite なこともあって超簡単だ。

うちの場合 trac.ini での文字コードの指定は Shift_JIS にした。

[trac]
default_charset = shift_jis  

λ [.NET] X509store

証明書ストアへのアクセスクラスあった。ががーん。

RSACryptoServiceProvider → CspParameters と追っていくとSmartCardのサンプルも出てくる。 またやる気出てきたぞ。

λ SNMP InformantによるWindowsサーバのSNMPエージェント

WindowsのCPU負荷やディスク状況を MRTG や cacti などでグラフ化できそう。

MBMな情報を配布するSNMPagentも無料。Windowsマシンの温度も監視だ!

λ Vodafone V604SH

miniSDかー。V603SH の値下がりを狙おう。

λ [.NET] Visual Web Developer 2005 Express Edition

VWD2005Express で作ったプロジェクトを Visual Studio 2005 にもっていってみた。

  • Webサイト用のファイル群はコピーするだけ
  • Project/プロジェクト名/プロジェクト名.sln の中身を環境に合わせて編集する。*.suo は削除

でどうやら移転できた模様。 以前と違ってプロジェクトに含まれるファイルを明示的に管理していないように見えるが…Subversion管理下に置いた時にどうなるかはこれから

VWD2005ExpressってCodeBehindも使えるしデータベースへの接続もできるしlog4net.dllも参照できそうだし、 Team開発関係の機能が無いのはいいとして、それ以外の一体何が出来ないのだろう。


2005-11-18

λ MySQL でランダム表示

MS SQL Server 2000 の場合1つのSQL文に含まれた RAND() は、すべての行に対して同じ値を返すのでダメだった。

λ VisualWebDeveloper と SQL Server Management Studio Express

VisualWebDeveloper からデータベース接続はできるものの、データベースの新規作成方法が分からなかったので、 SQL Server Management Studio Express を使うことにした。

…が、最初[System Databases]のところで右クリックして、出ないなーと悩んで、結局

CD /D C:\windows\Microsoft.NET\Framework\v2.0.50727
aspnet_regsql -E -S localhost\SQLEXPRESS -A all -d aspnetdb
aspnet_regsql -E -S localhost\SQLEXPRESS -ssadd -d ASPState

といったコマンドで、メンバーシップ用データベースとStateServer用データベースを作成してしまった。

データベースの作成さえ出来てしまえば、VisualWebDeveloper から接続してテーブル作成など中身をいじることはできる。

VisualWebDeveloper のクエリデザイナ? は、USE master で対象データベースを変更することも出来なさそうだし、制限がかなりきつい。 (その代わりVisualにクエリが作れるということなんだろうが)

SQL Server Management Studio Express の中からのクエリ実行は、普通のクエリアナライザのように使える。 Execution Plan と Client statistics もとれるな。 サーバのTraceを取ってチューニングするとかそういう感じの機能がないっぽい。


2005-11-21

λ Software RAID の話

mixiに書こうと思ったけどオフトピ気味でやめた文章:

過去さまざまなOSでミラーリングに挑戦してきた経験からすると ミラーリングというのは、HDDのハードウェア障害があっても継続運用できる というのが目的なわけですが、 データ領域ならまだしも起動領域をミラーリングした場合、 トラブル発生後の復旧手順を確立しようと思うと、相当な手間がかかります。 (PowerBookの内蔵ディスク障害後の手順をシミュレートなんてどうやるんだか…)

一方でバックアップであれば、バックアップディスクでの起動を確認すれば いいだけなのでそんなに大変ではありません。 # 特にMACはFirewireディスクからブートできるのですごく嬉しい

データ領域を分割して運用していれば、起動領域のバックアップ頻度は それほど必要ではないということも考えると 「起動領域のソフトウェアRAIDは非現実的」というのが個人的な結論です。

もちろんHDDのハードウェア障害に対して連続運用が必要な状況なら、 ホットスワップ可能なハードウェアRAID装置の導入しかないでしょう。

ソフトウェアRAIDの出番は、むしろストライピング(RAID0)向きな気がします。

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

λ ひろあき [軌道領域において、Hardware RAID でなくても、Hotswap 可能であれば、Software RAID ..]

λ 上美谷 [やれば可能、という次元であれば出来ることは認識していますし、 実際SoftWare RAID での起動領域ミラーリン..]

λ ひろあき [Solaris の話ですが、実際、私は、それほどスキルのないひとに簡単な対応と復旧をしてもらったことがあります。 そ..]


2005-11-22

λ [Ruby] CGIKit

Ruby業界はRails全盛だが、都合により CGIKit 1.x での開発作業中。

表面上のURLは1つでPOSTし続けるので、PostBackするASP.NETに近いようでもあるが、 Repetitionの中の入力フィールドの扱いは自力で処理するしかなさげ。ViewStateもないし。 ページ遷移間でオブジェクトをさくっと渡せるのは気持ちいい。

ただ、ページ遷移を伴った場合、遷移後の変数バインドをどうすればいいのか悩んだ。 ページ遷移後の init が呼ばれるタイミングではページ遷移前に設定した変数バインドがされていない雰囲気、 かつ「ある要素を表示するイベント」の時は変数が見えるが、他の要素にどうちょっかい出す」のかが謎。

「ある要素を表示するイベントで設定されたメンバ変数は、他の要素を表示するイベントで見えるのか」=「どっちが先に呼ばれるの?」 という資料を探そうかどうか悩んで、結局そこまで内部調査はしないことにした。

結果として以下のような俺ルールで作成 ・複雑な処理はページ遷移前のコンポーネントでやる ・ページ遷移後は、設定されたメンバ変数を表示するだけ。 「ボタンに対するイベント」という意味ならこれだけでもいいのだが、 「表示におけるルール」がある場合にイベント側が表示ルールを知っていないといけないのがイマイチな感じ。 その辺を司る中間クラスがあるといいのかなあ。

そもそもCGIKitが HTML+Ruby+間をとりもつ謎フォーマットのckdファイル という3ファイル構成なのが冗長。 ckdファイルの中身はHTMLタグの属性として実装できなかったんだろうか…

とはいえさすがに素のerubyよりは見通しがいい気はする。


2005-11-23

λ 羽田 荷物検査

Microsoftからもらった 携帯用精密ドライバー が十徳ナイフにでも見えたのか、カバンを3度検査機を通すことに。


2005-11-24

λ のぞみ自由席

路線情報で調べてのぞみ40号が最初の便かと思って予約していたら、のぞみ70号のが先にあるというのを新神戸駅に着いてから認識。 のぞみ自由席に初めて座った。

座れてしまえば同じだ。

λ Gmail の From指定

Gmailアカウントのメールアドレス以外を From: に入れることができるが、 Envelope From には、送信先のメールアドレスが入るのね。

結構不思議な仕様。何かあってもエラーメール返すな、ってことかな。

λ T字型ER

データベース設計論 T字形ER―関係モデルとオジブェクト指向の統合をめざして論理データベース論考―データ設計の方法:数学の基礎とT字形ER手法 読了。

Entityをまず時刻を持つかどうかで「resoure(時刻情報なし)」「event(時刻情報あり)」で分離する。とにかくこれ重要。

その上での3つの推論ルール

「resource」と「resource」を結んだら、対照表を生成する。 「resource」と「event」を結んだら、「resource」の認知番号を「event」のほうに複写する。 「event」と「event」を結んだら、先行「event」の認知番号を、時系列のおそいほうに複写 する。

をデータベースのテーブル設計に翻訳すれば、

  • resource間は、resourceID間を結ぶテーブルを対照表として実装する
  • event テーブルの中に resourceID フィールドを書く
  • 後続event テーブルの中に 先行eventID フィールドを書く。自event内での再帰でも単純にテーブルの中に 先行eventID フィールドを書く。

T字型ERで作図しなくても、この推論ルールに従ってテーブル設計するだけですごい気分がスッキリした。 実戦での威力評価はこれからではあるが。

null値の扱いやVirtualEntityの扱いは、もう一度読んで噛み砕かないと、理解まで至っていない感じ。 null値の扱いのところは、作図はオブジェクト指向的クラスで表現して、実装は別テーブルという雰囲気かな。


2005-11-25

λ [.NET] VisualStudio2005のDataSet

日本語フィールド名が混じっていると全然通らなくなる。

xyzzyで DataSet1.xsd を開いたら、utf-8n エンコーディングと言ってくる。これを utf-8 エンコーディングに直したら通るようになった。

今までちゃんと調べてなかったが、utf-8nはBOM(Byte Order Mark)なし、utf-8 はBOM(Byte Order Mark)ありのファイルフォーマット。 ちなみにメモ帳はutf-8(BOMあり)になるらしい。


2005-11-26

λ ニンテンドーWiFiコネクション

暗号化はWEPのみ。WPAを実装した場合、リアルタイム性を求めるゲーム中に鍵交換するのはCPU資源的につらいのかなあ。

鍵交換は1時間に1回にして、「健康のために必ず休めや」という仕様にして欲しい。


2005-11-27

λ [.NET] 画像ファイルを受け取ってPNGで保存する

FileUpload1 というサーバコンポーネントを貼り付けた ASP.NET ページで、 画像ファイルを受け取ってPNGで保存するコードは、基本的には以下の2行を記述して終了。楽すぎる。

System.Drawing.Image img = System.Drawing.Image.FromStream(this.FileUpload1.FileContent, false, true /* validate image */);
img.Save(@"C:\temp\test.png", ImageFormat.Png);

強制的にある解像度にリサイズするというようなコードを書いてみた。 ただし、IndexedColor画像をリサイズすると、リサイズ先はフルカラー画像になってしまう。 .NET Framework 内に IndexedColer に変換するようなメソッドが見つけられなかった。

using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Drawing;
using System.Drawing.Imaging;

public partial class PictUploadTest : System.Web.UI.Page
{
    protected void Button1_Click(object sender, EventArgs e)
    {
        if (this.FileUpload1.FileBytes.Length > 0)
        {
            try
            {
                System.Drawing.Image img = System.Drawing.Image.FromStream(this.FileUpload1.FileContent, false, true /* validate image */);
                Trace.Write(String.Format("width: {0}, height: {1}, format: {2}/{3}", img.Width, img.Height, GetImageFormatName(img.RawFormat), img.PixelFormat));

                Bitmap bmp600dpi = new Bitmap(img, 921, 1346);
                bmp600dpi.SetResolution(600, 600); // 600dpi の指定
                bmp600dpi.Save(@"C:\temp\test.png", ImageFormat.Png);
                bmp600dpi.Dispose();
                img.Dispose();
            }
            catch (ArgumentException ex) // 画像フォーマットが不正な場合にこの例外となる
            {
                Trace.Write(ex.Message);
            }
            return;
        }
    }

    public static string GetImageFormatName(ImageFormat fmt)
    {
        if (fmt.Guid == ImageFormat.Bmp.Guid) return "BMP";
        if (fmt.Guid == ImageFormat.Emf.Guid) return "EMF";
        if (fmt.Guid == ImageFormat.Exif.Guid) return "EXIF";
        if (fmt.Guid == ImageFormat.Gif.Guid) return "GIF";
        if (fmt.Guid == ImageFormat.Icon.Guid) return "ICON";
        if (fmt.Guid == ImageFormat.Jpeg.Guid) return "JPEG";
        if (fmt.Guid == ImageFormat.Png.Guid) return "PNG";
        if (fmt.Guid == ImageFormat.Tiff.Guid) return "TIFF";
        if (fmt.Guid == ImageFormat.Wmf.Guid) return "WMF";
        return "unknown";
    }
}

λ SQL Server 2005 自習書シリーズ

管理編 は主に Management Studio の使い方の練習になる。SQL Enterprise Manager との違いが大きいのはレプリケーション周り。 レプリケーションの初期設定ウィザードが接続のためのアカウント情報を要求してくるあたりは分かりやすくなっている。

開発編を読むのはこれから。11 月下旬公開予定のReporting Services基礎編はやくでねえかな。

λ [Windows] 移動プロファイルが読めなくなった

どういう拍子か移動プロファイルをサーバからもってこなくなって、WindowsXPデフォルトのプロファイルを延々と使う状態になってしまったノートPC。

システムプロパティのユーザプロファイルのところを見ると「一時」と表示されていて、実際のディレクトリとしては C:/Documents and Settings/Temp に割り当てられている状態だった。 通常起動だと、別ユーザでログオンしてもこの C:/Documents and Settings/Temp を消せなかったのだが、 セーフモード起動したら「起動しただけで勝手に消えて」しかも再起動した。どういう仕掛けなんだか。 (セーフモード起動専用の RunOnce レジストリがあるのかもしれぬ)

ともかくセーフモード起動で直ったという話。

λ [.NET] SQL Server 2005 データベースミラーリング

ミラー構成されたデータベースに接続する場合、接続文字列に Failover Partner を指定することによりフェイルオーバーを実現する。


2005-11-28

λ [.NET] ADO.NET 2.0 Factory デザインパターン

SQL Injection対策として パラメータ化必須という状況において、 パラメータの解釈部分を抽象化してくれているわけではなさげ、だなあと思いつつちょっと使ってみていたところ。

FactoryのCreateHogeメソッドは、通常のSqlconnectionなどのクラスのコンストラクターと異なり、 引数をつかって初期化してくれる便利メソッドがあんまり実装されていないのでコードが若干冗長になり気味。

画像ファイルを保存するのに Image型のフィールドに入れようとしたら、DbTypeには Binary型(8000bytesまで) というのしかなくて、 その辺もサーバ環境依存だよなあ。 (追記)…と思ったけど、Binary型に対して、dbparameter.Size に長さを指定すれば8000bytesまでという訳でもないらしい。

MSがWebPartsとして汎用パーツの開発をする、というチャレンジにおいてFactory デザインパターンが必要だった、という状況は良く分かる。 が、現実の案件開発においては結局のところビジネスロジックを別レイヤーとして実装しておいて変更しやすくしておく、 ぐらいの方がよいと思われる。

チューニングを視野に入れると、例えば巨大ファイル対策として SQL Server に BLOB 値を書き込むときのリソースの節約 までやろうとすると、更に依存性は高まるわけで。

λ Bflets マンションタイプ

やっと開通した模様なので申し込み中。プロバイダは久々に hi-ho にしようかと思っている(050な電話番号ならIP電話が基本無料らしい)。でも一番重要なのは Flets.Net

λ SQL Server データを PDF化

Reporting Services, iTextdotNET, iTextSharp のどれにしようか調査中。 とりあえず SQL Server 2005 の Reporting Services を使ってみているところ。


2005-11-30

λ WindowsXP ファイルと設定の転送ウィザード

知人の家でXPマシン間でファイルと設定を転送したいという話だったので XPファイルと設定の転送ウィザードを使おうかと思ったが、 現場での様々な要望によりほとんど使わずに終わってしまった。

最後に、IEのお気に入りを移したいという要望にこれを使おうと思ったが、 「旧マシンのファイルと設定の転送ウィザードで作成したファイルは、新マシンのウィザードで読み込めない」 という事態に大ガッカリ。 「新マシン側にある fastwiz.exe を利用して旧マシンでファイルを作る」というのが最初に手順として必要だった。

作業的には、巨大なOutlook Express データの移行(新マシンでもすでに利用していたため、新マシンのデータは消しちゃ駄目)に手間がかかった。


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 無断リンク上等! ただし自動的に捕捉されます。