Автор разбирает, как работает продвинутая reCAPTCHA Enterprise, зачем она нужна сайтам и почему автоматизаторам она как кость в горле
Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
Рассказываю, как с помощью Google Stitch за 30 секунд получил готовый дизайн приложения, а потом с Gemini за пару часов превратил его в работающий сервис с голосовым вводом
Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
Автор разбирает три типовых задачи с собесов для JS-мидлов: про hoisting, ловушки работы с объектами и связные списки. Много edge-кейсов и проверка, не на автомате ли ты всё это пишешь
Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4❤1
В этой статье рассмотрим, почему безобидная строчка await fetch() неожиданно превращается в тормоз, где именно она зарывает драгоценные миллисекунды — и что можно сделать с этим.
Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7
Напишите сервер на Node.js, который обрабатывает POST-запрос и парсит JSON-тело без использования фреймворков и внешних зависимостей. Это полезно для понимания низкоуровневой работы с HTTP-запросами.
Решение задачи
const http = require('http');
const server = http.createServer((req, res) => {
if (req.method === 'POST' && req.url === '/data') {
let body = '';
// Сбор данных из потока
req.on('data', chunk => {
body += chunk;
});
// После завершения получения данных
req.on('end', () => {
try {
const parsedData = JSON.parse(body);
console.log('Полученные данные:', parsedData);
res.writeHead(200, { 'Content-Type': 'application/json' });
res.end(JSON.stringify({ message: 'Данные получены успешно' }));
} catch (err) {
res.writeHead(400, { 'Content-Type': 'application/json' });
res.end(JSON.stringify({ error: 'Невалидный JSON' }));
}
});
} else {
res.writeHead(404, { 'Content-Type': 'text/plain' });
res.end('Not Found');
}
});
server.listen(3000, () => {
console.log('Сервер запущен на https://localhost:3000');
});
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10
Node.js крут не из-за JS, а потому что умеет асинхронность без Web API. В статье — как libuv, цикл событий и многослойная магия делают это возможным. Теперь станет понятно, что за фазы.
Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3❤1
Автор исследует, почему стандартный Date в JS — боль, и как новый API Temporal спасает от хаоса со временем, часовыми поясами и форматами. Всё по делу, с примерами и выводами.
Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
Автор вдохновился CSS Diner и спустя три года решил повторить механику — только с новой темой и на React. Рассказывает, как из идеи в голове вырос пет-проект.
Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥2
Если ты не можешь быстро найти нужный кусок кода, он как будто и не существует.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2
Начали с простой правки в чате, а выкрутились на Backend Driven UI с конструктором сценариев. Рассказываю, как случайный кейс стал драйвером системной прокачки всего приложения.
Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2😁2❤1👎1
path.resolve()
в Node.js и зачем оно используется?path.resolve()
— это метод модуля path
в Node.js, который возвращает абсолютный путь, объединяя переданные сегменты пути. Он полезен для построения пути к файлам и директориям независимо от текущей рабочей директории.const path = require('path');
// Построение абсолютного пути
const fullPath = path.resolve('folder', 'subfolder', 'file.txt');
console.log(fullPath); // Например: /Users/username/project/folder/subfolder/file.txt
🗣️ В этом примере path.resolve() объединяет сегменты пути и возвращает абсолютный путь к файлу. Это помогает избежать проблем с относительными путями и улучшает кросс-платформенность приложений.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
Собрал мультиязычную файловую CMS с SSR и GitHub Actions, но вручную переводить устал. Подключил ИИ — не как кодер-маг, а как тиммейт. Делюсь, что из этого вышло и как всё устроено.
Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2
• Как разработчик вышел на $400 000/мес на AI-сервисе для написания эссе
• Переводим 50 приложений на Module Federation и ничего не ломаем
• Как мы создали микросервисное приложение для анализа вакансий с hh.ru: Docker, Kafka, Elasticsearch и ещё немного магии
• Как мы мигрируем с JQuery на React
Please open Telegram to view this post
VIEW IN TELEGRAM
Рассказал, как отчаяние, Яндекс, Google и капля безумия привели меня к самодельной вращающейся ручке (кнобу), которую не нашёл в туториалах. Сам в шоке, но теперь она у меня есть.
Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
Реализуйте функцию
fetchWithCache(url, ttl)
, которая делает HTTP-запрос по заданному URL (используя https
), и кеширует результат в файл.Если при повторном вызове с тем же URL кеш актуален (время жизни не истекло), функция должна вернуть данные из файла, не обращаясь к сети.
Поведение:
• Результат сохраняется в файл с названием, основанным на URL (можно использовать хеш).
• TTL (time to live) указывается в миллисекундах.
• Если кеш устарел или отсутствует, функция делает реальный HTTP-запрос и обновляет файл.
Решение задачи
const https = require('https');
const fs = require('fs');
const path = require('path');
const crypto = require('crypto');
function fetchWithCache(url, ttl) {
const cacheDir = path.resolve(__dirname, 'cache');
const hash = crypto.createHash('md5').update(url).digest('hex');
const cacheFile = path.join(cacheDir, `${hash}.json`);
if (!fs.existsSync(cacheDir)) {
fs.mkdirSync(cacheDir);
}
return new Promise((resolve, reject) => {
if (fs.existsSync(cacheFile)) {
const { mtimeMs } = fs.statSync(cacheFile);
const now =Date.now ();
if (now - mtimeMs < ttl) {
const cached = fs.readFileSync(cacheFile, 'utf-8');
return resolve(JSON.parse(cached));
}
}
https.get(url, res => {
let data = '';
res.on('data', chunk => data += chunk);
res.on('end', () => {
fs.writeFileSync(cacheFile, data, 'utf-8');
resolve(JSON.parse(data));
});
}).on('error', reject);
});
}
// Пример использования:
fetchWithCache('https://jsonplaceholder.typicode.com/todos/1 ', 5000)
.then(data => console.log(data))
.catch(err => console.error(err));
Please open Telegram to view this post
VIEW IN TELEGRAM
❤6👍1👎1
Чтобы выделить "победителя" среди методов глубокого клонирования в JavaScript, необходимо протестировать каждый из них. Предлагаем результаты серии модульных тестов.
Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
Покажу, как за пару шагов подключить Node.js к Pyroscope, настроить профилирование и без Grafana увидеть, где зарываются тормоза в коде.
Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
Проблемный код, даже если он более или менее работает, требует больших затрат на поддержку. Отточить навыки создания чистого кода, хорошо читаемого и легко поддерживаемого, помогут 8 простых советов.
Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2👎2👍1
Показываю, как быстро втащить тесты доступности в проект на Cypress с axe-core и TypeScript. Проверим контраст, aria-label, роли и alt, чтобы сделать интерфейс удобным не только для здоровяков.
Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3
На входе — обычный push. На выходе — коммит, улучшенный с помощью LLM, сохранённый в векторной базе, доступный для поиска и семантического анализа. Пишем простой MCP-сервер для трекинга изменений ваших проектов.
Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM