Размытие изображения на php c помощью imagick

Для размытия изображение с помощью средств php можно воспользоваться библиотекой Imagick. Для этого на изображение нужно наложить фильтр. В Imagick есть две подходящих функции для этого:

  • blurImage;
  • adaptiveblurimage.

Я проводил испытания, по которым blurImage показала производительность в 20-50 раз выше чем adaptiveblurimage на картинках размером 1000px на 1000px. На картинках до 200px разницы в проиводительности не почувствовал. Также не заметил особых изменений в качестве картинки при использовании обех функций. Поэтому остановился на blurImage.  Код, размывающий картинку, и сохраняющий её по новому пути:

$magic = new Imagick();
$magic->readimage('image.png');
$magic->blurImage(0, 9);
$magic->writeimage('path_to_save.png');

 

PhpStorm - используем регулярные выражения для правок кода

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

Одну библиотеку, которую я писал, которая была покрыта тестами почти на 100% подверглась рефакторингу (оптимизации). Как результат, 450 тестов сигнатур, (450 юнит тестов!!!), которые раньше проходили на "УРА", стали падать. Изменения затронули только пару абстрактных классов, но тесты были явно привязаны к старому функционалу. Чтобы тесты снова заработали, нужно было исправить 450 php файлов c тестами.

После исправления 10-20 классов ручками, я понял, что ручками это делать будет очень-очень долго и мозго-выносяще.

На помощь пришли регулярные выражения. Сначала я подбирал паттерн поиска в PHPStorm (Ctrl+Shift+F), искал, и оценивал те ли результаты я ожидал найти, а затем (Ctrl+Shift+R) выполнял замену. Конечно, после замены отступы в коде не соответствовали правильному code style. Но Code -> Reformat Code ... в PHPstorm быстро всё поправил.

Некоторые регулярные выражения простые, а некоторые с первого взгляда суровые:

(\/\*\*[^/]*\*\/)?\s*(protected|private) function getSignature\(\)\s*\{[^}]*\}[^}]*}

 

Игорь Сысоев разработчик Nginx видео

Видео с доклада Игоря Сысоева на конференции DevPoint.ru в ноябре 2010.

Игорь Сысоев Nginx

phpunit тестирование приватных методов, все типы assert`ов в phpunit

phpunit

Рассмотрим процесс тестирования приватного метода класса с передачей в него параметров. Пусть наш тестируемый класс выглядит так:

Class MyClass()
{
    private myPrivateMethod($param1, $param2)
    {
        return $param1 * $param2;
    }
}

Тогда тест приватного метода будет такой:

class MyClassTest extends PHPUnit_Extensions_Database_TestCase 
{
    public function testMyPrivateMethod()
    {
        $class = new ReflectionClass('MyClass');
        $method = $class->getMethod('myPrivateMethod');
        $method->setAccessible(true);
        $obj = new MyClass();

        $result = $method->invoke($obj, 2, 10);
        $this->assertEquals(20, $result);

        $result = $method->invoke($obj, 2, 0);
        $this->assertEquals(0, $result);
    }
}

 

Настроить автоматическую загрузку демонов при старте Ubuntu - rcconf

Что такое демон? И чем демоны отличаются от сервисов services (служб, процессов)? Ответ - ничем не отличаются.

Демон (Daemon) — UNIX-служба или просто программа, работающая в фоновом режиме без прямого общения с пользователем. Демоны обычно запускаются во время загрузки системы. В техническом смысле демоном считается процесс, который не имеет управляющего терминала. Чаще всего (но не обязательно) предком демона является init — корневой процесс UNIX.

Исторически, демоны пошли из UNIX-подобных систем. А в ОС семейства Windows - это так называемые службы (Windows services), те самые, которые мы видим в диспетчере задач Windows. Иногда их неофициально называют демонами. Впрочем, и наоборот тоже.

Программа rcconf позволяет настроить запуск демонов: демоны, которые должны стартовать при загрузке системы и демоны, которые должны сидеть и ждать. Это самый простой способ добавлять/удалять службы с автозапуска в Linux.

Программа имеет простой консольный интерфейс и должна запускаться с правами root'а.

rcconf - настраиваем автозагрузку служб в linux

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

Установка sphinx на linux. Индексация и поиск.

Статья вводная, будет полезна новичкам, которые впервые хотят установить сфинкс, индексировать и искать контент, или тем, кто имеет небольшой опыт работы с sphinx.

Что такое sphinx?

Сфинкc — это бесплатный полнотекстовый поисковый движок, написанный на C++. С быстрой индексацией документов, стоп-словами, умеет интегрироваться с самыми известными БД: Mysql, MsSql, Oracle и тд, также имеет АПИ с популярными языками программирования PHP, Perl, Java и т.д. И! Имеет поддержку SQL синтаксиса.

Установка sphinx

sudo apt-get install sphinxsearch

Примеры nginx конфигов

Здесь я буду собирать полезные nginx конфиги.

Текущий набор конфигов включает конфиги для:

  • drupal 6
  • drupal 7

Google Search Engine на своём сайте

Рассмотрим, как вставить поиск google к себе на сайт. А затем настроим внешний вид формы (кастомизируем) google custom search (cse). У меня получилось форма, как на картинке.

кастомизированная форма поиска google

Здесь google custom search подробно описан API google custom search. Получить код поиска google для вставки к себе на сайт можно по этой ссылке http://www.google.com/cse/all.

Сначала нужно добавить поисковую систему, ввести url (домен) вашего сайта. Указать дополнительные настройки, если нужно, и скопировать код в структуру своего сайта.

На вкладке внешний вид можно выбрать наиболее подходящую для сайта тему. Также дополнительно можно изменять цвет фона и цвет границ элементов. Google позволяет изменить достаточно много настроек для Google Search Engine.

Из интересных плюшек еще есть:

  • можно разделить форму поиска и форму результатов. С формы поиска выставить url на страницу с формой результатов. Я сделал так у себя. Справа располагается форма поиска, при поиске редиректит на основную страницу с результатами. Поисковая строка при этом передаётся get параметром.
  • можно указать callback функцию, которая выполнится после загрузки формы. Это сейчас рассмотрим подробней!

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

Модуль analytics Kohana 3.3 для работы с google analytics API

Мне захотелось выводить количество просмотров статьи на странице этой статьи. Был вариант написать свой счётчик, который будет, учитывая cookies и IP, считать просмотры. Но этот вариант показался мне слишком громоздким по нескольким причинам:

  1. Может быть пользовательская накрутка путём удаление кукисов;
  2. Считать по ip не совсем точно. Например, на организации работают 500 человек и попадают на внешний мир через один единственный proxy (под одинаковым ip);
  3. Учитывать приход через определённое время. Если пользователь вернулся через сутки, наверное, это +1 просмотр?
  4. Ну и вообще не хотелось тратить на это мощь и без того дохленького сервера на shared хостинге. А также своё время.

У меня на сайте уже стоял счётчик google analytics. Его возможностями я и решил воспользоваться, а точнее, возможностями google analytics API.

Какие данные мы хотим получать от google analytics API?

Получать количество просмотров конкретной страницы (у каждого поста уникальный адрес). Идентификация по uri.

git. Настройка git

Установка git

sudo apt-get install git

Начало работы с git

Сперва нужно настроить git, установив user.name и user.email. Приятно знать, от кого коммит. Таким образом команда git blame и ваша IDE будут подсказывать имя того, кто закоммитил ту или иную строчку.

git config --global --add user.name 'Name Surname'
git config --global --add user.email 'your@mail.here'

Эти команды автоматически внесут правки в конфигурационный файл git: ~/.gitconfig. Также файл ~/.gitconfig можно редактировать и вручную vim ~/.gitconfig

git current branch

Для удобной работы с бренчами нужно поставить пакет bash-completion (под маком установить git с вариантом +bash_completion) и добавить такую инструкцию в ~/.bash_profile (или ~/.bashrc):

PS1='\h:\W$(__git_ps1 " (%s)") \u\$ '

Теперь имя текущего бренча будет отображаться слева от строки ввода в консоли и будет всегда на виду.

НОВЫЕ ПОЛЬЗОВАТЕЛИ