Code Archive Skip to content Google About Google Privacy Terms
トリビアルな例だが、元の関数(func)をデコレート・ラップするmydecoratorというデコレータを書いた時、下のように単純にinnerを返すと、 def mydecorator(func): def inner(*args, **kwds): print "Hi, I'm inner!" return func(*args, **kwds) return inner @mydecorator def hello(to): """ Say hello to somebody """ print "Hello, %s!" % to if __name__ == '__main__': print repr(hello) print hello.__doc__ 結果として、 None のように、デコレートされた元の関数(hello)の関数名やドキュメント文字列が失われてしまう。デコレータを
http://groups.google.com/group/comp.lang.python/browse_thread/thread/314a3043ea63319f/ unicode vs s.decode unicodeはLOAD_GLOBALで、s.decodeはLOAD_ATTRでスタックに積まれる。で、LOAD_GLOBALの方が速い。 さらに言えば、何度もデコードを行うのであれば u = unicode のようにローカル変数にするとさらに速くなる。LOAD_ATTRやLOAD_GLOBALは最適化で消すことが出来ないので、明示的にローカル変数に束縛することはCPythonに限らず有効な手法だ。 'utf8' vs 'utf-8' 単なる1タイプの問題だけど、内部的には 'utf-8' が利用されており、 'utf8' を使うと 'utf-8' だと判断するのに1クッション必
なでしこの作者じゃない方のsakatokuです。 以前書いた「Python開発環境を整えよう」という記事からだいぶ時間が経ってしまったので、内容を更新したいなぁと思っていたのですが、ようやくその機会が来ました。 virtualenvで開発環境をつくる 開発環境をつくるにあたって次のような問題が生じると思います。 root権限がないためにインストールしたいライブラリが使えない 新しいライブラリをインストールしたり、既存のライブラリをアップグレードすることで、既に動いているアプリケーションを壊したくない 複数のバージョンのPythonを使って開発、テストを行いたい 自作したPythonパッケージのインストールのテストを行いたい 以前の記事ではvirtual-pythonという解決策を紹介しましたが、現在ではvirtualenvというツールが広く使われるようになってきています。 virtuale
_ OSC2009 Tokyo/Fallで発表しました 昨日「Web開発者に贈る昨今のPython事情」の発表を終えました。 たくさんの方に来ていただき、ありがとうございました。 発表資料を公開しましたので、ご自由にご利用ください。 http://enbug.org/OSC2009TokyoFall.pdf (751KB) 終了後は、何人かの関係者(?)を無理やり付き合わせて、呑み会に突入してました。 付き合ってくださってありがとうございました。 大変楽しかったです。 補足:面倒くさいだろうと思うので、いくつか関連リンクを貼り付けておきます。 distutilsのドキュメントとその日本語訳 - かつての配布ツール Twisted - イベント駆動ネットワーキング Zope - フレームワーク eggの説明とeggのフォーマット仕様 - Pythonのパッケージ・システム setuptool
今の開発してるサービスは、nginx 0.6.36とかをつかって開発してたのですが、 ふと気がつくと、stableは0.7.60とかになってるので、nginxのアップデートをした。 もともとwsgiを使えるようにしたnginxのebuildを0.6系のために書いていたのだけれど、それでは0.7.60はコンパイルが通らないようになってた。 Gentoo BugZillaも見てみたけど、いまいちそのまま使えるebuildはなさげだったので、自分でpatchとebuildをでっち上げた。 とりあえず、動いてるようなんだけれども、これでいいかどうかはよーわからん。 とりあえず、ebuidとパッチを貼り付けてみる。USEフラグにpythonがはいってると、mod-wsgiが組み込まれる。 基本的には、もともとportageに含まれる0.7.*のものをコピーしてきて、 wsgiをadd-moduleし
ちょっと古いけど。 デブサミ会場で、雑談していると「PythonはDISらないんですか」と柴田さんから。なんか自虐的じゃない? とは言うものの、Pythonは基本的に良い言語で、 不満な点はかなり微妙だ。一般人にはどーでもいいような点だと思う。 一応リストを。 式と文の区別が明確。 インデントベースだとeRubyのようなテンプレートが難しい ブロックを含む式を持てない。Haskellみたいにブレースを使えば式にできるといいのに reduceがなくなる generator難しい。yieldを書くと戻り値が変化するってのはどうよ list comprehensionが難しい。英語人には人気みたいだけど Matz日記:PythonをDisる。 「Python は基本的によい言語」には同意。Rubyist でも、使ってもないのに Python を DIS る人がいるのは残念。インデントベースが嫌い
おはようございます。うちだです。 最近Google App Engine(GAE)で何かを作りたくなってきました。何を作りたいわけでもなくGAEで何かを。 しかし、PythonでWebするのはド素人な為、まずは周辺技術を調査し列挙することにします。 完全なチラシの裏です。 PythonのWeb関連技術 Django ・学習コスト大 ・Django | The Web framework for perfectionists with deadlines ・Django ドキュメント -- Django v1.0 documentation TurboGears ・学習コスト大 ・merbみたい ・TurboGears: Front-to-Back Web Development Pylons ・学習コスト大 ・railsに影響を受けているらしい ・merbみたい
Does the web look weird? Ugly? Perhaps that's because your browser does not support the CSS standard. I recommend you consider updating it. Without CSS, this and other pages are visible, but nothing like they were meant to be. A very good free browser with support for all standards is Firefox. For information about standards and why they are important, please visit the browser upgrade campaign. St
Perlを勉強する合間に、分け合って(というか授業の関係で)Twistedを使うことになった。しかし、あまりにも日本語のドキュメントがなくて悲しい思いをしたので、自分のために肝の部分だけココにメモっておこうかと思う。 TwistedについてははTwistedスプリント - Python Developers Camp 2006 Summerが日本語でくわしいところのかなり上位っぽい。 ほんとはTwistedはかなりいろんなことができるようなのだけど、うちも使いはじめたばかりなので、一番基本的っぽいTCPによるサーバクライアントなコードをてっとりばやく書くのに必要なポイントだけを。 使うもの 以下の三つがあれば、とりあえずクライアントとサーバが書ける。 Protocol Factory reactor 最低限Protocolのコードを書けば良くて、Factoryとreactorは使うだけでも
from twisted.internet import reactor def printMsg(): print 'test message' reactor.stop() reactor.callLater(0, printMsg) reactor.run() class MyProtocol(protocol.Protocol): made = 0 closed = 0 def connectionMade(self): self.made = 1 print self.transport.getPeer().host self.transport.loseConnection() def connectionLost(self, reason): self.closed = 1 print 'connection lost' class TCPClient(protocol.Cl
Pythonにはじめて触って、いつのまにか1年が過ぎたのですが、一番はまったのは、やっぱりunicodeの扱いだったと思います。 特に、 UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-12: ordinal not in range(128) のようなエラーにはさんざん悩まされました。ここがたとえばrubyなど他の言語と比べてわかりにくいために、Pythonが取っつきにくい言語になっているのではないか、と個人的には思います。 そこで、このエラーに関係するはまりどころとTipsをいくつか列挙してみました。これからPythonに触れられる方の参考になればと思います。 なお、環境はUNIX上のPython 2.4, 2.5を想定しています。 u1はunicode型で、s1はstr型です。s1にどのよ
IPythonとは IPythonとは、Pythonistaの中で絶大な人気を誇るインタラクティブシェルです。 Pythonはもともとインタラクティブシェルを内蔵しているのですが、 IPythonには内蔵のインタラクティブシェルと比べて多くの利点があります。いくつか挙げてみます。 動的補完 変数名などを途中まで入力した状態でTABキーを押すと、残りを補完してくれます。 候補が複数ある時は候補一覧を表示してくれます。 シンタックスハイライト プロンプトなどに色がつきます。ちょっとうれしいです。 通常のシェルとしても利用可能 IPythonの中で、lsでファイル一覧を見たり、cdでカレントディレクトリを移動したりできます。 !vim のようにエクスクラメーションマークに続いてコマンド名を入力することで、コマンドの実行もできます。 さらに、コマンドの出力がPythonの変数に格納され、Pytho
普通にセッター使って、データを更新して、最後に commit するだけ。 User.mapper = mapper(User, users) # create a new User myuser = User() myuser.user_name = 'jane' myuser.password = 'hello123' # create another new User myuser2 = User() myuser2.user_name = 'ed' myuser2.password = 'lalalala' # load a third User from the database sqlmyuser3 = User.mapper.select(User.c.user_name=='fred')[0] myuser3.user_name = 'fredjones' # save
Explore ScreenShots SuccessStories Press FAQ HowToHelp Support (and Paid Support) Utilities Security Licensing Plugins StatisticsCollection Documentation Buildbot Tutorial Buildbot Manual (latest release - see other versions) NineMigrationGuide -- help for migrating from 0.8.x to 0.9.x HelpfulPages Development and Administrivia Development (@ GitHub) Nine - work on the next generation GSoC and
Google Developer Day 2008 に行ってきました。 で、基調講演聞いたあと、Google App Engine のコードラボに参加してきました。 まぁ簡単に言うと Hackathon です。 画像掲示板つくってみる ユーザ登録&認証 コメント付加 古いデータは消す な画像掲示板を書いてみました。 #!/usr/bin/env python # -*- coding: utf-8 -*- import wsgiref.handlers, cgi from google.appengine.api import images from google.appengine.api import users from google.appengine.ext import webapp,db class ImageAndText(db.Model): user = db.User
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く