O seu período de teste terminou!
Para acesso total à funcionalidade, pague uma subscrição premium
FR
Рассказ фронтендера
https://t.me/frontend_tales
Idade do canal
Criado
Linguagem
Russo
1.41%
ER (semana)
3.83%
ERRAR (semana)

Пишу про frontend (JS/TS/React), задачки с собесов с разбором и теория, советую книжки и многое другое 🤭

Contact: @atrapeznikov

Mensagens Estatísticas
Repostagens e citações
Redes de publicação
Satélites
Contatos
História
Principais categorias
As principais categorias de mensagens aparecerão aqui.
Principais menções
Não foram detectadas menções significativas.
Encontrado 24 resultados
🎮 Untrusted - приключения доктора Эвала

Untrusted - это приключенческая игра, в которой вы сможете попрактиковаться и проверить свои знания JavaScript.
Вам предстоит управлять доктором Эвалом в машинном континууме и изменять его реальность, чтобы обрести свободу.

У вас будет доступ ко всем исходным кодам, но для спасения придётся вносить необходимые изменения в этот код!
Очень затягивает 🤩

🟢Ссылка на игру https://untrustedgame.com/
21.04.2025, 22:02
t.me/frontend_tales/279
🚩 Подбор шрифтов

Интересный сервис, который подберёт пару для primary и secondary шрифтов для вашего интерфейса.
Ещё можно посмотреть, как все эти шрифты будут выглядеть, не отходя от кассы 🤩

✔️ Делюсь ссылочкой
16.04.2025, 22:10
t.me/frontend_tales/278
👩‍💻 CSS support

Не многие знают, что в JavaScript есть встроенный метод, позволяющий проверить, поддерживает ли браузер определённое CSS-свойство или его значение. Этот метод - CSS.supports().

Рассмотрим примеры:
console.log(CSS.supports("display", "grid"));
// true (если браузер поддерживает grid)

console.log(CSS.supports("color", "blue"));
// true (почти всегда)

console.log(CSS.supports("position", "sticky"));
// true (если браузер поддерживает `position: sticky`)


Можно также проверять несколько условий с or и and:
console.log(CSS.supports("(display: grid) and (color: red)"));
// true, если обе поддержки есть

console.log(CSS.supports("(display: flex) or (display: grid)"));
// true, если хотя бы одно поддерживается


Еще важно заметить, что свойство можно использовать внутри CSS, с помощью @supports:
@supports (display: grid) {
.container {
display: grid;
}
}


❕Есть ограничения:
⚫️ Не проверяет поддержку нестандартных префиксированных свойств (например, -webkit-).
⚫️ Работает только с известными CSS-свойствами, если свойство неизвестно браузеру - всегда false.

🔗 Ссылка на доку
5.04.2025, 14:21
t.me/frontend_tales/277
🧠 DeepSite - аналог Cursor ?

Вышел тут недавно новый эЙаЙ инструмент DeepSite (на базе DeepSeek V3), который работает прямо в браузере🤨

Что умеет:
- Писать и редактировать код
- Оптимизация и рефакторинг
- Можно создавать веб-приложения, сайты, лендинги
- Готовое решение можно деплоить
- и многое другое

⌨️ Попробовать можно здесь
31.03.2025, 21:59
t.me/frontend_tales/276
👩‍💻 Делаем расширение для браузера

Недавно написал туториал про разработку простого расширения для браузера. Советую попробовать, а затем создать что-нибудь своё. Самое то на выходные 😉

➡️Ссылочка тут

Ставим в статье плюсики, а здесь - огонёчки 🔥
22.03.2025, 14:27
t.me/frontend_tales/274
💅 Styled-components все 🥲

https://opencollective.com/styled-components/updates/thank-you
20.03.2025, 14:26
t.me/frontend_tales/273
🎨 OffscreenCanvas

OffscreenCanvas - это объект в JavaScript, который позволяет работать с в веб-воркерах. Это полезно для выполнения графических операций в фоновом потоке, не блокируя основной поток браузера (UI).

➡️Подготовил вам пример, можно склонировать к себе и поиграться.

🔖Основные возможности

1. Рендеринг в фоновом потоке
🔵Можно использовать OffscreenCanvas внутри Web Worker'а для отрисовки графики без зависания UI.

2. Поддержка 2D и WebGL API
🔵Работает с 2d, webgl, webgl2 и webgpu контекстами.

3. Передача контекста между потоками
🔵Можно передавать OffscreenCanvas из основного потока в Web Worker с помощью postMessage().

4. Высокая производительность
🔵Позволяет обновлять анимации и графику без влияния на основной поток, что снижает задержки и делает интерфейс плавнее.

🔖Когда использовать?

🟢Игры и анимации - отрисовка в фоновом потоке позволяет избежать лагов в интерфейсе.
🟢Редакторы и обработка изображений - можно ускорить фильтрацию и рендеринг графики.
🟢Визуализация данных - графики и диаграммы будут обновляться без фризов UI.

🔖Ограничения

🔴Не работает в iOS Safari (по состоянию на 2024 год).
🔴Не поддерживает DOM API (например, canvas.toDataURL() не работает в Web Worker).
🔴Не все браузеры поддерживают WebGL/WebGPU в OffscreenCanvas.

❗️Альтернатива: Если OffscreenCanvas не поддерживается, можно использовать requestAnimationFrame() или WebGL в основном потоке.

Ссылка на доку.
17.03.2025, 21:18
t.me/frontend_tales/272
✨ Интересная новость
TypeScript портируют на Go.
После этого скорость x10 🧐

https://devblogs.microsoft.com/typescript/typescript-native-port/

https://github.com/microsoft/typescript-go/discussions/categories/faqs
12.03.2025, 15:06
t.me/frontend_tales/271
😎 Object.seal()

Этот метод запрещает добавление и удаление свойств, но разрешает изменять существующие свойства.

Что можно делать после Object.seal(obj)?
🟢Изменять значения существующих свойств
🔴Добавлять новые свойства
🔴Удалять свойства

Пример:

const obj = { name: "Alice" };
Object.seal(obj);

obj.name = "Bob"; // Можно изменить
delete obj.name; // Нельзя удалить
obj.age = 25; // Нельзя добавить
console.log(obj); // { name: "Bob" }


❓Когда использовать?

🔵Когда нужно сохранить структуру объекта, но разрешить обновление данных.
🔵Например, для объектов, представляющих сущности в системе (пользователь, заказ и т. д.).
10.03.2025, 18:47
t.me/frontend_tales/270
🌐 Отправляем запрос через консоль браузера

Иногда необходимо отправить запрос с изменёнными параметрами, и это можно сделать через консоль браузера.
Для этого выполните следующие шаги:

1️⃣Откройте вкладку Network.
2️⃣Выберите фильтр Fetch/XHR.
3️⃣Найдите в списке нужный запрос.
5️⃣Кликните по нему правой кнопкой мыши, откройте меню и выберите Copy → Copy as fetch.
5️⃣Вставьте скопированный код в консоль, при необходимости измените параметры.

Не забываем ставить огонечки 🔥 и сердечки ❤️
5.03.2025, 19:13
t.me/frontend_tales/268
А говорят React умирает 😎

Ирония: это админ самого крупного сообщества Vue.js в Twitter🗿
4.03.2025, 09:12
t.me/frontend_tales/267
🦄 Object.preventExtensions()

Для управления возможностью изменения объектов в JavaScript есть несколько интересных методов. Они позволяют нам ограничить добавление, изменение или удаление свойств объекта.

Рассмотрим первый метод Object.preventExtensions(obj)

Этот метод запрещает добавление новых свойств в объект obj, но при этом не запрещает изменение или удаление существующих свойств.

⁉️ Что можно делать после Object.preventExtensions(obj)?
✅ Изменять значения существующих свойств
✅ Удалять существующие свойства
❌ Добавлять новые свойства

Пример:
const obj = { name: "Alice" };
Object.preventExtensions(obj);

obj.age = 25; // Ошибка в строгом режиме, иначе игнорируется
delete obj.name; // Удалится
obj.name = "Bob"; // Можно изменить
console.log(obj); // {}

❓Когда использовать?

- Когда объект уже сформирован, но возможны изменения существующих данных.

- Например, для хранения конфигурации с возможностью редактирования, но без добавления новых параметров

🔥 В след посте рассмотрим метод seal()
3.03.2025, 18:58
t.me/frontend_tales/266
Кхм 🥲
28.02.2025, 14:19
t.me/frontend_tales/265
🖼️ React, Svelte, Vue или Angular?

Прикольный сайт, где можно сравнить синтаксис разных фреймворков

➡️Делюсь ссылочкой
27.02.2025, 20:58
t.me/frontend_tales/264
🤓 Повторно отправляем запрос в DevTools

Во вкладке Network мы можем повторно отправлять запросы без перезагрузки страницы.

💡 Для этого нужно выполнить следующие шаги:

1. Открыть Network.
2. В фильтре выбрать Fetch/XHR.
3. Выбрать запрос, который хотим отправить повторно.
4. В меню выбираем Replay XHR.
5. Повторный запрос появляется в списке
24.02.2025, 22:02
t.me/frontend_tales/263
🔄 Как поменять две переменные местами?

В Python есть классный способ поменять значения двух переменных не создавая еще одну:

a = 5
b = 10

# Меняем значения
a, b = b, a

- А можно ли сделать так в JavaScript? 🧐
- Да! 🤩

В JS также можно поменять значения двух переменных без создания третьей переменной, используя любимую нашу деструктуризацию:

let a = 5;
let b = 10;

// Меняем значения
[a, b] = [b, a];
20.02.2025, 18:12
t.me/frontend_tales/262
Существует множество средств для разработки декстоп-приложений на языке JS/TS: Electron.js. Tauri, React Native Desktop и пр.

👀 Оказывается, в GNOME - графической оболочке, используемой в популярных дистрибутивах Linux, таких как Ubuntu и Fedora, - можно разрабатывать приложения😱 И все это благодаря GJS - среде выполнения JavaScript, основанной на движке SpiderMonkey от Firefox и библиотеках платформы GNOME. Подробнее можно узнать здесь.

В GNOME из коробки уже есть несколько приложений написаных на JS - это карты, менеджер шрифтов, диктофон.

☑️Есть специальный шаблон с помощью которого можно начать разработку.

Поэтому, если хотите попробовать написать почти нативное приложение для GNOME без изучения новых языков и технологий, советую попробовать!🔥

😎 Позже, возможно, напишу статейку о создании какого-нибудь приложения..
17.02.2025, 18:36
t.me/frontend_tales/261
▶️ Подборка каналов для роста

Собрал для вас подборку каналов, которые помогут быстрее развиваться во фронтенд-разработке. Здесь люди делятся опытом, рабочими советами и кейсами. Подписывайтесь! 🚀

⚫️Solvery — канал, где Senior и Middle+ разработчики делятся реальным опытом без воды. Как пройти путь из Макдональдса в IT и вырасти с 22К до 320К? Разбираем реальный кейс. Как не провалить собеседование? 80+ ключевых вопросов, которые вас точно спросят. Как пополнять портфолио без заказчиков? Держите готовый план действий. Ну, а если вы все еще боитесь идти на собес, то вот 30+ моковых интервью для прокачки навыков. Делимся всем, что помогает развиваться в IT, выходить на новый уровень и не топтаться на месте.

⚫️Счастливый тимлид — блог про управление без страданий, про наём со всех сторон, про работу без выгорания и про реальную жизнь без глянцевых фильтров. Иногда жёстко, иногда смешно, но всегда по делу. У меня в блоге разбираемся: Фронтенд усложняется! Или нет? Расскажу, какие навыки самые важные для разработчика. А если вас пугают алгоритмы, но базу подтянуть хочется, этот материал для вас.

⚫️Frontend вдохновляет — авторский канал, в котором разработчик с 12-летним стажем делится секретами во frontend, реальными задачами с работы, а также дает порцию мотивацию развиваться и быть на шаг впереди остальных.

⚫️Ilnur Ryazhapov Frontend — блог Ильнура Ряжапова, фронтенд-сеньор-разработчика с 6-летним опытом. Здесь он рассказывает про жизнь программиста в Саудовской Аравии, Если ребятам нравится фронтенд и разработка на фреймворке ангуляр, то он берёт их к себе на менторинг, где обучает и выдает компетенции мидл-разработчика, даже если человек полный ноль во фронтенде. Заглядывайте в канал, чтобы узнать 1) какие навыки сейчас востребованы на рынке, 2) как добавить опыт в резюме без накрутки, или 3) что отличает тех, кто смог построить крутую карьеру.

💙 Если знаете ещё годные каналы по фронтенду — делитесь в комментариях!
15.02.2025, 19:27
t.me/frontend_tales/260
♥️

https://codepen.io/atrapeznikov/pen/emYNmOZ
14.02.2025, 13:30
t.me/frontend_tales/259
🐞 Баг как часть языка

В JavaScript выражение typeof null === 'object' возвращает true из-за исторической ошибки в реализации языка.

Когда в ранних версиях JavaScript разрабатывался оператор typeof, значения в памяти хранились в виде тегов типа. null представлялся как нулевой указатель (0x00), а объекты имели специальный тег (например, 0x00 в некоторых реализациях). Из-за этого typeof null начал ошибочно интерпретироваться как 'object'.

⚫️Почему ошибку не исправили?

Хотя это признанная ошибка, исправление сломало бы обратную совместимость со старым кодом, который полагался на такое поведение. Поэтому разработчики ECMAScript решили оставить этот баг в стандарте.

⚫️Как правильно проверять null?

Чтобы избежать ошибки, рекомендуется проверять null с помощью строгого сравнения:

if (value === null) {
console.log('Это null');
}

или (что не очень)

console.log(Object.prototype.toString.call(null)); // [object Null]
13.02.2025, 20:56
t.me/frontend_tales/258
🌐 Zen Браузер

Попробовал тут ✨Zen Browser✨ и он таки смог привлечь мое внимание...
Сам браузер основан на Firefox и написан на C++, JavaScript, CSS и ещё нескольких не таких популярных языков.

Ключевые особенности:

⚫️широкая кастомизация
⚫️открытая лицензия Mozilla Public License 2.0
⚫️кроссплатформенность (не удивительно)
⚫️параллельный просмотр (очень интересное решение)
⚫️супер-пупер боковая панель

Интерфейс прикольный. Есть интересный функционал. Так что пробуйте.

🔗 Ссылочка тут
8.02.2025, 11:58
t.me/frontend_tales/256
🔋 Battery Status API – это интерфейс Web API, который позволяет веб-страницам получать информацию о состоянии батареи устройства пользователя. С его помощью можно узнать уровень заряда, подключено ли устройство к сети питания и оставшееся время работы.

📕 Дока на MDN

Какие возможности есть у Battery Status API:

🔖 level - проверка текущего уровня заряда батареи
🔖 charging - определение, подключено ли устройство к зарядке
🔖 chargingTime - оценка времени до полной зарядки
🔖 dischargingTime - оценка оставшегося времени работы от батареи

🛠 Пример использования

navigator.getBattery().then(battery => {
console.log(`Заряд: ${battery.level * 100}%`);
console.log(`Зарядка: ${battery.charging ? "Да" : "Нет"}`);
console.log(`Время до полной зарядки: ${battery.chargingTime} сек.`);
console.log(`Оставшееся время работы: ${battery.dischargingTime} сек.`);
});

🔄 Обновление данных в реальном времени

Можно подписаться на события изменения состояния батареи:

navigator.getBattery().then(battery => {
function updateBatteryStatus() {
console.log(`Заряд: ${battery.level * 100}%`);
console.log(`Зарядка: ${battery.charging ? "Да" : "Нет"}`);
}

battery.addEventListener("levelchange", updateBatteryStatus);
battery.addEventListener("chargingchange", updateBatteryStatus);
});

⚠️ Поддержка браузерами

Battery Status API поддерживается не во всех браузерах. Проверка поддержки в браузере:

if ("getBattery" in navigator) {
console.log("Battery API поддерживается!");
} else {
console.log("Battery API не поддерживается!");
}

💡Где может быть полезно?

- Оптимизация работы веб-приложений (например, уменьшение потребления ресурсов при низком заряде).

- Отображение уведомлений о разряде батареи пользователю.

- Автоматическое включение режима экономии энергии.
4.02.2025, 18:01
t.me/frontend_tales/255
🧠 AI ai ai

Вышла новая LLM модель DeepSeek R1. Made in China 🇨🇳

Небольшая китайская компания совершила прорыв. Они создали думающую модель всего за $6 млн (очень, очень дешево). Она не уступает OpenAI o1, являясь при этом открытой и доступной по цене.

🤔И что еще интересно:
DeepSeek обрушил стоимость американских технологических компаний на $1 трлн за один день
🚀 Вот теперь будет гонка...

Переходим и пользуемся https://www.deepseek.com/
Есть и приложение на телефон

И ВСЕ БЕЗ VPN 🤘
27.01.2025, 21:55
t.me/frontend_tales/254
🥱 px,rem, em vh - набор букв...

Иногда очень сложно понять, какую единицу измерения использовать в CSS. Нашел интересную диаграмму, которая с этим поможет 🤩

⛓ Ссылочка тут
27.01.2025, 19:34
t.me/frontend_tales/253
Os resultados da pesquisa são limitados a 100 mensagens.
Esses recursos estão disponíveis apenas para usuários premium.
Você precisa recarregar o saldo da sua conta para usá-los.
Filtro
Tipo de mensagem
Cronologia de mensagens semelhante:
Data, mais novo primeiro
Mensagens semelhantes não encontradas
Mensagens
Encontre avatares semelhantes
Canais 0
Alta
Título
Assinantes
Nenhum resultado corresponde aos seus critérios de pesquisa