bar_1

contents_map

2014年3月7日金曜日

VBAUnit の OOo Basic への移植

LBAUnit::Helper


VBAUnit (.NET版) を、OOo Basic に移植しようとしてみた。正確には、OpenOffice ではなく LibreOffice にだけども。

LBAUnit-Helper

ところが、OOo Basic には、Eval がそもそもないらしい
おぉ、なんてこった! なので断念した。

ユニットテスト (一般に xUnit) のフレームワークを作るには、その言語にはメタプログラミングの機能が必要とされる。

メタプログラミングには:


  • eval

  • self

  • lambda

といった機能を言語レベルでサポートしていることが望ましい。とくに、ひとつめの Eval は必須。

ところが、OOo Basic (OpenOffice.org Basic) は、これらのどれもサポートしてないんだな。まぁ、Python や Java, JavaScript でやってくれという話なんだろう……。

いちおう、OOo Basic にも TypeName() といった関数や MRI などリフレクション/イントロスペクションの拡張機能はあるにはあるのだけど、Eval がないとどうにもならない; 例えば、テストケースやメソッドを集めて実行する、という部分には、「コードを書くコード」「コードを実行するコード」を Basic がサポートしている必要がある。

クラスやインタフェースの定義、インスタンス変数、プロパティ、オブジェクトの生成をBasicのみでできることは、確認できたのだけどね……。

なので、あきらめた _(」 L、ソ、)_。

assert関数 と結果表示をするヘルパー関数は作ったので、まぁ、なんかに使えると思ったら使ってください (xba 形式でエクスポートしてあります):




2014年1月9日木曜日

Seesaa ブログを Markdown 記法で書くには: Markdown Here を利用する方法

必要とされる準備は以下のとおり:必要とされる準備は以下のとおり:


  1. Seesaa ブログの設定で、リッチテキストエディタの有効化

  2. Firefox のアドオン: Markdown Here のインストール

試した環境は、Mac OS X Mavericks + Firefox 26.0 です。

ちなみにここで紹介する方法は、Seesaa 以外でも適用することができ、かつまたもっともカンタンな方法だと思います。また、Markdown Here アドオンはトグルする機能を提供する拡張機能であるため、Markdown ⇔ HTML 双方向の変換はいつでもできます。

1. リッチテキストエディタを有効にする



  • Seesa BLOG 管理画面で、設定>詳細設定から、ブログ設定 を選択する

  • 設定項目の リッチテキストエディタ (上から14項目目くらいにあるラジオボタン) を 利用する の方をチェックする

  • 一番下の保存ボタンをクリックする

くわしくは、こちらから。

2. Markdown Here をインストールする


Markdown Here のHP から、インストールできます。なお、Markdown Here は、Firefox 以外にも、主要なブラウザには対応している模様です。

使い方


準備1., 2. をした上での書き方は、以下のとおりです:


  • 新規投稿などで、textarea にてきとうに Markdown で書く

  • 変換したいドキュメントの部分 テキストエリアを、選択する (テキスト全体が一括で変換されます)

  • 右クリックではなく、Firefox の URI バーの右端のところに表示されている Markdown Here のアイコン (☆の右にある、紫色のばってんっぽいもの) Markdown Here のアイコンをクリックする

    • →選択部分が、変換される

  • めでたしめでたし

まとめ



  • Markdown Here アドオンを利用した、カンタンで応用性の高い、Markdown 記法の利用方法を示した。

  • この手法により、Seesaa ブログを Markdown 記法でカンタンに書くことが可能となる。

  • この記事自体も、この記事で紹介した手法で書かれている。

References





2014年1月8日水曜日

test


test.


  • MacVim 7.4, バージョンアップしてから調子が悪かったが、:NeoBundleCheck したら、neocomplcache を再インストールしてくれた。



[Ruby] case 文は、一番最初にぶち当たった条件だけが発火する


ついつい忘れがちなんでメモ。


>> def foo( x )
>>   case
?>     when x > 2
>>       puts "cond 1."
>>     when x > 4
>>       puts "cond 2."
>>   end
>> end
=> nil


>> foo( 1 )
=> nil
>> foo( 3 )
cond 1.
=> nil
>> foo( 4 )
cond 1.
=> nil
>> foo( 5 )
cond 1.
=> nil



cond 1. しか呼ばれない、ということで。


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)』 を、微修正しました。