HowProgrammingWorks - JavaScript and Node.js Programming
الذهاب إلى القناة على Telegram
Программная инжененрия для 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
إظهار المزيد6 582
المشتركون
-424 ساعات
+177 أيام
+6430 أيام
أرشيف المشاركات
Моя политика: так называемая Jira и все творения террористической организации Атласиан - запрещены везде, где я присутствую.
- Я вынедрил Jira в десятках организаций
- Может, внедрил?
- Нет, именно вынедрил
Confluence, битбакет - это все инструменты геноцида: если сложить время работы людей, которое было списано вникуда из-за этого софта, и разделить на среднее рабочее время разработчика за одну жизнь, то это будут сотни тысяч полноценных человеческих жизней (ну насколько жизни на галерах полноценные, конечно).
Конфлюенс, например, полностью заменяется .md-файликами. Все это Atlassian-искусство построено вокруг одной идеи: они капитализируют бюрократию. Берут простое действие: написать текст, поставить задачу, обсудить изменение, слить ветку - и обмазывают его таким слоем интерфейсного цемента, что через год команда уже не создает продукт, а обслуживает инструмент.
🖼️ В примерах наблюдения за файловой системой было раньше:
- наблюдение за фалом через
fs.watch
- наблюдение за папкой через fs.readdir + fs.watch
- кеширование изменений для сервера статики
👉 добавлены примеры:
- с ключами --watch --watch-path --watch-kill-signal
- объяснения того, как наблюдается дерево зависимостей
- как влияет на наблюдение delete require.cache[name]
Код - https://github.com/HowProgrammingWorks/FilesystemWatch/tree/master/JavaScript
Объяснения будут в керсе - https://www.patreon.com/collection/1913313?view=expandedПо состоянию на 7 марта 2026 лучшее применение:
Sonnet 4.6 - модель по умолчанию для написания кода
Opus 4.6 - для написания ТЗ, стратегии и ревью кода
Opus 4.6 лучше отдавать архитектуру, спецификации, декомпозицию задач, критерии приемки и финальный QA для рискованных задач. Sonnet 4.6 лучше отдавать реализацию, итерации, рефакторинг, тесты и выполнение хорошо определенных задач в масштабе.
Лучшая схема на сегодня: Opus 4.6 проектирует, Sonnet 4.6 реализует, потом Opus 4.6 ревьюит
Красота, эстетика и интуиция решают задачи там, где формального компутер-саенса пока недостаточно.
Я не противопоставляю эстетику науке и уж точно не свожу все к мистике. За настоящей эстетикой почти всегда стоит какой-то принцип, обобщение, закономерность, просто оно еще не формализовано.
Инженерия постоянно сталкивается с вещами, которые еще не открыты, не осознаны и даже не сформулированы как проблемы. И в этот момент начинает работать интуиция - она сворачивает огромный массив опыта, знаний и наблюдений в одно решение. Иногда это выглядит как озарение. Иногда - как красивое решение.
А потом уже приходит наука и аккуратно рационализирует то, что сначала было найдено чувством формы.
use AI but don't forget good old automation
джаваскриптоднопоточныйЧто хотят сказать люди, когда мы слышим это заклинание? Удивительно, но я 15 лет слышу эту чушь из каждой второй статьи и доклада. Но для чего на ней настаивать? Может быть, хочется думать, что в js не бывает корапшена данных, неконсистентного состояния, когда ссылки на данные есть у нескольких частей программы одновременно, а в многопоточной среде это приводит к состоянию гонки. Но все эти проблемы могут быть и в однопоточном приложении, которое использует кооперативную многозадачность, передавая управление разным частям кода хоть через колбеки и ивентлуп или даже без него, на промисах и async/await, которые вообще часть языка, но позволяют в одном месте приостановить выполнение, а в другом поработать и в это время. Если объект доступен из таких разных мест, которые работают асинхронно в одном потоке, как только промис, await или callback возвращает управление в нашу часть кода, и она ожидает, что объект все еще в том же состоянии, что и был до асинхронной операции, то это опасная иллюзия, нужно все перепроверять в условно синхронном фрагменте кода. Но это тоже не всегда сработает, у нас есть Atomics и SharedArrayBuffer, которые могут и в синхронном фрагменте менять состояние и гарантий консистентности в JS нет. Что же говорит спецификация? Безопасность не гарантируется даже в синхронном фрагменте кода и не только через Atomics и SharedArrayBuffer. Деми Мурыч хорошо это комментирует "спецификация дала возможность любому окружению, создавать условия, когда выполнение JS кода не прибито гвоздями к одному агенту". Это значит, что в будущем могут появиться такие среды исполнения, где будет общий хип для нескольких потоков и нескольких агентов. Но прямо сейчас все известные рантаймы js гарантируют безопасность данных на коротких фрагментах условно синхронного кода, если не использовать SharedArrayBuffer. Это уже что-то, но это далеко не безопасно в том смысле, на который надеются люди, кричащие "джаваскриптоднопоточный" из любого утюга. И это не имеет никакого отношения к потокам или процессам, потому что для исполнения кода ваш js рантайм может порождать сколько угодно внутренних потоков для компиляции, оптимизации, сбора мусора, выполнения I/O операций, и еще пачку потоков для пользовательского кода: worker threads, shared workers, service workers. Поразительно, как широко распространилось это клише про однополосный js, статьи, доклады, комменты, просто разговоры, люди это повторяют как мантру. Мне вот футболку подарили 5 лет назад, с надписью джаваскриптоднопоточный и nodejsоднопоточный, хоть я это уже лет 15 критикую на конфах всех, и нет конца этому...
AI сломал новичков.
Не понимая, что такое stack trace, не освоив даже циклы, новички массово рвутся изучать архитектуру.
What AI features do you use?
We will have this in JavaScript in future, Insha'Allah
https://github.com/tc39/proposal-do-expressions
🧩 Паттерн Context
Контекст используется для обеспечения обмена данными между различными компонентами (абстракциями, модулями, слоями), не имеющими общего окружения, без лишнего связывания.Примеры: - 1-closure.js — Контекст с замыканием: Частично применяемая функция с привязанным контекстом; простой RBAC и аутентификация пользователя - 2-oop.js — Контекст в ООП: Контекст передается в конструктор; RBAC, User и AccountService как классы - 3-factory.js — Фабрика контекста: Фабрика создает сервисы с общим контекстом; внедрение зависимостей - 4-pipeline.js — Контекст в конвейере промежуточного ПО: Асинхронный конвейер с распространением контекста; трассировка и идентификаторы запросов - 5-async.js — Асинхронный контекст (AsyncLocalStorage): Контекст сохраняется между асинхронными границами без явной передачи - 6-immutable.js — Неизменяемый контекст: Замороженный контекст и производные контексты с помощью вспомогательных функций; без мутаций 👉 https://github.com/HowProgrammingWorks/Context
Тут план на этот год по курсам, это кроме паттернов
- Async 2026 полностью готов и уже было первое подняие цены, будет и второе
- Paradigms 2026 готов, но еще не опубликована программа, пока early birds
- Node.js 2026 готовлю большую перезагрузку материалов, до публикации действует early birds
- Scale 2026 - высоконагруженные, интерактивные и распределенные системы (готовится)
- На остальные предзапись, будут выходить в течении года
https://www.patreon.com/collection/1913313?view=expanded
Дети грызут ручку, чтобы ее ни кто не забрал, ведь кому нужна ручка погрызаная другим.
Когда программисты пишут код, я полагаю, они руководствуются тем же принципом, чтобы отвадить от него как коллег, так и конкурентов.
