Install Netatalk to OpenIndiana

どうにも TimeMachine のバックアップが遅くなって調べていたら Netatalk の 3 系がリリースされていたので、折角なのでアップデートしてみた。

http://hatx.blog.so-net.ne.jp/2012-04-25 を参考にした。

まずはデーモンを止めて、バックアップをとっておく

$ sudo /etc/rc2.d/S90netatalk stop
$ sudo cp -r /usr/local /usr/local.sv # 他に /usr/local 以下にインストールしていないので、これでよし。

Berkeley DB のアップデート。
http://www.oracle.com/technetwork/products/berkeleydb/downloads/index.html からダウンロード。5.3.21 にした。

$ tar zxvf db-5.3.21.gz 
$ cd db-5.3.21
$ cd build_unix/
$ ../dist/configure --prefix=/usr/local
$ make
$ sudo make install

Netatalk 本体のインストール

$ tar jxvf netatalk-3.0.1.tar.bz2 
$ cd netatalk-3.0.1
$ ./configure --with-init-style=solaris
$ make
$ sudo make install

Netatalk (afpd) の設定。こんなかんじにした。Time Machine にしか使わないので [Homes] とかは定義していない。

$ cat /usr/local/etc/afp.conf 
[Global]
        mac charset = MAC_JAPANESE
        log file = /var/log/netatalk.log
        vol preset = my default values

[my default values]
        file perm = 0400
        directory perm = 0700

[Time Machine]
        path = /pool2/for_backup
        time machine = yes

デーモンの起動設定と古い起動スクリプトは消しておく。

$ sudo svcadm enable svc:/network/netatalk:default
$ sudo rm /etc/rc2.d/S90netatalk
$ suro rm /etc/rc0.d/K04netatalk

SublimeText2 で Python 用に設定したこと

インストールしたパッケージ

  • Python PEP8 Autoformat:
    • ctrl + shift + r で実行、のはずなんだけど動かない.. 使うのやめた
  • Python PEP8 Lint:
    • Command + Ctrl + 8
    • 一旦ファイルを保存しないと動かない。sspy していてもダメ。
  • PythonOpenModule:
    • Command + Shift + O
    • モジュール名を入力するとそのモジュールのファイルを表示する
  • SublimeCodeIntel
    • インストールした後、一旦 ST2 を終了、rf -r ~/.codeintel/ する必要があった
    • 例えば os. まで打ったときに abort, access, .. を補完候補に出してくれる or Command + J
    • メソッドの引数まで展開してくれると嬉しいんだけど...

設定

タブを空白に展開。
ビルド用のコマンドを Homebrew でいれた Python に変更。

$ cd ~/Library/Application\ Support/Sublime\ Text\ 2/Packages/User/
$ more Python.sublime-settings
{
        "tab_size": 4,
        "translate_tabs_to_spaces": true,
        "indent_to_bracket": true
}
$ more Python.sublime-build 
{
        "cmd": ["/usr/local/bin/python", "-u", "$file"],
        "env":{
                "PYTHONPATH": "/usr/local/lib/python2.7:/usr/local/lib/python2.7/site-packages"
        },
        "selector": "source.python"
}

リファレンス: http://www.sublimetext.com/docs/2/indentation.html

OS の設定

.py なファイルを SublimeText2 に関連付け。

SublimeText2 のビルドコマンドを変更する

こんなかんじに Packages/User/ 以下にビルドルールをつっこむ。

$ more ~/Library/Application\ Support/Sublime\ Text\ 2/Packages/User/Haskell.sublime-build 
{
        "cmd": ["/tmp/ghc/bin/runhaskell", "$file"],
        "selector": "source.haskell"
}

ファイルを置くと "Tools" > "Build System" から haskell が選択できるようになっている。

これで Command + B でビルドが始まる。

リファレンス: http://docs.sublimetext.info/en/latest/reference/build_systems.html

Homebrew にパッケージを追加

Homebrew にパッケージを追加したときのメモ。

https://github.com/mxcl/homebrew/wiki/Formula-Cookbook のとおりに。

$ brew create http://prdownloads.sourceforge.net/docutils/docutils-0.9.1.tar.gz
$ more Library/Formula/docutils.rb 
require 'formula'

class Docutils < Formula
  homepage 'http://docutils.sourceforge.net/'
  url 'http://prdownloads.sourceforge.net/docutils/docutils-0.9.1.tar.gz'
  version '0.9.1'
  sha1 'c55d1ccabe2de82dd93d0f14884d07bbe10a3d40'

  def install
    system "python", "setup.py", "install", "--prefix=#{prefix}", "--install-scripts=#{prefix}/bin"
  end
end
$ brew install docutils

pull request を送る。あらかじめ github で https://github.com/mxcl/homebrew を fork しておく。

$ brew update
$ cd `brew --prefix`
$ git checkout -b docutils
$ git branch

docutils

master $ git add Library/Formula/docutils.rb $ git commit -m'docutils 0.9.1' $ git push --all git@github.com:/homebrew.git
コミットログは "パッケージ名" + "バージョン番号" がよろしいようだ。 あとは github から pullrequest をするだけ。 ただ、pythonruby のパッケージは pip とかで入れればいいじゃんということらしいので、ここまで。

Sublime Text 2 を使ってみた

軽いし見た目いいしで、しばらく使ってみることにした。Python で拡張できるのもいいね。

インストールしてからやったこと

Sublime Package Control のインストール

Sublime Text のパッケージマネージャ。パッケージのインストールが簡単になるので、まずはこれを入れるものらしい

http://wbond.net/sublime_packages/package_control/installation にあるとおり、

  • Ctrl + ` でコンソールを開く
  • 以下を実行する
import urllib2,os; pf='Package Control.sublime-package'; ipp=sublime.installed_packages_path(); os.makedirs(ipp) if not os.path.exists(ipp) else None; urllib2.install_opener(urllib2.build_opener(urllib2.ProxyHandler())); open(os.path.join(ipp,pf),'wb').write(urllib2.urlopen('http://sublime.wbond.net/'+pf.replace(' ','%20')).read()); print 'Please restart Sublime Text to finish installation'
  • Sublime Text 2 を再起動する

これだけ。簡単だ。

パッケージのインストール

  • Shift + Command + p
  • "install" あたりまで入力すると "Package Controll: Install Package" が補完されるので Return で確定
  • 数秒待つ
  • パッケージ一覧が表示される
  • インクリメンタルサーチができるので、インストールしたいパッケージを探す
  • パッケージの更新は "upgrade" っぽい (まだアップデートされたパッケージが無いので試してない)

インストールしたパッケージ:

  • git
  • SideBarGit: サイドバーで右クリックから git コマンドが実行できる
  • SidebarEnhancements: サイドバーで右クリックメニューが増える
  • Python PEP8 Autoformat: Shift + Ctrl + R で PEP8 に沿ったフォーマッティングをしてくれる
  • PythonTidy: これも自動フォーマットしてくれる。PEP8 Autoformat と違って入力中に勝手にフォーマットしてくれる そんなことなかった...
  • Python Open Module: sys.path を見てモジュールのソースコードを表示してくれる。Shift + Command + O
  • google-search: なぞって右クリックすると "Google Search" できる
  • Restructured Text (RST) Snippet:
  • SublimeRope: Python用。ST2 の補完がもっと賢くなる http://www.sublimetext.com/forum/viewtopic.php?f=5&t=1866

vi ライクなキーバインドにする

vi なキーバインドにしていると、ST2の便利なショートカットキーがつぶされてしまってかえって不便だったのでやめた。

  • "Preferences" -> "Settings - Default" を選択する
  • "ignored_packages": ["Vintage"] の行を "ignored_packages": [] にする
  • 保存 (Command + s) して再起動

Goto Anything

command + P: 開いているファイルを選択できる。さらに...

  • @: クラスや関数などの一覧を表示
  • ":": 行番号にジャンプ
  • hf:10: hoge_fuga.py の 10 行目にジャンプ。@ も同様

基本的な操作はそれっぽくできるようだ。

TODO

  • 補完リストへの追加。os. まで打ったら os.system とかを補完候補に出したい
  • Pluginが参照する PYTHONPATH の指定方法を調べる。/usr/local/lib/python 以下を使わせたい

PyCon JP 2012 のメモ

参加したセッションから

python 開発環境

alnair

Sphinxにおけるdocutilsの役割

Clime: With A Line, Convert Your Functions into a Multi-Command CLI Program

unittest嫌いがunittestをtesting

Python 製ビルドツールのススメ

Tornadoで分散KVSフレームワーク

What Makes Pyramid Unique!

セッションかぶって見れなかったリスト