Как стать автором
Обновить

Комментарии 28

Пример реализации простых приложений это может и хорошо, но вот мы не нашли паттерна реализации или фреймворка для крупных веб приложений. У меня довольно большой опыт web разработки (с применением Yii, laravel, kohana, symphony), и буквально неделю назад начали писать под свой проект (с дальнейшей opensource публикацией) вменяемый fullstack фреймворк со всеми плюшками ORM, валидаторами, i18n и т. д. Если есть желающие присоединиться к разработке, пишите в лс.
только он symfony
Symfony — для малоопытных, symphony — для многоопытных
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
А нужно ли оно вообще, свой фреймворк-то, в котором все-все-все?

Связка Gin + Gorm (или beego + beego ORM) + govalidator + go-i18n + whatever не подходит по объективным причинам или обладает фатальным недостатком?
+1 можно легко собрать свой фреймворк и заменять детали на ходу.
Именно. Мне вот это в node и Go сообществах и нравится — понимание, что не нужны большие монолитные фреймворки, где есть от и до, а под задачу удобно собирать набор заменяемых при случае компонентов, каждый из которых делает что-то конкретное.
НЛО прилетело и опубликовало эту надпись здесь
Вместо Martini лучше на Gin посмотреть.
Сгусток сумбура, эта статья явно не для новичков. Эта статья кто уже как минимум знаком с языком, и кто писал на нем программы и запускал их, иначе будет миллиард вопросов про компиляцию, импорт пакетов, файлы итд.
Статья совсем не для новичков. И даже для тех, кто прошел что-нибудь на подобии Go Tour статья вызывает больше вопросов, чем ответов.
Задавайте вопросы, я постараюсь ответить и раскрыть все что смогу.
>>Впереди устанавливается http-сервер для отдачи статики, например, nginx

А совсем недавно статья была, там говорилось что Go ненужны никакие nginx и прочие апачи, якобы он настолько самостоятельный, что это всё сам обрабатывать может легко. И где правду искать? Круто конечно, если действительно он настолько самодостаточный.
Атак на web-серверы превеликое множество, я бы не рисковал выставлять Go в интернет. Несмотря на то, что он скорее всего будет справляться с определённой нагрузкой, его вероятнее всего не составит труда свадить банальной slowloris. Это не говоря о том, что реализовывать HTTPS самостоятельно — ещё более плохая идея. Подводя итог, использовать Go как самостоятельный веб-сервер хоть и можно, но не рекомендуется уж точно.
что значит https самостоятельно? в go в стандартной библиотеке есть реализация tls.
вот slowloris написанный на go для nginx github.com/valyala/goloris
веб сервер на go дает ~ 20000-25000 rps на ядро, это примерно на 20-30% медленее nginx на тойже машине в задаче отдачи статических файлов
подводя итог ваши аргументы достаточно странные как и рекомендации.
если не нужен reverse-proxy то смысла его использовать нет — получится двойной парсинг запроса, ещё больше занятых сокетов и т.п, что в итоге даст меньшую производительность.
How quickly it can take down unprotected nginx with default settings?

In a few minutes with default config options.

Which versions of nginx are vulnerable?

All up to 1.5.9 if unprotected as described below (i.e. with default config).
Это ещё раз подтверждает, что не стоит делать свой велосипед, если даже специально заточенный проект борется с этими атаками годами. Ну и, как видно, в Nginx 1.6, который вышел больше года назад, уже приняты меры, но даже без обновления до 1.6 можно было залатать уязвимость при помощи конфигурирования.

Если вы хотите велосипед — мне вас не остановить. Не доверяете граблям, на которые наступили другие, — наступите на них сами.
Дело не просто в отдачи статики. Nginx имеет целый багаж полезных фич и настроек — кэш, сжатие, limit_rate, limit_req, геомодуль, все не перечесть — вы и так все знаете. Не делать же этот функционал заново средствами Go.
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
Задавайте свои вопросы и/или оставляйте свои рекомендации.
НЛО прилетело и опубликовало эту надпись здесь
Это именование шаблона, требование системы шаблонов «text/template» (и соответственно «html/template»), т.к. шаблоны могут быть множественно представлены в одном файле: golang.org/pkg/text/template/#hdr-Nested_template_definitions

Т.е. определять имя шаблона необходимо в любом случае, даже если вы не обращаете на это внимание. В моем примере все шаблоны именуются одинаково "*". Можно дать любое другое именование.
Можно использовать другой шаблонизатор, например Понго (шаблонизатор пришедший из Джанго). В нём другой подход.

Хочу сказать, что это не «фишка языка Го», а просто одна из реализаций шаблонизатора. Может быть и по-другому, без дефайнов.
Статья явно не для новичков. Не понял ничего. Хотя не много (совсем не много) пытаюсь писать мини программки на go.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации