defer panic @deferpanic Channel on Telegram

defer panic

@deferpanic


Канал про айти в целом и про Go в частности.
YouTube → youtube.com/@deferpanic
Поддержать канал:
Boosty — https://dfrp.cc/boosty
Patreon — https://dfrp.cc/patreon
ETH — tomakado.eth
TON — tomakado.ton
BTC — 19xwFstmVQsVYqZP64iMVg1StLNSah6Smo

defer panic (Russian)

Канал defer panic - это идеальное место для всех, кто интересуется областью информационных технологий в целом и, в частности, языком программирования Go. Здесь вы найдете множество полезной информации, советов, и обсуждений, связанных с миром IT. На канале регулярно публикуются видео на YouTube, по адресу youtube.com/@deferpanic, где автор делится своим опытом, знаниями и интересными проектами. И если вам понравятся контент и материалы канала, вы также можете поддержать его, пожертвовав средства через Boosty, Patreon или криптовалюты ETH, TON, и BTC. Присоединяйтесь к каналу defer panic прямо сейчас, чтобы быть в курсе последних технологических трендов и делиться своими идеями с единомышленниками!

defer panic

18 Nov, 17:53


💼 Ищем фуллстек-разработчика себе в команду

В команду, которая недавно отпачковалась от нашей нужен фуллстек-разработчик.

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

Мы — финтех-команда с большим опытом работы на российском рынке. Большая часть команды — бывшие сотрудники Тинькофф, которые верят в идею и планируют сделать новый крутой продукт на глобальном рынке.

▶️ Что за команда
Команда Operfeed отвечает за ленту операций и систему Backoffice, которую мы используем для управления лентой операций. В зоне ответственности команды находится система распознавания брендов, которая распознает транзакции, связанные с определенными брендами (например, Starbucks, Apple и т. д.), а также веб-интерфейсы, в которых сотрудники управляют правилами распознавания брендов, MSI-партнерами и настройками cashback-партнеров.

Мы ищем опытного веб-разработчика, который возьмет на себя ответственность за фронтенд системы Backoffice и будет готов поддерживать ее бэкенд.

🛠️ Что нужно делать
- Создание админ-панели с использованием последней версии Angular 17/18;
- Разработка функций продукта, в основном направленных на улучшение UI/UX;
- Разработка платформы и интеграция технических инструментов;
- Кодирование, рецензирование и участие в обсуждении путей улучшения проекта;
- Взаимодействие с дизайнерами, менеджерами по продукту, аналитиками, бэкендом и мобильными функциями.

💪 Навыки идеального кандидата
- Глубокое знание Angular, включая понимание основных концепций Angular, компонентов, директив, сервисов и модулей;
- Владение навыками работы с RxJS, включая Observable, HOO (High-order Observables), Hot/Cold Observables и Subjects;
- Понимание общих хуков жизненного цикла Angular и их использование в разработке компонентов;
- Знание механизмов обнаружения изменений в Angular и умение оптимизировать производительность с помощью эффективных стратегий обнаружения изменений;
- Умение внедрять и использовать инъекцию зависимостей в приложениях на Angular;
- Опыт работы с формами Angular, включая шаблонные и реактивные формы, валидацию форм и их отправку;
- Знакомство с роутингом в Angular и умение эффективно настраивать и управлять маршрутами приложения;
- Уровень английского языка B1 или выше для эффективного общения с международной командой.

💪 Будет круто, если это тоже про вас
- Опыт разработки бэкенда;
- Желание/умение писать на Go.

🤑 Бенефиты
- Поддержка при переезде на Кипр или в Казахстан, включая визы и ворк-пермиты для сотрудника и членов его семьи;
- Гибкий график работы из одного из наших офисов или удаленно
- Покрытие медицинской страховки;
- Бюджет на образование: уроки языка, профессиональное обучение и сертификация;
- Оздоровительный бюджет: компенсация расходов на психическое здоровье и занятия фитнесом;
- Отпуск: 20 дней ежегодного отпуска и оплачиваемый отпуск по болезни.

Если вас заинтересовало, пишите @anya_vers с пометкой, что вы от Ильдара Карымова.

Эту же вакансию можно посмотреть на сайте.

defer panic

15 Nov, 17:24


🎄 Все компании вокруг выпускают адвент-календари, а моим любимым всё ещё остаётся Advent of Code.

Это такой ивент, когда вам каждый день открывается новая небольшая задачка. День за днём, задачка за задачкой, постепенно открывается картинка и развивается история. Я пока ещё раздумываю над тем, участвовать в этот раз или нет. Если буду участвовать, то может даже постримлю, как я уже это делал когда-то.

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

Всё это делает один человек, что конечно очень вдохновляет.

• ютуб • бусти • патреон • платный канал

defer panic

07 Nov, 11:07


Go Proverbs
Simple, Poetic, Pithy

Смотрите какую чудесную страничку нашел, пока защищал свой бедный кусочек кода на код-ревью на работе. Кто-то проделал такую шикарную работу, а мы даже об этом не знаем!
Теперь знаем ❤️

Конкретно я искал вот эту цитату Роба Пайка: A little copying is better than a little dependency, со ссылкой на источник.

defer panic

04 Nov, 16:15


👀 Мои друзья из DevCrowd снова проводят исследование о Go-разработчиках. Несколько тем этого исследования:

- Что входит в обязанности и каких навыков не хватает
- Сколько в среднем зарабатывают в профессии в зависимости от грейда
- Какие инструменты, сервисы наиболее популярны
- Что читают, слушают и смотрят для профессионального развития.

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

Пройти опрос

defer panic

25 Oct, 13:07


не верю, что у никого нет кулстори с работы. делитесь, не стесняйтесь

defer panic

24 Oct, 13:03


В этот понедельник, 28 октября, стартует новый сезон Podlodka Go Crew. И я как член программного комитета приглашаю вас. В этом сезоне будем много говорить про архитектуру:

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

Как и в прошлые разы, разыгрываю две проходки. Условия простые: напишите в комментариях свой самый большой архитектурный факап — т.е. когда принятое давно архитектурное решение выстрелило вам в колено сегодня и очень больно. Среди поделившихся своей историей методом великого рандома будут выбраны два победителя примерно через сутки.

Если вам не удалось выиграть, вы всегда можете приобрести билет со скидкой, если при покупке назовете мой промокод на 500 ₽: go_crew_4_WROKD0

Купить билет 👉 тык

defer panic

27 Sep, 14:01


Монтирую потихоньку короткий видос (ну как короткий, ~15 минут). Тема попсовая и даже слегка банальная, но актуальной быть так и не перестала. Выпущу его, пока неспешно ведётся работа над роликом про интерпретатор.

defer panic

19 Aug, 14:18


А в Телеграм за время моего отпуска завезли реакции-звёздочки. Это платные реакции (100 звёздочек ~= $1.69), с помощью которых можно поддержать автора. Если у вас по какой-то причине возникло желание поддержать меня, потратив на это несущественную сумму, то звёздочки — отличный способ. Покупаются они кстати через того же бота, что и подписка на телеграмный премиум.

defer panic

19 Aug, 14:18


Пока я был в отпуске, вышел Go 1.23.

▪️Самое главное изменение — итераторы. Теперь можно делать for-range по кастомным структурам данных. Думаю разобрать итераторы подробно в отдельном посте.

▪️Новый пакет unique позволяет проще и эффективнее сравнивать значения, например, для дедупликации. Думаю, эту штуку тоже стоит разобрать отдельно.

▪️Таймеры больше не утекают, если их не закрыть.

▪️И как всегда, много минорных изменений в стандартной библиотеке.

Про какую из новых фичей вы бы хотели узнать больше?

• ютуб • бусти • патреон • платный канал

defer panic

01 Aug, 11:58


Подписываюсь под каждым словом Николая.

От себя добавлю про деньги. Возможно, вы удивитесь, но ролики появляются на Ютубе в основном потому что Ютуб делится прибылью с рекламы с авторами роликов, на которых эта реклама прокручивается. Если площадка не платит денег и там нет рекламодателей, то какой смысл туда выкладывать ролики? Я не про альтруистов и странных людей типа меня, у которых какие-то другие цели и задачи, а про людей с роликами на бытовые темы и лайфстайл-влогами.

Можно возразить, что рекламодатели сейчас придут, и всё станет супер. Но не станет.

Во-первых, рынок «Россия» и рынок «весь мир» сравнивать просто глупо. За пределами России живёт ещё огромное количество людей, которые говорят по-русски (даже до 24 февраля 2022) — это десятки миллионов людей. Кто-то не говорит по-русски, но готов смотреть контент на русском с субтитрами (как минимум на моём канале такое бывает). И многие из них смотрят контент, сделанный в России. Станут ли они ради этого переходить на российские видеохостинги, когда весь остальной контент для них живёт на Ютубе? Не факт.

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

Во-вторых, если мы посмотрим на соседнюю индустрию — музыкальные стриминговые площадки — то увидим, что та же ВК Музыка платит какие-то совсем смешные крохи даже по сравнению с копейками, которые платят остальные. Будет ли другая ситуация с ВК Видео? Я что-то сомневаюсь.

А если говорить даже не про деньги, то ВК Видео и Рутуб — просто говно. Попробуйте залить хоть что-то на Рутуб. И да, мы почему-то вообще свыклись с тем, что блокировка ключевых ресурсов — это ок. Это не ок нигде и никогда.

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

Я недолюбливаю Гугл, но как минимум две классные штуки он сделал — это Ютуб и Голанг.

defer panic

23 Jul, 06:03


Неделя с Zed

Когда я писал про Zed в первый раз, я запускал его пару раз, но полноценно работать в нём не пробовал. На прошлой неделе решил попробовать в качестве основного и в идеале единственного редактора.

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

Zed не отвлекает по пустякам. Когда я открываю редактор, скорее всего я это делаю, чтобы что-то редактировать. Вместо этого почти все редакторы начинают меня засыпать хламом в стиле «Смотри, что у нас нового — куча фичей, которые ты никогда не будешь использовать» и «У плагина X появилась новая версия». Я никогда не понимал, почему я должен принудительно видеть все эти уведомления. Хуже только, когда их показывают не при старте, а просто внезапно поверх кода, когда я на нём сфокусирован. Это одна часть. А вторая часть — нагромождение тулбаров и иконок, каждая из которых мне пригождается в лучшем случае один раз за день. При том, что есть Command Palette, через который я всегда могу найти всё то же самое. Более того, обычно я так и делаю, даже если иконка у меня перед лицом. Так вот, в Zed этого всего слава богу пока нет, по крайней мере в таких масштабах.

Zed очень быстрый. Я имею в виду, очень быстрый. Это может быть не так заметно, когда пользуешься им непосредственно. Но когда возвращаешься в VS Code или IDEA, сразу чувствуешь, что потерял.

Но за скорость приходится платить: у Zed нет внутри продвинутого анализа кода, как у IDEA — по крайней мере для Go. Поэтому уровень понимания кода будет, как у любого другого редактора, который поддерживает LSP и интегрируется с Go через gopls. Мне такого уровня в большинстве случаев хватает, но как и в Виме с VS Code, gopls иногда сходит с ума и засыпает меня ошибками, которые не имеют никакого отношения к реальности. Обычно помогает принудительный рестарт gopls. Возможно, с другими языками всё получше. Но опять же, это скорее проблема gopls, а не Zed.

Я запускал Goland только когда мне нужно было запрыгнуть в дебаггер или сделать какой-то нетривиальный рефакторинг. Для этих задач лучше Goland ничего пока нет.

В общем, поживу в Zed ещё неделю, пока скорее нравится.

• ютуб • бусти • патреон • платный канал

defer panic

15 Jul, 06:02


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

Заполнение формы не займёт больше 5-10 минут.

Ссылка на форму 👉 https://airtable.com/appq2bpZuurGX5TwL/pagNtE1vZJtRILBpd/form

Форма анонимная, но при желании вы можете оставить свои контактные данные.

defer panic

27 Jun, 12:28


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

defer panic

19 Jun, 20:12


Что за язык будем реализовывать в ролике?

Можно было бы взять существующие простые языки типа Луа или вообще пойти в сторону языков не для программирования, а для данных типа JSON/TOML/YAML и т.д. Разница, к слову, только в объёме работы. Но в качестве примера для ролика я посчитал даже Луа слишком большим языком, а парсить форматы данных не так интересно. Поэтому будем пилить свой собственный скриптовый язык программирования (однажды программист не изобрёл велосипед, и больше его никто не видел). Сразу скажу, что то, что я сейчас буду рассказывать — моё видение в данный момент. К моменту выхода ролика всё может поменяться ещё 100 раз.

Язык будет предельно минималистичный. Простой настолько, насколько это возможно. Это относится как к синтаксису, так и к фичам. Давайте сначала разберёмся с синтаксисом. Например, есть языки со значимыми отступами типа Питона:


def greet(name):
print("Hello,", name)


Решение сделать синтаксис именно таким понятно — такой код кажется менее шумным по сравнению с классическим си-лайк синтаксисом:


#include <iostream>

void main(string name) {
std::cout << "Hello, " << name << std::endl;
}


Я же хочу пойти в сторону ещё большей лаконичности:


fun greet name
print "Hello, " name


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


print "Hello, " (getNameByUserID 42)


В идеале хочется получить синтаксис, где небуквенные символы не используются вообще. Ну либо оставить их в тех местах, где с ними реально проще и удобнее.

Всякие операторы логических выражений тоже пишутся словами:


&& → and
|| → or
! → not


Единственное исключение — знаки равенства и неравенства:


!= == < > <= >=


А, да, ещё оператора else не будет. Вообще. Я тут посмотрел, и понял, что я не использовал этот оператор прям очень давно. Обычно когда руки почему-то на автомате набирают else, я сразу выношу блок с условиями в отдельную функцию, а там уже всё решается ретёрнами. Для кейса, когда нужно рассмотреть много разных вариантов скорее всего сделаем что-то типа switch-case.

Фич в языке тоже по-минимуму:
- Типы
-- Простые типы данных: числа, целые числа, строки и логический тип
-- Составные типы данных: список, мапа
-- Сущности (entities) — как структуры, только поля могут быть уложены в памяти разреженно
-- Енамы (такого даже в Go нет!)
- Функции
- Конструкции для управления логикой
-- Условия (только if)
-- switch-case
-- Циклы
--- со счётчиком
--- с условием
--- по коллекции

Типы динамические, указывать их явно не нужно (и не факт, что можно будет). Для полей сущностей типы определяются через значения по умолчанию:


entity Player
name = ""
x = 0.0
y = 0.0
hp = 100


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

Рабочее название — Lisi. Изначально я хотел сделать что-то похожее на Лисп, поэтому нашел созвучный топоним, соответствующий одному из озёр в Тбилиси. Как вы понимаете, название потеряло былой смысл, но я решил ничего не менять.

defer panic

17 Jun, 14:27


Расскажу, как у меня сейчас обстоят дела.

Во-первых, не так давно мы с вами пробили 5000 подписчиков на ютубе — спасибо вам большое!

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

Начал я пилить свой маленький язык за здравие, но пока что сильно замедлился из-за переезда. Надеюсь поскорее разобраться со всеми делами и снова взяться за ролик!

• ютуб • бусти • патреон • платный канал

defer panic

29 May, 15:34


Вопросы?

Периодически к постам приходят люди в комменты и задают там вопросы, которые не относятся к теме поста, но в целом в тему канала. Я подумал и решил: а почему бы не сделать рубрику с ответами на вопросы? Не в виде AMA-треда, а скорее еженедельного формата, где я отвечаю на один или несколько присланных вопросов. Такой формат вы могли видеть у Фёдора Борщева или Senior Software Vlogger.

Давайте так: вы отправляете любой интересующий вас вопрос через форму, а я каждую среду на какой-то (или какие-то?) из них отвечаю. На вопросы, не получившие ответа в этот раз, возможно отвечу в следующий.

Ссылка на форму: dfrp.cc/questions

defer panic

15 May, 09:22


У меня есть несколько сценариев для роликов разной степени готовности. Но хотелось бы узнать у вас, на какую тему вы бы хотели увидеть ролик от меня? С одной стороны не очень хочется записывать видео, которое просто пересказывает документацию. С другой стороны я вижу, что скринкасты с написанием какого-то сервиса/программы за 1.5-2 часа неплохо зашли. Хоть скринкасты сильно проще монтировать (буквально запустить auto-editor и пройтись да поправить автоматику), предварительной работы там всё ещё много. Возможно, вам интересен не только Go, но и какие-то другие языки/технологии/дисциплины?

В общем, делитесь в комментариях, какие темы вас интересуют, но еще не были никем освещены, по крайней мере на русском языке.

P.S. Ролик о планировщике Go не предлагать — на эту тему Николай Тузов уже готовит нетленку.

defer panic

10 May, 17:03


Потихоньку возвращаюсь с перерыва с хорошими новостями. На следующей неделе стартует Podlodka Go Crew 3, в которой я снова принимаю участие как член программного комитета. Podlodka Crew — это формат онлайн-конференций, который проходят в течение недели (одна сессия утром, еще одна вечером). Тема этого сезона — «Работа с базами данных». Что будет в сезоне:

⭐️ Научимся сравнивать библиотеки и ORM вместе с Арсеном Абдусаламовым из Авито. Познакомимся с решениями как можно подключаться к базам данных и узнаем про «Go way» способ.
⭐️ Попрактикуемся обращаться с распределённым MySQL с помощью Vitess вместе с Ильёй Ушаковым. Ведь одного инстанса MySQL в какой-то момент может начать не хватать. Что же делать, если переходить на NoSQL совсем неохота? Vitess — ответ на этот вопрос, золотая середина между NoSQL distributed базами данных и проверенным опытом MySQL.
⭐️ Узнаем всё о продвинутых структурах данных в Redis вместе с Олегом Арутюновым из Контура. Углубимся в преимущества и недостатки подхода, разберёмся с миграциями данных и оптимизацией базы.
⭐️ Мокать или предзаполнять базы данных? На этот вопрос ответят спикеры из Ozon Fintech. И это будет не просто доклад, а баттл: не на жизнь, а на смерть. Разберёмся, когда какой подход выбрать и стоит ли ограничиваться только одним.

🎁Бонус: публичный собес по работе с PostgreSQL. И это, естественно, не все сессии сезона.
Залетай за билетом, чтобы не пропустить специализированную конференцию для Golang-разработчиков

Для моих подписчиков есть промокод на скидку 500 ₽ — go_crew_3_deferpanic

#партнерскийпост

defer panic

08 Apr, 13:08


В GoLand и другие IDE от JetBrains завезли две важные (или просто интересные) фичи.

1. Data Flow Analysis (DFA). Статический анализ кода, позволяющий вычислять возможные значения переменных и обнаруживать потенциальные ошибки, такие как nil pointer dereference, бесконечные циклы и прочее. По сути IDE прикидывает данные, на которых программа поведёт себя некорректно.

2. Full Line Code Completion. Теперь GoLand может дополнять ваш код не «точка за точкой», а сразу всю строку. Это делается с помощью AI, но полностью локально. По сути JetBrains вытащили часть функциональности своего AI-ассистента и поместили прямо в IDE.

• ютуб • бусти • патреон • платный канал

defer panic

01 Apr, 13:02


👣➡️👣 Наконец-то решил свитчнуться на Rust. Go окончательно мне надоел. В чём же дело?

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

Во-вторых, Rust в отличие от Go ⚡️ молниеносно быстрый 🚀. Если бы мне надо было написать прошивку для аппарата, который запускают на Луну, я бы написал её на 🚀 Расте. Если мне нужно будет написать самый быстрый и эффективный сервис на свете, какой бы сложной внутри логика не была, я напишу его на ⚡️ Расте. Если мне нужно будет написать движок для своего блога, я напишу его на ⚡️ Расте 🚀. Если мне нужен будет скрипт для CI/CD-пайплайна, я напишу его на 💻 Расте 💀.

В-третьих, сборщик мусора — это прошлый век. Я не могу придумать более уродливую и неказистую конструкцию в программировании, чем сборщик мусора. Это не просто костыль, это король костылей. Тратить впустую cpu time, создавать лишнюю задержку в ответах бэкенд-сервисов, сжигать драгоценную энергию... Извините, но это не про меня.

В-четвертых, как же я устал от механизма обработки ошибок в Go! После каждого чиха разворачивать результат функции и проверять наличие ошибки — это какая-то дичь. Хорошо, что в Расте по-другому!

Я могу назвать ещё много причин для перехода с Go на Rust — хватило бы на объём всей трилогии Лю Цысиня «Память о прошлом Земли». Но идею, думаю, вы поняли. С этого момента все посты и ролики на ютуб-канале будут посвящены либо только Расту, либо сравнениям Go с Rust в синтетических тестах.

⚡️🚀 Viva La Rust!