Представляем вашему вниманию второй выпуск стенгазеты Вечерний Анахорет™

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

AdvancedClaim

Павел Митин в проекте AdvancedClaim последние пару недель с большим интересом смотрит на ZeroMQ/0MQ - это вторая и правильная попытка разработать систему обмена сообщений от создателей AMQP.

Достоинства данной библиотеки:

  • легковесное
  • вполне зрелое (v 2.1)
  • легко инсталлируемое
  • с замечательной документацией

Инсталляция и использование довольно просты. Ознакомится с ней Паша реккомендует начинать из этих ссылок:

TurbineHQ

Поздравляем ребят с очередным релизом TurbineHQ. Гвоздем программы последнего обновления стала мобильная версия приложения. За последнее время ребята познакомились с замечательными особенностями различных мобильных платформ, а именно мобильных браузеров.

Алексей Осипенко ознакомился с массой различных CSS-фреймворков для верстки в том числе и под мобильные браузеры. Самыми-самыми css-библиотеками ребята считают библиотеки 1140px и Boilerplate. Библиотека Boilerplate не предоставляет (в отличие от 1140px) готовые решения для лайаута страницы, а только лишь определяет стили по-умолчанию для стандартных html-элементов и определяет базовые css-классы. Зато эта библиотека вдохновила Алексея к написанию css-фреймворка liqueur.

Buyfolio

Команда байфолианцев решила задачу межсайтингового скриптинга. Им необходимо было внедряться на чужие сайты (как это делает фейсбук, например). В двух словах, для тех, кто не в курсе: современные браузеры не позволяют javascript-коду выполнить AJAX-запрос на другой домен из-за соображений безопасности. Сергей Ищенко с радостью поделится знаниями о межсайтинговых общениях и о мультидоменных приложениях.

Tracker

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

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

Не используйте в качестве логина вашу электропочту - почтовый ящик был изменен, дабы вы не получали писем тестовой версии. И, возможно, у вас найдется лишних пять минут на оформление бага или недочета, который вы найдете. Баги пишите на рабочий трекер, в проект "Tracker", с пометками "bugs" и "XP" - ребятам будет легче фильтровать и исправлять ошибки.

Getsocio

Разговор с Сергеем Петровичем

  • Привет. Есть минута?
  • Салют. Канешна, дарагой.
  • Расскажи мне, пожалуйста, о каких-либо технологиях или решениях проблем, с которыми на твое мнение было бы интересно поделиться. Чтобы ограничить список вашего долгоживущего проекта, давай возьмем три последние недели.
  • Аааа...
  • Дык ничего интересного — банальная ебля. Лучше Игоря спроси.
  • Ок. Хорошо.

Разговор с Игорем Афоновым

  • Привет, Игорь. Есть минута?
  • Да
  • Расскажи мне, пожалуйста, о каких-либо технологиях или решениях проблем, с которыми на твое мнение было бы интересно поделиться. Чтобы ограничить список вашего долгоживущего проекта, давай возьмем три последние недели. Если тебе удобно, можно голосом
  • Особо интересного ничего вроде и нет - хуярим потихоньку

Вовремя записанное

"В этому году мы с Татьяной Куценко уже сделали огромный вклад в Open Source. Мы довели вдрызг пьяного Джона Лейтона по ночному, полному футбольных болельщиков, незнакомому городу домой целым."

Павел Митин


"Транзакция есть, смысла – нет"

Сергей Петрович


"Работая программистом - понимаешь как много можно сделать за одну секунду и как мало за всю жизнь."

Дмитрий Кириенко


"Любой дурак может написать код, который компьютер может понять. Хорошие программисты пишут код, который могут понять люди."

Мартин Фаулер

Субботний кофе

19 ноября, по уже сложившейся традиции собираться каждую третью субботу месяца, прошла очередная встреча донецкого сообщества Coffee-n-Code. "Место встречи изменить нельзя" - гласит цитата из известного всем фильма и поэтому снова нас приняла в своих стенах "Изба-читальня". В программе встречи заранее был объявлен один большой доклад Игоря Афонова об его опыте использования Chef и небольшие вопросы для обсуждения. Встреча собрала около 15 человек, среди было много текущих и бывших сотрудников Анахорета.

Стоит отметить, что это была первая встреча уже с собственным оборудованием сообщества - на коллективные деньги были куплены проектор и экран. Проверка оборудования прошла успешно :) Кто не успел сделать этого раньше - досдавали деньги Александру Михальчуку на встрече. Думаю, что Сашу стоит поблагодарить отдельно - за проявленную инициативу и большой вклад в развитие cnc.dn.ua.

Доклад Игоря Афонова о фреймворке Chef, который предназначен для автоматизации задач управления инфраструктурой серверов, на которых работает ваше приложение, был с большим интересом воспринят собравшимися. Игорь последовательно провел слушателей от вопроса "Зачем это нам нужно?" к ответу на вопрос "Как это сделать?". Рассказал о проблемах, с которыми ему пришлось столкнуться при освоении этого иснтрумента, об опыте реального использования в проекте getsocio, о положительных результатах, достигнутых при использовании этого фрейворка. Было озвучено много вопросов из зала, рассказов о своем опыте и своих проблемах. В конце Игорь был награжден заслуженными аплодисментами собравшихся. И к тому же, на своей скромной страничке выложил слайды презентации в формате pdf.

После небольшого перекура встреча была продолжена обсуждением вопроса Владимира Сурова об тестировании связки из web-сервиса и Flash-приложения. Вопрос достаточно интересный, однако обсуждение показало, что разработчиками web-сервиса были изначально допущены ошибки в архитектуре и это привело к повышенной сложности для тестирования. Вова рассказал о примененной им методике, проблемах при тестировании Flash-приложений в debug-режиме. Собравшиеся высказали несколько полезных идей для применения на практике, как с точки зрения архитектуры web-сервиса, так и с точки зрения тестирования Flash-приложения.

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

Военное орудие в мирных целях

Дмитрий Кириенко предлагает всем желающим использовать набор скриптов для стандартных административных задач в development окружении rails-приложения. Начиная с прошлой недели скрипт выделен в отдельный гем scv. Скрипты написаны не в привычном rake, а в набирающем силу и популярность thor. Дмитрий аргументирует это более удобным и простым конфигурированием тор-скриптов. Конфигурация rake задач через параметры - такая боль, что большинство разработчиков предпочитают о ней не знать и конфигурировать запуск через переменные окружения. Это несколько ограничивает повторное использование rake-задач. В то же время, параметры для запуска thor-скриптов указать просто и удобно:

method_option :migrate, :type => :boolean, :default => false, :aliases => '-m'

Один из паттернов, абстрагированных в библиотеке scv - это автоматизация копирования в рабочую директорию необходимых файлов, которые не должны быть под контролем версий. Это так называемый паттерн "local config". Примером могут служить 'database.yml' или 'development.rb', которые могут быть различны у разных разработчиков и на разных серверах. В планах автора — поддержать абстракцию local config в сборнике рецептов soprano.

Второй предлагаемый паттерн - test data. При частом пересоздании базы данных, т.е. при нормальной работе, возникает желание иметь отдельный скрипт для заполнения базы тестовыми данными. Скорее всего, в вашем проекте такой скрипт уже есть — Дима предлагает формализовать этот паттерн, зафиксировав точку входа в код, вставляющий тестовые данные. По аналогии с 'db/seeds.rb' этой точкой в scv является файл 'db/populate.rb'. Команда 'scv populate' очистит базу данных без её пересоздания и выполнит файл "db/populate.rb"

Дмитрий будет весьма признателен, если вы поделитесь с ним вашими скриптовыми решениями повседневных задач. Это позволит расширить его библиотеку для общего пользования.

Первая дроид-ласточка

Дмитрий Стропалов поделился с миром оупенсорса своими наработками в программировании под Андроид™ систему.

Достаточно часто для уведомления пользователя о том, что приложение выполняет некие фоновые операции, применяются анимированные индикаторы, выполненные в виде gif-анимации. Android SDK не содержит встроенных средств для воспроизведения таких изображений. Вместо этого, анимацию предлагается собрать из отдельных кадров (frames), описав их последовательность в конфигурационном файле, что, конечно же, не очень удобно. Особенно, учитывая тот факт, что в данном случае из-за ограничений платформы невозможно использование иерархической структуры каталогов. AniDroid позволяет решить эти проблемы и буквально в две строки кода создать готовую анимацию, просто указав путь к ресурсному каталогу, содержащему последовательность кадров. Единственное требование - наличие индекса в имени файла, содержащего кадр, для определения порядка воспроизведения.

Ну, а для Дмитрия это первый опыт размещения проекта на GutHub. И, несмотря на совсем небольшой размер проекта, автор постарался сделать все по правилам оупенсорса - наличие краткой документации/README, примера использования, тестов.

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

Который час, не подскажете?

Алексей Левжинский по всей видимости использует гитхабовский gist, как долгоживущий буфер обмена. На этот раз Алексей запомнил синтаксис, который используется в руби для форматирования дат.

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

Будь осторожен, Алексей! В различных версиях руби разный синтаксис.

Размешать, но не взбалтывать

Алексей Осипенко начал разрабатывать собственный css-фреймворк с блекджеком. Его киллер-фича — максимальное удобство в использовании с 3.1 рельсами. Пока реализовано достаточно немного: только лишь стили по-умолчанию для стандартных html-тегов и правильная реализация '.clearfix' класса.

Библиотека на данный момент универсальна и мала. Ее можно подключить в практически любой существующий проект на последних рельсах без вреда последнему.

Ваши предложения и пожелания автор бибилиотеки будет рад услышать в разделе 'issues'.

Крестный отец Капистрано

Библиотека Дмитрия Кириенко 'Сопрано' обновилась до версии 0.4. В новой версии была исправлено несколько мелких недочетов.

На данный момент все еще остаются открытыми три проблемы этой библиотеки:

  • #1 о резервном копировании не только базы данных, но и статических загруженных файлов
  • #2 о инсталляции и обновлении конфигурации веб-сервера для работы с текущим приложением

И совсем недавно Дмитрий закрыл issue #3 в котором говорится о специальной команде, позволяющей выполнить руби код на удаленном сервере по принципу команды 'rails runner'. Выполнение разовых задач на удаленном сервере стало намного проще и приятнее.

Помочь проекту можно, поделишись своими капистрано-рецептами, оформив их как пулл-реквест или как проблему, а также просто приняв участие в дисскуссии.

Мы все такие красивые

Фотографии для нашего будущего сайта практически собраны. Оля все еще работает над интеграцией полученного материала в страничку "О нас", ну а пока мы сделали небольшой коллаж из полученных фотографий. Никто себя не забыл? Если забыли — пишите Оле.

рубрика

Переходим на 3.1

Asset Pipeline — фреймворк для сборки и сжатия JS и CSS, который представляет собой один из основных аргументов неоспоримой крутости версии 3.1 рельсов. Он добавляет возможность "из коробки" писать их на других языках, таких как CoffeScript, SASS и ERB.

Основная функция этой библиотеки — объединение всеx подключаемых файлов (assets) в один, что ускоряет загрузку страницы браузером.

Вторая по списку, но отнюдь не менее важная, функция библиотеки - возможность минимизации и сжатия полученных файлов. С таблицами стилей все просто - удаляет лишние пробелы и переноса строк. Для JS логика сжатия более продвинута. Вы можете выбрать любой компрессор джаваскрипта из существующих (uglifier, closure-compiler, therubyracer или yui-compressor) или создать свой собственный.

Использовать библиотеку достаточно просто. В прежних версиях Rails, скрипты и стили приложения хранились в поддиректориях public — javascripts, stylesheets, images. Теперь предпочтительнеe хранить их в app/assets, и все эти файлы будут обслужены Sprockets. Кроме того, assets можно в разных директориях: app/assets, lib/assets или vendor/assets.

  • app/assets — для файлов вашего приложения
  • lib/assets — для ваших собственных библиотек
  • vendor/assets — для файлов стороннего происхождения, например jQuery-плагина

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

Теперь в Rails встроен rake task assets:precompile для предварительной сборки файлов. Это поможет заранее собрать/скомпилировать их и уменьшить нагрузку на высоко-посещаемых сайтах.

При деплое с капистрано нужно раскомментировать строку load 'deploy/assets' в Capfile и настроить http-сервер на статическое обслуживание public/assets (пример конфига).

Напоследок стоит заметить, что при переходе на 3.1 рельсы вовсе не обязательно использовать Asset Pipeline. Можно продолжать использовать свой любимый jammit или вообще жить без всех этих премудростей. Достаточно лишь отключить включенный по-умолчанию параметр в настройках:

config.assets.enabled=false

Достаточно плотно с переходом на Asset Pipeline поработали Дмитрий Кириенко и Алексей Осипенко. Им можно задать вопросы, если такие возникнут.

Спасибы

Огромное спасибо редакция выражает контрибьюторам этого выпуска стенгазеты: Дмитрию Кириенко, Алексею Деркачу. Также большое спасибо всем разработчикам, которые предоставили информацию о работе над коммерческими проектами (Павел Митин, Сергей Ищенко)

Комментарии

Конечно же, обсудить и сказать не сказанное можно на отдельной странице комментариев к этому выпуску.