Minha virtude foi reforçada pela mesma coisa com que o ataque; convêm-lhes ser mostrada e posta à prova; nada compreende o grande que é melhor que aqueles que sentiram suas forças ao combate-la; nada conhece melhor a dureza da pederneira que aqueles que o golpeiam. Mostro-me como uma rocha solta no meio do mar agitado, que as ondas não deixam de açoitar por qualquer lado que se movam. E não que por ele se comovem nem a desgastam enquanto séculos de contínuos embates. Assalta, acomete: os vencerá resistindo.
[.NET Core] Implementando a interface IHealthCheck
Nas minhas aventuras pelos estudos no mundo da arquitetura de serviços distribuídos, eu sempre notei que autores enfatizam a necessidade de saber quando parar de “consumir” um serviço que está indisponível. Isso é saudável quando o motivo da indisponibilidade do serviço é justamente o excesso de requisições, não é? Neste artigo eu trago uma forma simples de implementar a interface IHealthCheck para que nossas API’s possam fornecer de uma forma rápida e objetiva os meios para que as aplicações client saibam quando algum recurso está indisponível. Eu aprendi sobre este recurso no último evento no qual eu estive presente aqui em Campinas, São Paulo. O evento foi o Microsoft Connect(); 2019 e contou com a presença de alguns MVPs de calibre da Micro<3soft.
Criando o projeto
Atualmente eu estou na versão 2.2.102 do .NET Core, mas provavelmente estes comandos irão continuar nas versões futuras.
Aqui eu invoquei o meu terminal e criei um diretório chamado healthcheck, naveguei para a raiz e rodei o comando que cria um projeto padrão do tipo webapi:
1 2 3 4 |
thalesreis@trntb:~/dev/dotnet$ mkdir healthcheck thalesreis@trntb:~/dev/dotnet$ cd healthcheck/ thalesreis@trntb:~/dev/dotnet/healthcheck$ dotnet new webapi The template "ASP.NET Core Web API" was created successfully. |
Continue lendo “[.NET Core] Implementando a interface IHealthCheck”
Embarcadero Conference 2018
Única. É essa a definição para a Embarcadero Conferece 2018.
Eu nunca havia presenciado um número tão grande de profissionais Delphi concentrados em só lugar. Vou contar para vocês um pouco dessa experiência…
A ansiedade começou na noite anterior ao evento. Preparei minha mochila com os itens básicos que eu julguei serem necessários para sobreviver: Meu Kindle, 4 pacotes de clube social, uma garrafa para água, 1 caderno pequeno e caneta para anotações, um carregador portátil, cabos usb, pendrive, fones de ouvido e até uma camiseta extra shit happens.
Tudo certo. Fiz a check list da bolsa, verifiquei se o papel da inscrição estava seguro na bolsa. Estava. Só depois de verificar tudo duas vezes é que eu fui dormir em paz, afinal, já eram 00:37 e eu iria acordar às 5:10 para me aprontar e pegar a carona para o evento às 5:50.
[Delphi] Form.Show vs Form.ShowModal
Form.Show vs Form.ShowModal
Sim, existe diferença. Vamos nos aprofundar um pouco mais e destacar a principal diferente entre os dois.
Você sabe exatamente o que acontece por trás do ShowModal que o torna diferente do Show? Inicialmente temos os tipos de cada método que diferem entre si. O ShowModal é uma function que retorna um integer e o Show, por sua vez, é uma procedure, logo, não conta com um resultado.
Ao criarmos um novo formulário partindo do menu “File -> New -> VCL Form” o RAD Studio cria um novo formulário com base em um template. Esse novo formulário em branco herda da classe TForm. Essa classe, a TForm, herda de uma outra classe chamada TCustomForm.
O método Show está implementado na classe TCustomForm
1 2 3 4 5 |
procedure TCustomForm.Show; begin Visible := True; BringToFront; end; |
Podemos invocar o método Show graças ao recurso de herança oferecido pela Programação Orientada a Objetos. O Show contém uma implementação bastante simples. Ele apenas altera a visibilidade do formulário para true e invoca o método BringToFront para dar o foco da aplicação ao recém “visível” formulário.
Livros #2: O Nome do Vento
Fala galera, beleza?
Há tempos que não lia algo tão envolvente quanto O Nome do Vento. Que narrativa brilhante.
Na trilogia de A Crônica do Matador de Rei, Patrick Rothfuss recria todo um universo fantástico para nos apresentar o talentoso Kvothe, O Sem Sangue.
Existem duas linhas do tempo no título. Em uma delas, Kote, um simples taberneiro de uma pequena cidade, narra uma jornada épica para um registrador conceituado enquanto precisa lidar com clientes e acontecimentos presentes. A outra, que é onde o livro tem o maior foco, é a narrativa de Kote. Ele conta a incrível saga do ainda menino Kvothe, que descobre ser uma lenda viva do seu tempo.
Sim. Kote e Kvothe são a mesma pessoa. Ainda não está claro o motivo de Kvothe estar foragido, mas esse “registrador”, conhecido como O Cronista, encontra o nosso herói em uma determinada circunstância e eles dão inicio ao registro das memórias de Kvothe. Continue lendo “Livros #2: O Nome do Vento”
[Delphi] Comparando as coisas de uma forma elegante: TValueRelationship
Comparar para não parar
Comparar valores é uma tarefa comum dentro do desenvolvimento de software. Estamos o tempo todo comparando informações para tomadas de decisão, desvios de fluxo e outras rotinas dentro dos sistemas.
Continue lendo “[Delphi] Comparando as coisas de uma forma elegante: TValueRelationship”
[Delphi] Debugando uma aplicação do “tipo” serviço do Windows
O problema em debugar um TService
Já tentou debugar uma aplicação do tipo serviço do Windows (Windows Services)? Um parto, não é? Eu mesmo já vi uma algumas tentativas bem interessantes: Alimentar um arquivo com os valores das variáveis (.txt, xml, .json… e até gerar logs no gerenciador de log do Windows. Continue lendo “[Delphi] Debugando uma aplicação do “tipo” serviço do Windows”
[Delphi] Customizando um TTreeNode
Fala galera, beleza?
Hoje eu trago para vocês uma forma simples e objetiva de adicionar e manipular propriedades adicionais aos nós de um TreeView.
A classe TTreeView é um dos componentes visuais da aba Win32. Esse componente representa uma estrutura organizada em níveis de profundidade, criado uma relação de “nós pai e nós filhos”.
Visualmente ela lembra uma árvore e provavelmente foi daí que o nome saiu, hehe.
TTreeNode
TTreeNode é a classe que dá suporte à coleção de itens de um TTreeView. Podem ser acessados através da propriedade Items: MyTreeView.Items.
Estendendo a classe TTreeNode nós podemos aproveitar o seu comportamento e então adicionar as nossas particularidades.

[Delphi] Um passo além com matrizes
Matriz é uma coleção de indexada de elementos do mesmo tipo que podem ser estáticas ou criadas dinamicamente. Como cada elemento possui um índice próprio para ser acessado, seus valores podem se repetir sem nenhum problema. Os índices de uma matriz no Delphi são necessariamente do tipo Integer. Continue lendo “[Delphi] Um passo além com matrizes”
[Delphi] Usando variáveis e propriedades com nomes reservados
Fala galera, beleza?
Na faculdade uma das primeiras coisas que aprendemos na matéria de lógica de programação é que existem palavras reservadas: do, write, while, for, type, class, public e etc…
É compreensível. Não podemos usar as mesmas “palavras” que são reservadas para o funcionamento da linguagem.
No entanto, um dia, a necessidade pode nos levar ao extremo. As razões para precisar de uma variável ou propriedade com o nome de uma palavra reservada podem variar, mas o importante é que o Delphi está preparado para isso.
Continue lendo “[Delphi] Usando variáveis e propriedades com nomes reservados”