Sphinx再入門(Sphinx+翻訳 Hack-a-thonにて)

Sphinx+翻訳 Hack-a-thon 2015.01 - connpass 参加時に書いたエントリーです。

参加のきっかけ

Sphinxは1年前くらいに触ってみたものの、その後、利用機会がなく使い方を忘れてしまう...
今回再チャレンジを検討してみるも、再度挫折しそうな気もするので、本イベントを利用させてもらって集中的に取り組もうと考えた。
※ イベント名にはハッカソンってなっているけど、参加対象/趣旨は下記の通りで参加しても問題なさそう(問題なかった)

主に以下の方を対象にしています。
  Sphinx で文章を書きたい/書いている人
  ドキュメントの執筆/翻訳をしている人 ( Sphinx を使ってなくても ok )
  Sphinx のハック(改良、拡張づくり、テーマづくりなど)をしている人
  Sphinx に興味がある/使ってみたい人
  その他ドキュメントに関する素敵ななにか (all that's nice :-)

一人では辛くてすぐ飽きちゃう活動も、みんなと一緒ならがんばれる!というのが目的です。


なお、タイムテーブルにある通り、自己紹介と本日のゴール設定〜黙々〜成果発表する流れ。
自分は、Sphinx再チャレンジというボンヤリした目標なので、Blogにアップする事をゴール設定とした。

使用環境

  • Mac Yosemite

    $ uname -a Darwin mac-3.local 14.0.0 Darwin Kernel Version 14.0.0: Fri Sep 19 00:26:44 PDT 2014; root:xnu-2782.1.97~2/RELEASE_X86_64 x86_64

  • Eclipse

    最近Eclipseを利用し始めたので、Eclipse前提で環境をセットアップした。
    インストールしたEclipseは 4.4 Luna 。

環境設定

Sphinx Install

Eclipse Setup

Eclipseプロジェクト作成

  • [File] - [Other] を選択

    f:id:muraoka-edo:20150118150548p:plain

  • [ReST Editor] - [Sphinx project] を選択

    f:id:muraoka-edo:20150118150549p:plain

  • ウィザードに従いインストール

    適当に次へでウィーザードを進める。AuthorsやVersion、Language等は環境に合わせて。なお、HTMLテーマは標準インストールのものしかウィーザードでの選択はできない。

    f:id:muraoka-edo:20150118151738p:plain

  • プロクジェクト完成

    f:id:muraoka-edo:20150118152737p:plain

Python設定

  • EclipseへのPython設定

    Runすると下記エラーが発生した。

    f:id:muraoka-edo:20150118153203p:plain

    どうやらPythonファイルアイコンをみるとXcodeに紐付いるので、EclipseからPythonとして認識させる必要がありそう。

    f:id:muraoka-edo:20150118153201p:plain

以下追加設定。

f:id:muraoka-edo:20150118153207p:plain

Pythonのパスを選択

f:id:muraoka-edo:20150118153209p:plain

ライブラリがロードされていることを確認

f:id:muraoka-edo:20150118153210p:plain


ドキュメント作成(make html)

ようやく本題

  • Run

    EclipseからRun実行すると下記コマンドが実行される。

   sphinx-build -b html -d build/doctrees   source build/html
   Making output directory...
   Running Sphinx v1.2.3
   〜中略〜
   build succeeded.
   
   Build finished. The HTML pages are in _build/html.
  • プレビュー確認

    Index.htmlをEclipseから参照可能....(何故かサイドバーが表示されてない。Webブラウザからのプレビューでは表示される。)

    f:id:muraoka-edo:20150118182044p:plain

    conf.pyのthemeを"bizstyle"から"default"に戻したらサイドバーも表示できた...

    f:id:muraoka-edo:20150118182045p:plain

最後に

再入門という記事タイトルにしたが、環境周りのセットアップ記事で終わってしまった。
引き続きSphinxを触ってドキュメント生活を軌道にのせたい。

MacにPythonインストール

久々にPythonを使おうとおもったけど、 大昔にMacPortsから入れたPythonとかが残存していたので環境整理。 今回は、pyenvからインストールした。

pyenvをインストール

brewでインストール

$ brew install pyenv-virtualenv
$ which pyenv
/usr/local/bin/pyenv    # /usr/local/binにインストールされたことを確認
  • インストール可能なバージョンを確認

2.Xと3.Xの最新バージョンは、2.7.8、3.4.2の模様

$ pyenv install -l
  • インストール

2.7.8、3.4.2をインストール

$ pyenv install 3.4.2
$ pyenv install 2.7.8
  • 3.4.2を選択
$ pyenv global 3.4.2
$ pyenv versions
  2.7.8
* 3.4.2 (set by /Users/hoge/.pyenv/version)

環境設定

  • 編集:~/.bash_profile

以下を追記

if [ -d "$HOME/.pyenv/shims" ]; then
  export PATH="$HOME/.pyenv/shims:$PATH"
  eval "$(pyenv init -)"
fi
  • 読み込み: ~/.bash_profile
$ . ~/.bash_profile
$ which python
/Users/edo/.pyenv/shims/python
  • pip

標準でインストールされてた

$ ls ~/.pyenv/shims/pip*
/Users/edo/.pyenv/shims/pip /Users/edo/.pyenv/shims/pip2.7  /Users/edo/.pyenv/shims/pip3.4
/Users/edo/.pyenv/shims/pip2    /Users/edo/.pyenv/shims/pip3

ssh-copy-idで公開鍵登録

最近知ったのでメモ。

ssh-copy-idコマンドを利用することで、面倒な公開鍵登録が楽になる。

インストール

Linux系だと既にインストールされているかも

$ brew install ssh-copy-id
$ which ssh-copy-id
/usr/local/bin/ssh-copy-id

リモートホストのauthorized_keysに公開鍵を登録

ユーザ名: hogeリモートホスト名: remote-hostに登録する場合

$ ssh-keygen -t rsa  # 鍵を作成
$ ssh-copy-id -i .ssh/id_rsa.pub hoge@remote-host #鍵を転送
  • 手動で行う場合

いままでは下記の通り実施していた。

$ ssh-keygen -t rsa  # 鍵を作成
$ ssh hoge@remote-host "mkdir -m 700 .ssh"
$ cat ./.ssh/id_rsa.pub | ssh hoge@remote-host "cat >> ./.ssh/authorized_keys"
$ ssh hoge@remote-host "chmod 600 .ssh/*"

パスワード認証を止める設定

なお、sshdを公開鍵認証にするには下記の通り/etc/ssh/sshd_configを修正する。

PasswordAuthentication no
UsePAM no

Macでawkのstrftimeを使う(awk: calling undefined function strftime)

Macawkを使ったところ、strftime関数実行時に 「awk: calling undefined function strftime」というエラーがでた。

  • 調査

stackoverflowをみると、mac標準のawkでは無く、gawk使えと書いてある。

osx - Awk strftime on Mac OS X - Stack Overflow

  • gawkインストール

brewでインストールした。 (/usr/local/binにコマンドがインストールされたことを確認)

$ which awk
/usr/bin/awk   * Mac OS標準のawk
$ brew install gawk
$ which awk
/usr/local/bin/awk

が、改善しない。

$ awk 'BEGIN{now=strftime("%D", systime()); print now}'
awk: calling undefined function strftime
 source line number 1

明示的にgawkを指定した場合はOK...

$ gawk 'BEGIN{now=strftime("%D", systime()); print now}'
11/30/14

どうやらパスが違うらしい。

$ ls -l /usr/local/bin/awk
lrwxr-xr-x  1 edo  staff  28 11 30 06:46 /usr/local/bin/awk -> ../Cellar/gawk/4.1.1/bin/awk
$ which gawk
/usr/local/bin/gawk
$ ls -l /usr/local/bin/gawk
lrwxr-xr-x  1 edo  staff  29 11 30 06:46 /usr/local/bin/gawk -> ../Cellar/gawk/4.1.1/bin/gawk

awkコマンド指定時に、gawkを利用したいのでシンボリックリンクの向き先を変更したがNG

$ rm -i /usr/local/bin/awk
remove /usr/local/bin/awk? y
$ ln -si /usr/local/bin/gawk /usr/local/bin/awk
$ ls -l /usr/local/bin/awk
lrwxr-xr-x  1 edo  staff  19 11 30 06:50 /usr/local/bin/awk -> /usr/local/bin/gawk
$ awk 'BEGIN{now=strftime("%D", systime()); print now}'
awk: calling undefined function strftime
 source line number 1

シンボリックリンクを"/usr/local/bin/gawk"ではなく、gawkリンク元に向けたらOK

$ ln -si /usr/local/Cellar/gawk/4.1.1/bin/gawk /usr/local/bin/awk
$ awk 'BEGIN{now=strftime("%D", systime()); print now}'
11/30/14

ただ、これだとバージョンアップした時に厳しいので、aliasに入れて回避した。

alias awk='gawk'

はじめてのPostgreSQL(バージョン9.3)on Mac OS X

環境セットアップ〜起動まで

$ uname -a
Darwin mac-3.local 14.0.0 Darwin Kernel Version 14.0.0: Fri Sep 19 00:26:44 PDT 2014; root:xnu-2782.1.97~2/RELEASE_X86_64 x86_64

インストール

brew からインストールした。 インストールされたPostgreSQLのバージョンは9.3.5。

$ brew install postgres

インストール時にコンソール出力されたメッセージに従い、 下記コマンドを実行する。(postgres gemを使う場合のみ必要)

$ env ARCHFLAGS="-arch x86_64"

環境設定(~/.bash_profile)

環境変数を定義する。 PGDATAだけ入れておけば良さそうだけど諸々設定してみた。

export POSTGRES_HOME=/usr/local/opt/postgresql/
export PGLIB=${POSTGRES_HOME}/lib
export PGDATA=/usr/local/var/postgres
export PATH=${POSTGRES_HOME}/bin:${PATH}

環境設定(client設定: Autocommit)

デフォルトでは、autocommitがonになってしまうようなので変更する。 なお、サーバー側では指定できないため、クライアント側のpsqlrcファイルに定義する。

  • psqlrcの有効範囲
    • ~/.psqlrc 各ユーザに対して有効
    • ${POSTGRE_HOME}/etc/psqlrc システム全体にたいして有効 Redhat系だと「/etc/sysconfig/pgsql/psqlrc」あたり? rpm からインストールした場合は、/home/posgresql/.psqlrc に定義するでも良いかも。

なお、PSQLRC環境変数を指定すれば、対象ファイルは個別に指定できる。

参考: マニュアル

環境設定(~/.psqlrc)

今回は自分ひとりしか使わないので"~/.psqlrc"に設定する。 "psqlrc"でググっているとプロンプトとか色々設定したくなり、 ほぼYakst - PostgreSQLのコマンドラインの動きを改善してみるから拝借し、"~/.psqlrc"を作成した...

$ vi ~/.psqlrc


\set PROMPT1 '%[%033[1m%]%M %n@%/%R%[%033[0m%]%# '
\set PROMPT2 '[more] %R > '
\set AUTOCOMMIT off
\encoding utf8
\x auto
\set VERBOSITY verbose
-- デフォルトでは、NULLはスペースとして表示される
-- 空白なのかnullなのか?これで違いが見えるようになる
\pset null '[NULL]'
-- データベースごとにヒストリファイルを作る
\set HISTFILE ~/.psql_history- :DBNAME
-- 1行で複数回コマンドが実行されたら、1回だけヒストリに保存
\set HISTCONTROL ignoredups
-- キーワード(SELECTなど)を、小文字で入力し始めたとしても
-- 大文字に自動変換
\set COMP_KEYWORD_CASE upper
-- バージョン表示
\set version 'SELECT version();'
  • 動作確認
[local] user@db_hoge=# \set
AUTOCOMMIT = 'off'
HISTCONTROL = 'ignoredups'
PROMPT1 = '%[%033[1m%]%M %n@%/%R%[%033[0m%]%# '
PROMPT2 = '[more] %R > '
PROMPT3 = '>> '
VERBOSITY = 'verbose'
VERSION = 'PostgreSQL 9.3.5 on x86_64-apple-darwin14.0.0, compiled by Apple LLVM version 6.0 (clang-600.0.54) (based on LLVM 3.5svn), 64-bit'
DBNAME = 'db_hoge'
USER = 'user'
PORT = '5432'
ENCODING = 'UTF8'
HISTFILE = '~/.psql_history-db_hoge'
COMP_KEYWORD_CASE = 'upper'
version = 'SELECT version();'

操作編(起動)

https://www.postgresql.jp/document/9.3/html/server-start.html

自動起動設定は行わず手動起動する。 起動方法はいくつかあるようだが、以下を実行すればOK。

$ pg_ctl start -l /tmp/pg.log   # 停止は、"pg_ctl stop"

環境変数(PGDATA)がセットされてい場合は下記エラーとなるので、 "-D"オプションでパス指定、もしくは環境変数を設定する。

$ pg_ctl start -l /tmp/pg.log
pg_ctl: no database directory specified and environment variable PGDATA unset
$ pg_ctl start -D /usr/local/var/postgres -l /tmp/pg.log
  • メモ 以下でも同様の動きになる。 フォアグランドで実行されるので、バックグランドで動作するように"&"指定する。
$ postgres -D /usr/local/var/postgres >/tmp/pg.log 2>&1 &

参考URL

Macでシステムリソース状況を確認

備忘録

各リソースを確認(topコマンド)

  • CPU使用率の高いプロセスでソートして表示

    • topコマンドを実行
    • "o(オー)"を入力
    • "primary key [-pid]: "が表示されたことを確認
    • "cpu" を入力し、「Enter」キーを押す
  • Memory

上記と同様の手順を"cpu"から"mem"に置換

物理メモリ使用率

$ vm_stat 10 | awk 'NR>2 {gsub("K","000");print ($1+$4)/256000}'

以下URLからのコピペ

Monitoring CPU load and memory usage on Mac OS X command line (Terminal) | Walking in Light with Christ - Faith, Computing, Diary

Docker on CentOS7

CentOS7へのセットアップ

  • 環境 さくらVPSにCentOS7.0をインストール
$ cat /etc/redhat-release 
CentOS Linux release 7.0.1406 (Core) 

環境準備

  • サービス停止 本来は設定したほうが好ましいが手順をスキップするため、FirewallとSelinuxを停止
# systemctl stop firewalld.service
# systemctl disable firewalld.service
# vi /etc/selinux/config 
〜中略〜
SELINUX=disabled
〜中略〜
# fdisk /dev/vda
 〜中略〜
# mkfs.ext4 /dev/vda4
# tune2fs -c 0 -i 0 /dev/vda4
# tune2fs -L docker /dev/vda4
# echo 'LABEL=docker   /var/lib/docker    ext4     defaults   0 0' >> /etc/fstab
# mount /var/lib/docker/
# df -h /var/lib/docker
# chmod 700 /var/lib/docker

Dockerセットアップ

  • インストール EPELでなく、CentOS標準リポジトリからダウンロードできるようになった模様
$ sudo yum install docker
  • バージョン確認 1.2.0がインストールされた。
$ docker --version
Docker version 1.2.0, build 2a2f26c/1.2.0
  • Docker設定変更 ホストOSではSelinuxを無効化しているが、 dockerのデフォルト起動オプションがselinux有効になっている。 気持ち悪いのでオプション変更(--selinux-disabled)したら起動に失敗...
$ cat /etc/sysconfig/docker
 〜中略〜
OPTIONS=--selinux-enabled

ちなみに起動時のオプションを変更する場合は下記ファイルを変更すれば良さそう(動作確認は未実施)

$ cat /usr/lib/systemd/system/docker.service
  • サービス有効化
$ sudo systemctl list-unit-files | grep docker
docker.service                              disabled 
docker.socket                               disabled 
$ sudo systemctl enable docker.service
$ sudo systemctl start docker.service
$ sudo systemctl list-unit-files | grep docker
docker.service                              enabled 
docker.socket                               enabled 
  • インストール状態確認
$ sudo docker info
Containers: 0
Images: 0
Storage Driver: devicemapper
 Pool Name: docker-253:4-4456449-pool
 Pool Blocksize: 64 Kb
 Data file: /var/lib/docker/devicemapper/devicemapper/data
 Metadata file: /var/lib/docker/devicemapper/devicemapper/metadata
 Data Space Used: 293.0 Mb
 Data Space Total: 102400.0 Mb
 Metadata Space Used: 0.7 Mb
 Metadata Space Total: 2048.0 Mb
Execution Driver: native-0.2
Kernel Version: 3.10.0-123.9.3.el7.x86_64
Operating System: CentOS Linux 7 (Core)