unless’s blog

日々のちょっとした技術的なことの羅列

いまさらだけどTeam Topologiesについてまとめてみる

たまたま仕事でTeam Topologiesをまとめる機会があったので、備忘録がてらブログにしておく Team Topologiesとは Matthew SkeltonとManuel Paisによる本 https://amzn.asia/d/f0l0NBR DevOpsの視点から高速なDeliveryを実現するためにどのようなチームや組織…

Fixing For Loops in Go 1.22

Go

今更ですが、年明けに社内のGo勉強会で登壇した時の資料を置いておきます speakerdeck.com

サイバーエージェントに入社しました

2023-09-01から株式会社サイバーエージェントのDeveloper Productivity室にDPE(Developer Productivity Engineer)として入社しました @uncle__ko です 気がつけば入社して1ヶ月が経ったこともあり、こうして入社エントリを書かせて頂こうかと思いました この…

今更ながらおうちKubernatesクラスター作ってみた

はじめに k8sもいろいろなシステムで採用されるようになった昨今、仕事でk8sを触ることも増えてきた 概要などは把握しているが仕事で触ることも増えてきたので、k8sの勉強を本格的にしようかと思ったりした 資格を取るのもありだが、自分で触ってみるのが一…

OpenAI APIを使ってサクッと生産性を上げるツールを作ってみた

みなさんもご存知のように、ChatGPTによる台頭が生成AIブームを引き起こしています せっかくなのでこの波に乗ってみようと思い、OpenAIのAPIを使用して簡単なツールを作成しましたので紹介します OpenAI API OpenAI APIは、ChatGPTで有名なOpenAIが提供して…

株式会社Kyashを退職しました

3年間お世話になった株式会社Kyashを2023/02/28付けで退職することになりました 一緒に働いていた皆さん、大変お世話になりました ありがとうございました この3年間たくさんの経験をさせてもらったので、やってきたことをまとめようかと思います Kyashで…

なぜGolangが一部のBinary Toolを自前で実装しているのか

これはなに? これはKyash Advent Calendar 2022 21日目の記事です KyashでBackend Engineerをしている @uncle__ko です お金の入出金を司るチームや決済領域を司るチームなどを経験したあと、現在はTechチームの生産性向上に向けた取り組みを行うチームのリ…

PostgreSQLのロジカルレプリケーションとストリーミングレプリケーションの違い

これはなに? ちょっとStreaming ReplicationとLogical Replicationの違いを調べる機会があったのでまとめてみた レプリケーションの種類の比較 PostgreSQLでは、バージョン9.0よりストリーミングレプリケーション(Streaming Replication)機能を利用すること…

Go 1.19 でruntime/pprofのgoroutine profileにおいてSTWの時間が大幅に軽減されたらしいので調べてみた

これはなに? Go 1.19のRelease Notesを眺めていたら、runtime/pprof でgoroutine profileを取得する際のSTW(Stop-the-world)の一時停止時間が大幅に短縮され、アプリケーションに対する全体的なレイテンシーの影響が軽減されたという記述を見つけました runt…

fourkeys基盤を作った話で登壇しました

今更ですが、こちらのイベントで登壇しました kyash.connpass.com fourkeys基盤を作った話をしたので、登壇資料を置いておきます speakerdeck.com 生産性の可視化やfourkeysについて興味がある人はぜひ読んでみてください

PostgreSQLでIndex名,column名,型名の一覧を取得するSQL

これはなに? タイトルのままだけど、PostgreSQLでIndex名とcolumn名と型名の一覧が欲しかった しかし意外と取得に苦労したのでSQLを貼っておく SQL 最初は Information_schema でうまいこと引いてこれないかなって思って試したけど意外とできなかった 理由と…

負荷試験を定期的に実施できるように体系化した話

これはなに? Kyash Advent Calendar 2021 22日目の記事です 昨年のAdvent Calendarでは負荷試験環境を作った話を書きました 今回は負荷試験の実施方法を体系化し、定期的に実施できる状態を作ることができてきたので、その話をまとめていきたいと思います お…

Datadog Profilerで継続的なProfilingを実施できるようにした話

おまえだれ? 株式会社Kyash でサーバサイドエンジニアをしている @uncke__ko です Fundsチームに所属していて主にお金の入出金部分を担当しています これは何? Kyashではシステムの監視やモニタリングにDatadogを使用しています www.datadoghq.com Datadogに…

子育てソフトフェアエンジニア、家を買い換える

まえがき Fintechベンチャーでサーバサイドエンジニアをしている @uncle__ko です この度、都内に所有していたマンション(居住用)を売却し、戸建て(居住用)を購入しました かなり大変だったのと色々と知見を得られたのでブログに残しておこうかなと思い、今…

FAXで障害報告を受信したときにSlack通知する

やりたいこと FAXで障害報告が送られて来たときにSlackに内容を通知してエンジニアが気がつけるようにしたい 前置き Kyashでサーバサイドエンジニアをやっている @uncle__ko です 色々なシステムやベンダーと接続をしていると障害報告がFAXで来るなんてこと…

Goのhello worldを小さくする

これはなに? ふとGolangのbinaryを小さく出来ないかなと思い立ったのでhello worldをスリムにしていこうと思う hello world Golangでのhello worldはこちら package main import "fmt" func main() { fmt.Println("hello, world") } 普通にbuild これを普通…

CとGoのhello world時のシステムコール数

特に何かの役に立つわけでもないが取得する機会があったのでここに置いておく 環境 # cat /etc/os-release NAME="Ubuntu" VERSION="20.04.1 LTS (Focal Fossa)" ID=ubuntu ID_LIKE=debian PRETTY_NAME="Ubuntu 20.04.1 LTS" VERSION_ID="20.04" HOME_URL="ht…

Locust + AWS ECS(Fargate)で負荷試験環境を作った話

これはなに? Kyash Advent Calendar 2020 21日目の記事です。 今回はKyashに導入した負荷試験環境について紹介します。 経緯 Kyashでは決済や入金周りの性能試験は実施していましたが、シナリオベースの負荷試験など不十分な部分がありました。 そのためキャ…

goenvでGOPATHの間にversionが入ってしまう場合の対処法

Golangの環境構築をしていてハマった箇所があったので解決法を書いておく goenvを使ってGolangをインストールした時にGOPATHにversionが入ってしまって困った goenv/CHANGELOG.md at master · syndbg/goenv · GitHub Changed goenv's bootstrap (eval $(goen…

ローレンツアトラクターをpythonで組む

グラブルで10賢者の一人であるフラウを取得して フラウのアビリティであるストレンジアトラクターの画像を見ていたら これはローレンツアトラクターだなぁって思って描いてみたくなった ストレンジアトラクター 今回はEuler法ではなくRunge-Kutta法でやって…

awkの変わりにPerlワンライナーを使う

たまにCapistranoとか使っててawk使いたい時とかにエスケープが難しすぎてイライラすることがある そんなときにPerlワンライナーでawkの変わりをさせたりするのでメモがてら載せておく capistranorb.com awk その時によって違うのでなんとも言えないがこんな…

Perlのmapでハマった話

少し考えればすぐわかることだがハマってる時はぜんぜん気がつかずに困ってたのでメモ #!/usr/bin/perl use strict; use warnings; use Data::Dumper; sub get_array_ref { my $func = sub { return undef; }; my @array = undef; my $array_ref = [map { $f…

GCと循環参照について

いままでぜんぜん気にしていなかったけどPerlのGCはリファレンスカウント方式らしい なのでオブジェクトへの参照が作られるたびにリファレンスカウントを増やしていって オブジェクトへの参照が破棄されたタイミングでリファレンスカウントが減ることになる …

オブジェクトファイルと戯れてみる Pert.2

echoコマンドのオブジェクトファイルと戯れてみる第二弾 第一弾はこちら unless.hatenablog.jp 共有ライブラリの依存関係 objdump で依存関係を見てみる ja.wikipedia.org 共有ライブラリが何かという情報はELFの[Dynamic Section]のNEEDEDに記載されている …

オブジェクトファイルと戯れてみる Pert.1

echoコマンドのオブジェクトファイルと戯れてみる ELF ELFとは実行可能バイナリやオブジェクトファイル等のフォーマットを規定したのもだそう ja.wikipedia.org echo コマンドのELFヘッダを見てみる ELFヘッダとは ファイルの先頭に存在し、ELF識別子、アー…

RAIDのステータス確認コマンド

欲しいと思った時に忘れていて調べることが多いので自分用メモ /opt/MegaRAID/MegaCli/MegaCli64 -LDInfo -Lall -aALL | grep State status Optimal 正常 Degrated RAIDが壊れてる。縮退状態 Partialy Degrated RAIDが壊れてるが冗長性は保たれている diskの…

puppetで既に存在してるファイルを上書きする方法

puppetで既にファイルが存在している時に後から上書きする方法が 調べていてもパッと出てこなかったのでメモ Resource Type: file のattribute: contentに コンテンツをそのまま記載すれば上書きされる puppet.com また、自分でわざと指定していない限りはat…

Redis keysコマンドの罠

概要 Redisに保存されている値を見たい時にkeysコマンドをつかって $ redis-cli keys * でkeyを取得してkeyを元にgetコマンドを作るって記事がわりとあるけど 実際にproductionとしてredisを運用しているとここに罠があるので紹介 Redis is 何? 公式サイト …

[Perl] [GeoIP2] MaxMind::DB::Reader::XS と MaxMind::DB::Reader での速度比較

GeoIP2 とは 下記にあるようにipアドレスに紐づく地域やISP等が格納されているMaxMind社が提供するDatabase www.maxmind.com 概要 perlの公式APIのREADMEに下記のような記載があり本当に100倍も速度が違うのか気になったので速度を比較してみる github.com T…

MySQLにおけるin句のitem数制限について

Oracle畑で育ってきた自分の中では in句に指定できる要素数は1000個まで というのが常識だったんだが、同僚からいままで気にしたことがなかったと言われてので調べてみた のだがとくにそれらしい情報はなさそうであった。 どうやらMySQLには制限はなさそうだ…