Включить и выключить swap в linux

Swap – раздел подкачки в linux. Свап используется операционной системой при недостаточом количестве оперативной памяти. Т.е. вместо записи данных в оперативную память, если она практически вся заполнена, данные помещаются на жёсткий диск (свап-раздел). При этом производительность сервера как правило падает (по крайней мере если жёсткий диск не SSD) по причине того, что работа с оперативной памятью происходит гораздо быстрее записи/считывания с жёсткого диска, на котором и располагается файл подкачки (Swap).

Для выключения swap в linux (Ubuntu) без перезагрузки системы воспользоваться командой:

sudo swapoff -a

Затем включить swap:

sudo swapon -a

MySQL - изменение полей, структуры таблицы

Mysql alter add/drop index (добавление и удаление индексов):

ALTER TABLE sites 
  DROP INDEX keyname;

// эквивалентно DROP INDEX
ALTER TABLE sites 
  DROP KEY keyname;

ALTER TABLE categories
  DROP PRIMARY KEY,
  ADD  PRIMARY KEY (`site_id`,`category_id`);

 

Определяем язык текста с помощью cld2+python+php

cld2 (Compact Language Detection) — библиотека от компании google, написанная на С. Как заявляет google, со второй версии она стала быстрее и детектит большее количество языков. Библиотека может задетектить более 80 языков. Определяет до 3-х языков, использованных в тексте. Например, 800 байт - английский, 200 байт - французский и т.д.

Библиотека cld2 используется в популярном браузере Chrome (Chromium) для определения языка, с которого нужно перевести сайт.

Для определения языка по входной строке нам понадобится: cld2, python, php для удобства.

Размытие изображения на 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
НОВЫЕ ПОЛЬЗОВАТЕЛИ