2017/05/01
_ Windows10 ってセーフモードないのね (>_<)
色々とサイトをググってみたけど、 結局 PCパワーオン直後にセーフモードで立ち上げる方法が見つからない。
MediaCreationTool を使って ISOを作成し、そこから修復を試みようとするも 「復元ポイントまで戻す」どころか「前のバージョンに戻す」ことすらエラーとなってしまう (+_+)
詰みました orz
仕方ないので、現有パーティションは残したままクリーンインストール実行・・・
1年以上バックアップしていなかったことが悔やまれる(後悔先に立たず)
2017/05/04
_ C:\ を覗いていると
パーティションを残したまま Windows10 Creators Update をインストール したので、前のバージョンのファイルが残っていることに気づく。
C:\Windows.old.000 $Recycle.bin PerfLogs ProgramData Program Files Program Files (x86) Windows
同容量の SSD にダビングをしてから、 MediaCreationTool で作成したISOを起動&コマンドプロンプトを実行。 上記サブフォルダと同名の現在のフォルダについて、C:\backup へ move しておき、 前のバージョンのファイルを C:\ へ move してからリブート。
いちおうドキュメントの参照やユーザプログラムは起動できるみたいだけど、 OSバージョンが Creators Update のままになっているため Edge など起動エラー。あらら (>_<)
ひととおりユーザデータをバックアップしたら、クリーンインストールして 環境を作り直すか。┐(´д`)┌ヤレヤレ
2017/05/07
_ [FreeBSD][ruby]Rubyではじめるシステムトレード
Python でシステムトレードを作る(または利用させて頂く)ことを 考えていたけど、たまたま立ち寄った書店で手にした ”Rubyではじめるシステムトレード”という本のコンセプトがなかなかイイっ\(^o^)/。
もちろん儲けたいという想いについては言うまでもないけど、私の気を引いた文言は、
- CUI
- 売買ルールの部品化、着脱
- 「移動平均乖離率システム」と「ブレイクアウトシステム」のプログラム化
で、電子書籍板を探してみると見つかりました! Rubyではじめるシステムトレード
紙の本だと \3024 のところ、kindle本では ¥1944 !!
早速、読み始めようと思ったけど、もう少し”事の発端”を知りたいなぁと思い、 作者さんの前著2冊を読むことにした。
なかなか面白いし、資金管理が大事で、その意味するところも説明されていて、 タイトルに似合わず良い本だと思った。(^o^)
2017/05/08
_ 自サーバへの SSL接続でエラーが出ていたが解決
数日前より、インターネットから自サイトへ SSL接続すると 「プライバシーが保護されない」というエラーが出ていた。
この接続ではプライバシーが保護されません
攻撃者が、Hogehoge.com 上のあなたの情報(パスワード、メッセージ、クレジット カード情報など)を 不正に取得しようとしている可能性があります。 NET::ERR_CERT_COMMON_NAME_INVALID
このサーバーが Hogehoge.com であることを確認できませんでした。 このサーバーのセキュリティ証明書は [missing_subjectAltName] から発行されています。 原因として、設定が不適切であるか、悪意のあるユーザーが接続を妨害していることが考えられます。
不思議なことに Chrome ではエラーとなるのに、IE10ではエラーとはならなかったこと。
ERR_CERT_COMMON_NAME_INVALIDをキーワードにググってみると、 まさしくドンピシャなサイトがあった。 Chrome58で、HTTPSの自己証明書が NET::ERR_CERT_COMMON_NAME_INVALID になる場合の対応
早速 openssl.cnf を指示通りに書き換え、SAM エントリーが追加されていることを確認。 apache を restart してみると、無事 Chrome でもサーバー証明書エラーなくSSL接続が出来るようになった\(^o^)/
確かに Chrome を 58に上げたぐらいの頃から証明書エラーになってたんだよなぁ。
さすが、先人の経験、お知恵には感服致します。
2017/05/09
_ [Python][FX]OANDA API を使って、各通貨ペアの直近時間足を取得
OANDA APIって便利だなぁ。 自口座の情報取得や、指定した通貨ペアの Bid/Ask値取得、 指定した範囲のヒストリカルデータの取得など 色んなことが出来る。トレード指示もできる。 なんてステキなんだ\(^o^)/
色々とググりながら Pythonでのコーディングを勉強しつつ、 指定する通貨ペアについて直近の1時間足確定分5つを取得して csv形式に表示(値の指定は closeMid)
USD_JPY,113.722,113.7015,113.8005,113.8345,113.8025 EUR_USD,1.08822,1.08865,1.08947,1.089505,1.08931 EUR_JPY,123.7565,123.782,123.9835,124.0185,123.965 GBP_JPY,147.238,147.229,147.369,147.4185,147.3245 EUR_GBP,0.84048,0.8407,0.84129,0.84131,0.84149 ...etc
参考にさせていただいたサイト:
2017/05/15
_ [FreeBSD]FreeBSD なサーバーに VirtualBox 5.1.18 を入れて、headless で Ubuntu を動かす
まずは ports から headless用の virtualbox をインストール
# cd /usr/ports/emulators/virtualbox-ose-nox11 # make # ... make 出来ることを確認
その後、symlinkエラーを無視するよう修正。virtualbox ポリシーに背くけど (^^; (VirtualBox は GPLなので、それに従いソースの patch を記す)
--- emulators/virtualbox-ose-nox11/work/VirtualBox-5.1.18/src/VBox/HostDrivers/Support/SUPR3HardenedVerify.cpp 2017-05-14 12:55:20.030470000 +0900 +++ emulators/virtualbox-ose-nox11/work/VirtualBox-5.1.18/src/VBox/HostDrivers/Support/SUPR3HardenedVerify.cpp~ 2017-03-16 04:17:34.000000000 +0900 @@ -1404,9 +1404,7 @@ && !S_ISREG(pFsObjState->Stat.st_mode)) { - if (S_ISLNK(pFsObjState->Stat.st_mode)) { - return VINF_SUCCESS; + if (S_ISLNK(pFsObjState->Stat.st_mode)) return supR3HardenedSetError3(VERR_SUPLIB_SYMLINKS_ARE_NOT_PERMITTED, pErrInfo, "Symlinks are not permitted: '", pszPath, "'"); - } return supR3HardenedSetError3(VERR_SUPLIB_NOT_DIR_NOT_FILE, pErrInfo, "Not regular file or directory: '", pszPath, "'");
/boot/loader.conf と /etc/rc.conf に関連設定を追加
# vi /boot/loader.conf vboxdrv_load="YES" # vi /etc/rc.conf vboxnet_enable="YES" vboxdrv_load="YES"
ubuntu 16.04 LTS の DVD image を用いて vboxを作成。 64bit OS、VNC接続(Port=5901) できるように設定。
# vboxmanage createvm --name <VMname> --basefolder /hoge --ostype Ubuntu_64 --register # VBoxManage modifyvm <VMname> --memory 2048 --acpi on --ioapic on --cpus 2 --hwvirtex on --nestedpaging on --largepages on --nic1 bridged --bridgeadapter1 em0 --nictype1 Am79C973 --cableconnected1 on --boot1 dvd --boot2 disk --boot3 none --boot4 net --usb off --usbehci off # vboxmanage createhd --size 20480 --filename /PathToVdiImage # VBoxManage storagectl <VMname> --name "IDE Controller" --add ide --controller PIIX4 --bootable on # VBoxManage storageattach <VMname> --storagectl "IDE Controller" --port 0 --device 1 --type dvddrive --medium /PathToDvdImage # VBoxManage storageattach <VMname> --storagectl "IDE Controller" --port 0 --device 0 --type hdd --medium /PathToVdiImage # VBoxManage modifyvm ubuntu1604 --vrde on --vrdeport 5901 --vrdeproperty VNCPassword=<MyPassword>
途中でハマったこと。
最初 ostype を Ubuntu としてインストールしてしまい、DVDをブートして直後に
This kernel requires an x86-64 CPU, but only detected an i686 CPU
エラーが発生した。
色々とググってみると 『BIOSメニュー上で VT-xが有効化されていないから』 というアドバイスを見つけたが、俺の場合は既に設定済み (>_<)。
更にググってみると、ostype と稼働させるOSのbitが異なるからという指摘を見つけ、 まさにその状態であると判明。そこでインストール状態の vbox に対して追加で、
vboxmanage modifyvm <VMname> --ostype Ubuntu_64
とするも、あえなく撃沈 orz
結局 unregistervm して、念のため vbox ファイルも削除してから、 改めて createvm 以降やり直ししたら無事起動できた \(^o^)/ どうやら後から ostype を指定し直してもダメなようだ。
参考にさせていただいたサイト:
2017/05/16
_ Perl 5.24 がリリースされたんだね。
とうとう $_ が使えなくなったのか。 5.10 で登場した時は「Perlって省力化に拘るなぁ」なんて思ってたけど、 いざ使ってみると使いやすかったり間違ったり (-_-;; そういやまだそのまま使ってるライブラリあったよな(*´∀`)
2017/05/18
_ [FreeBSD][ Postgresql]OANDAの直近ヒストリカルデータを溜め込むためにSQL使おうかな
と思い立ち、SQLは何を選ぼうかと色々とググってみたら、 PostgreSQL v9.2以降は JSONが扱えるみたい (^o^)/ 更に、v9.4以降だと JSONB というバイナリ形式も扱えるようだ。(よく判ってないけどw)
そこで、現在 pkg/ports で最新版な PostgreSQL v9.6 をインストールすることにした。 Python と連携するには psycopg2 モジュールもインストールするけど、 FreeBSD-10.3 な現状ではどうやら PostgreSQL v9.3 に依存しているようだ。 仕方なしに、postgresql96 は pkg でインストールし、psycopg2 だけは ports でインストール。
/etc/make.conf: DEFAULT_VERSIONS+=pgsql=9.6 # ports のデフォルトを v9.6 にする
# pkg install postgresql96-server postgresql96-client # cd /usr/ports/databases/py-psycopg2 # make install clean
/etc/rc.conf: postgresql_class="postgres" postgresql_user="pgsql" postgresql_data="/PathTo_pgsql/data" postgresql_enable="YES"
インストールが出来たら initdbを作成し、postgresql サービスを起動。ユーザを追加。 外部アプリからアクセスできることを確認しておく。
# /usr/local/etc/rc.d/postgresql initdb # /usr/local/etc/rc.d/postgresql start # # su pgsql $ createuser --pwprompt --interactive pgadmin 新しいロールのためのパスワード: もう一度入力してください: 新しいロールをスーパーユーザにしますか? (y/n)y
追加したユーザにて、新しくデータベースを作ってみる。
% createdb newdb --locale=ja_JP.UTF-8 --encoding=UTF-8 --template template0
参考にさせていただいたサイト:
2017/05/20
_ [PostgreSQL]OANDA API で取得し JSON形式で保存したヒストリカルデータを PostgreSQL で読んでみる
JSON形式で読んで扱えるということで、色々とググりながら SQL文を勉強中。
FileName : PathToJson ... [Pythonから出力した JSONファイル]
{ "USD_JPY": [ { "complete": true, "closeMid": 111.4825, "highMid": 111.52, "lowMid": 111.3545, "volume": 2112, "openMid": 111.356, "time": "2017-05-18T20:00:00.000000Z" }, { "complete": true, "closeMid": 111.567, "highMid": 111.6115, "lowMid": 111.451, "volume": 2936, "openMid": 111.5375, "time": "2017-05-18T21:00:00.000000Z" }, (snip) ], "EUR_JPY": [ { "complete": true, "closeMid": 123.781, "highMid": 123.884, "lowMid": 123.743, "volume": 539, "openMid": 123.7515, "time": "2017-05-18T20:00:00.000000Z" }, (snip) ] }
このファイルを PostgreSQL v9.6 で読み込んで、指定した配列要素番号にある closeMid を取得。
% createdb currency --locale=ja_JP.UTF-8 --encoding=UTF-8 --template template0 % psql currency currency=# create table json_exam as select pg_read_file('PathToJson')::json as jsonColumn; currency=# \d json_exam テーブル "public.json_exam" 列 | 型 | 修飾語 ------------+------+-------- jsoncolumn | json | currency=# SELECT jsoncolumn::jsonb#>'{USD_JPY,1,closeMid}' FROM json_exam; ?column? ---------- 111.567 (1 行) currency=# SELECT jsoncolumn::jsonb#>'{EUR_JPY,0}' FROM json_exam; ?column? ---------------------------------------------------------------------------- {"time": "2017-05-18T20:00:00.000000Z", "lowMid": 123.743, "volume": 539, "highMid": 123.884, "openMid": 123.7515, "closeMid": 123.781, "complete": true} (1 行)
参考にさせていただいたサイト:
2017/05/21 お家サーバ2の外付けHDDの調子が悪い
_ CRCエラーが出始めた
とりあえず新しく外付けHDDを買い、読み取れるデータだけバックアップ開始。
その合間に HDDに関する情報をググってみて萎えました orz
外付けHDDメーカ | 品番 | 内蔵HDDメーカ | 内蔵HDD品番 |
(1)Buffalo | HD-LB2.0TU3-BKC | Seagate | ST2000DM01 |
(2)ELECOM | SGD-NX030UBK | Seagate | ST3000DM01 |
(1)は、今回お亡くなりになったHDD。アマゾンで2年半ほど前に購入。
(2)は、買い足したHDD
そしてどちらもカカクコムでの評価は最悪 ORZ
今回お亡くなりになったHDDの稼働時間を確認したら 19,900時間なので、まぁ寿命ってコト何でしょうねぇ。┐(´д`)┌
買い足したHDDも 2万時間くらいもってくれるといいんだけど、ファンレス筐体のためアイドル時でも 49℃!(室温28℃) 筐体を冷やすファンも買っておくかw
2017/05/26
_ [Python]いちいちスクリプト内を編集していてはたまらない (>_<)
Amazon Advertising API を使った商品検索スクリプトを書いて 検索できるようになったはいいけど、価格の上限や検索キーワードを 変えて検索したい場合に、いちいちスクリプトを編集していた。
毎回編集するのは面倒くさい (+_+) ので、Pythonの勉強のため、 オプション解析する便利な方法がないかググってみたら、あるじゃないの (^o^)V
argparse っていうコマンドライン引数解析のための便利なパッケージ!
早速使ってみました。便利すぎる \(^o^)/
def euc_to_unicode( string ): return string.decode('euc-jp')
parser = argparse.ArgumentParser(description='Amazon product search program') parser.add_argument('kw', nargs="?", default="Python", type=euc_to_unicode, help='search keyword') parser.add_argument('-node', default="MyDefaultNodeId", help='Amazon Node ID. multivalue with comma') parser.add_argument('-max', type=int, default=30000, help='max limit value for searching') parser.add_argument('-min', type=int, default=0, help='min limit value for searching') parser.add_argument("-d", action='count', help="debug flag. multiple times will increase level") args = parser.parse_args() print(args.kw, args.node, args.max, args.min, args.d)
参考にさせていただいたサイト: