Johnman.md

プログラミングのことや個人的なことを書きます。たぶん。

プログラミング

zennで技術記事を書いてみることにした

最近zennの記事を読むことが増えました。 スマホでChromeを開くと表示されるDiscoverのなかにちょこちょこzennが混ざっていて、気になったものを読む感じ。 読んでいるうちに「自分もちょっとzenn使ってみるか」という気持ちになってきたので、しばらくの間…

Helmfileを使ってHelm Chartにないリソースを作成・管理する

はじめに Helmを使っていると、Helm Chartには存在しないリソースを追加で作りたいということがあります。 直近あった例は、ArgoCDをHelmで導入したいが、Secretの管理にはExternal Secretを使いたいというケースです。HelmはChartで定義されているリソース…

skaffold v1.36.1までskaffold.yamlのstatusCheckフィールドが使えなかった

仕事でKubernetes上でアプリケーションを動かしていて、デプロイにskaffoldを使っています。 実際に自分が開発しているサービスについては下記のブログが詳しいです。 tech.gunosy.io そのskaffoldのバージョンを上げた際にStateful Setのステータスチェック…

GitHub CLIで外部リポジトリを指定すると向き先がgithub.comになる

概要 問題に遭遇した経緯 原因の解明 gh-bumpでの対応 所感

2021年10月の読書記録

今月から図書館に通い始めて、結構読めた気がする。 ちなみにこの感想は読書メーターに書いたものをコピペしてます。 bookmeter.com ポケモン・ストーリー〈上〉 ポケモン・ストーリー〈下〉 ふつうのLinuxプログラミング 第2版 DIE WITH ZERO 本を読む本 涼…

CKADに合格したので、対策したことをまとめます

2021年9月26日にCKADを受験して、無事合格しました。 試験内容の改訂前に合格できて助かった〜。受験料を出してくれた弊社に感謝です。 CKAD結果こない〜って言ってたらきた!無事合格してました pic.twitter.com/nob9hyKJEB— じょん (@johnmanjiro13) 2021…

リポジトリのtagをbumpするgh extensionを作った

先日GitHub CLI 2.0が公開され、拡張機能を公開することができるようになりました。 github.blog 最近自分でCLIを書いていてタグを手で打つのが面倒だなぁと思っていたので、いい機会だと思い簡単にリリースをbumpできるgh extensionを作成しました。 リポジ…

outputsだけを追加してtarraform planするとtfnotifyがパースエラーになる

Terraform を触っていて若干面倒になった部分があったのでメモ。 現状としては、「outputsだけを追加してterraform planするとtfnotifyがパースエラーで落ちる」というものです。 tfnotifyとは tfnotifyのexit code判定 outputsだけを追加したときの出力 対…

react-dropzoneで画像サイズのバリデーションを行う

仕事でReactを書いていて、react-dropzoneを使う機会がありました。 react-dropzone.js.org その中で、画像サイズ(縦x横)のバリデーションを行う際に手間取ったので、やり方を残しておこうと思います。 基本的な使い方 react-dropzoneでのバリデーション v…

CircleCIでMySQLが起動できなくなる問題のまとめ

起きたこと 原因 暫定対応 恒久対応 まとめ 起きたこと 2021/03/18の午前中から、circleci/mysqlイメージを使っていたジョブが動かなくなるという問題が起きていました。 出力されるエラーは下記。 2021-03-18 01:32:50+00:00 [Note] [Entrypoint]: Entrypoi…

UUIDの大文字と小文字を簡単に出し分けられるシェルスクリプト

概要 uuidgenじゃだめなのか uuid4.sh まとめ 概要 仕事でよくUUIDを生成して使うことが多いので、シュッとUUIDを生成できて大文字小文字を簡単に出し分けられるシェルスクリプトが欲しかったので作りました。 コードはGitHubにも置いてあります。 github.co…

【Go】stringがJSON形式かどうかを判定する

stringを受け取った際、そのstringがJSONの形式を持っているかを判定したい場合に使える。 func isJSONString(s string) bool { var js json.RawMessage err := json.Unmarshal([]byte(s), &js) return err == nil } やっていることは簡単で、json.RawMessag…

【Go】GitHub Actionsでテストやビルドにキャッシュを効かせる

概要 キャッシュを効かせる まとめ 概要 最近、身内で使うDiscord botを作っています。 そのCIにGitHub Actionsを使っているんですが、CIが走るたびに結構時間がかかるなぁという印象を持っていました(だいたい1分30秒くらい)。 modulesやビルドにキャッシ…

Goa v3でmultipart/form-dataを扱うために必要なこと

これは Go 2 Advent Calendar 2020 の16日目の記事です。 はじめに Goaでのmultipart/form-dataを使ったファイルアップロード v1 v3 multipart.go の実装 おわりに はじめに 先日、Goaを使って実装している API で Goa v1 から v3 へバージョンアップを行な…

ファイルの変更を監視してコマンドを実行するスクリプト

openssl sha256 コマンドでファイルのハッシュ値を生成し、それが変わっていたら引数で指定したコマンドを実行するスクリプト。 何気に初めて自分で使うためにシェルスクリプトを書きました。 スクリプト #!/bin/bash function __usage() { cat <<EOS usage: $(basename $0) <target filename> <command> EOS } __c</command></eos>…

[Go] handlerに引数を追加する

先日、GoでAPIを書いていた時にServeHTTP関数に引数を追加したい場合があったのでその対処法。 GoのHandlerは次のように定義されています。 type Handler interface { ServeHTTP(ResponseWriter, *Request) } このinterfaceを満たした関数を実装することでha…

echo用にzerologのラッパーzeroechoをつくった

最近仕事でechoとzerologを使う機会があったので、勉強がてらにwrapperを作ってみました。 ぶっちゃけ使うことはないと思います。 github.com 実装 パッケージ公開 まとめ 実装 echo.Loggerのinterfaceは次のように定義されてます。 Logger interface { Outp…

みんなのGo言語 改訂2版がすごくよかった

先日、みんなのGo言語 改訂2版を読み終えました。 【改訂2版 みんなのGo言語/松木 雅幸他】実践的な内容で勉強になる → https://t.co/Iqg4D124qr #bookmeter— じょん (@johnmanjiro13) 2020年7月29日 実は1版の方も一度購入していたんですよね。ただその時は…

Nuxt.jsとFirebaseでWebページを作成・公開した

個人ページ(johnmanjiro)をNuxt.jsとVuetifyで作り直してみました。 以前はHTMLベタ書きでとても見苦しいページだったんですが、少しは見やすくなったかなと思います。 (修正前のスクショを撮ってませんでした…) なぜ作り直したのか 単純に、HTMLベタ書…

embulkを使ってS3からGCSにファイルを送る

はじめに embulk 今回使ったプラグイン 設定ファイル まとめ はじめに お久しぶりです。 最近AWS S3からGCP Google Cloud Storageにファイルを送信しなければいけないことがあったので、その備忘録的に書こうと思います。 検索するとgsutilコマンドとかStora…

VPS借りた時にやるべき最低限の初期設定

個人ページの証明書が切れていたんだけど、過去の自分が設定した諸々がわからなくなっててうまく更新できなかった。 なので改めてVPS立ち上げ直して、その設定も諸々残しとこうと思います。この記事はその中の初期設定編。 環境 一般ユーザの作成とrootでの…

【メモ】AWSアカウントを作ったからユーザ周りの初期設定

johnmanji.ro の設定とかもろもろ忘れちゃって、新しくインスタンス立ち上げ直すかと思ってたら ConoHa が障害起こしてた。 これじゃあ何にもできないし、管理大変だから AWS S3 で静的サイトを公開することにした。 今回はそのユーザー管理編です。 けどメ…

macOSをMojaveにしたらC言語をコンパイルできなくなった

題名の通り。 仕事でも Mojave を使ってるし、そろそろ自宅の Mac Book も Mojave にしていいかと思って先日バージョンアップした。 何かが壊れるのは覚悟していたけど、結論からいうと Homebrew や gcc が動かなくなった。 ※今判明しているのがこれらで、多…

ふつうのLinuxプログラミング【第1部】で残しておきたいとこ

低レイヤーのことをちょっと学ぶ機運(低レイヤーの定義はおいといて)が高まったので、会社の夏休みを利用して「ふつうのLinuxプログラミング」を読んでみています。 最初はせっかく10連休あるんだからファイアーエムブレム 風花雪月を無限にプレイできるじ…

Learn Kubernetes Basics 終えた【Update Your App】

Kubernetes のチュートリアル Learn Kubernetes Basics を一通りやったので、軽くメモした内容を書いておきます。 前回の記事はこれ。 johnmanjiro13.hatenablog.com Update Your App Updating an application Update Your App ここでは次のことを学ぶ。 kub…

Learn Kubernetes Basics 終えた【Scale Your App】

Kubernetes のチュートリアル Learn Kubernetes Basics を一通りやったので、軽くメモした内容を書いておきます。 前回の記事はこれ。 johnmanjiro13.hatenablog.com Scale Your App Scaling an application Scaling overflow Scale Your App ここでは次のこ…

Learn Kubernetes Basics 終えた【Expose Your App Publicly】

Kubernetes のチュートリアル Learn Kubernetes Basics を一通りやったので、軽くメモした内容を書いておきます。 前回の記事はこれ。 johnmanjiro13.hatenablog.com Expose Your App Publicly Overview of Kubernetes Services Services and Labels Expose …

Learn Kubernetes Basics 終えた【Explore Your App】

Kubernetes のチュートリアル Learn Kubernetes Basics を一通りやったので、軽くメモした内容を書いておきます。 前回の記事はこれ。 johnmanjiro13.hatenablog.com Explore Your App Kubernetes Pods Kubernetes Nodes Troubleshooting with kubectl Explo…

Learn Kubernetes Basics 終えた【Deploy an App】

Kubernetes のチュートリアル Learn Kubernetes Basics を一通りやったので、軽くメモした内容を書いておきます。 前回の記事はこれ。 johnmanjiro13.hatenablog.com Deploy an App Deployment デプロイの流れ 各コマンド Deploy an App ここでは次のことを…

Learn Kubernetes Basics 終えた【Creating a Cluster】

Kubernetes のチュートリアル Learn Kubernetes Basics を一通りやったので、軽くメモした内容を書いておきます。 Creating a Cluster Kubernetes Cluster Minikube kubectl Creating a Cluster ここでは次のことを学ぶ。 Kubernetes Cluster とは Minikube …