並び順

ブックマーク数

期間指定

  • から
  • まで

1 - 9 件 / 9件

新着順 人気順

golangの検索結果1 - 9 件 / 9件

  • Goで自作RDBMS - abekoh's tech note

    はじめに Goで自作RDBMSに挑戦してみたログです。自作、といっても大部分は参考にした書籍の移植です。 ここ1年くらいRDBに向き合う機会が多く、その内部実装を手を動かしながら身を持って理解してみたいというモチベーションから始めてみました。ちょうど会社の『内部構造から学ぶPostgreSQL』読書会に参加したこともモチベーション上げるきっかけとなりました。 (他の方の記事ですが、読書会の記録はこちら↓) 『内部構造から学ぶPostgreSQL』読書会を完走した感想 [改訂3版]内部構造から学ぶPostgreSQLの社内読書会振り返り データベースをデータの箱としか思っていなかった私の『内部構造から学ぶPostgreSQL』を読んだ感想 普段何気なく使ってるRDBMSですが、ACID特性を守るため・大量の読み書きを捌くため、非常に緻密に設計されております。 これを完全再現といかなくとも自分

      Goで自作RDBMS - abekoh's tech note
    • Go 1.23のイテレータについて知っておくべきこと

      はじめに 2024年8月13日、Go 1.23がリリースされ、ついにイテレータが利用可能となりました。 この記事では、Goのイテレータについて、 どうやって使うのか どこまで知っておく必要があるのか を理解することをゴールとします。 基本的な知識 基本的な知識としては、以下の内容を知っていれば問題ないです。 for文のrangeループの仕様が変わった 関数を対象にrangeループを回せるようになる rangeループの対象にできる種類の関数をイテレータと呼ぶ イテレータには3種類ある for文のrangeループの仕様が変わった Go 1.22までは、for文によるrangeループの対象にできたのは、配列, slice, 文字列, map, channel, 整数だけでした。 Go 1.23で、ここに関数(ただし、特定の形式に限る)が加わりました。 ここで、rangeループの対象にできる形式の

        Go 1.23のイテレータについて知っておくべきこと
      • Go の iter パッケージを使ってみよう

        はじめに Go 1.23 で iter パッケージが導入されました。この iter は抽象化されたイテレータを示す仕組みと実装です。未だどの様に活用して良いか分からない方もいると思いますので、使い方を簡単に解説しようと思います。 概念 iter パッケージは、現状は for-range でのみ利用可能です。スコープにコンテキストを持ったロジカルな列挙可能オブジェクトと、それを別のスコープにて for-range でイテレートする際に便利です。 これまでであれば、こういった実装は goroutine と channel を使いスコープを分割させる事で実装してきました。 package main func iter1[T any](a []T) func() (T, bool) { ch := make(chan T) go func() { defer close(ch) for _, v

          Go の iter パッケージを使ってみよう
        • Goのiterの知らなくても良いこと

          本記事ではGoのiter(イテレーター)についての「知らなくても良いけど知っていたらイザという時に助かるかもしれないこと」を紹介します。iterの基本的な使い方等は説明しませんので、以下のmattnさんによる記事を参照してください。 Goのiterの実現方法 では本題。Goのiterとはコルーチンです。Goにおけるコルーチンの導入はRuss CoxのCoroutines for Goという記事にその分析と設計が書かれています。同記事の日本語による拙作のメモがありますので気になる方はそちらもご参照ください。 Russ Coxはこの記事において、コルーチンとはコールスタックの分離と任意の場所への付け替えだ、と分析しました。またgoroutineとチャンネルを用いてコルーチンを実装し、満たすべき機能的要件を明らかにし、また性能的要件からGo言語本体に必要な変更を示しています。この機能と性能の要件

            Goのiterの知らなくても良いこと
          • [OpenAPI] Go言語でAPIファーストな開発をしてみた - oapi-codegen実践編

            対象読者 Go言語でのWeb API開発に興味のある方 APIファースト開発を学びたい方 oapi-codegenを使った具体的な開発手法を知りたい方 はじめに APIファースト開発とは、APIの設計を起点にアプリケーション開発を進める手法です。APIを最初に定義することで、開発者以外も並行作業が可能になるなどのメリットがあります。 しかし、個人的にはAPIファースト開発の真価はそれだけではないと考えています。API設計に重点を置くことで、システムやアプリケーション間で本当に必要なインターフェースを明確化し、結果としてドメインの整理や設計にも役立つと考えています。 私自身、これまでの開発でAPI設計やドキュメント作成が後回しとなってしまい、結果設計の不備やドキュメントの陳腐化に悩まされることも少なくありませんでした。 API定義のための仕様であるOpenAPI Specification

              [OpenAPI] Go言語でAPIファーストな開発をしてみた - oapi-codegen実践編
            • Range Over Function Types - The Go Programming Language

              The Go Blog Range Over Function Types Ian Lance Taylor 20 August 2024 Introduction This is the blog post version of my talk at GopherCon 2024. Range over function types is a new language feature in the Go 1.23 release. This blog post will explain why we are adding this new feature, what exactly it is, and how to use it. Why? Since Go 1.18 we’ve had the ability to write new generic container types

                Range Over Function Types - The Go Programming Language
              • Goのプロジェクトでよく使うライブラリ

                ホットリロード 環境変数 モック ロギング importする際のパッケージ名は、go.uber.org/zap Google Cloudを使うならzapdriverも DI(Dependency Injection)コンテナ importする際のパッケージ名は、go.uber.org/fx ORM CSV BOM BOM削除 デバッグ Web echo gin GraphQL サーバー データローダー N+1回避 graph-gophers/dataloader/v7でジェネリクス対応 クライアント Lodashスタイル バリデーター JSON関連 json内の一部データを手軽に取り出す際に利用

                  Goのプロジェクトでよく使うライブラリ
                • zerologでCloud Logging用の構造化ログを作る - Qiita

                  Google Cloud上でアプリケーションを動かす際に、Cloud Loggingが求める構造を使うと、Cloud TraceやError Reportingなどと相性がいいので、Cloud Logging用にログの形式を設定する。 logger側 package log import ( "context" "fmt" "os" "path" "runtime" "strconv" "cloud.google.com/go/compute/metadata" "github.com/rs/zerolog" "github.com/rs/zerolog/log" "go.opentelemetry.io/otel/trace" ) // Google Cloud Project ID var projectID string // init Loggerの初期設定を行う。 func in

                    zerologでCloud Logging用の構造化ログを作る - Qiita
                  • [Go] Uber製DIフレームワークfxの利用法(基礎)

                    この記事について この記事ではGoのDIフレームワークであるfxパッケージの基本的な使用法について記載します。 このパッケージはUber製で、Uberのサービスの様々な所で使われているようです。リフレクションを使うタイプでDIを実行するようです。Googleにもwireというものがあり、これはスター数が大きかったのですが、リリース自体はこちらの方が活発に見受けられます。また、fxのもっとコアな中身としてはdigというものがあるようです。 私がこのライブラリを触ったのは全くの気分で(強いて言えば私が一応最も知見のある…であろう.NETのフレームワーク群はDIを全面に押し出したような環境が多い印象があった為)、特に技術選定などに係るような深い理由は何もありません。 この記事自体が自分が学んでいる中での覚書みたいな内容ですが、大まかな基本的な使い方を書いているので、公式ドキュメントと合わせてご参

                      [Go] Uber製DIフレームワークfxの利用法(基礎)
                    1