Anonymous
Для одного файла
https://golang.org/pkg/net/http/#ServeFile
🏳️ Phil
Да, судя по доке умеет. Ok
🏳️ Phil
Сдаюсь
Anonymous
За что я люблю Go, так это за богатство стандартных либ.
Мерль
Daniel
а зачем они?
Мерль
а зачем они?
Бложик
Котики какие-нибудь
Контент, в общем
Daniel
контент
1. давно в базе
2. все равно требует обработки (шифрования) перед отдачей
Мерль
Slava
хм, а разве дефолтный веб сервер на го умеет делать всякие ssl termination, бороться с медленными клиентами не хуже чем это делает nginx?
Mike
вообще странное обсуждение. для каждой задачи есть свой инструмент. зачем изобретать велосипед на го если есть нгинкс, который много лет уже решает все проблемы, которые теоретически могли возникнуть?
Daniel
1. чтобы их не было на файловой системе.
2. не понял вопроса. он точно про файлики?
Mike
или это типичная болезнь системщиков "зачем мне лишний пакет, я сам все напишу"?
Daniel
о каком велосипеде идет речь?
Daniel
ну вот о каком?
Anonymous
nginx вроде
Daniel
что такого делает nginx, чего не умеет net/http?
Anonymous
Daniel
(я вот знаю, что openssl делает лучше, чем net/http)
Daniel
но давайте в эту сторону не сворачивать
Mike
ну знаешь, оно все в машинный код компилится, что умеет го, чего не умеет машинный код?
Daniel
давайте про файлики, и про их (не)нужность
Daniel
а вот этой херни про машинный код - не надо
Anonymous
Mike
нгинкс решает тонны проблем, которые за тебя уже подумали и реализовали, зачем свой велосипед изобретать и в процессе дырки оставлять? сервер не предназначен сам торчать наружу, для этого есть реверс-прокси, который посмотрит, что пришло, и мб форварднет серверу, мб сам отдаст, мб другому серверу форварднет
Mike
да и он тупо файлики быстрее откидывает, чем сервер
Daniel
спасибо за ваше мнение
Mike
а что это за разговор, если не обмен мнениями? или ты хочешь услышать аргумент, который скажет тебе, что 100% один подход работает, а другой нет? такого не бывает
Mike
на пхп знаешь ли тоже все можно сделать, и что теперь? забиваем на го, идем пыхать?
Anonymous
Пачаны, у вас самый большой проект был, на сколько строк?
Daniel
там написано "должно быть так", аргументов не приведено
Daniel
если бы мне было интересно - я бы спросил про аргументы
Daniel
но мне не интересно
Mike
никто никому ничего не должен, но глупо делать иначе
Anonymous
Mike
просто потому что ты по сути переписываешь кусок нгинкса на го, тратишь на это время и усилия, ради бессмысленной цели "все в одном месте"
Mike
и потом еще это нужно поддерживать и отлаживать
Daniel
я ничего не переписываю
Daniel
все уже написано до меня
Anonymous
Daniel
у меня самый большой - 16К строк
Anonymous
Daniel
Anonymous
у меня 3000
Mike
Anonymous
Mike
Anonymous
А на каком языке условие пишется тогда?
Mike
на языке конфига нгинкса?))
Mike
if (statement) {}
Mike
как и везде
Anonymous
То есть, я могу сделать проверки, допустим, по id юзера, времени запроса и т.п.?
Mike
Mike
вот тебе пример
Mike
где по по заголовку что-то определяется
Anonymous
круто конечно. А если мне перед тем, как пользователю отдать файл, нужно проверить права доступа, достав их из БД?
Mike
еще раз, это реверс прокси, а не сервер
Mike
он выполняет КАКИЕ-ТО проверки
Mike
бизнес логику туда тащить не стоит
Mike
скорее типа если поисковик пришел, то отправь его на пререндер
Mike
если пользователь с телефона — ан сервер с мобильной версией
Mike
если с компа — на полную
Mike
мб редиректы какие-то и т.п.
Anonymous
Получается выбор - писать конфиг для nginx и логику go, либо всё на go.
Anonymous
Для моих 300-строчников лучше всё в одном месте на одном языке...
Mike
лучше разделять сущности, конфиг — это про другое, он про интеракции пользователя с твоими ресурсами, перенаправление хттп->хттпс и т.п., на го должна быть бизнес логика, не привязанная к домену и т.п.
Mike
для 300 строчников можно делать ВООБЩЕ что угодно, лол
Mike
я-то про продакшн логику сейчас
Mike
когда все разрослось и следить за этим тяжело
Mike
если у тебя свалка
Mike
и не пойми где что и сколько раз менять, когда ты с амазона переезжаешь в диджтал оушен и домен решил поменять
Mike
или когда у тебя 4 лэндинга потому что маркетологам так хочется, а по сути они одинаковые и только урлами отличаются
Anonymous
А когда разрослось и ещё весь проект в десятке сопутствующих компонентов, тоже наверно сложно.
Mike
ну вот у меня сейчас проект на десяток-другой тысяч строк кода (правда в основном это фронт), и это разделение обязанностей просто панацея, когда для каждого рода проблемы ты знаешь, какой инструмент за это отвечает и не лопатишь весь код, а только это