タグ

ブックマーク / www.ianlewis.org (12)

  • (より)小さいDockerイメージを作ろう

    最近、コンテナ技術が流行っていていろなツールを興味深く触っている。その中の一番人気のはみんな大好きなDockerDockerdocker runでコンテナの実行環境を簡単に作ってくれる上、docker build でコンテナのイメージの構築も簡単にできる。Dockerのイメージ構築はDockerfileというMakefileのようなファイルを元にその中のコマンドを順番に実行して構築していくもの。 例えば、 FROM debian:jessie RUN apt-get update RUN apt-get install -y python RUN mkdir -p /data VOLUME ["/data"] WORKDIR /data EXPOSE 8000 CMD [ "python", "-m", "SimpleHTTPServer", "8000" ]

  • Django 1.5 の紹介

    この記事は 2012 Pythonアドベントカレンダー(Webフレームワーク) の第3目の記事。昨日の記事は id:shomah4a の「 2012 Python アドベントカレンダー (Web フレームワーク ) 二日目 WSGI でなんか作ってみる 」。明日は surgo さんが、 Django 1.5 以降と Python 3 あたりの記事を書いてくれます。 10月25日に Django 1.5 alpha 1 がリリースされて 、順調に先週の火曜日(11月27日)に Django 1.5 beta 1 がリリースされました 。徐々に Django 1.5 の正式リリースに近づいてきいます。もしかして、年内にいいクリスマスプレゼントになるかもしれません。 新機能 Django 1.5 はたくさんの変更がありますが、一番大きい変更をピックアップして、紹介します。 Python 3 対応

  • Python でPassbookファイルを作成する

    最近、iPhoneのiOS6でPassbookという機能が出ました。Passbookはイベントのチケットや、飛行機や船の搭乗券や、クーポンや、ポイントカードを管理出来る地味に便利なアプリ。 僕は興味があって、Pythonでどう作るかを調べてみたので、ここで共有しようと思っている。Passbookはパスの更新の仕組みもありますが、とりあえず、パスを作るとところまで説明しようと。 まずは、Appleの日語ドキュメントの「Passbook プログラミングガイド」をざっと見たほうがいいかもしれない => https://developer.apple.com/jp/devcenter/ios/library/japanese.html 基礎の仕組み的に、Passbookはサーバーからダウンロードしたzipファイル。パスの内容はpass.jsonというJSONファイルの中に入っている。中身のファイ

  • PYPI を使わないでデプロイする方法

    pip、buildout などを使うとデプロイする時に Python ライブラリの依存関係はややこしいことがあります。 普段はデプロイスクリプトで、 pip に requirements.txt を指定して、もしくは、 buildoutを実行して、 依存ライブラリを落としてインストールしますが、 PYPI がダウンしている場合、環境によって、PYPIにアクセス 出来ない場合もありますので、デプロイが止まってしまって困ります。 PYPIはダウンしている時に pip は PYPI のミラーを使うことができますが、ミラーに必要がパッケージバージョンが入っていない、 ミラーの最後のIDのDNS が ちゃんと動いていないときに、 pip は当然ちゃんと動かない場合も。 bitbucket や、 github からのリポジトリに依存している場合、 接続できなかったら、ミラーがないので、当然インストール

  • Redmine で reStructuredText を使う方法

    我々BeProudのRedmineのWikiやチケットの説明文やチケットのコメント文にはReStructuredTextを使っている。 RedmineのデフォルトのTextileはPythonが好きな弊社で使うのは以ての外。なので、ReSTを使うようにした。 そして、生のReSTしか使わなければ、出来ることが少ないので、blockdiagや、コードの構文ハイライト(Pygments) を使っている。 Redmine はテキストフォマッターを入れ換えるように作られている。プラグインを入れるとWiki やチケットの内容のフォーマットを変えることができます。BeProud では Redmine reStructuredText Formatter の RbST/docutils ブランチを使っている。 http://glacialis.postmodo.com/posts/zyd1ig インスト

  • Fabric デプロイツールのPythonicな書き方 - Ian Lewis

    Fabric は指定したコマンドを各ホストで実行する実行モデルです。この場合は特にホストの指定がなかったので、全部ローカルで、一回実行することになります。 これは結構つまんないので、当の例を見ましょう。これは最近、仕事で作ったコマンドです。 nginx サーバーでメンテ画面を出すようなコマンドです。 各ロードバランサーで実行します。 from fabric.api import run, cd, abort, require, sudo, env from fabric.decorators import runs_once, roles from fabric.contrib.console import confirm ... @roles('loadbalancers') def start_maintenance(): """ メンテナンス画面に切り替える """ _produc

  • Django アプリサーバ、gunicorn と fastcgi の比較

    概要 最近、会社では、fastcgi より、 gunicorn を使うのがどう? といわれました。gunicorn を触ったことない僕は fastcgi のロードテストも実際やったことなくて、メソッドについて、(prefork がいいか、 threadedがいいか) の読んでいたものを元にした推測しかできない状態で、知識足りないと思った。 gunicorn は何かというと、python で作られた WSGI に対応するウェブサーバーです。同期、非同期ウェブアプリ両方対応できますし、作りがよくてかなりスピーディーそうですし、Django アプリを簡単に組み込めますし、python で運用が楽というのがポイントですね。もちろん、エンドユーザーが直接 gunicorn に接続するのではなく、 nginx のローダーバランサーでプロクシーのが一般的だと思っています。 テストアプリケーション という

  • Django 1.2 の変更のまとめ

    先週、 Django 1.2 が出ました。新しくて、良い機能がいっぱい入っているけども、1.1 からの変更をご紹介しようかと思っています。 マルチDB 1.2 では、一番大きい変更は明らかに マルチDB対応 ですね。 settings.py の DATABASE オプションは DATABASES になりました。それで python 辞書で複数のDBを設定する。 以下のように MySQLsqlite、PostgreSQL、それぞれ違ってても構いません。 DATABASES = { 'default': { 'NAME': 'app_data', 'ENGINE': 'django.db.backends.postgresql_psycopg2', 'USER': 'postgres_user', 'PASSWORD': 's3krit' }, 'users': { 'NAME': 'use

  • mercurial でアクティブなブランチのみを表示する方法

  • virtualenv, virtualenvwrapper, pip を使う方法

    あるプロジェクトの依存は特定なバージョンじゃないとダメな場合が結構多いと思いますけど、最近、pythonの仮想環境を簡単に作れるようになりました。virtualenv と virtualenvwrapper と pip の組み合わせを紹介します。 virtualenvは環境を作ってくれるライブラリで、virtualenvwrapperはその作った環境を簡単に管理してくれるツールになります。 まず、virtualenv と virtualenvwrapper をインストール.

  • Appengine maintenanceが行われる時にメンテナンスページを出す方法

    Google Appengineのメンテナンス時間がある時、datastoreが読み込み専用になるのが多いと思いますが、データを書こうとする時に、CapabilitiesErrorと言う例外が起こる。それを自分のコードうまく処理しないと、500エラーがでて、ユーザには良くない表現になる。 ドキュメントがないけども、実は、Appengine SDKでmaintenanceが行ってるかどうかをチェックできる capabalities と言うAPIがあります。 メンテナンスがスケジュールされて、ある時間以内にメンテナンスを行うかをチェックします。僕は django を使ってるけど、capabilities API に特に依存がないですね。 from google.appengine.api.capabilities import CapabilitySet datastore_write = C

  • Field/column Queries in Django

    One of the neat things making it's way into Django 1.1 is F object queries. The F object is kind of like the Q object as it can be used it queries but it represents a database field on the right hand side of an equality/inequality. For the example I'll use the example models from the "Making Queries" section of the Django Documentation.

    moqada
    moqada 2009/02/05
    Django の新しい F について
  • 1