четверг, 17 июня 2010 г.

MySQL. Название месяцев на русском.

Для того чтобы после выполнения запроса с форматированием даты, название месяцев было написано на русском, необходимо изменить локаль MySQL. Это можно сделать 2 способами.

Первый способ. Перед выполеним главного запроса, изменить локаль с помощью дополнительного запроса:

SET @@lc_time_names='ru_RU';


SELECT DATE_FORMAT( showdt, '%d %m %Y' ) AS created_at FROM `table`


Второй способ.  В файл /etc/mysql/my.cnf дописать:
set-variable = lc_time_names=ru_RU


Регулярные выражения в MySQL. REGEXP in MySQL

Иногда встречаются задачи, когда использование конструкции LIKE в MySQL, может быть недостаточно гибким.
В таком случае, пользуються условием REGEXP, которое позволяет выполнять более сложный поиск по базе.

Примеры использования REGEXP:
SELECT * FROM `table` WHERE `name` REGEXP 'Ser.+'
Пример с использованием LIKE:

SELECT * FROM `table` WHERE `name` LIKE 'Ser%'
В обоих случаях будут выбраны записи, у которых в поле `name` находяться значения которые начинаются на "Ser"

Теперь приведу более сложный пример:

SELECT * FROM `table` WHERE `name` REGEXP  '^(A|B|C)'
Выбираем все имена, которые начинаються на A,B или C


Таким образом, в условии WHERE, можно прописывать регулярные выражения любой сложности. Необходимо помнить, что для регулярных выражений внутри MySQL справедливо правило: "Если найдено соответствие записи в таблице регулярному выражению, то такая запись попадет в результирующую выборку"

Правила построения запросов являются стандартными, а это значит что тренироваться можно на сайте Rubular. Где также, всегда можно посмотреть и на сами правила построения.

вторник, 15 июня 2010 г.

Настройка автодополнения методов и функций в Zend Studio

По умолчанию, после выкачки php проекта из репозитория,  автодополнение может не работать. Тоесть даже внутри класса, среда не сможет подхватить его методы и поля, для автодополнения. Также, может отсутстовать поддержка автодополнения и документация базовых функций php.

Для решения проблемы, нажмите в диспетчере проектов Zend Studio (PHP Explorer) правой кнопкой мышки, на корне вашего проекта, далее выберите пункт Configure->Add PHP support...



После чего, все будет работать отлично.

понедельник, 7 июня 2010 г.

Пример работы с Bash+Expect. Автоматизация роботы

Каждый разработчик в определенные моменты жизни сталкивается с задачами, ктороые требуют постоянно проделывать одну и туже работу каждый день. Если такая задача включает в себя авторизацию и работу на разнообразных удаленных машинах, или передачу файлов на другие сервера, то она явно подлежит автоматизации. Если одна и та же процедура повторяется несколько раз, то ее надо автоматизировать. Если вы при этом работаете в windows, то вам очень поможет Cygwin.

Специально для таких целей используется bash (командная оболчка Unix). Для автоматизации ввода пароля.логина используется другая оболчка - expect.

Приведу пример простого скрипта, кторый с вашей машины логинится на другую, авторизируется там и проводит обновление из SVN какого-то проекта (задача выбрана просто для примера, также для примера она буде запущена из под Cygwin)

Устанавливаем Cygwin, заходим в домашнуюю папку пользователся (например "c:\cygwin\home\Администратор\"). В ней создаем файл:
File: update.sh 

С таким содержимым:


#!/bin/bash
#!/bin/expect
expect -c 'spawn ssh -p 22 user@host;
expect assword ;
send "password\n" ;
send "cd /var/www/project_path\r";
send "sudo svn up\r";
expect assword ;
send "password\n" ;
expect "ssh>"'
echo "Update finished!"


#!/bin/bash - директива которая указывает местоположения непосредственно bash обработчика
#!/bin/expect - указывает местоположение обработчика expect

expect -c '...' - выполняет запуск консольных команд с перехватом ввода - вывода с помощью expect
spawn ssh -p 22 user@host; - конектимся к удаленному хосту с указаным именем пользователя
expect assword; - команда которая перехватывает ввод пароля и ждет когда мы его пошлем из нашего скрипта
send "password\n"; - посылаем запросившему серверу пароль пользователя в удаленной системе
send "cd /var/www/project_path\r"; - переходим в папку с проектом
send "sudo svn up\r"; - выполняем обноление из SVN с правами админа (предпологаем что наш юзер имеет права для віполнения команды sudo)
expect assword ; - перехватываем ввод пароля
send "password\n"; - отправляем пароль пользователя
expect "ssh>" - запрашиваем консоль
echo "Update finished!" - информируем об успешном обновлении

Обработка ошибок, варианты ввода вы уже можете дописать сами. Главная цель - пример реального использования bash+expect

Настройка svn+ssh для TortoiseSVN

Для того чтобы иметь возможность работать с SVN через ssh с использованием ppk (Putty Private Key) необходимо установить пакет Putty (putty, pageant обязательно). Запустите pageant, добавить ему ppk ключ (кликнув правой кнопкой на ярлыке в панели задач). Теперь вы можете работать с ключем.

Установите TortoiseSVN. В его настройках найдите вкладку Network, где внизу находится поле SSH client. Нажимаем кнопку Browse, теперь надо найти файл TortoisePlink.exe, в стандартной установке путь будет следующий: "c:\Program Files\TortoiseSVN\bin\TortoisePlink.exe". Таким образом мы указываем программу которая будет обрабатывать ssh запросы к svn хранилищу.



Теперь можно работать с хранилищем по ssh, аналогично как и для доступа через http.

Rails. Configure route to default controller

После создания нового проекта, необходимо создать первый контроллер и настроить маршрут роутинга по умолчанию к нему.

File: config/routes.rb
map.root :controller => "default_controller_name"

четверг, 3 июня 2010 г.

Ручная установка Ruby on Rails дебагера для NetBeans IDE 6.8

Для того чтобы установить дебагер с консоли, выполните команду:

sudo gem install ruby-debug-ide --no-rdoc --no-ri --version 0.4.9

--version 0.4.9 версия отладчика для NetBeans IDE 6.8

--no-rdoc --no-ri отключаем установку документации по дебагеру(отладчику) ( ri: Ruby Index или консольная документация, RDoc: Ruby Documentation)