ropevim を使う

インストール に続いて、実際に rope を使い始めてみます。 とりあえず Flask アプリを題材に環境を作ってみます。 準備 $ mkvirtualenv flask $ pip install flask $ mkdir hello $ cd hello app.py を作ります import flask app = flask.Flask(__name__) @…

ropevimをインストールしてみる

rope とは Python で書かれた、 Python コードに対するリファクタリング等を行うためのモジュールで、主に IDE やテキストエディタに高度な Python のサポート機能を追加するために利用されています。 私はかなりのデフォルト教信者でたいてい IPython と最…

Python で TDD してみる

RSpec の入門とその一歩先へ がとてもよい記事だったので、 Python で写経させてもらいました。 https://github.com/methane/pytest-tut Ruby コミュニティと Python コミュニティの考え方の違いも見えて面白いと思います。 環境は Python 3.3 で、実行には …

スライスは Project Eular でも大活躍

id:hnw に感化されて、 Project Eular で遊び始めました。 今のところ Python 3.3 と Haskell で挑戦していて、 Python ならだいたい1分〜5分で解けるけど Haskell だとまだまだどう書いたらいいのかわからない場面が多いですね。これからgoもやっていきます…

Python のカッコ無いところを紹介してみる

Haskellのカッコいいところを紹介してみる をみて、 Python と比較してみようと思います。 以下、 heading は上記記事の heading の引用で、 Python のことではなく Haskell の特徴です。 数学や英語の知識で「読める」表現が多い 一応、 instanceof など多…

Flaskの闇

Merry, Xmas. Python advent calendar 2012 (#python_adv) 24日目の記事を、ミクパの再放送をBGMにお送りします。 今日は Flask のイケてないところとのつきあいかたを紹介します。 循環 import 問題 app.py 1ファイルだけの構成から成長してファイルを分け…

Flaskのカスタマイズについて

2012 Pythonアドベントカレンダー(Webフレームワーク) #python_adv の5日目の記事です。 明日は @altnight にお願いします。 Flaskはオモチャじゃないよ PyCharmなどのIDEがFlaskに対応を始めたり、Flask はそろそろ Django に続く Python の Web フレームワ…

勝手に添削 (C vs Python vs Ruby vs Haskell(ナンバリングdeベンチマーク))

C vs Python vs Ruby vs Haskell(ナンバリングdeベンチマーク) を勝手に添削。 今回は話題的に最適化するにはバイトIOにするとか出てきて面倒なので省略して、 Pythonic にするだけ。 元のコードは import sys argvs = sys.argv del argvs[0] for i in rang…

勝手に添削 (C vs Python vs Ruby vs Haskell(無意味な処理deベンチマーク))

なんか指名されたので、 C vs Python vs Ruby vs Haskell(無意味な処理deベンチマーク) このコードを Pythonic に書き直していきます。 ちなみに、 Python は 3.3 を使います。 まず、最初のコード n = 4000 a = [] count = 1 for x in range(n): a.append…

移行しました

はてな記法毎回忘れるのが苦痛だったので Markdown 使えると聴いて乗り換えました。GJ!

標準入出力のエンコーディングを指定する3つの方法の使い分け

そこまでおっしゃるなら、というわけで書いたのが以下。 #!/usr/bin/env python3.2 # -*- coding: utf-8 -*- import sys, os if 'PYTHONIOENCODING' in os.environ: for line in sys.stdin: chars = list(line.rstrip()) print('☆'.join(chars)) else: os.en…

Python 3 の標準入出力のエンコーディング

404 Blog Not Found:備忘録 - #python3 で sys.std(in|out|err) の encoding を強制する というわけでこうなりました。 import sys sys.stdin = open('/dev/stdin', 'r', encoding='UTF-8') ... 無理矢理開き直すなんてずいぶんと乱暴だと私も思うのですが、…

Mac OS X で VirtualBox を使って Linux を併用する

会社から借りているマシンを、Ubuntuデスクトップをインストールした ThinkPad X200 から MacBook Air 13" 2012 に交換してもらった。人生初Macなんだけど、いきなり開発環境を総入れ替えするのは難しいし、オフラインでも使える Linux 開発環境はずっと欲し…

bzrのリポジトリをgitに変換する方法 (fast-import編)

bzr

bzr-git を使う以外に、 fast-import を使う方法があります。 単に乗り換えるために変換したい場合は、こちらのほうが高速で楽です。まずは、 bzr の fastimport プラグインを用意します。 $ pip install fastimport $ cd ~/.bazaar/plugins $ bzr branch lp…

ipython 0.12 と virtualenv を同時に使う方法

ipython と virtualenv を同時に使う方法 - Ian Lewis はとても便利な設定なので参考にさせてもらっていたんだけれど、 IPython 0.12 からは設定の方法が変わったのでこの設定方法では動かなくなった。IPython 0.12 での設定方法は、 (1) ipython profile cr…

Ubuntu 12.04 で Python 2.6 をビルドする

Ubuntu 12.04 でもまだUbuntuパッケージとして Python 2.6 が提供されているのですが、将来消えるのかもしれないのでそろそろ後方互換性確保用の 2.6 は自前ビルドをしておくことにしました。Python をビルドするとき、 Ubuntu 11.10 からだと思うのですが、…

バージョン番号を2度書かないために

Python では、下らない問題は、賢く綺麗に解決しようとせずに、 Python 本体が持っている柔軟さを使って強引に解決する方が楽な場合があります。 問題ごとに綺麗な仕組みを作ってしまうと、新しく Python を覚えるひとは無数にある下らない問題の数だけ用意…

Python-dev ML watch: 文字列リテラルに u プリフィックスがつきました。

更新が滞っているので、 Python-dev の ML の内容を伝える記事を気が向いた時に書くことにします。Python 3.3a1 がリリースされましたが、その直後にコミットされたのが、文字列リテラルのu プリフィックスです。この prefix は、 Python 2 と 3 に同一のコ…

bzr-git で快適 github 生活

bzr

Bazaar のホスティングサイトとして、 Launchpad があります。これはプロジェクトをまたぐ Issue Tracker やオンラインの翻訳システムが含まれており、 Ubuntu の開発に大活躍しています。 しかし、 Launchpad は github や BitBucket とは異なり、ユーザー…

本当は怖い軽量チェックアウトの話

bzr

前回は、作業ツリー上でコミットすると、別の場所にあるブランチに新しいリビジョンが追加されるチェックアウトについて説明しました。 今回はチェックアウトの別の仕組みである軽量チェックアウト (lightweight checkout) について説明します。 軽量チェッ…

[bzr] チェックアウトとブランチの使い分け

bzr が git や hg と大きく異なるのは、メインラインの概念とチェックアウト機能だと思います。 メインラインについては昨日の Advent Calnedar で wonderful_panda さんが解説してくれました。(ブランチのメインラインのイメージについてしゃらくさい話をす…

Python の GC のデバッグ機能

Python のデーモン型のプログラム(具体的に言うと Loggerhead という bzr のリポジトリブラウザ)が大量(具体的に言うと100MB以上)メモリを食っていたので、それを調べた時のメモ。まず、本当にそれだけのメモリを利用しているのかどうかを meliae という…

Python3 Advent Calender 3日目 - New GIL を理解する

2011 Pythonアドベントカレンダー(Python3) - connpass の3日目を担当します。Python 3 がリリースされてから、 Python の進化は主に Python 3 で行われ、そこから Python 2 にバックポートできるものがバックポートされています(例: GCのチューニング、辞…

bdist_dumb --relative を使って絶対パスを固定せずにインストールできるバイナリ配布物を作る

Python のバイナリパッケージは、Linux 環境ではあまり使われない。 ソースからインストールする文化があるのと、Unicode の内部表現を選択する configure オプションなどによってバイナリ互換性が失われるケースがあるからだ。でも、同じLinuxディストリビ…

Python の GIL 排除のために Software Transactional Memory が注目されている理由

あるいは、Pythonは参照カウント方式だからGILを排除できないという誤解に対する回答。参照カウントってアトミックなインクリメント・デクリメントさえあればセマフォとか使わないでも並列化できるんで、パフォーマンスが滅茶苦茶落ちるということはない。参…

Google Developer Day 2011 の DevQuiz に Python で挑戦した (スライドパズル)

一部の問題は解くのに利用したパラメータがハードコードされている値と違うことがありますが、一応5000問全部解きました。全体: https://github.com/methane/gdd11/tree/master/slideCythonコード: https://github.com/methane/gdd11/blob/master/slide/_sli…

Google Developer Day 2011 の DevQuiz に Python で挑戦した (一人ゲーム)

https://github.com/methane/gdd11/blob/master/hitori/hitori.py問題読んだあとシャワー浴びながら考えて、深さ優先探索で事足りることを確信して一気に書いた。

Google Developer Day 2011 の DevQuiz に Python で挑戦した (webgame)

https://github.com/methane/gdd11/tree/master/webgame普通は Chrome エクステンションとか FireBug のコンソールとかで挑戦すると思うんだけど、HTMLのソースを見た方が早いので、スクレイピングで解いた。

watchdog と paramiko を使って、ローカルで編集したファイルを瞬時にサーバーにアップロードする

ローカルのファイルシステムの監視。WindowsではGetDirectoryChangesW(だったっけ?)とかいうAPIがあって、Linuxにはinotifyがあるし、Macにもなにか手段があるはずなんだけど、 http://packages.python.org/watchdog/installation.html watchdog というラ…

スレッドを使うプログラムが Ctrl-C で止まらない件

常識かと思ってたけど、、、 while True: thread.join(0.5) join() メソッドを呼ぶときに、タイムアウトを設定して、ループする。こうすると、KeyboardInterruptを受け取れる。

このブログに乗せているコードは引用を除き CC0 1.0 で提供します。