GoFunc Mock Interview
36:51
3 ай бұрын
Пікірлер
@Олег-ю3щ4ъ
@Олег-ю3щ4ъ Ай бұрын
Откройте для себя Temporal и закройте свои велосипеды.
@brunql
@brunql Ай бұрын
Лайк подписка
@alexpopov7600
@alexpopov7600 Ай бұрын
наконец-то в go придумали манки патчинг
@IvanIvanov-re8bk
@IvanIvanov-re8bk Ай бұрын
Попробовал все инструменты для чтения QR в конце - ни один не считывает. Для таких вещей, наверное, стоит оставлять нормальные ссылки?
@middaysan
@middaysan Ай бұрын
очень круто, спасибо! мало кто понимает и освещает как работает код на низком уровне теперь, и как с ним можно работать, очень круто посмотреть видео с хорошо структурированным объяснением, конечно использовать это все в проде я бы не стал и бил бы по рукам в issue тем кто пишет библиотеки вынуждая кого-то использовать подмену, но давайте еще такой контент! =)
@ayaz.ayupov
@ayaz.ayupov Ай бұрын
спасибо)🙂
@derwin22-w7l
@derwin22-w7l Ай бұрын
Спасибо за видео! специально не искал, но проблема с телеметрией глобально через драйвер ОЧЕНЬ давно меня интересовала.
@fenderbender2096
@fenderbender2096 Ай бұрын
Без таймкодов не то.
@GoFuncConf
@GoFuncConf Ай бұрын
Здравствуйте! Передали пожелание по тайм-кодам коллегам 🙂
@лешавасильев-щ4д
@лешавасильев-щ4д Ай бұрын
А слышали про Skypro и что думаете об обучении там? мне друзья посоветовали попробовать Skypro, говорят, там все хорошо объясняют
@whazapbaz
@whazapbaz Ай бұрын
прикольная экономия на рекламу у вас не хотели ли граффити по городу красить ваших курсов прям на асфальт в переходах? я бы прошелся по ней
@volumesurup2078
@volumesurup2078 Ай бұрын
С Time.After в новых версиях гошки уже не леквид
@developerdiary3136
@developerdiary3136 Ай бұрын
Странно, что люди не хотят добавить Трейсер в библиотеку, хотя драйвер хороший, использую
@kriskaruzo1398
@kriskaruzo1398 Ай бұрын
lockSlow schema по ссылке из гитхаба - пишет что Ничего не найдено
@андрейиванов-ж7ч
@андрейиванов-ж7ч Ай бұрын
А слышали про Skypro и что думаете об обучении там? мне друзья посоветовали попробовать Skypro, говорят, там все хорошо объясняют
@Кир-я9о
@Кир-я9о 2 ай бұрын
Доклад интересный, но спорный. Где гарантия что Ваня так быстро напилит 30 фич, если делает тяп ляп лишь бы работало? Там такая может быть связанность кода, что на 10 фиче Ваня завалит весь проект, сам запутавшись в своих дебрях. И почему считается что Петя такой тормоз, правильно спроектировав систему, не сможет относительно быстро внедрять новые фичи? Преждевременная оптимизация зло, но и тяп ляп лишь бы работало тоже... Получается Вася выиграл только за счет Gorm?)) Сомнительный рецепт успеха. Любой инструмент надо знать и уметь применять когда нужно. Нормально делай - нормально будет (с) PS. В pgx v5 можно сразу сканить в структуру - не переписывая сканы по полям. Аргумент про ручные сканы без gorm давно не актуален.
@dmitrym2841
@dmitrym2841 2 ай бұрын
Забыли про сжатие различными алгоритмами при записи в кафку. Стоит начать с тестов сжятия на кафке, перед переходом на proto.
@theruziev
@theruziev 2 ай бұрын
Искандер ♥
@blacksun9518
@blacksun9518 2 ай бұрын
А ты довольно симпатичный
@Torbjorn-ph7rt
@Torbjorn-ph7rt 2 ай бұрын
36:00 про коммиты с генерированным кодом. При всём уважении позвольте не согласиться с тем что надо коммитить, а не генерировать с CI/CD. Проблема возникает когда с модулем работает несколько разрабов. Если гит начинает один из файлов воспринимать как бинарный (например из-за больших размеров или есть правило для гита) или генерируемый код существенно различается с каждой генерацией то на этом файле будет постоянный конфликт со вторым разоаботчиком. Этот эффект постоянно наблюдается в фронтенд разработке - там скомпилированные пакеты имеют размер мегабайты и если фронтендеров больше одного конфликты возникают всё время и разруливаются они только в пользу одного из разработчиков потому что файл меняется целиком. При генерации "на месте" конфликты возникают только в реально конфликтной ситуации - когда два разработчика работают над одним и тем же куском кода.
@superkozel1
@superkozel1 2 ай бұрын
проблема начинается, если мы создаем dto(request/response/form/viewobject) для entity. Если для entity у нас создается дополнительные классы(домменные объекты в данном случае), то их нужно продублировать, вместе с их полями в дто. И это лютое количество кода. У нас около 50 моделей в одном апи, и 50-100 в другом, и такой подход очень сильно усложнил бы жизнь при нашем коллективе в 7 разрабов. Я пока делаю вывод, что DDD в той же топке, что и микросервисы - подходов для компаний со сверхдоходами и раздутым штатом, где на каждый микросервис по несколько разрабов, и есть время веселиться с кодом.
@Iaxls
@Iaxls 2 ай бұрын
Хороший доклад
@alexpopov7600
@alexpopov7600 2 ай бұрын
23:30 правда чтоли не надо проверять? p.setName("88005553535", "yo man!") компилятор не пикнет даже. потому что в го нет никакой поддержки opaque типов, все алиасы прозрачные, значит valuetypes придется заворачивать в номинальные типы
@f0rzend59
@f0rzend59 2 ай бұрын
Неплохой доклад. Чувствуется, будто докладчик волнуется и, как будто читает текст. Но содержимое очень хорошее
@LoVe_HaWkEEl
@LoVe_HaWkEEl 2 ай бұрын
Очень информативно, молодцы!
@super-ebaka
@super-ebaka 3 ай бұрын
GO - кал между ассемблером и факторио
@Elijah-xe2he
@Elijah-xe2he 3 ай бұрын
Если я правильно понял, в представленной структуре слой application зависит от infrastructure. В луковой и подобным архитектурам как раз наоборот infrastructure должна зависеть от application. Полагаю, автор доклада изменил направление зависимости, чтобы было проще дергать инфру из application не плодя лишние интерфейсы? Тогда это неправильно называть луковой архитектурой.
@mtk6188
@mtk6188 3 ай бұрын
Нет, инфраструктура на то и инфраструктура, чтобы стоять особняком: в ней находятся детали реализации типа "как отправить емейл", или "как ходить в базу" и т.п. В аппликейшен лейере вы описываете конкретные бизнес юзкейсы, например, достать из репозитория объект, запустить на нем доменную логику, отправить емейл после и т.д.
@Elijah-xe2he
@Elijah-xe2he 3 ай бұрын
@@mtk6188 я понимаю, что размещается в инфре, что в app слое, что в доменке. Нарушать зависимости слоев неправильно, если хотите луковую/чистую/хексагональную архитектуру. Никто не запрещает из app слоя обращаться к репозиторию, на то и придуманы интерфейсы и IoC.
@alexandrfolomkin9380
@alexandrfolomkin9380 3 ай бұрын
Выносить интерфейсы в go в отдельный пакет - такое себе решение, сразу оказывается что интерфейс становится публичным, а значит может где-то использоватся - а это уже протекание абстракций. Интерфейсы должны объявляться в том же месте где и используются Использовать функцию init - это антипаттерн - неявное выполнение кода, тем более с if. Для настройки лучше использовать репозиторий с несколькими реализациями. application и service - граница какая-то вялая между ними Короче, питонист пришел в гошку и наводит шорох
@asdfsavs6846
@asdfsavs6846 3 ай бұрын
Вопрос по поводу интерфейсов. Допустим есть интерфейс репозитория. Репозиторий нужно использовать в нескольких местах (сервисах). Что вы предлагаете? Копи-пастить интерфейс в два места?
@maoshultz1731
@maoshultz1731 3 ай бұрын
Там где вы его реализуете
@Elijah-xe2he
@Elijah-xe2he 3 ай бұрын
Интерфейсы на то и нужны, чтобы быть публичными ) Чтобы внешний код был зависим от контракта, а не от реализации. Если интерфейс приватный и лежит рядом с реализацией, в чем тогда его смысл? Сам по себе публичный интерфейс не создаёт проблемы протекания абстракций. Проблему создают разработчики данного контракта, пытаясь сделать его универсальным или "гибким". Если контракт заставляет реализации знать о деталях внешнего окружения - абстракции текут. Если контракт заставляет внешнее окружение знать о деталях реализации - абстракции текут. Делайте строгие полные контакты и не будет проблем протечек.
@f0rzend59
@f0rzend59 3 ай бұрын
Это какой-то перезалив? Как будто я уже слышал этот доклад...
@Bunkerniy_Gadenish
@Bunkerniy_Gadenish 3 ай бұрын
Слышу «это база или лучшие практики» сразу посылаю скуфа накуй
@mrmarkovniktgv3058
@mrmarkovniktgv3058 3 ай бұрын
Вывод - мы в дерьме🙃
@RomanShchekin
@RomanShchekin 3 ай бұрын
Посыл доклада понятен, но язык для примера плохой. На Go в здравом уме никто прототипы не пишет. Есть Python, есть Java/C#, или проверенные временем (или устаревшие, каждый сам для себя решает) Ruby/Rails и PHP. В них все намного лучше в плане гибкости и готовых инструментов, которые решают задачу хорошо в большинстве случаев. А на Go потом можно переписать критичный по производительности/надёжности/иасштабируемости код, например выделив в отдельный сервис
@Inet-l6p
@Inet-l6p 3 ай бұрын
крутой контент, побольше бы задачек на канале
@Tosha.V
@Tosha.V 3 ай бұрын
мне понравилось
@scipetr
@scipetr 3 ай бұрын
Прохладный сказ о двух любителях писать "качественный" код...
@IgorsNemenonoks
@IgorsNemenonoks 3 ай бұрын
Николай, спасибо за прекрасный доклад!
@safebuster2
@safebuster2 3 ай бұрын
3:10 начало доклада
@Steklopod
@Steklopod 3 ай бұрын
Нужно было зазумить раза в 2. Ниче не видно
@kafkiansky
@kafkiansky 3 ай бұрын
> Система управления зависимости чуть ли не самая прогрессивная Особенно, когда ссылки на гитхаб прямо в импорте, из-за чего при смене названия приходится весь код править, где этот импорт есть. Почему бы не сделать, как это делают другие, когда у пакета есть имя, а то, откуда его поставили, записывается в файл зависимостями (например, cargo.toml).
@hardlabor9412
@hardlabor9412 3 ай бұрын
go 1.23 мб?
@justkrybik
@justkrybik 3 ай бұрын
1.22
@hardlabor9412
@hardlabor9412 3 ай бұрын
@@justkrybik я не про видео, а про актуальность
@justkrybik
@justkrybik 3 ай бұрын
@@hardlabor9412 ну, до 1.23 дожить нужно)
@АлександрЗверев-й1х
@АлександрЗверев-й1х 3 ай бұрын
Большое спасибо. Очень интересная получилась беседа
@kriskaruzo1398
@kriskaruzo1398 3 ай бұрын
👏.👋👋
@hurricane-rus
@hurricane-rus 3 ай бұрын
Интересная задачка для олимпиады, правда, не понимаю, зачем ее дают на собеседованиях - на реальном проекте такие вещи решаются через готовые решения из Google или ChatGPT (который накидал аналогичное решение за 30 секунд - в итоге и рабочее время сэкономил, и задачу решил).
@AndreyMalashenko
@AndreyMalashenko 3 ай бұрын
Говоря о конкатенации строк можно вспомнить не такой популярный, но достаточно быстрый способ - шаблоны, пакет text/template. В бенчмарках показывает хорошие результаты. Плюс полезен, когда надо делать локализацию строк.
@MrLotrus
@MrLotrus 3 ай бұрын
А из-за чего встраивание даёт просадку в производительности? Как-то вскользь затронули.
@dmitrym2841
@dmitrym2841 3 ай бұрын
У процессора есть кеш инструкций. Чем больше бинарник, тем меньше попадание в кеш, тем больше походов в оперативу.
@MrLotrus
@MrLotrus 3 ай бұрын
@@dmitrym2841 Сори, не могу уловить связь между размером бинарника и попадания в кеш процессора. Можно чуть подробнее или где почитать
@alexandersmirnov4274
@alexandersmirnov4274 4 ай бұрын
непонятно объясняли как CFS использует бинарное дерево для упорядочивания задач
@volumesurup2078
@volumesurup2078 4 ай бұрын
Только уважение! Очень здорово!!!
@sergeys4732
@sergeys4732 4 ай бұрын
Блэт, ну почему докладчик не купит хорошую гарнитуру чтобы не крякать (((
@lordew9476
@lordew9476 4 ай бұрын
потому что ....кря
@АлександрДанилов-п4г
@АлександрДанилов-п4г 4 ай бұрын
С гарнитурой будет заикаться и пропадать. Лучше нормальный микрофон, стоящий на столе. Проводной.
@wildegor
@wildegor 4 ай бұрын
Отличный доклад и статья на хабре (правда в статье ticker забыли остановить хехе)!
@mikez2276
@mikez2276 4 ай бұрын
как это не инициализированный слайс не занимает память? var s []int s1 := []int{} fmt.Println(unsafe.Sizeof(s), unsafe.Sizeof(s1)) //24 24
@vbelogrudov
@vbelogrudov 4 ай бұрын
Да, Вы правы! Спасибо за поправку. Здесь корректно было бы сказать про различия сравнения обоих вариантов c nil и про то, что у пустого слайса низлежащий массив не nil fmt.Println(unsafe.SliceData(s)) // nil fmt.Println(unsafe.SliceData(s1)) // 0xabcde - все пустые слайсы указывают на один адрес пустого массива И соотвественно в видео использовать var myslice []int, а не myslice := []int{}
@MsHorbjorn
@MsHorbjorn 5 ай бұрын
чем это отличается, от портянки в main ? если вы не можете прочитать обычный код без этого uber.fx, это проблема либо в том, что вы не умеете читать код, либо в том, что разработчик написал его крайне плохо этот uber fx можно точно так же засрать до состояния "не читабельности" если иметь, как вы сказали, 2-3 страницы такого конструктора
@MsHorbjorn
@MsHorbjorn 5 ай бұрын
другими словами, тот код в main.go - абсолютно не проблема такого подхода, нужно уметь разделять слои и никакой uber fx не понадобится насчет тестов и прочего, так же все получается асболютно тестируемо и зависит не от того, используется fx или не используется, а правильно ли спроектированы слои
@vladimireliseev7602
@vladimireliseev7602 6 ай бұрын
Спасибо за доклад! Было полезно!
@SavenkoRoman
@SavenkoRoman 8 ай бұрын
дизлайк за отсутствие таймингов. дичь
@GoFuncConf
@GoFuncConf 7 ай бұрын
Роман, здравствуйте. Спасибо за фидбек, передали коллегам 🙂