Архитектура Golang приложений 🚀Разбор реального проекта

Поделиться
HTML-код
  • Опубликовано: 19 июн 2024
  • Roadmap по каналу - bit.ly/3yKtxWf
    Курс GOLANG NINJA - bit.ly/3VWKfu3
    Обновленное видео 2022 - • Архитектура Golang При...
    00:00 - Введение. Flat архитектура приложения на моем первом проекте с Golang
    02:37 - Лучшие практики проектирования структуры приложений
    04:22 - Директория /cmd
    10:08 - Еще один пример структуры проектов. Пакеты pkg и internal
    15:25 - Дополнительные директории в проекте. Пример API документации
    20:05 - Детальный разбор internal. Чистая архитектура.
    #golang #backend #архитектура

Комментарии • 162

  • @MaksimZhashkevych
    @MaksimZhashkevych  2 года назад +6

    Обновленное видео 2022 - ruclips.net/video/mesl2Si6saw/видео.html

    • @daniilevsienko4060
      @daniilevsienko4060 Год назад

      то есть это можно не смотреть?

    • @user-gh3bs7xk1h
      @user-gh3bs7xk1h 3 месяца назад

      мне кажется совсем другой человек 2021 - 2024

  • @ivandedenev6323
    @ivandedenev6323 2 года назад +9

    Спасибо тебе, мужик! Было капец как полезно! Я сейчас на стажировке и мне остро не хватало как раз таких разъяснений "по полочкам"

  • @assylkhanyeszhanov2356
    @assylkhanyeszhanov2356 3 года назад +8

    Спасибо большое за видео, очень рад что нашёл ваш канал) продолжайте в том же духе!

  • @DarDarbl4
    @DarDarbl4 3 года назад +63

    Путаете немного Инверсию зависимости(DIP) и Инъекцию зависимости(DI). Вообще названия не удачные поэтому путаница возникает между Инверсией зависимости, Инъекцией зависимости, Инверсией Управления. А так же Repository выродился в Gateway. Домен выродился в Анемичную Модель, то есть модель без поведения. Интерфейсы немножко пухловаты для инверсии, и лежат не на том слое, но шаги в правильном направлении, я уж так, придирки)) А вообще Вы молодец что просвещаете народ!

    • @hedinsss
      @hedinsss Год назад

      Согласен, сложно смотреть когда понимаешь паттерны и думаешь де блин)

    • @Levelord92
      @Levelord92 Год назад

      @@hedinsss а какие именно тут паттерны?

    • @Raymzhan
      @Raymzhan Год назад +3

      @@Levelord92 еврейские

  • @ziliboba73
    @ziliboba73 3 года назад +1

    Спасибо друг! :) Стало все намного понятнее.

  • @miraclechina1301
    @miraclechina1301 3 года назад +5

    Супер, молодец, удачи тебе!

  • @MRogalsky20
    @MRogalsky20 11 месяцев назад

    Ух, сколько связей и переплетений)
    А я только на начале изучения языка Go, а здесь уже проект! интересно было просмотреть структуру, что-то думаю поймется со временем. Спасибо!

  • @stanislavdimitrenko
    @stanislavdimitrenko 3 года назад +4

    Отличное видео. Спасибо!

  • @user-hr1kt5bp8c
    @user-hr1kt5bp8c 2 года назад +1

    Спасибо! Весьма и весьма полезно.

  • @tilekasankulov5034
    @tilekasankulov5034 3 года назад +3

    Супер видео!!!
    Давай еще)))

  • @bekhruziskandarzoda3726
    @bekhruziskandarzoda3726 2 года назад +1

    Спасибо, очень интересный материал! Максим, будем очень благодарны, если опубликуешь в гитхабе проект с подобной структурой. Очень хочется поиграться и изучить подробнее.

  • @user-iy8zf6ex1t
    @user-iy8zf6ex1t 2 года назад +1

    Классно объясняешь, спасибо)

  • @mrakvervolkov8597
    @mrakvervolkov8597 3 месяца назад

    Спасибо огромное! За моими плечами только один очень редкий фреймворк, для которого структуру мы разрабатывали сами. Так как я сейчас изучаю go, было очень интересно сравнить и сопоставить мои знания с новыми.

  • @fortis-lt
    @fortis-lt 5 месяцев назад

    очень интересная структура! Большое спасибо!

  • @kyleRQWS
    @kyleRQWS 2 года назад +1

    Я снова влюбился в go и спасибо за инфу про организации приложения!

  • @user-ct8fp2mm9y
    @user-ct8fp2mm9y 3 года назад +4

    Отличный видос!

  • @user-ip8cq7gy8y
    @user-ip8cq7gy8y 3 года назад +3

    Это если не лучший, то один из лучших каналов по данной тематике на русскоязычном ютубе 🔥

  • @user-st3fn9do1x
    @user-st3fn9do1x 11 месяцев назад

    Очень полезное видео, спасибо

  • @user-lu1vf3ms8s
    @user-lu1vf3ms8s 3 года назад +9

    Огромное спасибо за это видео, долго не мог понять из статей как грамотно орагнизовать структуру проекта. Было бы круто, если бы ты записал более подробное видео по чистой архитектуре и по чистому коду, в частонсти про SOLID в го. Есть масса статей, но они как правило очень поверхностно описывают эти принципы.

    • @user-go6ht9uo9p
      @user-go6ht9uo9p 3 года назад +2

      насколько я слышал в го нет классического ооп, но есть свои подобия

    • @bigMihanWhere2007
      @bigMihanWhere2007 Год назад

      На юдеми курс golang-ninja от максима. И там есть глава чистая архитектура. Как раз перед этой главой шла часть с ссылкой на этот видосик

  • @denissavast
    @denissavast Год назад

    Благодарю за информацию!

  • @Zermond
    @Zermond 3 года назад +3

    Ахренеть, как круто и доступно объясняешь :) спасибо!

  • @kochewnic9984
    @kochewnic9984 2 года назад

    оооо) реализация ddd в go) интересно, интересно)

  • @user-mt9bq2xe1z
    @user-mt9bq2xe1z 3 года назад +3

    Крутой канал. Продолжай пожалуйста

  • @cothromachd
    @cothromachd Год назад

    как же ты по красоте делаешь

  • @chelovak
    @chelovak 3 года назад

    Личные ключи в головном readme - это, конечно, сильно! ;-)

  • @domoji74tsukasa91
    @domoji74tsukasa91 3 года назад +1

    Супер Макс. Хотелось бы потом по этому проекту, хотя бы в простой версии увидеть курс. Интересно как ты изначально настраиваешь проект, папки, структуры и тд. Также интересно было как ты настроил свой Goland, какая тема, какой шрифт

    • @MaksimZhashkevych
      @MaksimZhashkevych  3 года назад +2

      Golang у меня стандартный) Только немного хоткеи под себя настроил.
      На канале скоро будет курс по телеграм боту с нуля, там все эти моменты будут разобраны)

    • @konstantingeist3587
      @konstantingeist3587 3 года назад

      Есть подход с генератором проектов. Можно написать утилиту, которая сразу создаёт нужные папки/файлы, прописывает везде всё нужное. Но это актуально если веб-приложения (микросервисы) однотипные по структуре и их много.

  • @Edvard-Aliev
    @Edvard-Aliev 3 года назад +3

    Большое спасибо за видео и за код, очень важно что такие люди как вы открывают код в опенсорс и показывают как "правильно" создавать проекты

  • @igor5379
    @igor5379 7 месяцев назад +1

    как пинок в правильном направлении, зачёт.

  • @konstantinivanov160
    @konstantinivanov160 3 года назад +8

    Отличное видео. Спасибо. Создай видео как работать со Swagger. Так как ты умеешь. Четко, без воды и по существу )).

    • @MaksimZhashkevych
      @MaksimZhashkevych  3 года назад +5

      Уже записано, скоро будет на канале)

  • @vtotbl
    @vtotbl 3 года назад +5

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

    • @MaksimZhashkevych
      @MaksimZhashkevych  3 года назад +3

      Спасибо, рад что видео оказалось полезным.
      Думаю не все кто посмотрит знает про ддд и чистую архитектуру, хотелось чтобы по просмотру не оставалось много вопросов)

  • @LEONEMSOLIS
    @LEONEMSOLIS 2 года назад

    актуальненько :3

  • @ivkis3270
    @ivkis3270 2 года назад

    офигеть насколько это сложно, но красиво..

  • @themansonbrother01
    @themansonbrother01 3 года назад +3

    Спасибо! Очень полезное видео. Когда только начинал погружаться в язык (думал сделать его основным перейдя с php), было не понятно как структурировать проект. Много информации было перелопачено. Я так же нарывался на этот репозиторий с бест практисами для структурирования приложения. Здесь же, при просмотре видео, все стало более чем понятно!

    • @MaksimZhashkevych
      @MaksimZhashkevych  3 года назад

      Очень рад что видео оказалось полезным!

  • @assylkhanyeszhanov2356
    @assylkhanyeszhanov2356 3 года назад +10

    О пожеланиях: было бы здорово на вашем канале посмотреть как на Го работать с брокерами сообщений (Кафка, Раббит)

  • @alexanonymous5823
    @alexanonymous5823 3 года назад +1

    спасибо за видео, если возможно пожалуйсто увеичивайте шрифт в редакторе и по возможности названия папок со шрийтом побольше. в любомслучае спасибо

  • @gekka-group
    @gekka-group Год назад

    Все супер, единственное было бы хорошо если нижнюю часть экрана не обрезали. К примеру терминал был не полностью виден.

  • @darknet106
    @darknet106 3 года назад +2

    очень хороший контент! спасибо за проделанную работу!
    Вопрос : какой опыт работы с Go и в целом программистом?

    • @MaksimZhashkevych
      @MaksimZhashkevych  3 года назад +4

      Спасибо за отзыв!
      Программирую еще с детства, на первую работу веб-разработчиком устроился в 2016-ом, с Golang работаю с начала 2018-го

  • @user-ez4ch3lq9b
    @user-ez4ch3lq9b Год назад +2

    Хм хм, а если мы в cmd хотим запихнуть ещё один проект с main. То для этого нового проекта, где будут храниться пакеты? Видимо так же в internal и pkg. И получается некоторые пакеты используются совместно двумя проектами, некоторые пакеты уникальны для одного проекта. Так как же разрабу понять, какие куда относятся и можно ли что-то поменять для одного проекта и при этом не сломать другой?
    Вот этого я не понял.

  • @robotbender817
    @robotbender817 Год назад +1

    Спасибо что делитесь опытом. Имхо подход Feature by package самый топовый подход который подойдет для всех видов приложений
    Сначала делим на бизнес логические сущности (модули)
    user
    profile
    payment
    cart
    А дальше в каждой папке будет
    user
    ->features
    ->login
    -> repositories
    -> services
    -> forms

    • @user-bk1eb4xw4o
      @user-bk1eb4xw4o 2 месяца назад

      По гуглю по читаю, спасибо. Сам вот делаю первые шаги в go, до этого немного писал на python

  • @naneri
    @naneri 3 года назад +2

    Спасибо за ключи, генерировать заново не обязательно ;)

  • @PhotoLightTV
    @PhotoLightTV 3 года назад

    Браво, хороший разбор, DI (e.g. Wire) не пробывал?

  • @nikitagladkih5857
    @nikitagladkih5857 3 года назад

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

  • @ERge77
    @ERge77 2 года назад

    А можешь посоветовать какую-нибудь библиотеку для работы c Excel (XLSX) открытие/редактирование/запись, но чтобы она работала на старой версии 1.10
    Не могу найти...

  • @katia_suya9729
    @katia_suya9729 3 года назад +2

    Очень классно объясняешь, спасибо)

  • @germanigortsev4848
    @germanigortsev4848 2 года назад

    Про репозитории интересно , пойду смотреть еще видео, реально примеров адекватных по работе с бд нет и разделение удачное по моделям / сервисам / репозиториям. Еще нет видоса хорошего по graphql

  • @alexandertsapkov491
    @alexandertsapkov491 3 года назад

    Коммент для активности

  • @Heretic_Man
    @Heretic_Man 3 года назад +1

    Красава!

  • @user-jh1vx3vx1c
    @user-jh1vx3vx1c 3 года назад

    Это нормально, что у нас service зависит от структуры Repositories и хэндлер от структуры Services? Там конечно содержатся интерфейсы как поля, но все же это не нарушение Clean Architecture? Это удобно конечно, но не лучше ли такие dependency injection проводить с мэина? например сохдать десять репозиториев и уже их запихнуть в сервис напрямую и то же самое с хэндлером? Тогда получится куча репозиториев и куча стуктур сервисов вместо одного, но не будет ли так правильнее?

  • @ostrbor
    @ostrbor 3 года назад +1

    Если у вас один main, имхо не нужно создавать cmd, т.к. смысл доп усложнения структуры папок в том, чтобы решить задачу разделения мейнов.

  • @vladislavrodin8036
    @vladislavrodin8036 3 года назад +10

    насколько я знаю, в GO принято объявлять интерфейсы в местах использования, а не рядом с имплементацией. Тут же всё наоборот (например, в папке репозитория).

    • @roman.chudov
      @roman.chudov 3 года назад +1

      абсолютно верно!

    • @MaksimZhashkevych
      @MaksimZhashkevych  2 года назад

      все верно, так уж пошло на этом проекте) новые стараюсь писать следуя этому принципу

    • @vadimadamlyuk7487
      @vadimadamlyuk7487 2 года назад +2

      (Совершенно искренний вопрос): А можно тему поподробнее раскрыть, с примером и объяснением "почему". И что делать, если интерфейс используется в нескольких местах?

    • @volodymyrzaiets8388
      @volodymyrzaiets8388 2 года назад

      @@vadimadamlyuk7487 Go отличается по работе с интерфейсами от других языков, где обычно есть что то типа implement, в таких случаях мы должны декларировать интерфейс до использования, в случаи с go, нам не нужно явно имплементировать интерфейс, мы можем работать со структурой а только потом назначить для нее интерфейс, это и есть основный смысл держать интерфейсы ближе к имплементации. А экспортить интерфейсы нам не кто не запрещает, и более того они для этого и нужны т.я именно на интерфейсах строится контракт между сервисами

  • @miraclechina1301
    @miraclechina1301 3 года назад +8

    Не раз слышал о том что не нужно мешать подходы из Java/C# к Go, и советуют не использовать DDD а использовать обычный go-way.

    • @DarDarbl4
      @DarDarbl4 3 года назад +5

      А причем тут DDD и язык? DDD это не про язык и не про программирование, это проектирование. Реализовать можно на любом языке язык это инструмент. DDD это про архитектуру6 фундаментальные принципы проектирования сложных систем, например такой фундаментальный шаблон как Единый Язык это не про программирование.

  • @PavelKorchagin-tl5ff
    @PavelKorchagin-tl5ff 2 года назад +2

    Спасибо огромное за видео, сам пишу также проекты (не только на GO) с применением Чистой Архитектуры. Хотел бы у тебя узнать, почему у тебя интерфейсы слоя Repository зависят от примитивов MongoDB типа primitive.ObjectID? Интерфейсы Repository должны быть более абстрактными и не привязываться к деталям реализации. В случае, если придется заменить источник данных, например, на Postgres возникнут проблемы. Думаю, лучше было бы заменить primitive.ObjectID на какой-нибудь string, а внутри уже конкретной реализации, в твоем случае MongoDB, преобразовать string в primitive.ObjectID.

    • @MaksimZhashkevych
      @MaksimZhashkevych  2 года назад

      Если спустя полгода-год работы над проектом прийдется заменить Mongo на Postgres, то ObjectID в интерфейсах будут самой незначительной проблемой)))
      Спасибо за отзыв, рад что видео оказалось полезным

  • @simplesv27
    @simplesv27 3 года назад +10

    Спасибо, полезная информация. У меня есть пара вопросов:
    1) У тебя в домене IDs в structs имеют тип primitive.ObjectID. Не нарушает ли это идею чистой архитектуры, что entities не должны знать какая база данных используется.
    В случае если id передается как string параметром в route, то в каком слое ты приводишь string к objectID, в delivery ? И не лучше ли все эти конвертации проводить в репозиториях и ID на structs хранить как strings ?
    2) Метод SignIn в StudentsService принимает StudentSignInInput struct объявленный, как я понимаю, в handler, то есть в StudentsService будет input из верхнего слоя. Это нормальная практика, или может такие structs лучше держать в domain или service ?

    • @MaksimZhashkevych
      @MaksimZhashkevych  3 года назад +2

      Спасибо, рад что видео оказалось полезным.
      1) Да, нарушает. Однако я пришел к такому выводу, что проще все это хранить в таком виде, поскольку база данных MongoDB скорее всего никогда не поменяется. Если же вдруг и поменяется, намного больше головняка будет с миграцией данных с одной базы в другую и рефакторингом инфраструктуры, чем с изменением типа поля в структуре :)
      2) StudentSignInInput объявлен в пакете service

    • @cjo737
      @cjo737 3 года назад +1

      @@MaksimZhashkevych тогда зачем объявлять интерфейс в репозитории?

    • @MaksimZhashkevych
      @MaksimZhashkevych  3 года назад +1

      @@cjo737 Чтобы можно было покрыть сервисы юнит тестами, а в качестве репозиториев использовать моки

    • @xbsxbs22
      @xbsxbs22 2 года назад

      @@MaksimZhashkevych В Go без интерфейса нельзя делать стабы/моки на основании сигнатур имплементации сервиса?

    • @volodymyrzaiets8388
      @volodymyrzaiets8388 2 года назад +3

      @@MaksimZhashkevych интересно конечно писать интерфейсы для тестов))

  • @berlin8pm486
    @berlin8pm486 3 года назад

    Скажите, а какова скорость написания кода относительно, допустим node.js или других технологий? Как часто стартапы в WEB берут Golang в качестве основного языка?

    • @MaksimZhashkevych
      @MaksimZhashkevych  3 года назад +1

      Два последних проекта на которых я работал - это были стартапы.
      Скорость разработки много в чем зависит от команды, инструментов, автоматизации рутинных задач и выстроенных процессов. Если команда хорошо знает ноду, то конечно запустить проект на Go будет дорого и сложно, и наоборот)

  • @ThePirateHistory
    @ThePirateHistory 3 года назад +2

    Интересно) Можно пожалуйста увидеть инверсию зависимостей? Почему domain? просто у меня идут какие-то недопонимание. Почему изначальное не http2?

    • @MaksimZhashkevych
      @MaksimZhashkevych  3 года назад +1

      Domain - от подхода DDD(Domain Driven Design).
      Вопрос про http не совсем корректный. Пакет v1 предназначен для инициализации группы эндпоинтов /api/v1

  • @user-rm5jx8pi4i
    @user-rm5jx8pi4i 3 года назад +8

    Спасибо за видео. Только если возможно, то хотелось бы крупнее шрифт в ide.

  • @AchekSlime
    @AchekSlime 2 года назад

    Фоновая музыка иногда сливается с речью и мешает восприятию, убавьте 🙏
    Классная подача и подробный разбор тем, лайк!

  • @devfront5432
    @devfront5432 3 года назад +1

    Максим, сделай пожалуйста курс по Kafka

  • @gooseman5578
    @gooseman5578 11 месяцев назад +1

    какой смысл в /internal/, если там код для приложения, но его нельзя использовать (он НЕ клонируется)?

  • @vesh95
    @vesh95 2 года назад

    Я искал подобную информацию во множестве видео, но во всех оказались какие-то онлайн-школы.
    Что ж, тут по крайней мере не попытались впарить промокод да и сама школа всего лишь в коде.
    Так что с моей точки зрения - одобрено

  • @vyacheslavs5642
    @vyacheslavs5642 Год назад

    А как организованы Unit тесты в проект на Go?

  • @vladimireliseev7602
    @vladimireliseev7602 3 года назад +2

    Спасибо, хорошо описано. Я аналогично пишу.
    Хотелось детальней взглянуть на репозиторий. Ссылочка есть?

    • @MaksimZhashkevych
      @MaksimZhashkevych  3 года назад +2

      Да, проект в открытом доступе на моем Github:
      github.com/zhashkevych/courses-backend

    • @vladimireliseev7602
      @vladimireliseev7602 3 года назад

      @@MaksimZhashkevych thanks

    • @vladimireliseev7602
      @vladimireliseev7602 3 года назад

      @@MaksimZhashkevych скажи пожалуйста, как корректно назвать такую архитектуру. Т.е. ты в видео озвучил, что есть архитектура flat. А как корректно назвать архитектуру, которую ты используешь в видео?

    • @dostontoshpulatov4043
      @dostontoshpulatov4043 3 года назад

      @@vladimireliseev7602 clean architecture

  • @TheWowashka
    @TheWowashka 3 года назад +5

    Когда планируется релиз книги "Архитектура Современных Веб-Приложений" ?

    • @MaksimZhashkevych
      @MaksimZhashkevych  3 года назад +7

      Владимир, материал книги уже почти готов, однако в процессе работы я решил дополнить текст дополнительными видеоуроками. По итогу весь этот проект перерос в полноценный курс.
      Сейчас я активно работаю над платформой, на которой будут опубликованы "Язык Go Для Начинающих" и "Архитектура Современных Веб-Приложений". Платформа позволит безболезненно обновлять и дополнять материалы курса, а также предоставит более удобный формат для его прохождения.
      Подробную информацию я скоро сообщу в email-рассылке для всех, кто скачал первую главу.

    • @user-bb5xw8bd8w
      @user-bb5xw8bd8w 2 года назад

      С таким кодом это будет натуральная диверсия. Какие книги могут быть у пионеров? Вопрос риторический

  • @b.g.5106
    @b.g.5106 3 года назад

    💪👍

  • @OleksiyOs
    @OleksiyOs Год назад

    дякую

  • @nameless_bro1
    @nameless_bro1 3 года назад +1

    Все круто🔥, только(!), пожалуйста, называй папки - директориями, а файлы(.go) - пакетами🙏. Удачи в развитии канала🍀

    • @maksimg2127
      @maksimg2127 2 года назад

      Пакет это не файл, а папка

  • @user-kw9cu
    @user-kw9cu 10 месяцев назад

    👍

  • @mahabat23
    @mahabat23 3 года назад +2

    Путь "internal->delivery" я бы переименовал в "internal->transport". Вы ведь так и называете его на русском. Потому как слово "delivery" имеет смысл "доставка", как доставка пиццы, в одну сторону - по направлению к объекту получателю.

    • @MaksimZhashkevych
      @MaksimZhashkevych  3 года назад +1

      хорошее замечание, имеет смысл, спасибо
      я однажды столкнулся с delivery на одном проекте - так и приелось)

  • @user-cc4jg2bs8z
    @user-cc4jg2bs8z 3 года назад

    У вас на гитхаб, в том проекте который вы позиционируете как клин архитектур, нет папки internal, это нищетово, мне хотелось посмотреть как вы с ним работаете.

  • @romanhs4591
    @romanhs4591 3 года назад

    можно ли в main подключить локальные пакеты без указания пути через github?

    • @cyneruxyz
      @cyneruxyz 3 года назад

      Да. Пример: "pkg/auth", если ссылки на хаб нету, он в корне проекта ищет директорию pkg и в ней пакет auth. Поиск не относительно исполняемого файла, а от корневого каталога - это важно.

  • @kyleRQWS
    @kyleRQWS 2 года назад +1

    Посмотрел курс по RestAPI и вернулся сюда, todo буду переносить на эту структуру, заодно и отточу понимание что и как программировать на go.
    Я загорелся желанием уйти от php и забыть его как страшный сон )

    • @xbsxbs22
      @xbsxbs22 2 года назад

      Чего страшного в пхп?

    • @kyleRQWS
      @kyleRQWS 2 года назад +1

      @@xbsxbs22 страшного ничего нет, а вот атавизмы из-за его возраста присутствуют.

    • @xbsxbs22
      @xbsxbs22 2 года назад

      @@kyleRQWS Какие к примеру?

    • @kyleRQWS
      @kyleRQWS 2 года назад

      @@xbsxbs22 Функции str_* и с иным форматом наименования strstr strpos, file_exists и filesize.

    • @xbsxbs22
      @xbsxbs22 2 года назад

      @@kyleRQWS Не совсем понимаю, в чём проблема с именами этих обёрток? они вполне себе заимствованы из библиотек С. Разве Go отличается каким-то особенно отточенным и выверенным неймингом?

  • @ArtemCYOU
    @ArtemCYOU 2 года назад

    интерфейс и подсветку vs в goland и было бы зашибись)

  • @user-lb3ed3hv8o
    @user-lb3ed3hv8o 2 года назад

    А ссылки нет. И, на хабе, также найти не найти данный пример(

  • @slavapol-v1553
    @slavapol-v1553 3 года назад

    Так как по Go это сейчас самый адекватный ресурс на русском. Разрешите спросить
    package main
    import "fmt"
    func main() {
    p0 := new(int)
    x := *p0
    p1, p2 := &x, &x
    fmt.Println(p1 == p2) // true
    fmt.Println(p0 == p1) // false
    p3 := &*p0
    fmt.Println(p0 == p3) // true
    }
    не могу вкурить, что произошло вот в этой строке p3 := &*p0

  • @pavelpoison3524
    @pavelpoison3524 3 года назад +1

    Ну какой крон уж?) Тайм тикер есть... А вообще, очень полезное видео!)

  • @ostrbor
    @ostrbor 3 года назад +1

    Мне кажется для веб сервера не походит internal, т.к. такие приложения вряд ли будут импортировать, поэтому защищать от импорта не нужно.

    • @alexeykirinyuk9713
      @alexeykirinyuk9713 3 года назад +1

      Мне кажется логичнее pkg не использовать в таком случае 😀 а то странно держать бизнес логику в «публичных» пакетах

  • @stepanchebotaryov5988
    @stepanchebotaryov5988 3 года назад

    При регистрации на твоём сайте получил письмо с битой ссылкой ( текст выделяется, самой ссылки для активации нет )
    :)

    • @MaksimZhashkevych
      @MaksimZhashkevych  3 года назад

      Проверил, все работает, а подскажи свой email?

    • @stepanchebotaryov5988
      @stepanchebotaryov5988 3 года назад

      @@MaksimZhashkevych botanprog@aol.com

    • @stepanchebotaryov5988
      @stepanchebotaryov5988 3 года назад

      @@MaksimZhashkevych Пользователь с таким email уже зарегистрирован. Если возникли проблемы, напиши мне на zhashkevychmaksim@gmail.com

  • @user-fb6fr5nx9u
    @user-fb6fr5nx9u 3 года назад

    Решил погрузится в го (по работе хотелось бы переписать один небольшой специфичный микросервис с ноды)
    обычно я стараюсь следовать стайлгайдам конкретных технологий, но, блин, почему в Го так любят все сокращать, переменные из двух букв, обрубленные слова, котрые часто вижу в исходниках библиотек (например, pkg - вместо package, sk - вместо signingKey, sd - вместо seed, h - вместо handler) и тд
    Это реально так приянто в Го или мне просто такой код попадается странный
    Дичь же полная, программы люди же читают, зачем символы экономить, жертвуя читабельностью?)

    • @konstantingeist3587
      @konstantingeist3587 3 года назад +2

      Есть такое. В стандартной либе тоже такая фигня. Напр. в функции могут встретиться переменные n, s, t и nn, и хер разбери, что они значат. Сам я нарушаю эти правила и пишу без сокращений.

    • @faizulla5838
      @faizulla5838 8 месяцев назад

      Потому что Амеры любят сокращать, и зык сам не Golang a Go....

  • @kolotunbabubay
    @kolotunbabubay 2 года назад

    я бы использовал DTO.

  • @zasssada
    @zasssada 3 года назад

    Что за IDE?

  • @arucrsov4495
    @arucrsov4495 3 года назад

    Чё 2160p это каК?

  • @Linuh.
    @Linuh. 9 месяцев назад

    Я кстати успел поюзать ключи если что

    • @MaksimZhashkevych
      @MaksimZhashkevych  9 месяцев назад

      без проблем, проект неактивный уже давно, юзай наздоровье

  • @iNerV
    @iNerV 2 года назад

    а где тесты если это реальный проект? только один увидел, где остальные?

  • @UAStriker
    @UAStriker 3 года назад +1

    Макс, расскажи как тебя взяли голанг-джуном когда ты толком не знал языка?

    • @MaksimZhashkevych
      @MaksimZhashkevych  3 года назад +5

      Я показал работодателю что я проактивный, могу быстро учить новое, имею дикое желание развиваться как специалист.
      Также было плюсом что я до этого уже работал в 16 веб-разработчиком, а также у меня был профиль на фрилансе с 6 положительными отзывами.
      Ну и я выполнил 2 тестовых задания на Go, которые мне скинули)

    • @calmsam2217
      @calmsam2217 3 года назад

      @@MaksimZhashkevych А щас вы также работаете Go Backend разработчиком?) Спасибо за ваши видео, они помогают, надеюсь их будет больше и они будут полными , то есть front + back + docker + db и т д)

  • @thebosha90
    @thebosha90 2 года назад +2

    Очередной недо-DDD/clean architecture. Переименуй entity в model и не путай людей. У тебя там сейчас описаны типичные модели ничего не имеющие общего с entity. Возможно, что-то поменяется когда начнёшь писать тесты, но пока это Франкенштейн какой-то. Например, как минимум entity вообще ничего про JSON и как они представлены во внешних слоях знать не должны. И методов там кроме доменной (бизнес) логики никаких не должно быть.

  • @fardeadok
    @fardeadok 3 года назад

    У меня другая структура а тут даже папки вендора нет)

  • @bossikom
    @bossikom 3 года назад +3

    Писал отзыв развернутый и текст изчез. Коротко, инверсия зависимостей и внедрение зависимостей это разные вещи. У вас в проекте нет инверсии зависимоетей, и буква D в SOLID не соблюдается.

  • @wMwPlay
    @wMwPlay 2 года назад +1

    4-ый раз смотрю это видео полностью уже, каждый раз с пользой. Слава Украине!

  • @Blowjin
    @Blowjin 2 года назад

    "имеет место", а не "имеет место быть". Второе -- это ошибка.

  • @user-qj3ij4ux6r
    @user-qj3ij4ux6r 5 месяцев назад

    Эх, хорошие раньше видосы были, сейчас, к сожалению, сплошное водогонство пошло.

  • @awsom82
    @awsom82 3 месяца назад

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

  • @user-bb5xw8bd8w
    @user-bb5xw8bd8w 2 года назад +1

    Чем огорчают нынешние детки, сразу оговорюсь, что не все - мы уже все знаем и все умеем. 10К часов или 10 лет никто не отменял, вместо того, чтобы пачкать мозги другим нужно ботанить это время

  • @faizulla5838
    @faizulla5838 Год назад

    Мляя, без музона слабо????
    словно евровидение освещаете...

  • @user-si7he1kz9o
    @user-si7he1kz9o 3 года назад +6

    Очередной пухлый роман вместо микросервиса

  • @7nolikov
    @7nolikov 2 года назад +2

    Нет ни одной причины повторять информацию в видео несколько раз. Понятнее от этого не становится, только раздражает. Видео можно перематывать, если захочется послушать еще раз.

  • @alexk5067
    @alexk5067 2 года назад

    Не понял.. в чем прикол? этот проект можно куда проще реализовать на любой адекватной срм symphony, laravel, typo3.. да хоть самому с 0 написать.. Зачем использовать для этого GO? Создать новый язык что бы что? писать сайты??))

  • @MaksimZhashkevych
    @MaksimZhashkevych  2 года назад +1

    Курс GOLANG NINJA - bit.ly/3VWKfu3

    • @LEONEMSOLIS
      @LEONEMSOLIS 2 года назад

      Какая цена примерно будет? Или пока что не думал?