かまたま日記3

プログラミングメイン、たまに日常

2019年振り返り、2020年の抱負

2019年は書かなかったので、2年ぶりの振り返り記事になります。 転職 退職しました4 - かまたま日記3 一番のトピックはこれでしょうか。前職では色々心残りもありましたが、春にSEQSENSEという警備ロボットを作っているベンチャー企業に転職しました。 現職…

Nginxで同じポートでUDPとTCPをリッスンして別のバックエンドにプロキシする

たとえばNLBを使ってUDPをロードバランシングする場合、ヘルスチェックのために、UDPをリッスンするのと同じポートでTCPをリッスンする必要があります *1 そういう場合、バックエンドがNginxの場合は以下のような map と $protocol を使った方法で振り分ける…

Travis CIの設定用のTerraform providerを作った話

この記事はTerraform Advent Calendar 2019 の9日目の記事です。 私の所属しているSEQSENSEではTravis CIを主に利用しています。 CIサービスを使うにあたって、ビルドで使う環境変数やSSH鍵などの管理は課題の一つです。 一つ一つ手動で設定していってもいい…

AWS Savings Plans メモ

AWS

AWSのSavings Plansのセミナーに参加してきたのでそのメモ。 Fargateに対しても割引が効いたりするし、インスタンスタイプの垣根が無いので*1、そろそろM6が出そうなので、M5のRI買うのやめとこうみたいなのが発生しないのがイイですね。 Savings Plansとは…

俺的00年代アニソン 前編

昔90年代 でやったやつの00年代版です。そろそろ2010年代も終わるのでやってみました。 今回は特にランキングは付けず思い入れのある曲を紹介していきます。紹介したいのが多くなったので続きます (たぶん..)

Datadog LogsをCLIでtailするツールを作った

github.com モチベーションとしては、Datadog LogsのWebコンソールはメッセージの全文が長いと全部表示されなかったり普通のtailと違って時間の降順に並んだりで微妙に見づらかったりするので、CLIでtail -fコマンド感覚で見れて雑にgrepとかしたいと思って…

Mercari meetup for SRE Vol. 2 に参加してきた

mercari.connpass.com データセンタープロジェクトの進捗って言うのが面白そうで抽選通ったので参加してきました。基本的には今自分が所属している小さいスタートアップでは直接的に参考になることはあまり無かったですが、こういうスケールの大きな話を聞く…

DockerのUbuntuコンテナでsystemdを動かす

TL; DR とりあえず --privileged をつける。つけないでいい感じで動かすのは大変そう。 CentOSは公式でsystemd用のベースイメージを用意してくれているので、Ubuntuを使いたい人以外はそちらを使うのが良さそう https://hub.docker.com/r/centos/systemd/ ST…

GolangでForループの中でdeferしない

defer はそれが定義された関数が終わったタイミングで実行されるので、forループでdeferを定義してしまうと、forループが終わって所属する関数が終わったタイミングで一斉に実行される。 package main import "fmt" func main() { for i := 1; i <= 5; i++ {…

退職しました4

TwitterやFacebookでフォローされてる方は知っているかと思いますが、3月末で前職を退職していました。短い間ですがお世話になった皆さんありがとうございました。1年弱という社会人生活で一番短い在職期間になりました。 これまで Hosted Embulk for TDであ…

Goで複数バージョンを管理する

まあここに書いてることそのままなのですが、日本語のメモとして。 go get でダウンロード用のバイナリを取ってきて、downloadコマンドを打つ $ go get golang.org/dl/go1.12.5 $ go1.12.5 download Downloaded 0.0% ( 15175 / 127612395 bytes) ... Downloa…

embulk-executor-remoteserver 0.4.0 リリース

github.com このバージョンより、Embulk clientとserver間でTLSでの接続ができるようになりました。 設定方法 (クライアント) まず、use_tls オプションをtrueに設定してください。サーバ側が(クライアントにとって)既知のCA証明書でサインされた証明書を使…

Gradleで動的にプラグインを適用する

モチベーション とあるプロジェクトでgradle-release pluginを使っているのですが、DockerでJarをビルドするときにこのプラグインを設定していると .git ディレクトリをコピーしないと(プロジェクトがGitリポジトリじゃないと)最初のbuild.gradleの検証で失…

CicleCIでDockerイメージを再利用する in 2019

CicleCIでDockerイメージを再利用する - かまたま日記3 こちらの記事の最新版です。 現在CircleCIはバージョン2で、Docker Layer Cachingという機能がありますが、残念ながら追加のフィーが必要です。というわけで、会社とかで使っててフィーを払える方はそ…

embulk-executor-remoteserverを作った #Embulk

Embulkのexecutor pluginの仕組みとネットワークプログラミングを学びたかったので、勉強がてらこのようなプラグインを作ってみました。 github.com できること Embulkのタスクの実行を別に立てた専用のサーバ(以下Embulkサーバと呼びます)上で実行できる 複…

gradle-embulk-plugin v0.5.0 リリース

Release 0.5.0 · kamatama41/gradle-embulk-plugin · GitHub embulk_* のタスクを実行時の config.yml output.yml のオーバーライドを build.gradle 内ではなくプロパティを渡すようにしました。 以前 embulk { configYaml = "myconfig.yml" outputYaml = "m…

Lambdaオブジェクトの型パラメータを取るのは難しい

TL;DR ラムダオブジェクトの型パラメータを取得するスマートな方法は今の所見つかっていない もし基盤プログラムでそういうことをしたい場合は、ラムダを禁止して、匿名クラスを使う いい方法があったら教えてください 本文 Javaで基盤プログラム的なのを作…

embulk-output-multiを作った

前職の同僚の @mtsmfm さんがつぶやいていたので、勢いで作ってみました。 embulk で 1 つの input から複数の output に繋ぐみたいなことはできるのだろうか— Fumiaki MATSUSHIMA (@mtsmfm) 2019年2月25日 github.com 使い方 2019/03/11時点の最新版は 0.4.…

GradleプラグインをGradle community portalにアップロードした

今まで、自作の2つのGradleプラグインはGitHub上のオレオレMavenリポジトリから落とすようにしていたんですが、 buildscript でそのリポジトリを指定しないと行けなかったり、記述がちょっとだけ面倒だったので、Gradle community portalにアップしてPlugins…

JUnit 5 入門

そろそろ使ってみるかということで入門してみました。 JUnit Jupiter こちらにも書かれてますが、JUnit 5は複数のサブプロジェクトからなり、JUnit 5でテストを書いたり拡張機能を書くためのクラスはJUnit Jupiterというプロジェクトにあります。なので、テ…

gradle-embulk-plugin v0.3.0 リリース

Release v0.3.0 · kamatama41/gradle-embulk-plugin · GitHub gem, gemPush のタスクの内容を最新のEmbulkのものに追従しました。詳しい使い方は以下の記事を参照ください。 kamatama41.hatenablog.com

embulk-filter-hash v0.5.0 リリース

GitHub RubyGems イシューで希望をくれたHMACのハッシュ化に対応しました。以下のような感じで algorithm にHMACのアルゴリズムを指定した上で secret_key に秘密鍵を入れると使えます filters: - type: hash columns: - { name: username } - { name: phone…

JavaでRubyのeach_sliceがしたい

each_sliceというのは配列を指定した要素数の配列に分ける処理です。リストの中身をn件ごとに処理するときに便利です。 Javaには同様の処理が(たぶん)標準APIには無いので、こんな感じで行けそうです。 import java.util.Arrays; import java.util.List; imp…

アメリカに行ってきた

先週1週間会社の出張でアメリカ(マウンテンビュー)に行ってきました。海外は前職でのフィリピン出張以来2年ぶりです。 飛行機 行きは羽田からサンフランシスコ国際空港(SFO)の直行便で9時間ほど、帰りは後述の理由からSFOから香港国際空港(HKG)経由の成田へ…

tfenvのオーナーを移管した

色々issueとかPRとかもらっていたのですが、転職も決まってTerraformユーザーではなくなってしまったこともあり、私自身がメンテナンスするモチベーションが上がらなくなっていたため、別の方にオーナーになってもらうことにしました。 I'm looking for new …

CircleCIでgradle testがOOMで落ちるのを防ぐ

とあるプライベートなリポジトリで急にCircleCI上のgradleのテストが落ちるようになってしまい、レポートのxmlも出力されなくなってしまいました。 うーん、CirclrCIでテストに失敗したんだけど例外のログが何も出ない、その上なぜかJUnitのレポートも作成さ…

Chromeで特定のドメインのアクセスをリダイレクトさせる

Twitterのブックマーク機能は現在PC版のサイトでは提供されておらず、mobile.twitter.com を使ったモバイル版でアクセスする必要があります。 An easier way to save and share Tweets Bookmarks are now rolling out globally on Twitter for iOS and Andro…

Parallel Streamの並列数を調整する

Streamの parallel メソッドを呼ぶとストリームの処理を並列に実行できますが、これは内部的には前回紹介したForkJoinPoolが使われています。ForkJoinPoolは内部でcommon poolと呼ばれる共通プールを持っており、明示的にPoolを指定しない ForkJoinTask#invo…

ForkJoinPoolについて

ForkJoinPoolはJava 7から導入された新しいExecutorのフレームワークです。 旧来のExecutorと違うのは、タスクのスケジュールのアルゴリズムとして、work-stealingを採用していることです。これは再帰処理やタスクの中で更に細かな子タスクが生成されるよう…

退職しました3

4月で約2年半所属した前職を退職しました。お世話になった皆さんありがとうございました。 これまで SREチームとしてインフラ周りを幅広く見ていました。アプリケーション開発以外の仕事は大体やったと思います。一部ですが具体的には以下の様なことをやって…