python

Pyramidを使ってみる

Creating a Pyramid Project — The Pyramid Web Application Development Framework v1.4.9 を参考にしながら作ってみます。 とりあえず環境を作ります。virtualenv + virtualenvwrapper は導入済みとします。 $ mkvirtualenv pyramid $ pip install pyramid…

当日スタッフからみた PyCon JP 2012

PyCon JP 2012 に今年も当日スタッフとして参加してきました。 1日目 会場到着 -> 受付セットアップ -> 11:00まで受付 -> 食堂/テラスのお手伝い -> 433教室ヘルプ -> 休憩 -> 受付 -> LT視聴 -> 片付け -> Party だいたいこんな流れでした。 初っ端の受付…

Fabricでサーバー管理をDRYにしよう

kyoto.py in 高槻でLTしてきました。LTといいつつ、たぶん5分以上かかってたと思う。 Fabricでサーバー管理をDRYにしよう from max747 簡単なデモとかも用意はしていたんですが、明らかに時間足りなさそうだったのでカットしました。興味ある方は自分で触っ…

urlopen で HTTP Header などのデバッグ出力を表示する

HTTP Header が見えるブラウザ拡張入れればいいじゃない、という話は置いておいて。 >>> import urllib2 >>> >>> handler = urllib2.HTTPHandler() >>> handler.set_http_debuglevel(1) ## ここで debuglevel を設定。1,2,3 を試したけど結果は同じでした >>…

is 演算子は同一性、== 演算子は等価性

「初めてのPython」で読んだような気がするのだけど、すっかり忘れてしまっていたので。ちょっと検証してみます。 >>> class Foo(object): ... def __init__(self, x): ... self.x = x ... def __eq__(self, arg): ... return self.x == arg ... >>> >>> f =…

MIME エンコードされた email の Subject をデコードする

メモしておかないと忘れそうなので。 # email.parser.Parser と email.header.decode_header をつかう >>> from email.parser import Parser >>> from email.header import decode_header # テキストファイルで保存されている email を開き、パースする >>> …

ニコニコ動画の再生数、コメント数、マイリス数を定点観測するスクリプト

某氏から「最近日記書いてないですね」と言われたので書きますよー。 とある事情から、ニコニコ動画の特定の動画に関して再生数、コメント数、マイリス数の伸びを観測する必要が生じたため、観測用のスクリプトをでっち上げてみました。 情報の取得には、ニ…

バックアップスクリプトを改造した

昨日のエントリで晒したバックアップスクリプトを少し改造してみた。 修正点 svnadmin hotcopy した後に、複製先リポジトリを tar+bzip 圧縮して、圧縮前のリポジトリを削除するようにした。 スクリプト #!/usr/bin/env python import os import popen2 impo…

svn repository をバックアップするスクリプト

昨日 svn を運用しているサーバのディスクに障害が発生して、昨日今日はその復旧作業でほとんど潰れてしまった。 2枚差しのディスクのうち片方が動作不良になってサーバが固まってしまった。 強制リブートしてみたが、OS起動時のログを見る限り、上手く認識…

Brainf*ck in Python

箱根駅伝を見ながら、Python で brainf*ck インタプリタを実装してみました。 すでに偉大なる Pythonista 達の手により行われていること*1ではあるのですが、あえて車輪の再実装です。 *1:http://www.google.co.jp/search?q=python+brainf*ck&ie=UTF-8

twitter の発言ログを拾う python スクリプト(やっつけ)

新年初プログラミングということで、twitter の発言ログを拾う python スクリプトを書いてみました。 目的は mixi の日記に箱根駅伝関連のポストを貼り付けるためです。 必要なライブラリ python-twitter (http://code.google.com/p/python-twitter/) twitte…

UTF-8 の BOM を消す

UTF-8 なファイルに BOM がついていると、 javac でコンパイルが通らなかったり*1 Velocity で結合したときにゴミが入ったりと色々面倒なので、BOM を消すスクリプトを書いてみました。 *1:Eclipse のコンパイラだとなぜかOK

Django 本が届きました

が、先に「初めてのPython」を片付けなければ・・・!開発のプロが教える標準Django完全解説―Webアプリケーションフレームワーク (デベロッパー・ツール・シリーズ)作者: 増田泰,中居良介,露木誠,松原豊出版社/メーカー: アスキー・メディアワークス発売日: 200…

ニコニコ動画のタグ検索結果をスクレイピング

まだ作りかけだけど、とりあえずデータは取ってこれるようになったので晒す。 # -*- coding: utf-8; -*- import time, urllib import nicoapi from BeautifulSoup import BeautifulSoup def geturl(page): baseurl = 'http://www.nicovideo.jp/tag/' tag = u…

やっつけスクリプト(3)

とりあえず晒します。要件: 元コンテンツのHTMLファイルはテンプレート言語が入っていて、そのままローカルでブラウザに食わせると変な画面になるので、ローカルでアプリサーバをあげて、アプリサーバ経由でHTMLをとってきて保存する。 HTTP GET するファイ…

初めてのPythonを読んでみる(8)

13章 スコープと引数 スコープには以下の3つがある。 グローバルスコープ ... モジュールのトップレベル ローカルスコープ ... 関数の呼び出し単位 ビルトインスコープ ... 言語組み込みのスコープ。 __builtin__ で定義されている変数が所属 >>> x = 1 >>> …

初めてのPythonを読んでみる(7)

9章 ifステートメント 9.2 [], () 内は改行可能。インデントレベルも無視 9.3 if で評価した結果戻されるのが、true や false でなく、オペランドになっているオブジェクトである点に注意 >>> 2 or 3, 3 or 2, 2 and 3, 3 and 2 (2, 3, 3, 2) ruby でも実験 …

初めてのPythonを読んでみる(6)

風邪引いた。鼻かぜ。だるくて色々めんどいです。 8章 代入ステートメント、式ステートメント、printステートメント 8.1 拡張代入ステートメントを使うと、いいことが3つある タイピングの手間が省ける 演算子の左側のオブジェクトの評価が一度で済む 速度面…

初めてのPythonを読んでみる(5)

7章 タプル、ファイルオブジェクト、その他 7.1 タプルはリストにかなり似ているが、不変オブジェクトである タプルにはメソッドがない >>> t = 1,2,3 >>> t (1, 2, 3) >>> dir(t) ['__add__', '__class__', '__contains__', '__delattr__', '__doc__', '__e…

初めてのPythonを読んでみる(4)

データ構造の話がしばらく続きます。今回はリストとディクショナリ。まさにPythonのキモの部分(俺が勝手にそう思っているだけだが)ですね。 6章 リストとディクショナリ 6.1 リストは、オブジェクトを一定の順序で並べたもの インデックスを使って要素にア…

初めてのPythonを読んでみる(3)

飲み会とか色々あり、ちょっと間が空いてしまった。本日は5章のみ。 5章 文字列 文字列はシーケンスの一種。 5.1 Windows のディレクトリパスのような \ を多く含む文字を扱うときは raw 文字列が便利 r'foobar' のように r をつけると raw 文字列 raw は「…

初めてのPythonを読んでみる(2)

章番号だけだとあとで見たときにわかりにくいので、せめて章タイトルくらいは書くことにしよう。 4章 数値 4.1 プログラム > モジュール > ステートメント > 式 > オブジェクト 4.2 機能面、パフォーマンス面、可読性などの点から、なるべくビルトインオブジ…

自己参照するリスト

初めてのPython 3章の演習問題より。 >>> L = [1, 2] >>> L [1, 2] >>> L.append(L) >>> L [1, 2, [...]] >>> L.append(L) >>> L [1, 2, [...], [...]] >>> L[3] [1, 2, [...], [...]] >>> if L[3] == L: ... print 'OK' ... OK >>> L[0] 1 >>> L[3][0] 1 >>…

初めてのPythonを読んでみる(1)

これまでは、中途半端にスクリプト書き散らすだけだった。ここらでひとつ、マトモに使いこなせるようになるために一度体系的に勉強しなおしてみるのもいいだろう。というのがきっかけです。 1章 PythonについてのQ&A ざっくり流して終了。 2章 Pythonプログ…