Программирование на Ruby - Новости

RailsClub 2014

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

RailsClub 2014 состоится 27 сентября, в уютном зале DigitalOctober в Москве

В программе:

Аарон Паттерсон, член Ruby и Rails core team, топ 1 контрибьютор на сегодня, RubyHero 2010. Человек, который определяет развитие языка, и невероятно харизматичный спикер.

Не зря мы расписывали Аарону, как хорошо ему будет в Москве (посмотрите и вы). Тема выступления сейчас уточняется.

Божидар Батсов, CTO Tradeo, автор Rubocop и редактор Ruby и Rails style guides.

The Elements of Style in Ruby

Речь пойдет о том, что же такое стиль, чем хороший стиль отличается от плохого, как придерживаться единого стиля в коде. Как связаны стиль и язык и как эволюционируют стили в коммьюнити Ruby Style Guide.

Джонас Никлас, автор фреймворка для тестирования Capybara и популярных библиотек Pundit, Turnip и CarrierWave. Ruby Hero 2011

Concurrent systems in Ruby

Джонас расскажет, как Ruby меняется к лучшему в аспектах работы с concurrenсу — больным местом многих нагруженных проектов. Он продемонстрирует несколько разных вариантов, включая классический mutex/condition variable combo, Node-style evented IO, Clojure-style compare-and-set и Erlang-style actors. Покажет, как их можно использовать в Ruby и как Ruby дает более широкий выбор по сравнению с другими платформами.

Эрик Майклс-Обер, участник open-sourсe проектов RailsAdmin, Thor и Twitter gem. Ruby Hero 2014 и разработчик в SoundCloud, Берлин.

Writing Fast Ruby

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

Сэнди Метц, автор "Practical Object-Oriented Design in Ruby", обладатель Ruby Hero Award 2013

All the Little Things

Между теорией ООП и практикой лежит большая пропасть. Многие приложения содержат огромные классы из длинных методов и неуклюжих условий. Их сложно понять, неудобно использовать повторно и очень дорого изменять. В этом выступлении Сэнди возьмет уродливый кусок кода, который содержит много условий, и перепишет его так, что получится всего несколько простых объектов. А слушатели познакомятся с понятной стратегией, которую каждый сможет использовать для улучшения своего кода.

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

Русскоязычная программа сейчас в самом разгаре формирования. В течение следующих двух недель мы принимаем заявки от желающих поделиться опытом и выступить на одной сцене с нашими хэдлайнерами.
Кстати, мы решили разнообразить формат и помимо традиционных получасовых докладов предлагаем выступить в серии lightning talks - с пятиминутным техническим докладом, в котором можно поделиться методологической находкой, полезной тулзой или презентовать свой open-source проект. Пишите на elena@evrone.ru

Что кроме докладов:

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

Присоединяйтесь, не пожалеете!
Цена билета до 1 августа — 7500, успевайте купить билет.

Ваша компания пишет на Ruby и ищет уважения и славы среди лучших rails разработчиков? Поддержите проект!

Уже с нами:

Источник: rubyflow.ru

stack_rescue

stack_rescue - интересный гем, который позволяет искать проблему на stackoverflow.com

https://github.com/excid3/stack_rescue

alt text

Источник: rubyflow.ru

Релиз сервиса Teatro — автоматические стейджинги

Зарелизили совершенно новый вид сервиса https://teatro.io/ . Это аналог традиционных сервисов CI для прогона тестов для каждой ветки, только Teatro для каждой ветки создаёт независимый стейдж и таких стейджей может быть запущенно много для одного проекта параллельно. Так же создаётся стейдж для ветки master.

Источник: rubyflow.ru

Релиз faker_russian

Некоторое время назад на RubyFlow я анонсировал библиотеку validates_russian для проверки правильности вводимых специфических русских значений (ИНН, ОКПО, ОКАТО и т.д.)

Для продолжения популяризации ruby среди широких кругов IT-шников и удобства разработки коммерческих проектов я создал gem faker-russian, который генерирует русскоспецифические фэйковые данные (те же ИНН, ОКПО и т.д.). Большая просьба помочь с разработкой дальнейшего функционала библиотеки: не все генераторы ещё написаны. Моё видение их создания находится в CONTRIBUTING.md

Источник: rubyflow.ru

Ansible - как оркестровка для серверов с Ruby on Rails на борту

В этой статье мы поговорим о таком важном процессе, как подготовка сервера для размещения RoR приложения. Скорее всего, каждый веб-разработчик сталкивался с определенными трудностями развертывания среды для своего детища. И несмотря на то, что в арсенале имеется мощный инструмент capistrano, перед его использованием необходимо подготовить только, что проинсталлированную систему. Пусть подготовка и не является трудным процессом, но уж скучным точно. Также немаловажно учесть, что многие проекты могут иметь версионную зависимость определенного софта. Например, postgresql 8.4 или специально собранную версию ffmpeg 1.1.15 c libfaac 1.28. Кроме того, что определенные нюансы могут находится на десятках серверов, тяжело вести учет такого зоопарка.

На сегодняшний день, существует несколько инструментов способных облегчить жизнь системным администраторам. А именно chef, ansible, puppet, salt. Эти продукты активно применяются так называемыми DevOps-инженерами для автоматизации управления конфигурациями. Вообще идея конфигурирования системы в автоматическом или полуавтоматическом режиме, может существенно помочь в борьбе с нарастающей сложностью и надвигающемуся хаосу впринципе.

Как же ansible решает эту проблему?

В основе этого инструмента лежат, так называемые плейбуки – файлы в формате YAML, которые содержат перечень задач, которые необходимо выполнить на целевой системе. Декларативность и простота плейбуков, является одной из сильнейших сторон данного инструмента. Для перечня хостов на которых будут прогонятся плейбуки используется инвертарный файл вида:

[webservers]
адрес хоста1
адрес хоста2
адрес хоста3

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

ansible-playbook -i hosts playbook.yml

playbook.yml – плейбук с набором действий которые необходимо произвести

hosts – инвертарный файл содержащий перечнь хостов.

Для удобного тестирования плейбуков, удобно использовать виртуальные машины, особенно если управлять ими с помощью Vagrant, который в свою очередь имеет возможность использования Ansible в качестве provisioner`а.

Рассмотрим пример плейбука:

---
- hosts: webservers #Указываем группу хостов
  user: vagrant #пользователь под которым ansible будет логиниться
  sudo: yes
  vars_files:
    - vars/defaults.yml #Файл, содержащий переменные которые нам потребуются, например расположения директорий

  roles: # Блок ролей, у нас пока одна роль
    - user

Здесь надо сказать отдельно про роли. В данном случае роль – это выделенная директория с перечнем задач(tasks) и набором шаблонов(templates). Это очень полезный прием, который позволяет разделять настройку на определенные этапы\части. В данном примере есть роль user, ответственная за создание\настройку пользователя.

Пользователь.

Все роли вынесены в отдельную директорию roles. В нашем примере роль user выглядит следующим образом:

roles/user – директория роли

roles/user/tasks – директория задач

roles/user/tasks/main.yml – точка входа в роль, здесь указываются какие файлы включены в роль. Для нас файл будет следующим:

- include: user.yml tags=user

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

roles/user/tasks/user.yml – файл содержащий перечень задач, выполняемых в рамках нашей роли.

roles/user/templates – директория содержащая конфигурационные файлы, сертификаты. Возможно использование шаблонизатора jinja2.

Рассмотри файл user.yml, так как именно он содержит непосредственные задания для выполнения:

---

  - name: create deploy user
    user: name=deploy comment="deploy user" generate_ssh_key=yes ssh_key_bits=2048 state=present password={{ password }} shell=/bin/bash

  - name: copy my ssh key to the user's .ssh directory
    action: template src=my_current_machine.pub dest={{home_dir}}/.ssh/authorized_keys mode=0700 owner={{deploy}} group={{deploy}}

  - name: copy known hosts to deploy user
    action: template src=known_hosts dest={{home_dir}}/.ssh/known_hosts owner={{deploy}} group={{deploy}}

  - name: copy deploy private key to VM
    action: template src=deploy_rsa dest={{home_dir}}/.ssh/deploy_rsa owner={{deploy}} group={{deploy}}

  - name: copy deploy public key to VM
    action: template src=deploy_rsa.pub dest={{home_dir}}/.ssh/deploy_rsa.pub owner={{deploy}} group={{deploy}} mode=0644

  - name: copy ssh_config github
    action: template src=ssh_config dest={{home_dir}}/.ssh/config owner={{deploy}} group={{deploy}}

  - name: copy sudoers
    action: template src=sudoers dest=/etc/sudoers

Теперь по-порядку:

1). Создаем пользователя и назначаем ему пароль. Единственное, что нужно, так это описать переменную password в vars/defaults.yml. Значением этой переменной будет не сам пароль а лишь хеш, который легко создать с помощью команды:

python -c 'import crypt; print crypt.crypt("This is my Password", "$1$SomeSalt$")'

2). Копируем публичный ключ машины(здесь в зависимости от Ваших нужд) откуда запускаем наш плейбук в authorized_keys – это позволит нам заходить на целевую машину без пароля. переменная home_dir должна быть описана в vars/defaults.yml.

3). Копируем файл known_hosts который заранее содержит записи-“отпечатки” например гитхаба или битбакета.

4). Копируем ключи для нашего пользователя, чтобы он мог работать с гитхабом

5). Копируем ssh_config, опять же для работы с гитхабом с содержимым:

Hostname github.com
  IdentityFile /home/deploy/.ssh/deploy_rsa
  StrictHostKeyChecking no

6). Разрешаем sudo для нашего пользователя копированием файла sudoers где фигурирует строка:

deploy    ALL=(ALL:ALL) ALL

Проделанные шаги подготовят нашего пользователя для дальнейшей работы.
Дальнейшая настройка веб-сервера и базы данных на странице:
http://blog.rubyruby.ru/blog/2014/07/01/ansible_as_orchestration_for_ruby_on_rails/

Источник: rubyflow.ru

Невероятный Chef: настройка сервера и деплой приложения в один клик

В этой статье рассматривается необычный способ деплоить веб-приложения на Ruby on Rails: при помощи системы управления конфигурациями Chef. Пошаговое руководство, от установки и настройки Chef до деплоя полноценного Rails приложения на Digital Ocean в один клик.

Источник: rubyflow.ru

Пресс-релиз: Итоги Svitla Ruby Conference 2014

alt text

31 мая – 1 июня 2014 года прошла вторая киевская конференция о Ruby и Ruby on Rails – RubyC. Более 250 рубистов собрались послушать доклады лучших Ruby девелоперов из Украины, США, Бразилии, Испании, Великобритании, Германии и России. Организатор, компания Svitla Systems, выражает признательность всем участникам конференции, генеральному спонсору – компании SoftServe, Ruby-спонсорам: DataArt и Global Logic, а также всем медиа-партнерам, благодаря которым состоялось одно из самых ярких Ruby мероприятий в Украине.

Традиционно видео выступлений всех спикеров RubyC доступны на сайте конференции http://rubyc.eu/posts/14.

Как же проходила конференция RubyC-2014?

В первый день, после короткой регистрации и вкусного утреннего кофе RubyС началась с презентации Джереми Эванса и его доклада "Give-and-Go with PostgreSQL and Sequel". Джереми был одним из немногих, кто презентовался дважды. Слайды его второй презентации доступны на его сайте http://code.jeremyevans.net/

Одним из самых ярких и забавных спикеров однозначно стал британец Бен Ловелл. Его выступление “Building fast, testable and sane APIs with rails” точно стоит просмотреть.

Особенно приятно было увидеть презентации украинских рубистов, большинство которых, тем не менее, прозвучали на английском языке. Марат Каменщиков, представитель Svitla Systems презентовал тему "How we got max speed for JSON processing in a Rails API app", которая вызвала большое количество вопросов у слушателей. Евгений Пирогов и Богдан Гусев представили темы "Communication problems within complex projects: lessons learned from real life" и "How to create parsers in ruby. Rails Router as example".

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

Последний спикер первого дня – Хавьер Рамирес, несмотря на оригинальный испанский акцент, привлек всеобщее внимание. Даже Бен Ловелл отметил его выступление в Twitter. Смотрите видео презентацию на сайте www.rubyc.eu.

В перерывах между выступлениями спикеров и во время кофебрейков было очень весело. Массажисты из компании Relax office помогали расслабить мышцы шеи и взбодриться. Кроме того в распоряжении участников были игры и моментальные конкурсы от партнеров.

Второй день был более насыщен выступлениями иностранных гостей. Открывал Стив Клабник, один из самых известных девелоперов и core-committer’ов Ruby on Rails, частый участник мировых IT конференций. Будьте внимательны, читая презентацию Rust for Rubyists,  а лучше изучайте вместе с видео.

Узкая направленность темы Дэвида Хеннера была интересна не всем, но точно полезна тем, кто работает в направлении Ecommerce. Презентацию "Architecting Ecommerce Huge objects, how and when to refactor" почитать можно на SlideShare.

Спикер, приезда которого ожидали с особым нетерпением – Тимофей Цветков (Россия). Но все опасения были напрасны, Тимофей приехал и подарил один из самых увлекательных топиков в этом году. Его презентация доступна по ссылке http://www.slideshare.net/2kan/gc-in-ruby-rubyc-kiev-2014

Также хочется отметить Александра Оливера (Бразилия), впервые посетившему Украину, надеемся не в последний раз, и более опытного  Константина Теннхарда (Германия), которому выпала честь закрывать конференцию. Оба спикера были окружены вопросами к докладам даже во время вечеринки в боулинг клубе "Большевик". Закрытие продолжалось два часа, но казалось, промелькнуло за пару минут.

Благодарим всех за участие и поддержку. Увидимся в следующем году!

Источник: rubyflow.ru

ActiveStoreAccessor

С выходом Rails 3.2 ActiveRecord получил замечательную функциональность в виде ActiveRecord::Store. В Rails 4.0 была также добавлена поддержка hstore. Однако даже на данный момент(Rails 4.1.1) любой сериализированный атрибут хранит только string значение. С active_store_accessor появляется возможность задать сериализированный атрибут как число, дату или булевое значение.

Источник: rubyflow.ru

Обзор значимых изменений в RSpec 3

Выход RSpec 3 уже совсем близко :) На данный момент доступен первый релиз-кандидат (RSpec 3.0.0 RC1).

Проделана огроная работа и третья версия несет большое количество изменений и нововведений. Узнать о самых значительных из них можно в статье "Notable Changes in RSpec 3".

Источник: rubyflow.ru

7 продвинутых возможностей Rake

Авди Гримм (Avdi Grimm) делится советами использования возможностей Rake:

Источник: rubyflow.ru

Вложенные слои в Rails

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

Источник: rubyflow.ru

DevConf 2014

14 июня в Москве состоится конференция для профессиональных разработчиков DevConf 2014, состоящая из секций: Python, Ruby, PHP, Mobi, Javascript и общей секции.

Новинка этого года - отдельная секция Storage - где организаторы собрали авторов PostgreSQL, MySQL, Percona, Sphinx, Tarantool. Кроме этого всех участников познакомят с новой БД - Neo4J!

15 июня пройдут эксклюзивные мастер-классы:

  • [Highload] Разработка крупного масштабируемого web 2.0 проекта с нуля (соц.сеть на 100 млн пользователей), Дмитрий Бородин - программист и архитектор ПО.
  • Sphinx Search - для профи, Андрей Аксенов, автор Sphinx
  • Демонстрация Laravel в реализации платежного сервиса, Новиков Михаил CTO в FINTECH_FAB
  • Полный список мастер-классов

Организаторы конференции - сообщества разработчиков http://phpclub.ru,, http://railsclub.ru, http://python.su, http://moscowjs.ru, http://moscowdjango.ru

Партнеры конференции: IT-soft, журнал Хакер, TVM.ru

Инфопартнеры: Linux.org.ru, Python.SU, OpenNet.ru, PHP.ru, PHP.Net, Python developers (VK), SemSocial.ru, Apps4All.ru, RubyJobs.ru, RubyFlow.ru, Tokarchuk.ru.

На доклады DevConf 2014 - поданы более 35 заявок, сейчас проходит активное голосование. Какие доклады останутся в программе - решать Вам!

Секция Ruby

  • От ruby к clojure
  • Отладка Ruby приложений
  • Нужна ли CMS на рельсах?

Секция Storage:

  • Schema-less PostgreSQL
  • Скажите, граф... Или об использовании NeoJ4 в веб-проекте
  • Оптимизация производительности большой унаследованной PostgreSQL базы
  • Круто как в гугле. Поисковые сервисы на основе Sphinx
  • Проблемы использования MySQL на современном оборудовании (Percona)
  • Инфраструктура для MySQL. Облака против ржавых серверов.
  • NoSQL атакует: JSON функции в MySQL сервере
  • Tarantool 1.6 Primer

Секция Common

  • Разработка RESTful API with all bells and whistles (Яндекс-Диск)
  • Go: аналитика Рунета в реальном времени
  • Биллинг в большом международном проекте (Badoo)
  • StatsCollector, или "Мама! Он и меня посчитал!" (Badoo)
  • В стиле IP. Распределенная команда в период революций.
  • Страх и ненависть в платежных системах
  • Формирование инженерной культуры
  • The Big Social Bang Theory: Социализируй это!
  • Scratch: учим своих детей программировать

Источник: rubyflow.ru

Faraday middlewares для работы с UTF

Написал две middlewares для гема Faraday. Позволяют нормализовать приходящий UTF и удалить в нём все невалидные символы.

Источник: rubyflow.ru

RubyC-2014 представляет эксклюзивное интервью со Стивом Клабником

До конференции RubyC осталось чуть больше месяца. Организаторы напоминают, что продажа билетов Early Birds скоро заканчивается и продолжают знакомить участников со спикерами RubyC. На очереди Стив Клабник (Steve Klabnik), личность очень известная благодаря его активному участию в жизни мирового Ruby сообщества. В рейтинге rubyscore.com Стиву присвоен статус Almighty developer, а еще он RubyHero 2011 года, не говоря уже о том, что на Github у Стива более полутора тысяч фолловеров и он участвует в большинстве IT конференций по всему миру. На RubyC Стив презентует тему Rust for Rubyists.

1. Какие «инструменты» используешь в своей практике? (ОС, текстовый редактор,и т.д.)

Использую #! Linux, чаще Arch Linux, попробовал #! чтобы не тратить время. Также использую мозаичное размещение окон, обычно XMonad, но #! идет в одном пакете с OpenBox, и он мне тоже вполне подходит. Около 80% своего времени провожу в Firefox и xterm. Внутри xterm, использую bash, vim, git, и irssi.

Около 10% времени провожу в Thunderbird, для переписки. Процентов 8% времени уходит на инструменты защиты личных данных, например Tor и GPG, и 1% для всякие разности. Иногда когда нужно поправить изображение и открыть GIMP или нужно открыть какой-то документ с помощью LibreOffice. Для быстрых сообщений - Pidgin. Презентации пишу в Reveal.js или в "rabbit". На iPhone стоит iMessage и Twitter app. На iPad - Duolingo и игра ReRave. Также начал использовать Chromebook Pixe для ежедневной работы.

2. Ты уделяешь много времени обучению людей. Каковы твои личные причины?

Обучение других это стратегически верный способ позитивно влиять на мир. Я могу работать только 24 часа в сутки, но если я обучу двух людей они могут работать параллельно, то есть 48 часов вместо моих 24. Хотя, как известно, бывает сложно согласовать действия ;)

3. Назови проект, которым Ты гордишься?

Больше всего горжусь request_store: это крохотная библиотека, написанная за одну бессонную ночь, которая стала моей самой популярной.

4. Какой стартап, написанный на RoR, тебя больше всего впечатлил? Возможно, ты лично принимал участие в разработке?

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

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

Думаю, что Rails должен более плотно интегрировать JavaScript и перестать пытаться его уничтожить. Последние несколько лет на конференциях по Rails мои записи касались именно JavaScript, даже не Ruby. Мы пытаемся игнорировать JavaScript, но это часть современного программирования.

6. Использовал ли ты принципы Hypermedia API в проектах? Приведи несколько примеров.

Да, использую. На работе мы используем hypermedia с JSON API чтобы усилить наше API. Можете посмотреть:

# curl <a href=\"https://api.balancedpayments.com/cards/CC5cX8TtoEgQ7nY3a8pj5D7f/debits\">https://api.balancedpayments.com/cards/CC5cX8TtoEgQ7nY3a8pj5D7f/debits</a> \
# -H "Accept: application/vnd.api+json;revision=1.1" \
# -u ak-test-2qEM0Znvd8LIVbZ01LbFHvHgab4fkNr3c: \
# -d "appears_on_statement_as=Statement text" \
# -d "amount=5000" \
# -d "description=Some descriptive text for the debit in the dashboard"

{
  "debits": [
    {
      "status": "succeeded",
      "description": "Some descriptive text for the debit in the dashboard",
      "links": {
        "customer": "CU4K1Vmh90f3OqCXn3A7Gu3P",
        "source": "CC5cX8TtoEgQ7nY3a8pj5D7f",
        "order": null,
        "dispute": null
      },
      "updated_at": "2014-04-29T14:37:00.570615Z",
      "created_at": "2014-04-29T14:36:59.834991Z",
      "transaction_number": "W403-223-1027",
      "failure_reason": null,
      "currency": "USD",
      "amount": 5000,
      "failure_reason_code": null,
      "meta": {},
      "href": "/debits/WD5CKf2TAOxl4SD6rRUcxVnH",
      "appears_on_statement_as": "BAL*Statement text",
      "id": "WD5CKf2TAOxl4SD6rRUcxVnH"
    }
  ],
  "links": {
    "debits.customer": "/customers/{debits.customer}",
    "debits.dispute": "/disputes/{debits.dispute}",
    "debits.source": "/resources/{debits.source}",
    "debits.order": "/orders/{debits.order}",
    "debits.refunds": "/debits/{debits.id}/refunds",
    "debits.events": "/debits/{debits.id}/events"
  }
}

7. Ты часто упоминаешь об ответственности, проверки кода и программирования для развлечения. Как часто ты тестируешь свои проекты, какие методы используешь?

Я стараюсь постоянно писать тесты, но все равно мой код не идеален. Чаще использую MiniTest, так как он включен в Ruby.

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

Ха! Я не уверен, поскольку популярность это довольно непостоянная вещь. Я веду много блогов и стараюсь помогать другим. Вот и все.

9. Известно, что большинство успешных разработчиков начинали программировать с детства (до 10 лет). Какой язык программирования ты бы посоветовал для обучения детей?

Я думаю, что Ruby что отличный язык, для начинающих, он очень гибок. Питон также имеет много материала, для начинающих. Для детей, думаю, отлично подойдет Scratch.

10. Ты как-то рекомендовал программистам читать книги по философии. Что еще, может, посоветуешь?

Смысл не в самой философии, хотя определенно она помогает, поскольку в ней находишь фундаментальные понятия. Идея в том чтобы «красть» любые идеи из других областей, которые могут быть реализованы в программировании. Я бы хотел узнать, как философия может помочь программированию, или как принципы строительства мостов могут улучшить управление проектами, как японский может помочь понять синтаксический анализ, список продолжается до бесконечности. Не нужно все время читать о программировании.

Спасибо до встречи на RubyC!

Партнеры конференции в этом году

  • Портал www.rabota.ua является ведущим профессиональным порталом Украины, услугами которого пользуется абсолютное большинство национальных и международных компаний.
  • RubyNoName подкаст — русскоязычный подкаст о языке Ruby и всем, что с ним связано, будь то веб-фреймворк Rails, Sinatra, очереди сообщений, базы данных или даже системы управления конфигурацией Chef или Puppet.
  • Ассоциация «Информационные технологии Украины», основана ведущими IT компаниями с целью консолидации усилий по продвижению на внешних рынках конкурентоспособной продукции украинских компаний.
  • Портал Education Ukraine – новый проект ассоциации «Информационные технологии Украины», созданный для объединения усилий участников рынка с целью развития IT образования и подготовки специалистов высокого класса.
  • Code School обучает веб технологиям с удобствами, все вам понадобится это браузер для просмотра видео-уроков.

Организатор RubyC — Svitla Systems Inc., американская аутсорсинговая компания, которая занимается разработкой приложений на Ruby, .NET, PHP, Java, Magento, Flash, а также мобильных приложений.

Источник: rubyflow.ru

RubyC-2014 представляет эксклюзивное интервью с Джереми Эвансом

В преддверии RubyC, которая состоится в Киеве 31 мая - 1 июня 2014 года, организаторы предлагают поближе познакомиться со спикерами конференции.

Ниже первое интервью — с Джереми Эвансом (Jeremy Evans) — ведущим разработчиком калифорнийского государственного аудиторского бюро (California Bureau of State Audits). Подробнее о его теме Deep Dive into Eager Loading Limited Associations можно узнать на сайте http://rubyc.eu/#speakers, а о самом Джереми - из его ответов.

1. Какой инструментарий ты чаще всего используешь в своей работе?

В качестве операционной системы на всем оборудовании я использую OpenBSD. Большинство людей используют OpenBSD из соображений безопасности, и для меня это тоже важно, но приоритетом является легкость в администрировании и стабильная работа. Я использую OpenBSD с 2002 года и полностью перешел на эту ОС в 2008 году. В 2010 стал разработчиком OpenBSD. Сейчас отвечаю за портирование Ruby для OpenBSD, включая JRuby и Rubinius. В качестве текстового редактора я использую Vim. И до сих пор, даже после нескольких лет эксплуатации, я использую только "чистый" Vim (без плагинов). Иногда использую SciTE для более простых задач, где не надо много редактировать. В качестве графической оболочки я использую fluxbox, он простой и удобный, особенно мне нравится, как организованы оконные вкладки и клавиши быстрого доступа.

2. Почему ты уделяешь столько времени обучению людей?

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

3. Каким проектом ты гордишься?

В первую очередь работой над Sequel. Я взялся за проект в Марте 2008, после того как месяц сам им пользовался. Это самый большой проект, которым я занимался. Проблема была в том, что, несмотря на хорошую общую архитектуру Sequel, его реализация оставляла желать лучшего, а документации практически не было. Тем не менее, благодаря хорошему "покрытию" кода тестами, я смог качественно реорганизовать и улучшить код. Мне кажется, мне удалось превратить Sequel из простой библиотеки с быстрым доступом к БД (ORM, object relational mapper) в один из лучших примеров таких библиотек для Ruby. Может, он никогда не станет самым популярным Ruby ORM, поскольку это не базовый ORM для Rails, но он уже заслужил уважение среди многих рубистов.

4. Какой стартап, написанный на RoR, Вас больше всего впечатлил? Возможно, Вы лично принимали участие в разработке?

Сам с такими стартапами не работал, поэтому назову Heroku. Они активно используют Sequel в своих внутренних системах, и к тому же хостят многие мои веб-приложения бесплатно.

5. Как часто ты тестируешь код в своих проектах? Какие инструменты используешь?

Тестирую код всех своих проектов перед каждым коммитом или, в крайнем случае, перед размещением изменений на GitHub. Для Sequel тестирование особенно тщательное, я проверяю около 6 реализаций на ruby, более 10 адаптеров баз данных, более 10 баз данных, общее количество групп тестов (test suites), наверное, добегает до 100. Проверяя саму библиотеку, обычно использую RSpec. Стиль тестирования не меняю с момента появления RSpec 1, и многие мои библиотеки работают на RSpec 1, 2 или 3. Еще использую Travis-CI для Sequel или других проектов. И хотя Travis часто не дает 100% точные результаты, пропуская существующие ошибки, я думаю его использование оптимально в большинстве случаев.

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

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

7. Известно, что большинство успешных разработчиков начинали программировать с детства (до 10 лет). Какой язык программирования ты бы посоветовал для обучения детей?

Я в детстве не очень увлекался программированием (разве что, какое-то базовое графическое программирование, когда мне было около 10 лет), чуть больше - в студенческие годы (C++ and Java), но профессионально программировать начал в 23. Наверное, я был бы лучшим программистом, если бы начал раньше. Я не уверен, что я бы посоветовал своим детям попробовать программирование вообще, если они не проявляют к этому интерес. Тем не менее, если они захотят изучать программирование, я бы посоветовал начать с Ruby или Python.

8. Есть профессиональные советы?

Чтение очень важно, но, как и любое занятие, программирование требует опыта. Я читаю много книг и, конечно, многое из них почерпнул, но больше пользы принесли попытки что-то создать после прочтения. Одного чтения недостаточно.

9. Какие дальнейшие планы после RubyC?

Вернусь к работе с Sequel. Скорее всего, вернусь к изучению новых языков, я давно этим не занимался, последний раз пытался разобраться с Io. В списке - Smalltalk, Nimrod, Elixir и Forth. Обычно я пытаюсь реализовать библиотеку или приложение на новом языке. Приложение должно быть достаточно небольшим для того, чтобы не занять много времени, но достаточно большим для освоения языка.

Спасибо до встречи на RubyC!

Партнеры конференции в этом году

  • Портал www.rabota.ua является ведущим профессиональным порталом Украины, услугами которого пользуется абсолютное большинство национальных и международных компаний.
  • RubyNoName подкаст — русскоязычный подкаст о языке Ruby и всем, что с ним связано, будь то веб-фреймворк Rails, Sinatra, очереди сообщений, базы данных или даже системы управления конфигурацией Chef или Puppet.
  • Ассоциация «Информационные технологии Украины», основана ведущими IT компаниями с целью консолидации усилий по продвижению на внешних рынках конкурентоспособной продукции украинских компаний.
  • Портал Education Ukraine – новый проект ассоциации «Информационные технологии Украины», созданный для объединения усилий участников рынка с целью развития IT образования и подготовки специалистов высокого класса.

RubyC продолжает активно искать партнеров - http://rubyc.eu/#sponsors и спикеров http://rubyc.eu/#speakers. Присоединяйтесь!

Следите за новостями на twitter.com/rubyc_eu и www.facebook.com/RubyC.eu

O конференции RubyC

Впервые RubyC состоялась в 2011 году, став одним из наиболее значимых событий для руби-сообщества того года, поскольку собрало вместе не только высококлассных докладчиков из разных уголков земного шара, но и около 200 посетителей из  Украины, России, Беларуси, Латвии и США . Спикерами RubyC среди прочих стали: Райан Бигг (Австралия), Стив Клабник (США), Джонас Никлас (Швеция), Дарси Лейкок (Австралия), Алексей Найден (Россия) и многие другие. Подробнее о том, как прошла первая конференция RubyC можно узнать тут.

Организатор RubyC — Svitla Systems Inc., американская аутсорсинговая компания, которая занимается разработкой приложений на Ruby, .NET, PHP, Java, Magento, Flash, а также мобильных приложений.

Источник: rubyflow.ru

Оповещение о деплоях через стандартные средства мак оси

Я создал гем для оповещения всех членов команды разработки проекта о деплоях используя маковский Notification Center. Чтобы начать пользоваться нужно всего лишь зарегистрироваться на сайте https://space-notice.com/ и установить гем https://github.com/evrone/capistrano-team_notifications .

Поддерживается Capistrano 3 и 2.

Источник: rubyflow.ru

Вход для пользователей