Diary

Diary

日々学んだことをアウトプットする場として初めてみました

2023-01-01から1年間の記事一覧

Syntax highlighting has been temporarily turned off (Android Studio)

Android Studio から build.gradle (app レベル) の依存関係を更新した時、Android Studio から『Syntax highlighting has been temporarily turned off』と言われ、補完等が一切効かなくなりました。 今回はその解消方法についてメモしておきます。 環境 An…

シェルのパイプ連結をシステムコールから理解する

シェルの上でよく遊ぶ方であれば、パイプ | は非常にお世話になっているかと思います。 今回はそんなパイプについて、どのようなシステムコールが呼ばれているかを追うことで理解を深めてみました。 [目次] - まとめ - 環境 - pipe status の復習 - システム…

【自動化の敵】対話型 CLI を expect で突破する

突然ですがみなさん、自動化しているでしょうか? 自動化するときに悩むのが、対話型 CLI に代表されるインタラクティブなツールの存在だと思います。 個人的には、自動化もできないし打ち間違いも発生するしで、対話型 CLI はエンジニアの使うツールとして…

Go で HTTP 呼び出し時に Context のキャンセルが TCP コネクションに伝播されるまで

Go

go 1.7 で追加された Context には『key, value 形式による情報の伝搬』と『Goroutine の適切なキャンセル』の主に2つの役割があります。 後者の『Goroutine の適切なキャンセル』が便利で、公式ブログでも並行処理パターンとして紹介されているように、各ラ…

M1 mac の VSCode のターミナルで go: no such tool "compile"

VSCode の terminal で go install しようとしたところ、no such tool と言われました。 $ go install github.com/bufbuild/connect-go/cmd/protoc-gen-connect-go@latest go: no such tool "compile" go: no such tool "compile" go: no such tool "compile…

Postman でパラメーターは URL エンコードされないらしい

結論としてはタイトルの通り『Postman でパラメーターは URL エンコードされない』っていうことなんですが、これに気づかず時間を無駄にしてしまったため共有させてください。 Postman のバージョン m1 mac で以下のバージョンのデスクトップアプリを使って…

Jetpack Compose でカスタム shape を作る

今回は、よくあるチャットメッセージのような吹き出しを作成したので、その方法を簡単に紹介します。 より一般には Text などの compose 関数を、名前のついてない自由な形に変形させることが目標です。 環境 compose_ui_version = '1.4.0-beta01' 作成方法 …

minio を使ってローカル実行時に s3 を代替する

minio の詳しい説明は公式に頼りたいところですが、minio とは s3 と互換性のある object storage です(object storage とは)。 今回はこの『s3 と互換性のある』って部分を少し深ぼって、golang の sdk から s3 にアクセスする既存コードを使い、ローカル…

GitHub の GraphQL を android から叩く(Apollo client)

前回は GraphQL を Postman から叩いてみました。 koko206.hatenablog.com 今回はその続編として、Android から GitHub の GraphQL API を叩いてみようと思います。 (該当リポジトリ) Apollo とは Apollo は GraphQL API 用のライブラリで、React, Kotlin,…

GraphQL(GitHub API )の叩き方

GraphQL とは 現在主流の REST 設計では、アプリが複雑になるにつれ複数のエンドポイントが用意され、場合によっては1画面表示するのに複数の API を叩く必要があったりします。 これを解決するため、GraphQL はクライアントが必要なデータのみを単一のリク…

Jetpack Compose の Webview でリダイレクトされなかった

OAuth の連携画面を Jetpack Compose の Webview で表示していて、ログイン後にリダイレクトされないことがありました。 次のように javascript を有効にしてあげることで解決しました。 (リダイレクトに javascript が使われることが多々あるようです。) …

Apache2 で特定のパスへの reverse proxy

いつもやり方がわからなくなるので、備忘録として残しておきます。 やりたいこと 同じローカルマシンに立てたサーバーに、特定のパスを reverse proxy したい。 例: <base_url>/status にアクセスが来たとき、localhost:3000 に立てたサーバーに reverse proxy する。 </base_url>…

Logicool の進む・戻るボタンが Mac の VSCode で使えなかった

Logicool のマウスを Logi Options のアプリとともに使っていたのですが、VSCode での戻る・進むボタンが機能しない問題が発生しました。 windows では機能するのにな〜とか思って VSCode の設定とかいろいろ探してたのですが、最終的には GitHub のこちらの…

Jetpack Compose: coil の AsyncImage が正常に clip されない?

coil.compose.AsyncImage を使っている時に、正常に形が clip されない?と勘違いしてしまったことがありました。 (Image も同様でした。) 結論からいうと、AsyncImage, Image などの clip したい要素を、そのさらに外から fullScreen などの Column 等で…

ついに Compose Multiplatform に iOS がきたぞ!

Compose for iOS は KotlinConf23 で発表されました(2023/04/19 現在 α 版)。 KMM において UI コードを共通化する大本命でもあるため注目度は高かったと思いますが、今回ついに公式から説明があったため触ってみました!。 [目次] 触ってみる 前提条件 実…

CoreSimulator.framework was changed while the process was running.

kmm のセットアップ時、iOS をビルドしようとしたらタイトルのエラーが発生しました。 CoreSimulator.framework was changed while the process was running. This is not a supported configuration and can occur if Xcode.app was updated while the proc…

kdoctor: Xcode requires to perform the First Launch tasks

kmm のセットアップ時、kdoctor を叩いたらタイトルのエラーが発生しました。 ❯ kdoctor Environment diagnose (to see all details, use -v option): ─╯ [✓] Operation System [✓] Java [✓] Android Studio [✖] Xcode ✖ Xcode requires to perform the Firs…

ubuntu で Package graphviz is not available, but is referred to by another package.

apt update しても解決しない場合、デフォルトのリポジトリに graphviz が存在しないことが考えられます。 ubuntu のリポジトリとしては main, restricted, universe, multiverse がありますが、ここではなんとなく universe を追加してみます。 universe は…

Makefile のすすめ

Go

Go は Makefile との親和性が高いみたく、ちょっと使ってみたので今回はその個人的な紹介です。 どの Go の本にも書いてあるので、gopher なら何かしらみんな使ってるものと思ってます。 目次 Makefile って何よ by Chat-GPT by 詳細 Go 言語 web アプリケー…

Makefile で if 文を使って、変数の有無で処理を切り替える

変数の有無で処理を変える 以下のように設定します。 if-test: ## ifeq ($(name),) ## 引数がない時 @echo Hello 名無さん else ## 引数がある時 @echo Hello $(name) endif 引数がある時とない時で処理が変わります。 # 引数がない時 $ make if-test Hello …

docker-compose で立てた psql の結果をローカルで受け取る

以下で紹介していることは基本は psql のオプションになります。 docker compose で立ち上げたコンテナに対して内部の DB に入るには以下のようにできます。 # postgresql: コンテナ名 # root: ユーザー名 # postgresql: 接続したい DB 名 docker compose ex…

ChatGPT で API サーバー(Golang, gin)をさくっと作る

最近は ChatGPT と一番会話をしてる気がします。。。 今回はそんな GhatGPT さんに Go の API サーバーの記述をお願いしたら、思ったより面白いことになったのでその紹介です。 (生成いただいた内容は github においてあります。) TOC やりとり API サーバ…

datadog で apache のログを収集してる際の /server-status を無視する

個人で勉強のために datadog を入れてみてラズパイで動かしているのですが、CPU 等を監視するために datadog-agent が 15 秒おきに /server-status?auto へアクセスを行なっているようです。 気づい時には 3 万 4000 ほど /server-status?auto へのログが da…

Go 言語で CLI ツールを爆速で作る方法

TOC なぜ Go 言語で CLI ツールを作るのか 作り方 サブコマンドを取らない場合 サブコマンドを取る場合 cobra の使用例 urfave/cli 実際にやってみる setup 初期化 サブコマンドの追加 注意点 なぜ Go 言語で CLI ツールを作るのか 以下の 4 点がぱっと思い…

jq: 階層化された json で UNIX タイムスタンプ を ISO 8601 形式の時間に変換する

TOC 目標 結論 解説 多階層を扱う jq で時刻を扱う 文字列操作 メモ 疑問 おまけ 目標 ↓ の 1 つ目の json を 2 つ目の json のように変換することです。 .*_timestamp の key を持った部分をターゲットとし、key から _timestamp の suffix を削除、value …

pkg.go.dev にある godoc を強制的に更新する方法

Go

前提 一度は情報を読み込めている tag プッシュしたものを反映させたい 方法 push したタグに対応する ↓ のリンクを開く https://pkg.go.dev/github.com/{user_name}/{repository_name}@{tag_version} {} には以下の情報を入れてください。 user_name: 個人…

GitHub Actions でコミットできない時見直したい設定

はじめに これらは 2023/1/16 現在の情報であり、GitHub の仕様変更によって将来変更を受ける可能性があります。 どんなエラーが出るか 権限不足でコミット等できなかった場合は、以下のようなエラーコードが表示されます(例)。 Invalid status code など…