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
Пробили 70К просмотров. Спасибо вам всем 🫶
👍16🍾12❤‍🔥3💩2😎1
Как-то я занимался своим пет-проектом Projector для генерации каркаса программы из шаблонов. Теперь, по крайней мере для Go, в нем большого смысла нет, т.к. хоть пока и в качестве эксперимента, в тулчейн Go завозят ровно эту функциональность. Причем можно публиковать свои и использовать чужие шаблоны как обычные гошные модули.

❤️ • ютуб • бусти • патреон • платный канал
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥23👍2
Осенью пройдет второй сезон онлайн-конференции Podlodka Go Crew. В этот раз я в программном комитете, и я ищу спикеров!

Немного о самой конфе:

- Мероприятие растянуто на 1 неделю против 2 дней обычной конфы. Активности раскиданы так, чтобы можно было посетить все самое интересное, не отрываясь от работы. Ну и другие плюсы онлайна — отсутствие географических границ и вот это все.
- На конференции обычно бывает 200-350 человек, в основном мидлы и сеньоры.
Контент набираем не «все обо всем», а формируем темы недели. Участнику сразу становится понятно, какой будет дифф в его понимании индустрии до/после прошествия недели, а мы можем собирать спикеров по теме и играться с разными полезными форматами.
- Самое главное — форматы. Мы не верим в перенос офлайн-формата в онлайн as-is, со спикерами бубнящими свои доклады в камеру. Мы верим в то, что онлайн — это не ограничение, а новые возможности, в первую очередь для интерактива. Поэтому фокус делаем на групповых обсуждениях, внедряем игровые механики где только можно, берем интервью, устраиваем поединки между экспертами и большие сессии Q&A с включением участников, лайв-кодинга и всякого такого. Меньше времени на подготовку спикеров, больше вовлеченности участников — выходит win-win.

Тема сезона — хайлоад & Go (всё про перфоманс и его замеры самыми разными способами)

Подробнее о прошлых сезонах можно узнать на лендинге: https://podlodka.io/crew

Если вам интересно, то вот есть такая форма, там же про плюшки для спикеров https://docs.google.com/forms/d/e/1FAIpQLSf4LIylClDAVsoaq1cUGb0WmRYL94z1hWZDomHgeVRDDJzzuQ/viewform

❗️Если что — пишите, я готов ответить на любые вопросы. Сам был спикером в прошлом сезоне — мне помогали на всех этапах подготовки к выступлению, тоже самое будет и с вами. Если у вас нет конкретной темы или вы считаете, что вам не хватает интересного опыта, но вы все равно хотели бы выступить, всё равно напишите мне.
👍4❤‍🔥1😍1
Вышел Go 1.21

Подробности в релиз-ноутах.

❤️ • ютуб • бусти • патреон • платный канал
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥6👍2👻1
Хочу порекомендовать вам канал Go news. Там просто и доступно объясняют, как автоматизировать тесты в несколько строк кода, почему не всегда нужно использовать каналы, какие фишки новой версии ускорят ваш код. Посты сопровождаются наглядными сниппетами кода.

А ещё добавляйте себе маст-хэв папку для Go-разработчиков: https://t.me/addlist/6Gopr3hzAqBiMjcy

#партнерскийпост
❤4👍1🔥1
Сразу две новости из мира AI и кодогенерации:

🤖 Stability AI, известная вам скорее всего по Stable Diffusion, представила опенсорсную модель Stable Code. Это ещё один конкурент GitHub Copilot. На старте поддерживает Python, Go, Java, JavaScript, C и C++.

🕸 Google анонсировал Project IDX — облачную IDE с похожей фичей. Пока что доступ по вейтлисту, но если там внутри Bard (а скорее всего так и есть), то будто бы и не очень надо.

❤️ • ютуб • бусти • патреон • платный канал
Please open Telegram to view this post
VIEW IN TELEGRAM
💩5🥱4👍2🤔1🐳1
Если вам хочется получить подробный разбор изменений в Go 1.21.0, то у Николая Тузова на днях вышел новый выпуск подкаста GoGetPodcast.

Горячо рекомендую.

❤️ • ютуб • бусти • патреон • платный канал
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12🔥5❤3❤‍🔥1
IBM выпустила библиотеку для функционального программирования на Go 🤡

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

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

В общем, если хотите обмазаться монадами и каррированием, то есть куча функциональных языков, классных и не очень. А Go не трогайте — мы его как раз и любим за то, что он простой, как дверь. Хоть иногда и слишком.

❤️ • ютуб • бусти • патреон • платный канал
Please open Telegram to view this post
VIEW IN TELEGRAM
👍14💩5🤯4😢1
Как я уже ранее говорил, я сейчас занят подготовкой к Podlodka Go Crew #2 — на этот раз в программном комитете, а не в качестве докладчика. Пришло время рассказать, что это такое!

Podlodka Crew — это формат онлайн-конференций от команды подкаста Podlodka. В отличие от обычных конференций, секции (доклады, воркшопы и т.п.) не пытаются упаковать плотно в два дня, а равномерно распределяют по дням одной недели. Обычно одна секция утром, одна вечером. Зимой проходила первая Crew для нас с вами, т.е. для гоферов. Если интересно, можете посмотреть запись моего доклада.

Вторая Go Crew пройдёт уже совсем скоро — с 11 по 15 сентября. Каждый сезон конференции все доклады связаны одной общей темой — в этот раз будем обсуждать хайлоад:

- заглянем под капот устройства памяти;
- научимся превентивно находить потенциальные очаги - чрезмерной нагрузки;
- посмотрим на лучшие практики нагрузочного тестирования;
- изучим масштабируемую технологию NATS JetStream для очередей и асинхронной коммуникации;
+ 🎁 бонус: каждый желающий сможет выступить на открытом микрофоне.

❤️ Для моих любимых подписчиков есть ништяки:

💸 Промокод на скидку 500 ₽, который суммируется со скидкой на сайте до 4 сентября:
deferpanic_go2

🎟️ Также хочу разыграть два билета среди вас. Я загадал от число от 0 до math.Uint8. Напишите любое число в этом диапазоне в комментариях к посту. Авторы двух комментариев с самыми близкими результатами к загаданному числу получат билеты.

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

Расписание докладов и вся остальная информация есть на сайте конференции.

#партнерскийпост
👍9🔥3🤩1😍1
This media is not supported in your browser
VIEW IN TELEGRAM
Продолжая тему геймдева и хайлоада на Go, хочу рассказать вам об одном канале, который будет полезен, даже если вы не пишете игры, но пишете высоконагруженные приложения.

Автор канала UnitOfTime в своих роликах рассказывает, как он разрабатывает свою инди-MMO на Go. Бэкенд любой сетевой игры, особенно MMO, довольно близок по своей сути к любому другому высоконагруженному бэкенду приложений, которые должны обновлять своё состояние на клиенте в реальном времени. Только подумайте: вам нужно синхронизировать мир для большого количества одновременно подключенных игроков, при этом защищаясь от читеров. Это не считая того, что есть в почти каждой MMO: чат(ы), торговая площадка, разные локации, аутентификация и авторизация и т.д. Из приложений, которые под капотом больше похожи на сетевую игру, мне в голову сразу приходит Miro.

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

❤️ • ютуб • бусти • патреон • платный канал
Please open Telegram to view this post
VIEW IN TELEGRAM
⚡10👍5❤2🔥2😍1
Мне было сегодня лет, когда я узнал, что в GoLand встроен плейграунд, и больше не нужно идти в браузер, чтобы проверить какой-то маленький кусок кода. Он умеет как выполнять локально, так и загружать код на официальный плейграунд, после чего можно поделиться ссылкой. Но пожалуй самое крутое — внутри встроенного плейграунда можно использовать все те же фичи, что в обычном режиме, включая дебаг, Copilot и т.д.!

Чтобы открыть, нажимаете два раза Shift или вызываете «поиск по всему», вводите “playground”, вы прекрасны!

https://www.jetbrains.com/go/guide/tips/integrated-go-playground/

❤️ • ютуб • бусти • патреон • платный канал
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥32👍8❤‍🔥1💩1🐳1
Добавил в Awesome Go Interview репозиторий GoBooks — список книг по Go, отсортированный по годам и сгруппированный по уровням.

Напомню, если у вас есть ресурс, который вы хотите добавить в список, буду рад вашим пулл-реквестам.

❤️ • ютуб • бусти • патреон • платный канал
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13⚡7🔥2❤1
После завершения Podlodka Go Crew #2 у тбилисских участников была мысль организовать оффлайн-встречу. Я как-то пропустил этот момент, хоть сам и в Тбилиси сейчас. Решил, что пора организовать локальный чатик.

Так что если вы в Тбилиси (да и если нет тоже), то го в чат @golangtbilisi!

Там пока ничего не происходит (я его создал минут 15 назад), но как люди подтянутся, станет поживее. Чат не только и не столько для организации оффлайн-активностей, сколько просто для общения.
👍1
В Go 1.22 изменится поведение циклов

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

var (
a = []int{1, 2, 3}
b []*int
)

for _, n := range a {
b = append(b, &n)
}

for _, n := range b {
fmt.Println(*n)
}

Что будет выведено программой? Конечно же, 3 3 3, а не 1 2 3. Так происходит, потому что та самая переменная n в цикле для экономии памяти не создаётся заново на каждой итерации, а по сути просто меняет свой указатель с одного места памяти на другое. Из-за чего и наблюдаем такой эффект. Это неочевидно для новичков и про это легко забыть. Чтобы этой проблемы избежать, обычно использовали некрасивый, но действенный трюк: внутри тела цикла объявляется новая переменная n, которой присваивается n:

for _, n := range a {
n := n
…
}

Что? Да!

Чтобы не кошмарить новых адептов, авторы языка и вводят новое поведение для циклов — такое, какое вы ожидали бы без захвата переменной.

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

Такие дела ¯\_(ツ)_/¯

❤️ • ютуб • бусти • патреон • платный канал
Please open Telegram to view this post
VIEW IN TELEGRAM
👍21🔥4⚡2🥱2🤔1
Интересно, а есть ли у меня подписчики из Омска? В моём родном городе в октябре пройдёт DevFest Omsk 2023 — конференция для разработчиков, дизайнеров и тестировщиков разных профилей. Её делают мои друзья, поэтому могу ручаться за качество — в Омске мощное айти-сообщество. Можете убедиться сами, посмотрев записи докладов с прошлых конференций на ютубе. Особенно рекомендую заглянуть в плейлист с докладами с Golang-трека.

👨‍💻 На конференции будет отдельный трек по Golang из 4 -5 докладов. Участники узнают о том, как лучше писать интеграционные тесты с базой данных PostgreSQL, какие бывают подходы и способы оптимизации, как ускорить прототипирование для ваших стартапов и MVP, используя кодогенерацию, поговорим про реализации авторизации, довольно популярной задаче на любом проекте, но как всегда есть проблемы с ней, как их можно избежать, а также разберем все подходы реализации платформы, которые вы можете применить, на примере платформы СберМаркет.

📚 Суммарно на конференции будет 10 треков, 50+ экспертных докладов и 300+ участников. Также будет афтерпати в баре и отличный нетворкинг.
________________

За новостями и программой конференции можно следить в источниках:
🌐 www.devfestomsk.ru
💬 vk.com/devfestomsk
💬 @devfestomsk

Такое события нельзя пропускать! Мероприятие пройдет 6-8 октября.
Регистрируйтесь прямо сейчас по ссылке 👉 https://devfest-omsk.timepad.ru/event/2446752/

#партнерскийпост
Please open Telegram to view this post
VIEW IN TELEGRAM
❤6⚡1🔥1🦄1
Увидел у Андрея Ситника ссылку на очень красивое и наглядное объяснение работы CRDT.

CRDT или Conflict-free Replicated Data Type — это такая структура данных, которую можно изменять распределённо и одновременно, при этом при слиянии не будет возникать конфликтов, либо вероятность этого будет достаточно маленькой, чтобы не париться. CRDT используются часто там, где необходимо иметь возможность одновременной работы нескольких людей над одной сущностью: Миро, Гугл-доки, блокчейны и т.д.

https://jakelazaroff.com/words/an-interactive-intro-to-crdts/
⚡7👍2
Есть шутка про фронтенд, что, мол, каждую неделю выходит новый 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