Make組ブログ

Python、Webアプリや製品・サービス開発についてhirokikyが書きます。

PasteScript空騒ぎ

PasteScript空騒ぎ PasteScript の話。 PasteScriptって? アプリケーションに必要なコマンドを作る地盤を提供してくれるものです。 PasteScript 自身が提供するものでは、テンプレートからアプリケーションを作成する コマンドがあります: paster create テンプ…

Pythonにおける「許されざる悪事」を避けるために

Pythonにおける「許されざる悪事」を避けるために 許されざる悪事というものが存在する 許されざる悪事 モジュールを import するだけでグローバルな値が設定されるというもの。 「import の順番に依存した処理ほど不愉快なものはない。こういった依存性を持…

WSGI向け認証フレームワーク、repoze.whoを使ってみた

WSGI向け認証フレームワーク、repoze.whoを使ってみた repozewwho というWSGI用の認証フレームワークがあります。 Webアプリケーションを書くうえでユーザー認証はほぼほぼ必須となりますが、 それを提供してくれる素晴らしいものです。 なかなかよくできたやつ…

matcha0.1リリースのお知らせとその背景

matcha0.1リリースのお知らせとその背景 matcha という WSGI dispatcher をリリースしました。 WSGIのライブラリ/ミドルウェアで、PATH_INFOを考慮した WSGIアプリケーションの呼び出しを主目的にしています。 matcha (PyPI) この記事では matcha の紹介を軽く…

Introducing django-websettings

Introducing django-websettings I released new package named django-websettings. This is django’s third party application to provide a web interface to set a yet another django’s settings. If you are similar to read English, please read the…

Tips: for Initial arg of Django's Form fields

Tips: for Initial arg of Django’s Form fields Django’s Form fields take a initial argument to specify the initial value for that Field. For more detail about initial, check out the doc Form fields #initial Basically… As written there, if y…

Search view with long long parameters

Search view with long long parameters At most of web application have the so-called search view. The view get some request parameters and display some search results by using these parameters. A search view does not cause any side effects,…

Don't format strings before logging in python

Don’t format strings before logging in python You should not provide formatted string to loggers in Python, like this: logger.info('Logged in: %s' % username) You should write like this: logger.info('Logged in: %s', username) logging Why? …

Django's TestCase.multi\_db attribute is mistake

Django’s TestCase.multi_db attribute is mistake Django’s test framework (django.test.TestCase) has a atribute multi_db . It should be set True when testing on multiple databases (False, by default). If you forget this setting, and your tes…

Sentry with django-newauth

Sentry with django-newauth djangonnewauth is a library to add customizable user model (It developed before Django 1.5). And sentry is a platform to collect logs and aggregate these. Sentry can collect errors raised by some django applicati…

Djangoでアップロードしたファイルを非同期に削除する

Djangoでアップロードしたファイルを非同期に削除する Django の FileField を通してアップロードしたファイルを非同期に削除したい。 本質的にはモデルが削除されると同時にファイルも削除したいというものなんだけど、 そこを同期処理しているとやってられ…

Djangoのチケット18481についての雑記

Djangoのチケット18481についての雑記 Django に投げていた パッチが昨夜取り込まれた のでその話。 前に取り込まれた チケット 18558 以来。 チケット 18481 について このチケットは、別のチケット 17277 に由来してる。 17277 は POST の body 読み込み時…

PythonでWebサーバー書きましょう

PythonでWebサーバー書きましょう 「Webサーバー書いたことある?」 と聞かれ、何じゃらホイと尋ねると 「書いたことあれば分かりそうな問題にハマってる事例見てね。みんな書いたことあるわけじゃないのね、と思って」 とのこと。 そういえば私も書いたこと…

Pyramidでzope.interfaceを使う

Pyramidでzope.interfaceを使う Pyramid で zope.interface を使うときの話 zope.interface Pyramid における zope.interface の使い方 お作法 zope.intreface zope.intreface_ が面白いと最近知った。 実装を持たない「インターフェース」だけ定義して、 そ…

新サービスKarmaidをリリースしました

新サービスKarmaidをリリースしました 新規にWebサービス Karmaid をリリースしました。世界中すべてのものに未ログインで評価できるサービスです。 ここでは Karmaid というサービスについてと、リリース後にあった秒間200リクエストの話をします。 Karmaid…

Djangoのテストで設定 (settings) を上書きする

Djangoのテストで設定 (settings) を上書きする Django のユニットテストを書くときに、 設定ファイル (settings.py) を一部変更したいことがある。 そのやり方をメモ。 テストの一部で変えたいとき ドキュメントに書いてあった。 Override Settings django.…

DjangoのORMが実行してるSQLの見方 (とdjango-debug-toolbar のススメ)

DjangoのORMが実行してるSQLの見方 (とdjango-debug-toolbar のススメ) djangoddebugttoolbar 使おう。 以下の様な記事があった。 Djangoの発行する生SQLが見たい ForeignKeyとfilterのメモ - AtAsAtAmAtArA django.db.connection.queries を使うとよいそう…

django-celeryで非同期処理クイックスタートガイド

djangoccelery で非同期処理をやる。 サクッと非同期処理を試せちゃうような、クイックスタートガイド をメモがてら書いていく。 インストール まずはインストールから。 pip を使って Django と djangoccelery をインストールする。 % pip install Django %…

「それZopeだよ」って言われたので作ったもの

「それZopeだよ」って言われたので作ったもの URLディスパッチャーとか飽きたので、もっと他のことがしたかった。 URL(リクエストのPATH INFO)にマッチしたパターンに対応するビューなど言ってないで、 より汎用的な構造はないかと考えていた。 思いついてつ…

SQLAlchemyのSQL表現言語で集計する

SQLAlchemyのSQL表現言語で集計する 前回の Djangoで売上を集計/集約処理する に続いて、また集計します。 今回はDjango(のORM)ではなく SQLAlchemy を使います。バージョンは0.8。 ただしORMとしてではなく、SQLAlchemyのSQL表現言語(SQLExpression)のみ使…

Djangoで売上を集計/集約処理する

Djangoで売上を集計/集約処理する 集計/集約します。 (この記事ではaggregationを「集計」と訳します。集約、よりもヒットしやすそうだったから) Django 1.4 日本語ドキュメント(暫定) ではこちらにあります。 集約(Aggregation) - Django 1.4 documentation…

DjangoのAUTHORSに追加された

DjangoのAUTHORSに追加された 先日、Djangoに送っていたプルリクエストが取り込まれた。 そんで AUTHORS (Djangoに貢献したことがある人が書いてあるテキスト) に追加された。 初めてのことで嬉しいのでブログに書いてます。 あとは Django のコード書く人増…

何歳からプログラミングを始めるべきか

何歳からプログラミングを始めるべきか 「プログラミングは何歳から始めるべきでしょうか」 これはよくある質問だと思う。 最近またTwitter上でこれに関する議論、疑問、嘆きなどが見られるので、 いい機会だと思って書いてみる。 何歳であれ適齢です 私の大…

New years python meme 2012

New years python meme 2012 1. What’s the coolest Python application, framework or library you have discovered in 2012 ? Django. yes, It’s not so cool. but, I don’t know about another python applications well. Once said, 2012 is starting li…

Pushosuというサービスをリリースしました

Pushosuというサービスをリリースしました Twitter投稿用のボタンを自分で作れるサービス、 Pushosu を作りました 何よこれ Twitter投稿用のボタンを作れるサイトです。 1) Twitterからログインして、ボタンを作ります 2) 作ったボタンをクリックします 3) …

ブログ移行するよ

ブログ移行Home — hirokiky's blog今までありがとうはてダ

WSGIで何か作ってみてちょっと改良してみた

@shomah4aさんが面白い記事を書いていたのでもうちょっと遊んだ。 2012 Python アドベントカレンダー (Web フレームワーク ) 二日目 WSGI でなんか作ってみる #python_adv - プログラマのネタ帳 とりあえず上記で書かれていることをやってみた。WSGIだけで作…

Django、チュートリアルの次にやったこと(2012Pythonアドベントカレンダー1日目 #python_adv)

2012Pythonアドベントカレンダー1日目を担当します、取りまとめ役の id:hirokiky です。 この記事では私がDjangoのチュートリアルの次にやってきたことを書きます。 内容としては「Django」に限った話ではなくて、そもそもプログラミング自体そんなにしたこ…

DjangoでオレオレWidgetを作ってみた(Renderer編)

ウィジェットとは、Django で HTML の入力エレメントを表現するためのオブジェクトです。ウィジェットは、 HTML のレンダリングや、個々のウィジェットに対応するデータをGET/POST 辞書から抽出する処理を行います。 http://djangoproject.jp/doc/ja/1.0/ref…

Amazon ELB + EC2 環境で EC2 に直接アクセスしないよう nginx を設定する

Amazon ELB + EC2 環境で EC2 に直接アクセスしなよう nginx を設定する。想定するのは ELB にドメイン名を設定して、それを介して EC2 上インスタンスにアクセスするような状態。 その場合、 EC2 (https?://ec2-.*\.amazonaws.com) に直接アクセスされると…