ainu
Спасибо
hamper 𓅝
А чем вы миграции для постгреса делаете для го проектов?
bunin
goose
hamper 𓅝
goose
А этот гусь будет работать на серваке на котором не стоит го? Или как он гошные миграции парсит?
bunin
c sql-миграциями будет, с go - не знаю, не пробовал
hamper 𓅝
Ну ладно, вроде как большую часть логики нужной для миграции можно выразить через sql
hamper 𓅝
Вот эта штука вроде интересная https://github.com/rubenv/sql-migrate к тому же можно прямо в бинарник все миграции упаковать.
hamper 𓅝
Еще бы придумать как лучше мигрировать clickhouse.
Мерль
picosql : a wrapper around database/sql https://www.reddit.com/r/golang/comments/5zs43t/picosql_a_wrapper_around_databasesql/
Мерль
https://www.cockroachlabs.com/blog/apd-arbitrary-precision-decimal-package/?utm_source=golangweekly&utm_medium=email
Eugene
Насчет миграций - выбор большой. Вот обзорчик
Eugene
https://povilasv.me/2017/02/20/go-schema-migration-tools/
ainu
Какой фреймворк выбираете чтобы делать api и отдавать статические файлики? net/http | fasthttp – 48 👍👍👍👍👍👍👍 68% Gin – 12 👍👍 17% Echo – 7 👍 10% Beego – 4 👍 6% 👥 71 people voted so far.
Мерль
* nginx
Андрей
API еще как бы ладно. Но зачем файлики отдавать не nginx?
Daniel
nginx не нужен, вообще-то
Андрей
Почему?
Daniel
что - почему?
Daniel
зачем он?
Андрей
Почему не нужен?
Андрей
Статику отдавать
Daniel
(я им пользуюсь с момента появления, а до того - mod_accel)
Daniel
а статика - нужна?
Daniel
если нужна статика - нужен и nginx
Андрей
@ramainen видимо нужна, раз опрашивает.
ainu
а статика - нужна?
В принципе, верно. nginxом лучше. просто отдача статики это часть задач фреймворка, например, на этапе разработки за 5 минут написать чтобы отдавал статическую часть и не париться, а на проде nginx.
Daniel
если правильно написать - статика будет закеширована браузером, и эффективность отдачи ее сравняется у go и nginx
Daniel
304 not modified все равно чем отдавать
ainu
Давайте будем считать, что статика ограничивается одним favicon
ainu
Если API на каждый чих отдает контент, то при открытии API методом GET в браузере отдается favicon. Если апи при этом делает проверку на авторизацию, или список сущностей отдает, это плохо. И вообще, у каждого микросервиса должна быть фавиконка.
Ilia
Серьезно?
Anonymous
Зачем nginx, когда его функционал есть в Go?
Lenar
hamper 𓅝
Фавикон для микросервисов с апи? Но зачем??
ainu
Чтобы был.
ainu
Если открыть апи в браузере, он *обязательно* дернет favicon.
ainu
А ситуацию "что отдаст" надо контролировать.
ainu
Любым способом
ainu
Поддержка фавиконки для апи гарантирует что этот вопрос учтен и при необходимости через год отдать статику проблем не возникнет.
Oleg
Поддержка фавиконки для апи гарантирует что этот вопрос учтен и при необходимости через год отдать статику проблем не возникнет.
Странный аргумент. API не обязан вообще поддерживать открытие в браузере. 404 вернуть и ок. Зачем подстраивать программу под внештатные запросы?
ainu
404 тоже вариант
ainu
Допустим сервис incrementer
ainu
по запросу /red
Oleg
Вы видели, что бы какой-нибудь etcd или elasticsearch фавиконы вставляли?
ainu
возвращает 1, 2, 3
ainu
https://api.github.com/favicon.ico
ainu
А это у эластика
ainu
ainu
etcd 404, это да
Oleg
https://api.github.com/favicon.ico
Оу, не знал. Спасибо за информацию
Anonymous
http://api.vk.com/favicon.ico
Sergey
Товарищи, созрел вопрос по поводу отказа от нджикс, в случае сервиса на Го
Sergey
Нджинкс же умеет кип элайв всякие, настройки крутые, умеет порождать процесы и все такое...неужели это заменяется компонентой Go?
Slach
Товарищи, созрел вопрос по поводу отказа от нджикс, в случае сервиса на Го
ну запросы какие надо обслужить? динамические с обращением к базе??? если статику обслужить или балансировку сделать nginx тут вполне себе ок я чтото не помню чтобы fasthttp умел sendfile от операционки использовать
Sergey
Или мы говорим про случай, когда мы не запоминаем состояние от запроса к запросу?
Slach
ну HTTP как бы это подразумевает что он stateless протокол =) хранить или нет "состояние" внутри go демона ты уже сам определяй, в соответсвии с бизнес логикой если у тебя балансировка осуществляется прямо на клиенте (например отдельно обращается на discovery endpoint и потом сам выбирает endpoint наилучший для себя) и при этом логика приложения это не "раздача статики" а нечто с вычислениями и хождениями в базу и в другие http end point то nginx ПЕРЕД go тут может только latency добавить и ничем не поможет а если балансировка и отдача статики. то nginx с этим справляется весьма прилично
Sergey
О, понял. Спасибо большое
Slach
но опять же надо понимать как именно go работает с "большим кол-вом коннектов" может ли один го демон держать 100k TCP соединений и что он для этого использует я сейчас не про горутины =) т.е. если криво написать на go то может легче таки поставить пул гошных демонов за nginx а если писать прямо, то может статься что придется слишком низкоуровнево закопаться =)
ainu
Весьма интересная статья. Там еще есть про яваскрипт фреймворки
ainu
#golang Интересный пост о будущем Go с анализом поисковых запросов вида "Why we moved from language X to language Y". Вкратце: у Go светлое будущее :) https://erikbern.com/2017/03/15/the-eigenvector-of-why-we-moved-from-language-x-to-language-y.html
Anonymous
Даже паскаль там есть!
Dmitry
Есть разница между []int{} и make([]int, 0)?
Anonymous
нет
Vladimir
Есть :)
Vladimir
make() пре-аллокейтит память сразу, []int{} по первому ассайнменту, емнип
Vladimir
хотя make(..., 0) может критической разницы не будет
Daniel
вот я думаю, что это одно и то же
🏳️ Phil
nginx не нужен, вообще-то
я так и не понял почему. файлики отдавать ты предлагаешь тоже самому писать?
Daniel
все уже написано. но я-то предлагаю признать, что файлики не нужны
Daniel
in general
Anonymous
А в чём проблема отдавать файлики на Go?
🏳️ Phil
все уже написано. но я-то предлагаю признать, что файлики не нужны
да я уже прочитал. не знаю что написано. я сходу даже не знаю как правильно файл отдать. там же всякие рейнжи, сендфайлы, вся херня. не нужны файлики? это в век sphinx docs, jekyll и hugo?
🏳️ Phil
А в чём проблема отдавать файлики на Go?
А можно пример в плейграунд с тестами рейнджей например
Anonymous
А можно пример в плейграунд с тестами рейнджей например
Рейндж это отдать файл с запрошенной позиции? В моём колхозе http.Handle("/", http.FileServer(http.Dir("./files"))) справляется с ними.