defer panic
3.02K subscribers
83 photos
11 videos
208 links
Канал про айти в целом и про Go в частности.
YouTube → youtube.com/@deferpanic
Все вопросы в личку канала
Поддержать канал:
ETH — tomakado.eth
TON — tomakado.ton
BTC — 19xwFstmVQsVYqZP64iMVg1StLNSah6Smo
Download Telegram
Я, кстати, обновил свой текстовый блог.

• новый дизайн — более аккуратный и адаптивный
• добавил поиск — да, на статическом сайте
• актуализировал информацию о себе
• перенёс сайт с Digital Ocean на GitHub Pages — второй вариант бесплатный, и не нужно свой раннер для GitHub Actions держать

Постепенно буду выкладывать туда уже публично доступные текстовые версии роликов.

У меня также куплен домен deferpanic.dev (и ещё куча других, я их коллекционирую :), и пока что я его приспособил только для инстанса Мастодона. Позже точно сделаю на нём блатную почту, но идей для того, что будет открываться по адресу deferpanic.dev особо нет. Если у вас есть мысли, делитесь в комментах )
🔥7👍3👻1
⚠️ Набрасываю на SQL

Я как-то раз писал про то, почему я не люблю SQL (именно язык как концепцию и философию, а не конкретные реализации), зато люблю про это говорить — уже третий пост, где я это упоминаю. Тем не менее я сейчас пишу код для следующего ролика, и я сознательно решил там использовать PostgreSQL. Причина простая — это видос про написание проекта. Такие видосы по моей гипотезе полезны прежде всего джунам, чтобы те могли приложить к резюме свой гитхаб, где лежит реализованный проект. И в данном случае джун, умеющий хоть как-то в PostgreSQL будет иметь преимущество, потому что постгря сейчас практически везде.

Так вот, я вчера мозг сломал в трёх местах, пока пытался написать запрос с элементарной фильтрацией по колонкам с таймстемпами. Не то что бы это что-то сложное, но способов выразить время и фильтры по времени в PostgreSQL миллион (как и положено в SQL). А к ним добавляется ещё неясность относительно того, как эти даты и интервалы правильно передавать конкретному драйверу — авторы того драйвера, что у меня решили, что не будут делать авто маппинг time.Duration в интервалы. Почему? Потому что не будут.

Вообще я думал про то, что в СУБД нужно выкинуть/сделать SQL опциональным и предоставлять бинарный протокол. Почему SQL нужен аналитикам — понятно. Зачем промежуточный язык для продакшен-кода — мне непонятно. Если бы у СУБД существовал бинарный протокол, то язык запросов мог бы быть выражен инструментами языка, на котором ведётся разработка. Да, я знаю про ORM и ActiveRecord. Но они всё равно превращают код на одном языке в код на SQL. Тут уж я скорее солидарен с го-коммьюнити — если и писать SQL-запросы, то на самом SQL.

Есть тула, на которую я недавно наткнулся — sqlc. Она отчасти, но решает эту проблему: вы описываете схему БД, как обычно вы это делаете в миграциях на создание таблиц, а дальше sqlc генерит код. Сгенерированный код реализует только CRUD, но при этом никто не мешает в отдельном файле рядом дописать к структурам методы, которых вам не хватает. В sqlc нравится, что это не ORM, а именно кодогенерация — при необходимости с sqlc можно будет постепенно без проблем съехать или, например, подменить части сгенерированного кода (засчёт эмбеддинга и прочих танцев, но всё равно). Выкинуть ORM просто так уже не получится.
👍7
Иногда мне нужно проверить какой-нибудь маленький сниппет кода, и обычно для этого я открываю Go Playground. А тут мне попалась штука под названием gore. Это по сути REPL для Go! Т.е. можно построчно и интерактивно вводить части кода и тут же выполнять их. Конечно, до лисповых реплов ему как до Луны (да и до питонячего, я подозреваю, тоже), но для описанного мной юзкейса в самый раз.
👍9🔥5
Делюсь с вами моим докладом с Podlokda Go Crew про принципы построения CLI-приложений.

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

Спасибо Подлодке за то, что позвали выступить.

📹 https://youtu.be/kbciYciNO4Y
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥7👍1👏1
В следующем релизе Go, кажется, завезут структурированный логгер прямо в стандартную библиотеку

https://go.googlesource.com/proposal/+/master/design/56345-structured-logging.md
🔥14
Не пишите комменты

В какой-то момент я перестал практически полностью писать комменты к коду и отключил везде линтер, который проверяет их наличие. Потому что 99,(9)% времени комменты либо описывают что-то очевидное (GetUser returns user или ID is ID of user), либо описывают что-то очевидное и врут, потому что забыли обновить коммент или неточно выразили свои мысли (GetUser is goroutine-safe). Я понимаю, что кто-то может возразить, что бывают случаи, когда комменты нужны. Я вижу для себя три возможные причины:

• Код запутан из-за оптимизации или специфики алгоритма
• В языке нет вменяемой системы типов (привет, Clojure)
• Выразительность языка на уровне write only (привет, Haskell)

Вторые два случая нас не интересуют — мы же тут про Go говорим. Да и с первым всё понятно — если алгоритм или предметная область сложные сами по себе, тут уже ничего не поделаешь. В остальных случаях, когда я вижу комменты к коду, которые добавлены «для ясности», то я понимаю, что на самом деле человек потратил лишнее время, для того чтобы написать ясный комментарий (если повезло) вместо того, чтобы написать ясный код.

Я вдруг вспомнил столь холиварную тему, т.к. за завтраком наткнулся на ролик с офигенного канала Code Aesthetic: https://youtu.be/Bf7vDBBOBUA

Но вообще интересно почитать, что думаете вы. Поэтому если не согласны (и согласны тоже), то напишите в комментах, почему — к этому посту, не в коде 😀
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5🔥2👎1🤔1
GitHub Copilot получил вполне логичное развитие, и теперь по сути в него встроен ChatGPT. Давно пора! Теперь не нужно будет копировать код, вставлять в ChatGPT и просить что-то с ним сделать, всё стало чуть удобнее.

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

https://github.com/features/preview/copilot-x
❤2👍1
Как вы относитесь к «классическим» паттернам из ООП в Go? (Visitor, Observer и так далее)
Anonymous Poll
29%
А как без них?
19%
Иногда применяю, но по привычке после Жавы/Питона/younameit
41%
Воняет Жавой, не нужны
11%
Свой вариант в комментарии
🎙️Новая камера, мощь Apple Silicon, ChatGPT, Breaking Bad / defer panic podcast

У меня давно была мысль попробовать делать подкаст. И вот наконец-то я решил начать! Для простоты первый выпуск в режиме соло без гостей, и скорее всего так и останется какое-то время.

Формат подкаста такой: я рассказываю, как у меня дела в первую очередь относительно канала, а также рассуждаю вслух на какие-то темы. Первый (нулевой, если быть точнее) выпуск, он же пилот — это эксперимент, поэтому я очень жду фидбек сначала от платных подписчиков, а потом и от вас.

Подкаст сейчас доступен подписчикам платного канала, а так же бустерам и патронам.

💳 dfrp.cc/A6wciz
💳 dfrp.cc/Fs8Xr

Темы выпуска
- О чем подкаст
- Зачем я его начал вести
- Вернулся микрофон
- Новая монтажная машина
- Новая камера
- Агрегатор статей на базе ChatGPT
- Заменит ли ChatGPT всех?
- Я посмотрел Breaking Bad
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3👍3
defer panic
🎙️Новая камера, мощь Apple Silicon, ChatGPT, Breaking Bad / defer panic podcast У меня давно была мысль попробовать делать подкаст. И вот наконец-то я решил начать! Для простоты первый выпуск в режиме соло без гостей, и скорее всего так и останется какое…
FYI: если вы ставили Телеграм из App Store, оплатить доступ в платный канал не получится — требование Apple 😒

Поэтому нужно это делать с десктопа или веба. Пишу, т.к. вижу висящие запросы на вступление, а некоторые подписчики писали, что у них на девайсах заблокирована оплата, поэтому они в висящих запросах и остались.
Please open Telegram to view this post
VIEW IN TELEGRAM
Пилотный эпизод подкаста вышел на основных платформах:

📹 YouTube
🍎 Apple Podcasts
🎵 Spotify
🎵 Яндекс.Музыка
🎧 SoundStream

Позже подтянутся Google Подкасты и Overcast.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥4
Чтобы сгенерировать видеоряд для подкаста на ютуб, я взял Game of Life и начал играться с параметрами. Несмотря на то, что использовалась в итоге только одна конфигурация, всяких красивых залипательных штук получилось много. Вот такая красота вышла.
🔥1
Я состою в сообществе IT Youtubers, и хочу с вами поделиться новым телеграм-каналом, в котором публикуются дайджесты постов от авторов из сообщества. Времени читать посты всех подряд у меня, например, нет, а вот пробежаться по сводке и перейти к заинтересовавшим постам — в самый раз.

На сайте, кстати, много каналов и проверенных курсов от членов сообщества — хорошее место подыскать себе ресурсы для (само)обучения.
👍7
Ещё один подгон от @ityoutubers_com — папка с каналами про айти.

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

Вообще, конечно, мне нравится подход команды мессенджера. В условном фейсбуке вряд ли бы стали такое делать, потому что «продуктово» (на самом деле просто с точки зрения гринда KPI) это «не резонно» (т.е. непонятно, как повысит ретеншен и насколько больше или меньше продукт станет зарабатывать). В Телеграме же многие фичи появляются, просто потому что прикольно или удобно.

А вот от меня самого давненько нового ничего не было — не переживайте, просто на работе и не только навалилось дел. Занимаюсь новым роликом урывками, когда есть немного времени.
👍5❤‍🔥2🔥1