Go или Golang — компилируемый язык программирования от создателей таких шедевров как UTF–8, язык С, UNIX, Plan9 и других. Go поддерживает типобезопасность, имеет богатую и универсальную стандартную библиотеку и инновационные семантики одновременности: все то, что мы в индустрии называем concurrency и parallelism. На сегодня язык Golang является краеугольным камнем стабильности, прагматичности, де-факто представляет из себя стандарт в мире бэкенд–микросервисов и серверного оркестрирования.
>>3473380 ETL-макака, хочу на го написать прототип сервиса, который будет показывать обычную плоскую табличку, данные для которой будут браться из БД по кучке параметров (период, тип товара, регион и т.п.). Веб-разработкой до этого не занимался, го выбрал потому что прозрачно и без фреймворков. Из альтернатив рассматриваю LiveView в эликсире. На го опыта ноль, соответственно.
>>3473380 Я с нуля вкатился. Ну как с нуля, было десять лет назад в вузике что-то невнятное на плюсах. Всего на вкат ушёл год с небольшим, конкретно на гошку месяца три (я дурак джаву сначала учил). Работаю сенькой в небольшой компании, девять месяцев, полёт нормальный.
>>3473380 пришел на работу как плюсо макака, неожиданно оказалось что есть древний сервис на плюсах, которые писали множество людей, которых уже нет в кампании сейчас сижу переписываю всё на го, ощущения ахуенные, всё таки написание нового лучше чем поддержка старого
>>3473380 Я пытаюсь перекатиться из дотнета, на сишарпе у меня овер 10 лет в бекенде. Нарисовал в резюме три года на голенге, походу мало, надо рисовать пять. Работу не нашел, но я в хохляндии, тут айти в принципе закончилось, за два месяца ноль собесов. Алсо что ты там изучаешь полгода? Голанг очень простой язык, литерали си с горутинами.
>>3474029 Если ты всё равно решил пиздеть, то зачем останавливаться на скромной хуйне? Ерохин вон 6 лет нарисовал и теперь архитектор всей вашей хуйни, спрашивает у нейросетки каких задач вам раздать и пиздует на пляж.
>>3474058 хотелось меньше рисков, вкатиться за лоу прайс (200) а потом подтянуться и уже просить 300-350. А если я себе накручу дохуя опыта то будет странно просить мало, а за много и спрос с ходу другой будет. Но видимо придется крутить 3 и просить 250 иначе просто на собес не позовут.
>>3474066 В веб-разработке не столько риск роляет, сколько шаткое самоощущение - что могут уволить, задач дать неудобных. Уверенность в своих способностях, особенно на работе, это залог карьерных успехов и благоприятной психологической атмосферы по жизни. Поэтому я бы если и крутил, то только холодный опыт - 4 года? да это фриланс, там так, парочку проектов сделал, по двадцать тысяч за каждый получил и ещё пятёрку премии.
>>3474174 Хватит головной лезть подруг боли не шумные а девушек ничего её жизнь ждать приходится в мою от кроме та ких большинство. Лидер группы мужчин восседал на тёмнокрасном внушительном коне с двумя самодельными рогами Его гнетущий взгляд обошёл всю собравшуюся толпу Завтра утром наша семья Ду начнёт набирать стражников Если выдержите три удара ученика семьи Ду то станете стражем а если окончите поединок в ничью или даже победите младшего семьи Ду то должность капитана стражи ваша Всего мы набираем двадцать человек!
>>3473380 Я пришел стажером студентом в компанию на проект, где была джава и го. Тогда я был полон счастья и мотивации. Но на стажировке я показал себя плохо и не справился даже с самыми простыми стажерскими задачами. Как итог меня оттуда уволили с позором, а тимлид лично мне сказал, что я совсем уж овощем оказался. В команде было еще два других стажера, как итог их взяли в штат, а меня выгнали. Один из них нынче работает каким-то там мидлом или сенькой в AWS в Дублине.
После этой стажировки у меня напрочь исчезла мотивация что-то изучать и делать. Я впал в нечто вроде депрессии и апатии, от которых не избавился до сих пор, хотя прошло уже 5 лет. Как итог я с тех пор сменил несколько работ. В основном везде писал на голанке, но с багажом легаси в виде питона, джавы или пхп. На каждой из моих работ я зарекомендовал себя как лоуперформера. И почти каждый раз меня увольняли спустя 7-20 месяцев. Просто ставили встречку с тимлидом, хуман ресурсом и мной и предлагали уйти по собственному. Я всегда соглашался и покорно писал заявление, после чего уходил на поиски новой работы. Постепенно начал скатываться во все более помойные места, мутные галеры, гос и около гос. Сейчас вот досиживаю свои последние дни на гос галере. Кабан еще весной объявил, что новых проектов у нас нет, поэтому мы сворачиваемся. На днях меня на бенч посадят, так как новых проектов нет. А потом придется уволиться либо мне, либо просто уволят меня.
На го писал в основном круды, ничего супер интересного. Финтех (обычный, не крипта) и немного электронного документооборота. По сути просто перекладывал джейсоны и много времени ковырялся в легаси монолитах на джаве и питоне. На сам голанк мне уже давно похуй, я даже не знаю что там после дженериков появилось нового. Ничего не читал и не изучал нового уже года три точно. Просто похуй стало и все.
>>3474706 >AWS в Дублине Было бы чему завидовать. Амазон в штатах считается хуитой с паджитами и потогонкой, примерно как наш яндекс. Амазон в Европе - это полное днище, там одни SRE дежурят на онколах до нервного срыва, а потом их выгоняют нахуй.
>>3474706 Тоже 3 года толком ничего не учил, настроение подпорчено. Сейчас правда английский стал учить каждое утро, жду сладкого договорнячка чтобы укатить в сербостан.
>>3474714 >Амазон в Европе - это полное днище, там одни SRE дежурят на онколах до нервного срыва, а потом их выгоняют нахуй. Может в AWS и по другому, но в остальном Амазоне нет SRE, там девелоперы дежурят и хер ты их заставишь дежурить бесплатно, тупо законодательство не позволит. Да и выгнать сложно, максимум давить, чтобы сам ушел. Это конечно не отменят того факта, что Амазон помойка.
>>3475255 >>3474714 Конкретно в AWS дежурства у разработчиков есть и причем очень тяжелые. Очень много вещей в AWS до сих пор не автоматизировано и требуют ручных действий разработчиков на проде.
И да, SRE у них нет, весь груз дежурств кладется целиком на разрабов.
>>3475137 >жду сладкого договорнячка чтобы укатить в сербостан Я так понял, тебя не выпускают из страны? Жаль конечно. Мы то хоть можем в любой момент на самолет до Белграда прыгнуть и улететь. Но если у тебя гражданство страны У, то зачем в Сербию? У вас же гораздо больше локаций открыто по сравнению с гражданами страны Р.
>>3475260 С хохлопаспортом мир закрыт. Локация хохляндия - автоматический отказ на линкедине. Мы хуже Северной Кореи, там выезд закрыт, но хотя бы на улицах не пакуют и не надо прятаться по домам. Ты даже не представляешь, с какой искренней радостью я читаю новости о наступлении российской армии. Наверное, так себя чувствовали евреи в немецких концлагерях, когда слышали о приближающихся советских войсках.
>>3475307 А если поставить другой локейшн и работать через впн — всё равно нахуй будут слать из-за паспорта цеевропы? Наверняка же какое-то количество Тарасов айтишничает успешно сегодня.
>>3475307 >С хохлопаспортом мир закрыт. Дурик, Страна У сейчас фактически принята в ЕС, Ты можешь приехать в любую страну ЕС и получить разрешение на проживание и работу по одному паспорту только, по TPS. Более того и в Америку можно по U4U съехать. О таком положении граждане Страны Р только мечтать могут.
>>3475263 Там ничё важного,очередные рейс кондишены обсуждают наверно. Предусмотренная виртуаулизация зло ,когда во всей коммерческой сфере привыкают Что всё у них из коробочки должно поставляться. При этом не берут в расчёт что тащится за самой коробочкой и в итоге Кпд по упрощению вовлечениях новых сотрудников нулевое а как бы изначально поинт именно в этом состоял. Для дураков и от дураков технологический процесс но это поверхностное мнение ,кончено вот бы кто переубедил...
>>3475621 Джейсон ну да и джейсон, суть не в этом у меня оно фруатрейшон не вызывает. Как спроектируют систему вот от этого Много зависит,а что там на самом деле? вот да новая технология по исполнению assembler. А может быть высокогнагруженный проект с сложнейшими вычислениями и умудрённой архитектурой.... всё равно что кошку приманивать на хлеб. Многие люди в наш век совсем не понимают в маркетинге. печально.
>>3476638 ИТ мертво, смирись. Новых проектов теперь вообще не будет. Иногда будут нанимать на короткий срок "веб мастера" чтобы поправил баги повылазившие после нейронки.
>>3473264 (OP) Кулстори про авито, Ходил к нам на собес на техлида команды из 4 человек. Сам я и так техлид в одной крупной продуктовой конторе.
Так вот, собес был удаленно с каким то жирным толстяком у которого рожа была на весь экран. Я сам то тертый калач, и этот хуй пошел по пути собеседования когда тебе задают кучу рандомных вопросов в поиске того, что ты можешь не знать. В итоге он до меня доебался, что я не знаю как строить графики KPI в жире блядь. По коду он сам везде проседал, т.к. этот жиртерс уже несколько лет сам не кодит, а в жире тикеты передвигает.
такие дела.
Вообще, во всех этих конторах всегда есть чуваки, которые там просто очень давно сидят и от того, получили какой то авторитет в компании. Который они всеми силами стараются сберечь. И если видят что к ним хочет пойти работать кто-то лихой и шутливый, то для таких толстяков - это угроза
>>3477029 Ты на какую зп вкатился? С каким опытом? Самое главное, локация у тебя какая? Вангую не хохляндия. Я на доу сижу несколько месяцев. Начал с 7к, сейчас опустил до 4к, было полтора собеса с хрюшками и ноль технических. Вакансии одна упоротее другой, будто нейросеть обучают.
>>3478149 Если статика, то лучше nginx, но зависит от нагрузки. Тебе же никто не запрещает писать на Go vasyan-shop.ru с 100 посетителей в сутки. Там заморачиваться с nginx смысла нет, Go не хуже справится.
>>3477388 Так ты хохл, в РФ с 3 годами опыта даже на собес не попадешь, а если заикнешься про 4К баксов тебя сразу обоссут. Может тоже в ххлы податься... гражданство есть:)
>>3478562 Все компании давно съебали в Польшу и нанимают там. На джини это хорошо видно: если адекватные требования, а не фулстек-тимлид-грузчик зп до 2к, то локация строго не хохляндия. Когда вакансия появляется на рынке, сначала ищут среди местных, потом среди польских и румынских галер, и только потом, когда все отказались, вакансия доплывает сюда в хохлоину. Мы литерали выгребная яма айти.
Я тут продолжаю изучать гошку и возник вопрос. А как вы резолвите в true проекте методы GET, POST, DELETE Как на пикрил или может через мапу хранящую метод -> реализация (тип джава стайл).
>>3473264 (OP) Подскажите как оплатить подписку на IDE от Jetbrains и получить доступ к их AI Junie и другим ИИ вроде клода или чатгпт? На авито какие-то мутные схемы с предоставлением кредов до акка и переводом по сбп мутным личностям...
>>3482134 >тебя нейросети точно заменят >за минуту решил абсолютно стандартную типовую задачу с помощью ии >или два часа сидел изучал доки, чтобы написать на 10 строк меньше кода Ты же знаешь, кто из нас первый вылетит на перфоманс ревью.
>>3482090 Покупаешь у барыги в тг боте одноразовые предоплаченные карты VISA любого номинала и не ебёшь себе мозг. Да, $20 карточка обойдётся в 30, ну да и хуй с ним, зато никаких кредов хуй пойми кому.
>>3482254 Никто даже жопу от стула не оторвёт за мои 2500р, которые я не перевёл хуй пойми кому, а купил услугу у юрлица через нормальный эквайринг банка.
вот надо объявлять интерфейсы в месте использования, но как их называть, если мне нужен один и тот же интерфейс с одинаковыми методами в разных файлах одного пакета? Например, у меня есть пакет handlers, в нем лежат файлы с для разных эндпоинтов. и вот в некоторых из них пересекаются service, которые я использую. по какому принципу нейминг дается? есть какое-то общее правило для этого?
>>3482866 >если мне нужен один и тот же интерфейс с одинаковыми методами в разных файлах одного пакета? То создаёшь в нём файлик interfaces.go и описываешь интерфейс в нём? Не понял вопрос. Если интерфейсы должны быть разные, несмотря на одинаковые методы, то держишь в разных файлах и называешь конкретно там serviceForHandling, serviceForAuth, чтобы прям ясно было из названия, чё это за сущность.
>>3482943 >serviceForHandling, serviceForAuth ну, условно у меня одна ручка для фронта, а другая сервисная и у них разная авторизация, но сам код в хендлере одинаковый. или я в нескольких хендлерах хожу в другой сервис за одинаковой информацией - тогда же название логически должно быть одинаковым >файлик interfaces.go и это будет считаться за объявление в месте использования? или под местом использованием подразумевают именно пакет, а не файл?
>>3482952 Дай угодаю: ты перекатываешься из джавы и не можешь без спринга в заднице? Напиши три функции auth1, auth2 и mainLogic, в первом хендлере вызови auth1 потом mainLogic, во втором auth2 и mainLogic. На голанге пишут просто, без охуительных абстракций, это не джава.
>>3482952 >и это будет считаться за объявление в месте использования? или под местом использованием подразумевают именно пакет, а не файл? Будет. Подразумевают разное по ситуации, но вынести отдельно интерфейсы (общие для пакета), модели данных, кастомные ошибки и параметры конфига пакета с дефолтными значениями – это база. Но опять же, только в тех случаях, когда это имеет смысл. Если например весь пакет описывает 1-2 сущности, то нахуй не нужно (и интерфейс скорее всего тоже).
>>3482967 у нас корпоративный фреймворк для го, а еще для петухона и с++. авторизацию он берет на себя, от меня только ямл с описанием хендлеров и описание их авторизации в нем >>3483223 >Будет. понял, спасибо
>>3483463 Так это Керниган писал. У него в ed напечатать true быстрее, чем struct{}{}. А подсветки и подсказок нет по определению. Поэтому не стоит удивляться таким замечаниям.
>>3483463 Он прав. У true лучше семантика. Когда-то какой-то поехавший байтоеб пукнул про struct{}{} и теперь джуны бездумно везде повторяют. Але, у вас язык со сборкой мусора, ваша экономия сраного байта ниочем. Тем более, что каналы - это самый медленный примитив синхронизации. Раз уж собрались байтоебить, то идите до конца, до атомиков и лок фри.
>>3483696 Дело не в экономии байта, а в читаемости кода. Когда ты видишь мапу с пустой структурой, то мгновенно понимаешь, что перед тобой просто сет. А когда там есть какое-то значение, которое может нести полезную информацию, это уже не очевидно.
Есть тут пацаны из телекома? Нужна либа человеческая для ASN1, та что в стандартной библиотеке ни то что для использования не годится, её даже открывать стыдно. Считать поток можно только полностью(охуенно когда файлы с коммутаторов могут быть по 100-200 метров), вложенность поддерживает только одного уровня(при этом сама весь объект кладет под доп уровень вложенности лол). Хочется сместить джаву с доминирующих позиций в компании, но там есть bouncycastle, который с аснами работает идеально, вот прям не доебешься, ещё и комьюнити огромное. Хотя бы простой маппер из асн потока в мапу бы достать
>>3484141 >Хочется сместить джаву с доминирующих позиций в компании, но там есть bouncycastle, который с аснами работает идеально, вот прям не доебешься, ещё и комьюнити огромное. А зачем? Звучит как въебать деньги и время, так ещё гоферы стоят дороже джавистов сейчас. Как ты кабану продашь такую тему?
>>3484299 Я думал об этом, но тут придется реально напрячься тк нужно будет спеку про протоколу плотно прокурить. Плюс по трудовому договору все что ты создашь во время работы на кабана это собственность кабана
>>3484296 Это понятно, а как ты кабана убедишь, что это нужная темка? Или он еблан, который не понимает, что для бизнеса нет смысла менять работающее и документированное решение с кучей спецов на рынке?
>>3484301 А чисто в теории, если писать и коммитить "из дома"по крайней мере все коммиты в нерабочее время, можно же будет качнуть, что это не принадлежит кабану в случае чего. Продать ему идею только, пусть думает, что его, а когда будешь уходить, то как будто бы все равно
>>3484349 Это уже дело техники, открыл спеку протокола и понял что сложно. Но думаю это самый действенный вариант, тем более если получится создать что-то юзабельное
>>3484483 >можно же будет качнуть, что это не принадлежит кабану Скорее нет чем да. Чтобы это провернуть нужно очень зорошо понимать что и зачем ты делаешь и как жто правильно щадокументировать. Начни ГК РФ Статья 1261, прочитай. Она сошлётся на другую статью, её тоде прочитай. Ну и ТК стоит осмыслить
>>3485173 Легче писать, чем на Си. Бохатая стандартная либа на уровне петухона, при этом го быстрее. Можно писать консольные проги, можно веб сервисы. В общем, лучшее от миров Си и петухона.
>>3485721 Так тебе за это платят, ещё и больше, чем на других стеках с их развитыми экосистемами и фреймворками на любую залупу. В чём проблема-то? Копипастнул велосипедный бойлерплейт, пять сторипоинтов себе записал, едешь в кальянку.
>>3485883 Го – это язык, придуманный прошаренными программистами для того чтобы кайфовать от разработки. А не очередная пердольная хуета для красноглазых дегенератов.
>>3486884 >Ты сначала изучи как это работает под капотом, а потом такие вопросы задавай, умник херов. А гоферы продолжают рваться от таких простых вопросов.
>>3487194 Такой удар Питон не вынесет! Кстати документацию https://go.dev/wiki/SliceTricks не обновили и там по прежнему советуют что-то на хаскеле a = a[:i+copy(a[i:], a[i+1:])]
А вообще подход к дизайну языка в Go это отдельный вид современного искусства. Была функция math.Max() которая работала только с float64, что бы сделали в скучных языках? Добавили бы generic версию. Что делают в Go? Правильно! Ебашат встроенную функцию max()! Такая же херня со слайсами, что-то прям в язык засунули, а что-то в стандартную библиотеку.
>>3488196 Ты постепенно начинаешь что-то понимать про го. Практически любой говнокод или нейрослоп (ну в пределах разумного) можно обосновать, сослаться на имплементацию чего-то в самом языке, запушить в прод и наслаждаться зепкой ×2 от питониста из соседней команды.
>>3488803 Так же, как и везде. Есть атомики верченые, есть RWMutex дроченый. Есть каналы, как в эрланге, ты охуеешь их отлаживать. Асинхронность захардкодили в самом рантайме: когда ты делаешь блокирующее чтение на сокет, горутина сама засыпает и не отсвечивает, даже await писать не надо.
>>3488830 Не, расти в старшего по своей ветке прокачки скорее. Вкатываться в разработку будет только сложнее, и скоро увидишь, как все эти отчаявшиеся вкатуны таким же валом повалят в девопс/аналитику. Вырасти до сеньора до того как эта волна привалит.
Я тут понял что поднатарел в го и дальше сидеть задротить смысла нет, легче сходить на пару собесов обосраться и научиться после них большему. Мигрирую с джабы потому что там рухнум тотальный (нет собесов у меня). Что у вас с наймом? Хочу резюме заебенить.
На самом деле го учил для себя по приколу ранее, но тут рухнум случился и это может оказаться полезным.
>>3488830 А стоит ли с бека вкатываться в девопс, потому что бек заебал (джаба/пхп/го) и на паре работ из-за отсутвия девопсера делал какие-то мелкие таски + администрировал линукс чуть чуть (по части бекэнд приложух только) и в принципе было интересно + получалось. Роудмапы может есть у кого в загашнике валидные
>>3488878 >скоро увидишь, как все эти отчаявшиеся вкатуны таким же валом повалят в девопс/аналитику Ты из 2015 пишешь? В аналитику уже минимум лет 5 всякий сброд лезет.
>>3489315 В этом случае на одном будет твой массив пересчитываться, ещё на двух будет GC крутиться. Планировщик отдельную машину не использует. Это если очень дефолтно и сферовакуумно.
>>3489417 Что значит без включения потоков? В голанге код исполняется в горутинах. Планировщик берет свободный поток из пула и на нем запускает горутину, пул пустой - горутина ждет в очереди. Раскидыванием потоков по ядрам занимается операционка. Есть N свободных ядер процессора - потоки бегут одновременно, нет - по очереди.
>>3489417 Они же у тебя без явного параллелизма в коде будут исполняться последовательно. Какой язык тебе два цикла будет исполнять параллельно без явного указания, что их можно исполнять параллельно?
>>3488830 Конкуренция в разработке намного выше, чем в Девопсе. Годных девопсов вообще довольно мало, а знающих Го и того меньше. Ты буквально хочешь заменить яичницу с колбасой на то, что выпало из жопы собаки. Я вот занял свою нишу и сижу не отсвечиваю, зато мне работодатель пяточки лижет и пису сосет, лишь бы я не принял чужой офер.
>>3491235 А чего так сложно девопсу выучить го? Вкатываюсь сейчас из разработки ибо заебала + конкуренция (причем даже не со спецами, а зачастую с наебщиками) Последние собесы - проверка на то вру я или нет, заебал этот цирк Ну и нравится девосовские штуки на самом деле
Думаю месяца через 3-4 буду собесится уже
> Годных девопсов вообще довольно мало, а ТАк вообще про всех спецов можно сказть и говорят тащемто
>>3491461 >а кто еще может лезть в аналитику? Когда я учился в вузе и изучал аналитику параллельно, там были в основном математики (ну или всякие социологи, которым нужна прикладная статистика). То есть люди хотя бы минимально понимающие, что они делают. У бизнеса было такое же ожидание - вместо того, чтобы нанимать отдельно математика и разработчика, можно нанять одного чела, который будет разбираться и в том, и в другом (пусть и хуже чем каждый отдельно в своём). А в реальности получилось, что аналитика сейчас засрана людьми, которые статистику вообще не знают, просто по бумажке хуячат стат. критерии, которых они не понимают. И при этом они ещё и код писать не умеют. Зато дешево.
>>3491637 Я из биг даты разраб (дата инженер/разраюотчик на поддержке проекта) У нас сейчас нас сокращают и нанимают фуллстек аналитиков которые на пайчарм пишут etl потоки под спарк и сами там что-то делают Такие тенденции в кризисе
>>3492257 Основная проблема - качество кода. Банально не умеют делить код на функции и модули. Хуячат вложенные циклы на 4-5 уровней с копированиями внутри. На каждый пук тащат библиотеки, когда то же самое можно без проблем сделать стандартной либой. Аналитиков обычно учат писать в ноутбуках, а там на порядок ячеек плевать, потому что можно руками перезапустить только нужную часть. Поэтому писать обычные скрипты они не умеют, для них это что-то инородное. Им проще в каждой ячейке поставить порядковый номер, в котором нужно эту ячейку запускать, вместо того, чтобы нормально оформить всё. Если пишут код для забора данных из api, то либо будут долбиться бесконечно, несмотря на таймауты, либо будут перекачивать по несколько раз один файл, потому что логи для лохов видимо. Это очень кратно и поверхностно. В общем, вещи, которые понятны и привычны разработчикам, аналитикам чужды. Поэтому к обычному коду лучше их не подпускать. Пусть в ноутбуках дальше играются.
>>3492229 Ну бизнесу этого достаточно и у меня уже 3 коллеги получили свои увольнительные катлеты и ушли искать другую работку (1 крупный если не крупнейший банк цвета травы).
У нас написан огромный проект который позволяет запускать потоки с разными алгоритмами вычеслений и много других фич + куча потоков, все это на джабе и видимо им дорого стало это поддерживать, я хз. Набрали дохуя фулстеков, инженеров и бекендеров не набираюь, поделили дейлик ежедневный (3 дня они, 2 дня мы) + сокращения.
Сам я на самом деле не такой уж и дата инженер (работаю им последний год), залетел потому что предложили деняк нормально и работа оказалась чиловой (после ебке на стратапе в 2 года). До нг чилили попреживая в спарк и проект (фикся баги), а потом сунулся искать работку на джабе преимущественно в вебе, а там рухнум тотальный и на собесы не зовут. Сейчас учу питон и буду на два рынка искать работу (джаба/дата).
>>3492425 >бизнесу этого достаточно Не спорю. У большинства компаний объём данных такой, что можно на одной машине всё посчитать, никакие хадупосраки там не нужны. И орава дата инженеров и аналитиков для поддержки этого все тоже не нужна. А когда нужен отчёт в эксельке, и он делается не 20 секунд, а 10 часов, тогда и задумываются, те ли люди вообще занимаются этим. >буду на два рынка искать работу (джаба/дата) Джава в дате тоже нужна, лучше сразу туда иди, со спрингом хотя бы работать не придётся.
>>3492738 >Под ноутбуками ты имеешь ввиду что-то типа юпитера? Да. >все не так плохо у меня Если ты задумываешься "а как правильно?", то ты уже лучше 98% залётных через курсы аналитиков.
Привет, пишу на ГОвне месяцев 8. Можете скинуть какой-то репозиторий с GO-way'ным крудом? Хочу наши сервисы сделать более гошный/подспиздить бестпрактиз пока подглядываю в гайдлайны гугла
>>3493756 >Алсо, я правильно понимаю, что указателями лучше пользоваться пореже? Нет, стоит пользоваться ими почаще. У чела очень редкий кейс, хайлоад, причём хайлоад, который упирается в процессор, а не в сеть или бд. С вероятностью 99% ты никогда в жизни с его проблемами не столкнёшься, и стоит писать просто и удобно, а не оптимизировать то, что не нужно оптимизировать. Если станет нужно – спишешь себе пару недель на на этот эпик и представишь на перф ревью, когда будешь просить повышение.
>>3493756 Яндексоид - это диагноз нахуй. Литкодом ебут, деревья крутят, а потом выходят на работу и пишут лютую дичь. И это не джаваскрипт макака, это сишник. Зачем вместо айди хранить указатель на айди? Чтобы что? Пустое значение - бля да 0 это пустой значение для айди. Конечно, если жидко насрать указателями по миллионам структур, жц будет ебать цпу.
>>3493766 Ну будет у тебя в поле айди 0, значит всё, не задано. Случаев когда надо различать пустую строку и nil очень мало, как правило это всегда означает что значения нет.
>>3493775 Дохуя таких случаев, когда в документе должна присутствовать либо одна структура, либо другая (сведения об ИП или сведения о юрике). Либо одно поле, либо другое (госномер ТС или инвентарный номер трамвая). Ебанёшься перекладывать это без omitempty, особенно если присутствует XML, для которого не завезли omitzero, да и вся эта хуйня всё равно не помогает против вложений групп, когда в свойствах прописано xml:"group1>group2>group3", без указателей всю эту хуйню насоздаёт даже с omitempty, даже если в конце nil.
>>3493766 У них там не джейсоны и не хмли, у них внутрення хуйня. Взять 8 байт как указатель и записать туда ноли - это ок это литкодно, деревья крутятся кпи мутится. Взять те же 8 байт как число и записать туда ноли - это нет. Самое интересное, они потом убрали указатели и стали просто хранить числа, нахуя было делать через жопу.
>>3493760 >>3493761 Мне эту статью скинул старший товарищ смежник, выше и по грейду и по опыту в го/разработке/etc, в качестве аргумента к замечанию, что очень много указателей в структурах структуры, которые пихаются в бд, там много опциональных полей было, когда ревьюил мой код
Мамкины хацкеры и прочие элитарии призываются в тред.
Итак есть библиотека, в ней определен приватный тип >type constString string и функция >func DoSomething(str constString) мне нужно вызвать эту функцию. Я без проблем могу её вызвать с untyped string constant >DoSomething("abc"); Но никакую переменную типа string я туда передать не могу, потому что типы не совместимы. И кастануть явно к приватному типу - нельзя. Я нашел как через unsafe можно кастануть приватный тип к своему, но как кастануть стандартный тип к приватному, я не нашел.
Какие есть гайды/книжки по паттернам в голанке? Вот как head first patterns или банда четырех, только для голанка. Сейчас пришел писать на проект с голанком. Вижу, что многие на реддите пишут, что нахуй эти паттерны, в го нет ООП как в джаве и паттерны из жабы тащить сюда не стоит. Но в то же время у нас на работе один сенька постоянно носится с этими паттернами и в каждом код ревью попускает за то, что написано криво косо и без паттернов.
>>3496012 Вот полезные для го паттерны: https://github.com/tmrts/go-patterns А джавахуйню пусть оставит себе, конечно. Ещё могу посоветовать "100 ошибок go и как их избежать", полезно чтобы не писать криво-косо.
>>3496044 Лол, по твоей ссылке литерали джавахуйня из книжки четырех. Половину этого говна даже в джаве выбросили и заменили на DI, в гошке так вообще все нахуй не надо.
>>3496012 Ну самая база это конкарренси паттерны, это этот сайт https://go.dev/blog/pipelines или книжка concurrency in go. И то и другое морально устарело, но для базы сойдет. А так гоферы редко прям знают паттерны. Желательно знать структуру гошного проекта и кодстайл (effective go и гайд от убера). Банда четырех спокойно на голанк портируется, можешь читнуть, сам будешь своего доморощенного патернорожденного сеньора попускать. >>3496058 Может и не надо, но тогда ты скорее всего будешь эти паттерны переизобретать по ходу дела.
Сап! 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 флагом, то есть с него можно и читать, и писать.
>>3497265 Только что прочитал свой вопрос и пришла идея - а что если тупо при первой io.Copy, то есть записи в файл, каретка остаётся в конце файла, после записанного полезного текста, и уже при следующей попытки чтения, вместо начала файла io.Copy пытается прочитать с того самого места где и остановилась после записи, то есть в конце? Ебать я даун если оно так...
>>3497950 Мб они аналог джава дока замутят чтобы я наводясь на метод сразу видел секции с описанием параметров и возвращаемого значения, а не лез внутрь надеясь что создатель добавил это в свою груду неструктурированного текста над методом?
>>3498097 >В жисоне даты стандартным способом сериализуются Ровно до тех пор, пока кто-нибудь простую строку не положит. >Никогда не видел чтобы были даты типа "0" Тебя ждёт много открытий в этом мире.
>>3498236 >Ровно до тех пор, пока кто-нибудь простую строку не положит. Просто валилируешь данные и шлёшь нахуй, тех кто не в стандартном формате шлёт. Зуммеры вначале пиздели какой XML """тяжёлый""" , а потом начали тащить в JSON всё из XML.
Народ, если у кого есть, киньте, плиз, ссылку на почитать про то, что происходит при блокирующей операции в рамках GMP модели. И хорошо бы ещё, чтобы про саму модель там было по-подробнее написано.
Что это за хуйня, вы тут ебанутые что ли все? Кому в голову пришло, что использовать бектики не подвергающиеся интелисенсу и линтингу - это охуенная идея? Неужели это реально показалось лучшим вариантом чем чего-то вроде #json()/@json()?
>>3501950 Я не знаю их всех, но какой-нибудь json или validate выглядят довольно стандартными чтобы их можно было дополнять. Да что там, я только что минут 20 ебался с проблемой которая была вызвана тем, что я лишний пробел в этих тегах поставил. Это ли не тупость?
>>3501917 >для всякой серверной ебалы и прочего девопсинга, а не для сложной бизнес логики И в чём противоречие? Могут быть признаки подходящести Джава для проекта в неких случаях, но эти случаи не раскрываются фразой "сложная бизнес логика".
>>3501917 У нас на проекте сложная бизнес-логика, b2b с паутиной трёхсторонних договоров, всех нужно в жопу поцеловать. Гошка как раз оказалась заебись, новые хотелки реализуются за неделю. Да, костыли и да, воняет хуже двадцатилетней джавы, но кабаны довольны скоростью, а рефачить это говно на удивление не так и сложно, оно всё простое как палка.
>>3502038 Двачую. На гошке просто берешь и просто в лоб решаешь задачу, без десяти слоев абстракций над абстракциями. Поменяется логика - перепишем код, он простой и его просто понять. Поэтому го так любят опытные разработчики, пока мартышки дрочат на солид и патерны в джаве. Я в го пришел из сишарпа, с ужасом вспоминаю медиатр и ебаный ефкор.
>>3502269 А почему у меня, если я в твой пример добавил версию? А не работает потому-что либа кривая и поведение маршалинга и анмаршалинга разные.
Мне вот нужно взаимодействовать с легаси ide редактором, который пишет данные в определенном формате и я могу это распарсить, но записать в таком же виде не могу. Теперь придется либо на питоне делать, либо либу допиливать. Суперские новости для моего первого проекта на го.
На кой ляд нужны эти ваши енумы? Нашли из-за чего переживать. Вот реально чего не хватает, так это низкоуровневых манипуляций. Очень нужная фича для пиздец нагруженных приложений.
>>3502726 >Очень нужная фича для пиздец нагруженных приложений Обычно голанка достаточно. Всякие там unsafe и мемори арены есть. Если нужно какое-то low latency, то наверное стоит в сторону rust смотреть и другие языки без gc.
>>3502063 >Двачую. На гошке просто берешь и просто в лоб решаешь задачу, без десяти слоев абстракций над абстракциями. А что тебе мешает так же делать на других языках?
>>3502932 На жс быстренько можно только говна пожрать. Этот кал нихуя не простой и не быстрый в разработке, когда речь идёт о бэке, поддержке и рефакторинге. >>3497963
А нельзя её реализовать из-за ограничений дженериков. Вернее можно как отдельную функцию, а не метод, но это настолько убого, что даже авторы го решили не добавлять это в стандартную библиотеку.
>>3503070 >Какую тему не подними,везде в чем то го ущербен лол. Речь идёт о том, что если уж вы тащите концепции either monad из ФП, то обеспечьте и соответвующие выразительные средства в языке. А то хотим функции высшего порядка в языке с выразительностью кобола.
>>3503529 >А что же го?Трясуться добавить чего лишнего, а то скорость компиляции и выполнения просядет В языке важен баланс.
Если пихать всё, то получится шарп или питон, где на любой чих есть 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, то это тоже перебор.
>>3503971 >А не надо так делать,надо добавлять фишки по одной. А их и не добавляли сразу просто в какой-то момент до них дошло, что sql синтаксис очень ограничен.
Сап, антуаны. Я писал раньше на питухоне и рубях всякий серверный бэкенд (суммарно чуть меньше 2 лет).
Внезапно, мне сказали на работе, что пора перекатываться в другой проект и там будет голанг.
Посоветуй, как правильно двигаться в го? Я прошёлся по go.dev/tour, примерно понял синтаксис (очень слабо).
Сейчас думаю накостылить сервис на Gin какой-нибудь тестовый
Посоветуйте, как вкатиться с учётом того, что опыт только динамического петуха. Может, материалы какие или есть специально для такого подхода туторы? Англ у меня ок, можно (и даже лучше) зарубежные источники
>>3504431 всё так, не спорю, но мне просто ПРИЯТНО писать на говне на работе пиздец я ебал там такой пиздец 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к
>>3505051 я ебу что такое srp? ради собеса запомнил что КЛАСС ДОЛЖЕН ИМЕТЬ ОДНУ ПРИЧИНУ ДЛЯ ИЗМЕНЕНИЯ я честно не понимаю что это значит и интерпретирую как все, т.е.: у класса должна быть одна зона ответственности
>>3505088 Объект должен иметь одно назначение, одного заказчика, один смысл для существования. Пример из жизни: мы собираем и кидаем одному из клиентов сложный отчётец. Другой узнал и захотел такой же. Я заставил коллегу полностью дуплицировать всю логику, и домен, и юзкейс. Не прошло и недели после раскатки, как от второго пошли хотелки что-то поменять в этом отчёте.
>>3505146 Опытные разработчики всегда копируют код отчетов, интеграций и подобной залупы. Завтра логика поменяется, ты полезешь править один отчет и сломаешь к хуям еще пять. Солид придумали долбоебы, которые сами код не писали, это инфоцигане 80 уровня.
>Ну вот, наконец-то. Ты отвлёкся от фронтенд-танцев с fetch и вспомнил, что Go существует, и у него нет даже нормального map() для слайсов. Всё правильно, Go — это язык, который говорит: “Сделай руками, как в 70-х, и не ной.”
>>3505691 Каково тебе осознавать, что го такой ущербный и примитивный, но платят гоферам всё равно больше, чем тебе? (если у тебя вообще работа есть, конечно)
>>3506408 >map, reduce, filter Пусть это нечитабельное говно остается в твоем сраном джаваскрипте. Голенг - язык для профессионалов, которым никому ничего доказывать не надо. Пока джаваскрипт макаки выебываются, кто напишет длиннее соплю из монад, на голенге пишут простой код, который просто решает задачу.
>>3505759 Работаю сейчас на голанк проекте с примерно такой хуйней, которую ты тут написал. Тимлид зачем-то решил, что надо нахуярить десяток слоев абстракций, нахуя пока не понятно, но видимо задел на будущее. Хотя вполне можно было обойтись обычным контроллер-сервис-репозиторий, но он решил сервисный слой еще на 3 слоя разбить.
>>3506985 >AbstractFactoryBean Так писали 30 лет назад. Погугли, в каком году вышла книжка про паттерны от банды четырех. В джаве эта хуйня до сих пор жива потому, что на джаве написаны гигатонны легаси говна. У голанга другая философия родом из си. Тут просто берут и просто в лоб решают задачу, а солидом вытирают задницу.
Коллеги, подскажите на каком уровне го разработчик должен владеть кафкой? Обязан ли я знать все ее настройки, тонкости реализации и то как оно под капотом устроено или оно в работе нахуй не нужно?
>>3507173 Что значит доооооолжен владеть блять? Ты дооооооолжен владеть ровно на том уровне, который требуется на проекте. Если проект требует скурпулёзного знания каждой миллипиздрюлины, то будь добр учи каждую миллипиздрюлину. Если проект НЕ требует таких знаний, то значит и не нужно. Но в твоих же интересах знать БОЛЬШЕ. Что может самое страшное произойти если не выучишь? Тебе дадут некое задание, которое ты не выполнишь и начнёшь оправдываться, но это никого не ебёт.
Правильно ли я понял, что в го сейчас вообще не вкатиться с нуля? Раньше было два варианта: либо ты студентик и пробиваешься на стажку, либл крутишь опыт. Но в первом случае ты хуй попадёшь, потому что самих стажировок на го мало и нет смысла подаваться если ты не из топ 3 вуза, а во втором случае просто попросят трудовую и пиздец. Вкат закрыт, получается?
>>3507255 Да на всех стеках везде стажировки это 0,1% всех вакансий. Ты будешь искать работу до пенсии, если откликаться только на стажировку. Стажировки есть только в очень узких нишах, где присутствует кадровый голод. Какой-нибудь там блять "abap-программист". Golang таковой не является. Ни С++, ни C#, ни Java, ни Python, ни ещё какой известный язык не является узкой нишей. Узкой нишей является Julia, возможно какой-нибудь R или Tableau. Какой нахуй смысл учить людей golang с нуля, если на рынке и так уже дохера готовых специалистов?
>>3508090 В цикле открываю amqp соединение и читаю сообщение, если соединение обрывается, то в конце цикла жду по таймауту и переподключаюсь Выхожу из из цикла в 5 разных местах, ебало представили каждый раз писать перед continue conn.Close, channel.Close??
>>3507157 >Тут просто берут и просто в лоб решают задачу, а солидом вытирают задницу Ты не понимаешь солид. Там только л можно выкинуть, т.к. это ближе к ооп полиморфизму, остальные принципы так же можно и нужно применять и в го.
>>3508579 К наследованию это говно ближе. А лучше расскажи, как ты применяешь в гошке опен клоз, как понимаешь сингл респонсибилити и реально ли полезен интерфейс сегрегейшн.
>>3508659 слушаю твои предложения как написать простой handler который подключается к брокеру и слушает из очереди сообщения соединение\канал теряется => нужно пытаться переподключиться
>>3508711 Очевидно, разделить логику подключения и логику обработки. Вычитываешь данные, оборвался конекшен - верни err и пусть там наверху разбираются и переподключаются. Голенг твой первый язык, что ли?
>>3508721 > Ты не правильно работаешь с amqp > Описывает тоже самое что я делаю, просто размазал логику из 10 строчек на 3 функции, о чем я и написал в самом первом посте
>>3508711 Почему у тебя хендлер подключается к брокеру? Ты ебанутый? Может у тебя хендлер ещё и в бд пишет? Какова хуя такие еюанаты в мою кошечку выкатились
>>3509082 Открываем оф доку и читаем 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. как и во многих других ЯП, единственное, в свифте и зиге дефер привязывается к области видимости, а не к функции
>>3508885 Какова хуя хендлер ответственный за подключения? Суть хендлера получить готовый проверенный конекшен и слушать с него. А не админить всю эту залупу с конектамт и таймаутами
>>3510022 во первых ты из тех долбоебов которые визжат что паниками нельзя пользоваться? во вторых я что ли говорю в тупую скопипастить? я показал как лично я делаю - наоборот свою реализацию поощряю а то останешься тупым быдлом копипастя из гитхаба, стековерфлоу и чатгпт
>>3510047 >ты из тех долбоебов которые визжат что паниками нельзя пользоваться? господи, хоть бы не писал ничего жизнено важного или чем я пользуюсь напрямую
>я что ли говорю в тупую скопипастить? так там всё говно, я же не лабы пишу, в проде так писать нельзя
Почему здесь находятся те, кто коннекты внутри хендлера прописывает? Мало того, так еще и спорят же, ебанутые, с тем что это неправильно и так не делают. Ебало представили — на каждый реквест к базе коннектится? Не, это тролли 100%, не могут настолько идиоты существовать.
>>3510022 Использование паник/os.Exit() на самом нижнем уровне аппа это более чем нормальная практике и нужна чтобы например не стартовать процесс/воркер, если не удалось инциализовать какую то критикал штуку. Открывай любую популярную либу/пример сервиса и убеждайся в этом.
>>3510548 > на каждый реквест к базе коннектится >>3508891 > это не http хэндлер бывает, в следующий раз внимательнее читай тред, конекчусь один раз при старте приложения
>Использование паник/os.Exit() на самом нижнем уровне аппа это более чем нормальная практике АХАХАХАХААХАХ
> не стартовать процесс/воркер, если не удалось инциализовать какую то критикал штуку Ахуенно ты на нижнем уровне решил что кто то там сверху не будет воркер стартовать и у него всё приложение нахуй крашнется потому что тебе снизу показалось что паника это хорошая идея
>Открывай любую популярную либу/пример сервиса и убеждайся в этом. Ну покажи мне пример такой либы, где у тебя на нижнем уровне приложение ПАНИКУЕТ
>panic(err) Вообще не понял доеба. Нахуя мне поднятый сервис/воркер, если он не смог подрубится к источнику данных и не может выполнять свои функции. Лучше я на деплое упаду и пойду искать причину падения, чем у меня в продакшене начнет что то проебется и в очередь толпа набежит
>Нахуя мне поднятый сервис/воркер, если он не смог подрубится к источнику данных и не может выполнять свои функции Ну правильно, возникла проблема в сети на 5 секунд, весь прод падает, нахуй переподключаться
>Лучше я на деплое упаду и пойду искать причину падения, чем у меня в продакшене начнет что то проебется и в очередь толпа набежит Да, а паники на проде ловить если что будет вобще кайф ловить
>>3510564 Ты тролль или как? Ты понимаешь значение слова "Деплой"
энивей, детект долбаеба, который думает что паника в рантайме == падение сервиса. Тебе разработчики нахуя рекавер дали? У тебя если конекшен отъебнуло, все равно реконектится надо
>>3510572 >который думает что паника в рантайме == падение сервиса ты код то глядел хоть долбоёб? он в горутине паникует, без каких либо рекаверов
> Тебе разработчики нахуя рекавер дали? Чтобы приложение не падало в критических случаях, а не потому что Пуков не осилил обработку ошибок Не должно у тебя приложение паниковать при подключениям к чему либо
>У тебя если конекшен отъебнуло, все равно реконектится надо Ахуенно, и как из этого следует что у тебя приложение паникует, а не переподключается?
>>3510580 >Не должно у тебя приложение паниковать при подключениям к чему либо Отлично. Ты деплоишь сервис, который к бд не подруюился, не запаниковал. Поднялся. Он тебе зелёненьким на дешборде отсвечивает, все в порядке. Вот только юзеры почему то авторизоваться не могут. Боже, с какими долбаебами я на одном языке пишу, лишь бы с такими в одной команде не оказаться
>>3510594 >сервис, который к бд не подруюился >Он тебе зелёненьким на дешборде отсвечивает в голове не возникает проблема что при проебе подключений к бд сервис должен что то в дашбор отправлять? > Вот только юзеры почему то авторизоваться не могут. и у вас дашборда нихуя про это не скажет? вы вобще как следите за работой сервисов кроме как галочки работе или упал?
>Ты деплоишь сервис Ну давай про деплой поговорим, как тебе кажется, хорошая ли идея при деплои задавть отношения порядка? В твоем случае получается что нужно сначала поднять бд, потом дождаться когда поднимется, потом запускать сервисы? Надеюсь догадался между сервисами такое отношение порядка не выстраивать?
У тебя приложение должно пытаться переподключиться, это лучше чем мертвое приложение, а то что ты не можешь узнать статус сервиса это определенно не вина паник
>>3510609 >>3510609 > func main > func main > tests > examples > validators Ты бы хоть вчитывался
>>3510614 В чем проблема при отъебе конекшена запаниковать и подняться до ближайшего рекавера и там обработать? Ещё раз, дебик, где я тебе сказал что падать надо в рантайме ? В рантайме ты ловишь рекавером и обрабатываешь
>>3510623 >В чем проблема при отъебе конекшена запаниковать и подняться до ближайшего рекавера и там обработать? В том что паника не для этого создана, для проброса ОШИБОК есть ERROR
>>3510623 >https://github.com/kubernetes/kubernetes/blob/master/pkg/apis/rbac/v1/helpers.go#L64 > RuleOrDie() Вот это хорошая практика которая явно говорит пользователю о том что ниже лежайший код может запаниковать, при этом предоставив пользователю просто Rule() с ошибкой, ничего против такого не имею А вот если бы Rule() паниковал не возвращая никакой ошибки это пиздец
Так что этот пример вобще никак не противоречит тому что я сказал, если ты будешь паники в таком же ключе делать я не против
>>3510614 >Надеюсь догадался между сервисами такое отношение порядка не выстраивать? Про initContainers ты конечно же не слышал. В вашей конторке все ещё башиком деплоят ??
>Ахуенно ты на нижнем уровне решил что кто то там сверху не будет воркер стартовать
У тебя в мэйне не получилось подключиться к БД или прочитать критикал данные из конфига которые нужны для инициализации остальных компонент приложения. Нормальные люди в этом случае пишут os.Exit() или panic(), и приложение не запускается.
Что предлагаешь делать ты, малолетний хуесос, не имеющий отношения к программированию?
Нормальные люди и вправду делают это всё в main, только никто main низкоуровневым не называет, main это буквально самый высокий уровень, который всё запускает
>>3510614 >У тебя приложение должно пытаться переподключиться, это лучше чем мертвое приложение, а то что ты не можешь узнать статус сервиса это определенно не вина паник
Ебать вот это конечно угар, че за тупорылый еблан тут сидит.
То что у тебя приложение при запуске не смогло подключиться к БД(например) и не запустилось, не означает что приложение не будет пытаться перезапускаться, клоун.
У тебя в ci/cd настроены автоматические редеплои на такие штуки(если ты конечно не полный мудак, в чем есть сомнение) Более того в рамках условного подключения к БД у тебя могут быть ретраи на коннекты в рамках самого аппа - не подключился - попробовал еще N раз - все еще не получилось - os.Exit() - запускается редеплой. Например, kuber по дефолту при CrashLoopBackOff редеплоит под.
В это же время чел который это деплоил видит проблму, понимает что дело в неудачных коннектах к БД и идет к инфре/dbaas. Вот так выглядит нормальный цикл деплоя и паники/экзиты при запуске здесь более чем уместны и так делают все.
>>3510695 > У тебя в ci/cd настроены автоматические редеплои на такие штуки литературно >>3510620 > добавить в мейн логику переподключения? да ну нах, ci cd сам всё подымет, чо мне утруждать себя
> приложение не будет пытаться перезапускаться, клоун приложение сами себя перезапускают?...
> у тебя могут быть ретраи на коннекты в рамках самого аппа - не подключился - попробовал еще N раз - все еще не получилось - os.Exit() - запускается редеплой Часть логики у нас в ci cd, часть в main, хорошая практика
> В это же время чел который это деплоил видит проблму, понимает что дело в неудачных коннектах к БД и идет к инфре/dbaas. вот каким образом это в итоге противоречит тому что я написал?
> паники/экзиты при запуске здесь более чем уместны и где я говорил обратное? уместны если у тебя приложение находиться в критическом состоянии в котором оно не может дальше функционировать, то что ты не смог к бд подключиться, а вместо переподключение, ты просто в докере бесконечно крутишься не уместно
>>3510716 > добавить в мейн логику переподключения? >у тебя могут быть ретраи на коннекты в рамках самого аппа - не подключился - попробовал еще N раз - все еще не получилось - os.Exit() - запускается редеплой.
Ебанько не перестает под себя серить. И как ты реализуешь логику переподключения полностью на стороне аппа? Бесконечно переподключаться к бд, при этом само приложение у тебя будет жить?)
> да ну нах, ci cd сам всё подымет, чо мне утруждать себя
>Шиз буквально отрицает общепринятый подход с редеплоем пода
>вот каким образом это в итоге противоречит тому что я написал?
Тем, что ты сначала визжал про то что нельзя паниковать. Когда в итоге выяснилось что можно, ты начал визжать про то что редеплой на cicd это ПЛОХАЯ ПРАКТИКА.
>а вместо переподключение, ты просто в докере бесконечно крутишься не уместно
У тебя при этом живет рабочий релиз и доступность аппа для пользователя сохраняется. Ты буквально предлагаешь: давайте не делать редеплой на cicd упавшего пода, а переложим логику реконнекта в main, чтобы у нас бесконечно ретраился конект к БД, приложение не падало и тем самым крутился по факту нерабочий релиз.
>>3510730 шиз, таблетки ты там от тряски совсем читать рузучился, или просто начал сам с собой разговаривать?
> нельзя паниковать можно, только из мейна либо как было выше RuleOrDie() паниковать из низкоуровневого кода нельзя (main им не является)
> не нужно делать редеплой нужно, если у тебя приложение упало\завершилось приложение завершается в критической ситуации из которой оно не может восстановиться самостоятельно
нет необходимого конфигурационного файла - завершай программу какая то часть системы находиться в невалидном состоянии - завершай программу тебе лень написать переподключение - не завершай программу
> Бесконечно переподключаться к бд, при этом само приложение у тебя будет жить?) именно так
если в ответ опять какой то шизойдный бред из свои головы, а не на мои посты, то максимум что отвечу "шиз таблетки"
>>3510716 >Часть логики у нас в ci cd, часть в main, хорошая практика
Так и за что ты тогда усираешься? Да, это хорошая практика. И практика с просто ретраями в кубере все еще хорошая. Почему? Потому что твои 5 ретраев коннекта в аппе к БД как правило сфейлятся в 99% случаев, потому что в основном у тебя такие проблемы возникают в случае какой-то инфровой хуйни, которую бесполезно ретраить. А пытающийся подняться под в кубере после рестартов это не та проблема, которую надо бежать и чинить. Ну сделал ты ретраи в аппе - у тебя приложуха будет падать не сразу, но все еще падать - и сразу рестартиться, просто немного реже.
Это просто заеб который нет смысла реализовывать. В твоем мейне у тебя может быть 30 must-подключений к разным залупам, и еще 10 чтений каких нибудь must-конфигов. Все это ты предлагаешь обкладывать ретраями? За это время можно тасок из бэклога лучше поделать.
>>3510756 крутись в мейне тогда, мне похуй мне тебе как маленькому каждый шаг нужно показывать?
>>3510745 >проблемы возникают в случае какой-то инфровой хуйни, которую бесполезно ретраить в такой ситуации вобще похуям где крутиться все еще единственная проблема что если у вас в сервисах отъебывает обязательно соединение, то вы это по только по 500, или логам, или статусу краша контейнера понимаете, если бы у вас эта проблема была решена, крутиться в мейне было бы наиболее удобным решением
Я всё ещё не понимаю. Нахуя крутить ретраи в мейне, а не в кубере. Если с отъебнувшис конектом у тебя все равно аппка не выполняет свои функциональные обязанности и с очереди нихуя не читает.
>>>3510780 каждый делает то что должен, если тебе нужно реализовать переподключением в сервисе, за это должен отвечать сервис, ни кубер, ни пуков, ни ос
ты вот в хэндлеры\репозитории бизнес логику не тащишь? ведь в некоторых случаях тоже никакой разницы
Ну я еще раз поздравляю, ты только что расписался в том, что твоя шизоидная идея приводит к 500кам на проде у юзеров, которых можно было избежать, и тебе это ОК.
>в такой ситуации вобще похуям где крутиться
Нет, не похуям. В случае крешлупа в кубере у тебя старый релиз продолжает работать как и до этого.
>В случае крешлупа в кубере у тебя старый релиз продолжает работать как и до этого никак иначе старый релиз кубер попросить оставить нельзя спасибо крешлуп что держишь прод этого анона в строю, если бы не ты...
>>3510816 >этот бессильный пердеж ребенка посмотревшего 2 ролика инфоцыган, и поверившего, что он понимает бэкенд
С этим уже поняли, а что то по факту будет, чепушило?
Хотя я боюсь уже ничего не переплюнет что твое ахуенное предложение — бесконечный ретрай коннекта к бд и как следствие — бесполезный висящий под с аппом, который не работает и шлет тебя нахуй с 500, порождая кучу спт.
В прочем школьнику даже мозгов не хватило на хотя бы ливнес/рединес пробы, хотя и даже с ними этот подход максимально мудацкий вместо простого завершения аппа из-за невозможности стартануть все зависимости.
>>3510855 > ээээ а как мне старый прод активным держать если какая то хня в поде случилась, ээээ, я только рестартовать умею ээээ > ээээ а как мне написать реконнект, я не умею, это сложно, а что если 500 полетят, я же дегенерат я не знаю что делать
> Пуков прикрути хук при неудачном коннекте к этому конкретному сервису при запуске после 10 ретраев с 10 секундным таймайутом > эм пук пук среньк извините, я только умею os.Exit(-1), а дальше я всё
>>3510872 >>3510877 >ну давай, напиши мне ретрай политику на каждую из 30 зависимостей в 500 сервисах, которая сэкономит тебе НИХУЯ >эээ блэээ штооо мине на курсах гаварылы что у миня толка 1 бд в прилажении и всиооо што такова то ЗАТО ПОД НЕ РЕСТАРТИТСА ЫЫЫ
>>3510872 >Пердеж, ты зачем такой код написал, что у тебя под с нерабочей БД в прод выкатился? Ты в курсе что у нас за 5 минут уже 1к обращений набежало? >ыыыы ну и штооо я жи на дашборди всиоо увидил и па логам обнаружыл праблему и откатиил >Пердеж, но ты же мог просто изначально написать так, что у тебя сервис просто не стартанет? Ты на ровном месте создал деградацию с фоном спт >ыыыы ыди нахуи блеа
>>3510883 > да тимлид, да всмысле я мудак, это же ничего не сэкономит, не буду эту тасочку делать!! не нужен вам этот хук!!!! > вы видели сколько там зависимостей! это же сколько раз мне придется ctrl-c ctrl-v нажимать????? всмысле я долбоёб, всмысле просто написать абстракцию и пере использовать код???? ряяяяяяяяя
>>3510885 > под с нерабочей БД > выкатывается в прод, еще и обрабатывает запросы блять я не верю что такое возможно, скажи что ты шутишь
а стоп, я только сейчас понял, даун чтоли хочет стартовать сервер, даже при том что не смог подключиться к бд, при этом параллельно ее работе сидеть переподключаться? сидя ловя с довольным ебалом 500?
если да, то я просто бездарно потратил время на этого дауна
>>3510886 >мудозвон, ты зачем в бесконечном цикле коннект к базе ретраишь? >эээ ыыы ну ета штоби подик в кубере не крешлупился ВО!
>>3510897 >хочет стартовать сервер, даже при том что не смог подключиться к бд, при этом параллельно ее работе сидеть переподключаться?
Это буквально ТВОЕ предложение несколькими постами выше, скотина безмозглое. Я тебе пидорасу задал вопрос - ты ответил да, приложуха будет жить с неподключенной бд и бесконечно тыкаться в нее коннектом.
А когда я взял и рационализировал твою хуйню до уровня:
>Более того в рамках условного подключения к БД у тебя могут быть ретраи на коннекты в рамках самого аппа - не подключился - попробовал еще N раз - все еще не получилось - os.Exit() - запускается редеплой.
Ты взял и начал пиздеть "да да это я придумал я это и имел в виду"
Ты просто пиздабол, который еще и не понимает нихуя о чем говорит.
Но на деле все проще и >Более того в рамках условного подключения к БД у тебя могут быть ретраи на коннекты в рамках самого аппа
Такой хуйней на практике никто не занимается, и дальше обычного завершения аппа никто не идет. Потому что если у тебя настолько частая проблема что твое приложение не может подключиться к базе и тебе надо ретраить эту хуйню чтобы не дай бох куберу не стало плохо от перезапуска пода, то у тебя говно в штанах руткоз с dbaas и инфрой, причем такой, что никакие обоссаные ретраи не сделают тебе лучше.
>>3510951 У меня только вопрос какой мудак тебя научил в компьютерной программе, которая представляет собой микросервис, запускаемый в кубере, писать бесконечное переподключение к бд. Так чисто, понять, откуда ты вылез.
>>3510958 я как понимаю уже понял где обосрался и решил с темы свернуть? ну давай еще на один вопрос отвечу
потому что твой микросервис должен блять работать, если нет подключения к бд, значит нужно сидеть и ждать пока оно появиться, от того что ты завершишь программу, никому лучше не станет
Я хз понял ли ты, где ты обосрался, но могу еще раз напомнить - там где ты предлагал затаскивать нерелейтед хуйню в микросервис, с учетом что как минимум так никто не делает, а как максимум это не дает ничего.
> твой микросервис должен блять работать, если нет подключения к бд
У тебя микросервис отвечает за регистрацию пополнений счета например. Без базы данных твой микросервис не может выполнять свое предназначение. То есть он НЕ работает. Зачем ты, ебливый пидарас, оставляешь его бесконечно переподключаться, оставляя процесс работать? Можешь не отвечать, я уже понял, что ты мудак.
В догонку. Допустим у тебя твоя хуйня запускается вместе с аргументами, в которых указываются параметры коннекта. И какой-то мудак запустил с неправильными параметрами
Как итог - твоя залупа будет бесконечно переподключаться с невалидным говном, так никогда и не подключившись.
Или еще круче - твоя хуйня запускается, получает параметры из динамического внешнего конфига и начинает подключение. По какой-то причине в этот момент там лежали не те параметры и твоя хуйня опять долбится в базу с невалидным говном.
http сервер автоматом создает горутины на каждый запрос. А вот обработчик по умолчанию обрабатывает запросы последовательно.Получается к примеру 10к/сек запросов пришло,то они все тупо встанут в очередь к 1 обработчику на одном! ядре?
>>3510982 >>3510985 приложение в критическом состоянии: не можем подключиться к базе данных варианты развития: 1) офнуть приложение, надеятся что кто то из вне его перезапустит, и когда то в какой то момент наверное мы снова подключимся, при каждом перезапуске инициализировать приложение с нуля 2) пытаться получить это подключение в цикле (с n количеством ошибок, таймаутом и чем твоей душе угодно), возможно оно появиться позже, а сейчас бд просто не доступна (желательно уведомлять инфрастуктуру о своем состоянии, если ее нет, то хотя бы в логи пукать)
если тебе не понятно почему первый вариант говно, то я тут уже тебе не помогу
проблемы второго варианта: ты не можешь понять что происходит с запущенным приложением решение: прикрутить нормальный дашборд для сервисов, в котором можно было бы просматривать его состояние, его доступность к необходимым подключениям, если ты это можешь узнать только по логам контейнера, земля тебе пухом и твоей конторке
>>3510994 >офнуть приложение, надеятся что кто то из вне его перезапустит
Не кто-то а система оркестрации контейнеров, в которых у тебя микросервисы. Это настроено по дефолту и просто работает.
>пытаться получить это подключение в цикле (с n количеством ошибок, таймаутом и чем твоей душе угодно)
Не пизди, выше ты писал про бесконечный реконнект. Про n переподключений и падение писал тебе я вот здесь >>3510695, и ты просто повторил.
В целом если обобщить, то если у тебя существует редеплой пода при падении, то можно нихуя не делать. Если у тебя нет редеплоя пода, и ты вместо этого накрутил ретраи подключения, то если ты забыл поддержать эту механику для какой-то другой ключевой зависимости и упал, то твой апп просто не стартанет заново.
Повторяю, ты можешь обмазаться и редеплоем и ретраями одновременно, но зачастую это ненужно и не несет никакого выигрыша(под будет рестартовать не сразу а через 5 попыток неуспешного реконекта)
>прикрутить нормальный дашборд
Вообще не имеет отношения к обсуждаемому вопросу. Да, это офк должно быть по умолчанию, но к теме не относится.
>>3511048 >Не кто-то а система оркестрации контейнеров приложение обязано знать кто и откуда его запускает?
>Не пизди, выше ты писал про бесконечный реконнект. Про n переподключений и падение писал тебе я вот здесь чел, делай как хочешь, в том что и цель что ты в мейне можешь решать каким способом тебе реконектиться, и только он это должен решать кубер всё что может это снова и снова запускать можно конечно и в кубере настроить, но это уже попахивает извращением и да, разрешаю тебе в мейне вечно не крутиться
мы опять свели всё к тому что ты со мной согласен, но просто напридумывал за меня тезисы?
>>3511058 Чел мне что интересно, ты контейнер без проб стартуешь? Если у тебя на условном mustLoad отъеюыаает конекшен (бд недоступна), то до условного listenAndServe ты в мейне не дойдешь только не говори, что ты сначала запускаешь сервер, а потом инитишб конфиги и подключения . Тебе куюер просто убьет Деплой по таймауту, потому что апка не поднялась
>>3511058 >приложение обязано знать кто и откуда его запускает?
Нет, но это не проблема. Твоя ответственность это организовать под аппку среду запуска. Это будет или настроенный кубер, или самописное баш-говно. Да хоть индус который будет руками залупу перезапускать.
Вопрос в том что в отсутствии такой среды бесполезно извращаться и городить какие то реконекты ко всем зависимостям.
>мы опять свели всё к тому что ты со мной согласен, но просто напридумывал за меня тезисы?
Так можно отмотать ветку и посмотреть с чего все пошло. А именно с твоих тейков про то что паниковать нельзя, и какого то кринжа про коннект в хендлере. Как видишь с тебя кринжануло пол треда. Уж не знаю с чем это связано - с тем что ты просто плохо свои мысли выражаешь или с тем что осознал свою ошибку и вовремя переобулся под общепринятые подходы в этих вопросах.
>>3511085 Ну так там буквально тобой написаны долбоебские говнотейки которые были каждым тут обоссаны по триста раз.
>Уж не знаю с чем это связано - с тем что ты просто плохо свои мысли выражаешь или с тем что осознал свою ошибку и вовремя переобулся под общепринятые подходы в этих вопросах.
>>3511108 Хз если ты с первого раза не смог прочитать выше с цитатами и квотами постов, в каких местах ты нес нерелейтед хуйню, то дальше бессмысленно продолжать. Отдохни лучше, а то перегрелся.
>>3511108 Шиз, ты мне ответишь ? Что твой говно сервис будет на хелсчек возвращать, когда конект отъебнул и ты крутишься в мейне, пытаясь его восстановить
>>3511261 Шизики блять еюанутые. Вы тут дрочите свою стань с реконектом к базе при деплое/рантайме. И не можете внятно сказать - что будет у вас возвращать хелсчек? если он возвращает 200 - вы добавь, какова хуя первая арка возвращает 200 Если 500 - то нахуя в рантайме продолжится с реконектом и держать по сути мертвую поду в кубере и пускать на нее трафик. Дегенераты, блять. Походу пора их шишечки вкатываться, раз появился риск, что подобных дебиков хрюшки приведут на смотрины
>>3511185 >>3511261 Азаза сука, пиздец это эталонный аутяга Долбоеба по 500 раз разъебали и обоссали, а он все еще просит чтоб на него продолжали ссать
Мерзость подзалупная, срыгалидзе оформи, не позорь борду своим 60iq
>>3511277 > Если 500 - то нахуя в рантайме продолжится с реконектом и держать по сути мертвую поду в кубере и пускать на нее трафик ты понимаешь что ты дегенерат по 2 кругу идешь?)
>>3511292 > разьебали и обосали после того как просьбы показать где, неожиданно анон пропадает, и начинает спрашивать другие тупые вопросы
>>3511322 >>3511325 >Бесконечно переподключаться к бд, при этом само приложение у тебя будет жить?)
Внимание, ответ бестолкового уебана:
>именно так
То есть буквально расписался в том, что он некомпетентный выблядок не писавший код никогда.
Затем мною было написано:
>Более того в рамках условного подключения к БД у тебя могут быть ретраи на коннекты в рамках самого аппа - не подключился - попробовал еще N раз - все еще не получилось - os.Exit() - запускается редеплой.
Бестолковый уебан осознал, что ранее спизданул хуйню и зацепился за высказанный мной способ, якобы это он имел в виду, и просто повторил:
>2) пытаться получить это подключение в цикле (с n количеством ошибок, таймаутом и чем твоей душе угодно)
За что был пойман и с позором еще раз обоссан. После чего уебан решил, что это все придумали, на что все гринтексты и квоты ему показали здесь >>3511048 и здесь >>3510932
После чего ребенок начал выть сильнее и судорожно все отрицать.
>объяснять что такое приложение >с незнающего долбоеба рофлили, а он такой "ДА Я РИАЛЬНА ТУТ ОБЪЯСНЯЛ ВАМ"
>>3511342 >Приложение живое >У тебя микросервис отвечает за регистрацию пополнений счета например. Без базы данных твой микросервис не может выполнять свое предназначение. То есть он НЕ работает. Зачем ты, ебливый пидарас, оставляешь его бесконечно переподключаться, оставляя процесс работать? Можешь не отвечать, я уже понял, что ты мудак. >Допустим у тебя твоя хуйня запускается вместе с аргументами, в которых указываются параметры коннекта. И какой-то мудак запустил с неправильными параметрами
Как итог - твоя залупа будет бесконечно переподключаться с невалидным говном, так никогда и не подключившись.
Вот и я хз почему ты читаешь только жопой и тебя из раза в раз надо тыкать мордой в текст, чтобы ты понял, что твой вариант — говно.
>>3511356 > Ой ну я написал живое, но имел ввиду другое ты чо не понял что у меня в голове твориться > В итоге сидел с горящей жопой доказывал что сам и придумал Что и требовалось доказать
>>3511340 > зацепился за высказанный мной способ, якобы это он имел в виду Так якобы или я это изначально и имел ввиду?
>>3511359 >дурачок, зачем тебе работающий под с микросервисом который не подключился к бд и не может выполнять свои задачи? >капающая слюна с подбородка >дурачок, если апп запустить с -host=228 то он никогда не подключится и повиснет так как ты предлагаешь бесконечный реконект >обезъяна в голове ударила в барабанные тарелки
Другого и не ждал.
>я это изначально и имел ввиду
То что ты изначально имел в виду я выделил в позапрошлом посте, что ты и подтвердил фразой "именно так". А имел в виду ты говнистый вариант который не выдерживает никакой критики.
>>3511365 Я бы наоборот в шапке оставил этого мелкобуквенного долбоеба, не умеющего пользваться дефером, паниками и настроить редеплой своего говнокода, обложив рединес пробами.
>>3511371 >дурачок, зачем тебе работающий под с микросервисом который не подключился к бд и не может выполнять свои задачи? >капающая слюна с подбородка
Оказалось, чтобы поставить долбоеба в тупик, достаточно вот такой очевидной даже школьнику залепухой.
>>3511374 Вот уже пошли вопросики близкие к твоему уровню iq. Но давай я тебя просвящу — нет, у тебя просто не будет активного и бесполезного пода в деплойменте.
>дурачок, зачем тебе работающий под с микросервисом который не подключился к бд и не может выполнять свои задачи? >капающая слюна с подбородка
>>3511381 >коннекта к бд нет, но под активен и с точки зрения билд системы все ок >надо потратить время чтобы убедиться что оказывается у тебя не стартанула зависимость
Никакого щелчка в голове не появились до сих пор?
>если появиться конекшен >дурачок, если апп запустить с -host=228 то он никогда не подключится и повиснет так как ты предлагаешь бесконечный реконект
Ты типо решил наглядно показать свою хуйню с бесконечным повторением бесполезного действия?)
>>3511385 > с точки зрения билд системы все ок Какое отношение билд система к подключению к бд в рантайме имеет?)
> надо потратить время чтобы убедиться что оказывается у тебя не стартанула зависимость Вместо дашборда узнаем статус сервисов из логов?) Ну тогда да, если для тебя это проблема, и вам сложно узнать текущее состояние система то такое будет сложно сделать, легче тяп ляп
> ,если апп запустить с -host=228 то он никогда не подключится и повиснет так как ты предлагаешь бесконечный реконект Именно так, приложение должно знать как ему хэндлить такую ситуацию, логику можно спокойно в конфиги перенести Опять таки, если для тебя проблема узнать о состоянии сервиса, то проблема не в цикле переподлключения
>>3511387 У тебя задача задеплоить свою хуйню, ты поставил деплой, увидел что под запустился. Но это не гарантирует что твой сервис обрабатывает платежи, так как получил бесконечный реконнект с -host=228 который до тебя указал в сборке какой-то мудак. Это просто создает мнимое ощущение успеха, которого можно было избежать.
>легче тяп ляп
Конечно легче, только это не тяп ляп. Ты нажал кнопочку деплоя и вместо активного пода увидел красный кубик и "exit code: 1. failed to connect to db" и прогресс бар деплоя начал повторно крутиться. Итого ты моментально понял что не запустилось и почему не запустилось. То есть тебе не нужно даже что-то идти и узнавать о сервисе, у тебя он по факту не запускается сразу.
>>3511389 > Но это не гарантирует что твой сервис обрабатывает платежи Не гарантирует, для такого есть способы узнать о конкретном состоянии сервиса прямо из дашборда, не просто галочка запущен или нет
> увидел красный кубик и "exit code: 1. failed to connect to db" > не нужно даже что-то идти и узнавать о сервисе Классно ты не пошел и не узнавал о статусе сервиса