...

четверг, 5 декабря 2013 г.

[Из песочницы] Запуск iframe приложения в Vkontakte

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;

4) 300 рублей знакомому админу и 5 минут настройки под это дело nginx-а;

Все работает.


Тем, кто не в курсе, самый простенький сертификат можно быстро купить и быстро настроить.


Модерация.

С технической стороны все вроде готово. Отправляю на модерацию вечером воскресенья.

Отвечают довольно быстро, но ответ неутешителен:



Недостаточная функциональность приложения для прохождения модерации, но вам необязательно проходить модерацию, приложение доступно всем пользователям без проверки.





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

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


Извините, отвлекся. Итак, формулировка «Недостаточная функциональность приложения». Что же это такое? Попросил разъяснить.

Разъяснили:



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





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

Взглянул на свое приложение еще раз, и действительно, что видит человек, зашедший в приложение: Кнопку «Создать встречу», и уже созданную по умолчанию встречу, ну и симпатичную фоновую картинку.


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

Вынес немного функционала на главную страницу, дополнил разделом «помощь».


Отправляю заявку повторно, в комментарии списком перечислил весь основной функционал, которым обладает мое приложение. Если честно не ждал одобрения.

Но оно пришло:



Приложение внесено в список одобренных.



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


Ошибки и выводы:




Ошибка: 4 года хотел сделать приложение, а начал делать за месяц до запуска.

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

Ошибка: Не взял в расчет время прохождения модерации.

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


Ошибки: Не подумал о механизмах рекламы приложения.

Выводы: Тут наверно, у меня просто мало опыта. Получилось так, сделал приложение, одобрили, и что дальше?

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


Конечно это не все мои ошибки, но это самые основные.

Всем удачи.


This entry passed through the Full-Text RSS service — if this is your content and you're reading it on someone else's site, please read the FAQ at fivefilters.org/content-only/faq.php#publishers.


Комментариев нет:

Отправить комментарий