SQL Index Manager - uma longa história sobre o SQL Server, escavações graves e manutenção de índices

Gerenciador de Índice SQL

De vez em quando criamos nossos próprios problemas com nossas próprias mãos ... com nossa visão do mundo ... com nossa inação ... com nossa preguiça ... e com nossos medos. Como resultado, parece ser muito conveniente nadar no fluxo público de padrões de esgoto ... porque é quente e divertido, e o resto não importa - podemos sentir o cheiro. Mas, após um fracasso, vem a realização da verdade simples - em vez de gerar um fluxo interminável de causas, autopiedade e justificativa, basta apenas fazer o que você considera o mais importante para si mesmo. Este será o ponto de partida para a sua nova realidade.

Para mim, o escrito abaixo é apenas um ponto de partida. Espera-se que o caminho seja demorado ...

Todas as pessoas são socialmente dependentes e subconscientemente todos queremos fazer parte da sociedade, buscando obter aprovação externa de nossas ações. Mas, juntamente com a aprovação, estaremos constantemente cercados por avaliações públicas, apoiadas por complexos internos e restrições constantes.

Freqüentemente, temos medo do fracasso, adiando constantemente coisas importantes para nós mesmos e, em seguida, racionalizando logicamente nossa mente, tentando nos tranquilizar: “não deu certo de qualquer maneira”, “não será aprovado pelos outros” e “o que é o uso de fazê-lo? ”. Muitos de nós simplesmente não sabemos quão fortes são, porque nunca tentaram mudar algo em suas vidas.

Afinal, se uma pessoa faz apenas o que pode - ela cria automaticamente um modelo em sua cabeça: "Eu posso fazer ... eu farei ...". Mas não há nada de extraordinário no fato de uma pessoa fazer apenas o que pode. Ele fez isso porque podia, mas ao mesmo tempo permaneceu na mesma faixa de suas capacidades originais, nas quais esteve todo esse tempo. Mas se você não conseguiu fazer algo, mas conseguiu - é aí que você é bom. Afinal, somente quando saímos da zona de conforto e trabalhamos além da nossa gama de capacidades, podemos desenvolver e melhorar.

Minha primeira tentativa de fazer pelo menos algo significativo começou no quarto ano na universidade. Eu já tinha algum conhecimento básico de C ++ e uma tentativa malsucedida de memorizar todos os livros de Richter, com base nos conselhos de um potencial empregador. Acidentalmente, me deparei com a biblioteca OpenCV e algumas demos de reconhecimento de imagem. Inesperadamente, comecei a passar noites sem dormir em minhas tentativas de descobrir como melhorar a funcionalidade desta biblioteca. Muitas coisas não deram certo e, por engenharia reversa, tentei olhar para produtos com orientação semelhante. Chegou ao ponto que aprendi a desmontar uma biblioteca comercial e gradualmente obtive alguns algoritmos que não consegui implementar sozinho.

O final do quinto ano estava se aproximando e comecei a desfrutar cada vez mais de tudo o que vinha fazendo todo esse tempo. Como já era necessário começar a trabalhar ao máximo, decidi escrever para os desenvolvedores da biblioteca comercial a partir da qual captei minhas idéias. Pareceu-me que eles facilmente teriam me contratado, mas depois de algumas cartas sobre meu desejo de trabalhar com eles, nossa conversa não levou a nada. Houve uma ligeira decepção e uma forte motivação para provar que posso conseguir algo sozinho.

Em um mês, construí um site, carreguei tudo em uma hospedagem gratuita, preparei a documentação e comecei a vender. Não havia dinheiro para publicidade e, de alguma forma, para atrair a atenção de clientes em potencial, comecei a distribuir meus trabalhos sob o disfarce de código aberto. A recuperação foi de cerca de 70%, mas, inesperadamente para mim, as pessoas restantes, embora com relutância, mas começaram a comprar. Ninguém ficou envergonhado pelo meu inglês ruim ou pela hospedagem gratuita em que o site estava armazenado. As pessoas ficaram satisfeitas com a combinação de preços baixos e funcionalidades básicas que atendiam às suas necessidades.

Havia vários clientes regulares que queriam investir no meu empreendimento como parceiros. E então os desenvolvedores da própria biblioteca, com os quais aprendi muito uma vez, apareceram do nada, gentilmente dando uma dica de que seus algoritmos são patenteados e é melhor você não brigar com eles, tirando a clientela descaradamente. Nossa conversa estava longe de ser educada e, em um determinado momento, decidi oferecer-lhes um beijo na minha bunda. No dia seguinte, eles enviaram uma carta oficial de que estavam prontos para cooperar comigo, mas abruptamente interrompi o diálogo com eles. Para me proteger dos futuros ataques desses caras, comecei a preparar a documentação de patentes e a solicitar direitos autorais.

Com o passar do tempo, essa história gradualmente começou a ser esquecida. Os planos eram contratar uma pessoa mais experiente para me ajudar, mas era muito caro. A ganância assumiu e era óbvio que eu queria ganhar um grande prêmio. Foi planejada uma reunião com um novo cliente que, como se viu no processo de nossa comunicação, estava localizado na mesma cidade que eu. Descrevendo voluptuosamente as perspectivas de cooperação, ele se ofereceu para se encontrar pessoalmente.

Eventualmente, vários jovens de “aparência agradável” vieram à reunião e, sem nem pedir minha opinião, ofereceram-me para dar um passeio fora da cidade, insistindo que era uma necessidade urgente de "tomar um ar fresco". Ao chegar, uma pá com “Sergey” esculpida foi emitida para testar as habilidades que eu havia aprendido na infância nas plantações de batata da minha avó. E ao longo de uma hora, minhas perspectivas foram explicadas para mim. Eles sugeriram não dissipar minha força e se ofereceram para parar de fazer bobagens e, o mais importante, para deixar de ser rude com pessoas sérias.

Em um momento, o mundo deixou de parecer um lugar ensolarado e agradável. É difícil dizer se eu agi corretamente ... mas desisti de abandonar a esperança e me escondi em um canto. E tudo o que foi mencionado acima determinou em grande parte o que aconteceu a seguir: raiva latente em relação aos outros por causa da falta de implementação, incerteza por muitos anos, apatia em tomar decisões importantes por si mesmos e transferir a responsabilidade por suas transas para outra pessoa.

Naquela época, eu estava ficando sem dinheiro e era necessário me colocar em ordem com urgência, mas tudo literalmente caiu das minhas mãos. Felizmente, meu pai me ajudou muito. Ele encontrou um lugar com a ajuda de seus conhecidos onde eu poderia ter sido contratado sem fazer perguntas. Mais tarde, descobri que, por minha causa, ele devia muito a pessoas bastante desagradáveis ​​- um sacrifício por me dar a chance de me mostrar.

Preparando-me para um novo emprego, voltei à prancheta e comecei a ler Richter e a estudar intensamente os livros de Schildt. Planejei que me envolvesse no desenvolvimento da plataforma .NET, mas no primeiro mês da minha atividade oficial de trabalho as coisas foram um pouco diferentes. Um dos funcionários da empresa saiu inesperadamente do projeto e carne humana fresca foi jogada no novo buraco formado.

Enquanto um colega colecionava coisas, tive um diálogo épico com meu diretor financeiro:

- Você tem experiência no SQL Server?
- Não.
- Aprenda da noite para o dia. Amanhã, tentarei levá-lo ao cliente como um desenvolvedor SQL intermediário.

Foi exatamente assim que meu conhecimento do SQL Server começou. Tudo parecia novo, incompreensível e frequentemente feito por tentativa e erro. Havia uma falta de vários mentores inteligentes, com quem eu podia me sentir igual.

Nos meses seguintes, tudo parecia sombrio e sombrio. Os projetos foram interessantes, embora tenham sido deixados de lado pelos diretores. O trabalho de ponta começou, horas extras eternas e tarefas que ninguém podia formular normalmente se desenrolavam diante dos meus olhos. Tive prazer no refinamento eterno do relatório sobre o desdobramento de bolos prontos para coisas simples. Mas como qualquer bolo poderia fazer parte de outro bolo, eu estava saindo dessa dura lógica de negócios.

Percebi que as coisas só piorariam e decidi entrar em ação. Atualizei a teoria e decidi tentar a sorte em outros lugares, mas não tinha experiência suficiente nas entrevistas para reivindicar ser pelo menos um júnior forte. Nos primeiros dias em que fiquei impressionado com o meu próprio fracasso, pensei seriamente que ainda era muito cedo para mudar de emprego e tive que ganhar alguma experiência.

Eventualmente, comecei a empinar o SQL Server e mergulhei completamente no desenvolvimento de banco de dados. Não vou negar que esse trabalho foi um inferno para mim, onde o praticante de esquizofrênico na pessoa do CTO me animou literalmente todos os dias, sendo acompanhado pelo CFO - um ex-militar do Afeganistão, que, na explosão de emoções , usado para mastigar cabeças de patos de borracha na hora do almoço.

A certa altura, percebi que estava pronto. Reuni todo o trabalho crucial, garanti uma alta frequência de lançamentos e normalizei diretamente as relações com os clientes. Como resultado, consegui vir e fazer o CFO se curvar. Agora pode ser possível brincar com idosos de 23 anos, mas foi assim que consegui aumentar meu salário em quatro vezes.

No mês seguinte, passei a sentir imenso orgulho de minhas realizações, mas a que preço? O início do dia útil é às 7h30 e dura até as 22h. Minha saúde começou a se deteriorar, seguida pelas dicas sistemáticas dos diretores de que seria melhor estragar deliberadamente o projeto do que deixá-lo ganhar mais do que deveria. Até certo ponto, eles mantiveram sua palavra, e eu fui confrontado com o dilema de encontrar um novo emprego.

Depois de um tempo, fui convidado a vir para uma entrevista em uma empresa de produtos. Eu estava planejando sair para uma posição semelhante no .NET, mas, para meu horror, falhou em uma tarefa prática. À primeira vista, ficaram felizes em ver a minha parte de trás, mas a coisa mais interessante aconteceu logo depois que meus empregadores em potencial descobriram que eu tenho alguma experiência com o SQL Server. Não escrevi muito sobre isso no resumo, porque nunca pensei que soubesse muito dessa área. No entanto, quem me entrevistou teve outra opinião.

Me ofereceram para melhorar a linha de produtos existente para trabalhar com o SQL Server. Antes disso, eles não tinham um especialista separado que se envolvesse em tal atividade, e tudo era feito, como regra geral, por tentativa e erro. Muitas vezes, novas funcionalidades são simplesmente copiadas dos concorrentes, mesmo sem prestar atenção aos detalhes. Minha tarefa era mostrar que você pode seguir o outro caminho, trabalhando com solicitações de visualizações do sistema de maneira mais qualitativa que a dos concorrentes.

Esses vários meses se tornaram para mim uma nova experiência inestimável em comparação com a atividade anterior de lidar com bolos. Mas como você sabe, todas as coisas boas terminam mais cedo ou mais tarde, e os diretores mudaram de repente suas prioridades. Naquela época, o que estava feito estava feito e eu poderia encontrar uma solução melhor do que treinar novamente o controle de qualidade, o que estava um pouco em desacordo com nossos acordos sobre o desenvolvimento de novos produtos. Rapidamente me ofereceram uma alternativa - "esperar um pouco", e tentar trabalhar com atividade social e, ao mesmo tempo, concordar voluntariamente em deixar o desenvolvimento para testes manuais.

O trabalho se transformou em uma série monótona de regressões que não motivaram nenhum desenvolvimento adicional. E, para evitar formalmente as regressões, comecei a escrever artigos técnicos neste site e depois em outros recursos. Não foi muito bom no começo, mas o principal é que comecei a participar.

Depois de um tempo, fui encarregado de baixar a classificação do perfil oficial da empresa no Stack Overflow. Todos os dias me deparava com casos interessantes, tentava descobrir toneladas de código indiano, ajudava pessoas e, o mais importante - estudava e ganhava experiência. Foi exatamente assim que recebi um emblema de ouro do SQL Server, que foi um período impressionante da minha vida.

Por acaso, entrei no meu primeiro sábado de SQL, que aconteceu em Kharkiv. Meu colega teve que contar à platéia sobre o desenvolvimento de bancos de dados usando produtos que estávamos fazendo todo esse tempo. Não me lembro por quê, mas no último momento tive que fazer uma apresentação. Denis Reznik, com um tradicional sorriso benevolente no rosto, transmite um microfone e você tenta dizer às pessoas algo colorido com uma voz trêmula. No começo foi assustador, mas depois me empolguei.

Após o evento, Denis se aproximou e me convidou para falar em um evento menor, que tradicionalmente acontecia na Universidade de Radioeletrônica de Kharkiv. O tempo passou, os nomes das conferências mudaram, o público a quem eu conduzi os encontros cresceu um pouco. Então eu não sabia o que devo fazer, mas uma série de acaso formou minhas escolhas de vida e tudo o que decidi me dedicar no futuro.

Tentando ser igual a especialistas como Denis Reznik, Dmitri Korotkevich, Dmitri Pilugin e outros caras durões com quem tive a sorte de conhecer, entendi que, no quadro do trabalho atual, não teria tarefas para progredir rapidamente. Consegui observar boa teoria em segundo plano, mas faltava prática.

Me ofereceram para iniciar um novo projeto do zero em um novo local. O trabalho do primeiro dia estava em pleno andamento. Tudo o que eu queria obter da vida tinha: um projeto interessante, um salário alto e a capacidade de influenciar a qualidade do produto. Mas, a certa altura, relaxei e cometi um erro muito sério, logo após terminarmos o MVP para o cliente.

Tentando me concentrar no lado do desenvolvimento e fornecer uma solução melhor, fui cada vez menos capaz de dedicar tempo ao gerenciamento e à comunicação com o cliente. Recebi ajuda em face de uma nova pessoa que começou a fazer isso em vez de mim. Então, foi difícil para mim entender a relação causal, mas depois disso nossa comunicação com o cliente começou a se deteriorar rapidamente, as horas extras e a tensão na equipe praticamente dispararam.

Pessoalmente, tentei equilibrar a situação no projeto, restaurar a ordem e retornar a um desenvolvimento mais relaxado, mas eles não me deixaram fazer isso. Todos pareciam satisfeitos com os chamados incêndios constantes que precisavam ser apagados.

Depois de analisar a situação, decidi que queria fazer uma pausa em tohubohu e sugeri ao CEO do local de trabalho anterior que retornasse a ele nos termos em que faremos um novo projeto juntos. Discutimos todas as nuances e planejamos iniciar o desenvolvimento em um mês. Um mês se passou ... depois outro ... e outro. Todas as minhas perguntas tiveram a mesma resposta - apenas espere. A idéia de criar algo próprio não me deixou, mas eu ainda tinha que trabalhar temporariamente como freelancer e ajudar os povos da Ásia Central a conquistar o setor bancário da Ucrânia.

Apenas um mês depois, descobri que o desenvolvimento do meu projeto foi iniciado facilmente por estranhos, com a permissão oficial dos ex-diretores. Esses caras eram desenvolvedores de .NET legais, mas não tinham experiência no que tinham que fazer. Do lado de fora, tudo parecia que eles estavam me enganando em um projeto. De fato, foi assim. Na explosão de indignação, comecei a fazer esse projeto por conta própria, mas a motivação desapareceu rapidamente.

O ex-CTO se ofereceu para ajudá-lo nos projetos atuais e comecei a fazer o que podia fazer melhor - para apagar incêndios. Tendo me ramificado no viciado em trabalho, colhi suas consequências: uma dieta pouco saudável, muito longe da compreensão normal dos padrões de sono e estresse constante. Tudo isso foi explicado por dois projetos, que eu alternadamente arrastei para um futuro brilhante. Um deles, que tinha a ver com apostas em cavalos, trazia alegria para trabalhar 24 horas por dia, e o segundo era apenas uma compreensão perversa da administração, de modo que a equipe trabalhou no eterno trabalho de corrida. Esse período da minha vida pode ser chamado de masoquismo, mas houve alguns momentos engraçados.

Em um modo completamente descontraído, você está cavando batatas na sua dacha para seus pais ao ritmo do microondas e, em seguida, recebe uma ligação inesperada: "Sergey ... os cavalos pararam de correr ...". Depois de alguns segundos pensando, de pé com uma pá e treinando simultaneamente em si mesmo as habilidades do clarividente Vanga, você dita os comandos do DBCC a partir da memória, para que uma pessoa possa resolver o problema no servidor. Não me arrependo de ter essa experiência - foi incrível!

Mas aqui começa o mais interessante ...

Uma reunião no final de setembro de 2017 mudou radicalmente minha vida.

Naquele momento, a fim de me animar com a rotina de trabalho, planejei falar na conferência. Durante o almoço, acidentalmente tive uma pequena conversa com um colega na cozinha. De repente, ele me disse: “Acontece que você é uma pessoa conhecida ... várias pessoas o conhecem em todo o país”. No começo, não entendi o que estava acontecendo, mas ele me mostrou uma conversa no Telegram. Reconheci imediatamente a garota que veio me ver quando fui ao Dnipro com relatórios. Fiquei muito satisfeito que a pessoa se lembra de mim. Decidi mandar uma mensagem de texto para ela e convidá-la para Kharkiv para a conferência, nos termos dos quais eu estava preparando relatórios.

Fiz o discurso um dos primeiros e imediatamente a vi na segunda fila. O fato de ela ter vindo foi um evento inesperado e agradável para mim. Trocamos algumas frases e comecei minha longa maratona de seis horas de conversa. Aquele dia foi um dos mais brilhantes da minha vida: uma sala cheia, cinco relatórios seguidos e um sentimento indescritível quando as pessoas estão ouvindo você. Foi difícil para mim concentrar a atenção em todo o público e minha visão instintivamente caiu em sua direção ... para aquela garota que veio de outra cidade ... que eu conhecia há dois anos, mas nunca tínhamos nos comunicado com ela ... só sabíamos sobre cada um. outro todo esse tempo.

Depois do final da conferência, eu estava exausta e bastante deprimida, mas ainda queria fazer a garota feliz, convidando-a para jantar juntos na companhia de pessoas com quem nós dois estávamos. Francamente falando, eu era um terrível interlocutor, constantemente encolhendo e exigindo atenção. É difícil dizer o que aconteceu comigo então. Nosso passeio pela cidade à noite também não deu certo. Pareceu-me que a melhor coisa é levar a garota para o hotel e ir para casa dormir. Passei o dia seguinte na cama, fraco demais para me levantar, e só à noite comecei a rolar as palavras na minha cabeça que ela dizia: “vim aqui só para você ...”. Eu sinceramente queria vê-la novamente, mas naquele momento ela já havia saído.

Conversamos por algumas semanas, até que eu decidi ir até ela ...

Pouco antes do lançamento, ninguém quer nada para um cliente, adiei a implantação e fui para o Dnipro. É desconcertante dizer o que estava acontecendo na minha cabeça, mas eu queria vê-la, mesmo sem saber do que falaria. Combinamos de nos encontrar no parque, mas eu confundi epicamente o endereço e 5 quilômetros seguiram o caminho errado. Depois de um tempo, percebendo meu erro, rapidamente voltei ao táxi com flores que encontrei em alguma área do chav. E todo esse tempo ela estava me esperando com um chocolate.

Sentamos em um palco teatral inacabado, bebemos cacau frio e conversamos sobre tudo o que veio à nossa mente. Trocando de assunto, ela me contou sobre seu passado difícil, sobre a imutabilidade dos tipos de dados de string no .NET ... Eu entendi cada palavra. Ela era perspicaz e inteligente, às vezes engraçada, um pouco ingênua, mas tudo o que dizia era sincero. Mesmo assim, percebi que me apaixonei por ela.

Depois de voltar ao trabalho, eu estava em um estado de emergência tentando tirar alguns dias de férias e ir até ela pela segunda vez para fazer uma confissão de amor. De fato, tudo saiu de forma diferente ...

Minha infantilidade, estupidez, velhos complexos e falta de vontade de acreditar plenamente em uma pessoa levaram ao fato de que eu ofendi muito a garota que sinceramente tentou me agradar. De manhã, percebi o que havia feito e, o mais rápido possível, fui pedir perdão a ela pessoalmente. Mas ela não queria me ver. Voltando, tentei me convencer de que não precisava dela, mas era mesmo?

Fiquei furiosa comigo mesma por um mês ... Eu era como um urso com a cabeça dolorida ... Eu disse essas coisas a uma pessoa de quem eu sinceramente gostei, que é impossível perdoar. Isso me fez sentir ainda pior no coração e, finalmente, tudo terminou com um colapso nervoso e depressão severa.

Um ex-colega, Dmitry Skrypka, que apresentou a academia para mim, me ajudou a encontrar uma maneira de sair do círculo vicioso de autocondicionamento e complexos internos.

Depois disso, minha vida mudou muito. Entendo perfeitamente o que significa ser fraco e inseguro. Mas quando comecei a treinar, senti o melhor que a academia pode oferecer. Esse é o mesmo senso de autoconfiança e autoconfiança. O sentimento de como a atitude de outras pessoas em relação a você está mudando. E naquele momento percebi que não queria voltar à vida antiga que tinha. Decidi me dedicar a tudo o que estava tentando adiar toda a minha vida.

Você já reparou que quando uma pessoa começa algo novo, ela começa a declarar suas intenções à realidade circundante? Todo mundo constantemente fala ansiosamente sobre seus planos, mas o tempo passa e praticamente nada acontece. Essas pessoas constantemente dizem isso usando tempos futuros: "Eu farei isso", "Eu alcançarei", "Eu mudarei" e, portanto, eles vivem sua lista de desejos de ano para ano. Eles são como uma bateria do tamanho de um dedo - a carga motivacional é suficiente para um flash e depois tudo. Eu era a mesma pessoa ...

Inicialmente, planejei que, na companhia de colegas motivados, você possa derrubar o mundo, mas muitas vezes as expectativas do futuro brilhante diferem da prática. Começando a fazer o nosso próprio projeto, planejamos e discutimos constantemente, em vez de apertar o cinto e fazer isso.

Muitas vezes, todo mundo quer fazer isso rapidamente ... todo mundo quer na primeira tentativa ... todos são velocistas ... todo mundo começa a correr, mas o tempo passa ... um se rende ... o segundo se rende também. Quando a linha de chegada não está aparecendo no horizonte, poucas pessoas querem trabalhar duro simplesmente porque precisam percorrer a distância até o fim ... de manhã, tarde ou tarde da noite ... quando ninguém vê, ninguém elogia e não Ninguém vai apreciar o que você está fazendo.

Nunca compartilhe seus planos até implementá-los. Compartilhe apenas os resultados, por mais difícil que seja por conta própria. Sem dúvida, neste caso, o caminho que escolhemos nem sempre traz prazer e unicórnios rosa com arco-íris brilhando em suas nádegas. Nem sempre seremos motivados por motivos brilhantes no trabalho sobre nossas prioridades. De vez em quando a vida o envia constantemente para o lugar que você nunca gostaria de ir. Mas toda vez que eu abria o Visual Studio ou quando chegava à academia, lembrava que era e como posso ser. Lembrei-me de uma reunião com aquela garota do Dnipro, que me fez pensar na minha atitude em relação à vida ... eu entendi muito.

Normalmente, a palavra final deve ter capacidade suficiente para colidir com a memória por um longo tempo. Quero citar as palavras que uma vez ouvi na academia de uma pessoa inteligente.

Você acha que vem ao ginásio para lutar com o equipamento ... com os halteres? Não ... você está lutando consigo mesmo ... com seus modelos ... com sua preguiça ... com seus quadros nos quais você se dirigiu. Deseja resolver constantemente os problemas de outras pessoas adiando o seu? Seja por meio de etapas menores, mas você precisa ir com confiança para onde encontrar sua felicidade em toda a sua vida, simplesmente porque a felicidade é a condição em que os princípios e regras que você não inventou não são o seu fardo. Felicidade é quando você tem um vetor de desenvolvimento, significa se divertir no processo, não no objetivo final. Então talvez valha a pena levantar sua bunda e começar a trabalhar em si mesmo?

Ah, sim, eu esqueci completamente ... inicialmente este artigo foi concebido para familiarizar as pessoas com o projeto que eu estava fazendo todo esse tempo. Mas, no processo de redação, a prioridade mudou para a descrição do motivo pelo qual comecei a fazer essa atividade em geral e por que não quero abandoná-la no futuro. Brevemente sobre o projeto ...

SQL Index Manager - é uma alternativa gratuita e mais funcional aos produtos comerciais do Devart e RedGate e foi projetada para manutenção de índice no SQL Server e no Azure. Não posso dizer que meu aplicativo seja melhor que os scripts de Ola Hallengren, mas, por ser mais otimizado e oferecer vários recursos úteis para alguém, este produto será definitivamente útil nas tarefas diárias.

Gerenciador de Índice SQL

Gerenciador de Índice SQL

A versão mais recente do aplicativo pode ser baixada no GitHub .
O código fonte do aplicativo está no mesmo local.

Qualquer feedback é apreciado :)

PS. Agradecimentos adicionais a Anna Petrashko pela assistente na tradução deste artigo.

Source: https://habr.com/ru/post/pt457206/


All Articles