[LL] Let's LL

社内の技術発表会で発表した資料をSlideShareに投稿しました。
CやJavaプログラマがLLにも目を向けてみるって感じの内容です。

Let's LL
https://www.slideshare.net/t_ichioka_sg/lets-ll

[Windows] コマンドプロンプトで文字列入出力のTips

PowerShellとかありますが、なんだかんだ言ってWindowsのバッチファイルって、何気に使うと便利な場面多いですよね。
でも、Unixのシェルほど融通が効かないので困ってしまうことも多いよね。

なので、ちょっと文字列入出力について、まとめ。

リダイレクトやパイプの文字を出力する

リダイレクト(<>)やパイプ(|)の文字をechoでそのまま出力しようとしても、当然コマンドライン制御文字として判定されてしまうため、うまくいかない。

[unix] スティッキーなビット?

Unixのファイル権限

Unixのファイル権限は読み/書き/実行が4/2/1のビットで表されていて、ファイルの"オーナー/グループに所属するユーザ/それ以外"がそれぞれが8進数の1桁に割り当てられている。
例えば、あるファイルが
  • オーナーは読み書き実行OK
  • グループに所属するユーザは読み実行のみOK
  • それ以外は読み実行のみOK
であれば、"755"ということになる。

でも、もう一つ上の桁がある。

[Oracle] TO_DATEでのFX書式文字列

TO_DATEの書式指定

Oracleでテーブルに日付を格納するときにはTO_DATEで文字列からDATEやTTIMESTAMPに型変換したりする。
このとき、'YYYYMMDD'とかで書式指定すれば、文字列を書式に合わせてパースしてくれる。

> SELECT TO_CHAR(TO_DATE('2017-02-28 12:34:56', 'YYYY-MM-DD HH24:MI:SS'), 'YYYY-MM-DD HH24:MI:SS') FROM DUAL;
2017-02-28 12:34:56

ところが、あるデータで書式指定に合ってないのになんの問題もなく、テーブルにデータが格納してしまっていることに気づいた。

> SELECT TO_CHAR(TO_DATE('2017-02-28', 'YYYY-MM-DD HH24:MI:SS'), 'YYYY-MM-DD HH24:MI:SS') FROM DUAL;
2017-02-28 00:00:00

> SELECT TO_CHAR(TO_DATE('20170228 123456', 'YYYY-MM-DD HH24:MI:SS'), 'YYYY-MM-DD HH24:MI:SS') FROM DUAL;
2017-02-28 12:34:56

[JavaScript] JavaScriptのDateとmoment.js

JavaScriptのDate

JavaScriptのDateオブジェクトは日付指定生成時に間違えやすい。
例えば、以下のようにすると
Console.log(new Date('2017/01/01'));
Console.log(new Date('2017-01-01'));
Console.log(new Date(2017, 1, 1));
Console.log(new Date(2017, 0, 1));

※検証環境: IE11
[date] Fri Jan 01 2017 00:00:00 GMT+0900 (東京 (標準時))
[date] Fri Jan 01 2017 09:00:00 GMT+0900 (東京 (標準時))
[date] Mon Feb 01 2017 00:00:00 GMT+0900 (東京 (標準時))
[date] Fri Jan 01 2017 00:00:00 GMT+0900 (東京 (標準時))

'YYYY-MM-DD'形式だけ、時刻が9時間ずれている!