読者です 読者をやめる 読者になる 読者になる

Y8 2017 spring in Shibuyaでお話した #y8spring

久し振りに登壇しました。 内容はメディロムで開発しているウェブAPI*1を、どんな風にScalaで書いているか、どんな判断を下しているか、などといったものです。今の仕組みもそろそろこなれてきたし、次(イベントソーシング、CQRSとかな!)に行く前にいっち…

ScalaのJSONライブラリcirceの使い方

ScalaのJSONライブラリと言うと、json4sあたりが有名なのかと思います(私感)。 が、json4sはリフレクションを使うので、何かと避けたい方も多いかと思う。 ということで、circeを使ってみましょう。 circe概要 circeはScalaのJSONライブラリです。 読み方 …

Akka HTTPを使ってみる。Akka Streamsにもちょっと触れるよ

Akka HTTPとはAkkaの上でHTTPサーバーを実現したものです。HTTPクライアントとしての機能を持っていたり、WebSocketのサポートもしています。 sprayという似たものもありますが、spray/sprayには「長らくメンテしてないよ。Akka HTTPに置き換えらているよ」…

型推論ふりかえり

型推論、よく聞きますね。よく聞くのでWikipediaにも型推論のページがあります。 この仕組みの恩恵は案外自然と享受しているものですが、機能を提供することライブラリの開発においては知らないと始まらない前提のようなものであると最近思います。が、自然…

YAP(achimon)C::Asia Hachioji 2016 mid in Shinagawaに行ってきた

7月2日(土)、3日(日)の2日間開催されたYAP(achimon)C::Asia Hachioji 2016 mid in Shinagawa(以下ヤパチー)に行ってきました。 yapcasia8oji-2016mid.hachiojipm.org トークした 実はこういうイベントに参加するの初めてで、まートークしたことも当然…

PlayStation 3が欲しかったのでその欲望を満たしてみたら想像以上に満たされた

「PlayStation 3とか買ってもやりたいタイトルあるの?」と言っていたのは何年前か。多分PlayStation 3が発売された直後とかだと思います。今ではタイトルの本数もかなりの数に上るんじゃないでしょうか。だってPlayStation 4の時代ですもんね。しかもBlu-ra…

Capistrano 3への手引き

Capistrano、便利ですよね。capistrano/capistrano最近メジャーバージョンアップがあったのですが、使い方、というかスクリプトの書き方やお作法が変わり、「Capistrano 3にアップデートしたはいいけど全然動かなくてどうなってんだ」という流れはもはやお約…

EmacsからVimに乗り換えた

vim

ちょっと前にEmacs + markdown-modeでドキュメントを書いていたのですが、Markdownって改行を入れると、ウェブブラウザ上では改行されていなくとも、HTML上で改行(単にCRが入ってる、という意味)されるじゃないですか? そういうときってウェブブラウザ上…

MeCabのメモリ管理はどうなっているのか

以前mecab-rubyを用いた下記のコードがコケる場合がありました。 node = MeCab::Tagger.new.parse(text) これはparseメソッドを呼び出している最中にMeCab::TaggerのインスタンスがGCによって解放されてしまい、メモリ違反を起こすためです(昔のことなので…

Rubyにpackage_privateを導入しようとしたら

Rubyのメソッドの可視性はpublic, protected, privateの3種類です。そこに同一パッケージ(イコール同一gem?)からのみ呼べるpackage_privateを導入してみましょう。結論から言うと断念しました。以下のような場合は簡単です。 class String def nya "#{sel…

Rubyで任意のメソッドの呼び出しを記録するgemを作った

タイトルの通り。 takkkun/peeek · GitHub インストールは: $ gem install peeek で。処理としては対象のメソッドを呼び出し記録用のメソッドで包んでいるだけです。使い方はREADME.mdなりをご覧ください。が、一部書き漏らしていることがあり、それをここに…