When it’s ready.

出来るまで出来ない

python

CSVファイルとSQLite、どっちの方が速い? Djangoの話

そろそろDjango飽きてきた。CSVファイルをJSONで配るだけの簡単なDjangoアプリ作ってます。 ある程度出来たんだけど、実際に動かすとサクサクしてないので、DB使えば速くなるんじゃないかと素人考えで、SQLite使って実装しました。 CSVバージョン ファイル開…

Djangoのrunserverパフォーマンス、UbuntuとOSXでの違い

DjangoでCSVファイルをロードして、Jsonで返すだけの簡単なスクリプトを書いた。 クライアントも5台くらいなので、開発サーバで実行させたい。実行させるOSが、Ubuntu9.04とOSX Server10.5.8どちらがいいかわかんないので、abしてみた。 悩ましい結果となっ…

GAEフレームワークKayの初めの最初

ここ数日悩んでいたKayの起動に関してひとまず決着した感じ。Port版の2.6や2.5だと、推奨バージョンじゃなかったり、必須モジュールが別パッケージになっていたり、色々大変なのでPort版で動かすのは、ややめんどくさい感じです。お勧めの構成は、python.org…

Kay お試し中

インスコしてあるPythonの状態 $ python --version Python 2.6which python /usr/local/bin/python Project作ってみる Running on Kay-0.0.0 /Users/atusi/repos/google_code/kay-framework/kay/lib/werkzeug/__init__.py:109: UserWarning: Module yaml was…

誰も知らない夜のwaveのrobot

GDD参加者へのwavesandboxアカウントの配布が始まったようです。私のwaveのInboxも日本語のwaveが増えてきています。現在まだ使い方を探っている段階で、挨拶だったりFont弄ってみたり、写真をのせあったりしている方も居ます。常用するには、まだ、サービス…

忘れっぽい自分のために、Google App Engineのリンクリストを自動生成する

GAEは、10個前でしかサブドメインが取れない制限がある為、一つのAppIDの中にパスを切ってアプリを複数詰め込むと言う使い方をしている。app.yamlに飛び先を書くだけで、サブディレクトリ以下で完全に分かれて動作するので簡単に作れるくせに、ちゃんと動く…

GDD2009 参加した。一年間で変わった事

昨日参加したGDDのハッカソン(GAE)も終わり、今年のGDDは無事に終わった。今年も得るものが、とても多く、知識だけではなく物理的にタオルやらDevPhoneやら得る事が出来た。GDDのセッション自体の客観的な内容は、当日に書いた下記エントリに譲るとして、今…

Pylotで負荷テストしてみる

負荷テストは、今までabでしかしたこと無かったけどpython製の負荷テストツール「pylot」というのがあったので試してみた。かなりイイ感じなので紹介 ダウンロード http://www.pylot.org/ 公式ページからダウンロードできる。5/22現在のバージョンは1.24 機…

辞書内包表記

これいいんじゃないか? % python3.0 Python 3.0 (r30:67503, Feb 28 2009, 18:36:53) [GCC 4.0.1 (Apple Inc. build 5490)] on darwin Type "help", "copyright", "credits" or "license" for more information. >>> a = range(1,11) >>> b = range(11,21) …

friendfeed のクライアントをPythonで作ったぉ。pyff ターミナルクライアント

清楚なクライアントから始まり、pytterにしたりと色々クライアント弄ってきたけど、twitterのライブラリが同じ名前で色々存在していたり、検索機能がいちいちパッとしないので最近あまり使わずにいた。先週くらいからFriendFeedのフォロー祭りが始まってそこ…

PythonHakathonの課題(not義務)をやってみた。

「1以上100未満の『2個の素数の積』である整数を列挙しなさい」 というやつが、8月のPythonHackathonのアンケートの所に書いてあったがその場で分からなかったので空白で提出した。(そういえばまだ、確認のメールが来てないな。登録できてないのか?)やらな…

リスト内包表記がかなり楽しくなってきた。with λ

別にビンゴカードを作りたい訳じゃないけど、http://d.hatena.ne.jp/stog/20090128 ココ観てたらリスト内包表記で作りたくなってきた。最近リスト内包表記がとっても気持ちよくてたまらない。ビンゴカードは、5x5のカードです。縦の列にはそれぞれ、1-15、16…

DjangoHackation Disc8 に参加し、GoogleAppEngineでO3Dデータのシンプルビューアーを作った。

今回のDjangoHackathonは、Disc8。場所は市ヶ谷健保会館 会議室F(たぶん一番デカイ部屋)参加者が47人とHands onとhackathonをメインにしたイベントでは大所帯となった。DjangoとGAEのハンズオンとHackthonがそれぞれテーブルに分かれ行われた。詳細はhttp:…

GAEのAPI1.2で追加になったCronを使って転置インデックスの更新をしてみる

週末のGAEハカソンでどうやってcron的な処理をしようかなぁと思っていたら本家から、cronが発表になった! ありがたくソレを使って見ることにした。使い方というほどの物でもないけど、cron.yamlをapp.yamlと同じ階層に作成して、 説明 叩きたいURL 叩く頻度…

エロティックHadoopにつられる前に、GAEのputスピードはかってみた。

GAEの動作が意外に遅い。もっとぱぱっと保存なり、処理が終わると思いきや意外と数秒、時には20秒とかかかる。 EC2使えばもっと快適に出来るそうだよとか、そんな声も聞こえるが、Deployの簡単さやIOの拡大がノーコンフィグだったりするところは大変魅力なの…

GAEのRemoteAPIを使って大量のEntityを消す。それも素早く

RemoteAPI使ってデータ消してる時に、気づいた。消し方によってはめちゃくちゃ時間がかかる。以下、実際のShellをペースとして、適宜コメント付けてみる。 今回は転置インデックスの構造を変えたので、以前のデータが要らなくなったので消す作業 # 転置イン…

gae上でDataStore使わずにmemcacheで転置インデックス作ってみた。

あまりテストをしてないけど、少なくとも100倍くらい速いし、まず時間かけ過ぎで落とされない。これはとても大きい。 以下、コード def uniqueInverseIndex(feed_id, text): try: ngram = NgramTokenizer(feed_id, text) ngram.setNgramArr(2) except: respo…

GoogleAppEngineのサーバサイドの処理時間をProfileで表示させる為にcProfile使う

Python旅館ネタ。これまた、tmatsuo氏に教えてもらた。 googleAppEngine内で、何の処理にドンだけ時間が掛かってるとか、どの処理が何回呼ばれてるとかそういうのが知りたい時にprofileを使うとある程度分かります。やり方は凄い簡単で、デフォで使ってるmai…

GoogleAppEngineでremote_apiを使う s_thx>tmatsuo

GogoleAppEngineで、日本語検索作ってたら、転置インデックスの作り方ミスった。簡単に直ったんだけど既にappspot.comで作成された転置インデックスが邪魔なので一気に消したいが、デフォルトのDashBordでは一気に消せるインターフェースが用意されていない…

GAEでの1000件のリミットの所在

「GAEのDatastoreって1000件しかデータがとってこれないよねぇ、大変だよねぇ」という、意味が有るのか無いのかよく分からない会話をしたりする訳ですが、1000件というの数が、どこに効くのかなぁと思いテストコード Model.all()が1000件ずつ区切られて、そ…

Pytterに検索機能

pytter(http://bitbucket.org/a2c/pytter/)に機能追加した。Pytterは、清楚なクライアントをベースにしたTwitter&Wassr用のターミナルクライアントです。 検索機能が欲しかったので付けました。前バージョンで使用していたpython-twitterモジュールでは、se…

pythonで毎回使いたいloggingモジュールのテンプレート

毎回、どこに書いたか探しているので自分用にメモ logファイルの初期設定(コマンド引数取らない版) import os import logging BASE_PATH = os.path.abspath(os.path.dirname(__file__)) logFormat = '[%(asctime)s] %(levelname)s %(message)s' logFilenam…

pythonの引数にある*hogeとか**mapとか

よく見かけるPythonの書き方で*hogeとか**mapとか有るのがイマイチ理解できてなかった。ので、ググったけどお目当ての情報にありつけづ全然分からないので、Vの字に聞いた。thx V *の場合 def asta_func(*hoge): print hoge for i in hoge: print i こういう…

shaとかhashlibとか

python2.6になって、md5モジュールとshaモジュールをインポートすると >>> import md5 __main__:1: DeprecationWarning: the md5 module is deprecated; use hashlib instead >>> import sha __main__:1: DeprecationWarning: the sha module is deprecated;…

gaeoメモ urlの取り方

gaeoでやった事、自分用のメモです。 url文字列から文字列をゲットする /hoge/fuga/args1/args2 といったurlの場合にargs1とargs2をパラメータとして取るgaeoプロジェクト直下のmain.pyのrouter.Router()のインスタンスに設定する def initRoutes(): r = rou…

OSXのデスクトップをDropBoxで共有(同期)するぞ

これは快適だ!ホームディレクトリ内の、Desktopと言う名のフォルダは名前で機能しているらしい。 そこでだ。 cd ~ mv Desktop Desktop.org mkdir ~/Dropbox/Desktop-osx ln -s 'pwd'/Dropbox/Desktio-osx `pwd`/Desktop cp -r ~/Desktop.org/* ~/Dropbox/De…

python3.0を快適にする 一つの方法

Python3.0を入れた後に気づく悲しい事バックスペースがおかしかったり、履歴をさかのぼれなかったりする。 コレを解消する方法は、readlineを入れると解消するらしいが全然入らなかったのだけども sudo port install py30-readline このコマンドだとこける。…

Twitterは、cuiで使った方がバンランスが良い気がする。気がするだけ

Twitterの付き合い方って人それぞれ。クライアントの表示が便利だったり、urlにすぐ飛べたりするととてもイイけど、時間がどんどん吸い取られる。必要最低限の情報だけをうっすらとストレス無く取得し、思いついた時だけ簡単にPostするにはterminalベースな…

文系にも出来るDjango(mod_wsgi)@ubuntu8.10のデプロイ方法

今回Python旅館に参加する上でDjangoのデプロイを出来るようになる事を絶対目的にしていた。以下忘れないようにメモ 環境 ubuntu8.10 python2.5.2(標準品) synapticでインストールしたやつ apache2 mod_wsgi ソース置き場 Djangoのプロジェクト置き場 /var/…

第1回 Python旅館 さんかちう

たしか、前回の第0回はルビーだったような気がするが、参加者倍の第1回は パールです。 Django admin の作り方 Django1.0からadminページの表示のさせ方が全然変わってて、毎回忘れるのでメモmodel.py from django.db import models class Task(models.Model…