タグ

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

  • 転職した - tmtms のメモ

    これは「Rubyist近況[1] Advent Calendar 2021」の6日目の記事です。 adventar.org 自称 Rubyist なので近況を書きます。 2021年10月末で30年ほど勤めた富士通グループを退職しました。 11月からは SmartHR という会社で働いてます。 3年ほど Ruby仕事ではあんまり使ってなかったのですが、また Ruby仕事で使うようになりました。 会社から配布された PC は Core i7 メモリ32GB の MacBook Pro なんでかなり人権がある感じなんですが、人生Mac で1ヶ月位経ってもまだ慣れなくて、VM で Ubuntu Desktop 入れようか迷ってます。 近況は以上です。以下は富士通グループの入社〜退職までのメモ。長いので読まなくていいです。 1991〜 設立7年目の今はなき「富士通長野システムエンジニア

    転職した - tmtms のメモ
    raimon49
    raimon49 2021/12/06
    大企業ならではの統廃合
  • MySQL で utf8 と utf8mb4 の混在で起きること - tmtms のメモ

    MySQLUTF-8 で使おうと思ってハマりがちなのは charset utf8 を指定してしまうことです。 MySQLUTF-8 には歴史的事情により utf8 と utf8mb4 の二つあります。 UTF-8 は1バイト〜4バイトで1文字が構成される文字コードですが、MySQL の utf8 は4バイト文字を扱うことができません。ハマりたくなければ utf8mb4 を使いましょう。 utf8 を使ってしまった場合に4バイト文字がどのように扱われるか、自分でもうろ覚えだったのでメモしておきます。 登録 接続が utf8mb4 でカラムが utf8mb4 あたりまえですが、そのまま登録されます。 mysql> insert into utf8mb4 (c) values ('美味しい🍣と🍺'); mysql> select * from utf8mb4; +--------

    MySQL で utf8 と utf8mb4 の混在で起きること - tmtms のメモ
    raimon49
    raimon49 2016/09/07
    コネクション sql_mode 設定
  • 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 のメモ
  • MySQL の "Illegal mix of collations" エラーについて - tmtms のメモ

    MySQL で「Illegal mix of collations」というエラーが出ることがあります。テーブルの charset と接続の charset 等、すべてを utf8 などで統一してれば出ないので、あまり見ることはないかもしれません。 私はカラム毎に charset を指定することがあるので、時々このエラーにハマります。 たとえば、次のようなテーブルを作ったりします。 CREATE TABLE users ( id INT PRIMARY KEY AUTO_INCREMENT, email VARCHAR(320) CHARSET ascii UNIQUE, name VARCHAR(30) CHARSET utf8 ); メールアドレスの規約は、ローカル部が最大64バイト、ドメイン部が最大255バイト、それと @ の1バイトで合計最大320バイトなので、 VARCHAR(32

    MySQL の "Illegal mix of collations" エラーについて - tmtms のメモ
  • OSS貢献者賞を頂いたので昔話をします - tmtms のメモ

    この記事は、おっさんの自分語りと昔話なので、あまり読む価値はないです。 もう1ヶ月くらい前になるのですが、OSS貢献者賞を頂きました。 最近はあまりOSSに貢献するようなことをしてる自覚はなかったので、なぜ自分が候補にあがったのか謎でした。OSS貢献者賞のページによると、 影響力のある開発プロジェクトを創造、運営した開発者やグローバルプロジェクトにおいて活躍する卓越した開発者及び普及に貢献した方を表彰するもの ということらしいです。創造や運営してないし、たぶん卓越した開発者でもないので、「普及に貢献した」だろうと思い、じゃあ最近のことじゃなくて過去の実績が評価されってことならいいかと、受賞させていただくことにしました。 ちゃんとした受賞理由は発表のページに載るまで知らされてなかったのですが、予想通り MySQL 関係でした。 MySQLの初期の日語化パッチを作成し、国内での普及に大きく貢

    OSS貢献者賞を頂いたので昔話をします - tmtms のメモ
    raimon49
    raimon49 2013/03/27
    MLでの情報交換が活発だったのは ~4.1くらいまで。
  • Rubyのエンコーディング - tmtms のメモ

    Ruby 1.9 から文字列や正規表現オブジェクトはそれぞれエンコーディング(いわゆる文字コード)を保持するようになりました。 たとえば 0xB1 0xB2 という2バイトは EUC-JP エンコーディングでは「渦」、SHIFT_JIS エンコーディングでは「アイ」という文字になります。つまり同じバイト列でもエンコーディングが異なれば異なる文字として解釈されます。 1.8 では文字列はただのバイト列でした。なので、それがどのような文字を表しているのか、つまりエンコーディングが何なのかはプログラムが知っている必要がありました。 1.9 では文字列オブジェクト自身が自分が何のエンコーディングかを知っています。同じ 0xB1 0xB2 というバイト列でも、それが EUC-JP の「渦」なのか SHIFT_JIS の「アイ」なのかは、文字列自身が知っています。 スクリプトエンコーディング スクリプ

    Rubyのエンコーディング - tmtms のメモ
    raimon49
    raimon49 2012/09/27
    マジックコメントと正規表現のオプション
  • MySQL最新ロードマップセミナー2011 - tmtms のメモ

    MySQL最新ロードマップセミナー2011 に行ってきました。講師は肩書き長すぎな 梶山さんでした。 「お客様講演」は都合がつかずに中止でした。残念。 以下適当なメモです。嘘書いてあるかもしれません。 MySQL State of The Dolphin OracleMySQL に対して気で取り組んでる Oracle の雑誌に MySQL が巻頭特集として載った MySQL 5.5 は非常に高品質 Sun & Oracle の厳しい品質基準 InnoDB の主要メンバーは一人もやめてない Oracle のパフォーマンスのスペシャリストが MySQL を支援 MySQL 5.6 - Development = β版 Oracle になって MySQL と InnoDB の開発チームがひとつの会社になった 2009 IPA 調査で、MySQL 60.5%, PostgreSQL 51.

    MySQL最新ロードマップセミナー2011 - tmtms のメモ
    raimon49
    raimon49 2011/07/14
    サポートサイクルが8年間に。
  • UTF-8 のサニタイズ - tmtms のメモ

    UTF-8 文字列中に UTF-8 として正しくないコードが入っていた場合に、その文字を「?」などに置き換えたいことがあります。 たとえば MySQL に登録するときは不正な文字を消しとかないと、その文字以降すべて消えてしまいます。 mysql> insert into t (c) values (0x414243FF58595A); Query OK, 1 row affected, 1 warning (0.06 sec) Warning (Code 1366): Incorrect string value: '\xFFXYZ' for column 'c' at row 1 mysql> select * from t; +------+ | c | +------+ | ABC | +------+ 1 row in set (0.00 sec)ということで、Ruby では Ic

    UTF-8 のサニタイズ - tmtms のメモ
    raimon49
    raimon49 2011/05/13
    iconvの例外を利用
  • 1