moin2はFlaskベース

コミュニティーベースのコラボレーションツールを探している。

個人的にはSphinxのWeb Supportがいいんじゃないかと思っているんだが、うちのITリテラシーを考えるとちょっと無理すぎるかなぁと断念した。

論文が電子化されているけどpdfは単なる紙の模倣でつまんないがHTML化されてパラグラフ単位とかfigure単位でコメントしたり編集できたりすれば、レビューも作りやすいし、実験はいいけど解釈はクズみたいなトータルでの判断に悩むような論文も切り取れるし、レターみたいな内容が薄いんだか知識を入れ込めなかったんだか分からないような中途半端な文章も好き勝手に補足できる。つまり真のマッシュアップが待っているわけです。

単語に分解して相関を取るとかそういうのとは逆方向に、文脈をつなぎあわせてより抽象とか本質を目指すようなことがやりやすくなるわけですな。正直論文の最後に載っているリファレンスは、島根の場所が知りたいのに日本のあたりを指してるわけで残念な仕組みだよなと思ってるのでもう少し、位置情報を高精度化すれば面白いのにとずっと思っているんだけどなかなかそうはならないのはみんな著者のストーリーを読むのが好きなのかね?他人事なのでどうでもいいけど。

で、音でいうところのサンプリングというか、パラグラフ単位でコメントを入れられる仕組みっていうのは未来があると思っている、RWHで未来を見たというかちょっと感動した。まぁ、そういうのをイントラに構築できたら良かったんだけど現状は難しそうだ(ヨーヨーヨー)。

かといってwikiはなぁ、、、Sphinxっぽく文書出力できる良い感じのwikiが欲しいなぁと思いながら調べていたらmoin2がFlaskベースでフォーマットの変換がしっかりしてそう。ReSTでもOKなのでSphinx->pdfってのもやりやすそう。

moin2

あとは知っているフレームワークなので手を入れやすそうってのもある。化学構造のエディタとか組み込まないといけないし。それからmoin2のソースコード読むのも勉強になるし、モチベーション的にもよろしいです。

まぁそんな感じで今年は、wikiベースの創薬用コラボレーションツールを作ってみるかなと。

今年ブログにつけたタグを数えた

今年は640エントリ投稿してた。

エントリについたタグをカウントして多い順に並べてみた。

宣言通りにjavascriptを重点的に学んだ気がする。

tw11128

ちなみに、タグとそのカウントの辞書を作った後に、itemでソートしたい場合にはちょっとめんどくさかった。

for k,v in  sorted(tag_table.items(), key=lambda (k, v): (v, k), reverse=True):
    print k,v

来年はAndroidかなぁ

PyPy速いね

PyPyが動くようになったので。

SlidePuzzleの3x3(57問)を解かせてみた

cPython

real    3m40.901s
user    3m29.312s
sys 0m0.749s

pypy-1.7

real    0m24.389s
user    0m24.114s
sys 0m0.236s

pythonをpypyに変えるだけで(ソースコードを変更することなく)こんだけ速くなるんだからすばらしいですね。

buildoutの練習も兼ねてflask-gae-templateをpython2.7に対応させてみている

buildoutを使えるようになりたいとflask-gae-templateをpython2.7に対応させてみている。

これで、まぁ動くことは動くんだけど色々とwarningが出る。

特に

WARNING  2011-12-02 11:23:39,704 py_zipimport.py:139] 
Can't open zipfile /opt/local/Library/Frameworks/Python.framework/Versions/2.7/
lib/python2.7/site-packages/setuptools-0.6c11-py2.7.egg-info: IOError: [Errno 13] 
file not accessible: '/opt/local/Library/Frameworks/Python.framework/Versions/2.7/
lib/python2.7/site-packages/setuptools-0.6c11-py2.7.egg-info'

は、なんで出るんだろうか?

OS10.6にあげたのでPyPy入れて遊んでる

10.5だと動かなかったので。

PyPyのサイトからpypy-1.7をダウンロードしてきて解凍して動かしたらさくっと動いた。楽しい。

GDD2011の時に書いたスライドパズルソルバーのコードがどんだけ速くなるのか知りたいのであとでベンチマーク取っておく。

ついでにPython3に対応して欲しいので、寄付もした。paypalもgoogle checkoutもそうだけど少額決済の仕組みは便利だなぁと。

GAEでpython2.7を使うためのメモ

app.yamlでpython27を指定して、WSGIハンドラを直接呼び出すようにする。

公式のドキュメントも読んでおくとよい

ProductName プログラミング Google App Engine
Dan Sanderson
オライリージャパン / 3570円 ( 2011-01-24 )


IaaSかPaaSで悩んだがとりあえずPaaSで行こうと思った

先週のAmazon Web Services勉強会 at 静岡でAWS面白いなぁと思ったのだけど、IaaSはやはりそれなりにめんどくさいというか、インフラ対応リソースが必要だからなぁと。

そうするとPaaSを選択することになるが、それはそれでベンダロックインされるのも嫌だなぁと思うのだが、自分はPython使いで最近はFlaskメインなので言語ではあまり困らないがデータがロックインされるよなぁと思ったらすでにケント・ベックが指摘してた

結局使うとしたらGAE,fluxflex,dotcloudあたりかなと。

dotcloudは有料プランがいきなりお高いのでヤル気のあるスタートアップむけなのかなと。

fluxflexはユルフワ感が漂っていて個人で使うにはおもしろそう。さっきサインアップしてFlaskのサンプルを動かしたら10分くらいで動いたしね。Gitでデプロイが楽そうなのでもう少しちゃんとしたものを作ってみたいと思った。

GAEはやっぱ楽ちんなのですよね。有料が見えてくるまではコレを使って、おカネが発生する段階になったらGAEのままでいくか、fluxflexに移るか、AWSで頑張るか考えればいいかなと思った。まぁそんな感じ

ProductName プログラミング Google App Engine
Dan Sanderson
オライリージャパン / 3570円 ( 2011-01-24 )


TODO: とっとと作る。

Python3のGrammarのdefがわからん

Grammar読んでたら

funcdef: 'def' NAME parameters ['->' test] ':' suite

ってなってるんだけど

['->' test]

ってなんなの?どういう時に使うんだろうか?

111125追記

MLで聞いたら解決した。Python3から導入されたFunction Annotationsというものらしい。 ->で戻り値のアノテーションを付加できる。

PEP 3107のuse caseを見てみると

  • Type checking
  • Let IDEs show what types a function expects and returns
  • Function overloading / generic functions
  • Foreign-language bridges
  • Adaptation
  • Predicate logic functions
  • Database query mapping
  • RPC parameter marshaling

この中で戻り値のメタデータが使われそうなのはIDEに通知する用途くらいなんだけど、他にもあるんだろうか?

個人的にはFunction overloading / generic functionsは便利そうだなぁと思うんだが、PEP 3124はDeferredになってた。

ProductName 実践Common Lisp
Peter Seibel
オーム社 / 4410円 ( 2008-07-26 )


それからanntoolsはどうなんだろう?Scala使えばいいじゃないかと思うんだが、decoratorでちょっと型チェックしたい時とかには便利なのかもしれないなぁ。

色付きのless

最近Pythonのソースコードを読んでいる。

ちょっとlessしたときに色が付いていると便利だろうなと思ったので、やってみたら快適すぎた。

職場のマシンも色付きのlessにしようっと。

Flaskでhamlish-jinjaを使う

Express+Jadeで幾つか書いていたらJadeの読みやすさに慣れてしまった。

FlaskでもHamlっぽい記法を使いたいなぁとググッてみたらhaml and flaskというエントリをみつけたので、この通りに入れてみた。

-extends "layout.html"

-block title
  Page Not Found

-block body
  %h1 << Page Not Found
  %p
    %a href="{{ url_for('show_entries') }}" << go somewhere nice

  %p << or find by tag
  %div.tags
  %script type="text/javascript"
    |$.getJSON('{{ url_for('show_jsontags') }}', null, 
    |  function(json){
    |    for (i in json.tags.sort()){
    |      $('div.tags').append("<a href=\"/tag/" + json.tags[i] + "\">" + json.tags[i] + "</a> ");
    |    }
    |  }
    |);

かなり読みやすくなった。入れ子をインデントで表現するのでPythonistaにはありがたいですね。ちなみにこっちがもとのjinjaのテンプレート。

{% extends "layout.html" %}
{% block title %}Page Not Found{% endblock %}
{% block body %}
  <h1>Page Not Found</h1>
  <p><a href="{{ url_for('show_entries') }}">go somewhere nice</a></p>
  <h1>or find by tag</h1>
  <div class=tags></div>
<script type="text/javascript">
$.getJSON('{{ url_for('show_jsontags') }}', null, 
function(json){
  for (i in json.tags.sort()){
   $('div.tags').append("<a href=\"/tag/" + json.tags[i] + "\">" + json.tags[i] + "</a> ");
  }
}
);
</script>
{% endblock %}

pipとかeasy_installで0.1を入れるとdiv#idとかdiv.classという記法が使えないので、GitHubの最新版を入れたほうがよいです。


ところで、HTML5においてセマンティクスが重視されると、デザインまわりはCSSに集約されていきHTMLタグとデザインっていうのは分離されていくと思うんですね(rdfとか昔っからあるし)。

セマンティクスってデザイナーというよりはプログラマー側が考えることだろうから、マークアップエンジニアとか呼ばれているヒト達はCSSエンジニアとかそういう名称になっていくの?

よくわからんので、今度誰かに聞いてみよう

ProductName HTML5&CSS3実践入門 最新Web標準を使いこなす (The Pragmatic Programmers)
ブライアンP.ホーガン
インプレスジャパン / 2940円 ( 2011-07-08 )


静岡(東部のあたり)ではHTML5の入門書の読書会をしています(宣伝)