2014年8月4日月曜日

EclipseでEmmetを試す

Zen Codingの後継であるEmmetをEclipseで使用する手順は、以下の通り。

なお、Emmetは、CSS的な文法の省略記法をHTMやCSSのスニペットに変換するツール。sysoutがSystem.out.println()に変換されるのと同様といえば、Javaプログラマにはピンとくるかもしれない。いずれにしても、実際に試してみると、その強力さがよくわかる。

まず、EclipseにEmmetプラグインをインストールする。具体的な手順は、下記リンクを参照。


Eclipse 4.4 (Luna)にインストールしてみたが、上記の手順で問題なくインストールできた。なお、設定については、デフォルトのままで特に問題なさそう。

インストールが完了したらEclipseを再起動し、拡張子がhtmlの新規HTMLファイルを作成する。HTMLファイル内で、!(エクスクラメーションマーク)を入力後TABキーを押すと、以下のようなHTML5用スニペットに変換される。

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8" />
    <title>Document</title>
</head>
<body>
    
</body>
</html>

上記の例では、、!(エクスクラメーションマーク)がEmmetの省略記法となる。なお、Eclipseでメソッドをコード補完した場合と同様、変換後のスニペットでは、あらかじめ設定されている箇所にTABキーでキャレット移動することが可能。

さらに、bodyタグのすぐ下の行に、div#id>ul#id1.class1>li*5という省略記法を入力してTABキーを押すと、以下のように変換される。

<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<title>Document</title>
</head>
<body>
    <div id="id">
        <ul id="id1" class="class1">
            <li></li>
            <li></li>
            <li></li>
            <li></li>
            <li></li>
        </ul>
    </div>
</body>
</html>

CSSが少し分かれば、上記の省略記法と変換後のスニペットの対応はなんとなくイメージできるはず。具体的な例については、下記リンクが参考になる。


より詳細については、本家サイトを参照。

2014年7月18日金曜日

Windows 7でシンボリックリンクを作成する。

Vista以降のWindowsでは、シンボリックリンクの作成が可能になっている。
コマンドプロンプトでシンボリックリンクを作成するには、管理者権限でmklinkコマンドを使用する。

mklink link target


上記では、linkが作成するリンク、targetがリンク先のファイルとなる(unix系OSのlnコマンドとは引数の順序が逆である点に注意)。ディレクトリのシンボリックリンクを作成する際には、/Dオプションを使用する。

関連リンク

2014年7月11日金曜日

Mac OSX 10.8 のアップデート後にGigHubにアクセスできなくなる問題への対処法

Mac OSX 10.8 (Mavericks) をアップデート後に、ChromeでGitHubのサイトに接続しようとすると、「実際の github.com に接続できない」という問題が発生。問題の詳細とその対処法は、下記を参照。


上記のサイト通りに対処することで、無事、ChromeからGitHubへのアクセスが復活。


2014年2月14日金曜日

SpockでPandocをCharacterization Testする

SpockでPandocのCharacterization Testを行う手順は、以下の通り。なお、Characterization Testとは、テストが用意されていないソースコードに対して、現状の挙動をそのまま記録するテストのこと(もちろん、Pandocは例として使用しているだけで、Pandoc自体がテストされていないという意味ではない)。詳細は、『Working Effectively with Legacy Code Chapter 13』を参照。

 

前提

 

手順

まずは、Markdownで書かれた、以下のファイル(header.md)を用意する。
#Header Test
次に、Spockのテストを用意する。


このテストでは、PandocでMarkdownファイルをHTMLファイルに変換し、そのHTMLファイルの内容をテストしている。期待値が空文字になっているため、当然このテストは失敗する。
Condition not satisfied:

"" == result
   |  |
   |  <h1 id="header-test">Header Test</h1>
   false
   39 differences (0% similarity)
   (--------------------------------------~-~)
   (<h1 id="header-test">Header Test</h1>\r\n)

    at HeaderSpec.header characterization test(HeaderSpec.groovy:10)
実際の変換結果はheader.htmlに出力されているので、その内容をテストコードに反映する。


再度テストを実行すると、成功するはずのテストが、まだ失敗する。
Condition not satisfied:

"""<h1 id="header-test">Header Test</h1> //""" == result
                                               |  |
                                               |  <h1 id="header-test">Header Test</h1>
                                               false
                                               3 differences (92% similarity)
                                               <h1 id="header-test">Header Test</h1>(-~)\n(//)
                                               <h1 id="header-test">Header Test</h1>(\r)\n(--)

    at HeaderSpec.header characterization test(HeaderSpec.groovy:10)
どうも、期待値と検証値で改行コードが異なるのが原因らしい。期待値と検証値それぞれでnormalizeメソッドを実行して、改行コードの違いを吸収する。


上記の修正後、再度テストを実行すると、無事テストが成功する。

2014年2月13日木曜日

Amazonの「納品書兼領収書」が「納品書」に変更されている件

Amazonから商品が送付される際に基本的に同梱されていた「納品書兼領収書」が、「納品書」に変更されている模様。詳細は、下記リンクに詳しい。


手元にある書類を確認したところ、昨年6月頃から「納品書」に変更されていた。領収書は、注文履歴から印刷が可能。手順については、上記リンクを参照。

なお、Kendle版の書籍の領収書については、これまで通り、別途領収書の発行依頼が必要な模様。上記と同じ手順でKendle版書籍の領収書印刷が可能、という記事やブログをいくつか見かけたが、手元で試した限りは、「領収書」ではなく「注文の詳細」しか表示されなかった。Kendle版書籍の領収書発行を依頼する手順は、下記を参照。

2014年2月12日水曜日

WindowsのSourceTreeでlibiconv-2.dllが見つからないエラーの対処法

Windows版のSourceTreeをインストールしたが、libiconv-2.dllが見つからないエラーに遭遇。この問題を回避するには、Gitのインストールディレクトリ内のbin/libiconv-2.dllをlibexec/git-coreフォルダにコピーする。

なお、SourceTreeから使用するGit(「ツール」-「オプション」-「Git」-「Gitバージョン」で指定可能) はシステムGitを指定している。内蔵Gitを指定しても同様の問題が発生したが、その場合の回避法はわからず。

 

関連リンク

WindowsにHaskellをインストールする

WindowsにHaskell処理系のひとつである、Haskell Platformをインストールする手順は、以下の通り。

Haskell Platformのダウンロードページ からリンクをたどって、Windows用のインストーラ(現時点では、HaskellPlatform 2013.2.0.0 for Windows)をダウンロードする。

ダウンロードしたインストーラーはウィザード形式になっているが、デフォルトでのインストールで特に問題はない。

インストール完了後にコマンドプロンプトを起動し、ghciコマンドが実行できることを確認する。
>ghci
GHCi, version 7.6.3: http://www.haskell.org/ghc/  :? for help
Loading package ghc-prim ... linking ... done.
Loading package integer-gmp ... linking ... done.
Loading package base ... linking ... done.
Prelude>

上記のように、対話的なインタープリタが起動する。なお、このインタープリタはCtrl+Dで終了する。

関連リンク

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のインストーラーをダウンロードする。

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

2013年12月18日水曜日

PandocをWindowsにインストールする

Pandocをwin7にインストールする手順は、以下の通り。

まず、Pandoc – Installingからリンクをたどってダウンロードページに移動し、Windows用のインストーラーをダウンロードする。

ダウンロードしたインストーラーはウィザード形式になっているが、インストールのオプションなどは特に用意されていない。ライセンスに同意しInstallボタンをクリックするとインストールが完了する。

なお、Pandocのインストール先ディレクトリは、C:\Users\UserName\AppData\Local\Pandoc(UserNameはインストールを実行したユーザのアカウント名)になる。

2013年11月28日木曜日

WindowsでJenkins 1.540が起動しない

最近PCをWin7にアップデートしたのに合わせ、Jenkinsをインストールしようとしたが、Jenkins起動時にJava VMが強制終了してしまう。どうも、Jenkins 1.540にはWindows上で起動しないという致命的な問題があるようで、JenkinsのJIRAにも既に報告が上がっている。


現時点の最新版である 1.541でもこの問題は解消していない。上記JIRAにある川口さんのコメントによると、1.542でこの問題が修正される予定とのこと。

修正版がリリースされるまでは、Windows上でJenkinsを動かす際には、1.539以前のバージョンを使用するか、あるいはLTS版(Long-Term Support Release)の使用を検討したほうがよいかも。

2013年11月27日水曜日

Windows7でコマンドプロンプトを管理者モードで実行する

Win7で、コマンドプロンプトを管理者モードで実行する手順は、以下の通り。

  • Winキーを押す
  • “cmd”を入力
    • 「プログラムとファイルの検索」に“cmd”と入力される
  • Shift + Ctrl + Enter を入力
    • 「ユーザー アカウント制御」のダイアログが表示される
  • Alt + y を入力
    • 「ユーザー アカウント制御」のダイアログで、「はい」を選択することに相当

やや手数は多いが、マウスを使わずにコマンドプロンプトを管理者モードで実行できる。

2013年7月9日火曜日

GradleからJSmoothを呼び出して実行可能jarをexe化する

GradleからJSmoothを呼び出して実行可能jarをexe化する手順は、以下の通り。

前提

  • JSmoothがインストールされている


手順

以下のbuild.gradleを用意する。


6行目に、JSmoothのインストールディレクトリを指定する。JSmoothのAntタスクを呼び出すために、jsmoothという名前のconfigurationを定義し(8行目)、そのconfigurationにJSmoothのantタスクのjarを指定(16行目)する。

jarタスク(19行目)で、依存関係のあるjarをlibフォルダにコピー(20-23行目)した上で、実行可能jarを作成している。実行可能jarの作成については、下記サイトの内容をもとにしている。


jsmoothタスク(42行目)で、JSmoothのAntタスクを呼び出し、実行可能jarをexe化している。Antタスク呼び出すjsmoothの設定ファイルは、あらかじめjsmoothを使って保存しておく必要がある。jsmoothの設定については、下記を参照。


なお、この例で使用したjsmoothの設定ファイルは以下の通り。


jsmoothタスクを実行すると、実行可能jarがexe化される。なお、このexeはlibフォルダとともに配布する必要がある点に注意。


関連リンク

2013年7月3日水曜日

Gradleを使ってEclipseとEclipse Pluginをインストール

2014.02.04 追記:Eclipse 4.3対応のスクリプトは、『dev-xconnecting: Gradleを使ってEclipse 4.3+Groovy Eclipse+Gradle IDEをインストール』を参照。

Gradleを使ってEclipse本体とEclipseプラグイン(フィーチャー)をインストールするためのbuild.gradleは、以下の通り。なお、動作確認はWindows上で行っているが、適宜書き換えればUnix系のOSでも動くはず。


2行目で、Eclipseのインストール先ディレクトリを指定している。

Eclipse本体のインストールは、installEcliseタスク(9行目)で行っている。単にEclipseのダウンロードサイトにあるアーカイブをダウンロード(11行目)して解凍しているだけ。必要なら、インストールしたいEclipseのバージョンや対象プラットフォームに合わせて適宜書き換える。eclipse.iniの置き換え(20行目)はお好みで。

Eclipseプラグインのインストールには、上記でダウンロードしたEclipse本体に含まれるp2 director (org.eclipse.equinox.p2.director) を利用する(27行目)。プラグインをインストールする際に、やたら細かいDebugログが出力されるのを抑止するために、logbackの設定ファイルを指定している(33行目)。

インストールするEclipseプラグインは、p2 directorのコマンドオプションとして指定する。p2 directorを使ったEclipseプラグインのインストールについては、下記リンクを参照。


installPluginsタスク(42行目)で、インストールに必要な更新サイトをp2 directorのrepositoryオプション(44, 45行目)に、インストール対象のプラグイン(フィーチャー)をinstallIUsオプション(46, 47行目)に指定している。

repositoryオプションおよびinstallIUsオプションでは、複数の更新サイト、プラグインをカンマ区切りで指定できるが、途中にスペースを入れると実行時エラーとなる点に注意。なお、インストールするプラグインがひとつの場合は、installIUsの代わりにinstallIUオプションを使用する。オプションの詳細については、下記を参照(ただし、installIUsについては記載がない)。


上記のbuild.gradleや関連するファイル(eclipse.iniやlogback.xml)を、任意のディレクトリに以下のように配置する。
build.gradle
logback.xml
│
└─files
     └─eclipse.ini
build.gradleが含まれるディレクトリで以下のコマンドを実行すれば、build.gradleで指定したEclipse本体とEclipseプラグイン(上記の例では、Groovy-EclipseとGradle IDE)がインストールされるはず。
gradle installEclipse installPlugins
なお、mustRunAfter(53行目)は、タスクを直列実行するためにGradle 1.6から追加された機能なので、Gradle 1.5以前で実行する場合は、depandsOnなどに書き換える。

上記ファイルをgradlewとともにgitリポジトリなどに公開しておけば、幸せになれそう。

関連リンク

2013年7月1日月曜日

Gradle Flyway PluginでGradleからGroovy Migration

『FlywayのGroovy MigrationをGradleで試す』では、build.gradleからFlywayのクラスを直接呼び出しているが、Gradle Flyway Pluginを使うと、より簡単にGradleからFlywayを実行できる。

前提

手順

『FlywayのGroovy MigrationをGradleで試す』のbuild.gradleを、以下のように書き換える。


flywayタスクの設定で、Groovy Migrationに使用するGroovyクラスのパッケージ名(29行目)、およびGroovyクラスのクラスパス(30行目)を指定するのがポイント。

このbuild.gradleにより、flywayMigrateなど、Gradle Flyway Pluginで提供されているタスクが実行できる。使用可能なタスクは、gradle tasksで確認できる。