タグ

ブックマーク / blog.tmtms.net (8)

  • RubyでMySQLのUDFを作る - tmtms のメモ

    昨日は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/bu

    RubyでMySQLのUDFを作る - tmtms のメモ
    tofu-kun
    tofu-kun 2020/05/02
    なるほど
  • SMTP AUTH を手で叩くためのメモ - tmtms のメモ

    必要なときには忘れてるのでメモ。 SMTP AUTH というか SASL なので、SMTP じゃなくて IMAP でも同様だと思います。 ユーザー名: hoge@example.com パスワード: abcdefg テストのための環境準備 OS は Ubuntu。 パスワード登録: # apt install sasl2-bin # saslpasswd2 -c hoge -u example.com Password: abcdefg Again (for verification): abcdefg Postfix で SASL を使用: # chmod 644 /etc/sasldb2 # postconf -F smtp/inet/chroot=n # postconf smtpd_sasl_auth_enable=yes # postfix reload PLAIN認証 http

    SMTP AUTH を手で叩くためのメモ - tmtms のメモ
  • Ruby 2.6 の変更点 - IO - @tmtms のメモ

    Ruby2.6アドベントカレンダーの10日目の記事です。 qiita.com IO ファイルオープン時のモードに x 追加 IO ファイルオープン時のモードに x 追加 https://bugs.ruby-lang.org/issues/11258 ファイルを作成用にオープンするには w を指定しますが、これはファイルが既に存在していた場合に上書きして空にしてしまいます。 それを避けるために次のようなコードをたまに見ることがありますが、これは他の方法で排他制御していなければ危険です。 raise "File exists" if File.exist?("hoge.txt") # 他プロセスがこのタイミングでファイルを作ってるかもしれない File.open("hoge.txt", "w") 今までは次のようにしていました。 File.open("hoge.txt", File::CREA

    Ruby 2.6 の変更点 - IO - @tmtms のメモ
    tofu-kun
    tofu-kun 2018/12/10
    便利
  • 本当はこわいMySQLプロトコル - tmtms のメモ

    11/28 に Haskell で MySQL の Xプロトコルを実装したという話が聴ける Club MySQL というイベントがあったので参加してきました。 clubmysql.connpass.com MySQLのプロトコルの話ということで、平日の夜とは言え東京で参加者9人(発表者含む)というマニアックな集まりでした。 自分も1年前に RubyMySQL Xプロトコルを実装していたのですが、このツイートを最後に中断していたのでした。 MySQL X Protocol で Collection の追加はできるようになったが、検索がめんどくさい。条件文字列のパースはクライアントで行う必要があるんだな。— とみたまさひろ💎🐬 (@tmtms) 2017年2月20日 今回話を聞いて、無理に謎条件式文字列をパースするんじゃなくて、処理系で書きやすいように書けばいいんだという方式に目から

    本当はこわいMySQLプロトコル - tmtms のメモ
  • MySQLの日本語コレーション - tmtms のメモ

    4月にMySQLの日語コレーションについて語り合う場に呼ばれていろいろ話を聞いてきました。すぐにブログを書こうと思ったんですが、はや2ヶ月経過…。 ときどき、自分がMySQLの文字コードに関して発表する際に、次のようなスライドをいれてるんですが、 MySQL 8.0 でとうとう日語コレーションが入ることになったのに、なんか期待してたのと違いました。 で、その辺の話を聞きました(2ヶ月も経ってるのでうろ覚え)。 Q. わざわざ日語ロケール作るんだったら日人が扱いやすいロケールにしてほしい utf8mb4_ja_0900_as_csはMySQLが独自に考えたものではない。Unicode規格に従っている。過去にいろいろ独自にやって失敗してきてるので、もう独自にやるのは避けたい。 ai(accent insensitive)で「ハ」=「パ」=「バ」になるのも、ci(case insensi

    MySQLの日本語コレーション - tmtms のメモ
  • ZIP中のファイル名の文字化け - @tmtms のメモ

    こんな記事がありました。 gihyo.jp これはMacユーザー用の書籍の宣伝記事らしいのですが、「Windowsを使ってる人のためにMac側がひと手間かけてあげよう」なんて殊勝なことをマカーが言うとは時代も変わったもんです。([追記] はてブのコメントを見たらさすがマカーという意見が並んでて安心しました) まあ私はWindowsユーザーでもMacユーザーでもないのでどうでもいいのですが、文字化けなネタなのでいついてみます。 記事中に、「付物出稿.zip」というファイルを開いた時の画像が載ってます。 文字の並びからして、UTF-8文字列をシフトJIS(CP932)とみなして表示してしまった文字列でしょう(「繧ォ繝上y繝シ繝輔か繝ォ繧ソ繧・」の元の文字は「カバーフォルダ」で、「蟶ッ繝輔か繝ォ繧ソ繧・」は「帯フォルダ」)。 つまり、Macはファイル名をUTF-8ZIPに書き込み、Wi

    ZIP中のファイル名の文字化け - @tmtms のメモ
    tofu-kun
    tofu-kun 2017/04/06
    ubuntuゥ
  • Ruby の Timeout の仕組み - tmtms のメモ

    Ruby で長い時間掛かるかも知れない処理のタイムアウトを行うにはこんな感じにします。 require 'timeout' begin Timeout.timeout(3) do # 3秒でタイムアウト hoge # 何かの処理 end rescue Timeout::Error puts 'なげーよ' # タイムアウト発生時の処理 end Timeout.timeout はブロック開始時にスレッドを作成し、そのスレッドで指定された秒数だけ sleep して、sleep から復帰してもまだブロックが終わってなければ作成元のスレッドに対して Timeout::Error 例外を発生させます。 指定時間以内に処理が終わる場合: timeout(X) │ スレッド作成 ─┐ │ │ ブロック実行 sleep X │ │ スレッドkill→ 🕱 │ timeout復帰 指定時間以内に処理が終わら

    Ruby の Timeout の仕組み - tmtms のメモ
  • Ruby の文字列データの複製について - tmtms のメモ

    Ruby で String オブジェクトを複製しても、文字列データは複製されません。 data = "a"*10*1024*1024 system "grep ^VmSize /proc/#$$/status" t1 = Time.now a = [] 100.times do |i| a.push data.dup end t2 = Time.now system "grep ^VmSize /proc/#$$/status" printf "%.6f\n", t2-t1 実際に10MBの文字列を作って、100回dupする前後でプロセスのメモリサイズを比較してみても変わってません。 % ruby hoge.rb VmSize: 56140 kB VmSize: 56140 kB 0.000164 複製後に文字列を変更すると、そこで文字列データも複製されます。 data = "a"*10*

    Ruby の文字列データの複製について - tmtms のメモ
  • 1