DevNotes Live
6 subscribers
84.3K photos
12K videos
195 files
35.4K links
Автоматический агрегатор IT ресурсов в Telegram (@devnotes_robot)
Информация: https://t.me/devnotes_live/121
Download Telegram
Масштабное обновление DSGNERS!, часть 5: полностью переосмыслили интерфейс

Узнайте, каким будет интерфейс и навигация в грядущем обновлении. Иллюстрировано множеством скриншотов. Не пропустите!

Читать на DSGNERS! | #новости
Forwarded from UI_UX inspiration
This media is not supported in your browser
VIEW IN TELEGRAM
Сайт к новому рассказу выдающегося русского писателя Владимира Сорокина.

🌠 UI_UX inspiration
Forwarded from UI_UX inspiration
Forwarded from UI_UX inspiration
Forwarded from Новые шрифты
Шрифт Mazut SP by Sasha Pavljenko

Бесплатно для личных и коммерческих проектов.

Полная версия включает в себя цифры, знаки препинания и дополнительное начертание Italic, стоит всего 500 рублей Sasha Pavljenko

📁Скачать Шрифт

#Latin #Free #Cyrillic

🅰️ Новые шрифты
Forwarded from Shock Design
This media is not supported in your browser
VIEW IN TELEGRAM
Как появились золотые арки McDonald's.

📙 Shock Design
👩‍💻 Задачка по NodeJS

Создайте приложение на Node.js, которое принимает URL в качестве аргумента командной строки, загружает HTML-контент по указанному URL, подсчитывает количество тегов на странице и сохраняет результат в tags.json.

➡️ Пример:

node app.js report https://example.com — сохраняет количество тегов HTML-страницы в файл tags.json.
node app.js print https://example.com — выводит статистику по тегам на странице в консоль.

Решение задачи ⬇️

const https = require('https');
const fs = require('fs');
const { JSDOM } = require('jsdom');

const action = process.argv[2];
const url = process.argv[3];

function fetchHtml(url) {
return new Promise((resolve, reject) => {
https.get(url, (res) => {
let data = '';
res.on('data', (chunk) => (data += chunk));
res.on('end', () => resolve(data));
}).on('error', (err) => reject(err));
});
}

async function report(url) {
try {
const html = await fetchHtml(url);
const dom = new JSDOM(html);
const tags = Array.from(dom.window.document.getElementsByTagName('*')).map(el => el.tagName);
const tagCount = tags.reduce((acc, tag) => {
acc[tag] = (acc[tag] || 0) + 1;
return acc;
}, {});

fs.writeFileSync('tags.json', JSON.stringify(tagCount, null, 2));
console.log('Статистика сохранена в tags.json');
} catch (err) {
console.error('Ошибка:', err);
}
}

async function print(url) {
try {
const html = await fetchHtml(url);
const dom = new JSDOM(html);
const tags = Array.from(dom.window.document.getElementsByTagName('*')).map(el => el.tagName);
const tagCount = tags.reduce((acc, tag) => {
acc[tag] = (acc[tag] || 0) + 1;
return acc;
}, {});

console.log('Статистика по тегам:', tagCount);
} catch (err) {
console.error('Ошибка:', err);
}
}

if (action === 'report') {
report(url);
} else if (action === 'print') {
print(url);
} else {
console.log('Используйте команды: report <URL> или print <URL>');
}
Please open Telegram to view this post
VIEW IN TELEGRAM
Минутка классики:

Дизайн постеров Nikon дизайнера Yusaku Kamekura
Минутка решений:

Dario Castillejos
Минутка чая:

Glen Martin Taylor