ブラウザのクライアントサイドのみでバイナリを編集して結果を保存する

以前、日本語を含む Keynote を slideshare にアップロードするというエントリーを書いたんですが、普段ターミナルを使わない方でも変換できるように、ブラウザに Drag & Drop すれば変換された PDF を保存できるようにしました。
Chrome 60.0.3112.90, Safari 10.1.1, Firefox 54.0.1 では動きましたが、ちょっと古いバージョンや IE だと動かないかもしれません。

論理型の設定値を RDB に保存する場合の選択肢と各々のメリット・デメリット

ユーザごとに特定の機能に対して ON/OFF の設定値を持たせることはよくあると思います。
RDB にそのような設定情報を持たせる場合の選択肢として大きく次の 5 つが考えるんじゃないかと思います。

Sloppy Phrase Search の slop とは

Solr というか Lucene には Sloppy Phrase Search (Proximity Search) という機能があります。
"foo bar" で検索すると "foo bar" というフレーズの存在するドキュメントしかヒットしませんが、"foo bar"~n だと foo と bar の間に n 単語存在していてもヒットします。この n の値が slop と呼ばれるものです。例えば n = 1 であれば "foo bar"~1"foo baz bar" というフレーズの存在する文書もヒットします。

Rails でも JSON.generate を使って高速にシリアライズしたい 〜Rails の to_json は遅いが何を実現しているのか〜

Rails では JSON モジュールの提供している to_json を上書きしています
JSON モジュールの to_json は C 言語のレイヤーで再帰処理しますが、Active Support の提供している to_json (ActiveSupport::JSON.encode) は Ruby のレイヤーで再帰処理する上、文字列の処理は毎回 ActiveSupport::JSON::Encoding::JSONGemEncoder::EscapedString を生成するので格段に遅くなります。
そのため、速度が求められる箇所での JSON のシリアライズには JSON.generate を使うことを検討すると良いです。

私的アンリーダブルコード―他人を発狂させるための 9 のテクニック

コードはたいてい一度しか書かれませんが、何度も何人も読むことになります。
普段何気なく書いているコードが他人の時間と精神を削っているかもしれません。

GDBM で学ぶ Extendible Hashing

最近仕事で GDBM を使う機会があり、GDBM で使われている extendible hashing に興味を持ったのでまとめてみました。
なお、今回対象にしている GDBM のバージョンは 1.12 です。

InnoDB の行レベルロックについて解説してみる

自分の浅はかな理解だと、Deadlock が起こる理由が説明できないケースに遭遇したので、InnoDB の行レベルロックについて調べてまとめてみました。
「行レベルロックだと、同じ行を更新する場合にしか Deadlock が起こらないんでしょ」と思っているような人が対象です。
また、主に InnoDBのロックの範囲とネクストキーロックの話 - かみぽわーる を参考にさせていただいたので、そちらの内容がすんなり理解できる方には冗長な内容だと思います。
MySQL のバージョンは 5.6.33 です。

MeCab の形態素解析誤りを修正する生起コストの求め方

「かつおたたき」、「りんごジュース」、「ロース肉薄切り」を MeCab + IPA 辞書で形態素解析すると以下のようになります。

Redshift の UDF では非 ASCII 文字を含む unicode 型を返すとエラーになる

次のように unicode 型を返す UDF を定義すると、返り値に非 ASCII 文字を含む場合にエラーになります。

Rails の send_data で Windows 用の zip ファイルを送る

Windows 用にファイル名の文字コードを CP932 にしたいわけですが、ハマりどころが多かったのでメモです。
次のようなコードで send_data (not send_file) に指定する zip データを生成可能です。

広告