С чего начать:
- В обязательном порядке проходим "Go Tour":
https://go.dev/tour/welcome/1
- Читаем документацию прямо по порядку (пункт "Learning Go"): https://go.dev/doc/
- Ознакамливаемся с общим roadmap по изучению языка и сопутствующих инструментов: https://github.com/darius-khll/golang-developer-roadmap (постоянно обновлялось сообществом)
Литература:
- Донован, Керниган "Язык программирования Go"
- Также книги рекомендуемые для начала: https://go.dev/wiki/Books и https://www.practical-go-lessons.com/ (веб-версия — бесплатная и хорошо подходит для новичков в программировании)
- Книги из списка: https://github.com/dariubs/GoBooks
Полезные ресурсы:
- Сборник patterns и info по микросервисам: http://microservices.io/
- Смотрим видео https://www.youtube.com/channel/UC_BzFbxG2za3bp5NRRRXJSw
- Обновляемый список велосипедиста с пакетами: https://github.com/avelino/awesome-go
Небольшая конфа треда: https://t.me/golang2ch
Прошлый тред: >>3390005 (OP) (OP)

Я пришел из питона, гошку изучаю пол года, работу пока не нашел.
https://www.geeksforgeeks.org/golang-tutorial-learn-go-programming-language/ но тут для 1.12 для базы хватит
Не пользуйтесь гикс фо гикс там индусы пишут глупости нередко и в нюансах путаются
ETL-макака, хочу на го написать прототип сервиса, который будет показывать обычную плоскую табличку, данные для которой будут браться из БД по кучке параметров (период, тип товара, регион и т.п.). Веб-разработкой до этого не занимался, го выбрал потому что прозрачно и без фреймворков. Из альтернатив рассматриваю LiveView в эликсире. На го опыта ноль, соответственно.
Я пришел из питона от мира вуза и яшки (АиСД)
Го по сути первый ЯП для продуктовой разработки
Отпахал стажку, работаю в бигтехе
Я с нуля вкатился. Ну как с нуля, было десять лет назад в вузике что-то невнятное на плюсах. Всего на вкат ушёл год с небольшим, конкретно на гошку месяца три (я дурак джаву сначала учил). Работаю сенькой в небольшой компании, девять месяцев, полёт нормальный.

пришел на работу как плюсо макака, неожиданно оказалось что есть древний сервис на плюсах, которые писали множество людей, которых уже нет в кампании
сейчас сижу переписываю всё на го, ощущения ахуенные, всё таки написание нового лучше чем поддержка старого

Пришел из джавы, просто возвали в гуголь я до первого рабочего дня не знал на чём буду писать, оказалось Го.
Я пытаюсь перекатиться из дотнета, на сишарпе у меня овер 10 лет в бекенде. Нарисовал в резюме три года на голенге, походу мало, надо рисовать пять. Работу не нашел, но я в хохляндии, тут айти в принципе закончилось, за два месяца ноль собесов.
Алсо что ты там изучаешь полгода? Голанг очень простой язык, литерали си с горутинами.
4 месяца если быть точным. Прочел книгу, прошел пару курсов, написал пару пет проектов, поразбирался с кишочками.
Вот блин, а я себе год хотел нарисовать, думаете надо минимум 3 ?
Если ты всё равно решил пиздеть, то зачем останавливаться на скромной хуйне? Ерохин вон 6 лет нарисовал и теперь архитектор всей вашей хуйни, спрашивает у нейросетки каких задач вам раздать и пиздует на пляж.

хотелось меньше рисков, вкатиться за лоу прайс (200) а потом подтянуться и уже просить 300-350. А если я себе накручу дохуя опыта то будет странно просить мало, а за много и спрос с ходу другой будет. Но видимо придется крутить 3 и просить 250 иначе просто на собес не позовут.
300 это самый минимум.
У меня есть предположение что человек с пикрила оценивает свою внешность как 7/10
В веб-разработке не столько риск роляет, сколько шаткое самоощущение - что могут уволить, задач дать неудобных. Уверенность в своих способностях, особенно на работе, это залог карьерных успехов и благоприятной психологической атмосферы по жизни. Поэтому я бы если и крутил, то только холодный опыт - 4 года? да это фриланс, там так, парочку проектов сделал, по двадцать тысяч за каждый получил и ещё пятёрку премии.
Тайские бордели, кубинские пляжи, топовую снарягу для горных походов.. В общем, свои хобби в свободное от наёба кабаныча время.
Говоришь так, будто на Дваче можно обсуждать что-то другое.
Хватит головной лезть подруг боли не шумные а девушек ничего её жизнь ждать приходится в мою от кроме та
ких большинство. Лидер группы мужчин восседал на тёмнокрасном внушительном коне с двумя самодельными рогами Его гнетущий взгляд обошёл всю собравшуюся толпу Завтра утром наша семья Ду начнёт набирать стражников Если выдержите три удара ученика семьи Ду то станете стражем а если окончите поединок в ничью или даже победите младшего семьи Ду то должность капитана стражи ваша Всего мы набираем двадцать человек!
Мюнхен.
Я пришел стажером студентом в компанию на проект, где была джава и го. Тогда я был полон счастья и мотивации. Но на стажировке я показал себя плохо и не справился даже с самыми простыми стажерскими задачами. Как итог меня оттуда уволили с позором, а тимлид лично мне сказал, что я совсем уж овощем оказался. В команде было еще два других стажера, как итог их взяли в штат, а меня выгнали. Один из них нынче работает каким-то там мидлом или сенькой в AWS в Дублине.
После этой стажировки у меня напрочь исчезла мотивация что-то изучать и делать. Я впал в нечто вроде депрессии и апатии, от которых не избавился до сих пор, хотя прошло уже 5 лет.
Как итог я с тех пор сменил несколько работ. В основном везде писал на голанке, но с багажом легаси в виде питона, джавы или пхп. На каждой из моих работ я зарекомендовал себя как лоуперформера. И почти каждый раз меня увольняли спустя 7-20 месяцев. Просто ставили встречку с тимлидом, хуман ресурсом и мной и предлагали уйти по собственному. Я всегда соглашался и покорно писал заявление, после чего уходил на поиски новой работы. Постепенно начал скатываться во все более помойные места, мутные галеры, гос и около гос. Сейчас вот досиживаю свои последние дни на гос галере. Кабан еще весной объявил, что новых проектов у нас нет, поэтому мы сворачиваемся. На днях меня на бенч посадят, так как новых проектов нет. А потом придется уволиться либо мне, либо просто уволят меня.
На го писал в основном круды, ничего супер интересного. Финтех (обычный, не крипта) и немного электронного документооборота. По сути просто перекладывал джейсоны и много времени ковырялся в легаси монолитах на джаве и питоне. На сам голанк мне уже давно похуй, я даже не знаю что там после дженериков появилось нового. Ничего не читал и не изучал нового уже года три точно. Просто похуй стало и все.
>AWS в Дублине
Было бы чему завидовать. Амазон в штатах считается хуитой с паджитами и потогонкой, примерно как наш яндекс. Амазон в Европе - это полное днище, там одни SRE дежурят на онколах до нервного срыва, а потом их выгоняют нахуй.
Тоже 3 года толком ничего не учил, настроение подпорчено. Сейчас правда английский стал учить каждое утро, жду сладкого договорнячка чтобы укатить в сербостан.
>Амазон в Европе - это полное днище, там одни SRE дежурят на онколах до нервного срыва, а потом их выгоняют нахуй.
Может в AWS и по другому, но в остальном Амазоне нет SRE, там девелоперы дежурят и хер ты их заставишь дежурить бесплатно, тупо законодательство не позволит. Да и выгнать сложно, максимум давить, чтобы сам ушел. Это конечно не отменят того факта, что Амазон помойка.
>жду сладкого договорнячка чтобы укатить в сербостан
Я так понял, тебя не выпускают из страны? Жаль конечно. Мы то хоть можем в любой момент на самолет до Белграда прыгнуть и улететь. Но если у тебя гражданство страны У, то зачем в Сербию? У вас же гораздо больше локаций открыто по сравнению с гражданами страны Р.
С хохлопаспортом мир закрыт. Локация хохляндия - автоматический отказ на линкедине. Мы хуже Северной Кореи, там выезд закрыт, но хотя бы на улицах не пакуют и не надо прятаться по домам. Ты даже не представляешь, с какой искренней радостью я читаю новости о наступлении российской армии. Наверное, так себя чувствовали евреи в немецких концлагерях, когда слышали о приближающихся советских войсках.
А если поставить другой локейшн и работать через впн — всё равно нахуй будут слать из-за паспорта цеевропы? Наверняка же какое-то количество Тарасов айтишничает успешно сегодня.
Нах надо, возьми сишарп
>С хохлопаспортом мир закрыт.
Дурик, Страна У сейчас фактически принята в ЕС, Ты можешь приехать в любую страну ЕС и получить разрешение на проживание и работу по одному паспорту только, по TPS. Более того и в Америку можно по U4U съехать. О таком положении граждане Страны Р только мечтать могут.
>Ты можешь приехать
Вот только с этим моментом есть небольшие временные затруднения. А на удалёнку не берут.
>Ты можешь приехать
Не можешь. Доедешь до ближайшего блокпоста в паре километров от дома, а дальше бусик и потужный наступ на русские мины.
Там ничё важного,очередные рейс кондишены обсуждают наверно. Предусмотренная виртуаулизация зло ,когда во всей коммерческой сфере привыкают Что всё у них из коробочки должно поставляться. При этом не берут в расчёт что тащится за самой коробочкой и в итоге Кпд по упрощению вовлечениях новых сотрудников нулевое а как бы изначально поинт именно в этом состоял. Для дураков и от дураков технологический процесс но это поверхностное мнение ,кончено вот бы кто переубедил...
Не я из Р, просто английский плохой поэтому пока не выехал. А договорнячка жду чтобы из-за красного паспорта не отказывали.
Хотя У паспорт у меня тоже есть, правда просроченный.
Джейсон ну да и джейсон, суть не в этом у меня оно фруатрейшон не вызывает. Как спроектируют систему вот от этого Много зависит,а что там на самом деле? вот да новая технология по исполнению assembler. А может быть высокогнагруженный проект с сложнейшими вычислениями и умудрённой архитектурой.... всё равно что кошку приманивать на хлеб.
Многие люди в наш век совсем не понимают в маркетинге. печально.
ИТ мертво, смирись. Новых проектов теперь вообще не будет. Иногда будут нанимать на короткий срок "веб мастера" чтобы поправил баги повылазившие после нейронки.
Кулстори про авито,
Ходил к нам на собес на техлида команды из 4 человек. Сам я и так техлид в одной крупной продуктовой конторе.
Так вот, собес был удаленно с каким то жирным толстяком у которого рожа была на весь экран. Я сам то тертый калач, и этот хуй пошел по пути собеседования когда тебе задают кучу рандомных вопросов в поиске того, что ты можешь не знать. В итоге он до меня доебался, что я не знаю как строить графики KPI в жире блядь. По коду он сам везде проседал, т.к. этот жиртерс уже несколько лет сам не кодит, а в жире тикеты передвигает.
такие дела.
Вообще, во всех этих конторах всегда есть чуваки, которые там просто очень давно сидят и от того, получили какой то авторитет в компании. Который они всеми силами стараются сберечь. И если видят что к ним хочет пойти работать кто-то лихой и шутливый, то для таких толстяков - это угроза
Знаю, у меня просто зависть...
Если это не какая-нибудь паста о которой я не знаю, то ты походу шиз
Аналаговнет
Да это какой-то ретард походу нейросетью пукает, в бигкек треде таких же постов навалом.

>но я в хохляндии, тут айти в принципе закончилось, за два месяца ноль собесов
лол
буквально месяц назад устроился в амер компанию через доу
Ты на какую зп вкатился? С каким опытом? Самое главное, локация у тебя какая? Вангую не хохляндия.
Я на доу сижу несколько месяцев. Начал с 7к, сейчас опустил до 4к, было полтора собеса с хрюшками и ноль технических. Вакансии одна упоротее другой, будто нейросеть обучают.
Покажи, что написал в резюме. Походу мое резюме не проходит через мясную нейросеть.
Я богат, спасибо господи
чтобы автопроверочки ммм
сразу на сеньора прыгнул? Есть/был ментор?
Developers Of the UK
Сайтоу работоу у хохлоу dou.ua
Если статика, то лучше nginx, но зависит от нагрузки.
Тебе же никто не запрещает писать на Go vasyan-shop.ru с 100 посетителей в сутки. Там заморачиваться с nginx смысла нет, Go не хуже справится.
Это я и есть, да до сих пор бомбит
Так ты хохл, в РФ с 3 годами опыта даже на собес не попадешь, а если заикнешься про 4К баксов тебя сразу обоссут. Может тоже в ххлы податься... гражданство есть:)
Для такого и вордпресса хватит
Все компании давно съебали в Польшу и нанимают там. На джини это хорошо видно: если адекватные требования, а не фулстек-тимлид-грузчик зп до 2к, то локация строго не хохляндия. Когда вакансия появляется на рынке, сначала ищут среди местных, потом среди польских и румынских галер, и только потом, когда все отказались, вакансия доплывает сюда в хохлоину. Мы литерали выгребная яма айти.

А как вы резолвите в true проекте методы GET, POST, DELETE
Как на пикрил или может через мапу хранящую метод -> реализация (тип джава стайл).
Тебя забанили в копилоте? Это литерали вопрос для нейросети.
func main() {
http.HandleFunc("/user", func(w http.ResponseWriter, r *http.Request) {
switch r.Method {
case http.MethodGet:
getUserHandler(w, r)
case http.MethodPost:
postUserHandler(w, r)
case http.MethodDelete:
deleteUserHandler(w, r)
default:
http.Error(w, "Method not allowed", http.StatusMethodNotAllowed)
}
})
fmt.Println("Server running at http://localhost:8080/")
log.Fatal(http.ListenAndServe(":8080", nil))
}
Подскажите как оплатить подписку на IDE от Jetbrains и получить доступ к их AI Junie и другим ИИ вроде клода или чатгпт? На авито какие-то мутные схемы с предоставлением кредов до акка и переводом по сбп мутным личностям...
Не так давно в стандартном хэндлере поддержали методы, в доке пакета об этом мизер https://pkg.go.dev/net/http#hdr-Patterns-ServeMux, тут подробнее https://go.dev/blog/routing-enhancements
До 1.22 проблема всегда решалась через chi (echo, gin, etc...), либу. люди привыкли и до сих пор сидят на любимых либах
>>482084
А вот тебя нейросети точно заменят.
Точнее в доке пакета написано норм, просто я даже зная про фичу с трудом это там нашел.
>тебя нейросети точно заменят
>за минуту решил абсолютно стандартную типовую задачу с помощью ии
>или два часа сидел изучал доки, чтобы написать на 10 строк меньше кода
Ты же знаешь, кто из нас первый вылетит на перфоманс ревью.
Покупаешь у барыги в тг боте одноразовые предоплаченные карты VISA любого номинала и не ебёшь себе мозг. Да, $20 карточка обойдётся в 30, ну да и хуй с ним, зато никаких кредов хуй пойми кому.
>у барыги в тг боте одноразовые предоплаченные карты VISA
Удачи отлететь по 115фз. К тебе потом спецура придет с вопросами, лол
Никто даже жопу от стула не оторвёт за мои 2500р, которые я не перевёл хуй пойми кому, а купил услугу у юрлица через нормальный эквайринг банка.
У меня нет копайлота вообще.
Gpt выдал два разных результата.
+ я хочу с живыми людьми пообщаться, ида на хер
Например, у меня есть пакет handlers, в нем лежат файлы с для разных эндпоинтов. и вот в некоторых из них пересекаются service, которые я использую. по какому принципу нейминг дается? есть какое-то общее правило для этого?
>если мне нужен один и тот же интерфейс с одинаковыми методами в разных файлах одного пакета?
То создаёшь в нём файлик interfaces.go и описываешь интерфейс в нём? Не понял вопрос. Если интерфейсы должны быть разные, несмотря на одинаковые методы, то держишь в разных файлах и называешь конкретно там serviceForHandling, serviceForAuth, чтобы прям ясно было из названия, чё это за сущность.
>serviceForHandling, serviceForAuth
ну, условно у меня одна ручка для фронта, а другая сервисная и у них разная авторизация, но сам код в хендлере одинаковый. или я в нескольких хендлерах хожу в другой сервис за одинаковой информацией - тогда же название логически должно быть одинаковым
>файлик interfaces.go
и это будет считаться за объявление в месте использования? или под местом использованием подразумевают именно пакет, а не файл?
Дай угодаю: ты перекатываешься из джавы и не можешь без спринга в заднице? Напиши три функции auth1, auth2 и mainLogic, в первом хендлере вызови auth1 потом mainLogic, во втором auth2 и mainLogic. На голанге пишут просто, без охуительных абстракций, это не джава.
>и это будет считаться за объявление в месте использования? или под местом использованием подразумевают именно пакет, а не файл?
Будет. Подразумевают разное по ситуации, но вынести отдельно интерфейсы (общие для пакета), модели данных, кастомные ошибки и параметры конфига пакета с дефолтными значениями – это база. Но опять же, только в тех случаях, когда это имеет смысл. Если например весь пакет описывает 1-2 сущности, то нахуй не нужно (и интерфейс скорее всего тоже).
Зачем? Компания в санкционном sdn списке. По факту туда идут скуфы досиживать до пенсии веслая за мелкий прайс. Ты бы еще в сбер пошел, лол
Так это Керниган писал. У него в ed напечатать true быстрее, чем struct{}{}. А подсветки и подсказок нет по определению. Поэтому не стоит удивляться таким замечаниям.
Хочу чекнуть время и понимаю что hr удалила диалог в телеге
Я в ахуе вообще
Думал в мвп тред пишу, sorry
Он прав. У true лучше семантика. Когда-то какой-то поехавший байтоеб пукнул про struct{}{} и теперь джуны бездумно везде повторяют. Але, у вас язык со сборкой мусора, ваша экономия сраного байта ниочем. Тем более, что каналы - это самый медленный примитив синхронизации. Раз уж собрались байтоебить, то идите до конца, до атомиков и лок фри.
Дело не в экономии байта, а в читаемости кода. Когда ты видишь мапу с пустой структурой, то мгновенно понимаешь, что перед тобой просто сет. А когда там есть какое-то значение, которое может нести полезную информацию, это уже не очевидно.
чел, мы умеем только джсоны перекладывать по микросервисам
> хочет сместить нормальный рабочий инструмент, идеально выполняющий свою функцию
> на какое-то говно, которое не может нормально выполнять главное требование
Как называется эта болезнь
>Хочется сместить джаву с доминирующих позиций в компании, но там есть bouncycastle, который с аснами работает идеально, вот прям не доебешься, ещё и комьюнити огромное.
А зачем? Звучит как въебать деньги и время, так ещё гоферы стоят дороже джавистов сейчас. Как ты кабану продашь такую тему?
Лел, так тогда напиши свою либу. Нет бас фактора круче, чем кастомный фреймворк без документации.
Я думал об этом, но тут придется реально напрячься тк нужно будет спеку про протоколу плотно прокурить. Плюс по трудовому договору все что ты создашь во время работы на кабана это собственность кабана
Это понятно, а как ты кабана убедишь, что это нужная темка?
Или он еблан, который не понимает, что для бизнеса нет смысла менять работающее и документированное решение с кучей спецов на рынке?
А чисто в теории, если писать и коммитить "из дома"по крайней мере все коммиты в нерабочее время, можно же будет качнуть, что это не принадлежит кабану в случае чего.
Продать ему идею только, пусть думает, что его, а когда будешь уходить, то как будто бы все равно
Это уже дело техники, открыл спеку протокола и понял что сложно. Но думаю это самый действенный вариант, тем более если получится создать что-то юзабельное
>можно же будет качнуть, что это не принадлежит кабану
Скорее нет чем да. Чтобы это провернуть нужно очень зорошо понимать что и зачем ты делаешь и как жто правильно щадокументировать.
Начни ГК РФ Статья 1261, прочитай. Она сошлётся на другую статью, её тоде прочитай.
Ну и ТК стоит осмыслить
Учи-учи, там разберёшься, расскажешь заодно.
Легче писать, чем на Си. Бохатая стандартная либа на уровне петухона, при этом го быстрее. Можно писать консольные проги, можно веб сервисы. В общем, лучшее от миров Си и петухона.
Если он полностью и не умрёт, то со временем вылетит нахуй оттуда, где он не нужен, но сейчас используется.
Так тебе за это платят, ещё и больше, чем на других стеках с их развитыми экосистемами и фреймворками на любую залупу. В чём проблема-то? Копипастнул велосипедный бойлерплейт, пять сторипоинтов себе записал, едешь в кальянку.
Го – это язык, придуманный прошаренными программистами для того чтобы кайфовать от разработки. А не очередная пердольная хуета для красноглазых дегенератов.
Наоборот, тебе не нужно плодить кучу абстракций, чтобы подстроиться под фреймворк. Ты пишешь только то, что тебе нужно.
Почитай официальную документацию, и ты увидишь, что Go - от красноглазых дегенератов. Хуже он этого, кстати, не становится.
>от красноглазых дегенератов
От тех, что просекли фишку в жизни и обоссывают комитет С++ по кд.
Для этого надо писать язык с нуля
>Бохатая стандартная либа на уровне петухона
А удаление элемента их середины списка уже завезли?
Ты сначала изучи как это работает под капотом, а потом такие вопросы задавай, умник херов.

>Ты сначала изучи как это работает под капотом, а потом такие вопросы задавай, умник херов.
А гоферы продолжают рваться от таких простых вопросов.

Такой удар Питон не вынесет! Кстати документацию https://go.dev/wiki/SliceTricks не обновили и там по прежнему советуют что-то на хаскеле
a = a[:i+copy(a[i:], a[i+1:])]
А вообще подход к дизайну языка в Go это отдельный вид современного искусства. Была функция math.Max() которая работала только с float64, что бы сделали в скучных языках? Добавили бы generic версию. Что делают в Go? Правильно! Ебашат встроенную функцию max()!
Такая же херня со слайсами, что-то прям в язык засунули, а что-то в стандартную библиотеку.
Ты постепенно начинаешь что-то понимать про го. Практически любой говнокод или нейрослоп (ну в пределах разумного) можно обосновать, сослаться на имплементацию чего-то в самом языке, запушить в прод и наслаждаться зепкой ×2 от питониста из соседней команды.
Язык чтобы велосипедить и писать кучу кода-следовательно больше зарабатывать?
Не, хуйня какая-то.
Так же, как и везде. Есть атомики верченые, есть RWMutex дроченый. Есть каналы, как в эрланге, ты охуеешь их отлаживать. Асинхронность захардкодили в самом рантайме: когда ты делаешь блокирующее чтение на сокет, горутина сама засыпает и не отсвечивает, даже await писать не надо.

854x480, 0:02
Не, расти в старшего по своей ветке прокачки скорее. Вкатываться в разработку будет только сложнее, и скоро увидишь, как все эти отчаявшиеся вкатуны таким же валом повалят в девопс/аналитику. Вырасти до сеньора до того как эта волна привалит.
а почему ты хочешь в гошку, вилки с девопсом не сильно разные, тип просто не нравится девопс?
Что у вас с наймом? Хочу резюме заебенить.
На самом деле го учил для себя по приколу ранее, но тут рухнум случился и это может оказаться полезным.
А стоит ли с бека вкатываться в девопс, потому что бек заебал (джаба/пхп/го) и на паре работ из-за отсутвия девопсера делал какие-то мелкие таски + администрировал линукс чуть чуть (по части бекэнд приложух только) и в принципе было интересно + получалось.
Роудмапы может есть у кого в загашнике валидные
>скоро увидишь, как все эти отчаявшиеся вкатуны таким же валом повалят в девопс/аналитику
Ты из 2015 пишешь? В аналитику уже минимум лет 5 всякий сброд лезет.
Нет, дефолтно будет минимум 3 машины и 5 горутин, из которых 4 у сборщика мусора.
> 3 машины
Не понял.Вот есть 4 ядра у проца,сколько ресурсов займет выполнение к примеру пересчитать массив?
Заведите заявку номер 1488
Это не минус,просто 1 горутина
В этом случае на одном будет твой массив пересчитываться, ещё на двух будет GC крутиться. Планировщик отдельную машину не использует. Это если очень дефолтно и сферовакуумно.
Что значит без включения потоков? В голанге код исполняется в горутинах. Планировщик берет свободный поток из пула и на нем запускает горутину, пул пустой - горутина ждет в очереди. Раскидыванием потоков по ядрам занимается операционка. Есть N свободных ядер процессора - потоки бегут одновременно, нет - по очереди.
А количество ядер влияет на скорость исполнения?
Они же у тебя без явного параллелизма в коде будут исполняться последовательно. Какой язык тебе два цикла будет исполнять параллельно без явного указания, что их можно исполнять параллельно?

720x1280, 0:02
Конкуренция в разработке намного выше, чем в Девопсе. Годных девопсов вообще довольно мало, а знающих Го и того меньше. Ты буквально хочешь заменить яичницу с колбасой на то, что выпало из жопы собаки.
Я вот занял свою нишу и сижу не отсвечиваю, зато мне работодатель пяточки лижет и пису сосет, лишь бы я не принял чужой офер.
Лол, а кто еще может лезть в аналитику? Это же литералли работа как в омэриканских фильмах про депрессивный офисный буллшит джоб.
А чего так сложно девопсу выучить го?
Вкатываюсь сейчас из разработки ибо заебала + конкуренция (причем даже не со спецами, а зачастую с наебщиками)
Последние собесы - проверка на то вру я или нет, заебал этот цирк
Ну и нравится девосовские штуки на самом деле
Думаю месяца через 3-4 буду собесится уже
> Годных девопсов вообще довольно мало, а
ТАк вообще про всех спецов можно сказть и говорят тащемто
>а кто еще может лезть в аналитику?
Когда я учился в вузе и изучал аналитику параллельно, там были в основном математики (ну или всякие социологи, которым нужна прикладная статистика). То есть люди хотя бы минимально понимающие, что они делают.
У бизнеса было такое же ожидание - вместо того, чтобы нанимать отдельно математика и разработчика, можно нанять одного чела, который будет разбираться и в том, и в другом (пусть и хуже чем каждый отдельно в своём). А в реальности получилось, что аналитика сейчас засрана людьми, которые статистику вообще не знают, просто по бумажке хуячат стат. критерии, которых они не понимают. И при этом они ещё и код писать не умеют. Зато дешево.
Я из биг даты разраб (дата инженер/разраюотчик на поддержке проекта)
У нас сейчас нас сокращают и нанимают фуллстек аналитиков которые на пайчарм пишут etl потоки под спарк и сами там что-то делают
Такие тенденции в кризисе
Чтобы писать сайтики и бложики
Я видел, какие etl "потоки" пишут аналитики, там обычно мрак, который надо переделывать после них. Так что после них работа точно будет.
А можешь, пж, на словах описать что там не так? Работаю дата инженегром самоучкой, хочется конечно не допускать ошибок
Основная проблема - качество кода. Банально не умеют делить код на функции и модули. Хуячат вложенные циклы на 4-5 уровней с копированиями внутри. На каждый пук тащат библиотеки, когда то же самое можно без проблем сделать стандартной либой.
Аналитиков обычно учат писать в ноутбуках, а там на порядок ячеек плевать, потому что можно руками перезапустить только нужную часть. Поэтому писать обычные скрипты они не умеют, для них это что-то инородное. Им проще в каждой ячейке поставить порядковый номер, в котором нужно эту ячейку запускать, вместо того, чтобы нормально оформить всё.
Если пишут код для забора данных из api, то либо будут долбиться бесконечно, несмотря на таймауты, либо будут перекачивать по несколько раз один файл, потому что логи для лохов видимо.
Это очень кратно и поверхностно. В общем, вещи, которые понятны и привычны разработчикам, аналитикам чужды. Поэтому к обычному коду лучше их не подпускать. Пусть в ноутбуках дальше играются.
Ну бизнесу этого достаточно и у меня уже 3 коллеги получили свои увольнительные катлеты и ушли искать другую работку (1 крупный если не крупнейший банк цвета травы).
У нас написан огромный проект который позволяет запускать потоки с разными алгоритмами вычеслений и много других фич + куча потоков, все это на джабе и видимо им дорого стало это поддерживать, я хз. Набрали дохуя фулстеков, инженеров и бекендеров не набираюь, поделили дейлик ежедневный (3 дня они, 2 дня мы) + сокращения.
Сам я на самом деле не такой уж и дата инженер (работаю им последний год), залетел потому что предложили деняк нормально и работа оказалась чиловой (после ебке на стратапе в 2 года). До нг чилили попреживая в спарк и проект (фикся баги), а потом сунулся искать работку на джабе преимущественно в вебе, а там рухнум тотальный и на собесы не зовут.
Сейчас учу питон и буду на два рынка искать работу (джаба/дата).
> Последние собесы - проверка на то вру я или нет, заебал этот цирк
Ты думаешь на вакансиях девопса этого нет?
Под ноутбуками ты имеешь ввиду что-то типа юпитера?
Но в целом суть ясна, вроде так не делаю, следовательно все не так плохо у меня. Спасибо за развернутый ответ
>бизнесу этого достаточно
Не спорю. У большинства компаний объём данных такой, что можно на одной машине всё посчитать, никакие хадупосраки там не нужны. И орава дата инженеров и аналитиков для поддержки этого все тоже не нужна. А когда нужен отчёт в эксельке, и он делается не 20 секунд, а 10 часов, тогда и задумываются, те ли люди вообще занимаются этим.
>буду на два рынка искать работу (джаба/дата)
Джава в дате тоже нужна, лучше сразу туда иди, со спрингом хотя бы работать не придётся.
>>492738
>Под ноутбуками ты имеешь ввиду что-то типа юпитера?
Да.
>все не так плохо у меня
Если ты задумываешься "а как правильно?", то ты уже лучше 98% залётных через курсы аналитиков.
пока подглядываю в гайдлайны гугла
Алсо, я правильно понимаю, что указателями лучше пользоваться пореже? Вот тут статья, где у пчела проблемы с ресурсами из-за того, что все optional-поля указателями сделали
https://habr.com/ru/companies/oleg-bunin/articles/874202/
>Алсо, я правильно понимаю, что указателями лучше пользоваться пореже?
Нет, стоит пользоваться ими почаще. У чела очень редкий кейс, хайлоад, причём хайлоад, который упирается в процессор, а не в сеть или бд. С вероятностью 99% ты никогда в жизни с его проблемами не столкнёшься, и стоит писать просто и удобно, а не оптимизировать то, что не нужно оптимизировать.
Если станет нужно – спишешь себе пару недель на на этот эпик и представишь на перф ревью, когда будешь просить повышение.
Яндексоид - это диагноз нахуй. Литкодом ебут, деревья крутят, а потом выходят на работу и пишут лютую дичь. И это не джаваскрипт макака, это сишник. Зачем вместо айди хранить указатель на айди? Чтобы что? Пустое значение - бля да 0 это пустой значение для айди. Конечно, если жидко насрать указателями по миллионам структур, жц будет ебать цпу.
>Зачем вместо айди хранить указатель на айди?
Ты джейсоны с иксемелинами вообще перекладываешь?
Ну будет у тебя в поле айди 0, значит всё, не задано. Случаев когда надо различать пустую строку и nil очень мало, как правило это всегда означает что значения нет.
Дохуя таких случаев, когда в документе должна присутствовать либо одна структура, либо другая (сведения об ИП или сведения о юрике). Либо одно поле, либо другое (госномер ТС или инвентарный номер трамвая). Ебанёшься перекладывать это без omitempty, особенно если присутствует XML, для которого не завезли omitzero, да и вся эта хуйня всё равно не помогает против вложений групп, когда в свойствах прописано xml:"group1>group2>group3", без указателей всю эту хуйню насоздаёт даже с omitempty, даже если в конце nil.
У них там не джейсоны и не хмли, у них внутрення хуйня. Взять 8 байт как указатель и записать туда ноли - это ок это литкодно, деревья крутятся кпи мутится. Взять те же 8 байт как число и записать туда ноли - это нет. Самое интересное, они потом убрали указатели и стали просто хранить числа, нахуя было делать через жопу.
пытаюсь выкатиться с .Net, устал от него, изучаю ГО, пока нравится и как будто в долгосроке выгоднее будет.
Итак есть библиотека, в ней определен приватный тип
>type constString string
и функция
>func DoSomething(str constString)
мне нужно вызвать эту функцию. Я без проблем могу её вызвать с untyped string constant
>DoSomething("abc");
Но никакую переменную типа string я туда передать не могу, потому что типы не совместимы. И кастануть явно к приватному типу - нельзя. Я нашел как через unsafe можно кастануть приватный тип к своему, но как кастануть стандартный тип к приватному, я не нашел.
Конешно,только вот проэктирование кода для многопоточности хреново у меня получается
Что значит проектирование кода для многопоточности? Написать m.Unlock()?
>Так что ты просто объявляешь его "по месту"
То есть это специально так сделано, чтобы ты не объявлял переменные, даже через const?
Ты тредом ошибся?
сколько времени занял процесс переката?
Вот полезные для го паттерны:
https://github.com/tmrts/go-patterns
А джавахуйню пусть оставит себе, конечно.
Ещё могу посоветовать "100 ошибок go и как их избежать", полезно чтобы не писать криво-косо.
Лол, по твоей ссылке литерали джавахуйня из книжки четырех. Половину этого говна даже в джаве выбросили и заменили на DI, в гошке так вообще все нахуй не надо.
Ну самая база это конкарренси паттерны, это этот сайт https://go.dev/blog/pipelines или книжка concurrency in go.
И то и другое морально устарело, но для базы сойдет.
А так гоферы редко прям знают паттерны. Желательно знать структуру гошного проекта и кодстайл (effective go и гайд от убера).
Банда четырех спокойно на голанк портируется, можешь читнуть, сам будешь своего доморощенного патернорожденного сеньора попускать.
>>496058
Может и не надо, но тогда ты скорее всего будешь эти паттерны переизобретать по ходу дела.
https://pastebin.com/1iHpuxRP
Есть простая структура User что реализует Writer и Reader, сначала создаю её как originalUser, инициализирую, записываю в только что созданный через os.Create файл с помощью io.Copy - всё отрабатывает как я и ожидал.
После создаю пустого User'а userFromFile, но теперь пытаюсь прочитать его io.Copy способом, но возникает проблема: если использовать тот же инстанс файла что бы создан os.Create - userFromFile с нулевыми значениями, а если закрыть файл и потом открыть его os.Open, то в userFromFile, как и ожидалось мной, лежит копия originalUser.
Почему? os.Create же создаёт файл с O_RDWR флагом, то есть с него можно и читать, и писать.
Только что прочитал свой вопрос и пришла идея - а что если тупо при первой io.Copy, то есть записи в файл, каретка остаётся в конце файла, после записанного полезного текста, и уже при следующей попытки чтения, вместо начала файла io.Copy пытается прочитать с того самого места где и остановилась после записи, то есть в конце?
Ебать я даун если оно так...
Так оно и есть...
Поставил offset в начало файла после записи и всё считало корректно. Какой же я даун.
Шта?
Мб они аналог джава дока замутят чтобы я наводясь на метод сразу видел секции с описанием параметров и возвращаемого значения, а не лез внутрь надеясь что создатель добавил это в свою груду неструктурированного текста над методом?
А кубер это какого размера исключение?
>Это мешает перекладывать джейсоны?
Да, потому что надо с датами работать. Как из жсонов, так и снаружи их.
В жисоне даты стандартным способом сериализуются
JSON.stringify(new Date)
'"2025-07-14T05:32:03.371Z"'
Никогда не видел чтобы были даты типа "0"
>В жисоне даты стандартным способом сериализуются
Ровно до тех пор, пока кто-нибудь простую строку не положит.
>Никогда не видел чтобы были даты типа "0"
Тебя ждёт много открытий в этом мире.
>Ровно до тех пор, пока кто-нибудь простую строку не положит.
Просто валилируешь данные и шлёшь нахуй, тех кто не в стандартном формате шлёт.
Зуммеры вначале пиздели какой XML """тяжёлый""" , а потом начали тащить в JSON всё из XML.
Теги структур создали для рефлексии, чтобы привнести элементы императивного программирования.

Через 10 лет пофиксят
В чем тяжесть?
>Но джава лучше же для этого?
Джава хуже для всего.
>Как можно писать тяжёлый продукт без ООП?
Руками по клавиатуре.
почему джава хуже?
я думал го предназначен для всякой серверной ебалы и прочего девопсинга, а не для сложной бизнес логики

Вы мне скажите. У меня в вскоде стоит официальный пакет который никаких подсказок для тегов не имеет.
Вскод хуйня. В голэнде у меня в тегах всё отлично работает.
Я не знаю их всех, но какой-нибудь json или validate выглядят довольно стандартными чтобы их можно было дополнять. Да что там, я только что минут 20 ебался с проблемой которая была вызвана тем, что я лишний пробел в этих тегах поставил. Это ли не тупость?
>для всякой серверной ебалы и прочего девопсинга, а не для сложной бизнес логики
И в чём противоречие? Могут быть признаки подходящести Джава для проекта в неких случаях, но эти случаи не раскрываются фразой "сложная бизнес логика".
У нас на проекте сложная бизнес-логика, b2b с паутиной трёхсторонних договоров, всех нужно в жопу поцеловать. Гошка как раз оказалась заебись, новые хотелки реализуются за неделю. Да, костыли и да, воняет хуже двадцатилетней джавы, но кабаны довольны скоростью, а рефачить это говно на удивление не так и сложно, оно всё простое как палка.

У тебя что-то не то с вскодом. Всё в нём работает.
Двачую. На гошке просто берешь и просто в лоб решаешь задачу, без десяти слоев абстракций над абстракциями. Поменяется логика - перепишем код, он простой и его просто понять. Поэтому го так любят опытные разработчики, пока мартышки дрочат на солид и патерны в джаве. Я в го пришел из сишарпа, с ужасом вспоминаю медиатр и ебаный ефкор.
JS надо запретить использовать везде кроме фронта.
Миша, давай по-новой, все хуйня. Во-первых не считалось, во-вторых нет неймспейса, если его добавить.
https://go.dev/play/p/qBUb4gemPZR
А почему у меня, если я в твой пример добавил версию? А не работает потому-что либа кривая и поведение маршалинга и анмаршалинга разные.
Мне вот нужно взаимодействовать с легаси ide редактором, который пишет данные в определенном формате и я могу это распарсить, но записать в таком же виде не могу. Теперь придется либо на питоне делать, либо либу допиливать. Суперские новости для моего первого проекта на го.
Я не знаю. Ты реально думаешь, что я умею программировать?
Даже в php есть
По сути нету в си энумов (таких как в C++), потому что нет неймспейса для значений. В го iota по сути тоже самое делает что enum в си
Спрос есть.предложения нет
>Двачую. На гошке просто берешь и просто в лоб решаешь задачу, без десяти слоев абстракций над абстракциями.
А что тебе мешает так же делать на других языках?
>Option скорее как класс в стандартной библиотеке можно добавить
Option без map не нужен, а map из-за ущербных дженериков.
В своей нише пхп как джава будет жить ещё очень долго
Так хейтят языки безработные сычужки, которые просто в вузике учили другой язык. А го нигде не учат, поэтому здесь целый зоопарк таких.
Но го реально огрызок
нас учили ГОвну я его обожаю но работаю на джаве
мужики я обязательно перекачусь в ГОвно дождитесь меня
https://ru.m.wikipedia.org/wiki/Map_(%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5)
А нельзя её реализовать из-за ограничений дженериков. Вернее можно как отдельную функцию, а не метод, но это настолько убого, что даже авторы го решили не добавлять это в стандартную библиотеку.
>Какую тему не подними,везде в чем то го ущербен лол.
Речь идёт о том, что если уж вы тащите концепции either monad из ФП, то обеспечьте и соответвующие выразительные средства в языке. А то хотим функции высшего порядка в языке с выразительностью кобола.
Ничего себе даже! Да ЖС по количеству языковых фич спорит с питоном, кто больше сахара насыпет.
Удобно. А что же го?Трясуться добавить чего лишнего, а то скорость компиляции и выполнения просядет
А если взять TS то фичей еще больше
> А нельзя её реализовать из-за ограничений дженериков
> как метод
не пон, а что ограничивает?
>не пон, а что ограничивает?
В методах с ресивером дженерики нельзя добавлять кроме дженерикв свмого ресивера. Т.е. такое реализовать нельзя
func (o Optional[T]) Map[NT any](mapper func(T) NT) Optional{NT}
можно без ресивера
func Map[T any, NT any](o Optional[T], mapper func(T) NT) Optional{NT}
Можно и с этим жить, но комбинировать несколько map не удобно, особенно со всякими filer/consume.
А чо там редьюсить в Optional? Это же максимум одно значение? GetOrDefault() вполне его заменит.
>А что же го?Трясуться добавить чего лишнего, а то скорость компиляции и выполнения просядет
В языке важен баланс.
Если пихать всё, то получится шарп или питон, где на любой чих есть 3-5 способов это сделать. И согда на проекте возникает зоопарк кто-то
> var evenNumbers = numbers.Where(n => n % 2 == 0).ToList();
кто-то
> foreach (int number in numbers)
> {
> if (number % 2 == 0)
> {
evenNumbers.Add(number);
> }
>}
а кто-то бывший админ и пишет
> var evenNumbers = from n in numbers
> where n % == 0
> select n;
А потом приходит джун на проект и пытается во всем этом разобраться.
С другой стороны если для удаления 1 элемента из середины списка надо писать for, то это тоже перебор.
> где на любой чих есть 3-5 способов это сделать.
А не надо так делать,надо добавлять фишки по одной.Но в го и так не спешат делать
>А не надо так делать,надо добавлять фишки по одной.
А их и не добавляли сразу просто в какой-то момент до них дошло, что sql синтаксис очень ограничен.
ШТА?
Я писал раньше на питухоне и рубях всякий серверный бэкенд (суммарно чуть меньше 2 лет).
Внезапно, мне сказали на работе, что пора перекатываться в другой проект и там будет голанг.
Посоветуй, как правильно двигаться в го?
Я прошёлся по go.dev/tour, примерно понял синтаксис (очень слабо).
Сейчас думаю накостылить сервис на Gin какой-нибудь тестовый
Посоветуйте, как вкатиться с учётом того, что опыт только динамического петуха. Может, материалы какие или есть специально для такого подхода туторы?
Англ у меня ок, можно (и даже лучше) зарубежные источники
За помощь - с меня, как и полагается, нихуя

Мне зашла книга со скрина. Но я ее еще не дочитал, уже пошел писать маленькие проекты.
мимо джава раб опыт работы 1.5 месяца зп 50к
всё так, не спорю, но мне просто ПРИЯТНО писать на говне
на работе пиздец я ебал там такой пиздец
public abstract class GenericGisUiPrepareExportDataThread<ItemKey extends GenericGisObjectKey, GisExportData extends GenericGisResultObjectData<ItemKey> & GisRequestData<GisExportResultData,ItemKey>, GisExportResultData extends GenericGisResultObjectData<ItemKey>, GridItem extends GenericGisExportGridItem<ItemKey,GisExportData,GisExportResultData>, DataProviderType extends DataProvider<GridItem,SerializablePredicate<GridItem>>> implements Runnable
повторюсь работаю всего 1.5 месяца, первая работа, ебало моё представляете? я вот в ахуях
но похуй гребу + учу угу + коплю деньги моя зп 50к
А он не говорил, снесет ли ебало тому, кто в стандартной либе простыни пишет и не придерживается SRP?
я ебу что такое srp?
ради собеса запомнил что КЛАСС ДОЛЖЕН ИМЕТЬ ОДНУ ПРИЧИНУ ДЛЯ ИЗМЕНЕНИЯ
я честно не понимаю что это значит и интерпретирую как все, т.е.:
у класса должна быть одна зона ответственности
Объект должен иметь одно назначение, одного заказчика, один смысл для существования. Пример из жизни: мы собираем и кидаем одному из клиентов сложный отчётец. Другой узнал и захотел такой же. Я заставил коллегу полностью дуплицировать всю логику, и домен, и юзкейс. Не прошло и недели после раскатки, как от второго пошли хотелки что-то поменять в этом отчёте.
Опытные разработчики всегда копируют код отчетов, интеграций и подобной залупы. Завтра логика поменяется, ты полезешь править один отчет и сломаешь к хуям еще пять.
Солид придумали долбоебы, которые сами код не писали, это инфоцигане 80 уровня.
Чел, но ты буквально SRP процитировал в той версии что у Дяди Боба
https://blog.cleancoder.com/uncle-bob/2014/05/08/SingleReponsibilityPrinciple.html
> Gather together the things that change for the same reasons. Separate those things that change for different reasons.
>This principle is about people.
Это не Дядя Боб долбаеб, а школьники, которые считают что SRP это про то сколько методов у класса.
> defers in this range loop won't run unless the channel gets closed (SA9001)
сука, сахарок потёк
>Ну вот, наконец-то. Ты отвлёкся от фронтенд-танцев с fetch и вспомнил, что Go существует, и у него нет даже нормального map() для слайсов. Всё правильно, Go — это язык, который говорит: “Сделай руками, как в 70-х, и не ной.”
У тебя там новый фреймворк вышел, не отвлекайся. В понедельник будет еще один, не успеешь изучить за три дня - полетишь нахуй с галеры.
А, ну , давай название
Каково тебе осознавать, что го такой ущербный и примитивный, но платят гоферам всё равно больше, чем тебе? (если у тебя вообще работа есть, конечно)
Ну все правильно,за ущербность языка расплачиваются кодеры,городя велосипеды на недостающие фичи
То есть им платят больше, а они копипастят бойлерплейт и списывают на это десятки часов.
Типа того?
type GenericGisUiPrepareExportDataThread[
ItemKey ~GenericGisObjectKey,
GisExportData ~GenericGisResultObjectData[ItemKey] | ~GisRequestData[GisExportResultData,ItemKey],
GisExportResultData ~GenericGisResultObjectData[ItemKey],
GridItem ~GenericGisExportGridItem[ItemKey,GisExportData,GisExportResultData],
DataProviderType ~DataProvider[GridItem,SerializablePredicate[GridItem]]] interface {
Run()
}
Спок, мы всё на говняшке пишем.
>Создали пакеты для работы со срезами и картами,по сути сахар над цикломи с дженериками
Итс революшн!
>Но нет map, reduce, filter
Нах не нужен!
>map, reduce, filter
Пусть это нечитабельное говно остается в твоем сраном джаваскрипте. Голенг - язык для профессионалов, которым никому ничего доказывать не надо. Пока джаваскрипт макаки выебываются, кто напишет длиннее соплю из монад, на голенге пишут простой код, который просто решает задачу.
Для макак сделали сишарп, там даже на рекламных слайдах одни паджиты. Голенг для тех, кто понимает что пишет и зачем.
Поработаешь на международном проекте – сам зиганёшься.
Этого нет,а пакет с методами для срезов и карт сделали.А почему?
Работаю сейчас на голанк проекте с примерно такой хуйней, которую ты тут написал.
Тимлид зачем-то решил, что надо нахуярить десяток слоев абстракций, нахуя пока не понятно, но видимо задел на будущее. Хотя вполне можно было обойтись обычным контроллер-сервис-репозиторий, но он решил сервисный слой еще на 3 слоя разбить.
Когда в джаве пишут AbstractFactoryBean то это джава такая. Если в го пишут ZalupaFactoryProvider то тимлид мудак.
Смотрите не перепутайте.
Тимлид раньше писал на джаве?
какого хуя у меня INT002029 ошибка при загрузки файла в гис? м бля? в журнале ошибка не описана
заведи баг в жире, гляну в обед
>AbstractFactoryBean
Так писали 30 лет назад. Погугли, в каком году вышла книжка про паттерны от банды четырех. В джаве эта хуйня до сих пор жива потому, что на джаве написаны гигатонны легаси говна.
У голанга другая философия родом из си. Тут просто берут и просто в лоб решают задачу, а солидом вытирают задницу.
Обязан ли я знать все ее настройки, тонкости реализации и то как оно под капотом устроено или оно в работе нахуй не нужно?
В работе не нужно, настройкой кафки занимаются девопсы. На собесах - как повезет.
Что значит доооооолжен владеть блять? Ты дооооооолжен владеть ровно на том уровне, который требуется на проекте. Если проект требует скурпулёзного знания каждой миллипиздрюлины, то будь добр учи каждую миллипиздрюлину. Если проект НЕ требует таких знаний, то значит и не нужно. Но в твоих же интересах знать БОЛЬШЕ. Что может самое страшное произойти если не выучишь? Тебе дадут некое задание, которое ты не выполнишь и начнёшь оправдываться, но это никого не ебёт.
в россии го это только бэк, готов учить как эффективно джсончики по микросервисам раскладывать?
На уровне достаточном чтобы в неё пукнуть
Да на всех стеках везде стажировки это 0,1% всех вакансий. Ты будешь искать работу до пенсии, если откликаться только на стажировку. Стажировки есть только в очень узких нишах, где присутствует кадровый голод. Какой-нибудь там блять "abap-программист". Golang таковой не является. Ни С++, ни C#, ни Java, ни Python, ни ещё какой известный язык не является узкой нишей. Узкой нишей является Julia, возможно какой-нибудь R или Tableau. Какой нахуй смысл учить людей golang с нуля, если на рынке и так уже дохера готовых специалистов?
Зачем? Паника - это не проброс эксепшена. Это финальный пиздец в твоем коде, после которого все умирает нахуй.

> defer вызыввается только в конце выполнения функции, а не if, while, loop
Вы ебанутые? И что мне всё в анонимные функции оборачивать чтобы перед каждым continue не писать по 5 штук .close?
Голенг не для тебя, оставайся на сишарпе.
В цикле открываю amqp соединение и читаю сообщение, если соединение обрывается, то в конце цикла жду по таймауту и переподключаюсь
Выхожу из из цикла в 5 разных местах, ебало представили каждый раз писать перед continue conn.Close, channel.Close??
Сделай, чтобы выход из цикла был выходом из функции, тогда и деферы сработают как надо.
Мудило, если не знаешь можно просто промолчать. Совсем не обязательно высирать своё
>НИНУЖНО
>Тут просто берут и просто в лоб решают задачу, а солидом вытирают задницу
Ты не понимаешь солид. Там только л можно выкинуть, т.к. это ближе к ооп полиморфизму, остальные принципы так же можно и нужно применять и в го.
К наследованию это говно ближе. А лучше расскажи, как ты применяешь в гошке опен клоз, как понимаешь сингл респонсибилити и реально ли полезен интерфейс сегрегейшн.
слушаю твои предложения как написать простой handler который подключается к брокеру и слушает из очереди сообщения
соединение\канал теряется => нужно пытаться переподключиться
Очевидно, разделить логику подключения и логику обработки. Вычитываешь данные, оборвался конекшен - верни err и пусть там наверху разбираются и переподключаются.
Голенг твой первый язык, что ли?
> Ты не правильно работаешь с amqp
> Описывает тоже самое что я делаю, просто размазал логику из 10 строчек на 3 функции, о чем я и написал в самом первом посте
Вы меня специально бесите?
Шиз, таблетки.
что по другому сделать НЕЛЬЗЯ
Почему у тебя хендлер подключается к брокеру? Ты ебанутый?
Может у тебя хендлер ещё и в бд пишет?
Какова хуя такие еюанаты в мою кошечку выкатились
воняешь джавой
у меня хэндлер всё что делает это подключается к брокеру и отправляет данные в интерфейс сервиса, в котором и находиться вся бизнес логика
у нас архитектура примерно такая внешний мир => handler => service => repository(infrastructure)
Погоди, то есть если в цикле открыть файл и дефером закрыть он не закроется в конце цикла???
ААХАХАХАХ ЧТОООООО
Открываем оф доку и читаем
A "defer" statement invokes a function whose execution is deferred to the moment the surrounding function returns, either because the surrounding function executed a return statement, reached the end of its function body, or because the corresponding goroutine is panicking.
как и во многих других ЯП, единственное, в свифте и зиге дефер привязывается к области видимости, а не к функции
>как и во многих других ЯП
ни в одном языке деструктор\дефер\закрытие не прикручивается к завершению функцию, а не области видимости
Голенг особенный, если ты еще не понял.
Какова хуя хендлер ответственный за подключения? Суть хендлера получить готовый проверенный конекшен и слушать с него. А не админить всю эту залупу с конектамт и таймаутами
Создать коннекшен в main(), прокинуть в хендлер через DI в виде репозитория - норм?
>Суть хендлера
хорошо, пусть у твоего хэндлера будет такая суть, пусть вобще всё что угодно будет, ко мне это какое отношение имеет?
Джавист, ты если будешь жонглировать ответственностью между компонентами суть не поменяется
https://github.com/bomjdev/yetanother/blob/main/mq/connect.go
чекай код обертки из личной библиотеки - можешь себе так же сделать мне поебать
во первых ты из тех долбоебов которые визжат что паниками нельзя пользоваться?
во вторых я что ли говорю в тупую скопипастить? я показал как лично я делаю - наоборот свою реализацию поощряю а то останешься тупым быдлом копипастя из гитхаба, стековерфлоу и чатгпт
>ты из тех долбоебов которые визжат что паниками нельзя пользоваться?
господи, хоть бы не писал ничего жизнено важного или чем я пользуюсь напрямую
>я что ли говорю в тупую скопипастить?
так там всё говно, я же не лабы пишу, в проде так писать нельзя
Почему здесь находятся те, кто коннекты внутри хендлера прописывает? Мало того, так еще и спорят же, ебанутые, с тем что это неправильно и так не делают. Ебало представили — на каждый реквест к базе коннектится? Не, это тролли 100%, не могут настолько идиоты существовать.
>>510022
Использование паник/os.Exit() на самом нижнем уровне аппа это более чем нормальная практике и нужна чтобы например не стартовать процесс/воркер, если не удалось инциализовать какую то критикал штуку. Открывай любую популярную либу/пример сервиса и убеждайся в этом.
> на каждый реквест к базе коннектится
>>508891
> это не http хэндлер
бывает, в следующий раз внимательнее читай тред, конекчусь один раз при старте приложения
>Использование паник/os.Exit() на самом нижнем уровне аппа это более чем нормальная практике
АХАХАХАХААХАХ
> не стартовать процесс/воркер, если не удалось инциализовать какую то критикал штуку
Ахуенно ты на нижнем уровне решил что кто то там сверху не будет воркер стартовать и у него всё приложение нахуй крашнется потому что тебе снизу показалось что паника это хорошая идея
>Открывай любую популярную либу/пример сервиса и убеждайся в этом.
Ну покажи мне пример такой либы, где у тебя на нижнем уровне приложение ПАНИКУЕТ
>>510001
>>510005
>>510022
Я запрещаю вам писать код. Укатывайтесь из айтишечки
>panic(err)
Вообще не понял доеба. Нахуя мне поднятый сервис/воркер, если он не смог подрубится к источнику данных и не может выполнять свои функции. Лучше я на деплое упаду и пойду искать причину падения, чем у меня в продакшене начнет что то проебется и в очередь толпа набежит
блять еще один)
>Нахуя мне поднятый сервис/воркер, если он не смог подрубится к источнику данных и не может выполнять свои функции
Ну правильно, возникла проблема в сети на 5 секунд, весь прод падает, нахуй переподключаться
>Лучше я на деплое упаду и пойду искать причину падения, чем у меня в продакшене начнет что то проебется и в очередь толпа набежит
Да, а паники на проде ловить если что будет вобще кайф ловить
Ты тролль или как? Ты понимаешь значение слова "Деплой"
энивей, детект долбаеба, который думает что паника в рантайме == падение сервиса. Тебе разработчики нахуя рекавер дали? У тебя если конекшен отъебнуло, все равно реконектится надо
больше кормить не буду
>который думает что паника в рантайме == падение сервиса
ты код то глядел хоть долбоёб? он в горутине паникует, без каких либо рекаверов
> Тебе разработчики нахуя рекавер дали?
Чтобы приложение не падало в критических случаях, а не потому что Пуков не осилил обработку ошибок
Не должно у тебя приложение паниковать при подключениям к чему либо
>У тебя если конекшен отъебнуло, все равно реконектится надо
Ахуенно, и как из этого следует что у тебя приложение паникует, а не переподключается?
>Не должно у тебя приложение паниковать при подключениям к чему либо
Отлично. Ты деплоишь сервис, который к бд не подруюился, не запаниковал. Поднялся. Он тебе зелёненьким на дешборде отсвечивает, все в порядке. Вот только юзеры почему то авторизоваться не могут.
Боже, с какими долбаебами я на одном языке пишу, лишь бы с такими в одной команде не оказаться
>сервис, который к бд не подруюился
>Он тебе зелёненьким на дешборде отсвечивает
в голове не возникает проблема что при проебе подключений к бд сервис должен что то в дашбор отправлять?
> Вот только юзеры почему то авторизоваться не могут.
и у вас дашборда нихуя про это не скажет? вы вобще как следите за работой сервисов кроме как галочки работе или упал?
>Ты деплоишь сервис
Ну давай про деплой поговорим, как тебе кажется, хорошая ли идея при деплои задавть отношения порядка?
В твоем случае получается что нужно сначала поднять бд, потом дождаться когда поднимется, потом запускать сервисы?
Надеюсь догадался между сервисами такое отношение порядка не выстраивать?
У тебя приложение должно пытаться переподключиться, это лучше чем мертвое приложение, а то что ты не можешь узнать статус сервиса это определенно не вина паник
>>510609
>>510609
> func main
> func main
> tests
> examples
> validators
Ты бы хоть вчитывался
В чем проблема при отъебе конекшена запаниковать и подняться до ближайшего рекавера и там обработать?
Ещё раз, дебик, где я тебе сказал что падать надо в рантайме ? В рантайме ты ловишь рекавером и обрабатываешь
У k8s 1k+ вызова паник, ты бы хоть чекнул
https://github.com/kubernetes/kubernetes/blob/master/pkg/apis/rbac/v1/helpers.go#L64
Вот, специально для немощных
>В чем проблема при отъебе конекшена запаниковать и подняться до ближайшего рекавера и там обработать?
В том что паника не для этого создана, для проброса ОШИБОК есть ERROR
>>510623
>https://github.com/kubernetes/kubernetes/blob/master/pkg/apis/rbac/v1/helpers.go#L64
> RuleOrDie()
Вот это хорошая практика которая явно говорит пользователю о том что ниже лежайший код может запаниковать, при этом предоставив пользователю просто Rule() с ошибкой, ничего против такого не имею
А вот если бы Rule() паниковал не возвращая никакой ошибки это пиздец
Так что этот пример вобще никак не противоречит тому что я сказал, если ты будешь паники в таком же ключе делать я не против
>Надеюсь догадался между сервисами такое отношение порядка не выстраивать?
Про initContainers ты конечно же не слышал. В вашей конторке все ещё башиком деплоят ??
Уважаемо. Пенсионер в треде
Ору с этого бестолкового сына шлюхи.
>Ахуенно ты на нижнем уровне решил что кто то там сверху не будет воркер стартовать
У тебя в мэйне не получилось подключиться к БД или прочитать критикал данные из конфига которые нужны для инициализации остальных компонент приложения. Нормальные люди в этом случае пишут os.Exit() или panic(), и приложение не запускается.
Что предлагаешь делать ты, малолетний хуесос, не имеющий отношения к программированию?
> нижний уровень
> main
чел...
Нормальные люди и вправду делают это всё в main, только никто main низкоуровневым не называет, main это буквально самый высокий уровень, который всё запускает

Начну с себя, 300к дс2 миддл+
4 года опыта (выкатился из фронта, на го 3 года)
Интересно какие зепки у синек в бигтехе
>У тебя приложение должно пытаться переподключиться, это лучше чем мертвое приложение, а то что ты не можешь узнать статус сервиса это определенно не вина паник
Ебать вот это конечно угар, че за тупорылый еблан тут сидит.
То что у тебя приложение при запуске не смогло подключиться к БД(например) и не запустилось, не означает что приложение не будет пытаться перезапускаться, клоун.
У тебя в ci/cd настроены автоматические редеплои на такие штуки(если ты конечно не полный мудак, в чем есть сомнение)
Более того в рамках условного подключения к БД у тебя могут быть ретраи на коннекты в рамках самого аппа - не подключился - попробовал еще N раз - все еще не получилось - os.Exit() - запускается редеплой. Например, kuber по дефолту при CrashLoopBackOff редеплоит под.
В это же время чел который это деплоил видит проблму, понимает что дело в неудачных коннектах к БД и идет к инфре/dbaas. Вот так выглядит нормальный цикл деплоя и паники/экзиты при запуске здесь более чем уместны и так делают все.
> У тебя в ci/cd настроены автоматические редеплои на такие штуки
литературно >>510620
> добавить в мейн логику переподключения? да ну нах, ci cd сам всё подымет, чо мне утруждать себя
> приложение не будет пытаться перезапускаться, клоун
приложение сами себя перезапускают?...
> у тебя могут быть ретраи на коннекты в рамках самого аппа - не подключился - попробовал еще N раз - все еще не получилось - os.Exit() - запускается редеплой
Часть логики у нас в ci cd, часть в main, хорошая практика
> В это же время чел который это деплоил видит проблму, понимает что дело в неудачных коннектах к БД и идет к инфре/dbaas.
вот каким образом это в итоге противоречит тому что я написал?
> паники/экзиты при запуске здесь более чем уместны
и где я говорил обратное?
уместны если у тебя приложение находиться в критическом состоянии в котором оно не может дальше функционировать, то что ты не смог к бд подключиться, а вместо переподключение, ты просто в докере бесконечно крутишься не уместно
> добавить в мейн логику переподключения?
>у тебя могут быть ретраи на коннекты в рамках самого аппа - не подключился - попробовал еще N раз - все еще не получилось - os.Exit() - запускается редеплой.
Ебанько не перестает под себя серить.
И как ты реализуешь логику переподключения полностью на стороне аппа? Бесконечно переподключаться к бд, при этом само приложение у тебя будет жить?)
> да ну нах, ci cd сам всё подымет, чо мне утруждать себя
>Шиз буквально отрицает общепринятый подход с редеплоем пода
>вот каким образом это в итоге противоречит тому что я написал?
Тем, что ты сначала визжал про то что нельзя паниковать. Когда в итоге выяснилось что можно, ты начал визжать про то что редеплой на cicd это ПЛОХАЯ ПРАКТИКА.
>а вместо переподключение, ты просто в докере бесконечно крутишься не уместно
У тебя при этом живет рабочий релиз и доступность аппа для пользователя сохраняется.
Ты буквально предлагаешь: давайте не делать редеплой на cicd упавшего пода, а переложим логику реконнекта в main, чтобы у нас бесконечно ретраился конект к БД, приложение не падало и тем самым крутился по факту нерабочий релиз.
Ты же просто идиот клинический.
шиз, таблетки
ты там от тряски совсем читать рузучился, или просто начал сам с собой разговаривать?
> нельзя паниковать
можно, только из мейна либо как было выше RuleOrDie()
паниковать из низкоуровневого кода нельзя (main им не является)
> не нужно делать редеплой
нужно, если у тебя приложение упало\завершилось
приложение завершается в критической ситуации из которой оно не может восстановиться самостоятельно
нет необходимого конфигурационного файла - завершай программу
какая то часть системы находиться в невалидном состоянии - завершай программу
тебе лень написать переподключение - не завершай программу
> Бесконечно переподключаться к бд, при этом само приложение у тебя будет жить?)
именно так
если в ответ опять какой то шизойдный бред из свои головы, а не на мои посты, то максимум что отвечу "шиз таблетки"
>Часть логики у нас в ci cd, часть в main, хорошая практика
Так и за что ты тогда усираешься?
Да, это хорошая практика. И практика с просто ретраями в кубере все еще хорошая. Почему? Потому что твои 5 ретраев коннекта в аппе к БД как правило сфейлятся в 99% случаев, потому что в основном у тебя такие проблемы возникают в случае какой-то инфровой хуйни, которую бесполезно ретраить.
А пытающийся подняться под в кубере после рестартов это не та проблема, которую надо бежать и чинить. Ну сделал ты ретраи в аппе - у тебя приложуха будет падать не сразу, но все еще падать - и сразу рестартиться, просто немного реже.
Это просто заеб который нет смысла реализовывать. В твоем мейне у тебя может быть 30 must-подключений к разным залупам, и еще 10 чтений каких нибудь must-конфигов. Все это ты предлагаешь обкладывать ретраями? За это время можно тасок из бэклога лучше поделать.
>> Бесконечно переподключаться к бд, при этом само приложение у тебя будет жить?)
>именно так
Ну поздравляю, ебанат, лови сптху, что у тебя юзеры на проде в лк не могут зайти, потому что у тебя ручка которая ходит в бд серит 500ками.
крутись в мейне тогда, мне похуй
мне тебе как маленькому каждый шаг нужно показывать?
>>510745
>проблемы возникают в случае какой-то инфровой хуйни, которую бесполезно ретраить
в такой ситуации вобще похуям где крутиться
все еще единственная проблема что если у вас в сервисах отъебывает обязательно соединение, то вы это по только по 500, или логам, или статусу краша контейнера понимаете, если бы у вас эта проблема была решена, крутиться в мейне было бы наиболее удобным решением
каждый делает то что должен, если тебе нужно реализовать переподключением в сервисе, за это должен отвечать сервис, ни кубер, ни пуков, ни ос
ты вот в хэндлеры\репозитории бизнес логику не тащишь? ведь в некоторых случаях тоже никакой разницы
>крутись в мейне тогда, мне похуй
Ну я еще раз поздравляю, ты только что расписался в том, что твоя шизоидная идея приводит к 500кам на проде у юзеров, которых можно было избежать, и тебе это ОК.
>в такой ситуации вобще похуям где крутиться
Нет, не похуям. В случае крешлупа в кубере у тебя старый релиз продолжает работать как и до этого.
>приводит к 500кам на проде
ты даун.
>В случае крешлупа в кубере у тебя старый релиз продолжает работать как и до этого
никак иначе старый релиз кубер попросить оставить нельзя
спасибо крешлуп что держишь прод этого анона в строю, если бы не ты...
>этот бессильный пердеж ребенка посмотревшего 2 ролика инфоцыган, и поверившего, что он понимает бэкенд
С этим уже поняли, а что то по факту будет, чепушило?
Хотя я боюсь уже ничего не переплюнет что твое ахуенное предложение — бесконечный ретрай коннекта к бд и как следствие — бесполезный висящий под с аппом, который не работает и шлет тебя нахуй с 500, порождая кучу спт.
В прочем школьнику даже мозгов не хватило на хотя бы ливнес/рединес пробы, хотя и даже с ними этот подход максимально мудацкий вместо простого завершения аппа из-за невозможности стартануть все зависимости.

> ээээ а как мне старый прод активным держать если какая то хня в поде случилась, ээээ, я только рестартовать умею ээээ
> ээээ а как мне написать реконнект, я не умею, это сложно, а что если 500 полетят, я же дегенерат я не знаю что делать
> Пуков прикрути хук при неудачном коннекте к этому конкретному сервису при запуске после 10 ретраев с 10 секундным таймайутом
> эм пук пук среньк извините, я только умею os.Exit(-1), а дальше я всё


>Пердеж, ты зачем такой код написал, что у тебя под с нерабочей БД в прод выкатился? Ты в курсе что у нас за 5 минут уже 1к обращений набежало?
>ыыыы ну и штооо я жи на дашборди всиоо увидил и па логам обнаружыл праблему и откатиил
>Пердеж, но ты же мог просто изначально написать так, что у тебя сервис просто не стартанет? Ты на ровном месте создал деградацию с фоном спт
>ыыыы ыди нахуи блеа
> да тимлид, да всмысле я мудак, это же ничего не сэкономит, не буду эту тасочку делать!! не нужен вам этот хук!!!!
> вы видели сколько там зависимостей! это же сколько раз мне придется ctrl-c ctrl-v нажимать????? всмысле я долбоёб, всмысле просто написать абстракцию и пере использовать код???? ряяяяяяяяя
>>510885
> под с нерабочей БД
> выкатывается в прод, еще и обрабатывает запросы
блять я не верю что такое возможно, скажи что ты шутишь
сидя ловя с довольным ебалом 500?
если да, то я просто бездарно потратил время на этого дауна

>мудозвон, ты зачем в бесконечном цикле коннект к базе ретраишь?
>эээ ыыы ну ета штоби подик в кубере не крешлупился ВО!
>>510897
>хочет стартовать сервер, даже при том что не смог подключиться к бд, при этом параллельно ее работе сидеть переподключаться?
Это буквально ТВОЕ предложение несколькими постами выше, скотина безмозглое.
Я тебе пидорасу задал вопрос - ты ответил да, приложуха будет жить с неподключенной бд и бесконечно тыкаться в нее коннектом.
А когда я взял и рационализировал твою хуйню до уровня:
>Более того в рамках условного подключения к БД у тебя могут быть ретраи на коннекты в рамках самого аппа - не подключился - попробовал еще N раз - все еще не получилось - os.Exit() - запускается редеплой.
Ты взял и начал пиздеть "да да это я придумал я это и имел в виду"
Ты просто пиздабол, который еще и не понимает нихуя о чем говорит.
Имаджинировали ебальник этого идиота?
>Более того в рамках условного подключения к БД у тебя могут быть ретраи на коннекты в рамках самого аппа
Такой хуйней на практике никто не занимается, и дальше обычного завершения аппа никто не идет. Потому что если у тебя настолько частая проблема что твое приложение не может подключиться к базе и тебе надо ретраить эту хуйню чтобы не дай бох куберу не стало плохо от перезапуска пода, то у тебя говно в штанах руткоз с dbaas и инфрой, причем такой, что никакие обоссаные ретраи не сделают тебе лучше.
не умеет читать, напридумал у себя что то в голове, начал это доказывать, виноват я
больше не пиши мне)
>> Бесконечно переподключаться к бд, при этом само приложение у тебя будет жить?)
>именно так
Понимаю, у пиздоголового ребенка пошла стадия отрицания и он такого не говорил)
Чисто попуск малолетний, лол.

>ти типа ни знаеш што такоэ прилажение?)
Давай, запиздевшийся ребенок, удиви нас своими познаниями
компьютерная программа что ты запускаешь, она может выполниться свою работу и завершиться
еще тупые вопросы будут?
У меня только вопрос какой мудак тебя научил в компьютерной программе, которая представляет собой микросервис, запускаемый в кубере, писать бесконечное переподключение к бд.
Так чисто, понять, откуда ты вылез.
я как понимаю уже понял где обосрался и решил с темы свернуть? ну давай еще на один вопрос отвечу
потому что твой микросервис должен блять работать, если нет подключения к бд, значит нужно сидеть и ждать пока оно появиться, от того что ты завершишь программу, никому лучше не станет
>уже понял где обосрался
Я хз понял ли ты, где ты обосрался, но могу еще раз напомнить - там где ты предлагал затаскивать нерелейтед хуйню в микросервис, с учетом что как минимум так никто не делает, а как максимум это не дает ничего.
> твой микросервис должен блять работать, если нет подключения к бд
У тебя микросервис отвечает за регистрацию пополнений счета например. Без базы данных твой микросервис не может выполнять свое предназначение. То есть он НЕ работает.
Зачем ты, ебливый пидарас, оставляешь его бесконечно переподключаться, оставляя процесс работать? Можешь не отвечать, я уже понял, что ты мудак.
Допустим у тебя твоя хуйня запускается вместе с аргументами, в которых указываются параметры коннекта.
И какой-то мудак запустил с неправильными параметрами
Как итог - твоя залупа будет бесконечно переподключаться с невалидным говном, так никогда и не подключившись.
Или еще круче - твоя хуйня запускается, получает параметры из динамического внешнего конфига и начинает подключение. По какой-то причине в этот момент там лежали не те параметры и твоя хуйня опять долбится в базу с невалидным говном.
А вот обработчик по умолчанию обрабатывает запросы последовательно.Получается к примеру 10к/сек запросов пришло,то они все тупо встанут в очередь к 1 обработчику на одном! ядре?
>>510985
приложение в критическом состоянии: не можем подключиться к базе данных
варианты развития:
1) офнуть приложение, надеятся что кто то из вне его перезапустит, и когда то в какой то момент наверное мы снова подключимся, при каждом перезапуске инициализировать приложение с нуля
2) пытаться получить это подключение в цикле (с n количеством ошибок, таймаутом и чем твоей душе угодно), возможно оно появиться позже, а сейчас бд просто не доступна (желательно уведомлять инфрастуктуру о своем состоянии, если ее нет, то хотя бы в логи пукать)
если тебе не понятно почему первый вариант говно, то я тут уже тебе не помогу
проблемы второго варианта: ты не можешь понять что происходит с запущенным приложением
решение: прикрутить нормальный дашборд для сервисов, в котором можно было бы просматривать его состояние, его доступность к необходимым подключениям, если ты это можешь узнать только по логам контейнера, земля тебе пухом и твоей конторке
Ты долбоеб?
> обрабатывать реконнект подключения при запуске в цикле
> НУ ТЫ И МРАЗЬ
> крутить в кубере сервис в крашлупе
> ОМ НОМНОМ, ВОТ ЭТО Я УМНО ПРИДУМАЛ
>>511008
>Это база.
Да я уже по треду так и понял
>офнуть приложение, надеятся что кто то из вне его перезапустит
Не кто-то а система оркестрации контейнеров, в которых у тебя микросервисы. Это настроено по дефолту и просто работает.
>пытаться получить это подключение в цикле (с n количеством ошибок, таймаутом и чем твоей душе угодно)
Не пизди, выше ты писал про бесконечный реконнект. Про n переподключений и падение писал тебе я вот здесь >>510695, и ты просто повторил.
В целом если обобщить, то если у тебя существует редеплой пода при падении, то можно нихуя не делать.
Если у тебя нет редеплоя пода, и ты вместо этого накрутил ретраи подключения, то если ты забыл поддержать эту механику для какой-то другой ключевой зависимости и упал, то твой апп просто не стартанет заново.
Повторяю, ты можешь обмазаться и редеплоем и ретраями одновременно, но зачастую это ненужно и не несет никакого выигрыша(под будет рестартовать не сразу а через 5 попыток неуспешного реконекта)
>прикрутить нормальный дашборд
Вообще не имеет отношения к обсуждаемому вопросу. Да, это офк должно быть по умолчанию, но к теме не относится.
>Не кто-то а система оркестрации контейнеров
приложение обязано знать кто и откуда его запускает?
>Не пизди, выше ты писал про бесконечный реконнект. Про n переподключений и падение писал тебе я вот здесь
чел, делай как хочешь, в том что и цель что ты в мейне можешь решать каким способом тебе реконектиться, и только он это должен решать
кубер всё что может это снова и снова запускать можно конечно и в кубере настроить, но это уже попахивает извращением
и да, разрешаю тебе в мейне вечно не крутиться
мы опять свели всё к тому что ты со мной согласен, но просто напридумывал за меня тезисы?
Этим занимается сервис меш. Может быть миллион причин, почему бд отвалилась, но это не твоя забота.
Чел мне что интересно, ты контейнер без проб стартуешь? Если у тебя на условном mustLoad отъеюыаает конекшен (бд недоступна), то до условного listenAndServe ты в мейне не дойдешь только не говори, что ты сначала запускаешь сервер, а потом инитишб конфиги и подключения . Тебе куюер просто убьет Деплой по таймауту, потому что апка не поднялась
>приложение обязано знать кто и откуда его запускает?
Нет, но это не проблема. Твоя ответственность это организовать под аппку среду запуска. Это будет или настроенный кубер, или самописное баш-говно. Да хоть индус который будет руками залупу перезапускать.
Вопрос в том что в отсутствии такой среды бесполезно извращаться и городить какие то реконекты ко всем зависимостям.
>мы опять свели всё к тому что ты со мной согласен, но просто напридумывал за меня тезисы?
Так можно отмотать ветку и посмотреть с чего все пошло.
А именно с твоих тейков про то что паниковать нельзя, и какого то кринжа про коннект в хендлере.
Как видишь с тебя кринжануло пол треда. Уж не знаю с чем это связано - с тем что ты просто плохо свои мысли выражаешь или с тем что осознал свою ошибку и вовремя переобулся под общепринятые подходы в этих вопросах.
>Так можно отмотать ветку и посмотреть с чего все пошло.
ну так отмотай, и опять окажется что ты обосрался
Ну так там буквально тобой написаны долбоебские говнотейки которые были каждым тут обоссаны по триста раз.
>Уж не знаю с чем это связано - с тем что ты просто плохо свои мысли выражаешь или с тем что осознал свою ошибку и вовремя переобулся под общепринятые подходы в этих вопросах.
ага, только их сюда не пиши, а то опять окажется что ты опять не смог прочитать три строчки, не выдумав тейки у себя из головы
давай анончик, жги, пиши прям тпод этим постом тейки с цитатами, посмотрим какой ты не тупой
Хз если ты с первого раза не смог прочитать выше с цитатами и квотами постов, в каких местах ты нес нерелейтед хуйню, то дальше бессмысленно продолжать. Отдохни лучше, а то перегрелся.
> ни одной цитаты а только свои шизомысли
о чем я и говорил, ты ирл надеюсь не такой же шизофреник
Шиз, ты мне ответишь ?
Что твой говно сервис будет на хелсчек возвращать, когда конект отъебнул и ты крутишься в мейне, пытаясь его восстановить
Шизики блять еюанутые. Вы тут дрочите свою стань с реконектом к базе при деплое/рантайме. И не можете внятно сказать - что будет у вас возвращать хелсчек?
если он возвращает 200 - вы добавь, какова хуя первая арка возвращает 200
Если 500 - то нахуя в рантайме продолжится с реконектом и держать по сути мертвую поду в кубере и пускать на нее трафик.
Дегенераты, блять. Походу пора их шишечки вкатываться, раз появился риск, что подобных дебиков хрюшки приведут на смотрины
> Если 500 - то нахуя в рантайме продолжится с реконектом и держать по сути мертвую поду в кубере и пускать на нее трафик
ты понимаешь что ты дегенерат по 2 кругу идешь?)
>>511292
> разьебали и обосали
после того как просьбы показать где, неожиданно анон пропадает, и начинает спрашивать другие тупые вопросы
Так тебе было показано выше, выделяли гринтекстом и квотили твои кринжевые посты, еще раз повторяю
Ты просто включил малолетнего долбоеба(так как понял что обосрался) и делаешь вид что ничего не было, рофл
> defer вызывающийся только в конце функции не баг, а фича! так вобще во всех языках программирования сделано
(ни в одном)
> вот анончик держи код как надо реконнект делать
в коде: паника в горутине которую никто не ловит, висящая горутина, дата рейс
> паниковать из низкоуровневого кода это отличная идея, не стоит этого боятся
(оказалось что низкоуровневый код это main, тесты и валидация)
> реконектиться не надо, пусть кубер этим занимается
дай бог тебе здоровья, хоть на баше реконнект пиши
что еще упустил?
>>511320
покажешь этот пост с
> выделяли гринтекстом и квотили твои кринжевые посты
а то вдруг окажется что квот и гринтекст это шизойдные мысли

>>511325
>Бесконечно переподключаться к бд, при этом само приложение у тебя будет жить?)
Внимание, ответ бестолкового уебана:
>именно так
То есть буквально расписался в том, что он некомпетентный выблядок не писавший код никогда.
Затем мною было написано:
>Более того в рамках условного подключения к БД у тебя могут быть ретраи на коннекты в рамках самого аппа - не подключился - попробовал еще N раз - все еще не получилось - os.Exit() - запускается редеплой.
Бестолковый уебан осознал, что ранее спизданул хуйню и зацепился за высказанный мной способ, якобы это он имел в виду, и просто повторил:
>2) пытаться получить это подключение в цикле (с n количеством ошибок, таймаутом и чем твоей душе угодно)
За что был пойман и с позором еще раз обоссан.
После чего уебан решил, что это все придумали, на что все гринтексты и квоты ему показали здесь >>511048 и здесь >>510932
После чего ребенок начал выть сильнее и судорожно все отрицать.
>объяснять что такое приложение
>с незнающего долбоеба рофлили, а он такой "ДА Я РИАЛЬНА ТУТ ОБЪЯСНЯЛ ВАМ"
Ебало представили?
>>511325
>Бесконечно переподключаться к бд, при этом само приложение у тебя будет жить?)
Внимание, ответ бестолкового уебана:
>именно так
То есть буквально расписался в том, что он некомпетентный выблядок не писавший код никогда.
Затем мною было написано:
>Более того в рамках условного подключения к БД у тебя могут быть ретраи на коннекты в рамках самого аппа - не подключился - попробовал еще N раз - все еще не получилось - os.Exit() - запускается редеплой.
Бестолковый уебан осознал, что ранее спизданул хуйню и зацепился за высказанный мной способ, якобы это он имел в виду, и просто повторил:
>2) пытаться получить это подключение в цикле (с n количеством ошибок, таймаутом и чем твоей душе угодно)
За что был пойман и с позором еще раз обоссан.
После чего уебан решил, что это все придумали, на что все гринтексты и квоты ему показали здесь >>511048 и здесь >>510932
После чего ребенок начал выть сильнее и судорожно все отрицать.
>объяснять что такое приложение
>с незнающего долбоеба рофлили, а он такой "ДА Я РИАЛЬНА ТУТ ОБЪЯСНЯЛ ВАМ"
Ебало представили?
>Бесконечно переподключаться к бд, при этом само приложение у тебя будет жить
Приложение живое, подключается к бд, запросы не принимает
Слушаю оправдания что это не ты тупой не можешь прочитать не жлпой текст
>Приложение живое
>У тебя микросервис отвечает за регистрацию пополнений счета например. Без базы данных твой микросервис не может выполнять свое предназначение. То есть он НЕ работает.
Зачем ты, ебливый пидарас, оставляешь его бесконечно переподключаться, оставляя процесс работать? Можешь не отвечать, я уже понял, что ты мудак.
>Допустим у тебя твоя хуйня запускается вместе с аргументами, в которых указываются параметры коннекта.
И какой-то мудак запустил с неправильными параметрами
Как итог - твоя залупа будет бесконечно переподключаться с невалидным говном, так никогда и не подключившись.
Вот и я хз почему ты читаешь только жопой и тебя из раза в раз надо тыкать мордой в текст, чтобы ты понял, что твой вариант — говно.
> Ой ну я написал живое, но имел ввиду другое ты чо не понял что у меня в голове твориться
> В итоге сидел с горящей жопой доказывал что сам и придумал
Что и требовалось доказать
>>511340
> зацепился за высказанный мной способ, якобы это он имел в виду
Так якобы или я это изначально и имел ввиду?
>дурачок, зачем тебе работающий под с микросервисом который не подключился к бд и не может выполнять свои задачи?
>капающая слюна с подбородка
>дурачок, если апп запустить с -host=228 то он никогда не подключится и повиснет так как ты предлагаешь бесконечный реконект
>обезъяна в голове ударила в барабанные тарелки
Другого и не ждал.
>я это изначально и имел ввиду
То что ты изначально имел в виду я выделил в позапрошлом посте, что ты и подтвердил фразой "именно так". А имел в виду ты говнистый вариант который не выдерживает никакой критики.
Я бы наоборот в шапке оставил этого мелкобуквенного долбоеба, не умеющего пользваться дефером, паниками и настроить редеплой своего говнокода, обложив рединес пробами.
> Имплаинг что если сервис не отвечает на запросы, но запущен, он не живой
Ещё раз подтвердил мой пост)
Жду ещё гринтеуста, тебе нужно постов 20 как минимум добить
>дурачок, зачем тебе работающий под с микросервисом который не подключился к бд и не может выполнять свои задачи?
>капающая слюна с подбородка
Оказалось, чтобы поставить долбоеба в тупик, достаточно вот такой очевидной даже школьнику залепухой.
Прочитал про многопоточку и горутины в го.
Проэктировать код чтобы все красиво работало- тот еще гемморой
Вот уже пошли вопросики близкие к твоему уровню iq.
Но давай я тебя просвящу — нет, у тебя просто не будет активного и бесполезного пода в деплойменте.
>дурачок, зачем тебе работающий под с микросервисом который не подключился к бд и не может выполнять свои задачи?
>капающая слюна с подбородка
Все еще нет ответа, фиксирую дауна.
> Будет работать если сделать иначе?
> Нет
Никакого щелчка в голове не появились до сих пор?
> Бесполезный под
Который может заработать если появиться конекшен
>коннекта к бд нет, но под активен и с точки зрения билд системы все ок
>надо потратить время чтобы убедиться что оказывается у тебя не стартанула зависимость
Никакого щелчка в голове не появились до сих пор?
>если появиться конекшен
>дурачок, если апп запустить с -host=228 то он никогда не подключится и повиснет так как ты предлагаешь бесконечный реконект
Ты типо решил наглядно показать свою хуйню с бесконечным повторением бесполезного действия?)
> с точки зрения билд системы все ок
Какое отношение билд система к подключению к бд в рантайме имеет?)
> надо потратить время чтобы убедиться что оказывается у тебя не стартанула зависимость
Вместо дашборда узнаем статус сервисов из логов?)
Ну тогда да, если для тебя это проблема, и вам сложно узнать текущее состояние система то такое будет сложно сделать, легче тяп ляп
> ,если апп запустить с -host=228 то он никогда не подключится и повиснет так как ты предлагаешь бесконечный реконект
Именно так, приложение должно знать как ему хэндлить такую ситуацию, логику можно спокойно в конфиги перенести
Опять таки, если для тебя проблема узнать о состоянии сервиса, то проблема не в цикле переподлключения
У тебя задача задеплоить свою хуйню, ты поставил деплой, увидел что под запустился. Но это не гарантирует что твой сервис обрабатывает платежи, так как получил бесконечный реконнект с -host=228 который до тебя указал в сборке какой-то мудак. Это просто создает мнимое ощущение успеха, которого можно было избежать.
>легче тяп ляп
Конечно легче, только это не тяп ляп. Ты нажал кнопочку деплоя и вместо активного пода увидел красный кубик и "exit code: 1. failed to connect to db" и прогресс бар деплоя начал повторно крутиться. Итого ты моментально понял что не запустилось и почему не запустилось. То есть тебе не нужно даже что-то идти и узнавать о сервисе, у тебя он по факту не запускается сразу.
> Но это не гарантирует что твой сервис обрабатывает платежи
Не гарантирует, для такого есть способы узнать о конкретном состоянии сервиса прямо из дашборда, не просто галочка запущен или нет
> увидел красный кубик и "exit code: 1. failed to connect to db"
> не нужно даже что-то идти и узнавать о сервисе
Классно ты не пошел и не узнавал о статусе сервиса
>Классно ты не пошел и не узнавал о статусе сервиса
Так я не ходил никуда, я на UI деплоя сервиса находился в ожидании успеха, и в нем же увидел красный кубик и текст ошибки запуска.
>для такого есть способы узнать о конкретном состоянии сервиса прямо из дашборда
А вот ты несмотря на зеленый деплой как раз взял и пошел чекать даш а то не дай бог что то не подключилось.
Ты не понимаешь. Возможно в будущем это мертвое приложение станет живым. После того как оно сможет подключиться к бд.
Нужно уметь уверенно раскидать челобасов выше по треду. Похуй кого и в какую сторону, главное установить доминирование так чтобы прожекты потекли.
Да, но ведь эта залупа отдает мне 200-ые на хелсчек, и я продолжаю хуярить туда трафик, который нихуя никогда не будет обработан. Вместо того, чтобы пустить трафик на резервные каналы
>>511520
Должна 503-я. Чтобы клиент понимал, что у него бэк отвалился и надо идти в резервный канал. клиент должен получать явную и валидную ошибку.
А то вы тут ебанину какую-то развели. Пода зеленая на дашборде, но внутри хуярит ретраи к базе. А клиенты толпятся на входе и не понимают "А хуле делать-то".
Отъебнуло что-то в рантайме - пробуй восстановится. Не получилось - падай нахуй и не еби клиентам мозги.
На деплое не получилось что-то must прогрузить - не вставай блять. Какова хуя, если ты не смог прийти к рабочему состоянию апки - вообще куберу аппруваешь пробу и поднимаешься. Он на тебя трафик пустит, который сразу начнет 500ми срать. Ебать технологии

а с чего на джаве рухнум тотальный ?
сам с C# сижу, там и так не много вакансий было, а теперь еще меньше, вот статистика если что
Так же думаю переходить на GO
Да тот поридж обосрался со своими ретраями, но продолжает позориться до конца. Хихол, наверное.
Это кубер жи есть.
На собесах часто любят спрашивать такую хуйню. То что такое сервис меш ммм какой же вы синьор если не знаете. То чем оптимистическая блокировка отличается от пессимистической ничем нахуй в бд есть только одна блокировка

у меня нейронка только хуй нарисовала, а надо шестиугольники
Нашли они неберующуюся тему
Ебать, че за кринж. А там есть какие-то задачи на нетривиальную асинхронщину с какой-нибудь хитровыебанной гонкой данных или что-то подобное? Что будет делать по работе человек, решающий такие задачи?
В контестах от озона обычно 300iq алгос задачи дают. В целом неплохой вариант для зеленого джуна вкатиться нынче
Пиздец, ну и гои. Тысячи вкатунов соревнуются кто быстрее надипсикает задачку с регионального этапа школьной олимпиады по информатике.
Нейросети предлагают для простых и средних задач не париться,на крайняк указать количество ядер для обработки.А Worker Pool использовать для очень тяжелых вычислений.Они врут?
Озон уверенно идет по стопам яндекса. Они делают все, чтобы опытные разработчики сразу скипали их вакансии, откликались только студенты без опыта. Хотят как в яшке, где чел с двумя годами самый опытный в команде, а у лида три года. Если у яндекса хотя бы есть славное прошлое и какие-то наработки типа юдиби, то озон - это же сраный магаз со сраной доставкой и нулевой сложностью в задачах. Такие озоны есть литерали в каждой стране, никакого рокет саенса там нет.
Мне запомнился один доклад на хайлоаде от озона. Они слепили сервис для курьеров, сервис начал тормозить, покорители олимпиад бросились оптимизировать и добрались аж до асма. Нихуя не помогало. Потом случайно мимо проходил опытный разработчик, остановился, прищурился, сказал "сделай шардирование, кид" и ушел в закат. Сделали и о чудо все заработало.
Понятно, не хочешь сука работать 40 часов в неделю в Москва Сити
Гои в данном случае только мидлы, так как для них контест представляет тоже самое, но задачи сложнее. А джуны пусть алгосики решают, один фиг ничего не умеют другого полноценно
Там вроде рокет саенс сводится к написанию своих аналоговнет. Вроде на их сайте по ИТ выдел в стеке много самописного. В целом яшка вроде также делает
Представь, как там воняет код. Что могут написать студенты? Правильно, нихуя. Норм может написать чел с 20 годами опыта, но таких отсеивают литкодом и ебанутыми контестами. Яшка давно превратился в обычную галеру со студентами, озон туда же.
>с поиском первой работы
как и везде, хуево
по крайней мере есть стажировки и джуновские вакансии, если ты с топ универа то тебя могут и от туда заманивать сразу
Топовый рассказ. Вот это реальность, вот она. А то все только выебываются, а тебе хватило сил правдой поделиться. Молодец!

Че дурак что-ли? Тебе дали универсальный интерфейс для взаимодействия, в т.ч. и с файлами. Что не нравится?
>с файлами
ни один из параметров не принимает файлы через пути
скопировать из одного буфера в другой это малая часть задачи
>Что не нравится?
ты блять угараешь? ТЕБЕ РЕАЛЬНО НЕПОНЯТНО ЗАЧЕМ В СТАНДАРТНОЙ БИБЛИОТЕКЕ ФУНКЦИЯ ПО КОПИРОВАНИЮ ФАЙЛА?
В итоге в каждой репе будет по 15 реализаций копирования файла, прямо как тут
https://stackoverflow.com/questions/21060945/simple-way-to-copy-a-file
не смущайтесь, прочитайте, там пиздец
Ну вон там на SO накидали вариантов
ioutil.WriteFile
или
w, err := os.Create("out.txt"); w.ReadFrom

есть повеселее варианты
именно поэтому эта функция и должна быть в стд либе, посмотри сколько там вариантов уже накидали, и с дальнейшими версиями го еще появится
так напиши им в группу что надо такая фича
Ну например скорость, функция копирование ОС будет быстрее. А ещё файлы можно не только копировать, но и перемещать.
В чем проблема написать 3 строчки?
Вкатуны настолько обленились, что ленятся написать 3 строчки кода?
ЛФК, можно былоти 3 строчки в нативную либу убрать. Но их отсутствие не вызывает никаких проблем
> В чем проблема написать 3 строчки?
в три строчки ты только такое напишешь >>516152
>Вкатуны настолько обленились, что ленятся написать 3 строчки кода?
именно по этой причине стандартная библиотека и существует, чтобы блять васяны свои реализации в каждой репе свои реализации велосипедов не плодили
>Но их отсутствие не вызывает никаких проблем
Нет, конечно не каких проблем, просто в одной из библиотек которой ты пользуешься окажется что чел решил реализовать копирование файлов вот так >>516152
Нет, не усложняет. Высунь язык свой посильнее - и ты увидишь там драконьи узоры.
А может и не увидишь - если ты какой-то особенный.
Так вот что интересно про флаг. Я не понимаю почему если использовать flag.String() то он возвращает УКАЗАТЕЛЬ на тип строка, а если использовать StringVar и причем прописывать переменную с помощью амперсанда то все ок. Чат жпт мне объяснял что дело в том что ты пишешь flag.Parse(). Но если честно я нихуя не понял. Я привык что подобные вещи работают как функции. В том же питоне например, из которого я пытаюсь выкатиться. Там просто импортируешь пакет и используешь это как стандартную функцию. Никаких указателей, ничего
Я также попросил чат жпт сгенерить мне свою версию работы с флагами, так он мало того что импортировал те же пакеты, он блять их не использовал а работал через парс кажется os.Args[]. Хотя в VS Code если не использовать пакеты ты тупо ошибку компиляции получаешь.
ЧЗХ вообще?? Я из за таких хуевин и перестаю что то новое осваивать ибо это выглядит как усложнение ради усложнения