ブックマーク / zenn.dev/ngicks (13)

  • zellij floating windowをpinentry-cursesのフロントエンドにする

    zellij floating windowをpinentry-cursesフロントエンドにする 下記記事のzellij版です 下の画像のようになります。 But Why? で説明したとおりですが、要するに いろんな環境から開発環境に入れるようにするためにzellijを使う。 tailscaleなどのVPNソリューションを使って仮想的LAN内にお互いがある状態にし、端末から開発環境にsshします。 zellijはterminal multiplexer/session managerであり、作成したterminal sessionに複数のクライアントからログインできるようにします。 開発すればgit commitもします。commitには基的に鍵を使ってsignを行います。 signする際にpinentryを利用して、鍵自体にかかっているパスワード(passphrase)を入力します。

    zellij floating windowをpinentry-cursesのフロントエンドにする
    yug1224
    yug1224 2025/09/13
  • Goのプラクティスまとめ: error handling

    Goのプラクティスまとめ: error handling 筆者がGoを使い始めた時に分からなくて困ったこととか最初から知りたかったようなことを色々まとめる一連の記事です。 以前書いた記事のrevisited版です。話の粒度を細かくしてあとから記事を差し込みやすくします。 他の記事へのリンク集 (まだ)今はこうやる集 プロジェクトを始めるまで dockerによるビルド error handling: ここ (まだ)fileとio (まだ)jsonやxmlを読み書きする (まだ)cli (まだ)environment variable (まだ)concurrent Go (まだ)context.Context: long running taskとcancellation (まだ)http client / server (まだ)structured logging (まだ)test (まだ)

    Goのプラクティスまとめ: error handling
    yug1224
    yug1224 2025/02/01
  • Go1.24からjson:",omitzero"でなんでもomit可能に

    Go1.24からjson:",omitzero"なんでもomit可能になる 以下がGo1.24のDraft Release Notesです。現時点(2025-01-18)ではDraftですがリリースされるとURLはそのままでDraftの文言が消されます。 上記の通り、encoding/jsonに変更が入ります。 When marshaling, a struct field with the new omitzero option in the struct field tag will be omitted if its value is zero. If the field type has an IsZero() bool method, that will be used to determine whether the value is zero. Otherwise, the

    Go1.24からjson:",omitzero"でなんでもomit可能に
    yug1224
    yug1224 2025/01/20
  • [Go]続・なるだけすべてをiteratorにする

    続・なるだけすべてをiteratorにする 前回の記事:[Go]なるだけすべてをiteratorにするを書いた後にもいろいろ考えたので続き的な記事です。 実質的にv2であり、基的に前回の記事のスーパーセットです。 前回から引き続きソースコードはすべて以下に上がります。 前回から引き続き、この記事ではなるだけiteratorとしてものを利用できるように考えてみたり実装してみたりします。 各種データコンテナやシーケンスデータを返すものをiteratorになるように包んだり、アダプタツールを整えてiteratorでいろんな処理ができるようにします。 なるだけiteratorにする都合上、記事上で言及しておいて「実際使うことは少ないでしょう」というようなコメントを添えているものもあります。 この記事ではGo 1.23.2を対象バージョンとします。環境はlinux/amd64ですが、特にOSやar

    [Go]続・なるだけすべてをiteratorにする
    yug1224
    yug1224 2024/10/04
  • Goのos.CopyFSのために複数のfsの内容を混ぜ込むことができるFsを作る

    Goのos.CopyFSのために「複数のfsの内容の配置を変えたりしながら混ぜ込む」ことができるFsを作る こんにちは。 先日Go1.23.0がリリースされました。このリリースにはos.CopyFSなどが含まれ、Go1.22で追加された(*tar.Writer).AddFS, (*zip.Writer).AddFSなどと合わせて、ますますfs.FSが利用しやすくなりました。 便利になってうれしい反面、以下のようなユースケースで単なるAddFSなどではうまくいかず、結局手動でファイルをやりくりすることになります。 元のFSと追加先でファイルの配置のレイアウトを変えたい 例えばfoo/bar, baz/quxを統合してanywhereelse/bar, anywhereelse/quxにしたいとか 追加先には元FSのファイルを圧縮したり、展開したり、分割したり、結合したりして置きたい インメモ

    Goのos.CopyFSのために複数のfsの内容を混ぜ込むことができるFsを作る
    yug1224
    yug1224 2024/08/28
  • Goのcode generatorの作り方: 諸注意とtext/templateの使い方

    Goのcode generatorの作り方についてまとめる Goのcode generationについてまとめようと思います。 この記事では Rationale: なぜGoでcode generationが必要なのか code generatorを実装する際の諸注意 io.Writerに書き出すシンプルな方法 text/templateを使う方法 text/templateのcode generationにかかわりそうな機能性について説明します。 実際にtext/templateを使ってcode generatorを実装します。 について述べ、 後続の Goのcode generatorの作り方: jenniferの使い方でgithub.com/dave/jenniferを用いる方法 Goのcode generatorの作り方: ast(dst)を解析して書き換えるでastutilおよびg

    Goのcode generatorの作り方: 諸注意とtext/templateの使い方
    yug1224
    yug1224 2024/08/20
  • Goのcode generatorの作り方: jenniferの使い方

    Goのcode generatorの作り方についてまとめる Goのcode generationについてまとめようと思います。 前段の記事: Goのcode generatorの作り方: 諸注意とtext/templateの使い方で Rationale: なぜGoでcode generationが必要なのか code generatorを実装する際の注意点など io.Writerに書き出すシンプルな方法 text/templateを使う方法 text/templateのcode generationにかかわりそうな機能性。 実際にtext/templateを使ったcode generatorのexample。 について述べました。 この記事では github.com/dave/jenniferを用いたcode generatorの実装 について述べます さらに後続の記事で Goのcode

    Goのcode generatorの作り方: jenniferの使い方
    yug1224
    yug1224 2024/08/20
  • Goのcode generatorの作り方: ast(dst)を解析して書き換える

    Goのcode generatorの作り方についてまとめる Goのcode generationについてまとめようと思います。 前段の記事の Goのcode generatorの作り方: 諸注意とtext/templateの使い方で Rationale: なぜGoでcode generationが必要なのか code generatorを実装する際の注意点など io.Writerに書き出すシンプルな方法 text/templateを使う方法 text/templateのcode generationにかかわりそうな機能性。 実際にtext/templateを使ったcode generatorのexample。 Goのcode generatorの作り方: jenniferの使い方で github.com/dave/jenniferの各機能 text/templateで実装したcode ge

    Goのcode generatorの作り方: ast(dst)を解析して書き換える
    yug1224
    yug1224 2024/08/20
  • GoのJSONのT | null | undefinedは[]Option[T]で表現できる

    EDIT: 2024/12/04 Go1.24からomitzeroがencoding/jsonに追加される。 それに伴って記事に述べられているnon-sliceバージョンのund.Undのほうが推奨しやすくなったりいろいろ事情が変わる。 GoのT | null | undefinedは[]Option[T]でよかった github.com/oapi-codegen/nullableがmap[bool]Tをベースにencoding/jsonにオミットされることが可能なT | null | undefinedな型を定義していた (以前の記事時点では全然思いついてなかった) type Option[T any] struct{valid bool; v T}を定義してtype undefinedable []Option[T]としたほうがパフォーマンスが出るんじゃないかと思って試した。 ほんのち

    GoのJSONのT | null | undefinedは[]Option[T]で表現できる
    yug1224
    yug1224 2024/07/10
  • Goで開発して3年のプラクティスまとめ(4/4): HTTP Server/logger編

    Goで開発して3年のプラクティスまとめ(4/4): HTTP Server/logger編 yet another入門記事です。 part1 プロジェクトを始めるまで編 part2 cliアプリをつくれるところまで編 part3 concurrent GO編 part4 HTTP Server/logger編: これ part5以降・・・未定(unlikely) ご質問やご指摘がございましたらこの記事のコメントでお願いします。 (ほかの媒体やリンク先に書かれた場合、筆者は気付きません) Overview Goはhttp serverを実装できる強力なライブラリであるnet/httpを備えています。 httpで通信を行うソフトウェアを作る機会は多いというか、ほとんどのアプリが何かしらの通信を行うと思います。 net/httpのClient / Serverの書き方を紹介します client

    Goで開発して3年のプラクティスまとめ(4/4): HTTP Server/logger編
    yug1224
    yug1224 2024/07/02
  • Goで開発して3年のプラクティスまとめ(3/4): concurrent GO編

    Goで開発して3年のプラクティスまとめ(3/4): concurrent GO編 yet another入門記事です。 part1 プロジェクトを始めるまで編 part2 cliアプリをつくれるところまで編 part3 concurrent GO編: これ part4 HTTP server/logger編 ご質問やご指摘がございましたらこの記事のコメントでお願いします。 (ほかの媒体やリンク先に書かれた場合、筆者は気付きません) Overview concurrentなプログラムを書くためのツールキットであるgoroutine / chan / sync/sub-repositoryのsyncパッケージを紹介します なぜそれらを使わないといけないか(data race)についても述べます signal handling 筆者は「並行」と「並列」がどっちがどっちのことを言ってるのかたびたび

    Goで開発して3年のプラクティスまとめ(3/4): concurrent GO編
    yug1224
    yug1224 2024/07/02
  • Goで開発して3年のプラクティスまとめ(2/4): cliアプリをつくれるところまで編

    Goで開発して3年のプラクティスまとめ(2/4): cliアプリをつくれるところまで編 yet another入門記事です。 part1 プロジェクトを始めるまで編 part2 cliアプリをつくれるところまで編: これ part3 concurrent GO編 part4 HTTP server/logger編 ご質問やご指摘がございましたらこの記事のコメントでお願いします。 (ほかの媒体やリンク先に書かれた場合、筆者は気付きません) Overview ほかのライブラリをインポートしてcliの呼び出し口を整えてツールを作れるところまでを目指します。 筆者がGoを書き始めて、A Tour of Goが終わった直後(つまりGoを初めて触りだしてから5時間あとあたりでしょうか)に社内というかチーム内でのみ使う小さなサーバープログラムをいきなり作り出したことがあるんですが、その時いろんなことがわ

    Goで開発して3年のプラクティスまとめ(2/4): cliアプリをつくれるところまで編
    yug1224
    yug1224 2024/07/02
  • Goで開発して3年のプラクティスまとめ(1/4): プロジェクトを始めるまで編

    OUTDATED dockerでビルドする周りの話以外は書きなおしました(dockerでビルドの話を書きなおすのはもうちょいいろいろ検証したいのでしばらく先になりそうです・・・。) 特にprivate repository周りの話が重要じゃないところだけど結構間違ってたので恥ずかしいのでこの記事は見ないでください。 Goで開発して3年のプラクティスまとめ(1/4): プロジェクトを始めるまで編 yet another入門記事です。 part1 プロジェクトを始めるまで編: これ part2 cliアプリをつくれるところまで編 part3 concurrent GO編 part4 HTTP Server/logger編 はじめに 筆者はGoを触りだして3年ぐらいたったので、触りだしてからもっと早く知りたかったこととかをまとめて置くことで筆者の知識の整理を行います。 元は社内向けに軽いイントロ

    Goで開発して3年のプラクティスまとめ(1/4): プロジェクトを始めるまで編
    yug1224
    yug1224 2024/07/02
  • 1