uk
Feedback
HowProgrammingWorks - JavaScript and Node.js Programming

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 541
Підписники
-124 години
-57 днів
+4430 день
Архів дописів
С понедельника начинается курс Patterns 2025 Фреймворки могут помочь вам получить первую работу, но путь к уровню сеньора — э
С понедельника начинается курс Patterns 2025 Фреймворки могут помочь вам получить первую работу, но путь к уровню сеньора — это совсем о другом. На стриме мы поговорим о том, что действительно отличает зрелых инженеров от просто кодеров. Решение задачек на LeetCode — это билет в индустрию, но не к мастерству. Это нужно в основном для прохождения формальных интервью, особенно в международных компаниях. Но если вы хотите научиться писать понятный, надежный и масштабируемый код — этого недостаточно. Знаменитая "книжечка с кабанчиком" стала скорее символом технического фетишизма, чем реальным пособием по построению надежных систем. И чаще всего её вспоминают лишь на собеседованиях. Если для простой очереди или циклического списка человек тащит RabbitMQ или Kafka — это не про инженерное решение, это про профнепригодность. Что отличает сильного разработчика? Насколько глубоко нужно знать алгоритмы и Computer Science вообще? Нужны ли знания по архитектуре и какие? И еще много вопросов на стриме в эту субботу 3 мая в 15:00 Регистрация на стрим: https://patterns-js.com/w1hpna?utm_source=telegram_channel&utm_medium=timur_shemsedinov&utm_campaign=web_3_05&utm_content=lgt_1_tehlid

Work is dead! AI and Capital Unite! To liberate Capital and robots from the ineffective human hands. Capital doesn't need you
Work is dead! AI and Capital Unite! To liberate Capital and robots from the ineffective human hands. Capital doesn't need your dirty hands or crappy code anymore. Robots deliver: clean, fast, loyal!

💡 Algebraic and Container Data Types - ADT Record (mutable and immutable) - ADT Tuple, Sum - Result as a Sum of Value and Failure - Either, Maybe and Result containers - ADT Linked list https://github.com/HowProgrammingWorks/ADT

🧩 В эту субботу (26 апреля) в 15:00 стрим «Паттерны асинхронного программирования» Регистрация обязательна: https://patterns
🧩 В эту субботу (26 апреля) в 15:00 стрим «Паттерны асинхронного программирования» Регистрация обязательна: https://patterns-js.com/0jiuic?utm_source=telegram_channel&utm_medium=t_shemsedinov&utm_campaign=stream_26_04

🧩 В эту субботу (26 апреля) в 15:00 стрим «Паттерны асинхронного программирования» На этом канале 👉 https://www.youtube.com
🧩 В эту субботу (26 апреля) в 15:00 стрим «Паттерны асинхронного программирования» На этом канале 👉 https://www.youtube.com/@TimurShemsedinov Разбор паттернов и контрактов: - Thenable, Promise, Future, Deferred - Callbacks, Async/await, Coroutines - Observer, EventEmitter, Signals - Locks API, Semaphore, Mutex - AsyncCompose, AsyncPool, AsyncQueue - Threads, MessageChannel, MessagePort - function*/yield, Async Iterator - Actor Model, Chain of responsibility - AsyncCollector, Streams, RxJS... 👳 Тимур Шемсединов 🧔‍♂️ Денис Отришко — контрибьютор Node.js и Metarhia 🤵 Дмитро Нечай — Chief Architect в PLATMA, CTO в HandyAI Программа курса по паттернам: https://nodeua.com/Patterns-2025.html

🧩 Завтра (19 апреля) в 15:00 стрим с Мурычем «Оптимизация структур данных и паттернов для V8» 👉 https://youtube.com/live/PncSzdGTzk0 Темы: - Performance testing and debugging - Performance optimization and tuning - Observer (EventEmitter, EventTarget) - Queue (FixedQueue + CircularBuffer) - UnrolledQueue (LinkedList + Array) - ObjectPool, LinkedList, RoundBuffer Программа курса по паттернам: https://nodeua.com/Patterns-2025.html

❓ Что бы вы выбрали для очереди в JavaScript, чтоб было оптимизированно для V8? Все случаи будут обсуждаться в эту субботу на
❓ Что бы вы выбрали для очереди в JavaScript, чтоб было оптимизированно для V8? Все случаи будут обсуждаться в эту субботу на стриме. Источники: https://github.com/HowProgrammingWorks/Queue • 1-queue.js — интерфейс с наивной реализацией поверх Array • 2-naïve.js — наивная реализация поверх односвязного списка • 3-fixed.js — FixedQueue (из Node.js) поверх FixedCircularBuffer • 4-unrolled.js — UnrolledQueue поверх развернутого массива • 5-spare.js — развернутый массив + один запасной (свободный) элемент • 6-pool.js — развернутый массив + пул объектов • 7-current.js — развернутый массив, объединенный с пулом в общий односвязный список • 8-circular.js — кольцевой буфер + развернутый массив • 9. Я хочу писать прикладной код. Я бы предпочел, чтобы платформа предоставляла лучшее • 10. Это вообще не имеет значения

🧩 В эту субботу (19 апреля) в 15:00 стрим с Мурычем «Оптимизация структур данных для V8» На этом канале 👉 https://www.youtube.com/@TimurShemsedinov Разбор паттернов и структур данных: - FixedQueue + CircularBuffer - UnrolledQueue (LinkedList + Array) - ObjectPool, LinkedList, RoundBuffer Для кого эфир? - Начинающие, джуны - Опытные инженеры - Синьоры, лиды Кто ведет? 👳 Тимур Шемсединов 🧔‍♂️ Деми Мурыч 🤵 Дмитрий Нечай Программа курса по паттернам: https://nodeua.com/Patterns-2025.html

🧩 Программа курса уже на сайте, кто там спрашивал, вот: https://nodeua.com/Patterns-2025.html Авторы, приглашенные эксперты и менторы: 👳‍♀️ Тимур Шемсединов 🥷 Илья Климов 🤵🏼‍♂️ Дмитрий Нечай 👨‍💻 Денис Отришко 👨 Тимур Севимли 🧔 Николай Белочуб 📅 1 мая: старт курса 👉 Каталог паттернов: https://github.com/tshemsedinov/Patterns-JavaScript 👉 Плейлист стримов с экспертами: https://www.youtube.com/playlist?list=PLHhi8ymDMrQYkcxj1eb-Se6Ojd0PRJfFO

🧩 Завтра (12 апреля) в 15:00 cтрим Data access patterns https://www.youtube.com/watch?v=diH1VfV_38o 👳 Тимур Шемсединов - в представлении не нуждается 🧔‍♂️ Николай Белочуб - 10+ лет в Продуктовой Разработке, Senior SWE, OSS Contributor 🤵 Дмитрий Нечай - Chief Architect в PLATMA, CTO в HandyAI

🧩 В субботу (12 апреля) в 15:00 cтрим Data access patterns На этом канале 👉 https://www.youtube.com/@TimurShemsedinov Разбор паттернов и подходов: - Repository и Active Record - Query Builder и Object-Relational Mapping (ORM) - Value Object и Null Object - Data transfer object (DTO) - Data access object (DAO) и Data Access Layer (DAL) - Patterns: SAGA, Transaction Script и др. Для кого эфир? - Начинающие разработчики - Опытные инженеры - Тех-лиды, тим-лиды - Самоучки без CS-образования Кто ведет? 👳 Тимур Шемсединов - в представлении не нуждается 🧔‍♂️ Николай Белочуб - 10+ лет в Продуктовой Разработке, Senior SWE, OSS Contributor 🤵 Дмитрий Нечай - Chief Architect в PLATMA, CTO в HandyAI Программа курса по паттернам: https://nodeua.com/Patterns-2025.html

В Node.js для очередей используется FixedQueue на базе CircularBuffer. Он оптимизирован для V8, на базе списка массивов фиксированной длины по 2048 элементов. Это гораздо лучше, чем просто push/shift на массиве, когда массив постоянно меняет длину и память перераспределяется. Но все же очень неоптимально, потому, что нам для очереди нужно добавлять только в голову списка, а брать только с хвоста, не нужно по кругу бегать в буфере. Они неправильно выбрали структуру данных, тут не нужно было циркулярный буффер реализовывать, тут нужно использовать Unrolled List, эффективнее и проще. В текущей реализации, много лишнего кода, когнитивная нагрузка выше, там битовая маска используется, и вконце буфера один элемент всегда undefined, вот этот лишний undefined - как раз не страшно, но циркулярная машинерия медленнее. Тут есть 4 варианта кода, чтобы разобраться в вопросе: 1 - наивная очередь, 2 - очередь на списках, 3 - очередь на циркулярном буффере, 4 - очередь на развернутом списке. Для курса по паттернам я сделаю лекцию где мы подробне это разберем и составим сравнительную таблицу, для разных реализаций, где что оптимально использовать - https://github.com/HowProgrammingWorks/Queue/tree/main/JavaScript