MinskCSS Meetup #12
Сегодня вечером проводим очередной онлайн-митап для фронтендеров, где обсудим с классными спикерами всякое интересное:
- Алексей Назаренко объяснит особенности Shadow DOM, связанные с изоляцией и стилями.
- Глафира Жур расскажет, что есть полезного в мире AI для accessibility.
- Юлия Миоцен покажет, как моделировать и анимировать настоящего 3D-персонажа на CSS.
Программа митапа: https://telegra.ph/MinskCSS-Meetup-12-07-29
Трансляция на YouTube: https://www.youtube.com/watch?v=-s7s_IB2egc
Снова никакой регистрации. Просто приходите в 19:00 по минскому времени. Всех ждём 🙂
Сегодня вечером проводим очередной онлайн-митап для фронтендеров, где обсудим с классными спикерами всякое интересное:
- Алексей Назаренко объяснит особенности Shadow DOM, связанные с изоляцией и стилями.
- Глафира Жур расскажет, что есть полезного в мире AI для accessibility.
- Юлия Миоцен покажет, как моделировать и анимировать настоящего 3D-персонажа на CSS.
Программа митапа: https://telegra.ph/MinskCSS-Meetup-12-07-29
Трансляция на YouTube: https://www.youtube.com/watch?v=-s7s_IB2egc
Снова никакой регистрации. Просто приходите в 19:00 по минскому времени. Всех ждём 🙂
Telegraph
MinskCSS Meetup #12
Продолжение сезона митапов по фронтенду от минских сообществ! 12-ый митап MinskCSS состоится 7 августа 2024 года в 19:00, полностью ONLINE. Подключайтесь к трансляции, запасайтесь вкусняхами и открывайте чатик, чтобы общаться с другими зрителями и задавать…
❤20🎉7❤🔥6👍6
Подкаст «Гости из IT». Олимпиадное программирование
Сходил в гости в подкаст с Антоном Комоловым «Гости из IT», где вместе с тренером чемпионов мира ICPC Михаилом Густокашиным обсудили с ведущими подкаста, что такое олимпиадное программирование, полезно ли оно в работе, даёт ли это какие-то преимущества в трудоустройстве и может ли ИИ победить чемпиона мира по программированию.
Мало кто знает, но в школе я занимался олимпиадным программированием, доходил до областного этапа олимпиады по информатике, постоянно брал там дипломы II степени. А в университете мне повезло быть в рабочей группе организаторов первых чемпионатов по программированию BSUIR Open, который до сих пор пользуется уважением в олимпиадном сообществе. Ну а сейчас я руковожу сервисами, которые помогают проводить контесты и соревнования. Было приятно поностальгировать.
https://podcast.ru/e/599XsTl4qNW
Сходил в гости в подкаст с Антоном Комоловым «Гости из IT», где вместе с тренером чемпионов мира ICPC Михаилом Густокашиным обсудили с ведущими подкаста, что такое олимпиадное программирование, полезно ли оно в работе, даёт ли это какие-то преимущества в трудоустройстве и может ли ИИ победить чемпиона мира по программированию.
Мало кто знает, но в школе я занимался олимпиадным программированием, доходил до областного этапа олимпиады по информатике, постоянно брал там дипломы II степени. А в университете мне повезло быть в рабочей группе организаторов первых чемпионатов по программированию BSUIR Open, который до сих пор пользуется уважением в олимпиадном сообществе. Ну а сейчас я руковожу сервисами, которые помогают проводить контесты и соревнования. Было приятно поностальгировать.
https://podcast.ru/e/599XsTl4qNW
Podcast.ru
Олимпиадное программирование: от спортивных побед на ICPC до работы в топовых IT-компаниях – Гости из IT – Podcast.ru
В этом выпуске мы поговорили о соревнованиях в программировании: олимпиады в школе и университете, программирование как спорт, хакатоны и контесты во взрослом возрасте. Какие плюсы и минусы можно выделить у абстрактных спортивных программистов при работе…
🔥15🐳4❤3👍3
Официальная поддержка Firefox в Puppeteer
Для автоматизации тестирования в браузере всё чаще вместо Selenium используют Playwright или Puppeteer. Удобно, когда можно поднять реальный браузер в «безголовом» режиме и тестировать страницу ровно такую, какую «видит» пользователь.
Чисто субъективно мне всегда по функциям и обилию API больше нравился Puppeteer. В нём как минимум есть классная возможность генерировать PDF с большим количеством настроек. Но при этом по сути Puppeteer всегда был под капотом Chrome. А мне важна кроссбраузерность. У пользователей Firefox сайт тоже должен работать.
Начиная с Puppeteer 23 тестировать кроссбраузерно станет проще, там появляется официальная поддержка Firefox. Не все API работают, список можно посмотреть в статье, но большую часть потребностей закрывает.
https://hacks.mozilla.org/2024/08/puppeteer-support-for-firefox/
Для автоматизации тестирования в браузере всё чаще вместо Selenium используют Playwright или Puppeteer. Удобно, когда можно поднять реальный браузер в «безголовом» режиме и тестировать страницу ровно такую, какую «видит» пользователь.
Чисто субъективно мне всегда по функциям и обилию API больше нравился Puppeteer. В нём как минимум есть классная возможность генерировать PDF с большим количеством настроек. Но при этом по сути Puppeteer всегда был под капотом Chrome. А мне важна кроссбраузерность. У пользователей Firefox сайт тоже должен работать.
Начиная с Puppeteer 23 тестировать кроссбраузерно станет проще, там появляется официальная поддержка Firefox. Не все API работают, список можно посмотреть в статье, но большую часть потребностей закрывает.
https://hacks.mozilla.org/2024/08/puppeteer-support-for-firefox/
🔥23👍6❤1👏1
Как Google обрабатывает JavaScript во время индексации
Есть несколько мифов по поводу того, как Google индексирует SPA-приложения. Например, что боты-краулеры не умеют в JavaScript совсем. Или что для обхода сайтов Google использует древние версии Chrome. И другие.
Беда в том, что у Google нет ни одной полной странички с документацией, как именно поисковик обходит сайты и как краулеры эти самые сайты загружают, обрабатывают и индексируют. И даже та документация, что есть, не даёт полного понимания, что сделать, чтобы бот точно всё распарсил правильно. Оно и понятно: зная точную механику, можно стать повелителем SEO.
Vercel вместе с MERJ провели эксперимент, обложив 100000 запросов от гуглобота разными замерами. Как именно они это сделали, лучше посмотреть в статье, есть даже примеры кода. И получили они такие знания:
1. Googlebot отлично справляется с любым JavaScript. Синхронным, асинхронным, из фреймворков.
2. Рендерит он только страницы с HTTP-кодами 200 и 304. Остальные коды не рендерит в принципе. Поэтому не забывайте отправлять корректные коды ошибок на страницы, это влияет на позиции в выдаче.
3. Googlebot умеет находить ссылки внутри JavaScript, не только в HTML. Причём смотрит он именно на готовые ссылки, не encoded URL.
4. Наличие
5. Метатег
6. Тяжёлые страницы с большим количеством JavaScript краулятся медленнее, могут долго висеть в очереди. Поэтому перфоманс страницы всё-таки влияет на SEO.
7. Если в
Понятно, что по сути это снепшот текущего состояния краулинга, который основан на предположениях и выводах из корреляции. Но всё равно это лучше, чем ничего. Как минимум можно не бояться, что JavaScript у поисковика не работает, и ради этого пилить отдельные версии сайта.
https://vercel.com/blog/how-google-handles-javanoscript-throughout-the-indexing-process
Есть несколько мифов по поводу того, как Google индексирует SPA-приложения. Например, что боты-краулеры не умеют в JavaScript совсем. Или что для обхода сайтов Google использует древние версии Chrome. И другие.
Беда в том, что у Google нет ни одной полной странички с документацией, как именно поисковик обходит сайты и как краулеры эти самые сайты загружают, обрабатывают и индексируют. И даже та документация, что есть, не даёт полного понимания, что сделать, чтобы бот точно всё распарсил правильно. Оно и понятно: зная точную механику, можно стать повелителем SEO.
Vercel вместе с MERJ провели эксперимент, обложив 100000 запросов от гуглобота разными замерами. Как именно они это сделали, лучше посмотреть в статье, есть даже примеры кода. И получили они такие знания:
1. Googlebot отлично справляется с любым JavaScript. Синхронным, асинхронным, из фреймворков.
2. Рендерит он только страницы с HTTP-кодами 200 и 304. Остальные коды не рендерит в принципе. Поэтому не забывайте отправлять корректные коды ошибок на страницы, это влияет на позиции в выдаче.
3. Googlebot умеет находить ссылки внутри JavaScript, не только в HTML. Причём смотрит он именно на готовые ссылки, не encoded URL.
4. Наличие
sitemap.xml значительно ускоряет обработку ботом, что изменилось на сайте. То есть если вы боретесь за актуальность ссылок в поисковой выдаче, на sitemap.xml надо обратить внимание в первую очередь.5. Метатег
noindex работает. Но только если он пришёл в HTML, а не вставился при помощи JavaScript уже на клиенте. Если вы прячете странички от индексации уже на клиенте — это не работает, нужно уносить логику на сервер.6. Тяжёлые страницы с большим количеством JavaScript краулятся медленнее, могут долго висеть в очереди. Поэтому перфоманс страницы всё-таки влияет на SEO.
7. Если в
robots.txt запретить нечаянно доступ к папкам со скриптами и другими ассетами, они не загрузятся. Проверьте свой robots.txt, нет ли там чего-нибудь лишнего.Понятно, что по сути это снепшот текущего состояния краулинга, который основан на предположениях и выводах из корреляции. Но всё равно это лучше, чем ничего. Как минимум можно не бояться, что JavaScript у поисковика не работает, и ради этого пилить отдельные версии сайта.
https://vercel.com/blog/how-google-handles-javanoscript-throughout-the-indexing-process
Vercel
How Google handles JavaScript throughout the indexing process - Vercel
Over the years, Google's treatment of JavaScript has changed, leaving us with misconceptions of how it's indexed. Here, we debunk the myths.
🔥50👍15❤8👏3🤯2
Генератор пружинистого изинга
Кевин Грахеда поделился инструментом, который поможет генерировать пружинистую анимацию движения. Часто видел такие в элементах, которые хотят привлечь к себе внимание.
Анимации сделаны на функции
https://www.kvin.me/css-springs
Кевин Грахеда поделился инструментом, который поможет генерировать пружинистую анимацию движения. Часто видел такие в элементах, которые хотят привлечь к себе внимание.
Анимации сделаны на функции
linear(), так что не забудьте убедиться, что ваша браузерная поддержка в проекте позволяет ими пользоваться.https://www.kvin.me/css-springs
www.kvin.me
CSS Spring Easing Generator
A tool designed to intuitively generate spring animations for CSS linear(). Includes presets and customizable inputs for perceptual duration and bounce.
👍22❤🔥5🔥4
Браузерное расширение Resource Override для фронтендеров
Иногда возникает нужда переопределить какой-то ресурс для дебага. Например, сервер возвращает сломанный JSON, а хочется протестировать починенный, не делая релиз. Или вы сделали фикс библиотеки, которая лежит на CDN, и хотите посмотреть, как она себя ведёт в проекте.
В Chrome и Safari есть возможность подменять файлы на уровне DevTools. Но динамику так не протестировать, к тому же каждый отдельный файл подменять, когда хочется подменить целую папку, муторно.
Марио Хаманн делится браузерным расширением, которое работает как прокси. Если вам нужно подменить обращения к каким-нибудь ресурсам по маске, оно умеет подменять на другие ресурсы с сохранением этой самой маски.
А ещё при помощи этого расширения можно «патчить» чужие сайты в Интернете.
Не скажу, что это что-то очень уж новое. Подменять ресурсы можно разными способами. Патчить продакшен разные расширения вроде Tampermonkey тоже позволяют довольно давно. Но расширений-прокси 2-в-1 до этого не видел, показалось интересным, чтобы поделиться.
https://mariohamann.com/resource-override-for-frontend-development
Иногда возникает нужда переопределить какой-то ресурс для дебага. Например, сервер возвращает сломанный JSON, а хочется протестировать починенный, не делая релиз. Или вы сделали фикс библиотеки, которая лежит на CDN, и хотите посмотреть, как она себя ведёт в проекте.
В Chrome и Safari есть возможность подменять файлы на уровне DevTools. Но динамику так не протестировать, к тому же каждый отдельный файл подменять, когда хочется подменить целую папку, муторно.
Марио Хаманн делится браузерным расширением, которое работает как прокси. Если вам нужно подменить обращения к каким-нибудь ресурсам по маске, оно умеет подменять на другие ресурсы с сохранением этой самой маски.
А ещё при помощи этого расширения можно «патчить» чужие сайты в Интернете.
Не скажу, что это что-то очень уж новое. Подменять ресурсы можно разными способами. Патчить продакшен разные расширения вроде Tampermonkey тоже позволяют довольно давно. Но расширений-прокси 2-в-1 до этого не видел, показалось интересным, чтобы поделиться.
https://mariohamann.com/resource-override-for-frontend-development
mariohamann.com
Browser Extension "Resource Override" for Frontend Development
Describing my use of a browser extension that redirects URL patterns to wherever-you-want to boost specific frontend tasks
👍54❤🔥8❤3🔥3
Видео с альфа-прозрачностью на веб-страницах
Джейк Арчибальд задался вопросом, как эффективнее всего вставлять на веб-страницы видео, у которых есть прозрачный фон. Для всяких промо такое иногда нужно. И сделал интересные выводы.
- AVIF не подходит. Он умеет в анимации и прозрачность, под капотом использует видеокодек AV1, но Safari прозрачность не поддерживает, а использовать
- VP9 и HEVC уже лучше. Но на момент написания статьи в Chrome для Android был баг с прозрачностью, а в Firefox на Android часто останавливается воспроизведение.
- Собрать видео двойной высоты, где верхняя половина — видео, а нижняя половина — маска для видео, а потом при помощи WebGL маскировать одно другим. Вот такой подход у Джейка сработал везде, где нужно.
Чтобы вам не писать шейдеры самостоятельно, Джейк собрал веб-компонент, который берёт рендеринг на себя. И в статье приложил инструкцию, какие настройки применять в
https://jakearchibald.com/2024/video-with-transparency/
Джейк Арчибальд задался вопросом, как эффективнее всего вставлять на веб-страницы видео, у которых есть прозрачный фон. Для всяких промо такое иногда нужно. И сделал интересные выводы.
- AVIF не подходит. Он умеет в анимации и прозрачность, под капотом использует видеокодек AV1, но Safari прозрачность не поддерживает, а использовать
img для воспроизведения видео в принципе не самый правильный подход, потому что браузеры обрабатывают анимации по-другому.- VP9 и HEVC уже лучше. Но на момент написания статьи в Chrome для Android был баг с прозрачностью, а в Firefox на Android часто останавливается воспроизведение.
- Собрать видео двойной высоты, где верхняя половина — видео, а нижняя половина — маска для видео, а потом при помощи WebGL маскировать одно другим. Вот такой подход у Джейка сработал везде, где нужно.
Чтобы вам не писать шейдеры самостоятельно, Джейк собрал веб-компонент, который берёт рендеринг на себя. И в статье приложил инструкцию, какие настройки применять в
ffmpeg для каждого из форматов.https://jakearchibald.com/2024/video-with-transparency/
Jakearchibald
Video with alpha transparency on the web
It's better to do it yourself.
🤯38🔥19👍2❤1😍1
Forwarded from Ural Digital Weekend — официальный канал
Сайт, готовый ко всему: где и как вас могут открывать
А мы уже готовы делиться записями Ural Digital Weekend 2024! И первый доклад, ссылку на который мы опубликуем — «Сайт, готовый ко всему: где и как вас могут открывать» от Никиты Дубко, руководителя службы разработки в Яндекс.
Вспомните, где вы обычно тестируете свое веб-приложение. Скорее всего, у вас есть несколько вьюпортов, в которых вы быстро проверяете верстку и, возможно, пишете автотесты. И багов от пользователей почти нет — значит, все делаете правильно. Но как вашим сайтом пользуются на самом деле? Что нужно предусмотреть, чтобы сайт работал действительно почти везде?
В докладе вы найдете множество интересных примеров и отсылок. Заходите посмотреть 🙂
Ссылка на запись доклада на YouTube.
Ссылка на запись доклада в ВКонтакте.
Ссылка на презентацию: https://goo.su/NRSJ7J
А мы уже готовы делиться записями Ural Digital Weekend 2024! И первый доклад, ссылку на который мы опубликуем — «Сайт, готовый ко всему: где и как вас могут открывать» от Никиты Дубко, руководителя службы разработки в Яндекс.
Вспомните, где вы обычно тестируете свое веб-приложение. Скорее всего, у вас есть несколько вьюпортов, в которых вы быстро проверяете верстку и, возможно, пишете автотесты. И багов от пользователей почти нет — значит, все делаете правильно. Но как вашим сайтом пользуются на самом деле? Что нужно предусмотреть, чтобы сайт работал действительно почти везде?
В докладе вы найдете множество интересных примеров и отсылок. Заходите посмотреть 🙂
Ссылка на запись доклада на YouTube.
Ссылка на запись доклада в ВКонтакте.
Ссылка на презентацию: https://goo.su/NRSJ7J
YouTube
Сайт, готовый ко всему — Никита Дубко / Ural Digital Weekend 2024
«Сайт, готовый ко всему» — Никита Дубко (Яндекс, руководитель службы разработки)
Вспомните, где вы обычно тестируете свое веб-приложение. Скорее всего, у вас есть несколько вьюпортов, в которых вы быстро проверяете верстку и, возможно, пишете автотесты.…
Вспомните, где вы обычно тестируете свое веб-приложение. Скорее всего, у вас есть несколько вьюпортов, в которых вы быстро проверяете верстку и, возможно, пишете автотесты.…
👍32❤16🤔2
Project manager, program manager и product manager — зоны ответственности, навыки и образование
Видео выходного дня. Юлия Белозёрова объясняет, чем отличается Project Manager от Program Manager и Product Manager, и делится советами, на что стоит сделать упор, если хотите делать карьеру в одной из веток.
Для меня всегда было не очень понятно, чем эти роли кардинально отличаются, потому что я видел и проджектов, которые умеют в продуктовые метрики и развитие продукта, и продактов, которые двигают процессы в командах и занимаются наймом. Но разделение есть, понимать его хочется. После просмотра интервью мне стало понятнее.
https://www.youtube.com/watch?v=HapZUWiWvWA
Видео выходного дня. Юлия Белозёрова объясняет, чем отличается Project Manager от Program Manager и Product Manager, и делится советами, на что стоит сделать упор, если хотите делать карьеру в одной из веток.
Для меня всегда было не очень понятно, чем эти роли кардинально отличаются, потому что я видел и проджектов, которые умеют в продуктовые метрики и развитие продукта, и продактов, которые двигают процессы в командах и занимаются наймом. Но разделение есть, понимать его хочется. После просмотра интервью мне стало понятнее.
https://www.youtube.com/watch?v=HapZUWiWvWA
YouTube
Project manager, program manager и product manager – зоны ответственности, навыки и образование.
Симулятор "Интервью с пользователями для продакта". Обучение планированию, проведению и анализу интервью на живых кейсах. Начать заниматься можно прямо сейчас: https://productdo.it/customerresearch?utm_source=youtube&utm_medium=ahoy
Юля Белозёрова, Senior…
Юля Белозёрова, Senior…
👍8🥰5🤔4😱1
State of CSS 2024
У меня в планах на вечер сегодня пройти опрос State of CSS. Стараюсь делать это каждый год, чтобы своим мнением влиять на приоритеты браузеров. А браузерные деврелы результаты этих опросов точно используют, официально про это упоминают. И разработчики спецификаций на результаты смотрят. Так что всё не зря.
Для тех, кто никогда не участвовал в State of CSS: это такой опрос, где много вопросов про то, какие фичи вы знаете, какие нравятся, чего не хватает в CSS, какие фреймворки помогают или мешают работать и так далее.
Присоединяйтесь.
https://survey.devographics.com/en-US/survey/state-of-css/2024
У меня в планах на вечер сегодня пройти опрос State of CSS. Стараюсь делать это каждый год, чтобы своим мнением влиять на приоритеты браузеров. А браузерные деврелы результаты этих опросов точно используют, официально про это упоминают. И разработчики спецификаций на результаты смотрят. Так что всё не зря.
Для тех, кто никогда не участвовал в State of CSS: это такой опрос, где много вопросов про то, какие фичи вы знаете, какие нравятся, чего не хватает в CSS, какие фреймворки помогают или мешают работать и так далее.
Присоединяйтесь.
https://survey.devographics.com/en-US/survey/state-of-css/2024
State of CSS 2024
Take the State of CSS survey
⚡21❤13👌7❤🔥2
Частые заблуждения про оптимизацию LCP
Если вы работаете с оптимизацией перфоманса страниц, то метрика LCP (Largest Contentful Paint) точно попадалась вам на глаза. Это время от начала загрузки страницы до отрисовки самого большого блока во вьюпорте. Таким блоком может быть и текст, но часто это какая-то картинка, привлекающая внимание. И так как LCP является важной составляющей Core Web Vitals, приходится эту метрику оптимизировать.
В статье Брендана Кенни разбирается миф о том, что для оптимизации LCP достаточно сделать картинки меньше по размеру: использовать современные форматы изображений, сжимать картинки.
На самом деле до отрисовки картинки есть ещё несколько этапов, которые можно посчитать в секундах: время до первого байта, время на задержку запроса за ресурсом, время загрузки ресурса и время рендеринга. И, как показывает статистика, на 75-м перцентиле исследованных сайтов с высокими значениями LCP время на загрузку составляет меньше 10% от всего времени LCP. Да, эти 10% тоже важно оптимизировать, но как будто стоит обратить внимание на остальные этапы.
Брендан советует обращать внимание на следующие этапы:
- Оптимизировать TTFB, время до первого байта. Если у вас нет CDN, а у пользователя слабая сеть, то на TTFB может уходить около 2.5 секунд (на исследованных сайтах), а это очень много.
- Сделать так, чтобы важный ресурс запрашивался заранее. Подсказать браузеру через
- Исследовать задержки рендеринга. Возможно, где-то у вас есть кусок JS, который тормозит запрос за картинкой или отрисовку во вьюпорте. Этот совет в том числе и другие метрики улучшит.
Больше полезных чисел — по ссылке.
https://web.dev/blog/common-misconceptions-lcp
Если вы работаете с оптимизацией перфоманса страниц, то метрика LCP (Largest Contentful Paint) точно попадалась вам на глаза. Это время от начала загрузки страницы до отрисовки самого большого блока во вьюпорте. Таким блоком может быть и текст, но часто это какая-то картинка, привлекающая внимание. И так как LCP является важной составляющей Core Web Vitals, приходится эту метрику оптимизировать.
В статье Брендана Кенни разбирается миф о том, что для оптимизации LCP достаточно сделать картинки меньше по размеру: использовать современные форматы изображений, сжимать картинки.
На самом деле до отрисовки картинки есть ещё несколько этапов, которые можно посчитать в секундах: время до первого байта, время на задержку запроса за ресурсом, время загрузки ресурса и время рендеринга. И, как показывает статистика, на 75-м перцентиле исследованных сайтов с высокими значениями LCP время на загрузку составляет меньше 10% от всего времени LCP. Да, эти 10% тоже важно оптимизировать, но как будто стоит обратить внимание на остальные этапы.
Брендан советует обращать внимание на следующие этапы:
- Оптимизировать TTFB, время до первого байта. Если у вас нет CDN, а у пользователя слабая сеть, то на TTFB может уходить около 2.5 секунд (на исследованных сайтах), а это очень много.
- Сделать так, чтобы важный ресурс запрашивался заранее. Подсказать браузеру через
<link rel="preload">, например. И пока парсер реально дойдёт до картинки в коде и дождётся выполнения всех синхронных JS-операций, за это время часть полезной работы уже будет проделана.- Исследовать задержки рендеринга. Возможно, где-то у вас есть кусок JS, который тормозит запрос за картинкой или отрисовку во вьюпорте. Этот совет в том числе и другие метрики улучшит.
Больше полезных чисел — по ссылке.
https://web.dev/blog/common-misconceptions-lcp
web.dev
Common misconceptions about how to optimize LCP | Blog | web.dev
Explore common misconceptions about optimizing Largest Contentful Paint (LCP) by looking beyond image optimization and considering factors like Time to First Byte (TTFB) and resource load delay.
❤37👍10😁1
Есть ли будущее у Node.js? / Андрей Мелихов и Кирилл Мокевнин
Видео выходного дня. Андрей и Кирилл рассуждают, какое место у Node.js в разработческих задачах, почему какие-то фреймворки взлетают, а какие-то умирают, зачем Node.js-разработчики каждые пару лет радостно бегут всё переписывать, помогает ли TypeScript и какое у этого всего будущее.
https://youtu.be/98qu3CqRNb8
Видео выходного дня. Андрей и Кирилл рассуждают, какое место у Node.js в разработческих задачах, почему какие-то фреймворки взлетают, а какие-то умирают, зачем Node.js-разработчики каждые пару лет радостно бегут всё переписывать, помогает ли TypeScript и какое у этого всего будущее.
https://youtu.be/98qu3CqRNb8
YouTube
Есть ли будущее у Node.js? / Андрей Мелихов #6
Node.js — мощный инструмент, который часто используется как для фронтенда, так и для бэкенда. В этом видео вместе с Андреем Мелиховым, Lead Developer в Yandex.Cloud@devschacht, обсудим, как Node.js помогает создавать BFF (Backend For Frontend), проблемы…
👍24❤5🔥2🥰2
Базовые комбинации клавиш для ссылок с фокусом
Эрик Бейли столкнулся с необходимостью создания синтетических ссылок: ведут себя как нативные ссылки, но нативными ссылками не являются. И много усилий потратил на то, чтобы исследовать, как реагируют сфокусированные ссылки на разные комбинации клавиш: Shift + Enter, Function + Enter, Control + Enter, Option + Enter, Alt + Enter, Command + Enter.
Важные выводы:
- Cmd и Ctrl — не одно и то же. Alt и Option — тоже. Потому что разные операционные системы воспринимают их по-разному, чаще игнорируя кнопки от конкурирующих производителей. В коде их нужно разделять.
- На мобильных ОС браузеры верят в существование клавиатур, поэтому поддерживают сокращения тоже. На мобилке можно подключать внешнюю клавиатуру.
- Такие сокращения — важные пользовательские привычки. Поэтому если уж делаете синтетические ссылки, постарайтесь не сломать нативное поведение.
- Нативное поведение проще всего реализовать, используя нативные элементы.
https://ericwbailey.website/published/basic-keyboard-shortcut-support-for-focused-links/
Эрик Бейли столкнулся с необходимостью создания синтетических ссылок: ведут себя как нативные ссылки, но нативными ссылками не являются. И много усилий потратил на то, чтобы исследовать, как реагируют сфокусированные ссылки на разные комбинации клавиш: Shift + Enter, Function + Enter, Control + Enter, Option + Enter, Alt + Enter, Command + Enter.
Важные выводы:
- Cmd и Ctrl — не одно и то же. Alt и Option — тоже. Потому что разные операционные системы воспринимают их по-разному, чаще игнорируя кнопки от конкурирующих производителей. В коде их нужно разделять.
- На мобильных ОС браузеры верят в существование клавиатур, поэтому поддерживают сокращения тоже. На мобилке можно подключать внешнюю клавиатуру.
- Такие сокращения — важные пользовательские привычки. Поэтому если уж делаете синтетические ссылки, постарайтесь не сломать нативное поведение.
- Нативное поведение проще всего реализовать, используя нативные элементы.
https://ericwbailey.website/published/basic-keyboard-shortcut-support-for-focused-links/
Eric Bailey
Basic keyboard shortcut support for focused links
Links do so, so many things.
👍20❤3❤🔥1
Как быстро конвертировать Chrome-расширение в Safari-расширение
Нина Торгунакова показывает, как из готового расширения для Chrome реализовать расширение для Safari. Про подготовку расширения для Chrome было здесь. Большую часть работы берёт на себя встроенный в XCode конвертер, но так как Safari не умеет многих вещей, которые работают в расширениях для Chrome, местами нужно пописать код на Swift.
Бонусом есть инструкция, как подготовить расширение для публикации в App Store.
https://evilmartians.com/chronicles/how-to-quickly-and-weightlessly-convert-chrome-extensions-to-safari
Нина Торгунакова показывает, как из готового расширения для Chrome реализовать расширение для Safari. Про подготовку расширения для Chrome было здесь. Большую часть работы берёт на себя встроенный в XCode конвертер, но так как Safari не умеет многих вещей, которые работают в расширениях для Chrome, местами нужно пописать код на Swift.
Бонусом есть инструкция, как подготовить расширение для публикации в App Store.
https://evilmartians.com/chronicles/how-to-quickly-and-weightlessly-convert-chrome-extensions-to-safari
evilmartians.com
How to quickly (and weightlessly) convert Chrome extensions to Safari—Martian Chronicles, Evil Martians’ team blog
Created a browser extension for Chrome and now want it available in Safari too? Learn how and get guidelines on the extra steps needed for App Store publication.
👍20🔥9
Пробелы в HTML сломаны
Дуглас Паркер решил разобраться, как работают пробелы в HTML. Да, вам не показалось. Он исследовал поведение одного символа в документах. Если быть честнее, то двух, ещё неразрывный
Если вы не знали, то в HTML действительно есть механизм схлопывания пробельных символов, в котором много разных нюансов. Например, пробелы бывают значимыми и незначимыми. Если пробел незначимый, то есть высокий шанс, что в отрендеренном варианте его не станет. Например, если вы вставите пробел в самое начало содержимого тега, то он исчезнет. А вот пробел в конце тега, когда после тега есть ещё какой-нибудь текст, уже значение имеет, поэтому можно часто встретить в интернете ссылки с подчёркиванием пробела в конце.
А ещё при помощи CSS можно сделать так, чтобы пробелы начали либо учитываться все сразу, либо только переносы строк, либо ещё как-то.
Чтобы банально не пересказывать статью, просто советую её прочитать, там хорошие примеры на разобраться.
Дуглас подсветил интересную проблему. По сути у нас сейчас нет способа задать неубираемый пробел явно спецсимволом. Мы можем задать между словами обычный пробел — но его судьба очень шаткая, сильно зависит от того, блочный или инлайновый контекст, что написано в CSS, есть ли вокруг флекс-контейнер и так далее. У нас есть неразрывный пробел
Ещё одна интересная мысль: prettier и прочие форматтеры могут ломать вёрстку. Просто потому, что наличие или отсутствие пробела — это не прихоть для форматирования кода, а вполне себе необходимость для корректной вёрстки. У prettier есть настройка для уважительного отношения к пробелам от автора, но по умолчанию она включена в нестрогий режим, а силу дефолта не стоит недооценивать. Теперь хоть буду понимать, почему иногда ломается вёрстка, а не просто убирать пробел и радоваться, что каким-то чудом заработало.
В конце автор предлагает совсем уж безумную идею: переписать формат HTML, чтобы как в языках программирования появилась сущность «строка», то есть использовать тройные кавычки или ещё какие-то отделители от другой разметки, которые бы давали парсеру понять, что эту строку надо обрабатывать по-особенному. Но тут я немножко выпал в осадок, идея кажется слишком безумной, чтобы когда-нибудь такое появилось в реальности. Но кто знает. У нас же не просто так существует doctype у документов, теоретически такой режим возможен.
https://blog.dwac.dev/posts/html-whitespace/
Дуглас Паркер решил разобраться, как работают пробелы в HTML. Да, вам не показалось. Он исследовал поведение одного символа в документах. Если быть честнее, то двух, ещё неразрывный
исследовал.Если вы не знали, то в HTML действительно есть механизм схлопывания пробельных символов, в котором много разных нюансов. Например, пробелы бывают значимыми и незначимыми. Если пробел незначимый, то есть высокий шанс, что в отрендеренном варианте его не станет. Например, если вы вставите пробел в самое начало содержимого тега, то он исчезнет. А вот пробел в конце тега, когда после тега есть ещё какой-нибудь текст, уже значение имеет, поэтому можно часто встретить в интернете ссылки с подчёркиванием пробела в конце.
А ещё при помощи CSS можно сделать так, чтобы пробелы начали либо учитываться все сразу, либо только переносы строк, либо ещё как-то.
Чтобы банально не пересказывать статью, просто советую её прочитать, там хорошие примеры на разобраться.
Дуглас подсветил интересную проблему. По сути у нас сейчас нет способа задать неубираемый пробел явно спецсимволом. Мы можем задать между словами обычный пробел — но его судьба очень шаткая, сильно зависит от того, блочный или инлайновый контекст, что написано в CSS, есть ли вокруг флекс-контейнер и так далее. У нас есть неразрывный пробел
 , который одновременно не даёт пробел убрать (потому что это особенный пробел), но при этом ещё и не даёт разделить слова между собой. Но если мы хотим дать возможность переносить слова, но не давать их слепить браузеру, когда перенос не нужен — такого символа нет. При этом в статье есть примеры вроде CMS и прочих мест, где такие пробелы вставить иногда нужно.Ещё одна интересная мысль: prettier и прочие форматтеры могут ломать вёрстку. Просто потому, что наличие или отсутствие пробела — это не прихоть для форматирования кода, а вполне себе необходимость для корректной вёрстки. У prettier есть настройка для уважительного отношения к пробелам от автора, но по умолчанию она включена в нестрогий режим, а силу дефолта не стоит недооценивать. Теперь хоть буду понимать, почему иногда ломается вёрстка, а не просто убирать пробел и радоваться, что каким-то чудом заработало.
В конце автор предлагает совсем уж безумную идею: переписать формат HTML, чтобы как в языках программирования появилась сущность «строка», то есть использовать тройные кавычки или ещё какие-то отделители от другой разметки, которые бы давали парсеру понять, что эту строку надо обрабатывать по-особенному. Но тут я немножко выпал в осадок, идея кажется слишком безумной, чтобы когда-нибудь такое появилось в реальности. Но кто знает. У нас же не просто так существует doctype у документов, теоретически такой режим возможен.
https://blog.dwac.dev/posts/html-whitespace/
blog.dwac.dev
HTML Whitespace is Broken - Devel without a Cause
A deep dive into HTML whitespace collapsing: How it works, why it sucks, how it should work, and how to deal with it.
👍37❤9👏3😐1
Насколько мой фронтенд плох?
Видео выходного дня. Семён Левенсон объясняет разницу между рефакторингом и реинжинирингом, предлагает плохометры для оценки качества кодовой базы (на основе идеи Ильи Климова) и показывает несколько примеров, как такие плохометры автоматически собирать.
https://youtube.com/watch?v=T43jrG1ewTc
Видео выходного дня. Семён Левенсон объясняет разницу между рефакторингом и реинжинирингом, предлагает плохометры для оценки качества кодовой базы (на основе идеи Ильи Климова) и показывает несколько примеров, как такие плохометры автоматически собирать.
https://youtube.com/watch?v=T43jrG1ewTc
YouTube
Насколько мой фронтенд плох? – Семен Левенсон / #DevTalks
В своем докладе Семен рассказал:
- какие метрики кодовой базы можно замерять и почему это важно;
- при этом, как это делать быстро и легко;
- как это все визуализировать.
Доклад поможет вам оцифровать масштаб бедствия в ваших проектах и аргументировать менеджеру…
- какие метрики кодовой базы можно замерять и почему это важно;
- при этом, как это делать быстро и легко;
- как это все визуализировать.
Доклад поможет вам оцифровать масштаб бедствия в ваших проектах и аргументировать менеджеру…
🔥27👍5❤2🤩2
CLI для caniuse
Брамус собрал консольную утилиту, чтобы смотреть на данные caniuse прямо из терминала. Причём можно ещё и подключить автодополнение для bash/zsh/fish.
Поигрался — выглядит интересно. Если надо быстро посмотреть поддержку, без деталей, то экономит время. Но полноценной заменой caniuse, конечно, эта утилита не станет. Уж слишком я люблю с фильтрами разными на сайте играться. И не всегда помню правильное название CSS-фичи, ищу по ключевым словами, а утилита от Брамуса не всегда понимает, что я от неё хочу.
https://github.com/bramus/caniuse-cli
Брамус собрал консольную утилиту, чтобы смотреть на данные caniuse прямо из терминала. Причём можно ещё и подключить автодополнение для bash/zsh/fish.
Поигрался — выглядит интересно. Если надо быстро посмотреть поддержку, без деталей, то экономит время. Но полноценной заменой caniuse, конечно, эта утилита не станет. Уж слишком я люблю с фильтрами разными на сайте играться. И не всегда помню правильное название CSS-фичи, ищу по ключевым словами, а утилита от Брамуса не всегда понимает, что я от неё хочу.
https://github.com/bramus/caniuse-cli
GitHub
GitHub - bramus/caniuse-cli: Command line tool for “Can I Use …” and MDN Browser Compat Data
Command line tool for “Can I Use …” and MDN Browser Compat Data - bramus/caniuse-cli
👍28
Состояние ES5 в вебе
Филип Уолтон ещё в 2017 году показал технику, которая позволяет для старых браузеров загружать отдельный транспилированный в ES5 код, а для современных — свежий модный ES6. В этом году он решил проверить, используют ли популярные библиотеки до сих пор ES5 как дефолт, когда как будто в этом уже нет нужды.
- Babel превращает строчку
- Из популярных современных бандлеров только Babel и TypeScript используют транспиляцию в ES5 по умолчанию. Остальные сборщики всё-таки опираются на «современные браузеры».
- Популярные библиотеки тоже постепенно переходят на подход с современным синтаксисом в коде по умолчанию, без поставки ES5-версии. Хотя React и Lodash всё ещё содержат только ES5-код при подключении как зависимость.
- При этом Филип проанализировал топ популярных сайтов через HTTP Archive и обнаружил, что 89% сайтов подключают хотя бы один файл, где есть ES6+ фича без транспиляции. То есть в старых браузерах всё равно что-то сломается.
- То, во что превращается исходный код, должен решать пользователь, а не библиотека. Если мне зачем-то всё ещё нужно превращать мой код в ES5-бандл, я могу настроить сборку сам.
- На сборщик надейся, а сам тестируй. Какая бы сборка у вас ни была, собирайте клиентские ошибки, тестируйте приложения в популярных браузерах, не бойтесь автотестов с настроенными браузерными фермами.
https://philipwalton.com/articles/the-state-of-es5-on-the-web/
Филип Уолтон ещё в 2017 году показал технику, которая позволяет для старых браузеров загружать отдельный транспилированный в ES5 код, а для современных — свежий модный ES6. В этом году он решил проверить, используют ли популярные библиотеки до сих пор ES5 как дефолт, когда как будто в этом уже нет нужды.
- Babel превращает строчку
console.log([1, 2, 3].at(-1)) в 11217 байт кода, используя при этом 71 зависимость.- Из популярных современных бандлеров только Babel и TypeScript используют транспиляцию в ES5 по умолчанию. Остальные сборщики всё-таки опираются на «современные браузеры».
- Популярные библиотеки тоже постепенно переходят на подход с современным синтаксисом в коде по умолчанию, без поставки ES5-версии. Хотя React и Lodash всё ещё содержат только ES5-код при подключении как зависимость.
- При этом Филип проанализировал топ популярных сайтов через HTTP Archive и обнаружил, что 89% сайтов подключают хотя бы один файл, где есть ES6+ фича без транспиляции. То есть в старых браузерах всё равно что-то сломается.
- То, во что превращается исходный код, должен решать пользователь, а не библиотека. Если мне зачем-то всё ещё нужно превращать мой код в ES5-бандл, я могу настроить сборку сам.
- На сборщик надейся, а сам тестируй. Какая бы сборка у вас ни была, собирайте клиентские ошибки, тестируйте приложения в популярных браузерах, не бойтесь автотестов с настроенными браузерными фермами.
https://philipwalton.com/articles/the-state-of-es5-on-the-web/
Philipwalton
The State of ES5 on the Web
Should web developers and JavaScript library authors still transpile their code to ES5? This post looks at what the data suggests based on what popular libraries, tools, and websites are doing
❤25👍9🔥1
display: contents
Очередной подробный гайд от Ахмада Шадида по тому, как пользоваться некоторыми особенностями CSS. На этот раз про свойство
Напомню,
Ахмад приводит много полезных примеров, когда избавляться от контейнеров полезно для более простой вёрстки. Интересно применение для адаптивности. Например, на десктопе у вас действительно есть контейнер со сложными отступами внутри, но на мобилке содержимое контейнера встраивается в список рядом. Или когда у вас нет доступа ко всей разметке страницы (привет, Wordpress), но каким-то образом в родителя встроиться нужно.
Важно,
https://ishadeed.com/article/display-contents/
Очередной подробный гайд от Ахмада Шадида по тому, как пользоваться некоторыми особенностями CSS. На этот раз про свойство
display: contents.Напомню,
display: contents — это указание браузеру вынести элемент выше по дереву для учёта в потоке. Самый частый пример, который приводят, это списки. Например, если нужно поднять элементы списка выше в дереве, чтобы они с другими элементами лежали в одном флекс-контейнере.Ахмад приводит много полезных примеров, когда избавляться от контейнеров полезно для более простой вёрстки. Интересно применение для адаптивности. Например, на десктопе у вас действительно есть контейнер со сложными отступами внутри, но на мобилке содержимое контейнера встраивается в список рядом. Или когда у вас нет доступа ко всей разметке страницы (привет, Wordpress), но каким-то образом в родителя встроиться нужно.
Важно,
display: contents может ломать доступность в списках, таблицах и прочих значимых для скринридеров элементах. Так что применяйте осторожно.https://ishadeed.com/article/display-contents/
Ishadeed
CSS display contents
Learn how to use display contents to build more fluid layouts.
👍31👏7❤🔥3🤔3❤1
TypeScript 5.6
Очередные приятные новинки. Почитал релиз-ноуты, нашёл для себя много поводов обновиться.
1. Проверки на nullish и truthy. Грубо говоря, в TS завезли аналог проверки
2. Методы Iterator Helper. В ECMAScript на 3-м уровне пропозала появились методы
3. Строгая проверка итераторов `--strictBuiltinIteratorReturn`. Раньше было сложно определить, что вернёт итератор, поэтому по сути TS работал с типом
4. Поддержка Arbitrary Module Identifiers. В JavaScript можно сначала в модуле написать
5. Опция `--noUncheckedSideEffectImports`. Раньше TS мог игнорировать файлы, которые подключаются через
6. Опция компилятора `--noCheck`. Убирает ненужные проверки типов для вывода новых файлов. По сути если у вас так настроен запуск
7. `--build` без учёта ошибок зависимостей. Раньше если при билде TS находил ошибку типов в зависимостях, то падал и не давал сборке продолжаться. Теперь он постарается завершить сборку любой ценой, но начнёт всегда создавать файл
8. Для быстрой работы в редакторах кода добавили языковому сервису TS возможность анализировать не весь файл целиком, а его видимые регионы. При редактировании огромных файлов сервису на каждый ввод символа нужно быстро реагировать, но это не всегда возможно, если анализировать весь файл сразу. По тестам над файлом
9. Починили поведение `override`. Теперь проверки стали строже, требуют наличие перезаписываемого метода в базовом классе.
https://devblogs.microsoft.com/typenoscript/announcing-typenoscript-5-6/
Очередные приятные новинки. Почитал релиз-ноуты, нашёл для себя много поводов обновиться.
1. Проверки на nullish и truthy. Грубо говоря, в TS завезли аналог проверки
no-constant-binary-expression из ESLint, хотя это не совсем так. Представьте, что вы где-то опечатались и внутри if написали код, который всегда true. Линтеры умеют такое подсвечивать, теперь умеет и TypeScript. За исключением явного задания if (true), потому что такое вы скорее всего пишете осознанно, например, для дебага или вебпака.2. Методы Iterator Helper. В ECMAScript на 3-м уровне пропозала появились методы
map, filter, reduce, take и другие для итераторов. TypeScript готовится к ним заранее. Не только поддержали новые методы, но и добавили новые встроенные типы IteratorObject и AsyncIteratorObject, которые позволят типизировать то, с чем работает итератор.3. Строгая проверка итераторов `--strictBuiltinIteratorReturn`. Раньше было сложно определить, что вернёт итератор, поэтому по сути TS работал с типом
any, а это убивает сам смысл типизации. В строгом режиме проверок теперь TS умеет определять типы умнее и начнёт выдавать полезные ошибки в случае неправильного использования результатов итераторов.4. Поддержка Arbitrary Module Identifiers. В JavaScript можно сначала в модуле написать
export { banana as "🍌" };, а потом в месте подключения модуля написать import { "🍌" as banana } from "./foo" — и это будет работать. Я не очень понимаю, для чего это нужно, кроме как для каких-то специфических способов именовать методы вроде MyLib::MyMethod, для совместимости по имени с бекендом, например. Но теперь в TS это поддержали, можно давать странные имена импортируемым сущностям.5. Опция `--noUncheckedSideEffectImports`. Раньше TS мог игнорировать файлы, которые подключаются через
import "some-module";, но не существуют. Такие подключения как раз называют импортами сайд-эффектов, потому что обычно оно нужно, чтобы выполнить какой-то код внутри модуля, но не импортировать ничего именованного. И так часто подключают CSS-файлы внутри компонентов. С включённой опцией TS теперь начнёт ругаться, если файл найти не может. Выключить конкретные маски можно, в статье есть пример.6. Опция компилятора `--noCheck`. Убирает ненужные проверки типов для вывода новых файлов. По сути если у вас так настроен запуск
tsc, что какие-то файлы с типами не нужны, то их и не будет проверять, экономя время. То есть если вы хотите просто быстро сгенерировать JS, не проверяя типы — осторожно, но можно.7. `--build` без учёта ошибок зависимостей. Раньше если при билде TS находил ошибку типов в зависимостях, то падал и не давал сборке продолжаться. Теперь он постарается завершить сборку любой ценой, но начнёт всегда создавать файл
.tsbuildinfo, куда будет писать информацию об ошибках. Чтобы вернуть старое поведение, нужно добавить в запуск опцию --stopOnBuildErrors.8. Для быстрой работы в редакторах кода добавили языковому сервису TS возможность анализировать не весь файл целиком, а его видимые регионы. При редактировании огромных файлов сервису на каждый ввод символа нужно быстро реагировать, но это не всегда возможно, если анализировать весь файл сразу. По тестам над файлом
checker.ts из самого TS время анализа первого региона из файла стало 143ms, а раньше полная диагностика файла занимала 3330ms.9. Починили поведение `override`. Теперь проверки стали строже, требуют наличие перезаписываемого метода в базовом классе.
https://devblogs.microsoft.com/typenoscript/announcing-typenoscript-5-6/
Microsoft News
Announcing TypeScript 5.6
Today we’re excited to announce the release of TypeScript 5.6! If you’re not familiar with TypeScript, it’s a language that builds on top of JavaScript by adding syntax for types. Types describe the shapes we expect of our variables, parameters, and functions…
❤36🔥9👍4🎉3
State of HTML 2024
Ещё один опрос про состояние веба, на этот раз про HTML. Можете повлиять на то, какие новые возможности работы с элементами появятся в будущем. И заодно узнать про те, что уже есть — вопросы составлены таким образом, что можно чему-то научиться в процессе.
Набрал 340 баллов. Из 49 фичей, упомянутых в опросе, применял на практике 25, слышал о 18. Не зря в подкасте смотрим в релиз-ноуты браузеров, мало какая новинка прошла мимо.
https://survey.devographics.com/en-US/survey/state-of-html/2024
Ещё один опрос про состояние веба, на этот раз про HTML. Можете повлиять на то, какие новые возможности работы с элементами появятся в будущем. И заодно узнать про те, что уже есть — вопросы составлены таким образом, что можно чему-то научиться в процессе.
Набрал 340 баллов. Из 49 фичей, упомянутых в опросе, применял на практике 25, слышал о 18. Не зря в подкасте смотрим в релиз-ноуты браузеров, мало какая новинка прошла мимо.
https://survey.devographics.com/en-US/survey/state-of-html/2024
State of HTML 2024
Take the State of HTML survey
🔥29