Пользователь
0,0
рейтинг
16 сентября 2015 в 22:56

Разработка → Как я запускал афишу еврейских мероприятий из песочницы

Введение


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

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

Все это приводит к тому, что каждый месяц в городе проходит несколько десятков еврейских мероприятий. Для примера, 13 сентября в разных частях города прошло 11 совсем не мелких мероприятий (50-200 человек каждое).

Какую я заметил проблему и как её хотел решить?


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

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

Я посчитал нужным собрать все мероприятия вместе и сделать афишу еврейских мероприятий Санкт-Петербурга.

Я должен отметить, что данная идея приходила в голову не только мне. За нее брались несколько человек, но афиши в городе так и не было. Важно отметить, что я понимал, что могу не только организовать создание этой афиши, найдя грант и наняв кого-то для выполнения частей этого проекта. Я мог сделать это своими руками и за свой счет!

Техническая часть


У меня есть опыт создания сайтов. Мне в достаточной степени известны PHP, MySQL, HTML, JS и CSS, чтобы за несколько часов сделать с нуля back-end для афиши, ну или можно было взять что-то готовое и допилить, поэтому насчет серверной части я особо не думал — тут ответов у меня было больше, чем вопросов.

Вопросы были по клиентской части — сделать сайт было просто, но для эффективного взаимодействия с аудиторией я всерьез задумался над созданием приложения. И первое приложение я решил писать для iOS.

Во время первой попытки попробовать написать приложение для iOS я впервые столкнулся с языком Objective-C. Простые вещи на нем выглядели, на мой взгляд, крайне громоздко. Я был очень рад, когда появился Swift. Основной недостаток, который я сейчас в нем вижу помимо его молодости — нет возможности писать приложения для iOS ниже 7 версии.

Я начал писать приложение на Swift. Оно было и остается довольно простым — есть 4 экрана: события, новости, мудрость дня и юмор дня. Первые два экрана представляют из себя простые TableView со списком событий и новостей — нажатие на элемент списка открывает подробное описание. Данные для приложения берутся с помощью запроса к серверу, который отдает XML или JSON. Ах да, еще в приложении есть Push-уведомления, и пара незначительных фич, которые появились позже. Трудно описать свои ощущения от первого запуска своего приложения в эмуляторе, ярче этого были только: запуск приложения на своем iPhone, увидеть на экране телефона Push-уведомление, посланное своими руками, ну и затем появление своего приложения в App Store — месте, в которое я раньше заходил только как потребитель контента.

Серверную часть я писал быстро. Разработка приложения шла долго. Сейчас описанные в предыдущем абзаце задачи мне кажутся простыми в решении, но тогда я смотрел на XCode и его вроде бы просто Interface Builder как на дремучий лес. Сервер отдавал XML со списком и описанием новостей и событий. Нужно было этот XML прочесть, разложить по полочкам и выводить в нужные элементы UI. После того, как я научился парсить XML на Swift я столкнулся с тремя новыми для себя вещами, которые отняли еще несколько дней.

1) Расположение элементов на экране iPhone / iPad
Заставить элементы ячеек TableView и ViewController с полным описанием событий нормально отображаться не только на определенном экране iPhone, а на всех возможных экранах было не просто. Посмотрев ряд обучающих видео на YouTube, я (как мне тогда казалось) познал истину про расположения элементов. Я тогда понял далеко не все, но путем проб и ошибок я смог «универсально» разместить элементы на экране.

2) Сертификаты для приложений
Чтобы выйти за рамки эмулятора, а именно запускать приложения на своих устройствах и распространять приложения через App Store — нужны сертификаты. Внятного объяснения и алгоритма получения и использования сертификатов на русском языке я на тот момент не нашел. Сейчас процедура получения сертификатов мне кажется уже не такой дикой, но я все равно не понимаю зачем нужно такое большое число шагов. Ну и отдельные сертификаты для Push-уведомлений — просто песня.

3) Push-уведомления и Parse
Я не сталкивался до этого момента с Push-уведомлениями в качестве их отправителя. Оказалось, что это тоже не просто. После чтения материалов на эту тему я остановил выбор на Parse. Почему? Для моих масштабов он бесплатен, а еще он выглядит довольно понятным в работе и симпатичен. Уведомления сейчас отсылаются всем пользователям, они как аналог смс-рассылке.

Анонс приложения


Первый этап был — просьба PR в социальных сетях от еврейских организаций города. Меня в разной степени поддержали почти все, к кому я обращался. Пошли первые установки. Я неожиданно понял, что приложение работает только на iOS старше 8 версии. И все потому, что для iOS 7 нужно добавить пару мелочей. Добавил. Неделя ожидания модерации и вот уже пользователи iOS 7 тоже видят афишу!

Просьбы выпустить версию для Android не были неожиданностью, это приложение — тема для отдельной статьи.

Где проект сейчас?


Приложение вышло после новогодних праздников 2015 года. Приложение бесплатное, без рекламы. В команде пока три волонтера: волонтер редактор событий, волонтер редактор новостей и волонтер технарь (я). Сейчас у приложения есть iOS и Android клиент, плюс события и новости доступны на сайте. Количество установок перевалило за 1100, растет немного каждый день.

«В чем цимес?»


(Ци́мес (идиш צימעס) — десертное блюдо еврейской кухни. Наиболее близкое значение на русский язык можно перевести как «В чем соль?»)

1) Я сделал полезную вещь для общины — люди узнают о новых событиях, новостях и вакансиях именно через приложение. На каждом мероприятии можно встретить людей, которые бы не пришли на него, не будь это события в приложении. Дело не том, что мероприятия и программы — скучные или низкого качества. Как правило, все как раз наоборот. Дело просто в том, что донести информации до всех организаторы не могут.

2) Опыт. Мои затраты труда и времени, на хостинг/домен и $99/год за право публиковаться в App Store, а потом еще и $25 за Google Play окупились сполна. Я попробовал то, что раньше делать не умел! Это очень классно.

P.S.


И еще кое-что: я долго варил в голове эту идею, но не брался потому что думал, что сделаю не самое лучшее приложение (понятное дело, что так и случилось). «Я не профессиональный программист, не дизайнер. Продукт созданный целиком моими руками не будет произведением искусства. Так чего мне браться?» — таков был ход моих мыслей.

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

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

В конце хочу привести цитату еврейского мудреца Гилеля, который жил более 2000 лет назад: «Если не я за себя — то кто за меня? А если я только за себя — то кто я? И если не сейчас — то когда?»

Если публику заинтересовала моя статья — я напишу еще — не только про афишу еврейских мероприятий Петербурга, но и про другие свои проекты.
@slutsker
карма
7,0
рейтинг 0,0
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Реклама

Самое читаемое Разработка

Комментарии (11)

  • +11
    Кошерно!
  • +16
    Статью в раздел «Я пиарюсь». Ничего полезного с точки зрения разработки в статье нет. Ну разве что в Питере, оказывается, есть много евреев.
    • 0
      оказывается
  • +4
    Я дико извиняюсь, но даже будучи агрессивным сторонником нативных приложений, я порекомендовал бы в Вашем случае делать веб-приложение — это правильный путь. Есть куча инструментов, и. Не надо тратиться на сертификат (таки $100) и мучиться с одобрением и прочими закорючками магазинов.

    Но новые знания бесценны, здесь не поспоришь.
    • 0
      Поверьте мне, я был мало заинтересован платить $99/год, но мне были и остаются важны Push-уведомления, которые без Apple Developer Program не задействовать. Плюс хотелось попробовать Swift.
  • +2
    Полезный сервис, желаю успехов!
    • 0
      спасибо!
  • +5
    Всё статью читал и думал, что она написана про европейские мероприятия. Как и было отмечено выше, в статье слишком мало именно технических подробностей, именно из-за них многие читают хабр, а а не гиктаймс.
    • –2
      Я допускаю, что эта статья (как и любая другая) может не быть интересной для «многих». Но мне в статьях на Хабре гораздо интересней для чего и для кого написан код, а ещё интересно, что привело к появлению того или иного продукта.
      • +6
        Хабр не предназначен для обсуждения «для чего и для кого написан код», для этого есть Гиктаймс, а на Хабре обсуждают именно код. Как тут уже правильно заметили — статья никак не подходит ни для «Разработка под iOS», ни для «Разработка мобильных приложений», ни для «Swift», для этих хабов это статья ни о чём. Подходит разве что для хаба «Я пиарюсь» если уж так хотелось разместить это именно на Хабре, а не на Гиктаймс.
  • 0
    Минус, пияр не больше пиши про другие проекты посмотрим.

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.