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

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

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

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

Пробуем preload (PHP 7.4) и RoadRunner

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


Привет, Хабр! 

Мы часто пишем и говорим о производительности PHP: как мы ей занимаемся в целом, как мы сэкономили 1 млн долларов при переходе на PHP 7.0, а также переводим разные материалы на эту тему. Это вызвано тем, что аудитория наших продуктов растёт, а масштабирование PHP-бэкенда при помощи железа сопряжено со значительными затратами — у нас 600 серверов с PHP-FPM. Поэтому инвестирование времени в оптимизацию для нас выгодно.

Прежде мы говорили в основном об обычных и уже устоявшихся способах работы с производительностью. Но сообщество PHP не дремлет! В PHP 8 появится JIT, в PHP 7.4 — preload, а за пределами core-разработки PHP развиваются фреймворки, подразумевающие работу PHP как демона. Пора поэкспериментировать с чем-то новым и посмотреть, что это может нам дать.

Так как до релиза PHP 8 ещё далеко, а асинхронные фреймворки плохо подходят для наших задач (почему — расскажу ниже), сегодня остановимся на preload, который появится в PHP 7.4, и фреймворке для демонизации PHP — RoadRunner.

Это текстовая версия моего доклада с Badoo PHP Meetup #3. Видео всех выступлений мы собрали в этом посте.
Читать дальше →
Всего голосов 114: ↑111 и ↓3+108
Комментарии52

Как уязвимость в Яндекс.Станции вдохновила меня на проект: Музыкальная передача данных

Время на прочтение3 мин
Количество просмотров25K
На прошлой неделе я рассказал, как устроена активация Яндекс.Станции через звук. Оказалось, что пароль от WiFi передаётся в открытом виде. Я размышлял, зачем вообще нужно было делать активацию так, а не каким-то отлаженным способом.

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



Под катом я расскажу, как сделан прототип, и дам ссылку на демку. Вы сможете сами послушать, как звучит любое сообщение :)
Читать дальше →
Всего голосов 118: ↑117 и ↓1+116
Комментарии56

9 лучших опенсорс находок за сентябрь 2019

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

Доброго Хактоберфеста, дамы и господа. Подготовил для вас подборку самых интересных находок из опенсорса за сентябрь 2019.


За полным списком новых полезных инструментов, статей и докладов можно обратиться в мой телеграм канал @OpensourceFindings (по ссылке зеркало, если не открывается оригинал).


В сегодняшнем выпуске.
Технологии внутри: Python, C, Rust, Ruby, JavaScript, Go.
Тематика: веб разработка, администрирование, инструменты разработчика.


Прошлый выпуск.

Читать дальше →
Всего голосов 115: ↑112 и ↓3+109
Комментарии19

Рендеринг текста вас ненавидит

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

Рендеринг текста: насколько сложным он может быть? Оказывается, невероятно сложным! Насколько мне известно, буквально ни одна система не выводит текст «идеально». Где-то лучше, где-то хуже.

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

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

Мы обсудим темы, которые не объединяются в рамках какой-то единой концепции, это просто вопросы, с которыми мне пришлось столкнуться за несколько лет работы над рендерингом текста в Firefox. Например, не будем слишком подробно обсуждать проблемы сегментации текста или управления различными текстовыми библиотеками для конкретной платформы, поскольку этим я не слишком интересуюсь.
Читать дальше →
Всего голосов 113: ↑112 и ↓1+111
Комментарии19

Истории

«Мы всегда верили в конкуренцию и право выбора пользователя» © Яндекс

Время на прочтение4 мин
Количество просмотров58K
Вчера Яндекс ответил на жалобу российских компаний о недобросовестной конкуренции. Их иронично-издевательский ответ показал их истинное лицо: двуликое и беспринципное, прикрывающееся словами о конкуренции и выборе. Поэтому я решил опубликовать эту статью, дабы привлечь больше внимания к вопросу монополистических практик в Интернете и спору между Яндекс.Вертикалями и конкурирующими с ними сервисами.

image

В 2015 году Яндекс пожаловался на Google, обвинив его в злоупотреблении доминирующим положением на рынке мобильных ОС. «Яндекс» утверждал, что Google навязывает пользователям собственные сервисы, ограничивая доступ к сторонним.

Официальную позицию Яндекс опубликовал на Хабре. И, судя по рейтингу и откликам, большинство хабравчан поддержало Яндекс в том споре. Тогда Яндекс выиграл дело, ФАС признала Google нарушителем закона «О конкуренции». Но прошло 4 года и я хочу обратиться к Яндексу с его же словами и призывами.
Читать дальше →
Всего голосов 306: ↑263 и ↓43+220
Комментарии284

Как делать сайты в 2019 году

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

Веб стремительно меняется, не отставай и ты!



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


Давайте-ка шаг за шагом разберём важнейшие принципы веб-дизайна в 2019 году.


Обязательно дайте пользователю знать, что у сайта есть мобильное приложение


Это важнейший принцип, и на то есть свои причины. Фокус-группы, на которые мы уже потратили кучу денег, показали что первое же, чего захочет пользователь попав на ваш сайт — установить мобильное приложение.


Ну а кратчайший путь к этому — показать здоровенное модальное окно:



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


Совет: Если у вас нет мобильного приложения, не беда! Просто запихните весь сайт в  webview с отключенной безопасностью и пишите, что это мобильное приложение!

Читать дальше →
Всего голосов 244: ↑233 и ↓11+222
Комментарии278

Старикам здесь не место? Программируем после тридцати пяти

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



Привет, меня зовут Дмитрий, мне 35 лет. Раньше я часто слышал, что программист — профессия для молодых. Тем не менее прошлым летом я получил приглашение в Яндекс и перебрался работать в Москву.


В этой статье я хотел бы затронуть вопрос, который не раз обсуждался на Хабре: насколько реально быть программистом после 35–40 лет? Не ведущим архитектором, не тимлидом, не менеджером проекта, а именно программистом? Я не согласен с мнением, что программирование — это удел молодых. Считаю его вредным и сейчас расскажу почему.


Существует несколько доводов, на которые опирается этот миф. Давайте-ка их подробно рассмотрим.

Читать дальше →
Всего голосов 238: ↑222 и ↓16+206
Комментарии657

Создаём максимально недоступный сайт с идеальной оценкой Lighthouse

Время на прочтение6 мин
Количество просмотров49K
Встроенный инструмент тестирования Google Lighthouse оценивает доступность (accessibility) сайтов по шкале от 0 до 100. Похвально стремиться к максимальной читаемости контента, но оценка 100 не означает, что сайт идеально доступен. Для доказательства я провёл небольшой эксперимент.

Всегда приятно видеть, как люди хвастаются в твиттере своими оценками Lighthouse: это значит, что они заботятся о качестве.



Lighthouse награждает лучшие сайты зелёным кружочком с цифрой 100, которую вы с гордостью показываете клиентам и друзьям.
Читать дальше →
Всего голосов 138: ↑137 и ↓1+136
Комментарии41

Виджет vk.com без спроса устанавливает на сайт счетчик от mail.ru

Время на прочтение1 мин
Количество просмотров31K
Сегодня на одном из наших сайтов в консоли разработчика была обнаружена неожиданная ошибка:

image

Это счетчик от mail.ru пытается отправить статистику.
Читать дальше →
Всего голосов 130: ↑125 и ↓5+120
Комментарии47

Почему не нужно тратить свое время на создание нишевых тематических сайтов

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


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

Буду рассказывать на примере сайта по мужской психологии, который я открыл в 2011 году (год очень важен!) Информация о которой я рассказываю уже не особо актуальна, зато поможет вам сэкономить время и отказаться от идеи открыть свой тематический портал.

Итак, 2011 год, я глупый и наивный парнишка, мой первый тематический сайт!
Читать дальше →
Всего голосов 192: ↑179 и ↓13+166
Комментарии244

Почему я отказался от Disqus и вам тоже пора

Время на прочтение2 мин
Количество просмотров52K
Замена Disqus на Commento снизила размер страниц в 10 раз

Когда я завёл блог, то установил Disqus для комментариев. Это был естественный выбор: сайты по всему интернету ставили Disqus, его легко настроить, и есть бесплатный вариант использования. Я спокойно интегрировал движок комментариев и двинулся дальше.

Но вот в чём дело: я всегда знал, что Disqus немного раздувает страницы. Я ведь писал о веб-производительности и обычно старался оптимизировать страницы. Но я просто предположил, что Disqus прибавляет немного лишних килобайт. Логика: если он сильно раздувает страницы, все бы уже давно отказались от него. Очевидно, Disqus старается не увеличивать трафик, верно?

Я ошибался.
Читать дальше →
Всего голосов 146: ↑145 и ↓1+144
Комментарии48

Как мы сделали PHP 7 в два раза быстрее PHP 5. Часть 1: оптимизация структур данных

Время на прочтение18 мин
Количество просмотров37K
В декабре 2015 вышел PHP 7.0. Компании, которые перешли на «семерку» отметили, что увеличилась производительность, а нагрузка на сервера — уменьшилась. Первыми перешли на семерку Vebia и Etsy, а у нас Badoo, Авито и OLX. Для Badoo переход на семёрку обошелся в 1 млн. долларов экономии на серверах. Благодаря PHP 7 в OLX средняя нагрузка на сервер снизилась в 3 раза, повысилась эффективность и экономия ресурсов.

Дмитрий Стогов из Zend Technologies на HighLoad++ рассказал, благодаря чему повысилась производительность. В расшифровке: о внутреннем устройстве PHP, об идеях в основе версии 7.0, об изменениях в базовых структурах данных и алгоритмах, которые и определили успех.

Disclaimer: На март 2019 года 80% сайтов работают на PHP, и 70% из них — на PHP 5, хотя с 1 января 2019 эта версия не поддерживается. Доклад Дмитрия от 2016 года про принципы, благодаря которым произошел двукратный скачок производительности между PHP 5 и 7, — актуален и в марте 2019. Для половины сайтов — точно.
Всего голосов 121: ↑116 и ↓5+111
Комментарии20

Стажёр Вася и его истории об идемпотентности API

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

Идемпотентность — звучит сложно, говорят о ней редко, но это касается всех приложений, использующих API в своей работе.


Меня зовут Денис Исаев, и я руковожу одной из бэкенд групп в Яндекс.Такси. Сегодня я поделюсь с читателями Хабра описанием проблем, которые могут возникнуть, если не учитывать идемпотентность распределенных систем в своем проекте. Для этого я выбрал формат вымышленных историй о стажёре Васе, который только-только учится работать с API. Так будет нагляднее и полезнее. Поехали.


image

Читать дальше →
Всего голосов 219: ↑216 и ↓3+213
Комментарии163

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

Weekend Offer в AliExpress
Дата20 – 21 апреля
Время10:00 – 20:00
Место
Онлайн
Конференция «Я.Железо»
Дата18 мая
Время14:00 – 23:59
Место
МоскваОнлайн

Как подступиться к fullstack-разработке сегодня, если ты проспал десять лет

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


Привет, Хабр! Несколько месяцев назад у меня остро встал вопрос смены профиля деятельности и я обнаружил, что для претендента на вакансию web-разработчика сейчас недостаточно навыков десятилетней давности (какая неожиданность!). Пришлось срочно актуализировать свои знания. Заодно я решил составить шпаргалку с описанием большинства современных технологий, чтобы в случае чего кидать жаждущим новых знаний линк на эту статью, да и самому не забывать.
Читать дальше →
Всего голосов 162: ↑135 и ↓27+108
Комментарии381

История одного лендинга: привлек много клиентов и был скопирован под сотню раз

Время на прочтение6 мин
Количество просмотров56K
Привет, Хабр! Я Руслан Кокин, UX-дизайнер в компании UXhot, и у меня есть необычная история про лендинг, а также состояние копирайта в России.



Среди созданных нами продуктов есть по-настоящему легендарный лендинг пейдж, ставший донором для зарождающегося в интернете сегмента механизированной штукатурки. За три года работы он не только привлёк много клиентов, но и был скопирован почти 100 раз. Хотите узнать, что такого особенного в нем было?
Читать дальше →
Всего голосов 139: ↑134 и ↓5+129
Комментарии77

Технические аспекты блокировки интернета в России. Проблемы и перспективы

Время на прочтение20 мин
Количество просмотров46K
Начнем сразу с дисклеймера: ниже принципиально не будет политических вопросов. Административные и юридические вопросы тоже будем обходить настолько, насколько сможем, чтобы полностью не вырывать техническую часть из остальных плоскостей.

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


О спикере: Филипп Кулин (schors) генеральный директор ООО «Дремучий лес» — небольшого российского хостера, занимающегося в основном shared-хостингом.
Всего голосов 120: ↑117 и ↓3+114
Комментарии169

Мой переезд и работа в Австралии

Время на прочтение16 мин
Количество просмотров101K
image

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

Прошу прощения, что получилось так много и не очень структурировано.
И да, все сказанное ниже является только моим собственным мнением и не является официальным взглядом таких компаний, как SEEK и Jora, это меня мое начальство попросило тут написать.
Читать дальше →
Всего голосов 112: ↑108 и ↓4+104
Комментарии386

Производительность PHP: планируем, профилируем, оптимизируем

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


Привет, Хабр! Два года назад мы писали о том, как перешли на PHP 7.0 и сэкономили миллион долларов. На нашем профиле нагрузки новая версия оказалась в два раза более эффективной по использованию CPU: ту нагрузку, которую раньше у нас обслуживали ~600 серверов, после перехода начали обслуживать ~300. В результате на протяжении двух лет у нас был запас мощностей.

Но Badoo растёт. Количество активных пользователей постоянно увеличивается. Мы совершенствуемся и развиваем нашу функциональность, благодаря чему пользователи проводят в приложении всё больше времени. А это, в свою очередь, отражается на количестве запросов, которое за два года увеличилось в 2—2,5 раза.

Мы оказались в ситуации, когда двукратный выигрыш в производительности нивелировался более чем двукратным ростом запросов, и мы опять стали приближаться к пределам нашего кластера. В ядре PHP снова ожидаются полезные оптимизации (JIT, предзагрузка), но они запланированы только на PHP 7.4, а эта версия выйдет не раньше, чем через год. Поэтому трюк с переходом сейчас повторить не удастся — нужно оптимизировать сам код приложения.

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

Заглядываем под капот нового Gmail

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

Полгода назад Google представила обновленную версию своего почтового сервиса. Несмотря на то что многие пользователи были недовольны редизайном, в том числе и на Хабре, это теперь основной интерфейс для пользователей.


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

Читать дальше →
Всего голосов 138: ↑136 и ↓2+134
Комментарии93

С — не низкоуровневый язык

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


Ваш компьютер не является быстрой версией PDP-11


Привет, Хабр!

Меня зовут Антон Довгаль, я С (и не только) разработчик в Badoo.

Мне попалась на глаза статья Дэвида Чизнэлла, исследователя Кембриджского университета, в которой он оспаривает общепринятое суждение о том, что С — язык низкого уровня, и его аргументы мне показались достаточно интересными.

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

Производители процессоров не одиноки в этом. Разработчики компиляторов C/C++ тоже внесли свою лепту.
Читать дальше →
Всего голосов 206: ↑198 и ↓8+190
Комментарии296