duck duck dns dns go go

тут буде більш детально розписаний досвід по вайбкодінгу бюджет трекера і туду ліста сервіса, шо прокладає маршрути – https://gpxgen.lamers.com.ua/

план

  • чому і нащо воно треба
  • досвід спілкування з аі асистентами
  • шо нового я вивчив в процесі
  • опис сервіса, шо він може і таке інше
  • висновок

чому і нащо воно треба?

задача – прокладати собі маршрути як конструктор з ділянок на мапі. ділянки – це спершу скачані певні сегменти з страви, згодом був доданий свій сервіс, шоб ділянки малювати по мапі і зберігати в базу самому. основна фішка – базу з ділянками наповнюю я сам (як адмін, з гарними ділянками допомогали різні люди), тобто я точно знаю шо ок, а шо не варто включати

є 100500 різних сервісів у прокладанні маршрутів. є велооріентовані сервіси, тіпа страва і комут, є якісь звичайні сервіси, але в усіх є або якісь незручні обмеження, або сервіси платні. чи є десь фіча з ділянками як у мене – хз

до цього я зробив бота в телеграмі, який прокладав маршрути враховуючи додані мною ділянки, то трохи набив руку))

в процесі Женя “НЕ СТЕЖКА ЧЕРКАСА” Черкас накидав своїх вимог, шо цей сервіс має робити. вийшло отаке прд (на скріні – лише частина)

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

наприклад, от вам витрати сервіса https://gpx.studio/, кожен місяць винь да полож 600+ евро тіки за арі мапбокса:

досвід спілкування з аі асистентами

спершу я працював з безкоштовними веб версіями чатгпт і гемінія. флоу – копі-паст кода туда сюда. поки файл невеликий, то воно працює +- норм, але як тіки проєкт розростається, то воно перестає нормально працювати

аі раз через три починає шось десь покращувати там, де не просили, і єфективність роботи стає радікально атріцательной, бо на відкати і фікси де шось збоку поломалось йшло більше часу, аніж на просування проєкта вперед

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

кароч по грошах на аі було витрачено 0 грн 0 коп

все це аі потужне ппц, бо навіть з моїми відсутніми навиками промпт інженірінга вишло зробити і запустити досить складний сервіс. звісно по ходу ти починаєш вчитись, як робити запити краще

наприклад, був момент, коли потрібно було додати новий мод прокладання маршруту, в якому потрібно магнітіть ділянки. мод додали, ділянки не магнітяться. купа часу на передачу логів гемінію, фікси-фікси-фікси, магніт не працює

а потім виявилось, шо новий мод просто не активується під капотом. тобто, ти тицнув кнопку, думаєш шо новий мод включився, гемінію ти кажеш шо після включення новий мод не працює як треба, геміній шось фіксить, а по факту мод працював з самого початку, просто він не активувався, і ти фіксиш не те, шо не працює)))

тому запит замість – “додай новий мод шо вміє бла бла бла” – починає виглядати як “додай логування при перемиканні модів”, тестиш шо перемикання працює, а далі вже просиш додавати оце твоє бла-бла-бла

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

шо нового я вивчив в процесі

В ПРОЦЕСІ Я ВИВЧИВ ПІЗДЕЦ СКІКИ ДОХУЯ ВСЬОГО!!1111

по перше, шо сервіси такого плана як у мене не прокладають маршрути самі. для прокладання маршрута сервіс звертається до сторонніх сервісів (у мене це – https://openrouteservice.org/, ors). умовно ти клацая по мапі передаєш ors дві точки, між якими тобі прокладають і повертають маршрут

все це гавно технологія працює по арі, тепер я знаю як це підключається)

по друге, я зрозумів чого всюди таке шопопало з вирахуванням набору. грубо кажучі, ти маєш маршрут (який тобі проклав ors) що складається з купи точок з координатами (ширина, довгота), передаєш усі точки цього маршрута ще одному сторонньому сервісу (у мене це mapbox), mapbox повертає тобі параметр висоти для кожної точки. точність цієї висоти приблизна, бо якщо хочеш прям точно, то це деякі сервіси пропонують таке, але це ДУЖЕ ДОРОГО, далі маючи маршрут з координат де у точки є ширина, довгота, висота, тобі треба налаштувать алгоритм як рахувать набір

рахувать набір в лоб – не варіант. якщо у наступної точки висота більше, ніж у попередньої, то різницю між висотами точками можна вважати набором висоти, але так як у нас висота має +- таку собі точність, то навіть на абсолютно рівній асфальтовій дорозі можна отримать 20м набору (так сказать, на рівному місці). якщо маршрут йде через ліс, то там взагалі будуть шалені цифри, бо всі ці ямки горбочки – все буде рахуватись

шоб таку самодіяльність пресекти є трешхолд, який задає яку різницю між сусідніми точками ми враховуємо у сумарний набір, а яку – ні. цей параметр методом тіка ти підбираєш сам, тіпа ставиш трешхолд 0.5м, прокладаєш маршрут, дивишся який твій сервіс тобі нарахував набір, заливаєш цей маршрут в інші сервіси, і дивишся як його вирахують вони

цей алгоритм стопроц набагато складніший всередині, і як його налаштувать кожен сервіс обирає сам, саме тому заливаючи один і той самий маршрут (чи трек, який ти проїхав) різні сервіси можуть (і будуть) показувать різні значення набору висоти

додаткове питання, це кількість точок, який сервіс використовує при прокладанні маршруту, це також буде впливати на те, який набір вам нарахують) є алгоритми, які прибирають точки в середині прямих ділянок, бо для навігації вони не роляють, трек стає меншим по розміру, але на набір таке самоочищення впливать може

кароче, точно рахувать набір – СКЛАДНО ДОРОГО НЕОДНОЗНАЧНО, і у велосипедистів точно нема таких грошей, шоб це собі дозволити)))

є вже готові сервіси, які можуть розраховувать висоту локально на сервері (тобі не треба звертатись до mapbox), але він у мене чогось не пішов, бо у мене самий бюджетний віртуальний сервіс з 1гб оперативки, а для open-elevation дуже бажано мать 8гб оператівки, + купа місця на диску (геміній каже – 5+ гб для покриття України)

з усього нового мене саме оця історія з набором впечатліла сильніше за все інше

з технічної точки зору трохи познайомився з докером, як воно там працює. цікава штука, але вивчати її було актуально мабуть років 10 тому))))

дуже сподобалось налаштовувать вебсервер через веб морду nginx npm. гарна веб морда, хуяк хуяк працює, нема оцієї дрочні з sites-available, sites-enabled, ln -s, бла бла бла

ну і звісно десь шось згадав, а десь познайомився з новим при повному флоу підняття веб сервіса – керування доменом, оренда сервера, кід на гітхабі, пуш коміт докер компот

опис сервіса, шо він може і таке інше

тепер про сам сервіс

маємо мапу з доданими ділянками. по ділянці можна клікнуть, і почитать шо там відбувається

прокладання маршруту, route planning

клікаючи по карті ставляться точки, між якими прокладається маршрут

є декілька конфігів, яким чином маршрут прокладається між кліками – cycling-mtb, cycling-road та hiking задають які стежки використовувать (роад буде прокладать асфальтом, хайкінг буде використовувать пішохідні стежки через їбеня, мтб буде десь між ними), manual буде малювать просто прямі лінії

basic routing чисто клікаєш і додаються кроки, advanced routing залишає в кінці кожного кроку зелені маркери, які можна перетягать в сторону, і маршрут буде відповідно перебудовуватись

якщо включена галка segment magnet, то коли клікаєш на якусь ділянку, сервіс буде прокладать маршрут через неї. ділянки можна включать в обидві сторони, початок ділянки визначається тим, до якого краю ділянки ти ближче клікнув

route editing дозволяє ставити на маршруті зелені маркери, які можна тягать туда-сюда, і між ними буде перепрокладатись маршрут. на логіку перебудови маршрута впливає конфіг, ото шо cycling-mtb, cycling-road, hiking, manual

route trimming дозволяє обрізать хвости – в режимі trim back and forth ставите 2 маркера, і сервіс підсвітить і виріже при натисканні на кнопку підсвічену частину

також можна обрізать початок і кінець трека в режимі trim start/end

також можна скачать маршрут, завантажить маршрут (шоб його редагувать), можна інвертувать старт-фініш, ну і таке інше

далі є каталог треків, route catalog. там поки тіки 5 маршрутів, які були залиті для тестування. клікнувши по маршруту його можна, наприклад, скачать)

також обраний маршрут можна редагувать, клікнувши edit route

далі з ним можна робить шо завгодно, прокладать далі, редагувать, перетягувать, включать в нього ділянки, і таке інше, кароч все шо є в route planning

в segment visibility можна обрать яким кольором які сегменти показувать

чи сховать якісь сегменти взагалі

gpx uploading))) мерзкій функціонал)) тут можна взять чийсь чужий заїзд (наприклад, цей), скачать його, залить ув сервіс, і використовувати його шоб прокласти свій маршрут

ставлю колір для чужого заїзда червоний, відкриваю route planning, і можу на основі цього заїзда прокладати свій

можна залити до 15 треків, які будуть відображатись на мапі, обрати їм різні кольори, і далі вже прокладать шось своє комбінуючи чужі заїзди

також є секретна адмінська менюха segment creator. раніше я міг зі страви скачувать чужі сегменти, зараз цей функціонал прикрили. трошки погоревал, а потім подумав – хулі йопт, та я сам зможу ці сегменти створювать

суть – залив чужий заїзд, виділив якусь частину трека, яку я хочу шоб стала сегментом у мене, клац клац і готово!

хоба вжух сегмент у мене в базі, далі можна його класифікувать, додать опис, чи просто нахуй видалить

адмінка працює через google oauth, тому автентифікація має бути досить секюрною))

висновок

вийшло захуячить досить складний сервіс, яким я активно користувався до моменту, коли катався. останні місяць катати (та і взагалі виходить з хати) бажання 0, тому сервіс буде висіти от в такому досить сирому вигляді. ну, а далі – подивимось, дасть бог він колись знову стане для мене актуальним, бо кататись по треках, шо проклав сам – приємно, а кататись по треках, шо проклав сам на сервісі, який ще сам і написав – приємно вдвойне. хуй войне!

https://gpxgen.lamers.com.ua/

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.