Size: a a a

Жабаскрипт

2020 March 30
Жабаскрипт
"The Twelve-Factor Appp" и JavaScript
Неделю назад я делал доклад на fwdays про эффективную разработку NodeJS приложений (через 2-3 недели будет видео) и пообещал сделать серию постов на тему 12-ти факторов в канале. Вроде простая и всем понятная концепция, но не всегда ясно, что должен делать разработчик на практике.

Зачем нужны 12 факторов?
В WebbyLab, когда мы используем различные облачные решения, всегда стараемся минимизировать "vendor lock". Я придерживаюсь идеи, что лучше всего, когда ваше приложение без проблем можно будет запустить в любом облаке или даже на собственном железе. Мне нравится фраза Роберта Мартина, что работа архитектора это не принимать решения, а откладывать их насколько это возможно. Другими словами - сделать систему такой, чтобы критические решения можно было принять позже, когда будем иметь больше знаний о специфике задачи и предметной области. Так вот, ребята из Heroku разработали 12 правил, которые, хоть в контексте деплоймента, позволяют не принимать решения сразу.

12 правил, которые говорят, как написать приложение, чтобы оно обладало максимальной переносимостью между окружениями (локальное, облако, в docker-контейнере и тд) и было легче масштабировать. Считаю эти правила очень полезными и мы их используем и для бэкенда, и частично для фронтенда.

Правила - https://12factor.net/ru/

Настоятельно рекомендую с ними ознакомиться, даже если ты пишешь только фронтенд.

В следующих постах я пройдусь по каждому правилу и расскажу, как мы применяем их в JavaScript приложениях (фронтенд и бекенд).
источник
2020 April 16
Жабаскрипт
Эффективная разработка NodeJS приложений

Не так давно я делал доклад на fwdays на тему "Эффективная разработка NodeJS приложений." Это был мой первый онлайн доклад. Впечатления конечно смешанные. Тяжело, когда не видишь аудитории, но зато удобно было показывать код 🙂

Изначально я хотел поделиться идеями и концепциями, к которым нам в WebbyLab удалось прийти за годы разработки на NodeJS. Я наивно полагал, что смогу уместить это в один доклад, но по факту контента оказалось часов на 8. В резульатате, я взял только часть, но все равно вместо 40 минут доклад занял 90 минут. Хорошо, что мой доклад был последним 😁

В докладе:
✅ Прошелся еще раз по архитектуре.
✅ Показал пример чат-бота на этой же архитектуре.
✅ Рассказал про Sequelize  - ряд вещей, которых нет в документации. Как использовать ES6 классы, как работать с конфигами (поскольку примеры из доки противоречат правилам "12 factor app"). Немного про транзакции.
✅ Затронул конфиги для фронтенда.
✅ Прошелся по докеризации и основным вопросам, которые часто возникают у разработчиков.

ЗАПИСЬ ДОКЛАДА:  https://www.youtube.com/watch?v=g0I2dNwK1BE

PS: Серия постов по 12-ти факторам на подходе. Уже написал половнину. Будет по 1-му посту в день :)
источник
2020 April 21
Жабаскрипт
6 способов взломать твое JavaScript приложение.
В 2019 я несколько раз выступал с докладом на эту тему. Сейчас готовлю версию на англоязычную онлайн конфу, повод выложить оригинальное видео в канал 🙂

Я заметил, что если людям указать на потенциальный вектор атаки, то они не оценят риск пока ты не запустишь эксплоит, который взломает их приложение и уведет аккаунт. В связи с этим я сделал демо приложение на React + NodeJS и написал 6 эксплоитов, чтобы показать, как различные мелкие недочеты приводят к серьезным уязвимостям.

Все случаи мы находили на реальных проектах и все эксплоты настоящие. На KharkivJS были люди, которые думали, что это все фейк, теперь я показываю код эксплоитов 😁

ВИДЕО С JSFest 2019 (доклад попал в Top-3 лучших докладов конфы) - https://www.youtube.com/watch?v=tBXZRC1f34E
Не сильно грузящее видео, чтобы скрасить времяпровождение во время карантина)
источник
2020 April 22
Жабаскрипт
NodeJS бойлерплейт: какие платформы поддерживать?

Мы готовим наш бойлерплейт к релизу. И тут возник вопрос по поддержке операционных систем. Решили, что самый правильный способ - это спросить у комьюнити 🙂.   Опрос: В основном я пишу бэкенд на NodeJS в:
Анонимный опрос
33%
Linux
43%
MacOS
4%
Windows с WSL (Windows Subsystem for Linux)
9%
Windows без WSL
11%
Я не пишу бэкенд на NodeJS
Проголосовало: 912
источник
2020 April 27
Жабаскрипт
Мой доклад занял первое место по результатам голосования (если кто осилит посмотреть, получилось 80 минут, буду рад любому фидбеку):
источник
Жабаскрипт
Переслано от Tetiana Bukhanova
Вже готовий топ-3 доповідей онлайн-конференції JavaScript fwdays'20 від 21 березня за голосуванням учасників 🤩

1️⃣ @koorchik "Effective NodeJS Application Development"

2️⃣ Олександр Мостовенко " 'Devide et impera' with GraphQL and SSR"

3️⃣ @tshemsedinov "Web Locks API in Node.js and browser"

Посилання на доповіді:
👉 https://www.youtube.com/playlist?list=PLPcgQFk9n9y9jbWCnublMA1D2qbJPLukf
источник
2020 May 03
Жабаскрипт
Зарелизил Confme 1.0.0 - библиотека для работы со сложными конфигамии в NodeJS приложениях с одновременной поддержкой идей "Twelve-Factor App".  

Решил, что библиотека прошла хорошую апробацию и имеет правло получить v1 🙂 Ну, и добавилась поддержка JSON5.

Про причины создания писал тут:
✅ Часть 1 - https://t.me/jabascript/34
✅ Часть 2 - https://t.me/jabascript/35

Ссылка на NPM-пакет - https://www.npmjs.com/package/confme
Ссылка на Github - https://github.com/koorchik/node-confme
источник
2020 May 05
Жабаскрипт
http://sergeyteplyakov.blogspot.com/2014/06/is-tdd-dead-5.html

Очень классная статья. Помню, как я ждал каждый раз новой части "TDD is Dead". Это был крутой наброс от DHH)
источник
2020 May 30
Жабаскрипт
Небольшой апдейт для тех, кто спрашивал про наш бойлерплейт для NodeJS.
Завтра в 8 утра (EEST) у меня доклад на Node.js Global Summit (https://geekle.us/). Это будет доклад про эффективную разработку NodeJS приложений ( https://t.me/jabascript/78 ), но в этот раз на английском. Ну, и все готово для опенсорса нашего бойлерплейта. Планирую сделать это во время доклада. Уже все на Github, осталось только щелкнуть свитчер в настройках 🙂
Сделаю еще отдельный анонс
источник
Жабаскрипт
Сделать онлайн трансляцию (или Zoom митинг) типа "Ask Me Anything"? Где я смогу ответить на любые вопросы и по бойлерплейту да и вообще сможете задать любые вопросы.
Анонимный опрос
68%
Делай
32%
Не уверен, что есть в этом необходимость
Проголосовало: 294
источник
2020 May 31
Жабаскрипт
WebbyLab's Starter App for NodeJS opensourced
Наконец-то это произошло 🥳🥳🥳

Я уже сделал много докладов про разработку на NodeJS и важная часть этого процесса - это Starter App. Уже второй год обещаю выложить в open source, но постоянно какие-то улучшения в нем. Да, там есть еще список улучшений, который мы планируем реализовать, но все уже доступно на Github.  

Что есть в Starter App:
✅ Все идеи, которые из моего доклада "Рабочая архитектура Веб-приложений"
✅ Строго определены границы слоев (controllers, use cases, domain model и тд)
✅ Следует идеям 12 факторов
✅ EcmaScript модули и последние фичи JS без транспайлинга.
✅ ES6 классы для Sequalize
✅ Поддержка REST API и JSON RPC (WS), будет еще GraphQL
✅ Continuation Local Storage для транзакций
✅ Continuation Local Storage для логов
✅ Security best practices
✅ Поддержка Docker
✅ Покрыто все тестами (включая тесты, которые зависят от базы данных)
✅ Code Coverage через c8
✅ Поддержка S3 из коробки, даже для локальной разработки
✅ Поддержка SMTP (с моками для разработки и для тестирования)
✅ Работает в Linux, Mac, Windows
✅ Автоматическая генерация CRUD (alpha)
✅ Параноидальные ESLint правила для статического анализа (пишем даже свои правила)

ССЫЛКА НА РЕПОЗИТАРИЙ - https://github.com/WebbyLab/webbylab-starter-app-for-nodejs

Что дальше? Огромное количество идей заложено в этот стартер апп. Планирую 15-30 видео по 2-10 минут про фичи и подходы, которые там используются (практически целый курс).
источник
2020 June 04
Жабаскрипт
Ask Me Anything  

Всем привет.
В эту пятницу проведу онлайн трансляцию в формате "Ask Me Anything" 🙂
Расскажу про Starter App для NodeJS, про будущее канала. Ну, и готовьте любые вопросы. Проводить буду в Zoom, у меня там лимит в 100 человек, но можно будет пообщаться голосом, возможно кто-то захочет что-то дополнить :).

ВРЕМЯ НАЧАЛА: 5-го июня 20:00 (время по Киеву)
ССЫЛКА ДЛЯ ПОДКЛЮЧЕНИЯ: https://us02web.zoom.us/j/87088390782
источник
2020 June 14
Жабаскрипт
eslint-plugin-more 1.0

Мне часто задают вопрос по поводу TypeScript. Я вижу смысл в использвания TypeScript далеко не во всех проектах.
Основная идея, что нельзя сравнивать JS vs TypeScript, нужно сравнивать JS+Tooling+Tests vs TypeScript+Tooling+Tests и тут  TypeScript теряет множество своих преимуществ. Писал тут - https://t.me/jabascript/19

Это не значит, что я против статического анализа, скорее наоборот. Мы в WebbyLab используем строгие правила по статическому анализу. Мы используем eslint и множество плагинов к нему. Также, если мы видим повторяющиеся ошибки во время ревью, то мы стараемся эту проверку автоматизировать. Так когда-то появился eslint-plugin-more.

Сегодня зарелизили версию 1.0 с двумя новыми правилами (в сумме уже 12):
more/no-hardcoded-password - проверяет, что вы не захардкодили пароль в вашу кодовую базу.
more/no-hardcoded-configuration-data - проверяет, что в ваших исходниках нет конфигурационных данных, типа ip-адресов, доменов, UUID, токенов.

Возможно этот плагин будет полезен и в твоем проекте :)

ССЫЛКА НА ПЛАГИН - https://github.com/WebbyLab/eslint-plugin-more/
источник
2020 July 15
Жабаскрипт
jabascript
Ask Me Anything  

Всем привет.
В эту пятницу проведу онлайн трансляцию в формате "Ask Me Anything" 🙂
Расскажу про Starter App для NodeJS, про будущее канала. Ну, и готовьте любые вопросы. Проводить буду в Zoom, у меня там лимит в 100 человек, но можно будет пообщаться голосом, возможно кто-то захочет что-то дополнить :).

ВРЕМЯ НАЧАЛА: 5-го июня 20:00 (время по Киеву)
ССЫЛКА ДЛЯ ПОДКЛЮЧЕНИЯ: https://us02web.zoom.us/j/87088390782
Ask Me Anything #1 Видеозапись на Youtube

Наконец-то залил видеозапись на ютуб. Спасибо всем за вопросы и замечания. Было круто! :)

https://youtu.be/g2_JWxWNigE
источник
2020 July 29
Жабаскрипт
Ребята, завтра провожу онлайн доклад "How to create a high performance Excel engine in JavaScript"

👉Завтра проходит JavaScript Odessa #TechTalks. Расскажу о том, как мы создавали собственный движок электронных таблиц, совместимый с MS Excel, который позволил им запустить любую модель Excel без Excel. Расскажу об архитектуре, алгоритмах, оптимизации производительности JavaScript.

Было уже обсуждение и небольшое демо движка в чате канала. Если у тебя были сомнения, что такое возможно сделать на JS, то регистрируйся на доклад 🙂

🔹Где: онлайн
🔹Когда: 30.07.2020 в 19:00
🔹Язык доклада: русский
🔹Регистрация обязательна
🔹Вход: donation.
👉 Присоединяйся ➡️ https://bit.ly/2AN6pv1 на ФБ: https://www.facebook.com/events/933132910446896/
Google Docs
How to create a high performance Excel engine in JavaScript | JavaScript Odessa #TechTalks 30/07/2020 – Online Streaming
When: 30.07.2020 at 19:00
Level: Middle +
Speaker: Viktor Turskyi
Language: Russian

У вас есть сложные математические модели (миллионы ячеек, сотни тысяч формул) в Excel. И вам необходимо запустить все это с мобильного и браузера без экселя. Виктор Турский расскажет, как он со своей командой создали собственный движок электронных таблиц, совместимый с MS Excel, который позволяет нам запускать любую модель Excel без Excel. С Виктором мы поговорим об архитектуре, алгоритмах, оптимизации производительности JavaScript.


О спикере:
🔸Виктор Турский – CEO и Principal Software Architect в WebbyLab. Успешно реализовано более 60 проектов (включая проекты для 5 компаний из списка Fortune 500). Более 15 лет опыта в области информационных технологий. Он начинал как специалист по информационной безопасности, а затем переключился на разработку программного обеспечения. Знание JavaScript, Perl, Python, PHP, C, Bash programming languages.
Software development: complex Web applications, network applications, ChatBots, AI applications…
источник
2020 August 17
Жабаскрипт
👉 20-го августа мой первый воркшоп на тему "Эффективная разработка NodeJS приложений".
Первый раз в жизни провожу онлайн воркшоп (уже переживаю). Организовывают это все ребята из OdessaJS (https://odessajs.org/). 20-го августа онлайн воркшоп, а 29-го августа буду делать доклад на эту же тему непосредственно в Одессе. Буду рад встрече и онлайн на воркшопе и в Одессе на конференции 🙂.

В этот раз буду не только рассказывать, но и попробуем совместно написать реальное приложение. При разработке софта, вы должны четко понимать куда нужно поместить тот или иной кусок кода и понимать почему он именно там, а не где-то в другом месте. Команда разработки должны быть максимально эффективна с первых дней, а не через месяц после старта. Проект должен подниматься за минуты, а не за часы/дни. Деплоймент и тестирования должны быть простыми.  Попробуем пройти весь путь от старта проекта до деплоймента за 2 часа 😎

🔹Где: онлайн
🔹Когда: 20.08.2020 в 18:00-20:00 (EEST)
🔹Язык воркшопа: русский
🔹Регистрация обязательна

ССЫЛКА ДЛЯ РЕГИСТРАЦИИ: https://docs.google.com/forms/d/e/1FAIpQLSfIoi6oz86gcT3TCeBmxD-PAih9jBxCFLCvkaI6CF0RAVGI9A/viewform
источник
2020 September 01
Жабаскрипт
jabascript
Эффективная разработка NodeJS приложений

Не так давно я делал доклад на fwdays на тему "Эффективная разработка NodeJS приложений." Это был мой первый онлайн доклад. Впечатления конечно смешанные. Тяжело, когда не видишь аудитории, но зато удобно было показывать код 🙂

Изначально я хотел поделиться идеями и концепциями, к которым нам в WebbyLab удалось прийти за годы разработки на NodeJS. Я наивно полагал, что смогу уместить это в один доклад, но по факту контента оказалось часов на 8. В резульатате, я взял только часть, но все равно вместо 40 минут доклад занял 90 минут. Хорошо, что мой доклад был последним 😁

В докладе:
✅ Прошелся еще раз по архитектуре.
✅ Показал пример чат-бота на этой же архитектуре.
✅ Рассказал про Sequelize  - ряд вещей, которых нет в документации. Как использовать ES6 классы, как работать с конфигами (поскольку примеры из доки противоречат правилам "12 factor app"). Немного про транзакции.
✅ Затронул конфиги для фронтенда.
✅ Прошелся по докеризации и основным вопросам, которые часто возникают у разработчиков.

ЗАПИСЬ ДОКЛАДА:  https://www.youtube.com/watch?v=g0I2dNwK1BE

PS: Серия постов по 12-ти факторам на подходе. Уже написал половнину. Будет по 1-му посту в день :)
Для тех, кто хотел полную версию доклада на ОдессаЖС

Вернулся с ОдессаЖС. В этом году было много сильных спикеров и учасников, удалось классно пообщаться на тех.корнерах (отдельное спасибо за это) и на автепати, отличная атмосфера, хорошая организация, локация на свежем воздухе возле моря. Единственное, мне удалось донести только 30% контента во время доклада. В любом случае выбирал самое полезное, но для тех, кто подписался на канал после доклада и хочет посмотеть полную версию есть видео запись на полтора часа.

Ребята, кто подписался на канал на ОдессаЖС, можете посмотреть полную версию с FW Days.
Также я проводил на прошлой неделе воркшоп на 3 часа, там более глубокое погружение в код (в публичном доступе нет,  но организаторы дают доступ всем, кто зарегистрировался по ссылке) .
источник
2020 September 04
Жабаскрипт
How to build notification service for a scalable multi-tenant application using RabbitMQ and NodeJS

Вышел новый пост в нашем блоге (давно уже не было 🙂). Как всегда это реальный опыт, которым коллеги из WebbyLab хотят поделиться с комьюнити.

Большинство NodeJS разработчиков допускают одну и ту же ошибку. Они считают, что будет только один процесс их приложения и это особенно больно, когда используются веб-сокеты.

Допустим нужно сделать чат. Реализация чаще всего такая: бэкенд ждет пока подключаться несколько пользователей через веб-сокеты и держит в памяти соединения. Когда один пользователь пишет другому, то бэкенд получает сообщение, сохраняет его в базу и отправляет его другому пользователю через другое соединение, если тот подключен. Локально все работает, но в продакшене работать не будет. Почему? Потому, что вам нужно масштабироваться. И у вас либо будет запущенно несколько docker контейнеров вашего приложения, либо pm2 в режиме cluster.  В итоге один пользователь может подключиться через веб-сокеты к одному процессу, а второй к другому.

Как с этим быть? Нужен message broker. И это только один из сценариев, когда может понадобится message broker. У нас стояла немного другая задача, но проблематика похожая - масшабирование и уведомления.

Пост должен быть полезным, если вы решаете схожие задачи)

ССЫЛКА НА ПОСТ - https://blog.webbylab.com/notificator-using-rabbitmq-and-nodejs/

👉 Сейчас в Киеве мы активно набираем разработчиков различного уровня, включая младших разработчиков, которые не боятся учиться. За вакансиями можно следить в отдельном канале. Подписывайтесь - http://t.me/webbylab
источник
2020 September 17
Жабаскрипт
Онлайн конференция JavaScript fwdays'20 Аutumn

Началась "JavaScript fwdays'20 Аutumn" https://fwdays.com/event/javascript-fwdays-2020 - онлайн конфереция про JavaScript. Много интересных докладов. К примеру, я очень хочу послушать доклад Саши Соловьёва "Выкидываем ReactJS" 🙂

Архитектурный ком
Уже в этот понедельник я и Андрей Мелихов участвовали в 2х-часовом онлайн обсуждении про архитектуру. Получилось классно! Видео уже доступно для участников конференции (если когда-то будет в общем доступе, то тоже закину сюда в канал).

Docker для JavaScript разработчиков
В следующий четверг делаю deep dive про докер. В докладе пройдусь по следующим моментам:
🔹Как устроен Docker?
🔹Безопасен ли Docker?
🔹Существую ли контейнеры в Linux?
🔹Как насчет использования shared libraries в докер контейнерах?
🔹Откуда берутся зомби в контейнерах 🧟‍♂️⚰️?
🔹Как минимизировать размер Docker образов?
🔹Как использовать Docker в ежедневной разработке?

Промокод для подписчиков канал
ПРОМОКОД - jabascript (скидка 15%)

Бесплатный билет
У меня есть один бесплатный билет. Решил разыграть его среди подписчиков. Чтоб принять участие  достаточно
1. Порекомендовать канал друзьям/подписчикам в соц. сетях, в другом канале, в любом чате (где посчитаете уместным).
2. Написать "+" в этом чате https://t.me/jabascript_fwdays
3. В эту субботу рандом определит победителя
источник
2020 September 18
Жабаскрипт
Лучший инженерный подкаст

Хочу сделать доклад про то, как стать хорошим инженером. И один из пунктов - нужно смотреть за рамки. Вы можете писать только на JS, но должны смотреть вокруг. Мне нравится концепция T-Shaped people. Я часто пишу про инженерию, а не только про чистый JS. Сегодня хочу порекомендовать мой любый подкаст не про JS, но для инженеров - "Software Engineering Daily".  Я переслушал много различных технических подкастов, но этот самый крутой.

ССЫЛКА НА ПОДКАСТ - https://softwareengineeringdaily.com/category/all-episodes/exclusive-content/Podcast/
источник