{"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\/pt\/blog\/administrirovanie\/kak-prochest-i-ispravit-100000-strok-koda-za-nedelyu","title":{"rendered":"Como ler e corrigir 100.000 linhas de c\u00f3digo em uma semana","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Como ler e corrigir 100.000 linhas de c\u00f3digo em uma semana\" src=\"\/wp-content\/uploads\/2020\/03\/9d646716cc8d6eb1f9c49cb8539d7422.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nNo in\u00edcio, \u00e9 sempre dif\u00edcil entender um projeto grande e antigo. A avalia\u00e7\u00e3o de arquitetura \u00e9 uma das atividades do arquiteto. Normalmente, temos que trabalhar com projetos grandes e antigos, e os resultados precisam ser apresentados em uma semana.<\/p>\n<p>Como avaliar um projeto com 100 mil linhas de c\u00f3digo ou mais em uma semana e fornecer resultados realmente \u00fateis para o cliente?<\/p>\n<p>A maioria dos arquitetos e l\u00edderes t\u00e9cnicos j\u00e1 se deparou com avalia\u00e7\u00f5es de projetos como estas. Pode parecer um processo semi-formal ou um servi\u00e7o separado, como fazemos em nossa empresa, mas, de qualquer forma, a maioria de voc\u00eas j\u00e1 lidou com isso.<\/p>\n<p>A vers\u00e3o original em ingl\u00eas para seus amigos que n\u00e3o falam russo est\u00e1 aqui: <noindex><a rel=\"nofollow\" href=\"http:\/\/alexandvira.com\/architecture\/architecture-assessment-read-and-fix-100000-lines-of-code-in-a-week\/\">Avalia\u00e7\u00e3o de Arquitetura em uma semana<\/a><\/noindex>.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h2>Abordagem em nossa empresa<\/h2>\n<p>\nVou explicar como isso funciona em nossa empresa e como eu lido com situa\u00e7\u00f5es semelhantes, mas voc\u00ea pode facilmente adaptar essa abordagem \u00e0s necessidades do seu projeto e da sua empresa.<\/p>\n<p>Existem duas variantes de avalia\u00e7\u00e3o de arquitetura.<\/p>\n<p><b>Interna<\/b> \u2013 geralmente fazemos isso para projetos dentro da empresa. Qualquer projeto pode solicitar uma avalia\u00e7\u00e3o de arquitetura por v\u00e1rias raz\u00f5es:<\/p>\n<ol>\n<li>A equipe pensa que seu projeto \u00e9 perfeito e isso \u00e9 suspeito. J\u00e1 tivemos casos em que, frequentemente, em tais projetos, tudo n\u00e3o est\u00e1 t\u00e3o perfeito.<\/li>\n<li>A equipe quer verificar seu projeto e suas decis\u00f5es.<\/li>\n<li>A equipe sabe que tudo est\u00e1 ruim. Eles podem at\u00e9 listar os principais problemas e raz\u00f5es, mas querem obter uma lista completa de problemas e recomenda\u00e7\u00f5es para melhorar o projeto.<\/li>\n<\/ol>\n<p>\n<b>Externa<\/b> \u2013 \u00e9 um processo mais formal do que a avalia\u00e7\u00e3o interna. O cliente vem somente quando as coisas est\u00e3o realmente ruins. Normalmente, o cliente entende que existem problemas globais, mas n\u00e3o consegue identificar corretamente as causas e desmembr\u00e1-las.<\/p>\n<p>A avalia\u00e7\u00e3o de arquitetura para um cliente externo \u00e9 um caso mais complexo. O processo deve ser mais formal. Os projetos s\u00e3o sempre grandes e antigos. Eles t\u00eam muitos problemas, bugs e c\u00f3digo defeituoso. O relat\u00f3rio do trabalho realizado deve ser preparado em algumas semanas, no m\u00e1ximo, onde devem estar os principais problemas e recomenda\u00e7\u00f5es para melhorias. Portanto, se conseguirmos resolver a avalia\u00e7\u00e3o externa do projeto, a interna ser\u00e1 apenas uma quest\u00e3o simples. Vamos considerar o caso mais complexo.<\/p>\n<h2>Avalia\u00e7\u00e3o de Arquitetura de um projeto enterprise<\/h2>\n<p>\nUm projeto t\u00edpico de avalia\u00e7\u00e3o \u00e9 um grande projeto de enterprise antigo com muitos problemas. O cliente nos procura e pede para consertar seu projeto. \u00c9 como um iceberg; o cliente v\u00ea apenas o topo de seus problemas e n\u00e3o percebe o que est\u00e1 abaixo da superf\u00edcie (na profundidade do c\u00f3digo).<\/p>\n<p>Problemas que o cliente pode relatar e dos quais pode estar ciente:<\/p>\n<ul>\n<li>Problemas de desempenho<\/li>\n<li>Problemas de usabilidade do aplicativo<\/li>\n<li>Implanta\u00e7\u00e3o prolongada<\/li>\n<li>Aus\u00eancia de testes unit\u00e1rios e outros testes<\/li>\n<\/ul>\n<p>\nProblemas que o cliente provavelmente n\u00e3o percebe, mas que podem existir no projeto:<\/p>\n<ul>\n<li>Problemas de seguran\u00e7a<\/li>\n<li>Problemas de design<\/li>\n<li>Arquitetura incorreta<\/li>\n<li>Erros algor\u00edtmicos<\/li>\n<li>Tecnologias inadequadas<\/li>\n<li>D\u00edvida t\u00e9cnica<\/li>\n<li>Processo de desenvolvimento inadequado<\/li>\n<\/ul>\n<p><\/p>\n<h2>Processo formal de avalia\u00e7\u00e3o de arquitetura<\/h2>\n<p>\n\u00c9 um processo formal que seguimos na empresa, mas voc\u00ea pode ajust\u00e1-lo conforme necess\u00e1rio em sua empresa e projeto.<\/p>\n<h3>Pedido do cliente<\/h3>\n<p>\nO cliente pede uma avalia\u00e7\u00e3o da arquitetura do projeto atual. A pessoa respons\u00e1vel do nosso lado coleta informa\u00e7\u00f5es b\u00e1sicas sobre o projeto e seleciona os especialistas necess\u00e1rios. Dependendo do projeto, isso pode envolver diferentes especialistas.<\/p>\n<p><b>Arquiteto de Solu\u00e7\u00f5es<\/b> \u2013 a pessoa principal respons\u00e1vel pela avalia\u00e7\u00e3o e coordena\u00e7\u00e3o (e muitas vezes a \u00fanica).<br \/>\n<b>Especialistas espec\u00edficos de stack<\/b> \u2013 .Net, Java, Python, e outros especialistas t\u00e9cnicos dependendo do projeto e das tecnologias<br \/>\n<b>Especialistas em Nuvem<\/b> \u2013 podem ser arquitetos de nuvem Azure, GCP ou AWS.<br \/>\n<b>Infraestrutura<\/b> \u2013 DevOps, Administrador de sistema, etc.<br \/>\n<b>Outros especialistas<\/b> \u2013 como big data, machine learning, engenheiro de performance, especialista em seguran\u00e7a, l\u00edder de QA.<\/p>\n<h3>Coleta de informa\u00e7\u00f5es sobre o projeto<\/h3>\n<p>\nVoc\u00ea deve coletar o m\u00e1ximo de informa\u00e7\u00f5es poss\u00edvel sobre o projeto. Voc\u00ea pode usar v\u00e1rias t\u00e9cnicas dependendo da situa\u00e7\u00e3o:<\/p>\n<ul>\n<li>Question\u00e1rios e outras formas de comunica\u00e7\u00e3o por e-mail. O m\u00e9todo menos eficaz.<\/li>\n<li>Reuni\u00f5es online.<\/li>\n<li>Ferramentas especiais para troca de informa\u00e7\u00f5es, como: Google doc, Confluence, reposit\u00f3rios, etc.<\/li>\n<li>Reuni\u00f5es presenciais. O m\u00e9todo mais eficaz e mais caro.<\/li>\n<\/ul>\n<p>\n<i>O que coletar do cliente?<\/i><\/p>\n<p><b>Informa\u00e7\u00f5es b\u00e1sicas.<\/b> Sobre o que \u00e9 o projeto. Seu objetivo e valor. Principais metas e planos futuros. Objetivos e estrat\u00e9gias de neg\u00f3cios. Principais problemas e resultados desejados.<\/p>\n<p><b>Informa\u00e7\u00f5es sobre o projeto<\/b>. Pilha tecnol\u00f3gica, frameworks, linguagens de programa\u00e7\u00e3o. Implanta\u00e7\u00e3o on-premise ou em nuvem. Se o projeto est\u00e1 na nuvem, quais servi\u00e7os est\u00e3o sendo utilizados. Quais padr\u00f5es arquitet\u00f4nicos e de design foram aplicados.<\/p>\n<p><b>Requisitos n\u00e3o funcionais<\/b>. Todos os requisitos relacionados ao desempenho, disponibilidade e usabilidade do sistema. Requisitos de seguran\u00e7a, etc.<\/p>\n<p><b>Casos de uso b\u00e1sicos e fluxos de dados.<\/b><\/p>\n<p><b>Acesso ao c\u00f3digo-fonte<\/b>. A parte mais importante! Voc\u00ea definitivamente deve obter acesso aos reposit\u00f3rios e \u00e0 documenta\u00e7\u00e3o sobre como compilar o projeto.<\/p>\n<p><b>Acesso \u00e0 infraestrutura<\/b>. Seria bom ter acesso \u00e0 infraestrutura em stage ou produ\u00e7\u00e3o, para trabalhar com o sistema 'vivo'. \u00c9 uma grande sorte se o cliente tiver ferramentas de monitoramento da infraestrutura e de desempenho. Falaremos sobre essas ferramentas na pr\u00f3xima se\u00e7\u00e3o.<\/p>\n<p><b>Documenta\u00e7\u00e3o<\/b>. Se o cliente tiver documenta\u00e7\u00e3o, isso \u00e9 um bom come\u00e7o. Ela pode estar desatualizada, mas ainda assim \u00e9 um bom come\u00e7o. Nunca confie totalmente na documenta\u00e7\u00e3o \u2013 verifique com o cliente, na infraestrutura real e no c\u00f3digo-fonte.<\/p>\n<h3>Processo de avalia\u00e7\u00e3o da arquitetura<\/h3>\n<p>\nComo lidar com tanta informa\u00e7\u00e3o em t\u00e3o pouco tempo? Primeiro, paralelize o trabalho.<\/p>\n<p>O DevOps deve olhar para a infraestrutura. O l\u00edder t\u00e9cnico deve se concentrar no c\u00f3digo. O engenheiro de performance deve examinar as m\u00e9tricas de desempenho. O especialista em bancos de dados deve investigar mais a fundo as estruturas de dados.<\/p>\n<p>Mas esse \u00e9 o caso ideal, quando voc\u00ea tem muitos recursos. Normalmente, a avalia\u00e7\u00e3o do projeto \u00e9 feita por uma a tr\u00eas pessoas. Voc\u00ea pode at\u00e9 fazer a avalia\u00e7\u00e3o sozinho, o que muitas vezes acontece se voc\u00ea tiver o conhecimento e a experi\u00eancia adequados em todas as \u00e1reas do projeto. Nesse caso, voc\u00ea precisa automatizar todos os processos, tanto quanto poss\u00edvel.<\/p>\n<p>Infelizmente, voc\u00ea ter\u00e1 que ler a documenta\u00e7\u00e3o manualmente. Com a experi\u00eancia adequada, voc\u00ea conseguir\u00e1 entender rapidamente a qualidade da documenta\u00e7\u00e3o. O que \u00e9 verdade e o que claramente n\u00e3o corresponde \u00e0 realidade. \u00c0s vezes, voc\u00ea pode encontrar uma arquitetura na documenta\u00e7\u00e3o que nunca funcionar\u00e1 na vida real. Isso deve fazer voc\u00ea pensar em como realmente foi feito no projeto.<\/p>\n<h3>Ferramentas \u00fateis para automa\u00e7\u00e3o da avalia\u00e7\u00e3o do projeto<\/h3>\n<p>\nA avalia\u00e7\u00e3o de c\u00f3digo \u00e9 um exerc\u00edcio simples. Voc\u00ea pode utilizar analisadores de c\u00f3digo est\u00e1ticos que mostrar\u00e3o problemas de design, desempenho e seguran\u00e7a. Aqui est\u00e3o alguns deles:<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/structure101.com\/\">Structure 101<\/a><\/noindex> \u00e9 uma excelente ferramenta para arquitetos. Ele mostrar\u00e1 uma vis\u00e3o geral, a depend\u00eancia entre m\u00f3dulos e \u00e1reas potenciais para refatora\u00e7\u00e3o. Como todas as boas ferramentas, tem um custo justo, mas voc\u00ea pode aproveitar uma vers\u00e3o de teste de 30 dias.<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/www.sonarqube.org\/\">SonarQube<\/a><\/noindex> \u00e9 uma ferramenta cl\u00e1ssica. Uma ferramenta para an\u00e1lise est\u00e1tica de c\u00f3digo. Permite identificar c\u00f3digos ruins, bugs e problemas de seguran\u00e7a em mais de 20 linguagens de programa\u00e7\u00e3o.<\/p>\n<p>Todos os provedores de nuvem t\u00eam ferramentas para monitoramento de infraestrutura. Isso permitir\u00e1 que voc\u00ea avalie corretamente a efici\u00eancia da infraestrutura em termos de custo e desempenho. Para AWS, isso \u00e9 <noindex><a rel=\"nofollow\" href=\"https:\/\/aws.amazon.com\/premiumsupport\/technology\/trusted-advisor\/\">trusted advisor<\/a><\/noindex>. Para Azure, simplesmente <noindex><a rel=\"nofollow\" href=\"https:\/\/azure.microsoft.com\/en-us\/services\/advisor\/\">Azure Advisor<\/a><\/noindex>.<\/p>\n<p>Monitoramento adicional de desempenho e registro ajudar\u00e1 a identificar problemas de desempenho em todos os n\u00edveis. Desde a base de dados com consultas ineficazes, o backend at\u00e9 o frontend. Mesmo que o cliente n\u00e3o tenha instalado essas ferramentas anteriormente, voc\u00ea pode integr\u00e1-las rapidamente ao sistema existente para identificar problemas de desempenho.<\/p>\n<p>Como sempre, boas ferramentas t\u00eam seu pre\u00e7o. Posso recomendar algumas ferramentas pagas. Claro, voc\u00ea pode usar solu\u00e7\u00f5es open-source, mas isso exigir\u00e1 mais tempo de sua parte. E deve ser feito com anteced\u00eancia, e n\u00e3o no processo de avalia\u00e7\u00e3o da arquitetura.<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/newrelic.com\/\">New Relic<\/a><\/noindex> \u00e9 uma ferramenta de avalia\u00e7\u00e3o de desempenho de aplicativos<br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/www.datadoghq.com\/\">Datadog<\/a><\/noindex> \u00e9 um servi\u00e7o de monitoramento em nuvem<\/p>\n<p>Para testes de seguran\u00e7a, existem diversas ferramentas. Desta vez, recomendo uma ferramenta gratuita para escaneamento de sistemas.<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/owasp.org\/www-project-zap\/\">OWASP ZAP<\/a><\/noindex> \u00e9 uma ferramenta para escaneamento de aplicativos web quanto \u00e0 conformidade com padr\u00f5es de seguran\u00e7a.<\/p>\n<p>Vamos organizar tudo em um todo.<\/p>\n<h3>Preparar o relat\u00f3rio<\/h3>\n<p>\nComece seu relat\u00f3rio com os dados coletados do cliente. Descreva os objetivos do projeto, limita\u00e7\u00f5es e requisitos n\u00e3o funcionais. Em seguida, mencione todos os dados de entrada, como c\u00f3digo-fonte, documenta\u00e7\u00e3o e infraestrutura.<\/p>\n<p>Pr\u00f3ximo passo. Liste todos os problemas que voc\u00ea encontrou manualmente ou com a ajuda de ferramentas automatizadas. Coloque os grandes relat\u00f3rios gerados automaticamente na se\u00e7\u00e3o de ap\u00eandices no final. Aqui devem estar as evid\u00eancias curtas e concisas dos problemas encontrados.<br \/>\nPriorize os problemas encontrados em uma escala de erro, aviso, informa\u00e7\u00e3o. Voc\u00ea pode escolher sua pr\u00f3pria escala, mas esta \u00e9 a mais comum.<\/p>\n<p>Como verdadeiro arquiteto, voc\u00ea deve fornecer recomenda\u00e7\u00f5es para resolver os problemas encontrados. Descreva as melhorias e o valor para o neg\u00f3cio que o cliente obter\u00e1. Como demonstrar o valor para o neg\u00f3cio de <noindex><a rel=\"nofollow\" href=\"http:\/\/alexandvira.com\/architecture\/architecture-refactoring-and-design-refactoring-how-to-sell-it-client\/\">refatora\u00e7\u00e3o de arquitetura<\/a><\/noindex> que discutimos anteriormente.<\/p>\n<p>Prepare um roadmap com pequenas itera\u00e7\u00f5es. Cada itera\u00e7\u00e3o deve conter o tempo para execu\u00e7\u00e3o, descri\u00e7\u00e3o, n\u00famero de recursos necess\u00e1rios para a melhoria, valor t\u00e9cnico e valor para o neg\u00f3cio.<\/p>\n<h3>Finalizamos a avalia\u00e7\u00e3o da arquitetura e fornecemos ao cliente o relat\u00f3rio.<\/h3>\n<p>\nNunca simplesmente envie o relat\u00f3rio por e-mail. Ele pode n\u00e3o ser lido ou ser lido e n\u00e3o entendido sem a devida explica\u00e7\u00e3o. Em resumo, a comunica\u00e7\u00e3o ao vivo ajuda a eliminar mal-entendidos entre as pessoas. Voc\u00ea deve marcar uma reuni\u00e3o com o cliente e falar sobre os problemas encontrados, enfatizando os mais significativos. \u00c9 importante chamar a aten\u00e7\u00e3o do cliente para problemas que ele pode nem saber que existem, como quest\u00f5es de seguran\u00e7a, e explicar como isso pode impactar o neg\u00f3cio. Mostre seu roadmap com as melhorias e discuta v\u00e1rias op\u00e7\u00f5es que sejam mais adequadas para o cliente. Isso pode incluir tempo, recursos e volume de trabalho.<\/p>\n<p>Como um fechamento da sua reuni\u00e3o, envie ao cliente seu relat\u00f3rio.<\/p>\n<h2>Para concluir<\/h2>\n<p>\nA avalia\u00e7\u00e3o da arquitetura \u00e9 um processo complexo. Para realiz\u00e1-la adequadamente, voc\u00ea precisa ter experi\u00eancia e conhecimentos suficientes.<\/p>\n<p>\u00c9 realmente poss\u00edvel fornecer ao cliente resultados \u00fateis para ele e seu neg\u00f3cio em apenas uma semana. Mesmo que voc\u00ea fa\u00e7a isso sozinho.<\/p>\n<p>Com base na minha experi\u00eancia, muitas melhorias ficaram paradas no meio do caminho, \u00e0s vezes nem come\u00e7aram. Aqueles que escolheram um meio-termo e realizaram apenas algumas melhorias que eram maximamente \u00fateis para o neg\u00f3cio com o m\u00ednimo de esfor\u00e7o, melhoraram significativamente a qualidade do seu produto. Aqueles que n\u00e3o fizeram nada, ap\u00f3s alguns anos, poderiam at\u00e9 fechar o projeto.<\/p>\n<p>Seu objetivo \u00e9 mostrar ao cliente as melhores melhorias pelo menor pre\u00e7o.<\/p>\n<p>Outros artigos da se\u00e7\u00e3o <noindex><a rel=\"nofollow\" href=\"http:\/\/alexandvira.com\/category\/architecture\/\">arquitetura<\/a><\/noindex> pode ser lido em seu tempo livre.<\/p>\n<p>Desejo a voc\u00ea c\u00f3digo limpo e boas solu\u00e7\u00f5es arquitet\u00f4nicas.<\/p>\n<p>Nosso grupo do Facebook \u2014 <noindex><a rel=\"nofollow\" href=\"https:\/\/www.facebook.com\/groups\/206130407152602\/\">Arquitetura de Software e Desenvolvimento<\/a><\/noindex>.<br \/>\n<br \/>Fonte: <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.3 - 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\/pt\/blog\/administrirovanie\/kak-prochest-i-ispravit-100000-strok-koda-za-nedelyu\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"pt_PT\" \/>\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\/pt\/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\udd47Como ler e corrigir 100.000 linhas de c\u00f3digo em uma semana | ProHoster","description":"No come\u00e7o, sempre \u00e9 dif\u00edcil entender em.","canonical_url":"https:\/\/prohoster.info\/pt\/blog\/administrirovanie\/kak-prochest-i-ispravit-100000-strok-koda-za-nedelyu","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"pt_PT","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\/pt\/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\/pt\/wp-json\/wp\/v2\/posts\/74955","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/comments?post=74955"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/posts\/74955\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/media\/74956"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/media?parent=74955"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/categories?post=74955"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/tags?post=74955"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}