皆様こんにちは、メドピアのサーバーサイドエンジニアの内藤(@naitoh)です。 社内の OpenID Connect Authorization Server を Golang 実装から Rails 実装にリプレイスしたので、技術ブログで紹介させていただきます。 前提 OpenID Connect は OAuth 2.0 認可プロセスを拡張し、認証目的で利用できるようにしたものになります。 Authorization Server は OpenID Provider (以下OP) とも呼ばれ、OpenID Conn...| メドピア開発者ブログ
本文永久链接 – https://tonybai.com/2025/09/30/good-taste-in-software-engineering 大家好,我是Tony Bai。 在软件工程领域,我们习惯于用“技术能力”(Technical Skill)来衡量一位工程师的优劣。他是否精通并发模型?能否写出高性能的代码?对底层原理的理解有多深?这些能力可以通过学习和重复练习来获得,是我们评价体系中的“硬通货”。 然而,github工程师Sean Goedecke在他最新的博文...| Tony Bai
本文永久链接 – https://tonybai.com/2025/09/29/synctest-bugs-in-go-1-25 大家好,我是Tony Bai。 Go 1.25的发布,为我们带来了一个期待已久的“并发测试神器”—— testing/synctest。这个在Go 1.24中作为实验性功能首次亮相的包,承诺将我们从time.Sleep、channel和各种脆弱的同步技巧中解放出来,让我们能够编写出快速、可靠、确定性的并发测试。 然而,任何强大的新工具在投入真实世界的熔炉...| Tony Bai
本文永久链接 – https://tonybai.com/2025/09/27/direct-ref-to-embedded-fields-in-struct-literals 大家好,我是Tony Bai。 在 Go 语言中,结构体嵌入 (Embedding) 是一个强大而独特的特性,它为我们提供了一种优雅的“垂直组合”方式。然而,多年来,它的使用体验中一直存在一个广为人知的“反直觉”之处,一个让无数开发者(包括 Go 核心团队成员自己)都曾踩过的坑。 近日,一个旨在解决此问...| Tony Bai
本文永久链接 – https://tonybai.com/2025/09/23/go-maphash-portability-costs-and-runtime-boundaries 大家好,我是Tony Bai。 对于大多数Go开发者来说,标准库似乎是一个浑然天成的整体。我们理所当然地使用着fmt、net/http和encoding/json,很少去思考它们内部的依赖关系和架构边界。然而,在标准库光鲜的外表之下,一场关于其核心架构的深刻变革正在悄然发生,而hash/maphash这个看似不起眼的包,...| Tony Bai
Heroku recently made the next generation platform - Fir - generally available. Fir builds on the strengths of the Cedar generation while introducing a new modern era of developer experience. Fir leverages modern cloud-native technologies to provide a seamless and performant platform. One of the goals we set out to achieve with Fir is to modernize our platform's observability architecture. Applications being written today are becoming increasingly more distributed and complex in nature. With t...| Heroku
The story of how QuestDB optimizes the Time-Series Benchmark Suite.| QuestDB Blog
本文永久链接 - https://tonybai.com/2025/09/09/the-power-of-ten-in-go 大家好,我是Tony Bai。 在软件工程领域,有些智慧是永恒的。 2006 年,NASA/JPL(喷气推进实验室)的 Gerard J. Holzmann 公布了其团| tonybai.com
ANDPADでGoを利用して諸々のプロダクトを作っているtomtwinkleです。 2025年6月18日(水)、「golang.tokyo #39」が、弊社アンドパッドのオフィスで開催されました! アンドパッドにとってGo関連イベントの会場提供は初めての試み。運営メンバーとして「皆さんに楽しんでいただけるだろうか…」 とドキドキしていましたが、当日は多くの方にお集まりいただき、大盛況のうちに...| ANDPAD Tech Blog
Introducing Sentire, a powerful command line interface for interacting with Sentry API, enabling developers to manage error tracking and monitoring directly from the terminal.| Andrea Grandi
Go, often referred to as Golang, is a modern programming language developed by Google. Thanks to its efficiency, simplicity, and robust support for| Golang Docs
New Kratix Promise-writing SDKs in Python and Golang| docs.kratix.io
本文永久链接 - https://tonybai.com/2025/08/06/go-new-engine-of-old-languages 大家好,我是Tony Bai。 我先来描述一种编程语言生态,请你猜猜它是谁: 它诞生于 1995 年,旨在为当时一个叫“万维网”的新| tonybai.com
Have you ever wondered what happens with the variables you define in your Golang (Go) programs? Do they exist forever, or are they recycled at some point? Where do they live in memory and how are they managed?| blog.allegro.tech
Using mise-en-place| Field Notes
Operating systems expose a wall clock that can leap or slew with NTP and a monotonic clock that never runs backward. In Go, only time.Now (might) carries both readings, while values from time.Parse, time.Date, etc., are wall-clock-only—so naïve equality checks or time.Since on those can mislead when the system clock shifts.| VictoriaMetrics
本文永久链接 - https://tonybai.com/2025/07/22/cedardb-choose-cpp-rather-than-rust 大家好,我是Tony Bai。 近年来,Rust 语言无疑是技术圈最炙手可热的明星。它以“内存安全”的核心承诺,向统治了系统编程领| tonybai.com
本文永久链接 - https://tonybai.com/2025/07/19/go-understand-the-zen-of-python-better-than-python 大家好,我是Tony Bai。 最近,在国外的 Go 语言社区(Reddit r/golang)上,一个帖子引发了热烈的讨论。| tonybai.com
Previous posts Why Go is not my favourite language and Go programs are not portable have me critiquing Go for over a decade.| blog.habets.se
Some members from http://guayahack.co came up with the idea for us to practise and discuss some code katas together and I couldn’t resist.| Jayson Salazar Rodriguez | @jdsalaro | Blog
In the best spirit of over-engineering for fun, this minimalistic post documents the way my snippets land over at https://github.com/jdsalaro/jdsalaro.com/tree/main/snippet.| Jayson Salazar Rodriguez | @jdsalaro | Blog
The Largest Collection of Pre-Compiled Go Static Binaries| Package Forge
A blog about computers, functional languages, Lisp, and Scheme.| funcall.blogspot.com
An overview of GoToSocial: a fast, lightweight, security-focused server that makes self-hosting on the Fediverse easy| Elena Rossini
A sleek, modern take on 'ls'| Xer0x's Underground
Today we're going to continue exploration of Conflict-free Replicated Data Types domain. This time we'll start designing protocols that focus on a security aspects as first class citizens. Managing security and permissions in peer-to-peer systems may be quite cumbersome as often there's no single| Bartosz Sypytkowski
JSer.info #736 - TypeSciptのGo言語でのネイティブ実装である@typescript/native-previewが公開されました。| JSer.info
This is a short collection of tips and tricks showing how Docker can be useful when working with Go code. For instance, I’ll show you how to compile Go code with different versions of the Go toolchain, how to cross-compile to a different platform (and test the result!), or how to produce really small container images. The following article assumes that you have Docker installed on your system. It doesn’t have to be a recent version (we’re not going to use any fancy feature here). Go wit...| Play with Docker classroom
Hello, friends! I’ve been doing software development professionally for a few years now, and I’m noticing a trend in newer languages that I’m really liking: putting errors front a…| Shaffan's Blog
Go applications can implement graceful shutdown by handling termination signals (SIGTERM, SIGINT) via os/signal or signal.NotifyContext. Shutdown must complete within a specified timeout (e.g., Kubernetes’ terminationGracePeriodSeconds)…| VictoriaMetrics
Last week I shared an interview question I've used successfully at Network Next. In this article I share the solution.| Más Bandwidth
In this article I share an interview question I've used for years at Network Next. How to implement a highly scalable backend in UDP. Can you solve it?| Más Bandwidth
Database migrations are fundamental to modern software development, allowing teams to evolve their database schema in a| atlasgo.io
看到一个 Golang 的模式,用一个 function 来实现一个 interface,function 本身就是 interface 的实现。初次看到看了好久才想明白。在这里记录一下。| www.kawabangga.com
| Thomas Hunter II
| Thomas Hunter II
| Thomas Hunter II
| Thomas Hunter II
| Thomas Hunter II
Using version managers| Field Notes
Go is designed to be able to build untrusted packages safely without running any code from them. Unfortunately, this is easier said than done.| Tempus Ex
Generics in Go have come much closer to becoming a reality. Here's what the latest design looks like and how you can try out generics yourself.| Tempus Ex
この記事はIPFactory Advent Calendar 2021 25日目の記事です。 qiita.com こんにちは、futabatoです。 先日、MBSD Cybersecurity Challenges 2021の最終審査会を終えました。 setten.sgec.or.jp y0d3n, okodayon, l7elVliと出場したチーム「After_the_CM」は第三位でした。 MBSD Cybersecurity Challenges 2021 第3位でした。ひよってばかりの僕に背中を押してくれたチームメイトにはとても感謝しています。幸せな5ヶ月...| アルゴリズム弱太郎
本文永久链接 - https://tonybai.com/2025/02/08/personal-idea-about-using-question-mark-operator-in-go-error-handling-new-proposal 0. 背景 Ian Taylor在关闭了旨在消除Go错误处理样板代码的issue之后,又| tonybai.com
About 2 months ago, I've released Evilginx 2. Since then, a lot of you reported issues or wished for specific features. Your requests have been heard! I've finally managed to find some time during the weekend to address the most pressing matters. [>> Download Evilginx| BREAKDEV
KES is a stateless and distributed key-management system for high-performance applications. We built KES as the bridge between modern applications - running as containers on Kubernetes - and centralized KMS solutions. Therefore, KES has been designed to be simple, scalable and secure by default.| MinIO Blog
I had the privilege of attending GopherCon UK last week, and among the many captivating talks, one that stood out to me was "Structured Logging for the Standard Library" presented by Jonathan Amsterdam.| Dusted Codes
Hitless TLS certificate rotation is critical to continue our quest of reducing certificate expiration times, while keeping our sanity intact.| Diogo Mónica
我和我的同事们排查网路问题非常喜欢 MTR,它是 traceroute 和 ping 的结合,可以快速告诉我们一个网络包的路径。是哪一跳丢包,或者延迟太高。| www.kawabangga.com
Go 1.18 just came out, so I’m looking over the new features.| fREW Schmidt's Foolish Manifesto
Go 1.18 will be adding Go’s version of generics pretty soon. I wanted to get a feel for how I might use them. Read on for a concrete example.| fREW Schmidt's Foolish Manifesto
I wrote a weird little tool to draw stuff with code. It was fun!| fREW Schmidt's Foolish Manifesto
本文永久链接 - https://tonybai.com/2024/12/05/exploring-nat-mapping-assignment-and-filtering-behavior-of-docker-default-network 在《WebRTC第一课:网络架构与NAT工作原理》一文中,我们对WebRTC的网路架| tonybai.com
本文永久链接 - https://tonybai.com/2024/11/27/webrtc-first-lesson-network-architecture-and-how-nat-work 2023年下旬,OpenAI与Livekit的合作在科技圈引起了不小的轰动。这两家公司联手,通过WebRTC技术和大| tonybai.com
Join us as we explore seemingly safe but deceptively tricky ground in Elixir, Python, and the Golang standard library. We cover officially documented, or at least previously discussed, code functionality that could unexpectedly introduce vulnerabilities. Well-documented behavior is not always what it appears!| Include Security Research Blog
In high-performance applications, managing tasks concurrently can help maximize efficiency and reduce execution time. One common concurrency pattern for task processing is the Worker Pool. A worker pool is a mechanism where multiple tasks are distributed among a fixed number of workers that process them concurrently. In Go, with its lightweight goroutines, creating a worker […]| Golang Docs
Go 1.22 was released on February 6, 2024. This version introduces several language and performance improvements, including a fix for loop variable scope| Golang Docs
eBPFs are fun. They present an easy way to insert pieces of code in the kernel which are compiled to opcodes which are guaranteed to not crash it: The instructions allowed are limited, backward jumps are not allowed (so no indefinite looping!) and you can’t dereference pointers, but can instead do checked reads from pointers which can fail without panicking the entire system. You can attach an eBPF to thousands of hooks in the Linux kernel - uprobes, kprobes, tracepoints, even things like p...| nikofil’s blog
A good excuse to play around with some interesting tools| Luca Pette
I have been using Go long enough to form opinions around it| Luca Pette
A quick overview of deloominator tech stack| Luca Pette
deloominator is a Go/React application I’ve been working in the past few months and it’s time to open-source it| Luca Pette
how I do end-to-end testing of Go CLI applications| Luca Pette
A short tale about my first steps with go and docker| Luca Pette
Learn how Alex bought a set of chisels by monitoring the price using HTML scraping and a cron job with OpenFaaS. You can apply the same technique for things you’d like to buy or monitor.| OpenFaaS - Serverless Functions Made Simple
This post describes how to apply HTMX functionality with the Raku Cro web framework. I have already shared a couple of precursor posts that explain separately Why HTMX? and Why Cro?. Why HTMX and C…| Raku::Journey
Long time no see friends! Despite this break period ended up not being as long as I hoped| evilsocket
After my last post and generally the kind of indirect advertising I’m doing to the Go programming language for a few months now, I heard about and talked with a lot of people who started being interested in the language, so for once I decided to write what I don’t like about it instead, to provide a more balanced perspective of what’s my experience so far and maybe let some of those people realize that Go is not the right choice for their projects after all. NOTE 1 It’s important to s...| evilsocket
It’s with immense pleasure that I announce the release of the second generation of bettercap, a complete reimplementation of the most complete and advanced Man-in-the-Middle attack framework. This release not only brings MITM attacks to the next level, but it aims to be the reference framework for network monitoring (we <3 blueteams too), 802.11, BLE attacks and more! :D ベッターキャップ!| evilsocket
For the last few days I’ve been working on a new project which I developed for very specific needs and reasons: I need to store safely (encrypted) my passwords, sensitive files, notes, etc. I need to access them from anywhere, with every possible device ( desktop, mobile, terminal ). I need those objects to be syncronized accros all my devices. I don’t want to use “the cloud”. I don’t want to pay for a server. I don’t want to enable port forwarding and host it myself with DynDNS o...| evilsocket
JetBrains has updated its IDEs with the 2024.2 release, containing many new features including a radical change to […]| DEVCLASS
本文永久链接 - https://tonybai.com/2024/08/04/gopherdaily-add-feed-support 在《Russ Cox“退位”,Go语言将迎来新领袖,未来将如何发展》一文的评论区,有Gopher问及gopher-daily.com的HTTPS证书过期的问题,| tonybai.com
Honeycomb engineers provide an early look into Amazon’s newly released R8g instances powered by the AWS Graviton4 processor.| Honeycomb
Although I work for a mostly remote work company, a couple of times a year we meet together for a week in some nice location of the world. When that happens, multiple meetings across people in different teams are organized. Sometimes the number of requested sessions gets out of hands and the scheduling team is … Continue reading "How to schedule meetings in the minimal number of time slots"| Alfonso Sánchez-Beato's blog
本文永久链接 - https://tonybai.com/2024/06/22/how-things-get-done-on-the-go-team 在Go 1.23版本即将发布(2024.8)之前,在GopherCon 2024开幕(2024.7)之前,Go团队成员Cameron Balahan(Go产品负责人)、 Samee| tonybai.com
お久しぶりです、ANDPADボードの tomtwinkle です。 この記事はGoの go:linkname 騒動は 6/18に行われた Go Bash で話した内容を要約したものです。 そもそも go:linkname とは何かといえば internal packageやprivate var/funcなど普通はアクセスできないオブジェクトシンボルをエイリアス出来るようCompilerに指示して、アクセス可能にするcompiler directiveです。 go:linkname はprivateな変数へアクセ...| ANDPAD Tech Blog
The beauty of the jorge serve command was that I could start with a naive implementation and iterate towards the ideal one, keeping it functional at every step of the way. This post summarizes that process.| jorge
Dumping some notes I took while I was setting up my environment and reading the bare minimum to get started with Go programming.| jorge
... so if you imagine f is the computation you want to remain the same regardless of whether it's operating on a base64'd input or not, and g is the base64 function, and x is a not-base64'd input, then f(g(x)) = g(f(x)) ... Oooooohhhhh yes so f = user reads the word 'example', g = base64| SequentialRead
Once you get used to working with gofmt on a daily basis, you want to have it everywhere. I have been writing a good amount of assembler for Go, and I was getting annoyed by not having similar functionality for assembler. This lead to having to manually align and re-align comments. I also often encountered...| defer time.Sleep()
Continous Integration tests are an important part of maintaining package stability. Since Travis has recently made it possible to run tests on OSX and with AppVeyor having Windows support, we now can create free CI tests for all the major desktop platforms. For my various packages, I find that I commonly copy+paste my CI tests,...| defer time.Sleep()
This post will introduce the concept of deduplication and a Go package I have written to help you implement it. It is inspired by the work on the zpaq journaling archiver done by Matt Mahoney. If you are looking for a pure commandline tool, I can also recommend SuperRep by Bulat Ziganshin. This will however provide you...| defer time.Sleep()
After looking at some rare poor performance in rclone, I have created a package for read-ahead functionality, which I have implemented a few times in different contexts. This gave me the opportunity to create a solid implementation with solid tests to make sure it works with good performance. For the impatient here is the package:...| defer time.Sleep()
Yesterday I got a strange race condition reported after I wrote some additional tests for pgzip. At first I couldn’t really work out why I was getting the race reported, and I suspected that the race detector was reporting wrong line numbers. The race reported was boiled down like this: type Writer struct { prevTail...| defer time.Sleep()
Last week I gave myself the challenge to create something in a week. Not a mockup, but a complete usable solution with documentation and enough tests to make it feel solid. I have been looking at DigitalOcean for some time, and while browsing their documentation I came across a sample script that would help you set...| defer time.Sleep()
Lately I have been working a bit with various backup/file tools written in Go, mainly rclone and restic. I noticed that both of them has issues when dealing with long Windows paths, which is quite unfortunate for backup utilities, so I figured that might be a good thing to cover on my blog. This issue...| defer time.Sleep()
I have written a Discussion Piece about how it could be possible to implement assembler intrinsics in Go based on an experiment I have been working on the past week. The goal of the experiment was to see if intrinsics are feasible within the Go language without breaking the language. It is my impression that…| defer time.Sleep()
| The Grumpy Troll: The Grumpy Troll
| The Grumpy Troll: The Grumpy Troll
| The Grumpy Troll: The Grumpy Troll
| The Grumpy Troll: The Grumpy Troll
| The Grumpy Troll: The Grumpy Troll
Use go clean -modcache to clean up all the old auto-downloaded Go| A Scripter's Notes
A little cheat sheet to help remember the Go time formatting syntax.| A Scripter's Notes
Follow-up post to my earlier post on octals in Golang – Feedback to| A Scripter's Notes