Vkontakte Iframe Приложение / VK News

Vkontakte Iframe Приложение

imageЕсть такая оффлайн новогодняя игра "Тайный Санта". Уже давно играю в нее со своими друзьями на каждый Новый год.
Что бы проще было определять, кто кому дарит подарок, создал сайтик, где мои друзья могли оставить Email, и им на почту пришел бы результат генерации.

И года 4 назад задумался над созданием такого приложения для соц сети. Было бы гораздо проще приглашать друзей в контакте, чем кидать ссылку на сайт. Хотел сделать на флеше, но его за 4 года, так и не начал изучать. Поняв, что ждать больше нельзя, создал iframe приложение.

Запуститься я планировал первого декабря. Как раз люди начнут задумываться над тем, где и с кем праздновать Новый год, и как его весело провести. Теперь понимаю, что нужно было запускаться на недели 2-3 раньше. Может и на месяц.

Итак, приступил к работе

За основу взял фреймворк Yii. Его я более менее хорошо знаю, плюс с ActiveRecord все очень простенько делается. Так как сложной логики со сложными JOIN в приложении не планировалось, и я весь функционал вынес в JavaScript(в том числе и API запросы к контакту), то и особой нагрузки на приложение не планировалось. Так что можно было немного полентяйничать. Тем более что приложение, по сути своей, «умрет» после Нового года, а при возможной, резко возросшей нагрузке, на пару недель я смогу позволить себе сильный сервер.

Времени у меня был месяц, поэтому многое из задуманного я не успел реализовать. Оставлю это на следующий Новый год.
Так как в угоду дедлайяна я урезал маловажные функции, то у меня получилось довольно маленькое приложение.
Все запросы к БД — это достать список людей, участвующих в событии.
Из API Vkontakte я тоже использовал только «Получить список друзей текущего пользователя» и «Получить информацию о пользователях по списку ID»

Крупный недосмотр в логике

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

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

Решил я это проблему добавлением проверки последних 2х элементов.
На предпоследнем пользователе смотрим, если в массиве для распределения им есть последний пользователь, то предпоследний дарит последнему. Таким образом, последнему никогда не достанется он сам. Его заберет предпоследний. А так как массив изначально был перемешан, то распределение будет случайным.

Релиз

Проработав все выходные и вечера в ноябре, 30го я закончил работу над приложением. Дедлайн был практически соблюден. Оставил публикацию приложения на 1е декабря, и лег спать. Утром, отправляя на модерацию, я проверил все настройки приложения и сервера. В настройках заметил один пункт, на который раньше не обращал внимание: «Адрес сайта» с http и https. А сертификата то у меня и нет. Как его покупать и ставить, я понятия не имел.
Мои действия для решения проблемы:

1) Google;
2) 1300 рублей на покупку сертификата;
3) 1, 5 часа в попытках поставить сертификат и настроить Apache;

Возможно вам понравится

Граждане Украины, прибывшие в Северную Осетию, проходят психологическую адаптацию  — Россия-Алания
О будущем статусе они думают совместно с миграционной службой. Два дня мобильные бригады ведомства ведут работу с мигрантами. Казбек Тхапсаев .. По всем вопросам можно обращаться по телефону 54-86-72. Уже завтра в республику поступит новый поток беженцев с Украины.

Первый прототип модульного смартфона Ara  — Хакер
Project Ara достался компании Google с покупкой мобильного подразделения Motorola. Проект предусматривает создание смартфона, детали которого можно заменять как в .. и вполне похож на готовое устройство, если не считать отсутствующей кнопки питания.