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

投稿

スマホ+折りたたみBluetoothキーボードがいい感じ

最近「LIFE PACKING2.1(高城剛)」を読んでスマホ+Bluetoothキーボードを持ち歩くようになりました。 よく考えるとPCを持ち歩くのってキーボードでの作業に慣れてるからという理由だけなので、キーボードさえ使えれば画面も本体もスマホでも良かったんですよね。 で、結局「 Universal Foldable Keyboard GU5-00014 」を...

[OS]VirtualBoxでCentOS6.5(x86_64)がKernel panicを起こした

完全に対処療法。 恥ずかしながら自分では原因がわかっていない。 忘れないようにメモしておく。 いろいろ設定したあと、何度目かの再起動のタイミングでKernel panicが発生して起動しないという事象が発生。 こちらの方法でなんとか起動させて。 [CentOS] SELinux 無効化後のカーネルパニック http://kuni255.blogspot.jp/2013/04/centos-selinux.html こちらの通り、/boot/grub/grub.confに設定を追加。 Kernel panic – not syncing: Attempted to kill init! http://h2np.net/mynotebook/post/130 設定変更後、以下の操作をそれぞれ10回ほど試した限りでは再発していません。  (1)halt+起動 (2)reboot 追記:と思ったらまた発生した。なんかもう解決できる気がしない。

[Haskell]Database.HDBC.Sqlite3でSQLite3のデータを読む。

関数型言語のHaskellというものに手を出してみました。 今回は、システムトレードで使っているSQLite3からHaskellで時系列データ(日足)を読んでみます。 備忘録として、コードを上げておきます。 import Database.HDBC import Database.HDBC.Sqlite3 main = do conn c -> String -> IO [(String, String, String, Double, Double, Double, Double, Double)] getHistoricals conn code = do stmt c -> String -> String -> IO [Double] getHistoricalPrices conn code dataType = do stmt

[Python]システムトレード環境

最近、システムトレードをしている。 日本株は、自動売買までは実現できていないが、トレンド分析くらいはできるようになっている。 とりあえず、現時点の環境を整理しておきたい。 ■日本株 H/W:さくらVPS(2GBだったかな?) OS:CentOS6.4(x86_64) 言語:Python DB:SQLite3 データソース: http://www.data-get.com/main/ (有料) データ種別:株価データ、銘柄情報データ、分割併合データ ■FX H/W:DELL T100(6年前のもの)+CPU4コアに換装済+メモリ8GB化済 OS:Windows 7 64bit プラットフォーム:MetatTrader 4 言語:MQL4 取引業者:Alpari Japan ■クライアント H/W:MacBook Pro 13インチ(2010-Mid) 特に不満はないけど、さくらVPSが高い。 自宅のT100は古いけど重い処理をさせるわけじゃない。 そのうちさくらVPSから自宅PCのVirtualBoxかなんかの仮想環境に引っ越す可能性もある。 こんなところ。

[Python]redis-pyでRedis Pub/Sub実装

前から面白そうと思っていたRedisのPub/Sub機能。 redis-pyでどう実装すれば使えるか確認してみた。 ■Pub/Subについて http://ja.wikipedia.org/wiki/出版-購読型モデル ■pub.py from redis import StrictRedis def publish(channel,msg): """ redis-pyにはPUBLISHするためのメソッドがないので、 Redisのコマンドをそのまま実行する為のクラスを使う。 """ sr=StrictRedis() """ 第1引数にRedisのコマンド、第2引数以降は そのコマンドの引数をそのままセット """ sr.execute_command("PUBLISH",channel,msg) if __name__=="__main__": # チャネル"hoge"に"Hello"というメッセージを出版(Publish) publish("hoge","Hello") ■sub.py from redis import Redis def listen(channel): r=Redis() ps=r.pubsub() ps.subscribe(channel) while True: for i in ps.listen(): print i["data"] if __name__=="__main__": # チャネル"hoge"を購読(Subscribe) listen("hoge") ■実行方法・実行結果 (ターミナル1-準備) [user@localhost ~]# python sub.py 1 # => チャネ...

[Python]ポートフォリオの達人ランキング取得プログラム

今日は、投資ブログで公開している三菱UFJ投信主催の「投資にチャレンジ!!ポートフォリオの達人」から毎日更新される運用成績を取得するプログラムを作りました。これまで毎日コンテストの個人ページからコピー&ペーストして作成していた記事の成績部分をプログラムを実行するだけで作成できます。 ■投資ブログの記事 この記事の作成を効率化します。 http://mockuninvestment.blogspot.jp/2013/06/201367.html ■コマンド実行方法 取得したい参加者の個人ページのURLをプログラムに渡してあげるだけ。 python muam_contest.py http://contest.muam.jp/app/ranking/detail?dsp=eac8d83669d6cca1 ■出力内容 コマンド入力後、Enterを押して実行すると以下のフォーマットが出力されます。 2013/6/7更新 ポートフォリオの達人ランキング ========== ランキング(6/7更新):198位 評価額:100,357円 リターン:0.47% リスク:10.63% リターン ÷ リスク:0.04(0.04435225290) ========== http://contest.muam.jp/app/ranking/detail?dsp=eac8d83669d6cca1 あとはブログに張り付けるだけです。投稿用のアドレスにメール送信するプログラムと組み合わせれば、完全自動化できてしまいますね。 ■ソース #!/usr/local/bin/python #coding: utf-8 from bs4 import BeautifulSoup import urllib2,re,unicodedata,sys template=u"""2013/%(date)s更新 ポートフォリオの達人ランキング ========== ランキング(%(date)s更新):%(rank)s 評価額:%(amount)s リターン:%(ret)s リスク:%(risk)s リターン ÷ リスク:%(riskreturnratio)s ========== %(url)s""...

[Python]CentOS+Apache+mod_wsgi+Flask+mongoDBをセットアップしたメモ

毎回調べながら環境構築してたので、メモとして残しておく。 ファイアウォール,SELinuxの無効化 ライブラリ群のインストール Pythonのインストール mod_wsgiのインストール mongoDBのインストール easy_installのインストール Flaskのインストール pymongoのインストール mod_wsgi+Flask設定 ■ファイアウォール,SELinuxの無効化 /etc/rc.d/init.d/iptables stop chkconfig iptables off vi /etc/sysconfig/selinux =====以下の変更を加える===== SELINUX=enforcing ↓ SELINUX=disabled ========== ■ライブラリ群のインストール yum update -y yum groupinstall -y "Development Tools" yum install -y httpd httpd-devel zlib-devel ncurses-devel readline-devel sqlite-devel tcl-devel tk-devel openssl-devel /etc/init.d/httpd start chkconfig httpd on ■Pythonのインストール curl -O http://www.python.org/ftp/python/2.7.4/Python-2.7.4.tgz tar zvxf Python-2.7.4.tgz cd Python-2.7.4 ./configure --enable-shared --prefix=/opt/python2.7 make make install ln -s /opt/python2.7/lib/libpython2.7.so.1.0 /lib64/ vi .bashrc =====以下を追記する===== PYTHONHOME=/opt/python2.7 PYTHONPATH=/opt/python2.7/lib/python2.7/site-packages/ PATH=/opt/python2.7/bi...

[Mac]MacBook Pro(2010Mid)をSSD化して延命。

どのサイトから飛んできたのかコメントで教えてくれると嬉しいです! ========== やっと我が家もSSDの時代になりました。 今回は、元々載っているHDDをSSDに交換し、DVDドライブを取り外したHDDに交換しました。 a) HDD→SSD b) DVD→HDD c) DVD→外付けDVD 追加になるパーツは、SSD本体、DVDドライブの空間にHDDを載せるためのマウンタの二つです。 [左下]インテル SSD 335series 240GB http://www.amazon.co.jp/gp/aw/d/B009SIJ7G8 [上]林檎派 光学ドライブスペース用HDD/SSDマウンタ Macbay2 http://item.rakuten.co.jp/akibakan/10028037/ 早速、分解していく。 ぱか。 左下に見える白いラベルが付いたものが元々入っているHDD。容量は忘れた。SEAGATE製で、小さくアップルのロゴが入っている。 左上の銀色の四角がDVDドライブ。これもごっそり外す。 パソコンが遅いと感じるとき、『古くなった』という人もいるが、ほとんどの場合そんなことはない。趣味で使う程度なら大抵メモリとハードディスクの見直しで改善する。優先順位はメモリ>ハードディスク。 その意味では今回は、優先度を間違えた。メモリも最大容量にすべきところ、ついカッとなってSSDに。 MacBook Proはバッテリー内蔵なので、HDDを取り外す前にバッテリーと基盤とのコネクタを外しておく。 HDDとDVDドライブに繋がるコネクタも外す。 外れた。 分解の詳細はこの辺を見て行った。ありがとうございます。 やさしいMacBookProの育て方 – SSD+HDDで快適生活 http://kray.jp/blog/ssd_macbookpro/ これがSSD。第一印象は、軽い、安っぽい。今はこれが当たり前なんだなー。 取り付けるとこんな感じに。なんかかっこいいw あ、DVDの外し方とか写真を忘れました。すみません。 DVDを取り外して、林檎派のマウンタでHDDを取り付けた結果。若干マウンタが貧相なので不安になったけど、ケースを閉じれば見えないからいいよね。 それぞれ...

[Python]TDNet適時開示情報閲覧サービスから適時開示一覧を取得するスクリプト

現在の案件関係でよく見るサイトなんで、一覧取得してみた。 投資においては、報道が先行することが多いのでわざわざ見る人も少ないと思うけど、見てみると結構おもしろい。 こんなツールを作っている人もいる。便利。 http://www.ninxit.com/blog/2012/10/15/%E9%81%A9%E6%99%82%E9%96%8B%E7%A4%BA%E9%80%9F%E5%A0%B1-for-chrome/ 私のコードもお役に立てばうれしいです。

Google App Engine 利用停止しました。

さて、長らく放置していたGoogle App Engineですが、開発を終了し、アプリを削除しました。 最終的に全銘柄の時価を日次で取得するようにしていたため、DataStoreの処理量が増え、コストが膨らんでいきました。そのコストは月3,500円ほどになり、収益が上げるつもりがない以上、無駄なコストになります。 数ヶ月ほど迷いましたが、先月ついにGoogle App Engineで利用していたアプリケーションを全て削除しました。 今後は、無料でできる範囲で使うことはあるかもしれませんが、有料での利用はしない方針です。最近は、Redis、MongoDB、Postgresql等のミドルウェアにも興味がありますので、基本的にはAWS、VPSもしくは自宅の環境でのみ開発することにしていこうと思います。 引き続きよろしくお願いします。

BOSEのBluetoothスピーカーを衝動買い

BOSEのBluetoothスピーカーが安くなっていて衝動買いしてしまいました。 これを買ったことでiPhone、iPad、Macbook Pro 13inchでの音楽再生のクオリティが上がりました。作業用BGMもクラブでよく聴く曲も心地よく聞こえます。 前から欲しかったし、友人が持っているのを見てさらに欲しくなったところにアウトレットの初売りセールがトドメになりました。 アウトレットということもあってか 公式サイト で販売されている 最新の機種 ではありませんが、最新機種とはフタくらいしか違いもわからないのでOKでしょう。 そもそもこのスピーカーの魅力はやはり・・・ Bluetoothなので当然ワイヤレス バッテリー内蔵で持ち出し自由自在 低音の強いBOSEらしい音 早速、音楽を聞きながら書いています。快適です。

マクドナルドのメニューを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...

[Python]個別銘柄の時系列データをYahoo!ファイナンスから取得するプログラム

今日書いたのはこれ。 過去に Google Financeから時系列データを取得するプログラム は書いた。 大きく異なる点を挙げておく。 海外株式の取得可能件数: Google > Yahoo! Yahoo!は日本株式のみ 日本株式の取得可能件数: Yahoo! > Google Googleは東証一部(?=正確には未確認)銘柄のみ時系列データを提供 銘柄指定方法: Yahoo!=証券コードのみ / Google=市場コード+証券コード 取得可能項目: Yahoo!=4本値+出来高+修正終値 / Google=4本値+出来高 取得可能期間: Yahoo!=上場~前日分 / Google=直近200日分 この違いは実装の違いによるものでありWEBへの提供はされている 日本株式のみで運用する場合には今回作成したYahoo!の時系列データががおススメ。 海外の株式やETFを含むポートフォリオを運用する場合にはGoogleの時系列データがおススメ。 証券コードの指定方法が異なるので、それぞれコマンドラインは以下のようになる。 ※xxxxが証券コード >python googlefinance2csv.py TYO:xxxx >python yahoofinance2csv.py xxxx #!/usr/local/bin/python # -*- coding:utf-8 -*- from BeautifulSoup import BeautifulSoup import urllib2,re,datetime,sys FROM_DATE = {'YEAR':1900,'MONTH':'01','DAY':'01'} URL_FORMAT='http://table.yahoo.co.jp/t?a=%(a)s&b=%(b)s&c=%(c)s&d=%(d)s&e=%(e)s&f=%(f)s&g=%(g)s&s=%(s)s&y=%(y)s&z=%(z)s' class yahooFinance2CSV(...

[お知らせ]相関係数ランキング更新終了のお知らせ

毎日、更新してきた為替レート及び日経平均構成銘柄の相関係数ランキングを終了します。 以下の3点から今後の更新はプラスにならないと判断したためです。 他の記事が埋もれてしまう 同じ文章でまるでスパム 見てる人いないw せっかく作ったので、文面をシンプルにして自分宛てにメールすることは考えています。 時間があればGoogle App Engineを利用したサイトかなんかで公開してもいいかもしれません。 相関係数を算出するプログラムを組むという目的は達成したわけなので、今後はそれを世の中に役立てることを考えたいと思います。 以上。