ruby


Вакансии закрыты, спасибо всем откликнувшимся!


В связи с повышением спроса со стороны потенциальных заказчиков, мы объявляем набор веб-разработчиков.

Нас 3 человека, находимся в Тольятти, работаем в области аутсорсинга около 5 лет. Клиенты из США, Канады, Европы. Как фирма не оформлены, планируем сделать это в ближайшем будущем. В данный момент нам нужно еще 2-3 разработчика.

Занимаемся разработкой веб-систем на заказ с использованием наиболее современных технологий. На сегодняшний день — Django и Ruby on Rails.

Основные требования

  • Общий опыт работы от 2-3 лет

  • Опыт веб-разработки, выражающийся в понимании HTTP, HTML, CSS, javascript

  • Владение хотя бы 2-мя высокоуровневыми языками программирования

  • Хороший письменный английский

Приветствуется

  • Python, Ruby

  • SQL

  • Django, Ruby on Rails

  • Опыт работы на *nix-системах

  • Опыт написания юнит-тестов, test-driven development

  • Опыт использования систем управления версиями и багтреккинга (мы используем Mercurial и Trac соответственно).

Условия

Готовы платить 2000 долларов в месяц подходящему нам человеку, который сможет адекватно встроиться в коллектив, и давать результат на уровне среднего по команде. Тем, кто знает и умеет меньше, чем мы, первое время будем платить меньше. Поднимать по мере обучения тоже будем, целевой уровень все те же 2000. Нижняя граница стартовой суммы находится где-то в районе 1400, меньше подходящий нам кандидат, вероятно, не стоит. Валюта оплаты зависит от конкретного проекта, обычно это доллары США.

Работа дома. Организуете свое рабочее место своими силами и за свой счет.

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

Тем не менее, мы ожидаем работы на полную ставку, 40 часов в неделю. Формального учета рабочего времени нет, контроллируем по результатам.

Дополнение

Нужно будет 1-2 раза в неделю встречаться лично, поэтому совсем удаленная работа нам не подойдет, нужно чтобы вы находились в Тольятти или окрестностях.


В качестве первого шага присылайте ваше резюме или портфолио.

Со мной можно связаться по почте (me [собака] alexlebedev.com) или ICQ (160365425).

– Александр Лебедев

Небольшой пример рефакторинга ruby-кода.

Исходный вариант (взято из статьи Raking /etc/hosts For Sweeter Subdomainage)

hosts = []

# add all the site temporary domains
hosts << Site.find(:all).inject([]) do |collection, site|
  collection << site.harmony_url
end

# add all the account subdomains
hosts << Account.find(:all).inject([]) do |collection, account|
  collection << account.harmony_url
end

Как можно сделать лучше?

Программа-минимум:

# site and account subdomains
hosts = []
hosts << Site.find(:all).collect(&:harmony_url)
hosts << Account.find(:all).collect(&:harmony_url)

Улучшения здесь три:

  1. Заменяем низкоуровневый inject на collect. Нет смысла пользоваться inject и выставлять наружу переменную-счетчик, если можно легко сделать то же самое с более высокого уровня абстракции.

  2. Используем сокращенный способ вызова метода в блоке: (&:harmony_url) вместо {|element| element.harmony_url}. Это улучшение является частью ActiveSupport, так что вне рельс само работать не будет.

  3. Заменяем дословно повторяющие код комментарии на что-то хоть немного более высокоуровневое.

Дополнительная программа:

  1. То же самое чуть компактнее

    # site and account subdomains
    hosts = Site.find(:all).collect(&:harmony_url) + Account.find(:all).collect(&:harmony_url)
    

    Далее в коде нигде не используется факт, что массив хостов содержит два отдельных подмассива со значениями, поэтому можно просто запихать все в плоский массив. Что, кстати, избавит нас не только от инициализации hosts, но и от вызова flatten при использовании значений.

  2. Делаем код понятным без комментариев

    hosts =  Site.find(:all).collect(&:subdomain) +  Account.find(:all).collect(&:subdomain)
    

    … а в классах моделей пишем:

    alias_method :harmony_url, :subdomain
    

Next Page »