タグ

goに関するteitei_tkのブックマーク (97)

  • 公式GoクライアントindigoでBlueskyのAPIを使ってみた - 小野マトペの納豆ペペロンチーノ日記

    みなさんはまだXで消耗してますか?Blueskyに移住中の小野マトペです。 Go言語でBlueskyにポストを投稿するコードを書いたのですが、ベータ版とあってドキュメントも少なくやや難儀したので、メモとして残します。記事を通じて、Blueskyのアーキテクチャのユニークさも少しだけ伝われば良いなと思います。 クライアントには、Blueskyの公式Goリポジトリ github.com/bluesky-social/indigo のクライアント実装を使います。ただし、開発中で、今後使い方が変わる可能性もあるので気をつけてください。 github.com 概要 Bluesky は、大規模分散ソーシャルアプリケーションのための汎用連合プロトコル AT Protocol 上に構築されるアプリケーション実装であるという建て付けです。AT Protocolでは、クライアントやサーバーは XRPC という

    公式GoクライアントindigoでBlueskyのAPIを使ってみた - 小野マトペの納豆ペペロンチーノ日記
    teitei_tk
    teitei_tk 2023/08/17
  • Go 1.21 リリース連載 contextパッケージに追加されるWithoutCancelでクライアントとの切断に備えてみる | フューチャー技術ブログ

    Go 1.21 リリース連載 contextパッケージに追加されるWithoutCancelでクライアントとの切断に備えてみる はじめにこんにちは。TIG DX ユニット所属、金欠コンサルタントの藤井です。先日、Google Pixel 7aを購入しました。これまでiPhone 7 Plusを使っていたので、使用スマホの時代が7年ほど進みました。Googleは検索エンジンからAI、スマホまで作っていてすごいですね。 ということで今回は、Google発のプログラミング言語であるところのGoの1.21がリリースされることを記念した、Go 1.21 連載 の記事を書きます。 記事では、いくつか変更の入った、contextパッケージについて記載していきます。 contextそのものについては、フューチャー技術ブログにおいても数多く解説されていますので、詳細な説明は割愛します。数例記載しますので、

    Go 1.21 リリース連載 contextパッケージに追加されるWithoutCancelでクライアントとの切断に備えてみる | フューチャー技術ブログ
    teitei_tk
    teitei_tk 2023/08/11
  • 次なる`pkg/errors`を探して - カンムテックブログ

    エンジニアの宮原です。 今回はGoでスタックトレースを取得するライブラリ選定についての記事です。 この記事は 【Gophers Talk】スポンサー4社による合同LT & カンファレンス感想戦で発表したものです。 発表スライドはこちらから確認できます。 この記事の目的 この記事ではpkg/errorsからの移行先を探すための参考情報を提供することを目的とします。 Goのエラーハンドリングのやり方等についてこの記事では触れないこととします。 pkg/errors とはなにか pkg/errorsとは、githubのREADMEを引用すると Package errors provides simple error handling primitives. とあり、直訳すると、「エラーハンドリングの基礎を提供するパッケージ」となります。 pkg/errorsを利用することで、Go体にはないスタ

    次なる`pkg/errors`を探して - カンムテックブログ
    teitei_tk
    teitei_tk 2023/07/29
  • 🪵 Go1.21 log/slogパッケージ超入門

    はじめに 2023年8月9日(日の場合)Go1.21がリリースされました🎉。Go1.21ではさまざまな変更点や追加機能が加わります。その中でもGo標準ライブラリに導入される構造化ロギングパッケージlog/slog(以下、slog)を楽しみにしている方は多いのではないでしょうか? 稿では、slogを実際に触りつつ、機能の解説をしていきます。 TL;DR 稿の概要をスライドにもまとめているので、ご参考にして下さい。 従来のlogパッケージについて slogの説明に入る前に、Go標準のlogパッケージについて簡単に紹介する。logパッケージを用いると、 io.Writer インターフェースを実装する任意の型にログメッセージを書き込むことができる。しかし以下のような制限があった。 ログレベルをサポートしていない ログレベルはほとんどのログパッケージの定番機能の一つだが、logパッケージには

    🪵 Go1.21 log/slogパッケージ超入門
    teitei_tk
    teitei_tk 2023/07/25
  • Go1.21 New Features

    Go1.21 が 2023年8月9日(JST) にリリースされ、そのリリースノートやブログが公開されています。この記事では前回の Go1.20 New Features に引き続き、Go1.21 の新機能の中から気になった機能を解説していきます。 spec Go1.20 までは、メジャーリリースの一番最初のバージョンの末尾にパッチバージョンが付いておらず、次のバージョンからはパッチバージョンが付くようになっていました。 例えば Go1.20 の最初のバージョンは go1.20 で、次のバージョンからは go1.20.1, go1.20.2, ... のようにパッチバージョンがついていました。 Go1.21 からは、一番最初のバージョンが go1.21.0 のようにパッチバージョンの .0 が付くようになります。 import している package を初期化する順序が Spec に明記さ

    Go1.21 New Features
    teitei_tk
    teitei_tk 2023/07/25
  • Govulncheck v1.0.0 is released! - The Go Programming Language

    Julie Qiu, for the Go security team 13 July 2023 We are excited to announce that govulncheck v1.0.0 has been released, along with v1.0.0 of the API for integrating scanning into other tools! Go’s support for vulnerability management was first announced last September. We have made several changes since then, culminating in today’s release. This post describes Go’s updated vulnerability tooling, an

    Govulncheck v1.0.0 is released! - The Go Programming Language
    teitei_tk
    teitei_tk 2023/07/14
  • Go公式の構造化ロガー(予定)のslogで秘匿値をログから削除する

    Go言語ではながらく公式のログ出力にlogパッケージが使われてきました。しかし昨今のクラウド環境などでのロギングでは構造化ログがほぼ必須であり、そのような流れを受けて公式の構造化ログパッケージ slog が提案されています。2023年8月にリリース見込みの Go 1.21 のリリースノートにはすでに掲載されており、1.21 で公式に取り込まれるのはほぼ確実かと考えられます。 背景:絶対にログに秘匿値を出力したくない オンラインサービスで出力されるログは様々な目的で利用されます。例えば、サービスの運用監視のためにログを集約してアラートを発生させたり、サービスの改善のためにログを集約して分析したり、サービスのセキュリティ監視のためにログを集約して不正アクセスを検知したり、などなど。また、ログは監査に利用されることもあり、原則として保管期間中は削除しない、できないということが前提として様々なログ

    Go公式の構造化ロガー(予定)のslogで秘匿値をログから削除する
    teitei_tk
    teitei_tk 2023/07/11
  • Effective Error Handling in Golang

    Introducing Earthly Cloud. Consistent, repeatable builds. Advanced caching for speed. Works with any CI. Get 6,000 build min/mth free! Learn more. Introducing Earthly Cloud. Consistent, Fast Builds, Any CI. Get 6,000 build min/mth free! Learn more.

    Effective Error Handling in Golang
  • 無理なく始めるGoでのユニットテスト並行化 - カンムテックブログ

    KanmuでPoolを開発しているhataです。最近、ロボット掃除機を買いました。ロボとがじゃれている景色はいいですね。 今回はGoのユニットテストの並行化についての記事です。 TL;DR Goのテストは、並行化することでテスト実行時間の短縮やテスト対象の脆弱性の発見などのメリットがある 基的にはそのままでも最適化されているが、テストコードにt.parallelを記述することでよりきめ細やかな最適化を施すことができる ただし、一定規模以上のアプリケーションへの導入・運用は大変 テストコードを一気に並行化するtparagenというツールや、並行化忘れを防ぐ静的解析ツールがあり、これらを使うことで無理なくテスト並行化の導入・運用ができる はじめに ユニットテスト並行化とは 記事では、「並行」「並列」という用語を使用します。記事におけるこれらの用語を定義します。 並行:複数の処理を独立に

    無理なく始めるGoでのユニットテスト並行化 - カンムテックブログ
    teitei_tk
    teitei_tk 2023/06/02
  • 「Go Style Guide」から学んだ可読性の高いコードの書き方

    Go Conference 2023 ( 2023/06/02 Fri. ) https://gocon.jp/2023/ 登壇資料 株式会社アンドパッド プロダクトテックリード 小島 夏海 みなさん、Googleが公開したGo Style Guideは読みましたか? ソフトウェア開発は継続的な活動であり、一般的に複数人で行うことが多いです。 継続的に複数人で開発を行う場合、自分が書いたコードを他人が読んだり修正したりすることが非常に多いです。 そのため可読性の高いコードを書くことは開発効率やメンテナンス性の向上に役立ちます。 Goはシンプルな言語ですが、どのように書くべきか悩むことが全くないわけではなく、そのような時従来はEffective Go/Uber Go Style Guide/OSSコード等を参考にどのように書くか決めていたと思います。 これらに加え、昨年末にGoogleからG

    「Go Style Guide」から学んだ可読性の高いコードの書き方
    teitei_tk
    teitei_tk 2023/06/02
  • Using Storybook with Go frontends

    ← Home Using Storybook with Go frontends Storybook [0] is an open source tool for building UI components and pages in isolation. https://storybook.js.org/ [0] I’ve used it with lots of React projects, where it’s been a great way to build out layouts and to allow developers to share, document, and preview components in isolation. However, it’s not just for React. Storybook also supports server-side

    teitei_tk
    teitei_tk 2023/05/30
  • Go1.20 から入った errors.Join が実は便利そうだった - emahiro/b.log

    Overview errors.Join について パフォーマンスについて Practice まとめ Overview Go 1.20 から errors パッケージに導入された errors.Join は複数のエラーを詰め込んでも詰め込んだエラーそれぞれを Unwrap して取り出せる。 fmt.Errorf でも複数のエラーを wrap できるようになっている。 複数のエラーを wrap してもそれぞれ unwrap して取り出せるので Is 判定を使うことができる。 errors.Join について Go1.20 から導入された機能です。 pkg.go.dev 以下のフューチャーさんのブログで丁寧に解説されてますが、error のラップの方法がちょっと便利になる関数になります。 future-architect.github.io もともと hashcorp が go-multier

    Go1.20 から入った errors.Join が実は便利そうだった - emahiro/b.log
  • template package - text/template - Go Packages

    Package template implements data-driven templates for generating textual output. To generate HTML output, see html/template, which has the same interface as this package but automatically secures HTML output against certain attacks. Templates are executed by applying them to a data structure. Annotations in the template refer to elements of the data structure (typically a field of a struct or a ke

  • Go公式の構造化ロガー(として提案されている)slogを触ってみたメモ

    Go言語ではながらく公式のロガーとして log パッケージがありました。これは非常にシンプルなもので構造データをうまく表現できなかったりログレベルを分けるということができません。CLIで使うシンプルなインタラクションであればこれで十分なのですが、クラウド上のバックエンドで動かすサービスにとっては構造化ロギングやログレベルの出し分けは事実上必須であり、そのための機能は十分と言えませんでした。 これに対して様々なロガーが3rd party packageとして公開されてきましたが、一方で公式に導入されようとしているロガーもあります。それがslogです。まだ提案の段階ではありますが、現状で使える実装を触ってみたところかなり実用的な段階だなと感じたので、自分用の備忘録を兼ねてメモを残してみます。 サンプルコードはここにも置いてあります。 基的な使い方 まず基的な使い方を見てみます。ログ出力用に

    Go公式の構造化ロガー(として提案されている)slogを触ってみたメモ
  • nostr と Bluesky に7つ bot を作り k8s で稼働させた

    俳句bot (nostr) nostr の日リレーを監視し、投稿を 575 または 57577 判定し、引用でお知らせする。狙った俳句ではなく、天然物の俳句がマッチするとウケが良い。 Go で実装。内部では go-haiku を使って俳句を判定。監視は日語の投稿が流れる日のリレーをお借りしている。普通の Go アプリなので golan:1.20-alpine でビルドして scratch でイメージ作成。 # syntax=docker/dockerfile:1.4 FROM golang:1.20-alpine AS build-dev WORKDIR /go/src/app COPY --link go.mod go.sum ./ RUN apk add --no-cache upx || \ go version && \ go mod download COPY --link

    nostr と Bluesky に7つ bot を作り k8s で稼働させた
  • Goでスタイリッシュにエラーをラップする方法を学んだ - カミナシ エンジニアブログ

    こんにちは。カミナシ ソフトウェアエンジニアの @aoman です。 つい先日、Goで有名な@tenntennさんがConnpassで募集していたGopher塾#2に参加させていただきました。 tenntenn.connpass.com 大変勉強になりおすすめです!筆者が参加したのは第一回目ですが、二回目三回目と予定されているようなので、有料講義ではありますが気になる方はぜひ参加してみてください!学生さんであれば無料の抽選枠もあります。 その際に紹介されていたコードで、エラーのラップ関数があったのですが、これが「メッチャアタマイイ!!スタイリッシュ!!」と感動しました。そのコードは、Goの公式ページである https://go.dev/ のWebサイトを実装しているリポジトリ pkgsite 内の internal/derrors パッケージで実装されています(GitHubリポジトリはミラ

    Goでスタイリッシュにエラーをラップする方法を学んだ - カミナシ エンジニアブログ
  • Goの標準ライブラリに学ぶジェネリクス | gihyo.jp

    はじめに 2022年3月にリリースされたGo1.18ではジェネリクス(型パラメータ)が導入されました。長年楽しみされてきた機能で、少しずつGoの標準ライブラリでも使用され始めています。一方でリリース時に少し試してはみたものの、使いどころ所が難しいと思った読者の方も多いのではないでしょうか。この記事ではGoの標準ライブラリにおける利用例を紐解きながらジェネリクスへの理解を深めていきます。 timeパッケージ 日付と時刻の操作を扱うtimeパッケージでは内部的にジェネリクスが利用されています。JSONのシリアライズを行うMarshalJSONへのバリデーションの改善とジェネリクスの導入により、9%以上の高速化が成されました。では実装を見てみましょう。 timeパッケージのformat.goより func atoi[bytes []byte | string](s bytes) (x int,

    Goの標準ライブラリに学ぶジェネリクス | gihyo.jp
  • Better gRPC な Connect に乗り換える - Go言語編

    デジタル認知行動療法アプリ Awarefy は、2022年4月からバックエンドシステムを Go + gRPC / Protocol Buffers を用いて開発・運用しています。現在進行中の Web アプリ開発のために、connect-go への切り替えが事実上必要になったため、grpc-go から connect-go へのマイグレーションを実行しました。 Connect とはそもそも Connect とはなにかですが、Better gRPC と理解するのがよいでしょう。 Getting started | ConnectConnect is a slim library for building browser- and gRPC-compatible HTTP APIs.ConnectConnect is a slim library for building browser- an

    Better gRPC な Connect に乗り換える - Go言語編
  • Goの新しい構造化ロガーを体験しよう | gihyo.jp

    logパッケージ Goには標準ライブラリとしてlogパッケージが提供されています。logパッケージで行えることはそう多くはありません。たとえば、デフォルトではログは標準エラー出力に出力されますが、log.SetOutput関数で出力先を変更できます。また、利用する関数によってログを出力した後の挙動をコントロールできます。たとえば、log.Print関数はログを出力するだけですが、log.Fatal関数はログ出力後にos.Exit(1)を呼び出します。log.Panicはログ出力後に出力したログと同じ文言を引数としてパニックを発生させます。 logパッケージでは、ログとともに関連するデータを出力したい場合は、log.Printf関数を用います。次のように、書式を指定して出力します。 log.Printf("request_url=%s request_method=%s", r.URL, r

    Goの新しい構造化ロガーを体験しよう | gihyo.jp
    teitei_tk
    teitei_tk 2023/02/14
  • Go 1.20 Wrapping multiple errors | フューチャー技術ブログ

    はじめにこんにちは!TIG の川口です。 記事は Go 1.20リリース連載 の3目です。Wrapping multiple errors についてお話します。 Release Note では、こちら の箇所になります。 Proposal は、こちら になります。 何が変わったか?さて具体的に何が変わったかをはじめにおさえておきます。 Go 1.20 expands support for error wrapping to permit an error to wrap multiple other errors. An error e can wrap more than one error by providing an Unwrap method that returns a []error. The errors.Is and errors.As functions have

    Go 1.20 Wrapping multiple errors | フューチャー技術ブログ
    teitei_tk
    teitei_tk 2023/01/26