c.im
Open in
urlscan Pro
172.67.69.100
Public Scan
Submitted URL: http://www.c.im///@antonz
Effective URL: https://c.im/@antonz
Submission: On October 10 via api from US — Scanned from DE
Effective URL: https://c.im/@antonz
Submission: On October 10 via api from US — Scanned from DE
Form analysis
0 forms found in the DOMText Content
Mastodon Konto erstellenAnmelden FRÜHERE SUCHANFRAGEN Keine früheren Suchanfragen SUCHOPTIONEN Only available when logged in. c.im ist Teil eines dezentralisierten sozialen Netzwerks, angetrieben von Mastodon. C.IM is a general, mainly English-speaking Mastodon instance. VERWALTET VON: C.IM Administrator @admin SERVERSTATISTIK: 3,4 Tsd. aktive Profile -------------------------------------------------------------------------------- Mehr erfahren c.im: Über · Status · Profilverzeichnis · Datenschutzerklärung Mastodon: Über · App herunterladen · Tastenkombinationen · Quellcode anzeigen · v4.2.13 Zurück Folgen ANTON ZHIYANOV@ANTONZ@C.IM Open source maintainer, book author and blogger. Beigetreten29. Juli 2023Website https://antonz.orgGitHib https://github.com/nalgeon 132 Beiträge4 Folge ich288 Follower BeiträgeBeiträge und AntwortenMedien Angehefteter Beitrag 8. Juni * Anton Zhiyanov @antonz Hey, I'm Anton, and I maintain some open-source projects you might find useful: Redka Redis reimplemented with SQLite, available as an in-process library and as a standalone server. Codapi Interactive code examples for product documentation, online courses and blog posts. Plus a lightweight code sandbox server. Sqlean A set of SQLite extensions along with a package manager for installing them (and other extensions as well). https://github.com/nalgeon 0 Anton Zhiyanov<p>The SQL Window Functions Explained book is out! It's a clear and visual introduction to the subject, taking the reader step-by-step from the basics to advanced topics.</p><p>— 100+ pictures and GIFs<br />— 56 interactive exercises (with solutions)<br />— 296 pages</p><p><a href="https://antonz.org/sql-window-functions-book/" target="_blank" rel="nofollow noopener noreferrer" translate="no"><span class="invisible">https://</span><span class="ellipsis">antonz.org/sql-window-function</span><span class="invisible">s-book/</span></a></p> Anton Zhiyanov Anton Zhiyanov<p>There is a rat in Go's stdlib. And it's a big one.</p><p>I'm talking about the big.Rat type, which handles a/b type ratios without losing precision (see the screenshot).</p> Anton Zhiyanov<p>While SQLite provides a certain number of date functions, I wanted something more.</p><p>So I've created a high-precision date/time extension with a structured API and a rich set of functions.</p><p><a href="https://antonz.org/sqlean-time" target="_blank" rel="nofollow noopener noreferrer" translate="no"><span class="invisible">https://</span><span class="">antonz.org/sqlean-time</span><span class="invisible"></span></a></p> Anton Zhiyanov Anton Zhiyanov<p>You probably know about Python's built-in static HTTP server:</p><p>python -m http.server 8080</p><p>You can reimplement it with Go in a dozen lines of code, and then run it like this:</p><p>go run http.go 8080</p> Anton Zhiyanov<p>The SQLite extension hub needs two more extensions to reach 100. Maybe you can write one? 🙃</p><p><a href="https://sqlpkg.org" target="_blank" rel="nofollow noopener noreferrer" translate="no"><span class="invisible">https://</span><span class="">sqlpkg.org</span><span class="invisible"></span></a></p> Anton Zhiyanov<p>My text SQLite extension didn't feel complete without Unicode-aware case functions like upper, lower and title — so I added them.</p><p><a href="https://github.com/nalgeon/sqlean/releases/0.25.0" target="_blank" rel="nofollow noopener noreferrer" translate="no"><span class="invisible">https://</span><span class="ellipsis">github.com/nalgeon/sqlean/rele</span><span class="invisible">ases/0.25.0</span></a></p> Anton Zhiyanov Anton Zhiyanov<p>I've just published two chapters of my interactive book on Go concurrency, and I invite you to read them!</p><p>If you are new to concurrency, start with the Goroutines chapter.</p><p>Otherwise, try the Wait groups chapter, I bet you'll learn something new.</p><p><a href="https://antonz.org/go-concurrency" target="_blank" rel="nofollow noopener noreferrer" translate="no"><span class="invisible">https://</span><span class="">antonz.org/go-concurrency</span><span class="invisible"></span></a></p> Anton Zhiyanov<p>One-line recursive directory copy is the kind of change I welcome with all my heart. What could be more boring (and error-prone) than manually juggling the file system?</p> Anton Zhiyanov Anton Zhiyanov<p>Proper date/time format strings are still my favorite Go improvement. Generics aren't even close 😁</p> Anton Zhiyanov<p>If you're interested in which Go features appeared in which versions, I've got an article just for you: <a href="https://antonz.org/which-go" target="_blank" rel="nofollow noopener noreferrer" translate="no"><span class="invisible">https://</span><span class="">antonz.org/which-go</span><span class="invisible"></span></a></p> Anton Zhiyanov<p>Go 1.23 is coming soon, and the official release notes are pretty dry.</p><p>So I prepared an interactive version with lots of examples.</p><p><a href="https://antonz.org/go-1-23" target="_blank" rel="nofollow noopener noreferrer" translate="no"><span class="invisible">https://</span><span class="">antonz.org/go-1-23</span><span class="invisible"></span></a></p> Anton Zhiyanov<p>Many Go concurrency books and tutorials are like: here's goroutine, here's channel, here's select — use them as you like. Others just throw concurrent patterns at you without really explaining them.</p><p>This is not very helpful: the most important thing in concurrent programming is not pure knowledge, but the understanding and ability to apply concurrency primitives.</p><p>That's why I've created an interactive book that teaches Go concurrency from the ground up, with an emphasis on practical application.</p><p>I'll be releasing it chapter by chapter over the next few months, so stay tuned!</p> Anton Zhiyanov Anton Zhiyanov<p>Okay, so the Go team really did leave the timer channel buffered in 1.23 (contrary to what the NewTimer code comment says).</p><p>But they also hacked the chan type itself to return zero length and capacity for timer channels.</p><p>What a terrible thing to do.</p> Anton Zhiyanov<p>So in Go 1.22 and earlier, the Timer channel is buffered. And starting with 1.23, it's unbuffered.</p><p>Except the code says it's still buffered 🤯</p><p>Also, according to the docs, the timers in 1.22 and 1.23 are very different things, so this is a breaking change.</p><p>Except that it's (supposedly) not, because the new timer behavior only takes effect with "go 1.23" in go.mod.</p><p>This is all very confusing.</p> Anton Zhiyanov<p>If you use Timer.Reset() in Go, you may be doing it wrong.</p><p>Even the book "100 Go Mistakes" (which is usually right about Go nuances) got it wrong.</p><p><a href="https://antonz.org/timer-reset" target="_blank" rel="nofollow noopener noreferrer" translate="no"><span class="invisible">https://</span><span class="">antonz.org/timer-reset</span><span class="invisible"></span></a></p> Anton Zhiyanov<p>I really like it when Go's stdlib sources tell me stories like this. Please do more of them.</p> Mehr laden Mastodon -------------------------------------------------------------------------------- EntdeckenLive-Feeds -------------------------------------------------------------------------------- Melde dich an, um Profilen oder Hashtags zu folgen, Beiträge zu favorisieren, zu teilen und auf sie zu antworten. Du kannst auch von deinem Konto aus auf einem anderen Server interagieren. Konto erstellenAnmelden -------------------------------------------------------------------------------- Über Zum Hochladen hereinziehen