Secret Code
577 subscribers
135 photos
23 videos
103 links
Новости из мира веб-дева и мысли админа
Download Telegram
Channel created
Channel photo updated
Привет!
🍓1
🎨 Figma — В С Ë

С 1-го февраля киллер-фича Dev Mode выходит из открытой беты.

Теперь доступ к существующему функционалу для разработчиков можно получить, если оплатить план Professional за 12$ в месяц…

Если у вас в команде план Organization или Enterprise, то за каждое «место разработчика» нужно заплатить 25 и 35 долларов в месяц соответственно.

Dev Mode позволяет быстро просматривать отступы между элементами, генерировать готовые CSS-стили, которые требуется просто вставить. Это ускоряет процесс вёрстки.

До Dev Mode была отдельная вкладка, позволяющая быстро просматривать свойства и CSS-стили, но её больше нет. Поэтому единственный способ код-генить CSS — ПКМ по слою → Copy/Paste as → Copy as code → CSS. А чтобы узнать отступы, нужно зажимать кнопку option.

За удобство надо платить 🤑
Please open Telegram to view this post
VIEW IN TELEGRAM
🍓1
Secret Code
🎨 Figma — В С Ë С 1-го февраля киллер-фича Dev Mode выходит из открытой беты. Теперь доступ к существующему функционалу для разработчиков можно получить, если оплатить план Professional за 12$ в месяц… Если у вас в команде план Organization или Enterprise…
🎨 Дев-моду быть!

Рассказываю как активировать Figma Professional на 2 года бесплатно.

Фигма бесплатно предоставляет в рамках программы Figma for Education подписку, которая соответствует всему функционалу Figma Professional.

Кому это подойдёт? Потому что подойдёт не всем:

💻 Вы являетесь инди-разработчиком: сами разрабатываете дизайн и верстаете его через Dev Mode.

🎨 Вы самостоятельно изучаете дизайн. Хотите использовать весь функционал Фигмы.

Активировать подписку могут студенты и не только (лазейки, привет):

1. Меняем страну на США через VPN.

2. Переходим на страницу 🎨 Figma for Education.

3. Нажимаем на кнопку Get verified.

4. Отвечаем на вопросы:

— Are you a student, educator, or administrator? — Student.

— What type of institution do you attend or work for? — Higher Ed.

— Why are you applying for a free Figma Education plan? — Пишете что хотите, например: Because I study design and my career is centered around UX/UI design.

— What is your school's name? — Delhi College of Engineering (DCE)

— What is your primary field of study? — Graphic / Visual Design.

— Please upload a copy of your class schedule — Откройте сообщение, скопируйте файл и вставьте как копию вашего расписания занятий.

— Expected graduation date — Укажите August, дату окончания укажите через 2 года (на момент написания поста — 2026).

5. Согласитесь со всеми правилами и вы счастливый обладатель всех фичей Figma Professional, в том числе дев-мод.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4🍓1
👩‍💻 👩‍💻 👩‍💻 👩‍💻 Интернет станет лучше благодаря Interop 2024

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

В этом году браузеры будут работать над следующим:

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

CSS Nesting. Помогает повысить модульность стилей, уменьшает размер CSS. Браузеры уже её поддерживают, осталось допилить корнер-кейсы.

Custom Properties. Разработка правила @property, позволяет определить кастом-свойство, включая типизацию.

Declarative Shadow DOM. Компоненты, слегка схожие на логику React-компонентов.

font-size-adjust. Свойство позволяет изменять размер строчных букв относительно прописных.

HTTPS URLs for WebSocket. Изначально WS требовал указания ws и wss, что не позволяло использовать относительные URL без костылей.

IndexedDB. Постоянное хранение данных в браузере для оффлайн-работы.

Layout. Будут дорабатывать совместимость flexbox, grid, и subgrid.

Pointer and Mouse Events.

Popover. API предоставляет разработчикам гибкий механизм для отображения всплывающего контента поверх другого.

Relative Color Syntax. Задать цвет относительно другого цвета, используя from и calc() для любого из значений цвета.

requestVideoFrameCallback. Позволяет эффективно выполнять операции с видео по каждому кадру.

Scrollbar Styling. Скроллбар сейчас можно стилизовать, но неприятно.

@starting-style и transition-behavior.

Text Directionality. Импрув стилизации сайтов, которые адаптируются под текст, читаемый справа-налево.

text-wrap: balance. Помогает сбалансировать текст, чтобы не было одиночных слов в заголовках и так далее. Сейчас работает в браузерах по разному.

URL. Исправление проблем совместимости при парсинге ссылок.

На картинке показаны текущие результаты пройденных тестов браузеров.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1🔥1🍓1
🫡 Больше не XD

Adobe прекратит развитие 🎨 Adobe XD, неспособный конкурировать с 🎨 Figma. Это решение произошло после известия, что компания не сможет приобрести Figma за $20 млрд из-за давления антимонопольных служб.

Когда Adobe рассматривала возможность приобретения Фигмы, компания перевела XD в режим обслуживания, прекратив выпуск новых функций для продукта.

Adobe сосредоточится на развитии 🎨 Photoshop, 🎨 Premiere Pro и AI-функционала. Почините уже Премьер, пожалуйста 🥺

Им больше не смешно…
Please open Telegram to view this post
VIEW IN TELEGRAM
3😭3💔1🍓1
😺 1 кошка, 2 кошки, 5 кошек

Каждый разработчик рано или поздно сталкивается с проблемой: дизайнер вставил количественное числительное с существительным. Некоторые забивают и получается что-то в духе «1 кошки» или «5 кошка». С одним из решений задач мы познакомимся сегодня.

Часто используется i18next в проектах, но разработчики и не подозревают, что у библиотеки есть встроенная плюрализация на все языки:


{
"cat_one": "{{count}} кошка",
"cat_few": "{{count}} кошки",
"cat_many": "{{count}} кошек"
}


Где cat — ключ перевода, а то что идёт после него — это плюральный суффикс. В ключ cat_one нужно подставить значение, где будет подставляться count и существительное, которое используется, будто бы общее количество является единицей (в нашем случае — 1 кошка). В cat_few и cat_many общее количество будет 2 и 5 соответственно. Прямо как в заголовке этого поста.

i18next.t("cat", {count: 0}); // -> "0 кошек"
i18next.t("cat", {count: 11}); // -> "1 кошка"
i18next.t("cat", {count: 32}); // -> "32 кошки"
i18next.t("cat", {count: 45}); // -> "45 кошек"


Переменную count в ключах можно опустить. В таком случае выводится будет следующее:

i18next.t("cat", {count: 0}); // -> "кошек"
i18next.t("cat", {count: 11}); // -> "кошек"
i18next.t("cat", {count: 32}); // -> "кошки"
i18next.t("cat", {count: 45}); // -> "кошек"


Значение count, которое мы передаём в объекте, нужно лишь для правильного склонения. И при необходимости мы можем его либо выводить, либо не выводить.

В английском языке всего два склонения. Поэтому в нём плюрализация следующая:


{
"cat_one": "cat",
"cat_other": "cats"
}


Какие плюральные суффиксы нужно использовать в зависимости от языка можно узнать в песочнице.

i18next.t("cat", {count: 1}); // -> "cat"
i18next.t("cat", {count: 10}); // -> "cats"


😎 Позже мы рассмотрим плюрализацию, если на проекте не используется i18next и подключать его только ради плюрализации не хочется.
Please open Telegram to view this post
VIEW IN TELEGRAM
🍓1
Если ИИ не может захватить человечество, то тогда что это?

u/Overall-Pie-7852 — #meme
🔥4😁2🍓1
Чей код? признавайтесь

u/atoponce — #meme
🤯4🍓1
React привлекает много разработчиков своей гибкостью и активным сообществом. Однако, одним только React нельзя ограничиться. Важную роль играют React-библиотеки и инструменты, расширяющие его возможности и упрощающие разработку. Всё это создает экосистему вокруг React. Рассмотрим библиотеки, позволяющие создавать веб-приложения на React.

Сборщик и среда разработки
Для запуска React-эппки нужен сервер. Эти инструменты создают сервер, который обновляет приложение при изменении файлов.

Я рекомендую Vite. Он позволяет собирать приложение в статичные файлы, которые скачиваются пользователем. В конечном итоге пользователь видит готовое приложение.

Разработчики React рекомендуют Next.js. Он используют серверный рендеринг, который сложнее клиентского. Проще говоря, это означает, что странички собираются на сервере и уже готовые отправляются пользователю.

Роутер
Лучше всего React Router. У Next.js свой роутер, поэтому если выбрали его, то выбирать роутер не нужно.

Стейт-менеджер
Полезно воспользоваться всеми и понимать как они работают. В разных компаниях используют разные менеджеры состояний.
Redux Toolkit
Recoil
Zustand
MobX
Мне нравится Recoil (использую в пет-проектах), на моём месте работы использовался MobX.

Асинхронный стейт-менеджер
TanStack Query v5. Отгородит от спагетти-кода. Даёт возможность получать состояние запроса (загрузка, успех, ошибка), создавать бесконечные списки, делать оптимистичные обновления. Также все данные кэшируются и могут переиспользоваться. Если правильно использовать асинхронный стейт-менеджер, то потребность использовать обычный стейт-менеджер значительно снизится.

Стилизация
CSS modules (использование .css файлов с суффиксом module — button.module.css)
Tailwind
Styled Components (CSS in JS)

Формы
React Hook Form (удобная работа с формами, вывод ошибок с заполнением форм и не только)
React Select (кастомизируемый инпут с выпадающим списком с поддержкой доступности)

Локализация
react-i18next

Анимации
Преимущественно анимируем элементы с помощью CSS. Если анимации слишком сложные и не поддаются CSS, то реализуем с помощью библиотек.
Framer Motion

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

Этот пост будет дополняться и изменяться в соответствии с изменениями в экосистеме React, потому что веб не стоит на месте.
🔥3👍2🍓1
⚰️ Постучали со дна

Разработчики jQuery обновили JS библиотеку (на которой работает до сих пор полинтернета) до бета-версии 4.0.

Что нового?

— Убрали поддержку Internet Explorer < 11. Это уменьшило вес библиотеки.

— Убрали устаревший API, который теперь поддерживается браузерами. Также уменьшило вес библиотеки.

— Изменили порядок событий согласно спецификации W3C.

— Миграция на ES-модули.

Разработчики также исправили баги и ожидают минимальных сбоев.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥2😁1🍓1
👩‍💻 Bun в релизе пять месяцев

Для тех, кто не знает: Bun — тулкит, который выполняет задачи, которые решает 👩‍💻 Node.js и добавляет свои полезные фичи, улучшающие DX.

Bun предоставляет функционал тестирования, перезапуска скрипта при изменении файлов (пока-пока, Nodemon), билдинга приложений.

Executable-зависимости можно запускать через bunx (замена npx). А сами зависимости можно скачивать через команду bun i.

Самое крутое: Bun из коробки имеет поддержку 👩‍💻 TypeScript, поэтому ничего подключать для TS дополнительно не нужно, ведь уже всё работает.

Bun относится к TypeScript как к гражданину первого класса.

Bun решает множество проблем, улучшая DX. Недавно в Bun появилась очень интересная вещь — Bun Shell, о которой я расскажу позже.

Разработчики Bun говорят, что их тулкит выполняет в 5 раз больше HTTP запросов в секунду по сравнению с Node.js. Это впечатляет, но есть и другие отзывы разработчиков, которые говорят, что скорость Bun либо такая же, либо уступает скорости Node.js в каких-то кейсах.

Если вы подумали, что Bun имеет меньше недостатков, чем Node.js, то это не так. К сожалению, в данный момент поддержка 👩‍💻 Bun на 👩‍💻 Windows экспериментельная и ограниченная. Это значит, что могут быть баги, которые пофиксить смогут только разработчики Bun. Если вы хотите попробовать Bun на Windows, то рекомендуется поставить его через 👩‍💻 WSL.

Как только Bun релизнулся, я начал использовать его в личных проектах. За 5 месяцев эксплуатации я не столкнулся с каким-то нерешаемыми проблемами: всё работает как положено. Если и были какие-то проблемы, то их решение гуглилось и решалось за несколько минут. Вот такие пироги 🥧

Как мне кажется, то у Bun есть все шансы стать популярным, занять нишу наравне Node.js. Поэтому советую поиграться или вообще попробовать мигрировать какой-то пет-проект с Ноды на Бан.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4🍓1🎄1
Secret Code
😺 1 кошка, 2 кошки, 5 кошек Каждый разработчик рано или поздно сталкивается с проблемой: дизайнер вставил количественное числительное с существительным. Некоторые забивают и получается что-то в духе «1 кошки» или «5 кошка». С одним из решений задач мы познакомимся…
Плюрализация без i18next

Задача всё такая же: склонить существительное после числительного. Но что если на проекте нет i18next? Для этого можно использовать функцию:


function plural(number: number, titles: string[], withNumber: boolean = true) {
const absoluteNumber = Math.abs(number)
return (
(withNumber ? number + ' ' : '') +
titles[
absoluteNumber % 10 == 1 && absoluteNumber % 100 != 11
? 0
: absoluteNumber % 10 >= 2 &&
absoluteNumber % 10 <= 4 &&
(absoluteNumber % 100 < 10 || absoluteNumber % 100 >= 20)
? 1
: 2
]
)
}


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


plural(1, ['собака', 'собаки', 'собак']) // 1 собака
plural(5, ['собака', 'собаки', 'собак'], false) // собак


И, соответственно, эта функция не имеет поддержки других языков, кроме русского, украинского и белорусского.

Недавно узнал, что JS имеет встроенный объект для плюрализации — Intl.PluralRules. Подробно ознакомиться как с ним работать можно на MDN Web Docs. Это на случай, если нужно склонять на разных языках без i18next, но таких кейсов обычно мало.
🔥5🙏2👨‍💻2🍓1🎄1