Напишите скрипт, который принимает название города и выводит текущую температуру в этом городе, используя бесплатный API OpenWeatherMap.
Пример использования:
node weather.js London
Текущая температура в London: 15°C
Решение задачи
const https = require('https');
const city = process.argv[2];
const apiKey = 'your_openweathermap_api_key'; // Замените на свой API-ключ
if (!city) {
console.error('Пожалуйста, укажите город.');
process.exit(1);
}
const url = `https://api.openweathermap.org/data/2.5/weather?q=${city}&units=metric&appid=${apiKey}` ;
https.get(url, (res) => {
let data = '';
res.on('data', (chunk) => {
data += chunk;
});
res.on('end', () => {
const weather = JSON.parse(data);
if (weather.main) {
console.log(`Текущая температура в ${city}: ${weather.main.temp}°C`);
} else {
console.error(`Не удалось получить данные о погоде для города: ${city}`);
}
});
}).on('error', (err) => {
console.error('Ошибка:', err.message);
});
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6😁2
Backend-разработчик
Backend Developer (Node.js)
Node.js разработчик Junior+ (удаленно)
Please open Telegram to view this post
VIEW IN TELEGRAM
Хотите интегрировать ShakaPlayer в приложение Lightning для управления воспроизведением? Изучите краткое руководство по расширению стандартного медиаплеера в Lightning и использованию его с ShakaPlayer.
Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
Статья объясняет использование модульных CSS-архитектур, таких как BEM, SMACSS и OOCSS, в проектах на Next.js. Рассматриваются подходы к созданию масштабируемой и организованной структуры стилей.
Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
✍2👎1
Бэкенд-инженер на Scala решил превратить экспериментальный пет-проект в реальный сервис. В статье он делится опытом разработки Telegram-бота для общения за плату и анализирует рынок подобных решений.
Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2❤1
Создайте минимальный API на Node.js с использованием Express, который позволяет:
•
Получить список всех заметок.•
Добавить новую заметку.Требования:
1. Маршруты API:
• GET /notes
: Возвращает массив всех заметок. • POST /notes
: Добавляет новую заметку (передаётся в теле запроса).2. Хранилище данных:
•
Используйте массив в памяти. Каждая заметка должна содержать поля:{
"id": "уникальный идентификатор",
"content": "текст заметки"
}
3. Требования к корректности:
•
Заголовок заметки (content
) должен быть строкой и не быть пустым.Решение задачи
const express = require('express');
const { v4: uuidv4 } = require('uuid');
const app = express();
app.use(express.json());
let notes = [];
// Получить все заметки
app.get('/notes', (req, res) => {
res.json(notes);
});
// Добавить новую заметкуapp.post ('/notes', (req, res) => {
const { content } = req.body;
if (!content || typeof content !== 'string') {
return res.status(400).json({ error: 'Invalid content' });
}
const newNote = { id: uuidv4(), content };
notes.push(newNote);
res.status(201).json(newNote);
});
// Запуск сервера
const PORT = 3000;
app.listen(PORT, () => {
console.log(`Server running on http://localhost:${PORT}`);
});
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6👎1
В статье рассказывается о крупной фронтенд-команде, которая работает с микросервисами и общей дизайн-системой. Несмотря на стандарты, возникали проблемы, и статья подробно раскрывает, как они были решены.
Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2
• Заяц не вырастет в акулу. Или секреты гибкой инженерной культуры от Александра Бындю
• Все, пора увольняться: что я поняла после работы в токсичных командах
• Чем Cloud-инженер отличается от DevOps-инженера и что между ними общего
• Базовое программирование, или Почему джуны не могут пройти к нам собеседование
• Я стал аналитиком, потому что не смог быть программистом
Please open Telegram to view this post
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
В IT важно не просто кодить, а разбираться в архитектуре, понимать бизнес и грамотно выстраивать свою карьеру. Иначе через пару лет ты окажешься в толпе мидлов, которым ИИ уже подбирает замену.
• Какие технологии будут востребованы в 2025?
• Реальные кейсы: разбор IT-трендов без маркетинговой шелухи.
• Карьерный рост: как перейти из мидлов в сеньоры, а дальше – хоть в техлиды.
Please open Telegram to view this post
VIEW IN TELEGRAM
В статье рассматривается "React Selfie AI Background Remover" — компонент, использующий TensorFlow.js для удаления фона в браузере. Основные фишки: точная сегментация с MediaPipe, легкая интеграция в React и live demo.
Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2❤1
В Node.js события обрабатываются с помощью объекта
EventEmitter
. Этот объект позволяет объявлять события и реагировать на них с помощью подписок. Когда событие происходит, вызываются все функции, подписанные на него. Это важный механизм для асинхронной архитектуры.const EventEmitter = require('events');
const emitter = new EventEmitter();
emitter.on('event', () => {
console.log('Событие произошло!');
});
emitter.emit('event'); // "Событие произошло!"
🗣️ EventEmitter широко используется в Node.js для асинхронной обработки и реакции на различные события в системе.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7🤝1
Предлагаем руководство по использованию TypeScript для безопасной для типов сериализации и десериализации данных в формате JSON. Освоение этой стратегии позволит своевременно обнаруживать потенциальные ошибки во время разработки приложения.
Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
Тебе кажется, что ты написал чистый код, но как только отправляешь его на ревью — коллеги находят кучу недочётов?
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9🤔1
Сегодня мы рассмотрим одну из тем, которая, как ни странно, остаётся недооценённой — JSON Schema. Если ты аналитик (или хочешь им быть) и в твоей работе часто мелькают JSON-файлы, то наверняка знаешь, как сложно порой бывает держать всё это под контролем. В этой статье мы разберём всё, что тебе нужно знать про JSON Schema.
Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3
Создайте приложение на Node.js, которое принимает CSV-файл с данными пользователей в качестве аргумента командной строки, фильтрует записи по определённому возрастному диапазону и сохраняет результат в новый CSV-файл filtered_users.csv.
•
node app.js filter users.csv 18 30
— фильтрует пользователей в возрасте от 18 до 30 лет и сохраняет результат в filtered_users.csv.•
node app.js print users.csv 18 30
— выводит отфильтрованные данные в консоль.Решение задачи
const fs = require('fs');
const readline = require('readline');
async function filterCSV(file, minAge, maxAge) {
const rl = readline.createInterface({
input: fs.createReadStream(file),
crlfDelay: Infinity,
});
const result = [];
for await (const line of rl) {
const [name, age] = line.split(',');
if (age >= minAge && age <= maxAge) {
result.push(`${name},${age}`);
}
}
fs.writeFileSync('filtered_users.csv', result.join('\n'));
console.log('Результат сохранен в filtered_users.csv');
}
if (process.argv[2] === 'filter') {
const [file, minAge, maxAge] = process.argv.slice(3);
filterCSV(file, minAge, maxAge);
}
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6💩1💯1
Советы по написанию короткого, лаконичного и чистого кода на JavaScript
Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
👎4👍1
Разработчик React / Fullstack
Junior Backend-программист NodeJS
Junior Developer (Node.js)
Please open Telegram to view this post
VIEW IN TELEGRAM
TypeScript - оператор satisfies
Алоха товарищи фронты! Я знаю что это не самая новая фича в TS, но я думаю что далеко не все знают о об этом операторе и уверен что многим будет это полезно.
И так что делает оператор:
Позволяет нам проверить соответствие выражения некоторому типу, не меняя сам тип. Это помогает при работе с объектами со смешанными типами данных.
Рассмотрим на примере:
}
❗️ Объект
Вот тут-то нам и поможет оператор
Также оператор
Надеюсь что было полезно. В общем удачи в экспериментах!
Алоха товарищи фронты! Я знаю что это не самая новая фича в TS, но я думаю что далеко не все знают о об этом операторе и уверен что многим будет это полезно.
И так что делает оператор:
Позволяет нам проверить соответствие выражения некоторому типу, не меняя сам тип. Это помогает при работе с объектами со смешанными типами данных.
Рассмотрим на примере:
type FormFields = "name" | "surname" | "age";
const data: Record<FormFields, number | string> = {
name: "name",
surname: "surname",
age: 21,
}
const newAge = data.age * 2;
const nameUpperCase = data.name.toUpperCase();
❗️ Объект
data
имеет как числовые, так и строковые значения, поэтому при работе с этим объектом мы получаем следующие ошибки:The left-hand side of an arithmetic operation must be of type 'any', 'number', 'bigint' or an enum type.
Property 'toUpperCase' does not exist on type 'string | number'.
Property 'toUpperCase' does not exist on type 'number'.
Вот тут-то нам и поможет оператор
satisfies
.type FormFields = "name" | "surname" | "age";
const data = {
name: "name",
surname: "surname",
age: 21,
} satisfies Record<FormFields, string | number>
const newAge = data.age * 2;
const nameUpperCase = data.name.toUpperCase();
Также оператор
satisfies
можно использовать для отлова некоторых ошибок. Например, для проверки объектов на наличие ключей, соответствующих заданному типу:type FormFields = "name" | "surname" | "age";
const data = {
name: "name",
surname: "surname",
age: 21,
passport: {}
} satisfies Record<FormFields, string | number>
Надеюсь что было полезно. В общем удачи в экспериментах!
👍11
❌⭕️ Я хочу сыграть с тобой в одну игру: пилим «Крестики-нолики» на JavaScript
Хватит теории – пора практиковаться! Мы разберем создание полноценной браузерной игры, затрагивая ключевые концепции frontend-разработки. Идеально для новичков, жаждущих применить свои знания в реальном проекте.
Читать...
Хватит теории – пора практиковаться! Мы разберем создание полноценной браузерной игры, затрагивая ключевые концепции frontend-разработки. Идеально для новичков, жаждущих применить свои знания в реальном проекте.
Читать...
🔥2
В статье рассматриваются проблемы, которые создают рекурсивные зависимости на фронте. Обсуждаются способы их обнаружения и решения, ведь часто разработчики даже не знают, что в проекте есть циклические зависимости.
Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1