bar_1

contents_map

2013年8月12日月曜日

Web サービスのテスティング技法

Running Lean ―実践リーンスタートアップ (THE LEAN SERIES)』を読んでて知ったのですが、 Sauce Labs って、テスティングのためのクラウド・サービスが、あるんですね。


いろんなブラウザのテストができるらしい。こいつはすごい。システム・レベルのテストと言えば、 Selenium くらいしか、しらなんだ。

2013年8月4日日曜日

ZenBack を一時取り外し

トップページにアクセスした際、 ZenBack がブラクラ並の動作を指定たので、一時外してます。
関連リンクを延々と表示し続け、くっそ重くなってしまうというもの。

【追記】どうやら、ZenBack の埋め込み位置が悪さをしていたらしい。デザイン中の「フッタ」に埋め込むようにしたら、改善された。

[Memo]private メソッドへのアクセス

Ruby は、クラスのメソッドのデフォルトのアクセス制限が、 public なんだけど、ほっとくと public ばかりになってしまう。そこで整理のためにアクセス制限をしたいとなると、テスト容易性 (testability) に差し障る。

まぁ、そういった場合は send を使えばいいのだけど。

>> class Foo
>> private
>> def foo; p "foo"; end
>> end
=> nil
>> n=Foo.new
=> #
>> n.foo
NoMethodError: private method `foo' called for #
from (irb):6
from /Users/honyarara/.rbenv/versions/2.0.0-p247/bin/irb:12:in `'
>> n.send(:foo)
"foo"
=> "foo"


C++だったら、ここらへんどうあつかったらいいのかな。。。『メタプログラミングRuby』は、オブジェクトモデルを骨子に据えて、 Ruby におけるメタプログラミングのデザインパターンを、シナリオ風に提起したもので、とてもよかったです。




2013年4月13日土曜日

あーあー

しばらく何も書いてなかったけども、いきてます。

こう、いろいろ書いていたのですが、タグ打ちに非常にめんどくささを感じるようになってしまいまして。ローカルで Wiki なんかを、試してみたりしていました。やっぱり、Markdown とかを使いたいですね。。。

あ、あと、2008年に書いた『Ruby: 数字に桁区切りを入れたい (その1)』 を、微修正しました。

2011年8月8日月曜日

起動時に文字コードの指定して xyzzy をコマンドラインから起動

概要





前回のエントリ

で、 Vimperator を使用して、Webページの入力欄のテキストを好みのエディタ (xyzzy) で、編集する方法を示した。



しかしながら、この方法だと、 xyzzy の自動判定により、ときどき意図しないエンコード(*encoding-sjis*) で、一時tmpファイルを開いてしまう現象が起きる。



そこで本エントリでは、 Vimperator の editor で xyzzy を利用する場合、強制的に文字コードを指定して一時ファイルを開くためのワークアラウンド(ラッパBATファイルの作成)を、紹介する。


調査



コマンドラインや初期設定ファイル (.xyzzy) で、 change-fileio-encoding などで指定した結果がなぜ反映されないのか、以下の3つの観点から、調査した。

(1) Vimperator の editor コマンド文字列



Vimperator の set editor で与えたコマンド文字列は:
コマンド文字列 一時ファイル名

という形式で、実行される。


つまり、何も対策しないままだと、一時ファイル名は、コマンドに対する最後のオプションとして指定されることになる。

(2) xyzzy コマンドライン・オプションの順序性



xyzzy のコマンドライン・オプションの形式は:
起動時の引数は以下の形式を受け付けます。
xyzzy [-image dump-file] [-config config-directory] [-ini ini-file] [-q|-no-init-file] (other-option|file)*
-image、-configまたは-iniを指定する場合は、それ以外のオプションより前になければなりません。
また、-qまたは-no-init-fileを指定する場合は-image、-configおよび-ini以外のオプションの先頭に
なければなりません。

されている


ここで、このコマンドライン・オプションを含む諸設定は:
初期設定ファイル→コマンドライン・オプション

の順に、実行される。また上記引用のように、コマンドライン・オプションが複数指定されている場合、左から順に、解釈される。

(3) xyzzy ファイル読み込み時の文字エンコーディングの判定



与えられたコマンドライン・オプション中、指定されたファイル名を読み込む際、 xyzzy の
ツール>共通設定>読み込みタブ

が、「自動判定」になっていたならば、自動判定が実行される。これは、ファイル名指定の前に文字コードの指定 (*default-fileio-encoding*) があろうと・なかろうと、実行される。

分析



調査の結果から:

  • vimperator は、ファイル名を、editor に設定されたコマンドの最後につけて呼び出す

  • xyzzy は、ファイルを開く時に、指定のあり・なしに関わらず再度、文字エンコーディングを自動判定している

  • よって、自動判定が正しくない場合に、文字コードの指定を期待通りに行うには、ファイル名指定よりも後で、行う必要がある

ことが判明した。




以下のようなBATファイルにより、xyzzy のファイル名の後ろに文字エンコーディングの設定 (revert-buffer *encoding-utf8n*) をするラッパを作成し、 vimperatorrc の set editor には、このラッパを指定する:


BATファイル: vimpexyzzy.bat
@echo off
rem ///////////////////////////////////////////////////////////////////
rem // vimpexyzzy.bat  - wrapper bat for 'set editor' of vimperator.
rem //   enables xyzzy to specify encoding on reading a file with revert-buffer.
rem //
rem // Aug. 2011 http://voidptr.seesaa.net
rem ///////////////////////////////////////////////////////////////////
"c:\Program Files\xyzzy\xyzzy.exe" -m html-mode ^
-e "(setq *default-fileio-encoding* *encoding-utf8n*)" ^
-e "(set-buffer-fileio-encoding *encoding-utf8n*)" ^
-e "(change-fileio-encoding *encoding-utf8n*)" ^
"%1" ^
-e "(revert-buffer *encoding-utf8n*)"
@echo on



Vimperator の初期設定ファイル: _vimperatorrc の editor の設定
set editor='C:/Program\ Files/xyzzy/vimpexyzzy.bat'




これにより、指定の文字エンコーディングでファイルが読み直されるため、所望の結果を得ることができる。

Conclusion




  • Vimperator で外部エディタを起動するとき、文字エンコーディングが意図していない SJIS (*encoding-sjis*) となってしまうことが、あった

  • xyzzy 起動時のオプションでは、ファイル名の後ろで、文字エンコーディングの設定を行う必要があることが、分かった

  • BATファイルによるコマンドのラッパを作成し、ファイル名の後ろで文字エンコーディングを指定することにより、Vimperator で、所望の文字エンコーディングで一時ファイルを編集することが可能になる


Future Works



もっとスマートなやり方はないものか……

2011年6月27日月曜日

Windows + Firefox 環境で “It's All Text!” の代わりに Vimperator を使うには?

背景

ブラウザ上のテキストエリアなどで、入力する文をエディタを使って編集を行いたい場合、Firefox では、アドオン:“It's All Text!” を利用するのが便利らしい[佐々木2009]。

しかし、自分の環境では、このアドオンを利用することが出来ずにいた。というのも、自分の Windows の ログオン(アカウント)名は、日本語を含むものだからだ; このアドオンでは、一時ファイルをアカウント名を含むフォルダに作ろうとする。しかし、海外製のアドオンということもあり、日本語を含むフォルダについては考慮されておらず、エディタ起動時にエラーとなってしまう。

しかしこの度、別のアドオン:Vimperator [MAX2011]を使用して、まさに望んでいたことができたので、ここに報告したい。

いやー、すばらしい!!

2011年5月14日土曜日

[TIPS]IME の表示が消えてしまったとき


MS-IME, Google IME に限らず、XP を使用していると:

  • 言語バーの表示が消える

  • 一部アプリケーションのみ、言語バーが消えてしまう

  • または、入力モード(IME が ON なのか OFF なのか・ON の場合、英数モードなのか・そうでないのか)の表示が更新されない

などといった現象を経験されている方は、多いと思う。



この場合、再度・言語バーを表示させるには、どうしたらいいか?


手順


1. コントロール パネル>地域と言語のオプション>
  言語タブ>詳細...ボタン
 を、押下する
 →テキスト サービスと入力言語 ウィンドウが出てくる
2.出てきたウィンドウの設定タブ>最下段ペイン(基本設定)の言語バー...ボタン
 >OKボタン
 を、押下する。
3.あとは、残ったウィンドウを、OK ボタンで閉じていく。

これで、元通りに表示されるかと思う。

2011年5月12日木曜日

XPの仮想デスクトップ・ソフト



長年、Windows XP 上の仮想デスクトップとして、Virtual Desktop for Win32 を利用させていただいていた。しかし、最近、そのバージョンを 0.941 へと上げてみたところ、いろんなウィンドウにおいて、表示がおかしくなる現象(たとえば、最小化、最大化のボタンが消えてしまう)が、発生するようになってしまった。


原因は、よくわからない。また、以前使用していたバージョン(0.912)と比較して、動作も重くなっていた(新しいバージョンでは、.NETを使用するようになったせいかもしれない)。一緒に使用しているDvorakJ のせいかな、などとも思ったけど、切り分けの解析は、時間の関係上やめた。この際、気分転換にもなるし、同じような機能を有する新しいソフトを探してみよう、と思ったのだ。


結局、SourceForge にあった VirtuaWin (4.3 unicode support)という仮想デスクトップ・ソフトをみつけて、現在運用している。すごくシンプルな仕様で、速度も申し分ない。3×2の仮想画面で使っている。


References:




2011年4月27日水曜日

Cドライブ空き容量枯渇にともなう既存 XP システムの移行の方法

■Abstract



XPで構築したシステムの移行を行った。移行の目的は、空き領域がほとんど無くなってしまったCドライブを救済することであった。また作業コストの観点から、OSの再インストール等なしに、すなわち構築してある既存のシステムを再構築することなしにそのまま移行をさせる方法を採った。


移行の実作業は、システムのベース(Cドライブ)を、旧式(Primary IDE Slave, 120 GB)から、新式(Serial ATA, 500 GB)のハードディスクへと、移し替えることであった。この手法として、KNOPPIX 6.4.4 CD日本語版の環境で dd コマンドと GParted を利用した方法を用いた。


現在はシステム移行は完了し、問題なく快適に使用できている。


■重要な注意




  • このエントリで述べられていることを実施するには、 OS やディスクに関する基本的な知識、また Linux の基本的な理解を必要とします

  • ここに述べられていることを利用してあなたが損害を被ったとしても、当方は、いかなる責任も取ることはできません。





■Background



Windows XPによるシステムで、数年、自宅PCを利用している。このところ、Cドライブ(IDE 120 GB のハードディスク(HDD))が手狭になってきていた。そこで、以前買ってあった 500 GB の Serial ATA (SATA) HDD へと、システムのマイグレーションが必要とされた(いわゆる「ハードディスクの引越し」)。


この際、せっかく
長年にわたり構築してきた環境を構築しなおすのは、馬鹿げた手間であると考えた。このため、OSの再インストールを要しない方法を模索した。すると、Linux系の特徴的(CDやDVD1枚でLinux環境を利用する)なディストリビューションである KNOPPIX を利用する方法が、いくつかあることが、分かった。
これらの KNOPPIX を利用した方法について調査したところ、partimage と
QTParted のコマンドを使用する方法が、多いように見受けられた。


しかしながら、当方が試した限りにおいて、この方法ではうまくシステム移行を行うことが出来なかった;具体的には、以下のようなメッセージが起動時に表示され、新しい HDD から起動ができなかった:
A disk read error occurred
Press Ctrl+Alt+Del to restart

Reboot and Select proper Boot device
or Insert Boot Media in selected Boot device and press a key



この現象について調査すると、当方の partimage コマンドの使い方が、まずいように見えた。さらに調査を続けたが、解決する方法は見つけることが出来なかった。


そこで、KNOPPIX 環境を利用するものの partimage を使用せずに、dd コマンドで、旧HDDのデッドコピーを新HDDに作成し、そのあとに GParted にて、パーティション・サイズ等を修正する、という手法を取った。


以下に、この手法で用いるツールと移行手順について、説明する。

■使用するツール等



特別なツールはとくに必要としない。KNOPPIXについては、本稿では、
KNOPPIX 6.4.4 CD版(日本語)を使用した。これは作業前に、作成しておくこと。

●使用するツール


◆マザー・ボードの BIOS 関連





  • - American MegaTrends, Inc. BIOSセットアップ・ユーティリティ


    • -- 用途
      新HDD(SATA)の認識、HDDの優先順位の決定、ブート・デバイスの優先順位の選択


    • 始め方
      電源投入後のPower-On Self-Test (POST) 中に、Delキーを押す。
      マザー・ボード(以下、M/B)やPCによって異なるので、説明書で確認する
      こと。


    • 使い方


      • SATA HDD の認識
        Main>Strage Configuration>ATA/IDE Configuration
        →[Enhanced]

      • HDD の優先順位
        Boot>Hard Disk Drives
        →1st ~ nth Drive で、指定する

      • ブート・デバイスの優先順位
        Boot>Boot Device Priority
        →1st ~ nth Boot Device で、指定する


◆Windows XP 関連



  • 「ディスクの管理」ユーティリティ

    • 用途
      XP が認識しているHDDの確認、パーティションに付されたドライブ文字の変更に用いる。

    • 始め方
      スタート>管理ツール>コンピュータの管理 を起動し、左端ペインのツリーから、「ディスクの管理」を選択する。

    • 使い方

  • レジストリ・エディタ regedit

    • 用途
      ドライブ文字の変更(システム、ページファイル属性を持つパーティショ
      ンの為にレジストリを修正する)

    • 始め方
      スタート>ファイル名を指定して実行...>regedit
      ※XPの場合、regedit32というのは、なさそうだ。

    • 使い方
      Ref[3]を参照のこと。

◆KNOPPIX 関連



KNOPPIX 6.4は、mountされるデバイス名の確認、旧HDDの新HDDへのコピー、ボリューム・ラベルとパーティション・サイズの修正に使う。KNOPPIX は、産業総合研究所(産総研)のサーバで配布されている「 KNOPPIX 6.4.4 CD日本語版(LCAT対応)」のバイナリを使用した。


ただ、産総研のサーバ(www.rcis.aist.go.jp/project/knoppix/)は、非常に繋がりにくい―というか、ぶっちゃけ重過ぎる。そこで、ミラーしているサイト(情報通信研究機構)や理化学研究所(理研)の別バイナリのあるFTPサーバを利用するのもひとつの手だろう。以下に、ミラーサイトとバイナリを挙げておく:

  • KNOPPIX 6.4.4 CD日本語版(LCAT対応)

    • サイト(Ref. [2]より)
      --- http://ring.nict.go.jp/archives/linux/knoppix/iso/

    • バイナリ(6.4.4 CD日本語版(LCAT対応))
      --- knoppix_v6.4.4CD_20110130-20110301.iso (699 MB ある)
      --- knoppix_v6.4.4CD_20110130-20110301.sha1


  • 理研(LCAT非対応オリジナル?)

    • サイト
      http://ftp.riken.go.jp/Linux/simosnet-livecd/knoppix/

    • バイナリ
      KNOPPIX_V6.4.4CD-2011-01-30-small-JP.iso (668 MB ある)
      KNOPPIX_V6.4.4CD-2011-01-30-small-JP.iso.md5

md5, sha1 の値は、Cygwin に入っているコマンド:md5sum, sha1sum で、チェックできる。
ああちなみに、このISOイメージを焼くのには、メディアは700 MBのブランクCD-R (maxell) 使いました。


  • ファイル・マネージャ

    • 用途
      新旧の各HDDが、どのデバイス名/dev/sd? として認識されているか、調べる。

    • 始め方
      KNOPPIX起動後、デスクトップの knoppix アイコンを、ダブルクリックする。

    • 使い方
      左端ペインの一覧のHDDアイコンをクリックすると、タブ名またはウィンドウ名に、デバイス名が表示される。

  • ターミナル・エミュレータ(Terminal emulator (LXTerminal))

    • 用途
      dd コマンドの実行をおこなうための端末。

    • 始め方
      KNOPPIX起動後の左下の Terminal emulator のアイコン(設定から、Root Shellを使ってもよい)。

    • 使い方

  • dd コマンド

    • 用途
      旧HDD のデッドコピー作成 (セクタ単位で、旧HDDからデータを読み込み、
      新HDD へと書き込みをおこなう) ため。

    • 始め方
      端末からコマンド入力し、実行する。

    • 使い方(Ref.[1])
      ターミナル・エミュレータで:
      dd -if=/dev/旧HDD -of=/dev/新HDD bs=512

      を実行
      ここで:
      -if=/dev/旧HDD は、読込み用のデバイス名。すなわち、旧HDDのこと。
      -of=/dev/新HDD は、書出し用のデバイス名。すなわち、新HDDのこと。
      bs=512 は、読み書きを 512 Bytes 単位でおこなう指定
      である。
      デバイス名は、sd~という名前になっていると思う。
      繰り返しになるが、ifとofの指定は、絶対に間違えないこと!




  • GParted (0.7.0)

    • 用途
      ストレージ・デバイスのパーティションの移動・サイズの変更、ボリューム・ラベルの修正、フォーマットなどを行うことができるアプリである。

    • 始め方
      KNOPPIXのメニュー>設定>GPartedを選択する。

    • 使い方
      始めに、表示>デバイスの情報、保留中の操作のチェックをしておくとよい。
      数値入力以外に、ドラッグ&ドロップでも、パーティションの移動・サイズ変更が可能である。また、テンキーでの数値の入力は、できないようだ。
      拡張パーティションの場合、はじめに拡張パーティション(LBAフラグのあるパーティション)を選択して、サイズを大きくしてから、その中の論理ドライブを移動するようにする。
      HDDの選択:右上のHDDアイコンをクリックすると、HDD一覧が表示されるので、選択する。
      ラベルの変更:パーティションを左クリックして選択>右クリック>ラベル
      フラグの変更:パーティションを左クリックして選択>右クリック>フラグの編集
      サイズや移動:パーティションを左クリックして選択>右クリック>リサイズ/移動


■KNOPPIX の dd と GParted を使用した移行手順



実際行った手順は、下記に述べるものより、もっと大幅に、細かな確認手順を実施している。ここには、基本的なことをまとめる。


以下の詳細の手順に述べるように、実質的な手順は、大きく分けて1~6ののステップである。

  • 手順1は、新HDDをBIOSレベルで認識させること

  • 手順2は、旧HDDでの起動確認

  • 手順3は、旧HDDから新HDDへのデッドコピー作成

  • 手順4は、ボリュームのラベルとパーティションのフラグの修正

  • 手順5は、新HDDからのXPの起動

  • 手順6は、ドライブ文字の入れ替え


●移行手順の詳細


0. 新HDDのPCへの接続
電源を落とした状態のPCに、新HDDを接続する。
1. 新HDDの認識のためのBIOS設定
1-1. 手順(0)で接続が終わったら、PCの電源をONする。
1-2. BIOSセットアップ・ユーティリティを開く。
1-3. BIOS の HDD関係の設定で、SATA HDD を認識するよう設定する。
1-4. BIOS のブート・デバイスとブート優先順位の設定で、CD/DVD Drive から
の起動を可能に設定する。
※手順2.があるため、ブートのHDD は、この時まだ変えない(旧HDD から起
動のママ)。
1-5. 設定をセーブして、 BIOS セットアップ・ユーティリティを終了する。
2. 旧HDD で旧システムの起動確認
2-1. 手順1-5からひきつづき、旧HDDで今まで使用していた旧システム(XP)の起
動が、できることを確認する。
2-2. ログオンする。
2-3. ディスクの管理で、新HDDがディスクのリストに表示されることを、確認
する。
※ウィンドウを延ばさないと見えないかも
2-4. CD/DVD Drive に、KNOPPIX のCDを挿入して、電源OFFする
3. 旧HDDのデッドコピー作成
3-1. 電源ONし、USB DVD Multi Drive から、KNOPPIX を起動する。
3-2. ファイル・マネージャで、旧HDD、新HDDのデバイス名を確認する。
3-3. 左下のメニューからコンソールを立ち上げて、ddコマンド
で、旧HDDのデッドコピーを作成する
※デバイス名は、**絶対に**間違えないこと!!くれぐれも、逆にして旧
HDDを消してしまうことなど無いようにしてください。
※この処理は、結構時間(数時間)かかります。
4. GPartedでパーティションのフラグとラベルの設定
4-1. 旧HDD で、パーティション・フラグが、 boot となっているパーティショ
ンの bootチェックをはずす。
4-2. 新HDDで、旧HDDでのパーティション・フラグがbootとなっているパーテ
ィションに相当するパーティションのbootチェックを、チェックする。
4-3. 新HDD の各パーティションのラベルを、変更する(デッドコピーしたまま
だと、旧HDD と同じでまぎらわしいため)。
4-5. KNOPPIX をシャットダウンし、PCの電源をOFF。
5. 新HDDからのXPの起動
5-1. PCの電源ONし、BIOSセットアップ・ユーティリティで、新HDDからブート
するように設定する。
5-2. 設定をセーブして、BIOSセットアップ・ユーティリティを終了する。
→XPが起動する
6.  ドライブ文字の旧HDD・新HDDでの入れ替え
6-1. XP起動後ログオンし、ディスクの管理を開く
6-2. 新HDD の非システム・パーティションを使われていないドライブ文字に変
える(但し、変更前のドライブ文字を控えておく)
6-3. XP を再起動
6-3. 旧HDD の非システム・パーティションのドライブ文字を、手順6-2のドラ
イブ文字に変える(但し、変更前のドライブ文字を控えておく)
6-4. 新HDD の非システム・パーティションのドライブ文字を、手順6-3の変更
前のドライブ文字に変える
6-5. XP を再起動
6-6. 同じようにして、システム・パーティションのドライブ文字も入れ替える


KNOPPIX 上の作業が、移行作業の主な部分を占める。XPでおこなう移行作業は、ドライブ文字の変更である。

■Conclusion




  • 産総研の配布するKNOPPIX 6.4.4 CD日本語版(LCAT対応)のISOイメージを利用して、IDE HDD から SATA HDDへと、XP システムの移行を行った

  • partimage を利用した移行は、OS のブートに至らなかったため、dd, GParted を利用した方法とし、その手順を示した


■Future Works



本当はスクリーンショットなどを豊富に使いたかったのだけど、KNOPPIXでの取り方がわからなかった。gnome-screenshot なるアプリが、焼いたCDには、見当たらなかった。

新しいKNOPPIXの版が出るたびに、システムをCD/DVDに焼くのは、CD/DVDのメディアが無駄である。現在、大容量(GBオーバ)のUSBフラッシュ・メモリが安価に出回っているので、これを利用しない手はないだろう。

この場合、以下が参考になるかも知れない:
mk-mode BLOG, “KnoppixをUSBブート!”, 2010/1/6, http://www.mk-mode.com/wordpress/?p=2644
(ただし、メディアがUSBのストレージなので、CD/DVDのようにISOイメージを焼くだけ、ではない。)

■References




  • [1] dd(1), man page

  • [2] susaki, “[debian-users:55003] 【リリース】KNOPPIX 6.4.4 DVD&CD 日
    本語版 (LCAT対応)”,
    http://permalink.gmane.org/gmane.linux.debian.jp.user/20206

  • [3] WINFAQ, “w2k/XP:ディスク管理 - ブートドライブのドライブレターを変
    更できないのですが”, http://homepage2.nifty.com/winfaq/c/ntdisk.html#912

  • [4] KNOPPIX-JP FAQ, http://www.geocities.co.jp/SiliconValley-Sunnyvale/9821/