Pull to refresh
-1
0
Send message

Coroutines в PHP и работа с неблокирующими функциями

Reading time18 min
Views81K
Одним из самых больших нововведений в PHP 5.5 будет поддержка генераторов и корутин (сопрограмм). Генераторы уже достаточно были освещены в документации и в нескольких других постах (например в этом или в этом). Сопрограммы же получили очень мало внимания. Это гораздо более мощный, но и более сложный для понимания и объяснения, инструмент.

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

Генераторы


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

10 дистрибутивов Linux специального назначения

Reading time2 min
Views224K
Прелесть Linux в том, что можно сделать дистрибутив под любые запросы. Требуется лишь время и желание. Многие популярные дистрибутивы Linux — результат работы отдельных энтузиастов или групп, недовольных имеющимся набором опций. Вот некоторые из дистрибутивов Linux специального назначения.

1. Parted Magic OS: дистрибутив для восстановления дисков и работы с разделами, который поддерживает более десяти файловых систем и включает различные утилиты для «переноса, копирования, создания, удаления, расширения и сжатия дисковых разделов. Клонирование дисков и осуществление полного бэкапа. Тестирование дисков на возможность сбоя в будущем. Поиск сбойных секторов. Тестирование производительности компьютера. Безопасная полная очистка диска без возможности восстановления. Доступ к незагружаемым HDD для восстановления важных данных».


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

Google Play не взломан, однако бесплатно совершать покупки в приложениях можно

Reading time1 min
Views446K
Уважаемые хабровчане, как и обещали, мы с madkite выкладываем в общий доступ хак in-app покупок и проверок лицензий для Google Play. Все, что от вас нужно — рутованное устройство на Android. Работает на телефонах, планшетах, плеерах и даже телевизорах! Смотрим видео:

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

SMS-вымогатель в виде набора плагинов для браузеров

Reading time8 min
Views59K
На днях наткнулся на свежий SMS-вымогатель в виде набора плагинов для браузеров. Как он попал на машину точно сказать не могу, но что у него внутри разберу. Штука свежая, от пятого числа этого месяца, если судить по датам компиляции плагина для IE.



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

Установка зашифрованной (TrueCrypt) Windows при Ubuntu по умолчанию

Reading time6 min
Views63K
Нужно: поставить на одну машину одновременно Windows и Ubuntu таким образом, чтобы нельзя было посмотреть содержимое Windows, не имея пароля. CD-ROM'а нет, USB Only.
Работа с виртуалкой из под Ubuntu не понравилась по многим причинам, основная — существенные проблемы производительности.
Решено: ставить параллельно 2 операционки (Windows & Ubuntu) таким образом, что по умолчанию грузится Ubuntu, а Windows размещается на загрузочном разделе.
Читать дальше →

«Оцифровываем» каптчу единого реестра сайтов, защищающего людей от информации

Reading time3 min
Views24K
Совсем недавно открылся портал Единого государственного реестра сайтов. Отдельно от всего прочего мне приглянулась очень слабая каптча, и я решил её побороть.

Подобными вещами я уже занимался, правда, не в таком масштабе. Если вам интересно, как получить КПД распознавания в 57% используя только GNU/Bash, imagemagick и Tesseract-ocr, добро пожаловать под кат.

Нижеследующая инструкция может быть легко модифицирована под любые другие подобные слабые каптчи.
Читать дальше →

Сравнение адаптивных CSS фреймфорков: Bootstrap, Foundation и Skeleton

Reading time1 min
Views105K


Недавно Brian Haveri в блоге vermilion.com сделал отличное наглядное сравнение популярных CSS-фреймворков (статья), которые можно использовать для разработки адаптивных сайтов.

За последний год мне удалось поработать со всеми этими фреймворками: Bootstrap, Foundation и Skeleton, и могу сказать, что в свое время такая табличка сохранила бы кучу времени. Поэтому я перевел ее на русский язык, добавив немного своих комментариев. Надеюсь будет полезно хабровчанам.
Читать дальше →

Подборка инструментов для эффективной frontend разработки

Reading time3 min
Views101K
В эту прекрасную пятницу осмелюсь предложить хабрасообществую небольшую подборку приложений, предназначенных для увеличения продуктивности во время работы с фронтэндом. Если ваш любимый апп здесь не представлен — добро пожаловать в комментарии!

Form Builder

image

Этот прекрасный генератор форм поможет вам в создании красивейших CSS логин-боксов и прочих input вещей, при минимальных временных затратах. Помимо форм на сайте этого проекта можно создавать и другие не менее красивые CSS элементы, в том числе кнопки и ленты.
еще 24 ссылки

MySQL. Выбор случайных строк в один запрос

Reading time3 min
Views19K

Что имеем?


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

Таблица(test) имеет следующую структуру:
  • — pk_id ( первичный ключ )
  • — id ( поле заполненное разными числами )
  • — value ( поле заполненной с помощью rand() )

Первичный ключ не имеет дыр и начинается с 1.
Читать дальше →

Как правильно мерять производительность диска

Reading time14 min
Views353K
abstract: разница между текущей производительностью и производительностью теоретической; latency и IOPS, понятие независимости дисковой нагрузки; подготовка тестирования; типовые параметры тестирования; практическое copypaste howto.

Предупреждение: много букв, долго читать.

Лирика



Очень частой проблемой, является попытка понять «насколько быстрый сервер?» Среди всех тестов наиболее жалко выглядят попытки оценить производительность дисковой подсистемы. Вот ужасы, которые я видел в своей жизни:
  • научная публикация, в которой скорость кластерной FS оценивали с помощью dd (и включенным файловым кешем, то есть без опции direct)
  • использование bonnie++
  • использование iozone
  • использование пачки cp с измерениема времени выполнения
  • использование iometer с dynamo на 64-битных системах


Это всё совершенно ошибочные методы. Дальше я разберу более тонкие ошибки измерения, но в отношении этих тестов могу сказать только одно — выкиньте и не используйте.

Как мерять правильно

Google’s Mod_Pagespeed вышел из беты

Reading time1 min
Views13K

Для тех, кто как я, не знал, что такое mod_pagespeed — это модуль для Apache, собравший в себе очень много механизмов оптимизации. На страничке приводятся:
  • Оптимизация изображений, их ресайз и компрессия
  • Сращивание и минификация JS и CSS
  • Отложенная загрузка JS и изображений

И многое-многое другое.
Читать дальше →

Производительность VPS: сколько вешать в граммах?

Reading time4 min
Views21K
Рынок хостинга понемногу перешел от аренды виртуальных площадок до вполне вменяемых виртуальных серверов, когда есть гарантированные мощности и полный доступ к системе и «железу». Это сильно сегментировало рынок: можно встретить как тарифные планы за 200-300 рублей, так и более 2000 рублей в месяц. При этом все хостинг-провайдеры предлагают более-менее одинаковые показатели оборудования (процессор, память, диск) и встает резонный вопрос: в чем, собственно, разница?

Чтобы разобраться в вопросе со всей нужной глубиной, мы провели тестирование производительности более-менее одинаковых тарифных планов от наиболее популярных российских провайдеров на одной из самых популярных коммерческих платформа в России для создания сайтов – 1C-Битрикс. Почему на ней? Причин довольно много: и стандартная установка базового сайта, и наличие тарифных планов «специально подобранных», да и просто существование определенного набора пакетов «Окружения Битрикс», которые гарантируют относительно равноправное участие различных площадок в тестировании (когда мы можем сравнивать производительность без учета специфики операционной системы или серверного окружения).
Читать дальше →

Перехват видео в браузере или TCP сниффер под Windows на коленке (часть вторая)

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

image
Исходники, детали и пояснения под катом…
Читать дальше →

Перехват видео в браузере или TCP сниффер под Windows на коленке (часть первая)

Reading time19 min
Views40K
Однажды, не очень давно, мне порекомендовали фоновую качалку потокового видео под названием Jaksta, которая позволяет записывать потоковое видео на диск прямо во время просмотра YouTube, Facebook видео, GoogleVideo и так далее. В результате ее установки я получил стойкий BSOD при каждой загрузке Windows. Переключившись в Safe Mode я снес нафиг это творение, но возникли вопросы.
Краткое изучение софтины показало что она устанавливет NDIS Miniport драйвер, который конкретно в моей системе стал умирать при загрузке. «Нафига такие сложности?», подумал я и решил поэкспериментировать с реализацией перехвата потокового видео из браузера без всяких драйверов.
Читать дальше →

Оптимизация графики для Retina-экранов

Reading time7 min
Views213K
После недавнего выпуска Retina MacBook Pro и The new IPad, экраны с увеличенной плотностью пикселей начали активно входить в нашу жизнь. Что это значит для веб-разработчиков?

Для начала разберемся в терминологии.

Физические пиксели


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

Доступ к Skype API используя PHP на *nix системах

Reading time4 min
Views41K
Еще давно я хотел иметь свой автоответчик или бота для скайпа, называйте как вам угодно. В гугле я ничего найти не мог, да еще из-за того, что я пользуюсь Ubuntu, задача становилась сложнее в несколько раз. А если учесть, что я знаю только PHP, и то, не очень хорошо, моя мечта становилась нереальной.

Но недавно, просматривая официальную документацию по API скайпа, я обратил внимание на «D-BUS messaging», не знаю, почему я раньше не обращал на него внимание. Разобравшись со всем, я наконец сделал то, что давно хотел! Я получил доступ к Skype API на PHP. Об этом я и хочу рассказать в своей статье.

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

Пять способов вызвать функцию

Reading time5 min
Views374K
Мне часто приходится сталкиваться с JavaScript-кодом, ошибки в котором вызваны неправильным понимаем того, как работают функции в JavaScript (кстати, значительная часть такого кода была написана мной самим). JavaScript — язык мультипарадигменный, и в нем имеются механизмы функционального программирования. Пора изучить эти возможности. В этой статье я расскажу вам о пяти способах вызова функций в JavaScript.
Читать дальше →

Написание программ на PHP с использованием fork()

Reading time5 min
Views38K

Параллельные программы на PHP


Раньше заголовок темы был «Написание многопоточных программ на PHP». В PHP есть ровно один «нормальный» способ писать приложения, которые используют несколько ядер/процессоров — это fork(). О прикладном использовании системного вызова fork() в языке PHP и расширения pcntl я и расскажу. В качестве примера мы напишем достаточно быструю параллельную реализацию grep (со скоростью работы, аналогичной find . -type f -print0 | xargs -0 -P $NUM_PROCS grep $EXPR).
Читать дальше →

Information

Rating
Does not participate
Registered
Activity