суббота, 30 мая 2009 г.

MVC в Rails

Разработкой на рельсах занимаюсь уже три года, решал различные сложные и комплексные задачи... А вот поди ж ты, – теорию тоже поднатаскать надо. Хотя бы в качестве программы подготовки к экзаменам, собеседованиям. В общем, «Здравствуй, школа!» :).

Из википедии:
Model-view-controller (MVC, «Модель-представление-поведение», «Модель-представление-контроллер») – архитектура программного обеспечения, в которой модель данных приложения, пользовательский интерфейс и управляющая логика разделены на три отдельных компонента, так, что модификация одного из компонентов оказывает минимальное воздействие на другие компоненты.

Шаблон MVC позволяет разделить данные, представление и обработку действий пользователя на три отдельных компонента.

  • Модель (Model). Модель предоставляет данные (обычно для View), а также реагирует на запросы (обычно от контроллера), изменяя свое состояние;
  • Представление (View). Отвечает за отображение информации (пользовательский интерфейс);
  • Поведение (Controller). Интерпретирует данные, введенные пользователем, и информирует модель и представление о необходимости соответствующей реакции.

Model


Модель – это представление определенного участка данных, в общем случае – таблицы базы данных. В модели определяются требования и расчеты необходимые для взаимодействия с этими данными. Обычно требования для формата данных, связи и отношения между данными, методы создания (create), обновления (update), удаления (destroy), поиска (find) и пр.


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


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


Правило controller-model: “fat model, skinny controller”, «жирная модель, тощий контроллер».


Controller


Контроллер – логика между моделью и представлением. Контроллеры содержат методы, которые напрямую относятся к действиям (actions) выполняемым пользователем. Назначение контроллера – отвечать на действия, запрошенные пользователем. Как то: принять параметры, заданные пользователем, обработать эти параметры, задействовать модель, и затем передать запрошенные данные в обработанной форме представлению (view).


Методы контроллера обычно краткие; это небольшие куски кода, выполняющие специфические задачи. Если они содержат более 9-10 строк, это должно тебя насторожить: возможно, ты делаешь слишком много в контроллере и недостаточно в модели (см. правило controller-model).


View


View (Вид/Представление) – это где данные, обработанные контроллером, получают вывод в формате, запрошенным пользователем. В rails это обычно html, но может быть xml, js, json или другой. Разделение между контроллером и представлением еще более понятное, чем между контроллером и моделью.


Правило controller-view: никакого вывода данных в контроллере, никакой обработки данных в представлении.


По материалам статьи Rails and MVC.
Читать дальше »

среда, 20 мая 2009 г.

CSS-спрайтово скругленные углы

Сделал блок текста со скругленными углами с использованием элементов техники CSS-sprites. Пример работает для блоков фиксированного размера. Но предполагаю впоследствии сделать и для произвольной величины.


Как выглядит


CSS rounded


Из чего состоит


  1. Файл изображения


  2. Стили CSS

  3. .rounded {
    width: 300px;
    margin: 16px;
    background-color: #DFE5ED;
    color: #000;
    }
    .rounded p {
    padding:5px 10px;
    }
    .rc {
    background-image: url('public/rounded.gif');
    background-repeat:no-repeat;
    height: 150px;
    }
    .tl {
    background-position: -15px -15px;
    }
    .bl {
    background-position: -15px 135px;
    }
    .tr {
    background-position: 285px -15px;
    }
    .br {
    background-position: 285px 135px;
    }

  4. Код HTML

  5. <div class="rounded">
    <div class="rc tl">
    <div class="rc tr">
    <div class="rc bl">
    <div class="rc br">
    <p>Блок фиксированной ширины</p>
    <p>CSS-блок со скругленными краями c использованием CSS-спрайтов.</p>
    </div>
    </div>
    </div>
    </div>
    </div>


Работает в Firefox, IE 6, Chrome, Opera, Safari.


Что дальше?


Я предполагаю CSS скругленные углы для блоков произвольного размера.


Читать дальше »

четверг, 7 мая 2009 г.

Шаблон Craftwork

Craftwork Blogger templateКрайнее время особенно привлекают меня дизайны в стиле hand-drawn и hand-made. Из недавних находок понравился

шаблон для Blogger “Craftwork”

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

.

Устанавливается в несколько шагов. Сначала устанавливается сам шаблон, затем вручную добавляются коды для RSS, navigation и для формы поиска (Search form).


Посмотреть пример шаблона


Читать дальше »

понедельник, 4 мая 2009 г.

Футер Blogger в три колонки

О том, что такое футер, как его организовать и даже как разбить его в три и более колонок, запросто отыщешь в интернете. Все примеры и методики по своему хороши, но... Я расскажу как сделать футер шаблона Blogger по-настоящему Blogger-powered! Иными словами, как использовать в подвале возможности платформы Блоггер на полную.


Футер в три колонки

Для начала вводное слово, или «о чем, собственно речь». Нетерпеливые могут пропустить следующий раздел.


Футер или подвал


Футер (англ. footer) или подвал – часть сайта, находящаяся внизу страницы. Обычно содержит данные о владельце страницы, дополнительную навигацию, справочную и контактную информацию.


До недавнего времени так оно и было. Теперь, то ли с приходом веб-два-нольной эпохи, то ли с увеличением скоростей и мощностей интернета, то ли в связи с ужесточившейся конкуренцией среди веб-дизайнеров... но функции «подвала» значительно расширились. За примерами красивых футеров далеко ходить не надо – не сносив двух пар лаптей, наберешь лукошко.


Трехколоночный футер в шаблоне Blogger


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


Вот так теперь выглядит футер моего блога в режиме визуального редактирования.


Blogger 3 column footer

Как нетрудно заметить, в каждой из трех частей подвала можно использовать виджеты для шаблонов Blogger. И теперь-то я расскажу, как создать такой футер самому.


  1. Перейди к редактированию шаблона (Макет - Изменить HTML) и найди там такую строчку (или подобную):
    <b:section class='footer' id='footer'/>
  2. Замени ее следующими тремя:
    <b:section class='footer' id='footer2'/>
    <b:section class='footer' id='footer3'/>
    <b:section class='footer' id='footer4'/>

    или
    <b:section class='footer' id='footer2'></b:section>
    <b:section class='footer' id='footer3'></b:section>
    <b:section class='footer' id='footer4'></b:section>
  3. Добавь следующие правила CSS в разделе для CSS стилей шаблона:
    .footer{
    padding:0 24px;
    margin:0 0 1em; text-align: left;
    }
    
    #footer2 {
    width: 25%; float: left;
    }
    
    #footer3 {
    width: 33%; float: left;
    }
    
    #footer4 {
    width: 27%; float: right;
    }
  4. Сохрани шаблон

Все! После этого на странице визуального редактирования шаблона (Макет - Элементы страницы) ты сможешь добавлять в каждую из колонок футера виджеты Blogger.


Читать дальше »

воскресенье, 3 мая 2009 г.

Редизайн блога

Не далее как вчера, 2 мая, мне наконец-то удалось выделить достаточно времени, чтобы довести редизайн блога до версии 1.0. Отплясывать джигу с бутылкой ямайского рома, конечно, еще рановато: многие вещи еще требуют доработки, полировки, а то и вовсе замены и списания в дурдом. Но основной каркас уже есть и этому можно порадоваться.


Было
Ruby Brewed До
Стало
Ruby Brewed После


Шаблон разрабатывал и верстал сам, в качестве базиса был выбран стандартный шаблон Minima by Douglas Bowman


Читать дальше »