AWSのRDSにmariadbが追加されましたね。

 

xtradbのサポートはあるようだけど、

mariadbのクラスター関連のエンジンはサポートしていない感じがする。

 

AWSの場合、Auroraがあるから、mariadb流行らないかも。。

 

クラスター関連をサポートしてくれないかな。。

 

投稿日時:2015年11月17日 13:19   カテゴリー:aws, mariadb  

windows10にvirtualbox5を入れて、

ゲストOSをローカルネットワーク内に参加させる方法が、

windows8とvirtualbox4のときと異なったので、

メモしておく。

 

以前は、wifiとホストオンリーアダプタでブリッジを作っていたが、

今回はブリッジのみでいけるが、Oracleのドライバーが必要らしい。

 

(前提)

  • ホストOSのアドレスは192.168.1.10
  • ゲストOSのアドレスは192.168.1.15
  • 他ホストのアドレスを192.168.1.11

とする。

 

手順1. Oracleのドライバーを入れる

ホストオンリーアダプタのプロパティから、以下の画面を開き、

「VirtualBox NDIS6〜」なるものをインストールする。

vbox5_01

 

立ち上がった画面で、「サービス」を選択して追加する。

vbox5_02

 

「「VirtualBox NDIS6〜」なるものを選択して「OK」を押す。

vbox5_03

 

これで、ok。

 

手順2. ゲストOSのネットワークにブリッジアダプターを選択する

ゲストOSの設定で、ブリッジアダプターを選択する。

vbox5_04

 

手順3. ゲストOSのネットワークを固定IPに設定する

今回は192.168.1.15とする。

 

これで、ゲスト側のネットワークを起動すれば、

192.168.1.11のような同一ネットワーク内の他ホストから接続可能となる。

もちろん、firewall等もあるから、そこは適宜設定。

 

以上

 

投稿日時:2015年11月06日 13:49   カテゴリー:virtualbox, windows  

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に追加しろとかあるけど、

どれも不要だった。。

 

投稿日時:2015年10月29日 16:28   カテゴリー:scala  

ラムダ式が導入されて(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();

 

ここまでくるのに結構大変だった。。

投稿日時:2015年10月29日 16:28   カテゴリー:java  

td-agentはプラグインが豊富だけど、

結構品質(というか、どこまで想定して作られているか)がよくないものが多いように感じる。

 

OSS時代の申し子的な存在だけど、

意外にプラグインの品質が悪くて、修正してしまうケースもある。

 

本体はとても優れたプロダクトですが、

プラグインの品質は優劣が激しいので、

気をつけましょう。

 

・・・それに毎回設定で苦労してるから、

td-agentに代わるものを、akkaで作りたいな。。

 

投稿日時:2015年10月26日 17:09   カテゴリー:server  

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'

 

投稿日時:2015年10月08日 19:17   カテゴリー:mysql  

windowsのような右クリックキーがmacにも欲しい。

 

ということで、不要なCapsLockを、右クリックキーに割り当てましたので、

その手順を残しておきます。

 

1.CapsLockのキー割り当てを解除

01

 

2.「Seil」というソフトで、CapsLockにF19を割り当てる

02

 

3.「BetterTouchTool」というソフトで、F19に右クリックを割り当てる

03

 

F19は当方がフルサイズキーボードで、

使用していないので割り当てただけで、

使用していないければ、どのキーでもOK。

 

あとは、「BetterTouchTool」を、

ログイン時に起動しておくようにしておけばよい。

 

投稿日時:2015年09月09日 14:47   カテゴリー:mac  

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は公開されている方のものを拝借させていただいた。

 

これで、結構快適になった。

 

投稿日時:2015年09月09日 13:55   カテゴリー:mac  

最近、macに移行した。

慣れ親しんだwindowsに別れをつげて、

macに移行したものの、キーボードがスムーズに打てない。。

 

windowsではcygwin生活だったが、

macに移行して、ターミナル生活になった。

macはやはりターミナル極めてなんぼだなという感じがする。

 

1つ失念していたことで、

macはwindowsと違い、

ファイルパスの大文字小文字を区別するんだった。。

javaファイルがコンパイルできなくて、はまりました。。

 

 

macにtipsもいろいろ書いていきたいっす。

 

投稿日時:2015年09月01日 13:38   カテゴリー:mac  

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でも大丈夫でしょう。

 

以上

投稿日時:2015年08月18日 09:29   カテゴリー:java, websocket