{"id":74955,"date":"2020-03-22T08:42:23","date_gmt":"2020-03-22T05:42:23","guid":{"rendered":"https:\/\/prohoster.info\/blog\/administrirovanie\/kak-prochest-i-ispravit-100000-strok-koda-za-nedelyu"},"modified":"2020-03-22T08:42:23","modified_gmt":"2020-03-22T05:42:23","slug":"kak-prochest-i-ispravit-100000-strok-koda-za-nedelyu","status":"publish","type":"post","link":"https:\/\/prohoster.info\/ro\/blog\/administrirovanie\/kak-prochest-i-ispravit-100000-strok-koda-za-nedelyu","title":{"rendered":"Cum s\u0103 cite\u0219ti \u0219i s\u0103 corectezi 100,000 de linii de cod \u00eentr-o s\u0103pt\u0103m\u00e2n\u0103","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Cum s\u0103 cite\u0219ti \u0219i s\u0103 corectezi 100,000 de linii de cod \u00eentr-o s\u0103pt\u0103m\u00e2n\u0103\" src=\"\/wp-content\/uploads\/2020\/03\/9d646716cc8d6eb1f9c49cb8539d7422.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nLa \u00eenceput, este \u00eentotdeauna dificil s\u0103 te descurci \u00eentr-un proiect mare \u0219i vechi. Evaluarea arhitecturii este una dintre activit\u0103\u021bile arhitectului. De obicei, trebuie s\u0103 lucrezi cu proiecte mari \u0219i vechi, iar rezultatele trebuie furnizate \u00eentr-o s\u0103pt\u0103m\u00e2n\u0103.<\/p>\n<p>Cum s\u0103 evaluezi un proiect cu 100.000 de linii de cod sau mai mult \u00eentr-o s\u0103pt\u0103m\u00e2n\u0103, asigur\u00e2nd \u00een acela\u0219i timp rezultate cu adev\u0103rat utile pentru client.<\/p>\n<p>Cei mai mul\u021bi arhitec\u021bi \u0219i lideri tehnici s-au confruntat cu evalu\u0103ri de acest tip pentru proiecte. Acest lucru poate p\u0103rea un proces semi-formal sau un serviciu separat, a\u0219a cum se \u00eent\u00e2mpl\u0103 \u00een compania noastr\u0103, totu\u0219i, majoritatea dintre voi a\u021bi avut de-a face cu asta.<\/p>\n<p>Originalul \u00een limba englez\u0103 pentru prietenii vo\u0219tri care nu vorbesc rus\u0103 se g\u0103se\u0219te aici: <noindex><a rel=\"nofollow\" href=\"http:\/\/alexandvira.com\/architecture\/architecture-assessment-read-and-fix-100000-lines-of-code-in-a-week\/\">Evaluarea arhitecturii \u00eentr-o s\u0103pt\u0103m\u00e2n\u0103<\/a><\/noindex>.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h2>Abordarea \u00een compania noastr\u0103<\/h2>\n<p>\nVoi explica cum func\u021bioneaz\u0103 acest lucru \u00een compania noastr\u0103 \u0219i cum procedez \u00een astfel de situa\u021bii, dar pute\u021bi modifica aceast\u0103 abordare \u00een func\u021bie de nevoile proiectului \u0219i companiei voastre.<\/p>\n<p>Exist\u0103 dou\u0103 tipuri de evaluare a arhitecturii.<\/p>\n<p><b>Intern\u0103<\/b> \u2013 de obicei, o facem pentru proiectele interne ale companiei. Orice proiect poate solicita o evaluare a arhitecturii din mai multe motive:<\/p>\n<ol>\n<li>Echipa crede c\u0103 proiectul lor este perfect \u0219i acest lucru este suspect. Am avut cazuri de acest fel \u0219i, de obicei, \u00een astfel de proiecte, lucrurile nu sunt deloc ideale.<\/li>\n<li>Echipa vrea s\u0103-\u0219i verifice proiectul \u0219i solu\u021biile.<\/li>\n<li>Echipa \u0219tie c\u0103 exist\u0103 probleme. Pot chiar s\u0103 enumere principalele probleme \u0219i cauze, dar doresc s\u0103 ob\u021bin\u0103 o list\u0103 complet\u0103 a problemelor \u0219i recomand\u0103ri pentru \u00eembun\u0103t\u0103\u021birea proiectului.<\/li>\n<\/ol>\n<p>\n<b>Extern\u0103<\/b> \u2013 este un proces mai formal dec\u00e2t evaluarea intern\u0103. Clientul vine \u00eentotdeauna doar \u00eentr-un singur caz, c\u00e2nd lucrurile sunt foarte proaste. De obicei, clientul \u00een\u021belege c\u0103 exist\u0103 probleme globale, dar nu poate identifica corect cauzele \u0219i a le descompune \u00een p\u0103r\u021bile componente.<\/p>\n<p>Evaluarea arhitecturii pentru un client extern este un caz mai complex. Procesul trebuie s\u0103 fie mai formal. Proiectele sunt \u00eentotdeauna mari \u0219i vechi. Acestea au multe probleme, bug-uri \u0219i cod imperfect. Raportul final trebuie s\u0103 fie gata \u00eentr-o perioad\u0103 de c\u00e2teva s\u0103pt\u0103m\u00e2ni, cel mult, unde s\u0103 fie enumerate principalele probleme \u0219i recomand\u0103ri pentru \u00eembun\u0103t\u0103\u021bire. A\u0219adar, dac\u0103 ne ocup\u0103m de evaluarea extern\u0103 a proiectului, evaluarea intern\u0103 va fi o nimica toat\u0103. S\u0103 lu\u0103m \u00een considerare cel mai complicat caz.<\/p>\n<h2>Evaluarea arhitecturii proiectului de tip enterprise<\/h2>\n<p>\nUn proiect tipic pentru evaluare este un proiect mare, vechi, de tip enterprise, cu o mul\u021bime de probleme. Clientul vine la noi \u0219i ne cere s\u0103 repar\u0103m proiectul s\u0103u. Este ca un iceberg, clientul vede doar partea de sus a problemelor sale \u0219i nu \u00ee\u0219i d\u0103 seama de ceea ce este sub ap\u0103 (\u00een ad\u00e2ncimea codului).<\/p>\n<p>Problemele pe care clientul le poate reclama \u0219i despre care poate fi con\u0219tient:<\/p>\n<ul>\n<li>Probleme de performan\u021b\u0103<\/li>\n<li>Probleme de utilizare a aplica\u021biei (Usability)<\/li>\n<li>Dezvoltare lung\u0103<\/li>\n<li>Lipsa testelor unitare \u0219i altor teste<\/li>\n<\/ul>\n<p>\nProbleme despre care clientul probabil c\u0103 nu b\u0103nuieste, dar care pot exista \u00een proiect:<\/p>\n<ul>\n<li>Probleme de securitate<\/li>\n<li>Probleme de proiectare<\/li>\n<li>Arhitectur\u0103 gre\u0219it\u0103<\/li>\n<li>Erori algoritmice<\/li>\n<li>Tehnologii inadecvate<\/li>\n<li>Datorie tehnic\u0103<\/li>\n<li>Proces de dezvoltare gre\u0219it<\/li>\n<\/ul>\n<p><\/p>\n<h2>Proces formal de evaluare a arhitecturii<\/h2>\n<p>\nAcesta este un proces formal pe care \u00eel respect\u0103m \u00een companie, dar \u00eel pute\u021bi adapta \u00een func\u021bie de compania \u0219i proiectul dumneavoastr\u0103.<\/p>\n<h3>Cerere din partea clientului<\/h3>\n<p>\nClientul cere o evaluare a arhitecturii proiectului actual. Persoana responsabil\u0103 din partea noastr\u0103 colecteaz\u0103 informa\u021biile de baz\u0103 despre proiect \u0219i selecteaz\u0103 exper\u021bii necesari. \u00cen func\u021bie de proiect, ace\u0219tia pot fi diferi\u021bi exper\u021bi.<\/p>\n<p><b>Solution Architect<\/b> \u2013 persoana principal\u0103 responsabil\u0103 de evaluare \u0219i coordonare (\u0219i adesea singura).<br \/>\n<b>Exper\u021bi specifici pe stack<\/b> \u2013 .Net, Java, Python \u0219i al\u021bi speciali\u0219ti tehnici \u00een func\u021bie de proiect \u0219i tehnologiile utilizate<br \/>\n<b>Exper\u021bi \u00een cloud<\/b> \u2013 pot fi arhitec\u021bi Azure, GCP sau AWS.<br \/>\n<b>Infrastructur\u0103<\/b> \u2013 DevOps, administrator de sistem etc.<br \/>\n<b>Al\u021bi exper\u021bi<\/b> \u2013 precum big data, machine learning, performance engineer, expert \u00een securitate, QA lead.<\/p>\n<h3>Colectarea informa\u021biilor despre proiect<\/h3>\n<p>\nAr trebui s\u0103 colecta\u021bi c\u00e2t mai multe informa\u021bii despre proiect. Pute\u021bi folosi diverse tehnici \u00een func\u021bie de situa\u021bie:<\/p>\n<ul>\n<li>Chestionare \u0219i alte metode de comunicare prin e-mail. Cea mai pu\u021bin eficient\u0103 metod\u0103.<\/li>\n<li>\u00cent\u00e2lniri online.<\/li>\n<li>Instrumente speciale pentru schimbul de informa\u021bii, cum ar fi: Google doc, Confluence, depozite etc.<\/li>\n<li>\u00cent\u00e2lniri \"live\" la fa\u021ba locului. Cea mai eficient\u0103 \u0219i cea mai costisitoare metod\u0103.<\/li>\n<\/ul>\n<p>\n<i>Ce trebuie s\u0103 ob\u021binem de la client?<\/i><\/p>\n<p><b>Informa\u021bii de baz\u0103.<\/b> Despre ce este proiectul. Scopul \u0219i valoarea sa. Obiectivele principale \u0219i planurile de viitor. Obiectivele \u0219i strategiile de afaceri. Problemele principale \u0219i rezultatul dorit.<\/p>\n<p><b>Informa\u021bii despre proiect<\/b>. Tehnologia de baz\u0103, cadrele de lucru, limbajele de programare. Implementare on-premise sau \u00een cloud. Dac\u0103 proiectul este \u00een cloud, ce servicii sunt utilizate. Ce tipare arhitecturale \u0219i de design au fost aplicate.<\/p>\n<p><b>Cerin\u021be non-func\u021bionale<\/b>. Toate cerin\u021bele legate de performan\u021b\u0103, disponibilitate, utilizabilitatea sistemului. Cerin\u021be de securitate etc.<\/p>\n<p><b>Cazuri de utilizare de baz\u0103 \u0219i fluxuri de date.<\/b><\/p>\n<p><b>Acces la codul surs\u0103<\/b>. Cea mai important\u0103 parte! Este esen\u021bial s\u0103 ob\u021bine\u021bi acces la repo-uri \u0219i documenta\u021bia despre cum s\u0103 aduna\u021bi proiectul.<\/p>\n<p><b>Acces la infrastructur\u0103<\/b>. Ar fi bine s\u0103 ob\u021bine\u021bi acces la infrastructura de stage sau de produc\u021bie pentru a lucra cu un sistem \u201elive\u201d. Este o mare noroc dac\u0103 clientul are instrumente de monitorizare a infrastructurii \u0219i performan\u021bei. Despre aceste instrumente vom discuta \u00een sec\u021biunea urm\u0103toare.<\/p>\n<p><b>Documenta\u021bie<\/b>. Dac\u0103 clientul are documenta\u021bie, este un bun \u00eenceput. Poate fi \u00eenvechit\u0103, dar este totu\u0219i un bun \u00eenceput. Nu v\u0103 \u00eencrede\u021bi niciodat\u0103 \u00een documenta\u021bie \u2013 verifica\u021bi-o cu clientul, pe infrastructura real\u0103 \u0219i \u00een codul surs\u0103.<\/p>\n<h3>Procesul de evaluare a arhitecturii<\/h3>\n<p>\nCum s\u0103 gestiona\u021bi o astfel de cantitate mare de informa\u021bii \u00eentr-un interval de timp at\u00e2t de scurt? \u00cen primul r\u00e2nd, repartiza\u021bi munca pe paralele.<\/p>\n<p>DevOps trebuie s\u0103 se uite \u00een infrastructur\u0103. Tech lead \u00een cod. Inginerul de performan\u021b\u0103 s\u0103 verifice metricile de performan\u021b\u0103. Specialistul \u00een baze de date ar trebui s\u0103 aprofundeze structurile de date.<\/p>\n<p>Dar acesta este cazul ideal, c\u00e2nd ave\u021bi multe resurse. De obicei, evaluarea proiectului se face de una p\u00e2n\u0103 la trei persoane. Pute\u021bi chiar s\u0103 efectua\u021bi evaluarea singuri, ceea ce se \u00eent\u00e2mpl\u0103 adesea, dac\u0103 ave\u021bi cuno\u0219tin\u021be \u0219i experien\u021b\u0103 adecvat\u0103 \u00een toate domeniile proiectului. \u00cen acest caz, trebuie s\u0103 automatiza\u021bi toate procesele c\u00e2t mai mult posibil.<\/p>\n<p>Din p\u0103cate, va trebui s\u0103 citi\u021bi documenta\u021bia manual. Cu experien\u021ba adecvat\u0103, ve\u021bi putea \u00een\u021belege rapid calitatea documenta\u021biei. Ce este adev\u0103rat \u0219i ce nu corespunde evident realit\u0103\u021bii. Uneori, pute\u021bi \u00eent\u00e2lni o astfel de arhitectur\u0103 \u00een documenta\u021bie care nu va func\u021biona niciodat\u0103 \u00een via\u021ba real\u0103. Acesta este un semnal pentru a v\u0103 \u00eentreba cum este realizat\u0103 \u00een realitate \u00een proiect.<\/p>\n<h3>Instrumente utile pentru automatizarea evalu\u0103rii proiectului<\/h3>\n<p>\nEvaluarea codului este un exerci\u021biu simplu. Pute\u021bi utiliza analizatori de cod statice care vor ar\u0103ta probleme de design, performan\u021b\u0103 \u0219i securitate. Iat\u0103 c\u00e2teva dintre acestea:<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/structure101.com\/\">Structure 101<\/a><\/noindex> este un instrument excelent pentru arhitect. \u00ce\u021bi va oferi o imagine de ansamblu, dependen\u021bele \u00eentre module \u0219i zonele poten\u021biale pentru refactoring. Ca toate uneltele bune, cost\u0103 destul de mult, dar po\u021bi profita de un trial gratuit de 30 de zile.<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/www.sonarqube.org\/\">SonarQube<\/a><\/noindex> este un instrument clasic. Un instrument pentru analiza static\u0103 a codului. Permite identificarea codului de proast\u0103 calitate, a bug-urilor \u0219i a problemelor de securitate pentru mai mult de 20 de limbaje de programare.<\/p>\n<p>To\u021bi furnizorii de cloud au instrumente pentru monitorizarea infrastructurii. Acest lucru \u00ee\u021bi va permite s\u0103 evaluezi corect eficien\u021ba infrastructurii din punct de vedere al costurilor \u0219i performan\u021bei. Pentru AWS, acesta este <noindex><a rel=\"nofollow\" href=\"https:\/\/aws.amazon.com\/premiumsupport\/technology\/trusted-advisor\/\">trusted advisor<\/a><\/noindex>. Pentru Azure, este simplu <noindex><a rel=\"nofollow\" href=\"https:\/\/azure.microsoft.com\/en-us\/services\/advisor\/\">Azure Advisor<\/a><\/noindex>.<\/p>\n<p>Monitorizarea suplimentar\u0103 a performan\u021bei \u0219i loggingul te va ajuta s\u0103 identifici problemele de performan\u021b\u0103 la toate nivelurile. \u00cencep\u00e2nd cu baza de date cu interog\u0103ri ineficiente, backendul \u0219i termin\u00e2nd cu frontendul. Chiar dac\u0103 clientul nu a instalat aceste instrumente anterior, po\u021bi integra rapid aceste solu\u021bii \u00een sistemul existent pentru a determina problemele de performan\u021b\u0103.<\/p>\n<p>Ca de obicei, instrumentele bune au un pre\u021b pe m\u0103sur\u0103. Pot recomanda c\u00e2teva instrumente pl\u0103tite. Desigur, po\u021bi folosi open-source, dar vei avea nevoie de mai mult timp pentru asta. \u0218i aceasta ar trebui f\u0103cut\u0103 din timp, nu \u00een timpul evalu\u0103rii arhitecturii.<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/newrelic.com\/\">New Relic<\/a><\/noindex> este un instrument pentru evaluarea performan\u021bei aplica\u021biilor<br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/www.datadoghq.com\/\">Datadog<\/a><\/noindex> este un serviciu cloud pentru monitorizarea sistemelor<\/p>\n<p>Pentru testarea securit\u0103\u021bii exist\u0103 multe instrumente. De data aceasta, \u00ee\u021bi voi recomanda un instrument gratuit pentru scanarea sistemului.<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/owasp.org\/www-project-zap\/\">OWASP ZAP<\/a><\/noindex> este un instrument pentru scanarea aplica\u021biilor web pentru conformitate cu standardele de securitate.<\/p>\n<p>Adun\u0103m totul \u00eentr-un singur loc.<\/p>\n<h3>Preg\u0103tim raportul<\/h3>\n<p>\n\u00cencepe-\u021bi raportul cu datele str\u00e2nse de la client. Descrie obiectivele proiectului, constr\u00e2ngerile, cerin\u021bele non-func\u021bionale. Apoi, men\u021bioneaz\u0103 toate datele de intrare, codul surs\u0103, documenta\u021bia \u0219i infrastructura.<\/p>\n<p>Urm\u0103torul pas. Indica\u021bi toate problemele pe care le-a\u021bi g\u0103sit manual sau cu ajutorul instrumentelor automatizate. Rapoartele mari generate automat ar trebui s\u0103 fie plasate la sf\u00e2r\u0219it, \u00een sec\u021biunea anexelor. Aici ar trebui s\u0103 fie dovezi scurte \u0219i concise ale problemelor identificate.<br \/>\nPrioritiza\u021bi problemele identificate pe o scar\u0103 de tip error, warning, info. Pute\u021bi alege propria scar\u0103, dar aceasta este acceptat\u0103 pe scar\u0103 larg\u0103.<\/p>\n<p>Ca un arhitect adev\u0103rat, ave\u021bi datoria de a oferi recomand\u0103ri pentru remedierea problemelor descoperite. Descrie\u021bi \u00eembun\u0103t\u0103\u021birile \u0219i valoarea pentru afacere pe care le va ob\u021bine clientul. Cum s\u0103 ar\u0103ta\u021bi valoarea pentru afacere de la <noindex><a rel=\"nofollow\" href=\"http:\/\/alexandvira.com\/architecture\/architecture-refactoring-and-design-refactoring-how-to-sell-it-client\/\">refactorizarea arhitecturii<\/a><\/noindex> pe care le-am discutat anterior.<\/p>\n<p>Preg\u0103ti\u021bi un roadmap cu itera\u021bii mici. Fiecare itera\u021bie ar trebui s\u0103 con\u021bin\u0103 timpul de realizare, descrierea, num\u0103rul de resurse necesare pentru \u00eembun\u0103t\u0103\u021bire, valoarea tehnic\u0103 \u0219i valoarea pentru afacere.<\/p>\n<h3>Finaliz\u0103m evaluarea arhitecturii \u0219i furniz\u0103m clientului un raport.<\/h3>\n<p>\nNu trimite\u021bi niciodat\u0103 un raport doar prin e-mail. Acesta poate fi fie complet trecut cu vederea, fie citit f\u0103r\u0103 a fi \u00een\u021beles corespunz\u0103tor f\u0103r\u0103 explica\u021bii adecvate. Pe scurt, comunicarea direct\u0103 ajut\u0103 la eliminarea ne\u00een\u021belegerilor \u00eentre oameni. Ar trebui s\u0103 stabili\u021bi o \u00eent\u00e2lnire cu clientul \u0219i s\u0103 discuta\u021bi despre problemele identificate, pun\u00e2nd accent pe cele mai semnificative. Acorda\u021bi aten\u021bie problemelor de care clientul ar putea s\u0103 nu fie con\u0219tient, cum ar fi problemele de securitate, \u0219i explica\u021bi cum acestea pot afecta afacerea. Prezenta\u021bi-v\u0103 roadmap-ul cu \u00eembun\u0103t\u0103\u021biri \u0219i discuta\u021bi diferite op\u021biuni mai potrivite pentru client. Acestea pot include timp, resurse \u0219i volumul de munc\u0103.<\/p>\n<p>Ca o concluzie a \u00eent\u00e2lnirii dumneavoastr\u0103, trimite\u021bi clientului raportul.<\/p>\n<h2>\u00cen concluzie<\/h2>\n<p>\nEvaluarea arhitecturii este un proces complex. Pentru a efectua evaluarea corespunz\u0103tor, trebuie s\u0103 ave\u021bi suficient\u0103 experien\u021b\u0103 \u0219i cuno\u0219tin\u021be.<\/p>\n<p>Este posibil s\u0103 oferi\u021bi clientului rezultate utile pentru el \u0219i afacerea sa \u00een doar o s\u0103pt\u0103m\u00e2n\u0103. Chiar \u0219i atunci c\u00e2nd lucra\u021bi singur.<\/p>\n<p>Din experien\u021ba mea, multe \u00eembun\u0103t\u0103\u021biri au fost abandonate pe parcurs, iar uneori nu au \u00eenceput chiar niciodat\u0103. Cei care au ales un echilibru dorit, realiz\u00e2nd doar o parte din \u00eembun\u0103t\u0103\u021birile cele mai utile pentru afacere cu un minim de efort, au \u00eembun\u0103t\u0103\u021bit semnificativ calitatea produsului lor. Cei care nu au f\u0103cut nimic, dup\u0103 c\u00e2\u021biva ani, ar fi putut chiar s\u0103 \u00eenchid\u0103 proiectul.<\/p>\n<p>Scopul dumneavoastr\u0103 este s\u0103 ar\u0103ta\u021bi clientului cele mai mari \u00eembun\u0103t\u0103\u021biri la cel mai mic pre\u021b.<\/p>\n<p>Alte articole din sec\u021biune <noindex><a rel=\"nofollow\" href=\"http:\/\/alexandvira.com\/category\/architecture\/\">arhitectur\u0103<\/a><\/noindex> se poate citi \u00een timpul liber.<\/p>\n<p>V\u0103 doresc cod curat \u0219i solu\u021bii arhitecturale bune.<\/p>\n<p>Grupul nostru de Facebook \u2014 <noindex><a rel=\"nofollow\" href=\"https:\/\/www.facebook.com\/groups\/206130407152602\/\">Arhitectur\u0103 Software \u0219i Dezvoltare<\/a><\/noindex>.<br \/>\n<br \/>Sursa: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/493226\/\">habr.com<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0412 \u043d\u0430\u0447\u0430\u043b\u0435 \u0432\u0441\u0435\u0433\u0434\u0430 \u0442\u044f\u0436\u0435\u043b\u043e \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c\u0441\u044f \u0432 \u0431\u043e\u043b\u044c\u0448\u043e\u043c \u0438 \u0441\u0442\u0430\u0440\u043e\u043c \u043f\u0440\u043e\u0435\u043a\u0442\u0435. Architecture assessment \u2014 \u044d\u0442\u043e \u043e\u0434\u043d\u0430 \u0438\u0437 \u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u0435\u0439 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u043e\u0440\u0430. \u041e\u0431\u044b\u0447\u043d\u043e \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441 \u0431\u043e\u043b\u044c\u0448\u0438\u043c\u0438, \u0441\u0442\u0430\u0440\u044b\u043c\u0438 \u043f\u0440\u043e\u0435\u043a\u0442\u0430\u043c\u0438, \u0430 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u043d\u0430\u0434\u043e \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0437\u0430 \u043d\u0435\u0434\u0435\u043b\u044e. \u041a\u0430\u043a \u043e\u0446\u0435\u043d\u0438\u0442\u044c \u043f\u0440\u043e\u0435\u043a\u0442 \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u043c 100\u043a \u0438 \u0431\u043e\u043b\u0435\u0435 \u0441\u0442\u0440\u043e\u043a \u043a\u043e\u0434\u0430 \u0437\u0430 \u043d\u0435\u0434\u0435\u043b\u044e \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u043e\u043b\u0435\u0437\u043d\u044b\u0435 \u0434\u043b\u044f \u043a\u043b\u0438\u0435\u043d\u0442\u0430 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b. \u0411\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u043e\u0440\u043e\u0432 \u0438 \u0442\u0435\u0445 \u043b\u0438\u0434\u043e\u0432 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":74956,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-74955","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.2.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u0412 \u043d\u0430\u0447\u0430\u043b\u0435 \u0432\u0441\u0435\u0433\u0434\u0430 \u0442\u044f\u0436\u0435\u043b\u043e \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c\u0441\u044f \u0432.\" \/>\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\/administrirovanie\/kak-prochest-i-ispravit-100000-strok-koda-za-nedelyu\" \/>\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\u0430\u043a \u043f\u0440\u043e\u0447\u0435\u0441\u0442\u044c \u0438 \u0438\u0441\u043f\u0440\u0430\u0432\u0438\u0442\u044c 100,000 \u0441\u0442\u0440\u043e\u043a \u043a\u043e\u0434\u0430 \u0437\u0430 \u043d\u0435\u0434\u0435\u043b\u044e | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0412 \u043d\u0430\u0447\u0430\u043b\u0435 \u0432\u0441\u0435\u0433\u0434\u0430 \u0442\u044f\u0436\u0435\u043b\u043e \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c\u0441\u044f \u0432.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/ro\/blog\/administrirovanie\/kak-prochest-i-ispravit-100000-strok-koda-za-nedelyu\" \/>\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=\"2020-03-22T05:42:23+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-03-22T05:42:23+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\udd47Cum s\u0103 cite\u0219ti \u0219i s\u0103 corectezi 100.000 de linii de cod \u00een o s\u0103pt\u0103m\u00e2n\u0103 | ProHoster","description":"La \u00eenceput, este \u00eentotdeauna greu s\u0103 \u00een\u021belegi.","canonical_url":"https:\/\/prohoster.info\/ro\/blog\/administrirovanie\/kak-prochest-i-ispravit-100000-strok-koda-za-nedelyu","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\u0430\u043a \u043f\u0440\u043e\u0447\u0435\u0441\u0442\u044c \u0438 \u0438\u0441\u043f\u0440\u0430\u0432\u0438\u0442\u044c 100,000 \u0441\u0442\u0440\u043e\u043a \u043a\u043e\u0434\u0430 \u0437\u0430 \u043d\u0435\u0434\u0435\u043b\u044e | ProHoster","og:description":"\u0412 \u043d\u0430\u0447\u0430\u043b\u0435 \u0432\u0441\u0435\u0433\u0434\u0430 \u0442\u044f\u0436\u0435\u043b\u043e \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c\u0441\u044f \u0432.","og:url":"https:\/\/prohoster.info\/ro\/blog\/administrirovanie\/kak-prochest-i-ispravit-100000-strok-koda-za-nedelyu","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":"2020-03-22T05:42:23+00:00","article:modified_time":"2020-03-22T05:42:23+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"74955","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":null,"breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 18:04:26","updated":"2022-10-02 00:18:18","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\/74955","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=74955"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/posts\/74955\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/media\/74956"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/media?parent=74955"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/categories?post=74955"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/tags?post=74955"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}