вторник, 22 сентября 2009 г.

Боевая раскраска YAML в консоле

Иногда возникает необходимость редактировать YAML-файлы прямо в shell. Если Вы пользуетесь консольным редактором nano, то его можно легко настроить на подсветку синтаксиса. В стандартной инсталляции есть уже готовые конфиги для многих файлов. Нужно просто включить подсветку синтаксиса.

Подготовка:


Смотрим список доступных расширений:
> ls /usr/share/nano

asm.nanorc css.nanorc gentoo.nanorc java.nanorc mutt.nanorc ocaml.nanorc php.nanorc ruby.nanorc tex.nanorc awk.nanorc debian.nanorc groff.nanorc man-html nanorc.nanorc patch.nanorc pov.nanorc sh.nanorc xml.nanorc c.nanorc fortran.nanorc html.nanorc man.nanorc objc.nanorc perl.nanorc python.nanorc tcl.nanorc


Скорее всего yaml.nanorc в этом списке нет. Создаем конфиг для yaml:
> nano -w ~/yaml.nanorc


Добавляем и сохраняем следующие строчки:

syntax "yaml" "\.(yml|yaml)$"

color brightcyan "\<(true|false|null)\>"

icolor magenta "[[:alnum:]]*:"
icolor brightgreen "^[[:space:]]*[.0-9A-Z_]*:"

color green "\:\s\&.*\s.*"
color green "\:\s\*.*$"

color brightyellow ""(\\.|[^\"])*"" "'(\\.|[^'])*'"

color ,green "[[:space:]]+$"
color brightred "#.*$"
color brightblue "\-|\.|;|:|\{|\}|\|"

color brightmagenta "\s[[:digit:]]*$"



Включаем подсветку:


> nano -w ~/.nanorc


Добавляем строчки и сохраняем файл:

include /usr/share/nano/c.nanorc
include /usr/share/nano/php.nanorc
include /usr/share/nano/css.nanorc
include /usr/share/nano/gentoo.nanorc
include /usr/share/nano/html.nanorc
include /usr/share/nano/nanorc.nanorc
include /usr/share/nano/xml.nanorc
include /usr/share/nano/sh.nanorc
include /usr/share/nano/python.nanorc
include /usr/share/nano/patch.nanorc
include /usr/share/nano/java.nanorc
include /usr/share/nano/groff.nanorc
include /your/path/to/yaml.nanorc
Если это не заработает, переместите строчку
include /your/path/to/yaml.nanorc
в начало

 

 Результаты:



Создадим тестовый файл:
nano -w ~/nanotest.yaml


#
# Default value test
#

default_value: &DEF_VAL 1234

#
# Using DEF_VALUE
#

hosts:
  localhost: { ip: "127.0.0.1", port: *DEF_VAL }
  devel: { ip: "192.168.1.200", port: *DEF_VAL }

#
# More tests
#
#

profiles:

 #devel
 -
  id: "devel"
  description: "My test profile"
  enabled: true
  data: "foo:bar"




воскресенье, 20 сентября 2009 г.

Новые возможности PHP 5.3 Автозагрузка классов, пакеты, SPL, namespace, Phar, Closure в действии (часть 1)

Здесь размещен код моей экспериментальной библиотеки для эффективного применения PHP 5.3

В ближайших постах расскажу более подробно

Установка PHP 5.3 на Gentoo Linux

ВНИМАНИЕ! ВНИМАНИЕ! ВНИМАНИЕ!
статья устарела и может быть полезна только в познавательных целях или для очень давно не обновляемых серверов с генту.
Сейчас 53 достаточно стабилен и установка достаточно тривиальна.
Смотрите руководства по установке/обновлению php на сайте gentoo.org
Статьи на сайтах gentoo-wiki также выглядят устаревшими. Лично мое мнение: надо использовать в полный рост PHP 5.4 и готовиться к PHP 5.5+
===============================================


Сабж, собственно практически ничем не отличается от установок предыдущих версий ниже 5.3 Хотя, безусловно есть нюансы. Возможно, в других дистрибутивах линукса это не так, но в Генту все довольно круто :)

Я не случайно делаю оговорку по этому поводу и конечно не призываю Вас выбросить Ваш любимый дистр и сломя голову перейти на Генту... Мне весьма понятна эта тема, так как когда-то давно выбрался именно Генту, прекрасно осознавая, что наиболее свежий софт более-менее будет доступен из репозитариев этого дистра. Итак, хватит лирики приступим:

Подготовка


Для установки Вам потребуется:


  • убежденность, что свежий PHP 5.3 это есть гут :)

  • терпение и внимательность

  • ebuild PHP 5.3 Если, Вы никогда не устанавливали ebuild(s), то советую Вам почитать соответствующие мануалы. Иначе ничего не получится. Все дело в том, что это неофициальный ebuild т.е. он "нормальный" :), но его еще пока нет в официальном дереве портов Генту. Вы не можете сделать просто:
    emerge --sync && emerge -avDuN php

    Тем не менее, это не значит, что этот ебилд нельзя использовать. Просто он находится в фазе активного тестирования в рамках всевозможного софта, зависимостей пакетов и библиотек, платформ и т.д. На моих машинах данный ебилд работает прекрасно. Взять его можно будет по этому урлу: PHP 5.3 ebuild Внимательно и вдумчиво копируем и устанавливаем ебилды, вдохновляясь вкусностями новой версии...

  • будьте готовы к тому, что после обновления, Ваши скрипты с вызовами вида:
    doMyFunc(& $args);
    будут приводить к предупреждениям интерпретатора. Для совместимости можно отключить эти сообщения в конфигах php.ini Некоторые приложения будут несомненно глючить или вообще не будут работать. Для справки: достаточно свежий phpbb прекрасно справился с 5.3, но бекапы в основном к БД сделать предварительно не помешает

  • Перед установкой рекомендуется обновить pear, pecl и удалить лишние расширения. Для чистоты установки лучше предварительно деинсталлировать все pecl-расширения. Некоторые из-них не будут нормально работать или вообще откажут в сборке. Про другие, Генту уведомит ненавязчиво... Возможный список проблемных расширений: python, xdebug, APC...

    Насчет последнего - отдельная тема... Он устанавливается из последних версий бета, и даже работает, но пока миграция не закончена, лучше отключить нафиг... С xdebug примерно тоже самое.


О настройках ключей компиляции


(необязательно, но рекомендуется):
sudo nano -w /etc/portage/package.use


и добавить или обновить строчку (привожу мои ключи):
dev-lang/php sharedext pcntl apache2 pdo postgres tidy bzip2 tokenizer ctype curl memcache oci8-instant-client hash sqlite

Сборка пакета


Если все сделали правильно, то по команде
emerge -vDuNp php
увидим готовность Генту установить PHP 5.3. Еще раз проверяем все и "емерджим" новый PHP...

Завершение


-по завершении установки не забываем про новые конфиги:
dispatch-conf
Очень внимательно и самое главное честно прописываем timezone в конфигах иначе возможны пляски с бубном... Делаем apache2 restart и наконец приступаем радостно к работе с новой версией.

Продолжение следует...


В ближайших постах расскажу о новых возможностях 5.3 в плане быстрой и удобной автозагрузки модулей классов и реального применения пхп-пэкэджей с нейм-спейсами, SPL и многое другое... Хотя некоторые возможности есть и у ветки 5.2, но по настоящему с ними работать приятнее конечно в новой версии. Всем удачи!

Полезные ссылки


Установка и разработка ebuild
О ebuild на русском
Зачем нужен eclass

воскресенье, 6 сентября 2009 г.

PHP 5.3 migration linux Миграция/Переход

Данный блог своей первой публикацией начинает освещение эффективной работы с новой версией языка PHP 5.3, а также со всем, что связано с переходом от старых версий на ветку 5.3 на базе *nix систем.

Моей основной рабочей платформой является дистрибутив Linux Gentoo, так что все нюансы связаны с этой ОС.

Сегодня я закончил первую фазу перехода на версию 5.3 и в ближайших публикациях выложу свои соображения по этому поводу:
-как перейти
-что установить
-"первые грабли"
-и т.д.

Не удержусь сообщить о первых впечатлениях: это было молчаливое ликование в течении несколько часов. Даже не верилось сначала... Привожу скриншоты с первыми тестами.