Forwarded from xCode Journal
This media is not supported in your browser
VIEW IN TELEGRAM
LinkedIn запартнерился с Descript, Lovable, Relay и Replit — теперь они смогут автоматически оценивать ваш уровень владения инструментом и подтверждать навык, который тут же может отобразиться в профиле. Всего есть несколько уровней вайбкодинга: бронзовый, серебряный, золотой, платиновый и алмазный.
Потенциально это поможет работодателям быстрее понять ваш реальный навык работы с ИИ. И да — апдейт уже выкатили.
Please open Telegram to view this post
VIEW IN TELEGRAM
😁2🐳1
Давно работаешь с одним и тем же инструментом или подходом? Это удобно, но затормаживает рост.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7
Почему разработка собственного инструмента для нагрузки на API иногда оказывается лучшим выбором? В статье обсуждается реальный кейс: задачи тестирования производительности, ограничения Postman и сложность JMeter. Узнайте, как и зачем был создан простой и эффективный API-лоадер на Node.js.
Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Frontend (Content)
Client-side кеш звучит как халявный апгрейд перфоманса Меньше запросов, интерфейс летает, пользователи довольны. Ровно до тех пор, пока не появляются: «обнови страницу»; «у меня не так, как у тебя»; «в проде вообще какая-то магия». Давай разберёмся, где кеш реально тащит, а где quietly превращается в мину под ногами.
👏 Где client-side кеш — это win
• Read-heavy данные
Справочники, конфиги, словари, фичефлаги. Редко меняются, часто читаются — классический кандидат на кеш.
• Повторные переходы в рамках сессии
Когда пользователь бегает туда-сюда по одним экранам. Кеш в памяти, SWR-подход — и UI ощущается мгновенным
• Медленные или дорогие API.
Если запрос:
— тяжёлый
— платный
— или упирается в rate limit
—Тут кеш уже не оптимизация, а средство выживания
• Offline и flaky network
PWA, мобильный интернет, метро. Без кеша UX просто рассыпается.⛔️ Где начинаются выстрелы в ногу
• Данные «почти всегда актуальные»
Самый коварный кейс. Сегодня кажется, что можно кешировать. Завтра бизнес приносит real-time и всё ломается.
• Кеш без стратегии инвалидции
Если нет чёткого ответа на вопрос, когда и почему данные устаревают — кеш уже неправильный.
TTL «на глаз» — это техдолг с таймером
Кеширование мутабельных данных. Формы, статусы, состояния процессов.
Особенно весело, когда:
— на сервере данные обновились
— клиент продолжает жить прошлой жизнью❌ Получаем рассинхрон и баги «через раз»
LocalStorage как универсальное хранилище: долго живёт, не очищается и не версионируется. Идеальное место, чтобы хранить баги годами.
Кеш, про который забыли
Фичу переписали, API поменяли, а старый кеш всё ещё радостно подсовывает старые данные.⭐️ Что отличает здоровое кеширование
— Явная стратегия инвалидции
— Чёткое разделение: memory / persistent / server cache
— Кеш — это оптимизация, а не источник истины
— Возможность легко сбросить кеш
— Видимые метрики: кеш-хиты и кеш-миссы
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1👍1
Как добавить новое поле в базу данных и связать его с фронтендом? В статье рассказывается об обновлении таблицы Webhook, создании календаря на Angular и настройке работы с временными зонами и локализацией.
Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
process — это глобальный объект в Node.js, который предоставляет информацию и управление текущим процессом. Через process.argv можно получить массив аргументов командной строки.// Запуск: node script.js привет мир
const args = process.argv.slice(2); // Убираем первые два аргумента (node и имя файла)
console.log(args); // ['привет', 'мир']
🗣️ В этом примере process.argv позволяет извлечь пользовательские аргументы командной строки, что полезно для CLI-приложени
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1🔥1
Хочешь узнать, как обрабатывать миллионы событий в секунду и почему такие гиганты, как Netflix и Uber, без ума от Kafka? Давай разберемся, как этот инструмент может превратить поток данных в золотую жилу для твоего проекта.
Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
Как избавиться от ненужных файлов в образе докера? Выполним контейнеризацию приложения и простую оптимизацию размеров образа Docker.
Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
Представляем 5 полезных, но малоизвестных библиотек JavaScript! Они помогут сэкономить силы и время при форматировании дат, обработке URL-параметров и отладке веб-страниц в мобильном терминале.
Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
Создайте небольшое приложение на Node.js, которое симулирует простой чат. Программа должна принимать два аргумента командной строки: действие (
send, history) и сообщение. Программа должна сохранять все сообщения в текстовом файле (chat.txt) и уметь добавлять новые сообщения, а также выводить историю чата.•
node app.js send "Привет, как дела?" — добавляет сообщение "Привет, как дела?" в файл. • • node app.js history — выводит историю всех сообщений из файла.Решение задачи
const fs = require('fs');
const action = process.argv[2];
const message = process.argv[3];
const filePath = 'chat.txt';
if (!action) {
console.log('Используйте: node app.js <send|history> [message]');
process.exit(1);
}
// Функция для добавления нового сообщения
function sendMessage(message) {
const timestamp = new Date().toLocaleString();
const formattedMessage = `[${timestamp}] ${message}`;
fs.appendFile(filePath, `${formattedMessage}\n`, (err) => {
if (err) {
console.error('Ошибка при отправке сообщения:', err);
process.exit(1);
}
console.log('Сообщение отправлено.');
});
}
// Функция для вывода истории сообщений
function showHistory() {
fs.readFile(filePath, 'utf8', (err, data) => {
if (err) {
console.error('Ошибка чтения файла:', err);
process.exit(1);
}
const messages = data.trim().split('\n');
if (messages.length === 0 || (messages.length === 1 && messages[0] === '')) {
console.log('История чата пуста.');
} else {
console.log('История чата:');
messages.forEach((msg) => {
console.log(msg);
});
}
});
}
// Логика обработки команд
if (action === 'send') {
if (!message) {
console.log('Введите сообщение для отправки.');
} else {
sendMessage(message);
}
} else if (action === 'history') {
showHistory();
} else {
console.log('Неизвестное действие. Используйте "send" или "history".');
}
Please open Telegram to view this post
VIEW IN TELEGRAM
❤5👍2🔥1
Растущее комьюнити Node.js - свидетельство надежности и эффективности этого инструмента. Однако не всем удается извлечь из него максимальную выгоду. Рассмотрим самые распространенные ошибки разработчиков Node.js.
Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
JavaScript CustomEvent расширяют функциональность встроенной системы событий. Проще говоря, они позволяют программистам создавать и обрабатывать события, уникальные для их приложения, и в этой статье мы расскажем о них всё.
Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
При преобразовании между Buffer и String может быть указана кодировка символов. Если кодировка не указана, по умолчанию будет использоваться UTF-8
Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
Создайте приложение на Node.js, которое принимает URL в качестве аргумента командной строки, загружает HTML-контент по этому URL и сохраняет его в файл
page.html. Программа должна также уметь выводить размер загруженного HTML-контента в байтах.•
node app.js download "https://example.com" — загружает страницу по указанному URL и сохраняет в файл page.html.•
node app.js size "https://example.com" — выводит размер HTML-контента, загруженного по URL.Решение задачи
const fs = require('fs');
const https = require('https');
const url = process.argv[3];
const action = process.argv[2];
const filePath = 'page.html';
if (!action || !url) {
console.log('Используйте: node app.js <download|size> <URL>');
process.exit(1);
}
function downloadPage(url) {
https.get(url, (res) => {
let data = '';
res.on('data', (chunk) => {
data += chunk;
});
res.on('end', () => {
fs.writeFile(filePath, data, (err) => {
if (err) {
console.error('Ошибка при сохранении страницы:', err);
process.exit(1);
}
console.log('Страница загружена и сохранена в page.html');
});
});
}).on('error', (err) => {
console.error('Ошибка загрузки страницы:', err);
process.exit(1);
});
}
function getPageSize(url) {
https.get(url, (res) => {
let data = '';
res.on('data', (chunk) => {
data += chunk;
});
res.on('end', () => {
console.log(`Размер HTML-контента: ${Buffer.byteLength(data, 'utf8')} байт`);
});
}).on('error', (err) => {
console.error('Ошибка загрузки страницы:', err);
process.exit(1);
});
}
if (action === 'download') {
downloadPage(url);
} else if (action === 'size') {
getPageSize(url);
} else {
console.log('Неизвестное действие. Используйте "download" или "size".');
}
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2❤1🔥1
Учимся работать с датой и временем в JavaScript: разбираемся с определением и способом создания объекта Data, его методами и форматами вывода.
Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
Сегодняшняя тема посвящена нелегким взаимоотношениям клиентского приложения и сервера PostgreSQL: как на ровном месте, неудачной архитектурой приложения, можно обеспечить себе хронические проблемы производительности.
Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
«Это никогда не ломается» — последняя фраза перед катастрофой. Особенно в частях кода, которые трогают редко.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
В этой статье мы погрузимся в мир переменных среды в Node.js, рассмотрим их преимущества, примеры использования и лучшие практики эффективного управления ими.
Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
Зовем на максимально практическую онлайн-конференцию Podlodka Techlead Crew «Архитектура данных», 2-6 марта.
Пригодится техлидам, которые хотят меньше теории и больше рабочих решений без ненужного хайпа.
А в надежном комьюнити можно обсудить доклады ❤️
«Идет долгий тренд на оптимизацию ресурсов и подсчет затрат на инфраструктуру.
Востребованы инженеры, которые могут разобраться, как оптимизировать потребление ресурсов хранилища, как быстрее и эффективнее работать с ними»,
— объясняет главный принцип выбора темы директор Techlead Crew Григорий Скобелев.
В программе:
⚙️ Как строить потоковую обработку данных и не получить неуправляемую систему.
⚖️ Как выбирать между SQL, NoSQL и NewSQL под реальные нагрузки и сценарии.
🧩 Как проектировать DWH и Data Lake так, чтобы было полезно бизнесу.
🧠 Как работать с консистентностью и транзакциями без потери масштабируемости.
📊 Как и когда применять OLAP-хранилища и не превращать аналитику в боль.
🗓️ Когда: 2 - 6 марта
🔗 Посмотреть подробную программу →
Пригодится техлидам, которые хотят меньше теории и больше рабочих решений без ненужного хайпа.
А в надежном комьюнити можно обсудить доклады ❤️
«Идет долгий тренд на оптимизацию ресурсов и подсчет затрат на инфраструктуру.
Востребованы инженеры, которые могут разобраться, как оптимизировать потребление ресурсов хранилища, как быстрее и эффективнее работать с ними»,
— объясняет главный принцип выбора темы директор Techlead Crew Григорий Скобелев.
В программе:
⚙️ Как строить потоковую обработку данных и не получить неуправляемую систему.
⚖️ Как выбирать между SQL, NoSQL и NewSQL под реальные нагрузки и сценарии.
🧩 Как проектировать DWH и Data Lake так, чтобы было полезно бизнесу.
🧠 Как работать с консистентностью и транзакциями без потери масштабируемости.
📊 Как и когда применять OLAP-хранилища и не превращать аналитику в боль.
🗓️ Когда: 2 - 6 марта
🔗 Посмотреть подробную программу →
Promise.withResolvers()Метод
Promise.withResolvers() повышает гибкость, позволяя удалённо разрешать или отклонять промисы, упрощая и оптимизируя асинхронный код.Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥3
Визуализация данных — важная часть любого проекта, связанного с аналитикой и обработкой данных. Мы рассмотрим 7 библиотек: Plotly, D3.js, Nivo, Latitude, Apache ECharts, Victory и Chart.js.
Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
🐳4