yoshikipom Tech Blog

AtCoderで数ヶ月精進して入水した話

はじめに 2022年まではなぜレートが伸びなかったか 改善結果 改善のためにやったこと 解法がわからないとき 解法を考える順番 修行 おわりに 参考 はじめに いわゆる入水記事。2019/06/15からずっと緑帯だったがついに入水した。以前はコンテスト参加がメイ…

2023年の振り返り(エンジニア6年目)

エンジニアリング 仕事 競技プログラミング(AtCoder) 勉強 AWS Solution Architect Professional OSS開発 英語 まとめ エンジニアリング 仕事 2022年はバックエンドチームでテックリードをしていたが、2023年はアーキテクトとして働いていた。複数のマイクロ…

NewSQLを学んでTiDBにコミットした話

概要 Why? NewSQLを学んでCockroachDBかTiDBを選ぶ TiDBを学ぶ 日本語リソース 英語リソース pingcap/tidbへのコントリビュート コントリビュートした感想 おわりに 概要 この12月はNewSQLの学習とTiDBへのコミットに挑戦してみたのでその記録。 得られたこ…

TOEICのリーディングを5分残しで終えられるようになった方法

学習前の状況 学習結果 やったこと wpmの計測 + 音読 語彙力の強化 時間配分を意識 終わりに 学習前の状況 最後にTOEICを受けたのは3年ほど前でそのときは最後の文章まで辿り着けなかった。つまり191-200の大半は塗り絵。900点を目標とした受験に向けていく…

「アレクサ、XXXをつけて」-> 事前指定したURLのYouTube動画を再生

Overview 環境 ハードウェア ソフトウェア 全体像 使わなかった技術たち Chrome castや既存のAlexa Skill Alexa + Home Bridge 公式のwebOSライブラリ スクリプト→webOS上でのYouTube起動の実装 スクリプト1: Client ID取得 スクリプト2: YouTuvbeで動画を開…

AWS Solution Architect Professional に合格! (SAP-C02, 2023)

受験動機 結果 選んだ教材 AWS認定資格試験テキスト&問題集 AWS認定ソリューションアーキテクト - プロフェッショナル 改訂第2版 AWS WEB問題集で学習しよう Practice Exam AWS Certified Solutions Architect Professional AWSの基本・仕組み・重要用語が…

oapi-codegenを使ってクリーンで仕様ズレの起きないGo言語API開発

解決したい課題 oapi-codegenを使ったAPI開発のステップ (A) OpenAPI定義を作成 (B) oapi-codegen で (A) からGo言語APIのコード生成 (C) (B)に含まれるサーバのインターフェース(StrictServerInterface)を実装 (D) main関数から(C)をリクエストハンドラとし…

Webエンジニアが「低レイヤこわい」を治した技術書7冊

はじめに 低レイヤ全般の本 プログラムはなぜ動くのか 第3版 知っておきたいプログラミングの基礎知識 コンピュータシステムの理論と実装 ―モダンなコンピュータの作り方 トピックごとの知識を深める本 入門 モダンLinux ―オンプレミスからクラウドまで、幅…

Goアプリケーションでシンプルな設定値管理を実現する

はじめに 全体像 使い方 config.goの実装 おわりに はじめに あるGoアプリケーションでぼちぼち設定値が増えてきたのでリファクタリングしたのでメモ。以下が達成したかったこと。 設定値の一覧性 読み出し時のシンプルさ 環境変数での設定値インジェクショ…

納得できるアクションを見つけるための効果的なインシデント振り返り

はじめに なぜ振り返りをするのか 何を見つける必要があるか 振り返り方法の一例 おわりに はじめに チームでやっていたインシデントに対する振り返り方法がよかったのでメモ。体系的に振り返る方法を書くだけで具体的なインシデントについては触れない。自…

プラグインアーキテクチャ(マイクロカーネルアーキテクチャ)の考慮事項とSpring Bootによる実践

はじめに プラグインアーキテクチャを使う時に考えたこと Webシステムにおけるプラグインアーキテクチャの使い所 検討事項 プラグインアーキテクチャのSpring Bootによる実装例 使用例 設計 実装 おわりに はじめに "ソフトウェアアーキテクチャの基礎" (htt…

技術書を自費で購入して読む理由

はじめに 技術書を自費で買うのか?というようなコメントがあった。結論としては現状は自費で買って読んでいる。確かにそこそこコストがかかるのになぜなのか考えてみた。以下すべて、一般論ではなく自分の一意見。 なぜ読むようになったか 学生のころは技術…

ソフトウェアアーキテクトに必要なシステム設計知識を学んだ17冊

はじめに アーキテクチャ・デザイン全般 ソフトウェアアーキテクチャの基礎 Clean Architecture 達人に学ぶソフトウェアの構造と設計 Design It! ソフトウェアシステムアーキテクチャ構築の原理 データ指向アプリケーションデザイン マイクロサービス マイク…

GoReplayのDockerfileがAppleシリコン(M1) Macでうまく動かなかったので自分で書いた

経緯 GoReplayのリポジトリにあったDockerfileはIntel Macだとうまく動いたが、Appleシリコン(M1) Macではうまく動かなかった。 Dockerfile: https://github.com/buger/goreplay/blob/1.3.3/Dockerfile 実行時に以下のエラーが発生。 tunl0: SIOCETHTOOL(ETH…

GoReplayで検証環境へ本番環境のリクエストを復元する方法と懸念

やりたいこと GoReplayで実現できるか? データの変換、フィルタリング 本番環境への影響 感想 やりたいこと (1) 検証環境で本番環境へのリクエストを再現したい (2) トラフィックのミラーリングではなく、任意のタイミングで任意の流量で再現したい (3) 本…

対象データリストをファイルで受け取ってPostgreSQLのデータを更新する

やりたいこと どういう状況でそういうことが起こるか 今回用いるシンプルな例 できたもの つかうもの スクリプト/SQL 感想 参考 やりたいこと IDのリストを外部からもらい、自分達のサービスのDBにデータパッチ(データの更新 or 削除など)を行いたい。 この…

Spring Boot外部設定(application.yml)の保守性を上げる

Overview 保守性をあげるために設定ファイルに求めること Spring Bootの機能 基本 profile 外部ファイル読み込み 環境変数読み込み default値の設定 環境変数 vs profile 感想 参考 Overview spring bootの設定ファイルの保守性を上げる spring boot 2.7.0 …

Spring BootでREST API, MQ consumer, CLI, 定期実行タスクを実行

Overview REST API application 実行 MQ consumer (worker) application 実行 コマンドラインアプリケーション application 実行 定期実行アプリケーション application 実行 まとめ 追記 Overview Spring BootはWebアプリケーションを実行する以外にもいろ…

Mac Setup メモ (2022)

install command line mac app (productivity) mac app (development) Mac Setting VSCode Setting install command line asdf dotfile zsh ohmyzsh jump asdf dotfile mac app (productivity) alfred (luncher) vanilla (tool bar management) rectangle (w…

開発ツール for http (wiremock, REST Client plugin for VSCode)

Overview Environment wiremock 一番シンプルなmockの設定 docker-composeでの起動 REST Client plugin for VSCode インストール リクエスト Refference My Repository Overview wiremockのdocker-composeでの起動 REST Client plugin for VSCode Environmen…

Spring Bootの@Asyncで非同期処理(thread poolの設定 + 動作確認)

Overview Code 非同期処理を実行するThread 上記の非同期スレッドで実装したい処理 呼び出し側 実行結果 Conclusion Overview メインスレッドの処理に大きな影響を与えずにに何かの処理をしたいときに実装した(APIでレスポンスタイムに影響を与えずになにかD…

JSONから特定のキーを削除するスクリプト

Overview 同僚が大量のJSONテストデータを手作業で編集するのが辛いと言っていたときに書いた。 Usage yoshiki@yoshiki-mbp:python/script ‹main*›$ cat ./test_data/data_remove.json { "key": "value", "remove_target1": "value", "object": { "key": "va…

初転職時で入ってから気づいた大変だったこと (新卒4年目に転職、ソフトウェアエンジニア)

Overview 転職したときはそれなりにギャップがあって大変だったが、現状は楽しく働けているので、転職していろいろ辛いと思っている人の助けになればと思う。 Condition 前の会社 新卒で入社 大きいWeb企業のソフトウェア開発をする部署 バックエンドエンジ…

開発ツール for Kafka (docker-compose, kcat)

Overview docker-composeでの起動 CLI tool (kcat) Environment MacOS docker, docker-compose docker-composeでの起動 zookeeperも起動する必要があるようなのでdocker-composeで起動。 --- version: '3' services: zookeeper: image: confluentinc/cp-zook…

スーパーでの「来週なにつくる?」に答えを出すツールをReactで作った

なぜ作ったか 週1回の買い物時にできるだけ必要なものは買い揃えたい。 そのために何を作るか決める必要があるが、大体スーパーについてから考えてしまうのである程度自動化したい。 メイン機能 準備したリストの中からランダムな重複なしリストを取得するア…

Webバックエンドチームのドキュメント構造

Overview 長期的な開発、スケーラブルなチーム構築のためにドキュメンテーションは必須。 整理されていないと各メンバーがドキュメントを見つけられない、どこに作ればいいかわからないといった問題が発生するため、ドキュメント構造のポリシーが必要である…