Как стать автором
Обновить
316
0
Artem Loenko @dive

Software Engineer

Отправить сообщение

Пробуем 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

Xcode 10.2, macOS Mojave 10.14.4, iOS 12.1 и другие бета-версии

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


Вышли новые беты Xcode, macOS Mojave и iOS — и вот основные моменты, которые я усвоил.

Swift 5 для Xcode 10.2 beta


Swift


Прежде всего, последняя бета-версия Xcode идет в комплекте с новой версией Swift:

Apple Swift 5.0 (swiftlang-1001.0.45.7 clang-1001.0.37.7)
Target: x86_64-apple-darwin18.2.0
ABI version: 0.6


Начнем с самых волнующих новостей:
Приложения на Swift больше не включают в себя DLL для стандартной библиотеки Swift и оверлеи Swift SDK в версиях для устройств на iOS 12.2, watchOS 5.2 и tvOS 12.2. В результате Swift-приложения уменьшаются в размере при развертывании для тестирования в TestFlight или при сжатии архива для дистрибутива.
ABI наконец-то станет стабильным, и это отличные новости. На мой взгляд, сегодня это одна из ключевых проблем Swift — не из-за побочных эффектов, а из-за невыполненных обещаний. Некоторые мои знакомые даже переписывают расширения для Apple Watch на Objective-C, чтобы уменьшить размер бинарного файла (примерно с 15 Мб до 1 Мб). Узнать больше о состоянии ABI можно по ссылкам: Информационная панель Swift ABI и Манифест стабильности Swift ABI.
Читать дальше →
Всего голосов 50: ↑49 и ↓1+48
Комментарии4

Практичный жесткий диск

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

image
Читать дальше →
Всего голосов 117: ↑76 и ↓41+35
Комментарии78

OAuth: описание протокола простым и понятным языком

Время на прочтение16 мин
Количество просмотров190K
OAuth — популярный протокол, который позволяет социальным сервисам интегрироваться между собой и дает безопасный способ обмена персональной информацией. OAuth может связать между собой 2 сервиса, каждый из которых имеет свою пользовательскую базу — именно их я в данном случае называю «социальными». Когда начинаешь работать с OAuth, первое ощущение — что протокол весьма сложен и избыточен. В этой статье я попытаюсь объяснить основы OAuth человеческим языком.

Пример кросс-авторизации


Вернемся в 2005-й год и представим, что мы пишем социальную сеть. В ней имеется форма импорта контактов из адресной книги GMail. Что нужно для доступа к контактам GMail? Конечно, логин и пароль от ящика. Но если мы попросим ввести их на нашем сайте, пользователь заподозрит неладное. Где гарантия, что мы не сохраняем на сервере введенные пароли? Поэтому нам хочется, чтобы пароль вводился только на сайте GMail, и после этого доступ к контактам через API GMail предоставлялся нашей социальной сети (возможно, на время).
Под катом - повествование с примерами
Всего голосов 134: ↑124 и ↓10+114
Комментарии34

Мозг на вынос

Время на прочтение2 мин
Количество просмотров1K
Есть игры красивые, есть игры любимые, есть игры умные, есть игры безумные. Вот о парочке последних я бы и хотел рассказать.

Живет на свете замечательный парень по имени Kyle Gabler. Однажды он подарил миру свой маленький мир — World of Goo. Мир это послание воспринял крайне благосклонно и с тех пор Kyle в работе не нуждается.

Но, существует несколько крышесносящих проектов, которые он со своей командой делал до World of Goo. Собственно, их достаточно сложно назвать играми с традиционной точки зрения. Хотя бы потому, что в них нельзя выиграть. Но попытаться, определенно, стоит.

image


Некоторые из них..
Всего голосов 104: ↑101 и ↓3+98
Комментарии51

Стэнфордский курс по программированию iPhone

Время на прочтение1 мин
Количество просмотров6.1K
Бесплатный курс Стэнфордского университета по программированию iPhone скачали уже более миллиона человек. Популярность лекций резко возросла, когда их семь недель назад выложили на сайте iTunes U — это специальный обучающий ресурс Apple, посвящённый iTunes.

Курс iPhone Application Programming представляет собой видеозаписи лекций из 10-недельного обучающего курса, который читался программистами Apple для студентов Стэнфорда. Через два дня после каждой лекции её выкладывали в свободный доступ, так что интернетчики могли учиться практически в режиме реального времени, одновременно с настоящими студентами. Видеоматериал сопровождается кадрами из презентаций, которые показывали на экране в аудиториях одного из лучших университетов мира.

Менеджеры проекта iTunes U говорят, что у них на сайте это первый курс, который достиг отметки в миллион скачиваний.
Всего голосов 41: ↑34 и ↓7+27
Комментарии21

Хороший 22-дюймовый монитор теперь есть. Даже два

Время на прочтение1 мин
Количество просмотров6K
NEC P221WВ начале осени я писал о своем подходе к выбору качественного, но не заоблачно дорогого домашнего монитора для работы с фото и комфортного просмотра фильмов. Уже более полугода очень доволен вариантом Dell 2408. Нареканий практически никаких, кроме, разве что, неудобного меню.

Тогда я упомянул, что, к сожалению, среди 22-дюймовых моделей нет вариантов на *VA- или IPS-матрицах. А 24 дюйма уже не всем подойдет по размерам. На то время единственным выбором из не-TN матриц в России был Lenovo ThinkVision L220x — 22 дюйма с нестандартным для такой диагонали Full HD разрешением. Но, судя по обзорам, среди них попадалось много брака – ощутимо размытая картинка.
Читать дальше →
Всего голосов 60: ↑51 и ↓9+42
Комментарии107

Native Client: одной ногой в офлайне

Время на прочтение1 мин
Количество просмотров5.1K
В понедельник в Google Code Blog вышел анонс нового эксперимента веб-гиганта. Технология Native Client призвана ускорить веб-приложения благодаря прямому доступу к ресурсам центрального процессора на локальном компьютере пользователя.

В пакет Native Client будут входить runtime-плагин для браузера и набор утилит для компиляции, основанных на GNU Compilation Tools. Они позволят веб-приложению, работающему в браузере, в то же время использовать модули, самостоятельно выполняющиеся на ПК. Плюсы от такой модели приложения очевидны: пропадает необходимость перекачивать по каналу «клиент-сервер» большие объемы данных в сетевых приложениях вроде видео- и графических редакторов.

Чтобы обеспечить в приложениях, работающих с Native Client, должный уровень безопасности, Google вводит жесткие ограничения для разработчиков: а) каждое приложение должно быть написано в соответствии с определенными структурными критериями для легкого дизассемблирования; и б) в офлайновых модулях не должны содержаться определенные цепочки инструкций. Такой подход к обеспечению безопасности, однако, сразу вызывает мнение, что Google просто хочет оградить разработчиков, как всегда не пуская их глубоко в свою платформу.

Свои разработки под Native Client можно начинать уже сейчас. Исследовательская версия пакета уже доступна для скачивания и обещает работать на всех популярных ОС под x86 и во всех популярных браузерах, кроме Internet Explorer и Safari на MacOS. Версии для других аппаратных и программных платформ должны появиться в скором будущем.
Всего голосов 38: ↑37 и ↓1+36
Комментарии46

Игровое программирование в Light Bot

Время на прочтение1 мин
Количество просмотров3.1K
Light Bot — забавная браузерная игра на флеше, где вам необходимо запрограммировать своего бота на выполнение простой задачи: дойти до цели минуя все препятствия.
Читать дальше →
Всего голосов 153: ↑124 и ↓29+95
Комментарии113

Десять советов как написать (чуть) менее ужасное резюме

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

«Цель: получить работу в IBM»
— пишет какой-то идиот-соискатель в Amazon.com.




ВНИМАНИЕ: это мое собственное, *персональное*, мнение, не Google, не Amazon или кого-либо еще. Я думаю вы обнаружите, что большинство рекрутеров, оценивающих анкеты в технических компаниях — особенно в технических компаниях, которые производят собственное программное обеспечение сами, такие как Yahoo!, Ebay, Amazon.com, Microsoft или Google — в целом, согласятся со многим из перечисленного. Но опытные рекрутеры расходятся во мнениях касательно многих мелких деталей, и, в конце-концов, это всего лишь мое собственное мнение. Эти советы не гарантируют получения Вами сколь-нибудь лучших результатов. Возможно, у вас будет другой опыт. Не используйте эти советы в ванной или стоя в луже. Не стучите по стеклу, это раздражает советы. Советы не кормить! И т.д.

Читать дальше →
Всего голосов 104: ↑82.5 и ↓21.5+61
Комментарии101

Восстановление битых пикселей ЖК

Время на прочтение1 мин
Количество просмотров125K
Сомневался в успешности метода, а также в том, что мой вечно салатовый пиксель, застывший полгода назад и постоянно мозоливший мне глаз, «станет на место». Но…
О чудо, помогло!
screenshot

Читать дальше →
Всего голосов 143: ↑142 и ↓1+141
Комментарии144

Азбука хорошего разработчика. Книжки для чтения

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

Паттерны проектирования

Википедия — там, в принципе, на хорошем уровне все описано и приведены примеры на разных языках.
Базовая книга – классика:
«Приемы объектно-ориентированного проектирования. Паттерны проектирования» — читал книгу давно, и раза 3. Вам того же советую. Даст возможность понимать большое количество терминов, произносимых другими разработчиками.

Рефакторинг

«Рефакторинг. Улучшение существующего кода» — вероятно, эта книга сделала революцию в написании кода. Читается быстро и интересно. Методы рефакторинга должны отложиться в голове до конца жизни. Ваш код отныне будет лучше. В книге есть упоминание про юнит тестинг.
Читать дальше →
Всего голосов 73: ↑72 и ↓1+71
Комментарии66

Вардрайвинг в MAC OS X

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


Стандартом де-факто в вардрайвинге обычно считается система Linux (модифицированные драйвера, Kismet в связке с aircrack-ng). Но немногие знают, что в маке есть мощные инструменты для взлома аудита безопасности беспроводных сетей, ни чуть не уступающие, а во многом и превосходящие по функционалу Linux-аналоги.
UPD: Описанные в статье инструменты на сегодняшний день устарели. Рекомендуется использовать Linux

Читать дальше →
Всего голосов 93: ↑82 и ↓11+71
Комментарии89

Активацию Windows 7 доломали окончательно

Время на прочтение1 мин
Количество просмотров213K
Как известно, механизм активации Windows 7 был взломан ещё до официального выхода этой системы. Но старый метод требовал изменений в BIOS, что является весьма нетривиальной задачей.

Сейчас хакеры нашли вариант полного обхода механизма Windows Activation Technologies (WAT) без манипуляций с BIOS'ом и вообще без использования ключа активации.
Читать дальше →
Всего голосов 276: ↑237 и ↓39+198
Комментарии232

Использование unix pipes для отображения прогресса выполнения нативного кода на Android'е

Время на прочтение4 мин
Количество просмотров3.3K
В одном из проектов мне понадобилось отслеживать прогресс выполнения нативного кода на Android'е (конкретно — портированного FFmpeg'а). Ситуация осложнялась также тем, что по ряду причин код выполнялся в нескольких процессах.

Читать дальше →
Всего голосов 49: ↑42 и ↓7+35
Комментарии12

Программируем LED на телефоне

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

Хотя Android API не позволяет напрямую включать-выключать светодиодный индикатор или вспышку фотокамеры, на некоторых телефонах такая возможность имеется.

Как программно помигать разноцветными огоньками, как написать свой «Фонарик» или какими еще светодиодами устройства можно управлять — об этом Вы узнаете ниже.
Читать дальше →
Всего голосов 63: ↑58 и ↓5+53
Комментарии62

Улучшаем интерфейс Java-приложения

Время на прочтение27 мин
Количество просмотров99K
Добрый день, Хабражитель!

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

Итак, в данном посте я постарался изложить самые важные и значимые на мой взгляд моменты по работе со Swing и графикой — как создавать компоненты, как стилизовать интерфейс, чего делать не стоит и многое другое…

Читать дальше →
Всего голосов 118: ↑113 и ↓5+108
Комментарии71

Детектор границ Канни

Время на прочтение6 мин
Количество просмотров90K
Доброго времени суток!

Последнее время, на Хабре часто стал упоминаться алгоритм выделения границ Канни (который, к моему удивлению, переводится дословно: хитрый). Итак, я созрел поделиться с общественностью своим опытом реализации этого детектора.
Читать дальше →
Всего голосов 70: ↑67 и ↓3+64
Комментарии26

Алгоритмы выделения контуров изображений

Время на прочтение4 мин
Количество просмотров162K
В свете недавних статей об обработке изображений я хотел бы немного рассказать об алгоритмах выделения контуров: методы Робертса, Превитта и Собеля (эти методы взяты для рассмотрения как самые известные и часто используемые).

Читать дальше →
Всего голосов 83: ↑78 и ↓5+73
Комментарии45

Алгоритм «diamond-square» для построения фрактальных ландшафтов

Время на прочтение12 мин
Количество просмотров116K
Карта игры Minecraft, созданная с помощью приложения CartographДумаю, многие знакомы с весьма необычной игрой Minecraft (справа — пример сгенерированной в ней карты), в которой игрок находится на (практически) бесконечной поверхности Земли и может исследовать окружающий мир с минимальными ограничениями.

Как же автору игры, Notch'у, удалось добиться подобного сходства его случайных «миров» с земными просторами? В этом топике я как раз и рассмотрю один из способов построить искусственный ландшафт такого рода (и вскользь упомяну пару других способов), а также расскажу о моем небольшом усовершенствовании этого алгоритма, позволяющем значительно увеличивать размеры ландшафта без заметных потерь в производительности.

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

Читать дальше →
Всего голосов 147: ↑146 и ↓1+145
Комментарии58

Информация

В рейтинге
Не участвует
Откуда
Россия
Дата рождения
Зарегистрирован
Активность