タグ

ブックマーク / taichino.com (7)

  • Djangoでソーシャルアカウントを扱う – taichino.com

    先日の番付メーカーではTwitterとFacebookのアカウントでログインできるようになっています。 ソーシャルアカウントを使うと、地味なくせに工数のかかるユーザ管理を実装せずにすむので助かりますね。ところがソーシャルアカウントを扱うのも楽チンとまでは言えません。そもそもOAuthの処理を実装するのも面倒ですし、TwitterとFacebookを両方扱うとなってくると割と大変です。加えてGoogle+だYahooだとなってくると頭が痛くなってきます。 Hextrisを作ったときは自前でTwitterのOAuthでのログイン処理を書いたのですが、今回はFacebookアカウントも扱うというので複雑度が3倍くらいになって面倒です。 これはアカン、なんか無いのと思って調べてみるとDjango-Social-Authというナイスモジュールが見つかりました。これはDjangoのアプリとして実装され

  • DaemonContextでpythonスクリプトをデーモン化する – taichino.com

    pythonでデーモンを書きたいと思って、調べてみると「Pythonでprefork型のデーモンを書く」という記事を見つけました。この内容が素晴しくて、プロセスもデーモンも初心者な僕でも処理の大枠を理解できました。 それで、デーモン化する為のモジュールってあるんじゃないのと思いpypiを見てみると、複数のモジュールが登録されていました。その中で一番リッチな機能を持つDaemonContextを使ってみる事にしました。 インストールはeasy_installで一発です。 $ easy_install python-daemon 使い方も簡単でDaemonContextオブジェクトを作成して、そのwith構文中がDaemon化されます。 #!/usr/bin/python # -*- coding: utf-8 -*- from __future__ import with_statement

  • Pythonでタイムゾーンを扱うメモ – taichino.com

    だと普段扱わないので、忘れがちなタイムゾーンの処理をメモ書きです。ここでは例として、日時間とアメリカ東海岸標準時の変換してみます。 まず標準ライブラリだけで処理すると以下のような書き方をするようです。各時間帯ごとにdatetime.tzinfoを継承したクラスを作成し、その中でUTCからの時間のずれ等を設定します。 #!/usr/bin/python # -*- coding: utf-8 -*- import datetime # 日時間 class JST(datetime.tzinfo): # UTCからの時間のずれ def utcoffset(self, dt): return datetime.timedelta(hours=9) # サマータイム def dst(self, dt): return datetime.timedelta(0) # タイムゾーンの名前 de

    lanius
    lanius 2010/12/29
    pytzが便利。
  • Pythonで実行時間とメモリの測定をする – taichino.com

    しばらくベンチマークコードを書いてなくてすっかり忘れていたので、メモ書きです。今回は例題として、yahooのこのページをBeautifulSoupとlxmlでのスクレイピング比較をしてみる事にしました。比較対象の関数は以下の通りです。どちらのコードも入力・出力ともに同じなので、どちらが実行時間やメモリ使用量が少ないのかを知りたくなりますね。 # BeautifulSoup def scrape_with_bs(html): from BeautifulSoup import BeautifulSoup soup = BeautifulSoup(html) rows = soup.find('table', attrs={'class':'channel9'}).findAll('tr') channels = rows[0].findAll('td', attrs={'class':'st

    lanius
    lanius 2010/10/06
    BeautifulSoupよりlxmlのほうが速い。
  • Pythonでいろんなバイナリファイルを覗いてみる – taichino.com

    プログラマをしていると、ちょくちょくバイナリデータから情報を読みたくなりますね。そんな時は、ブツブツ言いながらバイナリエディタと睨めっこすることになるわけですが、これが結構大変なので、何とか楽にならないかなぁと思って探していると、hachoirというナイスなpythonモジュールが見つかりました。このモジュールを使うとバイナリデータをパースして様々なデータを取得できます。かなり多くのデータフォーマットに対応している(現時点で70種類)のが素晴らしいです。 hachoirはいくつかのモジュールに分かれているのですが、大抵は以下をインストールすれば良いと思います。 $ easy_install hachoir_parser $ easy_install hachoir_metadata このモジュールにはhachoir-metadataというコマンドラインツールが含まれていて、コードを書かなく

    lanius
    lanius 2010/08/03
    hachoirモジュールの話。
  • オンラインCookbookを集めてみた – taichino.com

    最近Python クックブックを良く眺めているのですが、Cookbookをまじめに活用しているのは実は初めてです。以前はプログラムは動けば良いと思っていたのですが、pythonを使い始めてから、他の言語を使う時も「どう書くのが正解なのか」を結構意識するようになりました。そうするとCookbookが非常に役に立つわけで、オンラインで使えるCookbook・逆引きサンプル集的なサイトを集めてみました。 python周辺

  • pythonのORMを色々試してみた – taichino.com

    そろそろpythonでもSQLを直に書くのが面倒になってきたので、O/Rマッパーを探してみたところ、幾つか種類があったので有名どころを使ってみることにしました。今回試したのは以下の4つです。 SQLAlchemy SQLObject Elixir Storm まず用途についてですが、僕はテーブルスキーマはSQLで直に書きますので、ORMでDDLを扱うつもりはありません。DMLを簡単に扱いたいというのが一番の目標です。そこで予め作成して置いたテーブルに対してCRUD操作のし易さを比べてみました。比較に使用したのは以下のテーブルです。 CREATE TABLE `books` ( `id` int(11) NOT NULL AUTO_INCREMENT, `title` varchar(100) DEFAULT NULL, `price` int(11) DEFAULT NULL, `isbn

    lanius
    lanius 2009/12/14
    PythonのORM比較。SQLObjectがよさそう。
  • 1