Получи случайную криптовалюту за регистрацию!

Node.js Recipes

Логотип телеграм канала @node_recipes — Node.js Recipes N
Логотип телеграм канала @node_recipes — Node.js Recipes
Адрес канала: @node_recipes
Категории: Технологии
Язык: Русский
Количество подписчиков: 2.47K
Описание канала:

По буднях нотатки по #Nodejs розробці, по вихідним огляди конференцій та доповідей (с) @galkin_nikita
Співробітництво https://telegra.ph/node-recipes-01-19

Рейтинги и Отзывы

4.00

3 отзыва

Оценить канал node_recipes и оставить отзыв — могут только зарегестрированные пользователи. Все отзывы проходят модерацию.

5 звезд

2

4 звезд

0

3 звезд

0

2 звезд

1

1 звезд

0


Последние сообщения 34

2021-05-19 10:01:39 Какая связь у UUID и MD5?
#architecture

Вчера был опубликован types/node@14.17.0. Теперь typescript проекты могут использовать crypto.randomUUID, который возвращает 4-ую версию uuid. Отличный повод поговорить, что общего у MD5 и UUID.

MD5 это хэш файла и используется для проверки, что файл не был поврежден в ходе загрузки. UUID это случайный идентификатор вида 63f04799-4bc1-4101-be08-263306e7b6ae.

UUID имеет длину 128 бит и столь низкий шанс повтора, что его можно считать уникальным. Хеш MD5 тоже имеет длину 128 бит, но и не гарантирует уникальности, а только имеет низкую вероятность коллизии. Из-за наличия коллизий его часто критикуют, ведь он подвержен birthday-атаке.

На одном из проектов, с хранением видео файлов использовали MD5 для нахождения дубликатов и случайный UUID как первичный ключ в БД. То есть использовались два 128-ми битных ключа. Один хранился как uuid, второй как строка. Использование MD5 как UUID позволил сохранить структура данных такой же, но убрать информационную избыточность.

Вот пример кода:

export function md5_to_uuid(md5: string): string {
if (typeof md5 !== 'string') throw Error('md5 should be string');
if (!/^[a-f0-9]{32}$/.test(md5)) throw Error('Wrong md5 format');

return `${md5.substring(0, 8)}-${md5.substring(8, 12)}-${md5.substring(12, 16)}-${md5.substring(16, 20)}-${md5.substring(20)}`;
}

export function uuid_to_md5(uuid: string): string {
return uuid.replace(/-/g, '');
}

В завершение хочу сказать спасибо @Jek_Rock, за нахождение ошибок в первой версии рецепта.
606 viewsedited  07:01
Открыть/Комментировать
2021-05-18 19:02:36 Voice Chat #2, О тестирование, 20 Мая 21:00-22:00
#announcement #voice_chat

В этот четверг в гостях будет Хотемской Александр, независимый SDET контрактор с 10 летним опытом в автоматизации тестирования.

Обсудим такие вопросы:
Где граница обязаностей в работе разработчиков и тестировщиков? Кто отвечает за какие виды тестов?
Какие инструменты и для чего использовать?
Документация VS специкация. Кто и как должен ее вести?
Виды проектов и особенности их тестирования, подготовка данных для автотестов?
873 views16:02
Открыть/Комментировать
2021-05-18 10:01:15 Как понять запущен ли Node.js внутри Docker?
#nodejs_api #docker

Docker контейнеры созданы, чтобы запускать только один процесс. У этого процесса id всегда 1. Рекомендуемый запуск #nodejs:
ENTRYPOINT ["node", "src/index.js"]
Тогда на уровне кода легко проверить
const isDocker = process.pid === 1

Кроме айди текущего процесса (process.pid), у нас есть айди родительского процесса – process.ppid. Для стартового процесса он равен 0.

Если вы запускаете через npm run ..., то npm будет иметь pid=1 и являться родительским процессом для Node.js. Так делать не следует.

Возможные варианты использования:

При локальной разработке использовать человекочитаемые логи, а внутри Docker в формате json:
const pino = require('pino');
const logger = pino({ prettyPrint: process.pid !== 1 });
Требует pino-pretty.

Переходить в debug режим по нажатию ctrl+T.
if (process.pid !== 1) {
process.on('SIGINFO', () => {
require('inspector').open();
});
}
Это автоматизация для дебага запущенного процесса. Без нее сначала узнаем айди процесса через ctrl+T, а потом делаем kill -SIGUSR1
398 views07:01
Открыть/Комментировать
2021-05-17 10:00:11
В чем проектировать структуру базы данных?
#service #database

Как известно, исправлять ошибки на этапе проектирование проще всего. Поэтому делайте дизайн структуры базы данных.

Вот подборка онлайн сервисов с удобной визуализацией и кодогенераций. Все они платные, но бесплатного тарифа хватает для фича дизайна.
SqlDBM – лучший функционал, активно развивается. Легко переключается режим просмотра.
drawsql.app – Очень простой и приятный интерфейс. Бесплатный план отлично подойдет для проекта до 15 таблиц.
dbdiagram.io – есть свой DSL, так называемый Database Markup Language. К сожалению, проект не развивается уже год.

Альтернативы, про которые не стоит забывать:
Дизайнить в SQL с последующей визуализацией в DataGrip или его аналоге.
Бумага и карандаш
598 views07:00
Открыть/Комментировать
2021-05-16 10:00:51 10 Things I Regret About Node.js by Ryan Dahl 
#worth_seeing

Сегодня доклад, у которого полмиллиона просмотров. Это неудивительно, ведь докладчик создатель Node.js Ryan Dahl. Первая половина доклада анализ допущенных ошибок во время создания #nodejs, вторая – продвижение Deno.

Slides
555 viewsedited  07:00
Открыть/Комментировать
2021-05-15 12:01:20
Product 360: Payments by Wix 26-28 мая
#conference #freebies

26-28 мая | 18:00-20:00
Онлайн, бесплатно
Регистрация https://bit.ly/Wix-Product-360

Компания WIX входит в топ-10 брендов IT-работодателей Украины. Внутри компании классная инженерная культура. В конце месяца будет эвент, где можно будет к ней приобщиться.

Программа:
∙ 26 мая — Разработка продукта по правилам Wix: от проблем пользователей к их решению;
∙ 27 мая — Разработка многостороннего продукта в стремительно меняющейся среде;
∙ 28 мая — A/B-тестирование: ешь, тестируй, люби - и так по кругу!

#nodejs разработчикам особенно будет интересен второй день, 27 мая. Инженеры Wix расскажут как они одновременно поддерживают большие нагрузки и 10+ версий продукта.
338 views09:01
Открыть/Комментировать
2021-05-15 10:01:18 HTTP/3 by Daniel Stenberg
#worth_seeing

Даниэль Стенберг известен как создатель CURL. В своем докладе он рассказывает о том, что такое HTTP/3 и какие проблемы он решает.
http/3 explained
Slides
400 views07:01
Открыть/Комментировать
2021-05-14 10:01:26 Вышла Node.js 14.17
#nodejs_api

Вышло минорное обновление текущий LTS версии.
В нем добавлены:
Diagnostics channel, экспериментальный модуль портированый из 16-ой версии. Не годиться для коммерческой разработки. Может быть интересен для создателей библиотек.
AbortController, так же портированы из 16-ой версии. Требуют флага. Не буду повторяться.
crypto.randomUUID() добавляет нативную генерацию UUID:

const { randomUUID } = require('crypto');
console.log(randomUUID());
// 'aa7c91a1-f8fc-4339-b9db-f93fc7233429'

После этого обновления можно смело выбрасывать пакет uuid. Нативный вариант быстрее в 3 раза.
539 views07:01
Открыть/Комментировать
2021-05-13 22:14:30 "Что там на рынке?" с Алесей Кулаковой
#voice_chat
535 viewsedited  19:14
Открыть/Комментировать