- Регистрация
- 27 Авг 2018
- Сообщения
- 37,366
- Реакции
- 526,525
- Тема Автор Вы автор данного материала? |
- #1
No trivial single-page TODO apps here. Just real, production-grade web apps
Go is supposed to be great for web development, so why is it so hard to build even a simple twitter clone?
Why can’t anyone point me to a concrete example of how to hash and store user passwords? Or how to build the rest of an authentication system?
Why is it so frustrating simply trying to figure out how to share my database connection with my handlers, or how to email users without slowing down every web request?
Can anyone just tell me how to organize my code? Why are there so many varying opinions on this? Which one is right? Should I be using MVC? What is this domain driven design? Ugh! I want to give up!
You have heard that Go is great for web apps, but getting started leads to so many questions that it can feel overwhelming. But what if you could build a web application this week, starting today? What if you had someone to guide you through the standard libraries and help you understand how they all work together?
“All you need is the standard library” – Everyone on the internet
I can’t tell you the number of times I heard this when learning to create web applications using Go. After a while, it started to haunt me.
I started learning Go by reading the standard library and every tutorial I could find, but I quickly ran into a problem.
Rather than creating HTML templates and rendering real dynamic content, we were instead using fmt.Fprint() to print hard coded HTML.
Or when we needed access to a database we would create a global connection and share it with ALL of our code. Yikes!
As a result, I couldn’t figure out how to get past creating my first few pages. It was frustrating, to say the least.
While getting stuck I kept asking myself questions like…
“How do I share my database connection with my handlers?”
“How do I hash user passwords securely? What is the correct way to make sure a user is authenticated and has access to this resource?”
“How should I organize my code? Where does the MVC pattern fit into all of this? Is my design RESTful? Will it be hard to maintain?”
No matter how many tutorials I read, I always felt like there was something left out. Some part of the bigger picture that wasn’t explained, leaving me unsure of how to proceed.
The underlying problem was that every single tutorial I read oversimplified things, and what I needed was a comprehensive course showing me how all the pieces worked together.
What you will learn
Here are just a few of the things we will be covering in this course. Everything is taught in the context of our final web application, but we will occasionally review a topic in isolation before looking at how it connects to the rest of our application.
How to build a web application from scratch?
While following along with the book, you will learn how to build everything from the most basic web server and continuously build upon it until you have a fully fledged web application.
What are MVC and REST?
You will learn all about MVC (model-view-controller) and REST including how using both design principles can make your application significantly easier to maintain and improve as you are learning. Once you understand MVC you will be in a great place to start learning about more advanced design techniques (like domain driven design).
How to create and utilize templates?
Static pages are boring, so we will use the html/template package included in Go’s standard library to create HTML pages with dynamic content. This will allow us to display custom dashboards, galleries, and images for each user depending on what page they visit and what they have access to.
How to build an authentication system?
Web Development with Go will teach you how to build a proper authentication system including how to hash passwords with bcrypt, creating user sessions, avoiding timing attacks, and so much more.
If you aren’t 100% certain your authentication system is secure, this is a must-read!
How to interact with a PostgreSQL database?
Not only will you learn how to create, update, and delete records using the database/sql package, but we will also cover how to normalize and validate data before saving it to your database. We even cover how to relay validation errors to your end users.
How to process file uploads?
Our photo galleries need images, so we will write all of the code necessary to accept file uploads, process those incoming images, and finally serve them back to end users who visit our galleries.
How to send emails to users?
No matter how smart your users are, some of them are bound to forget their pssword. We will cover how to utilize services like Mailgun to send emails to our customers when this happens, giving them a way to restore access to their account.
How to use the Dropbox API?
If you purchase a package with the bonus content you will also learn how to interact with the Dropbox API, including implementing oauth2 to get access to a user’s Dropbox folders and importing images from a user-specified directory to create a photo gallery.
What you will build
Throughout the course you will be building LensLocked, a website where photographers can create photo galleries to share with their clients.
Photographers can sign up, create galleries, and upload photos all from within their dashboard.
After a gallery is completed it can be published, making it publicly accessibly to anyone with the URL and allowing photographers to share their work with their clients.
If you purchase one of the packages with bonus content we will also look at how to let photographers link their Dropbox account and import galleries directly from Dropbox folders, allowing them to skip the annoying task of uploading photos that are already in their Dropbox account.
SALES PAGE:
DOWNLOAD: