2008-02-01
λ HP ProLiant ML115
<URL:http://markun.onohara.to/2008/01/31/hp-proliant-ml115.html>
Opteron 1210 を選択しても25,200円。non-ECCメモリ利用可能。こりゃ相当いいな。 静音化にはFAN交換をするものらしい。
ま、事実上 ベアボーン+CPU で、メモリとHDD(と必要ならGPU)は自分で買ってくるものと思えばよし。
λ NetscapeユーザーのためのFirefox/Thunderbird移行ガイド
Mac については OS X 10.1 以前は無視。OS9 以前については何も触れられていない。 Netscape7 は OS9 で使える唯一のモダンブラウザ(比較的)だったのだが…
Mac IE5のようにダウンロードが出来なくなってしまったら OS9 はネット的に過去のもの、でいいのかしら。
2008-02-02
λ 情報セキュリティの日
- 個人向けウィルス対策ソフトは AVG Anti-Virus Free Edition 日本語版(無料) がおすすめ。
- インターネット接続の際は、ブロードバンドルータを利用しよう
- NTTフレッツで、フレッツ接続ツールを PCにインストールするのは避けてほしい
- 特に Windows2000/Windows XP SP1 以前 の場合。あっという間に侵入されます。まじで
- Windows Vista を使う人は UAC 機能は有効のままにしてほしいなあ(希望)
2008-02-03
λ GreaseMonkey GM_xmlhttpRequest
ヘッダに Referer を入れて送信したかったのだが、headers オブジェクトに入れてるのに勝手に消されてしまう。 受け取り側も自分で作ったプログラムなんで、X-Referer で指定することにした。 (せっかくだから X-Referrer とか、Referrer のがよかったか?)
もはや jQuery なしで生活できないので jQuery & Greasemonkey 利用。 ただしそのままコピペするんじゃなくて jquery.js のURL指定は自分とこに変更すべし。
Greasemonkey で jQuery を使うための覚え書き 起動のところもこっちのがよかったかな。動いてるからまあいいか。
しかし jQuery.attr が使えないのは本当に痛い。 jQuery.attr で勝手属性つけて制御するのに慣れきっている俺。
現在の野望: 古い tDiary 月ごとの出力を静的HTMLとして取り出し。div id=main だけ取れば多分いいはず。
2008-02-04
λ SuperBowl の日
今日一日ニュースサイト禁止。新聞も禁止。
大晦日には隣の人の新聞みたら結果が載ってるのを見てしまった。 チャンピョンシップの日には日経夕刊で載ってるのを見てしまった。 NFLなんてめったに話題にならんと思ってるから油断しまくりだったよ。
λ AWSのトラフィック、Amazon本体を超える
早く日本にも設置してくんないかなー
λ IPMI を使って ML115 の温度を監視する
うちも IBM x346 を思わず FreeBSD 7.0化した後に ipmitool で温度取得を仕掛けていたのだった。
こんなコマンド。-c オプションはCSV出力にするオプション。
/usr/local/bin/ipmitool -c sdr type temp | grep degrees
出力例
Ambient Temp,27,degrees C,ok CPU 1 Temp,44,degrees C,ok DASD Temp,29,degrees C,ok
Ambient は周辺温度、DASD はハードディスクエンクロージャ だと思う。
しかし ML115 はIPMI搭載なのか。ますますいいな。 IPMIでネットワーク越しにBIOSいじるとかやってみたい。
λ SuperBowl 録画観戦
めちゃめちゃ面白かった。
2008-02-05
λ [.NET] NUnit testing with dynamic configuration files
App.config などに書いておけばそれを読んでくれるが、 単体テストでその場で設定変更してテストしたい場合の方法。
λ [FreeBSD] VMware images
mimori.orgの運用は仮想マシンで十分なんじゃあと VMware 方面を調べてたら、 FreeBSD 6.3 イメージを提供しているところがあった。
VMware Command Line Tools VMWare Workstation を買わないと入手できない VMwareTools の代わり。
loader.conf に以下の設定を記載。でもあんまり変わらんような。
kern.hz="100"
λ H-IPSパネルのプロ向け29.8型WQXGA液晶
大画面だと ムラ補正機能 の威力がさらにアップする気がする。 ということを鑑みるとかなりお買い得なんでは。
λ [.NET] WCF: Using properties on a ServiceContract interface
プロパティではなく、get, set に対して [OperationContract] を付与する。
内部的には get_プロパティ名 というメソッドが作られていた。
λ VisualStudio 2008 の テストプロジェクト 機能
テストするたびに、その時の環境を TestResult ディレクトリに保存するのだが、 2005 と異なり一定数を超えると自動的に古いものから消去されるようになった。
かなり嬉しい進歩
λ AX300 ERROR FC05
自宅の奴でエラー発生。またディスク生産しないと。
2008-02-06
λ フレッツ・ドットネット の今後について
NTT東から案内到着。3月3日以降の解約については「映像視聴等機能」の提供の停止期間がなくなり、 4月以降300円かからなくなる。
300円の有料サービスなのは以下のもの
- FdNネーム (DNSへの登録)
- FdNディスク (共有ディスク 100MB オプションで1GBまで)
要するにFlets網内IPv6通信をするだけなら解約してもいいはず。
λ MacPeople 2008 3月号
ネットワーク上のボリュームに.DS_Storeを生成しない
defaults write com.apple.desktopservices DSDontWriteNetworkStores true
これ重要
λ M-Root DNSサーバのIPv6アドレスがルートゾーンに登録、IPv6でのDNS検索が可能に
で、AAAAが登録できる TLD のレジストラは?
λ JEEおよびGroovy開発者からの支持が高いAmazon EC2
.NET クラスタも欲しいー
λ 18禁同人誌のシュリンクと、子どもの性衝動の話
ゾーニングそのものは必要だと思うけど、 羞恥プレイ必須にするのは客足が遠のいてしまって運営的に問題あると思う。
せっかく無料で発行してくれるので、20歳以上はタスポ使うのはどうか > 最近アレなJT
決済もできるようになれば タスポで成人向け決済サービス帝国を〜とちょっと妄想。
2008-02-07
λ [.NET] ASP.NET サーバーコントロール 単体テスト with TypeMock + MSTest
HTMLレンダリングのテストは以前からできていたのだが、 Redirect によるページ遷移の部分をどうテストするのかが課題だった。 Redirect の呼び出しを TypeMock を利用することによってテスト可能にする。
テストフレームワークは VisualStudio 2008 Professional で利用できるようになったこともあるので MSTest
(当初 Native Mock 使ってみようかと思ったが Reflective Mock で記述した。 なので TypeMock 無料版でもいけるはず。現在は入れたばかりなので Enterprise 評価モード)
テストしたいサーバーコントロール。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace ServerControl1
{
[ToolboxData("<{0}:ServerControl1 runat=\"server\" />h")]
public class ServerControl1 : WebControl
{
protected override void OnPreRender(EventArgs e)
{
HttpContext.Current.Response.Redirect(ResolveUrl("~/tako.aspx"), true);
}
}
}
テストコード。テストコードの最初の枠組みは VisualStudio 2008 で、上記の OnPreRender に対して「単体テストの作成」を行う。 これにより protected メソッドに対するアクセサ(ServerControl1_Accessor)をVS2008が自動的に生成してくれる。
using ServerControl1;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using System;
using System.IO;
using System.Text;
using System.Web;
using System.Web.Hosting;
using TypeMock;
namespace TestProject1
{
/// <summary>
///ServerControl1Test のテスト クラスです。すべての
///ServerControl1Test 単体テストをここに含めます
///</summary>
[TestClass()]
public class ServerControl1Test
{
HttpContext savedContext;
#region 追加のテスト属性
//各テストを実行する前にコードを実行するには、TestInitialize を使用
[TestInitialize()]
public void MyTestInitialize()
{
MockManager.Init();
savedContext = HttpContext.Current; // 一応保存しとく
}
// 各テストを実行した後にコードを実行するには、TestCleanup を使用
[TestCleanup()]
public void MyTestCleanup()
{
MockManager.Verify();
HttpContext.Current = savedContext;
}
#endregion
/// <summary>
///OnPreRender のテスト
///</summary>
[TestMethod()]
[DeploymentItem("ServerControl1.dll")]
public void OnPreRenderTest()
{
Mock targetMock = MockManager.MockAll(typeof(ServerControl1.ServerControl1), Constructor.NotMocked);
targetMock.ExpectAndReturn("ResolveUrl", "ResolveUrl succeeded").Args("~/tako.aspx"); // Pageの中にコントロールを配置していないので、そのままでは ResolveUrl が失敗する。"ResolveUrl succeeded" で差し替える。
Mock responseMock = MockManager.MockAll(typeof(HttpResponse), Constructor.NotMocked);
responseMock.ExpectCall("Redirect").Args("ResolveUrl succeeded", true); // Response.Redirect の第二引数なしでの呼び出しは Verify に失敗する。第一引数は上記 ResolveUrl が返した仮の値のはず
{
string appVirtualDir = "/Site1"; // Webアプリケーション 仮想ディレクトリ
string appPhysicalDir = @"C:\temp\ServerControl1\Site1"; // Webアプリケーション 物理ディレクトリ
string page = "Default.aspx"; // ページファイル
string queryString = "a=1&b=2";
StringBuilder sb = new StringBuilder();
using (StringWriter sw = new StringWriter(sb))
{
HttpWorkerRequest wr =
new SimpleWorkerRequest(appVirtualDir, appPhysicalDir, page, queryString, sw);
HttpContext.Current = new HttpContext(wr);
ServerControl1_Accessor target = new ServerControl1_Accessor();
EventArgs e = new EventArgs();
target.OnPreRender(e);
}
// レンダリング結果が必要なら sb の中身を調べる
}
}
}
}
λ Expression Media Encoder
Window Media Encoder で画面操作のキャプチャをした後に、キャプションをつけたいと思ったのだが、 現在のところ日本語キャプションはつけられない、とあった。使えん… CAMTASIA Studio とどっちにしようか悩み中。
Expression Design との合わせ技だと Expression Media Encoder はお買い得な気もするし。 とりあえず本当にキャプションつけたくなるまでしばらく待つか。
λ LiveMeeting
次期MCP資格についての LiveMeeting に参加した。参加したっても基本的にはプレゼン聞いてるだけだけど。
早口の英語聞き取りはまだまだ苦しい。資料が画面に出ている分には大筋で間違った理解はしてないとは思うけど、 Q&Aのところは聞き取れない。
λ Mocking .NET 3.5
TypeMock の最新版では、LINQ を利用するところを Mocking できる。 こういうときは Natural Mocks の威力発揮だな。 テスト可能にするために実コードに対する修正をしたり、アクロバティックなコードを書くのは、 品質向上に対して良くないと思われるので TypeMock を利用することはかなり検討する価値がある。
サンプルコードそのままコピペ(コメントだけ日本語化)
// C#
/// サンプルデータ。実際には利用しない
private List<Customer> m_CustomerList = new List<Customer> {
new Customer{ Id = 1, Name="Dave", City="Sarasota" },
new Customer{ Id = 2, Name="John", City="Tampa" },
new Customer{ Id = 3, Name="Abe", City="Miami" }
};
/// <summary>
/// LINQ 呼び出しの モックサンプル
/// </summary>
[TestMethod]
[VerifyMocks]
public void MockComplexQuery()
{
// 返り値として利用する にせオブジェクト fake
var fake = new[] {new {Name="mock",City="LA"},
new {Name="mock2",City="NY"}};
// ここから モック の指定
using (RecordExpectations r = new RecordExpectations())
{
// LINQ呼び出しをモックする指示
var answer =
from c in m_CustomerList
where c.City == "Sarasota"
select new { c.Name, c.City };
// 上記呼び出しに対する 返り値は fake を利用する
r.Return(fake);
}
// 実際に実行されるテストコード
var actual =
from c in m_CustomerList
where c.City == "Sarasota"
select new { c.Name, c.City };
// fake が返ってきたかどうか確認
Assert.AreEqual(2, actual.Count());
Assert.IsTrue(actual.Contains(new { Name = "mock", City = "LA" }));
Assert.IsTrue(actual.Contains(new { Name = "mock2", City = "NY" }));
}
でも現時点で LINQ って使いどころがいまいちわからん。 抽象化して、[操作]に対して[データの入れ物]を可換にしたいんだろうとは思うんだけど、 あんまり抽象化すると最適化できないわけで。
LINQ to (SQLServerでない何か) の場合に、SQL Server みたいにインデックス付与を後から差し込んでチューニングできる、 とかになれば嬉しそうだ。WCF と同様に config の書き換えでチューニング、 動作した結果は変わらないけどスピードが変わるみたいな。
λ FlySSLのSSLサーバ証明書を買ってみた
$7.99/year メールアドレス認証だけ。
証明書の Subject がどうなってるかは書いてないのでわからんけど、実在証明してないんだからそれなりなんだろう。 警告出ないようにするだけだったらこれでもいいな。
2008-02-08
λ mimori.org 引越し 検討
- ブログは Windows Live に引越し
- tDiary の過去記事のうち 日毎 のはすでに squeeze で静的ページ
- 未森荘(チャット)はレンタルサーバで動くようがんばる
- RSS は今の ~h/tdiary/index.rdf に定期的に取得(cron利用)
- tDiary の過去記事のうち 日毎 のはすでに squeeze で静的ページ
- tDiary の過去記事のうち 月毎 のをクロールして作成
- あとは静的ページなんで特に問題なし
- https://mimori.org 用SSL証明書の有効期限は来年1月まであるけどまあいいや。あるいは SNI(Server Name Indication) 実験をやるか? IE7 化推進も近いし。
- メーリングリストは @mail.mimori.org ドメイン運用。これは さくらの専用サーバ上に置く。Mailman 以外でのメーリングリスト運用はもうしたくない。
λ JavaScript Memory Leak Detector
ナイスツール
λ Screencast.Com pricing
25GB で $6.95/月。Jing を無料で配っているのはこれで回収するからか。でも悪くない。 Camtasia Studio やっぱり使ってみよう。
2日間程 Windows Media Encoder 9 つかったけど、ファイルサイズが大きい。パラメータをいじればいいのかもしれんが面倒なのでやってない。
λ FreeBSD on VMware Player 2.x
VMware Player 2 だったら vmware-tools の iso ファイルが入っているというコメントを頂いたので、 試してみた。
vmware-tools ISOファイルを利用するための、vmxファイルに対する修正内容。 ついでにネットワークデバイスを専用仮想デバイスである vmxnet に指定している。
% diff -u freebsd-6.3-i386.vmx.orig freebsd-6.3-i386.vmx === freebsd-6.3-i386.vmx.orig 2008-02-08 20:58:48.000000000 +0900 +++ freebsd-6.3-i386.vmx 2008-02-08 20:58:48.000000000 +0900 @@ -9,22 +9,23 @@ ide0:0.fileName = "freebsd-6.3-i386.vmdk" ide0:0.writeThrough = "TRUE" ide1:0.present = "TRUE" -ide1:0.fileName = "auto detect" -ide1:0.deviceType = "cdrom-raw" +ide1:0.fileName = "C:\Program Files\VMware\VMware Player\freebsd.iso" +ide1:0.deviceType = "cdrom-image" floppy0.startConnected = "FALSE" floppy0.fileName = "Auto detect" ethernet0.present = "TRUE" +ethernet0.virtualDev = "vmxnet" ethernet0.connectionType = "bridged" -usb.present = "TRUE" -sound.present = "TRUE" +usb.present = "FALSE" +sound.present = "FALSE" sound.virtualDev = "es1371" displayName = "freebsd-6.3-i386" guestOS = "freebsd" nvram = "freebsd-6.3-i386.nvram" -floppy0.autodetect = "TRUE" +floppy0.autodetect = "FALSE" sound.fileName = "-1" -sound.autodetect = "TRUE" +sound.autodetect = "FALSE" ide0:0.redo = "" ethernet0.addressType = "generated"
vmware-tools を使ってみる。インストールに perl が必要なのだが perl が入ってないので無理やり vwware-guestd を起動
% mount /cdrom % cd /var/tmp; tar xzf /cdrom/vmware-freebsd-tools.tar.gz % cd vmware-tools-distrib % cp lib/modules/binary/FreeBSD6.0-i386/*.ko /boot/kernel/ % echo 'vmmemctl_load="YES"' >> /boot/loader.conf % echo 'vmxnet_load="YES"' >> /boot/loader.conf % reboot ... 再起動 % cd /var/tmp/vmware-tools-distrib % lib/sbin32-6/vmware-guestd
仮想FreeBSD 内の /etc/rc.conf でネットワーク見えるところまで
hostname="vmwarefreebsd.local" ## IPv4 ifconfig_vxn0="inet 192.168.1.11 netmask 0xffffff00" defaultrouter="192.168.1.1" gateway_enable="NO" ## IPv6 ipv6_enable="YES"
数時間使ってみているが、時計は狂わなくなったようだ。素晴らしい。
あとは VMware Server でどうなるかだな。
2008-02-09
λ [.NET] ASP.NET + SWFUpload
Flash を使った アップローダ SWFUpload を使って ASP.NET に画像ファイルを転送、サムネイルを表示させるサンプル。
一昔前に Flash でのアップローダを探した時はグッとくる奴がなかったが、 今は Flash8 から FileReference class が搭載されてアップロード機能自体は Flash がやってくれるようになっている。 あとはどうインターフェースを作成するかだけ。 とはいえ Adobe 製品買わないで JavaScript 側で制御できる SWFUpload はありがたい。
ただし転送中断した場合に、途中から再開させるような機能はない。 再開できないのは FileReference の仕様っていうか POST (Content-Type:multipart/form-data) の仕様でそんなことは決まってないからだ。 WebDAV の受け口に対して PUT で送るような Flash (か JavaApplet) があると中断/再開ができるかもしれん。でもなさそう。
一方でWindows的な解決は「BITS(Background Intelligent Transfer Service)使え」なんで、 大規模になったら BITS のアプリケーション配布という方向かしら。
2008-02-10
λ Vista BITS に残っていたゴミ
Windows BITS (Background Intelligent Transfer Service) の調べ物をしていて、 bitsadmin コマンド を試しに実行してみた。
C:\temp>bitsadmin /list /allusers
BITSADMIN version 3.0 [ 7.0.6001 ]
BITS administration utility.
(C) Copyright 2000-2006 Microsoft Corp.
{9C762EF6-73EB-4D64-8893-84687DA1094D} 'DownloadPackageAttachmentTask: c24cf1a2af254242bc1ca1078252a380' TRANSFERRED 1 / 1 2479851 / 2479851
{1478A011-F244-45EE-9F3C-93972F3A168F} 'Visual Studio Express' SUSPENDED 0 / 0 0 / 0
{2B70705B-3521-4589-BDF7-DCC286A49449} 'Visual Studio Express' SUSPENDED 0 / 0 0 / 0
{A6CB71D9-FAAA-407A-820E-54847AECD9FD} 'Visual Studio Express' SUSPENDED 0 / 0 0 / 0
Listed 4 job(s).
なんかいるー Visual Studio Express は 2008 リリース時にダウンロードしようとして失敗した時のゴミと思われる。
bitsadmin /reset /allusers コマンドを実行してゴミ削除した。
C:\temp>bitsadmin /reset /allusers
BITSADMIN version 3.0 [ 7.0.6001 ]
BITS administration utility.
(C) Copyright 2000-2006 Microsoft Corp.
Unable to cancel {9C762EF6-73EB-4D64-8893-84687DA1094D}.
Unable to cancel {1478A011-F244-45EE-9F3C-93972F3A168F}.
Unable to cancel {2B70705B-3521-4589-BDF7-DCC286A49449}.
Unable to cancel {A6CB71D9-FAAA-407A-820E-54847AECD9FD}.
0 out of 4 jobs canceled.
2008-02-11
λ AX300ハードディスク交換
以前からバックアップイメージの入ったCDRを作ってあるので手順としてはあまり同じところはないのだが
英語環境のほうがよければ、knoppix dma 2 lang=usなどとして立ち上げるとよい
起動パラメータで言語も指定できるのか。
次回からは knoppix dma 2 noswap lang=us を使おう。
λ AX300 初期セットアップ
本体設定画面より
- IPアドレス 自動取得 (RT57i に固定IPアドレス払い出し設定 dhcp scope bind 1 192.168.200.230 ethernet 00:0d:5e:00:a4:1f) 再起動あり
- チャンネル設定 都道府県:埼玉 VHF:東京 UHF:浦和
- チャンネル設定の追加 5CH:42(ちばテレビ) 9CH:9(SCAT)
- ADAMS-EPG 時刻取得
- ユーザー画質 MPEG2(VBR) 352x480 4.5Mbps (DVD-R 1枚に2時間を収める最適値)
- タイムシフト 画質:ユーザ設定 時間:90分
- ワンタッチスキップ 30秒
- シーンサーチ 1秒,10秒,60秒,5分 (普段使うのは5分ばっかり)
- 予約録画 画質:ユーザ設定 容量不足時に削除
- ボタン割り当て a:設定 b:予約実行結果 c:HDD状態 d:おまかせ番組表
Webブラウザより
- サーバ名の変更 (再起動あり)
TODO: HDDを静かにする
http://sh.uroff.org/sh/20060522.html#p02
hdparm static link版を作るか拾う必要がある。knoppix の miniroot.gz に入っているようなのだが…
2008-02-12
λ [.NET] TableAdapter親クラスの変更
データセットデザイナで TableAdapterにあるBaseClassプロパティを変更することで親を変更できる
C#のコンパイル前に hoge.xsd → hoge.Designer.cs の変換をするんだからそーゆー芸当も出来るわけか。
ここで示されているのは Transaction を指定するための仕掛けだけど、 CommandTimeout を指定するとかも作成できるはず。
どっちかというと今は DataAdapter を書く方に傾いているけど… DataAdapter の中身が複数の TableAdapter というのもありかしら。
λ .NET Webサービス チューニング
- バイナリ転送には MTOM を使うように構成
- XmlSerializer をあらかじめ用意しておく。 sgen.exe の利用
- TCPremoting でのロードバランス SocketCachePolicy, SocketCacheTimeout の指定
- ローカルマシンでの通信には IPC channel (named pipe) を利用する
λ svk 動作イメージ 作成挫折
社内啓蒙向けに 動作イメージ を作りたいと思ったのだが、 Subversion+svkでらくらく分散リポジトリ 以上の絵が作れそうにない。
むしろFlashアニメかなんか作るべきなんだろうか。そこまでやる余裕はさすがにないし…
λ ubuntu で hdparm の static link 版を作成
VMware images から Ubuntu 7.10 を持ってきてVWware上で作業。
sudo apt-get install gcc make sudo apt-get install build-essential wget http://ftp.debian.org/debian/pool/main/h/hdparm/hdparm_7.7.orig.tar.gz tar xzf hdparm_7.7.orig.tar.gz cd hdparm_7.7 make CFLAGS=-static LDFLAGS=-static
でも AX300 だと kernel が古すぎるといわれて使えなかった。
2008-02-13
λ Triton Code Signing Digital ID 申込
申込を開始した。こんな時のための D-U-N-S Number。
今回秘密鍵はスマートカードである ASECard に格納して金庫に保管する方向を考えている。 テスト用だったら社内CAで発行すればいいわけで、 外部向けにコードへの署名を本当にする機会なんてそんなにはないだろう。
滅多に作業しないということは、手順書見ながらの作業になるんで、PIN(パスワード)はどっかにメモ
λ SQL Server 2008 評価用VHD 利用
仮想ハードディスクで提供されていて手軽に利用できるのだが1か月限定、ということでVHDを何度か使いまわしすることになる。 (リリース間近の評価用VHDだったら利用期間がどうせ短いからいいんだけど) 今回の Nov2007版は妙に生存期間が長い。
設定ポイント
- 最新の Virtual Server Additions をインストール
- 仮想ディスクはSCSI接続の方が少し速いらしい。
- IPv6 アドレスを付与し、IPv6経由でリモートデスクトップ接続できるようにする
準備 ==
- ダウンロードした結果できた VHD に対して 差分仮想ディスクを作成。
- 差分仮想ディスク を ide0:0 に接続した仮想マシンを作成する
初回ログオン時 ==
- 最初から入っている Virtual Server Additions をアンインストール
- shutdown /r /t 3
2回目ログオン時 ==
- 最新のVirtual Server Additions をインストール
- Windows Update かける
- shutdown /r /t 3
3回目ログオン時 ==
- SCSI デバイス(Microsoft Virtual Machine PCI SCSI Controller)がインストールされるのを確認する
- shutdown /s /t 3
- シャットダウン後、差分仮想ディスクを ide0;0 から外し、scsi0 に接続
IPv6アドレスを付与して、IPv6経由でリモートデスクトップ接続できるようにする。
netsh interface ipv6 install netsh interface ipv6 add address 4 2001:218:xxxx:xxxx::1234 netsh interface portproxy add v6tov4 listenport=3389 connectaddress=127.0.0.1 connectport=3389 listenaddress=* protocol=tcp
IPv4 アドレスは通信できなそうなアドレスにしておく。 Windows Server 2003 だと IPv4 アドレスを無効にすると IPv6 も巻き添えになるように見える。(未確認)
λ 鍵紛失 1日
昨日帰り際にキーホルダーまるごと紛失していることに気づく。 机のまわりをそれなりに調べたのだが見つからず。 こんなときのための復旧手順は決めてあるので、予備の鍵を入手して家に帰った。 一人暮らしなんで鍵紛失時に「即カギヤを呼ぶ」という展開は避けたいところである。 (さっさと結婚しろ、という話はある…)
昨日帰り際にやっぱり見つからなったなあ…と椅子を引いたら下に落ちてた。 黒い椅子の足の下に黒いキーホルダーがはさまっていたようだ。
λ Joel on Developers Summit 行きたかった…
今年のデブサミ行きたかったんだけど行けず。
Developers Summit 2008, Joel Spolskyの講演に行ってきた より
「ユーザーが望むものにフォーカスしよう」 No.1になりたいなら、No.1の製品を作りたいなら、 それは往々にして機能ではなく、ブランド、デザイン、応答性、安心感、幸福感、支配欲を満たすものであるのだ。
Windows Updateにイライラする話と自分を対比してみると、俺の場合 「常にカスタム インストールを選ぶことで影響力を行使している」なあと。 そうじゃなくて毎月第2水曜かその次の日あたりに勝手に再起動されて昨日のデータがなくなってたりしたら、 やっぱりムカムカするんだろう。
2008-02-14
λ HTTP GET メソッドに 安全性 を持たせる (REST)
GET メソッドを利用した際に状態の変更を行わないこと。 ただし副作用がないという意味ではない。サーバ内でログを記録してもいいし、カウンタとして動作するリソースの場合は別の数値が返ってくるのでもかまわない。 クライアント側にとって「複数回呼ぶことが安全」であることが重要。
POST を使った XML-RPC は RESTful ではないが共存するという選択肢はありのようだ。 一方で安全性を持たない GET メソッド の実装は大いなる害悪。 あと正しいHTTPレスポンスコードの返答を実装することも優先度が高いだろう。
2008-02-15
λ Windows で コード署名
Triton 経由 COMODO で署名を獲得した。
署名には signtool.exe を利用する。とりあえずsigntool signwizard でウィザード形式で署名してみた。
Timestamp server としては http://timestamp.comodoca.com/authenticode を利用する。
めったに使わないはず、なんで毎回 signwizard でいいかなあ。
しかし社内向け ActiveDirectory 運用、ということでは 社内CA で発行した証明書を使って、 フリーソフトも署名してしまって「署名された実行ファイルだけ使えます」グループポリシーを配るという運用もありだな。 Security Advisory 出るたびに
- 前のプログラムに対する署名無効化
- 新しいプログラムへの署名
- 社内向け告知
とかそんな感じ。
λ What, How, Why の書きどころ
テストコードにはWhat, ソースコードにはHow, そして,ドキュメントにはWhyを書くんだよ!
これは分かりやすく素晴らしいキャッチフレーズ。
ドキュメントにWhyは昨年あたりから心がけてたけど、テストコードがWhatというのは意識してなかった。
2008-02-16
λ Amazon Simple Queue Service
メッセージ飛ばすだけなら ssh でいいじゃんとか思わなくもなかったが、 Simple と言いながらパラレルコンピューティング向けとしていい感じに作られている。
すなわち以下の仕様により、「メッセージ読み出し」→ジョブ開始→ジョブ完了→「メッセージ削除」 という実装にするだけで、ジョブの実行完了を保証できるようになっている。
- メッセージの読み出し時に ReceiptHandle が割り当てられる
- メッセージの読み出しから一定期間内はそのメッセージは読めないが、その期間を過ぎると再読み出し可能になる。
- メッセージの削除は「最後に発行された ReceiptHandle」を利用する。それ以外の ReceiputHandle では削除されない。
- ただし4日間経過するとメッセージはシステムにより自動削除される
一定期間後にメッセージを再読み出しされるのは、何らかのエラーの発生で処理が中断したという状況で、再実行を自動的に行うためだと思われる。
メッセージのやりとりには、POST + GET で行う方法と、SOAP で行う方法の両方がある。
WCF 使うと簡単に利用できるようだ。 Amazon SQS Talks WS-*
2008-02-17
λ WCF FaultException クラス
WCFのサービス側で throw new FaultException() すると、その例外はクライアント側に通知されるようになっている。 クライアント側でも catch(FaultException e) で受け取り。
更に FaultException<T> というジェネリックも定義されていて、 FaultException に俺クラスの情報を付与して例外発生できる。 というか受け側で catch(FaultException<T> e) によって選別できるのがうれしい。 ただし、これを実現するためのプロキシクラス作成には svcutil コマンドを利用する必要がある。 WSDL 経由では例外に関するメタデータが公開されないようだ。
2008-02-18
λ ssh公開鍵の初回送信
VMWare仮想マシン(ネットワークはNAT) で、ssh公開鍵をサーバに送るのに
wget 'http://自分の管理マシン/?[ssh鍵]'
コマンドを利用して、アクセスログからコピペで取りだした。
2008-02-19
λ 5万円の耳栓
耳栓をして寝るといいらしいというので、E5c をつけて寝てみた。結構いいかも。
λ 株式会社コモドジャパンが設立
今までと同程度の価格で提供してくれるのかしら
λ [FreeBSD] man 4 ciss
7.0-RC2 以降で修正の入っているソースの中に ciss デバイスがあったので、 マニュアル見たら HP Smart Array E200 が含まれている。 ML115 で選択可能なRAIDカードなので興味があったところ。
ググった結果 <URL:http://www.mail-archive.com/freebsd-users-jp@jp.freebsd.org/msg02284.html> …E200+SATA は遅くて評判悪い。
やはり書き込みキャッシュで高速化を狙うなら 3wareかAreca になってしまうのか。
2008-02-20
λ SQL Server 2008 CTP6 (Feb 2008)
- Vista SP1 RC (X61Tablet) には入らなかった
- Windows Server 2008 RC1 には入らなかった (Windows Server 2008 製品版にはインストール可能とある)
ちゃんとしたOSを選びましょう…
最終的に実験用として使っている XP SP2 仮想マシンに入れたところ。 今回照合順序には Japanese_Unicode_BIN を選択した。 オンラインではないヘルプの「セットアップでの照合順序の設定」で以下のようにあったため + 最近バイナリ照合順序をなるべく使う方向のため。
Unicode 版の日本語 (コード ページ 932) では [Japanese_Unicode] を使用します。これは、[Japanese] とコード ページ (932) は同じですが、並べ替え順が異なります。
…しかしググると過去の遺物で使っちゃいけないものだったらしい。
SQL Server 開発チーム ブログ より、Japanese_XJIS_100 がよさげ。XJISって何?
2008-02-21
λ Bluetooth対応「ウォークマンA」
X02HT(Windows Mobile 6)のメディアプレイヤーだと動画に対する再生の操作がかなりいまいちで、 ウォークマンでの視聴にまったくかなわない。 TechEdのセッション動画を見るのに、ファイルを再エンコードする価値は十分にあると感じていたところ。
リモートスピーカーとしてのBluetoothを推進しているのは、十分に利点がわかるからかな。 それが踊らなくても。
2008-02-22
λ KeyRemap4MacBook最強過ぎる
CPUがCore2世代になって以降魅力的なノート(Let'sNote以外)が増えてきたのではあるが、 昨年秋に X61Tablet 買ってしまった以上しばらくMacには戻れん。 (PowerBookG4にLeopardつっこんで復帰してもいいんだけど)
しかしキーボードリマッピングについてもっとOSの支援が欲しいなあ。 特にVistaになってWindowsでは使い物にならない状態になってるし…
2008-02-23
λ CPAN for OSX 10.4
% sudo port install wget gpg p5-libwww-perl p5-crypt-ssleay % sudo -H perl -MCPAN -e shell o conf make_install_arg UNINST=1 o conf prerequisites_policy follow % sudo port install p5-xml-libxml p5-class-accessor p5-datetime-format-strptime p5-digest-hmac p5-digest-md5 p5-uri % sudo -H perl -MCPAN -e "install Net::Amazon::S3" % sudo port install p5-xml-simple p5-xml-sax % sudo -H perl -MCPAN -e "install Amazon::SQS::Simple"
そもそもは ubuntu 上でCPANから Amazon::SQS::Simple をインストールしていたら、 save_parsers_debian 問題に直面してインストールに失敗したのがはじまり。 最終的には ubuntu 上で戦うのは止めにした。どうもLinuxとは相性がよくないと思ってしまう。
λ Java for Mac OS X 10.4, Release 6
J2SE 6.0 になるわけではない。がっかり。
FreeBSD Java 1.6 patchset の移植版である http://landonf.bikemonkey.org/static/soylatte/ を使うものらしい。 ビルドが必要そうで、MacPorts を軽く眺めたところではなさそうである。 Javaとはあまり戦いたくないので撤退。
λ 戦争と製造業と官僚制のみがリアルというパラダイム
俺世代(というか俺自身)の最大の不幸は、石油は30年で無くなると信じさせられた子供時代にあるような気がした。
…話飛び杉か。
情報のコピーはタダだし、むしろ価値のある情報を交換すると交換しただけで価値が高まるコラボレーションという現象があって、 情報についてのそういった性質についてはそんなに異論はないんじゃないかと思う。 秘密にするべき情報をいかに収集するかというのは20世紀的行動だ。
一方で物質的資源は確かに有限ではある。が、人間は自分の持つ知見によって最適行動するという前提に立つならば、 ネットワークが生み出した知見が進歩すれば物質的資源が「不足しない」という状況はありえる。 いやむしろ誰かは知っていて、交換によってどう広めるか、交換の速度をどう高めるかが重要なのかもしれない。
2008-02-24
λ Amazon SQS REST API なくなってた
C# 向けの SQS REST アクセス実装がないなあと調べてたら、 x-amz-date Help に当たる。C#のライブラリだと Date ヘッダーが設定できないとか。
で、最新のAPIである API Version 2008-01-01 を参照したら REST API の情報が削除されてた。昔のバージョンにおける REST API がなくなったというわけではないようなのだが、API Version 2008-01-01 には定義されていない。
まあとりあえずSOAPで実装しといて、 必要になったらメッセージのpush/pullだけPOST/GETで高速化するとかでいいか。
…と思ったのだがSOAPのが面倒すぎ。WSEとかありえない。 いまいちいいソースコードを拾えなかったので自作中。
2008-02-25
λ Windows Server 2008 ディスク拡張作業
その昔ケチって5GBとかで作った仮想ディスクを拡張する作業をした。 VHDResizer を使って大容量仮想ディスクにした後、Windows Server 2008 の仮想マシンにつないで diskpart コマンドを利用。
diskpart の中ではこんな感じ。
# ディスクメディアを確認 list disk # disk 2 がオフライン状態なのを確認したので disk 2 をオンラインにする select disk=2 online disk # ボリュームを確認 list volume # E ドライブが今回目的のドライブ(5GB)なのを確認したので volume=E を拡張する select volume=E extend disk=2 # ボリュームを確認 list volume # 127GB に拡張された select disk=2 offline disk
VHDResizer はサイズ変更するっていうよりも、新しい仮想ドライブを作って中身を dd っぽくバイナリ転送しているだけだった。VHDの仕様は確か公開されてたはず。
2008-02-26
λ Windows Server 2008 リモートデスクトップ
管理用リモートデスクトップ(プロトコルはターミナルサービスと同一ではあるが)の構成において、 標準状態でSSLが有効、サーバ証明書は自動生成になっている。 要するに自己署名証明書を作っているわけだが、秘密鍵が共通だった昔の暗号化接続に比べればはるかにまし。
WindowsServer2003 時代のようにSSL証明書を仕込んでSSL接続モードに変更するのは*最優先*ではなくなった。 とはいえオレオレ証明書警告食らってそれを無視させるのも良くないので、証明書発行して仕込む作業やるけど。
λ [FreeBSD] 外付けHDD不調
IEEE1394経由で接続している外付けHDDが不調で、ログにはこんなのが残っている。
Feb 18 03:48:40 usen kernel: sbp0:0:0 request timeout(cmd orb:0x6233a9dc) ... agent reset Feb 18 03:48:40 usen kernel: fwohci0: txd err= 3 miss Ack err Feb 18 03:48:40 usen kernel: sbp0:0:0 sbp_agent_reset_callback: resp=22 Feb 18 03:48:40 usen kernel: fwohci0: txd err= 3 miss Ack err Feb 18 03:48:40 usen kernel: sbp_orb_pointer_callback: xfer->resp = 22 Feb 18 07:26:11 usen kernel: sbp0:0:0 request timeout(cmd orb:0x6233ab14) ... target reset Feb 18 07:26:11 usen kernel: fwohci0: txd err= 3 miss Ack err Feb 18 07:26:11 usen kernel: sbp0:0:0 request timeout(mgm orb:0x6233ac4c) ... reset start Feb 18 07:26:11 usen kernel: fwohci0: txd err= 3 miss Ack err Feb 18 07:26:11 usen kernel: sbp0:0:0 sbp_reset_start failed: resp=22 Feb 18 07:26:12 usen kernel: fwohci0: too many cycle lost, no cycle master presents? Feb 18 07:26:12 usen kernel: fwohci0: BUS reset Feb 18 07:26:12 usen kernel: fwohci0: node_id=0xc800ffc0, gen=2, CYCLEMASTER mode Feb 18 07:26:12 usen kernel: firewire0: 1 nodes, maxhop <= 0, cable IRM = 0 (me) Feb 18 07:26:12 usen kernel: firewire0: bus manager 0 (me) Feb 18 07:26:12 usen kernel: fwohci0: too many cycle lost, no cycle master presents? Feb 18 07:26:12 usen kernel: fwohci0: BUS reset Feb 18 07:26:12 usen kernel: fwohci0: node_id=0x8800ffc0, gen=3, non CYCLEMASTER mode Feb 18 07:26:12 usen kernel: firewire0: 2 nodes, maxhop <= 1, cable IRM = 0 (me) Feb 18 07:26:12 usen kernel: firewire0: root node is not cycle master capable Feb 18 07:26:12 usen kernel: firewire0: bus manager 0 (me) Feb 18 07:26:12 usen kernel: fwohci0: too many cycle lost, no cycle master presents? Feb 18 07:26:12 usen kernel: fwohci0: txd err= 3 miss Ack err Feb 18 07:26:12 usen last message repeated 2 times
書き込みに失敗するだけならいいんだけど、 ファイルシステムへのアクセスをするところで完全に動作が止まってしまいリモートメンテナンスできなくなるのは勘弁して欲しい。
多分HDDが壊れただけだと思うのだが…IEEE1394コントローラの故障だったらやだなあ。
λ Windows Server 2008 Server Core on Virtual Server で レプリカ ドメインコントローラ作成
Server Core はexplorerがなく、コンソールがシェルとして起動するWindows。 とはいえ諸般の事情でNotepadは入っている。以下のキーボード操作を覚えておくとよい。
- Alt+Tab : アプリケーションの切り替え。基本
- Ctrl+Shift+Esc : タスクマネージャの起動。
- Alt+F → N で新しいプロセスの起動。cmd とかやると2つ目のコマンドプロンプトが開ける
- Alt+O → A で Always On Top は外しておいた方がいい
Virtual Machine Additions のインストール作業
- Dドライブに C:\Program Files\Microsoft Virtual Server\Virtual Machine Additions\VMAdditions.iso をマウントしておく
cmdプロンプトで以下のコマンドを実行してウィザード画面に従ってインストールする。
cd /D D:\Windows start VirtualMachineAdditions.msi
ステップ バイ ステップ ガイド - Windows Server 2008 の Server Core インストール
ローカルAdministrator での作業
- 初回ログイン時のパスワードは空で、変更を求められる。あとから変える場合は net user コマンド
- netsh を使ってIPアドレスの付与,DNSの設定
- netsh interface ipv4 set address ...
- netsh interface ipv4 set dnsserver ...
- netsh interface ipv6 set address ...
- netsh interface ipv6 set dnsserver ...
- IPv6 アドレスで一時アドレスを無効にする: netsh interface ipv6 set privacy state=disabled
- IPv6 アドレスでMACアドレス由来のアドレスにする: netsh interface ipv6 set global randomizeidentifiers=disabled
- netdom renamecomputer を使ってマシン名変更
- netdom join を使ってドメインに参加
- ライセンス認証 (実際には数日安定稼働させてから行う) MSDNライセンスなど KMS を運用していない場合
CD %systemroot%\system32cscript slmgr.vbs -ipk 12345-67890-12345-67890-12345# ライセンス番号の入力cscript slmgr.vbs -ato# 実際の認証
ドメイン Administrators アカウントでの作業
- dcpromo /unattend:dcreplica.txt
dcreplica.txt は以下の内容で作成した。
[DCINSTALL] ReplicaOrNewDomain=Replica ReplicaDomainDNSName=DOMAIN.example.com SafeModeAdminPassword=P@ssw0rd DNSOnNetwork=yes InstallDNS=yes ConfirmGC=yes RebootOnCompletion=yes
この無人インストール用テキストに書くべき内容は Unattended Installation Options を参照。
λ Windows Server 2008日本語版でデータ損失の問題−3月初旬にフィックス予定
先週末ぐらいにダウンロードしようとしたらすでにダウンロードできなくて、どうしたのかと思っていたところ。
むしろドメインコントローラーとかだったら 英語版+MUI で構成した方がいい気がする。 上記レプリカドメインコントローラーは英語版のままだ。 レプリカドメインコントローラーをServerCoreで作成して操作マシンを別に持つというのがこれからの方向性ということで。
2008-02-27
λ DTC Administration Guide
MSDTC関係の設定が今まで攻め切れていなかったので何とかしないとなー、という思いがあったのだが、 それとは別にトラブル発生中。
SQL Server 2005 からロック状況を調べても、オブジェクトロックは無いとしか見えないのに、 特定のレコードを SELECT でもってこようとするとロックして取れない、with(nolock) にすれば取れるという状況発生。 MSDTC を再起動したらロックが解除されたようだった。
なんかイベントログには kernel32.dll でエラー発生した記録が残っていたりしてすごいイヤな感じ… kernel32.dll だとハードウェアトラブルの線も捨てられなくなるし、原因特定が難しい状況。
とりあえず DTC Administration Guide をきっちり読んでみよう。 いくつかのページについては翻訳作成しないと運用チームに引き継げないなあ。
2008-02-28
λ [FreeBSD] FreeBSD 7.0-RELEASE Release Notes
一番興味を引いたのは TSO に関する記述。
The FreeBSD network stack now has support for TCP Segmentation Offload (TSO). TSO reduces the overhead of sending bulk TCP data by allowing a network interface to convert a large data transfer into multiple TCP segments to be sent on the network. This functionality can be enabled or disabled on a per-interface basis with the tso and -tso flags to ifconfig(8). Network interfaces and drivers supporting TSO currently include em(4), mxge(4) and cxgb(4).
TCPパケットの再構成をネットワークインターフェースにやらせる機能。GigabitEther は Broadcom 鉄板だと思ってたけど、Intel も結構いい?
しかし100BaseTXの時代と違って基本オンボードだからあんまり選べないよな。 (最初NICって書いたが、NIC=Network Interface Card なのでオンボードだとCardじゃねえー)
λ [FreeBSD] 4.7 から 6.x にリモートアップグレード
ツワモノだ。 <URL:http://pc11.2ch.net/test/read.cgi/hosting/1195837699/286> から転載
自分は4.xから6.xにリモートでアップグレードしたので以下参考に。 どうしても自力でリモートアップグレードしたいなら、 4.7→4.11→5.5→6.x っていう順番になるとおもいます。 セキュリティアップデートと違って、 アップグレードの場合は/etc配下の各ファイルを、mergemasterで適切に上書きor編集しないとシステムが動かなくなるので注意。 4.11→5.5の手順は↓を参考に。(これ見て手順が理解できないならあきらめたほうがいいです) http://www.freebsd.org/releases/5.4R/migration-guide.html ただし、installkernel後(installworld前)のリブートは、手順と違ってマルチユーザモードでリブートすることになるので注意。 つまり、カーネルが5.5、ユーザランドは4.11の状態でブートすることになります。 (4.xのカーネルでブートした状態のままではinstallworldできません) このとき、procファイルシステムをfstabからコメントアウトしてからリブートしないとダメです。 また、PAMモジュールが変わっているので、OpenSSHは自動起動しない状態でリブートしないとだめです。 かわりにTelnet接続を有効化しておいてください。 どうしてもこの状態(カーネルが5.5、ユーザランドは4.11)でSSH接続したい場合は、 事前にPortsからWITHOUT_PAM=yes付きでOpenSSHをインストールして、 PortsからインストールしたOpenSSHを公開鍵認証で使うようにしてください。 あと、compatを有効化しても動かないPortsもあるのでPortsも一通りリビルドが必要だと思ってください。 4.7→4.11と、5.5→6.xは、ハンドブック参照。 有償で再インストールする羽目になっても責任はもてないので、 失敗したら有償で再インストールをする覚悟をもちつつ、 事前にローカルでリハーサルしてから自己責任でやってください。
λ ミライレンタルサーバ MRS SP1000
FreeBSD 選択可能 さくらの専用サーバが現在申込中断中なので代替としてありか?
λ Windows Live BlogIt API
何のためなのかドキュメントだけだと意味不明だった。
Live ログイン状態で使ってみたら特定のURLについて言及するための記事を「書き始める」ためのAPI。 ブックマークレットにするためのものだな。
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.
λ 夏草 [現在もNetscape8 の最新版(最終版?)を絶賛使用中ですがなにか?(笑) 正直セキュリティ観点から気になる点も..]