Ствари које бих желео да знам пре рада са Елецтрон.јс

У овом чланку ћу поделити како можете да избегнете неке грешке које сам направио када сам учио о Елецтрон.јс? ‍♂. Надам се да ће помоћи!

Напомена : Ово неће бити водич за кодирање, већ дискусија о мојим личним преузимањима.

Пре неколико месеци, одлучио сам да се више фокусирам на изградњу свог споредног производа, таггр . Инспирисао сам се да га направим због тога колико фотографија имам на рачунару.

За оне од нас који праве резервне копије својих слика, те колекције често постају толико велике и сложене да постају посао с пуним радним временом. Комбинација директоријума и подмапа може садржати резервне копије слика тренутних порука, слике високе резолуције са вашег путовања на Бали, венчања вашег стрица или прошлогодишње момачке вечери.

Увек држати такве колекције уредно је заморно (верујте ми, покушавао сам годинама). Такође је тешкода бисте открили снимке који вам се највише свиђају, скривени дубоко у фасциклама.

Дакле таггрје апликација за рачунаре која решава тај проблем. Омогућава корисницима да поново открију своја сећања, задржавајући приватност .

Ја изградњу таггр као десктоп апликација цросс-платформ. Овде ћу са Елецтрон.јс поделити неке ствари које сам научио о развоју различитих платформи за које бих волео да их знам од почетка. Хајде да почнемо!

Позадина

Пре него што представим своја путовања на овом текућем путовању са Елецтроном, желео бих да дам мало више информација о себи и захтевима таггр-а .

Сваки програмер долази из другачије позадине, па тако и захтеви апликација које развијају.

Контекстуализација избора које сам донела за овај пројекат може да помогне будућим програмерима да одаберу праве алате на основу својих потреба и стручности (уместо онога што је пречувано - ГитХуб?, Гледам вас).

Као што је раније поменуто, од почетка сам замишљао таггр као апликацију са више платформи. Апликација би изводила све потребне обраде пред-обраде и рачунарског учења на страни клијента због фокуса на приватност.

Као емисија за једну особу, желео сам да могу једном да напишем своју апликацију и пошаљем је на различите системе, а да не изгубим здрав разум.

Са своје стране сам инжењер који је заљубљен у мрежу и ЈаваСцрипт. Раније сам радио са Јавом и Ц #, али уживам у флексибилности коју веб пружа и у његовом живахном екосистему.

Пошто сам из прве руке искусио бол коришћења алата попут Ецлипсе РЦП за изградњу апликација на страни клијента, знао сам да не желим поново да радим са том технологијом.

Укратко, моји захтеви за стек за таггр се свели на нешто слично:

  • Требало би да пружа подршку на више платформи, идеално на нивоу оквира. ?
  • Требало би ми омогућити да једном напишем код и по потреби прилагодим сваку платформу. ?
  • Требало би да омогући приступ могућностима машинског учења , без обзира на окружење хоста, без инсталирања одређених рунтимеова. Требало би да буде безболно постављање. ?
  • Ако је изводљиво, требало би да користи веб технологије . Било би сјајно искористити моје постојеће знање. ?

Као што видите, захтеви се не читају као: Требао бих да користим Реацт са Редук-ом, опсерваблес-ом и ВебСоцкетс-ом . То су детаљи имплементације на нижем нивоу и о њима треба одлучити када и ако се укаже потреба.

Изаберите прави алат за посао, уместо да одабирете стог од почетка, занемарујући постојеће проблеме.

Тако сам, након бесног гуглања, одлучио да покушам Елецтрон. Нисам раније користио тај оквир, али знао сам да га многе компаније успешно користе у производима као што су Атом, ВС Цоде, Дисцорд, Сигнал, Слацк и још много тога.

Отворени извор и са изванредном компатибилношћу са ЈС и Ноде екосистемима (Елецтрон се израђује помоћу Цхромиум-а и Ноде-а), Елецтрон.јс је био атрактиван алат за рад у раду.

Нећу улазити превише у детаље у вези са остатком стека, јер сам по потреби више пута мењао основне делове (слојеве постојаности и приказа), а то спада ван делокруга овог чланка.

Међутим, желео бих да напоменем Тенсорфлов.јс, који омогућава извођење обуке и примену модела МЛ директно у прегледачу (са ВебГЛ-ом) и Ноде-ом (са Ц везама), без инсталирања одређених рунтимеова за МЛ на хосту.

Вратимо се на Елецтрон - мислећи да је савршен, забава је започела. ??

Доста разговора о позадини. Заронимо у храну за понети.

1. Почните са малим (и полаганим)?

Ово није нови концепт, али вреди га повремено изнети. Само зато што је на располагању гомила сјајних почетних пројеката са Елецтроном, не значи да бисте требали одмах изабрати један.

Чекати. Шта?

Споро је глатко, а глатко брзо. - Морнаричка изрека

Уз погодност долази и сложеност

Иако ти почетници укључују многе корисне интеграције (Вебпацк, Бабел, Вуе, Реацт, Ангулар, Екпресс, Јест, Редук), они такође имају својих проблема.

Као Елецтрон почетник, одлучио сам да се одлучим за витки образац који је садржао основе за „креирање, објављивање и инсталирање Елецтрон апликација“ без додатних звиждука. Ни Вебпацк у почетку.

Препоручујем да започнете са нечим сличним електрону-ковачу да бисте брзо устали и радили, можетеподесите свој графикон и структуру зависности на врху да бисте научили канапе Елецтрона.

Када се проблеми појаве (а и хоће), биће вам боље ако направите свој прилагођени почетни пројекат, уместо да за почетак изаберете један са +30 нпм скрипти и +180 зависности.

Међутим, када се осећате пријатно са Елецтроновом основом, слободно појачајте игру помоћу Вебпацк / Реацт / Редук / ТхеНектХотФрамеворк. Радио сам то постепено и по потреби. Не додавајте базу података у реалном времену у своју апликацију тодо само зато што сте негде прочитали кул чланак о томе.

2. Пажљиво структурирајте своју апликацију? ‍♂

Овом је требало мало више времена да се поправи, него што срећно признајем. ?

У почетку ће можда бити примамљиво да помешате кориснички интерфејс и бацкенд код (приступ датотекама, проширене операције процесора), али ствари се прилично брзо сложе. Како је моја апликација расла у функцијама, величини и сложености, одржавање једног запетљаног УИ + Бацкенд кода постајало је све компликованије и склоније грешкама. Такође, спојница је отежала појединачно тестирање сваког дела.

Када градите апликацију за радну површину која ради више од уграђене веб странице (ДБ приступ, приступ датотекама, интензивни ЦПУ задаци ...), препоручујем резање апликације на модуле и смањење спреге. Јединствено тестирање постаје поветарац и постоји јасан пут ка интеграционом тестирању између модула. За таггр , лабаво сам следио овде предложену структуру.

Поврх тога, ту су и перформансе . Захтеви и очекивања корисника по овом питању могу се прилично разликовати у зависности од апликације коју градите. Али блокирање главних нити приказивања нити скупим позивима никада није добра идеја.

3. Дизајн имајући на уму модел навоја?

Нећу овде улазити превише у детаље - само углавном удвостручујем оно што је сјајно објашњено у званичним документима.

У конкретном случају таггр-а постоји много дуготрајних ЦПУ, ГПУ и ИО операција. При извршавању тих операција у главној или приказивачкој нити Елецтрона, број ФПС-а пада са 60, чинећи да се УИ осећа успорено.

Елецтрон нуди неколико алтернатива за уклањање тих операција из главне нити и нити за приказивање , као што су ВебВоркерс, Ноде Воркер Тхреадс или БровсерВиндов инстанце. Свака од њих има своје предности и примедбе, а случај примене са којим ћете се суочити одредиће који је од њих најбоље примерен.

Без обзира коју алтернативу одабрали за растерећење операција из главне нити и нити за приказивање (када је потребно), размислите како ће бити комуникацијски интерфејс . Требало ми је времена да пронађем интерфејс са којим сам био задовољан, јер у великој мери утиче на структуру и функционисање ваше апликације. Нашао сам корисно да експериментишем са различитим приступима пре него што сам изабрао један.

На пример, ако мислите да интерфејс за прослеђивање порука ВебВоркерс можда није најлакши за отклањање грешака, пробајте цомлинк.

4. Тест ❌, тест ❌ и тест ✔

Старе вести, зар не? Желео сам ово да додам као последњу тачку, због неколико анегдоталних „проблема“ са којима сам се недавно суочио. Чврсто повезан са првом и другом тачком, изградња вашег прилагођеног почетног пројекта и рано прављење грешака уштедеће вам драгоцено време за отклањање грешака у даљем развоју.

Ако сте се придржавали мојих препорука за поделу корисничког интерфејса и бацкенда апликације на модуле са чистим интерфејсом између њих, подешавање аутоматизованих тестова јединице и интеграције требало би да буде лако. Како апликација сазрева, можда ћете желети да додате подршку и за е2е тестирање.

Извлачење ГПС локације?

Пре два дана, док сам примењивао функцију извлачења ГПС локације за таггр , када су јединични тестови постали зелени и када је функција радила у развоју (са Вебпацк-ом), одлучио сам да је испробам у производном окружењу.

Иако је карактеристика добро радила у развоју, у производњи је неуспешно пропала. ЕКСИФ информације са слика прочитане су као бинарне и обрађене у независној библиотеци. Иако су бинарне информације правилно учитане у оба окружења (проверено са дифф), библиотека треће стране није успела приликом рашчлањивања таквих података у производној грађи. Извините, ??

Решење : Открио сам да поставке кодирања у развојном и производном окружењу које је поставио Вебпацк нису исте. Због тога су бинарни подаци рашчлањени као УТФ-8 у развоју, али не и у производњи. Проблем је решен постављањем исправних заглавља кодирања у ХТМЛ датотекама које је учитао Елецтрон.

Функи слике?

Када манипулишете сликама и радите са њима, можда мислите да је ЈПЕГ, ако „функционише“ на вашем рачунару, важећи ЈПЕГ. Погрешно .

Док је радио са библиотеке за обраду слика Ноде оштар , промена величине око ЈПЕГ слике срушио апликацију. Након пажљивог прегледа, узрок су биле нетачне ЈПЕГ слике које је генерисао Самсунг фирмваре. ? ‍♂

Решење : постављање побољшаних граница грешака у апликацији (нпр. Блокови три-цатцх), дорађивање ЈПЕГ модула за рашчлањивање и сумња у све. ?

Резиме

Екосистеми Ноде и ЈаваСцриптс цветају, а свакодневно се стварају и деле многи моћни алати.

Количина опција отежава одабир јасног пута за започињање изградње нове сјајне апликације Елецтрон. Без обзира на одабране оквире, препоручио бих да се усредсредите на следеће:

  1. Почните са малим и постепено додајте сложеност.
  2. Пажљиво структурирајте своју апликацију , задржавајући позадину и проблеме корисничког интерфејса модуларизовано.
  3. Дизајнирајте имајући на уму модел навоја , чак и када правите мале апликације.
  4. Тестирајте и тестирајте поново , да бисте рано ухватили већину грешака и уштедели главобољу.

Хвала што сте се задржали до краја! ?

таггр је мулти -платформа за рачунаре која омогућава корисницима да поново открију своје дигиталне успомене задржавајући своју приватност . Опен-алпха ускоро долази за Линук, Виндовс и Мац ОС. Зато припазите на Твиттер и Инстаграм, где објављујем развојна ажурирања, предстојеће функције и вести.