AWSのRDSにmariadbが追加されましたね。
xtradbのサポートはあるようだけど、
mariadbのクラスター関連のエンジンはサポートしていない感じがする。
AWSの場合、Auroraがあるから、mariadb流行らないかも。。
クラスター関連をサポートしてくれないかな。。
IT系のめもを蓄積していこうかと
AWSのRDSにmariadbが追加されましたね。
xtradbのサポートはあるようだけど、
mariadbのクラスター関連のエンジンはサポートしていない感じがする。
AWSの場合、Auroraがあるから、mariadb流行らないかも。。
クラスター関連をサポートしてくれないかな。。
windows10にvirtualbox5を入れて、
ゲストOSをローカルネットワーク内に参加させる方法が、
windows8とvirtualbox4のときと異なったので、
メモしておく。
以前は、wifiとホストオンリーアダプタでブリッジを作っていたが、
今回はブリッジのみでいけるが、Oracleのドライバーが必要らしい。
(前提)
とする。
手順1. Oracleのドライバーを入れる
ホストオンリーアダプタのプロパティから、以下の画面を開き、
「VirtualBox NDIS6〜」なるものをインストールする。
立ち上がった画面で、「サービス」を選択して追加する。
「「VirtualBox NDIS6〜」なるものを選択して「OK」を押す。
これで、ok。
手順2. ゲストOSのネットワークにブリッジアダプターを選択する
ゲストOSの設定で、ブリッジアダプターを選択する。
手順3. ゲストOSのネットワークを固定IPに設定する
今回は192.168.1.15とする。
これで、ゲスト側のネットワークを起動すれば、
192.168.1.11のような同一ネットワーク内の他ホストから接続可能となる。
もちろん、firewall等もあるから、そこは適宜設定。
以上
java8でラムダ式を始めてみて、
こりゃscalaも勉強しとかなきゃあかんな、
と思い、scalaをダウンロードしにいったら、
TypesafeActivatorもあったから、こっちでやることにした。
1.まずsbtをいれる
# port install sbt |
2.次にeclipseのscalaプラグインを入れる
マーケットプレイスにもある。
3.そしてsbtをダウンロードして、パスを通す
# cd /opt # curl -O "http://downloads.typesafe.com/typesafe-activator/1.3.6/typesafe-activator-1.3.6.zip" # unzip typesafe-activator-1.3.6.zip # ln -s /opt/typesafe-activator-1.3.6 /opt/typesafe-activator # echo "export PATH=$PATH:/opt/activator-dist" >> /etc/profile # source /etc/profile |
これで、activatorコマンドが実行できるようになった。
4.eclipseプロジェクトへの変換
activator new
とかで新規プロジェクトの雛形をつくってくれるので、
そのプロジェクトに移動後、
$ sbt eclipse |
ってやれば、eclipseへのインポートが可能になる。
なんか、
activator eclipse
とか、plugin.sbtに追加しろとかあるけど、
どれも不要だった。。
ラムダ式が導入されて(java8)結構たちましたが、
あまりやる気がしなかったが、
重い腰を上げて、おれおれフレームワークに少しづつ適用中。
いろいろ例はあるが、やはりコレクションには適用しやすい。
二元ループをするケースで結構はまったので、
メモを残しておく。
(例)URLのBodyパラメータを手作業で分解する場合
Bodyパラメータはこんな感じを想定
hoge=1&fuga=2&piyo[]=1&piyo[]=2 |
ここではInputStreamから抜かないで、一度分解したのち、文字列に戻すということをやる。
これを従来の処理でやると以下になる。
Map<String, List<String>> paramsBody = new LinkedHashMap<String, List<String>>(); StringBuffer buffer = new StringBuffer(); // サーブレットリクエストからパラメータの情報をとる Map<String, String[]> params = servletRequest.getParameterMap(); // 回しながら、List型に変換して、さらに文字列を構築する String sep = "" ; for (Iterator<Entry<String, String[]>> iterator = params.entrySet().iterator(); iterator.hasNext();) { Map.Entry<String, String[]> entry = (Map.Entry<String, String[]>) iterator.next(); String name = entry.getKey(); String[] values = entry.getValue(); if (!paramsBody.containsKey(name)) { paramsBody.put(name, new ArrayList<String>(Arrays.asList(values))); } for (String value : values) { buffer.append(sep).append(name).append( "=" ).append(WsUrl.decode(value, encoding)); sep = "&" ; } body = buffer.toString(); } |
おなじことをラムダ式をつかうと、
Map<String, List<String>> paramsBody = new LinkedHashMap<String, List<String>>(); StringBuffer buffer = new StringBuffer(); // サーブレットリクエストからパラメータの情報をとる Map<String, String[]> params = servletRequest.getParameterMap(); // 回しながら、List型に変換して、さらに文字列を構築する String paramString = params.entrySet() .stream() .map(entry -> { String name = entry.getKey(); return Arrays.stream(entry.getValue()) .map(value -> String.format( "%s=%s" , name, WsUrl.decode(value, encoding))) .collect(Collectors.joining( "&" )); }) .collect(Collectors.joining( "&" )); buffer.append(paramString); body = buffer.toString(); |
ここまでくるのに結構大変だった。。
td-agentはプラグインが豊富だけど、
結構品質(というか、どこまで想定して作られているか)がよくないものが多いように感じる。
OSS時代の申し子的な存在だけど、
意外にプラグインの品質が悪くて、修正してしまうケースもある。
本体はとても優れたプロダクトですが、
プラグインの品質は優劣が激しいので、
気をつけましょう。
・・・それに毎回設定で苦労してるから、
td-agentに代わるものを、akkaで作りたいな。。
MySQLでは、
・truncate
・load in file
・create
などの一部はトランザクションが効かないのね。。
また、load in fileは、
replaceキーワードを使えば、主キーが存在していれば、
updateを行ってくれるのね。。
基本的なことだろうけど、知らなかったわ。。
load in fileの例(RDSにて)
LOAD DATA LOCAL INFILE '${file_path}' REPLACE INTO TABLE ${table_name} FIELDS TERMINATED BY '\t' LINES TERMINATED BY '\n' |
windowsのような右クリックキーがmacにも欲しい。
ということで、不要なCapsLockを、右クリックキーに割り当てましたので、
その手順を残しておきます。
1.CapsLockのキー割り当てを解除
2.「Seil」というソフトで、CapsLockにF19を割り当てる
3.「BetterTouchTool」というソフトで、F19に右クリックを割り当てる
F19は当方がフルサイズキーボードで、
使用していないので割り当てただけで、
使用していないければ、どのキーでもOK。
あとは、「BetterTouchTool」を、
ログイン時に起動しておくようにしておけばよい。
macのターミナルがデフォルトだと非常に使いづらいので、
/etc/profileを以下のように変更した。
# System-wide .profile for sh(1) if [ -x /usr/libexec/path_helper ]; then eval `/usr/libexec/path_helper -s` fi if [ "${BASH-no}" != "no" ]; then [ -r /etc/bashrc ] && . /etc/bashrc fi # color PS1='[\[\033[36m\]\u\[\033[0m\] \[\033[32m\]\w\[\033[0m\]]\[\033[33m\]\$\[\033[0m\] ' # git source /etc/git-completion.bash # ssh if [ -f ~/.ssh/config ]; then complete -o default -o nospace -W "$(grep -i -e '^host ' ~/.ssh/config | awk '{print substr($0, index($0,$2))}' ORS=' ')" ssh scp sftp fi # alias export LSCOLORS=gxfxcxdxbxegedabagacad alias ls='ls -G' alias ll='ls -l' alias la='ls -al' # java export JAVA_HOME=`/usr/libexec/java_home` export MAVEN_HOME=/opt/apache-maven export ANT_HOME=/opt/apache-ant # path export PATH=$PATH:$MAVEN_HOME/bin export PATH=$PATH:$ANT_HOME/bin export PATH="/opt/local/bin:/opt/local/sbin:$PATH" |
.bash_profileを変更してもよいが、
どうせなら、/etc/profileを変更しちゃう方がいいかなと。
portのインストールは済ませておきましょう。
また、git-completion.bashは公開されている方のものを拝借させていただいた。
これで、結構快適になった。
最近、macに移行した。
慣れ親しんだwindowsに別れをつげて、
macに移行したものの、キーボードがスムーズに打てない。。
windowsではcygwin生活だったが、
macに移行して、ターミナル生活になった。
macはやはりターミナル極めてなんぼだなという感じがする。
1つ失念していたことで、
macはwindowsと違い、
ファイルパスの大文字小文字を区別するんだった。。
javaファイルがコンパイルできなくて、はまりました。。
macにtipsもいろいろ書いていきたいっす。
javaでwebsocketクライアントをやろうとしたら、
websocket-apiライブラリでは動かなかった。
なんでも、meta-infのserviceのところに何かを配備する必要があるらしい。
そこで、いろいろ調べたら、glassfishのライブラリを導入すれば、
一発で済むことがわかった。
pom.xmlは以下を書くだけ。
< dependency > < groupId >org.glassfish.tyrus.bundles</ groupId > < artifactId >tyrus-standalone-client</ artifactId > < version >1.11</ version > </ dependency > |
あとは、
WebSocketContainer cont = ContainerProvider.getWebSocketContainer(); URI uri = URI.create( "ハンドシェイクのURL" ); cont.connectToServer( "websocketのインスタンス" , uri); |
で接続できる。
検証したのは、JDK8だが、JDK7でも大丈夫でしょう。
以上