ncatでHTTPリクエストの送信中にクライアントの接続を切断する

概要 APIのデバッグにおいて、クライアントサイドで再起動やダウン、ネットワークエラーなどにより、クライアント側でHTTPリクエスト送信中に接続を切断するようなケースを手動で再現したい。 HTTPで通信する場合には、netcatを使って対話的にHTTPリクエスト…

Fluentdのout_http pluginでapplication/x-www-form-urlencoded形式のリクエストを送信する

概要 v1.7.0以降のFluentdでデフォルトでバンドルされているout_httpプラグインを利用すると、 HTTP/HTTPS経由でレコードを送信することができる。 http - Fluentd out_httpを利用し、 application/x-www-form-urlencoded形式のリクエストを送信する方法につ…

Hive on TezにおいてDISTRIBUTE BY指定したクエリのFile Mergeの挙動

Hive on Tezにおいて、DISTRIBUTE BYを指定したクエリが、File Mergeが有効化されていたことによって想定外の挙動になった。 Hiveのバージョンは、3.1.3でORC形式のテーブルを想定している。また、他のバージョンでは修正されている可能性はある。 まず、DIS…

HiveServer3.1.3をローカルデバッグする

今回、Hive3.1.3をDocker上で立ち上げ、HiveServerにリモートデバッガをアタッチしてHiveServerの処理を詳細にデバッグする環境をセットアップします。開発環境はIntelliJを前提としてます。 公式にHive用のDockerImageを提供するIssueがHive4.0.0で導入され…

Redis Lua script debuggerを活用する

Redisでアトミック操作を実現したい時にLua scriptを記述したい時があるが、毎回実際にRedisに投げて確認するのは非常に面倒。動作中の問題や、redis.callの返り値の確認などを行うのも非常に面倒。 公式ドキュメントにLua script debuggerが用意されている…

zkSync JavaScript SDKをrinkebyテストネットで利用する

ZK Rollupを元にしたL2プロトコルであるzkSyncについて調査し、そのJavaScript SDKの利用方法について軽く確認する。 以下のチュートリアルの内容について、実際に確認する際に必要な作業を追加で説明として加えている。 Getting started | zkSync: secure, …

JavaサーバーサイドエンジニアのEthereum開発入門

Ethereumのスマートコントラクトを活用したアプリケーション開発についていろいろやった内容をまとめる Ethereumおさらい コンピュータサイエンスの観点から見たイーサリアムは、決定論的であるものの実質的に制約のない状態マシンであり、グローバルにアク…

Spring Boot Bean Validationでバリデーションエラーを短絡する

Spring BootにおけるBean Validationでは HibernateValidator がデフォルトで利用される。 例えば以下のように @Validated アノテーションを付与することでリクエストボディのバリデーションも行うことができ、このバリデーションにも HibernateValidator が…

hadoop fs -rmコマンド コードリーディング

hadoop fs -rm コマンドの挙動を詳しく確認する必要があり、コードリーディングを行った。 コード自体は自体は以下に存在しており、他のコマンドの実装も周辺にある。 github.com 実装上、-rm、-rmdir、-rmr、-expungeは全て異なる実装が行われているが、 今…

Spring WebFlux2.4.3 - WebSocketHandlerにPrincipalを受け渡す

要約 現時点で、WebFluxでWebSocketをハンドリングするWebSocketHandlerで受け取っているWebSocketSessionのHandshakeInfoが保有する principleMonoは、Mono.empty()を返している。 これはHttpWebHandlerAdaperが、DefaultServerWebExchangeを生成しており、…

HBase1.2 checkAndPut & scan を用いて行の論理削除を行う

要約 やりたいこと 実装 論理削除を実行 論理削除の解除を実行 論理削除を除去したscan 論理削除を含む通常のscan 要約 HBaseの行を論理削除することを実現する方法として、checkAndPutとscanを用いて実装する 将来的に、複数の論理削除やフラグが追加される…

MySQL 5.7のsys.innodb_lock_waitsを可視化する

要約 MySQLには 現在トランザクションが待機しているロックの要約を見るためのsys.innodb_lock_waitsビューが定義されている。(https://dev.mysql.com/doc/refman/5.7/en/sys-innodb-lock-waits.html) アプリケーションでlock timeoutの前兆を検出し、sys.in…

UUID符号空間を等分割して使う

概要 16進表記のUUIDの符号空間は 00000000-0000-0000-0000-000000000000 ~ ffffffff-ffff-ffff-ffff-ffffffffffffで表せる HBaseのテーブルのRow Keyが ${prefix}${区切り文字}${16進表記UUID} のような形式になっているような場合、${prefix}${区切り文字}…

JavaのLinkedBlockingQueueを使ってみる

やりたいこと import java.util.List; import java.util.concurrent.CompletableFuture; import java.util.concurrent.Executors; import java.util.concurrent.LinkedBlockingQueue; import java.util.concurrent.TimeUnit; import java.util.concurrent.at…

Akka Typed JavaDSLでConcurrent Theta Sketchする

Akka Typed JavaDSLとDataSketchesをとりあえず使ってみるだけの備忘録。DataSketchesの中でもTheta Sketch Frameworkを使用する。今回やっていることは以下とほぼ同じ。 DataSketches | ThetaJavaExample Concurrent Theta Sketchは自力で書かなくても Uplo…

HBaseをローカル分散モードで立ち上げてJavaから繋ぐまで

好き勝手やるためにローカル分散モードで立ち上げてJavaのHBase Clientから繋ぐまでやる。 HBaseローカル分散モードでコンテナ起動 GitHub - big-data-europe/docker-hbase > git clone https://github.com/big-data-europe/docker-hbase.git > docker-compo…

Javaで並行処理するのにサクッと使えるCompletableFuture

ScalaならFutureでも十分使いやすいのであまり困ることはないが、JavaのFutureはScalaのFutureとは異なり使いにくい(個人的な感想)。 似たような方法で簡単に並行処理を行える方法はないか?と調べたところ、CompletableFutureなるものがあるのを見つけた。1…

2019年 今年読んだ技術書

今年読んだもの 本 www.oreilly.co.jp www.oreilly.co.jp www.oreilly.co.jp www.oreilly.co.jp www.oreilly.co.jp www.maruzen-publishing.co.jp book.impress.co.jp www.shoeisha.co.jp www.kinokuniya.co.jp gihyo.jp www.oreilly.co.jp 全部読んでないや…

データ指向アプリケーションデザインを読んでLSM-treeインデックスに基づくKVSを作る

この記事はMicroAd Advent Calendar 2019の4日目の記事です。データ指向アプリケーションデザインを読んで、Akka TypedでLSM-treeインデックスに基づくKVSを作ります。

MySQLのCREATE TABLE文からサンプルデータを自動生成してみる

MySQLのCREATE TABLE文から自動でサンプルデータを生成するようなプログラムを書いてみました。 動機 実運用前のサービスでは、当然ながら使用するテーブルには実際のデータが入っていません。その為、実運用時のパフォーマンスをある程度予測したい時に、サ…

ゴルーチンによるorチャネルパターン

「Go言語による並行処理4.4 orチャネル」 で、複数のチャネルをまとめて、まとめたチャネルのうちどれか1つでも閉じられた場合、まとめたチャネルも閉じるようにしたい。という場合に、orチャネルというパターンがあることが紹介されている。 「この関数はか…