Size: a a a

NodeUA - JavaScript and Node.js in Ukraine

2020 June 11

DK

Denys Kobzar in NodeUA - JavaScript and Node.js in Ukraine
Dmytro Drachov
А ты не знаешь где был чейндж?
В ноде? в libuv? или нода проапдейтила версию v8 у себя.

Я люблю почитать статейки, но как показивает практика люди - лгут, код - нет=)
Я не знаю наверняка, но думаю, что libuv, потому что это как раз его забота
V8 и там и там , а вот webAPI vs libuv , это разное , что отвечает за event loop
источник
2020 June 12

(

( . ) ( . ) in NodeUA - JavaScript and Node.js in Ukraine
@tshemsedinov пытаюсь зарегаться на https://www.meetup.com/ru-RU/NodeUA/events/269049581/
и чтото идет не так, сайт не работает.
источник

TS

Timur Shemsedinov in NodeUA - JavaScript and Node.js in Ukraine
( . ) ( . )
@tshemsedinov пытаюсь зарегаться на https://www.meetup.com/ru-RU/NodeUA/events/269049581/
и чтото идет не так, сайт не работает.
Что именно не работает? У меня все работает
источник

(

( . ) ( . ) in NodeUA - JavaScript and Node.js in Ukraine
Timur Shemsedinov
Что именно не работает? У меня все работает
посетить-> логин -> добавьте фото, добавляю, жму use this photo и ничего не происходит
источник

TS

Timur Shemsedinov in NodeUA - JavaScript and Node.js in Ukraine
Там есть ссылка на гугл-форму, нужно именно в ней регистрироваться
источник

NK

ID:0 in NodeUA - JavaScript and Node.js in Ukraine
ШКОЛА МЕТАРХИИ: Node.js в 2020

2 полных дня интенсивного обучения через практику в хорошем пансионате под Киевом плюс неформальное общение, живые обсуждения и разбор практических внедрений Node.js, ответы на вопросы и советы в решении проблем Ваших проектов.

Когда: с 09:00 субботы 11 июля до 20:00 воскресенья 12 июля 2020 г.

Условия проживания: комфортные двухместные номера блочного типа с балконами, трехразовое питание, чистый весенний воздух, тишина санаторной зоны пригорода Киева, вековые сосны и красивый ухоженный парк входят в стоимость билета.

Цена: 5000 грн.

Регистрация: https://forms.gle/yA2xEW731TxAZNH6A

ПРОГРАММА ШКОЛЫ
Автор: Тимур Шемсединов

1. Обзор платформы Node.js
* Новое в Node.js за последние два года
* Состояние платформы в 2020 и готовность к серьезным проектам
* Обзор и анализ встроенного API Node.js
* Отладка и профилирование приложений
* Процессы и потоки, IPC, Atomics, SharedArrayBuffer
* Изоляция контекстов: worker_threads, vm.Script, песочницы
* Streams, файловая система, I/O, Buffers

2. Разработка высокопроизводительных APIs на Node.js
* Сетевые протоколы: HTTP(S), TCP, TLS, UDP, WebSocket, SSE, QUIC
* Кластеризация, роутинг и балансировка, IP sticky, надежность
* HTTP сессии, cookies, отдача статики и потоков
* Как не привязывать API к фреймворку и транспорту
* Контексты запросов и безопасность исполнения
* Использование WebSocket для интерактивных приложений
* Изменение кода и статических файлов без перезапуска

3. Архитектура серверов на Node.js
* Структура проектов: модули, слои, зависимости
* Применение принципов и паттернов GRASP, SOLID, GoF
* Распределенные системы и межпроцессовая коммуникация
* Инверсия управления и внедрение зависимостей
* Высоконагруженные приложения, балансировка нагрузки
* Интроспекция, рефлексия и скаффолдинг
* Мультипарадигменное и метапрограммирование

4. Асинхронное программирование
* Контракт callback-last error-first
* Event-loop, таймеры, EventEmitter и AsyncEmitter
* Контракт Thenable, promises, cancelable, promise с таймаутами
* Обработка ошибок, unhandled, stack trace, async hooks
* Async/await, асинхронные функции, методы и конструкторы
* Адаптеры асинхронности: promisify, callbackify, asyncify
* Async генераторы и неблокирующие асинхронные итераторы
* Композиция асинхронных функций, коллекторы данных
* Асинхронная очередь, Future, Deferred, Observer, RxJS

5. Параллельное программирование Node.js
* Обзор проблем: состояние гонки (race condition), data race
* Data race в асинхронном программировании
* Примитивы: semaphore, mutex, spin locks, etc.
* Реализация Web Locks API
* Разделяемая память in Node.js
* Модель акторов и другие способы

6. Базы данных
* Слой доступа к данным
* Работа с базами данных на примере PostgreSQL
* Синтаксис SQL, построители запросов, курсоры, транзакции
* CQS, CQRS, Event Sourcing
* Безопасность: SQL-инъекции и другие проблемы

7. Node.js паттерны и антипаттерны
* Утечки памяти и других ресурсов
* Graceful Shutdown в Node.js
* Безопасность в Node.js: DoS, XSS, Path traversal, SQLI, CSRF и др.
* Serverless облака и FaaS на Node.js
* Code review, рефакторинг и оптимизация
* Unit-тесты, нагрузочные, интеграционные и системные тесты

Ссылки на автора:
https://github.com/tshemsedinov
https://youtube.com/TimurShemsedinov

Группы митапов сообщества Метархия:
https://meetup.com/HowProgrammingWorks
https://meetup.com/NodeUA

Телеграм-каналы:
https://t.me/HowProgrammingWorks
https://t.me/NodeUA

Регистрация: https://forms.gle/yA2xEW731TxAZNH6A
источник

1

1 in NodeUA - JavaScript and Node.js in Ukraine
всем прив. Тут идет проверка наличия файлов при гет запросе. Вторая проверка(if(!bool){  fs.access(__dirname+"/public/"+url, fs.constants.F_OK, function(err){  bool= err ? false : true;  })  }) должна выдать true, т.к файлы там есть , но почему-то выдает false
https://codepen.io/semen651651/pen/QWyNxjE?editors=0010 Помогите пож кто знает
источник

M

Mehannoying in NodeUA - JavaScript and Node.js in Ukraine
У вас асинхронно выполняются функции.
источник

M

Mehannoying in NodeUA - JavaScript and Node.js in Ukraine
К моменту проверки, переменная bool все ещё будет false;
источник

M

Mehannoying in NodeUA - JavaScript and Node.js in Ukraine
Либо вам нужно синхронно выполнять функции, либо в коллбек первой функции переместить вторую проверку.
источник

1

1 in NodeUA - JavaScript and Node.js in Ukraine
Mehannoying
Либо вам нужно синхронно выполнять функции, либо в коллбек первой функции переместить вторую проверку.
https://codepen.io/semen651651/pen/QWyNxjE так тоже не работает
источник

M

Mehannoying in NodeUA - JavaScript and Node.js in Ukraine
1
https://codepen.io/semen651651/pen/QWyNxjE так тоже не работает
А можно узнать, прежде чем, я посмотрю, для чего вам первая проверка? Она будет всегда возвращать false, так как там контактенация пути некорректная.
источник

1

1 in NodeUA - JavaScript and Node.js in Ukraine
Mehannoying
А можно узнать, прежде чем, я посмотрю, для чего вам первая проверка? Она будет всегда возвращать false, так как там контактенация пути некорректная.
почему не правильная ? __dirname+url
я хочу чтоб сначала проверял в текущей директории, а потом в паблик
источник

M

Mehannoying in NodeUA - JavaScript and Node.js in Ukraine
Если урл начинается со слеша, то правильная.
источник

1

1 in NodeUA - JavaScript and Node.js in Ukraine
там все правильно , url передается уже при вызове функции
источник

Г

Глеб in NodeUA - JavaScript and Node.js in Ukraine
не конкатенируйте строки таким образом, загуглите path.join(arg1, arg2[, arg3, …])
источник

Г

Глеб in NodeUA - JavaScript and Node.js in Ukraine
и если вы только начинаете разбираться с асинхронным программированием, рекомендую покрыть приведенный в кодпене пример кода тестами. Помимо просмотра обучающих видео, такая практика даст куда более ясное понимание, что и как работает
источник

M

Mehannoying in NodeUA - JavaScript and Node.js in Ukraine
1
https://codepen.io/semen651651/pen/QWyNxjE так тоже не работает
function isAccess(url) {
 return new Promise(resolve => {
   fs.access(__dirname+url, fs.constants.F_OK, function(err) {
     if (err) return resolve(false)
     fs.access(__dirname+"/public/"+url, fs.constants.F_OK, function(error) {
       error ? resolve(false) : resolve(true);
     });            
   });
 }).then(exists => {
   if(!exists) {
     res.writeHead(404, {'Content-type':'text/plain; charset=utf-8'});
     res.end(req.url+" 404 Страница не найдена ")
   }
 });
}
источник

1

1 in NodeUA - JavaScript and Node.js in Ukraine
не могу понять почему елси проверку делать один раз , то все работает как надо. а если делать два раза с двумя разными папками , то все ломается
источник

1

1 in NodeUA - JavaScript and Node.js in Ukraine
Mehannoying
function isAccess(url) {
 return new Promise(resolve => {
   fs.access(__dirname+url, fs.constants.F_OK, function(err) {
     if (err) return resolve(false)
     fs.access(__dirname+"/public/"+url, fs.constants.F_OK, function(error) {
       error ? resolve(false) : resolve(true);
     });            
   });
 }).then(exists => {
   if(!exists) {
     res.writeHead(404, {'Content-type':'text/plain; charset=utf-8'});
     res.end(req.url+" 404 Страница не найдена ")
   }
 });
}
спасибо, сейчас попробую
источник