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にアップする事をゴール設定とした。
使用環境
-
$ 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は 4.4 Luna 。
環境設定
Sphinx Install
Eclipse Setup
参考URL
Eclipse Marcketplaceから"ReST Editor"を入力
Menu画面から[Run] - [Run Configuration]
左メニューから[Sphinx (via make file)] - [new configuration]を選択
Mainタブのプロパティ修正
- Name
- 任意の値に変更
- Working directory
- Sphinx output
- "html"にチェック ※html以外を生成する場合は別途変更
- Name
Environmentタブのプロパティ修正
Newをクリック
PATH変数を追加
Eclipseプロジェクト作成
[File] - [Other] を選択
[ReST Editor] - [Sphinx project] を選択
ウィザードに従いインストール
適当に次へでウィーザードを進める。AuthorsやVersion、Language等は環境に合わせて。なお、HTMLテーマは標準インストールのものしかウィーザードでの選択はできない。
プロクジェクト完成
Python設定
以下追加設定。
プラグイン(Pydev)をインストール
eclipse marketplaceからPyDevをインストール
-
メニューバーから[Eclipse] -[環境設定]を選択
左メニューから[PyDev] - [Interpreters] - [Python Interpreter]を選択
Pythonのパスを選択
ライブラリがロードされていることを確認
ドキュメント作成(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ブラウザからのプレビューでは表示される。)
conf.pyのthemeを"bizstyle"から"default"に戻したらサイドバーも表示できた...
最後に
再入門という記事タイトルにしたが、環境周りのセットアップ記事で終わってしまった。
引き続き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)
Macでawkを使ったところ、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
環境セットアップ〜起動まで
- Mac環境
$ 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環境変数を指定すれば、対象ファイルは個別に指定できる。
参考: マニュアル
環境設定(~/.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
- オンラインマニュアル(psql) PostgreSQL: Documentation: 9.3: psql
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からのコピペ
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セットアップ
$ 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)