Course Overview
You are invited on an exciting journey where you will learn, with guidance, to use Google's GO programming language to develop modern web applications that are highly scalable in both depth and scope. You'll take advantage of the extraordinary capabilities GO holds for full-stack developers to build all sorts of server/client-based applications.
This course is intended as a rich resource for learning programming basics as well as concepts in general and developing modern and fast web application with Google's GO (golang) programming language in particular - a comprehensive learning experience.
The easiest way to learn new programming techniques and modern concepts in software design is to apply them using real-life examples. In this course you will learn how to plan, implement, test, debug and finally install a modern web application - a homepage for renting out bungalows as vacation homes - on a web server.
You will learn about the advantages of the GO programming language and, on the way to a working application, how to integrate other elements such as SQL/PostgreSQL databases, JavaScript (client-side and server-side), AJAX techniques, HTML, CSS and how to use essential tools for full-stack developers.
Besides programming in GO, this course also deals with
HTML5 / CSS / DOM
JavaScript (Vanilla, without jQuery dependence)
SQL / PostgreSQL
Migrations / FIZZ
JSON
Routes, Handlers, Models
Tests, Error Handling
Linux (bash), Windows (Command Line), macOS (bash)
git / github
Installation on a webserver
and much more
While suitable for beginners with basic programming experience, it is designed to be a resource for fairly advanced developers. It's filled with examples, explanations, and clarifications of concepts needed to develop modern, fast and secure web applications, and comes with a code repository on Github and a detailed course outline as PDF, which serves as part of the course.
Included external packages an dependencies:
go-chi | Router
scs | Sessions
nosurf | CSRF-Token
govalidator | Validator (server-sided)
pgx/v5 | PostgreSQL Driver & Toolkit
go-simple-mail | Golang package for sending e-mail
Caddy 2 | a powerful, enterprise-ready, open source web server with automatic HTTPS written in GO
Also playing a part:
bootstrap | Bootstrap - HTML, CSS, and JavaScript framework (no jQuery)
RoyalUI-Free-Bootstrap-Admin-Template | Free Bootstrap 4 Admin Template
Simple-DataTables | DataTables but in TypeScript transpiled to Vanilla JS
postgres | PostgreSQL Server (mirror only)
pop | Soda/Migrations - standardization of database tasks
dbeaver | Dbeaver - free multi-platform database tool
vanillajs-datepicker | Vanilla JavaScript datepicker
notie | unobtrusive notifications - clean and simple JavaScript
SweetAlert2 | so many options for JavaScript popups
MailHog | Web and API based SMTP testing
Foundation for Emails 2 | Quickly create responsive HTML e-mails that work
Cobra | A Framework for Modern CLI Apps in GO
GoDotEnv | A GO port of Ruby's dotenv library
When you sign up for this course, you have lifetime access to the course. You can learn at your own pace and return to content at any time for deeper insights or to learn additional concepts when you are ready.
This course also comes with a 100% money back guarantee.
I think this is one of the most comprehensive courses in English for developing modern, fast, and secure web applications from scratch.
And if for some reason the course doesn't work for you, you can get a full refund within the first 14 days*.
Enroll now!
You can get great value from this course and, more importantly, you'll have a great time learning one of the best programming languages ever - the GO programming language, the fastest growing programming language with the highest paid programmers in the US within the last years.
GO is an open-source programming language that makes it easy to develop simple, reliable, and efficient software.
GO was developed by computer science luminaries at one of the best, if not the best, software development companies ever - Google. The design and implementations are by Robert Griesemer, Rob Pike and Ken Thompson.
GO is a very good choice for learning a programming language because it was developed by some of the same people who created the C programming language, Unix, and UTF-8 - some of the most influential contributions to computer science. With GO Robert Griesemer, Rob Pike, and Ken Thompson created a modern programming language that can easily run on multiple processors in parallel, works smoothly in different environments, and makes it easy for programmers to write programs with a very streamlined and user-friendly syntax.
Why did Google develop a new programming language?
In Google's words, "GO was born out of frustration with existing languages and environments for systems programming. Programming had become too difficult and the choice of languages was partly to blame. One had to choose either
efficient compilation,
efficient execution, or
ease of programming;
all three were not available in the same mainstream language. Programmers who could were choosing ease over safety and efficiency by moving to dynamically typed languages such as Python and JavaScript rather than C++ or, to a lesser extent, Java. GO is an attempt to combine the ease of programming of an interpreted, dynamically typed language with the efficiency and safety of a statically typed, compiled language. It also aims to be modern, with support for networked and multicore computing.
Finally, working with GO is intended to be fast: it should take at most a few seconds to build a large executable on a single computer. To meet these goals required addressing a number of linguistic issues: an expressive but lightweight type system; concurrency and garbage collection; rigid dependency specification; and so on. These cannot be addressed well by libraries or tools; a new language was called for."
Learn with me the advantages in web programming of one of the best programming languages ever developed. You will get knowledge, ideas, concepts, inspiration and code examples to design software and applications yourself according to your wishes.
* Check Udemy's Terms and Conditions for details.
FAQ
FAQ area empty
Course curriculum
-
Allow Me To Introduce Myself - The “whoami” For Udemy Courses
Xem trước -
Why GO Of All Things? Why Not Node.js Or Another Programming Language?
Xem trước -
Installation Of GO And Setup Of A Free Integrated Development Environment (IDE)
Xem trước -
Learning Notes On This Course
-
Accompanying Course Outline As PDF (Also Available On Github)
Xem trước -
Brief Section And Content Overview
-
Basic Sources Of Information On The Web About GO And Used Software
Xem trước
-
Take This Hint And This One, And This One Too!
Xem trước -
Hello, World
Xem trước -
Variables - First Things First
-
All Functional?
-
Pointer – Pointing The Finger At Others
-
The Shadow World - It's Always About Types And Structs
-
Receiver - The Madness Gets Method
-
Maps And Slices
-
Decisions & Conditionals – If, Else, Else If, Switch
-
In Da Loop: "For" And "Range" As A Team
-
Polymorphism: Interfaces - The Name Says It All
-
Go Modules
-
Channels Are The Key To Concurrent Communication In Go!
-
Import And Export Of Data In Json Format
-
Unit Tests
-
The HTTP Request/Response Cycle
-
The First Web Application: "It's Alive! It's Alive!"
-
Unleash The Full Potential Of Handlers With The Magic Of Functions!
-
Errors Have Value And Are A Value
-
HTML Templates: Because Ain't Nobody Got Time To Code That From Scratch!
-
Organize And Conquer: Let's Tidy Up And Optimize Our Space!
-
Restructuring – A Structure Like From The Textbook
-
Layouts Like A Boss
-
A Dynamic Cache For Effective Template Processing
-
Creating A Static Cache #1: Efficient Template Processing
-
Creating A Static Cache #2: Introducing Configuration File For Global Variables
-
Creating A Static Cache #3: Final Step Of Implementation Using Global Variables
-
What Else You Can Do With A Configuration File
-
Sharing Is Caring: Sharing Data With Templates
-
Introduction Of Middleware And Routing In GO
-
Implementation Of A Simple Routing Package (bmizerany/pat)
-
Developer's Favorite: go-hhi/chi As New External Routing Package
-
Middleware: DIY Your Own Middleware Today And Be The Coolest Coder In Town
-
State Management With Session(s)
-
Brief Function Test For Session Data
-
Thoughts On Project Selection
-
Brief Note On Github
-
Static Files: Hold Still And Get Integrated!
-
HTML - A Trip To The 1990th
-
Spot Landing! We Create A Landing Page
-
Preparing The HTML Of The Bungalow Pages
-
Create And Pimp An Availability Check HTML Page
-
Make-reservation.html Is Our Answer To: "Do You Have A Reservation?"
-
JavaScript: Friend Or Foe?
-
Effortlessly Pick Dates: Grabbing A Vanilla JS Datepicker Package Now!
-
Notie By Nature: Show Simple Messages
-
Sweetalert: Candy Time!
-
Sweetalert Is A Candy Store - Our Own JavaScript Module
-
From Boring Button To Superstar: A New Functionality In Our JS Mod
-
CSS: Making Websites Less Ugly Since 1996
-
Brief Overview What's Going On In This Section
-
From HTML To "Happily Ever After": Conversion Into GO Templates
-
CSRF-Token – Implementation
-
Unlocking The Power Of JSON In Golang: A Handler That Returns Data In JSON
-
Preparations For Submitting And Processing AJAX Requests
-
From GET To POST: Let'S Teach The AJAX Requests Some Manners!
-
Pimp Your Code: Refactoring Made Easy!
-
Server-Sided Validation - The What, The How And The Why Of It All!
-
Implementation Server-Side Form Validation I - Form Field Data & Errors
-
Implementation Server-Side Form Validation II - Forms Model & Error Displaying
-
Implementation Server-Side Form Validation III - More Fields & A Required Func
-
Implementation Server-Side Form Validation IV - More Validators & govalidator
-
Display Of An Overview Of The Reservation Data (By Using Sessions)
-
Fast Feedback: Output Alerts As Feedback To The User Via notie
-
Alternative Template Engine: Use The Power Of A Jet Engine
-
Testing In GO: The Why And Wherefore
-
Testing Success: Mastering Tests For Package Main Of Our Web Application
-
Handlers Tests I - The Beginning: Initial Setup/Handling GET-Request Handlers
-
Handlers Tests II - Continued: Handling Post Request Handlers
-
Render Tests I - Creating A Test Environment And Function Testadddefaultdata()
-
Render Tests II - Creating Tests For Function Testrendertemplate() And The Rest
-
Coverage Of Package Handlers And Package Render Tests
-
Hands-On Exercise: Write A Basic Test For Package "forms"
-
A Solution: [Solved] Testing For Package "forms"
-
Final Notes And Tips For Starting Our Web Application
-
Brief Section Overview And Download/Installation Of PostgreSQL And DBeaver
-
Linux: Installing PostgreSQL And DBeaver And Making A Connection
-
MacOS: Installing PostgreSQL And DBeaver And Making A Connection
-
Windows: Installing PostgreSQL And DBeaver And Making A Connection
-
CRUD - Now It's Getting Dirty! SQL-Statements In Action
-
SQL Queries For Advanced Users - Not Necessarily Complicated, But Complex
-
Fascination Database Structure: Creation Of An Entity Relationship Diagram!
-
*pop* "Want A Soda?" - Installation Of gobuffalo/pop Called Soda!
-
Migrations I - Creation Of The "Users" Table
-
Migrations II - Mass Production: Creation Of All Other Tables
-
Migrations III - Creation Of A Foreign Key For The "Reservations" Table
-
Migrations IV - To Be Continued ... The Remaining Foreign Keys
-
Hands-On Exercise: Add The Missing Foreign Key To "bungalow_restrictions"
-
A Solution: [SOLVED] The Missing Foreign Key For "bungalow_restrictions"
-
Migrations V - Nitro Injection: Index For "users" And "bungalow_restrictions"
-
Hands-On Exercise: Add Useful Indexes To The "reservations" Table
-
A Solution: [SOLVED] Useful Indexes For The "reservations" Table
-
Migrations VI - "The Sting" For The Development Phase Of The Database
-
Example: How To Connect An Application To A Database In GO
-
PostgreSQL Connection: Just like Golf! No Driver When You Need One Urgently!
-
Integration Work: Inserting the Driver/Database Connection (Repository Pattern)
-
An Easy Time: Creation Of The Necessary Models
-
Cleaning up Your Code: Regular Maintenance and a Tiny Makeover For Your Project
-
Don't Make It Complicated - But You Can If You Like: Object-Relational Mapping
-
Double Trouble: Reservation Creation And Storage In The Database
-
Poking With A Stick: Short Functional Test Of The Reservation Function
-
One Small Step For Man... Database Entry In BungalowRestrictions
-
Availability Check: Check Availability For A Specific Date Range Per Bungalow
-
Availability Check: Availability For A Specific Date Range For All Bungalows
-
Delicate Ties: Creating Connections Between Database Functions And Handlers
-
What Can It Be? Connection Of The Availability Check To The Reservation Page
-
Mission Accomplished: We Sucessfully Make A Reservation!
-
Aftermath: Finalize Overview Page, Restrict Date Selection, Debugging
-
Migrations VII - Preventing "Horsing Around" With Database Entries
-
JavaScript On A Date With JSON: Availability Check And A JSON-Processing Handler
-
Displaying the Result Of The Bungalow Availability Query To The User
-
Session Creation: A Connector Between Availability Check And Reservation
-
Data transfer: Copy JavaScript Into Templates, Idea For Code Abstraction
-
No Database For Your Test Setup? Fake One!
-
Repairing The Tests For The Handlers - Reservation In Sessions As Context
-
Improving Test Coverage And Multiple Test Cases For GET-Request Handlers
-
An Example How To Write Tests For POST-Request Handlers
-
Special Case: Testing POST Request Handler ReservationJSON
-
Brief Look At The Rest Of The POST-Request Handlers Tests if you please
-
Exchange and Type Change: reqBody Becomes postedData Of Type url.Values{}
-
Houston, We Have A Problem! Emergency Debugging On The Fly!
-
What Was That Again? How E-Mail And The SMTP Protocol Work...
-
MailHog Installation For Testing Purposes: Go The Whole Hog!
-
Sending E-Mails With The Standard Library - Just For The Sake Of Completeness!
-
Go Simple Mail: Open An Application-Wide Channel For Sending E-Mails
-
#MEGA - Make E-Mail Great Again! - Creating And Sending E-Mail Notifications
-
Stay Informed: A Solution To Send E-Mails To The Operator
-
... Once Again With Feeling: Beautifully Formatted E-Mails With Foundations
-
Updating The Tests - Doesn't Help, It's Got To Be Done!
-
Elevate Your App: Craft an Easy Login Screen!
-
Navigate To Success: Crafting A Login Route And Handler
-
Unlocking Security: Building Authentication And DB Functions
-
After The Form: A Login Handler That Delivers!
-
Getting Middle-witty: Cooking Up Some Middleware Magic!
-
Database Table For Awesome: Crafting A User With Migrations!
-
Putting The Login Page To The Test: Success Awaits!
-
Unveiling Authenticated Users And Log Out In Style!
-
Fortify Your App: Building A Secure Admin Zone With The Middleware!
-
Cleaning up Your Code: Smaller Cleaning Actions - Sweep Through Again Quickly!
-
Creating An Admin Dashboard In A Ready-Made Way - Choosing A Template
-
Like On An Assembly Line: Bulk Creation Of Routes, Handlers And Templates
-
Displaying All Reservations: Where DB Records Get A Seat At The Stylish Table
-
A Copy & Paste Orgy: Creating A List With Only New Reservations
-
Interlude: Makeover And Iron Out Small Mistakes
-
Displaying A Single Reservation: Preparation For More To Come
-
New Possibilities: Creating the Database Access Functions
-
Very Concrete: Implementation Of The Editing Function
-
Shift Up A Gear: Change The Status Of A Reservation
-
Delete a Reservation: Is This Art Or Can It GO Away?
-
Reservation Calendar I: Heading and Navigation
-
Reservation Calendar II: Bungalows, Days and Checkboxes
-
Reservation Calendar III: Reservations and Blocked Days
-
Reservation Calendar IV: Render That! Display The Calendar!
-
Reservation Processing I: Post Request, Route, And Handler
-
Reservation Processing II: Correct Return After Processing
-
Reservation Editing III: Handlers To Perform Actions
-
Reservation Processing IV: Database Functions For Actions
-
Quo Vadis? Correction Of Redirects After Editing
-
Making The Handler Tests Run Again And A Few Tests
-
Launch Your Web Application Flexibly: Use Command Line Flags
-
Note On Using .env Files For Your Web Application
-
Text Editors Nano And Vi/Vim: Short Operating Remarks
-
Get Server And Set Up The Necessary Server-Side Software
-
Install Go And Get The Web Application On The Server
-
No Mail Transfer Agent (MTA) Available? Fake It Till You Make It!
-
Supervisor - Someone Has To Watch While You're Away
-
Logo, Footer Content: Final Touches Before The Curtain Rises!
Requirment
-
No previous programming experience is required to participate in this course (but highly recommended!). This course starts by teaching very basic skills and guides you step by step to create modern web applications in Go.
-
Basic experience of coding GO and a working GO IDE (Integrated Developing Environment) is helpful but not mandatory.
-
Knowledge of HTML5, JavaScript, CSS, SQL, Linux, general understanding of processes in computers help and will also be covered in the course.
-
Willingness to learn and a fair amount of curiosity to figure out how things work!
Outcomes
-
How to build modern, fast, and secure web applications in Google's GO programming language
-
How to code your programs in the GO (golang) programming language
-
How to organize your application in GO while developing correctly
-
Integrate 3rd party packages with GO Modules
-
Write plain JavaScript without depending on something like jQuery
-
Creating HTML pages using HTML5
-
Creation and usage of Cascading Style Sheets (CSS)
-
How to write tests in GO
-
Brief insight in creating Entity Relationship Diagrams
-
Using "migrations" (and FIZZ) to build a develpoing environment for a PostgreSQL database
-
How to setup and connect to a PostgreSQL database (server) in GO
-
Managing sessions in GO
-
Learn best practices for security in web applications
-
Create and use of middleware in GO
-
Implementation of secure user authentication in GO
-
Deployment of a GO web application to a real server
-
Setup of Caddy 2 as Reverse Proxy with HTTPS
-
Many other competencies a full-stack developer should have
Instructor
Nguyễn Đình Cường
1.2
-
1 Student
-
330 Courses
-
1253 reviews
Xin chào các bạn, tôi là Nguyễn Đình Cường, một lập trình viên và giảng viên đam mê công nghệ với hơn 15 năm kinh nghiệm trong ngành công nghiệp phần mềm. Tôi tốt nghiệp từ Bưu Chính Viễn Thông và đã từng làm việc cho một số công ty công nghệ hàng đầu như FPT Software và VinGroup. Với chuyên môn chính là phát triển ứng dụng web, tôi đã làm việc với nhiều công nghệ như HTML, CSS, JavaScript, React cho front-end và Node.js, Express, MongoDB cho back-end. Không chỉ dừng lại ở việc viết mã, tôi còn yêu thích tìm hiểu sâu về thiết kế hệ thống và kiến trúc phần mềm. Tôi tin rằng quá trình học lập trình không chỉ đơn thuần là lý thuyết, mà còn là sự trải nghiệm thực tế và giải quyết vấn đề. Trong các khóa học của mình, tôi cố gắng cung cấp cho học viên những bài giảng thú vị và dễ hiểu, cùng với các bài tập thực hành giúp củng cố kiến thức. Tôi hy vọng rằng qua các khóa học của mình, bạn sẽ không chỉ học được cách viết mã, mà còn phát triển tư duy lập trình và kỹ năng giải quyết vấn đề. Hãy cùng nhau khám phá thế giới lập trình và biến ý tưởng của bạn thành hiện thực! Nếu bạn có bất kỳ câu hỏi nào, đừng ngần ngại liên hệ với tôi. Tôi rất vui được hỗ trợ bạn trong hành trình học tập của mình!
View Details