Как стать автором
Обновить
265.15

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

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

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

Готовимся к вопросам по вёрстке на интервью Frontend-разработчика: свойство display

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


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


Недавно у меня появилось желание снова проверить себя и показать сообществу свои ответы на самые популярные вопросы по вёрстке. Может же быть так, что мои ответы были неполными или некорректными. Если это так, то я научусь новому. А если всё хорошо, то они помогут другим людям в подготовке к собеседованию. Кажется, это в любом случае будет полезно.


У меня получился достаточно большой список. Он составлен на основе моего опыта, опыта моих знакомых и публично доступных собеседований. Каждый вопрос будет отдельной статьёй.


Сегодня я дам ответ на следующий вопрос: «Зачем нужно использовать свойство display

Читать дальше →
Всего голосов 17: ↑17 и ↓0 +17
Комментарии 4

Новости

Валидируйте это немедленно

Время на прочтение 11 мин
Количество просмотров 965

Как говорилось в одном сериале: “Все врут”. Поэтому валидация данных является контрактом – этаким камнем в фундаменте бизнес-логики программы.

def handler_create_user(r: Request):
input_data = r.post()
name, email = input_data. get('name'), input_data.get('email')
if not name or not email:
raise HTTPBadRequest('name & email must have values')
return User.create(name=name, email=email, password=uuid4())

Узнали? Не согласны? Если на оба вопроса ответили “да” или просто хотите почитать размышления про валидацию в целом (и в Python в частности), то добро пожаловать под кат.

Читать далее
Всего голосов 4: ↑4 и ↓0 +4
Комментарии 1

JS. Валидация данных. Пишем свой YUP

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

Создаем TypeScript библиотеку для валидации данных. Поэтапно добавляем основной функционал и типизацию. Делаем основую упор на простоту кода и проиводительность. Как протитип используем yup и zod.

Читать далее
Всего голосов 6: ↑5 и ↓1 +4
Комментарии 19

Изучаем WebRTC на практике: Лучшие инструменты и демо

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

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

Читать далее
Всего голосов 9: ↑9 и ↓0 +9
Комментарии 8

Истории

$2500 в месяц на сервисе с 1 функцией, которая уже была у крупных компаний

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

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

Читать далее
Всего голосов 76: ↑60 и ↓16 +44
Комментарии 36

«Код-ревью — это когда твои комментарии в интернете действительно читают»: дискуссия с разработчиками на C++

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

Заходят как-то на Хабр С++ разработчики из крупных компаний, а у них спрашивают: что такое код-ревью и используют ли они спецификатор final. Эти и другие вопросы с подвохом мы задали инженерам из YADRO, VK, Kaspersky, Syntacore и PVS-Studio. В итоге обсудили инструменты для работы со сторонними зависимостями, интерфейсы «плюсовых» библиотек и отказ (или нет) от exceptions.  

Продолжим дискуссию на митапе по С++, который пройдет онлайн 20 марта. Регистрируйтесь, подключайтесь к трансляции и пишите вопросы и комментарии в чат — ведущие озвучат некоторые из них.

Читать далее
Всего голосов 17: ↑16 и ↓1 +15
Комментарии 5

Высказывания трех известных людей о проблемах современной разработки ПО

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

Думаю, что после прочтения статьи Никиты Прокопова «JavaScript Bloat in 2024» (рус. «Насколько потолстел JavaScript к 2024 году?») не я один стал с пессимизмом смотреть на будущее веб-разработки. Хотя тема раздутия JavaScript не нова (одним из первых на эту проблему обратил внимание Эдди Османи в своей статье-отчете «The Cost Of JavaScript» (рус. «Сколько стоит JavaScript?») в 2017 году), но здесь поражает масштаб проблемы, обозначенный автором статьи.

Нечто подобное было с HTML (и в какой-то степени с графикой) на ранних этапах развития Всемирной паутины (далее веб). Проблему раздутия HTML удалось практически полностью решить к середине 00-х за счет внедрения веб-стандартов и совершенствования WYSIWYG-редакторов HTML. Появление технологии AJAX и одностраничных приложений (SPA) сместило акцент на JavaScript, но это не привело к мгновенному утяжелению веб-приложений (например, первые версии Gmail прекрасно работали даже на самых медленных dial-up-соединениях).

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

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

Читать далее
Всего голосов 17: ↑14 и ↓3 +11
Комментарии 20

Полное краткое руководство по grammY — JS-библиотеке для создания Telegram-ботов

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

Привет! Меня зовут Арсений, я сеньор фронтенд-разработчик. В этой статье хочу рассказать про основные механизмы библиотеки grammY и разобрать стартовый набор файлов бота, обработку ошибок, виды обработчиков событий, контекст обновлений, работу с разными видами клавиатур и многое другое. И все это — на реальных примерах.

В конце покажу, как задеплоить готового бота на сервере, чтобы он работал автономно и был доступен в любое время. Поехали!
Читать дальше →
Всего голосов 28: ↑28 и ↓0 +28
Комментарии 4

Добавление своих команд для CLI в Joomla 4 и Joomla 5 с помощью плагина

Время на прочтение 18 мин
Количество просмотров 428

В Joomla, как и во многих других PHP фреймворках и движках, уже довольно давно (с версий 1.7.x) существует возможность работы с помощью CLI. С его помощью обычно решают те задачи, решение которых в веб-интерфейсе Joomla нецелесообразно из-за возможных ограничений веб-сервера - так называемые "тяжелые" задачи. Это может быть миграция большого количества контента со старой версии Joomla на новую, синхронизация данных с внешним источником по API (синхронизация цен и остатков, выгрузка заказов), работа с файлами и каталогами, выполнение пакетных заданий на больших объёмах и т.д. - всё то, что может занимать много времени и ресурсов сервера.

Как добавить свою команду в CLI интерфейс Joomla расскажет эта статья.

Читать далее
Всего голосов 6: ↑6 и ↓0 +6
Комментарии 5

В помощь IT-команде — «Регламент создания багов» или «Как сделать задачу ясной для тебя из отпуска»

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

Данный регламент я написал на основании опыта работы лидом в IT компании с веб-приложением. Пункты из него прошли проверку практикой. Изначальные версии были (естественно) основаны на best practice из интернета, agile и опыта предыдущих и текущих руководителей.

Стоит отметить, что я хоть и находился в какой-то момент в роли QA-лида, но не имею соответствующей подготовки, но имею много знакомых QA-инженеров и лидов.

От себя рекомендую следующий алгоритм: копипаст, корректирование под свою специфику, практика использования. Важно обращать внимание на потребности разработчиков, ПМов, системных аналитиков и других участников команды, которые будут анализировать баги.

Данный регламент не ориентируется на какую-то определенную систему трекинга задач. Использование возможно как для JIRA, Kaiten, GitLab, Trello, так и для excel-таблицы.

Читать далее
Всего голосов 13: ↑10 и ↓3 +7
Комментарии 1

WebRTC. Как установить p2p соединение между браузерами

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

WebRTC позволяет браузерам обмениваться информацией напрямую без сервера. Можно передавать видео, звук и данные. Установить WebRTC соединение можно разными способами. В статье описано как WebRTC соединение устанавливается между пользователями редактора схем dgrm.net.

Читать далее
Всего голосов 9: ↑9 и ↓0 +9
Комментарии 5

Одно из самых востребованных IT-решений: простыми словами об API

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

Любой современной IT-компании так или иначе приходится работать с данными: они используются как в оптимизации показателей самой компании, так и в предоставлении услуг потребителям. Задача часто осложняется необходимостью управления и передачи больших объемов данных, поэтому организовать работу с ними помогают API.

Статья написана простым языком, где многие вещи объясняются через доступные примеры, чтобы материал был понятен для всех и давал общее представление, а не только рассказывал о тонкостях разработки.

Поговорим про API и разберем следующее:

Что такое API и где используется?
Почему проектам необходим именно API?
Как устроен API?
При помощи чего разрабатывают API?
Как провести сравнительный анализ технологий для разработки API?
Путь разработки и возникающие сложности
Стоит ли рассматривать API для своего проекта?

Читать далее
Всего голосов 10: ↑6 и ↓4 +2
Комментарии 13

Защищаем сервис от перегрузки с помощью HAProxy

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

Если вам доводилось использовать HAProxy для балансировки трафика, вы наверняка как минимум слышали, что этот продукт умеет отслеживать показатели активности сервиса и пользователей и реагировать на них по предопределённым условиям. Обычно в статьях на эту тему приводится пример ограничения пользователя по исходному IP-адресу, если частота запросов с него превышает некоторый предопределённый заранее лимит. Вот, к примеру, такая статья с сайта разработчиков.

Я бы хотел немного углубиться в тематику использованного механизма stick tables, но поговорить не про пользователей, активно интересующихся вашим сайтом, а про нагрузочную способность, или ёмкость, всего сайта (ну или каких-то его путей). Во-первых, любой сервис ограничен в количестве одновременных запросов, которые возможно обслужить на существующих ресурсах. Во-вторых, чаще всего у сервиса не одна площадка или хотя бы не один экземпляр балансёра. А это значит, что поймать одинокого пользователя — это, конечно, здорово, но хотелось бы решить и другую интересную задачу: защитить сервис от перегрузки в целом и в случае, если балансёров более одного. Бонусом поговорим о проблеме умного перераспределения нагрузки между локациями.

Читать далее
Всего голосов 16: ↑16 и ↓0 +16
Комментарии 0

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

Московский туристический хакатон
Дата 23 марта – 7 апреля
Место
Москва Онлайн

Go на митап: обсудим sync.Pool, свой mini-k8s, паттерны и сообщения об ошибках

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

28 марта встречаемся на митапе по Go-разработке с инженерами из команд систем хранения данных и телекома YADRO, а также разработчиками из VK и AvitoTech. Эксперты расскажут, как: 

снизить нагрузку на сборщик мусора,

сделать свой mini‑k8s,

написать библиотеку для обработки ошибок,

использовать горутины грамотно и безопасно.

Митап пройдет в Нижнем Новгороде и онлайн. Регистрируйтесь на встречу и выбирайте удобный формат участия. А под катом читайте программу и знакомьтесь со спикерами.

Читать далее
Всего голосов 16: ↑15 и ↓1 +14
Комментарии 0

Мы пилили монолит — много нас, а он один. Полезные советы от команды Яндекс Еды

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

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

Распилить
Всего голосов 37: ↑35 и ↓2 +33
Комментарии 34

Запуск идеи стоит 5 млн, и это дорого. Как сэкономить на проекте? Спойлер: откажитесь от React

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

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

Рендеринг — это преобразование кода в визуализированную страницу. Самые распространённые типы — на сервере (server side rendering, или SSR) и в браузере клиента (client side rendering, или CSR). В последнее время мы чаще используем серверный рендеринг с помощью технологии HTMX и советуем его заказчикам. В статье расскажем, почему.

Читать далее
Всего голосов 37: ↑20 и ↓17 +3
Комментарии 116

Решаем ошибку при миграции на Storybook 7

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

Привет, я фронтенд-разработчик в Skyeng. При переходе с шестой версии Storybook на седьмую встретилась ошибка «Providers from the BrowserModule have already been loaded. If you need access to common directives such as NgIf and NgFor, import the CommonModule instead».

В этой статье объясняю, почему возникает баг и как его исправить.

Читать далее
Всего голосов 12: ↑12 и ↓0 +12
Комментарии 0

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

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

В статье расскажу и покажу, как сверстать письмо, чтобы оно наверняка правильно отображалось во всех почтовых клиентах — особенно в Outlook, который до сих пор возглавляет подборки по популярности в РФ.

В конце — пример целого письма в HTML.

Читать далее
Всего голосов 34: ↑32 и ↓2 +30
Комментарии 17

Сборка мусора в V8

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

В этой статье мы детально разберем процесс сборки мусора движком V8. Познакомимся с понятиями поколений, Minor и Major Garbage Collection, посмотрим, как аллоцируются, трассируются и маркируются объекты в памяти. Что происходит с пустыми областями после очистки, и как выполняется сборка мусора в фоновом режиме. 

Читать далее
Всего голосов 15: ↑15 и ↓0 +15
Комментарии 3

Как я случайно превратила свой сокращатель ссылок в приманку для мошенников

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

Пару месяцев назад я запустила сервис y.gy, навороченный сокращатель URL. Вызвано это было личной нуждой: в другом моём проекте, getwaitlist.com, используется множество реферальных ссылок, а доступные сервисы сокращения url не внушали мне доверия. В итоге я решила создать собственный инструмент, который наверняка окажется полезен не только мне.

Я разработала лучший в своём роде сокращатель со всеми возможными примочками, начиная с обширной кастомизации и заканчивая хорошей аналитикой трафика. Это всё, что мне было нужно. По аналогии со многими аналогичными инструментами я разместила интерфейс «Shorten Link» по центру домашней страницы. Регистрация для использования сервиса не требуется. Я сделала доступ бесплатным и неограниченным, опираясь на принцип: «бесплатность – лучшая маркетинговая стратегия». Закончив с настройкой, я без громких заявлений сделала релиз и начала потихоньку продвигать свой проект.
Читать дальше →
Всего голосов 142: ↑138 и ↓4 +134
Комментарии 69

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