{"adoption": {"forks": 725, "observed_at": "2026-08-28T04:08:41.615510+00:00", "stars": 4302}, "canonical_url": "https://ross.abutalabs.com/products/learning_tools", "card": {"archived": false, "artifact_type": "learning-resource", "description": "Go 学习、Go 进阶、Go 实用工具类、Go DDD 项目落地、Go-kit 、Go-Micro 、Go 推送平台、微服务实践", "domain": ["developer-tools", "microservices", "backend", "tutorials"], "enriched": true, "function": ["developer-tools", "rpc", "middleware", "auth", "monitoring", "tracing", "logging", "rate-limiting", "web-framework"], "health_score": 20, "homepage": "https://www.hwholiday.com/", "language": "Go", "license": "Apache-2.0", "license_family": "permissive", "maturity": "active", "member_repos": ["hwholiday/learning_tools"], "name": "hwholiday/learning_tools", "platform": ["go", "self-hosted"], "pushed_at": "2024-12-30T16:13:13+00:00", "repo": "hwholiday/learning_tools", "stars": 4302, "tags": ["go-kit", "grpc", "ddd", "hexagonal-architecture", "etcd", "service-discovery", "load-balancing", "jwt", "prometheus", "jaeger", "examples", "microservices", "linux", "docker"], "topics": ["rpc-grpc", "gin", "golang", "jwt", "minio", "mongodb", "prometheus", "zap", "redis", "tcp-socket", "x3dh", "signal-protocol", "discovery", "aes", "go-kit", "micro", "push", "auth2", "ddd-example"], "urls": [], "use_cases": ["learn go-kit microservices step by step", "implement gRPC load balancing with etcd service discovery", "understand DDD and hexagonal architecture in Go", "add JWT authentication to a Go microservice", "set up Prometheus monitoring and Jaeger tracing for Go services", "see an OAuth2 authorization code flow implemented in Go", "learn rate limiting and circuit breaking patterns in Go"], "what_it_is": "A curated collection of Go learning examples covering go-kit microservices, gRPC load balancing with etcd, DDD/hexagonal architecture, and utility tools. Each example is paired with detailed Chinese-language blog articles walking through the implementation.", "when_to_avoid": ["you need a production-ready framework or library to drop into your project", "you want a maintained, supported product rather than educational code", "you need English-language documentation"], "when_to_choose": ["you are a Go developer learning microservice architecture through runnable examples", "you want reference implementations of go-kit, gRPC, or DDD patterns", "you prefer examples accompanied by in-depth tutorial articles"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/learning_tools", "repo": "hwholiday/learning_tools", "role": "main", "score": 32}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:08:41.615510+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-29T18:21:50.188151+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "cbcbe4c731684e24d98b11c3cc22b211d62ed69d90b2bdf90277107185aa3ff3", "fetched_at": "2026-08-28T04:08:41.615510+00:00", "kind": "readme", "missing": false, "url": "https://github.com/hwholiday/learning_tools"}, {"content_hash": "89488c874ec5e2df147b59a0c6d757ddf18b4560ab7f462d5f576d4c34dfdfb3", "fetched_at": "2026-08-29T09:11:02.667218+00:00", "kind": "homepage", "missing": false, "url": "https://www.hwholiday.com/"}, {"content_hash": "aa9d2baa98673c6bbb973a20032a8492597d415ef57ea42b8644815cd2b0bcd0", "fetched_at": "2026-08-29T09:11:02.719720+00:00", "kind": "site_page", "missing": false, "url": "https://hwholiday.com/about"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:08:41.615510+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-29T18:21:50.188151+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "cbcbe4c731684e24d98b11c3cc22b211d62ed69d90b2bdf90277107185aa3ff3", "fetched_at": "2026-08-28T04:08:41.615510+00:00", "kind": "readme", "missing": false, "url": "https://github.com/hwholiday/learning_tools"}, {"content_hash": "89488c874ec5e2df147b59a0c6d757ddf18b4560ab7f462d5f576d4c34dfdfb3", "fetched_at": "2026-08-29T09:11:02.667218+00:00", "kind": "homepage", "missing": false, "url": "https://www.hwholiday.com/"}, {"content_hash": "aa9d2baa98673c6bbb973a20032a8492597d415ef57ea42b8644815cd2b0bcd0", "fetched_at": "2026-08-29T09:11:02.719720+00:00", "kind": "site_page", "missing": false, "url": "https://hwholiday.com/about"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-29T18:21:50.188151+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "cbcbe4c731684e24d98b11c3cc22b211d62ed69d90b2bdf90277107185aa3ff3", "fetched_at": "2026-08-28T04:08:41.615510+00:00", "kind": "readme", "missing": false, "url": "https://github.com/hwholiday/learning_tools"}, {"content_hash": "89488c874ec5e2df147b59a0c6d757ddf18b4560ab7f462d5f576d4c34dfdfb3", "fetched_at": "2026-08-29T09:11:02.667218+00:00", "kind": "homepage", "missing": false, "url": "https://www.hwholiday.com/"}, {"content_hash": "aa9d2baa98673c6bbb973a20032a8492597d415ef57ea42b8644815cd2b0bcd0", "fetched_at": "2026-08-29T09:11:02.719720+00:00", "kind": "site_page", "missing": false, "url": "https://hwholiday.com/about"}], "taxonomy_version": 1}, "health_score": {"inputs": ["days_since_push", "days_since_release", "archived"], "kind": "computed", "method": "health_v1"}, "homepage": {"kind": "observed", "observed_at": "2026-08-28T04:08:41.615510+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:08:41.615510+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:08:41.615510+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-29T18:21:50.188151+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "cbcbe4c731684e24d98b11c3cc22b211d62ed69d90b2bdf90277107185aa3ff3", "fetched_at": "2026-08-28T04:08:41.615510+00:00", "kind": "readme", "missing": false, "url": "https://github.com/hwholiday/learning_tools"}, {"content_hash": "89488c874ec5e2df147b59a0c6d757ddf18b4560ab7f462d5f576d4c34dfdfb3", "fetched_at": "2026-08-29T09:11:02.667218+00:00", "kind": "homepage", "missing": false, "url": "https://www.hwholiday.com/"}, {"content_hash": "aa9d2baa98673c6bbb973a20032a8492597d415ef57ea42b8644815cd2b0bcd0", "fetched_at": "2026-08-29T09:11:02.719720+00:00", "kind": "site_page", "missing": false, "url": "https://hwholiday.com/about"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:08:41.615510+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:08:41.615510+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-29T18:21:50.188151+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "cbcbe4c731684e24d98b11c3cc22b211d62ed69d90b2bdf90277107185aa3ff3", "fetched_at": "2026-08-28T04:08:41.615510+00:00", "kind": "readme", "missing": false, "url": "https://github.com/hwholiday/learning_tools"}, {"content_hash": "89488c874ec5e2df147b59a0c6d757ddf18b4560ab7f462d5f576d4c34dfdfb3", "fetched_at": "2026-08-29T09:11:02.667218+00:00", "kind": "homepage", "missing": false, "url": "https://www.hwholiday.com/"}, {"content_hash": "aa9d2baa98673c6bbb973a20032a8492597d415ef57ea42b8644815cd2b0bcd0", "fetched_at": "2026-08-29T09:11:02.719720+00:00", "kind": "site_page", "missing": false, "url": "https://hwholiday.com/about"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:08:41.615510+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:08:41.615510+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:08:41.615510+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-29T18:21:50.188151+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "cbcbe4c731684e24d98b11c3cc22b211d62ed69d90b2bdf90277107185aa3ff3", "fetched_at": "2026-08-28T04:08:41.615510+00:00", "kind": "readme", "missing": false, "url": "https://github.com/hwholiday/learning_tools"}, {"content_hash": "89488c874ec5e2df147b59a0c6d757ddf18b4560ab7f462d5f576d4c34dfdfb3", "fetched_at": "2026-08-29T09:11:02.667218+00:00", "kind": "homepage", "missing": false, "url": "https://www.hwholiday.com/"}, {"content_hash": "aa9d2baa98673c6bbb973a20032a8492597d415ef57ea42b8644815cd2b0bcd0", "fetched_at": "2026-08-29T09:11:02.719720+00:00", "kind": "site_page", "missing": false, "url": "https://hwholiday.com/about"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:08:41.615510+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:08:41.615510+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-29T18:21:50.188151+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "cbcbe4c731684e24d98b11c3cc22b211d62ed69d90b2bdf90277107185aa3ff3", "fetched_at": "2026-08-28T04:08:41.615510+00:00", "kind": "readme", "missing": false, "url": "https://github.com/hwholiday/learning_tools"}, {"content_hash": "89488c874ec5e2df147b59a0c6d757ddf18b4560ab7f462d5f576d4c34dfdfb3", "fetched_at": "2026-08-29T09:11:02.667218+00:00", "kind": "homepage", "missing": false, "url": "https://www.hwholiday.com/"}, {"content_hash": "aa9d2baa98673c6bbb973a20032a8492597d415ef57ea42b8644815cd2b0bcd0", "fetched_at": "2026-08-29T09:11:02.719720+00:00", "kind": "site_page", "missing": false, "url": "https://hwholiday.com/about"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-29T18:21:50.188151+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "cbcbe4c731684e24d98b11c3cc22b211d62ed69d90b2bdf90277107185aa3ff3", "fetched_at": "2026-08-28T04:08:41.615510+00:00", "kind": "readme", "missing": false, "url": "https://github.com/hwholiday/learning_tools"}, {"content_hash": "89488c874ec5e2df147b59a0c6d757ddf18b4560ab7f462d5f576d4c34dfdfb3", "fetched_at": "2026-08-29T09:11:02.667218+00:00", "kind": "homepage", "missing": false, "url": "https://www.hwholiday.com/"}, {"content_hash": "aa9d2baa98673c6bbb973a20032a8492597d415ef57ea42b8644815cd2b0bcd0", "fetched_at": "2026-08-29T09:11:02.719720+00:00", "kind": "site_page", "missing": false, "url": "https://hwholiday.com/about"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-29T18:21:50.188151+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "cbcbe4c731684e24d98b11c3cc22b211d62ed69d90b2bdf90277107185aa3ff3", "fetched_at": "2026-08-28T04:08:41.615510+00:00", "kind": "readme", "missing": false, "url": "https://github.com/hwholiday/learning_tools"}, {"content_hash": "89488c874ec5e2df147b59a0c6d757ddf18b4560ab7f462d5f576d4c34dfdfb3", "fetched_at": "2026-08-29T09:11:02.667218+00:00", "kind": "homepage", "missing": false, "url": "https://www.hwholiday.com/"}, {"content_hash": "aa9d2baa98673c6bbb973a20032a8492597d415ef57ea42b8644815cd2b0bcd0", "fetched_at": "2026-08-29T09:11:02.719720+00:00", "kind": "site_page", "missing": false, "url": "https://hwholiday.com/about"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-29T18:21:50.188151+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "cbcbe4c731684e24d98b11c3cc22b211d62ed69d90b2bdf90277107185aa3ff3", "fetched_at": "2026-08-28T04:08:41.615510+00:00", "kind": "readme", "missing": false, "url": "https://github.com/hwholiday/learning_tools"}, {"content_hash": "89488c874ec5e2df147b59a0c6d757ddf18b4560ab7f462d5f576d4c34dfdfb3", "fetched_at": "2026-08-29T09:11:02.667218+00:00", "kind": "homepage", "missing": false, "url": "https://www.hwholiday.com/"}, {"content_hash": "aa9d2baa98673c6bbb973a20032a8492597d415ef57ea42b8644815cd2b0bcd0", "fetched_at": "2026-08-29T09:11:02.719720+00:00", "kind": "site_page", "missing": false, "url": "https://hwholiday.com/about"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 0, "longevity": 100, "rhythm": 35}, "computed_at": "2026-09-02T17:46:02.011165+00:00", "flags": ["no_releases"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 3002, "days_push": 611, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 32, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}