Обновить
256K+

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

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

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

Асинхронный Python-код медленнее обычного кода

Время на прочтение8 мин
Охват и читатели24K
Большинство программистов понимают, что асинхронный Python-код имеет более высокий уровень конкурентности, чем обычный синхронный код. Это даёт некоторые основания полагать, что асинхронный код способен показывать более высокий уровень производительности при решении распространённых задач вроде выдачи динамических веб-страниц или поддержки веб-API.



Но, к сожалению, Python-интерпретатор не выполняет асинхронный код быстрее синхронного.

В реалистичных условиях асинхронные веб-фреймворки показывают немного худшую пропускную способность (выраженную в запросах в секунду), чем обычные, и отличаются гораздо более сильной изменчивостью задержек.
Читать дальше →

Alpine.js своими руками

Время на прочтение8 мин
Охват и читатели6K

Давайте поговорим о том, что внутри, под капотом Alpine.js. К концу статьи вы узнаете, как происходит создание современного реактивного фронтенд фреймворка путем написания оного своими руками. Это легче, чем вам кажется.


Эта статья – вольный перевод мини-курса Building AlpineJS от создателя библиотеки Caleb'а Porzio на Laracasts. Если вы в нормальных отношениях с английским и больше любите видео, чем текст, – милости прошу. 4 из 6 уроков бесплатны, остальные по подписке. Статья затрагивает только бесплатные уроки. В принципе, их нам будет достаточно, чтобы понять, что там внутри.
Читать дальше →

Мониторинг через UptimeRobot

Время на прочтение3 мин
Охват и читатели21K

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

Существует не один десяток сервисов для мониторинга сайтов, большинство из них полностью платные или сильно урезанные в бесплатной версии. Особняком от них стоит UptimeRobot, который предоставляет огромный функционал бесплатно и позволяет гибко настраивать платную подписку под свои нужды.

В большинстве случаев UptimeRobot шлёт HTTP-запросы на указанный адрес и по заголовкам ответа определяет его доступность (2хх — всё ок, 4хх/5хх — в течение 30 секунд обстреливает повторными запросами из других точек, если ответ снова отрицательный, засчитывается downtime).
Читать дальше →

PHP-Дайджест № 182 (1 – 22 июня 2020)

Время на прочтение5 мин
Охват и читатели14K

Свежая подборка со ссылками на новости и материалы. В выпуске: 3 принятых и 6 новых RFC-предложений из PHP Internals, включая голосование за новый синтаксис для атрибутов — @@ и почему #[] был бы лучше, переименования black/whitelist в PHP-мире, как отлаживают PHP-разработчики, аналог ngrok на PHP, видео, подкасты и многое другое.

Приятного чтения!


Дайджест свежих материалов из мира фронтенда за последнюю неделю №420 (15 — 21 июня 2020)

Время на прочтение4 мин
Охват и читатели10K
Предлагаем вашему вниманию подборку с ссылками на новые материалы из области фронтенда и около него.

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

Laravel-Дайджест (15–21 июня 2020)

Время на прочтение2 мин
Охват и читатели7.5K

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


Laravel Дайджест
Абигейл, супруга создателя фреймворка, демонстрирует свежий мерч. Фото: Taylor Otwell

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

Сервировка сжатых файлов и использование CDN

Время на прочтение11 мин
Охват и читатели3K

При загрузке сайта на сервер ложится множество задач, которые необходимо выполнять быстро и стабильно. Но ответственность за часть из них (например, обработку запросов на получение файлов, их пересылку клиенту и компрессию передаваемых данных) можно переложить на специализировые файловые хранилища. Они, как правило, имеют несколько территориальных зон и отдают клиенту файлы от наиболее близкого сервера (так, время загрузки ресурсов из физически удаленных от расположения основного сервера мест значительно сократится). Эти преимущества использования CDN — разгрузка сервера, сокращение времени доставки контента, а также сокращение трафика, передаваемого основным сервером (который обычно дороже), привели к довольно широкому использованию подобного подхода. Сегодня разберемся, как работать с Amazon S3-совместимыми CDN и настраивать передачу сжатых файлов.

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

Не надо следовать JavaScript-трендам

Время на прочтение7 мин
Охват и читатели21K
Однажды, когда у вас выдался не самый светлый день, вы увидели новый твит о том, как пользоваться хуками React. Но по какой-то причине ваша компания или ваша команда ещё не перешли на хуки. Или, может быть, вы ими пользуетесь, но не таким способом, который можно было бы назвать «трендовым». Возможно, вы применяете Vue.js или Angular, но React-хуки лезут буквально отовсюду, вы видите сообщения о них так часто, что возникает такое ощущение, будто скоро о них «заговорит» даже микроволновка.

Так как день у вас был не очень удачным, вы начали задаваться вопросом о том, всё ли благополучно с вашим кодом. Может, стоить зарефакторить тот кусок программы, который вы только что прошли? После того, как вы перестали задавать себе вопросы о своём коде, у вас заработала фантазия, вы стали представлять себе то, как хуки будут смотреться в вашей кодовой базе.

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


Обложка выдуманной книги: «Переписываем фронтенд каждые шесть недель»
Читать дальше →

Как управлять состоянием React приложения без сторонних библиотек

Время на прочтение9 мин
Охват и читатели50K

image


Реакт это все что вам нужно для управления состоянием вашего приложения.


Управление состоянием это одна из сложнейших задач при разработки приложения. Вот почему каждый день появляются все новые и новые библиотеки для управления состоянием, их становится все больше и больше, причем многие из них разрабатываются поверх уже существующих решений. В npm вы можете найти сотни "упрощенных Redux" библиотек. Однако, несмотря на то что управлять состоянием сложно, одной из причин того почему так получилось стало именно то что мы слишком переусложняем решение проблемы.


Существует метод управления состоянием который лично я пытаюсь применять еще с тех пор как я начал использовать Реакт. И теперь, после релиза хуков (hooks) и улучшения контекстов (context), этот метод управления состояниями стало очень просто использовать.

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

Высокопроизводительная сборка мусора для C++

Время на прочтение10 мин
Охват и читатели15K
Мы уже писали о сборке мусора для JavaScript, о DOM, и о том, как всё это реализовано и оптимизировано в JS-движке V8. Правда, Chromium — это не только JavaScript. Большая часть браузера и движок рендеринга Blink, куда встроен V8, написаны на C++. JavaScript можно использовать для работы с DOM, а на экран изменения выводятся с использованием конвейера рендеринга.

Так как граф C++-объектов, имеющих отношение к DOM, тесно связан с JavaScript-объектами, команда разработчиков Chromium пару лет назад начала использовать для управления памятью, в которой хранятся эти объекты, сборщик мусора, названный Oilpan. Oilpan — это сборщик мусора, написанный на C++ и предназначенный для управления C++-памятью, которая может быть подключена к V8. Управление памятью осуществляется с использованием технологии кросс-компонентной сборки мусора. В рамках этой технологии граф связанных C++/JavaScript-объектов рассматривается как единая куча.



Этот материал является первой публикацией, посвящённой Oilpan. Здесь будет сделан обзор основных принципов, лежащих в основе данного сборщика мусора, а также — C++-API Oilpan. Мы рассмотрим некоторые возможности, поддерживаемые Oilpan, расскажем о том, как устроена работа различных подсистемам сборщика мусора. Тут же мы разберём процесс конкурентного освобождения памяти, занятой объектами.

Самое интересное здесь то, что система Oilpan является частью Blink, но сейчас осуществляется её перевод в V8, где она будет представлена в форме библиотеки для сборки мусора. Цель этого всего заключается в том, чтобы облегчить доступ к C++-механизмам сборки мусора всем тем, кто встраивает в свои платформы движок V8. Кроме того, то, что Oilpan станет библиотекой, позволит пользоваться этой системой абсолютно всем заинтересованным в ней C++-программистам.
Читать дальше →

Советы начинающим веб-разработчикам

Время на прочтение3 мин
Охват и читатели5.8K
Я занимаюсь созданием сайтов в том или ином виде с 1995 года. После 25 лет работы, думаю, что накопил опыта и теперь располагаю достаточными знаниями. Ниже в произвольном порядке изложено несколько моментов, о которых я бы хотел, чтобы начинающие разработчики поразмыслили.

  • Порой сайт — это всего лишь сайт.
  • Браузер уже является клиентом; HTML — это язык, на котором он разговаривает.
  • Веб строится вокруг визуализации на стороне сервера.
  • Вы можете предоставить данные несколькими способами; рассмотрите HTML как один из способов представления данных.
  • Масштабирование на стороне вашего сервера поможет всем, в то время как масштабирование на стороне клиента, помогает только тем, у кого мощное железо и быстрое соединение.
  • Не каждый имеет (или может использовать) мышку.
  • Не каждый имеет (или может использовать) клавиатуру.
  • Не каждый имеет (или может использовать) тачскрин.
  • Не у каждого цвета и картинки отображаются так же, как и у вас.
Читать дальше →

Crawc.net — создание и стилизация своих медиачатов

Время на прочтение4 мин
Охват и читатели2.6K
Хочу рассказать о своем проекте. Это чат, а если точнее платформа медиачатов — это значит что тут можно создать и оформить свой однокомнатный чат с поддержкой медиа-контента в сообщениях и вставить его себе на сайт через iframe. Проект только недавно вышел из стадии Бета-версии.

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

Чат Crawc

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

Пробежимся немного по функционалу


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

Не стоит создавать собственные решения для аутентификации пользователей

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

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



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

Разработка безопасной системы аутентификации пользователей — это по-настоящему сложная задача. Она гораздо масштабнее, чем многие думают. Эту задачу очень легко решить неправильно. Хуже того: ошибки при создании подсистем аутентификации могут повлечь за собой катастрофические последствия. В базовую структуру систем аутентификации и управления пользователями входит всего несколько форм. Из-за этого создание подобных систем может показаться весьма простым делом. Но, как известно, дьявол кроется в деталях. Нужно немало потрудиться для того чтобы сделать такие системы безопасными (и, когда это возможно или даже необходимо, учесть в них требования конфиденциальности персональных данных).
Читать дальше →

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

Генерация вспомогательных файлов: реэкспорт, экспортный объект, валидаторы из моделей — можно ли подружить с Webpack?

Время на прочтение13 мин
Охват и читатели3.9K

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


За основу проекта возьму код из этой статьи, так как оформляю несколько текстов в виде более-менее связанного цикла.

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

Стрим Modern Web Live 2020 – PWAs. Web Supercharged

Время на прочтение2 мин
Охват и читатели1.1K
Привет, Хабр!

С Progressive Web Apps уже всем же всё понятно? Что здесь ещё можно обсуждать? Вот, мы так тоже думали, а потом увидели состояние многих существующих PWA и решили уточнить. У вас уточнить. Поэтому собираемся в пятницу 19-го в 17:00 по Москве на лайвстрим с PM’ом Chrome по PWA, PJ McLachlan, и Product Lead’ом по PWA по региону EMEA, Craig Adolph, поговорить об этом и ответить на ваши вопросы. Ваши бессменные ведущие – Даниил Матвеев, консультант по мобильным технологиям, и Андрей Липатцев, менеджер по работе со стратегическими партнёрами.

Modern Web Live Россия / PWAs. Web Supercharged. Изображение обработано в squoosh.app
Читать дальше →

Выбор зависимостей для проекта

Время на прочтение4 мин
Охват и читатели1.6K
Салют, хабровчане. В преддверии старта курса «Fullstack разработчик JavaScript», подготовили для вас еще один полезный перевод.




Каждый веб-разработчик сталкивался с этой головоломкой: какую зависимость выбрать? Почему мы выбираем jQuery, а не Prototype, или Prototype, а не Mootools, или отдаем предпочтение Vue вместо React, или же предпочитаем Angular вместо Ember, или же Lodash, а не Underscore, и так получается неограниченное количество комбинаций.

Сам я принимаю решение настолько быстро, что оно может казаться неосознанным. Однако это не так, и я решил, что пришло время описать некоторые из моих рабочих процессов, как минимум, чтобы со временем скорректировать их или пересмотреть.
Читать дальше →

Повышаем эффективность взаимодействия дизайнеров и frontend-разработчиков

Время на прочтение9 мин
Охват и читатели8K
Когда к списку ключевых услуг нашего аутсорс-продакшена добавился дизайн, мы решили, что не хотим работать по общепринятым стандартам. Мы стали искать особый подход к дизайну: максимально качественно, максимально оперативно, максимально экономно. И мы его нашли — просто поменяв местами дизайнеров и верстальщиков.


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

Реактивные веб-технологии излишне переоценены

Время на прочтение7 мин
Охват и читатели11K
Привет, Хабр!

Я еще помню времена, когда принудительное ООП было доминирующим паттерном. Сейчас это очевидно не так, и все современные ЯП предлагают намного больше парадигм. Однако в области веб-разработки тотально (и на мой взгляд неоправданно) доминирует реактивность, которая в свое время эффективно решила проблему несовершенного DOM API, попутно создав несколько архитектурных проблем вроде централизованного хранилища данных (что вообще-то нарушает принципы SOLID), или переусложненного механизма взаимодействия компонентов. В условиях современных WEB-стандартов, реактивность нуждается как минимум в некотором переосмыслении. Например, реактивная парадигма прекрасно выглядит, если наш стейт централизован (не случайно самый популярный стек это react / redux), а если он распределен по дереву компонентов (что архитектурно правильней), то зачастую нам нужно меньше реактивности, а больше аккуратной императивности.

Свои проекты я пишу на ванильных веб-компонентах, в стиле императивного ООП, с минимальным количеством библиотечного кода, и очень редко действительно скучаю по реактивности. Если бы чистая реактивность покрывала все потребности разработчика, не пришлось бы в каждом фрейморке создавать императивные лазейки, позволяющие модифицировать компонент вместо его пересоздания (рефы, неуправляемые формы, $parent и т.д.). А когда стоит задача получить экстремально-отзывчивое приложение, то волей-неволей приходится думать (и вручную контролировать) момент и способ обновления DOM, как собственно и сделано в большинстве хороших PWA (например Twitter) и не сделано в менее хороших PWA (например VK). Так, большие списки выгодней формировать методом insertAdjacentHTML(), который вполне способен работать с текстово-параметризуемыми веб-компонентами, но вряд-ли применим к управляемым компонентам, и таких примеров достаточно.
Читать дальше →

А этот товар точно просматривают четырнадцать человек?

Время на прочтение3 мин
Охват и читатели14K


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

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

Иногда это реальная цифра, а иногда случайная. То есть вот прямо совсем случайная.
Читать дальше →

Разговоры в пижамах. Онлайн-встреча с Виталием Фридманом 19 июня

Время на прочтение2 мин
Охват и читатели951


Надоел зум и скучные митинги? Мы хотим разнообразить твою жизнь, приглашая в Wrike TechClub ярких, интересных и вдохновляющих людей из IT и не только. А ты садись поудобнее, расслабься, налей себе чего-нибудь и оставь тягостные мысли на завтра. Марафон из бесконечных дел подождет, присоединяйся к нашему Пижаматону 19 июня в 7 вечера (по Москве).