Работа с MongoDB: Подробнее о языке запросов ч.1

декабря 28, 2011  |  Published in MongoDB, Базы данных

mongoDBВ этой статье мы подробнее рассмотрим ранее описанные метод .find() и объекта запроса.

Методы .find() и .findOne() используются соответственно для поиска всех документов и поиска первого документа, что соответствуют запросу.

 


db.posts.find()
/*
{ "_id" : ObjectId("4ef64c526e06ee4cec3dab4e"), "title" : "Title for post # 1", "content" : "Content for post # 1" }
{ "_id" : ObjectId("4ef64c526e06ee4cec3dab4f"), "title" : "Title for post # 2", "content" : "Content for post # 2" }
...
{ "_id" : ObjectId("4ef714746dca6d809b6f4cdd"), "title" : "Title #9", "content" : "Content #9" }
{ "_id" : ObjectId("4ef714746dca6d809b6f4cde"), "title" : "Title #10", "content" : "Content #10" }
*/

db.posts.find().count() //20

Read the rest of this entry »

Tags: , ,

Работа с MongoDB: Структура БД и основы языка запросов

декабря 25, 2011  |  Published in MongoDB, Базы данных  |  4 Comments

mongoDBРаботая с MongoDB у нас имеется базовый объект — db, который представляет собой саму базу данных, точнее является ссылкой на одну из имеющихся баз данных (по умолчанию, запуская консоль это база данных с именем test). Далелее идут коллекции документов, использую dot-нотацию получаем доступ к коллекции следующим образом:

> db.collection_name

Коллекции представляют собой наборы документов или вложенных коллекций. Обратиться к документу можно используя различные запросы.
Read the rest of this entry »

Tags: , , ,

Работа с RestClient

декабря 24, 2011  |  Published in HTTP & REST  |  3 Comments

В этой статье я расскажу о работе с RestClient — замечательной библиотекой (gem’ом) написанной на Ruby.

RestClient — это библиотека для взаимодействия с REST-сервисами. RestClient был разработан Адамом Виггинсом (Adam Wiggins) когда он счел Net::HTTP слишком низкоуровневым и многословным, а ActiveResource слишком «толстым» и избыточным. Сейчас разработкой RestClient занимается Жульен Кирч (Julien Kirch), который значительно доработал и улучшил то, что создал Адам Виггинс.

RestClient очень прост и удобен. По сути, все, что вы делаете с RestClient — это отправляется HTTP запросы RESTful серверу, например, к Twitter API или API какого-нибудь другого интересного проекта, или даже не API, а сайту, который поддерживает REST-архитектуру. Мы просто отправляем запрос и получаем ответ — вот чем занимается RestClient.
Read the rest of this entry »

Tags: , ,

Работа с MongoDB: Установка и краткое введение в работу с MongoDB

декабря 24, 2011  |  Published in MongoDB, Базы данных

mongoDBMongoDB — это документо-ориентированная база данных. Если в реляционных базах данных мы используем строки (записи) и таблицы, то для MongoDB можно провести параллель с документами и коллекциями.

Преимуществом документо-ориентированных БД вроде MongoDB является то, что документы могут содержать произвольное количество атрибутов, значением некоторых из которых могут быть другие документы, вместо использования записей и индексов — которые используются как ссылки для ассоциирования записей из различных таблиц между собой. Кроме того, MongoDB — очень гибкое и расширяемое решение для хранения данных.
Почему MongoDB

MongoDB — очень популярное и достаточно стабильное решение, которое широко используется в production окружении там, где нужна высокая производительность и где не подходят или плохо подходят реляционные базы данных.

Read the rest of this entry »

Tags: ,

Заполнение базы данных тестовыми данными при помощи seed-fu

декабря 24, 2011  |  Published in Ruby on Rails, Тестирование  |  5 Comments

Я отношусь к тойкасте людей, что не воспринимают интеграционные тесты. Программа не может оценить внешний вид приложения так, как то может сделать человек. По этой причине я предпочитаю сам смотреть на то, как выглядит приложение. Для того, чтобы это изучение приложения было максимально приближена к реальности — необходимо заполнять базу тестовыми данными, кроме того, тестовые данные необходимы для тестирования производительности приложения на «реальных» данных. В Rails имеется встроенный механизм seed-ирования базы данных, однако он мне не очень нравится и в этой статье я рассказывать о нем не буду. Вместо встроенного функционала я предпочитаю использовать seed-fu — отличное решение поставляемое в виде совсем обыкновенного gem’а, которое делает заполнение БД тестовыми данными более удобным.
Read the rest of this entry »

Tags: , , ,

Замечательный JavaScript ч. 3: Работа с DOM и BOM

декабря 10, 2011  |  Published in ClientSide, JavaScript

BOM — Browser Object Model — объектная модель браузера
BOM — представляет собой древовидную структуру, иерархию объектов браузера. Во главе этой структуры стоит объект window и представляет он собой само окно браузера. window также является глобальным объектом, то есть внутри него расположена глобальная область видимости и любая глобальная функция или переменная является соответственно методом или свойством объекта window.

Наиболее интересными функциями и свойствами window являются следующие:

window.navigator — информация о браузере.

window.innerHeight, window.innerWidth — внутренняя высота и ширина браузера, то есть размер области, которая отображает сайт.

window.outerHeight, window.outerWidth — внешняя высота и ширина, то есть размер самого окна браузера.

window.load() — функция-обработчик события загрузки сайта.

window.location — объект предоставляет информацию об адресе страницы и методы для редиректа, обновления страницы и т.д.

screen — объект предоставляющий информацию о пользовательском дисплее.

screenLeft(screenX), screenTop(screenX) — положение верхнего левого угла окна браузера.

scrollY, scrollX — положения горизонтальной и вертикальной полос прокрутки.

В этой статье мы рассматриваем BOM достаточно поверхностно так как для разработки веб-приложений нам это не сильно нужно знать. Интерес представляют только свойства дающие информацию о браузере пользователя, размерах экрана/браузера и локация.

DOM — Document Object Model — объектная модель документа.

DOM является структурой вложенной в BOM. DOM содержит дерево всех элементов страницы и методы для работы с ними. Самыми популярными методами являются:

document.getElementById() — позволяет получить элемент по его ID.

document.getElementsByClassName() — позволяет получить элементы по их классу.

document.getElementsByName() — позволяет получить элементы по их имени.

document.getElementsByTagName() — позволяет получить элементы по имени тега.

document.getElementsByTagNameNS() — позволяет получить элементы по их имени, которые содержатся в определенной области видимости (оптимизированная версия getElementsByTagName).

Прежде, чем мы продолжим знакомится с остальными методами и свойствами для работы с DOM давайте подробнее рассмотрим что это такое и из чего DOM состоит. DOM описывается сразу тремя спецификациями разработанными W3C (W3C Level 1 DOM, W3C Level 2 DOM, W3C Level 3 DOM), которые были разработаны в разное время и соответственно в разной степени поддерживаются браузерами. В этой статье мы в первую очередь будем обращать внимание на DOM Level 1 так как он поддерживается полностью (или почти полностью) всеми современными (и не очень современными) браузерами. Вообще каждый Leve l является наслоением над предыдущим и добавляет определение новых свойств и методов для работы с DOM.

DOM состоит из узлов (node). О типах узлов позже.

<div>
  <p>
    <a>link</a> some text
  </p>
</div>

Можно изобразить так:

Read the rest of this entry »

Tags: , , ,

Замечательный JavaScript ч.2: Хорошие практики

декабря 9, 2011  |  Published in ClientSide, JavaScript  |  8 Comments

JavaScript имеет множество недостатков, но влияния многих из них можно избежать используя правильные практики и рекомендации бывалых разработчиков. Эта статья — это компиляция различных советов по улучшению кода и практик по его написанию. Большей своей частью статья опирается на рекомендации данные Дугласом Крокфордом, но содержит и много практик от других разработчиков.

1. Всегда используйте фигурные скобки.
JavaScript позволяет не писать фигурные скобки, однако то, что это позволено не означает, что это правильно. Во-первых ваш код выглядит не так очевидно, а во вторых он не будет работать после его минификации.

Не правильно

if (true)
  alert(true);

Правильно

if (true){ alert(true); }

2. Всегда ставьте точку с запятой.
В JavaScript ставить точку с запятой в конце каждой строки является необязательным, однако, что произойдет если мы минифицируем код? — Правильно, код поломается.

Неправильно

function myFunction(a,b) {
  var sum = a + b
  alert(sum)
}

Правильно

function myFunction(a,b) {
  var sum = a + b;
  alert(sum);
}

3. Всегда используйте var для объявления переменных и избегайте глобальных переменных.
Если вы не используете var для объявления переменных, то такие переменные объявляются как глобальные переменные. Глобальные переменные несут различные опасности связанные с некорректной работой кода.

Read the rest of this entry »

Tags: ,

Замечательный JavaScript ч.1

декабря 4, 2011  |  Published in ClientSide, JavaScript  |  4 Comments

Сразу оговорюсь о том, что JavaScript не самый удобный язык программирования — в нем много чего сделано неправильно или недоделано, много простейших вещей отсутствует, много неочевидных моментов, например начать программировать на Ruby можно уже через день почитав созданные кропотливым трудом статьи на RubyDev, а для того, чтобы научиться программировать на JavaScript необходимо большее время. Под «научиться программировать» я не подразумеваю умение организовывать архитектуру и создавать большие приложения, но подразумеваю знание синтаксиса и философии языка.

Несмотря на множество недостатков JavaScript — чудесный язык программирования. Если бы не проблемы с кроссбраузерностью и нормальная поддержка браузеров современных стандартов (я о HTML5 JavaScript APIs) то удовольствие от программирования на JavaScript можно было бы сравнить с удовольствием программирования на Ruby.

В этой огромнейшей статье я постараюсь вам поведать об объектах в JavaScript, наследовании на прототипах и прочих вещах, а также познакомить вас с философией языка, точнее с тем, как ее понимаю я. Статья не будет раскрывать тему программирования на JavaScript всецело, я не ставлю целью написание еще одного справочника по языку — это глупо, вместо этого данная статья научит вас понимать то как и почему JavaScript работает так, как работает, как организовать код и т.д. Также оговорюсь, что в статье приводится не кроссбраузерный код, он работает в FireFox и Chrome о том, работает ли он в остальных браузерах я не знаю.

Read the rest of this entry »

Tags: , , ,

Интервью с Антоном Весниным о компании Locum и хостинговых решениях для платформы Ruby on Rails

декабря 3, 2011  |  Published in Интервью  |  4 Comments

Сегодня в виртуальной студии RubyDev пройдет уникальное интервью. Уникальное оно потому, что мы будем говорить не о самой разработке, но о размещении проектов в интернете и о бизнесе построеном на предоставлении хостинговых услуг. Расскажет нам обо всем этом наш гость — Антон Веснин, который будет представлять компанию Locum и расскажет, почему хороший хостинг для Rails проектов не обзательно должен быть заграничным.

Добрый день, Антон. Представся пожалуйста, читателям RubyDev и расскажи немного о себе.

Меня зовут Антон Веснин. На данный момент являюсь техническим директором проекта Locum Hosting House. Помимо основной деятельности занимаюсь велоспортом.

Расскажи пожалуйста, что за компания такая Locum и какого рода услуги предоставляет?

Мы на рынке уже несколько лет. Началось все с того, что мы видели явный вакуум на рынке хостинга для современных технологий. Таких как ruby on rails или, например, django. Несмотря на то, что рынок услуг хостинга был и остается переполненным, обычно речь идет о стандартном PHP+MYSQL, чего достаточно далеко не всем.
На данный момент предоставляем услуги как хостинга, так  виртуальных выделенных серверов (VDS) и регистрации доменов. Для некоторых клиентов мы так же оказываем консалтинговые услуги в вопросах разработки на Ruby On Rails. Это позволяет делать нам огромный опыт работы с совершенно разными проектами в этой области. Не редко бывает так, что вначале у нас размещается какой-то стартап, а после вырастает и переезжает на выделенный сервер, предложенной нами конфигурации. Read the rest of this entry »

Почему я люблю и ненавижу JavaScript

ноября 29, 2011  |  Published in ClientSide, JavaScript  |  12 Comments

JavaScript — это действительно замечательный и крайне необходимый язык программировани, и в нем есть много хорошего и много плохого. В комментариях к одному посту на RubyDev я несколько повздорил с одним из читателей, он говорил, что JavaScript — это будущее, а я что JavaScript — это страшно, в общем каждый спорил о своем, но вместе как-то веселей. В этой статье я хочу рассказать о своем отношении к JavaScript, о том, что мне нравится, что мне не нравится и почему стоит изучать JavaScript. Эта статья философская и предназначена только для тех людей, которых интересует мое мнение или вообще мнение других веб разработчиков по поводу JavaScript.

1. Мне очень не нравится зависимость JavaScript от окружения. Это не есть недостатком самого языка, но есть большим недостатком технологии. Вместо того, чтобы писать код, программист вынужден бороздить просторы интернета в поисках документации о различиях браузеров и решении возникающих из этого проблем. Часто разработчики пишут код под какой-то один браузер (javascript движок), например под FireFox, а затем тестируют и допиливают его для работы в остальных браузерах. К счастью имеюттся различные фреймворки вроде jQuery, которые решают многие проблемы с кроссбраузерностью.
Read the rest of this entry »