- blogs:
- cles::blog

gem mysql から mysql2 に移行してみる


昔書いた Ruby のプログラムを CentOS 7 上で動かそうとしたのですが、MariaDB が 10.4 と比較的新しいバージョンだったので gem で mysql がインストールできないので困ってしまいました。
mysqlを見ると、最終アップデート日が 2013 年になっていて、最近はメンテナンスされていないようです。このまま粘っても解決の見込みも立たないので、mysql2 に移行してしまうことにしました。
† ソースの書き換えは大きく3箇所
基本的には以下の3箇所を変更してやれば、基本的な動作はするようです。
Date などの部分を自動的に cast する機能がついたようですが、これは :cast => false でオフにしてあります。

clang-query を使って cpp の AST を解析する




C/C++ のソースコードの AST を使って簡単に解析する方法がないか調べていたら、clang-query というのが使えそうだったのでメモ。
clang-tools に入っているので Ubuntu 18.04 では apt install clang clang-tools で使えるようになりました。
† 実行例
例えば以下ような簡単なプログラムの構造を見てみます。
sample.c
コマンドラインから以下のようなコマンドを入力すると、出力を得ることができます。
クエリの内容を変更することで自在にカスタマイズができるので便利ですね。
Match #1:
Binding for "root":
FunctionDecl 0x7fffd94a0d78 </home/hsur/example.c:3:1, line:6:1> line:3:5 main 'int (void)'
`-CompoundStmt 0x7fffd94a0f88 <col:15, line:6:1>
|-CallExpr 0x7fffd94a0ef0 <line:4:2, col:22> 'int'
| |-ImplicitCastExpr 0x7fffd94a0ed8 <col:2> 'int (*)(const char *, ...)' <FunctionToPointerDecay>
| | `-DeclRefExpr 0x7fffd94a0e18 <col:2> 'int (const char *, ...)' Function 0x7fffd948fe08 'printf' 'int (const char *, ...)'
| `-ImplicitCastExpr 0x7fffd94a0f38 <col:9> 'const char *' <BitCast>
| `-ImplicitCastExpr 0x7fffd94a0f20 <col:9> 'char *' <ArrayToPointerDecay>
| `-StringLiteral 0x7fffd94a0e78 <col:9> 'char [12]' lvalue "Hello World"
`-ReturnStmt 0x7fffd94a0f70 <line:5:2, col:9>
`-IntegerLiteral 0x7fffd94a0f50 <col:9> 'int' 0
1 match.
† 参考
以下の MS による解説がわかりやすいです。
2 . 年次の人間ドックへ(94899)
3 . 福岡銀がデマの投稿者への刑事告訴を検討中(94823)
4 . 三菱鉛筆がラミーを買収(94496)
5 . 2023 年分の確定申告完了!(1つめ)(94469)