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
Есть шутка про фронтенд, что, мол, каждую неделю выходит новый JS-фреймворк. У Go тоже было такое, но про HTTP-роутеры. Разгоняли вплоть до того, что если ты не писал свой роутер, то ты не настоящий Go-разработчик :) Теперь этому мему скорее всего придёт конец — в Go 1.22 прокачают роутер, встроенный в стандартную библиотеку. Да, всё это время в Go уже был свой роутер — скупой, простой, зато родной. Его решили сделать чуточку удобнее: добавят роутинг по HTTP-методам и query-параметры:

func main() {
mux := http.NewServeMux()
mux.HandleFunc("GET /path/", func(w http.ResponseWriter, r *http.Request) {
fmt.Fprint(w, "got path\n")
})

mux.HandleFunc("/task/{id}/", func(w http.ResponseWriter, r *http.Request) {
id := r.PathValue("id")
fmt.Fprintf(w, "handling task with id=%v\n", id)
})

http.ListenAndServe("localhost:8090", mux)
}


И тут однозначно в выигрыше те, кто уже сидел на простых и, самое главное, максимально совместимых с net/http роутерах типа того же chi. Ведь по идее все уже написанные под net/http миддлвари и прочие инструменты должны спокойно встать и на рельсы нового роутера. Здесь же можно ожидать в будущем широкой поддержки во всех средах разработки.

Выглядит использование нового роутера всё ещё очень «по-гошному», а я всё ещё нежно люблю Echo. Но кажется, пришла пора с ним потихоньку прощаться. Я точно буду пробовать новинку в своих нерабочих проектах — в рабочих у меня сплошной gRPC.

P.S. Новость и сниппет я утащил из блога Eli Bendersky — горячо рекомендую, там часто очень годные посты.

❤ • ютуб • бусти • патреон • платный канал
Please open Telegram to view this post
VIEW IN TELEGRAM
👍28🔥10❤7
На Engineer's Codex в октябре вышла статья о том, как Airbnb за 15 лет из простого монолита превратился в большую систему.

4 ключевые мысли из статьи:

🔸 Начинайте инвестировать в инфраструктуру и платформенную разработку как можно раньше
🔸 Упрощайте зависимости между сервисами
🔸 Централизуйте обработку данных
🔸 Разделяйте логику UI и логику бэкенда

Сами мысли звучат очевидно, но не всегда очевидно, как собственно следовать этим принципам. В статье как раз раскрывается каждый пункт.

https://open.substack.com/pub/engineercodex/p/how-airbnb-scaled-by-moving-away

❤ • ютуб • бусти • патреон • платный канал
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
На днях ребята из OpenAI представили модель GPT-4 Turbo. Из нового и важного:

— 128 килотокенов в контексте
— Теперь можно явно попросить модель отвечать в JSON
— Воспроизводимые результаты

Для меня это довольно важный апдейт, поскольку у меня есть несколько пет-проектов, которые немного тормозили в разработке в том числе из-за того, что не получалось заставить API стабильно отвечать в нужном формате. А один из таких проектов, readme.go, требует помещать в контекст много букв.

Видимо в ближайшее время буду обновляться в тех местах, где присутствовали эти боли.

❤ • ютуб • бусти • патреон • платный канал
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥4
This media is not supported in your browser
VIEW IN TELEGRAM
Гулял в очередной раз по ГитХабу и нашёл то, чего мне не хватало все эти годы — Comby. Это такая штука, которая умеет делать поиск и замену в коде, учитывая синтаксис языка. Авторы утверждают, что поддерживают если не все, то большинство языков.

Тут может возникнуть закономерный вопрос: а чем регулярки и grep с sed не угодили? Регулярные выражения порой слишком низкоуровневые для такой задачи и хочется чуть больше абстракции. Так, например, в Comby не нужно городить сложные выражения для аргументов функции или для условия в цикле — вместо них используются конструкции :[args] и :[condition] соответственно.

В общем, штука кажется мега-полезной. Надеюсь, сообщество подтянется и сделает плагины для редакторов и IDE (или пойти самому сделать?).

На comby.live можно поиграться с Комби онлайн без регистрации и смс установки.

❤ • ютуб • бусти • патреон • платный канал
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥9💩6👍3
Прямо сейчас происходит открытая трансляция главного зала HighLoad++ 2023. Рекомендую посмотреть, там много полезного.

👉 Зарегистрировать и смотреть

В этот раз на конференции есть доклады по Go, поэтому я выбил вам 2 билета, которые я разыграю под этим постом. Условия простые: напишите число от 0 до math.MaxUint8. Два человека, которые напишут число наиболее близкое к тому, что я загадал, получат билеты. Только поторопитесь, розыгрыш закроется примерно через полчаса!

Сама конференция проходит 27 и 28 ноября, билеты дают доступ к записям в том числе.

--------

⭐️ В программе главного зала доклады лучших спикеров:

Павел Капля (Яндекс) — Алиса 6 лет спустя.

Александр Кирсанов (VK, ВКонтакте) — Математический хайлоад: большие, очень большие и немыслимо большие числа.

Евгений Россинский (ИВИ) — Как из Python и палок собрать детектор аномалий для highload.

#партнерскийпост
🔥4🥱3⚡1
В этом году традиционно проходит Advent of Code — ивент, в рамках которого нужно решать каждый день по задачке. Всё это сопровождается какой-нибудь историей, которая продвигается по мере решения задач. Сегодня, кстати, первый день.

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

Я пока не знаю, буду ли стримить в этот раз — напишите в комменты, хотели ли бы вы смотреть такой контент в лайве. А ещё я не определился с языком. Вариантов у меня несколько: Go (очевидно; был в прошлый раз), Python (отлично подходит для быстрокода с алгоритмами), Clojure (нежно люблю лисп и даже юзал в продакшене), что-то ещё функциональное (мозги нужно тренировать!) или простигосподи Rust (всё ещё осторожно посматриваю на него со стороны).

А у вас какие планы? Планируете участвовать? Если да, то на чём?

❤ • ютуб • бусти • патреон • платный канал
Please open Telegram to view this post
VIEW IN TELEGRAM
👍15🔥1😍1🍓1
Вот уж на какой wrapped действительно интересно посмотреть, так это на Raycast Wrapped. Интересно, что почему-то чаще всего я им пользовался по вторникам 🤔 Тут, конечно, не полные данные за год, т.к. я три раза менял комп — всю собранную статистику Рейкаст хранит только локально.

Если вы тоже пользуетесь Рейкастом, делитесь вашими результатами в комментах

❤ • ютуб • бусти • патреон • платный канал
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥8💩4👍1
В блоге Go анонсировали утилиту deadcode. Как понятно из названия, это инструмент статического анализа для поиска кода, который нигде не вызываются. Такое уже умеют делать многие линтеры, но приятно, что подобные инструменты предоставляются и авторами языка.

В статье, кстати, описывается, как deadcode работает под капотом. Поэтому рекомендуется к прочтению всем, кто интересуется статическим анализом кода.

❤ • ютуб • бусти • патреон • платный канал
Please open Telegram to view this post
VIEW IN TELEGRAM
👏21👍6🔥2
Никита Русин добавил в утилиту для мутационного тестирования Gremlins очень важную фичу — прогон только на свежих изменениях. Мне очень нравилась эта фича ещё в golangci-lint, т.к. она позволяет начинать использовать инструмент не только на новых проектах, но и внедрять их в гремучее легаси.

Если размер/сложность/возраст проекта — единственное, что вас останавливало попробовать писать мутационные тесты, можно больше не переживать и начинать внедрять.

🤔 Что ещё за мутационное тестирование?
Это такой способ проверить, насколько тесты действительно покрывают код. Делается это путём внесения случайных и небольших изменений (мутаций) в тестируемый код. Если тесты хорошо ловят мутации, то с качеством покрытия всё в порядке. В противном случае стоит посмотреть, а что вообще ваш тест проверяет и делает ли он это корректно.

Иными словами, мутационные тесты — это метод проверки качества самих тестов, а не тестируемого кода.

❤ • ютуб • бусти • патреон • платный канал
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6🫡4🌚1
Сценарий для нового видоса готов, так что ждите видос в течение пары недель
🔥23👍4⚡2❤2🤔2
🎉 Новый ролик уже вышел для платных подписчиков!

В этот раз рассказываю о 12 принципах, которые помогают писать надёжный бэкенд.

💬Закрытый канал
💳Бусти
💳Патреон

Позже ролик появится в публичном доступе.
Please open Telegram to view this post
VIEW IN TELEGRAM
🤡9⚡8👍3❤‍🔥2😁2
Если вы пропустили, на этой неделе вышел Go 1.22. Пожалуй, главное изменение произошло в поведении циклов. Теперь переменная цикла больше не захватывается по ссылке, и не нужно делать shadowing или другие похожие трюки/костыли.

С одной стороны, тут разработчики языка нарушили одно из главных своих обещаний — сохранение обратной совместимости. С другой стороны, программ, которые полагались на старое поведение цикла by design, скорее всего исчезающе мало.

На мой взгляд, так надо было делать изначально, конечно.

❤ • ютуб • бусти • патреон • платный канал
Please open Telegram to view this post
VIEW IN TELEGRAM
👍18❤2
12 факторов надёжного приложения

📹 youtu.be/uKyyIWkKDW8

Часто бывает так, что работа с кодовой базой проекта приносит боль в самых разных аспектах: от внесения изменений и добавления новых фич до развертывания на стенде. Может показаться, что какие-то проблемы являются данностью, и с этим принципиально сложно что-то сделать. К счастью, это относится не ко всему.

Адам Виггинс и другие сотрудники компании Heroku однажды решили составить документ, который помог бы решить многие проблемы с разработкой и эксплуатацией информационных систем. Этот документ называется “The Twelve-Factor App” или «12-факторное приложение». В ролике я разбираю каждый пункт документа.

С сегодняшнего дня ролик в общем доступе. Всем, кто подписался на Бусти/Патреоне/Телеграме и посмотрел там, вам большое спасибо за поддержку ❤️

❤ • ютуб • бусти • патреон • платный канал
Please open Telegram to view this post
VIEW IN TELEGRAM
👍23❤‍🔥5❤3🔥2🤡2
Периодически мне пишут с вопросом про ролик про новостного бота. Суть вопроса чаще всего следующая:

> Если я не хочу/не могу использовать OpenAI API или хочу для сравнения попрыгать по разным моделям без особых усилий, что мне делать?

Обратите внимание на проект LangChain for Go. По сути это порт одноимённого проекта для Питона, позволяющего вам взаимодействовать с разными LLM (и кажется не только) через единый интерфейс. Через LangChain можно ходить в OpenAI API или обращаться к моделям, которые вы запускаете сами у себя на машине. Ну и да, если какой-то модели нет, всегда можно просто заимплементить нужный интерфейс.

Сразу скажу, что лучше OpenAI тупо ничего нет — команда Альтмана на невероятном отрыве от остальных. Поэтому если ваша цель найти что-то лучше, можно остановиться прямо здесь. Я вижу только две адекватные причины не использовать GPT-4 или использовать не только её:

- Недопустимо, чтобы данные покидали ваш контур
- Вы хотите иметь фоллбэк-модели на случай, если OpenAI сляжет

❤ • ютуб • бусти • патреон • платный канал
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10
С 1 марта (это уже завтра, напомню) сайтам в России будет запрещено рассказывать о VPN и других средствах обхода блокировок. С одной стороны у каждого, кто не хочет жить исключительно под пропагандой и ходить только на подментованные сайты, давно есть свои способы обхода. С другой стороны, конкретные VPN-сервисы и не только периодически попадают под бан. Доходит даже до смешного: в бан попадают даже сервисы типа Steam Community, которые вообще не связаны с обходом блокировок или политикой.

На фоне всего этого хочу рассказать про сервис FRKN, цель которого — построить VPN с фокусом на обход блокировок именно Роскомпозора. Нет, это не реклама в привычном смысле. Я пишу об этом проекте, чтобы поддержать ребят. Проект некоммерческий. FRKN поддерживает два протокола: XRay и WireGuard. Сервера на WireGuard бесплатные полностью, а на XRay дают бесплатный месяц, а также скидку для НКО, студентов, правозащитников и т.д.

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

Если у вас уже есть VPN, настройте его маме, брату, деду (не тому), younameit.
👍20👎11🤡10❤3🖕3
В последние годы редакторы кода расплодились, как фронтенд-фреймворки. И иногда среди этого потока обнаруживаются такие бриллианты, как Zed. Это редактор, который делают разработчики легендарного Atom. Так а в чём прикол? Давайте разберёмся.

Во-первых, скорость. Он не просто быстрый — он адски быстрый. Ощущения от отзывчивости и скорости примерно как от Саблайма. Не знаю как вы, но на своей скорости печати (не самой высокой, но выше среднего) я отчетливо ощущаю разницу в задержке между нажатием клавиш и результатом на экране. Это включает в себя не только непосредственно ввод текста, но вообще всё в Zed, в том числе время старта.

Во-вторых, простота. Я немного устал за последние годы, что от VSCode, что от GoLand. И тот, и другой — крутые и очень мощные инструменты. Но когда на тебя кроме кода смотрит армия иконок, а каждые пять минут всплывает уведомление, рука постепенно начинает тянуться к кобуре. В Zed занесли только то, что реально нужно. Да, я понимаю, что IDE и легковесные редакторы — это немного разные категории. Но среди именно простых редакторов не хватало чего-то помощнее, как бы это странно ни звучало. Тут из коробки поддерживается Language Server Protocol и все связанные фичи, GitHub Copilot (либо собственный ассистент от Zed с вашим OpenAI-ключом) и... всё? Ну понятно, подсветка синтаксиса и прочее, без чего редактор кода был бы просто текстовым редактором.

В-третьих, совместное редактирование — ещё одна фича, про которую я не упомянул в предыдущем абзаце. Прямо в редакторе вы можете подсоединиться к другу/коллеге и пописать вместе код, как если бы это был гуглдок. Очень крутая история, особенно актуальная при менторстве и парном программировании с джуниором. Причём можно насоздавать каналов, где каждая группка сидит и пилит что-то своё. Этакий виртуальный офис.

Минусы тоже есть: пока что слабая поддержка расширений и пока только для мака. Но назвать это супер-минусами сложно, тем более что согласно роадмапу ребята собираются исправить их.

❤ • ютуб • бусти • патреон • платный канал
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥17👍6🍓6🤡5❤3
Думаю, далеко не все в курсе, что у нас есть ещё и дискорд-сервер. На нём уже около 100 человек, но при этом мало что происходит. Раз там нас уже так много, то чего зря добру пропадать?

Я переделал канал помощи новичкам в полноценный форум, где можно создавать отдельные треды и в них общаться. Сейчас там, понятное дело, пусто. Но если у вас есть какая-то проблема с Go или вообще с разработкой, можете открыть там тему, а я постараюсь помочь. Надеюсь, в будущем другие ребята тоже подтянутся.

А вообще расскажите, какие форматы взаимодействия/активности вы бы хотели видеть в дискорде? Может, какие-то онлайн-ивенты или что-то подобное? Для начала я решил возродить привычку постить классные ссылки в специальный канал.

Ещё была идея собирать там дайджесты гошных и бэкендерских вакансий, но руки пока у меня не дошли.
👍15❤3🤮3😭11
Сейчас идёт подготовка к новому сезону Podlodka Go Crew, и я снова принимаю участие в работе программного комитета. Прямо сейчас мы собираем фидбэк о том, какие темы вам интересно было бы послушать на конференции.

Просьба проголосовать за интересующие вас темы через гугл-форму.

Среди всех, кто проголосует в форме до 21 марта 17:00 МСК, будет разыгран билет на конференцию.
🤝10❤‍🔥4🔥3❤2🤮2
Добавил новый пункт в awesome-go-interview, мой список ресурсов для подготовки к техническим интервью.

trainer — это приложение для терминала, через которое можно тренироваться в решении лайвкодинг-задач. Написано, кстати, на любимом мною фреймворке bubbletea.

❤ • ютуб • бусти • патреон • платный канал
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥19❤53🤮1
JetBrains сделали плагин для прохождения Tour of Go прямо в их IDE: https://blog.jetbrains.com/education/2023/12/18/learn-go-community-course/

Доступно не только в GoLand, но и в бесплатной IDEA
🔥25❤53👍2🥴1