python-pptxでいろいろ捗りそう

化合物の番号リストを入れたらデータベースからデータ取ってきて良い感じに並べて表にしてみたいな、サマリーを自動で作りたい。

あんな苦行みんなよくやるなぁと思っていたら、実際はみんなぶつくさ言いながらやってた。

pptxなんてxmlをzipで固めたやつだから展開して中のXML書き換えてまたzipで戻すサービスつくればいいじゃんと思いついたので作ってみたんだけど、なんかいまいちだったので放置してあった。

  • テンプレートのメンテどうすんだよ?
  • カラムの属性どうやって管理すんだよ?(実際は転置してあるので一番左の列)

前者に関してはpython-pptxというパッケージがあるらしいのでこれを使えば解決しそう。ドキュメント読んだけど表の作り方は分からなかったのでソース読めばいいのかな。

問題は後者だけどどうしようかなー。

ぼくのかんがえるさいきょうのにほんしゅのえらびかた

おすすめリスト的なものも取っ掛かりとしては悪くはないけれど、そういうカードコンプを目指すようなやり方はだんだん入手難易度が高くなってきて、アレな方向に行ってしまいがちなので気をつけましょう。

ここで紹介するのはレコ屋に行って掘れよというような日本酒の探しかたです。いいレコ屋にはいいヴァイナルが集まる。つまりはそういうことです。

rec

よい酒屋をみつける

よいsakeライフをおくるには、よい酒屋とつきあうことが大切です。ネット通販は便利だけど、酒屋の顔が見えにくい(逆もまた真)ので最近は遠慮しています。近くに地酒をメインでやっていて、ネット通販してない酒屋があればのぞいてみるといいかもしれません。

酒屋はセレクトショップ

地酒専門で扱っていても売り方にはかなり差があります。品揃え重視で自分の欲しいものを選んで普通に買うところから、酒を店頭にほとんど並べておらず、店主と話をしながら「今回はこんなのどうやー?」って選んでくれるとこまで様々です。

個人的には後者のタイプの売り方が好きです。そういうタイプの酒屋は誰が何を買ったか記憶(記録)しているし、好みではなかった旨を伝えるとそれを考慮したオススメを提示してくれます。こういう売り方のいいところは、自分の味覚のマップが構成され、酒飲み的にも成長するので、初めて飲む日本酒も自分のなかで位置付けやすくなることです。

それから酒質の好みが変化した時も理解しやすい。まぁ最初は、フルーティーで吟醸香があってわかりやすい日本酒を好むと思いますが、そのあと、飲み飽きしないとか酸強めがいいとか、燗上がりする酒をじっくり味わいたいとかまぁ色々でてきますからね。

余談ですが、僕も最近ダブステップの良さが分かるようになりました(ドラムステップのほうが好きだけど)。というようにコンテクストによって好きな酒質をチョイスできるとハッピーなのはmusicも日本酒も一緒です。

蔵元を呼ぶ酒の会は素敵

地酒に熱心な酒屋さんはたまに扱っている銘柄の蔵元さんを呼んで酒の会を開くことがあるので、参加するといいことが多いです。

  • 飲み比べができる
  • そもそも話が面白い
  • 料理が美味い
  • 仕込み水
  • 出品酒とか出てくると

自分で同じ銘柄の種類を揃えて飲み比べることなど殆どないですし、燗すると美味しくなる酒だと蔵元さん自ら燗付けてくれたりするので勉強になります。味の変化を予想しながら燗をつけるのは知的なクイズっぽくて面白いので結構はまります。

それから、仕込み水がチェイサーとして出されることが多いですが、それが美味い。

ああいう会は日本酒の裾野を広げようという意味合いもあるので、初参加とか日本酒最近デビューなんですよーという感じだと超歓迎されるかと思うので、積極的に参加してみてください。

杜氏の世代も気にかけておくとよい

日本酒も作り手によって出来もかわってくるので、杜氏が変わったという情報は重要だったりしますが、ここではそういうマニアックな探し方ではなく、単に自分と同年代の杜氏が醸した日本酒を探すという方法です。杜氏の年齢なんてわからんわーと思われがちだけど、以外にブログを書いているヒトは多いし、酒屋が教えてくれることも多いですね。ラベル見て判断できることもありますが。

酒屋さんもそういう酒を揃える傾向があるかと思うのだけど、どういう酒を作りたいかというのは体験に左右されるからなんじゃないかなぁと思っています。それからぱっとしない蔵元さんでも代が変わると造りがガラッと変わることが多いですが、代が変わるってことは若い人に変わるっていうことだから、そういうお酒は酒屋さん経由でゲットすることが多いですね。

他には若手の夜明けっていう若手蔵元の試飲会なんかを手がかりにするのもいいかもしれない。

結論

いい酒屋と酒飲み友達をみつけよう。酒飲みながら書いてるからあんまり推敲してないし、丁寧にかいたほうがいいことも書いてないかもしれないけどまぁいいや。

要するにレコ屋のノリで酒屋を探して、同じような趣味の酒飲み仲間をつくればハッピーですよということです。

余談

今飲んでるのは澤の花 花あかり純米吟醸無ろ過生原酒。フレッシュふわり系

1365154679

昨日まで飲んだのが天の戸美稲純米80。フレッシュ旨い系

1365154680

WHAT I'VE ALWAYS WAITED FOR

Nu:Logicのアルバム

ProductName WHAT I'VE ALWAYS WAITED FOR
NU:LOGIC
OCTAVE / HOSPITAL RECORDS / 2300円 ( 2013-04-03 )


まぁまぁかな。Morning Lightは良かった。

docoptでCLI用のオプションを記述するのが良い感じ

python-livereloadのソース読んでたらdocoptというモジュールを使っていて、「optparseでもargparseでもないのか、なんだこれ?」と調べてみた。

optparse,argparseのようにオプションを登録してhelp,usageをつくるのではなく、helpの文字列からオプションをparseして組み立てるものだそうだ。

Command-line interface description language(CLI記述言語)と銘打っているので、python限定というわけではなく、Ruby,CoffeeScript,PHPなんかにも実装があるようだ。

cmd = """Python LiveReload

Usage:
    livereload [-p <port>|--port=<port>] [-b|--browser] [<directory>]

Options:
    -h --help                       show this screen
    -p <port> --port=<port>         specify a server port, default is 35729
    -b --browser                    open browser when start server
"""

def main():
    args = docopt(cmd)
    port = args.get('--port')
    root = args.get('<directory>')
    autoraise = args.get('--browser')

使い方は簡単で、ヘルプの文字列書いたらdocoptに食わせるだけ。どの言語でも同じようにヘルプを書けるので嬉しいかも。積極的につかっていこうっと。

日本語の分かりやすい説明もあった。

D3をはじめようを快適に写経するためにlivereloadを使って更新時にブラウザをリロードする

日本語の入門書はD3をはじめようがあるけど、ほんのさわりだけなので、日本語の簡単なチュートリアルが読みたいというヒト以外には積極的に読む必要性を感じないかな。ただ、あのイディオム(selectAll().data().enter()ってやつ)とメソッドチェインに慣れてないのだったら読んだほうがいいのかなぁ。日本語のほうがわかりやすいしなぁ。

ちゃんと読むつもりならInteractive Data Visualization for the Webのほうが良いと思う(まだ書評かいてないけど)。

ProductName Interactive Data Visualization for the Web
Scott Murray
Oreilly & Associates Inc / 2997円 ( 2013-04-02 )


javascriptを書き写すだけなのはつまらなかったのでcoffeescriptで書いたのと、coffee --watchだとコンパイル時にブラウザリロードしないのでlivereloadを使った。

Guardfileはこんな感じ。更新されたファイル名をfuncに渡せないのでハードコードしている。

#!/usr/bin/env python

from livereload.task import Task
import logging

def coffee():
    from subprocess import Popen, PIPE
    argv = ["/Users/kzfm/.nvm/v0.8.10/bin/coffee", "-c", "-m", "js/mean.coffee"]
    p = Popen(argv, stdin=PIPE, stdout=PIPE, stderr=PIPE)
    stdout, stderr = p.communicate()
    if stderr:
        logging.error(stderr)

Task.add('js/mean.coffee', coffee)

あとは編集してセーブすると自動コンパイルして、ブラウザもリロードしてくれる。

livereload_coffee

izooで爬虫類を抱っこしまくってきた

子供の春休みと我々のお疲れ会を兼ねて東伊豆に泊まりにいってきた。

ついて早々、磯にいそいそと出かけて行ってヤドカリ捕りをしていた。

1364712736 1364712734

夕食、舟盛りっぽいもの

1364712738

鰆と金目鯛の煮付け

1364712739 1364712741

八寸

1364712742 1364712744

温泉卵とかと、金目鯛の味噌漬けを焼いたもの

1364712745 1364712747

翌日はIZooへ。体験型と銘打っているだけあって、いろいろすごかった。

1364712750

まずはパイソン、右はカエル。ほぼ全て爬虫類です。

1364712752 1364712753

昔流行ったエリマキトカゲだが、抱っこできます。右が娘が抱えているエリマキトカゲ。

1364712755 1364712757

蛇とかサソリとか色々いた。

1364712758 1364712760

カメも触りまくり、トカゲも抱っこできる

1364712761 1364712763

カメに餌やりもできる。

1364712765

爬虫類好きにはたまらない施設だな。

次の静岡Developers勉強会は入門機械学習の読書会です

前回のHTML5から本が決まらず1年以上のブランクがありましたが、入門機械学習を読んでいくことになりました。

1364714609

ひと通り読んだところ、こんな感じの本なので、機械学習に興味があるヒトには面白いかなと。

というわけで参加をお待ちしています。

Cscope

この間の三島Haskellで@karky7にcscopeを教えてもらったので、朝からいじっていたのだけどetagsとの違いがよく分からなかった。規模がでかいとこっちのほうがいいのだろうけど、.emacsにいちいち書かないといけないのが面倒くさそうだなと思ったが、virtualenvで作った仮想環境のlibを登録してしまえばいいのかなぁ。

pydocかpypiで気軽にソースコードが見られるようになっていればなぁと思う

HaskellのHackageだと関数ごとにソースコードへのリンクがついていて便利。

Pythonで似たことやりたい時には、(pypi上ではソースコードを読めないので)、pydoc -pでブラウザからアクセスすればいいと思うのだけど

  • htmlがケバい
  • トップにもとのファイルの参照があるだけで個別のメソッドのコードを気軽に参照出来ない
  • しかもfile://のリンクはchromeでは効かない(解決方法)し、サーバーだとアクセスできなくて面倒くさい

という状況なのでgit cloneしたコードをtmpディレクトリに置いてEmacsでetags付けて参照しするのが僕の最近のデフォなのだけど、さすがに効率悪いよなぁと思っているので改善したい。

なんかいい方法はないものか。

型システム入門がきた

頑張って読んでいこうかと。

1364542311

ProductName 型システム入門 −プログラミング言語と型の理論−
Benjamin C. Pierce
オーム社 / 7140円 ( 2013-03-26 )