
- Главная
- Каталог
- Интернет технологии
- Backend Ready | IT
Backend Ready | IT
Авторский канал по Backend разработке. Новости, ресурсы, гайды и шпаргалки.
Статистика канала
path — правильная работа с путями к файлам**
Склеивать пути вручную через / или \ — плохая практика, потому что в Windows и Linux разделители разные. Модуль path делает это автоматически, учитывая особенности операционной системы, на которой запущен твой код.
path — навигация по файловой системе
— path.join()
— path.resolve()
— path.basename()
— path.extname()
— path.parse()
— path.join() — объединяет все переданные сегменты пути в одну строку, используя разделитель текущей ОС. Он также чистит путь от лишних точек и двойных слешей.
const path = require('path');
const fullPath = path.join('users', 'admin', 'config.json');
// Windows: users\admin\config.json
// Linux: users/admin/config.json
{}
— path.resolve() — превращает последовательность путей в абсолютный путь. Он всегда стартует от корня проекта, что гарантирует точность при поиске файлов.
console.log(path.resolve('images', 'logo.png'));
// Результат: /Users/dev/project/images/logo.png
{}
— path.basename() — возвращает только имя файла из длинного пути. Если вторым аргументом передать расширение, оно будет отрезано.
— path.extname() — достает только расширение файла. Удобно для фильтрации загрузок (например, разрешать только .jpg).
const file = 'static/uploads/photo.jpg';
console.log(path.basename(file)); // photo.jpg
console.log(path.extname(file)); // .jpg
{}
— path.parse() — разбирает путь на части и возвращает объект с корнем, папкой, полным именем, расширением и именем без расширения.
console.log(path.parse('/home/user/dir/file.txt'));
/* { root: '/', dir: '/home/user/dir', base: 'file.txt',
ext: '.txt', name: 'file' } */
{}
querystring — работаем с параметрами запросов**
Хотя класс URL умеет парсить параметры, модуль querystring остается незаменимым, когда нужно быстро превратить объект в строку для тела запроса или разобрать сырые данные, которые приходят в POST-запросе от старых HTML-форм.
querystring — парсинг и сборка запросов
— parse()
— stringify()
— escape()
— unescape()
— parse() — превращает строку параметров (то, что идет после знака ?) в обычный объект JavaScript.
const qs = require('querystring');
const query = 'user=admin&role=editor&active=true';
const parsed = qs.parse(query);
console.log(parsed.user); // admin
{}
— stringify() — делает обратную операцию: берет объект и собирает из него корректную строку параметров, которую можно подставить в URL.
const params = { search: 'node js', page: 5 };
const string = qs.stringify(params);
console.log(string); // search=node%20js&page=5
{}
— escape() / unescape() — низкоуровневые методы для работы со спецсимволами. Они заменяют пробелы, кавычки и кириллицу на безопасные коды (например, %20), чтобы сервер мог их прочитать.
— Отличие от URLSearchParams — querystring работает быстрее и поддерживает кастомные разделители. Если вместо & и = тебе нужно использовать ; и :, этот модуль справится в одну строку.
const custom = qs.parse('name:tom;age:20', ';', ':');
console.log(custom.name); // tom
{}
querystring — работаем с параметрами запросов**
Хотя класс URL умеет парсить параметры, модуль querystring остается незаменимым, когда нужно быстро превратить объект в строку для тела запроса или разобрать сырые данные, которые приходят в POST-запросе от старых HTML-форм.
querystring — парсинг и сборка запросов
— parse()
— stringify()
— escape()
— unescape()
— parse() — превращает строку параметров (то, что идет после знака ?) в обычный объект JavaScript.
const qs = require('querystring');
const query = 'user=admin&role=editor&active=true';
const parsed = qs.parse(query);
console.log(parsed.user); // admin
{}
— stringify() — делает обратную операцию: берет объект и собирает из него корректную строку параметров, которую можно подставить в URL.
const params = { search: 'node js', page: 5 };
const string = qs.stringify(params);
console.log(string); // search=node%20js&page=5
{}
— escape() / unescape() — низкоуровневые методы для работы со спецсимволами. Они заменяют пробелы, кавычки и кириллицу на безопасные коды (например, %20), чтобы сервер мог их прочитать.
— Отличие от URLSearchParams — querystring работает быстрее и поддерживает кастомные разделители. Если вместо & и = тебе нужно использовать ; и :, этот модуль справится в одну строку.
const custom = qs.parse('name:tom;age:20', ';', ':');
console.log(custom.name); // tom
{}
Permission denied, значит, пришло время разобраться, как работают права доступа и как ими управлять.
В этом посте:
— Разбираем магические цифры 777, 644 и 755.
— Учимся менять владельца файлов через chown.
— Настраиваем права на чтение, запись и запуск.
— Узнаем, как рекурсивно исправить доступ во всей папке.
---
Каждый файл в Linux имеет три группы прав: для Владельца (User), для Группы (Group) и для Всех остальных (Others). Для каждой группы можно разрешить или запретить три действия: r (read — чтение), w (write — запись) и x (execute — запуск).
Как читать цифровой код:
— 4 — чтение (read)
— 2 — запись (write)
— 1 — запуск (execute)
— 0 — нет прав
Складывая эти цифры, мы получаем нужный уровень доступа. Например, 4+2+1 = 7 (полные права), а 4+2 = 6 (чтение и запись).
Популярные комбинации:
— chmod 777 — «гуляй, кто хочешь». Все могут делать всё. Худший вариант для безопасности.
— chmod 644 — стандарт для файлов. Владелец пишет и читает, остальные только читают.
— chmod 755 — стандарт для папок и скриптов. Все могут зайти в папку или запустить файл, но менять его может только владелец.
Иногда проблема не в правах, а в том, что файл принадлежит не тому пользователю (например, root вместо вашего юзера). Чтобы сменить «хозяина», используется команда chown. Если нужно сменить и владельца, и группу сразу, пишем через двоеточие: sudo chown user:group filename.
Часто права нужно поправить не в одном файле, а во всей папке с вложенными проектами. Для этого используйте флаг -R (recursive). Но будьте осторожны: sudo chmod -R 777 / превратит вашу систему в решето за одну секунду.
Использование правильных прав — это не просто «чтобы работало», а защита вашего сервера от взлома. Скрипты должны иметь флаг +x только если вы собираетесь их запускать, а конфиги с паролями (вроде .env) должны быть закрыты от всех, кроме владельца.
Permission denied, значит, пришло время разобраться, как работают права доступа и как ими управлять.
В этом посте:
— Разбираем магические цифры 777, 644 и 755.
— Учимся менять владельца файлов через chown.
— Настраиваем права на чтение, запись и запуск.
— Узнаем, как рекурсивно исправить доступ во всей папке.
---
Каждый файл в Linux имеет три группы прав: для Владельца (User), для Группы (Group) и для Всех остальных (Others). Для каждой группы можно разрешить или запретить три действия: r (read — чтение), w (write — запись) и x (execute — запуск).
Как читать цифровой код:
— 4 — чтение (read)
— 2 — запись (write)
— 1 — запуск (execute)
— 0 — нет прав
Складывая эти цифры, мы получаем нужный уровень доступа. Например, 4+2+1 = 7 (полные права), а 4+2 = 6 (чтение и запись).
Популярные комбинации:
— chmod 777 — «гуляй, кто хочешь». Все могут делать всё. Худший вариант для безопасности.
— chmod 644 — стандарт для файлов. Владелец пишет и читает, остальные только читают.
— chmod 755 — стандарт для папок и скриптов. Все могут зайти в папку или запустить файл, но менять его может только владелец.
root вместо вашего юзера). Чтобы сменить «хозяина», используется команда chown. Если нужно сменить и владельца, и группу сразу, пишем через двоеточие: sudo chown user:group filename.
Часто права нужно поправить не в одном файле, а во всей папке с вложенными проектами. Для этого используйте флаг -R (recursive). Но будьте осторожны: sudo chmod -R 777 / превратит вашу систему в решето за одну секунду.
Использование правильных прав — это не просто «чтобы работало», а защита вашего сервера от взлома. Скрипты должны иметь флаг +x только если вы собираетесь их запускать, а конфиги с паролями (вроде .env) должны быть закрыты от всех, кроме владельца.url — безопасный парсинг и сборка ссылок**
Работа со строками через split или регулярные выражения — прямой путь к ошибкам и уязвимостям. В Node.js есть встроенный класс URL, который соответствует международным стандартам и автоматически обрабатывает спецсимволы.
url — разбор и валидация адресов
— new URL()
— url.searchParams
— url.pathname
— url.origin
— url.format()
— new URL() — создает объект, который разбивает строку на части: протокол, хост, порт, путь и параметры.
const myUrl = new URL('https://api.test.ru:8080/v1/user?id=10#hash');
console.log(myUrl.host); // api.test.ru:8080
console.log(myUrl.protocol); // https:
console.log(myUrl.hash); // #hash
{}
— searchParams — мощный инструмент для работы с GET-запросами. Позволяет легко добавлять, удалять или изменять параметры без ручного склеивания строк.
const link = new URL('https://shop.ru/search');
link.searchParams.append('sort', 'desc');
link.searchParams.set('page', '1');
console.log(link.href);
// https://shop.ru/search?sort=desc&page=1
{}
— pathname — возвращает только путь к ресурсу. Полезно для роутинга, чтобы отсечь домен и параметры поиска.
— origin — возвращает комбинацию протокола и хоста. Идеально для настройки CORS или проверки источника запроса.
const site = new URL('https://blog.js.org/posts/123');
console.log(site.origin); // https://blog.js.org
{}
— Безопасность — если передать в конструктор URL некорректную строку, он выдаст ошибку. Это отличный способ проверить, является ли строка валидной ссылкой, прежде чем сохранять её в базу.
dns — работаем с доменными именами напрямую
Когда мы делаем HTTP-запрос, Node.js сам разрешает домены, но иногда приложению нужно делать это вручную: проверить существование домена, получить его IP или узнать MX-записи почтового сервера.
dns — резолвинг и проверка сети**
— dns.resolve()
— dns.lookup()
— dns.reverse()
— dns.getServers()
— dns.resolve() — отправляет реальный запрос к DNS-серверам в сети. Позволяет узнать IP-адреса, привязанные к домену.
const dns = require('dns');
dns.resolve('google.com', (err, addresses) => {
console.log('IP адреса:', addresses);
});
// Результат: IP адреса: ['142.250.185.142', ...]
{}
— dns.lookup() — использует настройки операционной системы (например, файл hosts). Это быстрее, но не всегда дает актуальные данные из интернета.
dns.lookup('localhost', (err, address) => {
console.log('Адрес:', address);
});
// Результат: Адрес: 127.0.0.1
{}
— dns.reverse() — выполняет обратное преобразование: вы передаете IP-адрес, а модуль пытается найти имя хоста, которое ему соответствует.
— dns.resolveMx() — возвращает записи почтового обмена. Идеально для проверки, существует ли почтовый сервер у домена перед отправкой письма.
dns.resolveMx('github.com', (err, addresses) => {
console.log(addresses);
});
{}
— dns.getServers() — показывает список IP-адресов DNS-серверов, которые в данный момент использует твоя система для резолвинга.
Отзывы канала
всего 2 отзыва
- Добавлен: Сначала новые
- Добавлен: Сначала старые
- Оценка: По убыванию
- Оценка: По возрастанию
Каталог Телеграм-каналов для нативных размещений
Backend Ready | IT — это Telegam канал в категории «Интернет технологии», который предлагает эффективные форматы для размещения рекламных постов в Телеграмме. Количество подписчиков канала в 8.7K и качественный контент помогают брендам привлекать внимание аудитории и увеличивать охват. Рейтинг канала составляет 6.5, количество отзывов – 2, со средней оценкой 5.0.
Вы можете запустить рекламную кампанию через сервис Telega.in, выбрав удобный формат размещения. Платформа обеспечивает прозрачные условия сотрудничества и предоставляет детальную аналитику. Стоимость размещения составляет 559.44 ₽, а за 12 выполненных заявок канал зарекомендовал себя как надежный партнер для рекламы в TG. Размещайте интеграции уже сегодня и привлекайте новых клиентов вместе с Telega.in!
Вы снова сможете добавить каналы в корзину из каталога
Комментарий