Upload
codefest
View
1.825
Download
1
Embed Size (px)
Citation preview
План доклада
● Немного про ruby и rails● Архитектура groupon.ru● Организация командной работы● Управление конфигурацией● Вклад в Open Source
Шутки в сторону
● ~75000 строк кода● Более 10 миллионов пользователей● Десятки миллионов запросов в день
Ruby
● Динамический● Объектно-ориентированный● Поддерживает замыкания● Лаконичный синтаксис● 3 реализации (MRI, JRuby, Rubinius)
Примеры кода
(1..100).to_a.map { |e| e*e }
> [1, 4, 9 …]
a = "conference"
def a.name
"CodeFest"
end
a.name # > CodeFest
codes(id, code, group_name, coupon_id)
SELECT *FROM codesWHERE group_name = 'skype' AND coupon_id IS NULLORDER BY idLIMIT 1
CREATE INDEX ON code(group_name, id)WHERE coupon_id IS NULL
История №3
class User < ActiveRecord::Base
validates_uniqueness_of :email,
:case_sensitive => false
end
SELECT "users".id FROM "users"
WHERE (LOWER("users"."email") = '[email protected]' AND "users".id <> 12345) LIMIT 1
CREATE INDEX on users(lower(email))
● мертвый код - зло● выкатывайте часто● автоматизируйте всё● проверяйте rollback● большие выкатки надо тренировать
Андрей Дерябин
ruby-обертка надо API сервиса zendesk
https://github.com/evilmartians/zendesk
zendesk
cupid
Алексей Газиев
Равиль Байрамгалин
SOAP интерфейс
к ExactTarget
https://github.com/evilmartians/cupid
visibility.js
Visibility.every(1000, function () {
updateCountdownAnimation();
});
https://github.com/evilmartians/visibility.js
Андрей Ситник
role
Саша Косс
<div role="role_name"></div>
А потом
$('@role_name').something()
https://github.com/kossnocorp/role