bar_1

contents_map

2013年9月3日火曜日

Ruby: Hash と values_atメソッド

Ruby 小ネタ。
こ〜んな Hash があるとするじゃろ:

>> h = { a: 1, b: 2 } => {:a=>1, :b=>2}
2014-06-02追記: MDH 2.11.0 で修正
これをこうして……

>> h[:a] => 1
となる。

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: