JavaScript – как удалить пробелы в начале и конце строки (trim)

Уже миллионы раз написано, но вставлю и я свои «5 копеек» в тему.
В javascript нет встроенной функции для обрезания лишних пробелов в начале и конце строки.
Чтобы реализовать такую возможность можно добавить необходимый метод в объект String javascript:

String.prototype.trim = function(str) { return str.replace(/^\s+|\s+$/g, ""); }

Posted in JavaScript | Tagged , , , , , , | Leave a comment

Установка сервера приложений Myna

Myna – это серверный javascript. Детальнее можно узнать здесь.
Установка возможна двумя способами:
1. как обычный сервлет на любом Java сервере (Tomcat, JBoss, Glassfish, WebSphere, etc)
2. как отдельное приложение (в данном случае Tomcat уже включен в поставку).
На момент написания статьи последним выпущенными релизом была версия myna-1.0_beta_9. Пусть вас не пугает приставка beta – авторы заявляют, что приложение очень стабильно и успешно работает на многих серверах в боевом режиме.

Для себя я выбрал установку как standalone приложение. Для этого скачал архивчик myna-1.0_beta_9.war.
.
Установка происходит следующим образом:

java -jar /path/to/myna-1.0_beta_9.war -m install

и далее идет ряд дополнительных параметров, узнать о которых вы можете выполнив команду

java -jar /path/to/myna-1.0_beta_9.war --help

но! При запуске этой команды под своим пользователем unix (если вы не root) вы получите такие сообщения:

Installing/upgrading Myna in '/var/www/myna'...
Done unpacking.
Install mode must be run as root.

Не знаю почему, но мне не помогло то, что я добавил sudo в начало команды. Успеха я не добился.
Весь секрет оказался оказался в том, что нужно явно запускать установку из-под пользователя root.
И, да, помимо этого я указал полный путь к war-файлу myna. Далее установка прошла без проблем.
Видимо, всё дело в том, что установщик пытается прописать скрипт запуска для myna в директорию /etc/init.d/

После установки сервер запускается автоматически и вы можете увидеть результат по адресу
http://localhost:8180/ (8180 – порт для myna по-умолчанию).
Когда вы настроили и запустили сервер, можете углубиться в документацию, чтобы узнать как писать серверные приложения с помощью Myna и чистого JavaScript.
Удачи!

Posted in Java, JavaScript | Tagged , , , | Leave a comment

Для PHP-5.4 Debian – нет suhosin, xcache, xdebug расширений

Сегодня проапгрейдил свою Debian OS 6.0 (настроено apt-pinning).
Среди прочих апдейтов при выполнении dist-upgrade привалили и обновления для ряда установленных модулей php5.  Обновился и сам PHP, собственно до версии 5.4.0-2. Но… тут начались непонятные проблемы – ни один локальный сайт не работал! В логах были непонятные ошибки, скажем, для сайта, основанного на фреймворке  YII было сообщение:

[Sun Mar 25 13:32:51 2012] [error] [client 127.0.0.1] PHP Fatal error:  Call to undefined function (null)() in /home/web/ccc/frontend/index.php on line 4

А на той строке 4 ничего не было особенного, окромя dirname(__FILE__)!
Порыскав-поискав в интернете похожие ошибки, не нашел ничего. Запостил баг на php.net.
Но дело-то неприятное! Ничегошеньки ведь не работает…
Начал копаться дальше. Попробовал запустить скрипты php из консоли, дабы проверить – неужто dirname() убрали? :) И обнаружил еще ряд замечательных уведомлений warnings:

rodush@rdushko:/var/www$ php test.php
Failed loading /usr/lib/php5/20090626+lfs/xdebug.so: /usr/lib/php5/20090626+lfs/xdebug.so: cannot open shared object file: No such file or directory
PHP Warning: PHP Startup: Unable to load dynamic library ‘/usr/lib/php5/20100525+lfs/suhosin.so’ – /usr/lib/php5/20100525+lfs/suhosin.so: cannot open shared object file: No such file or directory in Unknown on line 0
PHP Warning: PHP Startup: Unable to load dynamic library ‘/usr/lib/php5/20100525+lfs/xhprof.so’ – /usr/lib/php5/20100525+lfs/xhprof.so: cannot open shared object file: No such file or directory in Unknown on line 0

А дальше директива dirname() отработала и подключился файл, который я подключал.
Заглянув в директорию, указанную в сообщении, я обнаружил, что таких библиотек действительно нету!
Пока решил не морочить голову: допишут – обновлюсь; решил убрать конфиги php для данных библиотек.
Они расположены в директории /etc/php5/conf.d/
просто переименовал все конфиги, на которые не пришли обновления файлы с суффиксом «old» (на будущее пригодятся :) , думаю)

suhosin.ini.old xdebug.ini.old xcache.ini.old xhprof.ini.old

Попробовал вызов из консоли – не ругается php. Попробовал зайти на сайты в броузере и – о чудо! – всё работает!!
Вот такие вот причуды могут быть, если php ругается на невозможность подключить дополнительные модули-библиотеки.

Posted in PHP, System | Tagged , , , , , , , | Leave a comment

Отменить git push

Бывает такое, что вы сделали случайный коммит и запушили в общий репозиторий то, что не хотелось бы, скажем – какие-то важные данные (пароль к какому-нибудь сервису и т.п.)
Конечно, пока никто не заметил, всё еще можно отменить!
Для этого необходимо использовать команду

git push -f {remote_name} HEAD^:{branchName}

Таким образом можно откатиться не только на один шаг (^), но на любое количество: HEAD^^ (HEAD~2, HEAD~n).
Повторно можно «залить» уже изменения с учетом необходимых исправлений. Таким образом вы перепишете историю!

Posted in GIT, VCS | Leave a comment

Показать / скрыть оффлайн контакты в Linux Skype

Есть у Skype даже тикет по данному поводу, что люди не могут найти в интерфейсе кнопочки для управления отображением оффлайн контактов в линуксовой версии Skype.
Как оказалось, есть даже проще решение (как по мне, то оно и единственное) – «горячие клавиши» Ctrl + U. Быстро и эффективно!

Posted in Без рубрики | Leave a comment

Генерация CSR файла

CSR файл можно сгенерировать с помощью утилиты OpenSSL.

openssl req -newkey rsa:2048 -keyout private_key.pem -out server.csr

Здесь req команда управления сертификатами x.509,
-newkey – нам нужен новый ключ
rsa – алгорит шифрования, 2048 – длина ключа. Для подписи сертификатов после 2010 года требуется такая длина! До 2010 года разрешено использовать 1024 битный ключ.
-keyout – путь к файлу ключа, который будет храниться на сервере
-out – путь к файлу запроса сертификата (csr)

Posted in Security, System | Leave a comment

как остановить CruiseControl

Чтобы остановить сервер непрерывной интеграции CruiseControl, в веб-браузере перейдите по адресу:

http://localhost:8000/invoke?operation=halt&objectname=CruiseControl+Manager%3Aid%3Dunique

Posted in Без рубрики | Tagged , | Leave a comment

PHPMyAdmin session timeout

По-умолчанию время жизни сессии в новой инсталляции PhpMyAdmin и способе авторизации ‘cookie’ составляет 1440 секунд (24 минуты). Т.е. после 24 минут бездействия следующее обращение приведёт пользователя на страницу авторизации. Чтобы увеличить время жизни сессии, необходимо установить значение переменной

$cfg['LoginCookieValidity'] = 1440 * 60; // 86400 means one day (24-hours)

, скажем в 60 раз, что составит сутки.

Posted in Без рубрики | Tagged , , , , | Leave a comment

Отслеживание ошибок и уведомлений PHP

Иногда бывает необходимо отследить некритические ошибки, возникающие в работе РНР скрипта (E_WARNING, E_NOTICE, etc.) и куда-то их грамотно собрать.
К примеру, мы хотим сделать валидацию XML файла с помощью XMLReader (кстати, об этом, думаю, можно рассказать в отдельной публикации). В случае, если XML невалидный, то выбросить исключение, прекратив дальнейшую работу.
Все ошибки валидации выдаются через WARNING-сообщения.
Для того, чтобы получить такое сообщение можно поступить следующим образом:

// Track the errors (to be able to store the PHP error message)
$oldConfigValue = ini_set('track_errors', '1');
while ($xmlReader->read()) {} // полностью читаем XML
if (!$xmlReader->isValid())
{
  throw new Exception('XML does not conform to schema. ' . $php_errormsg);
}
// Set back track_errors setting:
ini_set('track_errors', $oldConfigValue);

Здесь мы сначала устанавливаем директиву РНР 'track_errors' (Отслеживать ошибки) в TRUE (1). А далее – magic! :)
Есть, оказывается, такая чудесная встроенная переменная $php_errormsg, которая и содержит в себе сообщения об ошибках (warnign, notice, и пр.)
Когда данная штуковина нам уже не нужна, мы можем вернуть прежнюю директиву на место, т.к. сохранили её предыдущее значение в переменной $oldConfigValue
Т.о. мы имеем осмысленное сообщение о том, почему же наш XML не прошел валидацию по нашей же схеме.

Posted in PHP, XML | Tagged | Leave a comment

PHP strtotime – проблема с датами со слешем (slash)

Есть одна особенность у РНР функции strtotime: она не умеет распознавать даты, которые записаны через слеш «/». Если мы применим даную функцию к дате, записаной в виде, скажем «21/01/2010″, то на выходе получим:

$date = strtotime("21/10/2010");
echo date("d.m.Y", $date);

Вызов данного скрипта выведет такое:

01.01.1970
Posted in PHP | Leave a comment