uk
Feedback
HTML Academy

HTML Academy

Відкрити в Telegram

Курсы по веб-разработке: вёрстка, программирование, работа и комьюнити. Наш секретный бот @HTMLAcademyKeksobot. Вопросы по обучению @htmlacademy_sales Ролики на YT https://www.youtube.com/@HTMLAcademyTV Ролики на VK https://vkvideo.ru/@htmlacademy

Показати більше
9 781
Підписники
-424 години
-237 днів
-7030 день
Залучення підписників
червень '26
червень '26
+21
в 0 каналах
травень '26
+35
в 1 каналах
Get PRO
квітень '26
+49
в 0 каналах
Get PRO
березень '26
+40
в 3 каналах
Get PRO
лютий '26
+37
в 0 каналах
Get PRO
січень '26
+54
в 0 каналах
Get PRO
грудень '25
+48
в 2 каналах
Get PRO
листопад '25
+44
в 1 каналах
Get PRO
жовтень '25
+48
в 0 каналах
Get PRO
вересень '25
+52
в 1 каналах
Get PRO
серпень '25
+68
в 1 каналах
Get PRO
липень '25
+48
в 2 каналах
Get PRO
червень '25
+54
в 0 каналах
Get PRO
травень '25
+64
в 1 каналах
Get PRO
квітень '25
+58
в 0 каналах
Get PRO
березень '25
+81
в 0 каналах
Get PRO
лютий '25
+57
в 0 каналах
Get PRO
січень '25
+62
в 0 каналах
Get PRO
грудень '24
+58
в 1 каналах
Get PRO
листопад '24
+78
в 1 каналах
Get PRO
жовтень '24
+95
в 0 каналах
Get PRO
вересень '24
+52
в 1 каналах
Get PRO
серпень '24
+41
в 0 каналах
Get PRO
липень '24
+25
в 0 каналах
Get PRO
червень '24
+46
в 1 каналах
Get PRO
травень '24
+101
в 1 каналах
Get PRO
квітень '24
+240
в 3 каналах
Get PRO
березень '24
+121
в 2 каналах
Get PRO
лютий '24
+138
в 2 каналах
Get PRO
січень '24
+182
в 6 каналах
Get PRO
грудень '23
+151
в 1 каналах
Get PRO
листопад '23
+224
в 2 каналах
Get PRO
жовтень '23
+310
в 1 каналах
Get PRO
вересень '23
+193
в 0 каналах
Get PRO
серпень '23
+161
в 0 каналах
Get PRO
липень '23
+164
в 0 каналах
Get PRO
червень '23
+127
в 0 каналах
Get PRO
травень '23
+127
в 0 каналах
Get PRO
квітень '23
+128
в 0 каналах
Get PRO
березень '23
+178
в 0 каналах
Get PRO
лютий '23
+255
в 0 каналах
Get PRO
січень '23
+509
в 0 каналах
Get PRO
грудень '22
+614
в 0 каналах
Get PRO
листопад '22
+491
в 0 каналах
Get PRO
жовтень '22
+922
в 0 каналах
Get PRO
вересень '22
+748
в 0 каналах
Get PRO
серпень '22
+703
в 0 каналах
Get PRO
липень '22
+514
в 0 каналах
Get PRO
червень '22
+653
в 0 каналах
Get PRO
травень '22
+423
в 0 каналах
Get PRO
квітень '22
+572
в 0 каналах
Get PRO
березень '22
+819
в 0 каналах
Get PRO
лютий '22
+234
в 0 каналах
Get PRO
січень '22
+210
в 0 каналах
Get PRO
грудень '21
+301
в 0 каналах
Get PRO
листопад '21
+242
в 0 каналах
Get PRO
жовтень '21
+259
в 0 каналах
Get PRO
вересень '21
+200
в 0 каналах
Get PRO
серпень '21
+244
в 0 каналах
Get PRO
липень '21
+298
в 0 каналах
Get PRO
червень '21
+328
в 0 каналах
Get PRO
травень '21
+333
в 0 каналах
Get PRO
квітень '21
+414
в 0 каналах
Get PRO
березень '21
+525
в 0 каналах
Get PRO
лютий '21
+521
в 0 каналах
Get PRO
січень '21
+471
в 0 каналах
Get PRO
грудень '20
+7 426
в 0 каналах
Дата
Залучення підписників
Згадування
Канали
16 червня+1
15 червня0
14 червня+2
13 червня0
12 червня0
11 червня0
10 червня0
09 червня+2
08 червня+2
07 червня+2
06 червня+1
05 червня+1
04 червня+3
03 червня+3
02 червня+4
01 червня0
Дописи каналу
Через 199 дней — 1 января. Новый год наступит в любом случае. Вопрос только в том, будете ли вы за эти месяцы ближе к работе
+1
Через 199 дней — 1 января. Новый год наступит в любом случае. Вопрос только в том, будете ли вы за эти месяцы ближе к работе в ИТ. Кто-то встретит его с той же мыслью о смене профессии, которая приходит каждый январь и каждый раз остаётся мыслью. А кто-то за эти месяцы заложит базу во фронтенде и соберёт первое портфолио. Разница — в дате старта. С 16 по 21 июня на сайте крутится «Колесо Фортуны». Один оборот — одна персональная скидка на обучение: «Нейрофронтендер», «Нейрофулстек», профессия с наставником или с трудоустройством. Найдите на htmlacademy.ru коробку с подарком, крутаните колесо и заберите свою скидку.

2
curl — и сервер отвечает одной строкой JSON без переносов и отступов. Вложенные объекты, пара
curl <https://api.example.com/user> — и сервер отвечает одной строкой JSON без переносов и отступов. Вложенные объекты, пара килобайт данных, нужное поле где-то внутри. Глазами не найти. jq — это grep и sed, но для JSON. Допишите | jq . в конец команды — и тот же ответ разложится по строкам с отступами. А дальше jq достаёт любое вложенное поле, фильтрует записи по условию, считает агрегаты и вытаскивает токен из ответа авторизации — одной строкой в пайпе с curl. В статье — интерактивная песочница: меняете фильтр и сразу видите результат на живых данных, плюс синтаксис под каждую задачу. #js #tools 🎆 Читать статью
377
3
Сделать цвет светлее на 10% или подобрать гармоничный акцент — с HEX, да и с HSL, это всё ещё угадайка. Скажем, в HSL lightne
Сделать цвет светлее на 10% или подобрать гармоничный акцент — с HEX, да и с HSL, это всё ещё угадайка. Скажем, в HSL lightness: 50% у жёлтого и синего даёт разную видимую яркость: жёлтый светлее. oklch() берёт три параметра: L (яркость от 0 до 1), C (насыщенность от 0 примерно до 0.4) и H (оттенок в градусах от 0 до 360). Ключевое — перцептивная равномерность: при равном L цвета воспринимаются почти одинаково яркими, куда ровнее, чем в HSL. Для дизайн-систем это упрощает многое. Палитру собираете, меняя только H. Тёмную тему переключаете через L в CSS-переменных. Чтобы перекрасить весь бренд, хватает одной переменной --brand-h. И ещё oklch достаёт цвета, которых нет в sRGB, — оттенки P3 и Rec2020. Поддержка: Chrome 111+, Firefox 113+, Safari 15.4+, для старых браузеров — фолбэк на HEX. В статье — слайдеры L, C, H, на которых видно, как меняется цвет. #css #baseline 🔵 Читать статью
533
4
«Maximum call stack size exceeded» (или «too much recursion» в Firefox) — знакомая ошибка? Рекурсия по глубокой структуре упи
«Maximum call stack size exceeded» (или «too much recursion» в Firefox) — знакомая ошибка? Рекурсия по глубокой структуре упирается в лимит стека вызовов: каждый вызов кладёт кадр на стек, пока тот не переполнится. В курсе «Алгоритмы и структуры данных» этому посвящён отдельный раздел — ту же рекурсию переписывают на явный стек, данные уезжают в кучу, и жёсткий лимит стека вызовов больше не мешает. И так все 10 разделов на JavaScript, от O-нотации до динамического программирования: каждый на реальной задаче фронтенда. #htmlacademy #levelup Последние часы скидки 60% по промокоду ALGO60 — до конца воскресенья. 🔄 Смотреть программу
457
5
«AI — это ваш личный джун. Обязанность разработчика — хорошо поставить задачу, подумать об архитектуре и пройтись отладчиком
«AI — это ваш личный джун. Обязанность разработчика — хорошо поставить задачу, подумать об архитектуре и пройтись отладчиком по тому, что он нагенерировал» Максим Самарцев, директор Maxis, — о том, как руководитель IT-компании смотрит на AI в продуктовой разработке. Запись эфира: смотреть на YouTube | смотреть в VK 🔒 Программа обучения
783
6
На ревью прилетел комментарий: фильтрация дубликатов на 100 000 позиций вешает интерфейс. Виноват вложенный перебор — O(n²),+2
На ревью прилетел комментарий: фильтрация дубликатов на 100 000 позиций вешает интерфейс. Виноват вложенный перебор — O(n²), до 10 миллиардов сравнений. Через хеш-таблицу та же фильтрация укладывается в O(n): каждая проверка уникальности в среднем O(1). Вот этот зазор между «работает» и «работает быстро» и закрывает курс «Алгоритмы и структуры данных». 10 подробных разделов с примерами на JavaScript: O-нотация, поиск, сортировки (пузырёк и quicksort), деревья, хеш-таблицы, жадные алгоритмы, динамическое программирование. Каждый привязан к реальной задаче фронтенда: обход DOM-дерева, подбор ревьюеров в пулреквест, парсинг данных, хранение оповещений. Внутри теория, разбор кейсов, практические задания с эталонным решением и тесты. Темп свой, начать можно сразу. #htmlacademy #levelup Завтра выходной, и скидка 60% по промокоду ALGO60 работает все три дня — с пятницы по воскресенье, 12–14 июня. Только на этих выходных и только на этот курс. 🎤 Подробнее
581
7
Есть задачи, где массив работает — но медленно. Есть места, где Map решает то же самое за O(1). Разница между ними — это скор+2
Есть задачи, где массив работает — но медленно. Есть места, где Map решает то же самое за O(1). Разница между ними — это скорость интерфейса и оценка на ревью. Курс «Алгоритмы и структуры данных» — десять разделов на JavaScript, каждый привязан к реальным задачам фронтенда. Обход DOM-дерева, алгоритм подбора ревьюеров в пулреквест, фильтрация дубликатов на 100 000 позиций, quicksort для «живого» поиска без фризов — примеры, которые встречаются в продакшене. С 12 по 14 июня включительно на курс действует скидка 60% по промокоду ALGO60. Начать можно прямо сейчас и двигаться в своём темпе. #htmlacademy #levelup ☝️ Подробнее о курсе
1
8
Мы провели исследование зарплат фронтендеров. Взяли медианные офферы с рынка, перевели в мойву по текущим ценам — и получили+5
Мы провели исследование зарплат фронтендеров. Взяли медианные офферы с рынка, перевели в мойву по текущим ценам — и получили морскую инфографику. Листайте карточки пятничной рубрики нейрослопа. На последней — сравнение всех грейдов в одном кадре. P.S. Кекс оценил. Сказал, что мидл — это его минимум.
733
9
Правила в CSS можно вкладывать друг в друга — как в Sass, только без компиляции и зависимостей. Псевдоклассы, дочерние селект
Правила в CSS можно вкладывать друг в друга — как в Sass, только без компиляции и зависимостей. Псевдоклассы, дочерние селекторы и медиазапросы лежат рядом с базовыми стилями компонента, а не разбросаны по файлу. Нативно — с 2023 года: Chrome 112+, Firefox 117+, Safari 16.5+. Ключевой символ — &, ссылка на родительский селектор. &:hover превращается в .btn:hover, &.is-active — в .btn.is-active, а .dark & ставит .btn внутрь .dark. Без & вложенный селектор читается как потомок через пробел. Ещё тонкость для отладки: вложенные селекторы по специфичности считаются как внутри :is() — вес берётся от самого тяжёлого аргумента родителя. На простых стилях незаметно, на запутанных стоит помнить. Зато @media, @layer и @container работают прямо внутри правила: брейкпоинты живут рядом с компонентом, а не в хвосте файла. В статье можно покрутить живой пример. #css #baseline 👾 Читать статью
754
10
Поставили инструмент глобально через npm install -g, попользовались — и забыли удалить. За пару лет таких пакетов набираются
Поставили инструмент глобально через npm install -g, попользовались — и забыли удалить. За пару лет таких пакетов набираются десятки, разных версий, и они начинают конфликтовать. npx запускает пакет прямо из реестра npm, ничего не устанавливая глобально. Создать проект на Vite — npx create-vite my-app. Та же история со статическим сервером (npx serve .) или прогоном Prettier по всему проекту (npx prettier --write .): запустили и работаете, в npm -g ничего не осело. Внутри npx идёт по трём адресам: сначала node_modules/.bin в проекте, потом временный кеш, и только затем реестр. Нашёл локально или в кеше — оттуда и запустит, лишнего не качает. Версию можно зафиксировать через @, например npx prettier@2 — пригодится, когда надо воспроизвести чужую ошибку или проверить старый релиз. #npm #tools В статье это всё на интерактивном примере: нажимаете команду и видите, что происходит. 🔄 Читать статью
710
11
Сегодня последний день скидки на курс «Vite 8». На курсе соберёте проект на Vite с нуля: настройка стилей и препроцессоров, т
Сегодня последний день скидки на курс «Vite 8». На курсе соберёте проект на Vite с нуля: настройка стилей и препроцессоров, тесты в Vitest, деплой через GitHub Actions и готовый рецепт миграции с Gulp и Webpack. Скидка 60% по промокоду VITE60 — до конца дня. С понедельника курс по обычной цене. ⚡ Смотреть программу
633
12
Оффер мечты или что предлагает Maxis выпускникам Максим Самарцев, директор Maxis, рассказал, какая зарплата ждёт выпускников
Оффер мечты или что предлагает Maxis выпускникам Максим Самарцев, директор Maxis, рассказал, какая зарплата ждёт выпускников совместной программы обучения фронтенду. Ответ — в клипе. Запись эфира: смотреть на YouTube | смотреть в VK ⚡ Программа обучения
841
13
Vite 8 стартует сервер разработки за секунду, показывает правки на лету и собирает продакшен до 10–30 раз быстрее прошлой вер+2
Vite 8 стартует сервер разработки за секунду, показывает правки на лету и собирает продакшен до 10–30 раз быстрее прошлой версии. На скорость повлияла смена движка: esbuild для разработки и Rollup для сборки заменил Rolldown, единый сборщик на Rust поверх парсера Oxc. Конфиг? Для типового проекта его можно не писать. У Vite разумные значения по умолчанию. Vite — фактический стандарт сборки фронтенда: на нём работают Vue, SvelteKit, Nuxt и Astro. После отказа от Create React App его рекомендует и команда React (первый в списке сборщиков). Курс «Vite 8» это шесть разделов от нулевой конфигурации до деплоя на GitHub Pages через GitHub Actions. Внутри настройка стилей и препроцессоров, оптимизация графики, тесты в Vitest и отдельный раздел про миграцию с Gulp и Webpack. Курс по Vite полностью на русском языке с практикой и эталонными решениями. #htmlacademy #levelup В эти выходные, 6 и 7 июня, курс «Vite 8» можно будет взять со скидкой 60% по промокоду VITE60 — только два дня и только на этот курс. 📎 Смотреть программу
638
14
Пока Кекс сажал редиску, нейросеть придумала объяснять CSS-селекторы через рейтузы. И знаете, заходит. Пояс — это .reituzy__w+5
Пока Кекс сажал редиску, нейросеть придумала объяснять CSS-селекторы через рейтузы. И знаете, заходит. Пояс — это .reituzy__waistband, а :not(.patched) — те рейтузы, до которых заплатка пока не добралась. Чем точнее адрес, тем чище CSS. Кажется, спецификация ещё никогда не выглядела так по-домашнему. Листайте карточки, их шесть. Пятничная рубрика нейрослопа: объясняем HTML и CSS понятно и с юмором. А какой селектор для рейтуз придумали бы вы?
912
15
Переключаться на браузер ради каждой проверки вёрстки, искать путь к файлу вручную, переименовывать парный тег отдельно — мел
Переключаться на браузер ради каждой проверки вёрстки, искать путь к файлу вручную, переименовывать парный тег отдельно — мелкая рутина, которая съедает время. Расширения VS Code её убирают. Три из подборки: 📎 HTML Preview — предпросмотр разметки прямо в редакторе, без переключения на браузер. 📎 Live Server — перезагружает страницу автоматически после правок в HTML, CSS или JavaScript. 📎 CSS Peek — открывает правила CSS из файла HTML через «Перейти к определению». Ещё семь — Prettier, Colorize, Auto Rename Tag и другие — со ссылками на установку в статье. Сохраните, чтобы настроить редактор на выходных. #tools #vscode 👉🏻 Читать статью
823
16
Присваиваете объект через = — и получаете вторую ссылку на тот же объект. Меняете «копию» — меняется оригинал. spread и Objec
Присваиваете объект через = — и получаете вторую ссылку на тот же объект. Меняете «копию» — меняется оригинал. spread и Object.assign() спасают только частично: копируют первый уровень, а вложенные объекты и массивы остаются общими. Долгое время глубокую копию собирали через JSON.parse(JSON.stringify(obj)). Способ рабочий, но теряет данные: Date превращается в строку, функции и undefined исчезают, Map становится пустым объектом. structuredClone() делает полную независимую копию и корректно обрабатывает Date, Map, Set, ArrayBuffer, RegExp и другие встроенные типы. Функции и узлы DOM клонировать не получится — будет DataCloneError. Доступен во всех актуальных браузерах и в Node.js с 17-й версии. В статье — интерактивный пример: нажимаете кнопку и видите, как ведут себя =, spread и structuredClone() на одном объекте. #js #clone 🔴 Читать статью
850
17
В последней строке заголовка остаётся одно слово, и весь блок смотрится неаккуратно. Раньше это правили руками — неразрывные
В последней строке заголовка остаётся одно слово, и весь блок смотрится неаккуратно. Раньше это правили руками — неразрывные пробелы, мягкие переносы. Теперь браузер берёт работу на себя. text-wrap: balance выравнивает строки заголовка по длине — для блоков до шести строк. text-wrap: pretty убирает «висячее» слово в конце параграфа и работает на тексте любой длины. Оба значения — прогрессивное улучшение. balance поддерживается с Chrome 114, Firefox 121 и Safari 17.4; pretty появился позже — в Chrome 117 и Firefox 122. Там, где поддержки нет, текст переносится как раньше. #css #webdev В статье — интерактивный пример: переключаете режимы и сразу видите разницу. 🎥 Читать статью
769
18
Пояснение 👇 :has() — реляционный псевдокласс. Он принимает относительный селектор: тот, что начинается с комбинатора >, +, ~ или пробела (комбинатор потомка по умолчанию). Поэтому :has() смотрит вперёд по дереву — на потомков и следующих соседей. Селектор form:has(input:invalid) подсветит саму форму, если у неё среди потомков есть невалидный <input>. А form input:invalid сработает иначе: выберет сам <input>, а форма останется без выделения. Селектор :contains() использовался в jQuery; в действующей спецификации CSS такого псевдокласса нет. Поддержка :has() стала Baseline Newly Available в декабре 2023 года.
816
19
🤔 Загадка от Кекса №4 Дизайнер просит: формы, в которых есть хоть один невалидный <input>, должны получить красную рамку. Какой селектор справится без помощи JavaScript?
760
20
Иногда HTTP-сервер нужен на пять минут — отдать клиенту статический билд на проверку или открыть вёрстку с мобильного по лока
Иногда HTTP-сервер нужен на пять минут — отдать клиенту статический билд на проверку или открыть вёрстку с мобильного по локальной сети. Поднимать ради этого Vite или Nginx — избыточно: первый рассчитан на полный цикл разработки, второй требует своего конфига. http-server запускается через npx http-server и работает сразу — раздаёт текущую папку на порту 8080. Другой порт, CORS-заголовки, автооткрытие браузера, отключение кеша на время разработки — всё это флаги. Никакого конфигурационного файла или установки в проект ему не нужно. Бонус: сервер доступен и по локальному IP — удобно открывать страницу со смартфона для проверки адаптива. #npm #tools 🎲 Читать статью
813