Archive for 2月, 2011

GAEのDataStoreは遅い?

2月 17th, 2011 by

GoogleDataStoreは遅いといわれることが多いので、簡単にベンチマークを取ってみた。

測定方法

1000バイトの文字列と、5000倍バイトの文字列を、100回保存するのにかかる時間を測定した。バラつきを見るために、それぞれ10回ずつ計測した。

測定結果

各行は、指定長さの文字列をDataStoreに100個保存する処理の所要時間(秒)です。

1000バイト

1
2
3
4
5
6
7
8
9
10
2.015
2.058
2.050
2.019
2.150
1.720
1.836
1.962
1.923
1.690

5000バイト

1
2
3
4
5
6
7
8
9
10
1.746
1.874
1.727
1.854
1.986
1.827
2.376
1.890
2.383
5.054

まとめ

1000バイトの場合も、5000バイトの場合も、データの保存にかかる時間はほぼ20msである。1個~数個程度のデータを保存する場合は問題にならないが、100件で2秒、1000件で20秒かかってし0まう。CSVのインポート機能などはTaskqueueを使って実装すべきだといえる。

ソースコード

URL短縮君が攻撃された

2月 15th, 2011 by

URL短縮君のAPIを公開したところ、早速9000回を超える攻撃リクエストを受けました。 匿名で利用できるVPNサービスを使ってのアクセスだったようですが、司法機関が動くと普通に身元割れてしまうのでご.... Read more


URL短縮APIをリリース

2月 15th, 2011 by

URL短縮サービスに、APIを実装しました!!!
使い方はとっても簡単、”http://b.php5.jp/?url=”の後ろに短縮したいURLをつけるだけ!!!
※url=の後ろはURLエンコード推奨

短縮元URL

1
http://www.yahoo.co.jp

短縮用のAPI呼び出し 

1
http://b.php5.jp/?url=http://www.yahoo.co.jp

実行 → http://b.php5.jp/?url=http://www.yahoo.co.jp

短縮例

1
http://php5.jp/l

ソースコード

とりあえず乗っけときます。

ブログにDjango1.2.5を組み込みました

2月 13th, 2011 by

Djangoをpython-blog-systemに組み込みました。もともと、Pythonのソースコード内で、self.response.out.writeを使ってHTMLを出力していたのですが、テンプレートエンジンを利用することで、Pythonで記述したロジック部とHTMLを分離できました。

変更前

変更前のソースコードです。汚いなんてもんじゃありません。MVCが渾然一体となっています。小規模なアプリであればこれでも良いと思いますが、これ以上大きなプロジェクトを開発するのであればMVCきっちり分けたほうがよいでしょう。

GAE/PythonでDjango1.2.5を使う方法

2月 11th, 2011 by

本日リリースのApp Engine SDK 1.4.2から、新しいバージョンのDjangoを利用できるようになっているので、早速使ってみた。 ソースコード templateをインポートする前に、use.... Read more


GAE/Pでテンプレートエンジン使ってみた。

2月 11th, 2011 by

GAE/Python標準付属のテンプレートエンジンである.... Read more


GAE-Cron

2月 11th, 2011 by

GoogleAppEngine/Pythonを使って、CRONサービスを提供するサービスがあったので、参加してみた。 試しに1環境設置。ユーザ数の上限は50で、一人当たりの設定数の上限は5にしている。.... Read more


Twitterの検索機能はJS必須?

2月 11th, 2011 by

Twitterクライアントに、ハッシュタグ投稿機能を実装しました。 ハッシュタグを付けて発言しているときは、TLにハッシュタグの検索結果が表示されるのが自然ですよね?で、実装しようとしたんですが、無理.... Read more


GAEのSDK 1.4.2リリース文

2月 11th, 2011 by

GoogleAppEnigneの新しいバージョンのSDKが公開された。正式版のリリース文はまだ公開されていないようだが、プレリリース版のリリース文があったので簡単に翻訳してみた。使ったことがない機能は.... Read more


本日の実装

2月 11th, 2011 by

今日はhttp://nisetwitter.appspot.com/を少し改良しました。 改良点 URL自動リンクの正規表現に穴があったので修正 Tweet内容をDBに保存する機能を実装 明日から.... Read more


本日の実装予定/結果

2月 9th, 2011 by

予定 不具合修正 ・API呼び出しに5秒以上かかった場合の例外処理を実装 ・OAuth認証がタイムアウトした場合の例外処理を実装 新機能 ・自分TLではなく、特定ハッシュのTLを表示する機能 ・特定ハ.... Read more


Twitterクライアントを改良

2月 9th, 2011 by

今日は、昨日作成したTwitterクライアントを改良しました。

まず最初におさらいですが、今作成しているTwitterクライアントは、GoogleAppEngine/Python環境で動作しています。OAuthでの認証を実現しており、興味をもたれた方は、自由に使っていただいて問題ありません。また、欲しい機能などがありましたら、意見頂けると中の人が喜びます。コメント大歓迎です!(自動公開にならないかもしれませんが、見つけ次第、公開します)

改良点は以下の通り

  • デザインを調整
    スタイルシートをつけてみました。
  • 空文字列の送信を防止
    何も入力していない状態での送信をJavaScriptで防止しました。
  • URLのリンク
    TL内のURLに自動リンクするようにしました。
  • @ユーザIDのリンク
    @の後ろに英数字が続く場合は、そのユーザにリンクするようにしました。
  • BadValueエラーの処理
    同一メッセージを2回連続で発言した際に発生していたBadValueエラーを隠しました。

スクリーンショット

スクリーンショットです。このスクリーンショットに映っているユーザは全員公開モードになっていたので、内容は伏せていません。

Nisetweet

Nisetweet

ソースコード

簡易Twitterクライアント作ってみた。GAE/Python

2月 7th, 2011 by

昨夜、OAuthでの認証がうまくいったので、今日はTwitterのTLの取得と発言を実装してみた。 お試し環境 → http://nisetwitter.appspot.com/で公開している。 エラ.... Read more


GAE/PythonでOAuth

2月 6th, 2011 by

GoogleAppEngine / Python環境で、TwitterのOAuthを使ってみた。


本日の実装予定

2月 6th, 2011 by

OAuth関連の実装を行う予定です。 最近のWebサービスは、OAuthを使って認証するものが増えています。OAuthを使うと、サービス提供者に必要以上のデータを渡さずにログイン認証できます。また、ユ.... Read more


暗記君 on GAE/Python

2月 5th, 2011 by

暗記君は私が作ったWebサービスなんですが、中途半端な状態で放置してしまっているので、Python/GAEで作り直そうと思います。問題データは持っているので、今週末中には公開してしまいたいです。 .... Read more


CSV2Tableパワーアップ

2月 5th, 2011 by

今日は、CSV2Tableをパワーアップの改良作業を行いました。追加した機能は以下の通りです。 ラベル位置選択 1行目、1列目、1行目+1列目、ラベルなし、の4通りから選択できるようになりました。 .... Read more


本日の実装予定

2月 4th, 2011 by

CSV2Tableの改良を行います。 現バージョンでは、1行目と1列目が見出し行になっていますが、どの部分を見出し行に設定するか選択できるようにします。また、複数のスタイルからデザインを選択できるよう.... Read more


CSV2Table

2月 3rd, 2011 by

CSV(TSV)から、HTMLテーブルに変換するサービスを作りました。デザイン調整などまだできていないので、かっこ悪いのですが、動作自体は安定していると思います。お約束のソースコードは記事の末尾に添付してます。

サービスの使い方

一番上のテキストエリアに、CSV(カンマ区切りデータ)もしくは、TSV(タブ区切りデータ)を入力して変換ボタンをクリックしてください。HTMLテーブルのプレビューと、そのソースコードが表示されます。CSVなのか、TSVなのかは、自動判別されます。

スクリーンショット

以下の画像をクリックすると、サービスのURLにジャンプします。

csv2table

csv2table

ソースコード

URL短縮サービスを改良

2月 3rd, 2011 by

URL短縮サービスをバージョンアップしました。新しいサービスはhttp://b.php5.jpでご利用いただけます。古いバージョンで作成していただいた短縮URLもあると思いますので、今までのサービスは.... Read more


  • Python

  • 人気記事

      このエントリーは、Python入門者と、Python入門予備軍の方を対象としています。 どうしてPythonやるの? Pythonって覚えやすい言語なんです。といっても、それなりに使いこなせるようにな.... Read more

      リスト内包表記とは、あるリストを元にして別のリストを作るための記法のことです。ループ、Map、Filterなどを使っても同じ操作をできますが、リスト内包表記には以下の利点があります。 コードがシンプ.... Read more

      Pythonには固有の文字列フォーマット(モジュロ)操作が用意されている。文字列中の%?であらわされる部分が、文字列の後ろに与えられた変数で置換される。 単一値の置換 単一の変数を置換する場合は、文字.... Read more

      Pythonの世界は、整数などの単純な値も含め、すべての値はobjectクラスを継承したクラスのインスタンスでできています。 ::CODECOLORER_BLOCK_56:: classを定義する も.... Read more

      だまって↓インストールすれば、Facebookのコメントプラグインがすべての投稿とページにつくよ。動かなかったらごめん。 wp-facebook-comment .... Read more

      リスト(List)とはPythonの組み込み型の1つで、シーケンス(sequence)の一種です。他の言語におけるインデックス配列に似ていますが、かなり柔軟な操作ができます。このページではリストをつか.... Read more

      プログラム内でループを使うのは以下の3パターン。C言語などになれていると1番や2番を使いたくなるかもしれないが、Pythonでは3番が適してるケースが多い。 N回ループ一番基本的なタイプ 条件を満た.... Read more

      Pythonでは、print文を使わないと日本語を正しく出力されない。print文を使うと、あらかじめ設定されているエンコードにしたがって適切に出力される。 ::CODECOLORER_BLOCK_9.... Read more

      みなさん、Google App Engineって聞いたことありますか? あっ、それしってる。Google Docsとかでしょ?って思った方。惜しいけど違います。 Google App Engineとは.... Read more

      DataStoreとは 本記事内のDataStoreは、GoogleAppEngineのデータストアのことを指す。GoogleAppEngineは、ファイルの書き込みが一切できないため、DataSto.... Read more

      GoogleAppEngineでは、世界標準時で時刻を管理する。でも、そのまま表示すると分かりにくい。このページでは世界標準時を日本時間に変換したり、日本時間を世界標準時に変換する方法を紹介する。 現.... Read more

      Pythonの条件分岐は、if, else, elifの3つの構成要素から成ります。条件成立時、非成立時の実行範囲は、インデント(indent)であらわします。条件部 If elseから成る条件分岐 .... Read more

      Pythonの文法構造には、単行のコメントアウトしかありません。 複数行のコメントアウトが必要な場合は、コメントを文字列にします。 単行コメントアウト #以降がコメントとして扱われます。 ::CODE.... Read more

      GAE/Pythonで、一体いつになったらPython3系が使えるようになるのか。興味深いページがあったのでざっくり翻訳してみました。 http://code.google.com/p/googlea.... Read more

      タプルとは、シーケンス型のオブジェクトです。同じくシーケンス型のオブジェクトとの違いは、不変であるということです。リストは生成後に要素を追加したり削除したりできますが、タプルは生成後に内容を修正できま.... Read more

      昨夜、OAuthでの認証がうまくいったので、今日はTwitterのTLの取得と発言を実装してみた。 お試し環境 → http://nisetwitter.appspot.com/で公開している。 エラ.... Read more

      GAE/Pythonで最初に戸惑うのはRequestHandlerだと思います。新規アプリケーション作成時に自動生成されるので必要に応じて書き換えることができれば問題ありません。 RequestHan.... Read more

      Pythonには基本的な型として、数値、bool、文字列があります。type() を使うと変数の型を確認できます。 数値 数値を表す型には、整数型 、 長整数型 、浮動小数点型 、複素数型の4つがあり.... Read more

      この10日間ほど、地震のニュースばかり追いかける日々をすごしていないでしょうか?大勢の方が被災され、原発関連の二次災害も発生する中で落ち着きづらいというのも事実なのですが、心配しすぎてもしかたない。そ.... Read more

      日経ソフトウェア 2010年4月号特別付録の問題をPythonでといてみた。 Amazon.co.jp ウィジェット 問題1: 「3の倍数と3のつく数字だけ・・・」 1から100までの整数を1行に.... Read more

      なんと、int型が64bitまで使えるんです。当たり前だけどうれしいです。 ::CODECOLORER_BLOCK_135:: windowsだと64bitCPU使っていてもこんな感じになります。In.... Read more

      文字列は文字の列(シーケンス)のこと。文字列リテラルの表記方法は、以下の4つがある。 シングルクオーテーション1個‘string comes here’ ダブルクオーテーショ.... Read more

      モジュールとはPythonの定義や文が入ったファイルです。 標準モジュールや第3者によって公開されているモジュールを組み合わせることで、容易に高度な処理を実現できます。また、自作のモジュールを作ること.... Read more

      GoogleAppEngineでPythonを使う場合は、特別な理由がない限り、バージョン2.5を使いましょう。2.5以外の環境で開発すると、開発環境では動作していたアプリケーションが、GAEでは動作.... Read more

      実行速度(改)で、最適化をし尽くしたつもりが、早速 mohayonao@hatena さんから、改善案をいただきました。rangeではなく、xrangeを使うとより高速化するとのこと。早速書き換えてみ.... Read more

  • タグ

  • Archives

  • Recent Comments

    • ブログロール


    Get Adobe Flash player