Content-Length: 30423 | pFad | https://blog.cles.jp/archive/1/2019-10-29

2019 10 29 - cles::blog
BLOGTIMES
«Prev || 1 || Next»
2019/10/29

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

ruby  mysql 

昔書いた Ruby のプログラムを CentOS 7 上で動かそうとしたのですが、MariaDB が 10.4 と比較的新しいバージョンだったので gem で mysql がインストールできないので困ってしまいました。

mysqlを見ると、最終アップデート日が 2013 年になっていて、最近はメンテナンスされていないようです。このまま粘っても解決の見込みも立たないので、mysql2 に移行してしまうことにしました。

ソースの書き換えは大きく3箇所

基本的には以下の3箇所を変更してやれば、基本的な動作はするようです。
Date などの部分を自動的に cast する機能がついたようですが、これは :cast => false でオフにしてあります。

# モジュールの読み込み require 'mysql' require 'mysql2' # 接続 @db = Mysql::connect('localhost', 'user_name', 'pass', 'db_name') @db = Mysql2::Client.new(:host => 'localhost', :username => 'user_name', :password=> 'pass', :database => 'db_name', :cast => false) # 結果の取得 rows.each_hash rows.each
[gem mysql から mysql2 に移行してみる の続きを読む]

    at 22:24 |
    2019/10/29

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

    cpp  c  clang  softwareengineering 

    C/C++ のソースコードの AST を使って簡単に解析する方法がないか調べていたら、clang-query というのが使えそうだったのでメモ。
    clang-tools に入っているので Ubuntu 18.04 では apt install clang clang-tools で使えるようになりました。

    実行例

    例えば以下ような簡単なプログラムの構造を見てみます。

    sample.c

    #include <stdio.h> int main(void){ printf("Hello World"); return 0; }

    コマンドラインから以下のようなコマンドを入力すると、出力を得ることができます。
    クエリの内容を変更することで自在にカスタマイズができるので便利ですね。

    cat <<EOS | clang-query example.c -- set output dump match functionDecl(hasName("main")) EOS

    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 による解説がわかりやすいです。


      at 08:48 |
      «Prev || 1 || Next»









      ApplySandwichStrip

      pFad - (p)hone/(F)rame/(a)nonymizer/(d)eclutterfier!      Saves Data!


      --- a PPN by Garber Painting Akron. With Image Size Reduction included!

      Fetched URL: https://blog.cles.jp/archive/1/2019-10-29

      Alternative Proxies:

      Alternative Proxy

      pFad Proxy

      pFad v3 Proxy

      pFad v4 Proxy