- 16
- 179 547
defer panic
Georgia
เข้าร่วมเมื่อ 6 ธ.ค. 2021
Канал о программировании в общем и про язык Go в частности.
❤️ Реквизиты, если у вас есть желание поддержать меня и развитие канала:
Boosty - boosty.to/deferpanic
Patreon - www.patreon.com/deferpanic
ETH - tomakado.eth
TON - tomakado.ton
BTC - 18vz3Lr94CLqebH41hbYLwYviJ96wvXm7i
❤️ Реквизиты, если у вас есть желание поддержать меня и развитие канала:
Boosty - boosty.to/deferpanic
Patreon - www.patreon.com/deferpanic
ETH - tomakado.eth
TON - tomakado.ton
BTC - 18vz3Lr94CLqebH41hbYLwYviJ96wvXm7i
Пишем надёжный бэкенд // 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 #архитектура
Адам Виггинс и другие сотрудники компании 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 069
วีดีโอ
Создаем Telegram-бота для новостей на Go, PostgreSQL и OpenAI API (ChatGPT)
มุมมอง 24Kปีที่แล้ว
В этом ролике мы с вами напишем проект, который не стыдно положить на свой GitHub. Это будет Telegram-бот, который автоматически достаёт свежие новости и статьи про язык программирования Go из разных источников, генерирует для них саммари с помощью OpenAI API (ChatGPT), а затем публикует их в Telegram-канал. И всё это автоматически! Такой проект может послужить отличным преимуществом при поиске...
🎙️ Новая камера, мощь Apple Silicon, ChatGPT, Breaking Bad / defer panic podcast #0
มุมมอง 693ปีที่แล้ว
У меня давно была мысль попробовать делать подкаст. И вот наконец-то я решил начать! Для простоты первый выпуск в режиме соло без гостей, и скорее всего так и останется какое-то время. Формат подкаста такой: я рассказываю, как у меня дела в первую очередь относительно канала, а также рассуждаю вслух на какие-то темы. Первый (нулевой, если быть точнее) выпуск, он же пилот - это эксперимент, поэт...
CLI-интерфейсы по-человечески @PodlodkaShow
มุมมอง 4.3Kปีที่แล้ว
Возможно, вам покажется, что говорить в 2023м о консольных приложениях странно, но в докладе мы покажем, почему CLI-приложения еще актуальны. Разберемся, какие инструменты помогут нам баланс и сделать такие приложения максимально удобными и понятными пользователю. На закуску предложим шаблон с конфигами, который можно унести к себе в команду. ❤️ Реквизиты, если у вас есть желание поддержать мен...
Тесты. Что нужно знать разработчику
มุมมอง 6Kปีที่แล้ว
Разбираемся, что такое автотесты и зачем их писать. ❤️ Реквизиты, если у вас есть желание поддержать меня и развитие канала: Boosty - dfrp.cc/boosty Patreon - dfrp.cc/patreon Donation Alerts - donationalerts.com/r/deferpanic ETH - tomakado.eth TON - tomakado.ton BTC - 19xwFstmVQsVYqZP64iMVg1StLNSah6Smo Как написать сокращатель ссылок: th-cam.com/video/v6rMPOlPzpk/w-d-xo.html Ссылки по теме роли...
Cокращатель ссылок на Go с нуля до деплоя
มุมมอง 7Kปีที่แล้ว
В этом ролике я пишу сокращатель ссылок на 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?
มุมมอง 7K2 ปีที่แล้ว
Мои импровизированные рассуждения на камеру о том, как подходить к изучению новых инструментов на примере текстового редактора Vim. Полезные ссылки вы найдете в нашем канале в Телеграме: Telegram: t.me/deferpanic Discord: discord.gg/4uw7Fpp2QX ❤️ Реквизиты, если у вас есть желание поддержать меня и развитие канала: Boosty - boosty.to/deferpanic Patreon - www.patreon.com/deferpanic Donation Aler...
Всё про конкурентность в Go
มุมมอง 19K2 ปีที่แล้ว
Текстовый конспект к видео: 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.2K2 ปีที่แล้ว
В этот раз поговорим об одной из самых долгожданных фичах Go - дженериках - инструменте обобщённого программирования. Дженерики - настолько крупное изменение в языке (относительно других), что пройти мимо невозможно. ❤️ Реквизиты, если у вас есть желание поддержать меня и развитие канала: Boosty - boosty.to/deferpanic Patreon - www.patreon.com/deferpanic Donation Alerts - donationalerts.com/r/d...
Golangci-lint. Повышаем качество кода на Go!
มุมมอง 6K2 ปีที่แล้ว
Поговорим о том, что такое линтеры, и как их правильно настраивать в больших и маленьких проектах. ❤️ Реквизиты, если у вас есть желание поддержать меня и развитие канала: 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
มุมมอง 38K2 ปีที่แล้ว
Разбираемся на примерах, что такое интерфейсы и как использовать. ❤️ Реквизиты, если у вас есть желание поддержать меня и развитие канала: 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
มุมมอง 15K2 ปีที่แล้ว
Завершаем программы изящно / Graceful Shutdown в #Golang
Разбираемся с контекстами в #Go / туториал по context.Context в #Golang
มุมมอง 42K2 ปีที่แล้ว
Разбираемся с контекстами в #Go / туториал по context.Context в #Golang
почему в примере с такси иногда возникает дедлок? upd: мне объяснили, почему возникает дэдлок. Объясните плз, как это исправить. Как написать всё правильно. Пример то вроде хороший, и хотелось бы знать, как такое реализовать
я сидел на неовиме несколько лет и спрыгнул в jetbrains + vim plugin, осознал что у меня помимо обычной работы еще появилась работа по поддержке своего конфига в нвиме
Ты это сеньорам расскаживаешь ? 😊
Качественный контент. Хочется нажать кнопку лайк несколько раз. TDD и mocks можно отдельными роликами сделать.
Классное видео, но есть большая проблема для новичков - монтаж, в процессе много простых действий пропускается, хотя возможно рассчитано, на немного более опытных "студентов"
зоопарк горутин:) (подача материала/звук/голос топ)
Нихрена не понятно
все отлично спасибо. меня раздражало только то как ты громко глотаешь. а в целом все полезно!
хорошее видео я посмотрел сорри за ожидание теперь можешь удалять
понравилось название канала :D
20:40 тут нету синхронизации. Мы все еще можем прочитать сначало из одной горутины, переключиться на другую, прочитать из другой еще до того как первая обновит значение. При таком подходе баланс точно так же может уйти в минус
Поначалу рассказывал нормально, а в последние 5 минут пролетел галопом по Европам. Почти как в лекции про мосты из "Как я встретил вашу маму"
Насколько хорошо нужно знать go, чтобы написать такого бота? Что именно нужно знать, просьба подсказать
По идее хватит всего, что рассказывается в ролике. Вот и повод проверить )
бит топ
Хорошее видео* *по версии меня
хотелось бы еще побольше ньюансов о том как передаются параметры с типом заданным как итерфейс. например есть интерфейс context.Context и переменную ctx безопасно передавать из ф-и в ф-ю "по значению". потому что под капотом ctx это уже указатель а не сама структура. а почему оно указатель - непонятно. и как это увидеть не копая исходники пакета context.go - неясно.
спасибо
ok == false значит канал закрыт !
тоже обратил внимание на этот момент и полез в комментарии
Непонятно. Рассказываются догмы, которые нужно самому искать где-то и доказывать, что оно действительно так и применяется вот таким образом. Короче, конспект из лекции, в котором студент сам же не разберётся к концу семестра
Для более лёгкого входа можно попробовать готовые сборки (AstroVim, LunarVim, NvChad)
Уважаемый человек!
великолепно, очень доходчиво. спасибо!
очень нужно разобраться в теме интерфейсов, посоветуйте еще видосов, тут ничего не понял. Может есть что-то прпроще
Все же ключевым аргументом в пользу перехода на vim из vscode для меня стал unix way. Когда очередной раз сталкиваешься с петушинной реализацией логики нужного плагина, задумываешься о правильности концепции программных комбайнов.
Привет, мне очень нравится твоя подача материала, а так же формат видео в доступной форме. У меня есть предложение для видео, не мог бы ты рассказать, так же показать на примере паттерн Repository в Golang ?
как хочется сделать такой бот, но как и парень в предыдущих комментах застряла на подготовке окружения( goose не видит совсем ни на винде, ни на линуксе. или накосячила на предыдущих этапах. когда-нибудь я его одолею!
девушка не сказала ничего полезного под конец, разве что повторила о том что нельзя проверить приоритет
Я в шоке, ты пишешь быстрее чем я успеваю понимать что вокруг происходит
Я и правда печатаю быстрее, чем средний человек, но тут скорее магия монтажа )
По-моему самое адекватное объяснение. Спасибо!
очень крутое и понятное видео!
вся эта хрень про мышку и отрыв руки не касается мака да, можно сказать, что можно даже сэкономить на пользовании трэкпадом, но это уже сомнительно - выглядит так, что в vscode многое делается лучше и быстрее. Года полтора назад зарелизили профайлы, теперь 20 профайлов (я использую их под стеки, можно про проекты и что угодно)
Очень полезный материал для тех кто планирует работать в рефлексии
Vim - для людей с феноменальной памятью. Со мной в универе училась девушка, которая смотрела тетрадь с лекциями, потом закрывала и говорила на какой странице в каком углу находится любой текст. Вот для таких людей Vim идеален. Для меня же необходимость запоминать больше 10 сложных клавиатурных комбинаций - это сразу "нет", безотносительно возможных выгод. Я в школе учил 8 строк стихов примерно весь вечер и всё равно не мог их запомнить. Помучился в Vim и бросил. Видео смотрел в надежде узнать, что Vim бесполезен и не нужен. Увы, автор не обрадовал :)
ну за месяц может два учится привыкается. Учить стихи надо постепенно
nil-не всегда тот, за кого себя выдает(с) Где то заплакал питонист.))
Далеко не самое лучшее объяснение. Те, кто не знают про интерфейсы ничего не поймут
Видео супер
Общие требования к 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 утилиты в сценариях (скриптах) автоматизации
Чудесно звучит 🎉 Когда будет продолжение этой темы разговора
вы здорово объясняете. спасибо
Отличное видео, спасибо вам.
спасибо брат
чего вы там все изучаете? мне кто-то лет 25 назад дал конфиг на vim и с тех пор я этим конфигом пользуюсь и чего-то там изучать никакой нужды нет. Мои познания самого vim ограничиваются 15 минутами, которые понадобились на чтение vimtutor. В 99% случаев ничего за пределами этих знаний вам не понадобится. Поэтому сама постановка вопроса стоит ли изучать vim звучит как-то странно, как будто вы теорию супер струн собрались изучать. Взяли да потратили 20 минут времени на vimtutor вот и все изучение.
13:26 4 аксиома действительна только для небуферизированных каналов func main() { ch := make(chan int, 1) ch <- 1 close(ch) fmt.Println(<-ch, <-ch, "surprise") }
Иногда линтер жалуется на интерфейсы. Например нельзя делать возврат интерфейсов
perfect
func (m *SQLMap) getContext() context.Context { const DefaultTimeout = time.Duration(60 * time.Second) ctx, cancel := context.WithTimeout(context.Background(), DefaultTimeout) defer cancel() newCtx, cancel := context.WithTimeout(ctx, m.timeout) defer cancel() return newCtx } Так допустимо делать?
А зачем? К тому же как произойдет выход из getContext, все созданные внутри контексты отменятся
@@deferpanic даа((( что, если нужно натянуть контекст на несколько методов? Причём, таймаут должен быть общим для всех, а доступа к main() нет?