Description
In this course, you will learn :
- Construct server-side applications using today's best practices.
- Acquire an outstanding foundation in the fundamentals of web programming.
- Learn from a University Professor in Computer Science with over 15 years of experience teaching individuals of all ability levels.
- Achieve mastery in the understanding and application of web development.
- Understand servers, routing, restful applications, JSON, AJAX, templates, file servers, cookies, state, UUIDs, HTTP methods, HTTP response codes, sessions, Amazon Web Services, MySQL, MongoDB, load balancers, HTTPS & TLS, Docker, Containers, Virtual Machines, Google Cloud, and App Engine.
- Create web applications using only the Go programming language's standard library.
- Create web applications without using third-party frameworks.
- Build performant distributed applications that dynamically scale.
- Apply cutting-edge web development practices.
Syllabus :
1. Templates
- Understanding templates
- Templating with concatenation
- Understanding package text/template: parsing & executing templates
- Passing data into templates
- Variables in templates
- Passing composite data structures into templates
- Functions in templates
- Pipelines in templates
- Predefined global functions in templates
- Nesting templates - modularizing your code
- Passing data into templates & composition
- Using methods in templates
- Hands-on exercises
- Using package html/template, character escaping, & cross-site scripting
2. Creating your own server
- Understanding servers
- TCP server - write to connection
- TCP server - read from connection using bufio.Scanner
- TCP server - read from & write to connection
- TCP server - code a client
- TCP server - rot13 & in-memory database
- TCP server - HTTP request / response foundation hands-on exercise
- TCP server - HTTP method & URI retrieval hands-on exercise
- TCP server - HTTP multiplexer
3. Understanding net/http package
- net/http package - an overview
- Understanding & using ListenAndServe
- Foundation of net/http: Handler, ListenAndServe, Request, ResponseWriter
- Retrieving form values - exploring *http.Request
- Retrieving other request values - exploring *http.Request
- Exploring http.ResponseWriter - writing headers to the response
- Review
4. Understanding routing
- Understanding ServeMux
- Disambiguation: func(ResponseWriter, *Request) vs. HandlerFunc
- Third-party servemux - julien schmidt’s router
- Hands-on exercises
- Hands-on exercises - solutions
5. Serving files
- Serving a file with io.Copy
- Serving a file with http.ServeContent & http.ServeFile
- Serving a file with http.FileServer
- Serving a file with http.FileServer & http.StripPrefix
- Creating a static file server with http.FileServer
- log.Fatal & http.Error
- Hands-on exercises
- Hands-on exercises - solutions
- The http.NotFoundHandler
6. Deploying your site
- Buying a domain - google domains
- Deploying to google cloud
7. Creating state
- State overview
- Passing values through the URL
- Passing values from forms
- Uploading a file, reading the file, creating a file on the server
- Enctype
- Redirects - overview
- Redirects - diagrams & documentation
- Redirects - in practice
- Cookies - overview
- Cookies - writing and reading
- Writing multiple cookies & hands-on exercise
- Hands-on exercise solution: creating a counter with cookies
- Deleting a cookie
8. Creating sessions
- Sessions
- Universally unique identifier - UUID
- Your first session
- Sign-up
- Encrypt password with bcrypt
- Login
- Logout
- Permissions
- Expire session
9. Amazon Web Services
- Creating a virtual server instance on AWS EC2
- Hello World on AWS
- Persisting an application
- Hands-on Exercise
- Hands-on Solution
- Terminating AWS services
10. Relational Databases
- Installing MySQL - Locally
- Installing MySQL - AWS
- Connect Workbench to MySQL on AWS
- Go & SQL - Setup
- Go & SQL - In Practice
11. Scaling On AWS
- Overview of Load Balancers
- Create EC2 Security Groups
- Create an ELB Load Balancer
- Implementing The Load Balancer
- Connecting To Your MySQL Server Using MySQL Workbench
- Hands-on Exercise
- Hands-on Solution
- Autoscaling & CloudFront
12. Photo Blog
- Starting Files
- User Data
- Storing Multiple Values
- Uploading Pictures
- Displaying Pictures
13. Web Dev Toolkit
- Keyed-Hash Message Authentication Code (HMAC)
- Base64 Encoding
- Web Storage
- Context
- TLS & HTTPS
- JSON - JavaScript Object Notation
- Go & JSON - Marshal & Encode
- Unmarshal JSON with Go
- Unmarshal JSON with Go using Tags
- Hands-On Exercise Solution
- AJAX Introduction
- AJAX Server Side
14. Go & Mongodb
- Organizing Code Into Packages
- Create User & Delete User
- MVC Design Pattern - Model View Controller
- Install Mongodb
- Connect to Mongodb
- CRUD with Go & Mongodb
- Hands on Exercise & Solution
- Hands on Exercise & Solution
- Hands on Exercise & Solution
15. Docker
- Introduction to Docker
- Virtual Machines & Containers
- Installing Docker
- Docker Whalesay Example
- Using a Dockerfile to Build An Image
- Launching a Container Running Curl
- Running a Go Web App In a Docker Container
- Pushing & Pulling To Docker Hub
- Go, Docker & Amazon Web Services (AWS)
16. PostgreSQL
- Installing Postgres
- Create Database
- Create Table
- Insert Records
- Auto Increment Primary Key
- Hands-on Exercise
- Hands-on Exercise - Solution
- Relational Databases
- Query - Cross Join
- Query - Inner Join
- Query - Three Table Inner Join
- Query - Outer Joins
- Clauses
- Update a Record
- Delete a Record
- Users - Create, Grant, Alter, Remove
- Go & Postgres
- Select Query
- Web App
- Query Row
- Insert Record
- Update Record
- Delete Record
- Code Organization
17. MongoDB
- NoSQL
- MongoDB
- Installing Mongo
- Database
- Collection
- Document
- Find (aka, query)
- Update
- Remove
- Projection
- Limit
- Sort
- Index
- Aggregation
- Users
- JSON
- Create Read Update Delete (CRUD)