Metarhia/NodeUA - Node.js Ukraine Community
3.62K subscribers
221 photos
5 videos
3 files
618 links
Канал по Node.js сообщеста Метархия. Ссылки на митапы, группы и каналы сообщества https://github.com/HowProgrammingWorks/Index/blob/master/Links.md
Download Telegram
Если монолит можно написать за 6 месяцев, а разделив на 4 микросервиса можно успеть за 3 месяца, то на сколько микросервисов нужно разделить, чтобы написать проект за 2 часа?
Все время уходил от вопроса, про литературу, которую стоит читать программистам, это потому, что мой список выглядит странно и сложно объяснить, почему не Дядя Боб и не Мартин Фаулер... Они тоже, конечно, полезны, но все же мой список такой:

- Рене Декарт
- Людвиг Витгенштейн
- Ноам Хомский
- Кристофер Александер
- Алан Тьюринг
- Джон фон Нейман
- Норберт Винер
- Виктор Глушков
- Клод Шеннон
- Людвиг фон Берталанфи
- Стаффорд Бир
- Уильям Эшби
- Эдсгер Дейкстра
- Дональд Кнут

Это не так много, и точно более полезно, чем нетфликс и амазон
🖼 Какие возможности Node.js для организации серверов вы знаете? Если что-то неизвестное, обновлены примеры тут: https://github.com/HowProgrammingWorks/NodeServer
Anonymous Poll
24%
IP sticky
40%
TLS (Transport Layer Security)
12%
Multidomain support
9%
Server Name Indication (SNI)
7%
ALPN (Application-Layer Protocol Negotiation)
42%
Clustering
85%
WS/WSS (Websocket)
🎓 Позиция сообщества Метархия по платному IT образованию:
1⃣ Все материалы для начинающих должны быть бесплатными, чтобы они могли стартовать без вложений. Новички не могут отличить качественные курсы от пустых, слабо ориентируются и часто попадают на инфомошенников, хоть интернет полон бесплатными материалами для новичков.
2⃣ Платные курсы, наставники, интернатура, ревью кода и консультации — это только для тех, кто уже освоил базовое программирование, работает или имеет возможность работать за деньги. Такие люди уже понимают чего хотят и могут оценить качество обучения.
3⃣ Обучение это не просмотр видео и не решение задачек с литкода, а практика написания продуктового или системного кода, приближенного к реальному, семинары, обсуждения, ревью.
4⃣ Важно научиться писать понятный, а не быстрый код. Оптимизации нужно подвергать 1% критического кода, после того, как он заработал, и именно этот 1% дает 99% всех тормозов.
5⃣ Учиться нужно в группах и после первых 6 месяцев, обязательно на реальных проектах, потому, что работать вы будете в коллективе, где более половины навыков, это понимание коллег и взаимодействие с ними.
«Patterns for Async and Node.js»
Rethinking GRASP, SOLID, GoF for Frontend & Backend

👉 Here is a task from new course: https://gist.github.com/tshemsedinov/20735f7f8b3c843c3dfa0bcd650e825b
Patterns for Async & Node.js
Rethinking GRASP, SOLID, and GoF patterns for Frontend & Backend

Опрос для формирования нового курса по переосмыслению принципов GRASP и SOLID, а так же паттернов проектирования (классических GoF и дополнительных), чистой архитектуры и проектирования архитектуры на базе DDD (Domain-driven design) для фронтенд и бекенд инженеров.

10 самых интересных ответов получат мои рекомендации по поднятым темам и ссылки на решения этих проблем из моих открытых и закрытых лекций, семинаров, тренингов, а если нет таких материалов, то я постараюсь ответить лично и привести примеры кода. 👉 https://forms.gle/zE78uTAqKR3GWAoq5
Сколько пользователей у проектов, которые вы пишете?
Anonymous Poll
16%
> 1 000 000
11%
> 100 000
11%
> 10 000
5%
> 5 000
7%
> 1 000
5%
> 500
6%
> 100
5%
> 10
3%
< 10
31%
1 и это я
🤯 Вы в курсе, что Принцип подстановки Барбары Лисков (SOLID:LSP) имеет противоположную трактовку для типов и классов? Он сводится к тому, что вместо типа всегда можно использовать его подтип, а для классов, вместо экземпляра класса всегда можно использовать экземпляр его наследника. Только проблема в том, что подтип сужает область определения типа предка (Type Narrowing), а дочерний класс расширяет (Subtype extends Parent). Уже испугались? Да все в порядке, это проблема языка, а Вы говорите, Витгенштейн программистам не нужен... на самом деле, для типов слово сужение обозначает то же самое, что "расширение" для классов. Например, имеем тип целых чисел (integer) и подтип натуральных (natural, только положительные целые); конечно, везде, где мы можем передавать целые, можно передать и только положительные целые. А вот класс Readable extends Stream а он, в свою очередь extends EventEmitter и далее extends Object. Это значит, что мы можем передавать Readable туда, где ожидается EventEmitter, но не можем передавать EventEmitter туда, где ожидается Readable. У Readable можно так же навесить on('error') и логировать ошибки любых стримов одним механизмом пусть это Readable, Writable, Transform или какие-то кастомные стримы. Если рассматривать Readable, Writable, Transform с точки зрения типов, то это все сужения EventEmitter, но вот только в языке это называется расширением (extends), и так во всем, так что язык - это ваша золотая клетка, как язык программирования, так и разговорный. Зная нескольких вы и в родном уже начинаете что-то понимать. Как же нам понимать SOLID:LSP? Да просто: подтип или класс наследник должен уважать контракт предка, по сути это SOLID:OCP (open-closed) + контрактное программирование.
🙈 Add forever or pm2 and forgot about errors
— Вы там все с ума посходили с этим своим EventEmitter, натуральный goto, это же мерзость, как и все в этом вашем Node.js
— Это ты где так от EventEmitter пострадал? Опять CTO заставлял собесы принимать?
— Та не, вчера с Васей пиво пили и он мне насвистел... А правда, что у вас даже стримы на гоуту работают?