MySQLでレコードがあればUPDATE、なければINSERTする方法
INSERT hoge_table (column1, column2, column3)
VALUES (value1, value2, value3)
ON DUPLICATE KEY UPDATE
column1=VALUES(column1),
column2=VALUES(column2),
column3=VALUES(column3);
UPDATE以降のVALUES関数はINSERTで指定された値を参照するためのもの。 つまり、上記SQLは、hoge_tableに該当レコードがなければcolumn1=value1、column2=value2、column3=value3で 新規レコードを作成する。 該当レコードがあれば、column1=value1、column2=value2、column3=value3でUPDATEする となる。
CentOS7でjavaの実行環境を切り替えるコマンド
CentOS7でjavaの実行環境を切り替えるコマンド
alternatives --config java
log4j2とShutdownHookについて注意事項
log4j2の設定ファイルでshutdownHookをdisableにしておかないと、タイミングによっては、アプリより先にlog4j2がシャットダウンしてしまって、 アプリのshutdownHook内でログの出力ができなくなる場合がある。
設定例は以下のとおり。
<Configuration shutdownHook="disable">
・
・
</Configuration>
Ruby on Railsのgenerateでテストを作成しないようにする
Ruby on Railsのgenerateでcontrollerやmodelを作成する際、テストコードが作られないようにする方法
rails generate controller Hoges --no-test-framework
rails generate model Hoge --no-test-framework
Javascriptでチェックボックスとテキストボックスの状態を連動させる方法
チェックボックスのチェック状態とテキストボックスの入力可否を連動させる方法を ググったけどよく分からなかったので、自前でその方法を考えてみた。
HTML
<input name="target-checkbox" type="checkbox" id="target_check_0" value="target_num_0">
<input id="target_num_0" type="number" disabled>
<input name="target-checkbox" type="checkbox" id="target_check_1" value="target_num_1">
<input id="target_num_1" type="number" disabled>
Javascript
$('[name=target-checkbox]').change(function() {
var value = $(this).val();
$('#' + value).prop('disabled', !$(this).prop('checked'));
});
チェックボックスのvalue値とテキストボックスのIDを紐付けて制御する。
チェックボックスとテキストボックスの組み合わせが複数あったとしても、 チェックボックスが同じname属性を持てば、同じ様に制御できる。
もっと最適な実装があればそちらに差し替えたい。
Javascriptの日付処理に関するまとめ
文字列から1970/1/1からの通算ミリ秒に変換
var string_date = '2016/11/17';
var tick = Date.parse(string_date);
Dateオブジェクトから1970/1/1からの通算ミリ秒に変換
var today = new Date();
var tick = today.getTime();
当月の月末を取得
var today = new Date();
var next_month_end_date = new Date(today.getFullYear(), today.getMonth() + 1, 0);
翌月の月末を取得
var today = new Date();
var next_month_end_date = new Date(today.getFullYear(), today.getMonth() + 2, 0);
先月の月末を取得
var today = new Date();
var next_month_end_date = new Date(today.getFullYear(), today.getMonth(), 0);