09 Dec 2012, 06:47

Sphinxからepub形式で出力して、Dropbox経由でiPadから読んでみる

Sphinxは、htmlやPDF以外にも、epub形式への変換をサポートしている。

今日は、epub形式でSphinxドキュメントをビルドして、iPadで電子書籍を読むところまでを試してみた。

ePubとは

ePub形式とは、電子書籍で広く採用されている拡張子の規格。

http://ja.wikipedia.org/wiki/EPUB

Sphinxを利用すると、テキストからepub形式のファイルが一瞬で作成できてしまう!

copy.pyのepubの出版情報を記入する

epub形式での出力のためには、sphinxルートディレクトリにあるcopy.pyにepubの情報を記入してやる必要がある。

そもそも、Sphinxを始めた時(sphinx-quickstart)、epubを有効にしていない場合は、設定する項目すらない。

Sphinx can also add configuration for epub output:
> Do you want to use the epub builder (y/N) [n]:

そんな時は、以下のサイトの下の方に設定情報があるので、それをcopy.pyの一番下にコピペする。(自分はそうした)

copy.pyには以下の情報を記入。

epub_basenameは必須項目。ほかは入れなくても大丈夫っぽい。

epub_basename(必須) epubのファイル名
epub_title epubのタイトル
epub_author epubの作者名
epub_copyright コピーライト

ちなにみに、入力のときは、=u’xxx’な感じで、日本語を使うときにuを入れないとエラーする。uがUTF-8を示す。

# -- Options for Epub output ---------------------------------------------------
epub_basename = 'Shinigami_kai'

# Bibliographic Dublin Core info.
epub_title = u'死神・改'
epub_author = u'神楽家きつね'
#epub_publisher = u'神楽家きつね'
epub_copyright = u'2012 神楽家きつね All right reserved'

make epubでSphinxからepub形式へ変換する

変換元のrst形式ファイルは作成済みであること。

rst形式ファイルからSphinxのmakeコマンドでepub形式へ変換するには、

sphinxのルートディレクトリで以下のコマンドを叩けばよい!(簡単\(^0^))

make epub

すると、./_build/配下にepubディレクトリが作成される。

そのしたに、(copy.pyでいれたepub_basename).epubというファイルがある。

これが、epub形式に変換されたファイルだ。

Droxbox経由でiPhone/iPadからepubファイルを見てみる

epubファイルをDropboxの任意の場所に置いて、iPhone/iPadのDropboxアプリで見てみる。

DropboxDropbox

価格: 0円 iTunesで見る

posted with sticky on 2012.12.9

Dropboxのアプリ自体にepub形式のファイルを閲覧する機能はないので、iOSのデフォルトアプリ、ibookで開くを選択。

skitch

すると、iBookが起動して、電子書籍のように閲覧することができる。
IMG_0014 

参考になったサイト

09 Dec 2012, 04:04

マウスいらず、キーボード操作だけでネット閲覧!Chrome拡張プラグインの『Keyboard Navigation』が心地良い

毎日、会社の通勤時間に席に座ってノートPCをいじることが多いのだけれども、電車の中ではマウスが使えないので、なるべくキー操作で全てを済ませようとする。

それでも、Webページの閲覧はマウスがないと辛かったりする。

ネット上の移動をキー操作でできないか調べてみたところ、
Google Chromeの拡張プラグイン、

『Keyboard Navigation』

がなかなかよかったので、紹介。

Keyboard Navigationをつかえば、リンク先URLに番号指定で移動可能!

Keyboard Navigationを使うと、リンク先URLに番号指定で移動することができる。
インストールはChrome ウエブストアから。

Chrome ウェブストア – Keyboard Navigation

 

Keyboard Navigationの使いかた

つかいかたはとても簡単。
使用したいHPで

”,“(カンマ)

を押すだけ。すると、画面上に番号とアルファベットが現れる。

skitch(3)

番号を選択して、Enterを入れると別のリンク先へ飛ぶことができる。

08 Dec 2012, 12:38

SphinxのRSTファイル編集のためにrst.elをemacsに入れる

せっかく、EmacsでRSTファイルを編集するのだから、Lispを使いたいもの。

というわけで、今日はRSTファイル用のEmacsモード

rst-mode

を試してみる。

rst.elをemacsに入れる

以下のHPをrst.elという名前で保存する。

rst.el

これをload-pathの通ったところに置く。

続いて、以下の行を.emacsに追加。

(自分の場合は~/.emacs.d/init.elファイルに書いた)

;; rst.elを読み込み
(require 'rst)
;; *.rst, *.restファイルをrst-modeでOpen
(setq auto-mode-alist
      (append '(("\\.rst$" . rst-mode)
                ("\\.rest$" . rst-mode)
                ) auto-mode-alist))

これで、キーバインドが使えるようになった。

rst-modeのキーバインド

rst-modeのキーバインドは以下のURLから。

とりあえず、よく使いそうなものを抜粋。

コメントアウト (リージョン指定)M-x comment-region
箇条書き (リージョン指定)C-c,C-b
見出しレベル変更 C-c,C-a,C-a
右にインデント C-c,C-r,
|を入れる C-c,C-d

 

ちなみに、いろんなページに書かれているキーバインドは、自分の環境(Windows Cygwin上のEmacs)では動作しなかった。キーバインドが変わったぽい。

実行すると、下の方に別のコマンドを使ってくださいと説明が出るので、そっちで実行するとよい。もしくは、M-x (関数名)でいける。関数名はこのサイトで調べた。

08 Dec 2012, 11:11

EmacsでSphinxのrstファイルを編集するときの気に食わない白色をなんとかしたメモ

emacsでSphinxの編集をしているとき、rstファイルの見出しが白くなってしまって

読みにくい!(というか、読めない)(¬_¬)

今日はこれをなんとかしようと思う。

Before

skitch(1)

frame-background-mode を有効にする

これを解決するためには、Emacsの frame-background-mode を有効にする。
以下の一行を.emacsに追加。
(自分の場合は~/.emacs.d/init.elファイルに書いた)

(setq frame-background-mode 'dark)

これで、背景が黒色に適した色に変更できる。

after

skitch(2)

参考

frame の色を由緒正しく (?) 設定する for frame-background-mode

08 Dec 2012, 10:08

watchdog(watchmedo)でrst定期監視してsphinxビルド。

今週は、1週間かけて、shinixサイトを立ち上げた。
シェルスクリプトでサーバ公開までを自動化した。
シェルスクリプトがバクっていて、rm -rfでsphinxサイトを完全削除してしまった。

うわ~~~~~ w(◎o◎)w

sphinxでrstファイルを作成したあとに、自動ビルドが実行できたら便利だなと思った。
というわけで、(なんか前置きとつながってないけど)自動ビルドを調べてみた。

2つの方法があるっぽい

  • omake
  • watchdog

今回は、watchdogを試してみた。

watchdogでなにができる?

watchdogとはpythonモジュールの一つ。
この中に含まれる、watchmedoコマンドを使うことで、
ファイルの更新があったときにコマンドを実行できる。

環境

  • Sphinx 1.1.3
  • phthon 2.6
  • Windows 7 64bit

watchdogのインストール

pythonとpython setuptoolはインストールされていることが前提。
(なければこのページを参考にして、インストール)
インストールはコマンドプロンプトからeasy_installを実行する。

easy_install watchdog

watchdogの使い方

watchdogのコマンド watchmodeを利用して更新を監視するには以下のコマンドを叩く。

watchmedo shell-command --patterns="*.rst" --recursive --wait --command="make html"

これで、rstファイルを編集すると、watchmedoコマンドが再帰的に変更されたファイルを検索して、変更を検出したら “make htm”を実行する。

watchmedoコマンドオプション

 

コマンド 説明
-h, –help ヘルプ表示
-c COMMAND,

–command COMMAND
実行したいコマンド
-p PATTERNS,

–pattern PATTERNS,

–patterns PATTERNS

監視したい拡張子を指定
-i IGNORE_PATTERNS,

–ignore-pattern IGNORE_PATTERNS

–ignore-patterns IGNORE_PATTERNS

無視する拡張子
-D,

–ignore-directories
無視するディレクトリ
-R, –recursive 再帰的に監視
–interval TIMEOUT

–timeout TIMEOUT
タイムアウト時間指定
-w, –wait 複数実行禁止
          <p>
            &#160;
          </p>

          <h4>
            参考サイト
          </h4>

          <ul>
            <li>
              <a href="http://tell-k.hatenablog.com/entry/2012/01/04/022229">omakeもmakeも使わずに、Sphinxドキュメントの継続的ビルド &#8211; Study08.net 対シンバシ殲滅用人型機動兵器</a>
            </li>
            <li>
              <a href="http://d.hatena.ne.jp/nullpobug/20120331/1333125058">watchdogモジュールのwatchmedoコマンドが便利</a>
            </li>
          </ul>

08 Dec 2012, 02:24

PSP実践のOSS「The Software Process Dashboard」を評価する。

会社のプロジェクトでは、作業時間計測が流行っている。(というより、強制的)
ツールに縛りはないため、みんなはTaskCoachを利用している。

しかし、ヘビーOutlookerな自分はOutlookカレンダーに集計時間をリアルタイムで出力できるTimeEditionを利用している。

時間計測は生産物とセットで評価しないと意味がないと常日頃思っているので、時間計測とともに管理できるツールはないかなと思った。また、Webでチャートを簡単に公開したいと思った。

PSPとは

PSPとは、プレーステーション・ポータブルの略である。
いや、派手に間違えた、Personal Software Processの略。パーソナルソフト開発作法。
個人のソフトウェア開発における時間管理の方法。CMMIの個人バージョン。

詳しくは以下のリンクを参照。

GTDに心酔している自分は、タスクに対して時間を割り当てることは、面倒なのでしない。
大きな枠組みで、時間を計測したい。
ここでは、PSPを実践するためのオープンソースProcess Dashboardを使ってみる。

Process Dashboardをインストール

The Software Process Dashboard | The Software Process Dashboard Initiative

以下のリンクより、ダウンロード。

インストーラを起動して、聞かれるままにOKを押せばよい。
ちなみに、日本語対応しているのが嬉しい。

Process Dashboardを使ってみる

image

UIはシンプル。JAVAでできている。
ホットキーに対応していないのが(一番)つらいところだ。
基本的なタイムトラッキングの機能は揃っている。

  • 階層でのプロジェクト管理
  • 手動での時間修正
  • タイムログの表示
  • 時間集計結果

などなど。時間集計結果のチャートはWEB画面でも出力することができる。

LOC Counter

LOC というのは Life Of Codeの略で、要はステップ数のこと。
時間とコードのステップ数を対応して管理できるみたい。
Subversionがデフォルトでサポートされている。

しかし、自分の要件としてはドキュメント作成時間やテスト項目も管理したいので、これでは足りない。

image

基本機能は、こんな感じ。
拡張機能を利用するためには、アンケートに登録する必要がある。しかし、会社で利用して、さらにはよければ他人の展開することも考えると、これは障害になるかな。

05 Dec 2012, 13:07

syntaxhighlighterをWordPressに入れてWindows Live Writerから投稿

syntaxhighlighterとは、ブログでソースコードを綺麗に表示させるためのツール。
WordPressには、syntaxhighlighterを利用するためのプラグインが多数ある。

今回は、普段使っている Windows Live Writerのプラグイン
『Windows Live Writer Plug-ins』
から投稿して、ブログに表示させたかったので、いろいろ試してみた。

その結果、どれもWindows Live Writer Plug-insとはうまく連携してくれなかった。
なので、プラグインではなくて、直接syntaxhighlighterを入れることにした。

以下のサイトが大変参考になった。

memo+ ≫ WordPressでSyntaxHighlighter for Windows Live Writerを使用する

 

Windows Live Writer Plug-insのインストール

まだ、Windows Live Writer Plug-insを入れていない場合は、以下から手に入れる。

http://plugins.live.com/writer/detail/syntaxhighlighter-for-windows-live-writer

syntaxhighlighterのダウンロードとインストール

以下からダウンロード。

http://code.google.com/p/syntaxhighlighter/

rarファイルを解凍すると、以下の3つが格納されている。

  • uncompressed
  • Scripts
  • Styles

uncompressedを削除して、残り2つをWordpressのテーマフォルダ配下にアップロードする。

syntaxhighlighterの設定

WordPress画面を開いて、[外観] > [テーマの編集]を選択。

ヘッダの直前( の前)に以下のコードを追加する。

<archives/hp
wp_enqueue_style('SyntaxCss', get_bloginfo('template_url').'/dp.SyntaxHighlighter/Styles/SyntaxHighlighter.css');
 
wp_register_script('Core', get_bloginfo('template_url').'/dp.SyntaxHighlighter/Scripts/shCore.js');
wp_register_script('CSharp', get_bloginfo('template_url').'/dp.SyntaxHighlighter/Scripts/shBrushCSharp.js');
wp_register_script('BrushCss', get_bloginfo('template_url').'/dp.SyntaxHighlighter/Scripts/shBrushCss.js');
wp_register_script('BrushPhp', get_bloginfo('template_url').'/dp.SyntaxHighlighter/Scripts/shBrushPhp.js');
wp_register_script('BrushJava', get_bloginfo('template_url').'/dp.SyntaxHighlighter/Scripts/shBrushJava.js');
 
wp_enqueue_script('Core');
wp_enqueue_script('CSharp');
wp_enqueue_script('BrushCss');
wp_enqueue_script('BrushPhp');
wp_enqueue_script('BrushJava');
?>

以下の2つは記述必須。あとは、言語によって選択する。

ここでは、C#,CSS,PHP,JAVAを設定している。

ちなみに、ここで言語を選択しないと、表示は薄い灰色に表示される。

wp_register_script('Core', get_bloginfo('template_url').'/dp.SyntaxHighlighter/Scripts/shCore.js');
wp_enqueue_script('Core');

続けて、JavaScriptを書く。

<script type="text/javascript">
window.onload = function () {
    dp.SyntaxHighlighter.ClipboardSwf = 'wp-content/themes/wp/dp.SyntaxHighlighter/Scripts/clipboard.swf';
    dp.SyntaxHighlighter.HighlightAll('code');
}
</script>

dp.SyntaxHighlighter.ClipboardSwfに設定するパスはそれぞれの環境に合わせて変更。

これで、Windows Live Writer から投稿すると、Wordpressでコードか綺麗に表示されるはず。

04 Dec 2012, 14:33

JUnitのインストールとEclipseでの使い方まとめ

JUnitをEclipseで利用する方法をメモします。

環境

  • Windows 7 64bit
  • Eclipse 4.2 Juno
  • Java SE 7.9

JUnitはJava用の単体テストフレームワーク

JUnitとは、Java用の単体テストフレームワーク。

Javaでのロジックテストが簡単にできる、お助けツール。

(Wikipedia: http://ja.wikipedia.org/wiki/JUnit)

この本がJUnitでは、一番有名。TDDのバイブル。

 

JUnitのダウンロードとインストール

JUnitを手に入れる

JUnitはGuitHubより落としてこれる。

JUnitのインストールは、落としてきたフォルダを任意の場所に置くだけ。

(ここではC:\src\junitにおいた)

フォルダに環境変数のパスを通す。

[コントロールバネル] > [システム] > [システムの詳細設定] > [環境変数]を選択。
下段のシステムの環境変数の中からPathを選択して、[編集]を選択。
すでに入っている値の最後に”;”をつけてから、パスを追加する。

C:\src\junit

EclipseでのJUnit ビルド・パスの設定

EclipseでJUnitを利用するために、ビルド・パスを通す。

プロジェクトを選択して、[ブロパティ] > [Javaのビルドパス]を選択。

[ライブラリ]タブ > [ライブラリの追加] > [ユーザライブラリ] > [次へ]

[ユーザライブラリ] > [新規]を選択。

ライブラリを作成するために、[JUnit4]と名前をつける。

続いて、[外部Jar追加]。

ここで、先ほどおいたファイルの中にあるjunit-4.11.jarを選択する。

Eclipse JUnit プラグインを利用する

Eclipseでは, Eclipse JUnit プラグインを利用すると簡単にテストケースが作成できる。

(Eclipse JDTには標準で入っている)

テストコードを書きたいソースコードを右クリックして、[新規] > [JUnitテストケース]を選択。今回のテスト対象は、以下の通り。メソッドより期待値が返されるかをテストする。

public class sample {
    public static int num() {
        return 10;
    }
}

ここでは、新規JUnit 4テストケースを選択。とりあえず、細かい設定は置いておいて、完了を選択。テストケースが自動生成される。

import static org.junit.Assert.*;

import org.junit.Test;

public class sampleTest {

    @Test
    public void test() {
        fail("まだ実装されていません");
    }

}

JUnitテストの実行

テストの失敗

プロジェクトを選択して、右クリック。

[実行 > [JUnitテストの実行] を選択して、テストケースを実行する。

まだなにも期待値を書いていないので、テストは失敗する。

image

テストの成功

fail(“まだ実装されていません”);の部分を置き換えてテスト実行すると、テストは成功する。

assertEquals(10, sample.num());

image

assertEqualsは、期待値(10)と結果(sample.num() )を比較する関数。

等しければテストは成功する。

assertEqualsだけ覚えれば、とりあえずどんなテストでも書ける(乱暴な言い方)。

 

02 Dec 2012, 11:24

git commitからJenkinsでSphinxドキュメントをビルド+α

SphinxとJenkinsを組み合わせたら、どんなことが可能なのか考えてみた。

  • (版数管理を前提として)チェックインをトリガにして、Sphinxドキュメント生成。
  • 文字列をカウントして、グラフ化。
  • スペルチェックや表記の揺れをチェック。

結局いろいろ調べて、まだそういうツールないということはわかった。

文字列カウントも、スペルチェックもできないことは分かった。

文字列カウントは make textで生成したテキストファイルをカウントして、グラフ化する仕組みを作れば実現可能かも。

表記の揺れは、Yahoo の提供する校正支援APIを利用すれば、実現可能かも。

http://developer.yahoo.co.jp/webapi/jlp/kousei/v1/kousei.html

というわけで、できることとして、文字列カウントの代わりに、ステップカウントを入れた。

追加で、JenkinsのTask Scanner Pluginを入れた。

こんな流れ

sphinxのファイルをgit commit

Jenkinsにwgetで通知

Jenkinsで make html

Task Scan

ステップカウント

うーん、これではまだまだ使い物にはならないな。

image

02 Dec 2012, 11:01

git commitをフックしてJenkins でビルドを起動

gitでリボジトリへコミットすると、それをJenkinsが検出して、ビルドを実行する仕組みを入れてみた。

[toc]

通知にするべきかポーリングにするべきか、それが問題だ。

調べてみると、gitのCommitからJenkinsにビルドさせる方法は2つあるっぽい。

  • git commit時にJenkinsに通知する方法
  • Jenkinsがgitリボジトリを定期的にポーリングする方法

通知だと、gitのフック機能を利用して、簡単に実現できる。

ポーリングだと、Jenkins GIT Pluginを使って実現できる。

通知方法だと、branchごとにビルドを起動できないという弱点がある。

今回は、post-commitの方法を利用する。(というより、ポーリングは挫折した)

環境

  • Windows 7 64bit
  • Cygwin

wgetでJenkinsのジョブをキックする

Jenkinsトークンを利用して、リモートからビルドキック

コマンドラインからJenkinのジョブを起動するには、wgetコマンドを使う。

リモートから、jenkinsにアクセスするためには、管理画面からトークンの設定をしておく。

  • 設定 => ビルドトリガ => リモートからビルド
  • 認証トークンで任意のトークン名を記述

これで、JENKINS_URL/job/vxUnit/build?token=TOKEN_NAMEというURLでリモートからキックすることができるようになる。Jobの実行をアカウントを持つユーザのみにしている場合は、–http-user/–http-passworオプションをつける。まとめると、

wget --http-user=<ユーザ名> --http-password=<パスワード> http://yourserver.com/job/<ジョブ>/build?token=<token名> 

git post-commmitの設定

.git/hooks/配下にあるpost-comitファイルに以下の行を追加。 http://localhost:8080の部分は、自分の環境に読み替えてください。

wget --no-proxy http://localhost:8080/job/(ジョブの名前)/build?delay=5sec

post-commitがなければ、新規作成して、実行権限を与える。

touch post-commit
chmod a+x post-commit

post-commit例

#!/bin/sh    
echo "Hook post-commit start"
wget --no-proxy <a href="http://localhost:8080/job/4th_ginnan/build?delay=5sec">http://localhost:8080/job/4th_ginnan/build?delay=5sec</a> || echo "wget failed"
echo "Hook post-commit end"

あとは、git commitを実行すれば、Jenkinsに通知が飛んで、Jobが実行された。

参考:

コマンドラインからJenkinsのジョブを実行する – azuki note