Есть такая оффлайн новогодняя игра "Тайный Санта". Уже давно играю в нее со своими друзьями на каждый Новый год.
Что бы проще было определять, кто кому дарит подарок, создал сайтик, где мои друзья могли оставить 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 недели, то уже не будет смысла его запускать. Так что, нужно было предвидеть возможные проблемы прохождения модерации. Как минимум, нужно было погуглить на этот счет.
Ошибки: Не подумал о механизмах рекламы приложения.
Выводы: Тут наверно, у меня просто мало опыта. Получилось так, сделал приложение, одобрили, и что дальше?
А были бы уже подобраны рекламные площадки, были бы какие-то договоренности. Да хотя бы рекламные посты были бы заготовлены, было бы легче.
Конечно это не все мои ошибки, но это самые основные.
Всем удачи.
Что бы проще было определять, кто кому дарит подарок, создал сайтик, где мои друзья могли оставить 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 недели, то уже не будет смысла его запускать. Так что, нужно было предвидеть возможные проблемы прохождения модерации. Как минимум, нужно было погуглить на этот счет.
Ошибки: Не подумал о механизмах рекламы приложения.
Выводы: Тут наверно, у меня просто мало опыта. Получилось так, сделал приложение, одобрили, и что дальше?
А были бы уже подобраны рекламные площадки, были бы какие-то договоренности. Да хотя бы рекламные посты были бы заготовлены, было бы легче.
Конечно это не все мои ошибки, но это самые основные.
Всем удачи.