пятница, 27 мая 2011 г.

Установка дополнительный шрифтов

Это актуально при оформлении сайтов, просто иногда просят оформить именно таким шрифтом который есть в Windows а в Linux его нету.

sudo aptitude install ttf-mscorefonts-installer

среда, 25 мая 2011 г.

Отладка php через Xdebug + NetBeans

устанавливаем
apt-get install php5-xdebug      ubuntu, debian и.т.
yum install php-pecl-xdebug      fedora, centos и т.п.
все что нужно для этого это прописать дополнительные параметры в php.ini

xdebug.remote_enable=on
xdebug.remote_handler=dbgp
xdebug.remote_host=localhost
xdebug.remote_port=9000


Вот еще важная фишка которая может пригодиться :)
Когда требуется отладить на живом серваке, а не локально, нужно прокинуть порт через ssh вот так:
ssh -R 9000:localhost:9000 komodo.machine.com
а теперь в путь !

Настрока Xdebug

При возникновении ошибок нужно ответить на четыре вопроса. Xdebug может предоставить всю нужную информацию, причем немедленно. Вот для начала несколько полезных настроек.
Сохраните эти настройки в файле php.ini, а затем перезапустите ваш Web-сервер:

zend_extension = /usr/lib/php/extensions/xdebug.so
xdebug.default_enable = On

; разрешает трассировку исключительных ситуаций, даже
; если вы перехватили исключительную ситуацию:
xdebug.show_exception_trace = On

; выводит все локальные переменные самой внешней области видимости
; каждого вызова функции, включая еще не инициализированные переменные:
xdebug.show_local_vars = 1

;ограничение глубины рекурсии:
xdebug.max_nesting_level = 50

; указывает глубину вывода комплексной переменной:
xdebug.var_display_max_depth = 6

; управляют тем, какие суперглобальные переменные PHP
; включаются во все диагностические результаты
xdebug.dump_once = On
xdebug.dump_undefined = On
xdebug.dump.REQUEST = *
xdebug.dump.SERVER = REQUEST_METHOD,REQUEST_URI,HTTP_USER_AGENT

; для вывода суперглобальных переменных, перечисленных
; в настройках xdebug.dump.SUPERGLOBAL:
xdebug.dump_globals = On

Подробности настройки: http://www.ibm.com/developerworks/ru/library/os-php-xdebug/index.html#configuring

Отладка массивов и классов PHP

Xdebug предоставляет расширенную функцию var_dump(), которая особенно полезна для массивов и классов PHP. Например, в листинге 6 приведен простой (PHP V4) класс и экземпляры.

Трассировка кода

При разрешенной трассировке Xdebug регистрирует каждый вызов функций, включая аргументы функции и возвращаемое значение. Можно отформатировать каждый log-файл для более удобного его восприятия человеком или машиной. Первый вариант вы можете просматривать сами, а для второго можно написать отдельное приложение для анализа.

Настройка трассировки в php.ini

xdebug.trace_format = 0
; автоматически разрешает трассировку до выполнения любого PHP-сценария:
xdebug.auto_trace = On

; управляют тем, где сохраняется информация трассировки:
xdebug.trace_output_dir = /tmp/traces

; каждый файл начинается с trace, за которым следует
; имя PHP-сценария (%s) и идентификатор процесса (%p):
xdebug.trace_output_name = trace.%c.%p

xdebug.collect_params = 4
xdebug.collect_includes = On
xdebug.collect_return = On
xdebug.show_mem_delta = On
Названия всех файлов трассировки Xdebug заканчиваются суффиксом .xt.
Автотрассировка
Настройка xdebug.auto_trace = 1 автоматически разрешает трассировку до выполнения любого PHP-сценария. В качестве альтернативы можно установить xdebug.auto_trace = 0 и использовать функции xdebug_start_trace() и xdebug_stop_trace() из вашего кода для разрешения и запрета трассировки соответственно. Однако если xdebug.auto_trace установлен в значение 1, можно начать трассировку до включения сконфигурированного auto_prepend_file.
Формат данных трассировки
По умолчанию Xdebug отображает поля времени, использования памяти, имени функции и глубины вызова функции. Если установить xdebug.trace_format в значение 0, информация выводится в виде, удобном для чтения человеком (для машинного формата используется значение 1). Кроме того, можно обнаружить рост или уменьшение использования памяти при указании xdebug.show_mem_delta = 1, а тип и значения входящих параметров можно выводить, указав xdebug.collect_params = 4. Для отслеживания значения, возвращаемого каждой функцией, установите xdebug.collect_return = 1.

Чтение результатов трассировки

Ниже показана трассировка PHP-генератора чисел Фибоначчи, вычисляющего четыре числа Фибоначчи:

TRACE START [2007-06-06 14:17:17]
    0.0004      16432   +16432   -> {main}() /var/www/catalog/t/fibonacci.php:0
    0.0006      16696     +264     -> fib('4') /var/www/catalog/t/fibonacci.php:35
    0.0007      16696       +0       -> fib(3) /var/www/catalog/t/fibonacci.php:7
    0.0007      16736      +40         -> fib(2) /var/www/catalog/t/fibonacci.php:7
    0.0007      16848     +112           -> fib(1) /var/www/catalog/t/fibonacci.php:7
                                         >=> 1
    0.0008      16904      +56           -> fib(0) /var/www/catalog/t/fibonacci.php:7
                                         >=> 0
                                       >=> 1
    0.0009      16904       +0         -> fib(1) /var/www/catalog/t/fibonacci.php:7
                                       >=> 1
                                     >=> 2
    0.0009      16904       +0       -> fib(2) /var/www/catalog/t/fibonacci.php:7
    0.0009      16904       +0         -> fib(1) /var/www/catalog/t/fibonacci.php:7
                                       >=> 1
    0.0010      16904       +0         -> fib(0) /var/www/catalog/t/fibonacci.php:7
                                       >=> 0
                                     >=> 1
                                   >=> 3
                                 >=> 1
    0.0011      12528
TRACE END   [2007-06-06 14:17:17]

Значения колонок:
  1. время,
  2. суммарное использование памяти,
  3. инкрементное использование памяти,
  4. вызовы функций, включая параметры.
Строки, отмеченные символами >=>, показывают возвращаемое значение из каждой функции (для сопоставления вызова функции с возвращаемым ею значением нужно найти -> с соответствующим отступом). Опять же, последнее значение >=> 1 является значением, возвращаемым функцией main().

Установка Xdebug

Можно установить из репозитория
apt-get install php5-xdebug
А можно самому собрать только предварительно установите php-dev

  1. Загрузите Xdebug tarball (сжатый gzip .tar-архив). Это очень сделать просто при помощи команды wget:
    $ wget http://www.xdebug.org/files/xdebug-2.0.0RC4.tgz
                        

  2. Разархивируйте tarball и перейдите в каталог с исходным кодом:
    $ tar xzf xdebug-2.0.0RC4.tgz
    $ cd xdebug-2.0.0RC4
                        

  3. Запустите phpize, чтобы подготовить код Xdebug для вашей версии PHP:
    $ phpize
    Configuring for:
    PHP Api Version:         20020918
    Zend Module Api No:      20020429
    Zend Extension Api No:   20021010
    

    Результатом работы phpize является сценарий (очень к месту названный configure), используемый для настройки остального процесса компоновки.
  4. Выполните сценарий настройки:
    $ ./configure
    checking build system type... i686-pc-linux-gnu
    checking host system type... i686-pc-linux-gnu
    checking for gcc... gcc
    checking for C compiler default output file name... a.out
    checking whether the C compiler works... yes
    checking whether we are cross compiling... no
    checking for suffix of executables... 
    checking for suffix of object files... o
    ...
    checking whether stripping libraries is possible... yes
    appending configuration tag "F77" to libtool
    configure: creating ./config.status
    config.status: creating config.h
    

  5. Выполните компоновку расширения Xdebug, запустив make:
    $ make
    /bin/sh /home/strike/tmp/xdebug-2.0.0RC4/libtool
    --mode=compile gcc  -I.
    -I/home/strike/tmp/xdebug-2.0.0RC4 -DPHP_ATOM_INC
    -I/home/strike/tmp/xdebug-2.0.0RC4/include
    -I/home/strike/tmp/xdebug-2.0.0RC4/main
    -I/home/strike/tmp/xdebug-2.0.0RC4
    -I/usr/include/php4 -I/usr/include/php4/main
    -I/usr/include/php4/Zend -I/usr/include/php4/TSRM 
    -DHAVE_CONFIG_H  -g -O0 -c
    /home/strike/tmp/xdebug-2.0.0RC4/xdebug.c -o
    xdebug.lo mkdir .libs
    ...
    
    Build complete.
    (It is safe to ignore warnings about tempnam and tmpnam).
    

    Результатом работы make является расширение Xdebug, xdebug.so.
  6. Установите расширение:
    $ sudo make install
    Installing shared extensions:     /usr/lib/php4/20020429/
    

    Перед продолжением работы выделите и скопируйте каталог, который отобразила последняя команда. Этот путь очень важен для конфигурирования расширения на последнем шаге.
  7. Откройте файл php.ini в любимом текстовом редакторе и добавьте следующие строки:
    zend_extension = /usr/lib/php4/20020429/xdebug.so
    xdebug.profiler_enable = Off
    xdebug.default_enable = On
    

    Первая строка загружает расширение Xdebug; вторая запрещает функциональность профайлера в Xdebug (для упрощения), а третья разрешает функциональные возможности отладки.

среда, 11 мая 2011 г.

Установка VirtualBox на Ubuntu Natty

Вся интрукция есть на www.virtualbox.org. но для краткости напишу последовательность команд:
1 добвляем в /etc/apt/sources.list:
deb http://download.virtualbox.org/virtualbox/debian natty contrib
2 устанавливаем ключ
wget -q http://download.virtualbox.org/virtualbox/debian/oracle_vbox.asc -O- | sudo apt-key add -
3 устанавливаем vbox
sudo apt-get update
sudo apt-get install virtualbox-4.0 
Все просто