Несколько возможностей метапрограммирования в Ruby на примере ORM «для бедных»

Автор: admin от 25-06-2014, 02:55, посмотрело: 1759

Введение


Продолжаем тему. В данной статье задействуем несколько приемов метапрограммирования. Для наглядности напишем простую версию ORM (наподобие ActiveRecord).
Уверен, опытные разработчики Ruby не раз встречали различные приемы метапрограммирования изучая исходники gem'ов или стандартной библиотеки Ruby. ActiveRecord бесспорно использует все возможности Ruby, превращая использование сложного ORM в простой и удобный процесс.

В нашем примере реализуем простой базовый класс для всех «моделей» — очень упрощенный аналог ActiveRecord::Base, который будет предоставлять следующие возможности:
1) Новая модель добавляется наследованием от базового класса
2) Таблица именуются в базе по имени класса модели, к примеру: class Pet -> table pet; class Person -> table person (для упрощения)
3) Вставка/сохранение объекта в базе данных
4) Возможность поиска объекта по id и выборка всех объектов
5) Модель имеет атрибуты, соответствующие колонкам в таблице, а так же access-методы для данных атрибутов (для упрощения поддержка строковых и числовых значений)
6) Модель работает напрямую с адаптером mysql

Категория: Программирование » Веб-разработка

 

Myo — официальный релиз в сентябре

Автор: admin от 24-06-2014, 17:35, посмотрело: 320

После нескольких лет работы браслет Myo, который позволит почувствовать себя настоящим джедаем или героем Тома Круза из кинофильма «Особое мнение», готовится к официальному релизу уже в сентябре этого года.

Myo — официальный релиз в сентябре

Категория: Программирование » Веб-разработка

 

В Firefox Nightly появилась встроенная IDE для веб-разработки

Автор: admin от 23-06-2014, 18:25, посмотрело: 384

В ночной сборке браузера Firefox появился новый инструмент разработчика — встроенная в браузер IDE на основе свободного текстового редактора CodeMirror и анализатора кода Tern, который отвечает за автодополнение, поиск определения функций, автоматический рефакторинг и т.п. WebIDE интегрирована со всеми остальными инструментами разработчика и поддерживает отладку приложений на удалённых устройствах или симуляторах на базе протокола Firefox Remote Debugging Protocol. Пока что IDE отключена по-умолчанию, для её включения необходимо установить флаг devtools.webide.enabled в about:config. Разработчики записали небольшой скринкаст, знакомящий с основными возможностями WebIDE:

http://habrahabr.ru/post/227309/#habracut

Категория: Программирование » Веб-разработка

 

Дивный новый мир: мобильные операторы, как крупнейшие поставщики рекламных данных

Автор: admin от 23-06-2014, 15:53, посмотрело: 315

Дивный новый мир: мобильные операторы, как крупнейшие поставщики рекламных данных
Информация о клиентах, которая доступна операторам мобильной связи, превосходит по своему объёму и качеству все, что могут получить другие представители ИТ-отрасли. Операторы знают демографию человека, его примерный уровень дохода, место его проживания, особенности использования мобильного интернета и кому он звонит. На данный момент эта информация хранится «внутри» каждой телеком-компании, однако может случиться так, что эти данные станут новым источником прибыли для них — игроки рекламной индустрии готовы платить за них огромные деньги.

Это объясняется тем, что сбор статистики по мобильным пользователям (которых становится все больше — некоторые проводят в сети больше времени через смартфон, нежели через компьютер) затруднен проблемой с cookie-файлами. На десктопных компьютерах интернетом пользуются через браузер, в котором «куки» есть, но в мобильной среде большая часть использования приходится на приложения, которые их не используют. Поэтому рекламодатели крайне заинтересованы в использовании данных мобильных операторов — это позволило бы на порядок увеличить точность и эффективность мобильной рекламы.

Категория: Программирование » Веб-разработка

 

Мифы о конверсии

Автор: admin от 23-06-2014, 14:25, посмотрело: 473

В электронной коммерции конверсия — это отношение целевых действий (в основном, размещение заказа) к общему количеству посетителей на сайте. Чем конверсия выше, тем лучше: больше посетителей становятся покупателями. Вроде бы все просто, однако слишком часто я слышу неправильную интерпретацию конверсии и потому решил высказаться.

Миф 1: конверсия — это мера «юзабилити» — того насколько Ваш сайт или конкретная страница удобны для посетителя. Сайт с конверсией 10% лучше сайта с конверсией 1%, или посадочная страница на вашем сайте с конверсией 10% лучше, чем страница с конверсией 8%, и потому последнюю надо улучшить.

«Юзабилити» вашего сайта, безусловно, влияет на конверсию, однако эффект этот очень слабый и обычно измеряется в нескольких процентах. Намного больший эффект имеет «релевантность» посетителей: по определению, конверсия это отношение посетителей совершивших целевое действие ко всем посетителям. Если вы привлекаете много посетителей, для которых Ваше предложение нерелевантное, то и конверсия будет низкой, и наоборот, если к вам заходят только те, кто о вас хорошо знает и хочет купить именно у вас, то конверсия будет высокая, даже если у вас ужасный сайт. Простой способ проверить мое утверждение – посмотреть конверсии по разным ключевым словам в платном поиске (Яндекс.Директ, Google Adwords). По некоторым словам (обычно самым дорогим) конверсия будет очень высокой, по другим (обычно самым дешевым) конверсия будет очень низкой. В зависимости от того, выбрали ли вы стратегию рекламироваться по дорогим или по дешевым словам в платном поиске, используете ли вы медийную рекламу или партнерки с малорелевантным, но огромным трафиком и в зависимости от того какой процент повторных покупателей на вашем сайте, конверсия будет сильно отличаться. Поэтому бесполезно сравнивать конверсии 2-х разных сайтов даже из одной области, которые наверняка ведут различную маркетинговую политику и имеют разный процент лояльных клиентов. Точно также бесполезно сравнивать конверсию 2-х разных посадочных страниц на вашем сайте, так как аудитория на этих страницах будет различной – в зависимости от того какие рекламные компании приводят на них посетителей и какие у этих посетителей интересы.

Мифы о конверсии
(Изображение 1: визитки онлайн – самая релевантная фраза для сервиса онлайн-заказа визиток)

Категория: Программирование » Веб-разработка

 

Заставьте сайт работать на сенсорных устройствах

Автор: admin от 23-06-2014, 10:25, посмотрело: 1067

Заставьте сайт работать на сенсорных устройствах

Сенсорные экраны на мобильных телефонах, планшетах, ноутбуках и настольных компьютерах открыли веб-разработчикам целый ряд новых взаимодействий. В этом руководстве Патрик Локи рассматривает основы работы с сенсорными событиями в javascript. Все рассматриваемые далее примеры есть в архиве.

Нужно ли нам беспокоиться о касаниях?


С появлением сенсорных устройств основной вопрос от разработчиков: «Что мне нужно сделать, чтобы убедиться, что сайт или приложение на них работает?» Удивительно, но ответ — ничего. Мобильные браузеры по умолчанию справляются с большинством сайтов, которые не разрабатывались для сенсорных устройств. Приложения не только нормально работают со статичными страницами, но еще и обрабатывают интерактивные сайты с javascript, где сценарии связаны с событиями вроде наведения курсора.

Категория: Программирование » Веб-разработка

 

Исчерпывающее руководство по составлению почтовых рассылок

Автор: admin от 23-06-2014, 09:25, посмотрело: 1436

Исчерпывающее руководство по составлению почтовых рассылок

Не смотря на то, что большая часть общения онлайн перешла в социальные сети, почтовые рассылки по-прежнему остаются важной частью любой маркетинговой кампании.

Категория: Программирование » Веб-разработка

 

Повышение конверсии сайта: Как использовать когнитивные убеждения

Автор: admin от 23-06-2014, 09:25, посмотрело: 325

Друзья, хотим с Вами поделиться адаптированным переводом статьи Тима Эша в интернет-журнале Clickz.com про действенные, но мало распространенные способы повышения конверсии, позволяющие использовать особенности человеческого мышления для повышения конверсии. Перевод дополнен примерами и советами от команды Witget.

Повышение конверсии сайта: Как использовать когнитивные убеждения

Категория: Программирование » Веб-разработка

 

Метапрограммирование в Ruby: attr_accessor

Автор: admin от 23-06-2014, 08:25, посмотрело: 869

Введение


Метапрограммирование – модное веяние в сфере разработки ПО, набирающее популярность в современных высокоуровневых языках программирования. Формально, мета-программирование – это набор практических приемов, которые позволяют частично генерировать код программы в run-time при помощи более простого кода.

Основу мета-программирования составляет интроспекция, это – возможность работать с внутренней структурой кода, как с переменными встроенных типов (просматривать, изменять, дополнять определение типов во время выполнения программы, динамически определять переменные и работать с ними и т.д.

Категория: Программирование » Веб-разработка

 

Exponential Backoff или как «не завалить сервер»

Автор: admin от 23-06-2014, 08:25, посмотрело: 336

При любом взаимодействии клиента и сервера мы сталкиваемся с необходимостью повторять запросы. Сетевое соединение может быть ненадежно, могут быть проблемы на сервере или любые другие причины, из-за которых необходимо повторить запрос. То же самое касается и взаимодействия backend-сервера с базой данных или любым другим хранилищем данных (другим сервисом).

Мы сегодня поговорим об интервале повторов запроса. Через какой период времени после неудачного запроса можно его повторить? Давайте рассмотрим две стратегии: повтор через фиксированный интервал времени и экспоненциальное откладывание (exponential backoff). Мы увидим на симуляции, что при условии наличия большого числа клиентов повтор через фиксированный интервал может не дать серверу «подняться», а использование exponential backoff позволяет избежать этой проблемы.

Вопрос интервала повторов становится важным при проблемах на сервере. Очень часто сервер способен выдержать нагрузку от клиентов, которые отправляют запросы в некотором «текущем» режиме, распределяя свои запросы во времени случайным образом. Если на сервере происходит отказ, все клиенты обнаруживают его и начинают повторять запросы через некоторый интервал. Может оказаться, что частота таких запросов превышает тот предел, который сервер может обрабатывать.

Еще одним важным моментом является то, что клиент часто не может отличить проблемы на сервере от проблем с сетевым соединением на стороне клиента: если ответ на запрос не приходит в заданный интервал времени, клиент не может сделать заключение о том, в чем именно проблема. И поведение клиента (повтор запроса, интервал повтора) будут одинаковыми в обоих ситуациях.

Категория: Программирование » Веб-разработка