HowProgrammingWorks - JavaScript and Node.js Programming
6.49K subscribers
370 photos
16 videos
1 file
938 links
Программная инжененрия для JavaScript, TypeScrip, Node.js
👉 Group: https://t.me/How_Programming_Works
👉 Node.js channel: https://t.me/metarhia
👉 Node.js group: https://t.me/nodeua
Download Telegram
Object.freeze / seal / preventExtensions: сколько это стоит в V8

Бенчмарк на create / read / write для обычного объекта {} и трех режимов защиты: freeze, preventExtensions, seal.

- create: защита дороже обычного объекта ~в x4: {} 5.7 ns, а для freeze/seal ~25 ns
- read: разницы почти нет, все ~1.4–1.6 ns
- write: preventExtensions и seal пишут в существующие поля так же быстро, как {}, а freeze в кидает исключение ~2245 ns (долго)

Вывод: читать frozen можно спокойно, дорого создавать (это обычно редко), а писать в freeze через try/catch не нужно, но в коде freeze может быть, если есть тесты, подтверждающие, что не пишем в поля

https://github.com/HowProgrammingWorks/Object
4👍2🔥1
Что я понял по итогам работы над структурами данных для стандартной библиотеки Metarhia

Это же классическая тема, но ее мало кто хорошо осваивает в наше время, тем более в мире JS/Web разработки и во времена, когда все пишет AI. И даже если учили и знают, как делать хотябы простейший список, то нет привычки его использовати и знания остаются аккадемической теорией, невосстребованными вообще, а в коде массивы и объекты, ну максимум Set/Map. Почему же так случается?

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

Я за последний месяц собрал свои наработки за последние 15 лет и сделал и продакшен-версии кода и учебные примеры, записал много лекций и стримов по структурам данных. Буду делать примеры и скилы, а пока вот продакшен-реди реализация самых нужных структур тут https://github.com/metarhia/metautil
11👍6🔥2🤝1
Passkey (вход без пароля)

Вместо пароля на устройстве создается криптографическая пара ключей:
- приватный остается у вас (телефон, ноутбук, ключ)
- на сервер уходит только публичный

При входе устройство подписывает запрос - фишинг и утечка пароля остаются в прошлом.

Минимальный пример на чистом Node.js и WebAuthn API: регистрация, вход, сессия.
https://github.com/HowProgrammingWorks/Passkey
👍18🔥84
А тут альтернативный вариант входа без пароля:

- Хранение ключей в OPFS (в браузере)
- Для генерации Web Crypto (ECDSA P-256)
- Без использования Web Authn, Passkey

https://github.com/HowProgrammingWorks/ChallengeSignIn
👍53🔥3
🧑‍💻 AI: зачем нужны структуры данных для JavaScript — практические примеры для бэкенда и фронтенда

Структуры данных в JavaScript обычно объясняют через их внутреннее устройство, API и оценку сложности Big O. А мы пойдем от реальных инженерных проблем: написание бизнес-логики, кода на JavaScript и TypeScript для backend и frontend, типовые проблемы в разработке: коррапт глобальных данных, гонку состояния, очереди, кеширование, история изменений, управление памятью и ресурсами.

Мы разберем, почему каждая структура решает определенную проблему, и уже как следствие, то что она что-то запрещает и чем за это приходится платить, но и какие плюсы мы получаем. От обычных Array, Object, Map и Set до Linked List, Persistent List, Heap, Circular buffer, Bloom filter, Stack, Queue, Append-only, Immutable lists and Records. Отдельно классифицируем структуры для доменного, продуктового, платформенного и системного кода.

https://www.youtube.com/live/qNAjrZ07un0
13👍6🔥3🤝1
Новый набор в гильдию Next Tick

За что тебе платят, когда код пишет модель? Ответ, с которым мы работаем в Гильдии: за работу с ограничениями, decision framework, архитектуру, review, широкое мышление, глубокую экспертизу, умение коммуницировать с людьми и агентам.

Вы знаете, что у меня есть курс по архитектуре, в нем 22 лекции по 2 часа и вот все материалы по архитектуре, которые я записал для NextTick почти не пересекаются с моим курсом, потому, что в NextTick другая цель и другой материал, который обычно не передают в статьях, книгах и докладах, это личный опыт, о нем рассказывают друзьям в неформальном общении, но оказалось, что это самое ценное, что позволяет быстро нарастить компетенции.

Некоторые темы по архитектуре, которые мы уже рассмотрели:
- AI и архитектура: кто кем управляет, зачем уменьшать сложность
- Почему "большие задачи" почти всегда ложь — и как дробить работу
- Вертикальные слайсы vs горизонтальные слои в архитектуре
- Acceptance criteria как проверяемый контракт
- Planning for AI: explicit outcome, границы, definition of done
- Не весь техдолг равен, как продать рефакторинг на языке ROI
- Rewrite vs refactoring, AI-assisted migration: где AI ускоряет, а где производит новый долг
- Мифология в программной инженерии
- Architecture review: что реально должно блокировать merge
- Реактивные вычисления, модель акторов, конечные автоматы
- Мультипарадигменное программирование и построение DSL-языков
- Функциональные и нефункциональные требования
- ADR (документирование архитектурных решений)
- Управление характеристиками кода для построения нужной архитектуры

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

Что будет в ближайшее время:

- Как архитектурное ревью меняют продукт и команду
- Архитектурные границы и проектирование контрактов
- Нужных людей невозможно нанять. Их нужно выращивать
- Как развиваться на работе, а не деградировать
- Как влиять на коллектив через идеи, идеи сильнее приказов
- Как наладить менторство в коллективе и в чем его цель
- Risk assessment: как думать о том, что может пойти не так

Архитектура - это пересечение экономики и эстетики: предсказуемость из непредсказуемых частей, обратимые решения vs one-way doors, R&D вместо "надо все знать".

Заходите на сайт, там обзор и описание формата - https://nexttick.it/?utm_source=timur_tg_howprogworks
🤣83🔥3👍1🤝1
В NextTick мы регулярно проводим голосовые разборы для участников с платной подпиской. Один из последних стримов мы решили ненадолго открыть в Telegram-канале IT-Гильдии.

AI уже умеет ускорять разработку. Проблема в том, что бизнесу не нужен код быстрее. Ему нужны решенные задачи.
Это часовой разговор о том, что агентская эпоха уже меняет в работе разработчика: почему количество сгенерированного кода ничего не говорит о результате, где сохраняется ценность инженера и почему архитектура, code review и способность спорить с неверными решениями становятся важнее скорости написания кода. А еще — что изменения в GitLab, увольнения в Cloudflare и рост AI-рынка означают не для абстрактного «рынка труда», а для конкретного разработчика прямо сейчас.

Запись будет в канале до 2 августа. https://t.me/itguild_next_tick
🔥41👍1🤝1
Почему в JavaScript мире нет культуры использования структур данных?
Их неправильно учат, точнее, правильно, но этого мало, такие знания полезны только на задачках с литкода и на собесах, а вот на практике люди сразу забывают про структуры данных и реальный код только: [], {}, Set, Map

Я поискал, как их обычно преподают
- как устроены внутри и как работают
- как оптимизировать: CPU, memory
- как оценить вычислительную сложность
- как оптимизировать под V8, GC

Но нет даже попыток показать:
- как применить на реальной задаче
- как они делают код понятнее
- как они помогают экономить на AI

1 августа покажу примеры на реальном коде для бизнес-логики, системного программирования, бекенда, фронтенда: https://youtube.com/live/qNAjrZ07un0
🔥253👍3💯1
Курс Ильи Климова «Тестирование в эпоху агентов»

AI уже умеет писать много кода, но без тестов, контрактов и автоматической проверки качества он завалит вас кодом и вы его даже не вычитаете, не говоря уже о том, что на глаз многие вещи просто не ловятся, особенно в таких объемах кода. Курс учит, как построить управляемую инфраструктуру, чтоб тестирование помогало дресировать AI. Особенно полезно тем, кто уже использует AI в реальных JavaScript/TypeScript-проектах.

Промокод на 15% ti15 до 1 августа

Заходим, не стесняемся: https://ai.javascript.ninja/gld-ai-r
👎127👍2🔥1
Как вы думаете, кому выгодно, чтобы вы не читали код и чтобы он все время переписывался и никогда не стабилизировался? One-shot? Все с нуля и каждый раз - вот что нужно. Все свои софты личные, одноразовые тулы, agentic loop, self-review, Best-of-N, infinite repair, full-replay...
👍14🤷‍♂5😁5🔥2💯2