タグ

ブックマーク / a2c.hatenablog.com (9)

  • GAE/Python でフルテキストサーチ実装した。 redisを使ったインチキバージョン - When it’s ready.

    GAEにどんどん機能が追加されていく中、なかなか実装されないのが全文検索。品詞がとれるセグメンターだけでも提供してくれたら全然便利だと思うんだけどそんなアナウンスはまだ有りません。 なきゃ作ればいいじゃんという事で、全文検索もどきを実装してみました。ひとつ前のエントリー通りTriGramです。 以前、恵比寿のイケメン イアンさんと一緒に作ったmisopotetoというモジュールをベースにしています。 今回のポイントは、転置インデックスをredisサーバに送っているところ、GAE(とうかDB全般)は、インサートがめちゃくちゃ遅いので、Ngramでgram毎にエントリーIDをappendしていくというのは辛いです。Twitterの検索結果15個x100文字位をTriGramでインデックスを作ろうとすると、1500個くらいをgetしてappendして、putする必要があります。以前は、TaskQ

    GAE/Python でフルテキストサーチ実装した。 redisを使ったインチキバージョン - When it’s ready.
    taka222
    taka222 2010/10/06
  • x番目のプラットフォーム 「GAS」がなにげに凄い - When it’s ready.

    "プラットフォーム” をウィキペディアで調べてみると プラットフォーム(Platform)とは、コンピュータにおいて、主に、オペレーティングシステム(OS)やハードウェアといった基礎部分を指す。 一般的なコンピュータープログラム(アプリケーションソフトウェア)は、それぞれのOSに依存し、WindowsMac OS X、Linuxなどの専用のプログラムとして動いている。特定のハードウェアでしか動かないプログラムもある。例えば、PowerPC プロセッサ上の Linux では、PowerPC プロセッサ上のMac OS X 用や Pentium プロセッサ上の Linux 用の Adobe Reader7.0 は動作しない。 非依存とは、それらのOS、ハードウェアに依存せずに動くプログラムのこと。例えば、Javaはプラットフォーム非依存を売りにしており、他のプラットフォームの上にアダプタとし

    x番目のプラットフォーム 「GAS」がなにげに凄い - When it’s ready.
    taka222
    taka222 2010/09/09
  • 0と1を次々返す方法 - When it’s ready.

    TrueだったらFalseで、FalseだったらTrueにしたい。 なんかそんなことそこかしこで必要で、その為の便利なものが あるのかなぁと思ったんだけど無いぽい。 あれかな、TrueとかFalseを1とか0とかで表現してる時点で情腹な気もする 初めのやつ x = a = (a - 1) * -1 n氏につっこまれる x = 1 - x (修正) n氏のクラス化 class MyInt(int): def toggle(self): return MyInt(1 - self) x = MyInt(1) x >> 1 x.toggle() >> 0 m氏の提案 import itertools i = itertools.cycle([hoge, fuga]) i.next() 最後の思いつき >>> a = [1,0] >>> b = 0 >>> b = a[b] >>> b 1 >>>

    0と1を次々返す方法 - When it’s ready.
    taka222
    taka222 2010/09/03
  • Pythonリスト内包表記文法 低速マスター - When it’s ready.

    リスト内包表記(LC)使った方が圧倒的にコードが読みやすく、短くなる。慣れてないという理由で使われてない気がするので今後の自分のためにも、メモを残す。 LCは基的に、ListやHashを処理する際に使用される。例えば、規則性のある並びのListが欲しい時などに利用すると良い。 1, 基礎 リストの作成 forの前が処理、forからList名までがひとつのforの段落で前から評価される。 src_list = [1,2,3,4,5] print [x for x in src_list] # [1,2,3,4,5] リストの作成2 for部で取り出された要素が、その後ろif部で評価され真だったものだけが、初めのx*2に渡され処理される(この場合は、2.4だけ) src_list = [1,2,3,4,5] print [x*2 for x in src_list if x % 2 == 0

    Pythonリスト内包表記文法 低速マスター - When it’s ready.
  • Pythonで自動化、GoogleDocsのSpreadSheetを使ったディスク使用量モニタースクリプト - When it’s ready.

    気づいたらDiskの残量がメチャ減ってるときってありますよね。Nagiosとか監視ツール使って閾値超えたら警告出すとかやってる人も居るかと思います。監視ツールはエラーの発生はログ取りするけど、日々の使用料を記録して見やすくなってないのが大気がします。大きめのファイルサーバ使っていると、今後の容量計画を行う場合は現状把握が大切です。各ドライブごとにどれくらいの容量増加傾向があるのかを知るためには、監視ツールのみだとやや物足りない感じがします。 ログる内容は、dfコマンドで表示出来る分で十分なのでコレを毎日ダンプし続けると良いかもしれないですが、やっぱり結果はグラフで見たいし、いつも最新の状態が見たいですよね。さらにグラフは、画像ファイルとかでサクっとウェブで見えたりしたらさらに便利 ということで、こんなの作ってみました。 dfで見えるようにドライブをマウントしておいて、dfコマンで出る各パラ

    Pythonで自動化、GoogleDocsのSpreadSheetを使ったディスク使用量モニタースクリプト - When it’s ready.
    taka222
    taka222 2010/01/27
    [
  • 大きいMVCと小さいMVC 語弊を恐れずに書く - When it’s ready.

    MVCって、大抵の場合サーバサイドでの実装の分け方の事を言ってるのが多い気がする。んで、サーバサイドを作ってる人々の多くは、UIに関してはデザイナーがhogehogeとか、タンポポワークほげとか言ってる場合が多い気がするんだけど、実際どうなんだろう? 保存が必要なければ、ブラウザ内のJSだけでノートラフィック(初回DLは除く)でかなりのことが出来ると思うし、凝ったところはそうなっていると思う。MVCをサーバサイドとクライアントサイドで分けて考えると、実装者のリソースやら各データの祖結合具合だったりというのが上手に調整出来ると思うんだけどどうなんだろ?モデルにロジックてんこ盛り、否、コントローラも頑張るべきとか、いやいやテストすればモーマンタイでしょとかそう言うレベルじゃない気がする。 サーバーから動的に渡す部分はすべてJSONにして、それをサーバー側では最終アウトプット(View)にする、

    大きいMVCと小さいMVC 語弊を恐れずに書く - When it’s ready.
  • Django Projectを開発サーバーの使い心地のままにApacheでデプロイする - When it’s ready.

    ずーっと、デプロイが苦手だった。 自分でやると全然動いた事が無い。 でも気づけば、いつの間にか出来る様になってた。 今後忘れてしまわないようにメモ。 昨日作った環境でデプロイを行う。 機能的なところ 作成したプロジェクトがきちんと動く事 自動作成されたAdminサイトのデザインもきちんと動く事 静的ファイルはApacheより配信する事 ソースを変更した際には、自動でapacheを再起動する事 下準備 作成したDjangoプロジェクトは「djangoProject」 /var/www内に、プロジェクトと.wsgiファイルを公開するディレクトリ(django)を作成する。 プロジェクトのソースを展開する(実際はローカルリポからのリンク) /var/www/django/djangoProject アプリケーション名は以下の通り djangoProject.core wsgiの自動再起動用のス

    Django Projectを開発サーバーの使い心地のままにApacheでデプロイする - When it’s ready.
  • Django1.1 + Ubuntu9.04 + Apache2 +mod_wsgi での環境構築メモ - When it’s ready.

    年末の為に、手順を記す。for me Ubuntuのいんすこから終了まで目標20分以内 追記:実際にインスコからやってみた時間を計ってみた Ubuntuインストール 8分 アップデート 8分 インスコsh 4分 ぎりぎり20分という感じ。この程度であれば何回でも出来るな。 Ubuntuインストール file ubuntu-ja-9.04-desktop-i386-20090510.iso インストール後 アップデートを実行する パッケージインストール zsh vim openssh-server easy_install python_all_dev apache2 mod_wsgi ntp memcached django1.1 mercurial1.3.1 python_memcache プロキシーがある場合 export http_proxy=http://proxy.domain.

    Django1.1 + Ubuntu9.04 + Apache2 +mod_wsgi での環境構築メモ - When it’s ready.
  • 誰も知らない夜のwaveのrobot - When it’s ready.

    GDD参加者へのwavesandboxアカウントの配布が始まったようです。私のwaveのInboxも日語のwaveが増えてきています。現在まだ使い方を探っている段階で、挨拶だったりFont弄ってみたり、写真をのせあったりしている方も居ます。 常用するには、まだ、サービス自体が安定していないためしばらくは実験的な使い方で行くと思いますが、waveの機能としてはそれ自体を使うだけでなくEmbededやExtensionも使うことが出来ます。 簡単なロボットの作り方 waveに載せるロボットは、簡単に作成することが出来ます。必要なのは、GAEのアプリケーションです。 最小構成のGAE/Pだとファイル2つから始めることが出来ます。 app.yaml robot.py 以下ソース app.yaml application: YourRobotName version: 23 runtime: py

    誰も知らない夜のwaveのrobot - When it’s ready.
  • 1