タグ

ブックマーク / re-engines.com (5)

  • Goのクエリビルダー goqu を使ってみる | RE:ENGINES

    はじめに 最近携わっているとある案件では、CRUD操作はsqlcで生成したORMを使い、QueryServiceではgoquを使ってクエリを組み立てています。 以前の記事ではsqlcについて紹介しましたので、今回はgoquについて紹介したいと思います。 goquとは まず初めに、goquについて簡単に紹介します。 goquは複数のDBに対応した多機能のクエリビルダーです。 goquで提供されている様々なExpressionsなどを利用して、複雑なクエリを楽に楽しく記述することができます。 また、クエリを組み立てるだけでなく、直接クエリを実行することもできます。 更に、複数のレコードをスキャンして、構造体やプリミティブにマッピングすることもできます。ただし、goquはORMとして使用されることを想定してるわけではないので、アソシエーションやフックといった機能は提供していません。 対応するDB

    Goのクエリビルダー goqu を使ってみる | RE:ENGINES
  • Go言語のエラーハンドリングとログローテーション | RE:ENGINES

    はじめに こんにちは、今回はGo言語でのエラーハンドリングとログ関連についての記事となります。 例外のないGo言語でどのようにエラーを伝搬させていくのかについて一つの方法を紹介させていただき、その後、そのエラーをファイルに出力する方法を紹介したいと思います。 なお、開発環境の構築がまだの方は、ぜひこちらで環境構築をしてからお読みいただければと思います。 エラーハンドリングについてですが、まずはGo言語でerrorとは一体何ものなのかについて触れたいと思います。その後、pkg/errorsパッケージでerrorをwrapをする方法を記載し、次の節でそれを活用した独自のerrorsパッケージを作成したいと思います。 error インターフェース Go言語では例外の概念がないため(Go2では例外が組み込まれるかもしれませんが)、ファイルの処理などで下記のようにerrorを返却するコードをよく目に

    Go言語のエラーハンドリングとログローテーション | RE:ENGINES
  • GoフレームワークGinでミドルウェアを使ってログインAPIを実装 | RE:ENGINES

    はじめに 今後 Go を使用した案件をやる機会があり、現在 Go の勉強中なのですが、今回は案件でも使用するフレームワーク Gin を使用してログインAPIを実装したいと思います。Gin はメモリ利用量が少なく、 reflection を使用していないため高速で動作します。また、余計な機能がないため、学習コストが低く初心者にオススメです。 ログインAPIの作成 では早速ログインAPIを作成したいと思います。冒頭の通り今回は Gin を使用するので go get しておいてください。 package main import ( "github.com/gin-gonic/gin" "net/http" ) func main() { r := gin.Default() r. POST("/login", func(c *gin.Context) { c.String(http.Status

    GoフレームワークGinでミドルウェアを使ってログインAPIを実装 | RE:ENGINES
    delegate
    delegate 2022/09/18
  • Go言語の基礎〜Go 1.11 開発環境構築とパッケージバージョン管理〜 | RE:ENGINES

    はじめに こんにちは、雨の日が最近多く、気温の変化が激しくて、体調管理に気をつけなければと思うこの頃です。 さて、今回はGo言語についてです。Go言語をご存知の方は、最近ですと、2018年8月末に1.11がリリースされことや、Go2でのgenericsやエラーハンドリングに関する議論など耳にされている方も多いのではないでしょうか。 改めて話題になってたことで、私たちもGo言語を改めて学びなおそうと、勉強会合宿を開催しました。そこで発表・共有した内容を簡単にまとめ、数回にわたり連載を予定しております。 今回の記事では、改めてGo言語を勉強してみたいという方向けに、Go言語概要と環境構築から、Go 1.11でexperimentalでリリースされた Modules について紹介したいと思います。 Go言語(Golang)とは Go言語の連載最初の1回目の記事なので、簡単にGo言語についても説明

    Go言語の基礎〜Go 1.11 開発環境構築とパッケージバージョン管理〜 | RE:ENGINES
  • MySQL 5.7 オプティマイザの改善〜UNION ALL〜 | RE:ENGINES

    はじめに Amazon RDSのMySQL 5.7で開発を行うことになりました。そこで、少しですがMySQL 5.7の機能を調べる機会がありましたので、今回は「UNION ALL」に関してのオプティマイザの改善について記載したいと思います。 「UNION」と「UNION ALL」の違い 先ずは、改めて「UNION」と「UNION ALL」の違いを簡単に説明しておきます。 UNION 結合対象のSELECT文の結果の全レコードを取得し、重複レコードを除去し返却します。 UNION ALL 結合対象のSELECT文の結果の全レコードををそのままつなげて返却します。 違いは結合した結果から、「重複レコードを除去するか、しないか」だけとなります。 MySQL 5.7での「UNION ALL」の改善とは 後ほど、「UNION」「UNION ALL」の実行計画の例を記載しますが、実行計画は単純であり、

    MySQL 5.7 オプティマイザの改善〜UNION ALL〜 | RE:ENGINES
  • 1