Pull to refresh

Comments 28

Пример реализации простых приложений это может и хорошо, но вот мы не нашли паттерна реализации или фреймворка для крупных веб приложений. У меня довольно большой опыт web разработки (с применением Yii, laravel, kohana, symphony), и буквально неделю назад начали писать под свой проект (с дальнейшей opensource публикацией) вменяемый fullstack фреймворк со всеми плюшками ORM, валидаторами, i18n и т. д. Если есть желающие присоединиться к разработке, пишите в лс.
Symfony — для малоопытных, symphony — для многоопытных
UFO just landed and posted this here
Может быть именно в этом и состоит дзен Go: вместо больших фреймворков использовать небольшие, но модульные решения (один инструмент выполняет одну задачу). И, черт побери, после жутко монолитной Джанги, мне это как бальзам на душу.
+1 можно легко собрать свой фреймворк и заменять детали на ходу.
Именно. Мне вот это в node и Go сообществах и нравится — понимание, что не нужны большие монолитные фреймворки, где есть от и до, а под задачу удобно собирать набор заменяемых при случае компонентов, каждый из которых делает что-то конкретное.
UFO just landed and posted this here
Вместо 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.
UFO just landed and posted this here
UFO just landed and posted this here
Задавайте свои вопросы и/или оставляйте свои рекомендации.
UFO just landed and posted this here
Это именование шаблона, требование системы шаблонов «text/template» (и соответственно «html/template»), т.к. шаблоны могут быть множественно представлены в одном файле: golang.org/pkg/text/template/#hdr-Nested_template_definitions

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

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

Articles