A curated list of streaming solutions that supports Apache Kafka protocol. Solutions which just hosts Apache Kafka are not listed. (e.g. MSK) name company source code WarpStream WarpStream N/A Redpanda Redpanda Data Inc. https://github.com…
Apache Pulsarはe2e暗号化をビルトインで備えている。 pulsar.apache.org これは以下のように動作する。 まず公開鍵ペアを事前に生成しておき、Producerに公開鍵、Consumerに秘密鍵を設定する。 Producerはmessage暗号化用のsession key(共通鍵)を生成し、そ…
Apache Kafkaにおいて、client <-> server (broker)間の通信は独自のwire protocolで行う。 ここで、brokerとclientが別のネットワークにあってHTTPでの通信しか許可されていないシナリオを考える。 HTTP上で任意のTCP protocolをtunnelingするのは一般的な…
Before 3.1.0, KafkaStream's stream-to-stream outer join used to produce a bit counterintuitive output. When we have stream s1, s2 with 10 seconds window, s1.leftJoin(s2) produces below output before 3.1.0: refs: kstream-kstream-join in 3.0…
Electron provides the API to get clipboard data via clipboard.readImage. However, I found it doesn't preserve original image info so some information may drop. Notably, pHYs metadata in PNG. The problem arises when we take a screenshot in …
Incremental Fetch Requests introduced in Kafka 1.1.0 is a mechanism to reduce Fetch overhead (especially when a client is interested in many partitions e.g. ReplicaFetchers) cwiki.apache.org Before KIP-227, all topic partitions had to be e…
In JVM, "safepoint" is a point that all threads are suspended so we can get the consistent view of the thread states. openjdk.org JVM executes operations that needs to be done inside safepoint (e.g. thread dump) in below procedure: 1 Call …
Introduction Kafkaにおいて、同一のgroup.idを持つKafka consumerの集合をconsumer groupと呼び、各groupは特定のtopicをsubscribeする。 group内の各consumer(memberと呼ぶ)にはtopicのpartitionが分散して割り当てられ、それぞれ割り当てられたpartitio…
Environment VRoid Studio version: 1.13.0(正式版) How to このpresetの服の色を赤っぽく変えたいとします まず、Edit textureでテクスチャの編集画面を開きます まず服のテクスチャ画像をpngにexportします 上記のscreenshotでは「デフォルト画像」を右…
Background TLA+のツールセットにはSpecをLaTeXドキュメントとして出力する機能があります。 Example: 最近、この機能を拙作のTLA+ intellij pluginにintegrateできないか考えていました。 公式のTLA+ toolboxやVS Code pluginにはintegrateされていてSpecを…
Motivation Nowadays, it's getting popular to use formal methods to verify complex systems e.g. distributed storages. TLA+ is a widely-adopted formal specification language created by Leslie Lamport. The standard way to write and verify TLA…
Kafka clientは以下のようなフローでbrokerに接続します。 まずbootstrap.serversに指定されたいずれかのbrokerに接続し、metadata(partitionのleader)を得る partitionのleaderに対してconnectionを開く produce/consumeを開始する 最初に最低1台に繋げれ…
(OpenStackについては素人なので間違ったことをいろいろ書いてるかもしれない) OpenStackはクラウド環境を構築するためのオープンソースプロジェクトで、VMなどユーザー向けの計算資源を管理するサービス(Nova)や認証を提供するサービス(Keystone)etc…
Kafka 2.7.0現在、consumerのauto.offset.reset configはlatestがデフォルトとなっています。 これは、consumer groupがあるpartitionをsubscribeするとき、commit済みoffsetが存在しない場合(consumerの初回デプロイ時や、offsets.retention.minutes以上の…
Prometheusには、quantileを計測する方法としてSummaryとHistogramの2種類があります。 prometheus.io 上記公式documentに記載がある通り、Summaryはclient sideでquantileを計測するのに対し、Histogramではprometheus sideでqueryを打つ際にアドホックに算…
Kafka 2.4.0でfollower fetchingと呼ばれる機能が入りました。 cwiki.apache.org これにより、consumerはleader replicaのみではなくfollower replicaからデータを読み出すことが可能となります。 Follower fetchingは、たとえばデータセンターをまたいでrep…
はじめに 3月の終わりに、響け!ユーフォニアム1期〜2期, リズと青い鳥, 誓いのフィナーレを一気見して「特別になりたい」気持ちを再確認し、オーボエを始めようと思い立ちました。 「昨今みんな在宅環境に投資してるし、いいイス買うようなものだし」と謎の…
Gradleでmaven repositoryにlibraryを上げる場合、maven pluginとmaven-publish pluginの二つの選択肢がある。 以前はmaven-publishがsigningをサポートしてなかったりでmaven pluginを使うケースが多かったようだが、現在はすでにstableになっている。 docs…
HyperLogLogは集合のcardinalityを近似する確率的アルゴリズムです。 RedisにもPFxxxというcommandで実装されており、標準誤差は0.81%です。 The returned cardinality of the observed set is not exact, but approximated with a standard error of 0.81%.…
登壇 LINE関連をメインに、いくつかのイベントで登壇の機会がありました。 sbt-uglifier ScalaMatsuri 2018の懇親会「オプテピピック」でのLTです。 LINE NEWS の広告配信を支える LINE DMP の裏側 LINE Developer Meetup #37「ニュースメディアにおける広告…
tailer7というJavaライブラリを公開しました。 github.com これを使うと、たとえばcommons-io Tailerでログをtail -fしつつtailer7のLogSenderに投げれば、複数サーバーでLogTailerを立ち上げてstreamingでログを受け取れます。 アイデアについてはこの記事…
Webアプリケーションの高速化バトルISUCON8本選に「チーム人間性」で出場しました。 最終スコアは13,914で5位という結果に終わりましたが、素晴らしい運営と問題で、大変楽しいコンテストでした。 使用言語はGoでした。 やったこと 3人チームで参加し、自分…
Amazon Redshiftは便利でコスパのよいDWHですが、時間に対する従量課金なので、ちょっとした動作確認のために立ち上げっぱなしにしとくのが気がひける場合もあります。 もしJVMプロジェクトを開発しているなら、redshift-fake-driverを使うことでRedshiftを…
Redis clusterに対してmget/msetしたとき、slotが異なるものが混在しているとCROSSSLOT errorが返ります。 したがってhash tagを用いてslotを指定するか、まとめたい単位でhash型のvalueに突っ込むなどのkey設計にする必要があります。 Redis Cluster Specif…
goofysはAmazon S3またはAPI互換なストレージをfile systemとしてマウントできるツールです。 github.com 起動時に自動的にマウントするにはREADMEにあるように/etc/fstabへ追記すればよいですが、S3以外のストレージを使う場合は、以下のようにendpointを指…
生産性をあげるため、アイカツ!のライブシーンを延々と再生し続けるAIKATSU! STREAMというChrome extensionを作りました。 (dアニメストアへのログインが必要です) chrome.google.com とはいえ、jsで動画を解析してライブシーンを抜き出すようなことをし…
1-3月 広告効果測定ツールADPLANのリリース 自分は集計周りをメインで担当してましたが、無事にリリースすることができました。 ScalaMatsuri 2017登壇 Introduction to ScalikeJDBCというタイトルで喋りました。 4-6月 #bq_sushi tokyo #5 @ Google Cloud C…
タイトルの通り、以下のコードはJavaとしてもScalaとしてもコンパイルできます。 /*/**/ class JavaMain { public static void main(String args[]) { System.out.println("Hello, World"); } } // */ /*/**/ class App {} // */ /*/**/ class A { int objec…
MavenやGradleプロジェクトでも、sbtみたいに手軽にREPLで動作確認したいときがあります。 お手元の開発環境にAmmonite REPLを入れておけば、以下のようにScalaを使って動作確認できるので便利。 $ amm Loading... Welcome to the Ammonite Repl 1.0.2 (Scal…
この記事はアイカツ! Advent Calendar 2017の25日目の記事です。 はじめに 女児向けアーケードゲームやアニメには、そのターゲット層とは裏腹に、コアな音楽ファンをも虜にするような楽曲を繰り出してくる作品が少なくありません。 とりわけアイカツ!は、…