追記: t2yさんが翻訳してくださいました。 argparseコマンドラインオプションと引数の解析 python 2.7からコマンドラインの引数を解釈するargparseモジュールが標準で入りました。 従来使われてきたoptparseは廃止されます。ただし、広く使われているところから他の廃止されるモジュールとは異なり消されることはなく、警告も標準では出ません。 optparseからargparseに移行する理由や廃止の進め方はPEP 389に記載されています。 以下にPEP 389の和訳を(訳に自信がない場所がありますが)行ないましたので参考にしてください。 http://www.tdoc.info/PEP-ja/389.html というわけで、ざっとargparseの使い方を勉強したのでここに公開します。間違ってたらご指摘ください。 なお、ちゃんとしたドキュメントは http://doc
ログ解析ツールを作っててノッテきてつぶやいたら、 ログ解析ツールを python で書いているときの嬉しさを誰かに共有したい、本当に簡潔に書けて便利なんだよ 2010-11-18 20:29:14 via TweetDeck @t2y 例題とかみてみたいです。 2010-11-18 22:37:54 via TwitBird to @t2y と言われたのでオプションで指定した条件のログを抽出する簡単なサンプルを作ってみました。あくまで私はこんな感じで実装しましたが、他にもっと良いやり方があったら教えてくださいm(_ _)m 私の使い慣れている言語が Python と bash シェルスクリプトと C 言語(嘘です、慣れてません!)しかないので、この中で言えば Python しか選択肢がないですよねというのが本当のところでした(^ ^;; 先ずはログ解析のサンプルプログラムを紹介します(要:
Python3には、2系で作られたコードを3用に変換する案をパッチを生成する2to3というコマンドラインツールが付属してます(本体はlib2to3という標準モジュール群)。たとえば、エンコード引数つきのunicode関数でも、そのままエンコード引数が存在しないstr関数に変えるなど、変換も完璧ではないけれど、たいていのコードは3で動くようになります。 しかし、変換してしまうとそのコードは2系では動かなくなります。ということで、2系でも3でも両方で動くようなコードを書くのはどうすればいいか、を考えてみました。 両方で動くようにするには、ない機能を使うわけには行かないので、どうしても共通部分のみでかかざろうえません。なのでお勧めはできないのですけど、一応両方で動かす前提で書くことを考えてみました。 print 関数風にカッコつき呼び出しにする(ただしprintのみの一行で) print(obj
Python 3.x系では、まぎらわしいライブラリが整理され、名前変更や統合が行われました。 そして、それは「urllib」と「urllib2」にも行われたようで、これらのライブラリは「urllib」として新しく生まれ変わりました。 正直、これまでの「urllib」と使い方も変わってしまったので、ここで記しておこうかと思います。 #!/usr/bin/env python # -*- coding: utf-8 -*- import urllib.request def open(url, proxy=None): opener = urllib.request.build_opener() if proxy: proxy_dict = {'http':proxy} proxy_handler = urllib.request.ProxyHandler(proxy_dict) opener
Apache/modwsgi環境でサイトルート直下以外にDjangoを設置する方法。 Djangoのプロジェクトをサイトルート以外にデプロイする-解決編 - 偏った言語信者の垂れ流し 以前同じようなタイトルで書いたのだけど、そのときはDjango0.97preだったので、Django1.2の場合どうなるか書く。 1.2では、パスの問題なども解決されて、問題なく動くようになっている。 通常通りwsgiの設定にすればok。 Django以外も含めて注意点としては、 URLはreverseやurlタグなどの逆引きを使う 静的なメディアには {{ MEDIA_URL }} のプレフィックスをつける javascriptで絶対パスを利用する場合はMEDIA_URLを渡す cssでパスを使う場合は相対指定にする ぐらいです。 例 ディレクトリ構成 myproject |-- __init__.py |
gevent: A coroutine-based network library for Python - http://www.gevent.org/ 知らない人はあんまりいないと思うので、説明は割愛。 erlang:spawn(module, fun, args) みたいに gevent.spawn(fun, *args, **kargs) って出来るんですね、これは良いものですね。 gevent.select と gevent.socket を使ってみました。gevent.select は epoll とか kqueue にうまいこと置き換えてくれる感じかな。 gevent.monkey がオモシロですね、既存の socket や select を置き換えてくれるみたいです。これはイイ:-) import gevent import gevent.socket import gev
はじめに 組み込みアプリケーション開発、特にセットトップボックス(STB)やデジタル家電、携帯電話などそれなりのUIを要求される製品の開発では、Webブラウザを搭載しユーザーインターフェース(UI)をHTML+JavaScriptで構築することがあります。この手法のメリットとして以下のようなことが挙げられます。 UIとロジックの分離 家電製品に搭載するような画面の動きをプログラマが全てコードで記述しようとすると大変です。UIをHTML(+CSS)で記述できれば画面作成はデザイナーにお願いし、プログラマーはロジックに集中できます。最後のUIとロジックの結合作業はプログラマー側に残りますが… 開発工数の削減 UIをHTMLで記述できれば、C/C++やJavaで記述するのに比べて開発効率の向上が見込まれます。それに伴い、工数削減、開発期間短縮が期待出来ます。 豊かな表現力、操作性の実現 ブラウザ
意外と知られていないようなので、NLTK BookのSegmentationの節にある教師なし形態素解析(単語分割)について紹介してみます。 この手法では、テキストを「単語の辞書」と「単語IDの列」で表したときにその合計サイズが最小になるように単語分割の位置を最適化します。言い換えれば、単語の出現確率に一様分布を仮定して圧縮したときに、その圧縮効率を最大とするように単語を分割します。持橋さんの研究よりはるかに単純なモデルですが、原理としては近いものになります。最適化にはシミュレーテッドアニーリング(焼きなまし法)を使っていて、適当に初期化してからランダムに単語分割位置を変えて、評価関数にかけて良い結果になったら採用する、という操作を繰り返し行うものです。 NLTK Bookでは、英語のテキストからスペースを取り除いたものを用いて単語を抽出しています。これはかなり恣意的に選ばれたテキストで、
やっとPythonのクロージャの仕組みを少しは理解した件 で、清水川先生がクロージャを返すとき実行中のフレームオブジェクトが保存されるのか?という疑問を呈されている。 結論から言うと、フレームオブジェクトは保存されず、クロージャが必要とするオブジェクトだけが残される。この辺の仕組みがを簡単に解説してみよう。尚、以下の解説はPython2のものであり、Python3については未調査である。 例として、こんな関数を考えてみよう。 def func(): a = 100 b = 200 c = 300 def func2(): return a, b a = 400 return func2 この例では、func2 は func のローカル変数 a と b を参照するクロージャである。実行すると、(400, 200) を返す。 さて、関数を実行中、そのローカル変数は "セル"(cell)というオ
2010/11/05 pylabでMemoryErrorが消えなかった原因がようやくわかった! なんか、Python 2.6でMatplotlibのサンプルを動かそうとしたら、変なエラーが出て困った。結果からいうと、 C:\Python26\Lib\site-packages\matplotlib にあるfont_manager.pyに local = None という1行を加えるだけで解決するんですが、これがなかなかGoogle検索で出なくって、フォントが壊れてるだかなんだか、いろいろやる羽目になりました。 for fontdir in MSFontDirectories: try: local = _winreg.OpenKey(_winreg.HKEY_LOCAL_MACHINE, fontdir) except OSErro
In Yaco we've been working on improving our development and deployment process lately and I think it's time we share our achievements and mistakes with everybody. Besides python and Django being our core tools, some of the key technologies that we use are buildout, nginx, uwsgi, rpm, fabric, openvz and proxmox. So it's quite clear that you need to know a bunch of things to accomplish something pow
みんなのIoT/みんなのPythonの著者。二子玉近く160平米の庭付き一戸建てに嫁/息子/娘/わんこと暮らしてます。月間1000万PV/150万UUのWebサービス運営中。 免責事項 プライバシーポリシー tweeqlを使うとTwitterにSQLのような構文でアクセスできる。Pythonとeasy_installさえインストールされていれば,導入は簡単。 sudo easy_install tweeql のようにすればOK。 tweeqlはPythonのライブラリだけど,コマンドラインからも簡単に試せる。 動かすのに設定ファイルが必要なので,以下のようにして設定ファイルのひな形をダウンロードしておく。 wget http://github.com/marcua/tweeql/raw/master/settings.py.template -O settings.py その後,コマンドラ
はじめまして、gumiの津村です。 現在は解析系の仕事をしたり、ツールを作ったりしています。 今回の話は高速化についてです。 結構長めの文章です。 目次 実行速度の高速化 Python/C API ctypes Pyrex Cython SWIG その他 纏め 実行速度の高速化 高速化といっても色々ありますが、今回は実行速度の高速化についてです。 弊社ではPythonを全面的に採用していますが、そもそもLLは実行速度が遅い言語です。特にC言語のようなコンパイラ系の言語と比べると非常に遅いです。 それでもLL系の言語がここまで使われるようになったのは、開発効率が良いからです。 もはや常識ですね。 しかし、それでも特定の領域ではどうしてもPythonのようなLL系言語では厳しい部分も出てきます。 アルゴリズムを変更しても、ハードウエアを変えても、無理な物は無理です。 速度に問題がある場合の最適
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く