/etc/ssh/sshd_configの構文チェック

/usr/sbin/sshd -tで問題がなければ何も表示されず、問題があればエラーが出力されるらしい。わざとスペースを抜いたものを作ってテストしたら以下のようになった。

$ /usr/sbin/sshd -t
/etc/ssh/sshd_config: line 17: Bad configuration option: Port22
/etc/ssh/sshd_config: terminating, 1 bad configuration options

参考
http://wiki.inamuu.com/index.php?sshd_config%E3%81%AE%E6%A7%8B%E6%96%87%E3%83%81%E3%82%A7%E3%83%83%E3%82%AF

Rubyのmysql2で将来的に廃止されるオプション

将来的に廃止されるオプションと今後使用するべきオプションについての警告がでてきた。

============= WARNING FROM mysql2 =============
The options :user, :pass, :hostname, :dbname, :db, and :sock will be deprecated at some point in the future.
Instead, please use :username, :password, :host, :port, :database, :socket, :flags for the options.
============= END WARNING FROM mysql2 =========

JavaScript ES6のテンプレートリテラルとカスタムテンプレートの作成

ES6にはテンプレートリテラルというものがあり以下のように記述できる

`hoge${bar}hoge`

このテンプレートはユーザーが自作することもできる

userCustomTemplate`hoge${hoge}hoge`

自分で定義する場合はこうする。引数に対してこのように分解された文字列と変数が渡ってくる。

var inspect = function(strs, ...vars) {
console.log(strs);
console.log(vars);
};
var test1 = 'エー';
var test2 = 'ビー';
inspect`http://example.com/?a=${test1}&b=${test2}`;
// ["http://example.com/?a=", "&b=", ""]
// ["エー", "ビー"]

URLのパラメータを自動でエンコードするものを作ればこのように自動エンコードが簡単に行える

var url = function(strs, ...vars) {
return strs.filter((str, index) => !(str === '' && vars[index] === undefined)).reduce((carry, value, index) => {
return carry + strs[index] + encodeURIComponent(vars[index]);
}, '');
};
var test1 = 'エー';
var test2 = 'ビー';
console.log(`http://example.com/?a=${test1}&b=${test2}`);    // http://example.com/?a=エー&b=ビー
console.log(url`http://example.com/?a=${test1}&b=${test2}`); // http://example.com/?a=%E3%82%A8%E3%83%BC&b=%E3%83%93%E3%83%BC

PHPでタイムゾーンを設定する

こんなエラーが出た時は

Warning: date(): It is not safe to rely on the system's timezone settings. You are required to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected the timezone 'UTC' for now, but please set date.timezone to select your timezone. in /Users/hoge/hoge.php on line 2

date_default_timezone_setを使って設定する

date_default_timezone_set('Asia/Tokyo');

PHPではなく設定ファイルで設定するならphp.iniで以下のように設定できる

date.timezone = "Asia/Tokyo"

Hiveのユーザー定義関数(UDF)を作成する

HiveUDFでユーザー定義関数を作成することができます。引数に与えられた数値を倍にするという処理を作ってみます。

SELECT TwoTimes(pv) FROM access_log;

org.apache.hadoop.hive.ql.exec.UDFを継承して以下のようにevaluateメソッドを定義します。

package com.example.hive.udf;
import org.apache.hadoop.hive.ql.exec.UDF;
public class TwoTimes extends UDF {
public Integer evaluate(Integer num) {
return num * 2;
}
}

これをコンパイルして

gradle build

hiveコマンドで以下のように追加して関数として設定します。

hive> add jar /path/to/udf.jar
hive> create temporary function TwoTimes as 'com.example.hive.udf.TwoTimes';

ユーザー定義関数を使うとHiveがかなり便利になります。ちなみに分散したクラスターの数だけUDFのインスタンスが生成されるんじゃないかと思う(想像なので注意)。

参考
http://www.ne.jp/asahi/hishidama/home/tech/apache/hive/udf.html