{"id":15704987,"url":"https://github.com/inecas/gioh","last_synced_at":"2025-05-12T17:58:39.230Z","repository":{"id":139471330,"uuid":"166646044","full_name":"iNecas/gioh","owner":"iNecas","description":"Go in one hour: a practical go workshop aiming to use real-world example to go though the basic Go lang concepts","archived":false,"fork":false,"pushed_at":"2019-01-23T23:07:54.000Z","size":15,"stargazers_count":6,"open_issues_count":0,"forks_count":6,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-01-03T00:52:12.388Z","etag":null,"topics":["golang","training-materials","workshop","workshop-materials"],"latest_commit_sha":null,"homepage":null,"language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/iNecas.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-01-20T09:53:42.000Z","updated_at":"2023-03-08T13:19:53.000Z","dependencies_parsed_at":null,"dependency_job_id":"d2e04a0e-3bd0-48b4-9cb6-5ef4446f3013","html_url":"https://github.com/iNecas/gioh","commit_stats":{"total_commits":2,"total_committers":1,"mean_commits":2.0,"dds":0.0,"last_synced_commit":"6caaab4544fa3f11a1396acc8465e16788fd0b33"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iNecas%2Fgioh","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iNecas%2Fgioh/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iNecas%2Fgioh/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iNecas%2Fgioh/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/iNecas","download_url":"https://codeload.github.com/iNecas/gioh/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":232651109,"owners_count":18555934,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["golang","training-materials","workshop","workshop-materials"],"created_at":"2024-10-03T20:14:26.837Z","updated_at":"2025-01-05T23:16:17.653Z","avatar_url":"https://github.com/iNecas.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# Go in one hour\n\nThe purpose of this repository (and related workshop) is using a real-world\nexample to guide you though basic principles of Go the programming language.\n\n\n## Organization\n\nThe repository is split into multiple branches, each representing a specific\nmilestone. At every milestone, one is given a specific task to finish.\n\nTo start:\n\n    git checkout m1\n    cat TASK.md\n\n\n## Before you start\n\nBefore you can start, you will need to [install Go environment](https://golang.org/doc/install). Also, it's\nrecommended to [enable your editor of choice](https://github.com/golang/go/wiki/IDEsAndTextEditorPlugins) to edit Go files.\n\n\n## Documentation\n\nSince there might be occasions, where you don't have network connectivity, it's\ngood to have an option to read the documentation locally.\n\nYou can do so by running:\n\n    godoc --http:6060 --play\n\nFurther in the milesones, we link to the documentation for more details about\nthe topics.\n\nSee [Go lang learning page](https://golang.org/doc/#learning) ([local](http://localhost:6060/doc/#learning)) for more generic introduction to Go syntax and\nadditional resources.\n\n\n## Milestones\n\n-   **[m1 - Intro](https://github.com/iNecas/gioh/blob/m1/TASK.md)**\n\n    Basic go tools for developing. Initializing a go module. `fmt`, `log` and\n    `flag` packages. Defining variables and functions.\n\n-   **[m2 - Basic HTTP Server](https://github.com/iNecas/gioh/blob/m2/TASK.md)**\n\n    Writing a simple HTTP server using `net/http` package. Using `log` and more `fmt`\n    functions. Defining constants.\n\n-   **[m3 - Basic HTTP Client](https://github.com/iNecas/gioh/blob/m3/TASK.md)**\n\n    Writing an HTTP client using `net/http` package.\n\n-   **[m4 - Package Structure](https://github.com/iNecas/gioh/blob/m4/TASK.md)**\n\n    Splitting the code into various files across the `gioh` package.\n\n-   **[m5 - Concurrent Requests](https://github.com/iNecas/gioh/blob/m4/TASK.md)**\n\n    Expanding the HTTP client to perform multiple requests at a time. Basic\n    usage of channels.\n\n-   **[m6 - Basic HTTP Proxy](https://github.com/iNecas/gioh/blob/m5/TASK.md)**\n\n    Writing a proxy to sit in frond of the HTTP server using `net.http.httputil` package.\n\n-   **[m7 - Throttled Http Proxy](https://github.com/iNecas/gioh/blob/m6/TASK.md)**\n\n    Limit the amount of requests to come from the proxy the to HTTP server by using channels.\n\n-   **[m8 - Finished](https://github.com/iNecas/gioh/blob/m8/TASK.md)**\n\n    The finalized example.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Finecas%2Fgioh","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Finecas%2Fgioh","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Finecas%2Fgioh/lists"}