Travis CIでPHP5.3から最新までのバージョンでCIをまわす

なんだか辛さが滲み出るようなタイトルだ。どうしても古いPHPのサポートを継続しておきたいライブラリがあって、PHP5.3から最新までのバージョンでCIをまわすときに少しハマりどころ(といったら大げさだが)があったのでメモしておく。

more »

on #php,

Swagger Codegen + Circuit Breaker in #PHP

( English version is coming soon! )

以前 Swagger Codegen + CircuitBreaker(Ganesha) でSwagger Codegenと拙作のGanesha (Circuit BreakerのPHP実装)を組み合わせる方法を書いた。
その後、Swagger CodegenとGaneshaの双方ともバージョンアップし親和性が高まり、よりシンプルな方法で組み込めるようになったので、改めてSwagger CodegenやCircuit Breakerの概要も含めてご紹介したい。

more »

TimeWindowの種類

TimeWindowとは

ググってみた感じだと(ソフトウェア開発以外も含めた)文脈によっていくつか微妙に異なる意味がありそうなのだが、当記事では “ある測定の対象となる時間枠” の意味で扱う。例えば、システムで発生したイベントを集めて加工を行うようなストリーム処理において、どこからどこまでのイベントを対象とするかを決定するのがTimeWindowである。

more »

CopyOnWriteArrayList でリストを安全に更新する

デザインパターン入門 マルチスレッド編 に、マルチスレッドプログラムの評価基準として 安全性 生存性 再利用性 が挙げられている。安全性とはオブジェクトのフィールドが意図した値を保っていることで、安全性が保たれているクラスをスレッドセーフなクラスという。
マルチスレッドプログラミングにおいてオブジェクトを安全に更新するには、操作が競合しないように synchronized などを使った排他制御の工夫が必要。

more »

synchronized メソッドの挙動を JVM のスレッドダンプを見ながら確かめる

最近、趣味で Java 製プロダクトをいじっていたり、デザインパターン入門マルチスレッド編を読んでいることもあって Java のコードを書くようになった。
これまでほぼ PHP しかやってこなかったので java.util.concurrent パッケージ の充実っぷりに衝撃をうけた。これらのクラスを使って分散アルゴリズムの実装に挑戦してみたい。

more »

NTTデータ テクノロジーカンファレンス2017

最近仕事で Apache Kafka を使おうと思っていたり、分散処理が面白くて勉強している。そんな中いままさに知りたいことがセッション一覧に連なってたので参加してきた。
以下、聴講したセッションの概要、気になったところや質問させていただいたことのメモ。

more »

Java/Kafka 初心者が Kafka Connector を実装するための環境づくり

Kafka Connect は ver0.9 で実装された、Kafka の入出力を行うためのプラグイン機構のようなもので、 Source ConnectorSink Connector がある。多くの Connector が実装されていて、もちろん独自の Connector を実装して利用することもできる。

当記事では、Java/Kafka 初心者(いまの私です)が Connector を実装するための準備として行った環境づくりについて紹介します。

more »

fluent-plugin-http_shadow で会員向けコンテンツをテストする

Fluentd を使って ShadowProxy できるプラグイン。フロントに手を入れずに簡単・安全にできるのが魅力。現状、リクエストボディが送信できない(※)が、 GET アクセスが大部分を占めるようなロールであれば充分かなと。

more »