Že dolgo že razvijam spletne aplikacije. Zelo dolgo. Svoje prve spletne aplikacije v okolju sem ustvarjal v tistih časih, ko beseda «google» še ni bila glagol, ljudje pa so za iskanje informacij na internetu uporabljali Yahoo! in Rambler. Sam pa sem uporabljal — imeli so natančnejše iskanje in ne tako neurejenega vmesnika kot Yahoo!
Razvoj aplikacij, vseh aplikacij, ne le za splet — je ustvarjalno delo. Težko bi se kdo s tem trdnim zadržal. Lepota v ustvarjalnosti je kot praksa v znanstvenem spoznavanju — kriterij resnice. Medtem ko je znanstvena praksa objektivna in temelji na meritvah, je lepota subjektivna in odvisna od tega, kdo gleda. Tako sem si postavil vprašanje, kaj zame osebno pomeni lepa spletna aplikacija?

(na KDPV oko ni moje, oko je žensko, vendar je po mojem mnenju žensko oko na KDPV bolj ustrezno kot moško, saj je to — !)
Pod nizom so moji lastni kriteriji za to, katera spletna aplikacija se trenutno lahko šteje za lepo. Zelo subjektivno izražanje, pogojeno z mojim osebnim izkušnjami. Mogoče se bo komu moj kriterij lepote zdel kriterij grde.
In ker ste že šli pod niz, bodite, prosim, previdni v komentarjih. Kajti, če lahko prenehate brati članek takoj, ko se vam zdi, da je to, kar je v njem, grdo ali celo pokvarjeno, potem moram jaz, kot avtor, prebrati vse komentarje.
Habitat
Protokoli
Ne vem, ali bi morala ta kriterij izpostaviti posebej. Spletne aplikacije živijo na spletu in morajo ustrezati Zakonom Spleta (protokolom). Glavni protokoli na spletu so in . Na njih temeljijo številni drugi protokoli, toda za spletne aplikacije menim, da je najpomembnejši (bolje rečeno, njegovo razširitev na podlagi ). Tj., lepa spletna aplikacija je dostopna preko HTTPS/TLS (kot možnost — preko HTTP), drugi protokoli (LDAP, RPC, IMAP4, POP3, SMTP, FTP, NNTP, …) pa jo naredijo manj lepo s vsakim dodatnim podprtjem protokola. Sama aplikacija lahko s pomočjo teh dodatnih protokolov uporablja zunanje vire.
Kar zadeva , nimam dovolj izkušenj z uporabo tega protokola s spletnimi aplikacijami. Izgleda lepo in obetavno, toda ne morem reči, kako stabilno in praktično je.
Brskalniki
Web-aplikacija stoji samo s jednom nogom na serverskoj strani, dok je druga na klijentskoj strani. Klijentska strana je preglednik. Moderna preglednik pruža , koje moderna web-aplikacija može i treba koristiti u svoje svrhe. Lijepa web-aplikacija koristi moderne mogućnosti preglednika i ne mora raditi u preglednicima koji te moderne mogućnosti ne podržavaju. Razumijem da jesu nužno zlo, ali to nije lijepo. Na kraju krajeva, ne samo programeri trebaju pratiti moderna tehnologije, nego se to odnosi i na korisnike i na biznis.
Jezik
Sa programskim jezicima koji se koriste za izradu web-aplikacija, sve je vrlo zbunjujuće. Za klijentski deo web-aplikacija postoji mnoštvo tehnologija koje olakšavaju programeru kreiranje triade HTML/CSS/JS (to je ono što svi moderni preglednici razumiju). Ali ja sam se u nekim trenucima intenzivno bavio i smatram lijepim kada programer u pregledniku vidi originalni kod, a ne rezultat kompilacije ili transpilacije. Stoga, upotreba sličnih proizvoda za generisanje klijentskog koda, IMHO, nije lijepo. Što je više izvršnog koda u pregledniku sličnog izvornoj kodu koji je programer stvorio, to je bolje. Ne vjerujete? Pokušajte da odredite greške u produkciji koda koji je napravio GWT.
Na serverskoj strani ima više slobode (Java, PHP, Perl, Python, C#, Ruby, …), ali mislim da je lijepo kada se na serverskoj strani i u pregledniku koristi isti programski jezik — JavaScript. Ipak, , a timovi istomišljenika su produktivniji.
Čovječnost
Lijepa web-aplikacija treba biti korisna. Korisna, prvo i najvažnije, za čovjeka kao krajnjeg korisnika. Zato ne mogu nazvati lijepom web-aplikacijom . Običnoj osobi (ne web-developeru) s njima je teško. Web-usluge su lijepe na svoj način,
Lijepa web-aplikacija treba imati intuitivno sučelje. O tome se može raspravljati o je prilično subjektivna stvar. No sa je sve mnogo jednostavnije, ako korisnik ne može koristiti aplikaciju bez dragocjenog — slab UX, grda spletna aplikacija. Najlepše spletne aplikacije v tem kriteriju lahko brez težav uporabljajo otroci, ki še ne znajo brati.
Povratna Razširljivost
Nekoč so lahko programi potovali na diskete, zdaj pa na pomnilniške ključe ali kar preneseni iz spleta. Kopiranje običajne aplikacije in njeno zagon na drugem računalniku je preprosta naloga. Spletne aplikacije pa so nekoliko posebne. Splet je globalno okolje, v katerem ni potrebe po kloniranju iste spletne aplikacije. Ena sama Facebook, Twitter, Instagram, Mail.ru ali Yandex zadostuje. Različne spletne aplikacije so lahko na istem področju, a z različnimi občinstvi (tako kot Facebook in Vkontakte, Mail.ru in Gmail, Google Maps in Azure Maps). Strojni viri za zagotavljanje globalne dostopnosti takšnih spletnih aplikacij so potrebni, recimo tako, .
Nikoli nisem delal s spletnih aplikacij na tej ravni kot razvijalec in si ne predstavljam, kako so znotraj zgrajene. Za delovanje takšnih spletnih aplikacij so potrebne ekipe ustreznih strokovnjakov in ločeni podatkovni centri. Navdušuje me sposobnost ljudi za sodelovanje v takšnih obsegu in ustvarjanje podobnih produktov, a moj etalon lepote je spletna aplikacija, ki jo lahko zaženeš na ločenem prenosniku.
Lepa spletna aplikacija se razširja ne le navzgor in navzven (za uporabnike), ampak tudi navzdol in navznoter (za razvijalce).
»Amfibijskost«
Za dostop do sodobnih spletnih aplikacij se uporabljajo naprave dveh vrst:
- računalniki (prenosniki, namizni računalniki);
- mobilne naprave (pametni telefoni in tablice);
Nekje na obzorju se še kaže »«, a za zdaj tako.
Računalniki in mobilne naprave se razlikujejo toliko, kot se kopenske živali razlikujejo od vodnih. To sta različni okolji in postavljata različne zahteve pred bitji, ki živijo v njih (programi). Lepe spletne aplikacije niso tiste, ki so podobne , ampak tiste, ki v vodi — kot ribe, na kopnem — kot zveri, v zraku () — kot ptice.
Menim, da je »« grda, to je kot poskus sedeti na dveh (s SEO — treh) stolih. Raje kot Fiona iz Shreka — čez dan ena, ponoči druga. Da, dražje. Ampak bolje.
Cross-sharing
Že sem že omenil v razdelku «Povratna razširljivost», da globalnost omrežja omogoča imeti eno spletno aplikacijo za planet. Zato se mora vsaka spletna aplikacija vsaj minimalno razlikovati od drugih, da si zagotovi preživetje. Kljub temu pa moje dolgoletne izkušnje z (ogrodje za gradnjo e-commerce trgovin) kažejo, da je lahko skupnih elementov med posameznimi spletnimi aplikacijami več kot razlik. Lepo spletno aplikacijo ne le, da mora biti modularna, ampak tudi deliti svoje module z drugimi spletnimi aplikacijami. Deloma je ta ideja odražena v JSR 168 in JSR 286 ter v takih ogrodjih kot , in prav tako Magento. Kolikor več modulov spletne aplikacije uporabljajo druge spletne aplikacije, toliko lepša se mi zdi. Cross-sharing omogoča ustvarjanje kakovostnejših modulov in posledično bolj stabilnih spletnih aplikacij.
Pod modulom ne razumem knjižnic, kot je jQuery ali RequireJS — bolj gre za večja silhuet, kot so vtičniki v in . Toda za knjižnice velja tudi teza, da široka uporaba knjižnice pripomore h kakovosti in stabilnosti.
Harvardova arhitektura
, nasprotno od trenutno prevladujoče , predvideva ločitev kode in podatkov. Arhitektura ni zaživela, a sama ideja se mi zdi lepa. Še posebej za spletne aplikacije. Vsa statika (HTML/CSS/JS/Slike/…) je koda. Kakovostno jo je mogoče in treba keširati bodisi na strežniški bodisi na odjemalski strani. Podatki pa so / (lepo) ali / (malo manj lepo). Ali pa WebSockets/JSON (morda najboljša rešitev, a je nisem preizkusil).
Lokalizacija
Obstajata dve stvari, ki me še posebej skrbita pri razvoju spletnih aplikacij — to sta večjezični vmesnik in časovni pasovi. Sam sem iz Latvije, imamo tri jezike: LV, RU, EN. Lepo spletno aplikacijo bi morala omogočiti ne le večjezično delovanje v sami aplikaciji, temveč tudi omogočiti širitev števila jezikov s pomočjo zunanjih virov, kot so . To velja tudi za module, iz katerih je sestavljena spletna aplikacija.
S časovnimi pasovi je vse enostavno; v vseh primerih, ko ni jasno, kako obravnavati datum-čas, storite tako: vse, kar leži na strežniku, gre na strežnik in prihaja s strežnika — UTC, vse, kar se prikazuje na strani uporabnika — v skladu z ure uporabniškega profila. To je lepo.
Kovani namesto 'Zvezd Smrti'
Nekoč je imela vsaka nekoliko večja mesteca svojo kovačijo. Morda celo več kot eno. Nekatere so bile boljše, druge slabše. Bili so kovači, znani po celem svetu, in bili so takšni, k katerim so šli iz brezizhodnosti. Prehajali so vojne, epidemije, naravne katastrofe. Nekatera mesteca so izginila skupaj s prebivalstvom. A kovaško obrt je ostala. Namesto izginulih mest so zrasla nova, v katerih so spet nastajale kovačije.
In zdaj se poglejte take storitve, kot je . Ko se pokvarijo korenski strežniki, .
Po mojem mnenju lepo spletno aplikacijo ne more biti tako velika, kot sta Facebook ali Mail.ru. To se že bolj približa '' tako po virih, potrebnih za gradnjo, kot po virih, potrebnih za vzdrževanje delovanja. Da, v primeru uničenja Facebooka človeštvo ne bo izginilo, njegove funkcije bodo zelo hitro prevzela druga aplikacija (taka kot na ozemlju RF in sosednjih, Instagram, Twitter, ...). Kljub temu je zaprtje pomembnega dela človeštva na eno aplikacijo — to ni lepo. Še bolj, ob obstoju veliko bolj stabilnih alternativ (na primer, ).
Резюме
Če ste prišli do konca in ste zmedi — 'kaj je to bilo?' vam izražam moje iskreno sočutje. Nisem vas silil, da preberete to. Preprosto sem poskušal oblikovati svoje misli v besede, da bi našel tiste, ki razmišljajo podobno. Morda bom lahko razpravljal z njimi o nekaterih vidikih ustvarjanja lepih spletnih aplikacij in dobil odgovore na svoja vprašanja. In teh imam veliko.
Hvala, da ste prebrali.
Izvor: habr.com
