なぜかログファイルが
my.cnfに
log_error = /var/log/mysql/error.log
とかちゃんと指定してるのにファイル自体が作られない。
なんでだろうと思ったらただのフォルダのパーミッションの設定が悪かっただけでした。
単純ミスだけど意外と見落としたから一応記録
答えから
//タグ名=”form”を検索
driver.findElement(By.cssSelector(“form”)).click();
//クラス名=”login”を検索
driver.findElement(By.cssSelector(“.login”)).click();
//id名=”form”を検索
driver.findElement(By.cssSelector(“#testForm”)).click();
//タグ名=”input”、クラス名=”login”を検索
driver.findElement(By.cssSelector(“input.login”)).click();
//タグ名=”form”、id名=”testForm”を検索
driver.findElement(By.cssSelector(“form#testForm”)).click();
pubnub-gson-4.19.0-all.jarでWebsocket的な高速のデータ取得(subscription)をやろうとした
subscriptionだけならPublishKeyはなくても良いとのこと
テストコード
PNConfiguration pnConfiguration = new PNConfiguration();
//pnConfiguration.setLogVerbosity(PNLogVerbosity.BODY);pnConfiguration.setSubscribeKey(“sub-c-e12e9174-dd60-11e6-806b-02ee2ddab7fe”);
//pnConfiguration.setPublishKey(“demo”);pnConfiguration.setReconnectionPolicy(PNReconnectionPolicy.LINEAR);
//pnConfiguration.setSecure(false);PubNub pubnub = new PubNub(pnConfiguration);
これでpubnubにchannelをexcuteしたらできる
だけどなぜかError=PNConnectedCategoryで動かない
正しいパターン
statusPNStatus(category=PNConnectedCategory, errorData=null, error=false, statusCode=200, operation=PNSubscribeOperation, tlsEnabled=true, uuid=null, authKey=null, origin=ps.pndsn.com, clientRequest=Request{method=GET, url=https://ps.pndsn.com/v2/subscribe/sub-c-52a9ab50-291b-11e5-baaa-0619f8945a4f/lightning_ticker_BTC_JPY/0?requestid=5fd2956a-3935-4f3d-85f1-da2fb9c9fb0f&heartbeat=300&tt=0&pnsdk=PubNub-Java-Unified/4.19.0&uuid=pn-acc4761e-6587-4195-931b-dff944ddf1cc, tag=null}, affectedChannels=[lightning_ticker_BTC_JPY], affectedChannelGroups=[], executedEndpoint=null)
正しくないパターン
statusPNStatus(category=PNBadRequestCategory, errorData=PNErrorData(information=null, throwable=com.pubnub.api.PubNubException), error=true, statusCode=0, operation=PNSubscribeOperation, tlsEnabled=false, uuid=null, authKey=null, origin=null, clientRequest=null, affectedChannels=[lightning_ticker_BTC_JPY], affectedChannelGroups=[], executedEndpoint=com.pubnub.api.endpoints.pubsub.Subscribe@65a58842)
別環境では動いたからライブラリが干渉してたっぽい
具体的にはgson-2.3.1.jarをはずすと動いた。
If you catch the error “PNBadRequestCategory” in pubnub-gson-4.19.0-all.jar , just remove gson library (gson-2.3.1.jar etc…)
ってことだ
今流行のディープラーニングを本格的にやってみようと思ったら色々ハマったのでメモ
環境:GeForce GTX 1080 Ti
OS:ubuntu16.0.4
自分の環境だと最新版が動かなかったので古いCUDA8をいれた
前準備
sudo apt update
sudo apt upgrade
ubuntu-16.04.3-server-amd64.iso
をダウンロードして
rufus-2.18でUSBメモリにISOをいれてインストール
このときせっかくだからキーボードの確認無しで自動的にOSをインストールするPRESEEDをしようとしたけど、成功しなかったから面倒くさくなってあきらめた。
(ちなみにCentOSだったらKickstartっていう)
Command Lineが出てきたら以下実行
CUDAインストール
wget https://developer.nvidia.com/compute/cuda/8.0/prod/local_installers/cuda-repo-ubuntu1604-8-0-local_8.0.44-1_amd64-deb
sudo dpkg -i cuda-repo-ubuntu1604-8-0-local_8.0.44-1_amd64-deb
sudo apt update
sudo apt install cuda cuda-drivers
sudo reboot
ファイルパスを通す
export PATH=”/usr/local/cuda/bin:$PATH”
export LD_LIBRARY_PATH=”/usr/local/cuda/lib64:$LD_LIBRARY_PATH”
この後nvidia-smiで確認すると成功してたら↓みたいなのがでてくる
+—————————————————————————–+
| NVIDIA-SMI 384.90 Driver Version: 384.90 |
|——————————-+———————-+———————-+
| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
|===============================+======================+======================|
| 0 GeForce GTX 108… On | 00000000:02:00.0 Off | N/A |
| 91% 81C P2 204W / 220W | 812MiB / 11170MiB | 99% Default |
+——————————-+———————-+———————-+
消費ワット下げることもできる
sudo nvidia-smi -pl 240
※persistence-modeを有効じゃないと出来ないっぽい
sudo nvidia-smi -i 0 -pm ENABLED
deb削除する場合
rm cuda-repo-ubuntu1604-8-0-local_8.0.44-1_amd64-deb
cuDNNのインストール
https://developer.nvidia.com/rdp/cudnn-download
からcuDNN 6 for CUDA 8.0のdebパッケージをダウンロード
# Install Runtime library
sudo dpkg -i libcudnn6_6.0*+cuda8.0_amd64.deb
# Install developer library
sudo dpkg -i libcudnn6-dev_6.0*+cuda8.0_amd64.deb
# Install code samples and user guide
sudo dpkg -i libcudnn6-doc_6.0*+cuda8.0_amd64.deb
cuDNNの動作確認
cuda-install-samples-8.0.sh ~
cd ~/NVIDIA_CUDA-8.0_Samples/
make
cd bin/x86_64/linux/release
./smokeParticles
これでいけるはず
おまけ
CCminerもインストールしてみた
sudo apt-get install automake libssl-dev libcurl4-nss-dev
wget https://github.com/Nanashi-Meiyo-Meijin/ccminer/archive/v2.2-mod-r2.tar.gz
tar zxvf v2.2-mod-r2.tar.gz
cd ccminer-2.2-mod-r2
bash autogen.sh
./configure
make
色々あってドル円とかのレートデータを高速で取得する必要があった。
調べたところThe Financial Information eXchange (FIX) protocolがなんか良い感じでスタンダードらしいからそれで構築することにした。
使用したものはQuickFIX/J
http://www.quickfixj.org/
です
YJFXのFIXプロトコルはそこそこ素直に出来たけどOANDAはかなり悩んだ。
ハマったポイントはレートサーバーは別です!
//settings.setString(“SocketConnectHost”, “fxgame-fix.oanda.com”);
settings.setString(“SocketConnectHost”, “fxtrade-fix.oanda.com”);
だけじゃだめ
if(rateServer)settings.setString(“TargetSubID”, “RATES”);
これがいる
これあるとレートサーバーに繋いでくれます。そうじゃないと
toApp :8=FIX.4.49=12735=V34=249=USERID52=20171104-11:48:06.69256=OANDA262=foo263=1264=1265=1266=Y146=155=USD/JPY267=2269=0269=110=207
fromApp :8=FIX.4.49=10835=j34=349=OANDA52=20171104-11:48:05.33056=pp35260445=258=MsgType <35> = V not supported.372=V380=310=180
って怒られます。
正しいリクエスト↓
toApp :8=FIX.4.49=13635=V34=249=USERID52=20171104-11:54:35.94856=OANDA57=RATES262=foo263=1264=1265=1266=Y146=155=USD/JPY267=2269=0269=110=251
んですべてのリクエストに毎回「57=RATES」を入れないとダメです
@Override
public void toAdmin(Message msg, SessionID sessionID) {try {
String msgType = msg.getHeader().getString(MsgType.FIELD);
if(settings.isSetting(“TargetSubID”))
try {
msg.setString(quickfix.field.TargetSubID.FIELD,
settings.getString(sessionID, “TargetSubID”));
} catch (ConfigError | FieldConvertError e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
if(MsgType.LOGON.compareTo(msgType) == 0)
{try {
if(settings.isSetting(“Password”))msg.setString(quickfix.field.Password.FIELD,
settings.getString(sessionID, “Password”));
msg.setString(quickfix.field.ResetSeqNumFlag.FIELD,
“Y”);} catch (ConfigError e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (FieldConvertError e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
} catch (FieldNotFound e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}System.out.println(“toAdmin :”+msg.toString());
}
public void toApp(Message msg, SessionID sessionId) throws DoNotSend {
if(settings.isSetting(“TargetSubID”))
try {
msg.setString(quickfix.field.TargetSubID.FIELD,
settings.getString(sessionID, “TargetSubID”));
} catch (ConfigError | FieldConvertError e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println(“toApp :”+msg.toString());
}
ゴミコードも置いときます。
統計処理で何分とか、何時間とか何秒とかで区切りをつけてSQLを取ってきたい時がある
その時は以下の方法でできそう
SELECT DATE_FORMAT(FROM_UNIXTIME(TRUNCATE(UNIX_TIMESTAMP(`date`) / 180, 0) * 180), ‘%Y-%m-%d %H:%i’) AS custom_date,`id`
FROM `child` Where `date`>\”2017-07-04 00:00:00\” GROUP BY TRUNCATE(UNIX_TIMESTAMP(`date`) / 180, 0) ORDER BY `date`DESC LIMIT 360″;