Статьи

Ксавье Нория: Кодекс садовник

Ксавье выиграл Ruby Hero
премия в 2010 году

Ксавье Нория (произносится «sha-vee-aay» на каталанском языке) очень хорошо известен в сообществе Ruby. Самозанятый разработчик Ruby из Барселоны, он также является членом основной команды Rails и получил награду Ruby Hero во время RailsConf 2010 . Многие из вас, возможно, встречались с ним лично; В этом году он выступал на многочисленных конференциях Ruby по всей Европе.

Но меня больше всего впечатляет роль Ксавьера как «Code Gardener» — фраза, которую я взял из небольшого поручения Rails, которое он сделал более двух лет назад. Вы можете прочитать больше об этом коммите в статье, которую я написал в прошлом году о моих любимых коммитах Rails. На прошлой неделе мы с Ксавье имели возможность поговорить более часа — читайте дальше, чтобы узнать больше о его прошлом, о том, что происходит в Rails 4, о его увлечении документацией и, что наиболее важно, о его философии о важности небольших изменений. Я также получил возможность спросить Ксавье, как вы можете определить, является ли число простым с помощью регулярного выражения!

Начало работы в Ruby

Q: Как вы начали работать с Ruby и Rails?

12 лет назад я начал зарабатывать на жизнь компьютерным программированием; Мне было 30 лет, поэтому я опаздываю на вечеринку. Но я сменил профессию на программирование, потому что мне это нравится.

Некоторое время я профессионально работал с Java, а также много занимался Perl в исследовательской лаборатории, в которой работал. В свободное время я преподавал Perl в Университете Барселоны в течение 7 лет. В 2005 году кто-то связался со мной и спросил: «Эй, есть что-нибудь новое, что привлекло ваше внимание?» В 2005 году все говорили о Ruby on Rails, и на первый взгляд это выглядело так, как будто оно заслуживает внимания. Поэтому я подумал: «Да, этот Ruby on Rails выглядит многообещающе». Я не занимался профессиональным программированием на Ruby, но немного поиграл с Ruby, потому что любил динамические языки.

Затем мы попробовали Rails с реальным проектом, а не просто с приложением «hello world» или чем-то в этом роде, и мы были настолько позитивно удивлены нашим опытом с этим небольшим проектом, что мы подумали, что вы сможете основать компанию, основанную на этой технологии. Таким образом, мы основали магазин Rails в 2006 году; мы делали только рельсы. Это был наш бренд: мы были специалистами Rails в Испании.

Q: Вы продолжаете говорить «мы» — с кем вы работали?

С Агустином Куэнкой . Мы сделали этот первый проект в 2005 году, а затем мы основали ASPgems в 2006 году с другими партнерами. Компания все еще жива и хорошо себя чувствует, но позже я стала независимой и ушла в 2009 году.

Работа в основной команде Rails

В: Как вы начали вносить свой вклад в сам Rails и стали частью основной команды?

Я занимаюсь открытым исходным кодом в течение 10 лет. У меня есть несколько модулей Perl в CPAN; Я всегда помогал в IRC, занимаясь такими вещами. В Rails, когда я находил что-то, чтобы исправить, ошибку или что-то, я всегда пытался внести патч — но я не работал с билетами или чем-то в этом роде. Когда мне что-то нужно, я пытался внести патч или исправление или что-то еще.

То, что вовлекло меня в сам проект Rails, это документация. В целом, я думаю, что документация в культуре Ruby отсутствует. Есть много возможностей для улучшения. И, в частности, в Ruby on Rails я не был удовлетворен имеющейся у нас документацией. Таким образом, у Пратика Найка была эта гениальная идея создать Дракоилов . Docrails — это ветка Rails для быстрого исправления документов, которая регулярно объединяется с master. В начале вы получили коммит для docrails, просто попросив его у Pratik, и в настоящее время он имеет публичный доступ для записи.

Сначала я попросил у Pratik коммит, а потом начал работать над документацией, как сумасшедший. В документации было несколько осей для работы. Одной из осей было само содержание, что было самым важным. Тогда были и другие вещи, которые также важны, такие как последовательность в типографике и т. Д. Не было никаких соглашений или руководств; это был настоящий беспорядок. Ранее я говорил, что начинал как разработчик, когда мне было 30 лет, но до этого в течение нескольких лет я работал корректором по учебникам по математике.

Q: Да действительно?

Итак, вы знаете, я тренировал свой глаз для такого рода вещей. Если это должно быть курсивом, а не курсивом, тогда я вижу это сразу!

Q: Я бы лучше воспользоваться вами! Могу ли я отправить вам черновик моей новой книги ? Я так и не понял, что ты профессиональный корректор …

Да, мне бы это понравилось!

Поэтому мы установили некоторые рекомендации по документации, и я начал широко применять эти рекомендации по всему исходному коду для Ruby on Rails. Я сделал много работы и в основном без видимости — но мне было все равно. Я исправлял то, что хотел исправить. Тогда иногда я также работал с кодом. Мое соотношение было, возможно, 80/20 или что-то подобное. Большинство моих вкладов были с документацией в те дни. В конце концов, люди в основной команде знали об этой работе, и я начал ближе с ними общаться и иметь больше возможностей узнать о проекте изнутри. И в конце концов меня пригласили в основную команду.

Q: Поздравляю — это фантастика! Каково работать в основной команде? Это весело? Трудно? Утомительно?

Здорово! В команде есть хороший баланс между людьми и работой в команде. Это нигде не написано, но по некоторым важным вещам мы пытаемся обсудить и достичь консенсуса, но по большей части мы остались одни. Все в основной команде работают в местах, которые ему интересны. У нас есть два места для общения — одно — комната в Campfire ; еще один проект в Basecamp .

В: Вы когда-нибудь общались с командой, по скайпу, как сейчас, или лично?

По крайней мере, в моем случае все написано либо в Campfire или Basecamp, либо очень редко в электронной почте. Но я знаю, например, что Хосе и Иегуда в Rails 3 дня много спаривались.

Q: Они фактически работали вместе над отдельными функциями?

Да. Сейчас я не знаю, есть ли кто-нибудь, кто этим занимается. Но обычно все написано.

Что будет в Rails 4

Q: Многие люди задаются вопросом о том, что будет с Rails 4 … Я знаю, что у нас нет времени, чтобы пройти через все, но не могли бы вы рассказать нам немного об этом сейчас?

Это главный релиз — там куча всего. В последние несколько дней я просматривал журналы изменений, чтобы начать подготовку материала для заметок о выпуске. Вот некоторые основные моменты …

Во-первых, потребуется Ruby 1.9.3.

Q:… и это потому, что вы используете синтаксис, действительный только в 1.9.3?

Был достигнут консенсус, что мы хотим сосредоточиться только на последней стабильной версии Ruby и не тратить время на предыдущие версии. Так как это основная версия, мы собираемся перейти с 1.9.3. Мы только собираемся «официально» поддержать 1.9.3. Возможно, ваше приложение работает с версией 1.9.2, но вы там сами по себе. Это не будет работать с 1,8 — это точно. Было много кода с условиями, который переключался между 1,8 и 1,9, и все это было удалено.

Q: О, я вижу. То есть ваш набор тестов работает только на 1.9.3?

Да все верно.

И еще есть много новых функций: мне нравится то, что мы перешли на использование глагола PATCH как первоклассного гражданина в наборе поддерживаемых нами глаголов HTTP.

Q: Что делает глагол PATCH? Это обновление?

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

Q: Что нужно знать об этом разработчикам? Это бесшовные? Это происходит прозрачно?

Да, это должно быть без проблем.

Еще кое-что, что многие хотели изменить, — это контроль массового присвоения атрибутов. Это было в модельном слое; многие хотели поместить его на уровень контроллера, и это произойдет в Rails 4. Эта функция называется сильными параметрами — массовое назначение все еще происходит, но вы настраиваете его на уровне контроллера. «Attr_accessible» и «attr_protected» отсутствуют. Они были извлечены в плагин.

Еще одна приятная вещь — это API для очередей. Вы можете подключить несколько очередей и иметь единый API для общения с ними. Фактически, почтовые программы могут отправлять почту асинхронно в Rails 4, благодаря этому API.

Q: Интересно …

Кроме того, еще одним важным моментом является поддержка того, что мы называем «кэширование русской куклы».

Q: Да … Я недавно видел несколько фотографий этого. Можете ли вы объяснить это через пару минут?

Если вы интенсивно кэшируете все части в данном представлении — скажем, у вас есть два или три уровня кэширования — и вы используете технику поколений, которая заключается в том, чтобы ставить отметку времени, чтобы ключи автоматически теряли силу, и все. Теперь, если вы измените статическое содержимое одного из вложенных шаблонов, вам придется сделать недействительными родительские контейнеры. До того, как эта функция была включена, вам нужно было как-то сделать это вручную. Эта новая функция в Rails 4 автоматизирует это, вычисляя дайджесты MD5 содержимого шаблона.

Наконец, Active Resource вышел. Он не используется часто и станет плагином.

Есть еще больше вещей, но это несколько основных моментов.

Кодекс Садовник

В: Помните ли вы статью, которую я написал в прошлом году, где я описал вас как «садовника кода»? Надеюсь, вы не злитесь или не расстраиваетесь по этому поводу… Надеюсь, это не было оскорбительно!

Наоборот, необычно, что кто-то выделяет небольшой вклад. Мне понравился этот комментарий от вас.

Q: Вы действительно тратите много времени на это? Вы действительно «садовник кода»?

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

Q: То есть вы очень детально ориентированы. Если я представляю, как вы в саду вырываете сорняки из грязи — это то, чем вы любите заниматься.

Rails-коммит Ксавье «работающий с кодом»
два года назад

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

Я не проверяю билеты в любом случае — для меня исправление опечатки так же важно, как исправление ошибки или любого другого изменения. Если кто-то отправит патчи, подобные этим, если они не являются патчами монстров, я бы сразу согласился. И это то, что мне больше всего нравится в Дракоилах, потому что Дракоилы продвигают идею, что вы можете делать такие вещи.

Q: Допустим, есть люди, которые читают это, которые хотят внести свой вклад в Rails, но не сделали этого раньше? Что было бы хорошим способом начать вносить вклад в проект Rails?

Самый простой способ — зайти на GitHub и поработать над билетами. Работа с тикетами может означать много вещей: это может быть подготовка патча, который что-то исправляет, это может быть проверка того, что существующий патч все еще проходит, или что-то еще. Если у вас есть опыт работы с документацией, вы также можете пойти и искать в исходном коде места, которые не были должным образом документированы. Вы можете пойти и задокументировать эти места. Кроме того, Rails Guides также всегда может воспользоваться тем, кто готов предоставить документацию. Это очень, очень важная часть проекта.

Рубиновые конференции

Вопрос: За последние несколько месяцев вы посетили много разных конференций: RailsClub Moscow , BaRuCo , RuLu 2012 , RailsBerry и EuRuKo . Что вам больше всего понравилось в этих конференциях?

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

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

Q: То есть вам больше всего нравится в баре или пабе?

Я наслаждаюсь перерывами … Я не часто провожу вечеринки — в 1 час ночи или что-то еще, я иду в отель, чтобы отдохнуть.

Q: 1:00 звучит очень рано для испанца! Я думал, что в Испании вы только что закончили ужинать к 1 часу ночи …

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

Q: У вас когда-нибудь будет возможность приехать на конференцию в США?

Если честно, это слишком далеко для меня. Я был в США только один раз, и, если честно, я уехал только потому, что организаторы «предложили» мне посетить… потому что я собирался получить награду Ruby Hero.

Q: Поздравляю! Это было несколько лет назад?

Да, это было на RailsConf 2010 в Балтиморе.

Регулярные выражения и простые числа

Q: Я не помню, где я видел это, но недавно я впервые услышал о том, как можно определить, является ли число простым, используя регулярное выражение. Затем я увидел один вкладыш в вашем репозитории Math With Regular Expressions , как этот:

# Prime factorization.
perl —le $_= 1 x pop; print $+[1] and s/$1/1/g while /^(11+?)\1*$/ 60
2
2
3
5

view raw
gistfile1.pl
hosted with ❤ by GitHub

Кстати, я использовал Perl, потому что в Perl один вкладыш может быть короче. Вы можете написать то же самое на Ruby, но вам придется использовать «gsub», например.

Q: Мне кажется странным и странным, что вы можете определить, является ли число простым с помощью регулярного выражения! Можете ли вы объяснить, как в мире это работает?

Ха-ха-ха — когда вы понимаете регулярное выражение, вы можете сказать: «ах… это просто». Для меня гениальной идеей было когда-нибудь подумать, что вы можете решить эту проблему с помощью регулярного выражения.

История этого заключается в том, что много лет назад хакер Perl по имени Abigail написал одну строку, чтобы проверить, является ли данное положительное целое число простым. Идея заключается в следующем: допустим, вы хотите проверить, является ли 15 простым числом. То, что вам нужно сделать, это визуализировать 15 палочек — если число составное, то вы можете равномерно сгруппировать палочки. Это видение. Это идея.

То, что делает оригинальное регулярное выражение из Abigail, учитывая число, подобное 15, состоит в том, чтобы создать строку из 15 единиц. И затем регулярное выражение использует механизм регулярных выражений, чтобы попытаться равномерно сгруппировать их. Вы должны привязать и затем попробовать группу — и так как у вас есть обратные ссылки и квантификаторы — вы можете легко разбить это на четные группы или нет. Так что это грубая сила, но она великолепна. Так что я знал об этой технике много лет, но однажды я решил изучить эту технику и применить ее к другим проблемам.

Q: И именно тогда вы создали репозиторий github.

Да, все эти лайнеры используют одну и ту же технику.

Благодарность!

Q: Буэно; мучась Грасиас Ксавье! Я alegro mucho haber hablado contigo…

Muy bien — igualmente — ha sido un placer.