Akka Streamsで巨大なXMLをストリーム処理する

Akka Streams用のコネクタを提供するAlpakkaにはXMLサポートも含まれており、XMLの読み込み・書き込みを行うためのFlowやSinkを利用することができます。 しかし読み込みはXMLのパースイベントをストリームするだけなので、実際には下流の処理で状態を管理し…

AWS Kinesisからの読み込みをAkka Streamsで行う

Akka Streams用の様々なコネクタを提供するAlpakkaですが、もちろんAWS Kinesis用のコネクタも含まれています。 しかし、書き込むためのFlow/Sinkは普通に使える感じのものなのですが、読み込むためのSourceはライセンスの問題からKCLを使ったコネクタを取り…

GitBucket 4.26.0をリリースしました

Scalaで実装されたオープンソースのGitサーバ、GitBucket 4.26.0をリリースしました。 https://github.com/takezoe/gitbucket/releases/tag/4.26.0 セントラルレジストリからのプラグインインストール 先日運用を開始したプラグインレジストリからインターネ…

GitBucketのプラグインレジストリの運用を始めました

GitBucketはプラグイン機構を持っているのですが、Jenkinsのようにインターネット経由でインストールできるようにしたいという考えはGitBucketを作り始めた頃からありました。また、実際にプラグイン機構を導入してみると、本体の修正にあわせてプラグインの…

ASUSのリアル店舗にスマートフォンを修理に出してみた

ASUSのZenfone2というSIMフリー端末を3年ほど使っていたのですが、うっかり落としてディスプレイをバキバキに割ってしまい、バッテリーがだいぶヘタってきていたこともあり新しい端末に変えようと思い、価格重視で同じくASUSのZenfone4 Maxという端末を購入…

MacでThinkPad Bluetoothキーボードを使う場合のKarabiner Elementsの設定

Mac

職場で使っているMacBook Proの外付けキーボードをThinkPad Bluetoothキーボードにしてみました。 レノボ・ジャパン ThinkPad Bluetooth ワイヤレス・トラックポイント・キーボード - 英語 0B47189出版社/メーカー: レノボ・ジャパン発売日: 2013/06/25メデ…

GitBucket 4.25.0をリリースしました

Scalaで実装されたオープンソースのGitサーバ、GitBucket 4.25.0をリリースしました。 https://github.com/takezoe/gitbucket/releases/tag/4.25.0 セキュリティの改善 以前のバージョンのGitBucketにはKacper SzurekさんによるGitBucket 4.23.1 Unauthentic…

Software Design総集編【2013~2017】に関数型プログラミングについて書かせていただきました

Software Designさんは大昔にWikiの記事などを書かせていただいた記憶があるのですが、昨年久しぶりにGitHub、BitBucket等の比較記事を書かせていただいたので総集編をお送りいただきました。そうえいば弊社の同僚も文字コードの記事やtmuxの記事を書かせて…

GraphQLスキーマからCRUDを自動生成できるPrismaについて

Prismaは、様々なデータベースをバックエンドにGraphQLのスキーマからCRUDを行うためのエンドポイントを提供するプロキシとして動作するミドルウェアです。最近$4.5Mの資金調達をしてちょっとだけ話題になりました。 www.prisma.io Prismaが提供するソフトウ…

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つのオプ…