Content-Length: 354675 | pFad | http://b.hatena.ne.jp/igrep/golang/
A few weeks ago, we launched Dagger Cloud v3, a completely new user interface for Dagger Cloud. One of the main differences between v3 and its v2 predecessor is that the new UI is written in WebAssembly (WASM) using Go. At first glance, this might seem an odd choice - Go typically isn't the first language you think of when deciding to program a Web UI - but we had good reasons. In this blog post,
Have you ever wished your shell scripts could be faster, more portable, and secure ? Bunster brings this to life by transforming your shell scripts into efficient, standalone binaries that are easy to distribute and deploy across platforms (only unix is supported at the moment). Unlike other tools, Bunster doesn’t just wrap your scripts in a binary—it compiles them down to efficient native machine
pprof is a tool for visualization and analysis of profiling data. pprof reads a collection of profiling samples in profile.proto format and generates reports to visualize and help analyze the data. It can generate both text and graphical reports (through the use of the dot visualization package). profile.proto is a protocol buffer that describes a set of callstacks and symbolization information. A
はじめに Go Advent Calendar 2024 に参加の皆さま、お疲れさまでした。今年も良い Go ライフを送れたでしょうか。来年も良い Go 縁があると良いですね。 さて今日は strings.Replacer の話をしようと思います。 キーワード置換やってますか GitHub を見ているとよくこんなコードを目にする事があります。 s = strings.ReplaceAll(s, "hoge", "moge") s = strings.ReplaceAll(s, "foo", "bar") s = strings.ReplaceAll(s, "fizz", "buzz") 複数ある特定のキーワードを置換するコードですが、実はとても効率が悪いのです。strings.ReplaceAll は第一引数の文字列を走査し、第二引数にマッチした場合に第三引数へ置換し続ける実装です。つまり
この記事は、Go Advent Calendar 2024 シリーズ2 6日目の記事です。 はじめに Go で、Web サーバーアプリケーションを開発する場合、Routing は標準ライブラリもかなり便利になり、DB アクセスについても、それぞれの目的や好みにに合わせて選択肢があると思います。それでも、Go が Web アプリケーションを作成することに向いていないという評判があるように思います。これは、いろいろある html テンプレートエンジンに機能が足りないということではなく(htm/template などはそれだけで一つの言語システムと言ってもいいと思います)、使い心地が、Go を使いたい理由にうまくあっていないことだと思います。 そこで、思いついたことがありますので書こうと思います。 golang.org/x/net/html パッケージ この準標準パッケージは、html を パー
はじめに こんにちは、StackdriverあらためGoogle Cloud Operations担当者です。Google Cloud Operationsもさることながら、Go Conferenceの運営など、長らくGoコミュニティに関わってきましたが、まだまだ知らないことがあったということを昨日今日で知ったので共有します。 time.minWall time.minWall という値があります。 src/time/time.go - go - Git at Google const ( hasMonotonic = 1 << 63 maxWall = wallToInternal + (1<<33 - 1) // year 2157 minWall = wallToInternal // year 1885 nsecMask = 1<<30 - 1 nsecShift = 30 ) こ
singleflight とは gin とは Middleware Context 2つの実装例 1. 同期待ち方式 2. 非同期待ち方式 まとめ こんにちは。SRE 兼 テックブログ編集長の izzii です。毎年お盆休みに連泊で登山するのですが今年は台風の影響で行けませんでした。悲しい! さて、本記事ではパフォーマンス最適化の文脈で登場することの多い singleflight と、ウェブフレームワーク gin を組み合わせた実装例を紹介します。要素技術の概要とモチベーションに触れつつ、試行錯誤についてもお話しします。実装に関しては結局妥協が必要であり正解の形がないので GitHub で公開という形ではなく、ブログを通して自分の考えた2つの実装を紹介することにしました。この記事は Go に関する基礎知識を必要とします。 singleflight とは 複数のスレッド(go routine
まえがき Go 1.23でiteratorが導入されました。 https://tip.golang.org/doc/go1.23 話題になっていたので見てみたんですが、少し見ただけでは、使い方、何を解決するのか、なぜこういう仕様になっているのかが分からなかったので調べました。それで分かったことの自分の理解をまとめます。 何を解決するのか Goのfor-rangeでは元々slice, map, channelなどをiterateすることは出来ましたが、これらの型で対応できない、より一般的な抽象化・統一化されたiterationの手段はありませんでした。具体的には、例えば bufio.Reader.ReadByte を用いてiterateすると以下のようなコードになります。 for { b, err := reader.ReadByte() if err != nil { if err ==
はじめに こんにちは、ken です。お仕事では Go をよく書きます。 最近、Go の公式パッケージであるgolang.org/x/toolsを眺めていたら、なにやら有用そうなパッケージを見つけたので今回はそれについて書こうと思います。 それはegというリファクタリングツールです。 eg とは eg は、例ベースで Go コードをリファクタリングするためのツールです。このツールを使用することで、特定のコードパターンを別のコードに置き換えることができ、効率的にリファクタリングが行えます。 先ほど貼った公式ドキュメントに詳しい説明があるかと思いきや The eg command performs example-based refactoring. For documentation, run the command, or see Help in golang.org/x/tools/ref
先日Cloudflare Workersでウェブページの本文を抽出したくなったことがありました。本文抽出といえば、@mozilla/readabilityが使えそうです。しかし依存に含まれるnwsapiにはFunctionコンストラクタが多用されており*1、Cloudflare Workersでは動作しません。これを修正するのも大変そうです。 そこで、TinyGoを使用してgo-readabilityをwasmにコンパイルしてみることにしました。 TinyGo のドキュメントUsing WASM | TinyGo のままではCloudflare Workersでは動かなかったので、TinyGoに含まれるwasm_exec.jsを少し修正したり*2、 import側もwasmファイルをfetchしているのを変更したり*3すると無事動きました。 動作するコードは https://github.
イテレータについて完全理解するぞ!!!! 皆さん、Go1.23でイテレータが実装されたことはご存知でしょうか? Go1.18でジェネリクスが導入されて書き方の幅が広がったように、今回のイテレータもGoの書き方の幅を広げる機能になるのではと思っています! このブログでは、イテレータ実装にあたって導入された型/関数とその使い方を深ぼっていきたいと思います! このブログの中では「range over func」のことを「イテレータ」と呼ぶことにします。また、このブログ内で使用するコードはGo1.23.2で書かれています。手元でインストールして手を動かしながら、学んでいってもらえれば幸いです! さっそくイテレータを深ぼる issueの内容をおさらい おさらいとして、イテレータがどういう仕様なのかを見ていきます。 仕様はこちらのissueに一部まとまっているので抜粋します。最終的な仕様はThe Go
こんにちは、CyberFight DX 事業本部で web フロントエンドエンジニアをしている久保です。CyberFight DX 事業本部は複数のエンタメサービスを開発、運用するFANTECH本部に所属しています。今回は、管理画面を対象に WebAssembly ( Wasm ) を導入した事例をご紹介します。 FANTECH 本部では技術ブログでの発信を強化しており、最近では下記のような記事を投稿しています。ぜひご一読ください。 Cloud Run サイドカーで Fastly の Prometheus Metrics を収集して Grafana で可視化する reminder-lintでFeature Flagsの削除漏れを防ぐ マルチリージョンで稼働する内製Feature Flagsの実装 私たちのプロダクト WRESTLE UNIVERSE では、ユーザー対象のキャンペーンを実施す
HRBrain Advent Calendar 2023 25日目の記事です。 はじめに こんにちは。@yug1224(Yuji Yamaguchi)です。 これまで、pre-commit/pre-push時のLint実行にhusky+lint-stagedを使っていましたが、Monorepo環境だと設定が少し複雑になってしまうので、Lefthookを試してみることにしました。 Lefthookとは The fastest polyglot Git hooks manager out there A Git hooks manager for Node.js, Ruby and many other types of projects. Fast. It is written in Go. Can run commands in parallel. Powerful. It allows
はじめに この記事は、Go 言語 Advent Calendar 2023 シリーズ2の16日目の記事です。 こんにちは。reo です。 今年も気づけばアドベントカレンダーの時期ですね。 社のカレンダーにも参加したので、こちらも宣伝させていただきます。 今回はTrivyのWebAssembly拡張について紹介させていただきます。 前提 以下は詳しく触れません。 WebAssembly の概要 WebAssemblyランタイム(wazero)について Trivyの全体像について 掲載内容は私自身の見解であり、必ずしも所属する企業や組織の立場、戦略、意見を代表するものではありません。1 Trivy とは 公式の README にもあるとおり、コンテナイメージからファイルシステム、Gitリポジトリ、Kubernetes、AWSなど幅広いターゲットに対して、既知の脆弱性(CVE)や機密情報、IaC
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く
Fetched URL: http://b.hatena.ne.jp/igrep/golang/
Alternative Proxies: