Буду на DevConf, Москва, 17-18 мая

Опубликовано 05.05.2010

Нынче у меня весна конференций – еду на 17-18 мая на DevConf::Ruby. Буду участвовать по полной – читать доклад и проводить мастер-класс.

Доклад: Разработка приложений под Facebook на Ruby on Rails

Я когда-то уже читал этот доклад в Омске на RuPyRu. С тех пор много чего случилось: я создал свой собственный полноценный движок для создания текстовых RPG-игр, продал его довольно большому количеству клиентов, перешел с разработки FBML-приложений на IFRAME-приложения, раскурил концепцию Facebook for Websites и наткнулся на многие подводные камни разработки приложений для социальных сетей. Всем этим опытом я и хочу поделиться.

Доклад может быть полезен тем разработчикам, кто планирует разрабатывать приложения под Facebook или интегрировать с ним существующее приложение. При нынешней аудитории в 400 миллионов пользователей платформа приложений Facebook сама по себе уже является очень привлекательным рынком разработки. Очень многие западные проекты уже в той или иной степени интегрированы с этой социальной сетью и еще больше будет интегрировано в ближайшие год-два. Если вы занимаетесь разработкой на западный рынок – вам сам Бог велел приехать и послушать про грабли, на которые вам 100% предстоит наступить при интеграции вашего приложения с Facebook.

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

Мастер-класс: Оптимизируем Ruby on Rails приложение под высокие нагрузки

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

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

Помимо меня на конференции будет еще небезызвестный Yehuda Katz – один из ведущих разработчиков Rails 3. Будет интересно посмотреть, у кого из нас борода длиннее :) Также доклады будут читать Евгений Хлызов, Дмитрий Галинский, Иван Самсонов и многие другие

В общем, приглашаю и вас принять участие. Я уверен, вы узнаете для себя много интересного.

Видео с RuPyRu 2008

Опубликовано 05.08.2008

Наконец-то в прокат вышло видео с конференции RuPyRu 2008, в которой я принимал непосредственное участие. Спешите видеть :)

Мой доклад можно посмотреть здесь. Слайды к докладу - здесь. В ответах на вопросы информации оказалось ничуть не меньше, чем в самом докладе.

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

Немного лирики о Facebook

Опубликовано 07.05.2008

Есть такой небольшой косяк в социальных сетях: они затягивают. Это не так страшно тогда, когда ты выступаешь исключительно как пользователь - ты всегда можешь соскочить, закрыть аккаунт, всех послать и свалить на Чукотку. Но если, не приведи Господь, ты как-то связан с разработкой социальной сети - считай что ты навечно заражен этим опасным блеском в глазах, который дают только отсветы от золотых дублонов, сваленных в кучу перед твоим мысленным взором.

Сами, наверное, понимаете, к чему я это все говорю. У меня, блин, очередная мега-идея для приложения под Facebook! Хотел, называется, выспаться - и вот нате вам пожалуйста.

Вообще Facebook чем хорош, так это низким порогом вхождения в гигантское сообщество активных юзеров. Фактически, ты полностью избавлен от необходимости думать о скучных и нудных вещах типа ленты друзей, отправки сообщений и всего прочего, что делает хорошую социальную такой монолитной и привлекательной для страждущих толп. И, минуя всю эту рутину, ты можешь сразу начинать колбасить свой, что называется, extremely fun stuff. Если посмотреть даже на самые популярные приложения, то увидишь, что подавляющее большинство из них вне фейсбука яйца выеденного не стоят (по своему идейному содержанию). Те, которые имеют более-менее самостоятельную концепцию, чаще всего просто перенесены создателями из мира обычных сайтов, где они вполне успешны, на новую почву. Hot or Not, iLike, флэш-игры и разного рода знакомства. А все остальные - просто надстройки над уже имеющимся фейсбуковым функционалом. И это, на самом деле, здорово!

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

Если уж вы не жалуетесь на недостаток знаний, то вам точно пора наточить свой IDE, почистить Capistrano и браться за разработку чего-нибудь такого эдакого, что было бы не грех послать друзьям. Однако, нужно заранее быть готовым к тому, что пользователи Facebook и пользователи обычных сайтов - это две совершенно разные категории пользователей, хоть они и являются одними и теми же людьми. Главная ценность для посетителя обычного сайта - это получение информации и/или решение какой-то конкретной проблемы, которая у него есть. Пользователь фейсбука - это социальное животное, которое нуждается в общении с друзьями, прикольном убивании времени и добавлении симпотных фенечек к себе в профайл. При этом он не хочет осиливать информацию, и уж тем более ее генерировать. Максимум - скопировать откуда-нибудь ссылку или код для вставки видео. Всё.

Именно по этой причине наибольшей популярностью пользуются приложения, дающие возможность развлечся, сделать круче свой профайл или пообщаться с новыми людьми. Это довольно сложно понять нам, программистам, людям склонным к вещам сложным по своей природе. Я на эту тему стараюсь чаще советоваться и обсуждать свои идеи с людьми, которые далеки от программирования или компьютеров как таковых. Это дает почувствовать ветер той жизни, которой живут девочки и мальчики, добавляющие себе приложения вроде What Kind Of Condom Are You? или Hotties For Sale!. И постепенно начинаешь понимать, что некоторых прикалывает виртуальное кидание какашками или дарение Орландо Блума, продажа друзей с молотка и выставление своих приватных фотографий на суд общественности.

Facebook дает понять, что люди разные, что им интересны довольно простые в реализации и невероятно тупые по своей природе вещи. Но при всей очевидной балаганности этого предприятия, не стоит сбрасывать со счетов тот факт, что в китайского конкурента Facebook инвестировали 430 миллионов долларов, а его весьма бледный русскоязычный клон медленно, но верно догоняет национальные порталы. А значит денег тут есть, и причем весьма некисло.

[ANN] LikeMe - Facebook-приложение на Rails

Опубликовано 06.05.2008

Стоило только мне наткнуться на Facebooker - и у меня сразу в мозгу полыхнула идея сделать новое приложение. Предыдущее было весьма успешно продано в прошлом прошлом месяце и я уже не отношусь к написанию Facebook-приложений как к некоей гимнастике ума. Это вполне себе серьезный, а главное интересный бизнес. Поэтому я решил рискнуть, подвинуть немного deadline по разработке онлайн-газеты и потратить несколько дней на новый эксперимент.

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

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

С технической стороны тут все довольно просто. Разбивка меток по группам реализована с помощью acts_as_taggable_on, общение с фейсбуком с помощью Facebooker, база данных PostgreSQL, а в качестве репозитория я решил попробовать Git (на Github). Больше всего работы было над оптимизацией сложных запросов, выбирающих пользователей со схожими метками. Отдельное спасибо Алексею Ковырину за ссылку на отличную презентацию, давшую хороший толчок в верном направлении. Плюс было много гемора со всплывющим окошком для добавления интересов: AJAX-запросы почему-то не определяются Facebooker’ом как авторизованные, плюс есть еще некоторые тонкие моменты.

Работы еще предстоит много, но в целом я доволен. Кстати, буду вам очень признателен, если вы поставите это приложение себе и попробуете его поюзать. Если введете метки ‘Ruby on Rails’ или ‘Web 2.0’ в интересах категории Job - сможете найти меня. Познакомимся :)

Ссылка: http://apps.facebook.com/likemeapp/

Facebooker

Опубликовано 28.04.2008

Второй час ночи, а мне все не дает спать очередная “идея под фейсбук”. Возникла мысль сделать новое приложение на Merb, однако все попытки найти какие-нибудь позитивные отзывы от связки rfacebook+merb не увенчались успехом. Но зато я нашел проект, достойный пристального внимания - facebooker.

Если кратко, то это более продуманная реализация библиотеки для работы с Facebook API. Во всяком случае, там вполне грамотно структурированы такие вещи, как вывод наиболее часто используемых спецтэгов, отправка уведомлений, работа с данными пользователями. Но что самое главное - для него есть просто офигенный tutorial, за который автора надо поить пивом три раза в неделю.

Ну а заодно руки дошли и до git’а :) Теперь я модный пацан с распределенным версионным контролем.

Игра переехала на Joyent

Опубликовано 29.11.2007

Буквально только что перенес игру на сервер Joyent. По сравнению с московским скорость отдачи увеличилась примерно раза в 4, а то и в 5. Видимо, помехи над морем мешали :)

Процесс переезда был, мягко говоря, нетривиален. Переползать с FreeBSD на Solaris - удовольствие то еще. Много непривычных моментов. В частности, долго не мог вникнуть в систему управления сервисами SMF. в wiki на сайте Joyent есть инструкции по развертыванию Rails-приложений на их серверах с помощью capistrano, но они писаны под стандартные акселераторы, а у фейсбуковых свои особенности, которые приходилось искать буквально на ощупь. В частности, пришлось руками прописывать все пути к исполняемым файлам. В общем, вчерашний вечер и сегодняшнее утро прошли не зря :)

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

Онлайн-игра под Facebook

Опубликовано 28.11.2007

Почти полтора месяца ушло на то, чтобы проработать и довести до ума мой новый проект - онлайн-игру под платформу Facebook. Суть игры достаточно простая: вы становитесь капитаном космического корабля и можете сражаться с другими игроками. В процессе битв вы получаете опыт и славу. Опыт дает вам возможность прокачивать своего персонажа, а слава позволяет получать назначения на новые корабли.

Прошу любить и жаловать - Star Fleet

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

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

Хостится приложение пока на нашем сервере в Москве, поэтому тормоза те еще. Однако, уже получен бесплатный аккаунт на Joyent, надо просто перенести.

В общем, если у вас есть аккаунт на Facebook - милости просим потестировать. Если аккаунта нет - милости просим регистрироваться :)

Бесплатный хостинг для Facebook-приложений

Опубликовано 14.11.2007

Хорошие новости для девелоперов, корпеющих над приложениями под Facebook, в частности - для *Rails-девелоперов.

Facebook совместно с небезызвестной компанией Joyent объединились мозгом и заделали бесплатный VPS-хостинг для приложений под Facebook. В течение года можно нахаляву хостить свое приложение, в том числе сделанное на рельсах, на серверах Joyent, потребляя до 10GB дискового пространства, 512MB RAM и 1/32 от процессорной мощности злобных Dell PowerEdge 2950 2 Quad-Core Intel© Xeon©.

В принципе, я считаю что это неплохо для того, чтобы запустить свою наколенную поделку и посмотреть, будет ли она пользоваться популярностью. Если будет действительно популярной и вам не хватит мощности бесплатного аккаунта - вас попросят заплатить денег за дополнительные мощности. Но в этому случае деньги у вас уже точно будут :) А если популярности не будет - вы ничего не теряете.

Я попробую однозначно.