2011-01-01から1年間の記事一覧

個人の振り返り的な何か

2011 年は仕事面で色々変化があった年だった。 4 月からコードを書くというより、システム全体を設計するという方にシフトしたが、全然達成できてない。 アウトプットできるような物が殆どなかった。 作ってはリジェクトをくらい作ってはリジェクトをくらい…

Backbone.js のメモ

jQuery だけでサイトを作っているとちょっと規模が大きくなると見え辛くなってくるので Backbone.js を使おうと思い情報収集している。 以下自分の為のリンク集。 オフィシャルサイトのドキュメント http://documentcloud.github.com/backbone/ チュートリア…

Jinja2 のテンプレート内でドメイン名を取得したい

Google Analytics のタグを埋め込む場合、テスト環境に入れてるとそれもカウントされるそうなので、正確な値を取る為にプロダクション環境かどうかという判定を行う必要がある。 Google Analytics のタグは全ページに入れる必要があるので、大元となる layou…

Vim と Pyflakes

普段 Vim と Pylakes を連携しているけど pep8とpyflakesのvimプラグインを入れた - 十番目のムーサ を読んで使っている Vim プラグインとは違う事に気付いた。 普段使ってるのは、こちらで最後に少し紹介されているもの。 vimでPythonのコードを書いている…

MySQLdb で like 検索

メモ。 Python の MySQLdb で like 検索を行う場合。 import MySQLdb connector = MySQLdb.connect( host=host, port=port, db=db, user=user, passwd=password, use_unicode=0, charset='utf8' ) cursor = connector.cursor() param = 'python' sql = """SE…

Jinja2 で number_format を使う

PHP の便利関数の一つに number_format というのがある。 PHP: number_format - Manual 同じ事を Python でやろうとすると、以下が見つかった。 number_format filter | Flask (A Python Microframework) http://ndiblog.mezquita.jp/archives/96 ロケールを…

Flask で debug=False 時にログを出力する

Flask で開発時は debug = True にし app.logger を使用するとログを標準出力する。 本番環境では標準出力じゃなくて、ファイルに出力するようにしてた。 import os import logging from logging.handlers import RotatingFileHandler from flask import Fla…

PostgreSQL の PL/Python を試してみる

PostgreSQL にはストアドプロシージャ(ファンクション)に Perl や Python といったスクリプト言語で記述できる。 これを使えば Perl/Python で外部のサーバにメッセージを飛ばせないかやってみた。 まずは MacPorts で PostgreSQL8.4 をインストール(9.x を…

Flask の静的ファイルの取り扱い

昨日遭遇した現象。 仕様なのこれ? app.py #!/usr/bin/env python # -*- coding: utf-8 -*- from flask import Flask, render_template app = Flask(__name__) @app.route('/') def index(): return render_template('index.html') @app.route('/<arg1>/<arg2>/<arg3>/', stri</arg3></arg2></arg1>…

WTForms の model_form に外部から注入

前回の続き WTForms の model_form を使えば一々フォームクラスを作らなくて良いが、各フィールドに対して独自の処理をしたい場合に困る。 例えば、特定のフィールドに対して別のバリデーションを追加したい場合や、エラーメッセージを変更したい場合。 そん…

Flask と SQLAlchemy と WTForms

window.twttr = (function(d, s, id) { var js, fjs = d.getElementsByTagName(s)[0], t = window.twttr || {}; if (d.getElementById(id)) return t; js = d.createElement(s); js.id = id; js.src = "https://platform.twitter.com/widgets.js"; fjs.paren…

Twitter Bootstrap を使って Pagination を作る

材料 Flask の Snippet に載っている Simple Pagination Jinja2 のインポート Twitter Bootstrap の Pagination css Flask の Snippet にある Simple Pagination を utils/pagintion.py とかにして保存する。 # -*- coding: utf-8 -*- from flask import Fla…

SQLAlchemy で like 検索した際のエスケープ

SQLAlchemy で like 検索をしたい時は以下のようにするらしい。 # DB は MySQL def search(query): rows = Session.query(Items).filter(Items.title.like('%\\' + query + '%', escape='\\')).all() return rows バインドしてないのが気になったけど、大丈…

WTForms でラジオボタン

WTForms でラジオボタンを使うメモ。 # オフィシャルサイトに書いてるけど…。 フォームクラス # -*- coding: utf-8 -*- from flaskext.wtf import Form, RadioField, validators from flaskext.babel import gettext as _ class(Form): active_flag = RadioF…

シリアライズして圧縮した際のデータサイズの差異

Redis の Python クライアントの redis-py で以下のような事をやってみた。 # -*- coding: utf-8 -*- from redis import Redis client = Redis(host=localhost) data = {u'foo': u'bar', u'baz': ['aaa', 'bbb', 'ccc']} client.set('sample', data) ret = c…

Twitter Bootstrap の topbar

CSS

Twitter Bootstrap という css フレームワークは管理画面やちょっとしたデモサイトで体裁を整えたいという場合にとても便利だと思う。 特に自分の場合デザインが良く分かってないのでこういうのは便利。 リリースのアナウンスが出た日に Github から css を…

Flask でアプリケーションを作る際のメモ

自分用のメモ。 Flask はマイクロフレームワークを詠っているが、大きめのアプリケーションを作る事が出来る。 自分で色々組み合わせて行くのが好きなので Flask を使う。 メンドクサイのなら、素直に Django とか Pyramid なフルスタックを使えば良い。 Mod…

Flask の認証系のモジュール

Flask でログインして認証したい。 公式のドキュメントには Login/Logout のサンプルが載ってる。 Blueprints and Views — Flask 1.0.2 documentation ユーザ名とパスワードが一致したらセッション変数のフラグを立てる。 これとデコレータを使った例を使っ…

Flask の Blueprint で app オブジェクトが欲しくなったら

Flask でモジュール機構を実現するには Blueprint を使うが、こいつが Flask のインスタンスを持っていない。 # -*- coding: utf-8 -*- # manage.py from flask import Flask from views.admin import app as admin app = Flask(__name__) app.register_blue…

文字列置換のベンチマーク

Python で文章中に含まれる半角記号(;/?:@&+,()[]!"#%'~\`)と半角スペースを全て特定の値(-)に置換したい。 例えば、「エメラルド Tour 2010(初回限定盤) [DVD] 」は「エメラルド-Tour-2010-初回限定盤---DVD-」といった感じ。 str.replace をするのか、re.s…

続 AnyEvent::MPRPC から MessagePack-RPC Java の接続

AnyEvent::MPRPC から MessagePack-RPC Java の接続 - Memo の続き。 id:gfx さんに捕そく頂けたようで、直したよというメンションを頂いた。 window.twttr = (function(d, s, id) { var js, fjs = d.getElementsByTagName(s)[0], t = window.twttr || {}; i…

ソースコードテロをやってみた

PHP

Github 上の OSS なプロダクトをデザイナーさんが奇麗なデザインを当ててくれる「デザインテロ」なるものがあるそうな。 http://www.slideshare.net/machidanohimitsu/ss-6678537 で、昨日 Twitter でこんなんが流れてきた。 window.twttr = (function(d, s,…

AnyEvent::MPRPC から MessagePack-RPC Java の接続

2011/08/08 追記 AnyEvent::MPRPC を修正して頂いた。ver 0.10 では解消済み。 Perl の AnyEvent::MPRPC::Client を使用して MessagePack-RPC Java サーバに接続した際にメソッドコールを行っても何もデータが応答がない。 クライアント側の実装。 #!/usr/bi…

MessagePack-RPC の PHP 版のパッチ

PHP

MessagePack-RPC の PHP をクライアントにした時にこんなエラーが出る。 call('echo', array('PHP PHP')); var_dump($ret); PHP Fatal error: Uncaught exception 'Exception' with message 'hello PHP PHP' in /path/to/msg…

MessagePack-RPC を試してみる

MessagePack-RPC の Java を試してみようと格闘している。 サーバ側のコード。 package jp.heavenshell; import org.msgpack.rpc.Server; import org.msgpack.rpc.loop.EventLoop; public class ServerApp { public String echo(String msg) { return "hello…

SQLAlchemy 0.7 の Integer の仕様変更

SQLAlchemy 0.7 からどうやら Integer(3) みたいな形は警告がでるようになった。 # -*- coding: utf-8 -*- from sqlalchemy import Column, Integer, String Base = declarative_base() class User(Base): __tablename__ = 'users' id = Column(Integer, pri…

Fabric で rsync する

Python のデプロイツールである Fabric を普段から使っている。 で、Fabric で rsync をする場合は以下のように書く。 #!/usr/bin/env python # -*- coding: utf-8 -*- import os from fabric.api import env, run, roles, cd from fabric.contrib import pr…

dotfile を自動で保存する

Mac や Linux を使っていると自分の rc ファイルが増えてきて一々手動で管理するのもメンドクサイし、外部リポジトリに管理したくないような物もある。 ていことで Dropbox にスクリプトで保存するのを書いた。 #!/usr/bin/env python # -*- coding: utf-8 -…

今すぐ読むべき PHP 界のパーフェクト書籍

PHP

id:sotarok さんに紹介いただいてフォロワーさんが増えて少しビックリしてたが、 window.twttr = (function(d, s, id) { var js, fjs = d.getElementsByTagName(s)[0], t = window.twttr || {}; if (d.getElementById(id)) return t; js = d.createElement(s…

Node.js と amqp を組み合わせる

サーバサイドからのクライアント(ブラウザ)に push するのを色々調べていた。 最初 Twitter や Facebook がやっているように、Transfer-Encoding: chunked を試していて、Node.js を使ったら chunked なデータを送信するのは割と簡単にできた。 が、ある程度…