用 Go 實現 TCP 連接的雙向拷貝
在做網絡編程時,我們常常會遇到各種性能問題,尤其是在面對大量連接和高併發的情況下。今天,我就來聊聊如何用 Go 實現一個高效的 TCP 連接的雙向拷貝機制,幫助你減少延遲、提高吞吐量。這篇文章既適合對網絡編程有一定了解的開發者,也適合那些想要進一步提升性能的程序員。首先,給大家簡要介紹一下 “TCP 連接的雙向拷貝” 是什麼意思。簡單來說,這就是將來自一個連接的數據拷貝到另一個連接,通常這種操作是 ⌘ Read more
設計模式 in Go:Prototype
建造模式,處理與創建對象及對象實例化過程相關的問題,通常尋求以分離業務代碼和對象創建邏輯,或將複雜的構造邏輯封裝在可重用組件中的方式。讓我們來探討第四種創建模式——原型模式。問題背景: 我們有一個對象,你要創建它的一個拷貝。您可以採用什麼方法來實現這一點?也許您需要知道該對象所屬的類型,從而能夠創建新的同樣類型的對象,然後將原始對象中每個字段值複製到新對象中。該類包含一些隱藏字段,因此你無法複製 ⌘ Read more
asyncgo,純 Go 編寫的異步執行器
Asyncgo[1] 是純用 Go 編寫的零依賴異步任務執行器,優先考慮速度和易用性。特徵–異步任務執行:提交任務以異步執行並檢索結果。 無需手動管理 Goroutine :抽象化管理 Goroutine 的複雜性,並簡化代碼。 工作池管理:Asyncgo 仔細處理工作池創建和任務執行。 正常關閉:確保在關閉工作線程之前完成所有現有任務。 任務取消:支持終端終止任務。 ⌘ Read more
設計模式 in Go: Memento
行爲模式旨在解決對象間通信和交互相關的問題,專注於定義那些複雜到無法靜態設計的協作策略,這些協作策略使得程序可以在運行時動態地進行職責派遣以實現更好的擴展。今天我們開始第 3 個行爲模式的學習 —— Memento(備忘錄模式)。問題背景:在我們需要記錄和恢復對象的內部狀態,而又不希望破壞封裝原則時,可以使用備忘錄模式。有時,我們需要在特定時間點保存對象的狀態,並能夠在以後恢復該狀態。然而,直接暴 ⌘ Read more
Here’s what happens when the world’s richest man buys the presidency
Sabrina Haake, Contributing Writer - Raw Story
_Stephan: Here is what I think is a very insightful commentary on what is going to happen starting 21 January when the United STates becomes an authoritarian oligarchy instead of a democracy. All the weak-minded Trump voters are about to discover what they have done to themselves as they, and the rest of us, experience the worst and most bia … ⌘ Read more
Are posts here still going to twtxt?
haha, that’s gold xD.
#randomMemory I remember when I was starting to code, like 30 years ago, not understanding why my Basic file didn’t run when I renamed it to .exe
And nowadays, I’ve seen a few Go apps in a single executable, so twtxt.exe
could be a thing, he!
The Uniform
[Based on a story I wrote during upper-secondary school based on real
events. I translated it recently from Swedish and edited some of it. I
removed most (all?) elements of fiction.
Not a typical night, since it’s at an event in another city, but it
gives a taste of what partying in, say, 1989(?) was like. And yes, I
really usually drank two bottles of wine during a pre-party in those
days. Not unusual in the crowd I was hanging out with, I’m afraid.]
I was maybe 17 or 18. I was going to Härnösand, two train sto … ⌘ Read more
Trump’s policies ‘should be turning off farmers’ – why did so many vote for him?
Stephen Starr, Staff Writer - The Guardian (U.K.)
_Stephan: As I read or watch American journalism media I have been struck by the interviews with Trump voters who, if Trump does what he says he will, are going to be severely impacted, but don’t seem to think that will happen to them. It is very weird, but it seems to be the case. So by March, I think we are going to … ⌘ Read more
Monarch butterflies to be listed as a threatened species in US
Todd Richmond, Reporter - Associated Press
_Stephan: This is good news about a bad situation. The annual Monarch butterfly migration that has been going on for thousands of years in the past several decades was seriously endangered by human greed and stupidity. But these iconic butterflies have now been placed on the endangered species list and will receive protection as described in this article. … ⌘ Read more
HeapMap: 一個混合功能的數據結構 Go 語言實現
今天在準備《祕而不宣》系列下一篇文章時,思緒飄散了,突然想到使用 Heap 的功能再加 HashTable (Map) 的功能,可以構造一種新的數據結構,然後把我聚合程序中的數據聚合數據結構替換掉,總之思緒翩翩。然後在網上搜了一下,這種數據結構其實早就有了,名字叫 HeapMap。HeapMap (也叫做 PriorityMap) 是一種結合了堆和哈希映射的數據結構,常用於需要按鍵排序並進行高效查 ⌘ Read more
Go 高級構建指南
本文將探索 Golang 高級構建技巧,從而有助於創建更高效的二進制文件。原文: Advanced Go Build Techniques[1]構建選項以下是 go build 命令最常用的一些選項:-o: 指定輸出文件名。默認輸出文件名是主軟件包的名稱,在 Windows 系統中會自動添加 .exe 後綴。 -v: 詳細輸出。該選項會在編譯時打印軟件包的名稱。 -work: 打印 ⌘ Read more
Weakened US public broadcasters will fight for their lives in 2025
Max Tani, Staff Writer - SEMAFOR
_Stephan: If you watch PBS/NPR, or listen to it on the radio as my wife and I do, I am sure you have noticed a significant increase in time spent on fundraising. This article describes why this is happening, and where it is headed. The Trump autocracy and their Republican servants in Congress, I think, and this article confirms, are going to try and cut off … ⌘ Read more
ROG:高性能 Go 實現
本文根據字節跳動服務框架團隊研發工程師在 CloudWeGo 技術沙龍暨三週年慶典中演講內容《ROG——高性能 Go 實現》整理。 作者|不願意透露姓名的小劉市民ROG 之緣起ROG 的誕生是因爲我們一部分業務使用 Rust 重寫之後,獲得了非常好的收益,比如 AVG、CPU、MEM、P99,這些數據表現非常好,大約節省了接近 50% 的 CPU,內存大大降低。這個性能數據讓人眼紅,因此 ⌘ Read more
Go - Ollama 在本地構建你的 RAG 應用
這篇文章會引導大家使用 Golang 設置本地大型語言模型 (LLM) 並與之交互,以此在本地構建你的 AI 應用。設置本地 LLM首先,我們需要在本地計算機上運行 LLM。爲此,我們將使用 Ollama(可在 GitHub ollama[1] 上獲取)。雖然本地加載模型有多種選擇,但我發現 Ollama 是相對容易使用的。Ollama 支持 macOS、Linux 和 Windows。本文的代碼 ⌘ Read more
從理論到實踐:Go 項目中的整潔架構設計
前言你維護的Go 項目代碼架構是什麼樣子的?六邊形架構?還是洋蔥架構?亦或者是DDD?無論項目採用的是什麼架構,核心目標都應是一致的:使代碼能夠易於理解、測試和維護。本文將從Bob 大叔的整潔架構(Clean Architecture)出發,簡要解析其核心思想,並結合go-clean-arch 倉庫,深入探討如何在Go 項目中實現這一架構理念。準備好了嗎?準備一杯你最喜歡的咖啡或茶,隨着本文一探究 ⌘ Read more
推薦一個 Go 版本的支付庫
gopay 是一個使用 Golang 編寫的支付庫。現在支持微信、支付寶、QQ、通聯支付、拉卡拉、PayPal。使用方法如下:引入 gopay 庫go get -u github.com/go-pay/gopay使用示例:import ( “github.com/go-pay/gopay” “github.com/go-pay/xlog”)func main() { xlog.I ⌘ Read more
kcp 協議的 Golang 實現庫
kcp-go 是 Golang 實現的 kcp 協議庫,它是可靠的 UDP 庫。該庫 kcp-go 旨在通過 UDP 數據包提供流暢、有彈性、有序、經過錯誤檢查和匿名的流傳遞。該庫和開源項目 kcptun 經過了戰鬥測試。從低端 MIPS 路由器到高端服務器,數以百萬計的設備在各種應用中部署了基於 kcp-go 驅動的程序。包括在線遊戲、直播、文件同步和網絡加速。我們介紹一下 kcp 協議,kcp ⌘ Read more
Go 併發控制:context 源碼解讀
context 是 Go 語言的特色設計之一,主要作用有兩個:控制鏈路和安全傳值,並且 context 是併發安全的。context 在 Go 1.17 版本被引入,經過數年的迭代,在設計和用法上已經趨於穩定,本文以最新的 Go 1.23.0 版本源碼爲基礎,帶你深入理解 context 的設計和實現。context 設計context 被設計爲一個接口,名爲Context。爲了支持不同特性,這個 ⌘ Read more
Borgo:像寫 typescript 一樣來寫 Go,爽飛了
最近,我發現了一個有趣的新編程語言——Borgo。如果你是一個對編程語言感興趣的開發者,或者在使用 Go 開發應用時曾想過 “如果 Go 能多點現代語言特性會怎樣”,那這篇文章一定值得你讀下去!Borgo 的定位非常清晰:它是一種以簡潔和高效爲核心的語言,最終編譯成 Go 代碼。這意味着什麼?你不僅能獲得 Go 語言的性能優勢,還能享受到現代編程語言帶來的靈活性和便捷性。今天我們來聊聊 Borgo ⌘ Read more
fullmetalScience submits CCS proposal for ‘NoShore’ project
fullmetalScience1 has submitted their first CCS proposal2 looking to complete work on NoShore, a project dedicated to on-the-go offline payments:
TL;DR The document proposes a shell-based environment that users can run to enable offline payments with supporting merchants, whereas the actual signing device will be developed separately in an upcoming iteration.
”`
Total funding: 45 XMR.
ETA: Read more”`
Arctic Refuge Is One of Earth’s Last Truly Wild Places. Trump Calls it America’s “Biggest Oil Farm.”
Maanvi Singh, Staff Writer - Mother Jones
_Stephan: The Trump authoritarian oligarchy is going the significantly increase the use of carbon energy and the destruction of the environment. Nothing I am seeing in this transition period suggests the future holds much good news. Quite the contrary. I think by March we are going to se … ⌘ Read more
在 Go 中如果獲取 goroutine 的 id?
如果你使用過如 Python、Java 等主流支持併發的編程語言,那麼通常都能夠比較容易的獲得進程和線程的 id。但是在 Go 語言,沒有直接提供對多進程和多線程的支持,而是提供了 goroutine 來支持併發編程。不過在 Go 中,獲取 goroutine 的 id 並不像其他編程語言那樣容易,但依然有辦法,本文就來介紹下如何實現。獲取當前進程的 id首先,雖然 Go 沒有提供多進程編程,但啓 ⌘ Read more
[ANN] [CCS Draft] NoShore: Groundwork for on-the-go offline payments
Please feel free to review the linked CCS-draft - any workable feedback is welcome!
Link: https://repo.getmonero.org/fullmetalScience/ccs-proposals/-/blob/noshore/fullmetalscience-noshore.md
u/fullmetalScience (monero.town) ⌘ Read more
@bender@twtxt.net I wonder where that dude who was hosting his twtxt feed in a google drive go? 😆 that was hilarious!!
Monero Tech meeting scheduled for 16 December 2024 1800 UTC
The next Monero Tech meeting is scheduled to take place on Monday, December 16 2024 at 18:00 UTC, in the #no-wallet-left-behind 1 IRC-Libera/Matrix channels:
Based on the opinions given here2 I decided to go back to the No Wallet Left Behind Matrix room and IRC channel for the next i.e. coming Monday’s meeting, and to not contiune to hold meetings like the last one in the -dev Matrix room and IRC channel.
This meeting’s c … ⌘ Read more
Republican senator prepares ‘DOGE Act’ targeting agencies
Kevin Bogardus, - Politico
_Stephan: Tennessee MAGAt Republican Senator Marsha Blackburn has always been a notably inferior and incompetent member of the Senate, although the people of Tennesse don’t seem to see this. She has also always been a submissive doxy to Trump, and I am not surprised that he chose her to introduce legislation to legalize his previously non-existent DOGE agency that is going to gut d … ⌘ Read more
The Right Has a 150-Page Battle Plan to Shut Down Progressive Civil Society
Negin Owliaei and Maya Schenwar , - truthout
_Stephan: The MAGAt Republicans under Trump’s guidance first with Project 2025 and now with legislation like HR 9495 have made it very clear what they intend, and this is what I think is going to happen to the United States. By March, I think America will have become a plutocracy with Trump as an authoritarian leader. What I w … ⌘ Read more
Editor’s Note – Can You Help
, -
Stephan:
Two readers wrote me, and my wife told me, I should have left this note up for a couple of more days. And so I do.
First of all, I want to thank all who have been sending in monthly contributions or have sent in support over the past two days. This makes a great deal of difference to me. I am going to run this one more day.
I have been doing SR now for 33 years; I give it away freely and don’t permit advertising because I don’t have time to dig out … ⌘ Read more
This is how many animals could go extinct from climate change
Benji Jones, Environmental Correspondent - Vox
_Stephan: Nothing I see suggests to me that the coming christofascist autocracy is going to do anything substantial about protecting the matrix of life from the devastation of climate change. Here is a sense of what is coming. I urge you to get involved with some citizens’ movement that works to protect democracy and prepare meaningfully to change the … ⌘ Read more
How climate risks are driving up insurance premiums around the US – visualized
Oliver Milman , Environment Reporter - The Guardian (U.K.)
_Stephan: I have given you a number of articles about what climate change is doing, and is going to do to the cost of home and business insurance if you can get it at all. The insurance industry, both healthcare and real estate, poured millions of dollars into getting Trump elected, so I doubt he is going to d … ⌘ Read more
Go 語言中的併發模式
Go 語言以其併發性和輕量級的 goroutine 而聞名,學習如何使用和處理它們是最具挑戰性的任務。在本文中,我將展示一些併發模式及其使用場景,以幫助您識別所需場景的模式。Goroutine————package mainimport ( ”fmt” ”time”)func main() { go sayHello() // 啓動goroutine tim ⌘ Read more
Go sync-Pool 性能優化的利器
sync.Pool 簡介————sync.Pool 是什麼sync.Pool 是 Go 語言標準庫中提供的一個用於對象複用的工具,它具有以下特點:對象緩存:使用 Get、Put 方法可以獲取和歸還 sync.Pool 中的數據,從而減輕內存分配與垃圾回收的壓力; 自動回收:sync.Pool 中的對象可能會被自動回收。這意味着即使你將對象放入池中,也不能保證該對象會一直存在於 ⌘ Read more
Walmart rolls back DEI programs after right-wing backlash
y Nathaniel Meyersohn, Reporter - CNN
Stephan: As MAGAt world becomes increasingly dominant in the United States the emerging trend is we are becoming an increasingly nasty country, and I predict it is going to get much worse, particularly in states controlled by the Republican MAGAt Party.
NEW YORK, NEW YORK — Walmart, the largest private employer in the United States, will curb some [diversity, equity … ⌘ Read more
Editor’s Note – Can You Help
, -
Stephan:
First of all, I want to thank all who have been sending in monthly contributions or have sent in support over the past two days. This makes a great deal of difference to me. I am going to run this one more day.
I have been doing SR now for 33 years; I give it away freely and don’t permit advertising because I don’t have time to dig out whether a potential advertiser fosters wellbeing. Over the years it has taken longer and longer each day to researc … ⌘ Read more
設計模式 in Go: Iterator
行爲模式旨在解決對象間通信和交互相關的問題,專注於定義那些複雜到無法靜態設計的協作策略,這些協作策略使得程序可以在運行時動態地進行職責派遣以實現更好的擴展。今天我們開始第 2 個行爲模式的學習 —— Iterator(迭代器模式)。問題背景:設想我們定義了一個新的數據類型,它包含了一系列數據元素,可能是以 list、array、set 或其他據結構進行存儲,重要的是我們後續會出於性能、功能方面 ⌘ Read more
理解 Go 協程調度的本質
作者:jiayan golang 的一大特色就是 goroutine,它是支持高併發程序的重要保障;通過 go 關鍵字我們就能輕易創建大量的輕量級協程,但它和我們認知中的線程有什麼區別呢,輕量在哪裏,具體是如何進行調度的….. 本文將從涉及到的一些基礎知識開始,逐步介紹到 go 協程調度的核心原理,希望你能有所收穫~ 函數調用棧進程在內存中的佈局首先回顧下進程的內存佈局~ 操作系統把磁盤上 ⌘ Read more
Go 開發者的密碼學導航:crypto 庫使用指南
Go 號稱 “開箱即用”,這與其標準庫的豐富功能和高質量是分不開的。而在 Go 標準庫中,crypto 庫(包括 crypto 包、crypto 目錄下相關包以及 golang.org/x/crypto 下的補充包) 又是 Go 社區最值得稱道的 Go 庫之一。crypto 庫由 Go 核心團隊維護,確保了最高級別的安全標準和及時的漏洞修復,爲開發者提供了可靠的安全保障。crypto 還涵蓋了從基 ⌘ Read more
精通 Go 併發:上下文傳播與取消的奧祕
Go 的併發模型堪稱一場革命,但管理複雜的併發操作並非易事。這時,context 的傳播與取消機制便成爲了強有力的工具。通過這些機制,我們可以構建健壯的、可取消的操作,甚至跨越多個 goroutine 和網絡邊界。基礎知識—-context 包提供了一種方法,用於在 API 邊界和進程之間傳遞截止時間、取消信號以及請求範圍的值。這是控制長時間運行操作和優雅關閉服務的關鍵。以下是一個使用 con ⌘ Read more
使用 Go 開發 AI Agent 的選擇:Genkit for Go
什麼是 Genkit———-Genkit[1] 是一個 Google Firebase 團隊開發的 AI Agent 開發框架,用於構建現代、高效的 AI 應用。它目前包含一個 Node.js 的實現 [2] 和一個 Go 語言的實現 [3]。之所以注意到這個框架是因爲 Go 團隊在他們的十五週年博客 [4] 中提到了它。Go 團隊在博客中提到,他們正在努力使 Go 成爲構建生產 AI ⌘ Read more
SNeedlewoods completes first part-time Monero dev work CCS
SNeedlewoods1 has posted a Monero dev update2 after working part-time on Monero development for 1 month (~65 hours) during their first CCS proposal3:
Thanks for all the support from CCS coordinators, upvoters, donors and dev colleagues. It’s an honor to be able to work with you. [..] Will continue to work on the wallet API and will try to solve review comments ASAP, but since I’ll go take some days off … ⌘ Read more
5 分鐘搞懂 Golang 數據庫連接管理
本文介紹瞭如何在 Golang 中優化數據庫連接,通過有效管理連接來提高應用程序吞吐量。原文: Optimizing Database Connections in Go: Improving Throughput by Managing Open Connections Efficiently[1]Go 的 database/sql 軟件包提供了自動化數據庫連接池,能夠幫助開發人員有效管理連 ⌘ Read more
用 Go 寫 GUI?這套跨平臺工具箱真香:Tk9-0
大家好!今天我想聊聊用 Go 語言開發 GUI(圖形用戶界面)應用的一個輕量級工具 —— Tk9.0。如果你曾經嘗試用 Go 開發過桌面應用,可能會覺得有些難下手:傳統的工具太 “重”,需要額外安裝依賴,還經常跟操作系統深度綁定,跨平臺開發的成本也不低。而 Tk9.0 正好解決了這些痛點。什麼是 Tk9.0?Tk9.0 是一個 CGo-free(無 C 綁定)、跨平臺的 GUI 工具包,由 mod ⌘ Read more
GORM 分頁新方案
Gorm 是 Go 語言中最常用的 ORM(對象關係映射)包之一,但它在某些功能上仍有不足,其中之一就是分頁。分頁是管理 Web 應用程序中大數據集的基本功能。通過分頁,可以限制和顯示數據庫中的部分數據,而不必一次性檢索整個表的數據。雖然 Gorm 的文檔中介紹瞭如何使用 Scopes 來實現分頁,但在靈活性和可用性上仍有改進空間。本文介紹了一種利用 Gorm 的 Clauses 特性來簡化分頁並 ⌘ Read more
Trump is taking the mask off after lying to us for more than a year
Thom Hartmann, Commentator - Raw Story
Stephan: Thom Hartmann and I usually agree, and we certainly do about this. I think by March we are going to have a pretty good idea whether we will remain a genuine democracy or whether we are on the path to becoming a pseudo-democracy like Hungary and Russia.
。 問題背景: 創建的對象有時比較複雜,可能需要按照特定順序對所有依賴項進行逐一構建,創建依賴項後再最終構建期望的對象。創建這些最終對象及依賴對象,需要很多參數。如果通過構造函數的參數列表 ⌘ Read more
Go 協程正確用法基礎與進階
在 Go(Golang)的世界中,goroutines 是語言的瑰寶之一。它們輕量、高效,使開發者能夠輕鬆編寫併發和並行程序。但正如俗話所說,能力越大,責任越大。濫用 goroutines 可能導致內存泄漏、性能下降,甚至導致生產服務器崩潰。在這篇文章中,我們將介紹 goroutines 的基礎知識、最佳實踐,以及每個開發者應該瞭解的重要 “注意事項”。讓我們深入瞭解吧!Goroutines 概覽 ⌘ Read more
Monero Tech meeting scheduled for 9 December 2024 1800 UTC
The next Monero Tech meeting is scheduled to take place on Monday, December 9 2024 at 18:00 UTC, in the #no-wallet-left-behind 1 IRC-Libera/Matrix channels:
Based on the opinions given here2 I decided to go back to the No Wallet Left Behind Matrix room and IRC channel for the next i.e. coming Monday’s meeting, and to not contiune to hold meetings like the last one in the -dev Matrix room and IRC channel.
This meeting’s chai … ⌘ Read more
Elon Musk Targets Consumer Protection Agency for Deletion
Nicholas Liu , Staff Writer - truthout
Stephan: The oligarchs are becoming more and more explicit in what they are trying to do to America’s democracy. I think that by March we are going to be living in a very different and strange country and the Republican voters are going to be totally unprepared for what they have allowed to happen by how they voted.
。問題背景:我們希望在運行時增強或修改特定對象的功能。由於對象存在一定的類繼承關係,所以開發者可能首先想到通過修改基類的功能來實現,以希望這些修改可以同時在所有 ⌘ Read more
Go 協程與通道
在談論 goroutines 時,我們需要記住 Go 語言的簡潔性,並且它非常強調併發處理。併發是指能夠獨立地處理多個任務,一項接一項地進行,這與並行不同,後者是指任務同時執行。我在之前的文章中已經討論過併發和並行的區別,所以這裏不再深入探討。Goroutines 的基本概念—————-讓我們直接進入 Go 中 goroutines 的主題,這是在代碼中實現併發處理的一種方式。 ⌘ Read more
Why Mass Deportations Would Cripple California’s Economy
Mark Kreidler, - The American Prospect
_Stephan: When you combine Trump’s tariffs and his deportation schemes, what you get is that you and I are, by Robert Reich’s estimate, going to face about $6,000 in additional annual expenses. It is going to particularly impact Trump working and middle-class voters in Red states. And that doesn’t even address the massive social disruption that will arise from ripping im … ⌘ Read more
NASA Satellites Show Major Drop in Global Freshwater Since 2014
Paige Bennett, Contributing Writer - EcoWatch
_Stephan: Here is an aspect of climate change I have not seen previously. It is going to have a significant impact on countries all over the world, particularly developing nations with poor infrastructure. It will though impact large parts of the United States. Humanity is simply not doing what needs to be done, and Trump doesn’t even seem to think c … ⌘ Read more
The future of customer service is here, and it’s making customers miserable
Emily Stewart, Senior Correspondent - msn | Business Insider
Stephan: Another AI problem. I have personally experienced this problem, have you? Not with insurance, but with medical group practices, setting up appointments. I think this trend is going to get much worse.
… ⌘ Read moreGo 1-23 Timer Channel 的改變
官方的介紹。https://go.dev/wiki/Go123Timer Go 1.23 引入了一個新的實現方案,用於由 time.NewTimer、time.After、time.NewTicker 和 time.Tick 創建的基於通道的定時器。這個新實現帶來了兩項重要改變:未停止但不再被引用的定時器和週期計時器現在可以被垃圾回收。在 Go 1.23 之前,未停止的定時器在觸發之前無法被垃圾回 ⌘ Read more
Go 語言高性能協程池實現與原理解析
前言—–在 Go 語言中, 雖然協程的創建成本相對較低, 但在高併發場景下, 無限制地創建協程仍可能導致系統資源耗盡。協程池通過複用一組預創建的協程來處理任務, 可以有效控制協程數量, 提升系統性能和穩定性。協程池的核心原理———–協程池的核心思想是維護一個固定大小的協程隊列, 這些協程會持續從任務隊列中獲取任務並執行。主要包含以下組件:任務隊列: 存儲待執行的任務 工 ⌘ Read more
Monero Tech meeting scheduled for 2 December 2024 1800 UTC
The next Monero Tech meeting is scheduled to take place on Monday, December 2 2024 at 18:00 UTC, in the #no-wallet-left-behind 1 IRC-Libera/Matrix channels:
Based on the opinions given here2 I decided to go back to the No Wallet Left Behind Matrix room and IRC channel for the next i.e. coming Monday’s meeting, and to not contiune to hold meetings like the last one in the -dev Matrix room and IRC channel.
This meeting’s chai … ⌘ Read more
The Rise of Trump and the Fall of American Empire
Alfred McCoy, Fred Harvey Harrington Professor of History at the University of Wisconsin–Madison - truthdig
_Stephan: This geopolitical analysis of what is likely to happen during the upcoming Trump administration, in my opinion, is accurate. I think Alfred McCoy describes the American future with brutal insight. Trump and his gang of MAGAt mafioso, I believe are going to leave office with China the leading nation in the … ⌘ Read more
COP29: Key outcomes agreed at the UN climate talks in Baku
, - Carbon Brief
_Stephan: This is by far the best analysis of what happened at the just closed COP29 summit in Baku, Azerbaijan. IT is kind of semi-good news. Rich countries, as the article describes are going to underwrite $300 billion in aid to help developing countries deal with climate change. A not insignificant sum, but a fraction of what is actually needed. Two things stand out for me from COP29: … ⌘ Read more
設計模式 in Go: Flyweight
結構模式關注代碼、組件以及接口的有效組織與調用,主要解決如對象間的關係管理、提供必要抽象與具體實現相分離,以及將多個不同的庫或框架集成爲一個統一且連貫的系統等問題。今天我們開始第 6 個結構模式的學習 —— Flyweight(享元模式)。問題背景:程序執行時會創建太多相似的對象副本,所以內存消耗會非常高。觀察這些這些對象定義發現,它們包含了若干的共同屬性(字段值相同),而其他字段則不同。這些 ⌘ Read more
認識一下 Golang 定時框架
cron,相信玩過 Linux 的朋友應該都對這個很熟悉吧,這不就是計劃任務嘛,當你需要某個時間段去執行某一件事的時候,普通的執行方式已經不能滿足我們的需求了,這個時候就需要一個定時任務了,那麼下面我就來介紹一個 Go 的開源定時任務框架。一、安裝—- 下載go get github.com/robfig/cron/v3@v3.0.0 導入:這裏後面加個v3意味着這是v3版本,注意不要搞錯 ⌘ Read more
一文搞懂如何在 Go 包中支持 Hash-Based Bisect 調試
bisect 是一個英文動詞,意爲 “二分” 或“分成兩部分”。在數學和計算機科學中,通常指將一個區間或一個集合分成兩個相等的部分。對於程序員來說,最熟悉的 bisect 應用莫過於下面兩個:算法中的二分查找 (binary search) 二分查找是一個經典且高效的查找算法,任何一本介紹數據結構或計算機算法的書都會包含對二分查找的系統說明。所謂二分查找就是通過不斷將搜索區間一分爲二來找到目 ⌘ Read more
Go 併發控制:singleflight 詳解
singleflight 是 Go 官方擴展庫 x 中提供的擴展併發原語,能夠將多個併發請求合併爲一個,降低服務端壓力。本文就來介紹下它的用法和實現原理。請求合併singleflight 主要用於抑制重複的併發調用,從而避免對同一資源進行重複操作,提升系統性能。比如,當我們有多個 goroutine 併發調用一個同一個函數時,singleflight 能夠實現只讓一個 goroutine 發起調用 ⌘ Read more
Go 中祕而不宣的數據結構 maphash:性能之王
哈希算法 (也稱散列算法) 是一種將任意長度的輸入數據轉換成固定長度輸出的數學算法。Hash 算法的應用場景Hash 算法常常用在以下的場景中:數據完整性驗證 可以爲文件生成唯一的哈希值,用於檢測文件是否被篡改 常見場景如軟件下載時的 MD5 校驗、區塊鏈中的數據驗證 密碼存儲安全 不直接存儲用戶密碼原文, 而是存儲密碼的哈希值 即使數據庫被攻破, 黑客也無法直接獲取 ⌘ Read more
Gin 框架 JSON 格式返回結果的使用方式
大家好,我是 frank。「Golang 語言開發棧」公衆號作者。01 介紹Gin 框架爲 JSON、XML 和 HTML 渲染提供了易用的 API。本文我們主要介紹 JSON 的使用方式。02 JSON在 Go 項目開發中,當開發 HTTP API 時,我們通常提供 JSON 格式的返回結果。Go 框架爲 JSON 渲染提供了易用的 API。普通 JSON示例代碼:func main() { ⌘ Read more
go build is working but not go build main.go
Termux
same thing @doesnm uses and it worked 👍 Media
@doesnm@doesnm.p.psf.lt No it’s all good… I’ve just rebuilt it from master and it doesn’t look like anything is broken:
~/GitRepos> git clone https://github.com/plomlompom/htwtxt.git
Cloning into 'htwtxt'...
remote: Enumerating objects: 411, done.
remote: Total 411 (delta 0), reused 0 (delta 0), pack-reused 411 (from 1)
Receiving objects: 100% (411/411), 87.89 KiB | 430.00 KiB/s, done.
Resolving deltas: 100% (238/238), done.
~/GitRepos> cd htwtxt
master ~/GitRepos/htwtxt> go mod init htwtxt
go: creating new go.mod: module htwtxt
go: to add module requirements and sums:
go mod tidy
master ~/GitRepos/htwtxt> go mod tidy
go: finding module for package github.com/gorilla/mux
go: finding module for package golang.org/x/crypto/bcrypt
go: finding module for package gopkg.in/gomail.v2
go: finding module for package golang.org/x/crypto/ssh/terminal
go: found github.com/gorilla/mux in github.com/gorilla/mux v1.8.1
go: found golang.org/x/crypto/bcrypt in golang.org/x/crypto v0.29.0
go: found golang.org/x/crypto/ssh/terminal in golang.org/x/crypto v0.29.0
go: found gopkg.in/gomail.v2 in gopkg.in/gomail.v2 v2.0.0-20160411212932-81ebce5c23df
go: finding module for package gopkg.in/alexcesaro/quotedprintable.v3
go: found gopkg.in/alexcesaro/quotedprintable.v3 in gopkg.in/alexcesaro/quotedprintable.v3 v3.0.0-20150716171945-2caba252f4dc
master ~/GitRepos/htwtxt> go build
master ~/GitRepos/htwtxt> ll
.rw-r--r-- aelaraji aelaraji 330 B Fri Nov 22 20:25:52 2024 go.mod
.rw-r--r-- aelaraji aelaraji 1.1 KB Fri Nov 22 20:25:52 2024 go.sum
.rw-r--r-- aelaraji aelaraji 8.9 KB Fri Nov 22 20:25:06 2024 handlers.go
.rwxr-xr-x aelaraji aelaraji 12 MB Fri Nov 22 20:26:18 2024 htwtxt <-------- There's the binary ;)
.rw-r--r-- aelaraji aelaraji 4.2 KB Fri Nov 22 20:25:06 2024 io.go
.rw-r--r-- aelaraji aelaraji 34 KB Fri Nov 22 20:25:06 2024 LICENSE
.rw-r--r-- aelaraji aelaraji 8.5 KB Fri Nov 22 20:25:06 2024 main.go
.rw-r--r-- aelaraji aelaraji 5.5 KB Fri Nov 22 20:25:06 2024 README.md
drwxr-xr-x aelaraji aelaraji 4.0 KB Fri Nov 22 20:25:06 2024 templates
Termux
same thing @doesnm uses and it worked 👍 Media
I’m cloned repo and go mod init/go mod tidy/go build, only master are broken?
應用性能優化:如何有效地分析和優化 pprof CPU 性能分析數據
pprof 是一個用於分析 Go 程序性能數據的工具,幫助開發者找出 CPU、內存和其他瓶頸。本文提供了一個詳細的分步指南,介紹如何分析 .pprof 文件,包括設置、生成文件和解釋結果。第一步:安裝必要工具———-要分析 .pprof 文件,請確保安裝以下工具:Go 編程語言: 從官方網站安裝 Go。 驗證安裝:go version pprof 工具: ppr ⌘ Read more
爲 Nintendo Switch™ 編譯 Go 程序
之前,我們將 Go 程序編譯爲 WebAssembly,然後轉換爲 C++ 文件以在 Nintendo Switch 上運行。現在,我已成功將 Go 程序編譯爲 Nintendo Switch 的原生二進制文件,並在那裏運行遊戲。我使用-overlay選項用 C 函數調用替換系統調用。此外,我開發了一個新的包 Hitsumabushi[2] 來生成此內容的 JSON。注意–本文及文中的開源項目僅 ⌘ Read more
Silent messengers also go down X(
Go 包構建:專家也未必瞭解的文件選擇細節
在 Go 語言開發中,包(package)是代碼組織的基本單位 [1],也是基本的構建單元。Go 編譯器會將每個包構建成一個目標文件 (.a),然後通過鏈接器將這些目標文件鏈接在一起,形成最終的可執行程序。儘管 Go 包的構建過程看似簡單,但實際上蘊含着許多值得深入瞭解的細節。例如,當我們執行 go build 命令時,Go 編譯器是如何選擇需要編譯的源文件的?你可能會回答:“不就是通過文件名中的 ⌘ Read more
Hehe, although it isn’t a fancy language PHP has improved a lot since the old PHP 5 days ¯_(ツ)_/¯ It’s 3 to 5 times slower than Go, so I think that’s not too bad
Gopherholes come and go. It’s normal. Got no answer to my mail (No garantee that it’s not sitting in a spam folder).
@doesnm@doesnm.p.psf.lt up to you. I have mine to rotate at 1,000 twtxts. I have vomited over 400, so far. I have some way to go till rotation. :-D
Apple Seeds Third Beta of visionOS 2.2 to Developers With Ultrawide Mac Virtual Display
Apple today seeded the third beta of an upcoming visionOS 2.2 update to developers for testing purposes, with the beta coming a week after the second visionOS 2.2 beta.
visionOS 2.2 can be installed by going to the Software Update section of the Settings app … ⌘ Read more
Go 語言實現守護進程的技術詳解
引言–在後端開發中, 守護進程 (Daemon) 是一個非常重要的概念。它是一個在後臺運行的長期存在的進程, 不受終端控制。本文將詳細介紹如何使用 Go 語言實現守護進程, 並探討其中的關鍵技術點。什麼是守護進程?——–守護進程具有以下特徵:在後臺運行 與終端會話無關 通常在系統啓動時啓動, 在系統關閉時關閉 沒有控制終端 作爲服務運行 守護進程的啓 ⌘ Read more
Go sync-Cond:最容易被忽視的同步機制
引言在探討 Go 語言中的同步機制時,大多數開發者都熟悉 sync.Mutex 和 sync.RWMutex。然而,還有一個強大但經常被忽視的同步原語:sync.Cond。本文將詳細介紹 sync.Cond,解釋它的工作原理,並通過實際示例說明其應用場景。什麼是 sync.Cond?當一個 goroutine 需要等待一些特定的事情發生時,例如一些共享數據發生變化,它就會 “阻塞”,這意味着它只是 ⌘ Read more
eBPF on Go
本篇內容是根據 2021 年 10 月份#201 eBPF and Go[1] 音頻錄製內容的整理與翻譯eBPF(已有 7 年曆史)是一個可以在 Linux 內核中運行代碼的沙箱。它最初是一種構建防火牆的技術,隨着時間的推移不斷髮展,包含一系列新功能。本期大家討論了 eBPF 的起源及其工作原理,並深入研究了一些實際用例。雖然 eBPF 程序本身不是用 Go(更像 C)編寫的,但我們將瞭解如何從 ⌘ Read more
Monero Tech meeting scheduled for 25 November 2024 1800 UTC
The next Monero Tech meeting is scheduled to take place on Monday, November 25 2024 at 18:00 UTC, in the #no-wallet-left-behind 1 IRC-Libera/Matrix channels:
Based on the opinions given here2 I decided to go back to the No Wallet Left Behind Matrix room and IRC channel for the next i.e. coming Monday’s meeting, and to not contiune to hold meetings like the last one in the -dev Matrix room and IRC channel.
This meeting’s c … ⌘ Read more
使用 go-jsonstruct 快速生成 Go 結構體,支持 JSON 或 YAML!
在 Go 語言開發中,我們經常需要處理 JSON 或 YAML 格式的數據。爲了方便地解析和操作這些數據,通常會定義相應的 Go 結構體與之對應。然而,手動編寫這些結構體定義可能會非常繁瑣,尤其是在處理複雜數據結構時。go-jsonstruct 工具應運而生!它可以幫助我們自動生成 Go 結構體定義,從而節省時間和精力,提高開發效率。本文將深入探討 go-jsonstruct 的功能、使用方法以及 ⌘ Read more
Go 項目實戰 - API 路由的分模塊管理
隨着項目開發的迭代,我們寫的接口往往會越來越多,如果都把 API 的路由寫到一個文件裏,那麼整個路由文件就會變得又亂又長,所以我們最好在項目開始階段就給路由的分模塊管理做好規劃。今天這個文章給大家介紹一下 Web 項目 API 路由的分模塊管理,我們的項目使用的是 Gin 框架,但基本上所有的 Web 框架都能按照這個方式來分模塊管理 API 接口的路由。 一些路由管理混亂的例子——– ⌘ Read more
Go 併發控制:sync-Once 詳解
在 Go 語言的併發編程中,常常會遇到需要確保某個操作僅執行一次的場景。sync.Once 是 Go 標準庫中的一個簡單而強大的工具,專門用於解決這種需求。本文將深入解析 sync.Once 的使用方法和原理,幫助你更好地理解 sync.Once 在併發控制中的用法。sync.Oncesync.Once 是 Go 語言 sync 包中的一種同步原語。它可以確保一個操作(通常是一個函數)在程序的生命 ⌘ Read more
Go 編譯的幾個細節,連專家也要停下來想想
在 Go 開發中,編譯相關的問題看似簡單,但實則蘊含許多細節。有時,即使是 Go 專家也需要停下來,花時間思考答案或親自驗證。本文將通過幾個具體問題,和大家一起探討 Go 編譯過程中的一些你可能之前未曾關注的細節。 注:本文示例使用的環境爲 Go 1.23.0、Linux Kernel 3.10.0 和 CentOS 7.9。Go 編譯默認採用靜態鏈接還是動態鏈接?————— ⌘ Read more
Go 中祕而不宣的數據結構 CacheLine:精細優化
在現代多核處理器中,高效的緩存機制極大地提升了程序性能,而 “僞共享” 問題卻常常導致緩存機制的低效。背景----- cacheline 本文中有時又叫做 緩存行在現代多核處理器中,三級緩存通常分爲三級:L1、L2 和 L3,每一級緩存的大小、速度和共享方式都不同:L1 緩存:這是速度最快的緩存,通常每個 CPU 核心都有獨立的 L1 緩存。L1 緩存分爲兩個部分:一個用於存儲指令(L1I),另 ⌘ Read more
用 Go 語言如何實現將中文轉化爲拼音
有這麼一個需求:新用戶入職 創建一系列賬號比較麻煩,打算通過接口傳入姓名進行初始化。想把姓名轉化成拼音。因爲有些賬號即需要中文也需要英文。下面看看用 Go 語言如何去解決的。要將用戶的姓名轉換爲拼音,可以使用 Go 語言的第三方庫,比如 github.com/mozillazg/go-pinyin,這是一個流行的庫,專門用來將漢字轉換爲拼音。你可以通過它生成拼音格式的英文名稱,用於初始化賬戶時的多 ⌘ Read more
只改變一個字符就能使 Golang 程序提速 42-
虎哥來聊聊怎麼用一個小小的改動,給你的 Golang 代碼提速 42%!很多時候,程序性能優化就是這樣:只要動一個字符,就可能帶來出人意料的提升。今天咱們就從切片傳遞優化、變量聲明優化和字符串拼接優化入手,看看怎麼改動這麼一個字符能讓 Golang 飛起來!🚀切片傳遞優化先來說說切片。切片在 Go 語言中用得特別多,因爲它們既靈活又方便。然而,切片的傳遞會帶來性能問題,尤其是當切片非常大時。原始代 ⌘ Read more
MoneroKon 2025 event to be held June 20-22 in Prague at La Fabrika/Second Culture
The fifth edition of the Monero Konferenco 1 annual meeting is set2 to take place place in Prague, Czech Republic on June 20-22 at the La Fabrika/Second Culture 3 venue (previously known as Paralelni Polis):
Save the date: MoneroKon will be held 20th - 22nd June 2025 [..] Sign up to our mailing list to be notified when tickets go on sale
The previous conference was also held in Pragu … ⌘ Read more
@eapl.me@eapl.me Neat.
So for twt metadata the lextwt parser currently supports values in the form [key=value]
https://git.mills.io/yarnsocial/go-lextwt/src/branch/main/parser_test.go#L692-L698
@eapl.me@eapl.me here are my replies (somewhat similar to Lyse’s and James’)
Metadata in twts: Key=value is too complicated for non-hackers and hard to write by hand. So if there is a need then we should just use #NSFS or the alt-text file in markdown image syntax

if something is NSFWIDs besides datetime. When you edit a twt then you should preserve the datetime if location-based addressing should have any advantages over content-based addressing. If you change the timestamp the its a new post. Just like any other blog cms.
Caching, Yes all good ideas, but that is more a task for the clients not the serving of the twtxt.txt files.
Discovery: User-agent for discovery can become better. I’m working on a wrapper script in PHP, so you don’t need to go to Apaches log-files to see who fetches your feed. But for other Gemini and gopher you need to relay on something else. That could be using my webmentions for twtxt suggestion, or simply defining an email metadata field for letting a person know you follow their feed. Interesting read about why WebMetions might be a bad idea. Twtxt being much simple that a full featured IndieWeb sites, then a lot of the concerns does not apply here. But that’s the issue with any open inbox. This is hard to solve without some form of (centralized or community) spam moderation.
Support more protocols besides http/s. Yes why not, if we can make clients that merge or diffident between the same feed server by multiples URLs
Languages: If the need is big then make a separate feed. I don’t mind seeing stuff in other langues as it is low. You got translating tool if you need to know whats going on. And again when there is a need for easier switching between posting to several feeds, then it’s about building clients with a UI that makes it easy. No something that should takes up space in the format/protocol.
Emojis: I’m not sure what this is about. Do you want to use emojis as avatar in CLI clients or it just about rendering emojis?
使用 Go 構建 Web 應用:MVC 模式、Gin 框架、GORM 和 JWT
在本文中,我們將使用 Go 編程語言構建一個 Web 應用程序,利用 Gin 框架進行路由,GORM 進行數據庫交互,並使用 JWT(JSON Web Tokens)進行身份驗證。應用程序將採用 MVC(模型 - 視圖 - 控制器)設計模式,以促進關注點的清晰分離。前置條件—-在開始之前,請確保您具備以下條件:已在您的計算機上安裝 Go(版本 1.16 或更高)。 已設置 Postgre ⌘ Read more
Righto, @eapl.me@eapl.me, ta for the writeup. Here we go. :-)
Metadata on individual twts are too much for me. I do like the simplicity of the current spec. But I understand where you’re coming from.
Numbering twts in a feed is basically the attempt of generating message IDs. It’s an interesting idea, but I reckon it is not even needed. I’d simply use location based addressing (feed URL + ‘#’ + timestamp) instead of content addressing. If one really wanted to, one could hash the feed URL and timestamp, but the raw form would actually improve disoverability and would not even require a richer client. But the majority of twtxt users in the last poll wanted to stick with content addressing.
yarnd actually sends If-Modified-Since
request headers. Not only can I observe heaps of 304 responses for yarnds in my access log, but in Cache.FetchFeeds(…)
we can actually see If-Modified-Since
being deployed when the feed has been retrieved with a Last-Modified
response header before: https://git.mills.io/yarnsocial/yarn/src/commit/98eee5124ae425deb825fb5f8788a0773ec5bdd0/internal/cache.go#L1278
Turns out etags with If-None-Match
are only supported when yarnd serves avatars (https://git.mills.io/yarnsocial/yarn/src/commit/98eee5124ae425deb825fb5f8788a0773ec5bdd0/internal/handlers.go#L158) and media uploads (https://git.mills.io/yarnsocial/yarn/src/commit/98eee5124ae425deb825fb5f8788a0773ec5bdd0/internal/media_handlers.go#L71). However, it ignores possible etags when fetching feeds.
I don’t understand how the discovery URLs should work to replace the User-Agent
header in HTTP(S) requests. Do you mind to elaborate?
Different protocols are basically just a client thing.
I reckon it’s best to just avoid mixing several languages in one feed in the first place. Personally, I find it okay to occasionally write messages in other languages, but if that happens on a more regularly basis, I’d definitely create a different feed for other languages.
Isn’t the emoji thing “just” a client feature? So, feed do not even have to state any emojis. As a user I’d configure my client to use a certain symbol for feed ABC. Currently, I can do a similar thing in tt
where I assign colors to feeds. On the other hand, what if a user wants to control what symbol should be displayed, similar to the feed’s nick? Hmm. But still, my terminal font doesn’t even render most of emojis. So, Unicode boxes everywhere. This makes me think it should actually be a only client feature.
一文帶你看懂 Golang 最新特性
作者:騰訊 PCG 代碼委員會 經過十餘年的迭代,Go 語言逐漸成爲雲計算時代主流的編程語言。下到雲計算基礎設施,上到微服務,越來越多的流行產品使用 Go 語言編寫。可見其影響力已經非常強大。一、Go 語言發展歷史介紹Go 語言起源於 2007 年的 Google;創始人有三位,分別是 Ken Thompson、Rob Pike、Robert Griesemer;他們可謂是大佬中的大佬。最初的構 ⌘ Read more
Golang 編譯:靜態鏈接和動態鏈接
本文介紹了 Go 語言中靜態鏈接和動態鏈接的概念,解釋了它們的區別和各自優勢。通過示例,展示瞭如何生成靜態或動態鏈接的二進制文件,以及使用工具進行檢查。文章還討論了內部和外部鏈接器的區別,如何在編譯時選擇鏈接方式,以及在交叉編譯時處理 cgo 的方法。最後,提到了減小二進制文件大小的技巧和安全性方面的考慮。概述–Go 語言最大的優勢之一就是它的編譯器,它爲程序員抽象了許多細節,讓你可以輕鬆地爲幾 ⌘ Read more
After testing Vivaldi for a couple of weeks I am convinced this is a great browser and to support the team behind it, I decided to start sending them a couple of Euro monthly, just to keep the momentum going.
Go 語言 bufio 包入門:10 分鐘掌握高性能 I-O 操作
大家好,今天我們來聊一個 Go 語言中非常實用的包 - bufio。不管你是剛入門的新手還是有經驗的開發者,這篇文章都能幫你快速掌握 bufio 的使用!🌟 什麼是 bufio?————-bufio 是 Go 語言提供的一個帶緩衝的 I/O 包,它像是給 I/O 操作加了一個 “加速器”,通過減少系統調用次數來提升性能。想象一下:不用緩衝:每次讀寫都直接操作硬盤,就像我們一次只買一 ⌘ Read more