Coder Social home page Coder Social logo

arschles / go-in-5-minutes Goto Github PK

View Code? Open in Web Editor NEW
1.4K 62.0 165.0 34.96 MB

Code and website for Go in 5 Minutes Screencasts

Home Page: https://gifm.dev

License: Apache License 2.0

Go 17.38% HTML 5.33% JavaScript 75.25% Shell 0.42% CSS 0.20% Makefile 0.18% Dockerfile 0.63% SCSS 0.60%
golang education computer-science

go-in-5-minutes's Introduction

Go In 5 Minutes

Build Status

Welcome Gophers! First off, lots of ❤️ from me to you. I hope you enjoy the screencasts, and as always, keep on rockin!

Go in 5 Minutes was featured on GoTime. Check out the episode!


This repository has code and outlines for Go In 5 Minutes Screencasts. All content (code samples, outlines, etc...) is organized into folders, starting with episode0 and going from there.

Full descriptions and videos are at gifm.dev/screencasts.

Shortened URL for this repository: bitly.com/goin5minutes

Shortened URL for screencasts: bitly.com/goin5minutesyt

Request A Screencast

If you've been interested in a Go package, best practice, or topic, I've probably had some experience with it, so I'd like to hear from you. Especially if you'd like to see a screencast on it!

Please submit an issue with a short description on the package/best practice/etc... that you've been thinking of.

See example issues at github.com/arschles/go-in-5-minutes/labels/request%20a%20screencast.

I'd love to hear from you!

Get the Bundle of the First 10 Episodes

The bundle is a downloadable, DRM-free, HD set of the first 10 episodes of Go in 5 Minutes.

If you're just getting started with Go, This is a great resource.

Buy the bundle here

Email Newsletter

I send out an email newsletter intermittently with screencasts, additional information and resources. I encourage you to sign up for it at gifm.dev/subscribe.

Issues With Code, Documentation, etc

If you see any problems with code, documentation, or anything else in this repository, please submit an issue with the bug label and I'll fix it as soon as I can. Pull requests are also welcome.

Build, Test and Run Instructions

All the folders that start with episode (such as episode0) contain the outline and code samples for that episode, and all code samples can be built and run.

Unless otherwise specified in the README.md in the episode folder, the commands for building, testing and running simply use the go tool. All episodes are buildable and testable, but some don't have a package main because they're libraries, so they won't be runnable.

  • build: go build
  • test: go test
  • run: go build -o example && ./example

go-in-5-minutes's People

Contributors

arschles avatar casertap avatar dependabot[bot] avatar depfu[bot] avatar dvrkps avatar haibin avatar naidraikzir avatar peteretelej avatar richardoc avatar thomasdarimont avatar yang09701194 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

go-in-5-minutes's Issues

Go development using Docker

Hello Aaron, would it be possible for you to demonstrate how to develop Go apps using Docker? Since Docker registry includes Debian on the Golang image, perhaps you can show how a Go HTTP Server connects and request information from another Docker container that hosts a Postgres database. I believe covers the majority of business applications use case.
Let me know if I should elaborate a bit more!

Cheers to you,
Marcio

Go templates

not sure what specifically, but there's a lot to choose from here

Change travis file to use its docker infrastructure

This means removing sudo: true from the .travis.yml file and executing hugo directly, instead of inside a docker container. removing sudo: true will enable travis to use its docker infrastructure, which executes faster

deploying go project/api to production

Thanks for doing these videos. I have been following since almost day 1, but still relatively new to Go since I don't use it at work.

I would love to see a video on deploying to heroku and Google cloud. I have built small Api's in Go but but never deployed them to any service and would love to see what you use for this. #

Overview on context.Context

It's coming as a built-in for Go 1.7, it's really powerful, and it's time to talk about it as a serious piece of machinery that most or every Go developer should know about

Basic auth and session handling

Hello @arschles,

what do you think about a screencast which covers the basic authentication of users and session handling in web applications? Implementing it is required in most of them.

Furthermore, you could build on top of episode 5 'Building Web Applications in Go'.

How to secure a JSON API

A screencast about how to secure a JSON API. Further episodes could also cover rate throttling etc.

Websockets?

maybe a simple example on how and why to use websockets? not much more ideas around this yet...

The optional singleton pattern

Some packages (including some in the standard lib) do this thing where they have a bunch of top level funcs and then a type (usually a struct) that has the same funcs defined with as the receiver.

This is kinda like having a singleton class in other languages (basically a bucket of funcs), but in this case it's optional because you can also allocate a new instance of whatever the type is and get the same funcs only with the instance as the receiver. log has a good, clean example of what I'm talking about.

I heard Jack Lindamood name this the Optional Singleton pattern at a GoSF meetup.

net/http in depth.

  • Overview of the HTTP protocol
  • Internals of the net/http and how it works behind the scene
  • Advanced usage of net/http (Custom transport, round tripper, reverse proxy etc)

Cover io.Reader and io.Writer

  • Common places they're used (os.File, http.ResponseWriter, etc...)
    • And use of them in the net/http library (such as bodies of requests, etc...)
  • Ways to stitch them together (e.g. io.LimitReader, io.TeeReader, etc...), emulating pipes in unix
  • Using the io/ioutil package to do various things

SSH with golang

Seeing a SSH client/server example would be kind of useful.

Function closures

Show examples of their use:

  • Creating http.Handlers
  • Removing global variables
  • Passing static configuration
  • Creating goroutines in a loop

Debugging Go Code

Debugging Go code, going beyond fmt.Println(%+v, obj). GDB? Handling goroutines? Debugging concurrency issues?

episode 4 semantics

Thanks for your awesome videos and source code!

So I'm trying to piece together how websockets work in your episode 4 tuturial. I notice in the ServeHTTP implementation for wsHandler, there is a line to defer removing the newly added connection. Presumably this is so the server doesn't leak resources.

What I'm confused about is when (exactly) the deferred statement gets executed in this case. And does the sync.WaitGroup come into play?

Can you shed some light on that (or point me in the right direction in some docs). Thanks!

background jobs

I am new to Go, but I have been doing background jobs for years using both Ruby/Rails and Python/Flask with supporting software such as Redis, Resque, Sidekiq, APScheduler, and Celery.
There just doesn't seem to be as much information for doing this in Go web apps.

Often in web apps there is a need to perform one or more tasks in the background, such as:

  • long running reports which are emailed to user(s)
  • creating PDF or Excel files
  • alerting on various database changes (usually emailed)

Almost always a part of any web app:

  • authenticating and authorizing users
  • user session security: form submission authenticity, cross site scripting, and so on
  • background job submission and scheduling (hourly, daily, weekly)

A screencast on any of the above would be great.

Build an HTTP server with substance

I had a discussion with a Reddit user who thought a screencast on basics would be nice. It got me thinking about how I could do a screencast covering the basics but not going too basic (like covering how to install the go binary - which I don't want to do right now).

I want to do a screencast that shows how to build an HTTP server that's more than just a ping/pong or "hello world" server. Maybe an HTTP based key/value store.

BDD with Goconvey

You've already an issues for TableDrivenDevelopement (#40) and you created a video about Godebug. Would you also cover BDD (behavior-driven developement) with GoConvey?

What it makes so different is that the test are written in a human-like language and could be seen as some sort of documentation. Another big plus is GoConvey's powerful web-ui.

Using sync.Cond

sync.Cond is pretty powerful. It combines a sync.Locker with the ability to wake up one or all waiting goroutines.

Cover a basic example of sync.Cond usage and hopefully there will also be time to show a heavier duty usage. Best idea I have right now is showing unicast and multicast usages (with Signal() and Broadcast(), respectively)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.