├── .gitignore ├── 01-tcp-server └── main.go ├── 02-tcp-http-server └── main.go ├── 03-tcp-http-server-handler └── main.go ├── 04-tcp-net-http-server └── main.go ├── 05-http-server └── main.go ├── 06-router └── main.go ├── 07-router-2 └── main.go ├── 08-router-3 └── main.go ├── 09-mux └── main.go ├── 10-default-mux └── main.go ├── 11-middleware └── main.go ├── 12-logging └── main.go ├── 13-chain-middleware └── main.go ├── 14-chain-middleware-2 └── main.go ├── 15-body-binary └── main.go ├── 16-body-urlencoded └── main.go ├── 17-body-formdata └── main.go ├── 18-body-json └── main.go ├── 19-body-limiter └── main.go ├── 20-image-resizer └── main.go ├── 21-image-resizer-test └── main.go ├── 22-compression └── main.go ├── 23-object-pooling └── main.go ├── 24-cors └── main.go ├── 25-graceful-shutdown └── main.go ├── 26-cookie └── main.go ├── 27-session └── main.go ├── 28-session-2 └── main.go ├── 29-csrf ├── csrf-attack.html └── main.go └── answer ├── 01-tcp-server └── main.go ├── 02-tcp-http-server └── main.go ├── 03-tcp-http-server-handler └── main.go ├── 04-tcp-net-http-server └── main.go ├── 05-http-server └── main.go ├── 06-router └── main.go ├── 07-router-2 └── main.go ├── 08-router-3 └── main.go ├── 09-mux └── main.go ├── 10-default-mux └── main.go ├── 11-middleware └── main.go ├── 12-logging └── main.go ├── 13-chain-middleware └── main.go ├── 14-chain-middleware-2 └── main.go ├── 15-body-binary └── main.go ├── 16-body-urlencoded └── main.go ├── 17-body-formdata └── main.go ├── 18-body-json └── main.go ├── 19-body-limiter └── main.go ├── 20-image-resizer └── main.go ├── 21-image-resizer-test └── main.go ├── 22-compression └── main.go ├── 23-object-pooling └── main.go ├── 24-cors └── main.go ├── 25-graceful-shutdown └── main.go ├── 26-cookie └── main.go ├── 27-session └── main.go ├── 28-session-2 └── main.go └── 29-csrf ├── csrf-attack.html └── main.go /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | *.swp 3 | 00/ 4 | -------------------------------------------------------------------------------- /01-tcp-server/main.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acoshift/backend-hardway/HEAD/01-tcp-server/main.go -------------------------------------------------------------------------------- /02-tcp-http-server/main.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acoshift/backend-hardway/HEAD/02-tcp-http-server/main.go -------------------------------------------------------------------------------- /03-tcp-http-server-handler/main.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acoshift/backend-hardway/HEAD/03-tcp-http-server-handler/main.go -------------------------------------------------------------------------------- /04-tcp-net-http-server/main.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acoshift/backend-hardway/HEAD/04-tcp-net-http-server/main.go -------------------------------------------------------------------------------- /05-http-server/main.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acoshift/backend-hardway/HEAD/05-http-server/main.go -------------------------------------------------------------------------------- /06-router/main.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acoshift/backend-hardway/HEAD/06-router/main.go -------------------------------------------------------------------------------- /07-router-2/main.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acoshift/backend-hardway/HEAD/07-router-2/main.go -------------------------------------------------------------------------------- /08-router-3/main.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acoshift/backend-hardway/HEAD/08-router-3/main.go -------------------------------------------------------------------------------- /09-mux/main.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acoshift/backend-hardway/HEAD/09-mux/main.go -------------------------------------------------------------------------------- /10-default-mux/main.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acoshift/backend-hardway/HEAD/10-default-mux/main.go -------------------------------------------------------------------------------- /11-middleware/main.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acoshift/backend-hardway/HEAD/11-middleware/main.go -------------------------------------------------------------------------------- /12-logging/main.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acoshift/backend-hardway/HEAD/12-logging/main.go -------------------------------------------------------------------------------- /13-chain-middleware/main.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acoshift/backend-hardway/HEAD/13-chain-middleware/main.go -------------------------------------------------------------------------------- /14-chain-middleware-2/main.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acoshift/backend-hardway/HEAD/14-chain-middleware-2/main.go -------------------------------------------------------------------------------- /15-body-binary/main.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acoshift/backend-hardway/HEAD/15-body-binary/main.go -------------------------------------------------------------------------------- /16-body-urlencoded/main.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acoshift/backend-hardway/HEAD/16-body-urlencoded/main.go -------------------------------------------------------------------------------- /17-body-formdata/main.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acoshift/backend-hardway/HEAD/17-body-formdata/main.go -------------------------------------------------------------------------------- /18-body-json/main.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acoshift/backend-hardway/HEAD/18-body-json/main.go -------------------------------------------------------------------------------- /19-body-limiter/main.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acoshift/backend-hardway/HEAD/19-body-limiter/main.go -------------------------------------------------------------------------------- /20-image-resizer/main.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acoshift/backend-hardway/HEAD/20-image-resizer/main.go -------------------------------------------------------------------------------- /21-image-resizer-test/main.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acoshift/backend-hardway/HEAD/21-image-resizer-test/main.go -------------------------------------------------------------------------------- /22-compression/main.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acoshift/backend-hardway/HEAD/22-compression/main.go -------------------------------------------------------------------------------- /23-object-pooling/main.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acoshift/backend-hardway/HEAD/23-object-pooling/main.go -------------------------------------------------------------------------------- /24-cors/main.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acoshift/backend-hardway/HEAD/24-cors/main.go -------------------------------------------------------------------------------- /25-graceful-shutdown/main.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acoshift/backend-hardway/HEAD/25-graceful-shutdown/main.go -------------------------------------------------------------------------------- /26-cookie/main.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acoshift/backend-hardway/HEAD/26-cookie/main.go -------------------------------------------------------------------------------- /27-session/main.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acoshift/backend-hardway/HEAD/27-session/main.go -------------------------------------------------------------------------------- /28-session-2/main.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acoshift/backend-hardway/HEAD/28-session-2/main.go -------------------------------------------------------------------------------- /29-csrf/csrf-attack.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acoshift/backend-hardway/HEAD/29-csrf/csrf-attack.html -------------------------------------------------------------------------------- /29-csrf/main.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acoshift/backend-hardway/HEAD/29-csrf/main.go -------------------------------------------------------------------------------- /answer/01-tcp-server/main.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acoshift/backend-hardway/HEAD/answer/01-tcp-server/main.go -------------------------------------------------------------------------------- /answer/02-tcp-http-server/main.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acoshift/backend-hardway/HEAD/answer/02-tcp-http-server/main.go -------------------------------------------------------------------------------- /answer/03-tcp-http-server-handler/main.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acoshift/backend-hardway/HEAD/answer/03-tcp-http-server-handler/main.go -------------------------------------------------------------------------------- /answer/04-tcp-net-http-server/main.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acoshift/backend-hardway/HEAD/answer/04-tcp-net-http-server/main.go -------------------------------------------------------------------------------- /answer/05-http-server/main.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acoshift/backend-hardway/HEAD/answer/05-http-server/main.go -------------------------------------------------------------------------------- /answer/06-router/main.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acoshift/backend-hardway/HEAD/answer/06-router/main.go -------------------------------------------------------------------------------- /answer/07-router-2/main.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acoshift/backend-hardway/HEAD/answer/07-router-2/main.go -------------------------------------------------------------------------------- /answer/08-router-3/main.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acoshift/backend-hardway/HEAD/answer/08-router-3/main.go -------------------------------------------------------------------------------- /answer/09-mux/main.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acoshift/backend-hardway/HEAD/answer/09-mux/main.go -------------------------------------------------------------------------------- /answer/10-default-mux/main.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acoshift/backend-hardway/HEAD/answer/10-default-mux/main.go -------------------------------------------------------------------------------- /answer/11-middleware/main.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acoshift/backend-hardway/HEAD/answer/11-middleware/main.go -------------------------------------------------------------------------------- /answer/12-logging/main.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acoshift/backend-hardway/HEAD/answer/12-logging/main.go -------------------------------------------------------------------------------- /answer/13-chain-middleware/main.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acoshift/backend-hardway/HEAD/answer/13-chain-middleware/main.go -------------------------------------------------------------------------------- /answer/14-chain-middleware-2/main.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acoshift/backend-hardway/HEAD/answer/14-chain-middleware-2/main.go -------------------------------------------------------------------------------- /answer/15-body-binary/main.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acoshift/backend-hardway/HEAD/answer/15-body-binary/main.go -------------------------------------------------------------------------------- /answer/16-body-urlencoded/main.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acoshift/backend-hardway/HEAD/answer/16-body-urlencoded/main.go -------------------------------------------------------------------------------- /answer/17-body-formdata/main.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acoshift/backend-hardway/HEAD/answer/17-body-formdata/main.go -------------------------------------------------------------------------------- /answer/18-body-json/main.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acoshift/backend-hardway/HEAD/answer/18-body-json/main.go -------------------------------------------------------------------------------- /answer/19-body-limiter/main.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acoshift/backend-hardway/HEAD/answer/19-body-limiter/main.go -------------------------------------------------------------------------------- /answer/20-image-resizer/main.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acoshift/backend-hardway/HEAD/answer/20-image-resizer/main.go -------------------------------------------------------------------------------- /answer/21-image-resizer-test/main.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acoshift/backend-hardway/HEAD/answer/21-image-resizer-test/main.go -------------------------------------------------------------------------------- /answer/22-compression/main.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acoshift/backend-hardway/HEAD/answer/22-compression/main.go -------------------------------------------------------------------------------- /answer/23-object-pooling/main.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acoshift/backend-hardway/HEAD/answer/23-object-pooling/main.go -------------------------------------------------------------------------------- /answer/24-cors/main.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acoshift/backend-hardway/HEAD/answer/24-cors/main.go -------------------------------------------------------------------------------- /answer/25-graceful-shutdown/main.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acoshift/backend-hardway/HEAD/answer/25-graceful-shutdown/main.go -------------------------------------------------------------------------------- /answer/26-cookie/main.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acoshift/backend-hardway/HEAD/answer/26-cookie/main.go -------------------------------------------------------------------------------- /answer/27-session/main.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acoshift/backend-hardway/HEAD/answer/27-session/main.go -------------------------------------------------------------------------------- /answer/28-session-2/main.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acoshift/backend-hardway/HEAD/answer/28-session-2/main.go -------------------------------------------------------------------------------- /answer/29-csrf/csrf-attack.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acoshift/backend-hardway/HEAD/answer/29-csrf/csrf-attack.html -------------------------------------------------------------------------------- /answer/29-csrf/main.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acoshift/backend-hardway/HEAD/answer/29-csrf/main.go --------------------------------------------------------------------------------