2008-03-01
λ Mimori's Algorithms Space
今日から Live Space に移転する方向で。
野望
- 過去の日記を転送する
- ここのRSSは http://kamiyn.spaces.live.com/blog/feed.rss に飛ばす。RSS feed ってリダイレクトしていいのかしら?
λ Windows Live Spaces にXML-RPC経由で投稿したりする
ドキュメントは Windows Live Spaces MetaWeblog API。 tDiary の日記を転送するという目的なので久々にRubyで記述。
getUserBlogs.rb : ブログ情報の取得
require 'xmlrpc/client'
uri = "https://storage.msn.com/storageservice/MetaWeblog.rpc"
username = "kamiyn"
password = "********"
client = XMLRPC::Client.new2( uri )
blogger = client.proxy("blogger")
begin
appkey = "ignored" # ignored
result = blogger.getUsersBlogs appkey, username, password
p result
rescue XMLRPC::FaultException => e
puts "fault #{e.faultCode}: #{e.faultString}"
end
結果
[{"blogid"=>"MyBlog", "blogName"=>"Mimori's Algorithms Space", "url"=>"http://spaces.msn.com/members/kamiyn"}]
→ blogid は MyBlog である。metaWeblog.newPostドキュメント見ると確かにそう書いてあるんだけど…
ドキュメントの記載が This should be the string MyBlog じゃなくて This should be the string "MyBlog" だったら見分けついたのに。
getRecentPosts.rb : 最近の投稿情報の取得
require 'xmlrpc/client'
uri = "https://storage.msn.com/storageservice/MetaWeblog.rpc"
username = "kamiyn"
password = "********"
client = XMLRPC::Client.new2( uri )
metaWeblog = client.proxy("metaWeblog")
begin
blogid = "MyBlog"
numberOfPosts = 5
result = metaWeblog.getRecentPosts blogid, username, password, numberOfPosts
p result
rescue XMLRPC::FaultException => e
puts "fault #{e.faultCode}: #{e.faultString}"
end
newPost.rb : 記事の投稿
require 'xmlrpc/client'
uri = "https://storage.msn.com/storageservice/MetaWeblog.rpc"
username = "kamiyn"
password = "********"
client = XMLRPC::Client.new2( uri )
metaWeblog = client.proxy("metaWeblog")
begin
blogid = "MyBlog"
title = "testTitle" # タイトル
description = "testDescription" # 中身
dateCreated = XMLRPC::DateTime.new(2007,11,1,0,0,0) # 日時
categories = ["TestCategory"] # カテゴリー
publish = true # falseにするとドラフトに保存,公開されない
result = metaWeblog.newPost blogid, username, password, {'title'=>title, 'description'=>description, 'dateCreated'=>dateCreated, 'categories'=>categories}, publish
p result
rescue XMLRPC::FaultException => e
puts "fault #{e.faultCode}: #{e.faultString}"
end
λ ruby XMLRPC の SSL 接続で文句言われないようにする
上記のままだと以下のような文句を言われる。
warning: peer certificate won't be verified in this SSL session
要するに証明書の検証してないわけなんだが、XMLRPC::Client にルート証明機関の証明書を指定する方法がないのでパッチあてた。 いろいろ作るのが面倒なので内部でかかえていた Net/HTTPS オブジェクトをそのままプロパティとして公開しただけ。
diff -u /usr/local/lib/ruby/1.8/xmlrpc/client.rb /usr/local/lib/ruby/1.8/xmlrpc/client.rb.bak [~/tdiary/dailyupdate]
=== /usr/local/lib/ruby/1.8/xmlrpc/client.rb 2008-03-01 20:01:35.000000000 +0900
+++ /usr/local/lib/ruby/1.8/xmlrpc/client.rb.bak 2008-03-01 19:58:17.000000000 +0900
@@ -385,7 +385,6 @@
# Cookie support
attr_accessor :cookie
- attr_reader :http
attr_reader :timeout, :user, :password
getUserBlogs.rb 改: ブログ情報の取得 SSLの検証付
require 'xmlrpc/client'
uri = "https://storage.msn.com/storageservice/MetaWeblog.rpc"
username = "kamiyn"
password = "********"
client = XMLRPC::Client.new2( uri )
client.http.ca_file = "/usr/local/share/curl/curl-ca-bundle.crt"
client.http.verify_mode = OpenSSL::SSL::VERIFY_PEER
client.http.verify_depth = 5
blogger = client.proxy("blogger")
begin
appkey = "ignored" # ignored
result = blogger.getUsersBlogs appkey, username, password
p result
rescue XMLRPC::FaultException => e
puts "fault #{e.faultCode}: #{e.faultString}"
end
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。 ブックマークレットにするためのものだな。
2008-02-27
λ DTC Administration Guide
MSDTC関係の設定が今まで攻め切れていなかったので何とかしないとなー、という思いがあったのだが、 それとは別にトラブル発生中。
SQL Server 2005 からロック状況を調べても、オブジェクトロックは無いとしか見えないのに、 特定のレコードを SELECT でもってこようとするとロックして取れない、with(nolock) にすれば取れるという状況発生。 MSDTC を再起動したらロックが解除されたようだった。
なんかイベントログには kernel32.dll でエラー発生した記録が残っていたりしてすごいイヤな感じ… kernel32.dll だとハードウェアトラブルの線も捨てられなくなるし、原因特定が難しい状況。
とりあえず DTC Administration Guide をきっちり読んでみよう。 いくつかのページについては翻訳作成しないと運用チームに引き継げないなあ。
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-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-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-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-22
λ KeyRemap4MacBook最強過ぎる
CPUがCore2世代になって以降魅力的なノート(Let'sNote以外)が増えてきたのではあるが、 昨年秋に X61Tablet 買ってしまった以上しばらくMacには戻れん。 (PowerBookG4にLeopardつっこんで復帰してもいいんだけど)
しかしキーボードリマッピングについてもっとOSの支援が欲しいなあ。 特にVistaになってWindowsでは使い物にならない状態になってるし…
2008-02-21
λ Bluetooth対応「ウォークマンA」
X02HT(Windows Mobile 6)のメディアプレイヤーだと動画に対する再生の操作がかなりいまいちで、 ウォークマンでの視聴にまったくかなわない。 TechEdのセッション動画を見るのに、ファイルを再エンコードする価値は十分にあると感じていたところ。
リモートスピーカーとしてのBluetoothを推進しているのは、十分に利点がわかるからかな。 それが踊らなくても。
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って何?
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.