Livingdead (18685) の日記

Windows7サーバでICSを有効にすると、SharedAccess_NATが「DNSプロキシエージェントは、0バイトのメモリを割り当てることができませんでした」とイベントログに吐く。Windows7サーバをDNSサーバとして使おうとするクライアントPCからはDNSを解決できない。

クライアントPCにてパケットキャプチャを実行し何が起こっているのかを覗くと、クライアントPCからの一つのDNSクエリに対してWindows7サーバから二つのDNSアンサーが返ってきていて、一つ目のUDPパケットにはQuery Refused、二つ目のUDPパケットには正しく名前解決された答えが入っている。どうやら一つ目のQuery RefusedがあるからクライアントPCはDNSによる名前解決ができないと思っているようだ。まぁこれは正しい動作で、両方受け入れてしまうようではセキュリティ上の問題だ。

「DNSプロキシエージェントは、0バイトのメモリを割り当てることができませんでした」でググルとICSを切れという対処法が見つかったが、そもそもそのICSを使いたいのだ。結局、ICSを実行しているサーバからVMware Playerをアンインストールした結果、一つ目のQuery Refusedが返って来なくなった。VMwareではホストとゲストのを繋ぐために仮想NICが使われるが、そのせいだったのだろうか。

【追記】
まだ同じエラーが時々イベントログに記録される。しかしクライアントPCからは正常にWindows7サーバのICSを介してインターネットを利用できているのでよしとする。VMware Playerに濡れ衣を着せていたらごめん。でもアンインストールして初めて期待通りに動くようになったので。

フラッシュコンテンツがFirefoxとChromeでは閲覧できるのにInternet Explorer 8では閲覧できないという相談を受けた。LiveHTTPHeadersやMicrosoft Network Monitorなどで覗いてみると、どうやらフラッシュコンテンツの中からリクエストされるURLがShift-JISをそのままURLエンコーディングしたものになっているようだ。作成者にIRIという概念はないのか?はたまた設置先としてIISしか想定していなかったのか?

コンテンツの中身を触ることはできないので、サーバ側のPHPスクリプトを改変することで対応する方法があれば教えて欲しいとのこと。mb_check_encodingではうまく判定してくれなかったので、mb_convert_stringを使うことにした。Shift-JISと仮定してUTF-8に変換、再度Shift-JISにラウンドトリップして元に戻ればShift-JISだったんだろうというざっくりした判定。

#!/usr/bin/php
<?php
$utf8_string = urldecode("%E5%AE%89%E5%85%A8/%E5%8C%96%E5%AD%A6%E3%83%97%E3%83%AD%E3%82%BB%E3%82%B9%E3%81%AE%E5%AE%89%E5%85%A8");
$s = $utf8_string;
$su = mb_convert_encoding($s, "UTF-8", "Shift-JIS");
$sus = mb_convert_encoding($su, "Shift-JIS", "UTF-8");
if ($s == $sus) {
  echo "Shift-JIS\n";
} else {
  echo "UTF-8\n";
}
$sjis_string = urldecode("%88%C0%91%53/%89%BB%8A%77%83%76%83%8D%83%5A%83%58%82%CC%88%C0%91%53");
$s = $sjis_string;
$su = mb_convert_encoding($s, "UTF-8", "Shift-JIS");
$sus = mb_convert_encoding($su, "Shift-JIS", "UTF-8");
if ($s == $sus) {
  echo "Shift-JIS\n";
} else {
  echo "UTF-8\n";
}
?>

判定できているようだ。教育用に許諾を得て借りてきたeラーニングコンテンツを部局内のウェブアプリケーション内に組み込むテストというお仕事。

古いBuffalo製のAirStationがあるのだが、何故か11a使えないなぁ、まぁいいかと放っておいた。で、最近になってようやく世界標準11a対応のファームウェアにしていなかったことに思い当たった。何を今更だ。仕事が遅いんだよ、死ね俺、死んでるか。

WHR2-A54G54 世界標準11a(W52/5.2GHz)無償アップデート用  ファームウェア Ver.2.25(2005年11月8日掲載)

このソフトウェアは、WHR2-A54G54の世界標準11aバージョンアップツールです。従来5.2GHz(J52)→ 世界標準5.2GHz(W52)へ10MHzシフトが行えます。このバージョンアップによって802.11b/gの機能に変更はありません。
※本ツールは2011年6月1日までお使いいただけます。2011年6月1日以降に本ツールにてバージョンアップすることは認められておりません。

というわけでまだの人はそろそろやっておきましょう。

なぜ放置していたか思い出した。ファームウェアをアップデートするためのツールを実行するには古いWindowsが必要だったんだ。

○ ◎ ●

CyanogenMod-6.1.0-DSをGoogle Ionに入れる

Livingdead による 2011年03月14日 9時07分 の日記 (#526721)

今までAndroidといえばIS01にカスタムカーネルを入れたAndroid 1.6を使っていたのだが、
JITなどを試してみたくなったのでAndroid 2.2を使いたくなった。
そこで手元にあるGooge Ion (HTC Magic 32B)にCyanogenMod-6.1.0-DSを入れてみたら快適。
今忙しいので後で色々書く。

○ ◎ ●

Googleカレンダーを複数まとめて公開する

Livingdead による 2011年03月09日 20時35分 の日記 (#526200)

Googleカレンダーで「ここはあいてます」ってのを見せたくなったので
Googleカレンダーを複数まとめて公開する方法を探した。
Google Embeddable Calendar Helperが見つかったのだが、
なかなかここに辿りつけなかったのでメモを残しておく。
外部機関との会議の調整などでExcelシートを回覧するのは面倒。
カレンダーで空いているところを公開しておくから決まったら教えてくれ、という態度。
例のごとくhl=jaで日本語ページも有り。
Google カレンダー埋め込み支援ツール

なお、Googleカレンダーの公開にあたっては非公開URLの危険性について理解した上で使うこと。
Googleカレンダーでやってはいけないこと

Windows 7のサービスパックを適用して何度か再起動をした後、しばらくはなんとも無く動いていたのだが、さて帰ろうと思うとまだ再起動しろマークが出ていたので再起動した。すると・・・

User Profile Service サービスによるログオンの処理に失敗しました

だって・・・何度やっても管理者権限のあるユーザー(Livingdeadとする)ではログオンできない。標準権限のユーザーではログオンできる。runas /user:Livingdead /noprofile cmd.exe にも成功するし、セーフモードだとLivingdeadでログオンできるので、ユーザープロファイルが破損したのは間違いなさそうだ。

ファイルシステムは破損していないので、別のユーザーを作成して必要なファイルをコピーすれば修復できそうだが、EFSのための秘密鍵などは無事移行できるんだろうか。修復できないと最悪先週の金曜日深夜の時点のバックアップに戻すしかないのだが・・・ああ、こんな時に限って日時バックアップを取っていない。

もう疲れたよ・・帰る。

【追記】
実はまだ帰れてないのだ・・・
kawa-tさんの「ユーザープロファイルの破損」あたりを参考にするか。

【追記2】
試行錯誤の結果新しいユーザープロファイルを作ること無く修復できた。新しいユーザープロファイルを作ってしまうとNTUSER.DATの中身が引き継がれなくて色々と設定が面倒なのでラッキーだった。結局、HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList 以下の *.bak が付いたキーが問題だったようだ。念のためNTUSER.DATをバックアップしておいて、*.bak が付いたプロファイルのキーを消してログオン可能に。この時には一時プロファイルが使われているのかな?その後元のNTUSER.DATをインポート。昔のregedt.exeではレジストリハイブをまるごとインポートすることは出来なかった気がするけど、regedt32.exeはできるのか。

○ ◎ ●

ReadyNASでSamba経由の印刷をやめてIPP経由に

Livingdead による 2011年02月02日 14時16分 の日記 (#523990)
MacOSX

ReadyNAS NV+というNASを使っている。
最近EPSONのPM-D870をUSB接続してネットワーク経由で印刷してみたのだが、Samba経由だととにかく遅い。IPP経由での印刷はそこそこ速い。Windows XPだけじゃなくWindows 7からの印刷でも該当するようだ。

WindowsXP SP2以降では、いくつかのプリンタドライバが非常に遅く動作するようになりました。このような場合は、IPP (Internet Printing Protocol)を使用することで回避する事ができます。WindowsでIPPをセットアップする簡単な方法は、Apple社のサイトから、Bonjour for Windowsをダウンロードして、Wizard に従ってください。

IPPを使用するには、必ずしもBonjour は必要ありません。Bonjourをインストールしないで、IPPを設定するには、「コントロールパネル」→「プリンタ」→「プリンタの追加」→「ネットワークプリンタ」を選択します。そして、インターネット上のプリンタを使用するように設定し、URLに http://nas_ip:631/printers/printer_share_name を指定します。NETGEAR ReadyNAS Community Support Forum FAQ

○ ◎ ●

Eclipse Heliosインストール直後メモ

Livingdead による 2011年02月01日 14時36分 の日記 (#523937)

Eclipse Platformを入れた直後は色々と追加でインストールしたくなるのでURLをまとめてメモ。
EclipseはPleiadesからPlatform版をダウンロードしてeclipse.iniでjavaegentオプションをコメントアウト。
とにかくMylynとか邪魔だけどアンインストールできないのでPlatform版からコツコツと。
Python使いなのでPyDev http://pydev.org/updates
Bazaarを使うのでBzrEclipse http://verterok.com.ar/bzr-eclipse/update-site/
Swingを使ったプログラムも書くので Java Development Tools http://download.eclipse.org/releases/helios
Androidアプリも作るので Android Development Tool https://dl-ssl.google.com/android/eclipse/
Google App Engine for Javaを使うのでGoogle Plugin for Eclipse http://dl.google.com/eclipse/plugin/3.6
LaTeXを使うのでTexlipse http://texlipse.sourceforge.net/
Aptana Studio http://download.aptana.com/tools/studio/plugin/install/studio

#誤字修正しました

○ ◎ ●

OAuthでtoken secretを貰う時はHTTPSで

Livingdead による 2011年01月26日 16時56分 の日記 (#523591)

OAuthでtoken secretを貰う時はHTTPSで通信しないと危険。

Appendix B.1. Credentials and Token Exchange
The OAuth specification does not describe any mechanism for protecting Tokens and secrets from eavesdroppers when they are transmitted from the Service Provider to the Consumer in Section 6.1.2 and Section 6.3.2. Service Providers should ensure that these transmissions are protected using transport-layer mechanisms such as TLS or SSL. OAuth Core 1.0

今さらだけど。

○ ◎ ●

ApacheでURLのクエリ文字列によりアクセス制限

Livingdead による 2011年01月26日 15時39分 の日記 (#523588)

あるPHPスクリプトがあるURLで呼び出されたとき、パラメータ部分というかクエリ文字列によってアクセス制限をしたくなった。具体的にはindex.phpがaction=editで呼び出されたときには特定のIPアドレス以外からのアクセスを弾きたい。

        RewriteEngine On
        RewriteCond %{QUERY_STRING} action=edit
        RewriteRule /index.php /index.php [E=EDIT:TRUE]
        <LocationMatch "/index.php">
                Allow from 192.168.0.1
                Deny from env=EDIT
        </LocationMatch>

久しぶりにmod_rewriteを使ってみたのだが、これでいいのだろうか。
まぁとなりのPCから編集されてもさほど困るわけではないのだが…

犯人はmoriwaka -- Anonymous Coward

処理中...