GitBucket 4.24.0をリリースしました

Scalaで実装されたオープンソースのGitサーバ、GitBucket 4.24.0をリリースしました。 https://github.com/takezoe/gitbucket/releases/tag/4.24.0 プルリクエストのレビューコメントにDiffを表示 プルリクエストのConversationタブではレビューコメントに該…

GoogleのMachine Learning Crash Courseをやってみた

少し前にGoogleが社内教育用のコンテンツとして使用しているというMachine Learning Crash Courseが公開されていました。PredictionIOのコミッタをやっていながら機械学習はほぼ素人というのもどうかと思っていたこともあり、社内で毎日1時間ずつこの講座を…

PlayのRedisプラグインあれこれ

PlayのCache APIのバックエンドにRedisを使えるようにするプラグインがあり、以前はTypesafe社によってメンテされていたのですが、現在はメンテナンスが停止してしまっています。 github.com このプラグインはバックエンドにJedisとJedisのScalaラッパーであ…

GitBucket 4.23.0をリリースしました

Scalaで実装されたオープンソースのGitサーバ、GitBucket 4.23.0をリリースしました。 https://github.com/takezoe/gitbucket/releases/tag/4.23.0 URL末尾のスラッシュを許容するように URLの末尾にスラッシュがついていてもスラッシュがついていない場合と…

Apache PredictionIOとApache Zeppelinを組み合わせてみる

Apache PredictionIOとApache ZeppelinはどちらもApache Software Foundationのプロジェクトです。PredictionIOはSparkML / MLlibベースの機械学習アプリケーションを開発・運用するためのプラットフォームを提供するもので、ZeppelinはSpark / SparkSQLを使…

Twilio社がOSS化したScala用SwaggerコードジェネレータGuardrailを試してみる

先日のScalaMatsuri 2018でTwilioの方が発表されていた、SwaggerからAkka HTTP用(http4sにも対応している)のコードを生成するコードジェネレータがGitHubで公開されていました。 github.com 発表を聞いていて良さげな感じだったのでちょっと試してみました…

自動テストでElasticsearchを使うためのJavaライブラリ

その昔、ElasticsearchではEmbeddedモードという、アプリケーションに組み込んで使用したり、自動テストで使用するのに便利な機能がサポートされていました。しかし、この機能はElasticsearch 5.0でサポートされなくなってしまいました。詳しくはElastic社の…

ScalaDays 2018 NewYorkの気になるセッション

ScalaDays 2018 NewYorkのタイムテーブルが公開されていましたので、完全に個人的な趣味で気になるセッションを列挙してみたいと思います na.scaladays.org Type-driven Development (Workshop) カンファレンスの前日と前々日行われるワークショップでは「Ty…

最終兵器トラックポイント付きメカニカルキーボード「TEX Yoda II」レビュー

PC

最終兵器「TEX Yoda II」 初代を買い逃してから早数年、2代目が発表され入手できる日を心待ちにしていたのですが、先日ようやくゲットすることができました。数日使ってみてのレビューです。 ついに最強のトラックポイントを入手した。 pic.twitter.com/79Wa…

GitBucket 4.22.0をリリースしました

Scalaで実装されたオープンソースのGitサーバ、GitBucket 4.22.0をリリースしました。 https://github.com/takezoe/gitbucket/releases/tag/4.22.0 プルリクエストのマージ方法の設定 リポジトリ毎にデフォルトのマージ方法と、選択可能なマージ方法を設定で…

GitBucketに見る長期的なメンテナンスの必要なScalaアプリケーションにおいてScalaのバージョンアップのために留意しておくべきこと

Scalaのバージョンアップはなぜ大変なのか? GitBucketはもうかれこれ5年近く開発を継続しており、Scalaのメジャーバージョンアップも何度か経験してきました。ScalaのバージョンアップはJavaと比べるとかなり苦労することが多いのですが、それはScalaのバー…

akka-http-sessionによるセッション管理

Akka HTTPはプリミティブなHTTPツールキットであり、標準ではセッション管理の機能を持っていません。Akka HTTPにセッション管理機能を追加するためのライブラリとしてSoftwareMill社が開発しているakka-http-sessionというものがあります。 github.com この…

GitBucket 4.21.0をリリースしました

4.21.0には本体およびバンドルされたプラグインにいくつかの問題があったため、修正した4.21.2をリリース済みです。こちらをご利用ください。 https://github.com/gitbucket/gitbucket/releases/tag/4.21.2 Scalaで実装されたオープンソースのGitサーバ、Git…

GitBucketで使っているSlick用のちょっとした便利機能

GitBucketではずっとSlickを使っているのですが、クエリを簡単に記述するためにちょっとした便利機能を追加しています。 1つめはこんな感じのエクストラクタ。以前吉田さんにTwitterかなにかで教えてもらったもの。 object ~ { def unapply[A, B](t: (A, B))…

ZooKeeperによる分散システム管理

最近作っているdistributed-git-serverではクラスタの状態管理にMySQLを使っているのですが、ロックをRDBで実装したり、ハートビートやノードの状態管理などを自前で実装する必要があり、だいぶ面倒だなぁと感じていました。ZooKeeperを使えばこのような課題…

スケーラブルで冗長性のあるGitサーバをどう作るか?

GitBucketでの長年の課題の1つがGitリポジトリのスケールアウトと冗長化でした。Gitリポジトリを格納するストレージに分散ファイルシステムを使うというのは1つの解決策になりますが、分散ファイルシステムの運用はなかなか大変です。もっと手軽に使い始めて…

Scala向けの高速ビルドツールBloopについて

少し前にScala CenterからBloopというビルドツールがアナウンスされました。 github.com 実際に動かしてみたわけではないのですが、READMEやソースコードなどからどのようなものかは大体掴めるので簡単にまとめておきます。興味のある方は是非試してみて欲し…

The Type Astronaut's Guide to Shapeless

先日Scala eXchangeに参加して、海外での予想以上のShapelessの人気ぶりを目の当たりにしたのでちょっと勉強してみようと思い、Underscore社が提供している「The Type Astronaut's Guide to Shapeless」という本を読んでみました。 Underscore社のWebサイト…

2017年の振り返り

2017年もいろいろありました。今年も恒例の振り返りをしてみたいと思います。 仕事関係 今年はサービスから離れてしまったのであまり自分でがっつり開発するという感じではなく、他のチームのサポート的な感じだったのですが、技術的な部分以外で悩むことが…

教養としてのScala勉強会に参加しました

会社の若者たちがScalaの勉強会を開催していたので私もお呼ばれして参加してきました。 d-cube.connpass.com 私は「頑張りすぎないScala」という発表をさせていただきました。 頑張りすぎないScala from takezoe www.slideshare.net これはScala関西で発表…

GitBucket 4.20.0をリリースしました

Scalaで実装されたオープンソースのGitサーバ、GitBucket 4.20.0をリリースしました。 https://github.com/takezoe/gitbucket/releases/tag/4.20.0 プルリクエストのマージ時にSquashもしくはRebaseが可能に プルリクエストをマージする際に以下の3つのオプ…

Scalaで型クラスをメタプログラミングできるライブラリMagnoliaを使ってみる

MagnoliaはScala界隈ではおなじみのJon Prettyさん作のライブラリで、簡単に言うとケースクラスに対する型クラスのインスタンスを生成するためのマクロを簡単に実装できるライブラリです。Play-JSONのReads、Writes、Formatなどのマクロなどを簡単に作れるも…

ロンドンでエミレーツスタジアムツアーに参加してきました

Scala eXchange 2017参加のため13年ぶりにロンドンを訪れたわけですが、観光する時間があったので愛するアーセナルの本拠地エミレーツスタジアムのスタジアムツアーに参加してきました。 スタジアムには巨大なショップが併設されており、ユニフォームを始め…

Scala eXchange 2017に参加してきました

ロンドンで開催されたScala eXchange 2017でGitBucketのLTをさせていただきました。スライドは以下になります(口頭で話した部分を付け足すなどちょっと修正してあります)。今回もいろいろ反省が多く、修行しなくては…という感じでした。 GitBucket: Git Ce…

Akka実践バイブル アクターモデルによる並行・分散システムの実現

Akka in Actionの日本語翻訳版である「Akka実践バイブル」がついに完成したとのことで翔泳社さんからお送りいただきました。ありがとうございます。 実はこの本は2年ほど前に翻訳を検討していたのですが、当時まだ原著がアーリーアクセス中でいつ完成するか…

AWSの機械学習プラットフォームSageMakerを使ってみた

AWSの新サービスである機械学習プラットフォーム SageMakerを触ってみました。ざっくり言うとデータ処理、学習、作成したモデルをコンテナとしてデプロイするという一連の作業をAWS上で提供されるJupyter Notebookから行うことができるというものです。 aws.…

GitBucketプラグインの開発をサポートするsbtプラグインを作りました

少し前からこんなsbtプラグインを作っていたのですが、使えそうな感じになってきたので紹介記事を書きたいと思います。 github.com このプラグインはGitBucketプラグインのsbtプロジェクトに以下の機能を提供します。 GitBucketのコアライブラリとサーブレッ…

GitBucket 4.19.0をリリースしました

4.19.0には本体およびバンドルされたプラグインにいくつかの問題があったため、修正した4.19.3をリリース済みです。こちらをご利用ください。 https://github.com/gitbucket/gitbucket/releases/tag/4.14.3 Scalaで実装されたオープンソースのGitサーバ、Git…

Apache PredictionIOのインストール方法(バイナリディストリビューション版)

Apache PredictionIOのハウツーについては以前以下の記事でインストール方法からテンプレートを使ったレコメンドAPIのデプロイまでを紹介しました。 takezoe.hatenablog.com 当時のPredictionIOはインストールするにはソースからビルドするべしというかなり…

ロープロファイルなメカニカルキーボードを買ってみた

PC

少し前にネット上で話題になっていたこのキーボードが気になっていたものの青軸ということで躊躇していたのですが、Amazonのレビューを見るとなかなか良さそうだし値段もそこまで高くないので試しに買ってみました。 HAVITメカニカルキーボード低背 青軸Kail…