『「高校無償化」措置を朝鮮学校に適用することを求める大学教員の要請書』をみて

いつもと毛色が違って申し訳ないですが。


出身大学の方が何人かいましたが、知り合いは一人もいませんでした。
どうあって欲しかったかはハイクあたりでコメントしてます。そちらを参照してください。

サブアカ間の画像のコピー

実際やってみて、出来てちょっと驚いたので。


はてなのサービスはサブとはいえ、アカウント別に管理されているので、
あっちのサブアカのフォトライフの画像をこっちのサブアカのフォトライフにコピーてのはあまり簡単には出来ない。


なので、半ば強引に実質的にコピーしてみる。


まずオリジナルの画像(サブアカA管理)のURLを何とかして入手する。
次にサブアカBでフォトライフには入り、画像のアップロードの画面までいく。
画像の選択ダイアログが出たら、先ほどコピーしたオリジナル画像のURLをぶっこむ(http://hoge~でよい)。
すると、サブアカB管理のフォトライフに画像がアップされる。


あとは画像のURLを何とかして入手する方法だが、
IEであれば、画像の情報編集状態にしたら、右クリックで「ショートカットのコピー」を選べばいい。
Firefoxは試してないが、その辺はIEより楽な気がする。

仮想XPから仮想Ubuntu9.10へ移行してみた

新しいPCを買って、古いXP環境を仮想化して、はや4ヶ月。
ちょっと新たなチャレンジ(と言う程のモノではないが)の布石として、仮想のUbuntu9.10を構築してみた。
# Unix/Linuxは超初心者なので、その辺を勘案してお読みください<(_ _)>


といっても、構築作業そのものは超簡単。
ここから仮想イメージをダウンロードしてくるだけ。


一応、パスワードは変えたが、Windowsっぽく「システム」→「ユーザとグループ」から変えようとして幾度となく失敗。
唐突に「passwd」コマンドを思い出し、ターミナルから実行。あら簡単♪


次。Firefoxの環境構築。
定番っぽいFireGesturesとGreasemonkeyを入れる。
ユーザスクリプトAutoPagerizeはてなハイク系の超便利スクリプトを導入。
さすがマルチプラットフォームを見据えたアプリケーション、Web環境の移行は無事終了。


次。メール環境の移行。
XPではBecky!を使っていたので、『Ubuntu版のBeckyなんてないべか』と淡い期待を抱きつつ「Becky Ubuntu」でググる
出てくる検索結果は、自分と同じくBecky使いがUbuntuへの移行を試みたページ。
が、大部分がThunderbirdへの移行の案内。

ちがう!おれがやりたいのはそれじゃない!Beckyを動かしたいんだ!

というか、メールボックスがいくつもある状態ので、移行手順が大変そうに見えた。


というわけで、win32プログラムをLinux上で動かせるという「wine」という未踏領域へ踏み込む。


とはいってもwineの導入も超簡単。ここに書いてあったコマンドをそのまま実行しただけ。
ちょっと時間はかかったけど、何も問題なく終了。所々文字化けしているが、それは後回し。


で、Becky!セットアップを実行。すんなり成功。


仮想XPからメールデータを根こそぎコピーして、その場所を指定し実行。無事起動。メール受信も開始。

何だ、ちょろいじゃーん。Ubuntu、wineマンセー

なんて思っていたら、受信エラー。よく見てみると、GmailのPOPSアクセスが根こそぎ(いくつか持っている)アウト。
SSL/TLSがつながらないよ、とか弱音を吐いている。


どうやらBeckyはSSPIなるwin32実装のSSLライブラリを使うらしい。こいつがwineでは使えない。
しかもGmailはPOPS/SMTPSでのアクセスが必須らしい(IMAPSSL)。
Gmailは結構メインアカウントとして使っているので、

ああ、お手上げ。。。メールはまだXPか。。。

などと思いつつ、懲りずに「Becky SSL」でググると、6年も前のこの記事に当たる。
# BeckyがSSLに対応してない頃の記事でしょうか
stunnelとか言うデーモンをローカルに立てれば、MUA側(Becky!)がPOPでもサーバに対しPOPSアクセスが出来るらしい。

やるべし!

次に「stunnel」でググって、このページを参考にして実行すると、何の苦労もなくstunnelが立ち上がった。ありがとう!
あとはBecky!Gmailアカウントのサーバをすべて「localhost」にして、再度受信実行。


大成功!


あとはwineの文字化けを直すのみ。
例によってGoogle先生に「wine 文字化け」とお伺いを立てて、このページに導かれる。
そのまんまやってみる。何の苦労もなく成功。


やりました!webとメールはUbuntuへの移行が完了しました。


で、実際Ubuntuを触ってみた感想ですが、VMware上とは思えないくらい軽量です。
仮想XPのモッサリ感がウソの様です。
実マシンだとどれだけ軽いんだ、と。
仮想XPは会社へのVPNアクセス専用端末となりそうです。


# 今更気づいたけど、前回のエントリー(1月末)が上がっていない・・・
# あとUbuntuの日本語入力、もうちょいマシになってほしいな

古いPCを仮想PCに

既にダイアリーというよりもマンスリー。


新しくやや大き目のノートPCを買いました!Windows7です!ヤッター!!
というわけで、古い轟音デスクトップ(以下旧PC、WindowsXP)から環境を移行したかったわけだが、
このソフトはOK、このドライバはNGとかチマチマやるのは無理!ということで、
旧PCの仮想化にチャレンジしたので、そのバトル具合を書き留めておく。


Windows7上で動かすVM環境なんで、まずマイクロソフト御謹製のVirtualPCにチャレンジ。
旧PCの物理ハードディスクをVirtualPCで読み込む仮想ハードディスクに変換(P2Vというらしい)するためには、
Disk2vhdという、これまたマイクロソフト御謹製(というか、Sysinternal)の変換ソフトを使ってみた。
これはインストールしないで、実行ファイル単体で動くのもウリの一つ。

・・・

動かん・・・
Disk2vhdはボリュームシャドーコピーサービスを使っているらしく、その実体プロセス(VSSVC.exe)が起動してから何も処理してくれない。


次!
VirtualPCがダメならVMwareだ!ということで、VMware vCenter ConverterというP2Vツールにチャレンジ(要インストール)。


動かん・・・
結局こっちもボリュームシャドーコピーサービスを使ってる。これが動かなければなんともならんわけだ。


VMware vCenter Converterをアンインストールして、インターネット接続を殺してセキュリティソフトも停めて、と無駄なプロセス停めまくってからDisk2vhdに何度かチャレンジしたら、まれに動くことがあった。


やりぃ!vhd変換、成功!と浮かれまくって、Windows7VirtualPCを入れて、新規VM作成してみたところ、ウンともスンとも言わん。黒い画面の左上にカーソルが点滅したまま・・・
1時間に渡るチャレンジと忍耐の後、「これは失敗だ、現実を見るんだ」と心の声が聞こえたので、VirtualPCはもう諦め、VMwareに絞ることに。

Disk2vhdが動いたんだから、VMware vCenter Converterだって動くだろ、と安直に考え、
何度かチャレンジしてると、ホントに動いた。何が引き金になって動いているかは、いまだにわからない。そういえば、MSDTCとかそういうのがエラー吐いてたなぁ。


VMware vCenter ConverterによるP2Vが無事成功し、
Windows7VMware Playerを入れて、新規仮想マシンを作ってみると、
動くじゃないですか!しかも旧物理PCよりもサクサクと!(どんだけボロいの使ってたんだか)


この後仮想マシン(ゲストOS)はインターネットに繋がるのに物理マシン(ホストOS)が繋がらないとか言う、意味不明なアクシデントに見舞われたが、これはVMwareとは全く関係のないトラブルだった。
※ネットワーク設定がおかしかっただけ。


かくして、今我が家のPCは、新鋭のノートPC(Windows7)にVMware Playerを入れて、仮想マシン(WindowsXP)を動かしている状態にある。


何か開発も仮想マシン上でやった方がいい気がするので(同居人と共用PCなので)、
開発用仮想マシンを別途入れようか考え中。

少し再開

何が?ウィジェットマネージャ開発が。

なぜ突然再開かというと、以前書いた

AIRからJavaプログラムを起動する方法が見当たらない

に目処が付き始めた。といってもまだ少し先の話でAIR2.0での話。
FileクラスにopenWithDefaultApplicationとかいうメソッドが実装されるらしい。

これでAIRからJarを起動できるというわずかな期待ができたので、全体の再設計をし始めた。

今はJettyとBlazeDSとの統合を過去のソースを参考に動作確認しているところ。

あと、少し心のリハビリを兼ねての開発行為(^-^;

名前空間で区別したノードを、XPath式一発で取得する

ちょっと前に仕事で考えることがあったので、
忘れないうちに書いておく

//*[local-name()='hoge' and namespace-uri()='fuga']

これで

<?xml version='1.0'?>
<root><ns:hoge xmlns:ns='fuga'></ns:hoge></root>

とかってXMLから真ん中のノードが取れる(ハズ)

詳細は、気が向いたら週末にでも追記する。

(追記)

何が問題だったか
たいていのXPathライブラリは、実際のXPath実行の前に、
“これから使うXPath式では、名前空間fugaを表すプレフィックスとして「fugapx」を使いますよ”みたいな準備をする。
で、そのあと

//fugapx:hoge

みたいな式を実行してノードを取得する。なのでプログラム的には1行でとりにくい。
しかもこの中の「fugapx」は単なる接頭辞でしかなく、
ほんとに重要なのは名前空間fugaなのに、XPath式にfugaが出てこないのだ。
これが遠回りしているように感じさせていた。
しかも対象のXML名前空間が変われば、
前述の名前空間プレフィックスの対応を定義する部分のコードも改めて書き直さねばならず、
修正範囲はXPath式にとどまらない。


つまり対象のXMLがどんなに変わろうとも、変えるのはXPath式だけにしたくて、
(遅くてもいいから)どんなノードも取れるXPath式を考えたかった。
で最初の式が出てきた次第でして。


アレなら、名前空間が変わったら、XPath式内の名前空間(namespace-uri()で比較している部分)を変えればいいし、
タグが変わったなら、XPathの名前比較(local-name)の部分を変えれば終了。
プレフィックスが変わったくらいなら、何も変える必要はない。
そして、名前空間プレフィックスの対応を定義する部分のコードも不要となる(はず)

以上。

任意のディレクトリをドライブ化する

はじめに
PC内のとあるディレクトリを、ドライブ化(E:とかF:とか)したい事ってありませんか?
自分はあります。ていうか、ありました。


以前書いたLinkShellExtensionで、C:のルートにエイリアス(ジャンクション?)をおく、
なんて事もしましたが、なんとなく気持ちが悪い。
で探したらあるもんです。しかもWindowsに標準で。


解決策
substというコマンドがそれで、
上で書いたような処理をやってくれます。
変に凝るよりこ標準のコマンドを使うに越したことはありません。


コマンド実行例
さっそく実行。

subst x: c:\hoge\fuga

これでC:\hoge\fugaフォルダがX:ドライブになります。


割り当てたドライブの解除は

subst X: /D

とやる。


現在substコマンドで割り当てられているドライブ一覧は、オプション無しで、

subst

とやれば確認できます。


さて、これだけではsubstのヘルプ

subst /?

を見れば出てくるので、もう一捻り。


ログオン時に自動で割り当てる
このsubstコマンド、ログオフすると全て解除されます。
なので、ログオン時に毎回コマンドを実行してあげないといけない。
毎回ログオン時にsubstを実行してくれるかゆいところに手が届くソフトはいくつかあります。


自分の前者のSubst Fron-endを使ってましたが、
何かこのコマンドのために新たにソフトを入れておくのが億劫になったり、
あと起動の瞬間ウィンドウが見たりするので、違う方法を探しました。


良くあるのが、コマンドの内容をバッチファイルとして作成して、スタートアップフォルダに入れておく方法。


う〜ん、芸が無い。
というわけで、別の方法を試してみました。


ログオンスクリプトを使ってみる
表題のとおり。『ログオンスクリプト』を使ってみます。
ログオンスクリプトの詳細は、各自調べてもらうとして(オイ!)、
やり方を書いてしまいます。


1.グループポリシーエディタを起動する
 コマンドプロンプト、又は『ファイル名を指定して実行』で「gpedit.msc
 
2.起動したら左ペインのツリーから
 『ユーザの構成』→『Windowsの設定』→『スクリプト(ログオン/ログオフ)』とたどる
 
 
3.右ペインにテキストファイルアイコンが2つ、『ログオン』『ログオフ』が出るはずなので、
 『ログオン』をダブルクリックして『ログオンのプロパティ』シートを開く
 
4.追加ボタンを押して『スクリプトの追加』ダイアログを開く
5.『スクリプト名(N)』に「subst」を、『スクリプトのパラメータ(P)』に「X: "C:\hoge\fuga"」の様に入力してOKを押す
 

以上の手順で、次回のログオン時には自動でsubstが実行されるようになるはずです。


使用例
で、どう使っているのか。

自分は業務で、LoutsNotes等グループウェアを使っていますが、これの添付ファイルが若干曲者で、
最初は表示されているファイル名どおりにローカルにキャッシュするのですが、
Notesを終了せずに同じファイルをダウンロードすると、ファイル名がランダムになります。
おまけのファイルのサイズに関わらず、何度でもローカルにキャッシュするので、
重いファイルに当たると、Notesがフリーズすることもしばしば。


そこで、Notesのキャッシュフォルダを上記の方法でドライブ化して、
すぐに添付ファイルにアクセスできるようにしているわけ。
具体的には、ログオンスクリプトのパラメータに
n: "C:\Documents and Settings\{USERNAME}\Local Settings\Temp\notesXXXXXX"と入れています。*1 *2 *3


お知らせ
半年ほど前に書いたウィジェットマネージャの概要

まぁ、自己満足で作って、さらしてみて、
他に興味がある人がいればラッキー、くらいなノリ。

なんて書いてましたが、

  • AIRからJavaプログラムを起動する方法が見当たらない
  • 仕事/生活が忙しい

という感じですっかり行き詰ってしまい、無期限停止状態です。

*1:『{USERNAME}』は適宜変更してください。

*2:"C:\Documents and Settings\%USERNAME%\Local Settings\Temp\notesXXXXXX" とやるとうまくユーザ名も展開してくれるかも(未検証)

*3:『XXXXXX』Notesのインストール時に決まるランダムな文字列