Pular para o conteúdo principal

Postagens

Hangfire - processamento em background fácil no .NET

A necessidade de realizar uma tarefa em segundo plano é muito comum, seja para gravar um arquivo, enviar um e-mail, executar um processo de banco pesado, enfim, qualquer coisa que não deve "bloquear" o usuário no thread principal, e é aí que o Hangfire entra, ele recebe tarefas e as trata em filas realizando a execução em background e mais: As tarefas entram em uma fila e a execução ocorre na sequência; Uma execução só é considerada "falha" quando as tentativas já se esgotaram (por padrão são 10); Dá para criar uma tarefa simplesmente a colocando na fila; Dá para criar um fluxo de execução de tarefas constante dentro de um intervalo; Dá para agendar a execução de tarefas; Dá para condicionar a execução de tarefas após o sucesso de outra tarefa; Todo o fluxo é tratado em tabelas do próprio Hangfire, podendo ser gerido em vários bancos de dados (relacionais ou não); Os registros referentes as tarefas possuem um tempo limitado de vida, depois de concluidos são apagados

Clojure - Símbolos globais e locais

Até agora, sempre que foi necessário manter um valor em memória nós usamos o conceito de "variável", realizando a "definição de um símbolo" com o comando " def ". Porém essa abordagem corresponde ao que conhecemos nas linguagens mais tradicionais como "definição de variável global". Como é de conhecimento, as definições de "variáveis globais" podem trazer uma série de problemas as aplicações, uma vez que é quase impossível ter conhecimento de todas, com isso podemos acabar gerando problemas com a substituição de valores durante seu uso, podendo causar erros em diversos pontos da aplicação e tornando a aplicação instável e de difícil manutenção. Dito isso, veremos como trabalhar com símbolos dentro de um escopo limitado, seguiremos os próximos exemplos dentro de nossas funções. Escopo global Como vimos até aqui, os símbolos de escopo global podem ser acessados de qualquer parte da aplicação, vamos ao exemplo, considerando uma aplicação h

Clojure - Criando nossa primeira função

Anteriormente vimos como configurar o ambiente e em seguida escrevemos nossas primeiras linhas de código para começarmos a entender como o Clojure funciona, usamos algumas funções "nativas", declaramos algumas "variáveis" e também brincamos com um vetor. Nesse post daremos mais um passo, escreveremos nossa primeira função, passando por algumas de suas características e entendendo um pouco sobre como a criação delas funciona. Definindo nossa primeira função Para criar nossa primeira função precisamos ter em mente que o que deve ser feito é algo semelhante a definição de uma variável, a diferença fica por conta do uso do comando " defn " (é possível usar o " def ", mas veremos isso futuramente), basicamente precisaremos: Escrever todo o conteúdo dentro de parênteses; Usar o comando " defn "; Definir uma lista de parâmetros, se não existirem parâmetros (nosso caso agora) essa lista deve estar vazia; Definir o corpo da função; Opcionalmente

Clojure - Funções, vetores e def

Nessa postagem escreveremos nossas primeiras linhas de código com o Clojure, aqui tentaremos trazer alguns conceitos para mais perto de quem já programa com os paradigmas mais tradicionais (orientação a objetos por exemplo), de modo que fique mais simples entender as intenções e começarmos a correlacionar alguns pontos, mesmo que alguns deles não sejam necessariamente a mesma coisa. Funções Como já é de conhecimento, funções são pequenas partes de um programa que executam um trabalho e devolvem um resultado, e para que esse trabalho seja realizado muitas vezes é necessário informar argumentos ou informações para que algo seja feito. Em Clojure toda invocação de uma função ocorre dentro de parênteses, logo podemos interpretar o conteúdo que esta dentro dos parênteses da seguinte forma: O primeiro valor é a função a ser executada; O segundo valor é o primeiro argumento que a função receberá; Vamos agora ao nosso primeiro exemplo, iremos chamar uma função que escreve no console, passando

Clojure - Preparando o ambiente

Antes de mais nada precisamos preparar nosso ambiente para podermos começar a brincar, no link oficial temos os processos de instalação de acordo com os SOs suportados, nessa postagem iremos falar sobre as instalações no Linux e no Windows. Windows Para a instalação no Windows podemos usar o instalador ou fazer o processo via linha de comando com o PowerShell, esse último seguindo as seguintes instruções (conforme indicado aqui ): Se certificar que o PowerShell esta na versão 5 ou posterior, para tal basta abrir o mesmo (pressione "Windows + X", escolha "Executar" e digite o comando "Powershell"), e em seguida digitar o comando "get-host": Versão do PowerShell Também devem estar instalados o ".NET Core SDK 2.1+ or .NET Framework 4.5+ (ou mais recente)". Além disso precisaremos do Java 8+ e a variável de ambiente JAVA_HOME configurada; Se tudo estiver certo basta executar o comando para o download "iwr -useb download.clojure.org/in

React - Elevando o state (state lift)

Como visto anteriormente, o fluxo de informações no React é unidirecional, partindo sempre do componente pai para os filhos, logo um componente pai desconhece o que acontece com o estado presente nos seus componentes filhos. Então como é que nós fazemos quando precisamos que com que um componente filho produza ou modifique um valor para que esse possa ser utilizado pelo componente pai? Bom a resposta para essa pergunta esta no titulo da postagem, resolvemos essa questão com a elevação do "state". A elevação do "state" em tese é algo relativamente simples, basta mudar o estado do filho para o pai, logo o filho não mais trabalhará com seu estado, ele receberá o estado do pai por meio das "props" e quando for necessário alterar o estado o componente filho deve chamar um método do pai, que também estará presente em "props". Exemplo No exemplo abaixo criaremos um componente "filho" que oferece uma lista de opções de acordo com

Scrum - Tempo

O tempo é finito Trate-o como tal. Divida seu trabalho em partes que possam ser realizadas em um intervalo de tempo curto, regular e definido – de preferência, entre uma e quatro semanas. Se você tiver sido contaminado pelo Scrum, chame esses períodos de sprints.  É demonstrar ou falhar Ao fim de cada sprint, tenha algo pronto – algo que possa ser usado (que alguém possa pilotar, dirigir, o que for). Jogue fora seus cartões de visita Títulos são marcadores especializados de status. Seja conhecido pelo que faz, não pelo seu cargo.  Todo mundo sabe de tudo A saturação da comunicação acelera o trabalho.  Uma reunião por dia Quando se trata de reuniões para verificar como vai o trabalho, uma vez por dia é suficiente. Junte sua equipe durante 15 minutos na reunião diária, analise o que pode ser feito para aumentar a velocidade e coloque isso em prática. Trechos do excelente livro "Scrum: The Art of Doing Twice The Work in Half The Time" de Jeff Sutherland