Приложение Маяки Эстонии

Коничива, уважаемый!

За время вашего отсутствия мы тут вон чего понаписали:

24

На прошлой неделе я, переполняемый гордостью, рапортовал в Инстаграме, что iOS-версия приложения "Маяки Прибалтики" впервые за почти пять месяцев обновилась и получила анимацию моргания. Теперь небольшой рассказ о том, что было до и немного после. К сожалению, Александр, который до этого, по сути, делал всю работу по версии для iOS, сейчас уже не располагает временем на такую помощь. Выход тут был один - покупать самому MacBook и осваивать сборку приложения.

Ранее я вообще никогда и никак с эппловскими устройствами не общался. Единственное исключение - рабочий iPad, на котором сайты тестирую. Учитывая всё это, у меня ушло три дня на установку и настройку Flutter и Xcode, сборку приложения и размещения его в AppStore. Сложнее всего было с сертификатами. Сертификат разработчика Apple, сертификат издателя Apple, сертификат разработчика iOS (а это чё, не Apple???), сертификат издателя iOS и куча каких-то других. Для меня всё это было так: сертификат для того, чтобы проехаться верхом на коне; сертификат для того, чтобы рассказать всем о том, как ты проехался на коне; сертификат для того, чтобы выслушать впечатления коня от этой поездки; сертификат для того, чтобы пересказать впечатления коня и дальше в том же духе. В итоге обновление было выпущено и... Быстро выяснилось: кое-что из того, что работало ранее, сейчас не работает. Александр сделал мне трансфер самого приложения в AppStore на мой аккаунт, но не передал никаких файлов. В итоге всё, что требовало отдельной настройки для iOS, перестало работать. А именно: все внешние ссылки (кнопка "Показать на карте" и кнопка обратной связи) и переведённое название приложения под иконкой.

Ещё когда обновление "Маяков Прибалтики" было на рассмотрении (это занимает примерно сутки), я сразу занялся вторым приложением - "Маяки России". Я узнал, что у Apple есть возможность выпустить приложение как бета-версию для тестирования. Идея мне очень понравилась и я сразу принялся это реализовывать. Разумеется, тут я столкнулся с теми же проблемами со внешними ссылками. За несколько дней я всё это исправил и сделал аналогичные исправления в "Маяках Прибалтики". В итоге, вчера вечером прошло проверку и было выпущено обновление для "прибалтийского" приложения и сейчас там всё работает.

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

Что же до "Маяков России", то и это приложение вышло в открытое плавание. На iOS его можно установить через специальное приложение TestFlight, ссылка здесь. На Android оно вышло в раннем доступе. Через поиск в Play Market его не найти (такое ограничение раннего доступа), качать надо по этой ссылке.

По итогу, тот редкий случай, когда я горд собой. Теперь я прошёл весь путь от создания приложения до его публикации, как в Play Market, так и в AppStore, да ещё и с заходом на тестирование.

Дальнейшие планы по "Маякам России" следующие. Сегодня я добавлю информацию о последнем маяке Белого моря и начну добавлять объекты Баренцева моря. По семейным обстоятельствам, времени в ближайшие пару месяцев у меня будет немного. Когда это сделаю, будет релиз приложения и начну следующий регион - Приморье. Вот он точно займёт много времени.

Крым наш?

Совершенно не знаю, что делать с маяками Крыма. Вопрос не этический, а тупо геополитический. Де факто это территория России, значит и маяки там - маяки России. Но мировые страны упорно не хотят этого признавать и... короче, хрен его знает.

10

Вчера наш Транспортный департамент выпустил свой ежеквартальный журнал и тут есть что обсудить. Я уже не раз писал, что совсем не понимаю логики, почему один объект считается маяком, а второй - лишь светящим знаком. Правило с дальностью видимости огня в 10 морских миль давно не работает. Так вот, международная организация IALA (International Association of Marine Aids to Navigation and Lighthouse Authorities) наконец-то более чётко сформулировала эти критерии:

  • маяк должен быть общедоступным, то есть, обслуживать не один какой-то порт, а использоваться в более широком плане
  • он изначально должен быть как навигационный знак, а не какой-то другой объект, адаптированный под функции маяка
  • основательная конструкция башенного типа
  • высота не менее 8 метров и ширина не менее 2 метров
  • дальность видимости огня не менее 6 морских миль

Эти правила вступили в силу 9 ноября сего года и... в Эстонии стало на 14 маяков больше. Новый статус получили маяки Верги, Карбимадал, Прангли, Виймси (задний), Вахемадал, Паслепа (передний и задний), Эммасте (передний), Сыру (передний), Пёёрилайд, Манилайд, Лыу, Раннапунгерья и Нина. По сути, формальность и не более, но ясности стало больше. А мне придётся ещё обновлять приложение.

Маяк Лыу

12

Не писал новостей на эту тему с начала октября, и могло сложиться ощущение, что приложением я совсем не занимаюсь. Для "Маяков России" я закончил добавлять информацию о маяках, количество которых увеличилось с 45 до 49. Фотографии добавлены для 30 маяков и больше у меня нет. Хочется надеяться, что добуду ещё. Начал добавлять тексты не своего написания о маяках и знаках Ладоги. На этом этапе пришлось сделать паузу и переключиться на "Маяки Прибалтики".

Ещё в самом начале, когда приложение называлось "Маяки Эстонии", мне очень хотелось наглядно показать сектора работы маяков, как это сделано у нас на сайте Navigatsioonimärkide nimekiri. Чтож, я перевыполнил задание! У меня это ещё и с анимацией.

Необязательные технические подробности: изображения секторов не являются заранее заготовленными картинками, а рисуются непосредственно в приложении по указанным характеристикам огня. Пришлось добавлять много новых данных и в какой-то момент я столкнулся с проблемой. Маяки Эстонии добавились без проблем, сектора соответствовали действительности, проверить не сложно. А вот первый же латвийский маяк явно светил вглубь берега. Оказалось, в официальных источниках всех трёх стран система координат (точнее положение 0 градусов) отличается. Более того, в двух латвийских официальных источниках сектора некоторых маяков не совпадают. Пришлось всё подгонять под "эстонский" формат, когда 0 градусов совпадает с 6 часами на циферблате часов и именно в этой системе они и отображаются в приложении, в разделе "Сектора и режимы огня". Всё это заняло 3-4 десятка часов работы. Также добавил новый маяк - Клайпедский передний. Ну и ещё одна старая задумка - изображения карт с указание маршрута до самых труднодоступных маяков. Для примера: комфортную дорогу до самого подножья заднего маяка Паралепа я нашёл лишь на свой четвёртый визит к нему.

Приложение "Маяки Эстонии" Приложение "Маяки Эстонии"

После некоторого количества обязательных технических проблем, стабильная версия приложения была выпущена. В Play Market она была доступна ещё вчера, в AppGallery она на рассмотрении, AppStore тоже в процессе. Отличное большое обновление, которым я горжусь и после которого технически уже и добавить-то нечего.

18

Продолжу немного рассказывать о приложении. Меня очень выбили из колеи проблемы с предыдущим. Сделал совсем небольшое косметическое обновление версии для Android и... приложение стало вылетать при попытке открыть карту. А карту я не менял совсем. С одной стороны ситуация анекдотичная, мол "я не трогал, оно само", а с другой - первые три дня я почти не вылезал из-за компьютера, пытаясь найти проблему. Приложение и карта в нём отлично работали на эмуляторе, компилировались без ошибок, но на смартфоне карта продолжала вылетать. Я перепробовал всё, на что хватило моего ума: отключал поочерёдно функции карты в готовом приложении, делал совершенно новое приложение с картой, компилировал примеры, идущие вместе с плагином карт. После трёх десятков часов таких ковыряний уровень понимания проблемы был нулевым. Я не продвинулся ни на миллиметр. Важный нюанс: я поменял компьютер, на который заново были установлены все программы для разработки и именно после этого ошибка и появилась. В какой-то момент появилась иллюзия победы: приложение, загруженное на телефон непосредственно из Android Studio, работало без ошибок. Я сделал новый релиз, загрузил в маркет, обновил приложение у себя на телефоне и... ошибка никуда не ушла. Очень сильно ситуацию усугублял тот факт, что в Play Market'е была опубликована версия с этой ошибкой и, как я узнал, нельзя было отменить и убрать последний релиз и вернуть предыдущий неглючный. Раньше можно было, а теперь Гугл убрал эту возможность. В итоге, переработка, гонка и стресс, а на выходе ноль. Идей больше не было, тикет на GitHub и вопрос на Stackoverflow не помогли совсем. Остался последний вариант - забить. Я дал проблеме отдохнуть от себя, съездил на Рухну и спустя дней пять начал ковыряться снова и уже к обеду работающая без ошибок версия была отправлена в Play Market на код-ревью. Перебрав ранее все остальные варианты, я начал разбираться с тем, что могло измениться при переносе приложения с одного компьютера на другой, а именно настройками проекта. Ранее я знал, что Flutter - это фреймворк, который использует язык программирования Dart. Чего я не знал, так это того, что в конечном итоге приложение компилируется под другой язык. Для андроида это Kotlin или Java, причём выбрать это в Android Studio можно лишь один раз при создании нового приложения. Я не уверен на 100%, но мне кажется, что почти два года назад, когда я только начинал делать "Маяки Прибалтики", возможности такого выбора не было. Насколько я понимаю ситуацию, при переносе проекта с одного компьютера на другой, результирующий язык с Java поменялся на Kotlin и это начало вызывать ошибку. Другой вопрос, почему под Kotlin карта не работает, хотя должна. А в моём случае изменение языка на Java убрало ошибку.

Теперь немного о новом приложении. Абзацем выше я уже писал, что начинал писать "Маяки Прибалтики" почти два года назад, в ноябре 2019. Сейчас я сел за новое приложение и реально офигел, как сильно изменился Flutter за это время. Изначально я планировал брать готовые куски кода из старого приложения и с минимальными изменениями использовать в новом, но за меня решили, что так не будет. В Dart появилась такая штука как Null safety. В теории вещь прекрасная, на практике хоть и не сильная, но постоянная "попаболь". Так что приложение "Маяки России" я пишу полностью с нуля.

Ещё одним аспектом, который изменился очень сильно, стали стили и темы. Поясню: во Flutter стили элементов можно писать непосредственно в самом элементе (как inline CSS в HTML), либо объявить и описать всё заранее (как CSS "нормального человека"). Сложность в том, что первый способ значительно проще и очевиднее, но отдельное оформление для светлой и тёмной тем работает только во втором способе, который на тот момент был плохо задокументирован. Короче, в "Маяках Прибалтики" мне пришлось делать очень костыльную смесь обоих способов. Сейчас этот вопрос проработан намного лучше и написать тему намного проще и удобнее.

3

Вчера на всех платформах вышло новое обновление для моего приложения "Маяки Прибалтики". Наиболее важные его фишки: новые фотки и информация о маяке Вилсанди и пять недействующих латвийских маяков. В загашнике есть ещё два таких маяка, но в этом году я до них точно не доберусь. Ещё одно важное изменение - замена кнопок навигационных приложений на одну общую. В ходе этих мозгоклюйств я узнал, что есть особый тип ссылок, его и использовал. Гораздо проще для меня и удобнее для пользователей. Небольшая часть изменений - "под капотом", в основном они сделаны с прицелом на новое приложение. Чтож, пожалуй, пора рассказать и о нём.

приложения "Маяки Прибалтики"

Когда я начинал ездить по маякам Эстонии, я был уверен, что доберусь лишь до некоторой части, но не до всех. Объездил все, многие по несколько раз. Когда меня спрашивали на радио, не планирую ли я расширить своё приложение с маяков Эстонии до Латвии или Литвы, я уверенно отвечал, что нет. Уже 10 месяцев, как там вся Прибалтика. И уж точно я никогда бы не подумал, что возьмусь за новое приложение о маяках такой большой страны, как Россия. Отправной точкой тут несомненно стала поездка на Жужмуй. Я пообщался с представителями российского комьюнити любителей маяков. Это интереснейшие люди, преданные маякам также фанатично, как и я, а кто-то и больше. И именно с целью продолжить это общение и завести новые связи я решился делать новое приложение. А ещё мне самому это очень интересно.

Я очень горжусь своим прибалтийским приложением, так как знаю, что за ним стоит. Такой информации в онлайне не найти нигде, кроме приложения и данного сайта, да и фото тоже. И это качество контента очень мне дорого. Для приложения "Маяки России" от этой идеологии пришлось отказаться - объём маяков слишком велик (по моим очень приблизительным прикидкам 300-400), а я сам видел из них лишь 7-8, а фоткал и вовсе три. Поэтому главная идея нового приложения - сначала количество контента, а потом его качество. Не надо трактовать это в плохом контексте. В приложение будут добавляться не все, а лишь интересные для туристов маяки. Кроме "мёртвого", что крайне печально, форума mayaki.ru, я больше не знаю мест, где была бы собрана информация о большом количестве маяков России. Именно поэтому я говорю о превалировании количества над качеством и это только плюс. Да, на поиск и проверку исторической информации для каждого маяка я не могу потратить столько сил и времени, как это было с маяками Прибалтики, но... это можно будет сделать позже. Главной фишкой приложения "Маяки России" будет то, что все данные будут храниться на сервере и для их изменения не надо будет обновлять приложение. С фотографиями та же ситуация - все они будут не моими. Я с несколькими людьми, которые мне помогают посильно, ищу фотографии в Инсте и ВК, я списываюсь с авторами, большинство из них без проблем предоставляют свои фотографии. Но и в этом случае, найти фотки абсолютно всех маяков - невозможно. Но я рассчитываю, что эта часть контента будет добавлена уже после релиза. Для этого внизу каждой страницы с инфо о маяке добавлена кнопка связи. Вот такой проект. В следующих публикациях я расскажу о том, на какой стадии он находится сейчас, а также непосредственно о программировании.

Цитировать
в комментарии