かまたま日記3

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

AWS Summit Tokyo 2023に参加してきた

AWS

一ヶ月前の出来事なんですが(汗)、幕張メッセで行われたAWS Summit Tokyoに会社として参加してきました。実際に動くロボットという目を引く展示物の効果もあって、かなりの数の人がブースに来てくれて色々な話をしました *1 #AWSSummit に出展してます。幕張…

t.Runでネストしたテストを実行するときの注意点

TL; DR t.Run でネストしたテストを実行する時、Runに渡す関数はトップレベルのテストが実行されているのと別のgoroutineで実行されているのでParameterized Testなんかをやってる場合、変数のスコープに注意しましょう。

runtime.MemStatsを使ってリアルタイムにメモリ使用量を確認する

Go

runtime.MemStats を使うと現時点でのメモリの使用状況などを確認できます。 とりあえず、以下のようなコードを埋めるとAlloc (割り当てられたヒープオブジェクトのバイト数) とNumGC (GCの回数) を確認できます。ついでに期間中の最大のAllocも確認していま…

住宅購入記録 (2)

今回は住宅ローンに関して。 住宅ローン探し 変動 or 固定 銀行選び 団信落ちた 審査通過 余談 (職歴書) 記事一覧

住宅購入記録 (1)

昨年末に家 (建売新築) を買ったのでその記録です。今回は購入する所まで。 家を買うに至った経緯 定期借家契約の終了 賃貸 or 持ち家 家探し マンション or 戸建て マンションの特徴 戸建ての特徴 戸建て探し 決めたポイント 妥協した点 余談 記事一覧

ETLとELTの違い

https://www.xplenty.com/jp/blog/etl-vs-elt-ja/ を読んでのETLとELTの違いのざっくりしたまとめ ETL Extract Transform Loadの順番で行う. ソースシステムからステージ環境にExtractして変換したものをData warehouseにLoadする流れ OLAPデータウェアハウ…

cgroupのDevice Whitelist Controllerについて

https://www.kernel.org/doc/Documentation/cgroup-v1/devices.txt cgroupはmknod (特殊ファイルの作成) を制限できる。 echo 'c 1:3 mr' > /sys/fs/cgroup/1/devices.allow これは 「cgroup 1 に/dev/nullのread and mknod の権限を追加する」という意味に…

Terraformのlockfileを更新するGitHub Actionを作った

Terraform 0.14からDependency Lock File が導入されました。 そのためTerraformのproviderを更新する際にこちらのlock file (.terraform.lock.hcl) も更新する必要があります。 SEQSENSEでは Renovate を使ってライブラリアップデートを行っていますが*1、T…

Pull requestでPostされたBotのコメントを消すGitHub Actionを作った

皆さんCIで実行したテストやLint, カバレッジレポートの結果をbotがPull requestにpostするというのはやったことがあるのではないかと思います。 ただ、何回もPushしているとそのコメントが溜まってきて見づらくなったりすることは無いでしょうか? たとえば…

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の会社・仕事の紹介

2021/06/11 更新 はじめに このエントリーは SEQSENSE株式会社 への採用 (主にクラウドチームのエンジニア) を目的としたエントリーです。もし興味を持った方は Findy or Wantedly から、もしくは @kamatama_41 まで直接連絡ください。 転職ドラフトにも参加…

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

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

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

Go

弊社でRenovateを使ってるので、知見のメモです Privateリポジトリを含む場合 一部のライブラリ更新頻度高すぎ問題 go.sumのpackage sumが抜ける問題 patchバージョンのみをAutomergeしたい場合 最後に Privateリポジトリを含む場合 Renovateを適用したいGo…

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で複数バージョンを管理する

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

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サーバと呼びます)上で実行できる 複…