четверг, 31 июля 2014 г.

Следующая версия PHP будет называться PHP 7

http://habrahabr.ru/post/231605/
В основу PHP7 ляжет PHPng. Многие из свежих предложений и патчей делаются уже на его базе — в том числе такие интересные вещи, как uniform variable syntax, native big integers и abstract syntax tree. Из-за изменений во внутренних API, многие сторонние расширения (например, xdebug, расширения для mongodb и memcached, php-protocolbuffers) должны быть переработаны, поэтому в PHP 5.7 PHPng войти уже не сможет.


И еще интересное "на почитать":
PHP 6 не будет, не осилили 
Суть в том, что 6 версия должна была содержать в ядре UTF-16, но "не осилили", и почти все плюшки кроме юникода пошли в 5.4


python: pip или easy_install?

"Использую easy_install только для того чтобы установить pip… Он умеет ставить пакеты прямо из систем управления пакетами, например:
pip install git+git://github.com/frol/django-email-confirmation.git

Также можно записать в файл список всех пакетов, которые нужны в проекте и потом установить все этим пакеты используя команду:
pip install -r requirements.txt

Ну, и конечно можно указывать требуемые версии используя знаки сравнения:
pip install liten==0.1.3
pip install liten>=0.1.3 "
http://habrahabr.ru/post/112332/#comment_3595049


What's the difference between pip and easy_install?
  • All packages are downloaded before installation. Partially-completed installation doesn’t occur as a result.
  • Care is taken to present useful output on the console.
  • The reasons for actions are kept track of. For instance, if a package is being installed, pip keeps track of why that package was required.
  • Error messages should be useful.
  • The code is relatively concise and cohesive, making it easier to use programmatically.
  • Packages don’t have to be installed as egg archives, they can be installed flat (while keeping the egg metadata).
  • Native support for other version control systems (Git, Mercurial and Bazaar)
  • Uninstallation of packages.
  • Simple to define fixed sets of requirements and reliably reproduce a set of packages.
pip doesn’t do everything that easy_install does. Specifically:
  • It cannot install from eggs. That’s not a problem anymore though because pip supports the superior binary wheel format since the 1.4 release.
  • It is incompatible with some packages that extensively customize distutils or setuptools in their setup.py files.
http://xahlee.info/python/python_whats_pip_easyinstall_setuptools.html
https://pip.pypa.io/en/1.5.X/other-tools.html#easy-install
http://stackoverflow.com/questions/3220404/why-use-pip-over-easy-install


Похоже, у easy_install только 1 плюс - штатно пакеты уже собраны, не надо держать билд-серверы с компиляторами. Плюс
" в debian-based есть пакет python-stdeb. в нём — утилка pypi-install, которая делает из eggа deb-пакет и ставит его."
http://habrahabr.ru/post/112332/#comment_3596282

среда, 16 июля 2014 г.

FreeBSD: not staged

Было обнаружено для некоторых портов такое
Not staged. See http://lists.freebsd.org/pipermail/freebsd-ports-announce/2014-May/000080.html

Что такое staged:
Staging is when the port installs into the work directory instead of into /. From here a package can be created without ever installing into / and often as a user without root. This also gives us abilities to improve quality of packages and opens up opportunities for sub-packages in the future. With staging we have had the ability to add in-tree testing of plists which in the past required a tool such as porttools, Tinderbox or Poudriere.

A guide for converting your port to Staging can be found at:
    https://wiki.freebsd.org/ports/StageDir

Совсем вкратце: нужно иметь возможность установки пакетов не от рута и не в корень, а в рабочий каталог.

с 31 июня такие порты помечены deprecated, мейнтейнеры обнулены (сброшены), и 31 августа удалены из дерева портов.

http://www.freebsd.org/doc/en_US.ISO8859-1/books/porters-handbook/porting-submitting.html

понедельник, 14 июля 2014 г.

CouchApp: JavaScript приложения в CouchDB

http://habrahabr.ru/post/110675/
CouchApp это небольшие приложения, которые пишутся на javascript и могут выполнять роль "обёртки", выполняя преобразования над данными, проверки итд. Ну и просто помогают формировать html код.

https://github.com/couchapp/couchapp
http://couchdb.readthedocs.org/en/latest/couchapp/views/intro.html

zabbix2 и некоторые изменения

Во 2 версии появился шаблон для mysql, включающий в себя поля

MySQL insert operations per second mysql.status[Com_insert]
MySQL commit operations per second mysql.status[Com_commit]
MySQL begin operations per second mysql.status[Com_begin]
MySQL bytes sent per second mysql.status[Bytes_sent]
MySQL status mysql.ping
MySQL bytes received per second mysql.status[Bytes_received]
MySQL delete operations per second mysql.status[Com_delete]
MySQL rollback operations per second mysql.status[Com_rollback]
MySQL slow queries mysql.status[Slow_queries]
MySQL uptime mysql.status[Uptime]
MySQL queries per second mysql.status[Questions]
MySQL update operations per second mysql.status[Com_update]
MySQL select operations per second mysql.status[Com_select]
MySQL version mysql.version

А вот обёртки под него нет. И тут используется сила 2 версии: можно описать шаблон так
UserParameter=mysql.status[*],echo "show global status where Variable_name='$1';" | mysql -N | awk '{print $$2}'

В такой схеме легко добавить например репликацию.

Для сравнения, как выглядели записи для 1 версии:
### Set of parameters for monitoring MySQL server (v3.23.42 and later)
### Change -u and add -p if required
#UserParameter=mysql.ping,mysqladmin -uroot  ping|grep alive|wc -l
#UserParameter=mysql.uptime,mysqladmin -uroot status|cut -f2 -d":"|cut -f2 -d" "
#UserParameter=mysql.threads,mysqladmin -uroot status|cut -f3 -d":"|cut -f2 -d" "
#UserParameter=mysql.questions,mysqladmin -uroot status|cut -f4 -d":"|cut -f2 -d" "
#UserParameter=mysql.slowqueries,mysqladmin -uroot status|cut -f5 -d":"|cut -f2 -d" "
#UserParameter=mysql.qps,mysqladmin -uroot status|cut -f9 -d":"|cut -f2 -d" "
#UserParameter=mysql.version,mysql -V
и в этом случае переменные были просто mysql.uptime, mysql.questions итд
Но нигде новый формат толком не описан, даже в офдоке на версию 2.0

Линки
https://www.zabbix.com/forum/showthread.php?t=39338
https://www.zabbix.com/documentation/ru/2.0/manual/appendix/recipes
https://www.zabbix.com/documentation/2.0/manual/appendix/items/supported_by_platform
http://www.slideshare.net/shinguz/mysql-monitoring-with-zabbix
https://www.zabbix.com/forum/archive/index.php/f-11.html
https://www.zabbix.com/documentation/2.0/manual/config/items/userparameters/extending_agent

Centos 6: python 2.7, 3.3, ruby 1.9.3 итд

Полный список

3. Available Collections

Currently, the following collections are available for CentOS 6.5 and later (package name in parenthesis):

  • Ruby 1.9.3 (ruby193)
  • Python 2.7 (python27)
  • Python 3.3 (python33)
  • PHP 5.4 (php54)
  • Perl 5.16.3 (perl516)
  • Node.js 0.10 (nodejs010)
  • MariaDB 5.5 (mariadb55)
  • MySQL 5.5 (mysql55)
  • PostgreSQL 9.2 (postgresql92) 
Установка:
yum install -y centos-release-SCL
этот пакет в репе extras, по умолчанию extras активен (enabled=1)

Ттот же питон 2.7 будет отдельным названием python27, потому что заменять штатный питон нельзя -- сломается ряд системных утилит включая yum.

http://wiki.centos.org/AdditionalResources/Repositories/SCL
http://dev.centos.org/centos/6/SCL/docs/

Метод 2:
http://toomuchdata.com/2014/02/16/how-to-install-python-on-centos/
https://github.com/0xdata/h2o/wiki/Installing-python-2.7-on-centos-6.3.-Follow-this-sequence-exactly-for-centos-machine-only

Выпуск CentOS 7


Вышел релиз Centos 7http://habrahabr.ru/post/229043/
Из глобальных изменений отметил бы отказ от 32 битных сборок и переход на файловую систему xfs по умолчанию. Переход по умолчанию на сборку mariadb вместо mysql, монтирование /tmp в tmpfs
systemd не самых свежих версий
завязка на NetworkManager

Обновление -- как обычно, через чистую установку.

среда, 9 июля 2014 г.

mount: unknown filesystem type 'linux_raid_member'

# mount /dev/sda3 /mnt/
mount: unknown filesystem type 'linux_raid_member'

Можно прямо указать ФС через -t ext3 например. Но вариант пригоден только для зеркала, прочие уровни надо монтировать через md, загрузив
insmod md_mod

Может быть ошибка
mount: /dev/sda3 already mounted or /mnt/ busy
С ненулевой вероятностью уже загружен md_mod и появились /dev/md*, тогда надо монтировать именно md устройство.

четверг, 3 июля 2014 г.

FreeSWITCH: shoutcast

Вроде бы, зачем может быть нужен shoutcast? Но он становится полезен, когда есть большая очередь, внешний источник звука может существенно разгрузить диск и freeswitch. Но надо быть осторожным с перекодированием из mp3, это требует ресурсы.

https://wiki.freeswitch.org/wiki/Mod_shout

простейший пример
<action application="playback" data="shout://scfire-dll-aa02.stream.aol.com:80/stream/1074"/>

Можно и писать на сервер (что-то транслировать в мир)
<action application="record" data="shout://source:pass@10.10.10.10:8000/stream.mp3"/>

Пример в вики (и выше) указывает на несуществующий адрес, для теста можно взять тут
http://www.shoutcast.com/
http://radio.aol.ca/