スキップしてメイン コンテンツに移動

投稿

3月, 2012の投稿を表示しています

[javascript][Google App Engine]HTML5のsessionStorageで高速化

はじめて書いたjavascriptを先輩に見せたところ、取得ボタンを連打されてGoogle App Engineに対するリクエストが大変なことになりましたw ということで、今回はその連打対策を講じてみました。 ■変更点 ・「取得」ボタンをクリックしたときにGetData()を呼び出すように ・sessionStorageにデータが存在するかチェックしてあれば表示 ・なければAjaxでリクエストして結果をsessionStorageに保存したうえで表示 WebStorageのうちセッション単位でデータを保持するsessionStorageと永続的に保持するlocalStorageがあるが、毎日取得するデータが変わるのでsessionStorageを採用した。 同一セッションの同一パラメータ(証券コードと営業日数)の組み合わせの場合にはsessionStorageから取得している。 AjaxHistoricalPrices http://test-004.appspot.com/html/index.html 「処理時間」には、「取得」ボタンが押されてから表示までの時間をミリ秒単位で表示している。 実際に同一パラメータで「取得」ボタンを2回以上クリックしてもらうと、かなり高速化できていることがわかると思う。 また、画面の「データ取得元」にsessionStorageから取っているか、HTTPで取っているかを表示している。 var startTime = new Date(); var endTime = new Date(); var GetData = function(){ startTime = new Date(); var key = document.form.ticker.value + ':' + document.form.days.value; var out = sessionStorage.getItem( key ); if (!out){ out = Request(key); document.getElementById("source").innerHTML = 'HTTP.';

[javascript][Google App Engine]初のJavascript、初ajax

こんばんは、もっくんです。 今日は、初めてのjavascriptを実装してみました。巷ではjQueryというライブラリが簡単で良いと聞きますが、初めてなのでゼロから書いてみました。 AjaxHistoricalPrices 今はGoogle App Engineにあるjsonを返すURLに対して非同期でhttpリクエストを発行して、そのレスポンスを表示しているだけのシンプルな実装です。 var startTime = new Date(); var endTime = new Date(); var Request = function() { startTime = new Date(); var url = 'http://test-004.appspot.com/dlhistorical?ticker='+document.form.ticker.value+'&days='+document.form.days.value+'&type=json'; var XHR; XHR = new XMLHttpRequest(); XHR.onreadystatechange = function(){ if( XHR.readyState === 4 && XHR.status == 200 ) var data = JSON.parse(XHR.responseText); var out = ''; for (i in data.Historical){ out += ''; for (j in data.Historical[i]){ out += ''; } out += ''; } out += ' '+data.Historical[i][

[Python][Google App Engine]日本株式個別銘柄の直近3期の決算情報を表示

割安銘柄の選定に使うために企業の業績を取得できるようにしてみた。 今はまだパースしているだけのプログラムで、人間用。 『証券コードと連結or単体を指定してやると過去3期分の決算情報を返す』 ■使い方 URLに下記のように条件を指定してEnterキーをたたいてください。 (連結決算) http://test-004.appspot.com/dlfinreport?ticker=証券コード&consolidate=1 (単体決算) http://test-004.appspot.com/dlfinreport?ticker=証券コード&consolidate=0 例) スターバックス(2712)の単体決算のデータがほしい場合 http://test-004.appspot.com/dlfinreport?ticker=2712&consolidate=0 あとは煮るなり、焼くなり。 ■処理内容 裏側でhttpリクエスト実行 BeautifulSoupでHTMLパースしてtableをCSV化(の予定) ■課題 毎回httpリクエスト発行していて遅い 日本語が混じっているので分析する前に工夫が必要 ■参考 すぐに試せるリンクを作っておきます。 2012/2/24の東証1部出来高上位5銘柄の過去100営業日のデータです。 みずほ(8411)の連結 http://test-004.appspot.com/dlfinreport?ticker=8411&consolidate=1 みずほ(8411)の単体 http://test-004.appspot.com/dlfinreport?ticker=8411&consolidate=0 何かあれば、コメントやTwitterで質問いただければと思います。

[Python][Google App Engine]日本株式個別銘柄の日足+出来高CSVダウンロード

久しぶりにGAE/Pythonを触ってみた。 Python2.7も対応で、マルチスレッド?同時リクエスト処理?にも対応してた。 早速作ってみたのはこれ↓ 『証券コードと営業日数を指定してやると4本値+出来高が取得できるプログラム』 ■使い方 URLに下記のように条件を指定してEnterキーをたたいてください。 http://test-004.appspot.com/dlhistorical?ticker=証券コード&days=営業日日数 ※最大で450日分まで遡って取得できます。 例) スターバックス(2712)の過去400営業日の日別データがほしい場合 http://test-004.appspot.com/dlhistorical?ticker=2712&days=400 すると、日別情報が画面に表示されますので、これをExcelに張り付ければ分析に役立ちますね! ■処理内容 裏側でhttpリクエスト実行 BeautifulSoupでHTMLパースしてtableをCSV化 検索条件でmemcacheにset ※2回目以降同じ条件のリクエストにはmemcacheから返す ■課題 GAE側ではmemcacheのみでデータ保持で遅い memcacheが必ずしも最新の情報ではない可能性あり 裏のhttpリクエスト制約のせいで450件が最大日数 ■参考 すぐに試せるリンクを作っておきます。 2012/2/24の東証1部出来高上位5銘柄の過去100営業日のデータです。 みずほ(8411)の過去100営業日分 http://test-004.appspot.com/dlhistorical?ticker=8411&days=100 三菱UFJ(8306)の過去100営業日分 http://test-004.appspot.com/dlhistorical?ticker=8306&days=100 野村HD(8604)の過去100営業日分 http://test-004.appspot.com/dlhistorical?ticker=8604&days=100 新日鉄(5401)の過去100営業日分 http://test-004.appspot.com