Здесь нет тривиальных одностраничных приложений TODO. Просто настоящие, продакшн веб-приложения. Go, как полагают, отлично подходит для веб-разработки, так почему же так сложно сделать даже простой твитер-клон? Почему никто не может указать мне конкретный пример того, как хешировать и хранить пароли пользователей? Или как построить остальную систему аутентификации?
Почему так сложно разделить мое подключение к базе данных с моими обработчиками или как отправлять электронную почту пользователям, не замедляя каждый веб-запрос?
Может ли кто-нибудь сказать мне, как организовать мой код? Почему так много разных мнений по этому поводу? Какой из них прав? Должен ли я использовать MVC? Что это за проект? Тьфу! Я хочу отказаться от него!
Вы слышали, что Go отлично подходит для веб-приложений, но начало работы приводит к множеству вопросов, которые могут ощущаться подавляющими. Но что, если вы можете создать веб-приложение на этой неделе, начиная с сегодняшнего дня? Что если у вас будет кто-то, кто проведет вас через стандартные библиотеки и поможет вам понять, как все они работают вместе?
«Все, что вам нужно, это стандартная библиотека» - все в Интернете
Я не могу сказать, сколько раз я слышал об этом, учась создавать веб-приложения с помощью Go. Я начал изучать Go, читая стандартную библиотеку и каждый учебник, который мог найти, но я быстро столкнулся с проблемой.
Вместо создания HTML-шаблонов и рендеринга реального динамического контента мы вместо этого использовали fmt.Fprint () для печати жестко закодированного HTML.
Или, когда нам нужен доступ к базе данных, я создал глобальное соединение и делил его со всеми. Мда!
В результате я не мог понять, как это сделать, создавая первые несколько страниц. Это было неприятно, если не сказать больше.
В то время как я застрял, я продолжал задавать себе такие вопросы, как ...
- «Как я могу поделиться своим подключением к базе данных с моими обработчиками?»
- «Как безопасно использовать хэш-пароль пользователя? Каков правильный способ проверки подлинности пользователя и доступа к этому ресурсу?»
- «Как мне организовать мой код? Где шаблон MVC подходит ко всему этому? Является ли мой проект RESTful? Будет ли трудно его поддерживать?»
Независимо от того, сколько учебников я читал, мне всегда казалось, что что-то осталось. Некоторая часть большей картины, которая не была объяснена, оставила меня неуверенным в том, как действовать.
Основная проблема заключалась в том, что в каждом отдельном учебнике я читал упрощенные вещи, и мне нужен был полный курс, показываюший бы мне, как все части работают вместе.
Веб-приложения представляют собой сложные системы
После того, как я построил свое незавершенное приложение TODO, одностраничную вики или какой-нибудь другой надуманный пример, я чуть не сдался.
Мой прогресс был очень медленным, и каждый раз, когда я решал одну проблему, я обнаружил, что сталкиваюсь с двумя новыми. Я до сих пор не знал, как соединить все части вместе.
Как будто кто-то вручил мне инструментарий, научил меня, как использовать каждый инструмент, а затем сказал: «Теперь вы знаете, как построить дом!» Черт побери! В течение недели мой дом взорвался бы, если бы это работало.
Недостаточно просто узнать, как работает каждый инструмент. Знание того, как использовать столы, пилы для ногтей и силовые упражнения, не позволяет мне построить дом. Вам нужно научиться тому, как каждая часть дома соединяется вместе. Как крыша соединяется с рамой, как рама поддерживается фундаментом, сколько места уходит для вентиляционных отверстий в раме и бесчисленных других деталей. Короче говоря, вам нужно знать, как все работает вместе.
Итак, почему мы продолжаем думать, что этот подход будет работать для веб-разработки? Почему мы продолжаем рассказывать новые пути: «Все, что вам нужно, это стандартная библиотека для создания веб-приложений!»
Технически это не является неточным, но, конечно, черт возьми, это не идеальный способ обучения, и это приводит к тому, что разработчики пробиваются через бесчисленные учебники, читают бесконечные документы и пробуют сотни плохих подходов, прежде чем они, наконец, получат все правильно. И даже тогда они не уверены, что они сделали правильно. Они просто знают, что это еще не провалилось.
Но что, если вам не нужно было бороться сотнями уроков?
Что делать, если вам не нужно было читать бесчисленные учебники? Что делать, если вам не нужно было угадывать, как хэшировать и хранить пароль пользователя? Что, если вы уверены, что ваша аутентификация действительно безопасна? Вы, наконец, сможете спокойно отдыхать, зная, что ваши пользователи в безопасности. Или вы сможете начать фактически создавать это приложение, чтобы вы могли встретить своих первых клиентов. И самое главное, вы могли бы наконец начать пользоваться преимуществами использования Go для веб-разработки.
"Научитесь создавать веб-приложения с помощью Go" может помочь вам преодолеть всю сложность и, наконец, стать разработчиком, которым вы хотели стать.
Веб-разработка с Go - это тот курс, который я бы хотел взять когда начинал.
Этот курс является результатом более чем года работы и исследований. Время, потраченное на чтение документации, исходный код, сообщения в блогах и все остальное, что я мог получить. Написание тысяч строк кода, рефакторинг бесконечно и постоянный поиск лучших шаблонов дизайна.
Веб-разработка с Go поможет вам сэкономить месяцы исследований, проб и ошибок и ночей, почесывающие вашу голову. После завершения курса вы будете ...
- ‣ как инициализировать подключение к базе данных и предоставить доступ ко всему остальному вашему коду.
- ‣ иметь четкие примеры того, как и когда отправлять электронные сообщения пользователям.
- ‣ уверены, что вы правильно засовываете и хешируете свои пароли
- ‣ уверенны в том, что: «Да, моя система аутентификации безопасна»
- ‣ знать как организовать код с помощью MVC, чтобы он поощрял дизайн RESTful.
- ‣ И многое другое!
Это всесторонняя разбивка по всем аспектам веб-разработки, обучение всему, начиная с того, как создать самое основное веб-приложение, вплоть до подготовки вашего кода и развертывания его в производственной среде. Курс охватывает более 38 часов скринкастов, а включенная книга составляет более 700 страниц. Даже после завершения курса вы будете ссылаться на материал на долгие годы.
Что вы узнаете
Вот лишь некоторые из вещей, которые мы рассмотрим в этом курсе. Все преподается в контексте нашего окончательного веб-приложения, но мы будем иногда рассматривать тему в изоляции, прежде чем смотреть, как она соединяется с остальной частью нашего приложения.
Как создать веб-приложение с нуля
Следуя вместе с книгой, вы узнаете, как построить все с самого базового веб-сервера и постоянно строить на нем, пока у вас не будет полноценного веб-приложения.
Что такое MVC и REST?
Вы узнаете все о MVC (model-view-controller) и REST, в том числе о том, как использование обоих принципов проектирования может значительно упростить ваше приложение и улучшить его во время обучения. После того, как вы поймете MVC, вы будете в отличном месте, чтобы начать изучать более продвинутые методы проектирования (например, дизайн с поддержкой домена).
Как создавать и использовать шаблоны
Статические страницы скучны, поэтому мы будем использовать пакет html / template, включенный в стандартную библиотеку Go для создания HTML-страниц с динамическим контентом. Это позволит нам отображать пользовательские панели, галереи и изображения для каждого пользователя в зависимости от того, на какой странице они посещают и к чему они имеют доступ.
Как создать систему аутентификации
Веб-разработка с Go расскажет вам, как создать надлежащую систему аутентификации, в том числе о том, как использовать хэш-пароли с помощью bcrypt, создавать сеансы пользователей, избегать временных атак и многое другое.
Если вы не на 100% уверены, что ваша система аутентификации безопасна, это обязательное чтение!
Как взаимодействовать с базой данных PostgreSQL
Вы узнаете не только о том, как создавать, обновлять и удалять записи, используя пакет database / sql, но мы также расскажем о том, как нормализовать и проверить данные перед сохранением их в вашей базе данных. Мы даже рассмотрим, как устранить ошибки проверки для ваших конечных пользователей.
Как обрабатывать загрузки файлов
Наши фотогалереи нуждаются в изображениях, поэтому мы напишем весь код, необходимый для приема файлов, обработки входящих изображений и, наконец, вернем их конечным пользователям, которые посещают наши галереи.
Как отправлять электронные письма пользователям
Независимо от того, насколько разумны ваши пользователи, некоторые из них обязаны забыть свой password. Мы расскажем о том, как использовать такие сервисы, как Mailgun, для отправки электронных писем нашим клиентам, когда это происходит, что дает им возможность восстановить доступ к их учетной записи.
Как использовать API Dropbox
Если вы приобретете пакет с бонусным содержанием, вы также узнаете, как взаимодействовать с Dropbox API, включая реализацию oauth2, чтобы получить доступ к папкам Dropbox пользователя и импортировать изображения из указанного пользователем каталога, чтобы создать фотогалерею.
Но я новичок в программировании!
И что?!? В то время как эта книга предоставит тонну для ветеранов-разработчиков, она была разработана для новичков.
Каждая глава рассматривает все, что мы представляем, подробно, убедившись, что вы не чувствуете себя потерянными. Вы часто найдете «в стороне» видео, которые более подробно расскажут о теме, но их легко пропустить, если вы уже знакомы с этой темой.
Скринкасты
Они не соответствуют идеально друг другу в главе, нумерации в книге, но я старался сохранить контент как можно более похожим. Вообще говоря, вы можете начинать любую новую главу с помощью скринкастов или книг, и у вас не должно быть никаких проблем. Код будет почти идентичным, и любые различия должны быть очень незначительными.
Разделы внутри каждой главы также очень похожи, но есть различия в том, как представлен контент, порядок, в котором он представлен, и как это объясняется. Это в основном связано с тем фактом, что значительно легче дать демонстрации и просто показать вам, как я нахожу вещи в документах с помощью скринкастов, в то время как это происходит с помощью текста * намного сложнее. Тем не менее, я попытался сохранить общий опыт как можно ближе.
https://coursehunter.net/course/veb-razrabotka-s-go-obnovlenie-2022
p.s. Ah, no! In the same lesson is just a bit further at 7:30, there is also an adorable moment.
We call Public() function on an object of modelError type. How the hell does he get a message with a privateError type in a dismissive component of Alert if func (d *Data) SetAlert(err error) in data.go - must return A GENERIC MESSAGE of AlertMsgGeneric = "Something went wrong, please try again or contact us if the problem persists"
Bloody idiot...