主に反省すべき棋譜を忘れないためにw
[kif:fujiko-mefjuz-20140513_203413.kif]
という記法が使えるようにした。
のんびり四間飛車を組んでいたら、速攻で銀が上がってきてボロボロにされた。
こちらも早めに銀をあげるべきだったんだろうな。
主に反省すべき棋譜を忘れないためにw
[kif:fujiko-mefjuz-20140513_203413.kif]
という記法が使えるようにした。
のんびり四間飛車を組んでいたら、速攻で銀が上がってきてボロボロにされた。
こちらも早めに銀をあげるべきだったんだろうな。
いままで0.6.1を使っていたのだけど、バージョンが上がってJade互換になったそうなので週末を使って自分のブログシステムに対応させていた。
テンプレート周りの設定が色々変わっていてエラー吐きまくったんだけど、出来上がったテンプレートはJinjaっぽさ({{ }})が排除されていい感じに洗練されてきている。
JadeがヨサゲなのはBrunchと一緒に開発すればサーバーサイド(Flask)とクライアントサイド(backbone.js)で同じテンプレート言語を使えるっていうのもありそう。そういうwebアプリを作ってみたいと思っているが。
それから、1.0はutf-8のテキストを渡すとエラーになるバグがあったのでgithubのissueに登録したらすぐに対応してもらえて1.01になったので、サーバーのpyjadeのバージョンを上げて動作を確認してデプロイして、酒を飲みながらこのエントリを書いている。ソーシャルコーディングってサイコーですね。製薬系みたいな閉鎖系では味わえないスピード感がある。
ダブルクォーテーションとか中括弧が省略できるようになっている
0.6.1だと
autoescape(false)= entry.content
ってやればJinjaのautoescapeが使えたんだけど1.0ではautoescapeタグになってしまう。
.contents= entry.content|safe
ってやってフィルタをかますようにした。
今年は640エントリ投稿してた。
エントリについたタグをカウントして多い順に並べてみた。
宣言通りにjavascriptを重点的に学んだ気がする。
ちなみに、タグとそのカウントの辞書を作った後に、itemでソートしたい場合にはちょっとめんどくさかった。
for k,v in sorted(tag_table.items(), key=lambda (k, v): (v, k), reverse=True): print k,v
来年はAndroidかなぁ
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エンジニアとかそういう名称になっていくの?
よくわからんので、今度誰かに聞いてみよう
静岡(東部のあたり)ではHTML5の入門書の読書会をしています(宣伝)
自作のブログシステムのなかにデータベースに頻繁にアクセスしすぎて困るAPIがあるので、Flask-Cacheを使ってキャッシュするようにした。
設定を読ませてからcacheの設定をしないといけない(まぁ当たり前か)のだけどapp.config.from_objectで読ませる前にCacheしてたらキャッシュが効かなくてちょっとはまった。
CACHE_TYPE = 'simple' app = Flask(__name__) app.config.from_object(__name__) cache = Cache(app) # 設定読ませたあとに
ソースは読んでたらキャッシュのタイプはwerkzeugに任せているらしいので、そっちのドキュメントを読めば大丈夫な感じですね。
あーそういえばメール来てたなと思い探してみたら、アソシエイトタグが必須になったらしい。
ドキュメントにはナニも書いてないので、ソース見たらアソシエイトタグが含められるようになったいたので、
api = amazonproduct.API(AWS_KEY, SECRET_KEY, 'jp', ASSOCIATE_TAG)
とロケールのあとにアソシエイトタグ含めておけばOK
19122010 flascore
jQuery.autopagerを使えば楽ちんだった。
ページ送りするとTwitterボタンが変になるので、それはそのうち直さないといけない。