Как стать автором
Обновить
-7
DjOnline @DjOnlineread⁠-⁠only

Пользователь

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

Двойная скорость и половина памяти: оптимизация PHP 7

Время на прочтение13 мин
Количество просмотров22K
Ключ к высокой производительности приложений – оптимизация. При этом, чем ниже уровень, на котором код подстраивают под особенности аппаратного обеспечения – тем большего можно добиться. А ещё более впечатляющих результатов можно достичь тогда, когда при проектировании аппаратного обеспечения учитываются особенности кода. Сегодня мы расскажем о том, как идёт работа над ускорением PHP 7, которую совместно, практически непрерывно, ведут Intel и сообщество PHP-разработчиков.


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

Обзор расширения OPCache для PHP

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


PHP — это скриптовый язык, который по умолчанию компилирует те файлы, которые вам нужно запустить. Во время компилирования он извлекает опкоды, исполняет их, а затем немедленно уничтожает. PHP был так разработан: когда он переходит к выполнению запроса R, то «забывает» всё, что было выполнено в ходе запроса R-1.

Очень маловероятно, что на production-серверах PHP-код изменится между выполнением нескольких запросов. Так что можно считать, что при компилированиях всегда считывается один и тот же исходный код, а значит и опкод будет точно таким же. И если извлекать его для каждого скрипта, то получается бесполезная трата времени и ресурсов.
Читать дальше →

Трёхпозиционный checkbox (aka tristate) без скриптов и смс

Время на прочтение2 мин
Количество просмотров32K
Понадобилось мне недавно реализовать трёхпозиционный переключатель. Ну это такой, у которого вместо двух состояний «включено/выключено», есть ещё промежуточное состояние. Это часто используется, например, в чекбоксе «выбрать всё», для того чтобы показать, что выбраны не все элементы, а только часть. В общем, захотелось такое реализовать, да чтобы без скриптов.
Читать дальше →

Как по маслу, или анимируем со скоростью 60 FPS на CSS 3

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

Изображения и текст принадлежат их авторам.


Анимация элементов в мобильных приложениях — это просто. Правильная анимация тоже может быть простой… если вы последуете представленным в статье советам.


Сегодня кто только не использует CSS 3 анимацию в своих проектах, тем не менее не только лишь все, но мало кто может делать это правильно. Даже описаны так называемые «лучшие практики», но люди продолжают делать всё по-своему. Скорее всего потому, что просто не понимают, почему всё устроено именно так, а не иначе.


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

Делать ли мобильную версию? 5 распространенных проблем, которые решает адаптивная верстка. Опыт Яндекса

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

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


Сайт smashingmagazine.com на различных размерах экранов


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

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

Климатическая система в квартире своими руками

Время на прочтение21 мин
Количество просмотров110K
Кто-то в детстве мечтает изобрести лекарство от рака, кто-то — стать космонавтом или владельцем свечного заводика. А я мечтал о том, что у меня появится климатическая система, и в квартире, наконец, не будет душно, вечная простуда от сквозняков исчезнет, а горло перестанет першить от сухости. И теперь мечта исполнена!

Примерно с декабря 2015 по июнь 2016 года я читал форумы, катался по строительным магазинам, собирал систему в квартире и на балконе, паял контроллер и писал прошивку — и добился своего.

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

Схема установки
А если чуть подробнее, то...

1000 и 1 репост: гайд по кнопке «поделиться» в русских соц сетях

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


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

К сожалению, большая часть информации на эту тему, которую можно найти на хабре или stackoverflow — уже устарела, поэтому я постарался превратить этот в пост в актуальный мега-гайд по шерингу страниц в соц сетях. Я рассмотрел 5 наиболее популярных в России социальных сетей: контакт, facebook, твиттер, одноклассники и мой мир. Для каждой социальной сети приведен актуальный URL для шаринга, небольшие советы и рекомендации по использованию, а также JS код, позволяющий узнать количество шеров конкретного URL в каждой из соц. сетей.

В конце статьи есть сводная таблица со всеми ссылками и кратким описанием возможностей каждой из сетей.
Читать дальше →

Подпольный рынок кардеров. Перевод книги «KingPIN». Глава 31. «Суд»

Время на прочтение8 мин
Количество просмотров10K
В 31 главе описывается кейс, как спецслужбы вычисляют кардеров по метаданным.

Кевин Поулсен, редактор журнала WIRED, а в детстве blackhat хакер Dark Dante, написал книгу про «одного своего знакомого».

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

Квест по переводу книги начался летом в ИТишном лагере для старшеклассников — «Шкворень: школьники переводят книгу про хакеров», затем к переводу подключились и Хабраюзеры и даже немного редакция.

Глава 31. «Суд»

(за перевод спасибо Богдану Журу aka K3lwiN )

Кардер с Лонг-Айленда Джонатан Джианноне, с которым Макс и Крис познакомились, когда он был тинэйджером, хранил тайну ото всех.

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

Впечатление укрепилось после того, как уже через месяц после ареста суд Южной Каролины снял с него запрет на перемещение. Джианноне тут же полетел в аэропорт Окленда за покупками, где его встретила Теа. Они катались по шоссе вдоль тихоокеанского побережья, она покупала ему пиццу в Fat Slice на Берклиз Телеграф Авеню. Джианноне казался ей забавным — хвастливый белый паренек с вьющимися волосами и пристрастием к хип-хопу, который как-то раз хвалился, что побил футболиста из Нью-Йорк Джетс во время драки в местном баре. Теперь у них появилось что-то общее: Крис прервал контакты с Джианноне незадолго до ареста, а Теа сказал вернуться к заливу Сан-Франциско, чтобы она не создавала проблем в отношениях Криса. Он избавился от них обоих.

Эффективные структуры данных для PHP 7

Время на прочтение11 мин
Количество просмотров52K
PHP имеет всего одну структуру данных для управления всем. array — сложный, гибкий, гибридный, сочетает в себе поведение list и linked map. Но мы используем его для всего, потому что PHP придерживается прагматичного подхода: иметь предельно правильный, здравый и реалистичный способ решения проблемы, исходящий из практических, а не теоретических рассуждений. array позволяет делать работу, хотя о нем и так много рассказывают на лекциях по информатике. Но, к сожалению, с гибкостью приходит и сложность.

Последний релиз PHP вызвал большое оживление в сообществе. Мы не могли дождаться того, чтобы начать использовать новые возможности и почувствовать вкус ~2х прироста производительности. Одна из причин, почему это случилось — структура array была переработана. Но массивы все также придерживаются принципа «оптимизировано для всего; оптимизировано для ничего», еще не все идеально, есть возможности для совершенствования.

А что насчет структур данных SPL?
К сожалению… они ужасны. Раньше, до PHP7, они предлагали _некоторые_ преимущества, но сейчас мы дошли до точки, когда использование SPL не имеет практического смысла.

Почему мы не можем просто поправить и улучшить их?
Да, мы могли бы, но я считаю, что их дизайн и реализация настолько бедны, что лучше бы найти более современную замену.
«SPL data structures are horribly designed.»
Anthony Ferrara


Введение: php-ds — расширение для PHP7, добавляющее структуры данных. Этот пост кратко охватывает поведение, производительность и преимущества каждой из них. Также в конце вы найдете список ответов на ожидаемые вопросы.

Github: https://github.com/php-ds
Пространство имен: Ds\
Интерфейсы: Collection, Sequence, Hashable
Классы: Vector, Deque, Stack, Queue, PriorityQueue, Map, Set
Читать дальше →

Обходим антивирус при помощи десяти строк кода

Время на прочтение2 мин
Количество просмотров65K
Специалист по информационной безопасности под ником evasiv3 опубликовал на прошлой неделе запись в своем блоге, в которой рассказывается о том, как можно обойти любой антивирус при помощи десяти строк кода.

Изначально Evasiv3 планировал написать огромный пост о способах обхода антивирусной защиты, однако, протестировав первый шаг своего «руководства» он был очень удивлен: ни один из 56 протестированных продуктов, призванных обеспечить безопасность пользователя в сети, не обнаружил его бинарник.

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

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

Джулиан Ассанж: Google не то, чем кажется (часть четвертая)

Время на прочтение5 мин
Количество просмотров16K
Работа с молодежью – это очень важно. Это прекрасно понимают в правительстве, и Джаред Коэн отлично это понимает. Кроме Google Ideas, Коэн состоит и управляет еще несколькими «неправительственными» организациями, которые направлены на работу с молодыми активистами со всего света. Он стал работать с молодежью в том же году, когда договаривался с афганскими ОПСОСами о переносе вышек, буквально в начале своей глобальной карьеры. Об этих молодежных тусовках и пойдет речь.


Джаред Коэн на сцене с делегатами Нью-Йоркского торжественного саммита «Альянса молодежных движений» (Alliance of Youth Movements), 2008 год
Читать дальше →

Анализ рендеринга через Skia Debugger: как можно найти самые дорогие для отрисовки элементы

Время на прочтение4 мин
Количество просмотров23K
Доброго дня, недавно я решал проблему притормаживания скролла на страницах Почты Mail.Ru. Особенно эта проблема была заметна на retina-дисплеях. После простого анализа я пришел к выводу, что одна из основных проблем — это медленная отрисовка страницы.

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

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


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

Что писать в карточках, если товары одинаковые?

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


Привет! Я продолжаю рассказывать про буквы в блоге Михаила, владельца Текстброкера.

Предположим, у вас есть интернет-магазин, а у него внутри – карточки товаров. И товары бывают двух тяжелых категорий:
  • Те, у которых дофига неуникального текста (например, теххарактеристики телефонов, инструкции медицинских препаратов), и непонятно, как быть с SEO.
  • Те, которые имеют артикулы ####0001, ####0002, ####0003… ####0050 и так далее, то есть отличаются какими-то совершенно нереальными мелочами вроде цвета. Пример – 180 моделей очаровательных трусиков. К сожалению, очаровательны они для райтера только первые десять раз.

Давайте посмотрим, что делать.
Читать дальше →

Тонкости Javascript/Node.js. Увеличиваем производительность в десятки раз

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

Вступление


Появилась необходимость обмениваться сообщениями между сервером и клиентом в бинарном виде, но в формате JSON в конечном итоге. Начал я гуглить, какие существуют библиотеки упаковки в бинарный вид. Пересмотрел немало: MesssagePack, Bson, protobuf, capnproto.org и другие. Но эти все библиотеки позволяют паковать и распаковывать готовые бинарные пакеты. Не очень копался, возможно ли делать парсер входящего трафика по кускам. Но суть не в этом. С такой задачей никогда не сталкивался и решил поиграться с нодой и сделать свой. Куда же без костылей и велосипедов? И вот с какими особенностями Node.js я столкнулся…
Читать дальше →

Аккумуляторы AA/AAA через 7 месяцев хранения

Время на прочтение2 мин
Количество просмотров65K
В прошлом году я протестировал 198 аккумуляторов (44 модели AA и 35 моделей AAA). Тогда я измерял ёмкость аккумуляторов сразу после зарядки, а так же через неделю и месяц хранения.

Я провёл дополнительный тест большинства моделей аккумуляторов через семь месяцев после зарядки. Результаты получились интересными.



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

Google, куда ты дел моё место в GMail? А вы точно знаете, как в GMail работают ярлыки?

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

Стал я замечать, что из 15 гигабайт бесплатного месте, предоставленного Google, у меня почта занимает уже почти 12 гигабайт. И такая тенденция меня не радует.
С другой стороны я в качестве почтового клиента использую Thunderbird с полной синхронизацией. Т.е. все письма должны быть закачены. Так вот папка Thunderbird со всеми письмами и индексами занимает всего 3 гигабайта. Хотя по логике вещей размер должен не просто более менее совпадать с занятым местом на GMail, а быть побольше, т.к. Thunderbird не архивирует письма, а хранит как есть и еще индексы строит для ускорения поиска.
Проблема на лицо! Начинаем докапываться до сути.
Читать дальше →

PhpStorm — повышаем производительность (клавиатурные сокращения). Часть 1

Время на прочтение4 мин
Количество просмотров210K
imagePhpStorm — повышаем производительность (плагины и темы оформления). Часть 2

У всех нас есть любимые IDE или редакторы в которых мы пишем код. Для меня это PhpStorm, и потребовалось некоторое время, чтобы освоить все клавиатурные сокращения и ускорить свой рабочий процесс. В этой статье я поделюсь с вами некоторыми сочетания клавиш и советами, которые возьмут на себя часть рутинной работы, если вы тоже делаете свою работу в этой IDE. Эта статья была частично вдохновлена этим Reddit тредом, и я буду упомянать и демонстрировать некоторые трюки найденные там.

Обратите внимание, что я разрабатываю на Linux в Vagrant, размещенном в Windows, я буду использовать клавишу CTRL вместо CMD. Если вы работаете в OS X, замените CTRL на CMD.

Клавиатурные сокращения и хаки


PhpStorm позволяет настроить себя практически до бесконечности — вы можете заточить этот инструмент под себя так, что постороннему может показаться, что это совсем другая IDE.

(осторожно, много gif изображений)
Давайте посмотрим, чем мы можем воспользоваться

Две книги, которые изменили жизнь Сергея Брина

Время на прочтение3 мин
Количество просмотров39K
В 1996 году аспиранты Стэнфордского университета Сергей Брин и Ларри Пейдж начали разработку компьютерной программы, которая впоследствии станет известна миру как поисковая система Google.

Сегодня Google (Alphabet) — крупнейшая корпорация с рыночной капитализацией $450 млрд. Сергей Брин сосредоточил усилия на перспективных научно-исследовательском подразделении GoogleX, которое занимается революционными разработками вроде беспилотных автомобилей.

В одном из интервью в 2000 году Сергей Брин рассказал, какие книги вдохновили его посвятить карьеру технологиям, где смешаны наука и творчество.
Читать дальше →

36 млн запросов в час, 10000+ постоянно работающих клиентов, на одном сервере, nginx+mysql

Время на прочтение5 мин
Количество просмотров116K
Сложилась ситуация, что участвую в проекте, который работает с достаточно большой нагрузкой. Как уже написал — 36 млн запросов в час. Я много чего прочитал и перепробовал за последний месяц, настраивая сервер; хотелось бы просто сжато и компактно выдать тезисно то, что работает хорошо в такой конфигурации.

Первое, что я заметил — множество советов как все настроить под большую нагрузку. Читайте их внимательно, обычно в тексте найдете, что речь про «высокую нагрузку» в 15-20 тысяч клиентов в сутки. У нас клиентов примерно миллион, активных, ежедневных.

У нас нет денег и мы все делаем за свой счет, поэтому экономим. Итог — весь миллион клиентов обслуживается на одном сервере, вот на таком — EX-60 на hetzner.
Читать дальше →

Эффективное изменение размера картинок при помощи ImageMagick

Время на прочтение12 мин
Количество просмотров89K
В наше время всё чаще сайты сталкиваются с необходимостью введения отзывчивого дизайна и отзывчивых картинок – а в связи с этим есть необходимость эффективного изменения размера всех картинок. Система должна работать так, чтобы каждому пользователю по запросу отправлялась картинка нужного размера – маленькие для пользователей с небольшими экранами, большие – для больших экранов.

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

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

Большие картинки == большие проблемы


Средняя веб-страница весит 2 Мб, из них 2/3 – картинки. Миллионы людей ходят в интернет через 3G, или ещё хуже. 2Мб-сайты в этих случаях работают ужасно. Даже на быстром соединении такие сайты могут израсходовать лимиты трафика. Работа веб-дизайнеров и разработчиков – упростить и улучшить жизнь пользователя.

image

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

ImageMagick


Утилита командной строки с 25-летним стажем в то же время является редактором картинок с полным набором функций. В ней огромная куча функций, и среди них – быстрое и автоматическое изменение размера картинок. Но с настройками по умолчанию файлы часто получаются излишне большими – иногда по объёму больше оригинала, хотя в них и меньше пикселей. Сейчас я объясню, в чём проблема, и покажу, какие настройки необходимы для её решения.
Читать дальше →

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность