投稿者「たなか」のアーカイブ

Python用フレームワークwebapp2をいじってみたよ

Python向けのウェブアプリケーションフレームワークはあるのですが、その中からwebapp2をいじってみたのでメモがわりにここに書いてみるぜ。
webappという名前を見て気付いた人もいると思うけど、GoogleAppEngineで使われてるフレームワークなのだ。
webappがPython2.5用の以前からあるフレームワークで、webapp2の方はPython2.7向けの新しいフレームワーク。
さて、このwebapp2。GoogleAppEngine上だけでなく、ふつーのWSGIアプリケーションとして動くんですな。
今回はGoogleAppEngineを使わずにwebapp2をいじってみることにしたよ。

まず最初はwebapp2のインストールなのだが、今回はわけあってモジュールとしてインストールせずに使ってみた。
必要なのは

の3つ。それぞれ最新版のwebapp2-2.5.1.zipWebOb-1.2b3.zipPaste-1.7.5.1.tar.gzをダウンロード。
そいつらをディレクトリext以下で展開しておいておいた。
こんな状態ね。

webapp2_sample/
  + ext/
    + Paste-1.7.5.1/
    + WebOb-1.2b3/
    + webapp2-2.5.1/

まあ、ふつーに使う人はeasy_installなりpipでインストールすればいいんじゃないかな。

後はコードを書くだけですね。
今回は由緒正しくHello, Worldを書いてみた。

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import sys
sys.path.append('ext/Paste-1.7.5.1')
sys.path.append('ext/WebOb-1.2b3')
sys.path.append('ext/webapp2-2.5.1')

import webapp2

class HelloWorld(webapp2.RequestHandler):
    def get(self):
        self.response.write(u'こんにちは世界')

applications = webapp2.WSGIApplication([
    ('/', HelloWorld),
    ], debug=True)

def main():
    from paste import httpserver
    httpserver.serve(applications, host='127.0.0.1', port='8080')

if __name__ == '__main__':
    main()

「Hello, world!」じゃなくて「こんにちは世界」じゃないか、というツッコミはなしの方向でお願いできればと。さらに、コトノハサマは? なんて恐ろしすぎですよ…

動かすのは簡単。上のコードをmain.pyで保存してるとします。

$ python main.py

こ・れ・だ・け。
後はブラウザでlocalhostのポート8080を叩いたらちゃんと動いた!
f:id:calnarsa:20120415172616p:image
あ、環境はMacOSX 10.7.3上のpython 2.7.1でございます。

GoogleAppEngineをよく使う人にとっては、GoogleAppEngine以外のところでも同じ感覚でウェブアプリ書けてステキ。
webapp2自体はシンプルなフレームワークなので、いろいろ自分色に染めまくるのもいいかも。
オレオレフレームワークでも作ってみるかい?

JavaScriptでSHA-256が計算できるライブラリjsSHAを使ってみた

JavaScriptでSHA-256を使う必要があったので、使えそうなライブラリをグーグル先生に問うてみた。
何個か見つけたけど、ライセンスがはっきりしなかったり、特定のライブラリ依存だったりで困ったのだが、なんとかよさげなのを見つけた。
jsSHA — http://jssha.sourceforge.net/
こいつね。
使い方は簡単で、SourceForceからダウンロードしたzipなりtar.gzなりを展開して、srcディレクトリを覗くとsha***.jsというファイルがあるので、使いたいハッシュアルゴリズム選べばOK。今回の場合はsha256.jsね。
ハッシュ値求めるソースはこんな感じで。

var shaObj = new jsSHA(src_text, "ASCII");
var sha256digest = shaObj.getHash("SHA-256", "HEX");

HMACとかも対応していてステキなライブラリとなっております。
気になるライセンスは修正BSDなんでガンガン使えるぜ。

常夜灯のナツメ球にLED導入してみた

f:id:calnarsa:20120402212450j:image:medium:right自宅の常夜灯に使ってるナツメ球が切れてしまった。
実は真っ暗ではなかなか寝付けないお子様なのだ。
と言うわけで、いとしのヨドバシカメラでナツメ球を買ってきたぜ。
21世紀の波はナツメ球業界にも押し寄せているようで、なんとLED化していた! ま、昔ながらのフィラメントのやつも売ってるけどね。
値段はナツメ球にあるまじき420円(税抜)。フツーのやつは100円以下だよな…
まあ、長持ちするからいいや。
試しに点けてみた感じ、フツーのやつ(5Wだよね?)より心持ち明るいかな? そしてLEDさすが点光源、ピンポイントに明るさが集中していて、見つめ続けると間違いなくヤバイ予感… まあ、寝てる間に点いてるもんだから気にしなくてもいいけどね。
しみじみと時代とはこんな感じでうつろいゆくものなのかと感じましたとさ。

EmacsでPythonソースコードのインデントを深くor浅くする技

EmacsのPython-modeの小技。

Pythonはインデントが命。
ある範囲のコードのインデントを一括して深くor浅くしたくなることがよくありますね。
try~exceptで例外処理を入れたくなった時とかね。

そんな時のステキな技。
インデントを一括して深くor浅くしたい範囲を指定して C-c > で深く、 C-c < で浅くなるぜ。
地味だけど、すげー便利。