Будни разработчика – Telegram
Будни разработчика
14.6K subscribers
1.24K photos
366 videos
7 files
2.12K links
Блог Lead JS-разработчика из Хельсинки
Автор: @bekharsky

По рекламе: https://telega.in/channels/htmlshit/card?r=GLOiHluU или https://news.1rj.ru/str/it_adv

Чат: https://news.1rj.ru/str/htmlshitchat

№5001017849, https://www.gosuslugi.ru/snet/679b74f8dad2d930d2eaa978
Download Telegram
#заметка дня

Наглядное отличие алгебры от теории алгоритмов.

На КДПВ — паттерн и его алгебраическое решение.

В тексте ниже — аналогичный CSS:

li:nth-child(6n+4),
li:nth-child(6n+5),
li:nth-child(6n+6) {
color: red;
}

Выводов не будет, в тред приглашаются математики :)

#бородач
#грусть дня

Умер создатель редактора Vim — Брам Моленар (Bram Moolenaar) 😢

Вот собственно, сообщение его семьи: https://groups.google.com/g/vim_announce/c/tWahca9zkt4

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

:wq!
😢46🫡6👍21
This media is not supported in your browser
VIEW IN TELEGRAM
#codepen дня

The next big thing после Scroll-driven animations в CSS это View Transitions.

Когда в предложении английских слов больше, чем русских.

О чем же речь? Ну, представьте себе, что вы сможете задавать элементам анимации не только на прямые воздействия, но и на изменение DOM или смену страницы в браузере. Какой элемент должен уйти совсем, какой — уступить своё место другому. И всё это — в CSS.

Яркий пример такого взаимодействия — сортировка. Благодаря Адаму Аргайлу у нас есть и демонстрация: https://codepen.io/argyleink/pen/rNQZbLr

В браузерах, которые не поддерживают View Transitions, элементы просто поменяют свои места. А в Chrome 111 и выше — с анимацией :)

Имеется статья в блоге разработчиков Хрома, с огромным числом примеров: https://developer.chrome.com/docs/web-platform/view-transitions/

Ну а мы с вами ещё вернёмся к ним, котаны. И сайты будут еще больше похожи на нативные приложения :)

#css #view #transition
👍143
#фишка дня

Давайте сегодня продолжим тему SVG.

Не знаю, скольким из вас вообще известно, как создаются простейшие SVG-анимации заполнения кривой (кстати, скольким?), но, зная длину кривой (контура, path), её заполнение легко можно анимировать.

Примерно вот таким образом: https://codepen.io/alinaki/pen/oNXjEzz?editors=1111

Как узнать длину кривой? Ну это можно посмотеть всё в том же кодпене: circle.getTotalLength().

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

Например, как разместить что-либо по контуру кривой? Для простоты, сделаем бусы.

1. Нарисуем окружность.
2. Получим её длину
3. Найдём на окружности 15 равномерно распределённых точек используя getTotalLength getPointAtLength
4. Разместим 15 бусин-кругов по контуру.

Вуаля: https://codepen.io/alinaki/pen/eYPmayO

Такое можно и с текстом провернуть, кто первый? :)

#noscript #path #length #бородач
👍7
This media is not supported in your browser
VIEW IN TELEGRAM
#видео дня

Ох какую я вам мякотку нашёл, котаны! Только представьте как было бы круто иметь руководство по такому сценарию:

1. Тебе не нравится что-то на каком-то сайте.
2. Открываешь девтулзы, вешаешь слушатель изменения атрибута или контента ноды.
3. Включаешь дебаггер, находишь точное место.
4. Меняешь код, тестируешь.
5. Заменяешь файл на локальный.
...
6. PROFIT!

И по этому поводу я решил принести вам видео как починить Тwitter. Ой, простите, X. Ну нельзя же на канале совсем без хайповых тем!

Получилось прекрасное руководство, целый скринкаст.

Не сцыте менять мир как вам нужно, котаны!

#js #devtools #debug
😁16🔥64👍4🤔1
#презентация дня

Раз уж я упомянул не так давно и Scroll-driven Animations и View Transitions API в одном сообщении, надо идти дальше.

Хорошо уже нам известный товарищ Ван Дамм, который Брамус, собрал всё в кучу. Он давно оседлал тематику скроллозависимых анимаций и теперь, с выходом Chrome 115, пушит максимально.

Итак, встречайте: Scroll-Driven Animations and View Transitions (2023.06.09 @ CSS Day)

Ну и сразу ссылку на видео: https://youtu.be/nFbuXdEU-oA

#css #scroll #view #transition
🔥6👍3
#фишка дня

Так, котаны мои хорошие, чтобы начать процедуру отладки, например, по клику на элементе, вам вообще не надо идти в Elements 👉 Event listeners, искать там click, искать нужный файл, или, ещё хуже, сразу начинать ковыряться в коде... Сейчас всё расскажу.

Открываем девтулзы, ползём в Sources, открываем в сайдбаре справа раздел Event Listener Breakpoints и выбираем событие click в ветке Mouse. Всё, вы прекрасны, все довольны.

Пользуемся 💝️️️️️️

#devtools #debug
👍27🔥62
#такое дня

Это дежурное напоминание о том, что если доступность вашего сайта зависит от геополитической ситуации в мире — вы что-то делаете не так.

Например, мне бы в голову не пришло выбрать домен в зоне .AF — Афганистан. А вот паре грандов в мире фронтенда, Вес Босу и Джейсону Ленсторфу так не показалось.

И этот день настал: регистраторы доменов не могут связаться с лицами, ответственными за доменную зону .AF.

Бизнес обоих зависел от сайтов, веселье! Зато крутая доменная зона, ага.

Думайте, котаны, где регистрируете проекты.
😁14
#инструмент дня

Tailwind CSS при всех своих спорных моментах понравился многим людям. Кто-то не парится и пишет все атомы в классы, кто-то берёт компонентный подход и собирает компоненты на базе его DSL (domain-specific language), чтобы потом скомпилировать их в чистый CSS. Но, оказывается, есть и альтернативный подход: panda.

Что такое Panda CSS? Это CSS-in-JS движок, который собирает человекочитаемые атрибуты или пропсы компонентов в атомарный CSS-файл. Да, в файл, который создаётся в момент сборки, не в рантайме!

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

В общем, такой атомарный CSS мы покупаем.

#css #react #cssinjs
🔥7👎6
#заметка дня

Что-то по Твиттеру опять пронеслась война тех, кто считает, что надо максимально ограничивать кандидату доступ информации во время собеседования, не пускать его в поиск Google, запрещать спрашивать у ChatGPT, не давать документацию и так далее. И тех, кто, в общем-то, считает наоборот.

Я пока не видел хороших и правильных примеров использования ChatGPT, если честно. Единственный известный мне случай подобного поведения кандидата вызывает нервный смех, потому что ему стоило честно сказать: "Не знаю". Он буквально понятия не имел даже как задать вопрос правильно, но с каменным лицом доказывал, что так и надо. Наверное, получился бы хороший продажник.

С документацией всё просто: естественно, надо разрешать доступ. Да даже в университетах разрешают пользоваться конспектами и справочниками. Ну, в нормальных...

Google... ситуация похожа на ChatGPT. Нужно внимательно смотреть, что и как человек гуглит. Как конкретно он формирует запрос и какие ссылки открывает.

Я лично нанимал фронта, который не стеснялся гуглить во время собеседования. Прям стримил экран и искал. Где-то для выжимки из доки, где-то чтобы посмотреть альтернативы алгоритму.

А потом чтобы показать скриншоты своего проекта, который был закрыт пейволлом!

А вот того, кто во время собеседования гуглил меня, мы не взяли...

А как у вас дела обстоят и опыт?

#work #interview #собеседование
🔥91👍1
This media is not supported in your browser
VIEW IN TELEGRAM
#инструмент дня

Что делать, если нужно срочно проверить какую-то гипотезу или сгенерировать набор строк, покадровую анимацию или что-нибудь ещё в таком духе?

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

Например, что-то пошло не так и ваш любимый язык — JavaScript. Написали, выполнили node index.js и радуетесь выводу.

Впрочем, есть другие варианты. Консоль браузера, codepen.io, codesandbox.io, jsfiddle.com... Но давайте что-то локальное.

Первый вариант: RunJS (на видео). Бесплатная версия достаточна чтобы играть роль бесконечной удобной консоли. Платная включает npm, вкладки, автодополнение, ENV-переменные и проверку типов.

Второй вариант: расширение CodeRunner для VS Code. В отличие от RunJS поддерживает больше языков и встраивается прямо в редактор.

Третий, естественно: scratch files в IDE от JetBrains. Дебаггер, HTTP-запросы и среда выполнения из коробки.

Всем удачной проверки гипотез, котаны!

#js #runtime #coderunner
👍51
#такое дня

Когда-то давным давно, во времена первых браузеров и изобретения JavaScript, кто-то подумал, что было бы неплохо получать доступ к элементам в глобальном пространстве имён. Речь идёт в том числе об атрибуте name для ссылок.

Вам все знакомы якоря вида #cheatsheet в адресной строке браузера. Да-да, хештеги не взялись из ниоткуда.

Так вот, пока браузеры пытались договориться (не пытались), что же должно быть индикатором доступа, name или id, вышло так, что IE сделал элементы с id свойствами не только объекта document, но и объекта window. А остальные, естественно, скопировали.

Что это значит? А то, что если вы добавили id элементу, то этот самый элемент стал доступен как переменная в глобальном пространстве ваших скриптов. Без объявления! Буквально вот так: https://codepen.io/alinaki/pen/zYLJVZN

Если кому интересно подробнее почитать, что куда и как попадает, спецификация ответит на этот вопрос: https://html.spec.whatwg.org/multipage/dom.html#dom-tree-accessors

Но если коротко: не надо это использовать если вы не на хакатоне. Приведёт к таким спагетти, что мало не покажется.

А вот знать надо.

#js #dom #node #бородач
🤯19👍94
#история дня

27 лет назад вышел Internet Explorer 3.0.

13 августа 1996 года появилась версия для Windows, а 8 января 1997 — для Mac OS (да-да, она тогда не macOS называлась). Было же время...

Что же такого в нём примечательного?

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

В то время CSS использовался чтобы помечать посещенные ссылки фиолетовым.

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

А ещё была своя реализация JavaScript: JScript. И предлагалась поддержка VBScript... я свой первый веб-проект на нём писал, не особенно содрогаясь.

Работал браузер на 386 с Windows 3.1, требовал от 4 MB оперативной памяти, 12 MB — если хотелось Java 🤯

Посмотреть скриншоты и видео можно в музее веб-дизайна: https://www.webdesignmuseum.org/old-software/web-browsers/internet-explorer-3-0

Взгрустнулось, котаны? 😅

#css #ie #history
13👍4
This media is not supported in your browser
VIEW IN TELEGRAM
#codepen дня

Устроим перепись олдов на канале? Кто ЛогоМиры помнит?

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

Кэсси Эванс придумала, что ЛогоМиры забавно ложатся на правила отрисовки SVG-кривых и сообразила сегодняшний кодпен дня.

Так что если вам интересно, как происходит отрисовка SVG — а на самом деле, там реально очень всё похоже на команды той самой черепашки — милости просим: https://codepen.io/cassie-codes/pen/ZEvNBmX

#noscript #logo #бородач
👍155🤩1🤡1
This media is not supported in your browser
VIEW IN TELEGRAM
#фишка дня

Тут оказалось, что в Chrome DevTools встроен редактор кривых Безье для переходов aka transition!

Можно добавить точку, перетащить её и сразу посмотреть результат. Ну или выбрать из готового набора: linear, elastic, bounce, emphasized.

А в версии 116 добавят линейные функции переходов, linear(), о которых нам ещё только предстоит поговорить: https://developer.chrome.com/articles/css-linear-easing-function/

#devtools #css #linear #curve
🤩19👍6
#статья дня

В период пандемии средства для совместной работы пережили самый настоящий бум. Особенно взлетели видеоконференции и вайтборды (ну, доски с заметками, только онлайн). Успех того же Miro известен всем.

И вот Atlassian, которая имеет в своем арсенале почти все необходимое для организации проектной работы, тоже захотела удержать людей у себя, повысив привлекательность пакета. И выпустила Confluence whiteboards.

Но нас все же интересует не бизнес сторона вопроса, а технологические решения.

И тут нам очень повезло! Они выкатили в своем технологе огромную статью с описанием технических решений своей доски. Упор делали на производительность, потому остановились в итоге на чистом WebGL. Но вот что интересно: React+DOM не то чтобы критично медленнее, вполне себе конкурентноспособно.

В общем, это мы читаем: https://www.atlassian.com/engineering/rendering-like-butter-a-confluence-whiteboards-story

В статье полно ссылок на открытые проекты и концепции вообще. Крайне рекомендую.

#webgl #whiteboard
👍104🤩1
#такое дня

Я сделяль!

Не в первый раз, впрочем :) Пять лет назад в Хуахине: https://news.1rj.ru/str/htmlshit/106

О том, что буквы должны были выйти за пределы брелка, говорят не только лишь все...
👍194🤩2👎1
This media is not supported in your browser
VIEW IN TELEGRAM
#библиотека дня

Мой ТВ-пульт на Flutter уже, в принципе, умеет всё то, что необходимо мне. Так что скоро ждите обновлений в постах!

Но, как обычно, после проделывания 80% работы, остаётся ещё 80%. Это простая математика.

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

Пробежавшись по библиотекам анимаций во Flutter я обнаружил, что некоторые из них не стесняются просто брать и копировать CSS-наборы. А почему нет?

И вот вашему вниманию один из таких наборов: CSShake.

https://elrumordelaluz.github.io/csshake/

И копирующий его пакет Flutter: https://pub.dev/packages/flutter_shake_animated

Не совсем то, что мне нужно, разве что API подсмотреть. Но, может, кому-нибудь такой угар пригодится 😝

#css #animation
👍7🤩21
#баг дня

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

Итак: в Chrome не поддерживаются такие правила для clip-path как: margin-box, border-box, padding-box и content-box. В Firefox и Safari всё ок. Пример: https://codepen.io/thebabydino/pen/yLGyBrw

Ссылка на трекер: https://chromium-review.googlesource.com/c/chromium/src/+/4784067

Баг исправлен, но задерживается из-за рефакторинга. И сейчас в состоянии конфликта слияния.

А теперь по-русски 🙂

В потоке размер элементов считается довольно сложно. Элементы можно представить как вложенные прямоугольники: отступы — margin, границы — border, поля — padding и содержимое — content — которое ограничено или типографически, или теми же прямоугольниками.

Потом веселье со схлопывающимися отступами или же включением границ в размеры объекта (box-sizing)... зависит от режима потока.

Зачем вам может понадобиться подобное — я не знаю. Но CSS-художникам это очень и очень мешает 🙂

Впрочем, исправление не за горами.

#clippath #css
1
#библиотека дня

А что если бы был такой UI-фреймворк, чтобы можно было запилить браузерку про космос и прочий киберпанк?

Оказывается, такое есть! Называется Arwes: https://arwes.dev/

Выглядит очень круто. У меня ассоциируется с чем-то из начала нулевых, но в хорошем смысле. Просто все ассоциации оттуда: StarCraft, Warfare Inc., Homeworld...

Учитывая, что во многих, даже AAA, играх интерфейс управления рисуется с помощью веб-технологий, создатели Arwes совсем не впустую работают 🙂

Страница примеров всё ещё в разработке, зато их песочница вполне себе доступна и очень крута: https://arwes.dev/play

Крайне рекомендую прокликать, вдохновляет.

#react #ui #future #games
👍11🤩1