23 件中 1 - 10 件を表示
次の 10 件 »
Displaying posts with tag: ruby (reset)
MySQL Parameters で SQL 構文の差分を確認できるようにした

MySQLのバージョン間のいろんな差分を見れる MySQL Parameters というのがあるんだけど、SQL 構文の差分を見れるようにしてみた。

たとえば、8.0 の最初のリリースの 8.0.11 と最後のリリースの 8.0.37 の構文の差分はここから見れる。 https://mysql-params.tmtms.net/statement/?vers=8.0.11,8.0.37

ソースは help コマンドの結果(実際には mysql.help_topic テーブルから取得)。

たとえば ALTER EVENT はこんな感じ:

mysql> help alter event;
Name: 'ALTER EVENT'
Description:
Syntax:
ALTER
    [DEFINER = user]
    EVENT event_name
    [ON SCHEDULE schedule]
    [ON COMPLETION [NOT] PRESERVE]
    [RENAME TO new_event_name]
    [ENABLE | DISABLE | DISABLE ON …
[さらに読む]
ruby.wasm で MySQL Parameters を作り直した

プライベートでは基本的に誰の役にも立たないプログラムを作ってるんだけど、たまにうっかり MySQL Parameters みたいな役に立つものを作ってしまう。

MySQL Parameters は5年くらい前に Vue.js の勉強のために作ってみたんだけど、結局そのまま Vue.js は触らず放置状態だった。MySQL の新しいバージョンが出るたびにデータは更新してたけど。

ruby.wasm で Ruby が WebAssembly 上で動くようになり、ブラウザ上で JavaScript の代わりに使えるようになったんで、MySQL Parameters を Ruby で作り直してみた。

ruby.wasm

ruby.wasm のページに載ってるけど、これだけでブラウザ上で Ruby が動く。簡単。

<html> …
[さらに読む]
ruby-mysql と ruby-mysql2

これはMySQLアドベントカレンダーとRubyアドベントカレンダーの3日目の記事です。

qiita.com

qiita.com

ruby-mysql

誰も使わないだろうけど、ruby-mysql 4.0 をリリースした。

ruby-mysql | RubyGems.org | コミュニティのGemホスティングサービス

ruby-mysql は Ruby で書かれた MySQL 用のクライアントライブラリ。

3.0 に対する大きな変更点

Mysql#query の結果の値オブジェクトのクラス

今まではプリペアドステートメント(Mysql#prepare)ではない通常のクエリ(Mysql#query)の結果の値はすべて String で返していた。 …

[さらに読む]
ruby-mysql

これはMySQLアドベントカレンダーRubyアドベントカレンダーの12日目の記事です。

qiita.com qiita.com

ruby-mysql は Ruby だけで書かれた MySQL 用のクライアントライブラリです。 今は Ruby から MySQL を使う場合は普通は mysql2 を使うだろうから、たぶん誰も使ってない。

誰も使ってないだろうし、6年ほど放置してたんだけど、なぜかその気になったのでまたいじり始めた。退職前の有給消化期間で暇だったからかも。

MySQL 8.0 対応

MySQL 8.0 …

[さらに読む]
mrubyudf : C を書かずに Ruby だけで MySQL の UDF を作る

昨日はmrubyでMySQLのUDFを作ってみたんだけど、関数毎にCのプログラムを書くのがめんどくさいので、簡単なツールを作ってみた。

github.com

詳しくは README 参照。

fib.rb と fib.spec をこんな感じで作っておいて、

fib.rb

LONG_LONG_MAX = 9223372036854775807

def fib(n)
  b = 1
  c = 0
  n.times do
    a, b = b, c
    c = a + b
    raise 'Overflow' if c > LONG_LONG_MAX
  end
  c
end

fib.spec

MrubyUdf.function do |f|
  f.name = 'fib'           # 関数名は fib
  f.return_type = Integer  # 戻り値は Integer
  f.arguments = [          # 引数は一つで型は Integer
    Integer
  ]
end
% mrubyudf fib.spec

とやれば fib.so が出来上がるはず。 …

[さらに読む]
RubyでMySQLのUDFを作る

昨日はCでMySQLのUDFを作ってみたんだけど、今日はRubyで作ってみる。Rubyと言ってもmrubyだけど。

mrubyは5年ぶりくらいに使ってみたんだけど、相変わらずドキュメントが少なくてなかなかつらい…。

まず mruby のビルド。MySQLのUDFは共有ライブラリにしないといけないので、パッチをあてて make。

% git clone git@github.com:mruby/mruby.git
% cd mruby
% patch -p1 < /path/to/mruby-shared.patch
% make

mruby-shared.patch はこれ

diff --git a/build_config.rb b/build_config.rb
index 254a28ce..310191e3 100644
--- a/build_config.rb
+++ b/build_config.rb
@@ -35,6 +35,10 @@ MRuby::Build.new do |conf|
   #   cc.compile_options = %Q[%{flags} -MMD -o "%{outfile}" -c "%{infile}"]
   # end
 
+  conf.cc do |cc|
+    cc.flags = '-fPIC'
+  end
+
   # mrbc …
[さらに読む]
RubyからProtobufを使う

MySQL 5.7.12 から追加された X Protocol は Protobuf というのを使ってるらしいです。 Protobuf というのをそこで初めて知ったので、とりあえず Ruby から Protobuf を利用する方法を調べてみました。

Protobuf はデータ構造をバイト列にエンコードしたり、その逆にバイト列をデータ構造にデコードしたりするライブラリのようです。

Ubuntu で protobuf を使うには、protobuf-compiler パッケージをインストールします。

% sudo apt-get install protobuf-compiler

Ruby から Protobuf を使うには、protobuf gem をインストールします。

% gem install protobuf

データ構造は .proto という拡張子のファイルで定義するようです。

MySQL 5.7.12 では rapid/plugin/x/protocol …

[さらに読む]
Ruby, MySQL のうるう秒の扱い

2015/7/1 にうるう秒が挿入されるということで、うるう秒の話題が盛り上がってるようなので自分も書いてみます。

Linux 上のプログラムが時刻で60秒を刻むには、うるう秒対応のタイムゾーンを使う必要があります。

通常はうるう秒を考慮していないタイムゾーンが使用されているので、60秒を含む時刻になることはありません。 60秒を含む時刻を扱うには、right/Japan のように right/ を前につけたタイムゾーンを指定します。

前回のうるう秒は 2012/7/1 08:59:60 (JST) だったので、これで試してみます。

% TZ=Japan date --date='2012-07-01 08:59:60'
date: `2012-07-01 08:59:60' は無効な日付です
% TZ=right/Japan date --date='2012-07-01 08:59:60'
2012年  7月  1日 日曜日 08:59:60 JST

Ruby

[さらに読む]
Ruby/MySQLの速度

Ruby 2.1.0 preview1 がリリースされたので、Ruby/MySQL の速度を測ってみました。

測定環境

測定内容は https://github.com/tmtm/ruby-mysql/tree/master/bench 参照。

[さらに読む]
OSX で mysql5.6 環境下で mysql/mysql2 gem のインストールエラーがでた

OSX で mysql5.6 環境下で mysql/mysql2 gem のインストールエラーがでた。


Gem::Installer::ExtensionBuildError: ERROR: Failed to build gem native extension.

/Users/.../bin/ruby extconf.rb --with-mysql-config=/usr/lo
cal/mysql/bin/mysql_config
checking for mysql_ssl_set()... no
checking for rb_str_set_len()... no
checking for rb_thread_start_timer()... no
checking for mysql.h... no
checking for mysql/mysql.h... no
*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of
necessary libraries and/or headers. Check the mkmf.log file for more
details. You may need configuration options.

Provided configuration options:
--with-opt-dir
--without-opt-dir
--with-opt-include
--without-opt-include=${opt-dir}/include
--with-opt-lib

[さらに読む]
23 件中 1 - 10 件を表示
次の 10 件 »