Все потоки
Поиск
Написать публикацию
Обновить
340.64

Веб-разработка *

Делаем веб лучше

Сначала показывать
Порог рейтинга
Уровень сложности

Как нарисовать квадрат 3 × 3 см на веб-странице*

Время на прочтение5 мин
Количество просмотров30K

* Не привлекая внимания санитаров

Меня зовут Илья, я занимаюсь фронтенд-разработкой вот уже 10 лет. Представьте, что вам нужно сделать стили для печати документов, а бегать к принтеру с линейкой, чтобы убедиться в корректности фактических размеров отдельных элементов, очень не хочется. Было бы куда проще иметь возможность приложить ту же линейку к экрану. Но размеры элементов на экране почти всегда не соответствуют их физическим размерам при печати. Казалось бы, зачем это вообще может быть кому-то нужно. Но это бывает важно. Например, в типографиях.

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

Что ж, вызов был брошен. И я поставил себе задачу (вы же тоже сами ставите себе задачи?) — нарисовать красивый красный квадратик размером 3 × 3 см. Тому, что у меня в итоге получилось, и посвящён мой необычный рассказ. 

Читать далее

Скучный Интернет и как «бесполезные сайты» могут спасти от этого

Время на прочтение9 мин
Количество просмотров4.2K

Интернет изменил мир. Он изменил политику, образование, шопинг и журналистику, а также он полностью переопределил то, как люди проводят своё время.

Интернет огромен и загадочен, полон множества уникальных сайтов. Хотя большинство веб-сайтов имеют ясную цель, например, продвижение бизнеса, продажа продукции, обучение или вдохновение, но иногда встречаются странности, которые не имеют цели. Из 1,1 миллиарда веб-сайтов, составляющих Всемирную паутину, только 18% в настоящее время активны. Среди них можно найти настоящие алмазы — веб-сайты, которые активны и тщательно разработаны, но при этом самым забавным образом бесполезны.

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

Как встроить систему приглашений в свое приложение с помощью Laravel и GraphQL

Время на прочтение4 мин
Количество просмотров2.4K

Привет, Хабр! Меня зовут Екатерина Саяпина, я Product Owner личного кабинета платформы МТС Exolve. В этом посте расскажу, как встроить систему приглашений в приложение с помощью Laravel и GraphQL. Эту задачу можно выполнить не только по привычным каналам вроде email, но и через SMS API. Мы разберем процесс интеграции от создания модели на Laravel и работы с GraphQL до отправки сообщений через API Exolve. Все подробности — под катом.

Читать далее

Что интересного в React 18

Время на прочтение10 мин
Количество просмотров6.3K

Привет! Я Дима, фронтенд-разработчик в Surf. Сегодня рассмотрим самую популярную библиотеку для фронтенда — React. Что было в React18? Давайте узнаем!

Читать дальше

Путешествие по Next.js: от ошибок с not-found до форка next-runtime-env

Уровень сложностиСредний
Время на прочтение4 мин
Количество просмотров1.6K

Недавно столкнулся с интересным багом в Next.js. Если на странице not-found делать навигацию через router.push(pathname), теряются все переменные окружения, которые мы инициализируем через библиотеку next-runtime-env (значение window.__ENV становится undefined).

В проекте мы используем next-runtime-env, так как придерживаемся подхода Build once, deploy many — это позволяет держать один Docker-образ, в который при запуске прокидываются нужные переменные окружения. Next.js из коробки не поддерживает такое поведение, ведь он хочет собирать env-переменные на этапе сборки приложения.

Баг проявился на not-found странице, где у нас есть кнопка, позволяющая создать элемент в один клик, если что-то не найдено. Этот же компонент кнопки используется и на других страницах, и вот что интересно: на остальных страницах router.push(pathname) работает корректно, а на not-found — нет.

Сначала я подумал, что проблема кроется в next-runtime-env. Наверное, библиотека переопределяется при обновлении страницы, потому что скрипт, устанавливающий переменные в window.__ENV, размещён в root layout. Я также пробовал версионировать Next.js, предполагая, что баг связан с определёнными версиями фреймворка, но это не дало результатов. В итоге, временным решением стало использование window.location.href, что предотвращало рефреш страницы и помогало сохранить переменные.

Однако на этом история не закончилась.

Читать далее

DRY-фреймворк: продолжение

Уровень сложностиСредний
Время на прочтение5 мин
Количество просмотров2.3K

Идея нехитрая, но очень заманчивая — пишешь CSS, пишется и CSS и HTML одновременно.
В этой статье разбирается воплощение идей akopyl в виде JS-фреймворка.

Особая благодарность автору идеи akopyl.

Читать ещё один JS-фреймворк

Анонс VoidZero — следующее поколение инструментария для JavaScript

Время на прочтение5 мин
Количество просмотров8.9K

Сегодня было анонсировано следующее поколение инструментария для JavaScript от автора Vue и Vite. В рамках начального финансирования было привлечено $4.6 миллиона, при этом основными инвесторами стали Accel и Amplify. В свете этого анонса важно понять контекст, в котором он происходит, и значимость изменений, которые он приносит.

Пятнадцать лет назад JavaScript был в основном языком сценариев для браузеров. Сегодня он стал самым широко используемым языком, применяемым для создания веб-приложений, мобильных приложений, игр и даже Интернета вещей (IoT). Несмотря на развитие множества инструментов для решения все более сложных задач, экосистема JavaScript остаётся фрагментированной, что делает настройку совместной работы зависимостей одной из самых сложных задач. 

Эван Ю вложил значительные усилия в изучение стека инструментов JavaScript и разработку абстракций для упрощения работы разработчиков, что привело к созданию Vite в 2020 году. За четыре года Vite стал одним из ведущих инструментов для веб-разработки, поддерживаемым множеством мета-фреймворков и обладающим более чем 15 миллионами загрузок в неделю. Vite зарекомендовал себя как общий инфраструктурный слой для следующего поколения веб-фреймворков.

Читать далее

Связываем форму сайта с Telegram-ботом на чистом JavaScript за 15 минут: Полная разработка и деплой

Время на прочтение15 мин
Количество просмотров17K

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

Суть задачи:

Пользователь вводит данные в форму на сайте, после чего эта информация отправляется заказчику через Telegram-бота. Данные отправляются в формате HTML, с полным набором информации. Всё это нужно было реализовать на чистом JavaScript + HTML + CSS. Из этой задачи родилась идея для данной статьи.

Чем мы займёмся?

Мы зарегистрируем Telegram-бота через BotFather, создадим приятную страницу с формой для сбора данных с использованием бесплатного сервиса WebSim.ai, а затем настроим отправку сообщений с формы в Telegram-бота, используя только JavaScript, HTML и CSS.

Читать далее

WAF для Вебсокетов: рабочее решение или иллюзия?

Уровень сложностиПростой
Время на прочтение7 мин
Количество просмотров2.3K

Есть мнение, что в силу особенностей вебсокетов, WAF не может их нормально анализировать и защищать. Давайте попробуем разобраться, насколько это утверждение справедливо.

Читать далее

PHP и Laravel дайджест новостей за август 2024 года

Время на прочтение7 мин
Количество просмотров3.7K

Дайджест новостей от CutCode с Сергеем Пантелеевым и Данилом Щуцким. Давайте посмотрим, что произошло в августе в мире PHP и Laravel.

Читать далее

Опять эти правки! Учимся общаться с разработчиками и добиваться внедрения правок

Уровень сложностиПростой
Время на прочтение4 мин
Количество просмотров1.3K

Привет! Я Илья Русаков — CEO impulse.guru. За годы практики заметил, что взаимодействие с ребятами-seoшниками не всегда проходит гладко. Сегодня разберёмся в нуждах и потребностях команд, посмотрим на примеры их «противостояния», и попутно я буду рассказывать, как облегчить взаимодействие между разработкой и SEO. 

Что за противостояния, о чём вообще речь? Когда SEO-специалист приносит стопку правок, разработчик почему-то не торопится их брать в работу. И это не из вредности — часто бывает, что seошник не доносит ценность правок, поэтому те и не попадают в список первоочередных задач разработчика. SEO-специалист продолжает настаивать, и вот уже работа двух команд напоминает батл — кто кого переиграет. 

Читать далее

Простой мини-чат на FastApi: Современный интерфейс, вебсокеты и SQLAlchemy с деплоем

Время на прочтение40 мин
Количество просмотров31K

Привет, друзья! Сегодня я подготовил для вас увлекательную практическую статью о создании мини-чата на FastApi. Мы погрузимся в мир вебсокетов, узнаем, зачем они нужны и как применяются в реальных приложениях. Также я продемонстрирую работу с асинхронной SQLAlchemy на примере взаимодействия с базой данных SQLite.

Для создания современного интерфейса мы обратимся к интересному и бесплатному сервису Websim.ai, который за пару минут сгенерирует нам интерфейс, включая страничку для входа/регистрации и страницу самого чата.

Чтобы наш чат мог обслуживать множество пользователей одновременно, мы выполним деплой нашего FastApi приложения. Для этого воспользуемся сервисом Amvera Cloud. Нам нужно будет подготовить файлы приложения, написать код, создать файл с настройками (можно сгенерировать на сайте или скопировать мой код), а затем доставить файлы на сервис. Для доставки можно использовать встроенный терминал или GIT, используя стандартные команды PUSH/PULL.

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

Читать далее

Знакомство с гипермедийными системами на ASP.NET Core 8.0

Уровень сложностиПростой
Время на прочтение11 мин
Количество просмотров5.8K

Быстрый старт с HTMX 2.0. Знакомство с гипермедийными системами на основе современной серверной платформы ASP.NET Core.

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

Читать далее

Ближайшие события

Улучшение производительности рендеринга с помощью CSS content-visibility

Уровень сложностиПростой
Время на прочтение5 мин
Количество просмотров8K

Недавно я обнаружил интересную ошибку в работе emoji-picker-element:

Я работаю на экземпляре fedi с 19 тыс. пользовательских эмодзи [...], и когда я открываю панель выбора эмодзи [...], страница замирает как минимум на целую секунду, а после этого на некоторое время замирает общая производительность.

Если вы не знакомы с Mastodon или Fediverse, то на разных серверах могут быть свои собственные эмодзи, как в Slack, Discord и т.д. Наличие 19k (на самом деле ближе к 20k в данном случае) крайне необычно, но не является чем-то неслыханным.

Читать далее

Создание гиперкуба с помощью Three.js: как увидеть четвертое измерение?

Уровень сложностиСредний
Время на прочтение4 мин
Количество просмотров9.3K

Каждый раз, когда я сталкиваюсь с чем-то новым в разработке графики, я задаюсь вопросом: «А можно ли сделать что-то круче?» Создавать трёхмерные сцены в браузере — задача увлекательная, но уже привычная. Мы привыкли работать с кубами, сферами и прочими объектами в 3D-пространстве. Но что, если выйти за его пределы? А что, если ввести в игру четвёртое измерение? Именно эта мысль и привела меня к созданию интерактивного гиперкуба с помощью Three.js.

Взглянуть за пределы 3D

Так ли плох Битрикс на самом деле? Разбираем возможные причины технических проблем и низкой скорости интернет-магазина

Уровень сложностиПростой
Время на прочтение5 мин
Количество просмотров5.3K

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

Читать далее

А что, так можно было?

Время на прочтение5 мин
Количество просмотров17K

Привет Хабр!

Меня зовут Алекс, и я автор фронтенд-библиотеки для создания UI-компонентов-агностиков - Symbiote.js. Я не единственный разработчик, но главный контрибьютор и тот, кто отвечает за концепцию, развитие, документацию, деврел, DX все остальное. Мейнтейнер то есть. Всем этим я занимаюсь в свободное от другой работы время, на которой я фуллстек, R&D-инженер и техлид.

Сегодня, я бы хотел рассказать о том, как появился Симбиот, и почему он вообще существует, при наличии огромного зоопарка библиотек и фреймворков для фронтенда, с куда более значительной аудиторией и поддержкой от крупных IT-компаний. Ведь мы, инженеры, очень НЕ любим, когда вокруг нас начинают плодиться лишние сущности, и сразу начинаем угрожающе размахивать бритвой Оккама. Верно? (хитро прищурился)

Читать далее

UI-система или хроники Хаоса

Время на прочтение5 мин
Количество просмотров1.1K

Всем доброго времени суток. Давно я что-то ничего не писал, и вот созрел. Предлагаю сегодня поговорить о ui-системе. Зачем она нужна, когда она нужна, что дает, какие минусы имеет и вообще стоит ли ввязываться в это блуд.  Я часто слышу на разных конференциях, что панацея от всех болезней в бизнесе  —  это наличие дизайн-системы (ui-системы). Что, как только вы достигаете ее, то сроки сокращаются в 100500 раз. Что разработчики не хотят открутить голову дизайнерам, и, наоборот, что качество продукта возноситься до небес, и еще много всего восхитительного об этой сущности. Но так ли все это ? Или это просто розовые очки, которые застилают глаза всех причастных к созданию ui-системы в компании и побочка от постоянных нервных срывов, скандалов, поиска компромиссов и просто выгорания? В этой статье я постарался разобраться, а стоит ли игра свеч или как в анекдоте про нюансы. 

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

UI - kit — это полный набор элементов и компонентов, необходимый для сборки большого однородного продукта. Он включает различные кнопки, иконки, поля для ввода данных и т. д. и позволяет сохранять узнаваемость продукта и доверие пользователей. Так мне сказал поисковик, я спорить не стал.

UI component являются основными блоками и элементами для дизайна пользовательского интерфейса. Они предоставляют пользователям способ взаимодействия с вашим веб-сайтом или приложением. Этими компонентами могут являться интерактивный текст и графика, которые сообщат пользователю, что делать дальше.

Читать далее

HTML и CSS ошибки, влияющие на доступность. Мой опыт и моего незрячего знакомого Ильи. Часть 10

Уровень сложностиСредний
Время на прочтение6 мин
Количество просмотров4.6K

Хабр, я снова пришёл к вам с практическими советами про доступность вместе с Ильёй. Мы показываем, как HTML и CSS могут улучшить или ухудшить её. Напоминаю, что Илья — мой незрячий знакомый, который помогает мне найти наши косяки в вёрстке.


Сегодня мы рассмотрим следующие аспекты:

  • Почему в наших дизайн-системах и библиотеках есть сломанные нестандартные радиокнопки;
  • Мой способ отказаться от ссылки для изображения с сохранением интерактивности;
  • Дублирование стилей при наведении для фокуса вводит меня в ступор;
  • Можно ли скрыть кнопку с помощью атрибута disabled от скринридера.

Давайте начнём!

Читать дальше →

Пример создания Full Stack проекта с использованием функционального тестирования как инструмента дизайна

Уровень сложностиСредний
Время на прочтение10 мин
Количество просмотров2.5K

Зачастую full stack (и не только) проекты создаются без функциональных тестов.

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

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

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

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

В этой части статьи я на примере покажу, как можно спроектировать простое веб-приложение, используя функциональное тестирование, и имплементировать веб-приложение.

Поехали!

Вклад авторов