Установим Homebrew - менеджер пакетов для OS X
#ruby -e "$(curl -fsSkL raw.github.com/mxcl/homebrew/go)"
С помощью brew можно ставить пакеты так, как это часто делается в Linux. Например, если нужен Git
#brew install git
И MySQL
#brew install mysql
Следуйте инструкциям, которые будут выведены после установки.
Дальше установим RVM - систему управления версиями ruby
bash -s stable < <(curl -s https://raw.github.com/wayneeseguin/rvm/master/binscripts/rvm-installer)
Кроме переключения версий ruby, RVM выполняет и другие функции. Например, можно поставить iconv
#rvm pkg install iconv
Теперь нужно бы выполнить rvm install 1.9.3, но команда не сработает. Причина в том, что в OS X Lion стандартный компилятор поменяли с GCC на Clang. Что с этим делать?
1. Можно попробовать скомпилировать ruby с помощью Clang
#rvm install 1.9.3 --with-gcc=clang Но у меня это тоже не сработало.
2. Или можно указать "правильный" GCC
#export CC=/usr/bin/gcc-4.2; rvm install 1.9.3
Если его нет, то скачать можно тут https://github.com/kennethreitz/osx-gcc-installer/downloads
Даунгрейдить или удалять XCode при этом не нужно.
Переключимся на нужную версию руби
#rvm use 1.9.3
Создадим gemset
#rvm gemset create rails3
Переключимся на нужный gemset
#rvm gemset use rails3
Установим Rails
#gem install rails --pre
Потом
#gem install bundler
И другие нужные гемы, например
#gem install capistrano
#gem install capistrano-ext
#gem install git_remote_branch
#gem install open_gem
#gem install heroku
Ребята из 37signals (создатели RoR) советуют использовать pow - Rack-сервер, не требующий настройки, идеальный менеджер локальных сайтов. Установим его
#gem install powder
#curl get.pow.cx | sh
Готово, запускаем (нужно находиться в директории проекта)
#powder link
#powder open
Pow автоматически создаст виртуальный хост по имени директории и запустит ваше веб-приложение на RoR.
Еще RVM может перегрузить команду cd для автоматической загрузки нужного окружения, когда вы переходите в директорию проекта. Сделать это можно так
rvm use 1.9.3@rails3 --rvmrc
Все.
blog 1101
Заметки, мысли, статьи. Про IT, FOSS и прочее.
среда, 8 февраля 2012 г.
воскресенье, 7 августа 2011 г.
Замена по регулярному выражению в MySQL
Вот так можно делать замену подстроки в строке по регулярному выражению в MySQL.
DELIMITER //
CREATE FUNCTION preg_replace(pattern varchar(10000), replacer varchar(10000), original varchar(10000))
RETURNS varchar(10000)
DETERMINISTIC
BEGIN
DECLARE temp VARCHAR(10000);
DECLARE ch VARCHAR(1);
DECLARE i INT;
SET i = 1;
SET temp ='';
IF original REGEXP pattern THEN
loop_label: LOOP
IF i>CHAR_LENGTH(original) THEN
LEAVE loop_label;
END IF;
SET ch = SUBSTRING(original,i,1);
IF NOT ch REGEXP pattern THEN
SET temp = CONCAT(temp, ch);
ELSE
SET temp = CONCAT(temp,replacer);
END IF;
SET i=i+1;
END LOOP;
ELSE
SET temp = original;
END IF;
RETURN temp;
END//
UPDATE news
SET content = preg_replace('\r+', ' ', content)//
пятница, 5 августа 2011 г.
Yii DAO и маппинг
При работе с фреймворком yii возникла необходимость выполнить сложный sql-запрос. Такой, что проще было использовать DAO, чем Active Record.
Но очень расстраивало, что DAO возвращает ассоциированные массивы, а не объекты. Везде на сайте используется ORM, а тут вдруг выборка массивами...
К счастью, было найдено решение при помощи PDO-магии. И оно работает, отдает и заполняет объект, как при использовании AR.
Примечание: AR не дает решения для всех задач, касающихся работы с базами данных. Лучше всего его использовать для моделирования таблиц в конструкциях PHP и для несложных SQL-запросов. Для сложных случаев следует использовать Yii DAO.
Но очень расстраивало, что DAO возвращает ассоциированные массивы, а не объекты. Везде на сайте используется ORM, а тут вдруг выборка массивами...
К счастью, было найдено решение при помощи PDO-магии. И оно работает, отдает и заполняет объект, как при использовании AR.
Copy Source | Copy HTML
- $command=Yii::app()->db->createCommand($sql);
- $command->setFetchMode(PDO::FETCH_CLASS|PDO::FETCH_PROPS_LATE, "Post");
- $posts=$command->queryAll();
вторник, 22 марта 2011 г.
Как добавить BOM
Небольшой скрипт, добавляющий UTF BOM к файлу. Да, это умеют многие текстовые редакторы. Но иногда лучше решать подобные задачи инструментально.
К слову, так можно удалить BOM из строки на php
$str = preg_replace("/\xef\xbb\xbf/","",$str);
Copy Source | Copy HTML- #!/bin/bash
- fi=$1;
- fo="$1_with_bom"
- echo -ne '\xEF\xBB\xBF' > $fo
- cat $fi >> $fo
- mv $fo $fi
К слову, так можно удалить BOM из строки на php
$str = preg_replace("/\xef\xbb\xbf/","",$str);
суббота, 4 декабря 2010 г.
Экспорт словаря из LinguaLeo
Предыстория
Несколько месяцев назад я серьёзно решил повысить свой уровень английского языка. В помошники выбрал замечательный сайт LinguaLeo.ru. И в дополнение установил на свой Android не менее замечательную программу AnyMemo.
Кратко расскажу о них.
Концепция LinguaLeo: просматриваем аутентичный контент, кликаем по неизвестным словам, они переводятся и добавляются в словарь. Потом заучиваем эти слова в специальных упражнениях.
AnyMemo - карточки для заучивания. Показывается слово, по клику появляется перевод. От того, насколько легко мы его вспомнили, зависит время, через которая карточка будет показана вновь.
Каждый из этих помошников имеет свой недостаток.
Для AnyMemo необходимо самому создавать словари с карточками для заучивания, а это мне делать лень.
В LinguaLeo я считаю недостатком то, что слово, пройдя через 3 этапа упражнения, считается выученным и остается в словаре, не возвращаясь на повторение.
Вот поэтому я решил как-то их синхронизировать.
Собственно процесс
Несколько месяцев назад я серьёзно решил повысить свой уровень английского языка. В помошники выбрал замечательный сайт LinguaLeo.ru. И в дополнение установил на свой Android не менее замечательную программу AnyMemo.
Кратко расскажу о них.
Концепция LinguaLeo: просматриваем аутентичный контент, кликаем по неизвестным словам, они переводятся и добавляются в словарь. Потом заучиваем эти слова в специальных упражнениях.
AnyMemo - карточки для заучивания. Показывается слово, по клику появляется перевод. От того, насколько легко мы его вспомнили, зависит время, через которая карточка будет показана вновь.
Каждый из этих помошников имеет свой недостаток.
Для AnyMemo необходимо самому создавать словари с карточками для заучивания, а это мне делать лень.
В LinguaLeo я считаю недостатком то, что слово, пройдя через 3 этапа упражнения, считается выученным и остается в словаре, не возвращаясь на повторение.
Вот поэтому я решил как-то их синхронизировать.
Собственно процесс
четверг, 15 апреля 2010 г.
Анализ использования места на жестком диске - используем консоль
В качестве продолжения статьи о графическом представлении данных на диске, приведу список консольных команд, которые удобно использовать для анализа использования места на диске.
# свободное место на дисках
df -h
# размер файла
du -sh my_file
# размер папки
du -sh my_dir
# список файлов и папок с указанием размера, суммарный размер
du -shc my_dir/*
# список файлов и папок с указанием размера, по возрастанию
du -sh my_dir/* | sort -rh
# размер файла
ls -sh my_file
# список файлов с указанием размера, по возрастанию
ls -shS my_dir
# то же самое с рекурсивным заходом в подкаталоги
Наверняка есть другие вариации. Это только те, что "насочинял" я.
ls -shSR my_dir
Наверняка есть другие вариации. Это только те, что "насочинял" я.
среда, 14 апреля 2010 г.
Анализ использования места на жестком диске - графическое представление
Наверно даже аккуратным людям приходится иногда разгребать содержимое жесткого диска с целью освобождения пространства на нем. Я не аккуратный. И иногда мне приходится делать это срочно, если места вдруг не хватает для скачивания/копирования чего-либо.
Вот обзор программ для linux, которые могут помочь с этим процессом, представив содержимое диска графически.
Таблица - сравнение функционала программ
Вот обзор программ для linux, которые могут помочь с этим процессом, представив содержимое диска графически.
Таблица - сравнение функционала программ
вторник, 13 апреля 2010 г.
Настройка phpMyAdmin в связке с Lighttpd и CodeIgniter
Установка phpMyAdmin
Подразумевается, что PHP, Lighttpd, MySql, CodeIgniter установлены и работают.
Настройка PHP
В файле /etc/php/php.ini в строчке 'open_basedir' добавить
и раскомментировать строку
Настройка MySQL
Создать пользователя mysql
Настройка phpMyAdmin
Отредактировать /etc/webapps/phpmyadmin/config.inc.php
Перейти на http://localhost/phpmyadmin/setup
Настройка lighttpd
В файле /etc/lighttpd/lighttpd.conf изменить правило
Подразумевается, что PHP, Lighttpd, MySql, CodeIgniter установлены и работают.
#pacman -S phpmyadmin php-mcrypt
Настройка PHP
В файле /etc/php/php.ini в строчке 'open_basedir' добавить
:/usr/share/webapps/:/etc/webapps
и раскомментировать строку
extension=mcrypt.so
Настройка MySQL
Создать пользователя mysql
mysql -u root -p YOURROOTPASSWORD
mysql> grant usage on mysql.* to myuser@localhost identified by 'mypass';
Настройка phpMyAdmin
#cd /usr/share/webapps/phpmyadmin
#sudo mkdir config
#sudo chgrp http config
#sudo chmod g+w config
#ln -s /usr/share/webapps/phpMyAdmin/ /srv/http/phpmyadmin
Отредактировать /etc/webapps/phpmyadmin/config.inc.php
cfg['Servers'][$i]['host'] = 'localhost';
$cfg['Servers'][$i]['controluser'] = 'myuser';
$cfg['Servers'][$i]['controlpass'] = 'mypass';
$cfg['blowfish_secret'] = 'mysecret'
Перейти на http://localhost/phpmyadmin/setup
rm -rf /usr/share/webapps/phpMyAdmin/config/
Настройка lighttpd
В файле /etc/lighttpd/lighttpd.conf изменить правило
url.rewrite = (
"^/phpmyadmin/.*/?" => "$0",
"^/([^.]+)$" => "/index.php/$1"
)
Делаем TextMate из GEdit
Text-Mate - обалденный текстовый редактор, рекомендованный создателями Ruby On Rails. Страдая из-за его отсутствия на родной платформе Linux, я отправился на поиски альтернативы. Честно говоря, я бы отправился даже будь у Text-Mate линукс-версия, так как стоит редактор $50.
Сначала обратил внимание на RedCar - преемник Text-Mate, написанный на Ruby и Vala. К сожалению он еще сырой, хотя в перспективе должно получиться то что надо. В Arch-e нашелся в AUR и автоматически собрался из git, но был вскоре удален.
Погуглив еще, я наткнулся на статью на Хабре с предложением оригинального решения.
Итак, что я сделал:
1. Установил пакеты gedit-plugins и gedit-plugins-extra.
2. Скачал шрифт и поместил в ~/.fonts
3. Выбрал в gedit Правка->Параметры, расставил галочки
4. Включил модули:
Advanced Bookmarks - закладки
Word completion - автодописывание
TextMate Style Autocompletion - дописывание слов по esc, как в TextMate; подумав, оставил его.
Class Browser - обозраватель классов
Click_Config - настройка выделения текста по щелчкам мыши
Code Formatter - авто-форматирование для руби
Control Your Tabs - переключение вкладок по Ctrl-Tab
Current Line Highlight - настройка цвета, которым выделяется текущая строка
Edit Shortcuts - редактирование комбинаций клавиш для всего, в том числе для плагинов
Find in Documents - поиск во всех открытых документах
Reopen Tabs - восстановление вкладок прошлого сеанса
Save without trailing space - удаление лишних пустых строк при сохранении
Split View - разделение окна по вертикали/горизонтали
Switcher - список открытых документов для переключения между ними
Tabs Extend - дополнительные действия со вкладками
Auto Tab - детектор настроек табуляции в исходниках
Быстрое открытие
Встроенный терминал - внизу
Горячие клавиши для Rails
Дополнение скобок
Изменение регистра
Панель обозревателя файлов - удобная панелька сбоку
Поиск и замена по регулярным выражениям
Проверка орфографии
Сохранение сеансов
Сохранение без хвостовых пробелов
Список дел - порт TODO list из Text-Mate
Статистика документа
Таблица символов
Умные отступы - то, о чем мечтал!
Фрагменты текста - сниппеты, вставляет часто используемые шаблоны
Пока что остановился на таком списке) Недостающие плагины скачиваются здесь.
5. Подключил подсветку .rhtml и .rjs (.rb была сразу)
wget http://grigio.org/files/x-rhtml.xml
sudo mv x-rhtml.xml /usr/share/mime/packages
wget http://grigio.org/files/rhtml.lang
sudo mv rhtml.lang /usr/share/gtksourceview-1.0/language-specs/
6. Убрал панель инструментов, конечно же.
Вот такая няшка получилась:
Выглядит мило, тестирую на удобство сейчас =)
Алсо, установить все разом можно с помощью плагина gmate. Качаем, выполняем ./install.sh и остается только немного допилить по вкусу.
Сначала обратил внимание на RedCar - преемник Text-Mate, написанный на Ruby и Vala. К сожалению он еще сырой, хотя в перспективе должно получиться то что надо. В Arch-e нашелся в AUR и автоматически собрался из git, но был вскоре удален.
Погуглив еще, я наткнулся на статью на Хабре с предложением оригинального решения.
Итак, что я сделал:
1. Установил пакеты gedit-plugins и gedit-plugins-extra.
2. Скачал шрифт и поместил в ~/.fonts
3. Выбрал в gedit Правка->Параметры, расставил галочки
4. Включил модули:
Advanced Bookmarks - закладки
Word completion - автодописывание
TextMate Style Autocompletion - дописывание слов по esc, как в TextMate; подумав, оставил его.
Class Browser - обозраватель классов
Click_Config - настройка выделения текста по щелчкам мыши
Code Formatter - авто-форматирование для руби
Control Your Tabs - переключение вкладок по Ctrl-Tab
Current Line Highlight - настройка цвета, которым выделяется текущая строка
Edit Shortcuts - редактирование комбинаций клавиш для всего, в том числе для плагинов
Find in Documents - поиск во всех открытых документах
Reopen Tabs - восстановление вкладок прошлого сеанса
Save without trailing space - удаление лишних пустых строк при сохранении
Split View - разделение окна по вертикали/горизонтали
Switcher - список открытых документов для переключения между ними
Tabs Extend - дополнительные действия со вкладками
Auto Tab - детектор настроек табуляции в исходниках
Быстрое открытие
Встроенный терминал - внизу
Горячие клавиши для Rails
Дополнение скобок
Изменение регистра
Панель обозревателя файлов - удобная панелька сбоку
Поиск и замена по регулярным выражениям
Проверка орфографии
Сохранение сеансов
Сохранение без хвостовых пробелов
Список дел - порт TODO list из Text-Mate
Статистика документа
Таблица символов
Умные отступы - то, о чем мечтал!
Фрагменты текста - сниппеты, вставляет часто используемые шаблоны
Пока что остановился на таком списке) Недостающие плагины скачиваются здесь.
5. Подключил подсветку .rhtml и .rjs (.rb была сразу)
wget http://grigio.org/files/x-rhtml.xml
sudo mv x-rhtml.xml /usr/share/mime/packages
wget http://grigio.org/files/rhtml.lang
sudo mv rhtml.lang /usr/share/gtksourceview-1.0/language-specs/
6. Убрал панель инструментов, конечно же.
Вот такая няшка получилась:
Выглядит мило, тестирую на удобство сейчас =)
Алсо, установить все разом можно с помощью плагина gmate. Качаем, выполняем ./install.sh и остается только немного допилить по вкусу.
Подписаться на:
Сообщения (Atom)