Hatena::ブログ(Diary)

C++でゲームプログラミング

2013-06-18

[][]LLVM 3.3 がリリース

LLVM 3.3 がリリースされました。


予定より2週間ほど遅れていたんですが無事にリリースされました。

既知の通り Clang 3.3 では C++11 の機能が完全実装されています。


既に C++14 の実装も始まっているので今後も Clang からは目が離せませんね。

この機会に LLVM/Clang を試してみるのもいいかと思います。


しかし、残念ながら公式では Windows 向けのバイナリは配布されていないようです。

ですので Windows で使用したい方は自分でビルドする必要があります。

3.2 までは MinGWビルドされたバイナリが配布されていたんですけどねぇ。

とりあえず、Clang Tools 辺りが気になっているのでリリースノートやそこら辺のドキュメントを読まねば…。

[]誰もが一度は陥る日付処理。各種プログラミング言語におけるDateTime型/TimeStamp型の変換方法のまとめに Vim script が無いので追加


Vim script がないので書いてみました。


[現在時刻のDateTime取得]

strftime() を使用します。

echo strftime("%Y-%m-%d %H:%M:%S")
" => 2013-06-18 00:39:26

[現在時刻のTimeStamp取得]

localtime() を使用します。

echo localtime()
" => 1371483574

[DateTime => TimeStamp変換]

残念ながら Vim script では簡単に行うことができません。

(※vital.vim を使用して簡単に行う方法は後述参照。


[TimeStamp => DateTime変換]

strftime() の第二引数に TimeStamp を渡すことでその TimeStamp で DateTime を返します。

let s:time_stamp = 1371292653
echo strftime("%Y-%m-%d %H:%M:%S", s:time_stamp)
" => 2013-06-15 19:37:33

[まとめ]

基本的には strftime() を使用してTimeStamp から DateTime に変更を行います。

strftime() に TimeStamp(第二引数)が渡されなければ現時刻が使用されます。


[おまけ]

ちなみに vital.vim には DateTime モジュールがあるのですがそれを使用すると以下の様になります。


let s:DT = vital#of('vital').import('DateTime')

" 現在時刻のDateTime取得
let s:now_time = s:DT.now()
echo s:now_time.format("%Y-%m-%d %H:%M:%S")
" => 2013-06-18 00:48:12

" 現在時刻のTimeStamp取得
echo s:now_time.unix_time()
" => 1371484092

" DateTime => TimeStamp変換
let s:time = s:DT.from_format("2013-06-15 19:37:33", "%Y-%m-%d %H:%M:%S")
echo s:time.unix_time()
" => 1371292653

" DateTime => TimeStamp変換
let s:time = s:DT.from_unix_time(1371292653)
echo s:time.format("%Y-%m-%d %H:%M:%S")
" => 2013-06-15 19:37:33

Vital.DateTime では DateTime オブジェクトを作成して、そのオブジェクトに対して様々な操作を行います。

このモジュールを使用すれば [DateTime => TimeStamp変換] も簡単に行うことが出来ます。

便利。