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
defer panic pinned «❤️ Интро Так как теперь большая часть подписчиков пришла сюда не с ютуб-канала, то нужно дать немного вводных. Меня зовут Ильдар, я Go-разработчик в финтехе (а до этого в индустрии электромобилей). На ютубе я в основном стараюсь покрыть какие-то топики, связанные…»
Crafting Interpreters

Книга очень доступно и пошагово рассказывает о том, как написать свой интерпретатор языка (программирования). Она будет полезна не только тем, кто хочет создать свой скриптовый язык, но и тем, кому приходится писать различные парсеры. В общем, как SICP aka «Книга дракона», только доступнее и короче.

В книге две части: в первой вам предлагается написать наивный интерператор, разбирающий код на лету; во второй части автор реализует тот же язык, но уже с виртуальной машиной. Для реализации первой части используется Java, а для второй — C. Но не переживайте, код достаточно универсальный, чтобы его можно было понять и перевести на Go.

Автор книги, Роберт Найстрём, известен так же как автор другой классной книги — Game Programming Patterns. Раньше Роберт работал в Electronic Arts, а сейчас занимается языком Dart.

Книгу можно купить, а можно читать бесплатно на её сайте.
👍14🤔1
❤17🤡7👍5🔥5
defer panic
https://youtu.be/X-tlxRa-MP4
Перевод гайда, представленного в видео, на русский язык.

https://github.com/ilmoi/teachyourselfCS-RU/blob/master/Teach_yourself_cs-2020-RU.md

Но я, конечно, считаю, что английский — такой же важный навык для любого программиста.
🔥10👍4🥱1
В очередной раз убедился, что доставка фич с тестами быстрее, чем без них. Это звучит неинтуитивно на первый взгляд, но вот вам пример:

На днях мне было нужно срочно сделать и выкатить фичу на прод. Задача была настолько срочной, что времени на написание тестов, как казалось, не оставалось физически. К счастью, почти весь код уже был написан. Всё что нужно было сделать — это добавить ручку в API, которая этот самый код вызывает. Поэтому я подумал, мол, ничего страшного, тесты допишу чуть позже. В итоге на то чтобы несколько раз пройти весь цикл обратной связи (выкатка на тестовый стенд → тестирование руками → фикс) времени ушло больше, чем если бы я изначально сел и написал эти чёртовы тесты.

Тут я вспомнил свой ролик про тесты, а именно тезис про то, что по факту разработка с тестами (а то и через них) обходится бизнесу дешевле, особенно в долгосрочной перспективе.
👍22
У меня в грядущем ролике звучит тезис, что наличие проектов на гитхабе — это преимущество при поиске работы, в первую очередь для джунов. У джунов естественным образом мало коммерческого опыта, но им нужно показать, что они готовы деливерить какой-то код и учиться чему-то. Как вы считаете, правда это или нет?

(сейчас будет опрос)
👍8🤷‍♂1🔥1🤔1
Вышел очередной EAP-релиз Goland 2023.2. Из интересного — добавили интеграцию с Гитлабом. Правда, я так и не понял пока что, работает ли с селф-хостед — надо будет проверить. Из красивого — наконец-то нормальная светлая тема (бывает, включаю её, если сижу у окна в солнечный день).

Расскажите, на чём сидите? Goland? VSCode? VIm/Neovim? Sublime Text? Emacs? Light IDE? Я 80% времени работаю в Goland, но и в Neovim периодически возвращаюсь.

https://blog.jetbrains.com/go/2023/06/02/gitlab-integration-2023-2-eap-3/
👍9🔥2
Опубликовал новый ролик в раннем доступе. В ролике я пишу телеграм-бота, который автоматически получает новые статьи из заданного набора источников (преимущественно про Go), а затем генерит саммари через API ChatGPT и постит всё это дело в специальный телеграм-канал. Кстати, пример работы бота можно посмотреть в канале readme.go.

Если вы, например, джуниор-разработчик, наличие завершенных пет-проектов на гитхабе — это всегда плюс. Агрегатор новостей — в меру сложный проект, которым не стыдно похвастаться на интервью. А если вы миддл, сеньор или кто покруче, то можете накинуть на вентилятор ;)

Ролик в раннем доступе можно посмотреть в следующих местах:

💳 dfrp.cc/nPoArA
💳 dfrp.cc/APPnpq
💬 t.me/deferpanic/120
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥10🥰2😍2
defer panic pinned a photo
💰 Принёс вам работу

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

Что за компания? Финтех-стартап в Мексике, который строится выходцами из Tinkoff, Vivid, Yandex, Ozon и других бигтех-компаний. Работать можно из любой точки мира, либо в офисах на Кипре, в Казахстане и Мексике.

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

Подробнее о компании + открытые позиции: dfrp.cc/5dYpX

Если надумаете, пишите мне, а я направлю вас дальше 😉
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7💩7❤‍🔥4👎1🔥1
Наткнулся на прикольный тренировочный репозиторий. Он содержит в целом рабочий код, но при этом внутри намеренно были оставлены баги, уязвимости и куски кода, которые в сообществе 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