タグ

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

  • MySQLと「令和」 - tmtms のメモ

    新元号が「令和」に決まったことなので、MySQLでの扱いについての話を。 普通の文字 「令」も「和」もJIS第一水準に含まれている基的な文字なので普通に日語が使用できるcharsetで使用できます。 mysql> create table t ( utf8mb4 varchar(255) charset utf8mb4, utf8mb3 varchar(255) charset utf8mb3, utf16 varchar(255) charset utf16, utf32 varchar(255) charset utf32, cp932 varchar(255) charset cp932, eucjpms varchar(255) charset eucjpms, sjis varchar(255) charset sjis, ujis varchar(255) charset

    MySQLと「令和」 - tmtms のメモ
    michael26
    michael26 2019/04/06
  • DNSで浸透って言っちゃだめなの? - tmtms のメモ

    別に言ってもいいよ。 以下想定問答。 「浸透が何を意味しているのかわからない」 ホント? 「浸透いうな」って言われてるってことは、逆に言うとそれなりに広く使われてるってことでしょ。 個人的には「DNSの設定を変更した後、徐々に新しい情報を見ることができるクライアントが増えていく」ことだと思ってるんだけど、これとは異なる意味で使われてたりするの? 「"浸透に数週間かかる" なんて言うのはへぼい業者の言い訳」 それは同感だけど、「浸透」という単語の問題じゃないよね。 「浸透」という単語を使わなくてもその業者はへぼいままで、数週間かかるのは変わらない。 数週間じゃなくて、「浸透には5分くらいかかります」だったらOK? 「設定ミスってるくせに浸透に時間がかかるなんて言い訳するな」ならわかるけど、「浸透という単語を使うな」はおかしいと思う。「浸透」を使わないことで何か解決するの? 「浸透なんて用語は

    DNSで浸透って言っちゃだめなの? - tmtms のメモ
    michael26
    michael26 2018/05/13
  • クラスはクラスクラスのインスタンスである - tmtms のメモ

    タイトルで出落ち感がありますが…。 naruby で時間があまった時のために用意してあったのですが、時間が余らなかったので発表しなかった小ネタです。ここで公開して供養します。 Rubyはほぼすべてがオブジェクトです。 クラスもオブジェクトです。オブジェクトということはクラスがあります。オブジェクトのクラスはオブジェクトの class メソッドで調べられます。 class Hoge end Hoge.class #=> Class Hoge クラスのクラスは Class であることがわかりました。 つまり「クラスはClassクラスのインスタンス」ということです。 クラスがClassクラスのインスタンスということは、Class.new すればクラスが作成されるわけです。 a = Class.new #=> #<Class:0x00560d27bf2108> Hoge = a #=> Hoge

    クラスはクラスクラスのインスタンスである - tmtms のメモ
    michael26
    michael26 2017/12/05
  • Ruby 2.5 - tmtms のメモ

    この記事は Ruby 2.5.0 preview1 時点のものです。Ruby 2.5 リリース版については http://tmtms.hatenablog.com/entry/2017/12/30/ruby25 を見てください。 Rubyは毎年クリスマスにバージョンアップされます。 今年も問題なければ12/25にRuby 2.5が出ると思います。 https://docs.ruby-lang.org/en/trunk/NEWS.html を元に変更内容を調べてみました。 言語仕様 トップレベル定数参照 rescue/else/ensure 節 文字列内式のRefinement Unicode バージョン 10.0.0 組み込みライブラリ Array#append, #prepend 追加 Dir.children, Dir.each_child 追加 Dir.glob :base オプショ

    Ruby 2.5 - tmtms のメモ
    michael26
    michael26 2017/12/04
  • 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 のメモ
    michael26
    michael26 2017/06/20
  • ZIP中のファイル名の文字化け - @tmtms のメモ

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

    ZIP中のファイル名の文字化け - @tmtms のメモ
    michael26
    michael26 2017/04/06
  • 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 のメモ
    michael26
    michael26 2016/08/26
  • Postfix 3.1 の新機能 / JSON形式キュー表示と配送流量制御 - tmtms のメモ

    Postfix 3.1 がリリースされました。 個人的に気になった新機能は JSON-format Postfix queue listing. Destination-independent delivery rate delay の2つです。 JSON形式キュー表示 今までは mailq や postqueue -p コマンドで次のような表示がされていました。 ~% postqueue -p -Queue ID- --Size-- ----Arrival Time---- -Sender/Recipient------- 8A9AE6EF 275 Sun Mar 6 23:47:06 sender@example.com (deferred transport) rcpt1@example.net rcpt2@example.net 94AC010A! 298 Sun Mar 6 23

    Postfix 3.1 の新機能 / JSON形式キュー表示と配送流量制御 - tmtms のメモ
  • クラスメソッドのprivate化 - tmtms のメモ

    クラスメソッドの定義 Rubyでクラスメソッド(=クラスオブジェクトの特異メソッド)を定義するには、いくつかの方法があります。 たとえば、Hoge クラスオブジェクトに hoge() メソッドを定義する場合、 1. クラス定義内でクラスオブジェクトに特異メソッドを定義 class Hoge def self.hoge() end end 2. クラス定義内で特異クラスに対してメソッドを定義 class Hoge class << self def hoge() end end end 3. クラス定義外でクラスオブジェクトに特異メソッドを定義 class Hoge end def Hoge.hoge() end 4. クラス定義外で特異クラスに対してメソッドを定義 class Hoge end class << Hoge def hoge() end end いずれも外部から Hoge.h

    クラスメソッドのprivate化 - tmtms のメモ
    michael26
    michael26 2015/09/09
  • Rubyのエンコーディング - tmtms のメモ

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

    Rubyのエンコーディング - tmtms のメモ
    michael26
    michael26 2015/02/01
  • メールアドレスの正規表現 - tmtms のメモ

    たまにメールアドレスの形式を正規表現で表すのは不可能とかというのを目にするのですが、そんなことはありません。入れ子がなければたいていの文字列の形式は正規表現で表すことができます。 ということで、RFC5321, 5322 からメールアドレスの正規表現を書いてみました。 /\A([0-9a-z!\#$%&'*+\-\/=?^_`{|}~]+(\.[0-9a-z!\#$%&'*+\-\/=?^_`{|}~]+)*|\"([\x20\x21\x23-\x5b\x5d-\x7e]|\\[\x20-\x7e])*\")@[0-9a-z]([0-9a-z-]*[0-9a-z])?(\.[0-9a-z]([0-9a-z-]*[0-9a-z])?)*\z/i ちょっと長いですけど、最近の Ruby だと (?<hoge>) と \g<hoge> を使うことで、同じ正規表現の繰り返しを簡単に書くことができる

    メールアドレスの正規表現 - tmtms のメモ
    michael26
    michael26 2014/09/09
  • 1