Pythonではてな記法っぽいパーサ
このブログを始めた当初ははてなブログを使っていた。だがはてなの対応が悪いのと、はてなのやり口が気に入らなくて使うのをやめた。
だが「はてな記法」はなかなか便利だと思っている。ドキュメント記法ではMarkdownやreStructuredTextもよく使われているが、それらはあくまでも「ドキュメント向き」なのでブログの記述にはあまり向いていない。
ということで、はてなブログから自作システムに乗り換えた今もこのブログでは「はてな記法もどき」を作って実装している。
現在の実装は急いではてなブログから離れたかったので取り急ぎと作ったのであまり品質が良くなく、およそそこら中でエラーが出ている。読むことには支障はないとタグが不正でも無視しているのだが、どうせならと作りなおすことにした。
正規表現技術入門 ――最新エンジン実装と理論的背景 (WEB+DB PRESS plus)
- 作者: 新屋良磨,鈴木勇介,高田謙
- 出版社/メーカー: 技術評論社
- 発売日: 2015/04/14
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (1件) を見る
- 作者: Jeffrey E.F. Friedl,株式会社ロングテール,長尾高弘
- 出版社/メーカー: オライリージャパン
- 発売日: 2008/04/26
- メディア: 大型本
- 購入: 24人 クリック: 754回
- この商品を含むブログ (82件) を見る
- 作者: Jan Goyvaerts,Steven Levithan,長尾高弘
- 出版社/メーカー: オライリージャパン
- 発売日: 2010/04/15
- メディア: 大型本
- 購入: 4人 クリック: 197回
- この商品を含むブログ (16件) を見る
- 作者: 佐藤竜一
- 出版社/メーカー: 翔泳社
- 発売日: 2005/07/12
- メディア: 単行本
- 購入: 2人 クリック: 35回
- この商品を含むブログ (16件) を見る
Python Bottleのコードを読んだ
なんか最近は何にもやる気が起きない。なので最近は雑務のような作業ばかりしているのだけど、今日はその延長としてPythonのBottleマクロフレームワークのコードを読んでみた。
「今日は」といっても実際に読んだのは1時間半ほど。そのほかは今現在まで結局何もしていない。なにか作ってほしいものなどあればお気軽にリクエストを。
作るものすらも思いつかないほどの重症だ。
Pythonエンジニア養成読本[いまどきの開発ノウハウ満載!] (Software Design plus)
- 作者: 鈴木たかのり,清原弘貴,嶋田健志,池内孝啓,関根裕紀,若山史郎
- 出版社/メーカー: 技術評論社
- 発売日: 2015/04/17
- メディア: 大型本
- この商品を含むブログ (1件) を見る
====
Bottleは本日現在最新の開発版を読んだ。
WSGIについては理解していないので読み飛ばし、その他のサーバアダプターもエンジン側を読んでいないので飛ばし、テンプレートエンジンもJinja2以外は飛ばした。まぁそれらは飛ばしてもBottleのコネクタなので関係ない。
Bottleは全体で4000行ほどなので概要を掴むようにして読んだが、まぁ非常にシンプルな設計だ。かなり冗長な部分があるように見えるが、なぜそこが冗長なのかまでは読んでいない。
だが全体的には構造化されており、RouterやRoute周りはプログラミングの勉強をしている人間は読んで損はないだろう。4000行やそこらでWSGI、アダプタ、テンプレートエンジン、URLディスパッチャを含んでいるマイクロフレームワークとしてもシンプルな部類であろう。
Bottleのドキュメンは全体的にざっと読んだがどうも複雑に感じてしまっていた。URLディスパッチャにしても記述ルールの全体を理解できているのかがわからなかった。
だがソースを読むことでまさにそのルールの全体像がわかった。そしてその他にもドキュメントを読む以上の理解が出来た。
やはり小さなコードはドキュメントよりも本体を読むべきだ。
Python2.5からPython3.xに対応させるために色々な工夫がされており、その点についても勉強になる。
HTCPCPなんかのジョークも組み込まれていたり良いコードだ。
最新版のコードはGitHubに上がっている。
https://github.com/bottlepy/bottle.git
と、することもないので読んだことを日記に書いた。
Pylfanがなんとなく動くようになった
多分。
https://github.com/kmasaya/Pylfan
つい今しがた寝ようとしても寝れないので仕方なくコード書いたら動くようになった。
暇な人は確認してください。
但し不具合が主だと思うのでもちろんコピーしたディレクトリで確認してください。
- 作者: Tarek Ziade,稲田直哉,渋川よしき,清水川貴之,森本哲也
- 出版社/メーカー: KADOKAWA/アスキー・メディアワークス
- 発売日: 2010/05/28
- メディア: 大型本
- 購入: 33人 クリック: 791回
- この商品を含むブログ (90件) を見る
====
前回からの変更点は主に全て変わってます。
前回はJPEGで動作確認をしていましたが、PNGで使おうとした途端に一切動かないという事に気がついたのでそのへんも改善しています。
そのためにPILの機能に頼っていた部分を自前で実装しています。そしてそれは条件分岐でぶっ飛ばしてるのでそこそこ遅くなっています。なので色数変換とネガポジ反転の動作が重いかも知れません。
そしてその二つは思いつきで実装したので処理があっているかもわかりません。例えば1ビット以外では「黒」は出ません。
これで当初予定していた機能は実装できたはずですが、この左記いくつかの機能だけ実装予定です。他にもリクエストがあればコメントください。
- 画像保存のクオリティコントロール
- JPEG2000対応
- 画像コメント追加
PythonのBottleとPeeweeのサンプル
だいぶ前にPythonのBottleとPeeweeを使ったサンプルとして「bottle.peewee.sample」を試しに公開していた。
本当に簡単なサンプルとして作ったのでいい例ではなかったと思うのだがたまにアクセスが有る。なのでもう少しまともなサンプルを作ることにした。
そしてもう少し現実的なコードでテンプレートとしても使えるようにと作ってみることにした。
公開したのはこちら。「bottle.peewee.template」。
名前からしても今後テンプレートとして使えるようになればと思っている。
Pythonエンジニア養成読本[いまどきの開発ノウハウ満載!] (Software Design plus)
- 作者: 鈴木たかのり,清原弘貴,嶋田健志,池内孝啓,関根裕紀,若山史郎
- 出版社/メーカー: 技術評論社
- 発売日: 2015/04/17
- メディア: 大型本
- この商品を含むブログ (1件) を見る
Pythonによるデータ分析入門 ―NumPy、pandasを使ったデータ処理
- 作者: Wes McKinney,小林儀匡,鈴木宏尚,瀬戸山雅人,滝口開資,野上大介
- 出版社/メーカー: オライリージャパン
- 発売日: 2013/12/26
- メディア: 大型本
- この商品を含むブログ (19件) を見る
====
前回のサンプルとは違い、ファイルもいくつかに分割し機能を分離した。なので見通しが良くなっており、サンプルとしてもいいかと思う。
そしてユーザ認証やセッション的なものも簡易的に実装しているのでセッションライブラリを使わないユーザ管理も行える。DjangoやFlaskからBottleに移動する人はセッションが気になっているかも知れないが、Sessionはこうやって自前で実装してもいいかと思う。
ただしModelに密結合してたりとあまり良くないので、ライブラリがあればそれを使うべきだろう。もっと良い実装方法があればご助言願いたい。
とりあえず今回のサンプルも、テンプレートと言いつつもBottleとPeeweeであればこんなに簡単にこれくらいのものは出来ますよという参考にはなると思う。
まだ私も全然わかっていないので、指摘などがあればバシバシいただけると嬉しい。
kivy_table_widgetをPython3に移植
わけあってKivyを使い始めたのだけど、公式のテーブル(表)ウィジェットが見つからない。
誰か作っている人が居るだろうとGitHubを探すとやはり先駆者は居るもんだ。その名もズバリ「kivy_table_widget」。
だがシェバンを見てからもわかる通りPython2が前提となっている。printも関数では無く文で書かれていたりとPython3で使う気は無いのだろう。Python2.7ならprint関数も導入されているのになぜそうしないのか。
まぁ、製作者も私のように自分用に作ったのであろうから文句を言える身分ではない。
ということで簡単にPython3に対応させてみた。
「Kivy」ではじめるPythonプログラミング―グラフィックライブラリでアニメーションを表現! (I・O BOOKS)
- 作者: 清水美樹
- 出版社/メーカー: 工学社
- 発売日: 2013/11/01
- メディア: 単行本
- この商品を含むブログ (1件) を見る
PythonでかんたんiOSアプリプログラミング―Kivyによるマルチタッチアプリケーション制作
- 作者: 桑井博之
- 出版社/メーカー: カットシステム
- 発売日: 2013/06/01
- メディア: 単行本
- この商品を含むブログ (1件) を見る
====
基本的には2to3で一括変換し、フォーマットを直した位になる。
とりあえずはそれでサンプルは動くようになったのだが、これがなかなか問題が多いモジュールでなかなかバグバグしい。
私が表を表示させるためだけに使おうと思ったのだが、それでもいくつかのバグにぶつかった。自分に必要な最低限のものだけ治そうと思うが、これがなかなが込み入ったややこしいコードで修正がしづらい。
そしてなによりKivyを使い始めて2時間位なので、そもそもKivyのルールや使い方すらわかっていない。デザイニング言語があるようだが、それがわからないのでPyGtkよろしくコードでGUIを生成している。
PyGtkもGladeなんかでデザイニングができるが、Gladeの使い方を覚える時間でデザインができると今まで使ってこなかったことに今は感謝している。
ということで、「kivy_table_widget」をForkした。これからも使いそうならちょこちょこバグを直すかも知れないが、なにしろKivyを今後も使うかわからないのでコレっきりに成るかも知れない。
しばらくしたら本家の方にもバグ報告をするかも知れない。Forkしたことで気がついてもらえたら助かるが。
私がForkしたのはこちらから。