2023
  • json parserつくった

    2023/11/30 04:19

    字句解析とかパーサーとかO’Reilly Japan - Go言語でつくるインタプリタでつくったけど、すっかり書き方忘れたのでJSONのパーサーを書いた。 実装の参考にした記事はこちら ⇢ RustでJSONパーサーをフルスクラッチで実装する #Rust - Qiita Goのjsonパッケージみたいに構造体にUnmarshalするところまでやるのはめんどくさいので、any型にmapとかで変換したデータを返すようにした。Lexerが文字列でなくio.Readerを受け取って逐次パース …

    続きを読む

  • 2023/11/07

    2023/11/07 01:54

    Google Forms APIでフォーム作るときにアイテム作成でindex指定してもcreate_item.location.index is invalid or was not providedってでるのなんでだろうと思ったら下記がみつかった。 go - Google Form API - Error when Create, Update Item - Stack Overflow LocationのIndexフィールドがomitemptyなので、0のときjsonにフィールド出力されない …

    続きを読む

  • 2023/11/06

    2023/11/06 04:07

    Googleフォーム GoogleフォームをAPI経由でつくれる。 概要 | Google Forms | Google for Developers APIを叩くときに必要な認証情報。 GCP metadata server から spreadsheet などの API 叩けるか - pokutuna ローカルのgcloudの認証情報を使うならスコープを指定する必要がある。 formsのAPIはOAuthで認証するときプラットフォーム側で認証する必要があるので、Google Forms API …

    続きを読む

  • 2023/10/14

    2023/10/14 19:37

    Workflow Identity Providerよくわからん Workflow Identity Providerを使ってGitHub ActionsからTerraformでデプロイかけようと思ったけど認証がうまくいかなかった。 ここを元にちゃんと設定できてるかをチェックしたらうまくいった。 Workload Identityを使ったGitHub ActionsとGoogle Cloudの連携方法 | Hakky Handbook 設定を間違えていたのは2点。 利用したいリポジトリに借用する …

    続きを読む

  • 2023/10/11

    2023/10/12 01:06

    ラインボット作ろうかなと思い、いろいろ使ってみる。 ko + Cloud Runやってみ koを使ってみる。 Goのビルドからイメージの作成、レジストリへのpushまで一貫してやってくれるすごいヤツ。 ko: Easy Go Containers ko を使用して Go アプリケーションを Cloud Run に迅速にデプロイ | Google Cloud 公式ブログ go install github.com/google/ko@latest Cloud Runをたてるので、sampleベース …

    続きを読む

  • 2023/10/08

    2023/10/08 14:13

    ScrapBoxをMarkdownに変換 ScrapBoxにそんなに記事ないけど移行めんどくさい。 sb2md - Scrapbox ページを Markdown に変換する CLI | 豆蔵デベロッパーサイトを使ってScrapBoxのページをMarkdownに変換してる。 ページのタイトル名があれば変換をできるので、Scrapbox REST APIの一覧 - Scrapbox研究会からAPIでタイトル一覧をとってきた。 ただし、APIでもってきたタイトルとcliにわたすパスで違う場合があるので …

    続きを読む

  • 2023/08/27

    2023/08/27 00:00

    読んだ記事 認可のアーキテクチャに関する考察(Authorization Academy IIを読んで) Oso - Authorization Academyをベースに書かれた記事。 データベースへのアクセスのために特定のIDとかで絞り込むのをハードコードと呼ぶらしい。 たしかにそれ以外のパターン(部署とかさらに集約した権限とか)あると謎の条件分岐が増えちゃうからわかりみがある。 アプリケーション実装してるときに認可のコントロールが漏れてるのがあれなので、データアクセスのrepositoryと …

    続きを読む

  • 2023/08/24

    2023/08/24 00:00

    ハッシュテーブルの実装やろうとしてる。 いろいろ調べてるときにtypes/typeutilパッケージをみつけた。 ChatGPT曰く types/typeutilはGoのgolang.org/x/toolsリポジトリ内にあるパッケージで、型情報のユーティリティ関数やデータ構造を提供しています。このパッケージは、Goのソースコードの静的解析を行う際に役立つツールやライブラリで使用されることが多いです。 types/typeutilパッケージの主なコンポーネントには以下のようなものがあります: …

    続きを読む

  • 2023/08/07

    2023/08/07 00:00

    WSLからcodeでVS Code開けなくなった問題についてWSLのIssueにあがってた。 WSL2 cannot start VS Code · Issue #10363 · microsoft/WSL その中でWSLの別のIssueに解決策書いてるでってあった。無事解決した。 WSL2 (Preview) cannot run .exe files: exec format error: wsl.exe · Issue #8952 · microsoft/WSL sudo sh -c …

    続きを読む

  • 2023/08/04

    2023/08/04 00:00

    実装した最終的なRingBuffer 徐々に高度になるリングバッファの話 - Software Transactional Memoを読んで実装した。 リングバッファの書き込みの位置と参照の位置の共有のインデクスの読み書きをマルチプロセスでおこなう場合、メモリの読み込み速度に影響が出る。 CPUキャッシュにはキャッシュラインの単位(キャッシュの情報を調べる方法 - teastat)でキャッシュします。 キャッシュラインごとにステートをもっており、書き換えが発生したキャッシュラインを別のプロセスか …

    続きを読む