Hatena::ブログ(Diary)

Fly me to the Juno! このページをアンテナに追加 RSSフィード

2010-09-19

Launch 実行時のデフォルト値設定拡張の設計メモ

求める機能

Launch時にデフォルト値を設定したい。

目的

JUnit実行時に、時々デフォルト値を設定したい事がある。

例えば
  • PDE実行時に合わせて起動するBundleの設定
  • テスト実行に必要な引数
  • GWTの実行に必要な引数

やってみるときどうしていたか?

  • VMのデフォルト引数に追加していた

調べてみた

  • 実行ランチャが実装されているプラグインは、org.eclipse.debug.ui
  • ILaunchConfigurationType : ランチャの種別(Java Applicationとか、Java Appletとか、JUnitとか。実行設定画面の左枠の親要素)
    • ランチャの設定タブは、ILaunchConfigurationType毎に作る。
    • ランチャの設定タブに関する拡張ポイントはいくつか
      • org.eclipse.debug.ui.launchConfigurationTabs : ランチャの種別毎の設定タブに一つ以上のタブを追加
      • org.eclipse.debug.ui.launchConfigurationTabGroups : ランチャの種別毎の設定タブそのもの。一つだけしか作れない?
  • ILaunchConfiguration : 各ランチャ要素。それぞれ独立して設定されている。

方針

  • とりあえずランチャグループからタブをコピーしてプロジェクトのプロパティにはめたが微妙
  • ランチャ種別毎に小さなプラグインを用意して、デフォルトの引数を追加するような方が良さげ。
  • Quick JUnitは起動するランチャ種別を指定できるようにすると良さげ。
    • これできたらJUnit以外のテストも簡単に実行できる。

2010-08-15

JDTのPreferenceStoreをPlug-inを使ってデフォルト値のカスタマイズをするには

Quick JUnitとmockitoをより連携させるために考えていることに、static importをコンテントアシストしてくれるFavoriteへの登録がある。こんな感じ。

f:id:kompiro:20100814235736p:image

既に似たような事をしているプラグインがある。SWTBotだ。なので、

http://github.com/ketan/swtbot/raw/master/org.eclipse.swtbot.eclipse.ui/src/org/eclipse/swtbot/eclipse/ui/preferences/PreferenceInitializer.javaを参考にしよう。

このPreferenceInitializerはAbstractPreferenceInitializerを継承しているので、設定の初期値を設置するためのクラスだ。その他にもIStartupやIPropertyChangeListenerを実装しているけど、IStartupは、Workbenchの起動後に実行するためのインタフェース、IPropertyChangeListenerは、設定画面から値が変更になったときに何かをするためのインタフェース。どちらもそんなに気にする必要はない。ということで、実際にどうやって値を設定しているか、見ていく。

org.eclipse.jdt.ui.PreferenceConstants を取得する

JDTにおける設定値はorg.eclipse.jdt.ui.PreferenceConstants#getPreferenceStore()で取得できる。PreferenceInitializer#initializeFavorites()で、Favoritesの値を変更しているけど、もし、SWTBotの設定画面でFavoritesに追加するようチェックが入っていれば、JDTのFavoritesに追加する、そうじゃなかったらSWTBotが追加している設定を削除する、ってやってるだけ。簡単簡単。

ということは、Quick JUnitでも同じような設定画面を作れば対応できそう。

2010-06-06

10.04でYahoo Japan!の記事フォントが変な件

はてダでも依然中国語フォント?が使われているので、正しい回避法は別にありそうですが、とりあえずめも

.fonts.confを作成

<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
	<match target="pattern">
		<test qual="any" name="family">
			<string>MS PGothic</string>
		</test>
		<edit name="family" mode="assign">
			<string>TakaoPGothic</string>
		</edit>
	</match>
</fontconfig>

MS PGothicをTakaoPGothicに置き換えてるだけ。

2009-01-10

rst2pdfを使うには

設計書をTracのWikiに書いて、後でPDFで出力できないか?というお話があったので、調べてみた。Tracが標準でサポートしているReStructuredText(以下ReST)をだったらPDFに変換できました。たぶんそれをうまく使えばTrac/Wikiで管理している設計書をPDFにできるんじゃなかろうか、ということでメモ。使ったものはPythonで書かれているrst2pdf。世の中これ以外にもrst2latexしてそっからplatex2dvi->dvi2pdfっていう手順を踏むとか、RubyでかかれたReSTを使うとか、ありましたよ。

TracにあるデータをPDFにするんだったら、XML-RPCを使ってWikiからデータ引っこ抜いて"{{{","}}}"をうまくなんとかやっつければ、そのまま変換できますな。

インストール

注意

easy_installを使ってインストールすることもできるけど、ソースを落としてきてコンパイルとかして、こけるこける><easy_installはまだネイティブコードのない奴に限る気がする。

試した環境
  • Ubuntu Linux 8.10/Python 2.5(成功)

最初Windows XP 64bit Professional/Python 2.5って環境でやってたけど、上記の注意で書いたとおり、コンパイル環境を構築できずに断念した。

手順

1. 依存するライブラリからインストールしていく。

rst2pdfが依存するライブラリはPython Imaging Library (PIL)UniConvertorReportLabの3つ。この順にインストールするが、Ubuntuの場合すべてaptitudeでインストール可。PILはPython2.5に同梱されていますのでインストールする必要ないかも。

sudo aptitude install python-imaging
sudo aptitude install python-uniconvertor
sudo aptitude install python-reportlab

2. ".uniconvertor"ディレクトリをホームディレクトリに作る

なんかよくわかんないけど、コマンド叩くと怒られるので、作りました。

mkdir .uniconvertor

3. フォントの設定を書く

日本語のReSTファイルを変換すると文字化けして見えるのは、埋め込まれるフォントが対応していないから。ということでフォントの設定を書きます。フォントの設定等、デフォルトのスタイルは"rst2pdf --print-stylesheet"を叩くとstdoutに出力されるのでそこからファイルに落とします。

rst2pdf --print-stylesheet > rst2pdf_default.style

次に出力されたrst2pdf_default.styleの

    ["normal" , {
      "parent": "base"
    }],

    ["normal" , {
      "fontName": "IPAMonaPGothic"
    }],

と言うように、今使ってる標準truetypeフォントに切り替えました。標準で使っているフォント名が分かんない場合は

fc-match

ってやると出力されているフォントだとおもわれ。

4. いよいよ変換してみる。

標準でないフォントの場合、フォントの配置場所を指定する必要があります。指定しない場合は検索するためめっさ時間がかかるので、探しておいた方が幸せでしょう。今回の場合は下記のようにしたらうまく出力されました。

rst2pdf [RSTファイル名] -s rst2pdf_default.style -o [出力PDFファイル名] --font-path /usr/share/fonts/truetype/ipamona

なおrst2pdfはフィルタとしても使えるので結構ReSTで書かれている文章があれば使えるツールではないでしょうか?サンプルではこんな例が紹介されてました。

curl http://docutils.sourceforge.net/docs/user/rst/quickstart.txt | rst2pdf > quickstart.pdf

rst2pdfのマニュアル

ReSTテキスト PDFばーじょん

2008-12-14

Trac0.11.2インストールメモ

久しぶりにTracのインストールをした。easy_installが便利だったのと、忘れがちなので、メモ

easy_installはpythonのモジュールのインストールを簡単にしてくれるコマンド

easy_install --prefix=~/code/python --install-dir=~/code/python http://svn.edgewall.org/repos/trac/tags/trac-0.11.2.1

引数に"-n"をつけておくと、実際にインストールしないでどうなるか、一応確認ができる。(でも実際にインストールしないので、モジュールがねぇって起こられました。)SVNのリポジトリパスを指定するとそこからダウンロードしてきてインスコできるとか、いいよね。

で、--install-dirや--prefixを指定しているのは、インスコする環境をバージョンごとに別にしようかと画策してたため。環境変数PYTHONPATHにさっきのパスが含まれるように、Shellの起動時に読み込まれる.bashrc(でよかったか。)にこんな風に書いておいてます。

if [ $PYTHONPATH ]; then
  export PYTHONPATH=$PYTHONPATH:~/code/python
else
  export PYTHONPATH=~/code/python
fi

実際、自分であおる時は実プロジェクトではなく、試すためのプロジェクトなので、trac-adminで適当なところにprojectを作り、Apacheなんか立ち上げるのも面倒なので、tracdで1025番以降のポート(1024番以下はroot権限がないと起動できない)で起動します。こんな風に

tracd -p 10080 -s test

さて。あおろう。

XmlRpcPluginってまだ0.11に対応してない?もしかして。trunkを使えってことか。