Разработчикски дневник
В този ден, След това & Сега, и Паспортни отпечатъци
В този ден, След това & Сега, и Паспортни отпечатъци използват различни техники: съединяване на календар, геометрично групиране и OCR. Те следват същия принцип: намери нещо полезно, обясни го и остави окончателното решение на пътешественика.
Три начина да върнем мина
Повечето софтуери за пътувания са оптимизирани за следващия път. Mapsake също трябва да бъде добър да връща някого към пътуване, което се случи пет, десет или двадесет години преди това.
Това обновление добавя три различни пътя към миналото. На този ден Намира календарна връзка. Тогава и сега намира връзка с място. Печати в паспорта запазва физически артефакт и го използва за подобряване на атласа.
Те споделят една дизайнова принцип: започнете с данни, които потребителът вече притежава, извършете интересната работа на устройството и изискайте потвърждение, когато възниква възможност за грешка в извода.
Има и идея за задръжка в този пуск, но тя не е „предаване на повече известия“. Животният атлас става полезен, когато създава нови причини да се върнем към стара информация. Най-добрият повод е реална връзка, която потребителът не е трябвало да курирува ръчно.
В този ден, След това & Сега, и Паспортни отпечатъци правят тези връзки по различен начин. Това ги направи добър тест за това, дали наборът от растящи функции на Mapsake може да споделят зареждането на снимки, разрешаването на местата, рендеринга, навигацията и правилата за поверителност без да се превърнат в една гигантска паметна система.
В този ден използва дати повече от снимки
Очевидната реализация би търсил в фотокнигата за текущия месец и ден. Mapsake отстъпва още една стъпка напред, защото снимките са само една форма от доказателства за пътуване.
Всяка локация в атласа може да носи дни на присъствие от ръчни въведения, импорти, полета и история на снимките. На Този Ден комбинира тези дати с метаданните на снимките, групира резултатите по години и подрежда най-конкретните локации първо. Град или аеродром може да бъде главен в паметта, докато региона и страната остават част от същата история.
Фотофильтърът се отдалечава от основната интерфейс, защото голяма библиотека все още е голяма библиотека, дори когато заявката звучи просто. Резултатите са групирани по нови първи и се показват като спокойни години картички. Отварянето на една показва нейната галерия и връщат към релевантната история за място.
Има също и връщане към най-близката памет за тишина дни. Ако юли 9 няма нещо, Mapsake може да насочи към най-близката дата, която има, вместо да покаже мъртво крачеж.
Календарното съвпадение има повече краен случай от това, което изглежда
"Същата месец и ден" звучи като тривиален предикат, докато часовиците и непълните записи влизат в картината. Датите на снимките идват от записаните медии, докато ръчните и импортирани дати на местата могат да представят ден, а не точен момент. Следователно функционалността работи в компоненти на календар, вместо да питаме дали времевите маркери са точно 365 дни разстояние.
Мястата са подредени по най-важното първо за представяне. Ако атласът знае аеродрома, града, региона и държавата за една дата, аеродромът или градът трябва да бъде главен на картата; да се изчертаят всички четири като отделни спомени би било преувеличено една част от доказателството. Пълната иерархия остава достъпна като кутии с места и допринася за околната история.
Странната страна използва кеша от метаданните, които Mapsake е построил по време на импорта. Тя не изисква от PhotoKit да препрограмира цялата библиотека всяка първа, когато се отваря Профил. Филтърът по денонощие се изпълнява в отделна задача, а след това интерфейсът получава малка колекция от референции към активи, които може да зареди лениво.
Първият входен пункт беше в Atlas. Тестването показва, че бутонът за календар прави най-важната визуална екран по-зает дори на дни без спомени. Преместването на входа в Профил го позволява да се появява условно, да се комбинира естествено с други лични функции и да носи непрочетен статус без да се конкурира с картите.
Потребителски изпращанията трябва да имат собствени маршрути. Локалната уведомление не достига по същия път като натискането на обикновен универсален линк. Mapsake записва дълбок линк в съдържанието на уведомлението, уловява отговора в делегацията на приложението и го изпраща в същата навигационна статия, която се използва от други дълбоки линки. Видимата характеристика е изречение; надеждното натискане изисква целия маршрут.
Напомнянето е доброволно
On This Day може да планира умерено известие, но само след като потребителят го активира. Mapsake подготвя предстоящи дати на паметта от локалните данни и прикрепя дълбок линк, така че при натискане на известието се отваря правилната повърхност.
Няма сервер, който да определи, коя памет е важна, и няма да се извърши изтриване на снимки от устройството, за да работи напомнянето. Плитката за профил се появява само когато днес наистина има нещо да покаже, с малък нечетен кръгче, който изчезва след отварянето.
Съобщението може да събира повече от една година или място, защото местната изчислителна система вече знае групирания резултат. Напомнящо съобщение може да каже, че пътешественикът е бил в Редмонд, Рим и Токио на този ден през няколко години. Следователно текстът е съставен на устройството и локализиран с останалата част от приложението.
Това условно влизане беше толкова продуктно колкото и техническо. Постоянен празен картон ще рекламира функционалността по-често, но ще прави Профил по-шумно всяка денонощие, когато функционалността нямаше нищо полезно да каже.
Тогава & Сега разглежда мястото като общата нишка
Тогава & Сега търси снимки, направени приблизително в същото място поне два години по-рано. Имплементацията използва компактен пространствен решетка: филтрираните координати на снимките се поставят в клетки с приблизително 280 метра широка, и всяка клетка запазва само най-ранната и най-късната снимка, докато се преминава през тях.
Стойностите с дълъг времеви период стават кандидати. Най-дългите периоди се появяват първо, близките кандидати се дедуплицират, така че една площад не може да запълни цялата листа, и пакетираната газета предлага име на град и страна. Резултатът се меморизира, докато индексът на снимките се промени.
Това умишлено не е разпознаване на сходство между изображения. Снимките не трябва да показват една и съща композиция или обект; това е различна задача за Constellations. Then & Now задава по-прост въпрос: как изглеждаше това място, когато се върнахте години по-късно?
Пари се отварят в нормалния изображението и могат да се споделят чрез същия път на рендеринг, както и картите на Паспорт. Оригиналите остават в изходната библиотека, докато Mapsake съхранява лекото метаданни, необходими за намиране на парата отново.
Защо 280 метра и два години?
Спейшълната клетка е намерено простираща се. GPS на телефона може да се отклонява, знак може да бъде сниман от противоположните страни на площад, а по-старата камера може да има по-малка точност на координати. Точен съвпадение на координати ще пропусне много истински връщания. Съвпадение на ниво на град ще бъде толкова широк, че ще свърже неповързани квартални зони.
Около 280 метра е продуктна граница, а не твърдение, че два снимки показват идентична физическа точка. Тя задава дали връщането е достатъчно близо, за да се почувства свързано, когато снимките са поставени една до друга. Двегодишният минимум предотвратява първия и последния ден на почивка да бъдат представени като дългосрочен променящ се.
Само най-ранната и най-късната снимка във всяка клетка се запазват по време на сканирането. Това прави използването на паметта пропорционално на заетите клетки, а не на общия брой снимки и естествено максимизира времевия период. Кандидатните двойки се подреждат след това по продължителност и се сподубликуват пространствено, така че човек с десетки снимки около една домашна квадратна зона все още вижда разнообразие.
Ключ за кеширане следва броя на генерирането и изключването на метаданните на снимката. Импортирай нова група библиотека или премахни снимка от картата и двойките се пресмятат отново; отвори екрана без да промениш източника и приложението използва резултата отново.
Първият профил на изпитване по-късно показва, че Then & Now също използва значително време за търсене на близки градове. Тъй като използва общата географска газета, а не специфичен обратен геокодер, географската индексна работа, която ускори вносите и Constellations, направи тези етикети значително по-евтини. Общи основи създават общи печалби.
Сподели използва пайпът на Паспорт
Тогава & Сега е нужна карточка с две снимки с години, място и размах. Създаването на нов износител ще дублира светлинното и тъмното рендериране, социалните аспекти на съотношенията, предварителното зареждане на изображенията, запазването на Фото и системния дял.
Вместо това, парата се обвива като мултимедийен паспорт и се предава на съществуващия екран за споделяне. Источните снимки се предварително зареждат, защото SwiftUI-отсъстващият ImageRenderer е синхронен в краен момент на рендеринга. Потребителят вижда същия поток от превю и краен резултат, използван за картите и статистиката.
Това използване е повече от икономия на код. То прави поведението за споделяне предсказуемо: нищо не се публикува автоматично, изходът изглежда като предварителния преглед, и същите правила за достъпност и цвят се прилагат.
ПОДПИСИТЕ НА ПАСПОРТ ТРЕБВА ДА ПОЛУЧАТ ПОМОЩ, А НЕ НЕПРАВИЛНА ВЕРНОСТ
Истинските визови печати са труден OCR материал. Те са избледели, завъртели, натиснати върху фонова графика, написани на много езици и понякога натиснати директно едни върху други. Всеки скенер, който твърди, че има перфектно автоматично разпознаване, подготвя потребителите за лоши туристически данни.
Mapsake използва кадърна рамка на Apple на устройството, за да извлича текста, който може да прочете, след което ранжира възможни съвпадения. IATA код на аеродром е силен сигнал. Двухбуквен код на страна, име на страна, местен ендом, град, точка на влизане или европейска дата може да добави доказателства. Местни аеродромни стамени помагат да се разпознаят, че влизането е вероятно от самолет, дори когато OCR пропуска края на думата.
Matcher представя препоръка и предпочитано място: държава, регион, град и аеродром, когато са налични. Той никога не прави предположения сам. Проверяването винаги позволява друг кандидат или напълно ръчно избор.
Това консервативно преминаване е важно. Потеряната препоръка струва един тап. Върху уверено грешно препоръка тихо коруптира картата.
Избледнял печат от Исландия промени алгоритъма за съпоставяне.
Един реален електронен пост направи границите конкретни. Текстът му за аеродрома трябва да е KEFLAVIKURFLUGVOLLUR, но избледнялото мастило и прекъсването на реда направиха, че за Vision това изглежда като нещо по-близко до KEFLAVIKURFLUGVOLI UR. Проверка за цяла дума за термина на летището в Исландия се провали, така че Mapsake не заключи полет и не разпозна летището Кефлавик.
Исправата не беше специален случай за една паспорт. Сега матчера разпознава стампи за общи аеропортови думи в няколко езика: фрагменти, които отговарят на аеропорт в исландски, немски, испански, португалски, холандски, скандинавски езици и други. Повреден край може все още да предложи режима на влизане и да наклони разрешаването на място към аеропорта.
Поглед към EXIF GPS
Разрешението за влизане е предпоставка-търпимо за същата причина. Дългите местни-езикови съставни думи могат да съдържат име на град или аеродром дори когато вграденият газетер съхранява по-кратката английска форма. Разрешителят опитва значимите предходни фрагменти, след това създава веригата от страна, регион, град и аеродром около потвърденото резултат.
Цепенът е показан преди запазването. Изборът на тънка аеродром може да маркира неговия град, регион и страна заедно, но всяко извличано ниво остава видимо и редактируемо. UI е проектиран около силна препоръка, последвана от човешко решение.
Запазете артефакта, а не друг копие
Записът на печат за паспорт съхранява метаданни и препратка към оригиналната снимка, а не към пълните байтове на изображението. Mapsake създава малък, възстановим миниатюрен образ за стената с печати и зарежда оригиналното изображение при поискване. Ако оригиналното изображение, взето от Photos, е наистина изтрито, съгласуването може да премахне неговия сирак печат, без да преструва, че изображението все още съществува.
„Всичко“-думата в този израз е важна. Ограниченото право за Фото не може да докаже, че незрим ресурс е изтрит; той може просто да е извън разрешеното избор. Съвпадение изтрива печат само когато правомощието на библиотеката е достатъчно и нито местното, нито облака идентификатор не разрешава. Неопределеността запазва записа.
Този модел, базиран върху референция, също запазва малки CloudKit-приятели таблици. Стампата може да синхронизира държавата, датата, книгата, начина на влизане, страницата, предпочитанията, бележките и идентификаторите без опит да съхранява снимка на паспорт в ред от база данни. Локална миниатюра от 256 пиксели е кеш, а не източник на истината.
Пощенските марки могат да бъдат организирани в именовани паспортни книги, отбелязани като пристигане или излизане, заделени дати и начини на влизане, и да се гледат по страна. Нож, прави права, завърта и късмет-мъглен късмет-върхове помагат да се подготви полезна снимка преди да се сподели края на страната или континента.
Същата процедура може да сканира страница от паспорт в книга. Разпознаването на зоната с машинно четене предлага структурирани полета, когато е възможно, докато изображението остава референция към собствената библиотека на потребителя.
Разпознаването на MRZ изключва корекцията на езика. Machine-readable zone е строга серия от букви, цифри и кътни скоби; изискването OCR да ги превърне в природни думи може да ги направи по-лесни за четене, но да намали точността на разпознатите полета. Печатни полета като мястото на раждане използват отделен опит за най-добро изпълнение, и всички резултати се появяват в редактируема форма на книга.
Камерата и потокът за избор споделят етап за резервация и въртене преди разпознаването. Пъзелната полировка добави по-правилна диамантова, увеличение и преместване, и кистче за цензуриране и размазване за чувствителни подробности. Редакторът изключва конфликтните жестове, докато кистчето за размазване е активно, след което съставя редакциите в изображението на изходния източник според избора на потребителя за поведението на съхранението.
Галерията на печати групира артефактите по континент и страна, а не само по паспортна книга. Кликване в стек от страна отваря индивидуалните печати; пристигане, отлизане и предпочитания могат да бъдат филтрирани; заглавията на континент и страна могат да изобразяват колаж чрез паспортния път за споделяне. Книгите остават полезна метаинформация, но географията е по-естествен път за преглед в търговската атлас.
Технически достатъчно доверително
Тези функции използват три различни техники: съединяване на календар, пространствено групиране и OCR. Потребственото преживяване следва същия модел:
- Произведете кандидат от съществуващата локална информация.
- Запазете скъпата работа от главния интерфейс.
- Обяснете, какво беше намерено.
- Използвайте, коригирайте, споделете или игнорирайте го.
Това е вида интелигентност, която искам в Mapsake. Тя трябва да направи частната записка по-лесна за възстановяване, без да действа като алгоритъм, който разбира живота по-добре от човека, който е живял в него.
Не е нужно да решавате всички въпроси за брояч на пътувания преди да започнете. Ако не считате връзка с аеродрома за посещение, го премахнете. Това е вашето записване, и вие решавате какво да бъде в него.