htmlshit | Unsorted

Telegram-канал htmlshit - Будни разработчика

14544

Блог Lead JS-разработчика из Хельсинки Автор: @bekharsky По рекламе: https://telega.in/channels/htmlshit/card?r=GLOiHluU или https://t.me/it_adv Чат: https://t.me/htmlshitchat

Subscribe to a channel

Будни разработчика

Лучшие практики React-разработки собраны на бесплатном вебинаре Optimizing React: Web & Beyond!

13 марта команда разработчиков Social Discovery Group на примере реальных кейсов расскажут про:

Как оптимизировать React-приложения и снизить нагрузку на устройства;
Как основные «фичи» React нашли себе применение в монтаже видео, 3D графике и написании ботов;
Как не сломать мемоизацию в React.

📅 Дата: 13 марта, 19:00 (GMT+4)
🔉 Язык: русский


Регистрируйтесь на вебинар 👉🏻 здесь 👈🏻

Читать полностью…

Будни разработчика

🔥 Годнота

Наткнулся на базу с 1400 вопросов с собеседований на Frontend разработчика. Фишка в том что просчитана вероятность с которой вопрос буден задан и есть примеры ответов. Теперь можно легко получить оффер, подготовившись к самым популярным вопросам 😏

Читать полностью…

Будни разработчика

#фишка дня

Давайте на минутку вернёмся к недавней статье про правильную стилизацию кнопок.

Помимо базовых стилей всегда хочется добавить немного эффектов: на наведение мыши (:hover), на фокус (:focus), на нажатие (:active).

Так вот, если с первыми двумя состояниями всё ясно, то нажатие – процесс мгновенный, т. е. длится явно меньше базовых 300 мс. Ваша анимация просто не успеет отыграть! Разве только вы не задержите кнопку мыши или тачпада нажатой.

И решение весьма неожиданное: :not(:active).

Внезапно, не правда ли? Ведь это, по факту, состояние кнопки по-умолчанию.

Так в этом и суть!

Хотим мы, например, стартовать пульсацию по клику. Сам эффект создаётся при помощи по-умолчанию скрытого псевдоэлемента, а секрет в том, что :not(:active) – это самое состояние перезапускает.

В общем, статья по поводу: https://codeburst.io/why-you-should-style-the-wrong-button-state-d4e4c2db8f7e

И CodePen, поскольку автор решил ограничиться gist’ом: https://codepen.io/alinaki/pen/wvgeWxY

#css #button #click #animation #бородач

Читать полностью…

Будни разработчика

#статья дня

Чтобы разбавить инструменты, коих сотни, давайте возьмём статью. Впрочем, она тоже о визуализации.

А конкретно, о визуализации вашей JavaScript-сборки (бандла), что поставляется в браузер: Lighthouse Treemap.

Знакомое название? Lighthouse — стандарт де-факто для измерения производительности сайтов и веб-приложений и анализа способов её улучшения.

А Treemap, собственно, это его часть. Показывает из чего ваша сборка состоит, что позволит проанализировать наиболее тяжёлые её части и сделать выводы о том, как поступить: разбить на части (чанки) или заменить.

Итак, статья: https://sia.codes/posts/lighthouse-treemap/

TL;DR

Открыли DevTools, запустили анализ проекта. После прохождения анализа появится кнопка View Treemap. Жамкаем и анализируем.

Заодно нелишним будет вспомнить Statoscope и Webpack Bundle Analyzer.

Пользуемся, наслаждаемся.

#devtools #chrome #бородач

Читать полностью…

Будни разработчика

#тип дня

Вышел TypeScript 5.4.

А это что значит? Что у нас теперь есть служебный тип NoInfer.

Коротко, зачем он нужен: с его указанием TS больше не будет пытаться угадать тип передаваемого аргумента. Например, если не указать тип массива ["red", "yellow", "green"], TS определит его как string[] и разрешит запихнуть туда значение "blue" или, что хуже, позволить вашему коду попытаться, например, это самое значение в нём найти:


function createStreetLight<C extends string>(colors: C[], defaultColor?: C) {
// ...
}

createStreetLight(["red", "yellow", "green"], "blue");


Чтобы такого не происходило, есть два пути. Первый:

function createStreetLight<C extends string, D extends C>(colors: C[], defaultColor?: D) {
}

createStreetLight(["red", "yellow", "green"], "blue");
// ~~~~~~
// error!
// Argument of type '"blue"' is not assignable to parameter of type '"red" | "yellow" | "green" | undefined'.


Ну такое, многословно и D больше нигде в коде не используется. Вот тут и приходит на помощь NoInfer:

function createStreetLight<C extends string>(colors: C[], defaultColor?: NoInfer<C>) {
// ...
}

createStreetLight(["red", "yellow", "green"], "blue");
// ~~~~~~
// error!
// Argument of type '"blue"' is not assignable to parameter of type '"red" | "yellow" | "green" | undefined'.


Всё, тип массива определён как, практически, у константы ["red", "yellow", "green"] и передать "blue" уже не выйдет.

Естественно, улучшений и нововведений в TS 5.4 сильно больше, рекомендую прочитать заметки о выпуске: https://devblogs.microsoft.com/typescript/announcing-typescript-5-4/

#typescript #generics

Читать полностью…

Будни разработчика

#такое дня

Playwright-код на иллюстрации — это ваш знак свыше чтобы начать писать тесты.

Нет тестов? Сделай первый прямо сейчас. Просто возьми и напиши один. Юнит, интеграционный, e2e — неважно.

Собственно, соус: небезызвестный в фронтенд-сообществе Кент Доддс (Kent C. Dodds) написал, на первый взгляд, глупый тест.

Но не всё так просто. И этот тест его спас.

E2E тест что значит? Значит, end-to-end, от точки до точки. Он не проверяет как работает конкретно ваше приложение.

Задача проверить, как работает система целиком.

И тут оказалось, что Кент просто неправильно сконфигурировал редиректы на сервере :) Не было бы теста — упал бы продакшен. И сиди думай потом.

В общем, котаны. Нет тестов — прямо сейчас сделайте свой первый. Хватит откладывать. Иди уже.

P. S. Это, кстати, напомнило мне уже с точки зрения ведения блога: не бывает постыдных записей или находок. Нет ничего стыдного признаться в том, что ты что-то прочитал в документации или сделал какую-то глупость.

#tests #e2e #playwright

Читать полностью…

Будни разработчика

#такое дня

Крайне показательное чтиво на ночь: исследование российского опенсорса.

https://research.nplus1.ru/

Довольно длинный обзор, но меня очень смутили три вещи:

1. Человек, который сделал скролл на этом сайте, ты что покушал в тот день?

2. 58,4% Считают, что опенсорс не имеет границ и не существует «российского опенсорса»

В смысле, 58,4? Почему так мало?

К счастью, изоляционистская риторика пока всё ещё однозначно осуждается.

3. Эти глаза, они там зачем?

Вообще, если продраться сквозь очень плохую реализацию плавного скролла, исследование весьма полезное.

А вы, котаны, контрибьютите в опенсорс? Как часто? На каком уровне?

#opensource #longread

Читать полностью…

Будни разработчика

#фишка дня

Стопудово вы делали эффекты как на видео через три div-а или span-а. Ну просто потому что трансформации на SVG это абсолютная боль.

Типа такого: https://codepen.io/alinaki/pen/abXpvyQ

Да, пример очень простой, но даже это на SVG бывает проблемно санимировать.

Хотя, казалось бы, для этого и предназначено.

А вся проблема в том, что для SVG определение координат для преобразований происходит немного иначе, нежели чем для элементов. Выходов из ситуации есть несколько.

Первый, от Аны Тюдор: исправить viewBox, поставив вместо 0, 0 (левый верхний угол) — -width/2,-height/2, соответственно, исправив остальные координаты.

Второй, интереснее, от Джея: указать следующие правила в CSS:


transform-box: fill-box;
transform-origin: 50% 50%;


Правило transform-box исправит положение координатной сетки, от которой мы уже сменим дефолтную точку отсчёта для преобразований — transform-origin.

По-умолчанию, кстати, transform-box установлен как view-box. То есть, в нашем примере, заполняет лишь 24 пикселя по каждой стороне 🤡

А вот и, собственно, пример:
https://codepen.io/alinaki/pen/YzBNyEz

Не бойтесь анимировать SVG, котаны. Просто не полагайтесь на дефолт.

#css #transition #svg #бородач

Читать полностью…

Будни разработчика

С 7 по 12 марта пройдёт леденящий душу марафон о самом устрашающем языке программирования — JavaScript. Марафон отлично подойдёт для всех, кто давно хотел научиться новому, но боялся начать.

На 6 дней вы получите бесплатный доступ к тренажерам и полезным материалам HTML Academy.

Выполняйте задания, знакомьтесь с JavaScript и побеждайте все страшные баги на своём пути. Ну или просто знакомьтесь с JavaScript, так тоже можно. На каждом этапе помощь наставника, а в конце марафона разбор всех вопросов и сложностей в прямом эфире.

Среди участников мы проведем розыгрыш крутых подарков и предоставим скидки на наши лучшие продукты.

Узнать подробнее.

Читать полностью…

Будни разработчика

#codepen дня

Кажется, мне пришла пора признать, что чекбоксы и радиокнопки официально стали полностью веб-элементами.

Что я имею в виду: поля ввода, чекбоксы, радиокнопки, кнопки вообще, филдсеты, селекты — они были (и частично до сих пор являются) замещаемыми элементами. Вы указываете браузеру "хочу тут видеть такой-то инпут", а рисуется инпут уже операционной системой, её виджетами.

Сейчас эта грань максимально размывается: поля ввода уже рисуются через Shadow DOM, кнопки каждый оформляет как хочет, fieldset недавно наконец-то избавился от родовых болезней.

И только select до сих пор рисуется совершенно отдельно. Кстати, это одна из причин, почему селекты не видно в трансляции экрана на митингах :)

Возвращаясь к чекбоксам и радио: до недавнего времени по вышеозначенным причинам к ним нельзя было применять, например, псевдоэлементы. Что весьма ограничивало возможности по стилизации.

Теперь же это не так. Google Chrome уже давно не стесняясь разрешает псевдоэлементы на ваших чекбоксах, Safari и Firefox тоже недавно подтянулись.

В итоге, в сочетании с appearance: none можно творить что-то такое: https://codepen.io/alvaromontoro/pen/OJqKGBz

Я, кстати, уже говорил ведь, что в стандарт пытаются пропихнуть атрибут switch, чтобы окончательно распрощаться с чекбоксами?

Вот такое (работает только в Safari TP): https://nt1m.github.io/html-switch-demos/

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

#css #switch #checkbox

Читать полностью…

Будни разработчика

#заметка дня

Интересно наблюдать, как с приходом Bun на сцену JavaScript-сред расшевелились все остальные.

Например, вот Parcel.js. Казалось бы, ну сборщик и сборщик, но начиная с его 2 версии каждая минорная удивляет!

В версии 2.12.0 появилась, например, поддержка макросов: https://parceljs.org/blog/v2-12-0/

Что такое макросы? Это код, который выполняется в момент сборки, оставляя за собой константы, регулярки и всё прочее, что можно сгенерировать. В примере выше (из новости) по переданным строкам генерируется регулярка. Удобно, если нужно создать кучку однотипных виджетов, баннеров, сборок под конкретных клиентов.

И вот появились они сначала как раз в Bun.

Ну и LightningCSS тоже не стоит на месте. Если раньше он успешно заменял собой PostCSS, то начиная с этой версии — понимает директиву import и собирает ваш CSS в кучу, без препроцессоров.

Очень ждём поддержку React Server Components, потому что это будет первая "ванильная" реализация. В смысле, не в составе фреймворка.

Пробуем, котаны!

#parcel #bundler #macros

Читать полностью…

Будни разработчика

🖥 45+ IT-компаний ищут стажёров и джунов 

Карьерные форумы "Найти IT" — это шанс пообщаться с топовыми компаниями и получить оффер. Среди работодателей будут Сбер, Яндекс, Kaspersky, Avito и многие другие.

Что вас ждёт:
🔹 Мастер-классы, кейсы и Q&A-сессии.
🔹 Розыгрыш призов среди участников.
🔹 Обширное пространство для общения и обмена опытом.
🔹 Карьерные консультации от HR-ов.

Участие бесплатное! 

Выбирайте город и регистрируйтесь👇🏻
📍 Москва — 6 марта
📍 Санкт-Петербург — 6 апреля
📍 Новосибирск — 10 апреля

Читать полностью…

Будни разработчика

#фишка и #статья дня

Надоело проигрывать битву z-index? Используй BFG от CSS: infinity.

Ладно, кроме шуток (хотя я и не шутил). С помощью infinity можно гарантировать верно скруглённые углы на прямоугольниках, мы с вами уже рассматривали алгоритм для веба и Flutter: /channel/htmlshit/1565

Вместо


border-radius: 9999px;

...пишем:

border-radius: calc(infinity * 1px);


А ещё в CSS общепринятое «если что-то поделить на ноль, получится бесконечность» вполне себе закреплено на практике:


calc(infinity) = calc(1 / 0)
calc(1px / 0) = calc(infinity * 1px)


Учителя вторых классов будут нами явно недовольны.

В общем, читаем статью и погружаемся в бесконечность и далее:
https://codersblock.com/blog/playing-with-infinity-in-css/

#css #infinity #math

Читать полностью…

Будни разработчика

#заметка дня

Не знаю, как вас, но меня очень раздражает то, что в React Router состоянием скролла надо управлять самостоятельно.

Перемещаешься по роутам, а скролл на месте остаётся. Ну типа, што.

К счастью, решение что для v5 React Router, что для v6 одинаковое:


function ScrollToTop() {
const { pathname } = useLocation();

useLayoutEffect(() => {
document.documentElement.scrollTo(0, 0);
}, [pathname]);

return null;
}


И потом вставляете его в контекст роутинга:

<BrowserRouter>
<Routes>
...
</Routes>
<ScrollToTop/>
</BrowserRouter>


Но вот я это всё по привычке написал и решил всё-таки посмотреть документацию. Ну бывает. И вот что там: https://reactrouter.com/en/main/components/scroll-restoration

Восстановление скролла теперь поставляется из коробки! И умеет гораздо больше, чем просто скроллить наверх. Правда, требует изменения корневого роутера. Благо, это несложно.

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

По-моему, очень круто. И хорошо, что решение официальное.

#react #router

Читать полностью…

Будни разработчика

Изучил CSS, но не знаешь JS?
Вместо кодинга дома ты играешь в CS?
Ты пытаешься прогать и часто тупишь?
Или на одном месте долго сидишь?

Подпишись на канал!
Стань сильнее всех тех,
Кто не начал сегодня,
Загубил свой успех! 

Действуй чётко и быстро!
Не смотря на других!
Они сделали выбор...
Но ТЫ не из таких!

Ты бесстрашный Frontend'ер,
Программист всех миров!
IT-воин всесильный,
И властитель компов!

Я верю в тебя!
Я тебе помогу!
И ты станешь успешным, если я подскажу!

⭐️⭐️⭐️

Меня зовут - Андрей Шопинский и я ментор по Frontend-разработке.

🔴 1 марта в 18:30 по МСК я проведу бесплатный эфир в своём Telegram-канале на тему:

⚠️ Как Junior-разработчику пройти собеседование по JavaScript?

❗️Подписывайся на мой канал, чтобы не пропустить эфир! 

Реклама. Шопинский Андрей Олегович ИНН 312834439322. erid: LjN8KE4P7

Читать полностью…

Будни разработчика

#фишка дня

Сделали вы такие флекс-контейнер, потомки в колонку, по центру, красота.

Но тут что-то пошло не так и контейнер стал слишком узким. Появился скролл. Казалось бы, невелика потеря: пользователь поскроллит.

А вот фиг!

Контейнер просто обрежет самого широкого потомка и не даст посмотреть его содержимого.

Что же делать?

Очень просто, Стефан Юдис напоминает нам о существовании ключевого слова safe, которое можно передать аргументом в align-правило:

.container {
display: flex;
flex-direction: column;
align-items: safe center;
width: 50%;
}


Смотрим видео. Теперь можно будет спокойно доскроллить до края самого широкого элемента.

Подробнее: https://www.stefanjudis.com/today-i-learned/safe-unsafe-alignment-in-css-flexbox/

По поводу поддержки браузерами: Safari умеет только в бета-версии (Tech Preview), Chrome со 115 и Firefox с 63.

#flex #css #scroll

Читать полностью…

Будни разработчика

#статья дня

Очень часто в коде многих верстальщиков я наблюдаю примерно следующее:

font-weight: normal;
font-family: BrutalType-Bold, sans-serif;


Кажется, не все люди понимают, что же такое @font-face и с чего начать подключение шрифтов. Давайте разбираться.

Статья слишком длинная для канала, поэтому я её выложил на Телеграф: https://telegra.ph/CHto-takoe-font-face-07-16

#css #fonts #шрифты #бородач

Читать полностью…

Будни разработчика

Верстаешь?

Оцени 7 причин пройти наш бесплатный интенсив по Frontend-разработке:

1. Ты сверстаешь веб-сайт на HTML + CSS;
2. Оживишь страницу с помощью JavaScript;
3. Используешь фронтенд-фреймворк Angular;
4. Подключишь Backend и загрузишь сайт на хостинг;
5. Получишь советы по доработке своего проекта;
6. Добавишь в портфолио 1 качественный проект;
7. Получишь в подарок чек-лист «45 мест для поиска работы».

А главное, ты проведёшь 7 дней в приятной компании Fullstack-разработчика с 10-летним стажем – Романа Чернова.

👉 Проскочить на интенсив бесплатно

Начинаем 16 марта.

Читать полностью…

Будни разработчика

Не получается найти классную работу на удаленке, сидишь каждый день и смотришь вакансии? @TopSelectionWeb3 поможет тебе вырасти как специалисту

💼 Приходи на еженедельный разбор профилей LinkedIn в прямом эфире, от победителя Binance Хакатон

💼 Как всегда поделимся секретами чтобы ваш профиль привлекал жирные офферы. И, конечно же, будем разбирать настоящие профили в прямом эфире.

📆 Дата: 10 марта (вс) в 14:00 по мск

А также совсем скоро 14 марта, @TopSelectionWeb3 раскроет секреты, как кратно увеличить свой доход, работая в Web3/блокчейн-проектах. Приходи и начинай зарабатывать в Web3 вместе с нашей дружной аудиторией

Если хотите разбор своего кейса, то кидайте свои LinkedIn в комментарии под последним постом

Реклама, ООО "Мира", ОГРН 1167746248010

Читать полностью…

Будни разработчика

Бесплатный практический вебинар для всех возрастов: Профессия «Frontend-разработчик».

⏰ Когда: уже 14 марта в 19:00 по мск.

Вы узнаете о типичных рабочих задачах программиста и напишете мини-игру, которая работает прямо в браузере. Под капотом немного HTML+CSS и базовые конструкции JS.

Расскажем, что ждут работодатели от джунов, какие есть грейды во фронтенд-разработке и на какую зарплату рассчитывать в перспективе. Какие JS фреймворки учить: Vue, React, а может, Angular?

🎁 Всем, кто зарегистрировался — Карта компетенций начинающего Frontend-разработчика, а каждому участнику — Гайд «Как заговорить на сленге IT-специалистов».

Читать полностью…

Будни разработчика

Мы ищем молодого талантливого Support Frontend Developer'a на поддержку и развитие уже запущенных проектов в студию Chipsa.

Если ты:

Стремишься к постоянному росту;
Обожаешь создавать и развивать удивительные веб-приложения и сайты;
Внимателен к деталям;
Знаешь, что такое Barba.js, GSAP, и CSS-методология БЭМ;
Горишь желанием воплощать анимационные идеи;
Имеешь базовые знания TypeScript и опыт работы с React, Next.js, и API;
Хочешь работать над захватывающими проектами.

Хотим найти pre-junior / junior разработчика, ориентировочная вилка по з/п 45-65К, но рассмотрим все варианты.

Отправляй нам свое резюме на @chipsahr или на почту hr@chipsa.ru.

Читать полностью…

Будни разработчика

⁉️ Только начинаешь свой путь в IT, и для трудоустройства не хватает реального опыта работы?

Знакомая история? Тогда давай к нам! 🚀

PREAX онлайн-стажировка для frontend-разработчиков.

Помогаем накопить реальный 💪 опыт, формируем кадровый резерв для работодателей и привлекаем лучших к коммерческим заказам.

ЧТО ВНУТРИ?

🔖 Пять больших проектов. Пополнишь портфолио крутыми кейсами.

🔖 Спринты и дедлайны. Научишься рассчитывать время и укладываться в сроки.

🔖 Работа с легаси. Исправишь ошибки, оптимизируешь код и сделаешь рефакторинг.

🔖 Пачка код-ревью. Поделишься опытом и увидишь, как сделать свой код еще лучше.

🔖 Поддержка сообщества. Сможешь задать вопрос и получить совет, если нужна помощь.

🔖 Новый стек технологий. Закрепишь на практике и расширишь стек технологий.

🔖 Гибкий график. Сможешь выстраивать нагрузку, легко совмещая её с работой или учебой.

В итоге получишь реальный опыт работы в команде!

Попробуй! 1-й спринт — 🆓 БЕСПЛАТНО!

Реклама, ООО «Преакс Плэтформ», ОГРН 1237700372755

Читать полностью…

Будни разработчика

#codepen дня

Гори всё синим пламенем!

Эх, жаль, в своё время на проекте, где подобное было уместно, я не шибко много знал о шейдерах.

Впрочем Awwwards получили :)

Не то, что я сейчас о них что-то знаю, но хотя бы и поддержки сильно больше.

Ах да, ссылка: https://codepen.io/ksenia-k/full/yLQLyZa

Там, кстати, и описание процесса приложено. Где-то на канале я выкладывал WebGL-демки, с красивым похожим шейдером огня, можно попробовать применить 🙂

Спасибо Ксении Кондрашёвой.

#webgl #shader #бородач

Читать полностью…

Будни разработчика

#такое дня

Сейчас ASCII-графика это такой арт и способ передачи некоторых мемов. Но в 80х и 90х символы, встроенные в шрифт, использовались сплошь и рядом.

Увидеть игру, собранную целиком на символах из разных шрифтов, было чем-то совершенно обычным. Да и до сих пор в консоли можно увидеть прогресс загрузки из символов "\/|-", образующих спиннер.

Вот казалось бы, 2024 год на дворе. Можно вывести любую картинку. Консоли тоже давно не работают только в текстовом режиме...

Оттого удивительнее, что в Windows до сих пор прогресс загрузки в момент установки системы отрисовывается шрифтами! Segoe Boot, если быть точным.

В Half Life и Counter-Strike символы граффити, кстати, тоже.

Раз они упаковали это в шрифт, значит нам можно и нужно это использовать!

Предлагаю посмотреть забавный пример использования: https://z2r-yt.github.io/Fake-Windows-Update-Screen/

Теперь вы знаете, что делать, когда кто-то забыл заблокировать экран.

P. S. Очень, очень, рекомендую почитать комментарии к коду выше. Это потрясающе.

#font #spinner

Читать полностью…

Будни разработчика

👉 Как прорубить хотя бы «форточку» за бугор специалистам в РФ?

Более 100 000 разработчиков уехало из России — это факт. И эта цифра только растет с каждым днем.

Но почему? Все они работали с зарубежными компаниями, которые платят в 3-4 раза больше.

А кто остался — либо стали меньше зарабатывать, либо вообще остались без работы.

Но разве нет другого компромисса?

💁‍♂️ Теперь есть.

🔥 Salary — сервис оплаты работы фрилансерам и разработчикам из-за рубежа, который:

— Соблюдает все законодательные требования, связанные с международными финансовыми операциями;
— Обеспечивает безопасность финансовых транзакций и защиту информации;
— Обрабатывает транзакции не более 24 часов в рабочие дни, как правило, 1-2 часа;
— Предоставляет документацию по каждой выплате.

➡️ Это ваша «форточка» для получения оплаты из Европы и США: https://clck.ru/39CSHu

Читать полностью…

Будни разработчика

#молния дня

Как нам всем уже известно, в Евросоюзе Apple даст возможность использовать не только разные браузеры (в смысле, на разных движках), но и разные магазины приложений.

Я, кстати, сильно удивлен, что не все в курсе, что все браузеры на iOS используют единый системный движок WebKit под капотом.

Мне иногда пытаются доказать, что Chrome рендерит иначе, но это лишь постобработка.

Ладно, давайте к делу. Какое-то время назад поступила информация, что Apple мстит за эти решения Евросоюзу и хочет отказаться от PWA (progressive web apps) под предлогом, что для разных движков они не могут гарантировать такой же уровень безопасности песочницы.

Следует отметить, что PWA и правда умеют работать абсолютно независимо друг от друга, обладая каждое своим кешем и сервисами. Так что можно смело держать несколько аккаунтов в банках и тех же соцсетях, например.

Так или иначе, решение вызвало неистовую бурю возмущения. В итоге буквально вчера прошло официальное заявление от Apple о том, что PWA останутся, но работать будут все так же на WebKit.

Тут следует отметить, что, хоть на Android прогрессивные веб-приложения могут работать каждое в своем браузере, в магазин могут быть загружены только те, что используют системный движок Chrome WebView.

Так что хотя и можно повозмущаться в сторону iOS, решение лично мне кажется достаточно адекватным.

Победа или нет, котаны?

Читать полностью…

Будни разработчика

#такое дня

Невозможно заниматься фронтендом и не знать о существовании ресурса css-tricks.com

Когда-то он был одним из крупнейших ресурсов по верстке, взлетев достаточно быстро и собрав вокруг себя огромное сообщество заинтересованных людей.

Автором проекта, кстати, был создатель codepen.io, Крис Койер

Так вот, два года назад он продал проект самому неожиданному покупателю — DigitalOcean.

Казалось бы, где виртуальные сервера, а где — верстка. Но в продаже была своя логика: вокруг DigitalOcean тоже имеется большое сообщество и их статьи-руководства очень хороши. Была надежда, что дело пойдет.

Ну и бабки, конечно, камон.

Но... нет. CSS-Tricks.com де-факто мёртв. Сначала убрали выпускающего редактора, потом и всю остальную редакцию. Последние статьи вышли в начале прошлого года и в них нет вообще никакого смысла.

И вот, наконец, Крис Койер приоткрыл завесу о том, как происходила покупка и как он пытался — внезапно — вернуть контроль над сайтом: https://chriscoyier.net/2024/02/28/where-im-at-on-the-whole-css-tricks-thing/

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

Просто иногда они умирают, растворяясь в новой организации. А иногда — абсолютно ни за что :(

Спасибо, что хоть не закрыли архив.

Читать полностью…

Будни разработчика

Фронтам в помощь⚠️

Изучающим фронт и уже знающим будет очень полезно

React, Vue, обучающие статьи, коды, мемы, работы с codepen, всё то, что тебе так нужно, ты найдешь тут — твой очаг разработки 💻

Запрыгивай в автобус на канал Frontend Гид, чтобы быть в тонусе разработки📊

Читать полностью…

Будни разработчика

#фишка дня

Сейчас возвращается мода (и, по-моему, это правильно) на сохранение состояния вашего веб-приложения в адресной строке браузера.

Буквально — используя параметры строки запроса (query string parameters).

Ну то есть что-то вроде https://buy.that?title=Product&action=buy&config=2&amount=3, классические GET-параметры, но управляемые с фронта.

А вот как позволить клиенту обновить страницу, сохранив эти параметры? Желательно, без лишней работы и без использования JS вообще.

А очень просто!

<a href="">Reload</a>

Да, вот так просто! Самое классное, что абсолютно валидно и есть в спеках: https://stackoverflow.com/questions/5637969/is-an-empty-href-valid/43340108#43340108

В спеке буквально прописано, что такая ссылка ведёт на текущий документ, со всеми его параметрами запроса.

Не пишите лишнего, котаны!

#http #html #trick #бородач

Читать полностью…

Будни разработчика

#расширение дня

А что, если история гита может быть представлена не в виде вертикального списка?

А что, если можно правильно использовать анимации, акцентируя внимание на изменениях?

А что, если можно не открывать интерфейс git blame на каждый чих?

Именно так подумал Родриго Помбо и нафигачил прекрасное расширение для Visual Studio Code: Git File History.

Принцип действия понятен по виде, устанавливайте: https://marketplace.visualstudio.com/items?itemName=pomber.git-file-history

Всем git, котаны!

P. S. вы же в курсе, что устанавливать расширения можно из консоли?

Как-то так:


code --install-extension pomber.git-file-history


Если команда code недоступна, решение тут.

#git #history #vscode #бородач

Читать полностью…
Subscribe to a channel