Go или Golang — компилируемый язык программирования от создателей таких шедевров, как UTF–8, язык С, UNIX, Plan9 и других. Go поддерживает типобезопасность, имеет богатую и универсальную стандартную библиотеку и инновационные семантики одновременности: все то, что мы в индустрии называем concurrency и parallelism. На сегодня язык Golang является маяком стабильности, прагматичности, де-факто представляет из себя стандарт в мире бэкенд–микросервисов и серверного оркестрирования.
Пацаны, почему на ваш го так мало вакансий? Щас миддлогребу на питоне, от более старших пацанов слышал, что учат го и пересаживаются на него, но чет я работы на го вообще не вижу, кроме девопсовых вакансий.
Во-первых, отдельная структура под передачу инта это сука мощно, нужно добавить конструктор для этого "конфига" и будет вообще заебись Во-вторых, какая в сраку истинная случайность метод, это даже не случайность, хуйня из под коня
>>3392545 Да напиши, мне интересно. Почему в го не используются всякие паттерны? Они же вроде относятся к бек-разработке В ОБЩЕМ? Почему абстрактная фабрика, например, это плохо? Почему Clean Code - это плохо? я вкатун, джаву знаю на уровне лаб
Достаточно посмотреть на внутреннюю библиотеку, где одних только методов для конструирования Request несколько штук. И на то как в go предлагается работать с бд (никак, вот тебе интерфейс - пиши свои имплементации сам).
Среди гошников очень много фанатов минимализма и нездорового KISS'а (особенно видно по реддиту, где на просьбу посоветовать ORM или фреймворк обязательно набежит чмо и начнет вонять что ничего для го не надо кроме встроенных функций). Но их мнение не учитывается, мало ли че петухи орут.
>>3392563 Двачую. Много долбоебов, для которых го - это не джава. Они и код пишут, чтобы было максимально не как в джаве. В итоге снова и снова делают кривой спринг, у каждого свой.
>>3392138 Пока не дошли руки дописать валидатор этого """ГСПЧ""", но по стилю могу сказать: - не надо использовать структуру для передачи одного параметра - NewRandomizer возврашает структуру по значению, а не ссылку на неё, тут сразу несколько проблем: -- GetXxx() не будет обновлять previous -- будет копироваться мьютекс, чего делать нельзя - методы принято называть без Get/Set префиксов - подозреваю что генератор говно и не даёт нормальный результат, но это не точно
Что надо менять: - сделать публичный интерфейс и приватный тип. Таким образом создать генератор можно будет только с помощью метода, который будет возвращать ссылку и инициализировать поля - создать пару New методов, с изначальным значением и без в этом случае инициализировать самим - назвать метод Int() - по желанию заменить мьютек на атомик или вообще убрать его
>>3394021 >не надо использовать структуру для передачи одного параметра а как же depency injection и прочая залупа? мы же условный репозиторий передаём в сервис и больше нихуя
>>3394021 Автор той хуйни выше с New. Приятно услышать критику, спасибо.
По замечаниям есть комментарии и вопросы.
>не надо использовать структуру для передачи одного параметра Идея была в том, чтобы позволить инициализировать без передачи параметров. Написал хуево, все равно пришлось передавать конфиг. Но зато previous можно не передавать. Из альтернатив в го есть только костыль с foo(value... int), но мне он эстетически не нравится. Питоновского аналога с foo(value = 0) нет.
>NewRandomizer возврашает структуру по значению, а не ссылку на неё, тут сразу несколько проблем: >-- GetXxx() не будет обновлять previous >-- будет копироваться мьютекс, чего делать нельзя Это действительно проеб. И открытие для меня, что мьютексы копировать нельзя. Насколько я понимаю ты о случае rand1 := NewRandomizer(config) rand2 := rand1 Но вот дальше я не очень понимаю что именно сломается. Можешь привести пример когда будет паника?
>- методы принято называть без Get/Set префиксов Согласен. Привычка.
>Что надо менять: >- сделать публичный интерфейс и приватный тип. Таким образом создать генератор можно будет только с помощью метода, который будет возвращать ссылку и инициализировать поля Чтобы пофиксить потенциальные сложности с копированием мьютекса или еще что-то? В целом согласен.
>- создать пару New методов, с изначальным значением и без в этом случае инициализировать самим Да, это я хотел делать, но было слишком лениво конфиговский New заворачивать еще раз.
>- назвать метод Int() Согласен.
>- по желанию заменить мьютек на атомик или вообще убрать его Покажи пример как менять на атомики. Все что я видел - выглядит как клоунада с кучей оберток, так как я не могу заблокироваться пока считываю, произвожу математику и записываю обратно. Мьютексы очевиднее работают (хоть и дороже).
>>3394117 >ction и прочая залупа? мы же условный репозиторий передаём в сервис и больше нихуя Нет, мы передаем seed в ПРНГ и не надо тут городить лишнего.
>>3394186 >Идея была в том, чтобы позволить инициализировать без передачи параметров Так все равно придется создавать RandomizerConfig, у тебя идет передача по значению, туда nil не передать даже. Да и передача nil это все равно явная передача. Ну и в целом такой API плохой. Лучше 2 метода: один без параметров - библиотека сама инициализирует значение, второй с параметром - инициализируем тем что передали.
>Но вот дальше я не очень понимаю что именно сломается. Можешь привести пример когда будет паника? Конкретно с мьютексом паника не случится, потому что там нет встроенных проверок подозреваю что ради производительности, но вот у strings.Builder он есть и легко воспроизводится: https://go.dev/play/p/QFxEktNx92E
>Чтобы пофиксить потенциальные сложности с копированием мьютекса или еще что-то? Поскольку в Го нет конструкторов, то единственный способ инициализировать поля и проверить все нужные параметры - это New() метод. А если тип публичный то его всегда можно создать через new().
>Покажи пример как менять на атомики. Все что я видел - выглядит как клоунада с кучей оберток, так как я не могу заблокироваться пока считываю, произвожу математику и записываю обратно. Типичный атомик выглядит очень просто. Считываем значение, вычисляем новое, пытаемся через CAS установить новое. Если старое не поменялось - успех, если поменялось - повторяем цикл. https://go.dev/play/p/92-MRwDDPQ0
>>3394312 >С этим я не согласен, кстати. У меня в коде Pointer Receiver, все он обновляет. У тебя в коде возвращается ссылка, на структуру, так-то конечно будет работать. Вот что будет если заменить в моем примере Buffer на ✵Buffer он тоже начнет работать. https://go.dev/play/p/6E1KHXvf3p-
Возглавляется неким "Робом Пайком", который не знает: о существовании модели акторов с разделяемой памятью о динамической линковке об обобщенном программироние и о о функциях map, filter, reduce и вообще судю по убожеству первого пейпера (и это-то после 30 лет опыта в белл лабс!) выдал какой-то полуси с корутинами и в дизайне яп не особо рубит если бы не Дмитрий Вьюков, поднявший в свое время ГЦ голанга из той параши, где он находился, язык так и остался бы никому не нужным Хуеватая система импорта, зашивающая в имя пакета путь в рептозитории, а если надо обратиться к защищенной репе, то скреды прописать ЯВНО В СТРОКЕ ИМПОРТА ВНЕЗАПНО nil, переданный как значение в тип unterface{} перестает равнятся своему же значения Язык объективно хуевый, чего стоит одна система типов, требующая постоянных подсказок в виде явного объявления типа над функцией. Вывод типов? Ленивые вычисления? Автор так и остался в Bell Labs середины 70-х. Нет постоянного стандарта на язык, а только какие-то "отчеты". И многое другое!
>>3395157 Язык говно конечно, но ОП-хуй попытался приплести вообще все что можно, вместо реальных проблем.
У акторов нет нормального решения для DeadLetter queue, в телекоме может и похуй, let it fail, но в финансах и много где еще так нельзя.
Динамическая линковка не нужна 99.9% приложений. А кому нужна, есть
Обобщенное программирование, с завозом дженериков появилось, хоть и кастрированное.
Импорт пакетов тупо делался под реалии google3 если вы понимаете о чем я.
Даже новая инкарнация ЖопоСкрипта требует обявления типов у функции. Даже душители удава, завезли к себе типизацию.
Ленивые вычисления кроме ФП нигде особо не используются. И в целом, как концепция ОК, а в реальном мире требует подготовки, чтобы правильно пользоваться.
вопрос про изучение Go и вкат
Аноним22/02/25 Суб 19:40:27№339520229
Пачаны, я говно нахуй, работаю в АйТишке, пушта друг устроил, сам я только нахуй сходить горазд. Но хочу измениться, хочу влететь в Go. Я не совсем верблюд, техническое образование имею, учился в эМФеТИ, даже с красным как залупа дипломом кончил. Но заебало нищенствовать, заебало быть говном.
Щас работаю формашлепом, как говорил выше, хочу стать крудойобом. Как вкатиться в GoGo и получить первую РАБотку.
>>3395965 Тег кривой был. Я попросил модера поправить. Спасибо ему, что оперативно поправил. В прошлых тредах ОП намерено искажал этот тег, в итоге ни один тред невозможно найти по тегу. Ещё он никогда не оставляет пост на перекат в старом треде, в итоге часть людей сидят там, а кто-то уже здесь. В общем, занимается умышленным вредительством.
МУЖЧИНЫ помогайте есть middleware для работы с CORS теперь надо ещё одно делать для JWT (то что пользователь залогинился) и доставания айди из токена что делать с несколькими middleware?
Есть 8 лет опыта с базами данных. 10% DBA, 90% data engineering. Заебала меня эта тема хранилищ, хочу вкатиться в норм языки. Яву не хочу, как будто бы слишком много джавистов. Помимо этого поднимал апишки на петухоне, строил сервисы. Много работал с airflow и etl-тулами. Работал с докерами и cicd. Немного поднимал и конфигурировал постгресы.
Хочу вкатиться в гошечку. Как думаете, у кабана будет катироваться мой опыт? Или сразу же сольют, так как почти нет опыта в гошечке?
>>3399611 Уметь кодить, писать тесты, знать нюансы области(это уже зависит от команды куда идешь), база по БД - дефолт требования
По процессу примерно так - устный скрининг на дауна(типа отличить tcp от udp, acid, простые вопросы по гошке), лайвкодинг(2 легко-мидловые задачи, достаточно решить на литкоде пул с тегом Авито(там 8 задач) + погуглить на гласдоре, там примеры задач есть), затем подготовиться к интервью по языку(язык выбираешь тот который лучше знаешь, можешь пройти например на питоне, даже если работать будешь на го) - на нем пара задачек и устные вопросы, затем опциональная секция сисдиза уровня спроектируй маленький кусочек авито или твиттера(это если на сеньора претендуешь), затем финалка с тимлидом(тут как раз во всю можешь покрасоваться то как ты хорошо знаешь предметную область с базами)
>>3399613 Спасибо за развернутый ответ. Я ближе к маю уволюсь с текущего банка. Чуток почилю, параллельно обучаясь. А далее буду ходить по собесам. Пока собираю учебные материалы.
DWH отупляет немного. У нас нет не тестеров, ни техлидов, даже ПМ нет. Ходишь сам как гей-шлюха собираешь требования. Заебало невыносимо. Надо премию получить и ливать.
>>3400723 > один ряд с рельсами ебать я только начал С# изучать,лол и че в РФ он больше не актуален? а что актуально тогда? в какой язык не плюнь, везде (этот старый, это слишком новый и так далее)
>>3400966 Да учите вы го если нравится. Спрос заметно растет, у меня на родной галере раньше сплошная нода была, сейчас практически все проекты уже на го идут, ищут ещё разрабов даже, рук не хватает. Вакансий тоже порядочно даже на хх.рю. Единственное, не представляю как искать первую работу, т.к джуны гошники не востребованы, хотят мидлов.
>>3401109 Как будто бы вкат в го идит исключительно через вакансии, где го это смежный язык. Часто вижу - желание изучать го в ваках дата инженеров, например.
Да и в целом сейчас в ИТ не хотят вкладываться в джунов. После известных событий горизонт планирования минимальный. А джуны это инвестиция вдолгую.
>>3400966 Если цель найти работу, то проще будет в питоне, пхп или джаве. За сишарп не скажу, мне кажется там мало вакансий. Го можно рассмотреть как второй язык для последующего переката. Либо искать вакансию с фирмой, которая перекатывается на го, и там в процесс внутри фирмы перекатиться.
>>3401543 А целом удваиваю, хотел ровно то же написать, разве что от вката в пыху я бы наверно держался в 2025 подальше. С какой-нибудь джавой у разбитого корыта не останешься.
>>3401543 >>3401547 >>3401199 Ладно мужики, ухожу от вас в джаватред, было приятно с вами сидеть. Обязательно увидимся, т.к. потом перекачусь в ГОвно. Успехов вам!
>>3402042 дошёл до ларавел фреймворка, изучив ООП и базу PHP, задумался уйти на Go. Норм вариант? Живу в ДС-2, поэтому тут есть всякие стажировки/junior позиции, на которые попасть можно, как мне кажется. Опыта программирования нет, но как-то хочется сразу зарабатывать больше 100к, чем в пыхе сидеть год-два на 50–60к. Будет тестовое через месяц, нужно будет прорешать алгосы, GPT сказала, что вполне реально за месяц задрочить алгоритмы и изучить Go на уровне, чтобы решить задачи. А в случае чего можно просто в GPT скормить задачки и на собесе на стажировке отвечать за реальные знания о языке, которые ты получил за месяц + всякие видосы с собесами перед этим просмотреть. План говно или рабочий? Либо лучше дальше познавать ларавел?
>>3403522 >GPT сказала, что вполне реально за месяц задрочить алгоритмы и изучить Go на уровне, чтобы решить задачи Угар. Ты всему веришь, что угадыватель букв пишет?
Это для тех, у кого уже есть 1-2 года опыта работы на го (или в айти в принципе). Меня вот недавно выпиздили на мороз из моей конторы, сейчас отправил в авиасейлс резюме на эту вакансию. У меня 3 года опыта кста.
у нас тут недавно одна компания жидко дристанула себе в штани, решив запилить маркетплейс. Непонятно зачем туда сунулись, учитывая что их мобилка (суперап с остальными продуктами) - лагучий не оптимизированный кал. Ну и по итогу на мороз выкинули продукт команды, ответственные за маркетплейс
>>3404095 также можно накрутить и на го 1-2 опыта. сочувствую, анончик, прорвёшься. У тебя 3 года опыта в го или пхп? в общем твой главный аргумент, что не нужно идти в го, т.к. нет реального коммерческого опыта? даже на стажировку, если задрочить перед этим алгосы как не в себя за месяц?
В срочном порядке перекатываюсь в го так как через 2 недели собес на го разраба (по знакомству в контору где тимлид друг детства), на предыдущей работе (реакты-хуякты + пхп/жава фуллстак макака). Основной синтаксис уже освоил, но та же проблема что была и с другими языками - в душе не ебу что делать дальше, какой пет проект мутить (для себя чтоб собрать знания во едино). С дрокером и прочей поеботой знаком. Подскажите что ли, что запросить для прокачки скиллов
>>3404218 Не дописал. На предыдущей работе выпиздили на мороз, сократив целый отдел, последняя зп в апреле а потом нахуй шлют. Опыта 3 года, из которых 2 года чисто фронт макака и 1 год фуллстак, но скорее бэкэнд разраб. В основном хуярил всякие парсеры, делал пару микросервисов
>>3404137 У меня 3 года опыта в го. Уволили с текущего места работы за лоуперфоманс.
>>3404137 >в общем твой главный аргумент, что не нужно идти в го, т.к. нет реального коммерческого опыта? даже на стажировку, если задрочить перед этим алгосы как не в себя за месяц
У меня никаких аргументов особо и нет. Если нравится го, то подавайся на стажировки и все открытые вакансии, это самый рабочий вариант. Но на позиции младших разрабов, джунов, где просят 1-3 года опыта как правило приходят опущи вроде меня, которых выпиздили с прошлых мест работы и вероятнее всего ты на многих вакансиях будешь проигрывать конкуренцию другим челикам с реальным опытом.
>>3405636 Вот именно что никак. Но напугают статьей и вкатун с тряской побежит ПСЖ писать. И будет благодарить барина-кабана что не уволил его по статье хотя его и невозможно было так уволить.
>>3405636 Ты прав, в ТК такого пункта нет. Уволили так: в прошлый четверг мне мой тимлид поставил встречу 1-1, типо на поговорить. Я думал, что все ок должно быть, никаких негативных сигналов от него не поступало. К тому же я в этой конторе почти 3 года работаю. Но оказалось что нет - на встречу пришла HR и сказала что до конца марта уволят по соглашению сторон с двумя окладами. Причина увольнения - долго делал таски и мой уровень не дотягивает до уровня команды. Я обомлел и даже ничего возразить не смог. В итоге полча просидел и слушал ее 30 минут, потом поблагодарил за встречу и отключился. С сегодняшнего дня начал поиск новой работы, на старой пока еще числюсь, но скоро буду уволен.
Аноны, я правильно понимаю что раз спрос на миддл-сеньку на го выше и конкурс ниже (если сравнивать активные резюме и вакансии на hh), то и крутануть здесь полегче? Мне рили впадлу полгода учить стеки на джаву/петухон и сидеть на 40-80к год+, хочется вместо этого крутануть 3 года в гошке и к осени начать собеситься на мидла. Какие подводные?
>>3406279 Все хрюши просто до техсобеса требуют выписку и кидают в игнор, если не скинуть или отморозиться или левый pdf договор скинуть? Как часто тебя или других анонов просили это делать? И есть ли вообще в этом треде крутанувшие вкатуны?
мы жуки-плавунцы или мужики российские ржаные гречневые? если умирать - то умирать достойно. я вкатываюсь в го и ищу свою первую работу без опыта работы на голенге. никакой джавы/пыхи, сразу в то, что нравится.
>>3406981 Пролистал много вакансий и в целом нравится чем голангисты занимаются. Нет упоротого ООП. Я именно про ООП когда его суют когда он нахуй не нужен.
Ну и в целом протоколы, сеть, базы, контейнеры. Это все интересно и за это платят.
>>3405706 >сказала что до конца марта уволят по соглашению сторон с двумя окладами А ещё рассказывают, про логику у программистов. УВОЛИТЬ по соглашению сторон - НЕЛЬЗЯ. Ты САМ соглашаешься на это. Да на тебя надавили и ты испугался, но это ты согласился. У тебя после созвона была возможность взять себя в руки и не подписывать соглашение.
>>3407032 > была возможность взять себя в руки и не подписывать соглашение. Ок, а дальше какие действия? Требовать не 3 оклада, а 5? В чём смысл-то? Меня вот за 2 месяца предупредили + 3 оклада дать должны.
>>3408350 Ну так а хуле хотели, волчары позорные. Нет бы залетали на джунов, ну мидл1 - максимум. Так я раза три вычпнул с собеса дебилов, которые на сеньку пришли. В резюме стек, что хоть сейчас в гугл забирай, а на банальных задачах/вопросах просто рассыпались. Жадность фраеров губит, кек.
>>3408378 >на банальных задачах/вопросах просто рассыпались Давай примеры. Опять душные глубины кишочков, которые только самодовольный красноглаз на собесах знает?
>>3408390 1 сломался на джуновско/мидловской задаче с мутексами и рейс кондише. Чел не знал что нельзя передавать мутекс по значению 2. Сломался на оффсет коммите Кафки. не смог назвать даже варианты. При том, что по его словам он на прошлой работе внедрял кафку
>>3408403 Ясно. Ну мне как то не хочется брать в команду людей, который будут автокомитить в кафку и проебывать сообщения или чтобы у меня в проде рейс кондише стрелял. Ты же можешь с любым сбродом работать, меня эт не ебет
>>3408454 Ну если я провожу тех собес и даю свое заключение по кандидату - да, это моя ответственность и в т.ч от моего слова зависит попадет ли человек к нам в команду. Поэтому дебиков я предпочитаю зарубать, чем потом ебаться с последствиями
>>3406279 >выписку из электронной трудовой Как быть, если в электронной трудовой указаны места начиная с момента, когда эту электронную трудовую завели? До этого места работы указаны только в бумажной трудовой книжке..
>>3407114 >Я не он, но продолжать работать в коллективе где тебя уволить хотели не очень приятно >>3408357 >Ок, а дальше какие действия? Требовать не 3 оклада, а 5? В чём смысл-то? Меня вот за 2 месяца предупредили + 3 оклада дать должны. Смысл в том, что у тебя больше пространство для маневра. Хрюша всегда начинает с самого минимума, хорошие условия надо выбивать. Ты можешь: 1. Потребовать больше. 2. Договориться о том что ты будешь искать новую работу, а пока ищешь будешь работать/числиться на текущей. 3. Договориться о переходе в другую команду если конечно есть куда переходить. В любом случае начав торговаться ты получишь больше, чем просто согласившись.
У нас так хотели чувака уволить, но он упорно отказывался. В итоге с ним договорились, что он год ничего не делает, не ходит в офис, а просто ищет работу. Найдет раньше - может уволиться раньше.
А вы в курсе, что рекрутеры палят, что вы опыт крутите? Хрюши давно сидят в ЦРМ-ках, которые собирают базу резюме, и в этой базе видно историю изменения резюме. А так же "отзывы" и дополнительные фильтры, чтобы автоматом отказывать.
>>3409669 Может конечно, но нахуй его туда класть? Если ты намекаешь что кому-то захочется делать свой errgroup или еще какую-то залупу - то это его задача возвращать ссылку из функции New(). А создавать структуру с мутексом? Нахуя
прохожу курс на степике и что-то начинаю душиться, аноны, кто вкатился/вкатывается, подскажите, вы по каким книгам/курсам получаете знания? Офк нужно полученные знания закреплять практикой, мне просто интересно, что по вашему мнение хидден гем/база, которую скипать нельзя, она очень быстро даёт основы и понимание логики языка? Tour of Go, а потом делать пет-проект сразу? А то решая задачки со степика у меня складывается чувство, что я двигаюсь очень медленно.
>>3410834 Меня вот всегда удивляет, что изучая какие-нибудь циклы и массивы, люди думают, что они уже изучают язык и скоро смогут устроится на работу. Нет! Это как первоклассник изучает азбуку и до написания сочинения на выпускном экзамене ему ещё очень далеко. Нужно с умеренностью пройти все эти этапы, не перескакивая. Потом эти пробелы аукнутся и придётся всё равно начинать всё заново.
А с фронтендов в го успешно перекатывался кто-нибудь? После 4 лет формошлепства не могу уже на жс/тс смотреть и все что с этим связано. Задумался о бэке, а бэк по состоянию на 2к25 это в осноаном го.
>>3410834 Нужно чередовать теорию и практику. Прошел тур, теперь попробуй написать маленькую программку, например консольную утилиту, которая на вход получает аргумент ID треда на дваче и распечатывает в консоль последний пост с треда.
>>3410834 я тоже прохожу и задания максимально впадлу делать первые 2 понравились, но потом душка началась 3е где тесты нужны были через силу пришлось делать
>>3411017 Я бекендер без опыта в го, и меня пока только нахер посылают. А найти работу без знания баз данных, архитектуры, очередей, паттернов, алгосов совсем тяжко будет имхо.
Не думал просто перейти в более интересный "фронтенд"? Например в IOS\Android разработку? Тоже кнопочки красить но там есть и более интересные задачи.
А вообще скажу тебе как человек однажды перекатившийся с одной хуйни на другую - через 5 лет тебя новая хуйня точно так же заебет как и старая. Вот и думай стоит оно тех усилий...
>>3412613 > Не думал просто перейти в более интересный "фронтенд"? Например в IOS\Android разработку? Тоже кнопочки красить но там есть и более интересные задачи. Я бы поспорил что в мобильной разработке есть что-то интересное, лучше уж веб тогда, не надо ебаться с эмуляторами всякими
>>3412613 > через 5 лет тебя новая хуйня точно так же заебет как и старая. Вот и думай стоит оно тех усилий... Зачем вообще жить тогда, лол? Ведь всё в итоге надоест и умрём!
>>3411017 Еще вариант вспомнил - видел пару вакансий, где требовался фронтендер со знанием web3 и блокчейна. Там и платят в крипте и опыт твой будет релевантный и что то новое попробуешь без долгого мозгоебства с перекатом.
>>3390005 (OP) В этом треде есть опытные аноны? Подскажите пожалуйста вот этот вот набор кала из пикрила работает в Go? Вроде особо и не должен работать, так как в Go классов нет, конструкторов нет, наследования нет и инкапсуляции тоже как-таковой нет, а с другой кто мешает сделать свою реализацию этих паттернов?
>>3413624 Паттерны как раз придумали по той причине что языки были недостаточно гибкие. Для Го паттерны намного актуальнее чем для Питона например. Паттерны подсказывают как сдлеать код более гибким.
>>3412613 >Не думал просто перейти в более интересный "фронтенд"? Например в IOS\Android разработку? Чел, это хуйня все. Интересный фронтенд - это d-apps с web3 solidity/rust, но в тот же го и то проще попасть чем туда.
>>3414469 Зачем вообще делать итератор? Чтобы что? Отправлять в бд запросы в цикле йес саар? У тебя в 99.9% случаев будет проход по массиву через индекс, нахуя оборачивать индекс в IAbstractProxyDecoratorIteratorBean?
>>3415194 по такому кусочку не понятно, нужно в целом на проект смотреть, может там слои архитектуры нарушены, может солид. мимо нихуя не понимаю в го но очень хочу разобраться
>>3415335 Раст придумали в дурке, это литерали творчество душевнобольных пидорасов в чулках. На фоне раста любой язык будет простым и понятным. На сишарпе тот же код будет выглядеть лучше без мусора с err!=nil и всратых сигнатур функций. Жаль, что сишарп умер на бекенде. Приходится перекатываться на го, если не хочешь нырять в фулстек парашу.
>>3415194 Как правильно сказали кусок слишком маленький, но на что бы я обратил внимание: - []ProjectResponseDTO возвращается по значению, значит будет много копирований памяти. Для больших объектов надо возвращать ссылки - ошибка слишком общая, неплохо бы или создать специальный тип чтобы потом можно было вернуть правильный 5XX код - у тебя в цикле вызывается dto.UserToResponseDTO(), по идее owner же один и тот же, такое надо выносить из цикла - ProjectRepo - публичный, надо сделать приватным - если размер известен сразу и фиксирован, то не надо использовать append(), просто make(type, size) и slice = XXX
>>3412891 Ну тут иб надо бы >>3415399 > - []ProjectResponseDTO возвращается по значению, значит будет много копирований памяти Слайсы - это же всегда ссылка, не?
>>3415471 >Слайсы - это же всегда ссылка, не? Сам слайс да, но внутри массива будет лежать значение. И если ты будешь читать или писать в слайс то у тебя ДТО целиком будет копироваться.
Что добавить в пет-проект который я буду показывать компаниям, чтобы они прям офигели, что к ним такой джун (свитчер) пришел?
У меня есть микросервис, у которого уже есть канкаренси, рест апи, грпк, вебсокет, бд, логирование. Что еще в него можно впихнуть, что часто используется на Го проектах? Может что то набирает популярность, либа или очередь там...
>>3415513 >У меня есть микросервис, у которого уже есть канкаренси, рест апи, грпк, вебсокет, бд, логирование. Что еще в него можно впихнуть, что часто используется на Го проектах? Может что то набирает популярность, либа или очередь там... Бинго по базворд, а проект поди говно.
>>3415513 >чтобы они прям офигели Чувак... Это какое-то "вау мышление". Я знаю, что можно сделать, но это название 99.999% людям ничё не скажет. Предположим, можно сделать xbrl-парсер, он будет разбирать семантически финансовые отчёты. Но чтобы это ВЫЗВАЛО ВАУ, все ахуели, попадали, заопладировали - это уже какая-то показуха. Это делать что-то, чтобы кому-то понравиться, а не ради того чтобы облегчить жизнь или заработать на этом деньги. То есть, я например заебусь вручную разбирать 50,000 финансовых документов и для этого создаю парсер. В этот момент мне обычно пахую что о моём проекте подумают люди. А ты делаешь ради какой-то тупой цели "кого-то впечатлить".
>>3415513 Никому твой код не нужен. За идемпотентность и распределенные транзакции можно было бы поговорить с сеньками, но они даже смотреть не будут, им неинтересно. Может быть, какой-то чмоня мидл с 2 годами опыта доебется до названия переменных, но ты сам понимаешь уровень экспертизы у такого ревьюера. Ты напрасно пытаешься кого-то впечатлить, всем похуй.
>>3415572 >идемпотентность и распределенные транзакции Вот это ты хорошо придумал. Бахну второй микросервис и реализую между ними транцакцию с откатом в случае фейла.
Заодно можно и очередь между сервисами вкорячить... что обычно между гошными сервисами используют? Kafka или какой-нибудь NSQ?
>Никому твой код не нужен. Мне самому нужен, чтобы претендовать на работу нужно сначала уметь ее выполнять.
>>3415513 Если хочешь потренироваться, можешь добавить мониторинги в прометее (наклепать метрик и ебануть алертов к себе в телегу, допустим), трейсинг на егере, поднять пресловутую кафку и покидаться калом через нее. В целом на этом базовые технологии для гошного проекта кончаются. Не то чтобы кто-то будет смотреть твой код, но хоть сам будешь знать, что так можно.
Раньше плевался от го, что он какой-то не такой. Но недавно, решив дать второй шанс гошке, почитал примеры по работе с gin. Я вам отвечаю, такой кайф с разработкой бэкенда никогда не встречал. Это лучший язык просто. Как же я счастлив, что решил сделать апишку на гин, а не кторе. Спасибо го комьюнити, вы открыли мне глаза и теперь я вижу прелести вашего языка
>>3416532 Контроллеры на гине пишутся так же, как на ноде или дотнете. Все пиздят удачные идеи друг у друга, все фреймворки одинаковые. Другой вопрос, что нода - это фулстек, дотнет - фулстек для дебилов, с соответствующим уровнем проектов и зарплат. Если хочется писать только бэк, не касаясь фронта пятиметровой палкой - го единственный выбор.
>>3416584 Да это понятно, просто удобная вещь, я просто в шоке. Я сам по себе не бэкендер, просто апишку надо для приложения написать. Учить спринг или асп.нет под такие запросы - ну херня идея. Гошка просто как нож по маслу зашла.
>>3416585 Я пока не копал в эту сторону,сразу с примеров гина решил. Пока-что очень нравится, так что буду изучать net/http тоже
>>3416808 Ебать книжка по питону жирная, о чем там столько текста? А так вкатывался в вузе, рандомно учил си, питон, кресты и жабу, на работу взяли гофером, вот и весь вкат.
>>3417049 я думаю, что не бывает одних плюсов или одних минусов. Когда в языке куча возможностей это хорошо, когда ты пишешь повторно используемую библиотеку (например ОРМ). Но плохо когда пытаешься разобраться в чужом говнокоде.
>>3415513 >У меня есть микросервис, у которого уже есть канкаренси, рест апи, грпк, вебсокет, бд, логирование. Охуенно, только забыл сказать что именно твой микросервис делает...
>>3417207 И я получился сеньром-помидором. Потому что наши отцы красноглазики знали что и зачем они втыкают. А вы, поколение инфантильных пидарасов, только и способны что речи сладкие из себя изрыгать и у гопоты код копипиздить. Но на первой же заебной таске - сломаетесь и будете плакать
>>3417212 хуя у тебя самомнение)) ну ничего, когда нибудь на заводе встретятся два Петровича и один тихо выругается на станок: "у сука чего эта гайка сюда не деплоится!" я улыбнусь про себя и пойму, что это ты - мой брат, айтишник.
>>3417645 В чем проблема? Один поток раздает токены. Для каждого ключа храним в хеш-таблице структуру (сколько токенов запросили, флаг блокировки). Блокировку делаем через атомик + спинлок, на таком коротком промежутке нет смысла уходить в мьютексы. По текущему времени вычисляем, сколько было начислено токенов всего, минус сколько запросили - итого сколько доступно сейчас. Поебаться с отладкой придется, конечно, это же многопоточка, но ничего охуительно сложного тут нет.
>>3417910 Я так и знал, что Донован и Кериган схалтурили, когда писали книгу. Я её прочитал от корки до корки и осталось послевкусие, что меня обманули. Они и 10% языка наверно не описали.
Блять, с новой мапой разобрался а вот держать сука микрофон к своим годам нахуй не научился, ббуббу пфпфпп чота там новая мапа пук среньк бббуббу пфпфпф....
>>3417963 Это не база программирования. Они описали только синтаксис языка, но забыли, что у языка ещё есть стандартная библиотека. А может и не забыли, а подумали, что и так сойдёт. Это вам не сишарп, где полностью описывают всю стандартную библиотеку, фреймворки и кишочки CLR.
>>3418014 9 лет в ИТ, да что он вообще знать может? Такие дебилы потом всю почту засирают своим: «пук, среньк, наша ошибка страшная в логах, гуглить не умеем» :(
>>3417846 У меня такое однажды на джуна спрашивали пару лет назад. Я обосрался и в итоге меня не взяли. Пошел работать в помойное легаси на пхп, откуда меня сейчас сокращают потому что у кабана деньги закончились. Ебало имаджинировали?
>>3418041 Я вот на пхп+го уже несколько лет работаю, сейчас перехожу на почти чистое го. И не уверен, что даже через год РАБоты смогу решать все эти задачки. Хотя хз, тут внутренние экзамены на грейды тоже есть. Я к тому, что в бигтехах обычно просто пердолишь джейсончики в кафку, а не вот это всё.
>>3418049 Так а какая разница на успех, лишь бы платили и дунасить можно было.
>>3401177 >Как будто бы вкат в го идит исключительно через вакансии Я вкатился, потому что лид принес сказал "вот на го теперь пишем". В итоге "гофер" который го не знает
уважаемые GOсподины, вкатываюсь к вам в тред! Студент, начинаю учить этот язык. По факту будет моим первым ЯП. Подкиньте пожалуйста пару советов. Также посоветуйте годные каналы по GO помимо justforfunc.
>>3418632 > уважаемые GOвноеды, вкатываюсь к вам в кал! > Копрофил, начинаю пробовать это говно. По факту будет моим первым копро. Подкиньте пожалуйста пару советов. > Также посоветуйте годные каналы по копро помимо fecesforfun.
>>3418632 Какой у тебя план по поиску работы? Го используют в хайлоад проектах поэтому новичков в него не берут, сейчас даже с другого бэкенд языка сложно вкатиться, а ты вообще без опыта программирования хочешь сразу в Го.
>>3418667 Вкатиться куда, в бэк? Тогда шансы очень средние, ДЕ и бэк слабо связаны, если ты не сам писал весь тулинг (а ты не писал, ибо в соло такое никто не напишет).
>>3418673 Меня ДЕ подзаебал. Сейчас получил премию и думаю, отдохнуть поучить Гошечку, проходить собесы напиздев что есть опыт в го. В DE всякие свистелки и переделки писал. Типа всякие загрузчики данных на питоне. Тулы для оркестрации. Генерация дагов в airflow. Всякие дополнения к dbt на jinja+python. Ну и две апишки поднял на fast api.
>>3418678 >всякие загрузчики данных на питоне. Тулы для оркестрации. Генерация дагов в airflow. Всякие дополнения к dbt на jinja+python. Ну и две апишки поднял на fast api Это стандартные вещи для ДЕ, которые с бэком слабо связаны. Вон, выше фотки с конфы кидали. Сможешь с ходу такие задачи решить?
>>3418662 Какого-то конкретного плана пока нет. Т.к. не работал ни с чем - без понятия куда в итоге начну развиваться. Го кажется самым приятным языком, поэтому решил начать с него. Какой смысл учить годик-два питончик или JS, искать работу будучи одным из миллионов джунов? В го мб конкуренция поменьше + кажется язык перспективным. Нравится его читаемость. Вот и надеюсь, что его изучение может запустить мне какую-никскую карьеру. Но да, именно факт что это первый язык - гемного напрягает. Ну хоть не раст...
>>3418723 Тебе нужно иметь что-то больше чем го, если ты хочешь катиться дальше. Питончик был бы хорошим вариантом вдовесок. А вообще одного го мало, изучай постгрес, кафку, реббит, грпц и прочее говно.
>>3418723 >>3418816 хорошая идея! когда более менее выучишь Go потрать пару вечеров на PHP и Python (чисто на синтаксис, ничего кроме умения создать класс, функцию, массив, цикл, переменную и запустить чтобы вывело результат не нужно). Гошников часто берут переписывать с этих языков. Будешь на собесах пиздеть: "да, могу читать и понимать код на пхп\питоне и переписывать на Го". Это будет твоим большим плюсом.
>>3419168 Оптимизировали RwMutex для йоба многопроцессорных систем на 64+ ядра, теперь на таких монстрах sync.Map работает чуток быстрее, чем классическое map + sync.RWMutex. Для обычных EC2 машин неатуально. Короче, как обычно задроты нашли свою задротскую проблему и эффективно оптимизировали на 1%.
>>3419602 Спасибо! Почитал, стало еще яснее. Честно, хочется такого же в котлине, но, к сожалению, сейчас котлин это продукт маркетологов и там все "фичи" - экспериментальные и работают через раз.
Посоветуйте плизик. Пишу на шарпах 3 года ком. Опыта, но хочу убежать в микросервисы и го. На шарпах плотно с микросервисами и стеком так и не удалось поработать - даже сейчас новый проект монолит. Думаю - стоит ли обращаться к менторам чтобы за ручку проводили по го в связке с микросервисным стеком, или есть другой вариант? Посмотрел, конечно, 150% от оффера хотят - пиздец.
>>3419887 Ты не понимаешь, когда ты сам читаешь про WaitGroup - это хуита, а когда ты заплатил N денег и читаешь на том же сайте - вот это настоящие знания!
Анон, привет! Подскажи, где можно найти ментора по гошке, который не чурается "приукрашивания" в резюме и любых других способов попадания на работу?
У самого есть 3 года реального коммерческого опыта, но на другом языке. Хочу подстраховаться и заручиться чьей-нибудь помощью, чтобы еще и дорожную карту по хардам составил.
>>3420035 Вопрос пока общий - нужна поставленная задача и по факту чел, который проконтроллирует пердолинг пета с нужными технологиями с комментариями - вот это говно, это можно сделать иначе и т.д... Т.е. мне ментор нужен как репетитор, мол так делать надо, а так не надо. Всякие слайсы хуяйсы и че там у вас еще я выучить и сам в состоянии и подрочить это на литкодовских задачках или подобном.
Но, по первому впечатлению, менторы выглядят как какой-то скам - "ВКАЧСУ С НУЛЯ в голованг за 2 месяца" и т.д. Вкатится то окей, как работать потом? Я то поэтому и думаю, че делать. Про перспективы голованга я еще в 21 году знал когда только учился прогать, но потом случилось ИРЛ и не было возможности сидеть и перекатываться в него пока работал на шарпах.
>>3420043 Говно вопрос. Сделай сервис денег с шардирование по юзеру, чтобы деньги Васи лежали в бд1, а деньги Пети - в бд2. Сделай сагу, которая переводит деньги от Васи к Пете. В процессе наебешься так, что возненавидишь микросервисы ебаные и полюбишь монолит.
>>3420044 > как работать потом? Огребать баги на проде из-за пропущенных нюансов Огребать кучу легаси-лапши от таких же как ты перекатунов, которых уже уволили (или хуже, которые ЗАКРЕПИЛИСЬ на метсах и диктуют стиль) Огребать пизды на перф-ревью за незнание кишок (хотя ты просто ворочал джейсоны весь квартал)
Что то у меня сомнения аноны, перекатываться в Го из Питона или нет...
С одной стороны Го нравится - как глоток свежего воздуха - минимализм, интересная конкурентность, отсутствие фреймворков, грпк...
Но с другой стороны, а вдруг изо дня в день будет жесткий дрочь на производительность. Улучшение на 0.5% времени респонса какой-то хуйни. Бесконечное копание и оптимизация кода для еще большего перформанса...
Аноны, которые уже вкатились, есть тут такие? Насколько у вас скучные или интересные таски? Расскажите о своих тасках на работке!
>>3421211 В основном на го перекладываются разного рода жсоны. Оптимизация производительности это редкая задача и ее наоборот довольно приятно делать в рамках рутины. Если нужен такой xxx перформанс, странно вообще брать го, а не что-то поближе к железу.
>>3421681 > ЗАЧЕМ ТЫ ВКАТЫВАЕШЬСЯ В ИТ? Давно вкатился. А в ГОшку потому что стек у нас сейчас такой, да и синтаксис ничо так. > Чем тебя привлекает кодинг? Я аутяга. Реальный. Ебашить забывая кушать в потоке по кайфу, социализироваться - нет. Все равно конечно приходится, миты и должность заставляют, но в кодировании отдушину нахожу. > Только честно! И готов ли ты вкатиться в любую другую сферу в которой будешь зарабатывать столько же или больше? Есть только одна сфера, в которую бы хотел вкатиться кроме ойти, но физухи нет и старый уже для этого.
>>3422508 >Даю маленькую подсказку Тоже даю: на западном рынке пиздорез похлеще нашего, там глыбы компьютерсаенсные с дипломами элитных учебных заведений вылетают на мороз
>>3427287 сначала тест, в тесте вопросы уровня что произойдёт при обращении по несуществующему индексу в слайсе как создать alias для типа данных что возвращает функция len для nil слайса как создать лямбда функцию context background vs context todo количество символов в строке go что такое select с default можн сравнивать int с nil?
tasks :+ make(chan int, 1) tasks <- 1 tasks <- 2 что произойдёт если никто не прочитал до выполнения этого кода
>>3427297 >Разве существуют другие компании, которые используют Golang и активно нанимают рабоджунов? В Yadro точно нанимали джунов. Есть еще конторки поменьше.
Но да, найм стажеров самый большой в Я, Авито и Озоне.
>>3427297 >МУЖИКИ, дайте оценку тестовому Хорошее тестовое, как раз проверяет навыки крудописания + сбора метрик и логов. Ну и деплой по мелочи. Я вот 2 года в одном проработал и сходу с этим тестовым вряд ли справлюсь - ни разу не пользовался prometheus. Надо самому что ли сесть и сделать для себя, чтобы мозги размять.
>>3427309 > Я вот 2 года в одном проработал и сходу с этим тестовым вряд ли справлюсь трагедия у меня опыт в два созданных пет проекта, придётся ебашить невообразимо видимо
>>3427313 Да опыт работы это хуйня если честно. Я вот 2 года в Яндексе просидел. Научился литералли ничему - 2 года сидел и фиксил баги в легаси монолите. Каких-то больших новых фичей не делал, микросервисов так и не увидел. Да, познакомился с внутренним стеком технологий, но за пределами Я он никому не нужен, совсем. Каких-то плюшек кроме строчки в резюме лично я не получил от такой работы.
>>3427318 >Так это же самое главное сейчас? Буквально фильтр, без него до собеса не допускают даже?
Ну в целом ты наверное прав. Для начинающего разраба, джуна, мидла цифра опыта в резюме действительно важна. Но вот я просидел 2 года и кроме этой цифры ничего не получил. Местами отупел даже. Вот скоро на рынок выходить буду и попытаюсь в какое-нибудь место с обычными технологиями вкатиться. Хотелось бы конечно в какой-то новый продукт, но такого днем с огнем не сыщешь даже в благополучные годы, не то что сейчас.
>>3427318 >Что обсуждают на яндексовском аналоге двача? Половина тредов это срачи ватники vs либерахи. Оставшиеся треды это жалобы на перфоманс ревью, зарплату, грейдапы и все что с этим связано. Интересных тредов крайне мало.
>>3427297 Они охуели? Это задача на синьора и там работы на неделю потного кодинга как минимум. Только с редактированием накладной будешь ебаться несколько дней. Еще и требуют развернуть инфру, чтоб и IAM работал и саги бегали. Пусть нахуй идут с такими тестовыми, дебилы, блять.
>>3427445 Ответь для себя на следующие вопросы: 1. Как ты будешь масштабировать эту систему? Это главный вопрос в бекенде. 2. Сервисы не существуют в вакууме. Как ты сделаешь поддержку распределенных транзакий? 3. Что по идемпотентности? 4. Что делать с конфликтами, если два юзера начнут вбивать одну и ту же накладную?
>>3427544 Тут вопрос, что конкретно они хотят увидеть в этом охуевшем тестовом задании. Вряд ли монолит, они же работают на микросервисах. Вообще, в микросервисах требуются три дополнительных параметра: 1. transaction_id чтобы откатить распределенную транзакцию 2. operation_id для идемпотентности 3. trace_id чтобы собирать инфу по логам и строить красивый стек вызовов между сервисами. Все эти хуйни надо где-то генерировать и они должны быть уникальны. Клиент это не видит, он просто дергает ручку, а дальше ебись сам. В случае с сагой айдишки геренятся на старте саги, внутри саги значения уникальны (это ключи в бд), добавляем префиксом айди самой саги и получаем уникальный ключ на всю систему. Без саги - ну ты поебешься, потом все равно напишешь сагу.
>>3427457 Как я много не знаю, это ужас просто. В рамках одного сервиса - напихать транзакций с уровнем Serializable - решение или нет? В рамках нескольких - внезапно, не знаю, пойду курить про распределённые транзакции. Алсо, где искать ответы на эти вопросы? Сам ответить не могу. Есть ощущение, что надо копать в сторону КАБАНЧИКА, я прав? Спасибо, из постов на дваче узнаю много нового
>>3427651 Serializable - это сразу полный окончательный пиздец производительности. При большой нагрузке вообще транзакции не используют и ставят read uncommitted. Распределенные транзакции через двухфазный коммит так себе решение, когда зависнет координатор, вся система встанет раком. Лучше поебаться с сагой и версионированием данных в бд. Кабанчик - это справочник, очень душный. Там общая картина не показана, зато много дрочева по деталям. Лучше просто смотри выступления с хайлоада, где они обсуждают свои велосипеды, понемногу собирай информацию. Алсо может это я слишком загоняюсь, а для тестового достаточно пукнуть в бд и не выебываться.
>>3427772 >Serializable - это сразу полный окончательный пиздец производительности В моем текущем бигтехе мы используем только serializable транзакции для любой записи в таблички. И у нас монолит, кста.
>>3427772 >При большой нагрузке вообще транзакции не используют и ставят read uncommitted. То есть при большой нагрузке постгрес не используют? >зависнет координатор - все ляжет >лучше поебаться с сагой То есть когда зависнет контроллер в саге этого не произойдет? >Кабанчик - это справочник, очень душный. Там общая картина не показана, зато много дрочева по деталям Ну с таким уровнем рассуждений конечно. >Лучше просто смотри выступления с хайлоада Ахахахахахаххахаха
>>3427803 >То есть при большой нагрузке постгрес не используют? Используют. Не используют блокировки.
>То есть когда зависнет контроллер в саге этого не произойдет? В саге используется версионирование записей, как в гите. Двухфазка держит блокировки. Разницу примерно улавливаешь? Сага работает вообще для любых разных баз, 2PC между постгресом и постгресом.
>Ну с таким уровнем рассуждений конечно. Душнила, спок.
>Ахахахахахаххахаха Зря смеешься, там часто проскакивают интересные детали. И на хайлоаде рассказывают про живые системы, а не маняфантазии про чистую архитектуру.
>>3427876 Я про твою фантазию про рид анкоммитед писал вообще, для справки: but internally only three distinct isolation levels are implemented, i.e., PostgreSQL's Read Uncommitted mode behaves like Read Committed. This is because it is the only sensible way to map the standard isolation levels to PostgreSQL's multiversion concurrency control architecture.
>>3427772 >Serializable - это сразу полный окончательный пиздец производительности >Кабанчик - это справочник, очень душный. Там общая картина не показана хуево ты читал Клепмана, сыкну, теперь анонов в заблуждение вводишь.
Вообще аноны, не слушайте никого на двоче, тут одни долбаебы.
>>3427964 Свинку, кабанчик - это обзорный справочник. Вкатываться в микросервисы по кабанчику - это как вкатываться в программирование по Кормену: нихуя не понятно. Из кабанчика ты узнаешь про асинхронную репликацию и алгоритмы консенсуса, но как из этого сделать масштабируемый микросервис ты не узнаешь. Зато кабанчика любят душнилы на собесах: всегда можно задать каверзный вопрос оттуда и потом сидеть гундеть "ммм вы не понимаете основы".
>>3390005 (OP) В линкедине почти в каждой вакансии на голенг идет знание кубера is a must. Они там ебанулись? Далеко не каждый девопс сможет поднять кубер, а гейропейцы хотят эти навыки от разработчика. Кто-нибудь подавался в подобные компании, что спрашивают на собесах?
>>3428179 > 10 лет назад говорил, что у ПХП нет перспектив и с него нужно валить Меня литералли все эти 10 лет пыха кормит, и будет кормить дальше. С хера ли нет перспектив-то? Язык развивается, проекты пишутся, причём немало. Да, гошка по деньгам поинтереснее сейчас, причём я тоже знал что надо её учить, но вечно ленился, кек... Но пыха никуда не денется точно ещё десяток лет.
>>3428605 Много сейчас проектов с нуля на пыхе пишется? Только нормальных, с микросервисами, очередями и.т.д? И чтобы вакансия была чистый бекенд без фронтенда.
>>3428664 Попахивает пиздежом. 10 лет назад я перекатился с пхп на питон как раз потому, что пхп стремительно терял популярность и новые проекты писали на питоне, а на пхп было одно легаси. А теперь вдруг снова массово новые проекты на пхп пишут? С чего бы вдруг?)
Тогда же должна быть ошибка, верно? Функция отработала, x находится в стеке функции createPointer(), но почему-то не кидает эксепшн. Спросил гопоту и он сказал, что это такой йоба механизм в го есть, который сканирует память и если часть стека функции еще нужен - функция не очищается до конца, а хранит память на эти переменные. Если же я сделаю x через x := new(int), тогда стек функции отчистится полностью, ведь x - это поинтер на хиповую память, верно?
>>3428850 Изи ж, убегает в хип > go tool compile -m -m main.go /data/main.go:5:6: can inline createPointer with cost 8 as: func() int { x := 42; return &x } /data/main.go:10:8: cannot inline main: function too complex: cost 93 exceeds budget 80 /data/main.go:11:25: inlining call to createPointer /data/main.go:12:17: inlining call to fmt.Println /data/main.go:6:3: x escapes to heap: /data/main.go:6:3: flow: ~r0 = &x: /data/main.go:6:3: from &x (address-of) at /data/main.go:7:11 /data/main.go:6:3: from return &x (return) at /data/main.go:7:4 /data/main.go:6:3: moved to heap: x /data/main.go:12:18: ptr escapes to heap: /data/main.go:12:18: flow: {storage for ... argument} = &{storage for ptr}: /data/main.go:12:18: from ptr (spill) at /data/main.go:12:18 /data/main.go:12:18: from ... argument (slice-literal-element) at /data/main.go:12:17 /data/main.go:12:18: flow: fmt.a = &{storage for ... argument}: /data/main.go:12:18: from ... argument (spill) at /data/main.go:12:17 /data/main.go:12:18: from fmt.a := ... argument (assign-pair) at /data/main.go:12:17 /data/main.go:12:18: flow: {heap} = fmt.a: /data/main.go:12:18: from fmt.Fprintln(os.Stdout, fmt.a...) (call parameter) at /data/main.go:12:17 /data/main.go:12:17: ... argument does not escape /data/main.go:12:18: ptr escapes to heap
>>3428179 Go очень нишевый язык для инфры и в подавляющем большинстве случаев его не используют для написания бизнес-логики. В России Go учить смысла нет. Будете прыгать между помойными бигтехами: из Озона в Авито, из Авито в Яндекс, из Яндекса в WB, и так по кругу, каждый раз получая говна за шиворот на очередном перфоманс ревью. Либо застрянете в каком-то ноунейм болоте.
Для релокации Go тоже плох, основной стек технологий в западных конторках это жаба, питон, джаваскрипт.
>>3428881 У меня наоборот очень хорошие предчувствия насчет Го. Шесть лет назад я его не до конца оценил. А сейчас плотно поработав с питоном мне как будто глаза открылись. Мне больше не нужны все эти питоновские свистоперделки, фремворки, ОРМы.
>>3428883 В сишарпе есть понятие boxing/unboxing, в гошке та же фигня. Когда компилятор видит, что ты берешь указатель на переменную, он кладет ее в кучу и возвращает указатель. Это не с/с++, выстрелить себе в ногу не получится.
>>3428900 Го хорошо ложится на чатгопоту. Самому руками выписывать эти err != nil заебывает, а гопоту не жалко. Вот, например, я набросал в копилоте промт для простенького туду листа:
Create http service in golang for shopping list application. Do now write all code in main function. Server port comes from environment variables with default value 8080. Log errors to console. Do not report errors to the client, instead log error to console with unique key (use local time ticks), then return to the client this key and status 500. Use postgres database to store data. Do not use global db instance, instead open new connection on each http request. Open new database connection in a separate function, do not inline it. Database connection parameters come from environment variables, panic if any of database connection parameters is not set. Must use connection pooling for db. Connection pooling parameters come from environment variables with default values. Use validation for incoming request parameters. Use HTTP status codes for endpoint results and errors. Check http verb in endpoint. Must use inplace payload structures for incoming json validation, must not map request parameters to business logic structures. Shopping item has ID, name and yes/no mark. Service has http endpoint GET /list that returns json with a list of shopping items. Service has http endpoint POST /mark that sets mark to true for a specific item, item ID comes from request. Service has http endpoint POST /add that adds a new shopping item, item name comes from request. Service has http endpoint POST /delete that deleted a specific item, item ID comes from request.
Потратил часа два и тут еще есть над чем поработать. Сам бы я охуел столько кодить.
>>3428930 >Го хорошо ложится на чатгопоту тоже думаю, что это весомый плюс го. Просил нейросеть переписать сгенерированный код на го на питоне и она жидко обосралась, несколько раз я ей подсказывал и просил исправить но она так и не написала рабочий код.
>>3428881 > Для релокации Go тоже плох, основной стек технологий в западных конторках это жаба, питон, джаваскрипт. Только возьмут джавистом не русского понаеха, а своего местного. Надо скиллы качать с меньшим числом голодных ртов на место. Сейчас бы как раз на ГОшку и педераст смотрел, да.
>>3429392 нука подробнее про логирование на любой выпук пишу fmt.Errorf("что то не так") прокидываю это говно до уровня хендлераи там уже slog.Error("err", err) всё так или проебался?
>>3426585 Я, вкатун вообще без коммерческого опыта, уже второй раз подаюсь - в первый раз охуел со сложности(БД до этого не трогал, Джокер в первый раз пощупал), но сделал за бессонную неделю, как итог - не прошел В этот раз подумал, что ну уж с прошлого-то раза все должно быть легче, но все равно охуел, да еще и проебланил момент - в 23:50 запушил решение задания, дальше ночью докоммичивал уже тесты Сегодня увидел, что, судя по трафику ГХ, они клонят решение в момент дедлайна, похоже, так что покрытие тестами вышло 0% Вышел, как и в прошлый раз, рабочий сервис, с несколькими выполненными дополнительными заданиями, но что-то надежды я все равно особо не ощущаю - как минимум операции с бд в половине случаев грязные - я вынес в отдельные функции несколько распространенных операций, но у меня не было времени разбираться с контекстами для бд транзакций В целом, конечно, по ощущениям это все полный пиздец - если такое просят от стажера 40к зп в месяц, джуна попросят прошлого СЕО воскресить? Миддлы скорость света и силу гравитации перелопачивают для того, чтобы миникабаныч мог партию трусов сбыть на 0.01% быстрее? Но выбора особо нет, все без опыта/джуновские вакансии меня успешно заигнорили (я был бы очень рад преувеличить, но вакансий такого толка было крайне мало)
>>3432787 Анон выше скидывал задание, вот https://github.com/avito-tech/tech-internship/blob/main/Tech%20Internships/Backend/Backend-trainee-assignment-spring-2025/Backend-trainee-assignment-spring-2025.md Нейронку юзал, без нее бы я не написал ебанистический запрос к бд для сбора инфы по сущностям с 3-мя уровнями вложенности, да и тесты они очень помогают писать, я обычно к моменту, когда приходит время писать тесты, уже выматываюсь порядочно - сроки сжатые, инфы много Для остального стараюсь сам, чтобы набить руку на такого рода задачах - просто у меня то, чем я развлекаюсь и что пишу для себя, не сильно подходит под коммерцию, есть такое ощущеньице(типа, запилить триде движок в терминале, переводчик на брейнфак, бот для дискорда) Согласен с мыслью, что нужно сразу на миддла, но есть несколько страхов 1) Даже если я вдруг куда-то попаду, не умру ли я от миддловских задач? Я совсем не понимаю, готов ли, при том, наверное, даже не столько в плане программирования, сколько в плане всякой бюрократии/формальностей, мне кинут под ноги на входе репозиторий, я его облизывать начну, а надо было перешагнуть, в таком духе 2) У меня нет опыта, накручу я какую-нибудь несуразицу, по которой даже ничего пояснить не смогу - опыта-то нет Но тут, наверное, выход пойти к волчаре и купить накрутку+легенду, чтобы это хотя бы не выглядело как будто вкатуныш пытается рассказать, как он себе представляет процессы в компании
>Авито Недавно разговаривал с их рекрутершей, предлагал меня взять за 150К \ мес. У меня 10 лет опыта в бекенде на питоне, гошку учу пол года. Посмотрели резюме и даже на собес не позвали. При том, что у меня в резюме реально интересные проекты с микросервисами, кафками, канкаренси и.т.д. Хуй знает кого они тогда ищут и какие у них требования...
>>3432934 > придумайте за меня идею пет-проекта, а я реализую Я тебе уже ответил в ньюфаго-треде, сделай аналог трелло со встроенной базой, чтобы можно было легко запускать на отдельной машине.
>>3432934 запили генератор кода чего нибудь, например есть sqlc который генерирует методы на основе sql. Может структур конфига на основе yaml файла или еще какой-нибудь дрисни.
>>3432986 Трелло - это канбан доска. >делал такое в вебе >в чём прикол пилить десктоп? Ну можно веб сайт открывать, запущенный на этой же машине. Прикол в том, что аналоги трелло для локального запуска - это слишком простые/ограниченные проги или развесистые на пыхе, которым нужна ещё постгря в качестве базы. А вот так, чтобы как трело, но с одним бинарником и встроенной базкой - таких продуктов я не встретил.
>>3426585 Кулстори про авито, Ходил к нам на собес на техлида команды из 4 человек. Сам я и так техлид в одной крупной продуктовой конторе.
Так вот, собес был удаленно с каким то жирным толстяком у которого рожа была на весь экран. Я сам то тертый калач, и этот хуй пошел по пути собеседования когда тебе задают кучу рандомных вопросов в поиске того, что ты можешь не знать. В итоге он до меня доебался, что я не знаю как строить графики KPI в жире блядь. По коду он сам везде проседал, т.к. этот жиртерс уже несколько лет сам не кодит, а в жире тикеты передвигает.
такие дела.
Вообще, во всех этих конторах всегда есть чуваки, которые там просто очень давно сидят и от того, получили какой то авторитет в компании. Который они всеми силами стараются сберечь. И если видят что к ним хочет пойти работать кто-то лихой и шутливый, то для таких толстяков - это угроза
>>3432804 По времени - вечером 8-го числа прислали, дедлайн был до 14-го включительно, т.е. 5 с половиной дней, получается, а если учитывать, что расчет потенциально на занятого студня/работягу, который и стажериться не фултайм будет, то полноценных дня 3, я думаю По поводу того, что дает выполнение - прошлое тестовое дало мне наконец посмотреть докер, поработать с бд, к этому разу я уже изучил часть подводных, если заходить +- по колено, а на этом тестовом я еще и на ходу разбирался, как опенапи спеку подкорректировать для более правильной кодогенерации, не ломая, собственно, саму схему (правда, у них там кириллица и это все равно генерило интересный нейминг, типа ProductTypeОбувь) Жаль, прометей присобачить не успел, так была бы еще + технология, но это надо уже сейчас, в спокойной обстановке, поделать На синьора, конечно, вдохновляет, но без опыта особо не попляшешь
>>3433057 Вот(с флажком фоткаться не буду, предыдущий как-то неудачно провалился внутрь и наискось встал, не достать) https://github.com/ST359/pvz-service Если что, обращения к бд сделаны говено (как, наверное, и все остальное, я не могу сам оценить), там точно аномалии грязного чтения и фантомов будут - я вынес проверку на существование нескольких штук в отдельные функции, но из-за сжатых сроков не успел разобраться, как контексты под транзакции прокидывать(прочитал, что что-то такое есть под схожие случаи, надо будет наверстать)
>>3433077 почему не ddd? почему gin а не net/http? почему подключение к бд не в конфиге/клиенте а в репозитории? выглядит заебись, буду разбирать, думаю дохуя для себя подчерпну студентота?
>>3433088 Да откуда бы мне знать, я самоучка безопытный, а на прошлое тестовое, например, фидбека и не было Надо погуглить, я даже и не подозревал о таких моментах >>3433090 Не DDD, потому что я не знаю, как - увидел когда-то паттерн с репозиторием и в стесненных условиях его и юзаю Gin - это одно из требований, выбора не было(хотя, наверное, если бы был, я бы все равно юзал его, потому что привычно, но привычность - единственный для меня плюс, я бы не пояснил, чем он ценен сам по себе) Подключение к бд в репке потому что я только такой вариант и видел, у меня нет других примеров Не студентота, я рухлядь древняя 29-тилетняя, уже был сениор-рисовакой в геймдеве
>>3433105 Да не, я без претензии, если что, это скорее было "ну а чего ожидать от вкатуна-самоучера", спасибо за наводку, анонче Уже образовываюсь по этой теме, читаю стаковерфлоу, странно, что не натыкался, проблема, видимо, нередкая
>>3433128 Кодил на змее, потом кодил на жиесе, жиес мне прямо очень не зашел, не знаю, не удалось прочувствовать, кажется, будто на небольшого старательного пацана корпораты поверх строительным степлером наклепали куски мяса, железки всякие, свистоперделки На питоне нормуль, долгоиграющий проект(бот для дискорда), которым ежедневно 20 человек пользуется уже года 2, на нем есть, но все равно что-то немного не щелкает, хотя писать, конечно, приятно Но как я попробовал го - мне прямо понравилось, все довольно стройно, последовательно, на нем, к тому же, меньше конкуренции(скамбокс учил народ питону, а не го), свежие проекты начинаются сейчас начинаются на нем в ощутимом проценте случаев, старые переписываются на го, да и зепки поплотнее, куда без этой части мотивации(за исключением того, что до зепки я вряд ли когда-то доберусь, лул) А вообще сам язык будто бы не столь важен, сейчас знание языка это, как мне кажется, процентов 30-40, нужна куча сопутствующих технологий, которые, если не одинаковы, то схожи много где Да и судя по тому, что я вижу, ебатория без опыта сейчас практически везде
>>3433161 Спасибо, приятно слышать, но я бы, наверное, оценил на уровень "час в день можно посмотреть без сварочной маски с пяти метров" В целом программирую относительно осознанно с июня 2023(с уровня "понять, что такое классы и переменные"), но я плотно работал некодером параллельно, для изучения тогда был питон, в 2024 почти прошел бекендерский курс RSSchool с жиесом(чуть не помер, на старте жиес только дней 4-5 ковырял), и вот в этом году 16-го февраля сделал первое тестовое на гошке, получается, в нем я месяца 4
>>3433236 >не стоит писать на го? Например, ебалу с ProductTypeОбувь, которую выше анон пишет. Что стоит писать на говне, вернее, даже переписать лол,, например, это CUPS.
>>3433250 Хм, мне, напротив, думалось, что примерно для таких вещей он и разработан гуглом, не показалось чем-то противоестественным в процессе(кроме того, что столько ебалистики нужно знать на стажера) Но, как бы оно ни было, музыку заказывают кабанычи, так и кручусь
>>3433258 Ну всю жизнь подобное пишут на джава дрисне, почему нужно менять инструмент, который работает? >>3433262 >разработан гуглом Для системного программирования.
>>3433250 это я уже понял, конкретнее, что именно дает питон при написании ебалы ProductTypeОбувь что не дает го? только конкретный пример а не общие фразы типа пук среньк проще, быстрее
>>3433264 >всю жизнь подобное пишут на джава дрисне Так было до выхода го_вна. >Для системного программирования Нет, он в первую очередь для микросервисов делался, чтобы минимальный отпечаток был и собирался бинарь под разные платформы.
>>3433276 >что именно дает питон Я не писал про питон в этом ключе. Про питон было сказано, что он на порядок сложнее го, поскольку в нём оче много фич. >>3433285 >Нет Засовывателя го во все дыры ответ.
>>3433292 Я уже выше озвучил своё авторитетное мнение, если очередной пыникс с микросервисами и вебдерьмом в чем-то несогласен, кто я такой, чтобы заниматься образованием дебичей.
>>3433291 >Я не писал про питон в этом ключе. ну все, съехал с темы. По факту не важно питон, жаба, колодец... современный бекенд это микросервисы, а микросервису нафиг не нужно развитое ООП.
>>3433315 Объективно каким бы разработчик хорошим не был, ему слишком много вещей незнакомо и не привычно на новом языке. А ты планируешь свичнутся в го с сохранением зп и уровня?
>>3433315 И что тут не так? Экспертиза любой вебмакаки исчерпывается знанием ФРЕЙМВЁРКА, на котором вебмакака делает единственное, что она умеет — круды. Поскольку фреймвёрки ПеХоПе Яндекс в своих крудах не использует, ПеХоПе за опыт он не считает — зачем ему бесполезная макака, которая не приносит ВЭЛЬЮ здесь и сейчас?
>>3432847 >гошку учу пол года Что там учить полгода? Голанг простой язык, не раст дроченый. У меня перекат с сишарпа занял неделю с чатгпт. Если ты понимаешь, как вся хуйня работает, ты просто пишешь в промте "use postgres, use grpc, use kafka with outbox" и нейросеть генерит тебе простыню кода.
>>3433334 По сравнению с питонов го другой подход к построению приложения. Изучаю лучшие практики, как применять патерны. Распостраненные библиотеки для работы с бд. очередями. логами. энвами и.т.д. Короче чтобы мог плюс минус так же сесть и написать сервис с минимальными подсказками.
>>3433348 как ты поймешь хорошо нейросеть написала или плохо? Например какой подход ты бы использовал для передачи пула подключений бд в обработчики запросов ?
>>3433350 Вариант раз: глобальная переменная. Используется в 99% кода, потому что го это не джава и не надо сюда тащить энтерпрайзное безумие с AbstractProxyFactorySingletonBean. Вариант два: параметром через замыкание. Тоже встречается. Вариант три: обернуть бд в интерфейс и инжектить его через убер, но это уже пованивает энтерпрайзом. Прям сильно так пованивает. Ты скажешь: а как же чистый код, ДДД, АБВГД и 100500 уровней абстракции над абстракцией? Это нахуй не надо. Юнит тесты для бизнес-логики бесполезны, лучше написать один интеграционный тест с реальной бд в докере.
>>3433344 Спасибо Про коннекты пулом до этого прочитал, подумал, что без пула каждый запрос будет ждать, пока освободится один единственный коннект к БД, оказалось, я не правильно понял, что такое пул соединений - изкаробки sql/db и psql и иже с ними поддерживают, судя по всему, открытие множества соединений, но это не пул, а под пулом имеется в виду заранее создать и держать некоторый запас соединений для переиспользования, без открытия новых без крайней надобности, я правильно понял? Почему-то было ощущение, что такой прикол мог бы быть абстрагирован, не думал в эту сторону По поводу тестового - у меня и самого руки порой опускаются, одно из предыдущих тестовых в какие-то рогакопыта вообще заигнорили(благо, заняло день), и, я так думаю, это очень распространенная практика, но делать нечего, приходится учиться профессионально терпеть(более того, я каждый раз стараюсь что-то новое узнать в процессе, так хотя бы не возникает ощущение, что время потрачено совсем впустую)
Пару задач с сегодняшнего собеса на которых я обосрался
1. Возвести элементы в квадрат. (исходный список отсортирован) // [-3, -1, 0, 2, 3, 10] => [0, 1, 4, 9, 9, 100] Требуемая сложность О(n).
2. Есть журнал заселения отеля, в которых есть пары чисел - дата заселения и дата выселения, например [[1, 2], [4, 10], [3, 7]], надо узнать сколько комнат надо.
Мне кажется или сложновато для джейсоноукладчика бекендера. раньше по проще задачки были. Или вы их сейчас за секунды решите без нейросетей и скажете какой я долбоеб?
>>3433395 Идея в том, что ты не держишь коннект со старта сервера, а берешь каждый раз новый из пула.
Промт для копилота:
write service in golang. use pgxpool. acquire new connection, start and commit/rollback transaction on each request in a separate function, then pass connection to the handler. handler is a separate function.
Код:
package main
import ( "context" "fmt" "log" "net/http"
"github.com/jackc/pgx/v5/pgxpool" )
type Server struct { dbPool pgxpool.Pool }
// acquireAndHandleTransaction manages connection acquisition and transaction lifecycle func (s Server) acquireAndHandleTransaction(ctx context.Context, handler func(context.Context, pgxpool.Conn, pgx.Tx) error) error { // Acquire a new connection from the pool conn, err := s.dbPool.Acquire(ctx) if err != nil { return fmt.Errorf("failed to acquire connection: %w", err) } defer conn.Release()
// Begin a transaction tx, err := conn.Begin(ctx) if err != nil { return fmt.Errorf("failed to start transaction: %w", err) }
// Execute the handler with the connection and transaction if err := handler(ctx, conn, tx); err != nil { // Roll back the transaction in case of error if rollbackErr := tx.Rollback(ctx); rollbackErr != nil { return fmt.Errorf("rollback error: %v (original error: %w)", rollbackErr, err) } return err }
// Commit the transaction if commitErr := tx.Commit(ctx); commitErr != nil { return fmt.Errorf("failed to commit transaction: %w", commitErr) }
return nil }
// standaloneHandler is the request handler function func standaloneHandler(ctx context.Context, conn pgxpool.Conn, tx pgx.Tx) error { // Perform transaction operations _, err := tx.Exec(ctx, "SELECT now()") // Example operation if err != nil { return fmt.Errorf("transaction operation failed: %w", err) }
>>3433421 >Требуемая сложность О(n) Как блеать?! У квиксорта NlogN
>журнал заселения отеля Отсортировать по первой цифре. Идем по списку, на каждой итерации делаем счетчик +1. Если начало текущего интервала больше конца предидущего, делаем счетчик -1. Сложность NlogN из-за сортировки.
Вообще конечно пиздец. Ни слова про пулы и аутбоксы, дрочи литкод, литкод сам себя не подрочит. Потом получается яндекс маркет.
>>3433421 Элементы в квадрат я бы возводил с двумя указателями, отыскав для начала самое маленькое число в абсолютном значении, т.е. там получится 2n в худшем случае, что, вроде как, считается O(n) Нашли число, возвели в квадрат - ставим на него два указателя - шагаем влево и вправо(с соответствующими условиями, чтобы не выйти за пределы списка и чтобы в нужный момент "выключить" указатель, который уже уперся в край и отдал число под собой)- сравниваем числа под указателями в абсолютном значении - меньшее возводим в квадрат и ставим в результат - двигаем указатель и т.д. Вторая задачка - анон выше, вроде, решил, я бы не догадался на ходу
>>3433892 через часик заходи в дискорд я тебе расскажу открою первую ссылку в гугле и мы будем разбираться что это за хуйня а по факту - https://www.youtube.com/watch?v=VyUGi8_n66A неплохая но обзорная, начни с неё
>>3433965 бигтех (а golang только там) требует ddd если сильно пизданутые - ещё и clean architecture щитоподелать, корпоративный код такой корпоративный
>>3435368 а как же проектирование и организация кода без ддд? >Задавай вопросы. какой наиболее популярный (а значит правильный и единственный/неповторимый) способ JOIN'а данных в микропенисах? запрос к бд1 -> получение сущности где есть атрибут FK -> передача FK через кафку (Достаточно ли её скорости для этого, или, например, вебсокет будет лучше?) -> запрос к бд2 -> склеивание получившегося результата из 2 сущностей - это хороший подход или не особо?
>>3435521 >а как без ддд Очень просто, используешь его имплицитно, для проектирования и организации достаточно знать структуру гошного проекта и иметь базовое представление о дрочении на слои, депенденси инвершене и всем таком. Углубленные познания в ддд нужны скорее как набор конкретных ритуалов при работе с одержимыми ими шизиками, если ты пытаешься каким-то бест практисам следовать, у тебя в итоге это ддд вылепится само по себе. >как пукать Какую задачу ты решаешь, посылая этот fk через кафку? мимо
>>3435521 >способ JOIN'а данных в микропенисах Ты только что распределенный монолит. Так часто пишут новички, которые воспринимают слово "микросервис" буквально, а не как маркетинговый пиздежь. Правильно - это объединить эти два микросервиса в один и делать джоин внутри бд. Алсо кафка - это входящий буфер, когда у тебя 100500 датчиков долбятся в одну ручку. Масштабирование на запись. Не надо пересылать сообщения через кафку, надо писать саги.
>>3435797 >структуру гошного проекта Это (https://go.dev/doc/modules/layout) или (https://github.com/golang-standards/project-layout)? Про дрочении на слои и дип знаю, поэтому сейчас без задней мысли делю всё на model/router/handler/service/repository, но это не go-way, как я понимаю? >Какую задачу ты решаешь, посылая этот fk через кафку? Ну как я понимаю, у каждого микросервиса - своя БД, иначе действительно монолит, вот и думаю, как связывать данные в разных БД. >>3435811 >>3435826 >как шину событий и заебись Думал она для этого и нужна, лол >а не как маркетинговый пиздежь Что не так с микропенисами? Для себя вижу 2 плюса: 1. Можно набрать любых бомжей с улицы для разработки - бизнес выигрывает от этого 2. В случае отъёба одного микропениса, остальные продолжают работать
Есть у кого пример типовой крудопараши на пару сущностей, которой вы можете поделиться?
>>3435970 >делю всё на model/router/handler/service/repository, но это не go-way, как я понимаю? Почему? Просто засунуть их в internal/ и сразу всё go-way
Вкатываюсь в Го, хочу написать api небольшое с базой данных и jwt токенами. Какую библиотеку взять в качестве основы? Щас сделал на mux по туториалу, но туториалу уже 6 лет. Какую библу взять для бд? только не орм не предлагайте, хочу писать sql
>>3436227 Тогда какая разница, какие либы взять? Любые. Всё равно руками эти имплементации не пишут уже. Взял модель, взял интерфейс, и пусть курсор ебашит. Шаблоны учи и архитектуру, чтобы промты правильно задавать.
>>3436238 Не знаю, как курсор в работе, но сайт у них тормозит просто пиздец. Такая-то реклама АИ кодинга, лол. Еще эту хуиту надо ставить на комп, а копилот работает из браузера. Я использую копилот для генерации кусков кода как образец, потом подгоняю их под проект, чисто на одном промте все сделать не получится.
>>3436559 пасибо. тогда буду смело пиздеть. всё равно я так посмотрел по собесам - знание языка это последнее что спрашивают, везде спрашивают именно про технологии всякие
>>3436238 Ты сломал все мои шаблоны. Я думал что на бэке крудошлёпством занимаются, собсно сам это и делал на ноде с пет проектами. Что же делают прогеры на бэке если не крудошлёпят?
>>3436587 >Что же делают прогеры на бэке если не крудошлёпят? Пока кабаны не прочухали – работают час в день, суют промты в курсор и не глядя кидают пр.
>>3436575 >до меня добираются только резюме интересных кандидатов Классика. Сначала тупые пезды отбирают улыбчивых волчар, потом лид в ахуе от кандидатов. Оставшиеся за бортом прекрасно знают и про алгебраические типы, и про утиную типизацию, но один из них был хмурый, второй проработал на одном месте 6 лет, третьему за 40 - красный флаг нет пути.
Мечтаю создавать свои проекты в web и около того. Есть несколько идей. Изучаю Петухон, нравится, получается. Но смотрел обзоры и сравнения - Го намного шустрее, даже чем даже FastAPI.
Как думаешь, хорошая идея не бросать Пиструн, а просто параллельно изучать Гошечку и юзать оба? На Пиструне сделать упор на анализ данных и простенький ML с шансом в рост. А на Го - всё остальное. Нормальный план или хуйня?
Устраиваться на работу не мечтаю, потому что меня и так не возьмут. Упор на реализацию своих проектов, о которых давно мечтаю. Фронт пока отдам нейродебилам, незамысловатые вещи они делают вполне нормально, а потом может быть друга или компаньона найду на фронт.
>>3436792 Твои проекты хайлоад? Ответ очевиден: если делаешь для себя, то пиши на том, что нравится. К конкретному языку привяжешься, если решишь на работу вкатиться, да и то выбирают по зепкам, а не потому что какой-то язык "лучше" другого, это холивары для даунов.
>>3436731 Да там чисто набросочная тема, но так чисто для себя вопросы ок. >тупые пезды отбирают Согласен, баб нельзя допускать до серьёзного дела, слушать их тоже не надо, только во вред.
>>3436834 >работы НЕТ если у тебя нет опыта работы Так я и не ищу работу для Go. Я хочу сделать своё. Будет это коммерчески успешным или нет - мне не слишком важно, точнее я об этом не думаю. Я просто чувствую, что должен. Поэтому подыскиваю подходящий инструментарий.
>>3436792 Питон + джанго хорош для быстрой разработки. Если хечешь сделать в одно рыло проект, то лучше связки не найти. Там и фронтенд не нужен, в джанге есть свой шаблонизатор.
Го стоит брать когда высокие нагрузки и архитектура микросервисная. Пока у тебя нет 1000 запросов в секунду к твоему сайту про Го можешь и не думать. Смысла нет распылять силы на 2 языка.
>>3436976 >Го стоит брать когда высокие нагрузки и архитектура микросервисная. Пока у тебя нет 1000 запросов в секунду к твоему сайту про Го можешь и не думать. Смысла нет распылять силы на 2 языка. Или пишешь системный сетевой софт ВЕБЧИК ПО УСБhttps://github.com/OpenPrinting/ipp-usb
Есть такое тестовое на джуна. Проблема - я нихуя не понимаю, что я должен сделать. >получать результаты работы задач Понимаю, что тестовое на проверку работы с горутинами и context.WithTimeout() Но нихуя не понимаю, что делать дальше. time.sleep насовать как имитацию бурной деятельности или как?
>>3437362 ну сделай отдельный пакет таск. там структурку Tasks и методы для нее: добавить задачу, получить статус задачи, отменить задачу, получить результат работы задачи.
ну и главный метод Ран который будет в бесконечном цикле брать задачи из очереди и запускать горутины. Еще предусмотри настройку макс задач параллельно.
Еще один пакет api в котором будет стандартное рест апи гошное. Ну а в пакете мейн просто вызовешь в отдельной горутине таск Ран и ниже свой апи сервис.
Имитировать работу тайм слип.
Не кислое тестовое на самом деле, это в какой конторе такое дают?
>>3437362 Вот тебе промт для копилота: write service in golang. service runs long tasks in a gorutine. use map and RWMutex to store task status. write endpoint to launch a new task. write endpoint to check task result by id.
Сап! Поделитесь опытом, кто хранил строки в синк пулле. Моя приложулька просто подыхает от невероятного количества аллокаций. Переиспользую все что можно переиспользовать. Кроме строк. Как их переиспользовать и не обосраться феерически?
>>3437730 Хуйня конечно будет, потому что ты можешь только слайсы байт в пуле хранить и надеяться, что длины хватит. Но всё равно будет аллокация при конвертации в строку. От конвертаций можно избавиться, если через рефлексию вытаскивать/создавать указатели на строки и работать с ними как на си, аренку собрать можно.
>>3437750 Не, а если через unsafe? Делаешь байтики, пишешь в них что-нибудь. Дальше делаешь вот такую операцию (string)(unsafe.Pointer(&b)), чтобы получилась строка. Сбрасываешь длину слайса байтов и давай по новой.
>>3437753 Так это и есть через unsafe, только тебе рефлексия + unsafe нужны. (string) работает над слайсом байт или рун, не над голым указателем (хотя я не пробовал конечно)
>>3437765 RTB-аукцион. На каждую ноду влетают тысячи запросов в секунду 24/7. Нишевые базы данных, огромное количество алгоритмов фильтрации трафика, нейронные модели. И всё это на каждый запрос.
>>3437799 Может пришло время масштабировать систему, а не вешать весь трафик на один сервер? Суровое байтоебство актуально только в ембеде, где физически не засунешь в ракету больше железа. В клауде просто ставишь рядом еще одну стойку. Это дешевле, чем дрочить байты и в итоге все равно обосраться
>>3437730 Не храни строки, храни байты. Т.е. если прям совсем хочешь упороться по перфомансу храни слайсы массивов байт. Тебе пришла строка, скорее всего она будет UTF-8. Ты берешь из пула N массивов стандартной длинны M и пишешь туда строку и всё это пихаешь в свой кастомный тип. Ну и для этого типа надо реализовать базовые операции: сериализация в жсон, запись в лог и т.п. При деаллокации твоего объекта возвращаешь строки в пул или метод Close() возвращает строки в пул, последнее предпочтительней.
>>3437809 Лейтейнси так забороть можно только на очень жирных серверах. Где памяти будет на порядок больше чем в текущем, так чтобы ГЦ вызывался очень редко.
>>3437730 >Моя приложулька просто подыхает от невероятного количества аллокаций. >RTB-аукцион. На каждую ноду влетают тысячи запросов в секунду 24/7. Нишевые базы данных, огромное количество алгоритмов фильтрации трафика, нейронные модели. И всё это на каждый запрос. Вангую тут бы просто зарешал незумероподход на одном современном CPU.
>>3437799 Я чот такое видел только во всяком hft, но там один C++ кругом. Не уверен, что думаю, что на ебле со строчками ты мало что выиграешь в перфомансе. Про unsafe тебе сказали, можешь еще в C-биндинги и CStrings копнуть, всяко попроизводительнее будет чем гошный string.
>>3437753 >>3437812 >>3437818 Аноны вы в какой сфере таких знаний набрались? Дрочу ваще ойти уже почти два года, но ощущуение такое что предела нет. Что учить чтобы знания в ойти полезными были?
Для себя выделил полезными знания в области компьютерных сетей, адресация, сетевые протоколы
>>3437847 Тебе нужны просто знания или полезные знания? Если просто знания иди учи свои сетевые протоколы. Если нужны полезные знания тебе нужно решать проблемы бизнеса.
>>3437847 >Аноны вы в какой сфере таких знаний набрались? Дрочу ваще ойти уже почти два года, но ощущуение такое что предела нет. Что учить чтобы знания в ойти полезными были? Такая же хуйня, бро. Только думаю, что захватил хотя бы основы, хотя бы половину основ, но нет - незнаком буквально КАЖДЫЙ НАХУЙ ТЕРМИН. Такое ощущение, что нейронка в которой я нахожусь просто издевается надо мной: только-только продвинусь, она на ходу выдумывает целую гору непонятной хуйни, превращая всё это в снежный ком.
Есть кто делает фронт из под go? Делают стартапик помочь некому, а сам лезть в js не нахожу в себе сил и жизненных способностей. Или это тухлая тема и все равно придется выдрочить хотя бы базовый js с реактом?
>>3438299 Идёшь и гуглишь каждое слово ебаное. Но вообще самое верное кмк - искать любую работу за дошираки лишь бы начать решать реальные задачи. В офис ходить КРАЙНЕ желательно. Иначе охуеть можно.
>>3438330 >искать любую работу за дошираки лишь бы начать решать реальные задачи да я блять сам дошираки готов давать только возьмите на работу мимо магистрант 1 курс нет опыта нет работы пиздос
Господа, просите за нубские вопросы. Если я хочу делать Андроид и иОС аппки к моему веб-приложению, у которого уже готова вся инфраструктура, то в какую сторону мне смотреть? Я хочу сделать так - создать какую-то фронт апку, вся логика которой будет на api, а в телефоне чисто визуальная болванка. Как реализовать, куда смотреть?
>>3439110 Но ведь бизнес-логика может быть очень сложной и запутанной. Причем с постоянными изменениями и упдейтами от кабана. Декораторов нет, ООП нет... Нет, я не спорю, без них можно обойтись вполне, но мне кажется, что именно бизнес-логику писать на Go, особенно поддерживать ее - это такое себе удовольствие на любителя обмазываться говной. Пруф ми вронг.
>>3439132 Кейс-бай-кейс, братан. Здесь нет смысла рассуждать сферовакуумными теориями. Го не может плохо подходить под требования конкретного бизнеса – ну ок, пусть пишут на другом. Но кмк такие ситуации исключительно редки, скорее просто архитекторы говно. Вон все маркетплейсы на Го сидят, уж где может быть ещё больше постоянных апдейтов от кабана с требованиями сделать всё позавчера.
мужики, поясните подал резюме, написал проджект менеджер, начал сразу спрашивать про желаемую зп, тестового нихуя не было это норм или чё за хуйня вообще? мимо без опыта работы
>>3439310 Говори, что готов работать бесплатно просто за предоставляемое тебе право убираться в офисе после работы.
GOвна уже слишком много - бигтех раздул хайп вокруг GO до такой степень, что даже дристуны, которые не видели на своих проектах и 10k rps начали срочно переходить на GO. Мне постоянно реклама с goвно-курсами и goвноменторством идет. Как в 2021 в Пиструном.
>>3439330 Наверное это нормальный диалог. Он(а) явно изменяет тебе с другими собеседует и других кандидатов, чтобы потом кабанчику предоставить отчет, как много и тяжело он(а) работал(а).
Можешь пожалуйста поделиться инфой как ты изучал Go. Что читал, какие курсы, что смотрел. Из того, что считаешь годным, кроме го тутор конечно.
>>3439347 миллионы видосов на ютубе - мастхев, русские очень годно пилят контент по голангу, советую Николая Тузова и в принципе всех нищеёбов с 500 подписчиками Алсо, ChatGPT ОЧЕНЬ хорошо рассказывает про голенг, просто охуенно Если можешь в ангельский - пирать курс (fulltimegodev) от AnthonyGG и смотри его видосы на ютубе, их там дохуя, он конечно в край ебанутый - но годный мужик
>>3439351 >советую Николая Тузова Этот питуз вечно впрягается за жидбрейнс и банит всех, кто хоть что-то в их сторону не положительное скажет. И хвалится тем, какой он казах крутой. Тоже ебанутый, короче.
>>3439365 про мапу и планировщик он заебись объяснил %%мапу после этого видоса поменяли, если не ошибаюсь) >жидбрейнс залупа, на время обучения их автокомплит = хуета, на работе - заебись а ещё у них тема говно пиздец, а новый ui вообще до связи
>>3439110 >Но ведь бизнес-логика может быть очень сложной и запутанной. Причем с постоянными изменениями и упдейтами от кабана. Декораторов нет, ООП нет... Нет, я не спорю, без них можно обойтись вполне, но мне кажется, что именно бизнес-логику писать на Go, особенно поддерживать ее - это такое себе удовольствие на любителя обмазываться говной. Просто приходится много писать, много похожего кода. Зато он достаточно прямолинейный и читается легко. Хотя конечно надо следить за чистотой кода и чтобы не злоупотребляли интерфейсами.
Но в целом >>3439146 >Кейс-бай-кейс, братан. прав. Случаи бывают разные, что за система, что за разрабы и т.п.
>>3435521 >какой наиболее популярный (а значит правильный и единственный/неповторимый) способ JOIN'а данных в микропенисах?
никак микропенисы должны быть отдельными bounded context как говорят в твоем любимом ддд то есть никаких транзакций и джоинов между баундед контекстами
>>3441089 В смысле - как? Дергаешь из 1 сервиса 2ой по user_id ручку getOrders - получаешь заказы юзера. Во 2 сервисе заказы лежат в БД в привязке к юзеру.
>>3441174 вот меня именно передача user_id в другой сервис интересует kafka как шина событий? банальный запрос по rest? websocket нахуй? >>3441273 я токо вкатываюсь, обещаю разобраться и понять
>>3441292 От сценария зависит. Если что-то типа "юзер заходит на страницу посмотреть свои заказы" - то зачем тебе асинхронное API? Шлешь обычный http запрос на свою ручку в сервис который занимается заказами - он делает выборку по user_id из таблицы заказов и отдает в ответ.
Асинхронное API нужно для каких-то операций которые занимают длительное время, могут выполняться в фоне и которые можно и нужно ретраить по необходимости.
>>3441292 Пишешь сагу, которая параллельно вызывает UserService.getUser(userId) и OrderService.getOrders(userId) Сервисы UserService и OrderService ничего друг про друга не знают. Шина событий не нужна, это неправильная архитектура.
Тред говноедов-анальников в рабстве у бигтеха. Расходники, сосите хуй своего биг-кабана. Если получится попасть к нему в анальное рабство конечно, 99% будет оббивать пороги, проходя бесконечные собеседования.
>>3442187 Устроюсь в Яндекс доставщиком, потом дорасту до разработчика, главное себя хорошо зарекомендовать! Ну и что, что зарплата не намного выше будет!? Зато строчка в резюме!
Кстати, а если реально курьером в яшку вкатиться, а потом трудовую показывать на собесах прокатит или они там записывают четко "яндекс еда ооо я не лох"?
>>3443301 Современные IDE нужны не для кода. С ним теперь даже блокнот справится. Ты же будешь работать с базами, апи, кэфкой, монгодиби, правда? Вот для этого и нужен жидбрейнс.
>>3443301 В го другая философия, тут нет ебучих патернов и адаптеров над адаптерами. Ты просто пишешь код, который просто решает задачу без AbstractProxyFactoryDecoratorBean говна. Поэтому тут и навигация по коду особо не нужна, достаточно раскраски. Я даже отладчиком не пользуюсь, пишу интеграционные тесты на питоне и fmt.Println в консоль.
>>3443323 Пукать сообщениями в кролика привык через админку, селекты и /dt+ через сосноль, зачем нужен житбрейнс для протобафа и прочей графдракуэльщины не поня - через makefile локально в одну команду разворачивать тулзы тупо удобно и не тормозит.
Дебаг прода - будет интересным экспириенсом, умею в сосноле на серваке переопределять и вертеть кодом как надо.Тут динамико-параша отличается от компилируемых яп, ну а хуле обезьяна палку научилась держать и я научусь работать с го.
>>3443301 >покупать IDE от житбрейнс Ты имеешь в виду есть ли смысл качать с гитхаба скрипт который сбрасывает раз в месяц триальный период? Впринцепи да, идешка удобная.
>>3441517 >Пишешь сагу, которая параллельно вызывает UserService.getUser(userId) и OrderService.getOrders(userId) сага это транзакция какие нах транзакции на рид запросы )0)0
>>3443711 Ахах это же тот додич, что рассказывал как он в Сбер на го залетел и говнокодил там с нейросетями пока его не турнули. А теперь свой курс сделал и лохов ищет.
>>3443711 У меня так знакомая купила курс: "перевод рациона кота на натуралку" за 7300 рублей. То есть буквально курс как начать кормить кота свежим мясом, блять. На 7300 рублей можно было купить 10кг отличной говядины, но нахуя, лучше курс от инстапизды купить.
На натуралку так и не перевела
Ещё недавно увидел курс диджея на радио. Всего лишь 54900 рублей. Вся суть курсов что они не помогут. Замотивировн? Рутрекер, телега и llm в помощь.
>>3444461 Goвно - это высер корпоратов, чьей единственной целью является извлечение прибыли из своих штатных единиц при их минимальной квалификации. Научиться работать с эксепшенами сложнее, чем с ифами, даже если это засоряет код. Всё просто, родной, всё очень просто. То есть, буквально, язык создан с целью выкинуть тебя с работы с минимальными издержками. И даже если у ворот корпоратов не будет стоять толпа голодных, желающих заменить бракованную деталь, они за 3 недели обучат новую макаку.
>>3444465 >>3444477 да хуй с обработкой ошибок, try-catch это кал сынки вы лучше объясните мне как найти работу без опыта НУ НЕ МОГУ Я ВОЛЧИТЬ, я боюсь просто ужас, это же сразу будет заметно что я нихуя не мидл, вдруг в ЧЁРНЫЙ СПИСОК попадут. но очень хочется работать, как исправлять эту ситуацию будем? м?
>>3444478 А меня че спрашиваешь, я не знаю. я уже 3 офера получил на 300 и все 3 отклонили после проверки моей трудовой. Рисовать как советует Назаров не стал, скинул честно и объяснил, что работал по ИП либо не официально. А скоро кабанам разрешат одной кнопкой проверять резюме на подленность, уже готовят закон.
>>3444552 Так а в чём проблема с ними? Дисциплинируй себя, обрабатывай ошибки, чтобы после тебя не разматывали ебучие эксепшены. В го охуенно на самом деле сделано. Поиск проблемы занимает мало времени даже в чужом коде.
>>3444465 >Goвно - это высер корпоратов, чьей единственной целью является извлечение прибыли из своих штатных единиц при их минимальной квалификации. Го создавался с целью сделать better C++, чтобы быстрее билдилось чтобы можно было просто взять бинарник и запустить его, чтобы можно было не париться насчет освобождения памяти, чтобы можно было эффективно использовать все ядра на сервере, чтобы язык был простой, но хороший код на Го требует навыков. Го убрал всякую неявную магию, в Го всё явно кроме ёбаных интерфейсоф, но это не значит что ты сможешь с наскока начать работать над большим Го приложением.
>>3444582 >Почему в мире go нет своего спринга? По частям он есть, нет спринга в смысле один фреймворк в котором есть ВСЁ.
>>3444582 Потому что, если ты сделаешь систему для дебилов, только дебилы и будут ей пользоваться. В программировании должно оставаться пространство для интеллектуальной деятельности, а не только для копипаста из методичек. Посмотри на сишарп: интересный язык и не такой шизоидный, как го; шикарная бесплатная вижуал студио, а не высеры от жидбрейнс. Но. Майкрософт сделали сишарп максимально простым для вката, написали фреймворки на все случаи жизни, от мартышки требуется только пукать в медиатр через автомапер и подтирать слюну. В итоге на сишарпе сидят онли паджиты с интеллектом табуретки саар, уровень никакой, сложные задачи им не дают, без сложных задач толковые инженеры уходят на другие стеки, замкнутый круг. Если в голенге появится свой спринг и свой автомапер, надо будет съебывать на раст.
>>3444697 >Если в голенге появится свой спринг и свой автомапер Не если, а когда.
>Но. Майкрософт сделали сишарп максимально простым для вката >от мартышки требуется только пукать в медиатр через автомапер и подтирать слюну Ты вроде не глупый человек, а рассуждаешь, как дурачок. Корпорации ИМЕННО ЭТО и требуется. Чтобы был легкий вкат, чтобы мартышка могла только пукать в медиатр через автомапер и подтирать слюну. Нужно объяснять почему?
Microsoft сделали это. Google сделают абсолютно то же самое. Потому, что это корпорации цель которых максимально эффективное извлечение максимально возможной прибыли.
>>3444828 >nodejs this Причина: через примерно 2-5 лет хайп вокруг Go спадёт, потому что язык этот как инструментарий максимально уебищный, как php. Только вот последний держался долго, потому что альтернатив не было.
Но если что-то делаешь реально производительное с сотнями тысяч rps, то rust. Но это не твой вариант.
>>3444886 >rust Лол нет. Я писал микросервисы на сишарпе, го и расте, никакой разницы. Тормозит бд, если постгрес встал раком на блокировках, то похуй, на каком языке ждать ответа.