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

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

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

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, я больше не знаю мест, где была бы собрана информация о большом количестве маяков России. Именно поэтому я говорю о превалировании количества над качеством и это только плюс. Да, на поиск и проверку исторической информации для каждого маяка я не могу потратить столько сил и времени, как это было с маяками Прибалтики, но... это можно будет сделать позже. Главной фишкой приложения "Маяки России" будет то, что все данные будут храниться на сервере и для их изменения не надо будет обновлять приложение. С фотографиями та же ситуация - все они будут не моими. Я с несколькими людьми, которые мне помогают посильно, ищу фотографии в Инсте и ВК, я списываюсь с авторами, большинство из них без проблем предоставляют свои фотографии. Но и в этом случае, найти фотки абсолютно всех маяков - невозможно. Но я рассчитываю, что эта часть контента будет добавлена уже после релиза. Для этого внизу каждой страницы с инфо о маяке добавлена кнопка связи. Вот такой проект. В следующих публикациях я расскажу о том, на какой стадии он находится сейчас, а также непосредственно о программировании.

2

Я тут с новым и старым приложениями забыл обо всём на свете, вчера с удивлением узнал, что у нас президент сменился. Скоро будет несколько публикаций именно об этом (о приложениях, не о президенте), а пока продолжу рассказ о создании Таллиннского верхнего маяка в масштабе 1:500. В прошлый раз я остановился на заливке. Не в пример всем предыдущим работам, тут всё пошло как никогда плохо. Смола нещадно лилась между опалубкой и основанием. Я несколько раз полностью её сливал, отделял опалубку и выставлял заново. К уже пропитанной жидкой эпоксидкой древесине ничего не клеилось и ситуация не улучшалась. Пришлось признать, что я потерпел, пожалуй, самое большое фиаско при этой заливке. Пришлось полностью разобрать форму и горячей водой смыть смолу с деревянного основания. Чтобы не повредить маяк, с него смолу я снимать не стал, а дал ей полностью высохнуть, перевернув поделку вверх ногами. Параллельно с этим, я заливал и второй экземпляр. Его форму, перед заливкой смолой, я залил водой, чтобы проверить на протечки. Вода не вытекала. А смола, ска, начала!.. Ну как так-то? Благо, тут протечки были умеренные и в итоге всё получилось. Для первой поделки я тоже собрал новую опалубку, проверил водой и залил вообще без протечек.

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

Шлифовка, к счастью, "сюрпризов" давно не преподносила. Научился начинать с более крупного зерна (240, а в случаях, когда надо снимать "горбы" по 1-2мм - 60), делать грань ровной и только потом переходить на более мелкое зерно. По итогу, получается ощутимо быстрее.

Ну и последнее, о чём хотел бы рассказать - подсветка. При первом приближении всё, как и у Найссаара: моргающий светодиод в лантерне и постоянно горящий в башне. На самом деле всё куда интереснее. Когда я делал коробочку для фонаря, я научился сохранять состояние в память при отключении питания. Это навело меня на мысль реализовать таким образом смену режимов, не уродуя основание переключателем. Подключили кабель питания - окна башни светятся с максимальной яркостью, отключили и подключили ещё раз - со средней, отключили и подключили в третий - не светятся вообще. Идея показалась мне настолько прекрасной, что я буду использовать её и в следующей поделке. Да, светодиод в лантерне всегда светит на максимум.

Таллиннский верхний маяк Таллиннский верхний маяк Таллиннский верхний маяк

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

22

Трудности картографии

Началось всё с того, что знакомый зарепортил мне ошибку в моём приложении: на iOS не работает кнопка maps.me. Проверил у себя на android - работает, проверил на iPad - не работает. Пошёл гуглить, в чём причина и открылась небольшая табакерка Пандоры. Оказывается, у проекта сейчас переломный момент. Если вкратце, то там новые хозяева, которые имеют видение будущего очень отличное от всей прошлой идеологии проекта. Подробно всё описано тут и тут. Чего в этих статьях не написано, но что обнаружил я:

  • вся информация об API сервиса убрана, есть только инфа двухгодичной давности на GitHub
  • deeplinks (ссылка извне непосредственно в приложение, то, что используется в моём приложении) работают там, где это не сломали
  • официальной информации о deeplinks, опять же, нет

Честно скажу, сам я maps.me никогда не пользовался. На Жужмуе видел у других участников поездки, что тропки и дорожки такого удалённого острова указаны там весьма подробно. Позднее узнал, что там ещё есть возможность экспортировать целые списки маркеров. Очень удобно, но попользоваться уже не судьба. А вот в приложении надо было ошибку как-то исправлять. Первоначальной идеей было просто убрать кнопку на iOS, но не очень она мне нравится. Неизвестно, когда deeplinks и на android сломаются. Разумнее найти альтернативу и заменить maps.me на что-то другое. Я потыкался-помыкался, но ничего хорошего не нашёл. Либо у приложений нет deeplinks, либо популярность их невысока. Когда уже отчаялся, реализовал вариант со скрытием кнопки (обновление пока не вышло) и сегодня утром когда писал этот текст, ища статью на хабре с описанием трудностей maps.me, я нашёл сервис Organic Maps. Это отпочкование от maps.me, но, судя по описанию, весьма продуманное. Сразу же написал в чат поддержки в телеге, получил информацию о deeplinks. Попробовал, всё работает, но карта в приложении не центруется и маркер остаётся где-то за кадром. Потом долгое общение всё в той же телеге, тесты, открытие issue на GitHub, ужин. Короче, я не очень помню как прошёл сегодняшний день. Воскресенье программиста, мля.

18

Верхом на ракете

Читаю я в последнее время откровенно мало: за этот год всего четыре книги. Хочу немного рассказать о последней прочитанной. Я даже не помню откуда я о ней узнал, так как книга для меня совсем не типичная. Это биография американского астронавта Майка Маллейна "Верхом на ракете: Возмутительные истории астронавта шаттла". Так случилось, что книга невероятно хорошо мне зашла и я с удовольствием дочитал её до последней страницы, не смотря на немалый объём. Вероятно, причина этого в том, что в книге умело перемешаны технические подробности, солдафонский юмор, простые семейные ценности и детские воспоминания. Читал её на Жужмуе, читал на Бенгтшере, брал с собой на Мерсрагс, но там до чтения не добрался. Могу точно сказать, это лучшая из книг, прочитанных мой за последние три года.

Майк Маллейн

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

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