fosstodon.org is one of the many independent Mastodon servers you can use to participate in the fediverse.
Fosstodon is an invite only Mastodon instance that is open to those who are interested in technology; particularly free & open source software. If you wish to join, contact us for an invite.

Administered by:

Server stats:

8.8K
active users

#go

30 posts24 participants0 posts today
OccuWorld<p>Mudvayne - Determined</p><p><a href="https://www.youtube.com/watch?v=KfLVs3yv_wg" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">https://www.</span><span class="ellipsis">youtube.com/watch?v=KfLVs3yv_w</span><span class="invisible">g</span></a></p><p>Come on and one two three<br>Go, so fucking determined, yeah<br>Yeah go, you better believe it, con-fi-dence<br>Go, so fucking determined, yeah<br>Yeah go, spit out all reason, yeah</p><p><a href="https://syzito.xyz/tags/Mudvayne" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Mudvayne</span></a> <a href="https://syzito.xyz/tags/Determined" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Determined</span></a> <a href="https://syzito.xyz/tags/NuMetal" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>NuMetal</span></a> <a href="https://syzito.xyz/tags/Music" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Music</span></a> <a href="https://syzito.xyz/tags/GO" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>GO</span></a> <a href="https://syzito.xyz/tags/Confidence" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Confidence</span></a> <a href="https://syzito.xyz/tags/DirectAction" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>DirectAction</span></a> <a href="https://syzito.xyz/tags/BelieveIt" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>BelieveIt</span></a> <a href="https://syzito.xyz/tags/StandUpFightBack" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>StandUpFightBack</span></a></p>
Habr<p>[Перевод] Тестируем веб приложение на Go</p><p>Тестирование — важнейший аспект разработки программного обеспечения, особенно для веб‑приложений. В Go тестирование встроено в язык и предоставляет мощные инструменты для написания и выполнения тестов. В этой статье мы рассмотрим поток веб-приложения на Go, как писать модульные тесты для каждого слоя приложения.</p><p><a href="https://habr.com/ru/companies/otus/articles/930136/" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">https://</span><span class="ellipsis">habr.com/ru/companies/otus/art</span><span class="invisible">icles/930136/</span></a></p><p><a href="https://zhub.link/tags/go" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>go</span></a> <a href="https://zhub.link/tags/qa_automation" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>qa_automation</span></a> <a href="https://zhub.link/tags/qa" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>qa</span></a> <a href="https://zhub.link/tags/%D0%A2%D0%B5%D1%81%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Тестирование</span></a> <a href="https://zhub.link/tags/%D0%AE%D0%BD%D0%B8%D1%82%D1%82%D0%B5%D1%81%D1%82%D1%8B" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Юниттесты</span></a> <a href="https://zhub.link/tags/%D0%92%D0%B5%D0%B1%D0%BF%D1%80%D0%B8%D0%BB%D0%BE%D0%B6%D0%B5%D0%BD%D0%B8%D0%B5" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Вебприложение</span></a> <a href="https://zhub.link/tags/%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C%D0%BD%D0%BE%D0%B5_%D1%82%D0%B5%D1%81%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Модульное_тестирование</span></a> <a href="https://zhub.link/tags/%D0%A1%D0%B5%D1%80%D0%B2%D0%B8%D1%81%D0%BD%D1%8B%D0%B9_%D1%81%D0%BB%D0%BE%D0%B9" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Сервисный_слой</span></a> <a href="https://zhub.link/tags/Mock" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Mock</span></a> <a href="https://zhub.link/tags/Testify" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Testify</span></a></p>
benjamin melançon<p>What <a href="https://social.coop/tags/libre" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>libre</span></a> <a href="https://social.coop/tags/IDE" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>IDE</span></a> (integrated development environment for programming code) would y'all want to coalesce around using, supporting, and developing? Asking especially for coding websites and applications with <a href="https://social.coop/tags/PHP" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>PHP</span></a>, <a href="https://social.coop/tags/JavaScript" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>JavaScript</span></a>, <a href="https://social.coop/tags/CSS" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>CSS</span></a>, and <a href="https://social.coop/tags/HTML" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>HTML</span></a> but <a href="https://social.coop/tags/Python" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Python</span></a>, <a href="https://social.coop/tags/Elixir" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Elixir</span></a>, <a href="https://social.coop/tags/Rust" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Rust</span></a>, and <a href="https://social.coop/tags/Go" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Go</span></a> would all be great for us <span class="h-card" translate="no"><a href="https://social.coop/@agaric" class="u-url mention" rel="nofollow noopener" target="_blank">@<span>agaric</span></a></span> too.</p><p><a href="https://social.coop/tags/FLOSS" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>FLOSS</span></a> <a href="https://social.coop/tags/OpenSource" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>OpenSource</span></a> <a href="https://social.coop/tags/FreeSoftware" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>FreeSoftware</span></a></p>
Lobsters<p>Code Creation, The Way Nature Intended <a href="https://lobste.rs/s/b6iupp" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">https://</span><span class="">lobste.rs/s/b6iupp</span><span class="invisible"></span></a> <a href="https://mastodon.social/tags/go" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>go</span></a> <a href="https://mastodon.social/tags/programming" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>programming</span></a><br><a href="https://pehringer.info/code_creation" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">https://</span><span class="">pehringer.info/code_creation</span><span class="invisible"></span></a></p>
Lobsters<p>There is no memory safety without thread safety <a href="https://lobste.rs/s/omasxh" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">https://</span><span class="">lobste.rs/s/omasxh</span><span class="invisible"></span></a> <a href="https://mastodon.social/tags/go" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>go</span></a> <a href="https://mastodon.social/tags/java" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>java</span></a> <a href="https://mastodon.social/tags/plt" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>plt</span></a><br><a href="https://www.ralfj.de/blog/2025/07/24/memory-safety.html" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">https://www.</span><span class="ellipsis">ralfj.de/blog/2025/07/24/memor</span><span class="invisible">y-safety.html</span></a></p>
Knut 🏳️‍🌈 🇳🇴🧸<p>Ohh...there is a new Hnefatafll by a gent named David Campbell ( <span class="h-card" translate="no"><a href="https://noc.social/@dlc" class="u-url mention" rel="nofollow noopener" target="_blank">@<span>dlc</span></a></span> ) Hnefatafl is basically <a href="https://mstdn.social/tags/viking" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>viking</span></a> <a href="https://mstdn.social/tags/chess" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>chess</span></a>, but the rules are far simpler. He developed a nice multi-player app in the vein of <a href="https://mstdn.social/tags/go" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>go</span></a> servers. IF anyone wants to play, let me know! You can find out more at <a href="https://hnefatafl.org" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">https://</span><span class="">hnefatafl.org</span><span class="invisible"></span></a></p>
Neustradamus :xmpp: :linux:<p><a href="https://mastodon.social/tags/XMPPDNS" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>XMPPDNS</span></a> 0.5.0 Beta 1 has been released (<a href="https://mastodon.social/tags/XMPP" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>XMPP</span></a> / <a href="https://mastodon.social/tags/Jabber" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Jabber</span></a> / <a href="https://mastodon.social/tags/Go" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Go</span></a> / <a href="https://mastodon.social/tags/GoLang" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>GoLang</span></a>) <a href="https://salsa.debian.org/mdosch/xmpp-dns" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">https://</span><span class="ellipsis">salsa.debian.org/mdosch/xmpp-d</span><span class="invisible">ns</span></a></p>
Neustradamus :xmpp: :linux:<p><a href="https://mastodon.social/tags/GoSendXMPP" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>GoSendXMPP</span></a> 0.15.0 Beta 1 has been released (<a href="https://mastodon.social/tags/SendXMPP" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>SendXMPP</span></a> / <a href="https://mastodon.social/tags/XMPP" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>XMPP</span></a> / <a href="https://mastodon.social/tags/Jabber" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Jabber</span></a> / <a href="https://mastodon.social/tags/Go" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Go</span></a> / <a href="https://mastodon.social/tags/GoLang" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>GoLang</span></a> / <a href="https://mastodon.social/tags/GoXMPP" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>GoXMPP</span></a> / <a href="https://mastodon.social/tags/SCRAM" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>SCRAM</span></a> / <a href="https://mastodon.social/tags/SCRAMSHA" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>SCRAMSHA</span></a> / <a href="https://mastodon.social/tags/SCRAMSHA1" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>SCRAMSHA1</span></a> / <a href="https://mastodon.social/tags/SCRAMSHA256" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>SCRAMSHA256</span></a> / <a href="https://mastodon.social/tags/SCRAMSHA512" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>SCRAMSHA512</span></a> / <a href="https://mastodon.social/tags/TLSChannelBinding" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>TLSChannelBinding</span></a> / <a href="https://mastodon.social/tags/RFC9266" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>RFC9266</span></a>) <a href="https://salsa.debian.org/mdosch/go-sendxmpp" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">https://</span><span class="ellipsis">salsa.debian.org/mdosch/go-sen</span><span class="invisible">dxmpp</span></a></p>
Neustradamus :xmpp: :linux:<p><a href="https://mastodon.social/tags/GoXMPP" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>GoXMPP</span></a> 0.2.16 has been released (<a href="https://mastodon.social/tags/XMPP" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>XMPP</span></a> / <a href="https://mastodon.social/tags/Jabber" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Jabber</span></a> / <a href="https://mastodon.social/tags/Go" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Go</span></a> / <a href="https://mastodon.social/tags/GoLang" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>GoLang</span></a> / <a href="https://mastodon.social/tags/SCRAM" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>SCRAM</span></a> / <a href="https://mastodon.social/tags/SCRAMSHA" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>SCRAMSHA</span></a> / <a href="https://mastodon.social/tags/SCRAMSHA1" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>SCRAMSHA1</span></a> / <a href="https://mastodon.social/tags/SCRAMSHA256" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>SCRAMSHA256</span></a> / <a href="https://mastodon.social/tags/SCRAMSHA512" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>SCRAMSHA512</span></a> / <a href="https://mastodon.social/tags/TLSChannelBinding" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>TLSChannelBinding</span></a> / <a href="https://mastodon.social/tags/RFC9266" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>RFC9266</span></a>) <a href="https://github.com/xmppo/go-xmpp" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">https://</span><span class="">github.com/xmppo/go-xmpp</span><span class="invisible"></span></a></p>
Media Japan<p><a href="https://www.wacoca.com/media/394378/" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">https://www.</span><span class="">wacoca.com/media/394378/</span><span class="invisible"></span></a> 吉沢亮主演『国宝』、興収68.5億円突破 カンヌ・上海に続き「トロント国際映画祭」正式出品へ – ORICON # <a href="https://wakoka.com/tags/film" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>film</span></a> <a href="https://wakoka.com/tags/GO" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>GO</span></a> <a href="https://wakoka.com/tags/L" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>L</span></a>&amp; <a href="https://wakoka.com/tags/movie" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>movie</span></a> <a href="https://wakoka.com/tags/SU" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>SU</span></a> <a href="https://wakoka.com/tags/%E6%98%A0%E7%94%BB" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>映画</span></a></p>
Sjoerd Dost<p>Ported whiskers support to my dynamicland clone. </p><p>Golang handles tag detection via CGO and apriltag, and Guile Scheme handles realtalk + drawing logic using opencv.</p><p><a href="https://masto.nu/tags/go" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>go</span></a> <a href="https://masto.nu/tags/cgo" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>cgo</span></a> <a href="https://masto.nu/tags/cpp" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>cpp</span></a> <a href="https://masto.nu/tags/guile" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>guile</span></a> <a href="https://masto.nu/tags/opencv" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>opencv</span></a> <a href="https://masto.nu/tags/apriltag" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>apriltag</span></a></p>
MarkD<p><span class="h-card" translate="no"><a href="https://hachyderm.io/@dolanor" class="u-url mention" rel="nofollow noopener" target="_blank">@<span>dolanor</span></a></span> Apart from time.Parse() and time.Format() (both of which I mostly avoid) I must admit I've never come across much US-centricity and generally found the time package pretty solid.</p><p>As an alternative to time.Parse() I use regexp as the failure mode of time.Parse() is inscrutable.</p><p><a href="https://hachyderm.io/tags/go" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>go</span></a> <a href="https://hachyderm.io/tags/golang" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>golang</span></a></p>
michabbb<p>🎛️ Custom Controllers: Nuclear option for completely different workflows<br>while keeping shared business logic<br>🔧 Pattern works across languages - <a href="https://social.vivaldi.net/tags/Go" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Go</span></a> <a href="https://social.vivaldi.net/tags/Rust" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Rust</span></a> <a href="https://social.vivaldi.net/tags/PHP" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>PHP</span></a> all support interface-based customization<br>📊 Real result: Security patches deploy in hours not weeks, features built once serve all customers</p><p><a href="https://www.eloquentarchitecture.com/custom-tenant-code-nightmare/" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">https://www.</span><span class="ellipsis">eloquentarchitecture.com/custo</span><span class="invisible">m-tenant-code-nightmare/</span></a></p>
MarkD<p><span class="h-card" translate="no"><a href="https://infosec.exchange/@sudorandom" class="u-url mention" rel="nofollow noopener" target="_blank">@<span>sudorandom</span></a></span> You also raise an interesting question around whether abstracting <a href="https://hachyderm.io/tags/go" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>go</span></a> <a href="https://hachyderm.io/tags/golang" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>golang</span></a> concurrency primitives is a good thing.</p><p>I have mixed thoughts about this since it's hiding a hallmark of <a href="https://hachyderm.io/tags/go" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>go</span></a> and developers not having a fundamental understanding of those capabilities worries me.</p><p>I also have mixed thoughts because I too am guilty of offering concurrency abtractions, but at a much higher level with <a href="https://github.com/markdingo/parallel" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">https://</span><span class="">github.com/markdingo/parallel</span><span class="invisible"></span></a></p>
MarkD<p><span class="h-card" translate="no"><a href="https://infosec.exchange/@sudorandom" class="u-url mention" rel="nofollow noopener" target="_blank">@<span>sudorandom</span></a></span> It's all very well that Errgroup constrains concurrency, but it leaves you with the problem of what to do if TryGo() returns false.</p><p>This seems like a nasty edge-case where you have to resort to your own queuing or pooling or mutex management. This seems like its the raison d'état of Errgroup yet it punts the problem back to you at the most crucial of times.</p><p>I'm not a big fan of punting edge cases back to the consumer as that's worse complexity for them than exposing concurrency for them to deal with as a matter of course.</p><p>I agree that carrying around a context is pretty useful.</p><p><a href="https://hachyderm.io/tags/go" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>go</span></a> <a href="https://hachyderm.io/tags/golang" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>golang</span></a></p>
MarkD<p><span class="h-card" translate="no"><a href="https://infosec.exchange/@sudorandom" class="u-url mention" rel="nofollow noopener" target="_blank">@<span>sudorandom</span></a></span> I must admit I struggle to understand the benefits of errgroup. Seems overly complicated for what it does.</p><p>If you just want a multierror, why not use a sync.Waitgroup and have all your goroutines append their error to a mutex protected array? After waitGroup.Wait() your array is your multierror.</p><p><a href="https://play.golang.com/p/d5RpL_H4RCF" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">https://</span><span class="">play.golang.com/p/d5RpL_H4RCF</span><span class="invisible"></span></a></p><p><a href="https://hachyderm.io/tags/golang" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>golang</span></a> <a href="https://hachyderm.io/tags/go" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>go</span></a></p>
K<p>My golang knowledge is pretty basic. I had to do some updates to a product at work, and it was pretty easy and straight forward. Actually quite fun. Just to learn more golang, I started working on a cli-tool for my Niri setup, and it's actually pretty usable already. <br>I just want to polish it and clean up the code a bit more before publishing it. Also, since I'm not that good at the language yet, I'm totally not sure if I even do things correctly or the 'golang' way.</p><p>Any tips on which pre-commit hooks people usually use? I found one repo that has pretty much everything, but I always welcome alternatives.<br>I was also thinking about go-semantic-release to handle the package releases.</p><p>I know, this is probably quite overkill for a simple project, but hey, I like to learn and do things correctly! </p><p><a href="https://social.linux.pizza/tags/golang" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>golang</span></a> <a href="https://social.linux.pizza/tags/go" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>go</span></a> <a href="https://social.linux.pizza/tags/niri" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>niri</span></a> <a href="https://social.linux.pizza/tags/PreCommit" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>PreCommit</span></a> <a href="https://social.linux.pizza/tags/CliTools" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>CliTools</span></a> <a href="https://social.linux.pizza/tags/learning" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>learning</span></a></p>
Habr<p>Полноценное RAG-приложение на Go — безумие?</p><p>Прежде всего хочу сказать, что я не являюсь никаким специалистом, даже джуновского лвла, просто безработный студент, пишущий на коленке свои пет-проекты. И код, и тем более архитектура далеки от идеала. Однако, я думаю, некоторые моменты, о которых я буду рассказывать далее в статье, могут быть интересны полноценным разработчикам как бэкенда, так и ИИ-агентов. С технологией RAG я познакомился около года назад на хакатоне, посвященном обработке естественного языка. Там мы с командой разработали его простейшую имплементацию, с которой и заняли «почетное» 5-е место. Подробно об этой технологии в данной статье рассказывать я не буду, так как статья не о ней; вкратце - RAG позволяет генерировать ответы LLM на основании базы контекста, необходимый фрагмент которой вместе с запросом передается языковой модели на вход. Шло время, мои навыки росли, я полностью пересел с Python на Go, начал интересоваться больше бэкенд-разработкой и думал какой бы пет-проект мне написать. Идея приложения, связанного с ИИ на Go кажется сперва странной: язык предназначен для совершенно других целей, отсутствуют хорошие библиотеки сообщества, вроде Langchain (langchaingo слишком слаба). И с одной стороны, если бы идеей было обучить собственную языковую модель - это было бы действительно глупо. Но чем больше я думал о разработке RAG и ИИ-агентов, тем больше понимал, что это чисто бэкенд задача, с нулем машинного обучения под капотом. Эта мысль натолкнула меня на следующие рассуждения: зачем использовать низкопроизводительный Python, если можно создать более эффективное ИИ-приложение на Go, к тому же с лучшей масштабируемостью? Конечно, в основном это дело привычки и наличия в питоне необходимых библиотек, да и мало кто из-за небольшого прироста производительности пойдет переписывать всех ИИ-агентов на Go, Rust или C++. Но для меня это и стало хорошей идеей для своего странненького пет-проекта.</p><p><a href="https://habr.com/ru/articles/930090/" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">https://</span><span class="">habr.com/ru/articles/930090/</span><span class="invisible"></span></a></p><p><a href="https://zhub.link/tags/Go" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Go</span></a> <a href="https://zhub.link/tags/LLM" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>LLM</span></a> <a href="https://zhub.link/tags/RAG" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>RAG</span></a> <a href="https://zhub.link/tags/%D0%BC%D0%B8%D0%BA%D1%80%D0%BE%D1%81%D0%B5%D1%80%D0%B2%D0%B8%D1%81%D0%BD%D0%B0%D1%8F_%D0%B0%D1%80%D1%85%D0%B8%D1%82%D0%B5%D0%BA%D1%82%D1%83%D1%80%D0%B0" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>микросервисная_архитектура</span></a> <a href="https://zhub.link/tags/%D0%B8%D0%B8_%D0%B0%D0%B3%D0%B5%D0%BD%D1%82%D1%8B" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>ии_агенты</span></a> <a href="https://zhub.link/tags/%D0%B8%D0%B8_%D0%B0%D1%81%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BD%D1%82" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>ии_ассистент</span></a> <a href="https://zhub.link/tags/ai" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>ai</span></a></p>
Habr<p>Погружение в Go: подборка ресурсов для новичков и продолжающих</p><p>Привет, Хабр! Пару лет назад мы уже выпускали подборку книг, подкастов и других ресурсов для изучения языка программирования Go. За это время коллекция полезных материалов подросла, и пришло время поделиться продолжением. Новая подборка ждет вас под катом. Сохраняйте себе и отправляйте коллегам — пригодится как новичкам, так и опытным специалистам.</p><p><a href="https://habr.com/ru/companies/selectel/articles/929858/" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">https://</span><span class="ellipsis">habr.com/ru/companies/selectel</span><span class="invisible">/articles/929858/</span></a></p><p><a href="https://zhub.link/tags/golang" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>golang</span></a> <a href="https://zhub.link/tags/go" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>go</span></a> <a href="https://zhub.link/tags/selectel" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>selectel</span></a> <a href="https://zhub.link/tags/%D1%80%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B0" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>разработка</span></a> <a href="https://zhub.link/tags/%D0%B1%D0%B5%D0%BA%D0%B5%D0%BD%D0%B4" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>бекенд</span></a> <a href="https://zhub.link/tags/%D1%80%D0%B5%D1%81%D1%83%D1%80%D1%81%D1%8B_%D0%B4%D0%BB%D1%8F_%D1%80%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D1%87%D0%B8%D0%BA%D0%BE%D0%B2" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>ресурсы_для_разработчиков</span></a></p>
GripNews<p>🌗 Go 記憶體配置探測器<br>➤ 利用 bpftrace 分析Go 的記憶體配置<br>✤ <a href="https://www.scattered-thoughts.net/writing/go-allocation-probe/" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">https://www.</span><span class="ellipsis">scattered-thoughts.net/writing</span><span class="invisible">/go-allocation-probe/</span></a><br>這篇文章描述了作者如何使用 bpftrace 工具來探測 Go 語言程式碼中的記憶體配置情況。Go 的 profiling 工具雖然可以顯示配置發生的位置,但無法記錄配置的類型。作者懷疑某些特定類型導致了大量的記憶體配置,但這些配置分散在許多不同的位置。因此,作者利用 bpftrace 接附在 mallocgc 函數上,統計每個類型的配置次數和總位元組數。透過解析 mallocgc 函數的參數,以及Go 類型結構體的資訊,作者可以追蹤到每個類型名稱及相關的配置資訊。<br>+ 這篇技術文章很實用,展現瞭如何運用強大的工具來分析Go 的效能問題。<br>+ 雖然稍微有點技術性,但對於熟悉Go和效能分析的人來說,是一篇很有價值的文章。<br><a href="https://mastodon.social/tags/Go" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Go</span></a> 語言 <a href="https://mastodon.social/tags/%E8%A8%98%E6%86%B6%E9%AB%94%E7%AE%A1%E7%90%86" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>記憶體管理</span></a> <a href="https://mastodon.social/tags/%E6%95%88%E8%83%BD%E5%88%86%E6%9E%90" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>效能分析</span></a> <a href="https://mastodon.social/tags/bpftrace" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>bpftrace</span></a></p>