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
Вы наверняка знаете про Hugo — генератор статических сайтов, написанный, кстати, на Go.

Недавно у меня появилась необходимость сделать резюме, но я не хотел делать его в Google Docs или чём-то подобном, потому что такие доки у меня вечно теряются. Верстать руками HTML я тоже не хотел, поэтому просто заполнил все нужные данные в YAML-файлах, подготовил шаблон, а дальше Hugo сделал всё сам. В итоге получилось сделать всё так, что при конвертации страницы в PDF всё помещается на одну страницу.

Если вам нужен шаблон резюме, можете забрать его здесь 👉 https://github.com/tomakado/cv
❤6❤‍🔥4🔥2
👀 Месяц назад я выступал на конференции Podlodka Go Crew.

Через какое-то время мой доклад будет доступен для всех, а пока что его могут посмотреть любимки на Бусти, Патреоне и в платном канале:

💳 dfrp.cc/SLbRv4
💳 dfrp.cc/nmy7pi

Новый ролик тоже в процессе производства. Но если вы ещё не смотрели видос про тестирование, то вы знаете, что делать 😉
Please open Telegram to view this post
VIEW IN TELEGRAM
❤6🔥5👍1👏1
Поделюсь с вами ещё одним исследованием рынка труда в IT. Если вам надоела эта тема — извините, в последние месяцы это всё было для меня очень актуально. Но вообще держать на руку на пульсе и отслеживать рынок полезно, даже если вы не собираетесь менять работу в обозримом будущем.

Так вот, devjobsscanner представил своё исследование рынка с 8 наиболее востребованными языками программирования в прошлом году. В топ вошёл, конечно, и 💎. Методика у исследования немного странная: как я понял, из выборки исключены вакансии без упоминания стека (типа просто “Backend developer”). С одной стороны идея понятна, с другой стороны стек можно было вытащить из описания, но для кого-то это, видимо, непостижимый рокет саенс.

Нужен кто-то, кто сделает метаисследование, чтобы сгладить сдвиги каждого из отдельных 😄

P.S. Поздравляю всех гоферок и вообще женщин в IT с Международным женским днём 👀🌷
Please open Telegram to view this post
VIEW IN TELEGRAM
🥰3👍2
algo — коллекция решений задач с интервью с лайвкодингом на Go.

Если вы ещё никогда не ходили на кодинг-интервью (например, вы стажёр, джуниор или только учитесь), то наверняка полезно. Как минимум облегчит тренировки и подготовку.

У меня опыт такой, что я обычно прохожу кодинг-интервью без подобных тренировок, но у меня все эти алгоритмы были в универе и частично на работе + в FAANG я не пробовался.
👍11😍2❤1
Интеграция ChatGPT в Raycast ❤️

https://www.raycast.com/ai

Недавно у ChatGPT появился API, что позволяет творить всякие крутые штуки, ограниченные только фантазией разработчиков.

И одна из наиболее крутых и ожидаемых мною штук - интеграция с Raycast. Ожидал я её давно, но узнал только сегодня. Посмотрел демку от разработчиков, сказал своё "shut up and take my money" и присоединился к waitlist.

На мой взгляд, Raycast это самый лучший кандидат в клиенты для ChatGPT на маках, т.к. у него очень удобный, красивый и гибкий UI. К тому же, нативный, а не какой-нибудь электрон.

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

Уже не терпится попробовать =)

#chatgpt #raycast
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2👍2🤔1
Сегодня ночью пробили 2^11 🎉❤️
❤15🎉6🔥1
Я, кстати, обновил свой текстовый блог.

• новый дизайн — более аккуратный и адаптивный
• добавил поиск — да, на статическом сайте
• актуализировал информацию о себе
• перенёс сайт с 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