{"id":36689,"date":"2019-10-31T22:13:11","date_gmt":"2019-10-31T19:13:11","guid":{"rendered":"https:\/\/prohoster.info\/blog\/krasota-v-glazah-smotryashhego\/"},"modified":"2019-10-31T22:13:11","modified_gmt":"2019-10-31T19:13:11","slug":"krasota-v-glazah-smotryashhego","status":"publish","type":"post","link":"https:\/\/prohoster.info\/ro\/blog\/news\/krasota-v-glazah-smotryashhego","title":{"rendered":"Frumuse\u021bea st\u0103 \u00een ochii privitorului","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>De mult timp m\u0103 ocup cu dezvoltarea de aplica\u021bii web. Foarte mult timp. Primele mele aplica\u021bii web le-am creat \u00een mediul <noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/IBM_Notes\">Lotus Domino<\/a><\/noindex> \u00een vremurile c\u00e2nd cuv\u00e2ntul <em>\u201egoogle\u201d<\/em> nu devenise \u00eenc\u0103 verb, iar oamenii c\u0103utau informa\u021bii pe internet folosind Yahoo! \u0219i Rambler. Eu foloseam <noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Infoseek\">Infoseek<\/a><\/noindex>\u2018au \u2014 aveau o c\u0103utare mai restr\u00e2ns\u0103 \u0219i o interfa\u021b\u0103 mai pu\u021bin dezordonat\u0103 dec\u00e2t Yahoo!<\/p>\n<p><\/p>\n<p>Dezvoltarea aplica\u021biilor, oric\u0103ror aplica\u021bii, nu doar pentru web \u2014 este o munc\u0103 creativ\u0103. Pu\u021bini ar contesta aceast\u0103 afirma\u021bie. Iar frumuse\u021bea \u00een creativitate este ca practica \u00een cunoa\u0219terea \u0219tiin\u021bific\u0103 \u2014 un criteriu al adev\u0103rului. Dar dac\u0103 practica \u0219tiin\u021bific\u0103 este obiectiv\u0103 \u0219i se bazeaz\u0103 pe m\u0103sur\u0103tori, frumuse\u021bea este un subiectiv, depinz\u00e2nd de cel care prive\u0219te. Astfel, m-am \u00eentrebat ce reprezint\u0103 pentru mine personal o aplica\u021bie web frumoas\u0103? <\/p>\n<p>\n<img decoding=\"async\" alt=\"Frumuse\u021bea st\u0103 \u00een ochii privitorului\" src=\"\/wp-content\/uploads\/2019\/08\/36411160412b286dd6191aa5baa6ee83.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><em>(la KDPV, ochiul nu e al meu, e al unei femei, dar, IMHO, ochiul feminin la KDPV este mai adecvat dec\u00e2t cel masculin, pentru c\u0103 este \u2014 <noindex><a rel=\"nofollow\" href=\"https:\/\/2ch.hk\/s\/src\/2616513\/15633579017010.png\">KDPV<\/a><\/noindex>!)<\/em><\/p>\n<p><\/p>\n<p>Sub catastrof\u0103 se reg\u0103sesc criteriile mele despre ce aplica\u021bie web poate fi considerat\u0103 frumoas\u0103 \u00een prezent. O expunere foarte subiectiv\u0103, determinat\u0103 de experien\u021ba mea personal\u0103. Poate c\u0103 pentru unii criteriile mele de frumuse\u021be vor p\u0103rea criterii de ur\u00e2ciune. Nu v\u0103 mira\u021bi, doar ave\u021bi o experien\u021b\u0103 diferit\u0103.<\/p>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<p>\u0218i, de vreme ce a\u021bi intrat sub catastrof\u0103, v\u0103 rog s\u0103 fi\u021bi mai aten\u021bi \u00een comentarii. Fiindc\u0103, dac\u0103 voi pute\u021bi opri citirea articolului de \u00eendat\u0103 ce ceea ce este prezentat vi se pare ur\u00e2t sau chiar inestetic, eu, ca autor, trebuie s\u0103 citesc toate comentariile.<\/p>\n<p><\/p>\n<h1 id=\"sreda-obitaniya\">Mediul de Habitat<\/h1>\n<p><\/p>\n<h3 id=\"protokoly\">Protocole<\/h3>\n<p><\/p>\n<p>Nu \u0219tiu dac\u0103 merit\u0103 s\u0103 scot acest criteriu separat. Aplica\u021biile web tr\u0103iesc \u00een Re\u021bea \u0219i sunt obligate s\u0103 respecte Legile Re\u021belei (protocolele). Principalele protocoale din Re\u021bea sunt <noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/Transmission_Control_Protocol\">TCP<\/a><\/noindex> \u0219i <noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/IP\">IP<\/a><\/noindex>. Pe ele se bazeaz\u0103 multe alte protocoale, dar pentru aplica\u021biile web consider cel mai important <noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/HTTP\">HTTP<\/a><\/noindex> (sau mai bine zis, extensia sa <noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/HTTPS\">HTTPS<\/a><\/noindex> bazat pe <noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/TLS\">TLS<\/a><\/noindex>). Adic\u0103, o aplica\u021bie web frumoas\u0103 este disponibil\u0103 prin HTTPS\/TLS (sau, ca alternativ\u0103, prin HTTP), iar celelalte protocoale (LDAP, RPC, IMAP4, POP3, SMTP, FTP, NNTP, \u2026) o fac mai pu\u021bin atractiv\u0103 cu fiecare protocol suplimentar suportat. Aplica\u021bia \u00eens\u0103 poate utiliza aceste protocoale suplimentare pentru a accesa resurse externe. <\/p>\n<p><\/p>\n<p>\u00cen ceea ce prive\u0219te <noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/WebSocket\">WebSocket<\/a><\/noindex>, dar nu am destul\u0103 experien\u021b\u0103 \u00een utilizarea acestui protocol cu aplica\u021biile web. Arat\u0103 frumos \u0219i promi\u021b\u0103tor, dar c\u00e2t de stabil \u0219i practic este \u2014 nu pot spune. <\/p>\n<p><\/p>\n<h3 id=\"brauzery\">Butoane<\/h3>\n<p><\/p>\n<p>Aplica\u021bia web st\u0103 cu un picior pe partea serverului \u0219i cu cel\u0103lalt pe partea clientului. Partea clientului este browserul. Un browser modern ofer\u0103 <noindex><a rel=\"nofollow\" href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/API\">multe<\/a><\/noindex>, ceea ce o aplica\u021bie web modern\u0103 poate \u0219i ar trebui s\u0103 foloseasc\u0103 \u00een avantajul s\u0103u. O aplica\u021bie web frumoas\u0103 utilizeaz\u0103 capacit\u0103\u021bile moderne ale browserelor \u0219i nu trebuie s\u0103 func\u021bioneze \u00een acele browsere care nu ofer\u0103 aceste posibilit\u0103\u021bi moderne. \u00cen\u021beleg c\u0103 <noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/%D0%9F%D0%BE%D0%BB%D0%B8%D1%84%D0%B8%D0%BB\">polyfills<\/a><\/noindex> sunt o m\u0103sur\u0103 for\u021bat\u0103, dar nu este estetic. La urma urmei, nu doar dezvoltatorii trebuie s\u0103 \u021bin\u0103 pasul cu tehnologiile moderne, ci \u0219i utilizatorii \u0219i afacerile.<\/p>\n<p><\/p>\n<h3 id=\"yap\">Limbaje de programare<\/h3>\n<p><\/p>\n<p>Cu limbajele de programare utilizate pentru crearea aplica\u021biilor web, totul este foarte complicat. Pentru partea clientului a aplica\u021biilor web exist\u0103 o mul\u021bime de tehnologii care permit dezvoltatorului s\u0103 faciliteze crearea triadei HTML\/CSS\/JS (ceea ce toate browserele moderne \u00een\u021beleg). Dar eu, la vremea mea, am avut de-a face str\u00e2ns cu <noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/Google_Web_Toolkit\">GWT<\/a><\/noindex> \u0219i consider c\u0103 este frumos ca dezvoltatorul s\u0103 vad\u0103 \u00een browser codul original, nu rezultatul compil\u0103rii sau transpilerii. De aceea, folosirea <noindex><a rel=\"nofollow\" href=\"https:\/\/webpack.js.org\/\">webpack<\/a><\/noindex>\u2018\u0219i produsele similare pentru generarea codului client, IMHO, sunt neatractive. Cu c\u00e2t codul executabil \u00een browser se aseam\u0103n\u0103 mai mult cu codul surs\u0103 creat de dezvoltator, cu at\u00e2t mai bine. Nu crede\u021bi? \u00cencerca\u021bi s\u0103 depana\u021bi \u00een produc\u021bie codul generat de GWT.<\/p>\n<p><\/p>\n<p>Pe partea de server, libertatea este mai mare (Java, PHP, perl, python, C#, Ruby, \u2026), dar mi se pare c\u0103 este mai frumos c\u00e2nd at\u00e2t pe partea de server, c\u00e2t \u0219i \u00een browser se folose\u0219te acela\u0219i limbaj de programare \u2014 JavaScript. Totu\u0219i <noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/%D0%93%D0%B8%D0%BF%D0%BE%D1%82%D0%B5%D0%B7%D0%B0_%D0%BB%D0%B8%D0%BD%D0%B3%D0%B2%D0%B8%D1%81%D1%82%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%BE%D0%B9_%D0%BE%D1%82%D0%BD%D0%BE%D1%81%D0%B8%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D0%BE%D1%81%D1%82%D0%B8\">limbajul define\u0219te g\u00e2ndirea<\/a><\/noindex>, iar echipele de ne\u00een\u021bele\u0219i sunt mai productive.<\/p>\n<p><\/p>\n<h1 id=\"chelovechnost\">Umanitate<\/h1>\n<p><\/p>\n<p>O aplica\u021bie web frumoas\u0103 trebuie s\u0103 fie util\u0103. Util\u0103, \u00een primul r\u00e2nd, pentru om, ca utilizator final. De aceea nu pot numi o aplica\u021bie web frumoas\u0103 <noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/%D0%92%D0%B5%D0%B1-%D1%81%D0%BB%D1%83%D0%B6%D0%B1%D0%B0\">servicii web<\/a><\/noindex>. Oamenilor obi\u0219nui\u021bi (nu dezvoltatorilor web) le este greu cu acestea. Serviciile web sunt frumoase \u00een felul lor,<\/p>\n<p><\/p>\n<p>O aplica\u021bie web frumoas\u0103 trebuie s\u0103 aib\u0103 o interfa\u021b\u0103 intuitiv\u0103. Se poate discuta despre <noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/%D0%98%D0%BD%D1%82%D0%B5%D1%80%D1%84%D0%B5%D0%B9%D1%81_%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D1%82%D0%B5%D0%BB%D1%8F\">UI<\/a><\/noindex>\u2018este o chestiune destul de subiectiv\u0103. Dar cu <noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/%D0%94%D0%B8%D0%B7%D0%B0%D0%B9%D0%BD_%D0%B2%D0%B7%D0%B0%D0%B8%D0%BC%D0%BE%D0%B4%D0%B5%D0%B9%D1%81%D1%82%D0%B2%D0%B8%D1%8F_%D1%81_%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D1%82%D0%B5%D0%BB%D0%B5%D0%BC\">UX<\/a><\/noindex> totul este mult mai simplu, dac\u0103 utilizatorul nu poate folosi aplica\u021bia f\u0103r\u0103 dorin\u021ba sa. <noindex><a rel=\"nofollow\" href=\"http:\/\/lurkmore.to\/RTFM\">RTFM<\/a><\/noindex> \u2014 UX slab, aplica\u021bie web inestetic\u0103. Cele mai frumoase aplica\u021bii web, \u00een raport cu acest criteriu, pot fi utilizate cu u\u0219urin\u021b\u0103 de copii care \u00eenc\u0103 nu \u0219tiu s\u0103 citeasc\u0103. <\/p>\n<p><\/p>\n<h1 id=\"obratnaya-masshtabiruemost\">Scalabilitate Invers\u0103<\/h1>\n<p><\/p>\n<p>Cu mult timp \u00een urm\u0103, programele puteau fi transferate pe dischete, acum \u2014 pe stick-uri USB sau desc\u0103rcate direct din re\u021bea. Copierea unei aplica\u021bii obi\u0219nuite \u0219i rularea acesteia pe o alt\u0103 ma\u0219in\u0103 este o sarcin\u0103 trivial\u0103. Situa\u021bia cu aplica\u021biile web este ceva mai special\u0103. Re\u021beaua reprezint\u0103 un mediu global, \u00een care nu este necesar s\u0103 avem clone ale acelea\u0219i aplica\u021bii web. Un Facebook, un Twitter, un Instagram, un Mail.ru sau un Yandex sunt suficiente. Poate exista o varietate de aplica\u021bii web \u00een aceea\u0219i ni\u0219\u0103 tematic\u0103, dar cu audien\u021be diferite (cum ar fi Facebook \u0219i Vkontakte, Mail.ru \u0219i Gmail, Google Maps \u0219i Azure Maps). Resursele hardware necesare pentru a asigura accesibilitatea global\u0103 acestor aplica\u021bii web sunt, s\u0103 zicem, <noindex><a rel=\"nofollow\" href=\"https:\/\/bigpicture.ru\/?p=404950\">netriviale<\/a><\/noindex>.<\/p>\n<p><\/p>\n<p>Nu am lucrat niciodat\u0103 cu aplica\u021bii web de acest nivel ca dezvoltator \u0219i nu \u00eemi dau seama cum sunt structurate, \u00een interior. Pentru a asigura func\u021bionalitatea acestor aplica\u021bii web sunt necesare echipe de speciali\u0219ti corespunz\u0103tori \u0219i centre de date separate. M\u0103 impresioneaz\u0103 capacitatea oamenilor de a colabora la o astfel de scar\u0103 \u0219i de a crea astfel de produse, dar etalonul meu de frumuse\u021be este o aplica\u021bie web care poate fi rulat\u0103 pe un laptop separat.<\/p>\n<p><\/p>\n<p>O aplica\u021bie web frumoas\u0103 se scaleaz\u0103 nu doar \u00een sus \u0219i \u00een l\u0103\u021bime (pentru utilizatori), ci \u0219i \u00een jos \u0219i \u00een interior (pentru dezvoltatori).<\/p>\n<p><\/p>\n<h1 id=\"zemnovodnost\">\u201eAmfibie\u201d<\/h1>\n<p><\/p>\n<p>Pentru accesarea aplica\u021biilor web moderne se folosesc dispozitive de dou\u0103 tipuri:<\/p>\n<p><\/p>\n<ul>\n<li>computere (laptopuri, desktopuri);<\/li>\n<li>dispozitive mobile (smartphone-uri \u0219i tablete);<\/li>\n<\/ul>\n<p><\/p>\n<p>Undeva, la orizont, mai p\u00e2nde\u0219te \u00eenc\u0103 \u201e<noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/%D0%98%D0%BD%D1%82%D0%B5%D1%80%D0%BD%D0%B5%D1%82_%D0%B2%D0%B5%D1%89%D0%B5%D0%B9\">internetul lucrurilor<\/a><\/noindex>\u201e, dar p\u00e2n\u0103 atunci a\u0219a este.<\/p>\n<p><\/p>\n<p>Computerele difer\u0103 de dispozitivele mobile at\u00e2t de mult cum se diferen\u021biaz\u0103 creaturile de uscat de cele acvatice. Acestea sunt medii diferite \u0219i ele impun cerin\u021be diferite asupra fiin\u021belor care tr\u0103iesc \u00een ele (programelor). Aplica\u021biile web frumoase nu sunt cele care seam\u0103n\u0103 cu <noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/%D0%97%D0%B5%D0%BC%D0%BD%D0%BE%D0%B2%D0%BE%D0%B4%D0%BD%D1%8B%D0%B5\">amfibii<\/a><\/noindex>, ci cele care \u00een ap\u0103 \u2014 ca pe\u0219tii, pe uscat \u2014 ca animalele, iar \u00een aer (<noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/%D0%9F%D0%BE%D0%B8%D1%81%D0%BA%D0%BE%D0%B2%D0%B0%D1%8F_%D0%BE%D0%BF%D1%82%D0%B8%D0%BC%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D1%8F\">SEO<\/a><\/noindex>) \u2014 ca p\u0103s\u0103rile.<\/p>\n<p><\/p>\n<p>Consider c\u0103 \u201e<noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/%D0%90%D0%B4%D0%B0%D0%BF%D1%82%D0%B8%D0%B2%D0%BD%D1%8B%D0%B9_%D0%B2%D0%B5%D0%B1-%D0%B4%D0%B8%D0%B7%D0%B0%D0%B9%D0%BD\">amfibien\u021b\u0103<\/a><\/noindex>\u201e, este ca \u0219i cum ai \u00eencerca s\u0103 stai pe dou\u0103 (cu SEO \u2014 trei) scaune. Mai bine ca Fiona din Shrek \u2014 ziua una, noaptea alta. Da, mai scump. Dar mai bine.<\/p>\n<p><\/p>\n<h1 id=\"cross-sharing\">Cross-sharing<\/h1>\n<p><\/p>\n<p>Am men\u021bionat deja \u00een punctul &#171;Scalabilitate Invers\u0103&#187; c\u0103 globalitatea Re\u021belei ofer\u0103 posibilitatea de a avea o singur\u0103 aplica\u021bie web pentru \u00eentreaga Planet\u0103. De aceea, fiecare aplica\u021bie web trebuie s\u0103 se deosebeasc\u0103 \u00een vreun fel de celelalte pentru a-\u0219i asigura supravie\u021buirea. Cu toate acestea, vasta mea experien\u021b\u0103 cu <noindex><a rel=\"nofollow\" href=\"https:\/\/magento.com\/\">Magento<\/a><\/noindex> (cadru pentru construirea magazinelor e-commerce) spune c\u0103 \u00eentre aplica\u021biile web individuale poate exista mai mult comun dec\u00e2t diferen\u021be. O aplica\u021bie web frumoas\u0103 nu doar c\u0103 trebuie s\u0103 fie modular\u0103, ci trebuie, de asemenea, s\u0103 \u00ee\u0219i \u00eemp\u0103rt\u0103\u0219easc\u0103 modulele cu alte aplica\u021bii web. \u00centr-o anumit\u0103 m\u0103sur\u0103, aceast\u0103 idee este reflectat\u0103 \u00een <noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/%D0%A1%D0%BF%D0%B5%D1%86%D0%B8%D1%84%D0%B8%D0%BA%D0%B0%D1%86%D0%B8%D1%8F_Java-%D0%BF%D0%BE%D1%80%D1%82%D0%BB%D0%B5%D1%82%D0%BE%D0%B2\">specifica\u021bii<\/a><\/noindex> JSR 168 \u0219i JSR 286 \u0219i astfel de framework-uri, precum <noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/WordPress\">WordPress<\/a><\/noindex>, <noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/Django\">Django<\/a><\/noindex> \u0219i aceea\u0219i Magento. Cu c\u00e2t mai multe module ale aplica\u021biei web sunt utilizate de alte aplica\u021bii web, cu at\u00e2t este mai frumoas\u0103 din perspectiva mea. Partajarea \u00eencruci\u0219at\u0103 permite crearea de module de calitate superioar\u0103 \u0219i, ca urmare, aplica\u021bii web mai stabile.<\/p>\n<p><\/p>\n<p>Prin modul nu m\u0103 refer la biblioteci de tip jQuery sau RequireJS \u2014 ci mai degrab\u0103 la entit\u0103\u021bi mai mari, de tipul pluginurilor \u00een <noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wordpress.org\/plugins\/\">WordPress<\/a><\/noindex> \u0219i <noindex><a rel=\"nofollow\" href=\"https:\/\/djangopackages.org\/categories\/apps\/\">Django<\/a><\/noindex>. Dar \u0219i pentru biblioteci este valabil\u0103 afirma\u021bia c\u0103 o distribu\u021bie larg\u0103 a unei biblioteci o face mai calitativ\u0103 \u0219i mai stabil\u0103. <\/p>\n<p><\/p>\n<h1 id=\"garvardskaya-arhitektura\">Arhitectura Harvard<\/h1>\n<p><\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/%D0%93%D0%B0%D1%80%D0%B2%D0%B0%D1%80%D0%B4%D1%81%D0%BA%D0%B0%D1%8F_%D0%B0%D1%80%D1%85%D0%B8%D1%82%D0%B5%D0%BA%D1%82%D1%83%D1%80%D0%B0\">Arhitectura Harvard<\/a><\/noindex>, spre deosebire de bal <noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/%D0%90%D1%80%D1%85%D0%B8%D1%82%D0%B5%D0%BA%D1%82%D1%83%D1%80%D0%B0_%D1%84%D0%BE%D0%BD_%D0%9D%D0%B5%D0%B9%D0%BC%D0%B0%D0%BD%D0%B0\">princetonian\u0103<\/a><\/noindex>, presupune separarea codului de date. Arhitectura nu a decolat, dar ideea mi se pare frumoas\u0103. Mai ales pentru aplica\u021biile web. Orice static\u0103 (HTML\/CSS\/JS\/Imagini\/&#8230;) este cod. Acesta poate \u0219i trebuie s\u0103 fie stocat \u00een cache fie pe server, fie la client. Iar datele reprezint\u0103 <noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/REST\">REST<\/a><\/noindex>\/<noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/JSON\">JSON<\/a><\/noindex> (frumos) sau <noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/SOAP\">SOAP<\/a><\/noindex>\/<noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/XML\">XML<\/a><\/noindex> (pu\u021bin mai pu\u021bin frumos). Sau WebSockets\/JSON (poate fi cea mai bun\u0103 op\u021biune, dar nu am \u00eencercat).<\/p>\n<p><\/p>\n<h1 id=\"lokalizaciya\">Localizare<\/h1>\n<p><\/p>\n<p>Exist\u0103 dou\u0103 lucruri care m\u0103 preocup\u0103 \u00een mod special atunci c\u00e2nd dezvolt aplica\u021bii web \u2014 este vorba despre interfa\u021ba multilingv\u0103 \u0219i fusurile orare. Eu provin din Letonia, unde se vorbesc trei limbi: LV, RU, EN. O aplica\u021bie web frumoas\u0103 ar trebui s\u0103 permit\u0103 utilizarea mai multor limbi \u00een aplica\u021bie, dar \u0219i s\u0103 permit\u0103 extinderea num\u0103rului de limbi utilizate prin resurse externe, precum <noindex><a rel=\"nofollow\" href=\"https:\/\/crowdin.com\/\">Crowdin<\/a><\/noindex>. Aceasta este, de asemenea, valabil\u0103 pentru modulele din care este construit\u0103 aplica\u021bia web.<\/p>\n<p><\/p>\n<p>Cu privire la fusurile orare, totul este simplu: \u00een toate cazurile \u00een care nu este clar cum s\u0103 gestion\u0103m data-timpul, face\u021bi astfel: tot ce se afl\u0103 pe server, pleac\u0103 de pe server \u0219i vine de pe server - UTC, tot ce se afi\u0219eaz\u0103 pe client - \u00een conformitate cu fusul orar din profilul utilizatorului. Este frumos.<\/p>\n<p><\/p>\n<h1 id=\"kuznicy-vmesto-zvezd-smerti\">Furnale \u00een loc de &#171;Stelele Mor\u021bii&#187;<\/h1>\n<p><\/p>\n<p>Cu mult timp \u00een urm\u0103, \u00een fiecare ora\u0219 mai mare sau mai mic, exista o fier\u0103rie. Poate chiar mai multe. Unele erau mai bune, altele nu. Existau me\u0219te\u0219ugari fierari cunoscu\u021bi pe tot globul, iar unii erau c\u0103uta\u021bi din lips\u0103 de alternative. Au trecut r\u0103zboaie, epidemii, dezastre naturale. Unele ora\u0219e disp\u0103reau \u00eempreun\u0103 cu popula\u021bia. Dar me\u0219te\u0219ugul fierariei a continuat s\u0103 tr\u0103iasc\u0103. \u00cen locul ora\u0219elor disp\u0103rute, s-au ridicat altele noi, unde au ap\u0103rut de asemenea fier\u0103rii. <\/p>\n<p><\/p>\n<p>Acum, privi\u021bi un astfel de serviciu, cum ar fi <noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/DNS\">DNS<\/a><\/noindex>. C\u00e2nd serverele r\u0103d\u0103cin\u0103 pic\u0103, <noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Distributed_denial-of-service_attacks_on_root_nameservers\">\u00eentreaga lume este afectat\u0103<\/a><\/noindex>.<\/p>\n<p><\/p>\n<p>Din punctul meu de vedere, o aplica\u021bie web frumoas\u0103 nu poate avea dimensiuni comparabile cu Facebook sau Mail.ru. Acestea sunt mai aproape de &#171;<noindex><a rel=\"nofollow\" href=\"https:\/\/www.wikiwand.com\/ru\/%D0%97%D0%B2%D0%B5%D0%B7%D0%B4%D0%B0_%D0%A1%D0%BC%D0%B5%D1%80%D1%82%D0%B8\">Steaua Mor\u021bii<\/a><\/noindex>&#187; at\u00e2t din punctul de vedere al resurselor necesare pentru construc\u021bia ei, c\u00e2t \u0219i din perspectiva resurselor necesare pentru men\u021binerea func\u021bionalit\u0103\u021bii. Da, \u00een cazul distrugerii Facebook-ului, umanitatea nu va disp\u0103rea, func\u021biile sale vor fi preluate relativ rapid de alte aplica\u021bii (de exemplu, <noindex><a rel=\"nofollow\" href=\"https:\/\/vk.com\/\">VK<\/a><\/noindex> pe teritoriul Federa\u021biei Ruse \u0219i \u00een zonele adiacente, Instagram, Twitter, &#8230;). Totu\u0219i, restr\u00e2ngerea unei p\u0103r\u021bi semnificative a popula\u021biei Planetei la o singur\u0103 aplica\u021bie este nepl\u0103cut\u0103. Cu at\u00e2t mai mult, av\u00e2nd \u00een vedere existen\u021ba unor alternative mult mai robuste (de exemplu, <noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/The_Pirate_Bay\">torrents<\/a><\/noindex>).<\/p>\n<p><\/p>\n<h1 id=\"rezyume\">Rezumat<\/h1>\n<p><\/p>\n<p>Dac\u0103 ai citit p\u00e2n\u0103 la cap\u0103t \u0219i e\u0219ti confuz &#171;<em>ce a fost asta?<\/em>&#171;, atunci \u00ee\u021bi exprim sincerele mele compasiuni. Nu te-am for\u021bat s\u0103 cite\u0219ti asta. Am \u00eencercat doar s\u0103 \u00eemi \u00eembrac g\u00e2ndurile \u00een cuvinte pentru a g\u0103si pe cei care g\u00e2ndesc la fel. Poate voi reu\u0219i s\u0103 discut cu ei anumite aspecte ale cre\u0103rii aplica\u021biilor web frumoase \u0219i s\u0103 aflu r\u0103spunsuri la \u00eentreb\u0103rile mele. Am multe.<\/p>\n<p><\/p>\n<p>V\u0103 mul\u021bumesc pentru lectur\u0103.<\/p>\n<p>Sursa: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/461749\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u042f \u0434\u0430\u0432\u043d\u043e \u0443\u0436\u0435 \u0437\u0430\u043d\u0438\u043c\u0430\u044e\u0441\u044c \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u043e\u0439 web-\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439. \u041e\u0447\u0435\u043d\u044c \u0434\u0430\u0432\u043d\u043e. \u0421\u0432\u043e\u0438 \u043f\u0435\u0440\u0432\u044b\u0435 web-\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0432 \u0441\u0440\u0435\u0434\u0435 Lotus Domino \u044f \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u043b \u0432 \u0442\u0435 \u0432\u0440\u0435\u043c\u0435\u043d\u0430, \u043a\u043e\u0433\u0434\u0430 \u0441\u043b\u043e\u0432\u043e &#171;google&#187; \u0435\u0449\u0451 \u043d\u0435 \u0431\u044b\u043b\u043e \u0433\u043b\u0430\u0433\u043e\u043b\u043e\u043c, \u0430 \u0434\u043b\u044f \u043f\u043e\u0438\u0441\u043a\u0430 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u0432 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0435 \u043b\u044e\u0434\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0438 Yahoo! \u0438 Rambler. \u042f \u0436\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0441\u044f Infoseek&#8216;\u043e\u043c \u2014 \u0443 \u043d\u0438\u0445 \u0431\u044b\u043b \u0441\u0443\u0436\u0430\u044e\u0449\u0438\u0439\u0441\u044f \u043f\u043e\u0438\u0441\u043a \u0438 \u043d\u0435 \u0442\u0430\u043a\u043e\u0439 \u0431\u0435\u0437\u043e\u0431\u0440\u0430\u0437\u043d\u043e \u043f\u0435\u0440\u0435\u0433\u0440\u0443\u0436\u0435\u043d\u043d\u044b\u0439 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441, \u043a\u0430\u043a [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":27480,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[702],"tags":[],"class_list":["post-36689","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-news"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.2.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u042f \u0434\u0430\u0432\u043d\u043e \u0443\u0436\u0435 \u0437\u0430\u043d\u0438\u043c\u0430\u044e\u0441\u044c \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u043e\u0439 web-\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439. \u041e\u0447\u0435\u043d\u044c \u0434\u0430\u0432\u043d\u043e.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/ro\/blog\/news\/krasota-v-glazah-smotryashhego\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.2.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"ro_RO\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u041a\u0440\u0430\u0441\u043e\u0442\u0430 \u0432 \u0433\u043b\u0430\u0437\u0430\u0445 \u0441\u043c\u043e\u0442\u0440\u044f\u0449\u0435\u0433\u043e | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u042f \u0434\u0430\u0432\u043d\u043e \u0443\u0436\u0435 \u0437\u0430\u043d\u0438\u043c\u0430\u044e\u0441\u044c \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u043e\u0439 web-\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439. \u041e\u0447\u0435\u043d\u044c \u0434\u0430\u0432\u043d\u043e.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/ro\/blog\/news\/krasota-v-glazah-smotryashhego\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2019-10-31T19:13:11+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T19:13:11+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Frumuse\u021bea este \u00een ochii privitorului | ProHoster","description":"De mult timp m\u0103 ocup cu dezvoltarea aplica\u021biilor web. Foarte mult timp.","canonical_url":"https:\/\/prohoster.info\/ro\/blog\/news\/krasota-v-glazah-smotryashhego","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"ro_RO","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u041a\u0440\u0430\u0441\u043e\u0442\u0430 \u0432 \u0433\u043b\u0430\u0437\u0430\u0445 \u0441\u043c\u043e\u0442\u0440\u044f\u0449\u0435\u0433\u043e | ProHoster","og:description":"\u042f \u0434\u0430\u0432\u043d\u043e \u0443\u0436\u0435 \u0437\u0430\u043d\u0438\u043c\u0430\u044e\u0441\u044c \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u043e\u0439 web-\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439. \u041e\u0447\u0435\u043d\u044c \u0434\u0430\u0432\u043d\u043e.","og:url":"https:\/\/prohoster.info\/ro\/blog\/news\/krasota-v-glazah-smotryashhego","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2019-10-31T19:13:11+00:00","article:modified_time":"2019-10-31T19:13:11+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"36689","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":"2026-01-22 04:26:19","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 01:40:23","updated":"2026-01-22 04:26:19","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/posts\/36689","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/comments?post=36689"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/posts\/36689\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/media\/27480"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/media?parent=36689"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/categories?post=36689"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/tags?post=36689"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}