並び順

ブックマーク数

期間指定

  • から
  • まで

1 - 28 件 / 28件

新着順 人気順

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

  • 趣味でつくった2Dゲームエンジンが導いた「幸」あるキャリア 己の欲求に従い続けた「Ebitengine」開発者に迫る レバテックラボ(レバテックLAB)

    TOPフォーカス趣味でつくった2Dゲームエンジンが導いた「幸」あるキャリア。己の欲求に従い続けてきた「Ebitengine」開発者に迫る 趣味でつくった2Dゲームエンジンが導いた「幸」あるキャリア。己の欲求に従い続けてきた「Ebitengine」開発者に迫る 2024年5月15日 Odencat株式会社 CTO 星 一(ほし・はじめ) ソフトウェアエンジニア。2009年にドワンゴでキャリアをスタートし、ドワンゴの関連会社やGoogle Japanなどを経て、2023年より現職。趣味では大学時代から2Dゲームエンジン開発に注力し、Google時代の2013年にEbitengineに着手し始める。2015年にVer1.0をリリース。カクヨムで「オレオ」と3文字だけ書かれた小説を手がけ、週間総合ランキング1位を獲得したことがある。 X GitHub Ebitengine公式サイト Odencat

      趣味でつくった2Dゲームエンジンが導いた「幸」あるキャリア 己の欲求に従い続けた「Ebitengine」開発者に迫る レバテックラボ(レバテックLAB)
    • awslim - Goで実装された高速なAWS CLIの代替品を作った - 酒日記 はてな支店

      最初に3行でまとめ AWS CLIは便利です。しかし起動が遅いので、Goで実装された高速な(ただし機能は少ない)代替品を作りました。awslim といいます リリースバイナリは無駄に大きいので、必要な機能だけを組み込んだビルドを簡単にできるようにしてあります。ビルドして使うのがお勧めです どうぞご利用下さい github.com 以下はこれに至るまでの経緯とか、実装や使い方の話とかです。長いです。 作成の経緯 AWSの各種サービスにアクセスするための AWS CLI は、スクリプトやコマンドラインから処理を自動化するために大変便利なツールです。AWSでサーバーサイドの開発、運用している人であれば、ほぼ全員がお世話になっているんじゃないかと思います。 しかし、AWS CLI (コマンド名aws) には「起動が重い」という問題があるなとずっと思っていました。具体的には、aws --versio

        awslim - Goで実装された高速なAWS CLIの代替品を作った - 酒日記 はてな支店
      • Goでモンキーパッチするライブラリを作った - Plan 9とGo言語のブログ

        Goで単体テストを実装する場合、動的な言語のように「テスト実行中に外部への依存を置き換える」といったことはできません。代わりに、 外部への依存を引数で渡す 外部への依存をインターフェイスで渡す のように、テスト対象をテスト可能な実装に変更しておき、テストの時は外部への依存をモック等に置き換えて実行する場合が多いのではないかと思います。 個人的な体験でいえば、テスト可能な実装に置き換えていく過程で設計が洗練されていく*1ことは度々あるので、面倒を強制されているというよりは設計を整理するための道具といった捉え方をしているのですが、そうは言っても動的な言語に比べると面倒だなと感じるときは少なからずあります。既存の実装がテスト可能になっておらず、変更するコストが高い場合は特にそうですね。 そんなとき、気軽にモンキーパッチできると嬉しいんじゃないかと思って、テストの時だけ関数を置き換えられるようなラ

          Goでモンキーパッチするライブラリを作った - Plan 9とGo言語のブログ
        • Go1.21から導入された Go Toolchainの仕組みをまるっと解説

          2023/8/9にリリースされたGo1.21 新たに導入されたツールチェーン(Go Toolchains) 次の内容を知ってもらい、Toolchainを使いこなせるようになること ・導入が必要となった背景 ・導入で期待されること ・具体的にはどう使うのか ・どんな挙動なのか

            Go1.21から導入された Go Toolchainの仕組みをまるっと解説
          • AWS CLIの起動が重くてつらいので aws-sdk-client-go を書いた / kamakura.go#6

            kamakura.go #6 でのLT資料です https://kamakurago.connpass.com/event/316438/ https://github.com/fujiwara/aws-sdk-client-go

              AWS CLIの起動が重くてつらいので aws-sdk-client-go を書いた / kamakura.go#6
            • Domain Event

              目次 概要 この記事の内容 対象読者 注意事項 前提知識 定義 用途 モデリング 不変性 独立性 汎用情報 個別の情報 Versioning 実装 前提 フレームワーク Domain Eventの処理 型定義 interface DomainEventEnvelope Enum Domain Eventの内部通知 staticなEvent Publisherを用意してAggregateがPublisherを呼び出す 実装例 AggregateのCommandの返り値としてDomain Eventを返す 実装例 Aggregateで保持してGetterで取り出す 実装例 永続化と外部通知 要件 永続化 外部通知 まとめ 参考文献 概要 この記事の内容 Domain Eventは非常にシンプルな概念かつ強力なモデリングパターンです。 モデリングにおいては直感的に扱うことが可能ですが、実装をする

                Domain Event
              • GitHub Actions 上での Go の Docker ビルドを高速化する

                どうも GitHub Actions 上で Docker ビルドを行うと時間がかかるなぁと感じていました。 かなり軽量の Go の Web アプリケーションを Docker イメージにしてプッシュするプロセスなのですが、全体で 3 分ほどかかっています。 今回はその速度改善を行ったので、得た知見を記事にしたいと思います。 最終的に、ケース次第では以下のような結果を出すことができました。 ※ケース = go のソースコードのほんの一部を変更してワークフローを実行する。 go.mod など依存関係に変化はない。 go build: 60秒 → 1秒 docker/build-push-action ステップ: 2分30秒 → 30秒 ワークフロー: 3分 → 1分 前提 go build は Dockerfile のステップで行っており、イメージとして以下のような内容になっています。 FROM

                  GitHub Actions 上での Go の Docker ビルドを高速化する
                • GoConference2024の資料が集まるスレ #gocon

                  これはサマリ(ここを更新していきます)情報提供(コメント)歓迎!! イテレータによってGoはどう変わるのか Dive into gomock Data Race Detection In Go From Beginners Eye Go1.21から導入されたGo Toolchainの仕組みをまるっと解説 Cleanup handling in Go Custom logging with slog: Making Logging Fun Again! Goにconst型修飾を期待しなくてよい理由 GoのLanguage Server Protocol実装、「gopls」の自動補完の仕組みを学ぶ バイナリを眺めてわかる gob encoding の仕様と性質、適切な使い方 Unified Diff 形式の差分から Go AST を構築して feature flag を自動計装する Mapのパ

                    GoConference2024の資料が集まるスレ #gocon
                  • 自動化するならちゃんとエラーを出せ。想定しろ。不安になれ。 - じゃあ、おうちで学べる

                    はじめに 自動化やツール開発において、通常時に上手くいくのは当たり前です。大切なのは失敗を想定することです。自動化したツールがエラーも出さずに実行結果的にも成功してるので動いていると思っていたら、実は問題が発生していて泣いた経験は、多くの人にあるのではないでしょうか。エラーを出力し、適切に失敗させて、ログに記録することで、問題の早期発見と迅速な対応が可能になります。また、エラーが発生する可能性のある箇所を事前に想定し、適切に処理することで、ツールの信頼性と安定性が向上します。 しかし、エラーハンドリングができていても、それだけでは不十分です。優れた自動化ツールは、環境の変化に柔軟に対応できるようにコードが設計されているべきです。 また、自動化ツールの完成度を高めるには、エラーハンドリングだけでなく、保守性、拡張性、ユーザビリティなども考慮する必要があります。 自動化ツールを開発する際は、常

                      自動化するならちゃんとエラーを出せ。想定しろ。不安になれ。 - じゃあ、おうちで学べる
                    • マイクロサービス化するならリビルドで!ビジネスロジックをGoで書き直してわかったこと - MonotaRO Tech Blog

                      この記事では モノタロウがGoとprotobufで進める爆速マイクロサービス開発とそれを支えるプロセス - MonotaRO Tech Blog のうち、主にアーキテクチャにおける詳細について紹介します。 自己紹介 マイクロサービス化について 課題を認識する スコープと技術選定 ゴールイメージを共有する 既存コードから分かった問題点 曖昧なデータ構造 処理フローの混在 アドホックなデータ取得 効果的な改善を行う 処理フローを分割する N+1問題とロジックの独立性を考慮した設計 安全に移行する 実行時のデータを取る 新旧比較による検証 まとめ 自己紹介 藤本 洋一 プラットフォームエンジニアリング部門 CTO-Officeグループ AVLチーム 楽天、SaaSベンチャーを経て、モノタロウに入社してマイクロサービス化にとりくむエンジニアの話 2019年5月入社。商品検索基盤のマイクロサービスと

                        マイクロサービス化するならリビルドで!ビジネスロジックをGoで書き直してわかったこと - MonotaRO Tech Blog
                      • Table-driven testing に縛られないGoのテストパターン

                        2024/06/08に開催されたGo Conference 2024のLTで発表した資料です。 https://gocon.jp/2024/sessions/19/

                          Table-driven testing に縛られないGoのテストパターン
                        • Goの標準のutf8.RuneStart関数がエレガントすぎる

                          先日以下の記事を書きました。 ここでUTF-8の最初の文字かどうかの判定を以下の自作した関数で実装していました。 const ( t1 = 0b00000000 tx = 0b10000000 t2 = 0b00000110 t3 = 0b00001110 t4 = 0b00011110 ) func isUTF8LeadByte(tmp byte) bool { if tmp&tx == t1 { return true } tmp >>= 3 if tmp == t4 { return true } tmp >>= 1 if tmp == t3 { return true } tmp >>= 1 if tmp == t2 { return true } return false }

                            Goの標準のutf8.RuneStart関数がエレガントすぎる
                          • Cleanup handling in Go / Go Conference 2024

                            CI/CDがあたりまえの今の時代にAPIテスティングツールに求められていること / CI/CD Test Night #7

                              Cleanup handling in Go / Go Conference 2024
                            • Dive into gomock / Go Conference 2024

                              Go Conference 2024 https://gocon.jp/2024/

                                Dive into gomock / Go Conference 2024
                              • スタックトレース始めてみた

                                社内のLT会で使用した資料です。 URL p.8 比較・検討 https://pkg.go.dev/github.com/pkg/errors https://pkg.go.dev/golang.org/x/xerrors https://github.com/juju/errors https://github.com/go-errors/errors https://github.com/morikuni/failure https://github.com/hashicorp/go-multierror https://github.com/rotisserie/eris https://github.com/cockroachdb/errors p.17 参考 https://www.datadoghq.com/ja/product/error-tracking/ https://

                                  スタックトレース始めてみた
                                • イテレータによってGoはどう変わるのか - Gopher Day Taiwan 2024 基調講演登壇レポート

                                  はじめに 株式会社ナレッジワークの上田(@tenntenn)です。 2024年5月25日(土)に台湾で行われたGopherDay Taiwan 2024というGoのカンファレンスにキーノート(基調講演)スピーカーとして招待頂き参加しました。 登壇中の様子 筆者は過去に海外カンファレンスであるGopherCon(アメリカ)やGopherCon India(インド)にプロポーザルを提出し、登壇した経験があります。しかし、基調講演を行うのは初めてで英語の登壇も数年ぶりでした。 基調講演のお誘いは、前職(株式会社メルペイ)の同僚であるtenling(てんりん)さんからで、2023年のアメリカで行われたGopherConでお話したことがきっかけでした。 他の登壇者との写真。左からマネーフォワードのluccafortさん、メルペイのtenlingさん、筆者、LINEのDevRelで筆者と同じGoogl

                                    イテレータによってGoはどう変わるのか - Gopher Day Taiwan 2024 基調講演登壇レポート
                                  • GitHub - glanceapp/glance: A self-hosted dashboard that puts all your feeds in one place

                                    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 - glanceapp/glance: A self-hosted dashboard that puts all your feeds in one place
                                    • GitHub - AccentDesign/gcss: CSS written in Pure Go

                                      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 - AccentDesign/gcss: CSS written in Pure Go
                                      • GoでParserを書く

                                        kamakura.go #6 https://pkg.go.dev/golang.org/x/tools/cmd/goyacc https://github.com/alecthomas/participle https://github.com/karupanerura/gqlparser https://github.com/karupanerura/runetrie

                                          GoでParserを書く
                                        • Don’t return err in Go — akavel's digital garden

                                          Instead, add missing details relevant for debugging. Some people like to complain that Go requires writing tons of “if err != nil { return err }” blocks. Those people don’t understand Go errors. The thing is, what they complain about is actually a completely wrong way of handling errors in Go: return err is an antipattern. Let me show what I mean on some sample code: a helper library for configuri

                                          • PGOによるコンパイラ最適化 / Compiler Optimization with PGO

                                            Go1.13以後のエラーハンドリングについて語ろう / Let's talk about error handling after Go 1 13

                                              PGOによるコンパイラ最適化 / Compiler Optimization with PGO
                                            • grpc-goのNewClient()を使うとbufconnを使ったテストがUnavailableでコケる件の対処法

                                              TL;DR grpc-go v1.64.0からDial()やDialContext()がDeprecatedとなった 代わりに推奨されたNewClient()を使うとbufconnを使っているテストがUnavailable(name resolver error: produced zero addresses)で落ちる 初期化として resolver.SetDefaultScheme("passthrough") を突っ込むと動くよ 原因 gRPCクライアントを作成する際、従来のDial(), DialContext()ではデフォルトのネームリゾルバーは passthrough として作成されます。 これがNewClient()からは dns になったためです。 bufconnは passthrough であることが前提で作られているためエラーになります。 rpc error: code

                                                grpc-goのNewClient()を使うとbufconnを使ったテストがUnavailableでコケる件の対処法
                                              • ピュアP2P分散マイクロブログシステム NostrP2Pを作ってみた - Qiita

                                                こんにちは。 ryo_grid です。 今回はピュアP2P分散マイクロブログシステム NostrP2Pというものを作ってみたのでそれについて書いてみます。 ひとまず開発物のGitHubリポジトリはこちら ryogrid/nostrp2p ryogrid/flustr-for-nosp2p アイキャッチ画像です。 前提知識 Nostr プロトコルについてのざっくりとした理解 こちらの記事などに目を通しておいていただければ十分かと 開発しようと思った経緯 元々NAT透過なオーバレイ上で動作するピュアP2Pなアプリケーションを作ってみたかった DHTベースの分散KVSを作ったことがあったが、NATの壁を超えることはできなかった 上の思いから、ひとまずgossipプロトコルなどで雑にNAT透過なオーバレイを実装できないか考えていた => そのものずばり、どころかよりインテリジェントな実装であるwe

                                                  ピュアP2P分散マイクロブログシステム NostrP2Pを作ってみた - Qiita
                                                • Abusing Go's infrastructure

                                                  I apologize if this information is already known, but I couldn’t find any references about it and I wanted to understand what was going on and share with you because I think there is some value doing it. In case this wasn’t known, I apologize to the Go team for not talking to them first and jumping the full disclosure gun (I don’t think it’s that severe). I really like Go! Thanks for all your grea

                                                  • github.com/golang/goのissueを検索する

                                                    Profile id: Songmu (ソンムー) Masayuki Matsuki / 松木雅幸 株式会社ヘンリー VP of Engineering おそらくはそれさえも平凡な日々 http://www.songmu.jp/riji/ https://metacpan.org/author/SONGMU 好きな言語は、PerlとGoと中国語 3 Times ISUCON Winner Using Perl 入門監視 付録C 執筆 「みんなのGo言語」共著者

                                                    • Goのライブラリのバグを見つけてから直すまで layerx.go#0

                                                      layerx.go #0 概要 LayerXでは、バクラク事業部で開発・運用しているバクラクをはじめ、ほか事業部が開発しているほとんどのサービスでGo言語を利用しています。また、2023年の夏頃からは「Go 読書会」を社内の有志にて開催しており、組織横断的にGoの知見を交換しています。 本イベント「layerx.go」では、LayerXのGo言語の"実践的な"活用事例を共有するだけでなく、社外の方からの知見も積極的に取り入れる場として位置付けています。LayerXの行動指針"Bet Technology"と"徳"の観点から、本イベントを継続的に開催することでGo言語の裾野を広げていきたいと考えています。 初回のテーマは「Goの情報収集や知見の共有活動 / Goのプロダクトコードのキャッチアップ」です! https://layerx.connpass.com/event/317228/

                                                        Goのライブラリのバグを見つけてから直すまで layerx.go#0
                                                      • 試してわかるGo ModulesとMinimal Version Selection

                                                        試してわかるGo ModulesとMinimal Version Selection @shino_nobishii(のびしー) for Go Conference 2024 (↓スライドURL)

                                                          試してわかるGo ModulesとMinimal Version Selection
                                                        • Implementing MVCC and major SQL transaction isolation levels | notes.eatonphil.com

                                                          In this post we'll build a database in 400 lines of code with basic support for five standard SQL transaction levels: Read Uncommitted, Read Committed, Repeatable Read, Snapshot Isolation and Serializable. We'll use multi-version concurrency control (MVCC) and optimistic concurrency control (OCC) to accomplish this. The goal isn't to be perfect but to explain the basics in a minimal way. You don't

                                                          1