ДержХак 2014 + Х = eGoverment. Поиск переменной

6-7 сентября в Киеве прошел первый государственный хакатон Украины — “ДержХак-2014”. Местом проведения был выбран конференц-зал стадиона “Олимпийский”. Организовывали это мероприятие ребята из ГП “Информационно-ресурсный центр”, которые занимаются госреестрами. Они заявили о призовом фонде в размере 898 560 грн + призы от спонсоров, которыми выступили Google, Microsoft, Cisco, Oracle и прочие, представители которых были также менторами. На открытии выступал министр юстиции и еще пара важный дядей.

На хакатон мы пошли втроем: я (Женя) и мои товарищи Максим и Андрей. Мы с Максимом учимся на 4м курсе факультета прикладной математики в КПИ, Андрей — старший научный сотрудник Института кибернетики им. Глушкова НАН Украины.

Задача хакатона была разбита на 2 направления:
1. Информационная безопасность (обойти защиту поиска в едином госреестре).
2. Создание новых сервисов с использованием предоставленного API.

API предоставляло поиск по единому госреестру юр. и физ. лиц — предпринимателей.

Мы решили создавать новый сервис. Надо было выяснить, как выглядит API наших реестров, и проверить свои силы в создании проекта за сутки. Для большего интереса решили поменяться ролями с Максимом: он занялся написанием необходимого функционала на JS (хотя обычно пишет под .NET), я взялся за парсинг данных, получаемых по API на Java (хотя обычно пишу frontend), а Андрей эти данные вытаскивал.

Но все не так просто, как звучит!

Первый день — API. Придя на место, мы первым делом решили ознакомиться с любезно предоставленными нам распечатками, содержавшими описание API. На этом моменте наступил первый шок: то, что гордо именовалось “прототип системи конвертації даних пошуку в Єдиному державному реєстрі юридичних осіб та фізичних осіб-підприємців у формат, придатний для сприйняття автоматизованими системами”, оказалось простейшей вещью. Система позволяла найти физ. лицо по номеру паспорта или юр. лицо по восьмизначному коду (ID) в реестре. В ответ сервер плевал XML. Всё.

То, что компанию нельзя искать по названию, — только по коду (узнать который можно, только найдя ее в реестре), Максим сразу обозвал безумием. Тогда он и подозревать не мог, что на этом проблемы не закончатся.

Пока мы собирали в кучу потенциальные идеи для будущего сервиса, постепенно подтягивались другие участники, а организаторы подключали видеосьемку и тестировали большой центральный экран (метра 3×7 в размерах). Половину времени на нем шел видеоряд с красиво подсвеченными кусками кода в перемешку с кадрами с турниров по Dota 2. Также — видимо, чтобы участники не скучали — постоянно играла музыка, громкость которой можно было оценить как “отвлекающая”.

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

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

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

Экосистема. На любом подобном мероприятии одной из основных и неотъемлемых составляющих является наличие свободного доступа к интернету. На “ДержХаке” интернет был качественный, но не у всех. К примеру, среди членов нашей команды интернет отлично работал только у Максима, у Андрея — с переменным успехом, а у меня — практически не работал вообще. Организаторы пытались исправить ситуацию, но не всегда получалось.

Еда. Как известно, для продуктивной работы, кроме ясной головы, необходим полноценный рацион питания. В этом плане хакатон более чем порадовал. Ожидали печеньки и пиццу, а получили роскошный ресторан с отличным обслуживанием, который оценили бы даже самые привередливые гурманы. После этого настроение, конечно же, поднялось.

Реализация сервиса. Хорошо подкрепившись и распределив задачи за обедом, мы вернулись к работе, и каждый занялся своей задачей:
— Андрей занялся вытаскиванием данных с их сервера.
— Я приступил к парсингу получаемых XML-ин и переводу данных в необходимый нам формат.
— Максим начал работу над графической визуализацией.

Что сложного в получении доступа к данным, если у вас есть API?

Как уже говорилось ранее, получить XML с данными о предприятии можно только зная его индентификатор, поэтому нам не оставалось ничего другого, кроме как перебирать все подряд. ID был 8-значным, поэтому решили начать где-то с 30000000-го идентификатора и тянуть все по очереди. На каждые 20 скачаных XML-ок приходилась одна с данными, все остальные были пустышками.

Результаты, возвращаемые сервером, решили подкинуть еще одну ложку дегтя. Сравнив 3 первых полученных результата, я заметил сразу несколько несовместимостей. К примеру, один из файлов содержал поля “Фамилия” и “Имя Отчество”, а другой — “Фамилия Имя Отчество” в виде одного поля. Также удивил формат куска XML с учредителями: в одном файле это был массив Founders[Founder["name","code","info"], Founder["name","code","info"]].
В другом файле, где учередитель был всего один, было Founders[Founder["name","code","info"]]. Вроде как всё хорошо, не правда ли? Но тут в глаза бросается третий файл: Founders["name","code","info“].

Эти и многие другие неоднозначности отняли много времени на учет всех “стандартов”, но, к счастью, это решалось просто.

Примерно к 5 часам вечера ушли все организаторы, и осталось около 25 участников из 100 и охрана. Уход участников можно объяснить возможностью использования API удаленно из дома, но как понимать отсутствие вообще кого-либо из оргов в ночной период? Быть может, госслужащие просто не понимают, что после шести вечера тоже может что-то происходить. Вместе с организаторами исчезли назойливая музыка и ребята, которые днем брали довольно забавные интервью. Забавные они были тем, что репортеры понятия не имели, что это за мероприятие. Всё их представление укладывалось в “тут собрались хакеры что-то взламывать”. Некоторые вопросы были по теме, но ответов ребята не понимали. Ну, это не их профиль, — хорошо что хоть пытались осветить событие.

Цель оправдывает средства. Тем временем кодинг шел успешно. Оценив свой прогресс, мы подумали, что даже сможем выкроить пару часов сна и быть свежими на презентации. Действительно, к двум часам ночи проект был почти готов. Мы сделали карту с отображением всех предприятий и возможностью фильтровать результаты по различным параметрам, например, по виду деятельности компании. Чтобы отобразить все это, пришлось набить себе словарь координат по почтовым индексам, так как популярные геокодеры не дают выжимать себя бесплатно. Также прикрутили красивые графы, позволяющие найти общего основателя компаний или посмотреть дочерние предприятия. Еще сделали генерацию pdf-выписки с информацией по компании, подписанной электронной цифровой подписью. Такой набор услуг мы и переплели в нашем сервисе. Забекапившись, мы разъехались по домам.

Результат: Електронні адміністративні послуги для бізнесу (демо-версія)

В 8 утра, вернувшись, мы застали тех же 6 человек, которые оставались, когда мы уходили. “Довылизали” все до полной готовности и сделали презентацию. К половине 10-го начали подтягиваться организаторы мероприятия и остальные участники. В 11:00 главный дядя объявил, что часть членов жюри опаздывает, и мы начнем без них.

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

Справедливости ради стоит отметить, что были команды, показывающие демо, и с интересными идеями. Мне лично запомнились ребята с проектом по сравнению предприятий и команда, которая представила сервис по слежению за изменениями в реестре.

Удивили команды, которые вообще не пытались пользоваться API и просто делали какие-то общеполезные вещи, наподобие своего упрощенного документооборота.

Кульминацией было предложение организаторов провести последнюю презентацию в комнате с жюри. Все это было похоже нa конкурс презентаций.

Награждение. После небольшого заседания жюри вышло награждать победителей. Хакеры получили дипломы и возможность устроиться к ним на работу. А среди разработчиков было 2 очень похожих номинации — мы, в частности, заняли 2-е место, но на призах это никак не отразилось: для всех призовых мест щедрый приз был один. Это контракт с ГП “Информационно-ресурсный центр” на получение скидки! Суть вот в чем: стоимость одного запроса к ним на сервер для получения информации о предприятиях или физ. лицах стоит 3 грн, но благодаря контракту мы можем делать запрос всего за 1.98! Именно эта скидка была оценена суммарно на все призовые места в экономию на те 898 560 грн, о которых было упомянуто в начале статьи. Правда, как у них вышла такая математика, я не знаю.

Также были призы от спонсоров — домены в кириллической зоне .укр для 3х команд, у которых названия были не на английском языке, и ноутбук для одного из участников.

Мы немного пофотографировались на память и поехали домой.

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

По-видимому, целью хакатона было “Зламати систему захисту Держреєстру не вдалось”, т. е. шаг навстречу бизнесу в виде электронных выписок из национального реестра < 200 грн пока не планируется. Добро пожаловать в новую страну!

  • Популярное

18 комментариев

Подписаться на комментарииОтписаться от комментариев Комментарии могут оставлять только пользователи с подтвержденными аккаунтами.

А в чём ценность запроса в реестр? Данные, полученные из реестра таким способом, имеют юридическую значимость? Или это просто в ознакомительных целях?

Система позволяла найти физ. лицо по номеру паспорта или юр. лицо по восьмизначному коду (ID) в реестре.
І за один запит треба заплптити 3 грн!
Мне лично запомнились ребята с проектом по сравнению предприятий и команда, которая представила сервис по слежению за изменениями в реестре.
Як це можливо з такими цінами та таким принципом роботи?

З таким принципом, запити, наприклад, в zakon.rada.gov.ua будуть теж платними.
Це просто нонсенс.
Якщо вже й брати гроші за запити, то хіба-що десь після 10к-100к запитів і то лише для того, що не досили.

И еще затрону вопрос менторов и спонсоров...

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

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

И тут ваши критичные комментарии и обзоры очень помогут...

ПС. С инетом конечно мы крупно прокололись... Но исправить в тот момент ничего не могли...

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

Что ж, по крайней мере государство хоть на словах поддерживает IT. Такие акции мало-помалу улучшают украинский инвест-климат.

Ну что же, поделом и есть за что...
Спасибо, что не поленились описать свое мнение, это полезно.

Все недочеты принимаем и постараемся на будущее их избежать.

Немного про математику.
Действительно любой человек или компания, может получить услугу прямо у ИРЦ. Но на условиях 100% предоплаты и по 3 грн. за запрос. Понимая, что надо развивать множество разных сервисов, которые будут использовать наши данные (не буду перечислять рынки и целевые аудитории), мы разработали систему договоров с провайдерами услуг.
Суть этих договоров довольно проста. Если компания хочет развивать свой сервис и хочет расти, то она может себе позволить предоплатить часть запросов с учетом того, что они не переходят на следующий период. То есть, провайдер должен делать предоплату ежемесячно в объеме — первый месяц 1000 запросов, второй месяц 2000 запросов и в течении одного года он выйдет на предоплату в 12000 запросов в месяц и на этом количество предоплачиваемых запросов фиксируется. Но при этом предоплаченные запросы не переходят на следующий период. И стоимость запроса для провайдера составляет 2,28 грн.
Может быть это и не совсем гуманная система взаимоотношений, но для развивающегося сервиса вполне приемлема.

Победителям мы предложили заключить договор на условиях отсрочки на 1 год условий по предоплате, что снимает обязательства инвестировать в запросы и дает возможность оплачивать только те запросы, что были сделаны. На мой взгляд не плохо, есть возможность инвестировать в развитие сервиса, а не в обеспечение его существования в виде предоплаты за запросы. В течении года выйти на необходимые объемы и спокойно уже выполнять норматив предоплаты. К тому же цена 1,98 — это не 2,28 :)

Вот такая простая математика....

Ведущий: ответив правильно на следующий вопрос Вы получите приз — мороженое!
И так, вопрос: сколько будет 2 + 2?
Участник шоу: я знаю, я знаю! 4! Где моё мороженое?
Ведущий: а под мороженым подразумевалась возможность закупить у нас 1000 штук мороженого по цене 9.99 грн и продать его в рознице по цене 10 грн. Общая скидка составляет 10 грн. — на неё вы и купите себе мороженое! Поздравляем победителя!

Скажу тебе по секрету 2+2=11 И попробуй опровергнуть...
Вы забыли про одну малость. Никто никому ничего в перед не продает. То есть если есть проект, и он актуальный и востребованный, то он может получить услугу, а заплатить только после того, как продаст свою услугу.

То есть для особливо математически подготовленных:
0+3 = 3
3-1,98 = 1,02

А не вот так
0-1,98 = −1,98
-1,98+3 = 1,02

На результат конечно не влияет, но в то же время первый вариант предпочтительней. Или вы не согласны с этим?
И мне вот интересно, как много Ваших поставщиков, Вам устанавливает рассрочку платежа? Или Вы считаете, что это тоже малоценно?

Скажем так, ликвидность фонда хакатона в 1 млн. грн. оказалась ниже ожидаемого. Конечно же, условия распределения этого фонда были указаны заранее, НО, всё же стоит продумать что-то более приземлённое, чем скидку на ресурсы. Тот же контракт с венчурным фондом был бы, IMHO, привлекательнее.
ЗЫЖ Сужу только по отзывах участников хакатона, они что-то не особо в восторге от такой бизнес-возможности. Думаете они не могут пока ещё адекватно оценить все перспективы их потенциальной выгоды?

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

Да и наши призы были заточены как раз на активность менторов, которые могли бы выбрать себе стартап, помочь его правильно презентовать, выстроить экономику и еще получить в этот проект специальные условия на услуги...

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

Жаль, что спонсоры и менторы сдулись.
Видать привлекательность государственного сектора (в качестве ИТ стартапа) для нашего внутреннего капитала является довольно низкой. Да и ситуация в стране экономическая и политическая... не способствует.
Но начинания правильные, а наладить цепочку от исполнителя к заинтересованным лицам в продукте — тернистый путь. Удачи Вам в этом.

А кстати 2+2=11 опровергнуть попробуешь?

Пойдём от противного:
|| - это 2 палочки;
+ - это оператор сложения, подразумевающий объединение объектов слева от него и справа;
= - это результирующий оператор, справа от которого результат выполнения операции слева.
Итого имеем:
|| + || = ||||
две палочки плюс две палочки равны четырём палочкам.
Т.к. число 4 (четыре) не равно числу 11 (одиннадцать), то считаю теорему, гласящую 2+2=11 опровергнутой.

ЗЫЖ Но у вас наверняка есть некая хитрость, которая сможет внести смуту в этот стройный поток рассуждений уровня школьника.

Ага ее вводи троичная система исчисления :)

firm.ieconomy.org.ua
Баг со спиннером (если это конечно спиннер) в автокомплитах

криво поправлено))

теперь когда ты вводишь текст и он подгоняет комплит, серый спинер дергается.

Expected: Когда вводишь текст серый стает синим и крутящимся. При комплите опять стает серым.

Подписаться на комментарии