Content-Length: 357623 | pFad | http://b.hatena.ne.jp/W53SA/go/

[B! go] W53SAのブックマーク

タグ

goに関するW53SAのブックマーク (101)

  • uniqueパッケージから学ぶinterningと弱参照

    Asakusa.go#3(@ドクターズプライムさん)で登壇してきました! Go1.23で追加されたuniqueパッケージの内部実装をたどりながら、Goの言語特性や既に存在していた最適化について、新しく導入された弱参照について調べました。 発表内容 stringの割り当てと不変性、SSAによる最適化について学ぶuniqueパッケージの導入背景と特性を知り、ベンチマークをとる主に新しく言語に取り入れられた弱参照を利用したmapの掃除について内部実装を辿る雑談準備大変だったあああ😭 セッション枠がキャンセルされてその代打を引き受けてから2週間寝ずに調査・資料作成しました。 健康とメンタルの臨界点ギリギリで頑張りました。褒めてください🥺 uniqueパッケージを題材に選んだ理由は、Go1.23のリリースノートで挙動と存在理由が最も理解できない項目だったからです。 今回の発表準備を通じて、新しく

  • Gopher道場の動画コンテンツを完全に公開しました

    はじめに Gopher道場は、tenntennがメルペイ在職時に始まったGoを学ぶ人のための学習の場です。tenntennがメルペイを退職後、著作権周りの整理などが行われ、Go Conferenceなどを運営する一般社団法人Gophers Japanに運営が移管されました。メルペイのみなさまありがとうございました。 動画コンテンツを完全に公開しました 移管にあたり、Gopher道場のSlackに入った方にだけ公開していた動画コンテンツを一般公開することにしました。以下の再生リストからご覧いただけます。 なお、資料はこちらの古いスライドではなく、プログラミング言語Go完全入門をご覧ください。 古い資料はアップデートされませんが、プログラミング言語Go完全入門は今後もアップデートをしていきます。 動画は10時間以上あり、以下の内容を扱っています。 Goに触れる 基構文 型と関数 パッケージ

    Gopher道場の動画コンテンツを完全に公開しました
    W53SA
    W53SA 2025/02/25
  • testing.B.Loop を使おう - 薄いブログ

    TL;DR Go 1.24 からは testing.B.Loop を使う 意図しない最適化を避けることができる N をループで使わないことで他の場所での使用を避けることができる ベンチマークの結果を比較する場合は同一条件下か確認しましょう ベンチマークの結果の安定性を確認しましょう 安定したベンチマークをするために testing.B.N は反復回数以外の用途で使わない 背景 なんでappendが速いんだろ🙄 pic.twitter.com/geEqBop2kv— ゴリラ - おで巻いたもち感ロール(ショコラ)は良いぞ (@gorilla0513) 2025年2月19日 題 まずは追試をします。 package main import "testing" func BenchmarkIndex(b *testing.B) { a := make([]int, b.N) b.Rese

    testing.B.Loop を使おう - 薄いブログ
  • GitHub - k0kubun/pp: Colored pretty printer for Go language

    You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert

    GitHub - k0kubun/pp: Colored pretty printer for Go language
  • GoによるTLS1.3サーバーの実装

    はじめに TLSプロトコルの理解を目的として、Go言語によりTLS1.3のフルハンドシェイクのサーバー実装を行いました。この記事では、実装の過程で得た学びをまとめたいと思います。Go言語はTLSをOpenSSLではなく自前で実装しています。暗号処理関連のパッケージが整っているため、TLSプロトコルの仕様に沿った自然な実装がしやすい言語だと思います。 実際に書いたコードはgo-tlsで公開しています。また、同内容はスライドとしてLearning-TLS1.3-with-Go-full.pdfでもまとめています。 暗号処理 TLSの内容に入る前にまず暗号処理の概要について見ていきます。次の3つの性質が重要です: 秘匿性 (Confidentiality) 通信内容が通信相手以外から読み取られないこと 完全性 (Integrity) 通信内容が途中で改ざんされていないこと 正真性 (Authen

    GoによるTLS1.3サーバーの実装
    W53SA
    W53SA 2024/09/04
  • Go sync.Pool and the Mechanics Behind It

  • Goのiterの知らなくても良いこと

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

    Goのiterの知らなくても良いこと
    W53SA
    W53SA 2024/08/24
  • 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
  • 【Go】time.Time.AddDateの注意点と対策 - Mirrativ Tech Blog

    こんにちは、バックエンドエンジニアの藤井脩紀です。 今回の記事では日付計算に潜む罠についてお話しさせていただきます。 なお今回はGoでの事例をご紹介しますが、原理的には他の言語やライブラリでも同様の事象が発生する可能性があります点にご注意ください。 time.Time.AddDateの注意点 突然ですがここでクイズです。 来月が何月か知りたいので以下のようなコードを書きました。 このコードを実行したのは10月だとします。 結果は何になるでしょう? // AddDateの引数は順に年、月、日でそれらの値を加算したtime.Timeを返してくれます fmt.Printf("%d月\n", time.Now().AddDate(0, 1, 0).Month()) 「え、11月でしょ?」と思う方もいらっしゃるかもしれませんが正確には異なります。 焦らさずに書きますが答えは「11月か12月のどちらか

    【Go】time.Time.AddDateの注意点と対策 - Mirrativ Tech Blog
  • 「Go net/http タイムアウト」の完全ガイド

    GoでHTTPサーバーまたはクライアントを書くとき、タイムアウトは、最も間違えやすく、そして最も軽微な間違えです。選択する対象が数多くあり、間違えても、ネットワークの不具合やプロセスがハングアップするまで、長い間、何の影響もありません。 HTTPは複雑な多段階プロトコルであるため、タイムアウトには万能な解決策はありません。ストリーミングエンドポイントと JSON API とCometエンドポイントを考えてみてください。確かに、デフォルトは多くの場合、あなたが望むものではありません。 この記事では、お客様がタイムアウトを適用する必要があるかもしれないさまざまな段階を取り出し、サーバーとクライアント側の両方で、これを行う色々な方法を見ていきます。 まず、タイムアウトを実装するためにGoが公開するネットワークプリミティブの「期限」について知る必要があります。 net.ConnのSet[Read|

  • Goのnet/httpのtimeoutについて - Carpe Diem

    概要 タイムアウトと一口に言ってもサーバ・クライアント、そして各フェーズによって細かく設定があります。 今回はGonet/httpのtimeoutについて1つ1つ説明していきます。 環境 golang/go 1.13 Server 全体図 サーバ系timeoutと各フェーズは以下の関係になっています。 各項目 項目 役割 http.Server.ReadHeaderTimeout request headersを読む際のtimeout http.Server.ReadTimeout request headersやrequest bodyを読む際のtimeout。 SetReadDeadline()を呼び出してセットする。 http.Server.WriteTimeout request bodyの読み込み〜responseの書き込みまで。 SetWriteDeadline()を呼び出し

    Goのnet/httpのtimeoutについて - Carpe Diem
  • GoCLIツール職人のためのRust入門

    三連休中にこんなツールを作った。 普段はGoでCLIツールを書いているけど、このツールで初めてRust格的に使ったのでその際に得た知見を元にGoでCLIを作っている人向けにとりあえずRustでツールが作れる状態になれることを目指して、CLIツールを作るときによく使っている処理やRustならではの構文などを中心に書いてみた。 この記事を通して「なぁ~んだ。案外Rustでもサクッとツール作れそうじゃん」とか「Rustにも意外とツール向けのライブラリとかあるんだなぁ」とか思って貰えると嬉しい限り。

    GoCLIツール職人のためのRust入門
    W53SA
    W53SA 2023/10/06
  • Goのhttp.RoundTripperでレート制御とリトライの機能を追加する方法

    はじめに Goで外部へhttpリクエストを行う際には、多くの場合でnet/httpを利用すると思います。 net/httpには通常利用する分には必要な機能が備わっていますが、独自に拡張して使いたい場合はhttp.RoundTripperというインターフェースを利用できます。 利用方法の解説としては、こちらの「Go http.RoundTripper 実装ガイド」という記事に詳細に解説がありましたので参考にさせて頂き、 今回はより具体的な利用例にフォーカスして実装例を交えて紹介したいと思います。 やりたいこと 素のnet/httpではリクエストがエラーになった際のリトライや、秒間リクエストの最大値を制限するようなレート制御の機能はありません。 なので今回は、 リトライ処理 レート制御 この2つをhttp.RoundTripperを使って拡張実装したいと思います。 ※今回のサンプルコードの完成

    Goのhttp.RoundTripperでレート制御とリトライの機能を追加する方法
    W53SA
    W53SA 2023/10/06
  • Goのnet/httpのclientでなぜresponseBodyをClose、読み切らなくてはいけないのか

    いきなり結論 結論としては、 responseBodyをCloseしないとコネクションがブロックしてしまい再利用されず、古い接続が残ったまま、新しく接続するたびに新しいGoroutineとファイルディスクリプタを作ってしまう responseBodyを読み切らないとkeepAliveされずコネクションが終了してしまい再利用されず、接続のたびに新しい接続を作ってしまう。 ということなのですが、コードではどうなっているか見てみましょう。 http.Get ~ client.sendまで http.Get -> client.Get -> client.Do -> client.sendまで http.Get func Get(url string) (resp *Response, err error) { return DefaultClient.Get(url) } ここのDefaultC

    Goのnet/httpのclientでなぜresponseBodyをClose、読み切らなくてはいけないのか
    W53SA
    W53SA 2023/10/04
  • Go1.21:slicesパッケージのチートシート | フューチャー技術ブログ

    The Gopher character is based on the Go mascot designed by Renée French. Gopherのイラストはegonelbre/gophersを利用しました。 はじめに記事はGo1.21連載の記事です。 こんにちは。TIG/EXユニット所属宮永です。 先日、第1回日遺産検定に晴れて合格し、日遺産ソムリエになりました。夏の旅行先をまだお決めでない方は、日遺産公式サイトを参考にして、日各地の魅力的なスポットを訪れてみてはいかがでしょうか。 日遺産については公式サイトの説明が非常にわかりやすいのでご覧になってください。 さて、記事のメインテーマとは異なる事柄を挟みましたが、ここからはGo1.21に追加されたslicesパッケージの解説を行います。 Go1.21のアップデート内容に関しては、すでに多くの解説記事が公開されてい

    Go1.21:slicesパッケージのチートシート | フューチャー技術ブログ
  • Goでのmigrationについて ~ ddl-maker × schemalex ~ - KAYAC Engineers' Blog

    この記事はカヤックアドベントカレンダー19日目の記事です。 はじめに こんにちは @Konboi です。 皆さん忘年してますか? 私は今のところ順調に忘年できており、今年何をしてたのか大分忘れました。 ちなみに先日行われたカヤック技術部の忘年会の様子です。 肉がきたぞー! pic.twitter.com/w4VIdmMNmO— Masatoshi Kawazoe (@acidlemon) 2016年12月16日 忘年してます pic.twitter.com/T7EW0Z5ZVm— jigya♧kkuma (@jigyakkuma_) 2016年12月16日 ということで表題の通り、今日の記事ではカヤックでのこれからのGoプロジェクトでのmigrationについて紹介しようと思います。 記事であつかう migrationはDB更新を差し 新規テーブルの作成 テーブル/カラム名の変更 テーブ

    Goでのmigrationについて ~ ddl-maker × schemalex ~ - KAYAC Engineers' Blog
  • Deep Dive into The Go's Web Server

    Gonet/httpパッケージはとてもよくできており、Webサーバーを動かすのに必要になる「httpコネクションを確立してリクエストを読んでルーティングして……」という手続き的な処理を気にせずとも誰でも簡単にWebサーバーを立てられるようになっています。 ですが、そのnet/httpが代わりにやってくれている「裏側の処理」の部分が気になる、何やっているんだろう?と不思議に思っている方はいませんか? このでは、実際に筆者がnet/httpパッケージのソースコードを読み込んだうえで、「GoのWebサーバーがどのような仕組みで起動・動いているのか」というところについて、図を使いながら解説しています。

    Deep Dive into The Go's Web Server
    W53SA
    W53SA 2023/07/14
  • GoでHeadless browserを使いClient Side Renderingを Cloud Run で動かす

    はじめに この記事は、Go言語でヘッドレスブラウザを実装したサーバ(サーバレスなので実際にはコンテナという表現が正しいかも知れません)を作り、Google Cloud Platform (GCP) の Cloud Run (Knative を使用) でセキュアに実行する内容となります。 ハンズオンではありませんが、少し手を加えれば動くものが作れるレベルの資料としています。 一応、なるべく幅広い読者層に分かりやすく伝えるため、人によって冗長的な説明に感じるところもあると思います。その場合は題に入る「Go で ヘッドレスブラウザ を実装したサーバを用意するの」 の章から読み進めて下さい。 Goals Go で CSR (Client Side Rendering / クライアントサイドレンダリング) に対応する方法が知れる たとえば CSR 対応のテストやスクレイピングなどの環境を作る知識が

    GoでHeadless browserを使いClient Side Renderingを Cloud Run で動かす
  • Go の sync.Map について調べる · Issue #53 · suzuki-shunsuke/issue

    You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert

    Go の sync.Map について調べる · Issue #53 · suzuki-shunsuke/issue
    W53SA
    W53SA 2023/02/21
  • ActivityPub サーバー、honk をカスタマイズしてみる | Coelacanth's Dream

    ActivityPub サーバー、honk をカスタマイズしてみる 最近の Twitter の情勢を受けて、他の SNS、特に Mastodon サーバーに移行または独自のサーバーを構築する人が増えている。 加えて自分の観測範囲では、以前に紹介した Ted Unangst 氏による Go言語製の ActivityPub サーバーの最小実装、honk を構築する人が増えている。1 honk は省メモリであるため、メモリ 512MB の VPS でも快適に動作する。 メインでも予備でも、個人で運用可能な ActivityPub サーバーが欲しい人にとって honk は有力な選択肢になると思う。 また、最小実装ということが手伝い、カスタマイズ、それによる再ビルドと再起動に必要とするコストは小さく、バイナリサイズも自分が運用しているもので 13M と小さい。 そこで、個人的に honk を運用しな

    ActivityPub サーバー、honk をカスタマイズしてみる | Coelacanth's Dream








ApplySandwichStrip

pFad - (p)hone/(F)rame/(a)nonymizer/(d)eclutterfier!      Saves Data!


--- a PPN by Garber Painting Akron. With Image Size Reduction included!

Fetched URL: http://b.hatena.ne.jp/W53SA/go/

Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy