<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>Geektutu</title><description>A personal tech blog that turns tutorial articles into readable books</description><link>https://geektutu.com/</link><item><title>Build GeekAgent from Scratch — Day 16 Plugin Framework</title><link>https://geektutu.com/en/post/geekagent-day16.html</link><guid isPermaLink="true">https://geektutu.com/en/post/geekagent-day16.html</guid><description>A 7-day tutorial on building an Agent from scratch, writing the simplest possible Agent/Harness in TypeScript. Day 16 wraps capabilities into standalone plugins: drop a subdirectory with a plugin.ts into plugins/ and the main program loads it automatically at startup — commands, tools, and HTTP services all become plug-and-play.</description><pubDate>Thu, 03 Sep 2026 12:00:00 GMT</pubDate></item><item><title>Build GeekAgent from Scratch — Day 15 MCP Tool Integration</title><link>https://geektutu.com/en/post/geekagent-day15.html</link><guid isPermaLink="true">https://geektutu.com/en/post/geekagent-day15.html</guid><description>A 7-day tutorial on building an Agent from scratch, writing the simplest possible Agent/Harness in TypeScript. Day 15 integrates MCP: servers are declared in a config file, JSON-RPC runs over stdio at startup, and tools provided by external processes land straight in the model&apos;s tool list.</description><pubDate>Wed, 02 Sep 2026 10:00:00 GMT</pubDate></item><item><title>Build GeekAgent from Scratch — Day 14 Lightweight RAG Knowledge Base</title><link>https://geektutu.com/en/post/geekagent-day14.html</link><guid isPermaLink="true">https://geektutu.com/en/post/geekagent-day14.html</guid><description>A 7-day tutorial on building an Agent from scratch, writing the simplest possible Agent/Harness in TypeScript. Day 14 reuses Day 13&apos;s chunking and BM25 search to build a lightweight knowledge base that collects web pages and files and returns the relevant passages for a question.</description><pubDate>Tue, 01 Sep 2026 15:00:00 GMT</pubDate></item><item><title>Build GeekAgent from Scratch — Day 13 Proactive Memory</title><link>https://geektutu.com/en/post/geekagent-day13.html</link><guid isPermaLink="true">https://geektutu.com/en/post/geekagent-day13.html</guid><description>A 7-day tutorial on building an Agent from scratch, writing the simplest possible Agent/Harness in TypeScript. Day 13 cuts long-term memory into small chunks, finds the relevant ones with BM25, and automatically places them into the context before every turn.</description><pubDate>Tue, 01 Sep 2026 13:00:00 GMT</pubDate></item><item><title>Build GeekAgent from Scratch — Day 12 Code Search and Web Fetching</title><link>https://geektutu.com/en/post/geekagent-day12.html</link><guid isPermaLink="true">https://geektutu.com/en/post/geekagent-day12.html</guid><description>A 7-day tutorial on building an Agent from scratch, writing the simplest possible Agent/Harness in TypeScript. Day 12 adds `search` and `fetch`: one searches the repository by content, the other reads a web page and converts it to plain text.</description><pubDate>Mon, 31 Aug 2026 13:30:00 GMT</pubDate></item><item><title>Build GeekAgent from Scratch — Day 11 Skills</title><link>https://geektutu.com/en/post/geekagent-day11.html</link><guid isPermaLink="true">https://geektutu.com/en/post/geekagent-day11.html</guid><description>A 7-day tutorial on building an Agent from scratch, writing the simplest possible Agent/Harness in TypeScript. Day 11 packages task instructions and tools into skills that can be loaded and unloaded on demand, controlling which tools the model can see at any moment.</description><pubDate>Sun, 30 Aug 2026 13:30:00 GMT</pubDate></item><item><title>Build GeekAgent from Scratch — Day 10 Project Instructions and Long-term Memory</title><link>https://geektutu.com/en/post/geekagent-day10.html</link><guid isPermaLink="true">https://geektutu.com/en/post/geekagent-day10.html</guid><description>A 7-day tutorial on building an Agent from scratch, writing the simplest possible Agent/Harness in TypeScript. Day 10 adds two kinds of cross-session information: AGENTS.md stores project rules, and memory stores know-how accumulated while running, so a freshly created session&apos;s model knows the project rules and remembers previously confirmed preferences.</description><pubDate>Sat, 29 Aug 2026 13:30:00 GMT</pubDate></item><item><title>Build GeekAgent from Scratch — Day 9 Task Planning and Subagents</title><link>https://geektutu.com/en/post/geekagent-day9.html</link><guid isPermaLink="true">https://geektutu.com/en/post/geekagent-day9.html</guid><description>A 7-day tutorial on building an Agent from scratch, writing the simplest possible Agent/Harness in TypeScript. Day 9 makes the Agent list a plan before acting: add a TODO table maintained by the model, plus a subagent that isolates context. The main Agent arranges the order, the subagent handles small tasks with clear boundaries, and current progress always shows in the right-hand panel.</description><pubDate>Fri, 28 Aug 2026 13:30:00 GMT</pubDate></item><item><title>Build GeekAgent from Scratch — Day 8 Permissions and Rollback</title><link>https://geektutu.com/en/post/geekagent-day8.html</link><guid isPermaLink="true">https://geektutu.com/en/post/geekagent-day8.html</guid><description>A 7-day tutorial on building an Agent from scratch, writing the simplest possible Agent/Harness in TypeScript. Day 8 draws boundaries for tools and leaves an escape hatch for writes: use .geekagent/GeekAgent.json to define permissions and directory boundaries, and save the most recent state before every file write—operations that shouldn&apos;t happen are blocked up front, and mistakes can be reverted with /undo.</description><pubDate>Thu, 27 Aug 2026 13:30:00 GMT</pubDate></item><item><title>Build GeekAgent from Scratch — Day 7 Lightweight TUI and Usage Panel</title><link>https://geektutu.com/en/post/geekagent-day7.html</link><guid isPermaLink="true">https://geektutu.com/en/post/geekagent-day7.html</guid><description>A 7-day tutorial on building an Agent from scratch, writing the simplest possible Agent/Harness in TypeScript. Day 7 gives the terminal a new desk: the program temporarily takes over the whole screen, the message stream lives on the left, and a usage panel stays permanently on the right — per-turn / total tokens and context usage stay visible while you chat, and the original terminal content is restored on exit.</description><pubDate>Wed, 26 Aug 2026 13:30:00 GMT</pubDate></item><item><title>Build GeekAgent from Scratch — Day 6 Multiple Sessions and Persistence</title><link>https://geektutu.com/en/post/geekagent-day6.html</link><guid isPermaLink="true">https://geektutu.com/en/post/geekagent-day6.html</guid><description>A 7-day tutorial on building an Agent from scratch, writing the simplest possible Agent/Harness in TypeScript. Day 6 does two things: let one process maintain several mutually independent sessions at once (/new, /sessions, /open), then persist the whole session collection together with the current ID to JSON in one shot (/save, /load, auto-save on exit) — &quot;chat long&quot; is upgraded to &quot;split apart and kept around&quot;.</description><pubDate>Tue, 25 Aug 2026 13:30:00 GMT</pubDate></item><item><title>Build GeekAgent from Scratch — Day 5 History Compaction</title><link>https://geektutu.com/en/post/geekagent-day5.html</link><guid isPermaLink="true">https://geektutu.com/en/post/geekagent-day5.html</guid><description>A 7-day tutorial on building an Agent from scratch, writing the simplest possible Agent/Harness in TypeScript. Day 5 tackles &quot;chat long without forgetting&quot;: when the history array only grows and the conversation keeps getting longer, history compaction keeps the context size under control, so long conversations stay within the model&apos;s context window.</description><pubDate>Mon, 24 Aug 2026 13:30:00 GMT</pubDate></item><item><title>Build GeekAgent from Scratch — Day 4 File Tools and Registry</title><link>https://geektutu.com/en/post/geekagent-day4.html</link><guid isPermaLink="true">https://geektutu.com/en/post/geekagent-day4.html</guid><description>A 7-day from-scratch tutorial for building an Agent/Harness by hand in TypeScript. Day 4 splits both reads and writes out of the shell: reads go through confirmation-free dedicated tools (ls/read/glob), writes go through a dedicated channel that shows a diff before touching disk (write/patch), and the accumulated tools are unified into a single registry — the first time the model completes the full read → modify → verify loop.</description><pubDate>Sun, 23 Aug 2026 13:30:00 GMT</pubDate></item><item><title>Build GeekAgent from Scratch — Day 3 Bash Tool</title><link>https://geektutu.com/en/post/geekagent-day3.html</link><guid isPermaLink="true">https://geektutu.com/en/post/geekagent-day3.html</guid><description>A 7-day from-scratch tutorial for building an Agent/Harness by hand in TypeScript. Day 3 wires up the model&apos;s first tool that touches the real machine: running shell commands locally, with three guardrails — timeout, output truncation, and confirm-before-run — so the Agent can finally take real action.</description><pubDate>Sat, 22 Aug 2026 13:30:00 GMT</pubDate></item><item><title>Build GeekAgent from Scratch — Day 2 Tool Calling Loop</title><link>https://geektutu.com/en/post/geekagent-day2.html</link><guid isPermaLink="true">https://geektutu.com/en/post/geekagent-day2.html</guid><description>A 7-day build-an-Agent-from-scratch tutorial: hand-write the simplest possible Agent/Harness in TypeScript. Day 2 builds the tool calling loop: the model can request get_current_time, the program executes it and hands the real time back to the model, laying the groundwork for the command and file tools to come.</description><pubDate>Fri, 21 Aug 2026 13:30:00 GMT</pubDate></item><item><title>Build GeekAgent from Scratch — Day 1 REPL Foundation</title><link>https://geektutu.com/en/post/geekagent-day1.html</link><guid isPermaLink="true">https://geektutu.com/en/post/geekagent-day1.html</guid><description>A 7-day build-an-Agent-from-scratch tutorial: hand-write the simplest possible Agent/Harness in TypeScript/Node.js, implementing a REPL loop and streaming multi-turn conversation from zero. This post covers what a REPL is, why it makes the right foundation for an Agent, and how readline plus an OpenAI-compatible API gets the first step, &quot;being able to chat,&quot; running in under 160 lines of code.</description><pubDate>Thu, 20 Aug 2026 13:30:00 GMT</pubDate></item><item><title>Use Cases of Interface-based Functions in Go</title><link>https://geektutu.com/en/post/7days-golang-q1.html</link><guid isPermaLink="true">https://geektutu.com/en/post/7days-golang-q1.html</guid><description>The implementation and value of functional interfaces or interface-based functions in Go (golang). What is an interface-based function, and why wrap a function in an interface instead of passing the function directly as a parameter? How does Go&apos;s standard library net/http use interface-based functions?</description><pubDate>Sun, 25 Oct 2020 12:30:00 GMT</pubDate></item><item><title>A Gentle Introduction to Python</title><link>https://geektutu.com/en/post/quick-python.html</link><guid isPermaLink="true">https://geektutu.com/en/post/quick-python.html</guid><description>Learn Python 3 with a single article — installation, basic types (strings, ints, lists, dicts), control flow (if, for, while), composite types (classes, methods), functional programming, object-oriented programming, error handling (try/except/finally), pip and third-party packages, and how to write unit tests.</description><pubDate>Sat, 17 Oct 2020 12:00:00 GMT</pubDate></item><item><title>Implement an RPC Framework in Go - GeeRPC Day 7 Service Discovery and Registry</title><link>https://geektutu.com/en/post/geerpc-day7.html</link><guid isPermaLink="true">https://geektutu.com/en/post/geerpc-day7.html</guid><description>A 7-day tutorial on implementing an RPC framework in Go/golang from scratch (7 days implement golang remote procedure call framework from scratch tutorial). Build an RPC framework modeled after the implementation of the golang standard library net/rpc, covering the server, an asynchronous and concurrent client, message encoding and decoding, service registration, and multiple transport protocols including TCP/Unix/HTTP. On Day 7, we implement a simple registry (registry) with capabilities such as timeout-based removal and heartbeat (heartbeat) reception, along with a simple service discovery (server discovery) module.</description><pubDate>Thu, 08 Oct 2020 16:00:00 GMT</pubDate></item><item><title>Implement an RPC Framework in Go - GeeRPC Day 6 Load Balancing</title><link>https://geektutu.com/en/post/geerpc-day6.html</link><guid isPermaLink="true">https://geektutu.com/en/post/geerpc-day6.html</guid><description>A 7-day tutorial on implementing an RPC framework in Go/golang from scratch (7 days implement golang remote procedure call framework from scratch tutorial). Build an RPC framework modeled after the implementation of the golang standard library net/rpc, covering the server, an asynchronous and concurrent client, message encoding and decoding, service registration, and multiple transport protocols including TCP/Unix/HTTP. On Day 6, we implement two simple load balancing (load balance) algorithms: random selection and Round Robin scheduling.</description><pubDate>Thu, 08 Oct 2020 14:00:00 GMT</pubDate></item><item><title>Implement an RPC Framework in Go - GeeRPC Day 5 HTTP Protocol Support</title><link>https://geektutu.com/en/post/geerpc-day5.html</link><guid isPermaLink="true">https://geektutu.com/en/post/geerpc-day5.html</guid><description>A 7-day tutorial on implementing the RPC framework GeeRPC in Go/golang from scratch (7 days implement golang remote procedure call framework from scratch tutorial). Build an RPC framework modeled after the implementation of Go&apos;s standard library net/rpc, covering the server, a client supporting asynchronous and concurrent calls, message encoding and decoding, service registration, and multiple transport protocols such as TCP/Unix/HTTP. Day 5 adds support for the HTTP protocol and provides a simple DEBUG page.</description><pubDate>Thu, 08 Oct 2020 11:00:00 GMT</pubDate></item><item><title>Implement an RPC Framework in Go - GeeRPC Day 4 Timeout Processing</title><link>https://geektutu.com/en/post/geerpc-day4.html</link><guid isPermaLink="true">https://geektutu.com/en/post/geerpc-day4.html</guid><description>A 7-day tutorial on implementing the RPC framework GeeRPC in Go/golang from scratch (7 days implement golang remote procedure call framework from scratch tutorial). Build an RPC framework modeled after the implementation of Go&apos;s standard library net/rpc, covering the server, a client supporting asynchronous and concurrent calls, message encoding and decoding, service registration, and multiple transport protocols such as TCP/Unix/HTTP. Day 4 provides the RPC framework with the ability to handle timeouts (timeout processing).</description><pubDate>Wed, 07 Oct 2020 23:00:00 GMT</pubDate></item><item><title>Implement an RPC Framework in Go - GeeRPC Day 3 Service Registration</title><link>https://geektutu.com/en/post/geerpc-day3.html</link><guid isPermaLink="true">https://geektutu.com/en/post/geerpc-day3.html</guid><description>A 7-day tutorial on implementing the RPC framework GeeRPC in Go/golang from scratch (7 days implement golang remote procedure call framework from scratch tutorial). Build an RPC framework modeled after the implementation of Go&apos;s standard library net/rpc, covering the server, a client supporting asynchronous and concurrent calls, message encoding and decoding, service registration, and multiple transport protocols such as TCP/Unix/HTTP. Day 3 implements service registration, mapping Go structs to services via reflection.</description><pubDate>Wed, 07 Oct 2020 19:00:00 GMT</pubDate></item><item><title>Implement an RPC Framework in Go - GeeRPC Day 2 Asynchronous and Concurrent Client</title><link>https://geektutu.com/en/post/geerpc-day2.html</link><guid isPermaLink="true">https://geektutu.com/en/post/geerpc-day2.html</guid><description>A 7-day tutorial on implementing an RPC framework in Go/golang from scratch (7 days implement golang remote procedure call framework from scratch tutorial). Build an RPC framework modeled after the implementation of the golang standard library net/rpc, covering the server, an asynchronous and concurrent client, message encoding and decoding, service registration, and multiple transport protocols including TCP/Unix/HTTP. On Day 2, we implement a client that supports asynchronous (asynchronous) and concurrent (concurrent) calls.</description><pubDate>Wed, 07 Oct 2020 18:00:00 GMT</pubDate></item><item><title>Implement an RPC Framework in Go - GeeRPC Day 1 Server and Message Encoding</title><link>https://geektutu.com/en/post/geerpc-day1.html</link><guid isPermaLink="true">https://geektutu.com/en/post/geerpc-day1.html</guid><description>A 7-day tutorial on implementing an RPC framework in Go/golang from scratch (7 days implement golang remote procedure call framework from scratch tutorial). Build an RPC framework modeled after the implementation of the golang standard library net/rpc, covering the server, an asynchronous and concurrent client, message encoding and decoding, service registration, and multiple transport protocols including TCP/Unix/HTTP. On Day 1, we implement a simple server along with message encoding and decoding.</description><pubDate>Tue, 06 Oct 2020 17:00:00 GMT</pubDate></item><item><title>7 Days to Implement an RPC Framework GeeRPC in Go from Scratch</title><link>https://geektutu.com/en/post/geerpc.html</link><guid isPermaLink="true">https://geektutu.com/en/post/geerpc.html</guid><description>A 7-day tutorial on implementing an RPC framework in Go/golang from scratch (7 days implement golang remote procedure call framework from scratch tutorial). Build an RPC framework modeled after the implementation of the golang standard library net/rpc, covering the server, an asynchronous and concurrent client, message encoding and decoding, service registration, and multiple transport protocols including TCP/Unix/HTTP. On top of that, it adds features such as protocol exchange, a registry, service discovery, load balancing, and timeout processing.</description><pubDate>Tue, 06 Oct 2020 16:00:00 GMT</pubDate></item><item><title>Go Context: A Quick Guide to Concurrency Control</title><link>https://geektutu.com/en/post/quick-go-context.html</link><guid isPermaLink="true">https://geektutu.com/en/post/quick-go-context.html</guid><description>WaitGroup and channels are two common ways to control concurrency, but for complex scenarios Context is a more elegant mechanism. Context provides four control mechanisms: WithCancel, WithValue, WithTimeout and WithDeadline.</description><pubDate>Mon, 20 Apr 2020 15:30:00 GMT</pubDate></item><item><title>A Quick Guide to mmap in Go</title><link>https://geektutu.com/en/post/quick-go-mmap.html</link><guid isPermaLink="true">https://geektutu.com/en/post/quick-go-mmap.html</guid><description>mmap maps a file or device into memory — a one-to-one mapping between the file&apos;s on-disk address and a range of the process&apos;s virtual address space. Reading or writing that mapped memory reads or writes the file at the corresponding position. This tutorial shows how to use mmap in Go.</description><pubDate>Mon, 20 Apr 2020 14:30:00 GMT</pubDate></item><item><title>Implement an ORM Framework in Go - GeeORM Day 7 Database Migration</title><link>https://geektutu.com/en/post/geeorm-day7.html</link><guid isPermaLink="true">https://geektutu.com/en/post/geeorm-day7.html</guid><description>A 7-day tutorial on implementing an ORM framework GeeORM in Go/golang from scratch (7 days implement golang object relational mapping framework from scratch tutorial). Build an ORM framework modeled after the implementations of gorm and xorm. When a struct changes, the fields of the database table are migrated automatically; only adding and deleting fields is supported, changing field types is not.</description><pubDate>Sun, 08 Mar 2020 23:00:00 GMT</pubDate></item><item><title>Implement an ORM Framework in Go - GeeORM Day 6 Transactions</title><link>https://geektutu.com/en/post/geeorm-day6.html</link><guid isPermaLink="true">https://geektutu.com/en/post/geeorm-day6.html</guid><description>A 7-day tutorial on implementing an ORM framework GeeORM in Go/golang from scratch (7 days implement golang object relational mapping framework from scratch tutorial). Build an ORM framework modeled after the implementations of gorm and xorm. Introduces transactions in databases; wraps transactions, using user-defined callback functions to implement atomic operations.</description><pubDate>Sun, 08 Mar 2020 21:00:00 GMT</pubDate></item><item><title>Implement an ORM Framework in Go - GeeORM Day 5 Implementing Hooks</title><link>https://geektutu.com/en/post/geeorm-day5.html</link><guid isPermaLink="true">https://geektutu.com/en/post/geeorm-day5.html</guid><description>7 days to implement the ORM framework GeeORM in Go/golang from scratch tutorial (7 days implement golang object relational mapping framework from scratch tutorial), write an ORM framework by hand, modeled after gorm and xorm. Use reflection (reflect) to obtain the hooks (hooks) bound to a struct and invoke them; support calling hooks before and after CRUD (create, read, update, delete) operations.</description><pubDate>Sun, 08 Mar 2020 18:00:00 GMT</pubDate></item><item><title>Implement an ORM Framework in Go - GeeORM Day 4 Chain Operations, Update and Delete</title><link>https://geektutu.com/en/post/geeorm-day4.html</link><guid isPermaLink="true">https://geektutu.com/en/post/geeorm-day4.html</guid><description>7 days to implement the ORM framework GeeORM in Go/golang from scratch tutorial (7 days implement golang object relational mapping framework from scratch tutorial), write an ORM framework by hand, modeled after gorm and xorm. Support stacking query conditions (where, order by, limit, etc.) through chained (chain) operations; implement updating (update), deleting (delete) and counting (count) records.</description><pubDate>Sun, 08 Mar 2020 16:00:00 GMT</pubDate></item><item><title>Implement an ORM Framework in Go - GeeORM Day 3 Record Operations</title><link>https://geektutu.com/en/post/geeorm-day3.html</link><guid isPermaLink="true">https://geektutu.com/en/post/geeorm-day3.html</guid><description>7 days to implement the ORM framework GeeORM in Go/golang from scratch tutorial (7 days implement golang object relational mapping framework from scratch tutorial), write an ORM framework by hand, modeled after gorm and xorm. Implement inserting (insert) records; use reflection (reflect) to convert database records into the corresponding struct instances, implementing the query (select) feature.</description><pubDate>Sun, 08 Mar 2020 01:00:00 GMT</pubDate></item><item><title>Implement an ORM Framework in Go - GeeORM Day 2 Mapping Structs to Tables</title><link>https://geektutu.com/en/post/geeorm-day2.html</link><guid isPermaLink="true">https://geektutu.com/en/post/geeorm-day2.html</guid><description>A tutorial on implementing the ORM framework GeeORM in Go/golang from scratch in 7 days (7 days implement golang object relational mapping framework from scratch tutorial). Build an ORM framework by hand, modeled after gorm and xorm. This article uses reflection (reflect) to obtain the name and fields of an arbitrary struct object and map it to a table in the database; uses dialect to isolate the differences between databases for easy extension; and creates and drops database tables.</description><pubDate>Sun, 08 Mar 2020 00:20:00 GMT</pubDate></item><item><title>Implement an ORM Framework in Go - GeeORM Day 1 database/sql Basics</title><link>https://geektutu.com/en/post/geeorm-day1.html</link><guid isPermaLink="true">https://geektutu.com/en/post/geeorm-day1.html</guid><description>A tutorial on implementing the ORM framework GeeORM in Go/golang from scratch in 7 days (7 days implement golang object relational mapping framework from scratch tutorial). Build an ORM framework by hand, modeled after gorm and xorm. This article introduces basic SQLite operations (connecting to the database, creating tables, inserting and deleting records, etc.) and using the Go standard library database/sql to work with SQLite, including Exec, Query and QueryRow.</description><pubDate>Sat, 07 Mar 2020 23:00:00 GMT</pubDate></item><item><title>Implement an ORM Framework in Go from Scratch in 7 Days - GeeORM</title><link>https://geektutu.com/en/post/geeorm.html</link><guid isPermaLink="true">https://geektutu.com/en/post/geeorm.html</guid><description>A tutorial on implementing the ORM framework GeeORM in Go/golang from scratch in 7 days (7 days implement golang object relational mapping framework from scratch tutorial). Build an ORM framework by hand, modeled after gorm and xorm. Features include two-way mapping between objects and table schemas, creating and dropping tables, CRUD operations on records, transaction support, database migration (migrate), hooks, and more.</description><pubDate>Sun, 01 Mar 2020 01:00:00 GMT</pubDate></item><item><title>Implement a Distributed Cache in Go - GeeCache Day 7 Communicating with Protobuf</title><link>https://geektutu.com/en/post/geecache-day7.html</link><guid isPermaLink="true">https://geektutu.com/en/post/geecache-day7.html</guid><description>A tutorial on implementing the distributed cache GeeCache from scratch in Go (7 days implement golang distributed cache from scratch tutorial), building a distributed cache modeled after groupcache. This article describes using protobuf (protocol buffer) for communication between nodes, encoding messages to improve efficiency.</description><pubDate>Mon, 17 Feb 2020 00:30:00 GMT</pubDate></item><item><title>Implement a Distributed Cache in Go - GeeCache Day 6 Preventing Cache Breakdown</title><link>https://geektutu.com/en/post/geecache-day6.html</link><guid isPermaLink="true">https://geektutu.com/en/post/geecache-day6.html</guid><description>A tutorial on implementing the distributed cache GeeCache from scratch in Go (7 days implement golang distributed cache from scratch tutorial), building a distributed cache modeled after groupcache. This article introduces the concepts of cache avalanche, cache breakdown and cache penetration, and implements and tests singleflight to prevent cache breakdown.</description><pubDate>Sun, 16 Feb 2020 23:00:00 GMT</pubDate></item><item><title>Implement a Distributed Cache in Go - GeeCache Day 5 Distributed Nodes</title><link>https://geektutu.com/en/post/geecache-day5.html</link><guid isPermaLink="true">https://geektutu.com/en/post/geecache-day5.html</guid><description>A tutorial on implementing the distributed cache GeeCache from scratch in Go (7 days implement golang distributed cache from scratch tutorial), building a distributed cache modeled after groupcache. This article adds node registration and node selection to GeeCache, and implements an HTTP client to communicate with the servers of remote nodes.</description><pubDate>Sun, 16 Feb 2020 21:30:00 GMT</pubDate></item><item><title>Implement a Distributed Cache in Go - GeeCache Day 4 Consistent Hashing (Hash)</title><link>https://geektutu.com/en/post/geecache-day4.html</link><guid isPermaLink="true">https://geektutu.com/en/post/geecache-day4.html</guid><description>A tutorial on implementing the distributed cache GeeCache from scratch in Go (7 days implement golang distributed cache from scratch tutorial), building a distributed cache modeled after groupcache. This article introduces the principle of consistent hashing, its implementation, and related test cases: why consistent hashing can prevent cache avalanches, and why virtual nodes solve the problem of data skew.</description><pubDate>Sun, 16 Feb 2020 20:00:00 GMT</pubDate></item><item><title>A Quick Guide to gomock</title><link>https://geektutu.com/en/post/quick-gomock.html</link><guid isPermaLink="true">https://geektutu.com/en/post/quick-gomock.html</guid><description>gomock is the official Go mocking library for unit tests, useful when dependencies such as network requests, databases or file I/O are complex and hard to call directly. This tutorial covers matchers (Any, Nil, Not, Eq), return values (Do, Return, DoAndReturn), call counts (Times) and ordering (InOrder), and how to write mockable code.</description><pubDate>Fri, 14 Feb 2020 15:30:10 GMT</pubDate></item><item><title>Implement a Distributed Cache in Go - GeeCache Day 3 HTTP Server</title><link>https://geektutu.com/en/post/geecache-day3.html</link><guid isPermaLink="true">https://geektutu.com/en/post/geecache-day3.html</guid><description>7 Days Go Distributed Cache Tutorial Series from scratch (7 days implement golang distributed cache from scratch tutorial). Build a distributed cache by hand, modeled after the implementation of groupcache. This article introduces how to build an HTTP Server with the standard library http, set up an HTTP service for GeeCache&apos;s single-node instance, and run the related tests.</description><pubDate>Wed, 12 Feb 2020 23:00:00 GMT</pubDate></item><item><title>Implement a Distributed Cache in Go - GeeCache Day 2 Single-Node Concurrent Cache</title><link>https://geektutu.com/en/post/geecache-day2.html</link><guid isPermaLink="true">https://geektutu.com/en/post/geecache-day2.html</guid><description>7 Days Go Distributed Cache Tutorial Series from scratch (7 days implement golang distributed cache from scratch tutorial). Build a distributed cache by hand, modeled after the implementation of groupcache. This article introduces the use of the sync.Mutex mutual exclusion lock to control concurrency for the LRU cache. It implements GeeCache&apos;s core data structure Group; when the cache misses, a callback function is invoked to fetch the source data.</description><pubDate>Wed, 12 Feb 2020 22:00:00 GMT</pubDate></item><item><title>Implement a Distributed Cache in Go - GeeCache Day 1 LRU Cache Eviction Strategy</title><link>https://geektutu.com/en/post/geecache-day1.html</link><guid isPermaLink="true">https://geektutu.com/en/post/geecache-day1.html</guid><description>7 Days Go Distributed Cache Tutorial Series from scratch (7 days implement golang distributed cache from scratch tutorial). Build a distributed cache by hand, modeled after the implementation of groupcache. This article introduces the three most common cache eviction (expiry) algorithms: First In First Out (FIFO), Least Frequently Used (LFU), and Least Recently Used (LRU), and implements the LRU algorithm along with the corresponding test code.</description><pubDate>Tue, 11 Feb 2020 22:00:00 GMT</pubDate></item><item><title>Go Test: Unit Testing in Go</title><link>https://geektutu.com/en/post/quick-go-test.html</link><guid isPermaLink="true">https://geektutu.com/en/post/quick-go-test.html</guid><description>How to write unit tests in Go with the standard library testing package: subtests, table-driven tests, helper functions, setup and teardown, network/HTTP testing and benchmarks.</description><pubDate>Mon, 10 Feb 2020 15:00:00 GMT</pubDate></item><item><title>Implement a Distributed Cache in Go from Scratch - GeeCache</title><link>https://geektutu.com/en/post/geecache.html</link><guid isPermaLink="true">https://geektutu.com/en/post/geecache.html</guid><description>7 Days Go Distributed Cache Tutorial Series from scratch (7 days implement golang distributed cache from scratch tutorial). Build a distributed cache by hand, modeled after the implementation of groupcache. Features include single-node/distributed caching, LRU (Least Recently Used) cache eviction strategy, preventing cache breakdown, consistent hashing (Consistent Hash), protobuf-based communication, and more.</description><pubDate>Sat, 08 Feb 2020 01:00:00 GMT</pubDate></item><item><title>A Quick Guide to Go WebAssembly (Wasm)</title><link>https://geektutu.com/en/post/quick-go-wasm.html</link><guid isPermaLink="true">https://geektutu.com/en/post/quick-go-wasm.html</guid><description>Front-end development with Go, WebAssembly and GopherJS: registering functions, interacting with browser JavaScript objects, manipulating DOM elements, asynchronous programming with callbacks, plus more advanced demos (games, rendering) and related projects and documentation.</description><pubDate>Thu, 23 Jan 2020 15:25:00 GMT</pubDate></item><item><title>A Quick Guide to Go RPC &amp; TLS</title><link>https://geektutu.com/en/post/quick-go-rpc.html</link><guid isPermaLink="true">https://geektutu.com/en/post/quick-go-rpc.html</guid><description>Remote Procedure Call (RPC) in Go with the standard library net/rpc: synchronous and asynchronous calls, plus one-way and mutual authentication between server and client using TLS/SSL.</description><pubDate>Mon, 13 Jan 2020 15:47:00 GMT</pubDate></item><item><title>A Quick Guide to Protocol Buffers in Go</title><link>https://geektutu.com/en/post/quick-go-protobuf.html</link><guid isPermaLink="true">https://geektutu.com/en/post/quick-go-protobuf.html</guid><description>Protocol Buffers (protobuf) is a language- and platform-neutral, scalable and extensible way to serialize structured data — smaller and faster than JSON or XML. This tutorial covers Protocol Buffers 3 (proto3): installation, basic syntax and how to use it in Go.</description><pubDate>Fri, 10 Jan 2020 16:27:00 GMT</pubDate></item><item><title>Building a Web Framework in Go - Gee Day 7 Panic Recover</title><link>https://geektutu.com/en/post/gee-day7.html</link><guid isPermaLink="true">https://geektutu.com/en/post/gee-day7.html</guid><description>A 7-day tutorial on implementing a Web framework from scratch in Go (7 days implement golang web framework from scratch tutorial). Build a Web framework from scratch with Go/golang, with Gin as the design prototype. This article explains how to add an error handling mechanism to the Web framework.</description><pubDate>Thu, 09 Jan 2020 01:00:00 GMT</pubDate></item><item><title>A Gentle Introduction to Rust</title><link>https://geektutu.com/en/post/quick-rust.html</link><guid isPermaLink="true">https://geektutu.com/en/post/quick-rust.html</guid><description>Rust is a systems programming language balancing safety, speed and concurrency. This tutorial covers Rust and Cargo installation, basic types (strings, ints), control flow (if, if let, while let, loop, for), composite types (struct, enum), error handling (panic, Result), Cargo project layout and testing Rust code.</description><pubDate>Sun, 24 Nov 2019 15:59:10 GMT</pubDate></item><item><title>Building a Web Framework in Go - Gee Day 6 HTML Template</title><link>https://geektutu.com/en/post/gee-day6.html</link><guid isPermaLink="true">https://geektutu.com/en/post/gee-day6.html</guid><description>A 7-day tutorial on implementing a Web framework from scratch in Go (7 days implement golang web framework from scratch tutorial). Build a Web framework from scratch with Go/golang, with Gin as the design prototype. This article explains how to add HTML template (HTML Template) rendering and static file (Serve Static Files) serving to the Web framework.</description><pubDate>Sun, 08 Sep 2019 20:10:00 GMT</pubDate></item><item><title>Building a Web Framework in Go - Gee Day 5 Middleware</title><link>https://geektutu.com/en/post/gee-day5.html</link><guid isPermaLink="true">https://geektutu.com/en/post/gee-day5.html</guid><description>A 7-day tutorial on implementing a Web framework from scratch in Go (7 days implement golang web framework from scratch tutorial). Build a Web framework from scratch with Go/golang, with Gin as the design prototype. This article explains how to add middleware support (middlewares) to the Web framework.</description><pubDate>Sun, 01 Sep 2019 20:10:10 GMT</pubDate></item><item><title>Building a Web Framework in Go - Gee Day 4 Group</title><link>https://geektutu.com/en/post/gee-day4.html</link><guid isPermaLink="true">https://geektutu.com/en/post/gee-day4.html</guid><description>A 7-day tutorial on implementing a Web framework from scratch in Go (7 days implement golang web framework from scratch tutorial). Build a Web framework from scratch with Go/golang, with Gin as the design prototype. This article explains the significance of group control (Group Control) and the implementation of nested route groups.</description><pubDate>Sun, 01 Sep 2019 15:10:10 GMT</pubDate></item><item><title>Building a Web Framework in Go - Gee Day 3 Trie Tree Router</title><link>https://geektutu.com/en/post/gee-day3.html</link><guid isPermaLink="true">https://geektutu.com/en/post/gee-day3.html</guid><description>A tutorial on implementing a Web framework from scratch in Go (7 days implement golang web framework from scratch tutorial), build a Web framework by hand in Go/golang, and design a Web framework from scratch modeled after Gin. This article introduces how to implement routes with a Trie prefix tree. It supports simple parameter parsing and wildcard scenarios.</description><pubDate>Wed, 28 Aug 2019 00:10:10 GMT</pubDate></item><item><title>Building a Web Framework in Go - Gee Day 2 Context</title><link>https://geektutu.com/en/post/gee-day2.html</link><guid isPermaLink="true">https://geektutu.com/en/post/gee-day2.html</guid><description>A tutorial on implementing a Web framework from scratch in Go (7 days implement golang web framework from scratch tutorial), build a Web framework by hand in Go/golang, and design a Web framework from scratch modeled after Gin. This article introduces the design idea of the request context (Context), which wraps methods for returning JSON/String/Data/HTML and other types of responses.</description><pubDate>Mon, 19 Aug 2019 00:10:10 GMT</pubDate></item><item><title>A Quick Guide to Go 2</title><link>https://geektutu.com/en/post/quick-go2.html</link><guid isPermaLink="true">https://geektutu.com/en/post/quick-go2.html</guid><description>What changes in Go 2 compared to Go 1: the latest design drafts covering packages, error handling, error values and generics, plus a short history of the Go language.</description><pubDate>Thu, 15 Aug 2019 15:59:10 GMT</pubDate></item><item><title>Building a Web Framework in Go - Gee Day 1 http.Handler</title><link>https://geektutu.com/en/post/gee-day1.html</link><guid isPermaLink="true">https://geektutu.com/en/post/gee-day1.html</guid><description>A tutorial on implementing a Web framework from scratch in Go (7 days implement golang web framework from scratch tutorial), build a Web framework by hand in Go/golang, and design a Web framework from scratch modeled after Gin. This article introduces the use of Go&apos;s standard library net/http and the http.Handler interface, intercepting all HTTP requests and handing them over to the Gee framework.</description><pubDate>Mon, 12 Aug 2019 00:10:10 GMT</pubDate></item><item><title>Building a Web Framework in Go from Scratch - Gee Tutorial</title><link>https://geektutu.com/en/post/gee.html</link><guid isPermaLink="true">https://geektutu.com/en/post/gee.html</guid><description>A tutorial on implementing a Web framework from scratch in Go (7 days implement golang web framework from scratch tutorial), build a Web framework by hand in Go/golang, and design a Web framework from scratch modeled after Gin.</description><pubDate>Sun, 11 Aug 2019 02:10:10 GMT</pubDate></item><item><title>Gin in a Nutshell</title><link>https://geektutu.com/en/post/quick-go-gin.html</link><guid isPermaLink="true">https://geektutu.com/en/post/quick-go-gin.html</guid><description>A quick-start tutorial for the Gin web framework: installing Go and setting up the environment, hot reload, routing and route groups, HTML templates, and middleware.</description><pubDate>Wed, 07 Aug 2019 12:10:10 GMT</pubDate></item><item><title>A Gentle Introduction to Go</title><link>https://geektutu.com/en/post/quick-golang.html</link><guid isPermaLink="true">https://geektutu.com/en/post/quick-golang.html</guid><description>Learn Go (Golang) with a single article — installation, basic types (strings, ints, arrays, slices, maps), control flow (if, for, for-range, switch), composite types (structs, interfaces, methods), concurrency (goroutines, channels, sync), error handling (panic, error), Go Modules and how to write unit tests.</description><pubDate>Mon, 05 Aug 2019 17:00:00 GMT</pubDate></item></channel></rss>