かまたま日記3

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

Goでtesting.T#Helperを使う

Goのテストでヘルパーメソッドを作って共通のアサーションを定義することがあるかと思います。 package test import "testing" func Add(x, y int) int { return x + y } func TestAdd(t *testing.T) { AssertEquals(t, 2, Add(1, 1)) AssertEquals(t, 3, Ad…

SEQSENSEの会社・仕事の紹介

はじめに このエントリーは SEQSENSE株式会社 への採用 (主にクラウドチームのエンジニア) を目的としたエントリーです。もし興味を持った方は Findy or Wantedly から、もしくは @kamatama_41 まで直接連絡ください。 SEQSENSEについて 2016年10月に創業し…

AWS IoT@Loft #11 で登壇してきた

iot-loft.connpass.com スマートビルディングにおけるIoT活用の取り組み というお題でスマートビルディングを警備するSEQSENSEのロボットのサービスについてお話してきました。 初めてのオンライン登壇、自分が話するときは200人近くの接続者がいたようで結…

RenovateでGoのプロジェクトの依存性を更新する

Go

弊社でRenovateを使ってるので、知見のメモです Privateレポジトリを含む場合 Renovateを適用したいGoのレポジトリのgo.modに同じorganizationの別のprivate repositoryを含む場合*1、その参照されているレポジトリにもRenovateを適用すれば、Renovateが持つ…

Herokuで特定のGoのバージョンを使う

デフォルトはGo buildpackのデフォルトバージョンが使われます (2020/05/31現在1.12.17) これを変えたい場合以下の方法があります go.mod に // +heroku goVersion go1.14 というディレクティブを追加する アプリケーションの環境変数に GOVERSION を追加す…

GitHub Actionsでテストを分割する

やりたいこと GitHub Actionsでテストケースを分割して、複数ノードで実行する CircleCIだとプラットフォーム側で対応してくれていますがGH Actionsだと見当たらなかったので同等のことをやるための設定のメモです。 設定例 rspec: runs-on: ubuntu-latest s…

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)経由の成田へ…