Anonymous
не понимаю
Herman
ну почему только один челик?
а, лол, у тебя там естть переменная song и songs
Herman
я не заметил s тут
Herman
глобальный songs это конечно неправильно
Anonymous
в каждой функции объявлять?
Herman
ну у тебя один чел запрос делает, потом еще один делает и перезаписывает этот songs для первого
Anonymous
то есть для каждого юзера создавать отдельный сонгс?
Herman
конечно
Anonymous
исправлю
Herman
для каждого запроса
Herman
ну и как-то переименовать/переставить это дело чтоле, потому что я не заметил этот момент
Anonymous
ок, спасибо
Maks
блин круто быть прогером
Maks
вот мне нужно было щас в куче папок однонипно переименовать все файлы, обрезав часть названия оставив только полезную часть, В несколких дирах
Maks
херакс написал на го быстро и готово
Emil
удобно)
Anonymous
Последнее с _ struct вообще на хак похоже)
Anonymous
Так гофмт сортирует импорты так, как я писал?
goimports разделяет только не так как хотелось бы)
Maks
И это паттерны?)
Там вообще про паттерны ни слова))
Bagasl
вот мне нужно было щас в куче папок однонипно переименовать все файлы, обрезав часть названия оставив только полезную часть, В несколких дирах
Недавно знакомой прогу писал. Они работают на гос работе со списком сотрудников из экселя, из которого нужно заполнить ворд файл их именами, кабинетами и тд. И человек сидит, вручную заполняет 4 шаблона этими данными на 90 человек. Итого 360 файлов. Ну я написал буквально за часик-два прогу, которая парсит ворд и эксель, по плейсхолдерам раскидывает данные в ворд файл, затем сохраняет каждый отдельно на человека
ZeroX
А точнее global-counted-as-memory leak
Alexey
И это паттерны?)
В Go главное это concurrency паттерны. Они есть в этом репо: https://github.com/golang-basics/concurrency . Не знаю почему их никто не закрепил в теме.
Alexander
Есть, но оттуда выгружают эксель и уже с него заполняют
классика. боссы зажали денег заплатить тем, кто ведет учетную систему
Alexander
потом говорят, что в России труд неэффективный
Сергей
Есть, но оттуда выгружают эксель и уже с него заполняют
Ой изврааааат... Ну да ладно, это в стиле западных систем. Сам работая с айбиэмовской системой всё в екселе делал. Людей просто жалко
Сергей
потом говорят, что в России труд неэффективный
На западе всё на екселях построено
Сергей
классика. боссы зажали денег заплатить тем, кто ведет учетную систему
Смотря какая система. Просто в некоторых случаях, это может стоить десятки млн рублей
Bagasl
Ой изврааааат... Ну да ладно, это в стиле западных систем. Сам работая с айбиэмовской системой всё в екселе делал. Людей просто жалко
Ну да, я сам вызвался написать прогу, когда мне об этом рассказали, ужасно рутинная работа
Alexander
ну не десятки
Сергей
ну не десятки
Ну да, иногда сотни
Alexander
не дороже, чем формирование экселя должно быть
Сергей
не дороже, чем формирование экселя должно быть
Например, в сапе, просто изменить строчеу в выгрузке в текстовый файл для банка, заплатили более 1.2 млн. В когносе расценки гораздо выше. Ребята просто умеют зарабатывать дегьги
Сергей
В учётных системах мирового уровня заложено оооочень много функционала и что бы оно всё работало, там развиты слои бюрократии. Поэтому если всё делается официально, то там только и выкладываешь деньги мешками и поэтому принято такие работы продавливать людьми
Alexander
Грпц юзают, а про гонки за данными не знают. Странное поколение
Evgeny
Привет всем. Можно вакансию на Голанг в этот чат разместить?
Anonymous
Gracefull shutdown golang
я правильно понял, что когда произошла ошибка на стороне сервера то стоит его оффнуть(ответить на реквесты, которые были, но забить на все последующие?) верно?
Alexander
Anonymous
ок понял
Alexey
я правильно понял, что когда произошла ошибка на стороне сервера то стоит его оффнуть(ответить на реквесты, которые были, но забить на все последующие?) верно?
Сервер никогда не должен падать. Для этого во всех web фреймворках юзают midlleware recovery, которое перехватывает все ошибки, которые не были перехвачены приложением. Перехваченные же (и обработанные) ошибки (не паники) ты должен просто залогировать и отослать клиенту соответствующий статус - 400 или что больше подходит.
Herman
Evgeny
Alexander
и лучше вообще никакие не писать
Alexander
recover. ток его надо в той же горутине вызывать
Alexey
Механизм recovery. Встроенный.
Alexander
в теории такое возможно. например, ты выяснил, что пишет неверные данные
хотя не, плохой пример. но все-таки возможно, что в логике что-то такое предусмотрено, что мы должны вообще перестать, а выдавать заглушку типа 503 мы не можем
Emil
У грпс есть рековери из коробки?
Alexey
хотя не, плохой пример. но все-таки возможно, что в логике что-то такое предусмотрено, что мы должны вообще перестать, а выдавать заглушку типа 503 мы не можем
Фиг знает... ну если БД упала (а без нее никак), может и стоит уронить (остановить) сервер до починки проблемы.
Alexander
503 можно через миддлвару какую, а потом вручную перезагрузить, когда БД встанет
Anonymous
Совсем другое дело)
Anonymous
Когда сказал родным и близким что работаешь с разными пакетами
జ్ఞా
колеГошки - скажите каким образом на ваш взгляд лучше всего организовать CICD для Golang ? Gitlab ? кто посоветует что почитать ?
Anonymous
во фронт чате челики обсуждают на каком маке лучше сидеть(2015 год или imac24) и если сравнить с этим чатом... то это небо и земля...
/slvscm
я кстати до сих пор не понимаю дроч на разработку в *nix. ну типо, если тебе нужна линукс-среда, то wsl в винде отрабатывает. а зачем еще? в чем преимущество мака?
Aleksey
Вроде, с докером на винде до сих пор все плохо? p.s. Как и не маках.
/slvscm
Вроде, с докером на винде до сих пор все плохо? p.s. Как и не маках.
ну вообще для таких вещей нужна отдельная машина/впска
Alexander
выкинуть итый элемент, хм... множество что ли пишешь на слайсах?
Aleksey
ну вообще для таких вещей нужна отдельная машина/впска
Для постоянной локальной работы не понятно, зачем так себе жизнь усложнять...
జ్ఞా
Gitlab CI/CD, Docker, k8s
.gitlab-ci.yml паттерны вообщем там есть - мерси буду разбираться
Alexey
Очевидно, что второй, если порядок не важен. Но если важен, есть вариант лучше чем первый; func RemoveWithSaveOrder(s []string, i int) []string { /* slow */ // 1. Выполнить сдвиг s[i+1:] влево на один индекс. copy(s[i:], s[i+1:]) // 2. Удалить последний элемент (записать нулевое значение). s[len(s)-1] = "" // 3. Усечь срез. s = s[:len(s)-1] return s }
Alexey
P.S. Мм... Оказывается, copy не лучше append. В общем как-то так: BenchmarkRemoveFast BenchmarkRemoveFast-4 393420177 2.656 ns/op 0 B/op 0 allocs/op BenchmarkRemoveWithSaveOrder BenchmarkRemoveWithSaveOrder-4 21 55860338 ns/op 4 B/op 0 allocs/op BenchmarkRemoveWithSaveOrder2 BenchmarkRemoveWithSaveOrder2-4 20 55553175 ns/op 0 B/op 0 allocs/op Fast это без сохранения порядка.