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

投稿

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

マクドナルドのメニューをWEBから取得するスクリプト

タイトルの通りのスクリプト。 スマイルをMenuIDの総当たりで探すために作った。WEB上になかった。 PythonはGILとかいうのでマルチスレッドではパフォーマンスが出ないらしい。 デファクトな解決方法だと思われるmultiprocessingでマルチプロセス化している。 ■マシン 「Intel(R) Core(TM) i5-2520M CPU @2.50GHz 」+「4.00GB(3.42GB使用可能)」 ■コマンド python mcdonaldsmenu.py 27 1 10000 基本的に4ケタのmidというものをgetのパラメータに渡して各商品の詳細ページを表示できる。 なので、隠れメニューを探すべく総当たりしてみる。 このマシンで並列数27でCPU使用率が85~95%くらい。 54MbpsのWiFiの使用率が7~11%くらい。

[Mac]Time Machineのバックアップ先をWindows共有フォルダに設定する

こんばんは。もっくんです。 2台あったWindowsのデスクトップを1台にまとめるついでに、ずっと放置していたMacのバックアップ環境を構築してみました。Finderでコピペするだけでいいんですが、どうせなら「Mac全体を自動的にバックアップします。」という謳い文句のTime Machineを使いたい。 Apple純正のTime CapsuleやUSBの外付けHDDという手もあったんですが、ノートの機動性を落としたくなかったし、なによりタダでできそうなWindows共有フォルダにネットワーク越しにバックアップする方法を取ることにしました。 実際の流れは下記のようになります。 ネットワーク共有フォルダを作成する 空のディスクイメージを作成する ネットワーク共有フォルダにディスクイメージをコピーする ネットワーク共有フォルダのディスクイメージをマウントする マウントしたディスクイメージをTime Machineのバックアップ先に指定する 1.ネットワーク共有フォルダを作成する この手順はそこまで面倒ではないので、簡単な手順だけ。 Windows全体の設定でファイル共有を有効にする(Windowsで作業) Macと共有(Macから見えるように)したいフォルダを作成する(Windowsで作業) 共有したいフォルダに共有設定をする(Windowsで作業) 共有フォルダに接続(Macで作業) 詳細はこちらの記事が画像付きでわかりやすい。 http://blog.goo.ne.jp/beosound/e/7d6d0d0a8f76035f880001eda06c4247 2.空のディスクイメージを作成する いわばこのディスクイメージがバックアップ先のHDDの代わりとなる。 アプリケーション > ユーティリティ > ディスクユーティリティを起動 画面上部の ファイル > 新規 > 空のディスクイメージをクリック 設定画面の各欄は以下のように設定 名前: TimeMachineVolume(なんでもよい) 保存先: デスクトップ(ローカルのわかりやすい場所) ボリューム名: TimeMachineVolume(なんでもよい) ボリュームサイズ: カスタム

[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