GormでCloud SQLに接続する

Cloud RunにGoで作成したAPIをデプロイしようと思ったところ、うまくいかなかった。 調査してみたところ、データーベースに接続できずに落ちているっぽいとのこと。 ちょっとなんでかわからないけど(今思い返せば、Docker起動していた? という不安がある)、ローカルのDBに接続できないので、いずれ接続する予定だったので、Cloud SQLに接続し、それでCloud Runにデプロイしてみようという風に思い立った。 Cloud SQLに登録する Cloud Run から Cloud SQL for MySQL に接続するがある。 公式があるので、こちらを参考にする。 なお、今回サーバーはローカル(net/http)で起動することにする。 インスタンスを作成する Google Cloud コンソールで Cloud SQL の [インスタンス] (https://console.cloud.google.com/sql?hl=ja&_ga=2.145632700.968950133.1716041931-758618644.1700836939)ページに移動する。 インスタンスを作成 をクリック。 [MySQL を選択] をクリック。 インスタンスを作成するには、まず Compute Engine API を有効にする必要があります。 という警告が出るので、APIを有効にする。 インスタンスID、パスワード、を登録。 My SQLのバージョンを8にし、Cloud SQL のエディションはEnterpriseにする。 プリセットをいったん開発環境にして、リレージョンを東京、ゾーンをシングルに設定する。 構成オプションを開き、とりあえず一番小さい1 vCPU、3.75 GBを選択してみる。 で、インスタンスを作成する。 構成オプションはとりあえず、最小で不満があればあげていく方法で問題ないらしい。 DBの作成 インスタンスのデータベースにいき、データーベースの作成をクリックする。 今回インスタンスの作成をし、データーベースの作成をしていなかったので、エラーが出続け、悩まされた。 接続を試みる まず接続をしてみたところ、 $ go run main.go 2024/05/26 00:41:05 cloudsqlconn.NewDialer: failed to create default credentials: google: could not find default credentials....

投稿日 · 2024-05-31 · 更新日 · 2024-07-07 · 2 分 · nove-b

ZennのスクラップのようにGithub Issueに作業のログとかを残すようにした

作業中に新しい知識とか詰まった箇所、エラーの記録を取りたいと思うことがある。 今まではブログにずらずら書いていたけれど、結果、まとまりのない文章ができあがり、何にも活用することができないという状況が生まれていた。 ZennのScrapsを活用する? そこでZennを活用することを考えメリットデメリットを考えてみた。 メリット 公開することができるので、自身のブランディングに活用できる コメント機能で他人の知見をシェアしてもらうことができる 結果的にほかの人のScrapsを見るようになり知見が広まる 他人の助けになることもある デメリット 公開されるので、ソースコードにぼかしを入れる必要がある ScrapsはGitで管理ができない こうやって見るとメリットのほうが多いけど、デメリットが許容できなかった。 ただこれが許容できないとなると、コンテンツの公開がされるサービスは使用できない。 GithubのIssue💡 そこで思いついたのがGithubのIssueだった。 そもそもScrapsもIssueを参考にしているだろうし、機能的には問題ない。 しかもこのブログもGithubで管理されており、同リポジトリ内に作成すれば検索も強い。 そういうことでGithubで管理することにした。 プライベートリポジトリに 公開はしたくなかったので、リポジトリをプライベートに変更した。 そのためGithub Pagesが使えなくなったので、ホスティング先をnetlifyに変更した。 移行はHost on Netlifyの通りやれば難なく完了できる。 https://blog.nove-b.dev/ URLが少しダサくなったけど、カスタムドメインを適用するほどじゃないかなといった感じなので、このままいくことにした。 これで少しでもレベルアップできるといい。 ☆カスタムドメインに対応した Cloudflare Registrarでドメインを登録し、Netlifyのサーバーにサブドメインを当てる

投稿日 · 2024-05-30 · 更新日 · 2024-06-17 · 1 分 · nove-b

Goで作成したローカルサーバーにReact NativeからアクセスしようとしたらTypeError: Network request failedになった

API作成が一段落した Goの勉強でAPIを作成してきたが、やっと一段落した。 そこでアプリ側から叩こうとした結果、エラーが出たので原因を理由を調査してみた。 Goで立ち上げたサーバ http://localhost:8081/api/v1/endpoint のローカルIPアドレス http://172.19.176.1:8081/api/v1/endpoint にReact Nativeで作成したアプリからアクセスしてみる。 ネットワークリクエストが失敗しました 結果、 TypeError: Network request failed というエラーが出力された。 ファイアーウォールが関係している? 【react-native】シュミレータでAPIアクセスを行う際にnetwork errorの記事を参照するに、CORSかしらって思ったけど、アプリでCORSはちょっと違う気がする。 アプリにドメイン存在しないので、どのドメインを許可すればいいのっていうことになる。 で、色々調査していると、ファイアーウォールが関係している気がしてきた。 Windows向けプログラムに搭載されているファイアウォール(パーソナルファイアウォール)機能は、ネットワークプリンターや他のコンピューターとの通信を遮断する場合があります。その場合は、該当する通信を許可するルールを作成することで、通信ができるようになります。 https://eset-support.canon-its.jp/faq/show/235?site_domain=default ポートを開放すればいける感じかもしれないけど、せっかくだしサーバーにあげてみることにした。 どうせいずれあげる必要があるしね。

投稿日 · 2024-05-04 · 更新日 · 2024-07-07 · 1 分 · nove-b

APIのメソッドPUTとPATCHは何が違うのか調べてみた

PUTとPATCHの違いをあまり気にしてこなかった 基本的にフロントエンドなので、仕様書に書かれているメソッドでAPIと通信してきた。 ただ今回、自身が作る側に回り、PUTとPATCHの違いがいまいちピンとこなかったので、調べてみた。 結論 PUTはリソースの完全な置き換えで、PATCHはリソースの一部分のみを更新する場合とのこと。 例えば、 { "name": "John Doe", "age": 30, "email": "john@example.com" } というデータがあり、31歳に変更する場合を考えてみる。 PUTの場合 PUT /users/123 HTTP/1.1 Host: example.com Content-Type: application/json { "name": "John Doe", "age": 31, "email": "john@example.com" } といった感じに変更した年齢以外もまるっと送る必要がある。 PATCHの場合 対してPATCHの場合は、 PATCH /users/123 HTTP/1.1 Host: example.com Content-Type: application/json { "age": 31 } となる。 どっちを使うべきか まあ、この感じだと一部だけを更新したい場合はPATCHを使用するべきなんだと思うけど、その場合はフォームの一部だけが変更されたという監視が必要になるので、それなりの工数がかかる。そのためPUTでいいかなといった結論になりました。

投稿日 · 2024-05-01 · 更新日 · 2024-07-07 · 1 分 · nove-b

2024年4月の月報

4月に読んだ本 1984 (ジョージ・オーウェル) 1984年、世界は〈オセアニア〉〈ユーラシア〉〈イースタシア〉という3つの国に分割統治されていた。オセアニアは、ビッグ・ブラザー率いる一党独裁制。市中に「ビッグ・ブラザーは見ている」と書かれたポスターが張られ、国民はテレスクリーンと呼ばれる装置で24時間監視されていた。党員のウィンストン・スミスは、この絶対的統治に疑念を抱き、体制の転覆をもくろむ〈ブラザー連合〉に興味を持ちはじめていた。一方、美しい党員ジュリアと親密になり、隠れ家でひそかに逢瀬を重ねるようになる。つかの間、自由と生きる喜びを噛みしめるふたり。しかし、そこには、冷酷で絶望的な罠がしかけられていたのだった――。 1984 やっと読み終えた。 最後まで読んでもなんとなく読んだことあるなあ、くらいの感覚だった。 つまり当時もそこまで思うところなかったんだろうなあ。 当時としては画期的な設定だったのかもしれないけれど、今はよくあるだろうし、あまりにも理屈っぽい。 僕の好きな人が、よく眠れますように (角川文庫) 僕が通う理科系大学のゼミに、北海道から院生の女の子が入ってきた。徐々に距離の近づく僕らには、しかし決して恋が許されない理由があった……『100回泣くこと』を超えた、あまりにせつない恋の物語。 僕の好きな人が、よく眠れますように (角川文庫) 再読、忘れちゃいけないんだけど、これ不倫のおはなし。 小市民シリーズ 春期限定いちごタルト事件 小市民シリーズ (創元推理文庫) 夏期限定トロピカルパフェ事件 小市民シリーズ (創元推理文庫) 秋期限定栗きんとん事件 上 小市民シリーズ (創元推理文庫) どうやら冬季限定(冬期限定ボンボンショコラ事件 〈小市民〉シリーズ (創元推理文庫))が出るらしいということで、一気に読み返し中。 調べると番外編(巴里マカロンの謎 〈小市民〉シリーズ (創元推理文庫))も出ていたらしい。 久しぶりに読むけど、やっぱり面白い。 ページをめくる手が止まらないので、どんどん口座からお金が引き落とされる。 プライベートとか仕事とか 土日は基本的に公園に 土日は基本的に外に行かないともたない。 子どもたちの無尽蔵の体力と戦い抜くには家はあまりにも狭すぎる。 ということで土日は決まって公園に行くのだが、人が多いと「抱っこ抱っこ」でこちらの体力が主に削られる。 まあ、普段座ってばかりだから、歩くことは良いことなんだけど、他の子がぐんぐん歩いているのを見ると、少し羨ましい。 とはいえ、いずれ抱っこすらさせてくれなくなるのだろうから、文句を言わずに抱っこしようと思う。 たぶんきっと、子どもが親にくっついてくれる時期はあまりにも短い。 個人開発 やっとバックエンドの開発が終了した。 いや、アプリ側と並走するので、終了したというより一段落したといったぐあい。 現にアプリ側から叩き、CORSエラーでつまった。 CORSってブラウザ間の問題じゃないの? よくわからいけどexpoで実行しているからかしら。 そういったことを調べて、まとめて、理解して進みたいんだけど、それ以上に早く完成させたい。 あまりにも時間がない。 でもきっとしっかり調べてまとめた方が将来的にはためになるんだろう。 木こりのジレンマ的な? 調べてアウトプットしよう、5月の目標は5記事くらいは書きたい。 ちなみに4月は1記事、うーん。記事書くことがすべてじゃないけど、もう少し書いていきたい。

投稿日 · 2024-04-30 · 更新日 · 2024-07-07 · 1 分 · nove-b