PFDS(純粋関数型データ構造)を読んだ

手を動かしたい気分だったのでだいぶ後回しになっていたPFDS (Purely Functional Data Structure, 純粋関数型データ構造)を読みながらScalaで実装を後追いしてみた。*1 少し時間がかかったがRedBlackTreeやTrieといった有名な物から、HoodMelvilleQueueやそ…

Rosie Pattern Languageに入門(3)

正直第2回で終わる予定だったんですが Rosie Pattern Languageに入門(2) - だいたいよくわからないブログ の続きです。 前回サンプルファイルのsemverをパースしてみたりしたと思うんですが、そんなにしっくり行く例でもないなと感じていたり、 かといっ…

Rosie Pattern Languageに入門(2)

Rosie Pattern Languageに入門(1) - だいたいよくわからないブログ 前回の続きです。 前回までだと、semverやらurlなどを取り出せて便利なツールといった印象でしたが、 その真の価値は簡単にパターンを記述できる点にあります。 パターン定義 Rosieでは…

Rosie Pattern Languageに入門(1)

Rosie Pattern Languageを触ってみたのでメモを残します。 なおversion 1.1.0の情報なので詳細・更新後の情報は Rosie Pattern Language / Rosie · GitLab を御覧ください。 使ってみる インストール まずはインストール $ brew tap rosie-community/rosie h…

amazoncorreto, openjdkの各バージョンをdocker container上で走らせた場合のCPU数, メモリーを確認した

Java 8でも安心。Dockerに対するCPU・メモリ対応。(2018年11月現在) - Mitsuyuki.Shiiba で紹介されているように8u191以降であれば、 コンテナでJVMを動かしたときのメモリ・CPU数に関する問題は解消されているはず。 openjdkにパッチが入っていれば基本的…

1on1と信頼残高

最近思ったことを書いておく備忘録的なものです。 特に1on1経験が豊富なわけではなく、むしろ経験が浅いので、何を学びながら進めばいいのやらという段階でのものです。 1on1と困りごと 1on1に何を求めるのか?というのはベースになる考え方はありつつも、個…

Replicated State Machinesでのストレージ故障からのリカバリー

FOLIOアドベントカレンダー2018 17日目です。 昨日はyasuharu519さんのDocker stop 時に別のコマンドを実行して Graceful shutdown を実現するでした。 NewSQLを調べつつ最近はストレージ周りにも手を出してみたいバックエンドエンジニアの @matsu_chara で…

オンプレconfluenceのURLをクラウドconfluenceのURLに変換するスクリプト

on-premisesなconfluenceからcloudに移行するとき、マイグレーションツールによってリンク等がある程度自動で引き継がれます。 が、ソースコードのコメントなどconfluence以外の場所に書かれたコンフルURLについては(もちろん)変換対象外なので旧コンフルU…

ペアプロとフロー効率

世の中に大量にペアプロ記事があるのに新たに追加してしまうシリーズ。 自分の考えのまとめ置き場が欲しかったんだ(´;ω;`) 背景 ペアプロのメリットについて、詳しい人からの知識移転ができる。先輩から後輩へのスキル移転ができてチームが成長するといっ…

見積もりについて勉強したことを色々スライドにしてみた

見積もりについて思ってることとかをまとめてみました。 マネージメントの実戦経験というよりソフトウェア開発手法について学んだ結果のアウトプットみたいなノリでみていただければ幸いです。 社内勉強会で話したので会社のスライド使ってますが、会社が今…

magnoliaで素振り

magnoliaは型クラスのインスタンス自動導出のためのscalaライブラリです。 GitHub - propensive/magnolia: A better generic macro for Scala 既にscalaz-magnoliaやscalacheck-magnolia などがリリースされています。 公式チュートリアルもしっかりとあり、…

HackerTackle2018でPonyの発表をしてきました

HACKER TACKLE というイベントでPonyについて発表してきました。 タイトルの主張がやや強めになってしまった感がありますが、僕としてはPony自体というよりPonyがチャレンジしていること、それによって到来する未来に注目してもらえたらなーみたいな素朴な気…

consulの情報を取得するslack bot

consul公式のgo clientを見たらわりかし簡単にたたけそうだったのでノリで作りました。 GitHub - matsu-chara/conbot: consul reader slack bot 特にbot側では対応していないけど環境変数とかを与えるとauthとかhttpsとかやってくれるので楽。 https://githu…

Jenkins Groovy ScriptでThrottle Concurrent Builds Pluginのカテゴリーを設定する

ジョブ設定が自動化されててもjenkins設定自体が自動化されてないと意味がない!ということでちょっと自動化してみました。 対象 今回の対象は Throttle Concurrent Builds Plugin - Jenkins - Jenkins Wiki 用のシステム設定で、以下のように表示される部分…

CombiningTreeで数を数える

第二のドワンゴアドベントカレンダー10日目です。 昨日は @yyuさんのブロックチェーンを利用した公平なガチャでした。 公平なガチャシリーズは全部おもしろいのでおすすめです。 今回はCombiningTreeによる高速なカウンターを紹介したいと思います。 ベース…

Application Crash Consistency and Performance with CCFSを読んだ

FOLIOアドベントカレンダー 9日目です。 昨日は quantroさんの バリュー投資とかグロース投資とかの整理 でした。 NewSQLを調べつつ最近はストレージ周りにも手を出してみたいバックエンドエンジニアの @matsu_chara です。 今回はFAST '17のBest Paperであ…

quillのio free monadがマージされてたので試してみた

この辺の事柄です。 IO monad · Issue #21 · getquill/quill · GitHub io free monad by fwbrasil · Pull Request #881 · getquill/quill · GitHub quillにだいぶ前からIO monad入れようというissueが立っていたのですが、先日めでたくマージされたようです…

FinagleのConnectionPool

すぐに忘れるので参照できるように雑にまとめ Clients — Finagle 6.44.0 documentation とかを見るとすべて書いてあるので、基本的には公式を見たほうが良いです。 実装を読んだものも含んでいるのでfinagle 6.45以外で成り立つかは不明です。 種類について …

手軽に自分用のショートカットが定義できるgolを作った

github.com go-linkというものが前職にあって、それのパクリです。(ただし運用はしたくないのでlocalhostで動かす前提にした やっぱりみんなで使いたくなったのでdocker-compose up -dだけで運用できるようにした) ワークフローがこれに依存しすぎていて無…

TwitterのFutureについてのざっくりまとめ

基本的に以下からそのまま取ってきています。 ドキュメント Futures — Util 19.1.0 documentation コメント util/Future.scala at util-6.45.0 · twitter/util · GitHub 説明用のざっくりポインタとしてまとめる予定だったのに、あれもこれもと欲張ってしま…

ReladomoというORMを触ってみた

Reladomoはゴールドマン・サックスが公開しているJava向けORMです。 https://github.com/goldmansachs/reladomo-kata にチュートリアルが公開されていたので触ってみました。 ちなみにReladomoもReladomo-KataもApache License 2.0です。 Chaining JavaのORM…

BiTemporal Data Modelに入門中

BiTemporal Modelingについてちょっとだけ調べたりしたのでメモ。 基本的に Temporal Data Models(ppt注意)とTemporal Databasesを大幅に端折ったものに他の資料を少しだけ入れた感じの内容です。 Temporal Data Models BiTemporal ModelingはTemporal Data …

case classのフィールド名とフィールドに対応する値を渡すと型安全にフィールド名と対応する値の組を渡してくれるアノテーションをscalametaで書いた

ややこしいタイトルシリーズ(?) モチベーションが伝わりづらいけどDBへのアップデートでフィールドを4つか5つ指定したい(かつcase classのインスタンスは情報が足りなくて作れないという制約がある)という状況を考えます。 このとき sql.update(テー…

opensslでBASE64エンコードされた文字列をdecryptしようとしたら769bytes以上になるとエラーになる件

scalaでファイルを暗号化&base64エンコードしてopensslでファイルを平文にしようとしたところ平文サイズが768byte以下のファイルは平文にできるのに、769byte以上の文字列を入れると下記のエラーが出る現象について。 $ openssl aes-256-cbc -iv $IV -K $KEY…

IntelliJのライブテンプレートにimport scala.concurrent.ExecutionContext.Implicits.global入れたら便利になった。

タイトルそのままです。 IntelliJ IDEA 2016.3.4です。 知ってる人は知ってるというか自分もなんか登録できるなということは知ってたんですが今まで何登録すればいいんだろうと思って放置していましたが登録したら便利になりました。 Preferences > Editor >…

slackのユーザーを全員取得してアイコンをemojiとして登録する書捨てスクリプト

前々からほしかったので時短で雑に作った。 https://github.com/matsu-chara/slack_user_avatar_emojis matsu_chara ユーザーだったら :m_atsu_chara: のような絵文字になる。(名前そのままだとメンションになってしまうため回避するためにアンダーバーを入…

株式会社ドワンゴを退職しました。

2017年2月28日付けで株式会社ドワンゴを退職しました。 新卒入社から二年弱、Scalaを書いたり、ScalaTextの作成に参加したり、Kafkaを運用したりしていました。 短い期間でしたがscalazコントリビューター1位&2位の人*1を含め、色々な側面ですごい人達と同…

akkaでメールボックスをクリアしつつリスタートしたかったけど何か微妙。

リスタートの時にメールボックスクリアしたくなったんですが、(厳密にはRestartではなくてStop => 新しいのをStartみたいなのでもOKなんですが・・)あんまりいい方法がなくてうーんって感じだったので検討をメモ書き程度に。 結論としてはstashするか、dea…

カーネギーメロンのDBに関する講義が面白いのでおすすめ

ここに書くことによって途中でやめられなくするメソッドです。 ハッカーニュースを眺めていたら以下のようなCS系講義動画のまとめリポジトリが流れていました。 GitHub - Developer-Y/cs-video-courses: List of Computer Science courses with video lectur…

(ansible 2.1までは)ansible_managedを使うと毎回changed扱いになる可能性がある

以下の話題はansible 2.2以降では修正されています。 https://github.com/ansible/ansible/pull/18094 ansible_managed ansibleのtemplate内で {{ ansible_managed }} とすると Ansible managed: {file} modified on %Y-%m-%d %H:%M:%S by {uid} on {host}的…