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
Forwarded from UI_UX inspiration
Минималистично оформленная коллекция шрифтов in use для поиска вдохновления. Довольно не плохая подборка кстати, надо бы понадергать оттуда шрифтовых маркетплейсов.

https://www.fontsinthewild.com

#fonts #collection

🌠 UI_UX inspiration
Forwarded from UI_UX inspiration
Forwarded from UI_UX inspiration
👩‍💻 Умный кеш JSON-запросов в файл

Реализуйте функцию 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
Forwarded from Техночат
Разыгрываем лучшие гаджеты года: iPhone 16 Pro Max на 256 ГБ, 15-дюймовый MacBook Air 16/256 ГБ и PlayStation 5 Pro!

Чтобы их получить, достаточно подписаться на:
• наш канал «Техночат»
• И на канал «Больше, чем экономика»

Нажимаете после этого на кнопку «Участвовать» и ждёте 2 июля — в этот день в 20:00 по московскому времени рандомайзер выберет трёх победителей. Первый получит айфон, второй — макбук, а третий — PlayStation.

Призы бесплатно вышлем в ближайший к вам пункт выдачи СДЭК, поэтому уточните, есть ли он в вашей стране.
Forwarded from Техночат
Разыгрываем лучшие гаджеты года: iPhone 16 Pro Max на 256 ГБ, 15-дюймовый MacBook Air 16/256 ГБ и PlayStation 5 Pro!

Чтобы их получить, достаточно подписаться на:
• наш канал «Техночат»
• И на канал «Больше, чем экономика»

Нажимаете после этого на кнопку «Участвовать» и ждёте 2 июля — в этот день в 20:00 по московскому времени рандомайзер выберет трёх победителей. Первый получит айфон, второй — макбук, а третий — PlayStation.

Призы бесплатно вышлем в ближайший к вам пункт выдачи СДЭК, поэтому уточните, есть ли он в вашей стране.
Forwarded from Оди
Объявлены победители онлайн-конкурса «Создавая миры»

На выставке-форуме АРХ МОСКВА состоялась церемония награждения победителей конкурса «Создавая миры», организованного ГК «Галс-Девелопмент»

Ими стали Лана Семутникова, автор работы «Темпоритм» в номинации «Фотография. Архитектура», и Полина Шиндина, автор работы «Атланты» в номинации «Digital Art. Архитектура». Победители получили по 100 тысяч рублей из призового фонда

Также специальными дипломами были награждены победители онлайн-голосования на сайте конкурса PinWin.su, которыми стали Александр Мануковскии‌ с работой «Диалог» в номинации «Фотография. Архитектура» и Ирина Халезова с работой «Мир сам себя не создаст» в номинации «Digital Art. Архитектура»

Конкурс «Создавая миры» стартовал 7 марта и за месяц поступило более 650 (!) заявок. К участию в конкурсе были отобраны 85 работ в номинации «Фотография. Архитектура» и 93 работы в номинации «Digital Art. Архитектура». Их отличает особый взгляд на архитектуру, позволяющий увидеть в привычных или фантазийных формах целый мир, существующий по своим законам — прекрасным и интригующим. Индивидуальность авторского видения, смысловая и образная насыщенность, художественное качество и мастерство владения инструментами обработки изображения – эти качества требовались для участия в конкурсе «Создавая миры»

В экспертное жюри конкурса вошли представители организатора и партнёры конкурса, а также ведущие российские архитекторы, фотографы, медиахудожники и эксперты в сфере цифрового искусства. Они выбрали в финал 10 лучших работ — по 5 в каждой из номинаций. Все 10 работ, вышедших в финал конкурса «Создавая миры», были представлены на специальной экспозиции на стенде ГК «Галс-Девелопмент» на выставке-форуме АРХ МОСКВА

Следите за событиями в мире архитектурной фотографии и цифрового искусства на канале конкурса: @archiphotodigitalart

Реклама. ИП Петухова Е.Г., ИНН 772006355737, erid: 2SDnjchBRpH
Forwarded from Оди
Forwarded from Denis Sexy IT 🤖
This media is not supported in your browser
VIEW IN TELEGRAM
Наткнулся на дзен-тетрис – наконец-то никакого стресса, сидишь, фигурки двигаешь, выигрываешь по жизни:
https://lazytetris.com/
Forwarded from Denis Sexy IT 🤖
This media is not supported in your browser
VIEW IN TELEGRAM
Если попросить чатгпт сказать «Лоо…оол» то получится идеальная искренняя реакция на многие мемы 🤝🤝
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Адовый UX
При аварии:

1. Выдавите плёнку
2. Откройте крышку
3. Возьмите канат

Вы спасены!
Forwarded from Адовый UX
Ваш голос значит нихуя

#нули
Forwarded from Shock Design
Вдохновение брендингом культовых smash-бургеров Mr. Franky’s от студии 86Creative.

📙 Shock Design