nil-не всегда тот, за кого себя выдает(с) Где то заплакал питонист.))
@asylzhan_ahmetow2 күн бұрын
Далеко не самое лучшее объяснение. Те, кто не знают про интерфейсы ничего не поймут
@Mimookrokodill8 күн бұрын
Видео супер
@sstansm7f8 күн бұрын
Общие требования к 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 утилиты в сценариях (скриптах) автоматизации
@user-if1dj7fy2y15 күн бұрын
Чудесно звучит 🎉 Когда будет продолжение этой темы разговора
@storm-kd4op21 күн бұрын
вы здорово объясняете. спасибо
@victorkochkarev257625 күн бұрын
Отличное видео, спасибо вам.
@Evg200225 күн бұрын
спасибо брат
@ztarlitz128 күн бұрын
чего вы там все изучаете? мне кто-то лет 25 назад дал конфиг на vim и с тех пор я этим конфигом пользуюсь и чего-то там изучать никакой нужды нет. Мои познания самого vim ограничиваются 15 минутами, которые понадобились на чтение vimtutor. В 99% случаев ничего за пределами этих знаний вам не понадобится. Поэтому сама постановка вопроса стоит ли изучать vim звучит как-то странно, как будто вы теорию супер струн собрались изучать. Взяли да потратили 20 минут времени на vimtutor вот и все изучение.
А зачем? К тому же как произойдет выход из getContext, все созданные внутри контексты отменятся
@user-zg8ij3kt1hАй бұрын
@@deferpanic даа((( что, если нужно натянуть контекст на несколько методов? Причём, таймаут должен быть общим для всех, а доступа к main() нет?
@user-zg8ij3kt1hАй бұрын
Круто, респект! Хотелось бы ещё примеров с использованием deadline-ов и работы с БД через контексты.
@AdamsonBorАй бұрын
Привет! На 45:45 ты предлагаешь обернуть все в транзакции. Как это сделать правильно? Переписать методы стора и добавить дополнительное поле к методам или как?
@user-name-2598Ай бұрын
рановато я сюда зашёл)) на assert уже проблемы появились(
@AleksandrPopov-te8tqАй бұрын
интересное, а главное, понятное и доступное видео)
@sergemioАй бұрын
Здравствуйте! Подскажите пожалуйста, как можно с вами связаться, email или что-ещё. Нужна небольшая консультация
@deferpanicАй бұрын
t.me/tomakado
@qrthack32332 ай бұрын
1 0 1 мой друг, хочу в backend, выбираю между C#, Golang, Node.js, Java, что посоветуешь, чтобы легче было устроиться на работу с перспективой? Или с какого языка посоветуешь начать?
@YGNETATEL_30002 ай бұрын
Я предлагаю вам пройтись по этому документу и разобрать каждый пункт" - Автор. 0:30 На этом моменте чуть не выключил видео что бы найти в инете этот документ и пройтись по нему. На деле посыл автора был - Вместе пройтись . А сколько людей выключило на этом моменте ?
@codingjerk2 ай бұрын
Спасибо за видос, если ещё не пробовал - рекомендую посмотреть модальные редакторы helix или kakouine. В них используется другая, более логичная и удобная парадигма управления - вместо action-movement (как в виме) там selection-action. Я уже около года на helix, доволен
@deferpanic2 ай бұрын
Посмотрю, спасибо!
@AleksandrPopov-te8tq2 ай бұрын
дальше "подготавливаем окружение" не ушел, и postgres стоит и docker, а работать не хотят((
@redice89282 ай бұрын
Использование собственных кастомных библиотек, и проектирование некоторых моментов «не по гошному» я могу понять только в собственном проекте, но никак не в обучающем видео, которое показано остальным как пример для сохранения в свой репозиторий. Считаю такое максимально бестактным.
@TraderOff-Road2 ай бұрын
как называется IDE на видео? upd: Goland нашел снизу в коменнтах, оставлю тут)
@MartinXProject2 ай бұрын
Спасибо за очень качественный контент
@MartinXProject2 ай бұрын
Большое спасибо за полезную информацию!
@PoringLoveSmoke2 ай бұрын
Подача 10/10
@user-fb6fr5nx9u3 ай бұрын
In memory + с надежной персистентностью это tarantool, протестированное многими корпами решение
@nikolaikorotaev94703 ай бұрын
Лучшее видео по этой теме, что я видел в интернете. Есть смысл на бусти подписаться!
@user-qx3km6wp1p3 ай бұрын
Поверхностный взгляд на код: - В storage идет чтение из БД напрямую в структуры model. Это очень плохой подход, т.к. у нас фактически получается что общие модели зависят от структуры БД. Правильнее чтобы в storage были свои структуры, которые на выходе конвертируются в структуры model. - Имена интерфейсов лучше писать так, чтобы они заканчивались на er, т.к. в противном случае получается не интерфейс, ориентированный на какой-то набор операций, а просто непонятное нечно. Например ArticleStorage - интерфейс, отвечающий за что? Глобально за работу с хранилищем? Нет - у него всего один метод Store. Значит это нечто вроде ArticleSaver. - В Notifier передается указатель на объект tgbotapi.BotAPI вместо того чтобы определить интерфейс с методом Send и передавать уже его. - Неструктурированные логи. Вместо log лучше сразу привыкать к zap (причем без Sugar), slog и т.п.
@user-qx3km6wp1p3 ай бұрын
Такие миграции никогда не пройдут ревью в серьезной команде: - поля времени без таймзоны - varchar вместо text (это бессмысленно, т.к. varchar это просто text с навершенным на него ограничением на длину) - устаревший синтаксис (SERIAL вместо IDENTITY, CONSTRAINT вместо REFERENCES) - goose StatementBegin/StatementEnd там где он не нужен Это только то что сразу бросается в глаза Кроме того, миграции это то, что доступно извне и используются внешними утилитами при деплое, т.е. идеологически не должно быть в Internal. Но это уже холиварная тема.
@MrBoBrilOАй бұрын
Надушнил так надушнил
@user-qx3km6wp1p3 ай бұрын
Чтобы это все понять, надо поработать какое-то время в хайлоаде. Иначе, скорее всего, в одно ухо влетит - из другого вылетит, т.к. нет базы.
@deusexmachine28343 ай бұрын
Пишу телеграм-бота, пытался вручную написать middleware для того, чтобы бот не читал слишком старые сообщения, как вдруг увидел эту библиотеку. Спасибо за объяснение.
@AlanAbishev3 ай бұрын
Отличная подача материала, а так же качество презентации
@aleksandrtm61633 ай бұрын
Хорошая подача, спасибо за информацию, было оч приятно послушать
@dizelvinable3 ай бұрын
Очень полезная информация! Спасите большое!
@kostais3 ай бұрын
Спасибо. Хороший материал
@laylaserizawa58993 ай бұрын
спасибо за видео, очень полезно 🙂
@kselnaag24823 ай бұрын
Приветствую, не знаю как на других языках, но в GO, все логеры, которые я видел, выдают логи в os.StdErr, а не в Out (небольшая поправочка). Засим вопрос от человека пишущего свой логер: есть ли смысл Fprintf (или функцию с ним) оборачивать в горутину, ибо в GO вроде отдельная очередь на I/O. Естественно , только нагрузочное может дать ответ на этот вопрос со 100% точностью, но до этого еще далеко.
@deferpanic3 ай бұрын
А с какой целью это делать? Если хочется для перфоманса, то тот самый пресловутый I/O не даст получить выигрыш. Я бы скорее сохранял записи в какой-то бакет, и вываливал его, как только он заполнится. Но тут надо помнить про риск потерять часть записей.
@kselnaag24823 ай бұрын
@@deferpanic Тогда уж лучше по таймеру буфер освобождать, а не по заполнению. При многопоточке I/O в параллель не встанет ?
@deferpanic3 ай бұрын
Либо по таймеру, да. Надо на конкретный кейс смотреть
@kselnaag24823 ай бұрын
@deferpanic kselnaag/shortlink2 + я как раз спрашивал про базовый шаблон минимального микросервиса, у меня получилось так: SimpleDomainModel, layering+SOLID, web морда пока не запилена, но критиковать уже можно =D
@xdFOrfq8VVH6j5kXAh3 ай бұрын
Посмотрите у вашей библиотеки возможность писать логи в os.Stdout. Даже у стандартного log
@user-jh6li8ep7d3 ай бұрын
😮
@wildjoe62593 ай бұрын
Спасибо! Отличное освещение темы.
@it18603 ай бұрын
1
@aleksandrzaremba65203 ай бұрын
Спасибо автору, очень качественное видео и сильно экономит время перед собесом
@deferpanic3 ай бұрын
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/