less-css-modeを入れた

最近Twitter-Bootstrapを使っているのでEmacsのLESSモードが欲しくなった。

site-lispでgit cloneしたら

(setq load-path (cons "~/.emacs.d/site-lisp/less-css-mode" load-path))
(setq exec-path (cons (expand-file-name "~/.nvm/v0.8.0/bin") exec-path))
(require 'less-css-mode)

Flymakeも走るので快適だ。

less-css-mode

SphinxでMSWord(docx)ファイルを出力する

sphinx-quickstart でスキャフォールドを作成したら、sphinx-docxbuilderエクステンションを使えるようにするためクローンする

mkdir exts
cd exts/
hg clone https://bitbucket.org/haraisao/sphinx-docxbuilder

conf.pyの15-30行目あたりを編集

sys.path.insert(0, os.path.abspath('exts'))

# -- General configuration -----------------------------------------------------

# If your documentation needs a minimal Sphinx version, state it here.
#needs_sphinx = '1.0'

# Add any Sphinx extension module names here, as strings. They can be extensions
# coming with Sphinx (named 'sphinx.ext.*') or your custom ones. 
extensions = ['sphinx-docxbuilder']

Makefileにdocx用の設定を追加

docx:
    $(SPHINXBUILD) -b docx $(ALLSPHINXOPTS) $(BUILDDIR)/docx
    @echo
    @echo"Build finished. now you can process the docx file. $(BUILDDIR)/docx."

文書を作成してみる

make docx

おお!

sphinxでdocx

業務の文書をMSWordで提出しないとだめいうカルチャーの会社は多いと思うが、文書がフォルダに収められた後に、実際に再利用されるのを見たことがある人は少ないはず(探すの面倒だし)。

そういう場合にはReSTで書けるWIKIなんかを使うと常に参照できるうえに必要に応じてレポーティング出来ていいよねと思うのだが。僕はそういうスタイルでやっていたが超快適だった。

この快適さをmoin2+Sphinxで再現したい。

三島Haskell無名関数の会

主催者がHaskellerではないので「三島Haskell無名関数の会」と銘打ってますが、正確には三島λerの会です(嘘です)。

というわけで、Haskell (とPython)でおおいに盛り上がりましょう。

λ.ΣπとかいうHaskellとPythonを主軸にした地域コミュニティでもつくるかっていう話をしてこようっと。

ブルーオーシャン戦略を知っているからってどうなの?という

戦略として周知されてしまったら、知らないと大損するだけで知っているからアドバンテージが生じるという話にはならんと思うが。

ProductName ストーリーでわかる! ブルー・オーシャン戦略実践入門
安部 徹也
日本実業出版社 / 1575円 ( 2012-06-07 )


内容はよくまとまっているので、速読にちょうどよかった。

  • BOIインデックス
  • セグメンテーションではなく脱セグメンテーション
  • 効用マップ(シンプル、利便性、生産性、リスク、楽しさ、環境)

ブルーオーシャンとかレッドオーシャンとか表現すると、まだ見ぬ土地が眠っているみたいに錯覚するけど、レッドを突き詰めて考えていった結果新たな視点が開けるみたいな、視点の転換と新たな顧客想像の結果がブルーだったっていうだけの話で、プロスペクティブにやれんのか?という疑問はつきまとうなぁ。

メディシナルケミストリー系の論文のresult&discussionみたいだw

Titanium Mobileでtwitterクライアントを作ってみた

Twitterクライアントの作成をアプリ作成の入門にするのも下火になりそうだし、面倒くさくなる前に作ってみた。お盆のあたりからだらだらコードを写経してたので1ヶ月もかかったが、3,4章のTwitterクライアントまではできた。

4-3-2で紹介されていたキーボードツールバーが動かなくて困ったが、元のソースコードをコンパイルしても動かなかったので、バージョンの関係かなとさらっと流すことにした。

5章は食べログAPIを使ったアプリの開発なのでこれも楽しみ。

それから、function(){}とか()();とか毎回書くのもだるいので写経が終わったらCoffeeScriptで書くことにした。

Git+Sphinxでサイト管理のベストプラクティスがわからないなぁというはなし

@ando_ando_andoに呼ばれてコミュニティfでSphinxサイト構築の手伝いをしてきた。彼のためのGit入門サイトが出来てたのを本人に教えてもらったのだけど、alias切ってなくてstatusとかcommitとかフルで手打ちしてたので、上の4つくらいはやっておいたほうがいいんじゃないかなぁ(と今思った)。

ついでに、@ando_ando_andoの「静岡の東部にはHaskellerが多い」という主張を検証するために、今週末に香香飯店あたりで集まって飲むことになったので、参加される方がいれば連絡してください。

Git+Sphinxでサイト管理

さて、彼はインフラエンジニアなので、作業メモとかblockdiagで描いた図なんかを手元で編集して、さくらのVPSで管理したいそうだ(GithubPagesでいいじゃんって言ったら、認証かけたいからそれはダメらしい)。

サイト構成

  • _build/html/*もGit管理
  • 共有リポジトリはベア(git init --bare)

という状態にして、サーバー側にGitの共有リポジトリ置いて、プッシュしたタイミングで公開サイトのほうも更新するようにフックを設定しておけばいいよねーという僕の提案に対し

サイト構成

pushしたらpullするようにフックを設定すると、もとのrstとかMakefileがサイトのディレクトリに含まれてしまい美しくない。_build/html以下のファイルだけを公開サイトに置きたいと言い出した

ここから、ちょっとハマった。

bareをやめる(失敗)

_build/html以下のみを公開するんだったら、サーバー側にpushした後に、一回cloneとかpushして作業ディレクトリを作ってからcpするなりしないといけないということなので、最初からbareオプション付けないで共有リポジトリ設定すればいいんじゃないと。

これは見事に失敗する

remote: error: refusing to update checked out branch: refs/heads/master
remote: error: By default, updating the current branch in a non-bare repository
remote: error: is denied, because it will make the index and work tree inconsistent
remote: error: with what you pushed, and will require 'git reset --hard' to match
remote: error: the work tree to HEAD.

メッセージ見たら、まぁそうだよなと思った。なので、これは却下した。

一回別の場所にclone(pull)してその後必要な物だけcp

結局サーバーにもクローンを作って_build/html/*を/var/www/html以下の適当なディレクトリにコピーするようにした(今ココ)。

サイト構成

手でコマンド叩いたけど、フックに書いておけばいいかな。

scpする(番外)

単にbuildしたやつをscpすればいいんじゃない?ってことで

サイト構成

を提案してみたが、彼の美意識にそぐわなかったのかボツった。

まとめ

cpするためだけにサーバー側に作業リポジトリを作っておくというのはなんとなく気持ち悪いんだけど、他にいい方法ないのかな?

Makefile書き換えて/var/www/htmlにbuildするようなオプション付けておけば、そもそも_buildをGitで管理しなくていいだろうとも思うんだけど、そこらへんの管理のさじ加減みたいなのもちょっと自信がない。

ToDo

Pythonプロフェッショナルプログラミングになんかヒントっぽいもの書いてないかなぁと読みなおす。

ProductName Pythonプロフェッショナルプログラミング
ビープラウド
秀和システム / 2940円 ( 2012-03-26 )


参考

ProductName Gitポケットリファレンス
岡本 隆史
技術評論社 / 2604円 ( 2012-07-10 )


ProductName エキスパートPythonプログラミング
Tarek Ziade
アスキー・メディアワークス / 3780円 ( 2010-05-28 )


PyConJPのSphinxのセッションのスライドを見た

2日目の途中で帰ってしまったので、朝コーヒーを飲みながら、残りのスライドを眺めてた。

HTMLテーマの拡張の話Docutilsが参考になった。

そういえば二年くらい前に原稿書くときに使ったときはwordに出力するのに難儀したけど、今はdocxに出力できるらしいので、MSWORDな会社でも安心して使えますね。さらにmoin2を組み合わせれば、普段はWikiで使いつつ、必要に応じてSphinx経由で好きな書式で文書出力ってのもやりやすくなるだろうし。

パーマカルチャーとは持続可能な農的暮らしのことなのか?

パーマカルチャーには農業的な要素は外せないのかな?まぁ生きることは食べることなのでそうなんだろうが。

ProductName パーマカルチャー菜園入門

家の光協会 / 1575円 ( 2010-07-27 )


パーマカルチャーは、石油などの化石燃料に多くを依存する暮らしを改め、太陽の恵みを十分に活用して環境にやさしい循環型の社会を築くという思想です。

エッジ効果という考え方は面白かった。つまり異なる環境が接する縁に豊かな生態系が生成するということであるが、汽水とかをイメージするとわかりやすい。

それから小規模集約システムという考え方も参考になった。

SQLAlchemyのmany-to-manyであるタグを含むエントリをフィルタする方法

単にタグを含むエントリを取ってくる場合にはこうやればいいんだけど、さらに絞り込む場合にどうやればいいのか悩んだ。

filter(Entry.tags.in_(tags))

とかやったら、

"in_()" operator is not currently implemented for many-to-one-relations

みたいなエラーが出てきたので、グーグル先生にお伺いを立てたら解答が見つかった。

というわけで

Entry.query.filter_by(status=1).filter(Entry.tags.any(Tag.id.in_([tag.id])))

という感じで、anyとin_を組み合わせるのがいいらしい。

もう少し精進せなアカンなと。

ProductName Essential Sqlalchemy
Rick Copeland
Oreilly & Associates Inc / 2556円 ( 2008-06 )


結局こういったあたりで悩むんだったら、最初からpymongoでいいんじゃなかろうかと思ったりするんだけど、Flask-SQLAlchemyが便利すぎなのでなかなか悩ましいところ。

Python Testing Cookbook

Python Testing: Beginnerと同時期に買って一緒に読んだのだけど、書評を書いてなかったので今更ながら書いてみた。

ProductName Python Testing Cookbook
Greg Lee Turnquist
Packt Publishing / 3770円 ( 2011-05-30 )


Python Testing: BeginnerはユニットテストとかTDDの習得に主眼を置いているのに対し、本書はもうちょっと広くて高度な内容を取り扱っている。

BDDとか受け入れテストとか(Jenkinsを使った)継続的インテグレーションとかテストのカバレッジとかスモークテストなんか。

最終章の「良いテストの習慣」はなかなかいい言葉がまとまっている(ような気がする)

  • Something is better than nothing
  • Coverage isn't everything
  • Be willing to invest in test fixtures
  • Harvesting metrics

こんなかんじで12の習慣が。

個人的に良かったのがBDDの章であった。本書ではnose+mockitで説明されてた。ちなみに僕はpyVowsを使っています(Node.jsにVowsがあるので)。

それからlettuceの説明もよかった。これはちょっと試しただけで全然使ってないけど、そろそろ真面目につかうことになりそうだ。

というわけで、両方とも役に立っている。

ProductName Python Testing: Beginner's Guide
Daniel Arbuckle
Packt Publishing / 3220円 ( 2010-01-31 )