[Из песочницы] Sunduk или 10 секунд на название
Давно собирался написать статью на хабр, да все никак не мог собраться. То темы достойной не было, то была, но слишком объемная, то лениво. А может, всегда было лениво. Но сейчас, во всяком случае, собрался.
ПрологНе знаю как вы, а я подсел на хакатоны. Хожу на них при любой возможности. И очень расстраиваюсь, когда у меня по тем или иным причинам не получается сходить на очередные ночные посиделки программистов. За темой для проекта далеко ходить не нужно — идеи рождаются у меня в голове сами собой. Как правило, дурные, но зато прикольные. Шило в известном месте всегда заставляет меня написать какую-нить «прикольную штуку». И, как правило, шилу везет — папка Projects/4Fun пополняется новым проектом, иногда даже выходящим в паблик.Завязка Был у меня и опыт победы на хакатоне, и приз зрительских симпатий… Но сейчас не об этом. А о вполне рядовом участии, но, надеюсь, не о рядовом результате. Неделю назад, 17–18 мая в Минске проходил региональный этап хакатонов Qiwi Universe. Я и мой напарник решили пойти. Решаем пойти на хакатоны мы с ним часто, но ходим на них не всегда. Но в этот раз наши возможности совпали с нашими желаниями, и мы пожертвовали выходными ради… даже не знаю, как сказать… ради хорошего настроения, что-ли.Развитие действия Кто не знает что такое хакатон — добро пожаловать в википедию. Вкратце: собираются праздно шатающиеся программисты, дизайнеры и прочие около IT-шные персонажы, сидят 1 или 2 дня (в зависимости от формата хакатона), пьют кофе, иногда едят, и выдают в результате на суд жюри и других участников результаты своих потуг — веб сайты, мобильные приложения, программы для десктопов, иногда какие-нибудь железки или роботов. Кто на что горазд, в общем. Мы с напарником оказались горазды на мобильное приложение…Наверное, в отличие от большинства участников хакатонов, многие из которых считают, или хотят считать себя стартаперами, я стараюсь за отведенное время сделать не сколько проект, имеющий потенциал захвата мира, а проект прикольный, обладающий вау эффектом, ну или хотя бы пытающийся удивить. Это и есть та самая «прикольная штука», которую периодически хочется мне сделать, а не очередная социальная сеть для собак, сервис обмена книгами или поиска попутчиков. Все это уже было, и не один раз. У меня даже на одном из хакатонов возникла идея сделать прогу для его участников, в которую бы они вбивали свои идеи/проекты, а другие участники бы их оценивали: «Боян»,»100500-ый фейсбук», «Сервис краудфандлинга? Что, серьезно?». Я даже эту идею подарил для реализации всем желающим. Но, судя по всему, никто не оценил. Но я опять отвлекся.
Мобильное приложение, которое мы собирались сделать (и сделали), не должно было быть полезным, упрощающим жизнь его пользователю, или приносящим ему выгоду. Оно должно было служить одной цели — радовать глаз. И в первую очередь его создателям. Нам должно было быть приятно, что все получилось, работает так, как мы задумали. И выглядит неплохо. В итоге так все и получилось. Прогу мы назвали… Sunduk. Как выразился напарник — «это название, сгенеренное за 10 секунд». Нужно было срочно регистрировать команду в списке участников, и ничего не оставалось, как включить генератор названий проектов у себя в голове. И генератор выдал — «Sunduk». Пришлось с ним согласиться. Народная мудрость гласит: «Как лодку назовешь, так она и поплывает». Возможно, именно это название и сыграло роль в номере места, которое мы заняли. А заняли мы «никакое» место.
Тем не менее, проект получился. Идея заключалась в следующем — с помощью одновременного свайпа (swipe) по экранам телефонов, лежащих рядом друг с другом, законнектить их между собой, и передавать «деньги» жестами с одного телефона на другой. В качестве «денег» могли быть файлы, музыка или что-то подобное, но «qiwi → e-commerce → деньги». Писали мы все это на Unity3d — очень удобный движок для кросплатформенной разработки. Пришлось честно активировать 30-дневную Pro версию Unity3d, ведь в бесплатной не-Pro версии отсутствует возможность работы с сокетами под мобильными платформами. А сокеты как раз нам и были нужны — телефоны между собой связывались и общались по сети.
Кульминация Техническая часть проекта представлялась нам простой. Но так всегда бывает, пока не приступишь непосредственно к ее реализации. Так получилось и в этот раз. Был момент ночью, когда все хотелось бросить. Ничего не работало. Точнее работало, но через раз. Между 2 мя компами все ок: соединяются нормально, деньги передаются. А 2е мобилы (iPhone и Android) — ну никак. То видят друг друга, то нет. Мы и так, и эдак подходили к проблеме. Даже хотели найти стабильную последовательность действий (сначала тут включаем, потом здесь через 5 секунд…), при которой программа работала без сбоев — чтобы на демонстрации проектов не ударить в грязь лицом. И вроде ее нашли. А потом бац — и отработанная последовательность перестала работать…Эта проблема и приближающийся дедлайн подбавляли адреналина. Тут никакие редбулы и бёрны не нужны, хотя на подобных мероприятиях они, наверное, являются самыми популярными напитками. Кто-то спал, храпя и нервируя неспящих участников. Кто-то мерно программил свой сервис для поиска банковских вкладов. А мы лихорадочно искали причину — «Почему, !#$@%, ничего не работает?!». И нашли ее!
Развязка Причина всего этого безобразия нашлась спустя несколько часов после первых симптомов. Все дело было в установленном софте на Android телефоне — виновником была Opera Max. Это такая штука, которая должна сжимать мобильный (не wifi!) трафик, экономя пользователю деньги. Кому-то деньги, возможно, эта прога и экономит, но у нас она сожрала много нервов, сил и времени.Почему-то wifi трафик шел через VPN, созданный Opera Max, и из-за этого терялись бродкаст пакеты — наш сервер не мог сообщить потенциальным клиентам, что он жив и находится на таком-то IP. Во всяком случае все резко заработало, как только я снес эту, безусловно, полезную (но не в нашем случае) прогу. А всего лишь нужно было захардкодить IP сервера в клиентскую часть Сундука и жить спокойно. Многие так и поступили бы, и были бы правы. Но «у нас свой путь» ©.
Зато счастья были полные штаны, когда телефоны наконец увидели друг друга и первые $50 передались с одного экрана на другой. Мы поняли, что не зря не спали эту ночь и пилили код. Задача была выполнена — проект сделан и работает, мы разобрались в новых для нас вещах, поняли, что нужно удалять весь beta-софт перед хакатоном. Но главное — мы бесплатно ели целых 2 дня!
Эпилог А вот и Сундук, точнее его содержимое:[embedded content]