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

Настройка 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)

четверг, 27 мая 2010 г.

Рекурсивное удаление папки в консоли Windows

Для автоматизации понадобилось написать bat файл который работает с svn, после чего необходимо рекрсивно удалить папку с файлами. В unix все очень просто, а вот тут пришлось поискать:

rd folderpath /s /q

rd - синоним rmdir - удаление папки
/s - включает рекрсивное удаление файлов и папок
/q - отключает запрос подтверждения операции удаления

вторник, 4 мая 2010 г.

Типичные ошибки php session_start

 Иногда в PHP появляются ошибки связанные с session_start

1) Cannot modify header information - headers already sent by...
2)  No such file or directory in open(/....)

"Лечим" так:
1) Такое сообщение означает, что вы вызываете функцию session_start после того как какие-то заголовки уже отправлены броузеру. Другими словами, данная функция должна вызываться до того как вы передаете любой текст или заголовки. Часто проблема плохо ловится, так как в броузер  случайно предается пробел, кторый на странице невидно, но ошибка с установкой куков появляется.

2) Если вы увидели ошибку связанную с тем, что невозможно найти какие-то файлы (метод open), тогда знайте - у вас неправильно настроен путь для хранения сессий на диске. Нужно прописать папку, у которой для веб-сервера есть доступ. Открываем php.ini и правим константу session.save_path

Denwer. Настройка нестандартных виртуальных хостов.

Очень часто я встречаю на всяких форумах вопросы по поводу настройки нестандартных виртуальных хостов для Denwer.

Также, часто я читаю как "профи" по этому поводу злятся и пишут о том, что надо ставить связку Apache+PHP+MySQL руками, вместо того чтобы просто помочь людям разобраться и хи вопросом. Я считаю что как именно ставить связку - руками или с помощью Денвера - дело разработчика.

В Денвере проблема нестандартных хостов решаеться очень даже просто:

1) находим \usr\local\apache\conf\httpd.conf
2) находим там строку: Include conf/vhosts.conf
3) Выше этой строки можете описывать свои нестандартные хосты, при этом не напрягаясь о тех хостах, которые система генерит автоматом

Еще более красивое решение, это свои нестандартные настройки положить в файл, например myvhosts.conf. Потом подключить его перед файлом хостов которые генериться автоматически.

Таким образом, все будет выглядеть так:

Include conf/myvhosts.conf 
Include conf/vhosts.conf

среда, 28 апреля 2010 г.

Пример использования REPLACE в MySQL

Предлагаю вашему вниманию пример использования метода REPLACE в MySQL.

Допустим, есть задача: в определенной таблице заменить в некотором поле символ "&" на "-":
Сложный способ:


  UPDATE `table_name` t1, `table_name` t2
  SET t1.`field_name`= REPLACE(t2.`field_name`, '&', '-')
  WHERE t1.id = t2.id


Так как вся работа происходит в одной таблице, то необходимо использовать механизм алиасов для работы с одной таблицей как с двумя. Важным критерием является условие t1.id = t2.id, так как мы должны изменять одно и то же поле.

Или более простой вариант, который работает когда t1.id = t2.id и лишние проверки можно отбросить:

  UPDATE `table_name`
  SET `field_name`= REPLACE(`field_name`, '&', '-');

Сам механизм замены предельно прост:
  REPLACE(имя поля или просто текст, что меняем, на что меняем)

Простое и удобное решение. Надеюсь кому-то пригодится.