defer panic
defer panic
  • 16
  • 183 469
Пишем надёжный бэкенд // The 12 Factor App
Часто бывает так, что работа с кодовой базой проекта приносит боль в самых разных аспектах: от внесения изменений и добавления новых фич до развертывания на стенде. Может показаться, что какие-то проблемы являются данностью, и с этим принципиально сложно что-то сделать. К счастью, это относится не ко всему.
Адам Виггинс и другие сотрудники компании Heroku однажды решили составить документ, который помог бы решить многие проблемы с разработкой и эксплуатацией информационных систем. Этот документ называется “The Twelve-Factor App” или «12-факторное приложение». Я предлагаю пройтись по нему и разобрать каждый пункт.
❤️ Реквизиты, если у вас есть желание поддержать меня и развитие канала:
Boosty - dfrp.cc/boosty
Patreon - dfrp.cc/patreon
Donation Alerts - donationalerts.com/r/deferpanic
ETH - tomakado.eth
TON - tomakado.ton
BTC - 19xwFstmVQsVYqZP64iMVg1StLNSah6Smo
Telegram: dfrp.cc/telegram
Discord: dfrp.cc/discord
00:00 - Вступление
02:01 - №1. Кодовая база
04:50 - №2. Зависимости
07:04 - №3. Конфигурация
09:26 - №4. Внешние сервисы
10:40 - №5. Сборка, релиз и выполнение
13:02 - №6. Процессы без состояния
14:42 - №7. Привязка портов (port binding)
16:04 - №8. Конкурентность
17:10 - №9. Одноразовые и утилитарные процессы
19:54 - №10. Паритет окружений
23:40 - №11. Логи
25:32 - №12. Инструменты администрирования
Полезные ссылки:
- Оригинальный документ “The Twelve-Factor App”: 12factor.net/
- Сигналы в UNIX: ru.wikipedia.org/wiki/%D0%A1%D0%B8%D0%B3%D0%BD%D0%B0%D0%BB_(Unix)
- Patterns of Enterprise Application Architecture, Martin Fowler: books.google.ge/books/about/Patterns_of_enterprise_application_archi.html?id=FyWZt5DdvFkC&redir_esc=y
- Logs Are Streams, Not files: adam.herokuapp.com/past/2011/4/1/logs_are_streams_not_files/
#golang #backend #архитектура
Переглядів: 4 150

Відео

Создаем Telegram-бота для новостей на Go, PostgreSQL и OpenAI API (ChatGPT)
Переглядів 24 тис.Рік тому
В этом ролике мы с вами напишем проект, который не стыдно положить на свой GitHub. Это будет Telegram-бот, который автоматически достаёт свежие новости и статьи про язык программирования Go из разных источников, генерирует для них саммари с помощью OpenAI API (ChatGPT), а затем публикует их в Telegram-канал. И всё это автоматически! Такой проект может послужить отличным преимуществом при поиске...
🎙️ Новая камера, мощь Apple Silicon, ChatGPT, Breaking Bad / defer panic podcast #0
Переглядів 700Рік тому
У меня давно была мысль попробовать делать подкаст. И вот наконец-то я решил начать! Для простоты первый выпуск в режиме соло без гостей, и скорее всего так и останется какое-то время. Формат подкаста такой: я рассказываю, как у меня дела в первую очередь относительно канала, а также рассуждаю вслух на какие-то темы. Первый (нулевой, если быть точнее) выпуск, он же пилот - это эксперимент, поэт...
CLI-интерфейсы по-человечески @PodlodkaShow
Переглядів 4,4 тис.Рік тому
Возможно, вам покажется, что говорить в 2023м о консольных приложениях странно, но в докладе мы покажем, почему CLI-приложения еще актуальны. Разберемся, какие инструменты помогут нам баланс и сделать такие приложения максимально удобными и понятными пользователю. На закуску предложим шаблон с конфигами, который можно унести к себе в команду. ❤️ Реквизиты, если у вас есть желание поддержать мен...
Тесты. Что нужно знать разработчику
Переглядів 6 тис.Рік тому
Разбираемся, что такое автотесты и зачем их писать. ❤️ Реквизиты, если у вас есть желание поддержать меня и развитие канала: Boosty - dfrp.cc/boosty Patreon - dfrp.cc/patreon Donation Alerts - donationalerts.com/r/deferpanic ETH - tomakado.eth TON - tomakado.ton BTC - 19xwFstmVQsVYqZP64iMVg1StLNSah6Smo Как написать сокращатель ссылок: ua-cam.com/video/v6rMPOlPzpk/v-deo.html Ссылки по теме ролик...
Cокращатель ссылок на Go с нуля до деплоя
Переглядів 7 тис.Рік тому
В этом ролике я пишу сокращатель ссылок на Go, используя Echo в качестве веб-фреймворка и MongoDB как СУБД. Кроме того, в ролике мы прикрутим аутентификацию с помощью GitHub и задеплоим сервис на Digital Ocean. Получить $200 на счёт DigitalOcean: m.do.co/c/a76c4cd7e830 ❤️ Реквизиты, если у вас есть желание поддержать меня и развитие канала: Boosty - dfrp.cc/boosty Patreon - dfrp.cc/patreon Dona...
🎃 О Vim и процессе обучения. Нужно ли изучать Vim/Neovim?
Переглядів 7 тис.2 роки тому
Мои импровизированные рассуждения на камеру о том, как подходить к изучению новых инструментов на примере текстового редактора Vim. Полезные ссылки вы найдете в нашем канале в Телеграме: Telegram: t.me/deferpanic Discord: discord.gg/4uw7Fpp2QX ❤️ Реквизиты, если у вас есть желание поддержать меня и развитие канала: Boosty - boosty.to/deferpanic Patreon - www.patreon.com/deferpanic Donation Aler...
Всё про конкурентность в Go
Переглядів 20 тис.2 роки тому
Текстовый конспект к видео: Boosty: boosty.to/deferpanic/posts/ad993417-072f-4893-8b56-9778c4dcbf7a Patreon: www.patreon.com/posts/konspekt-k-video-73674718 Полезные ссылки вы найдете в нашем канале в Телеграме: Telegram: t.me/deferpanic Discord: discord.gg/4uw7Fpp2QX Go - это язык, который не просто обладает хорошими инструментами, позволяющими использовать всю мощь многоядерных процессоров с ...
Generics in #Go. Should You Use It?
Переглядів 4,3 тис.2 роки тому
В этот раз поговорим об одной из самых долгожданных фичах Go - дженериках - инструменте обобщённого программирования. Дженерики - настолько крупное изменение в языке (относительно других), что пройти мимо невозможно. ❤️ Реквизиты, если у вас есть желание поддержать меня и развитие канала: Boosty - boosty.to/deferpanic Patreon - www.patreon.com/deferpanic Donation Alerts - donationalerts.com/r/d...
Golangci-lint. Повышаем качество кода на Go!
Переглядів 6 тис.2 роки тому
Поговорим о том, что такое линтеры, и как их правильно настраивать в больших и маленьких проектах. ❤️ Реквизиты, если у вас есть желание поддержать меня и развитие канала: Boosty - boosty.to/deferpanic Patreon - www.patreon.com/deferpanic Donation Alerts - donationalerts.com/r/deferpanic ETH - tomakado.eth TON - tomakado.ton BTC - 19xwFstmVQsVYqZP64iMVg1StLNSah6Smo Telegram: t.me/deferpanic Dis...
Why #Go Interfaces? / #Golang Interfaces Tutorial
Переглядів 39 тис.2 роки тому
Разбираемся на примерах, что такое интерфейсы и как использовать. ❤️ Реквизиты, если у вас есть желание поддержать меня и развитие канала: Boosty - boosty.to/deferpanic Patreon - www.patreon.com/deferpanic Donation Alerts - donationalerts.com/r/deferpanic ETH - tomakado.eth TON - tomakado.ton BTC - 19xwFstmVQsVYqZP64iMVg1StLNSah6Smo Telegram: t.me/deferpanic Discord: discord.gg/4uw7Fpp2QX Текст...
Завершаем программы изящно / Graceful Shutdown в #Golang
Переглядів 15 тис.2 роки тому
Завершаем программы изящно / Graceful Shutdown в #Golang
Разбираемся с контекстами в #Go / туториал по context.Context в #Golang
Переглядів 43 тис.2 роки тому
Разбираемся с контекстами в #Go / туториал по context.Context в #Golang

КОМЕНТАРІ

  • @АндрейСирин-у7я
    @АндрейСирин-у7я 10 днів тому

    крутой мужик! жаль что так мало просмотров

  • @Hande_hoch
    @Hande_hoch 20 днів тому

    почему в примере с такси иногда возникает дедлок? upd: мне объяснили, почему возникает дэдлок. Объясните плз, как это исправить. Как написать всё правильно. Пример то вроде хороший, и хотелось бы знать, как такое реализовать

  • @cseedrvr6627
    @cseedrvr6627 Місяць тому

    я сидел на неовиме несколько лет и спрыгнул в jetbrains + vim plugin, осознал что у меня помимо обычной работы еще появилась работа по поддержке своего конфига в нвиме

  • @aleksanderpeshkin2266
    @aleksanderpeshkin2266 Місяць тому

    Ты это сеньорам расскаживаешь ? 😊

  • @HackFinn
    @HackFinn Місяць тому

    Качественный контент. Хочется нажать кнопку лайк несколько раз. TDD и mocks можно отдельными роликами сделать.

  • @developer-oh7ze
    @developer-oh7ze Місяць тому

    Классное видео, но есть большая проблема для новичков - монтаж, в процессе много простых действий пропускается, хотя возможно рассчитано, на немного более опытных "студентов"

  • @bdud_
    @bdud_ Місяць тому

    зоопарк горутин:) (подача материала/звук/голос топ)

  • @bestia96
    @bestia96 Місяць тому

    Нихрена не понятно

  • @Polyak331
    @Polyak331 2 місяці тому

    все отлично спасибо. меня раздражало только то как ты громко глотаешь. а в целом все полезно!

  • @hyprland
    @hyprland 2 місяці тому

    хорошее видео я посмотрел сорри за ожидание теперь можешь удалять

  • @Disorrder
    @Disorrder 2 місяці тому

    понравилось название канала :D

  • @niqr7800
    @niqr7800 2 місяці тому

    20:40 тут нету синхронизации. Мы все еще можем прочитать сначало из одной горутины, переключиться на другую, прочитать из другой еще до того как первая обновит значение. При таком подходе баланс точно так же может уйти в минус

  • @vladgromov9213
    @vladgromov9213 2 місяці тому

    Поначалу рассказывал нормально, а в последние 5 минут пролетел галопом по Европам. Почти как в лекции про мосты из "Как я встретил вашу маму"

  • @kashirin_vsevolod
    @kashirin_vsevolod 3 місяці тому

    Насколько хорошо нужно знать go, чтобы написать такого бота? Что именно нужно знать, просьба подсказать

    • @deferpanic
      @deferpanic 3 місяці тому

      По идее хватит всего, что рассказывается в ролике. Вот и повод проверить )

  • @JoCkStErTVchannel
    @JoCkStErTVchannel 3 місяці тому

    бит топ

  • @StrangerFromAnotherDay
    @StrangerFromAnotherDay 3 місяці тому

    Хорошее видео* *по версии меня

  • @IvanFedulov
    @IvanFedulov 3 місяці тому

    хотелось бы еще побольше ньюансов о том как передаются параметры с типом заданным как итерфейс. например есть интерфейс context.Context и переменную ctx безопасно передавать из ф-и в ф-ю "по значению". потому что под капотом ctx это уже указатель а не сама структура. а почему оно указатель - непонятно. и как это увидеть не копая исходники пакета context.go - неясно.

  • @ShikeboSharifova
    @ShikeboSharifova 4 місяці тому

    спасибо

  • @ПавелВеткин-о6щ
    @ПавелВеткин-о6щ 4 місяці тому

    ok == false значит канал закрыт !

    • @sunwyx
      @sunwyx 2 місяці тому

      тоже обратил внимание на этот момент и полез в комментарии

  • @obereg2282
    @obereg2282 4 місяці тому

    Непонятно. Рассказываются догмы, которые нужно самому искать где-то и доказывать, что оно действительно так и применяется вот таким образом. Короче, конспект из лекции, в котором студент сам же не разберётся к концу семестра

  • @alexkazimir3835
    @alexkazimir3835 4 місяці тому

    Для более лёгкого входа можно попробовать готовые сборки (AstroVim, LunarVim, NvChad)

  • @ЕгорПетровичев-ь3ю
    @ЕгорПетровичев-ь3ю 4 місяці тому

    Уважаемый человек!

  • @IvanFedulov
    @IvanFedulov 4 місяці тому

    великолепно, очень доходчиво. спасибо!

  • @travisbickle7260
    @travisbickle7260 4 місяці тому

    очень нужно разобраться в теме интерфейсов, посоветуйте еще видосов, тут ничего не понял. Может есть что-то прпроще

  • @НикитаКокарев-в9р
    @НикитаКокарев-в9р 4 місяці тому

    Все же ключевым аргументом в пользу перехода на vim из vscode для меня стал unix way. Когда очередной раз сталкиваешься с петушинной реализацией логики нужного плагина, задумываешься о правильности концепции программных комбайнов.

  • @off746
    @off746 5 місяців тому

    Привет, мне очень нравится твоя подача материала, а так же формат видео в доступной форме. У меня есть предложение для видео, не мог бы ты рассказать, так же показать на примере паттерн Repository в Golang ?

  • @varvaraize
    @varvaraize 5 місяців тому

    как хочется сделать такой бот, но как и парень в предыдущих комментах застряла на подготовке окружения( goose не видит совсем ни на винде, ни на линуксе. или накосячила на предыдущих этапах. когда-нибудь я его одолею!

    • @foundry1534
      @foundry1534 6 днів тому

      в чем была проблема с goose?

  • @goldenboyboyboy
    @goldenboyboyboy 5 місяців тому

    девушка не сказала ничего полезного под конец, разве что повторила о том что нельзя проверить приоритет

  • @germanytoday3024
    @germanytoday3024 5 місяців тому

    Я в шоке, ты пишешь быстрее чем я успеваю понимать что вокруг происходит

    • @deferpanic
      @deferpanic 5 місяців тому

      Я и правда печатаю быстрее, чем средний человек, но тут скорее магия монтажа )

  • @neon8940
    @neon8940 5 місяців тому

    По-моему самое адекватное объяснение. Спасибо!

  • @omelpub
    @omelpub 5 місяців тому

    очень крутое и понятное видео!

  • @alexp6113
    @alexp6113 5 місяців тому

    вся эта хрень про мышку и отрыв руки не касается мака да, можно сказать, что можно даже сэкономить на пользовании трэкпадом, но это уже сомнительно - выглядит так, что в vscode многое делается лучше и быстрее. Года полтора назад зарелизили профайлы, теперь 20 профайлов (я использую их под стеки, можно про проекты и что угодно)

  • @andyyarys4467
    @andyyarys4467 5 місяців тому

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

  • @ОнуфрийНечепуренко
    @ОнуфрийНечепуренко 5 місяців тому

    Vim - для людей с феноменальной памятью. Со мной в универе училась девушка, которая смотрела тетрадь с лекциями, потом закрывала и говорила на какой странице в каком углу находится любой текст. Вот для таких людей Vim идеален. Для меня же необходимость запоминать больше 10 сложных клавиатурных комбинаций - это сразу "нет", безотносительно возможных выгод. Я в школе учил 8 строк стихов примерно весь вечер и всё равно не мог их запомнить. Помучился в Vim и бросил. Видео смотрел в надежде узнать, что Vim бесполезен и не нужен. Увы, автор не обрадовал :)

    • @34-ctp74
      @34-ctp74 5 місяців тому

      ну за месяц может два учится привыкается. Учить стихи надо постепенно

  • @AlexandrIvshin
    @AlexandrIvshin 5 місяців тому

    nil-не всегда тот, за кого себя выдает(с) Где то заплакал питонист.))

  • @asylzhan_ahmetow
    @asylzhan_ahmetow 5 місяців тому

    Далеко не самое лучшее объяснение. Те, кто не знают про интерфейсы ничего не поймут

  • @Mimookrokodill
    @Mimookrokodill 6 місяців тому

    Видео супер

  • @sstansm7f
    @sstansm7f 6 місяців тому

    Общие требования к CLI утилитам из этой презентации 10:42 наличие мануала, актуального утилите. От себя добавлю: имеется юридический аспект, если утилита поставляется пользователю за пределы компании-разработчика. В случае если использование утилиты привело к убыткам у пользователя возможны иски к поставщику утилиты. 11:10 должен быть help вызываемый при помощи флагов -h, --help или при вызове утилиты без аргументов. 14:40 вывод команды: человеко читаемый (по умолчанию) и машинно читаемые форматы, например, json (может быть ещё csv?). 17:15 возможность запуска критических операций в режиме Dry Run. От себя добавлю: должен быть запрос на подтверждение критической операции: yes/no? $ 19:30 отображать ход выполнения длительных операций 20:30 для отображения DEBUG сообщений использовать режим Verbose 21:20 тексты ошибок должны быть понятны пользователю и не должны содержать внутреннюю информацию понятную только программистам 23:10 позиционные аргументы и флаги командной строки должны представлять единообразную систему 24:00 число позиционных аргументов не должно быть больше 2, чтобы пользователь не запутался 24:40 желательно иметь короткие версии для флагов - экономит место 28:10 если много команд, то желательно их поместить в иерархию или дерево команд 29:15 именование команд из 2 позиционных аргументов: object action либо, более редко встречается, - action object. Далее идут флаговые аргументы. 29:55 порядок object action либо action object должен быть единообразным для CLI утилиты 30:45 если выполняется длительная операция, то должен быть graceful shutdown, то есть обработка прерывания от клавиатуры Ctrl+C - закрытие открытых, заблокированных и т.п. ресурсов 31:55 передача аргументов через конфигурационные файлы и переменные окружения 32:40 при смешанной системе передачи аргументов утилите должны быть приоритеты: наибольший приоритет имеют флаги, потом переменные окружения, потом конфиги 33:20 дистрибуция должна требовать от пользователя наименьшее количество шагов по установке 39:30 коды завершения утилиты (exit codes) важны для использования CLI утилиты в сценариях (скриптах) автоматизации

  • @CultureofSpeech
    @CultureofSpeech 6 місяців тому

    Чудесно звучит 🎉 Когда будет продолжение этой темы разговора

  • @storm-kd4op
    @storm-kd4op 6 місяців тому

    вы здорово объясняете. спасибо

  • @victorkochkarev2576
    @victorkochkarev2576 6 місяців тому

    Отличное видео, спасибо вам.

  • @Evg2002
    @Evg2002 6 місяців тому

    спасибо брат

  • @ztarlitz1
    @ztarlitz1 6 місяців тому

    чего вы там все изучаете? мне кто-то лет 25 назад дал конфиг на vim и с тех пор я этим конфигом пользуюсь и чего-то там изучать никакой нужды нет. Мои познания самого vim ограничиваются 15 минутами, которые понадобились на чтение vimtutor. В 99% случаев ничего за пределами этих знаний вам не понадобится. Поэтому сама постановка вопроса стоит ли изучать vim звучит как-то странно, как будто вы теорию супер струн собрались изучать. Взяли да потратили 20 минут времени на vimtutor вот и все изучение.

  • @medencev
    @medencev 7 місяців тому

    13:26 4 аксиома действительна только для небуферизированных каналов func main() { ch := make(chan int, 1) ch <- 1 close(ch) fmt.Println(<-ch, <-ch, "surprise") }

  • @Seniorius
    @Seniorius 7 місяців тому

    Иногда линтер жалуется на интерфейсы. Например нельзя делать возврат интерфейсов

  • @OlzhasKaribayev
    @OlzhasKaribayev 7 місяців тому

    perfect