A required part of this site couldn’t load. This may be due to a browser extension, network issues, or browser settings. Please check your connection, disable any ad blockers, or try using a different browser.

I’m working on a project that needs a simple server side lightweight, scalable message queue. I’m interested in Erlang and Yaws, but the learning curve seems to me incredibly high – not only on the code implementation front, but also the tool and management front. Moreover I have clients – in the people sense of the word – who may not be particularly interested in learning a new language, let alon
memcacheに対するロックを書かずに、リングバッファみたいなキューを作って値を受け渡しする方法が以下の記事で紹介されてました: Memcache lockless queue implementation 値を書き込むときはこんな感じ。例のincrementメソッドでアトミックに連番を取得して、それをキーに値を書き込みます。この連番がキューの先頭になります。 def __nextWriteCounter(self): counter = memcache.incr(self.writeCounter) if not counter: memcache.set(self.writeCounter, 0) counter = 0 return counter一方、値を読み込む時は、キューの最後を示す連番で値を読み、その後incrementメソッドで連番をひとつ増やします。 def read
社内チャットで出た質問。GETパラメータによって呼び出すビューを変えたい場合はどう書くとよいか。 クラスベースのビューを書くと割ときれいに書けるんじゃないかな、という話。 まずは素直に書いてみる。 def index(request): action = request.GET.get('action', '') if action == '': return view_default(request) elif action == 'abc': return view_abc(request) raise Http404 まあ、1回しか使わなくて特に変更も多くない、呼び出すビューの数も少ないというならこれでも良いのだけど、たとえば呼び出すビュー50個とか100個になってくるとメンテするのが大変になってくる。 djangoのviewはcallableであればよいので、クラスベースのビューを
あなたにとって重要なトピックや同僚の最新情報を入手しましょう最新の洞察とトレンドに関する最新情報を即座に受け取りましょう。 継続的な学習のために、無料のリソースに手軽にアクセスしましょうミニブック、トランスクリプト付き動画、およびトレーニング教材。 記事を保存して、いつでも読むことができます記事をブックマークして、準備ができたらいつでも読めます。
Clojureで食っているという者がPythonをfunctional programmingやconcurrencyの観点から批評。Pythonは色々なパラダイムをサポートしようとしすぎて何もうまくできない幼稚な言語になってしまったという結論。 http://blog.bestinclass.dk/index.php/2009/10/python-vs-clojure-evolving/ Functional Programming 簡単なアルゴリズムならclojureとpythonの表現力はさほど変りないが、複雑なものになってくると大違い。それをprojecteulr(http://projecteuler.net/)からの実例で示している。euler4の答だとPythonが4以上のコードサイズになってしまう。 「Euler 4: Finding Palindroms」を参照。 Con
Djangoハッカソンのハンズオンでも好評だったPythonのpdb。 使い方はいろいろあるみたいだけど、とりあえず set_trace は便利なのですぐにでも使ってみるべき。 hello-pdb.py def say_hello(): msg = 'hello world' import pdb pdb.set_trace() print msg if __name__ == '__main__': say_hello() これで実行すると pdb.set_trace() でデバッグ用の対話シェルが実行される。 P:\Python\_sample\hello_pbd>python hello-pdb.py > p:\python\_sample\hello_pbd\hello-pdb.py(7)say_hello() -> print msg (Pdb) msg 'hello world
ちなみに Python 付属の unittest では assertRaises の定義は以下の通り。見ればわかるけど、exception を返してくれない。 ## assertRails は failUnlessRaises の alias def failUnlessRaises(self, excClass, callableObj, *args, **kwargs): try: callableObj(*args, **kwargs) except excClass: ## ここを except excClass, ex: return ex return ## にしてほしかった else: if hasattr(excClass,'__name__'): excName = excClass.__name__ else: excName = str(excClass) raise
Google App Engineのメンテナンス時間がある時、datastoreが読み込み専用になるのが多いと思いますが、データを書こうとする時に、CapabilitiesErrorと言う例外が起こる。それを自分のコードうまく処理しないと、500エラーがでて、ユーザには良くない表現になる。 ドキュメントがないけども、実は、App Engine SDKでmaintenanceが行ってるかどうかをチェックできる capabalities と言うAPIがあります。 メンテナンスがスケジュールされて、ある時間以内にメンテナンスを行うかをチェックします。僕は django を使ってるけど、capabilities API に特に依存がないですね。 from google.appengine.api.capabilities import CapabilitySet datastore_write =
virtualenvwrapper 6.1.2.dev12+g28a70cf¶ virtualenvwrapper is a set of extensions to Ian Bicking’s virtualenv tool. The extensions include wrappers for creating and deleting virtual environments and otherwise managing your development workflow, making it easier to work on more than one project at a time without introducing conflicts in their dependencies. Features¶ Organizes all of your virtual env
Unverified details These details have not been verified by PyPI Project links Homepage Meta License: MIT License (Expat license) Author: Ian Lee Tags pep8 Classifiers Development Status 5 - Production/Stable Environment Console Intended Audience Developers License OSI Approved :: MIT License Operating System OS Independent Programming Language Python Python :: 2 Python :: 3 Topic Software Developm
symfonyのプロジェクトにはバッチスクリプトの作成を支援する機能があるみたい?なので、前々からこれだけはいいなぁと思っていたら、Djangoにもいつの間にか同様の機能ができていた。 アクションを自作する http://michilu.com/django/doc-ja/django-admin/#id23この機能を使って、Postfixで、よくある「携帯の空メール受信処理」を実装してみる。 モジュール構成アプリケーションディレクトリにmanagement/commandsというディレクトリを作って、そこに「アクション名.py」という名前のファイルを作る。ここでは、myvideo.videoというアプリケーションにregisteruserというアクションを作るというケースを考える。まず、モジュール構成を整える。 $ pwd /home/perezvon/myvide $ mkdir -p
ScrapyはPython製のオープンソース・ソフトウェア。Webサービスから必要な情報を抜き出したり、自動操作をしたりと未だに利用されているのがスクレイピングと呼ばれる技術だ。求人、不動産、Eコマース…様々なサイトの情報を機械的に収集し、データベースに蓄積している。 Pythonで外部サイトからデータを収集する際に RubyでWebシステムを開発している場合、HpricotやNokogiriを使っていたが、Pythonによる開発の場合はどうしたら良いだろう。そこで使えるのがScrapyだ。ScrapyはPythonで開発されたスクレイピングとクローリング用フレームワークだ。 ScrapyではWebサイトにアクセスしてデータを取得し、そのデータからXPathを使ってコンテンツにアクセスできる。オブジェクト指向に従って、柔軟に操作ができるのが便利だ。スクレイピングしたデータを使ってWebサイ
python のデコレーター構文 @decorate 解り難い @decorate 構文 Python のデコレーターは理解するのが厄介です。Python のデコレーターは syntax sugar の機能と closure の機能の二つを使って関数オブジェクトを修飾する構文です。でも closure の概念がない C/C++ や Java などの 言語から python も使うようになった者に、三重にネストした関数と @decorator 構文を組み合わせたコード例を使って解説されたのでは脳みそが沸騰するだけです。 私は @decorator を使ったコード例の python virturla machine コードを追跡することで、やっとこさデコレーターを理解しました。私の味わされた苦労を軽減してもらうため、この web page をまとめてみます。 デコレーターを理解した後で考え直し
Kuwataさんの昨日の日記 http://return0.dyndns.org/log/2009/10/06#s_1 を読んで僕はゲラゲラと笑ってしまった。内容的には、Catyスクリプトの分岐処理のマジメな話で、これで大笑いするのは僕だけだろう。 まず、前後の事情を説明すると、昨日Kuwataさんと打ち合わせて、Catyスクリプトの分岐処理をどうすべきかが話題になった。例を示そう。Kuwataさんが出した例と本質的に同じ: ユーザーがログインしているかどうかをチェックする。 トークン(ワンタイムチケット)をチェックする。 フォームデータが適切かどうかをチェックする。 フォームデータを処理する(ここではエラーチェック不要)。 なにかがまずいなら、適切なページにリダイレクト、またはフォーワードする。 常識的なプログラミング言語(擬似コード)で書けば: if (logged_in()) { i
トリビアルな例だが、元の関数(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)の関数名やドキュメント文字列が失われてしまう。デコレータを
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く