2014年2月5日水曜日

コマンドラインのコマンドをGroovyから実行する

コマンドラインのコマンドを実行するGroovyスクリプトは、以下の通り。

下記の例では、Pandocのバージョン情報を出力している。(Pandocをインストールしていない場合は、実行可能なコマンドに適宜変更すること。なお、Pandocのインストールについては『PandocをWindowsにインストールする』を参照。)


実行したいコマンドからなる文字列のexecuteメソッドを呼び出すことにより、コマンドの実行を非同期で開始する(1行目)。このメソッドはjava.lang.Processを返す。コマンドの実行が完了するのを待って(2行目)、標準出力の内容をprintlnしている(3行目)。

なお、コマンドが標準出力に出力した内容を確認したいだけなら、6行目のように記述することも可能。

2014年2月4日火曜日

EclipseでSpockを試す

前提

  • Spock 0.7
  • Groovy 2.0.7
  • 動作確認環境
    • Eclipse 4.3 SR1
    • Eclipse Plugin
      • Groovy Eclipse
      • Gradle IDE
動作確認環境の構築手順については、『Gradleを使ってEclipse 4.3+Groovy Eclipse+Gradle IDEをインストール』を参照

手順

Eclipseで新規プロジェクト(一般プロジェクト)を作成し、プロジェクト直下に、以下のbuild.gradleを配置する。


コマンドラインでプロジェクトのディレクトリに移動し、以下のタスクを実行する。
gradle mkdirs
gradle cleanEclipse
gradle eclipse
プロジェクトを右クリックし、「Refresh」を選択すると、プロジェクトがGroovyプロジェクトとして認識される。再度プロジェクトを右クリックし、「Configure」-「Convert to Gradle Project」を選択すると、Gladleプロジェクトに変換される。

この時点で、以下の設定も確認しておく。

  • 「Windows」-「Preferences」-「Groovy」
    • Use monospace font for JUnit (deprecated)にチェック
    • これにより、JUnit実行時に monospace fontが使用される
  • 「Windows」-「Preferences」-「Gradle」
    • Disable underlininig for .gradle files
    • これにより、.gradleファイルを開いた際に、余計な下線が表示されるのを抑止

以下のSpockのテストケース(SampleSpec.groovy)を、「src/test/groovy」に作成する。


配置したSampleSpec.groovyを右クリックし、 「Run as」-「JUnit Test」を選択するとテストが実行される、テストが失敗する(このテストは意図的に失敗するよう書かれている)。

以下のように修正し、再度テストを実行すると、テストが成功することを確認できる。

2014年1月29日水曜日

Gradleを使ってEclipse 4.3+Groovy Eclipse+Gradle IDEをインストール

Gradleを使って、Eclipse 4.3+Groovy Eclipse+Gradle IDEをインストールするためのbuild.gradleは、以下の通り。


基本的な使い方については、『Gradleを使ってEclipseとEclipse Pluginをインストール』を参照のこと。『Gradleを使ってEclipseとEclipse Pluginをインストール』からの変更点は、以下の通り。

  • installEclipseタスクでインストールするEclipseを Kepler (4.3.1) SR1に変更 (12行目)
  • installPluginsタスクで使用するGroovyEclipseのリポジトリに、Eclipse 4.3のsnapshotを指定(44行目)
    • releaseを指定すると、Window -> Preferences -> Groovy にある、Use Monospace font for JUnitのチェックボックスのオンオフができない
  • uninstallPluginsタスクを追加。(54-63行目)
    • gradle uninstallPluginsで、Groovy EclipseとGradle IDEのアンインストールが可能。
    • リポジトリに、Eclipse本体のUpdate Siteを指定している点に注意。これを指定しないと、依存関係が解決できず、アンインストールが正常に終了しない。

2014年1月28日火曜日

Oracleでテーブルに存在しない複数行データを生成する

Oracleで、テーブルに存在しない複数行データを生成するSQLは、以下の通り。

SELECT
        CASE ROWNUM
            WHEN 1 THEN 'a'
            WHEN 2 THEN 'b'
            WHEN 3 THEN 'c'
        END AS COL
    FROM
        dual CONNECT BY ROWNUM <= 3;

EXISTS句などで、抽出条件となるSELECT文をテーブルを使わず書きたい時に便利。

関連リンク

2013年12月20日金曜日

EPUBファイルの中身を確認する

EPUBファイルの実体は、EPUBの仕様に沿って配置されたファイル・フォルダをzipで圧縮したものなので、解凍することによりその中身を確認することができる。

Pandocを使ってMarkdownからEPUBを作成する』で作成したEPUBファイルの拡張子をzipに変更してzipで解凍すると、以下のようなファイル・フォルダで構成されていることがわかる。
ch001.xhtml
ch002.xhtml
content.opf
mimetype
nav.xhtml
stylesheet.css
title_page.xhtml
toc.ncx
META-INF
├─com.apple.ibooks.display-options.xml
└─container.xml
なお、解凍されたファイル・フォルダを単純に圧縮しなおしてもEPUBファイルとは認識されない点に注意。これは、EPUB内に含まれているファイルであるmimetypeが、zipの先頭エントリに無圧縮で追加されている必要があるため。Windowsの標準機能でこの要件を満たすには、mimetypeのみを右クリックしてzip圧縮し、できたzipファイルに他のファイル・フォルダを追加すればよいらしい。詳細は、下記リンクを参照。

関連リンク

Pandocを使ってMarkdownからEPUBを作成する

前提


手順

Pandocを使ってMarkdownからEPUBを作成する手順は、以下の通り。

任意のディレクトリに、以下のmybook.md(Markdown形式のファイル)を作成する。
% タイトル\
% 作者

---
language: ja-JP
---

# 見出し1

見出し1です。試しに書いてみます。

# 見出し2

見出し2も書いてみます。

1-2行目はtitle blockと呼ばれるPansocの拡張Markdown記法。1行目がタイトル、2行目が著者名として認識される。タイトルブロックは必ずファイルの先頭に記述する必要がある。

4-6行目もPandocの拡張Markdown記法でYAML metadata blockと呼ばれるもの。EPUB生成時に必要となるメタデータを指定することができる。ここでは、EPUBで使用する言語として日本語(ja-JP)を指定している。なお、この指定がないと、Adobe Digital Editionsで日本語が正しく表示されない。

8行目以降は、通常のMarkdown記法で見出しと本文を記述している。

このmybook.mdからPandocを使ってEPUBを生成するには、mybook.mdが含まれているディレクトリで以下のコマンドを実行する。
pandoc mybook.md -o mybook.epub
mybook.mdが入力ファイル、oオプションで指定したmybook.epubが出力ファイルとなる。入出力のフォーマットは拡張子から自動的に判断される(コマンドラインオプションで明示的に指定することも可能)。

生成されたEPUBを、Adobe Digital Editionsで表示した結果は、以下の通り。mybook.mdの内容をもとに、表紙や目次が自動的に生成されていることがわかる。




2013年12月19日木曜日

Adobe Digital Editionsのインストール

WindowsまたはMac OSX上で動作するEPUBリーダーであるAdobe Digital Editionsをインストールする手順は、以下の通り。

Adobe Digital Editions のダウンロードページから、該当OSのインストーラーをダウンロードする。

ダウンロードしたインストーラーはウィザード形式になっている。基本的にデフォルトのままインストールすれば問題はない。