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
Наткнулся на прикольный тренировочный репозиторий. Он содержит в целом рабочий код, но при этом внутри намеренно были оставлены баги, уязвимости и куски кода, которые в сообществе Go принято писать по-другому. Автор репозитория предлагает в качестве упражения при подготовке к техническому собеседованию исправить эти недостатки.

P.S. За всё время я запостил уже много таких штук для подготовки к интервью. Ставьте 💅, если хотите, чтобы я уже наконец сделал подборку.

❤️ • ютуб • бусти • патреон • платный канал
Please open Telegram to view this post
VIEW IN TELEGRAM
💅72🥱2❤1
🤯🎮 Геймдев на Go

Мы все привыкли воспринимать Go как язык для серверной и инфраструктурной разработки. Что если я вам скажу, что на Go можно писать игры? Конечно, экосистему, возможности и объём накопленных сообществом знаний и опыта нет смысла сравнивать с Unity, Unreal Engine или даже Godot, но как минимум это возможно.

Естественно я говорю не о игровых серверах — с ними всё понятно, а о полноценных десктопных/мобильных/веб-приложениях с графикой на GPU, звуком, поддержкой контроллеров и т.д. И да, очевидно, что Go по многим причинам — далеко не лучший язык для разработки игр, особенно с AAA-графикой. Но это язык общего назначения, и понимая его особенности и ограничения, на нём всё же можно вполе себе писать игры.

Например, в июле в Стиме выйдет игра Искандера Шарипова aka quasilyte — “Roboden”. Это полноценная стратегия в реальном времени про непрямой контроль над роботами. Игра написана с использованием движка Ebitengine (да, он правда так называется). Я в своё время пробовал этот движок и планирую использовать его в одном своём проекте. По ощущениям это, конечно, скорее игровой фремйворк типа FlashPunk/Flixel/Raylib, а не движок, но так даже удобнее для небольших игр.

Если у вас тоже есть странное желание писать игры на Go, то во-первых, взгляните на выше упомянутый Ebitengine — это самый зрелый на данный момент проект. Во-вторых, есть пара видео, которые помогут вам понять текущее состояние геймдева на Go:

👾 Разработка игр на Go: обзор экосистемы Ebitengine
👾 Go делать игры! / Алексей Акулович
👾 Go`ne Gamedev ep1: ECS и Пилотный Апанасик — пилотный эпизод подкаста про геймдев на Go
👾 Go Get Podcast #3: GameDev в Go

Ну а в-третьих, есть чат @go_gamedev, который как раз админит Искандер.

Ещё есть инициатива по добавлению Ebitengine в официальный список движок на itch.io. Поддержать инициативу можно, сделав ретвит:

https://twitter.com/quasilyte/status/1671081174301659136

Игру, кстати, можно пощупать на itch.io, а посмотреть трейлер на Ютубе

❤️ • ютуб • бусти • патреон • платный канал
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥11👍1🏆1
Пост про подготовку к тех.интервью набрал 50+ ноготочков, поэтому я начал собирать документ с полезными ресурсами для подготовки

https://awesome-go-interview.dev

Есть ресурсы на английском и русском. Если у вас есть что-то ещё на примете, не стесняйтесь делиться ссылкой или создавать PR в репозиторий: https://github.com/defer-panic/awesome-go-interview
👍8❤6❤‍🔥2🔥2👏1
👀 Что нового в Go 1.21

Релиз версии 1.21 случится ориентировочно только в августе, но уже сейчас известно про ряд интересных нововведений:

🔹Profile Guided Optimization (PGO) выходит из превью в релиз
🔹 Наконец-то появятся билтины mix и max
🔹 К ним впридачу clear — функция, которая из мапы удаляет все элементы, а в слайсе заменяет на нулевые значения
🔸 Встроенный пакет log/slog для структурированного логирования
🔸 Пакеты slices и maps с набором полезных дженерик-функций для соответствующих структур данных
🔸 Пакет cmp с фукнциями для сравнения значений, у которых типы удовлетворяют констрейн Ordered

Имейте ввиду, что это первый релиз-кандидат, поэтому ченджлог к релизу ещё скорее всего поменяется.

Весь список изменений 👉 https://tip.golang.org/doc/go1.21

❤️ • ютуб • бусти • патреон • платный канал
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥14👍11🤝2
В новом ролике мы с вами напишем проект, который не стыдно положить на свой GitHub. Это будет Telegram-бот, который автоматически достаёт свежие новости и статьи про язык программирования Go из разных источников, генерирует для них саммари с помощью OpenAI API (ChatGPT), а затем публикует их в Telegram-канал. И всё это автоматически!

Такой проект может послужить отличным преимуществом при поиске работы, особенно если вы джуниор-разработчик, и вам нужно выделиться среди других соискателей 😉

📹 youtu.be/tqQr2tNpJrA

❤️ • ютуб • бусти • патреон • платный канал
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥12👍4👏3❤2😍1
defer panic pinned a photo
@stvtelege принёс в клювике, что github.com/golang/mock ушёл в публичный архив. В целом ожидаемо — последний релиз был чуть больше двух лет назад. Если что, проект форкнул Uber и теперь занимается его развитием: https://github.com/uber/mock

Не могу не вставить мысль, повод хороший:

Вообще, есть у коммьюнити Go и Clojure одна общая черта (хоть языки и абсолютно разные), которая мне очень нравится — отсутствие дурмана «если проект не обновлялся больше года, им нельзя пользоваться». Да-да, я смотрю в твою сторону, JavaScript. Почему-то для мейнстримных языков не позволительна мысль о том, что бывают программные продукты, которые в какой-то момент становятся законченными. В целом понятно, в том же JavaScript через месяц на тех же версиях зависимостей всё развалится, не говоря уже о старых. Но кажется это не ок и вообще не про стабильность и отсутствие нервных срывов.
👍22❤1❤‍🔥1
Кажется, я сюда ещё не писал про главный скандал в мире Go последних месяцев — добавление телеметрии в тулчейн.

Я могу понять, почему есть телеметрия в Visual Studio Code — это продукт, который развивается по модели «мы не можем просто сделать редактор и остановиться — нам нужно дальше его закидывать фичами, которые никому не нужны, потому что иначе не нужны будем мы». Для того чтобы часто шипить новые фичи или тюнить существующие, нужна какая-то аналитика по тому, как используется продукт. Я не сторонник что телеметрии в Visual Studio Code, что такого подхода к развитию продукта. Но тут хотя бы понятно, почему так сложилось.

Но на кой чёрт это надо в языке программирования, особенно таком, как Go? Одна из ключевых идей философии языка — очень аккуратное, неспешное и обратно-совместимое развитие; всё только самое необходимое. Если вам нужна статистика использования какой-то языковой фичи, то, ну... сходите на ГитХаб? Или что, энтерпрайз-код как-то принципиально по-другому пишется? Ну да, наверняка какие-то внутренние библиотеки/фреймворки используются, но это не относится к фичам самого языка. Тем более что в Go нет такого, что два случайно взятых разработчика пишут как-то принципиально по-разному (привет, C++).

Короче, меня напрягает не столько сам сбор телеметрии — он включается по желанию (т.е. никто в здравом уме её никогда не включит). Меня напрягает то, что её очень часто добавляют, чтобы потом закидывать продукт сырыми и никому не нужными фичами, потому что данные интерпретируются через одно место. Нужны они обычно только, чтобы циферки красивые показать. Я уж не говорю про секьюрити-консёрны, которые здесь появляются.

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

❤️ • ютуб • бусти • патреон • платный канал
Please open Telegram to view this post
VIEW IN TELEGRAM
👍19❤4❤‍🔥2🔥1👏1
This media is not supported in your browser
VIEW IN TELEGRAM
Всё никак не доходили руки рассказать вам про gping — как ping, только с графиком.

Во-первых, это красиво. Во-вторых, можно замерять пинг сразу до нескольких хостов. В-третьих, замерять время и строить график можно и для исполнения команд. В-четвертых, написано на Rust.

Ссылка: https://github.com/orf/gping

❤️ • ютуб • бусти • патреон • платный канал
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥13👍5❤‍🔥2👏1🤡1
Обновил в боте модель с GPT-3.5 на GPT-4. Стало сильно лучше, хоть и не идеально всё ещё. Возможно, стоит посмотреть в сторону чего-то, что специализируется на саммари, но пока ничего толкового не находил.
👍5
Forwarded from Go Update
proposal 61405: spec: add range over int, range over func

Вот и настал тот момент - Расс официально предлагает добавить поддержку range над следующими видами выражений:

▸ Range over integer: for x := range n { ... } где n целочисленное выражение или переменная. Будет эквивалентно for x := 0; x < n; x++ { ... }

▸ Range over function: теперь можно будет писать код for x, y := range f { … } где f это функция или метод со следующей сигнатурой:

1. func(yield func(T1, T2)bool) bool
2. func(yield func(T1)bool) bool
3. func(yield func()bool) bool


Значения которые не нужны запрашивающему коду (тот кто вызывает range) будут автоматически выброшены. Например для функции func(yield func(T1, T2) bool) bool допустимы следующие варианты range:

1. for x, y := range f { ... }
2. for x, _ := range f { ... }
3. for _, y := range f { ... }
4. for x := range f { ... }
5. for range f { ... }|

Возвращаемое yield булево значение позволяет определить вызываемому коду (тот кого вызывают через range), что пора прекратить исполнение и двигаться на выход (в случае break или return). Т.е. в случае for range f { break; } сразу после первого вызова yield вернет false.

Детали реализации и различные тонкости (такие как, что будет если yield будет вызван после выхода из тела range) пока обсуждаются.
🤯9👎8👍5😱1
Если вы, как и я уже похоронили Gorilla web toolkit, т.к. авторы заархивировали все репозитории и прекратили поддержку, то можете раскапывать могилу обратно. Теперь ментейнить проект будут ребята из Red Hat. Именно ментейнить — проект не становится их собственностью, и редхатовцы ожидают, что коммьюнити тоже подтянется. Интересно, учитывая, что при прошлых ментейнерах что-то никто не тянулся помогать

https://gorilla.github.io/blog/2023-07-17-project-status-update/
👍11🔥4
После того, как я сегодня в очередной раз поресерчил один топик и снова пришёл к тем же выводам, во мне что-то щёлкнуло, и я задумался об очередной попытке вести что-то типа базы знаний. В каком-то виде у меня она существует в виде набора заметок в FSNotes, но я думаю о том, чтобы делать это в Obsidian.

Какие можете дать советы? Какие плагины надо ставить обязательно?
🔥14
Obsidian заботливо предлагает сдать микроэкзамен на знание Вима, если вы хотите использовать Vim mode. Правильно — слишком много людей зашло в VIm, но так и не вернулось.

❤️ • ютуб • бусти • патреон • платный канал
Please open Telegram to view this post
VIEW IN TELEGRAM
😁36🔥6👍2💊1
DevCrowd (Егор и Аня из Podlodka) проводят исследование Go-разработчиков 🛵 В нём задают вопросы про опыт, навыки, условия работы, самые сложные и интересные задачи, про сообщество и компании:

- Какие навыки для Go-разработчиков самые важные
- Какие инструменты используются в работе
- Как попадают в профессию и куда из нее уходят
- Полезные для развития каналы, курсы и книги

Вы можете помочь исследованию, приняв в нём участие. Результаты будут в открытом доступе, и помогут вам сравнить свои ожидания от Go-разработчиков с рыночными, построить план своего развития, и просто понять, что происходит с индустрией.

👉 Пройти опрос

#партнерскийпост
Please open Telegram to view this post
VIEW IN TELEGRAM
❤4🥱1
Roboden добрался до Steam 🥂

(а значит и до Steam Deck)

https://store.steampowered.com/app/2416030/Roboden/

Напомню, Roboden - игра Искандера Шарипова, полностью написанная на Go - движок Ebitengine.

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

На GitHub можно посмотреть исходный код игры.

#go_gamedev #gamedev
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11❤5🔥4🤡2
Пробили 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