Ruby Version Manager, Gems, Bundler, ruby 1.8.7, 1.9.1
Март 30, 2010
Сегодня поставил на обе машины (стационарник и макбук) RVM (ruby version manager). Данная штука позволяет держать несколько версий руби, с их гемами и рельсами, что крайне удобно.
К примеру, я поставил 2 версии руби: 1.8.7 для продакшн разработки с рельсами 2.3.5, а также 1.9.1 для изучения и проб с рельсами версии 3.0.0 beta.
В качестве напоминалки сюда публикну пару команд, что же я сделал:
1. Первоначально я поставил RVM:
- http://rvm.beginrescueend.com/rvm/install/ – пища для размышлений
- mkdir -p ~/.rvm/src/ && cd ~/.rvm/src && rm -rf ./rvm/ && git clone –depth 1 git://github.com/wayneeseguin/rvm.git && cd rvm && ./install
- действовать по тому, что оно пишет при инсталле
- открываем консоль заново
2. Поставил 2 версии руби командами:
- rvm install 1.9.1
- rvm install 1.8.7
- переключаться между ними можно командой rvm 1.8.7 или rvm 1.9.1
- поставить какую-то версию по дефолту можно командой rvm 1.9.1 –default далее »
Прикручиваем оповещение с блога в твиттер
Февраль 13, 2010
Мой любезный читатель, посмотри, что у меня есть для тебя! Твиттер. Данная система микроблогинга довольно известна и распространена зарубежом, но не у нас, в России.
Что интересного для заграничничников дает этот сервис? Можно обмениваться сообщениями длиной в 140 символов, а ля чятик
Ограничение в длине сообщения связаны с тем, что твитить (т.е. посылать сообщения на твиттер) пользователь мог и может и будет мочь смс-кой. У нас операторы не предоставляют такой возможности, но тем не менее полно клиентов и плагинов для броузеров, для смартфонов и коммуников, которые восполняют дыру в на�?ем сердце от несправедливости великолепной четверки оббирателей.
Что же интересного для нас, господа, в этом сервисе? Я считаю интересным факт, что сервис написан на Ruby on Rails, что свободно предоставляет api для взаимодействия с ним, и что можно использовать его в качестве системы отслеживания новостей. �? плюс ко всему этому, можно моментально ответить автору; такого при использовании обычной rss-читалки добиться было нельзя. �?нтерактивность, блин! далее »
Mass Assignment в RoR.
Февраль 4, 2010

Mass Assignment (массовое назначение) является причиной уязвимостей сайтов на rails с момента появления фреймворка на свет. О�?ибка программиста, как зачастую это бывает, сводится к отсутствию проверки входных параметров.
Для примера создадим простенькое приложение
$ rails massVul $ cd massVul/ $ script/generate scaffold user name:string admin:boolean
Таким образом мы создадим основу для приложения с пользователями, в которой можно указать имя в поле name, а также есть поле admin, которое легко использовать при разграничении прав пользователей. К примеру запросом, является ли этот пользователь администратором, и если да, то позволяются ему определенные действия. Конечно, мы не настолько глупы чтобы позволять обычным пользователям ставить галочку, поэтому мы правим на�? вид и удаляем все что связано с галочкой admin. далее »
Простой задачник на RoR
Январь 31, 2010
Различных хау-ту�?ек на тему создания блога уже по-моему предостаточно. Поэтому я ре�?ил вам предложить написать несложный задачник используя Ruby on rails. Плюс хочу в данной теме опробовать удобства SlideShare и все иллюстрации запихнул в презента�?ку. По ходу процесса буду обращаться именно к ней обзывая слайд, который нужно взглянуть.
�?так, что же должен уметь на�? задачник? Создавать/просматривать/редактировать/удалять записи с задачами, отображать время создания задачи и время ее окончания. Вот мои версии рубей и рельс.
$ rails -v Rails 2.3.5 $ ruby -v ruby 1.8.7 (2009-06-12 patchlevel 174) [x86_64-linux]
Для начала нам необходимо установить дополнительные генераторы кода от Райана Бейтса, это не обязательно, они отличаются незначительно, но в целом генераторы Райана мне нравятся боль�?е, они симпатичнее и соответствуют правилу DRY (не повторяй код дважды). Далее мы создаем приложение, переходим в папку с приложением и генерируем layout, чтобы симпатичнее смотрелось приложение в целом.
После этого необходимо создать основу на�?его приложения scaffold. Назовем его todolist, у него будет 4 поля:
- задача (текстового типа)
- статус (выполнено или невыполнено, поэтому булевый тип)
- создано_в (дата-время)
- окончено_в (дата-время)
Даль�?е подсвеченные исходнички и интересная презента�?ка, скорее жми: далее »
Мусор без соплей и воды
Сентябрь 22, 2009
Если Garbage – это мусор, а java - это источник мусора, то System.gc() – это Мусоросборник и уничтожитель мусора в одном. Производя на свет любое приложение, мы даже не задумываемся, что подобно боль�?ому предприятию помимо результата отбираем у природы (у компьютера) его чистоту и свежесть. Приложение становится вялым, требует свежего воздуха и в поисах его может привести к нестабильности всей системы (т.е. планеты, если переводить на человеческий язык).
«Мужик не перекрестится, пока гром не грянет», – гласит старая поговорка. Так и боль�?инство разработчиков не задумываются о том, как будет чувствовать себя их завод на планете Компьютер. Многие считают, что ре�?ить задачу можно добавлением оперативной памяти, усилением процессора и т.п. Нет, нельзя.
Намного легче заранее ре�?ать задачи по очистке воздуха. Встроенные средства java весьма скудны и, к тому же, могут быть заблокированы страной Java Virtual Machine (о, боже, тока не это). Забавно само по себе, что работа System.gc() весьма ресурсоемка, поэтому выполнять ее следует в то время, когда приложение «отдыхает».
R&ROR. Vim. Часть 1.
Июль 24, 2009
Так уж получилось, что с недавнего времени я увлекся языком программирования Ruby и его самым известным ребенком – фреймворком Ruby on Rails. По какой причине я выбрал данный язык для освоения – не знаю; мне понравился синтаксис, видимо. �?дея автора языка (Matz) заключалась в том чтобы сделать язык программирования очень похожим на речь, и в некотором смысле ему это удалось. �?так, понемногу разбираясь в языке, (а освоил я, честно говоря, совсем малость, хотя затягивает все боль�?е и боль�?е) столкнулся с первой и существенной для многих программистов проблемой – проблемой выбора среды разработки. Я попробовал несколько: далее »
Ах эти Базы :) Часть первая. Работа с базами
Июль 21, 2009
Работа с базами в Java осуществляется через коннектор к базе. Сегодня мы рассмотрим с Вами подключение к Базе, и базовые функции работы с базой. Помимо я буду комментировать правильность написания кода, и советую Вам, придерживаться такого стиля. (Прафффда форматирвание тут не получается выставить
выставляейте сами).
AjaxAgent
Июль 1, 2008
Наверно многим знакома технология асинхронной загрузки страницы (Ajax короче). Так вот, мне как то было сложно начать использовать его, из-за того что в JavaScript я не силен. Но так хотелось попробовать его на вкус. �? как то случайно наткнулся на довольно интересный фреймворк, названный ajaxAgent. По словам разработчиков, они стремились создать �?туку, которой бы мог пользоваться каждый без особых копаний в технологиях. Ajax Agent использует для обмена данными JSON вместо XMLHttpRequest. Как гордо заявляют девелоперы, для использования этого фреймворка нужно написать всего 3 строчки:
include_once('agent.php'); $agent->init(); agent.call('url','server_function', 'client_handle', param1, param2, ...);
все три интуитивно понятны. далее »
Ну ведь это так просто!
Июнь 10, 2008
Вот я опять пи�?у потому, что меня нечто задевает и не дает смотреть сквозь пальцы. Причем это нечто вполне само себе разумеющееся, логичное и самодоказательное.
Скажите, ведь многие привыкли отправлять сообщения по Ctrl+Enter в аське?
Ну почему бы не сделать в форумных движках отправку сообщений по Ctrl+Enter ведь это так легко!
<script type="text/javascript">
function ctrlEnter(event, formElem)
{
if((event.ctrlKey) && ((event.keyCode == 0xA)||(event.keyCode == 0xD)))
{
formElem.submit.click();
}
}
</script>
<form action="send.php" method="post" onkeypress="ctrlEnter(event, this);">...</form>
�? даже на этом расчудесном блогерском двиге, чтобы отправить комментарий, нужно взять в руки мы�?ку и ткнуть в кнопку. Ребята, давайте создавать разумные интерфейсы, использовать руки, голову. Сейчас полезу поэксперементирую на локальной ма�?ине со встраиванием в код.
