Сегодня поставил на обе машины (стационарник и макбук) RVM (ruby version manager). Данная штука позволяет держать несколько версий руби, с их гемами и рельсами, что крайне удобно.
К примеру, я поставил 2 версии руби: 1.8.7 для продакшн разработки с рельсами 2.3.5, а также 1.9.1 для изучения и проб с рельсами версии 3.0.0 beta.
В качестве напоминалки сюда публикну пару команд, что же я сделал:

1. Первоначально я поставил RVM:

  1. http://rvm.beginrescueend.com/rvm/install/ – пища для размышлений
  2. mkdir -p ~/.rvm/src/ && cd ~/.rvm/src && rm -rf ./rvm/ && git clone –depth 1 git://github.com/wayneeseguin/rvm.git && cd rvm && ./install
  3. действовать по тому, что оно пишет при инсталле
  4. открываем консоль заново

2. Поставил 2 версии руби командами:

  1. rvm install 1.9.1
  2. rvm install 1.8.7
  3. переключаться между ними можно командой rvm 1.8.7 или rvm 1.9.1
  4. поставить какую-то версию по дефолту можно командой rvm 1.9.1 –default далее »

Мой любезный читатель, посмотри, что у меня есть для тебя! Твиттер. Данная система микроблогинга довольно известна и распространена зарубежом, но не у нас, в России.

Что интересного для заграничничников дает этот сервис? Можно обмениваться сообщениями длиной в 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. далее »

Различных хау-ту�?ек на тему создания блога уже по-моему предостаточно. Поэтому я ре�?ил вам предложить написать несложный задачник используя 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) заключалась в том чтобы сделать язык программирования очень похожим на речь, и в некотором смысле ему это удалось. �?так, понемногу разбираясь в языке, (а освоил я, честно говоря, совсем малость, хотя затягивает все боль�?е и боль�?е) столкнулся с первой и существенной для многих программистов проблемой – проблемой выбора среды разработки. Я попробовал несколько: далее »

Работа с базами в 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, ...);

все три интуитивно понятны. далее »

Вот я опять пи�?у потому, что меня нечто задевает и не дает смотреть сквозь пальцы. Причем это нечто вполне само себе разумеющееся, логичное и самодоказательное.

Скажите, ведь многие привыкли отправлять сообщения по 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>


�? даже на этом расчудесном блогерском двиге, чтобы отправить комментарий, нужно взять в руки мы�?ку и ткнуть в кнопку. Ребята, давайте создавать разумные интерфейсы, использовать руки, голову. Сейчас полезу поэксперементирую на локальной ма�?ине со встраиванием в код.

Нам помогают
Дружественные сайты: