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
Что за язык будем реализовывать в ролике?

Можно было бы взять существующие простые языки типа Луа или вообще пойти в сторону языков не для программирования, а для данных типа 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. Изначально я хотел сделать что-то похожее на Лисп, поэтому нашел созвучный топоним, соответствующий одному из озёр в Тбилиси. Как вы понимаете, название потеряло былой смысл, но я решил ничего не менять.
🔥22🤯4💅4👍3💊2
Нейронки добрались до мемов. Пока не сказать, что я прям валяюсь под столом, но некоторый уровень остроумия уже присутствует.
😁22🔥6👍5💊2❤1
Мои друзья разрабатывают инструмент для удобного и быстрого поиска работы. Чтобы сделать этот инструмент лучше, им нужна статистика о том, как люди разных IT-профессий в разных локациях подходят к этому вопросу. Информация, которой вы поделитесь, очень им поможет. А если сможете поделиться ссылкой на форму со своими друзьями и коллегами, поможете стократно. Даже если прямо сейчас не ищете работу, будет круто, если поделитесь прошлым опытом.

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

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

Форма анонимная, но при желании вы можете оставить свои контактные данные.
💊10👍3❤2✍1🔥1
Неделя с 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 ещё неделю, пока скорее нравится.

❤ • ютуб • бусти • патреон • платный канал
Please open Telegram to view this post
VIEW IN TELEGRAM
❤13👍6👀3💊3🤔2
Подписываюсь под каждым словом Николая.

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

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

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

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

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

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

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

Я недолюбливаю Гугл, но как минимум две классные штуки он сделал — это Ютуб и Голанг.
3❤40👍8🔥5❤‍🔥2💯2
Пока я был в отпуске, вышел Go 1.23.

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

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

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

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

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

❤ • ютуб • бусти • патреон • платный канал
Please open Telegram to view this post
VIEW IN TELEGRAM
6👍12❤7🔥72💊1
А в Телеграм за время моего отпуска завезли реакции-звёздочки. Это платные реакции (100 звёздочек ~= $1.69), с помощью которых можно поддержать автора. Если у вас по какой-то причине возникло желание поддержать меня, потратив на это несущественную сумму, то звёздочки — отличный способ. Покупаются они кстати через того же бота, что и подписка на телеграмный премиум.
3214❤1🔥1💊1
Монтирую потихоньку короткий видос (ну как короткий, ~15 минут). Тема попсовая и даже слегка банальная, но актуальной быть так и не перестала. Выпущу его, пока неспешно ведётся работа над роликом про интерпретатор.
10❤16👍9🔥6🥰6💅1
В этот понедельник, 28 октября, стартует новый сезон Podlodka Go Crew. И я как член программного комитета приглашаю вас. В этом сезоне будем много говорить про архитектуру:

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

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

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

Купить билет 👉 тык
Please open Telegram to view this post
VIEW IN TELEGRAM
❤6🔥4👍3⚡1👎1
👀 Мои друзья из DevCrowd снова проводят исследование о Go-разработчиках. Несколько тем этого исследования:

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

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

Пройти опрос
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6
Go Proverbs
Simple, Poetic, Pithy

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

Конкретно я искал вот эту цитату Роба Пайка: A little copying is better than a little dependency, со ссылкой на источник.
Please open Telegram to view this post
VIEW IN TELEGRAM
🙏11❤5🫡3👍1
🎄 Все компании вокруг выпускают адвент-календари, а моим любимым всё ещё остаётся Advent of Code.

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

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

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

❤ • ютуб • бусти • патреон • платный канал
Please open Telegram to view this post
VIEW IN TELEGRAM
1🔥136❤4👍2
💼 Ищем фуллстек-разработчика себе в команду

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

🚀 Что за компания
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 с пометкой, что вы от Ильдара Карымова.

Эту же вакансию можно посмотреть на сайте.
🔥6🙏2🤝2❤1👎1
Помните, я рассказывал про Advent of Code? Пока сажусь за задачки +- каждый день. Прошлый год я пропустил, но участвовал в 2022. По моим ощущениям сложность задач заметно выросла по сравнению с 2022. По крайней мере некоторые задачи (как, например, №4) заставляют напрягаться уже в начале, тогда как такую сложность в 2022 я встретил только день на 14-15.

Возможно, это такая защита от AI-программирования — нейронки пока плохо умеют решать нетипичные задачи с хитрыми условиями, где много эдж-кейсов. Я пробовал загрузить в ChatGPT и Claude спеку языка, который пилю для видоса, и попросить написать хотя бы парсер. И что с режимом канваса, что без него все нейронки сыпятся. Кто знает, может если бы просил реализовать парсер для существующего языка, они бы справились получше ¯\_(ツ)_/¯

Если что, свои решения я выкладываю на гитхаб:
Go: https://github.com/tomakado/aoc2024
Clojure: https://github.com/tomakado/aoc2024clj

(Решения на Кложе выкладываю с запозданием, и вообще там не самый лучший код, т.к. на этом языке я не писал в прод больше двух лет уже, и мозг за это время повернулся в обратную сторону)
❤10
🎧 Devcrowd подвели итоги своего исследования о Go-разработчиках, проводимого с 1 октября по 1 ноября. Вот некоторые из результатов:

• Go хорошо закрепился как язык для продакшена — лишь 12% пишут на нём только вне работы
• В основном на Go переходят с PHP, JS и Python
• 94% Go-разработчиков — мужчины
• Самая популярная IDE — GoLand/IDEA, с большим отрывом от Visual Studio Code, Vim и всех остальных
• Хабр, не считая митапы, всё ещё главный источник информации, а уже после него стоят Николай Тузов, «Библиотека Go-разработчика» и я 💁🏻‍♂️
• Медианная зарплата — 350-400 тыс. ₽

Для меня стало сюрпризом лидерство GoLand среди редакторов/IDE — вроде как в остальных языках, не считая Java и Kotlin, лидирует ожидаемо Visual Studio Code. Ну а вообще было интересно посмотреть на комьюнити гоферов с высоты птичьего полёта и через статистику, а не личные ощущения.

Также было приятно увидеть себя в числе тех, за кем следят респонденты. Спасибо ✌️

Как гоферы ищут работу, за кем следят, на какие ходят конференции, какие используют инструменты и многое другое можно почитать в подробном отчёте.
Please open Telegram to view this post
VIEW IN TELEGRAM
4🔥174❤2👏2💊2
Пусть тесты будут зелёные, релизы спокойные, паники не возникают, алёрты не будят ночью (особенно новогодней!), ну а самое главное — пусть будет мирное небо над головой, а на душе спокойно 🕊️

Будьте счастливы, обнимите родных и близких.

С наступающим 💫🎉
Please open Telegram to view this post
VIEW IN TELEGRAM
1❤54🔥21🍾64⚡3