Coisas grátis para estudantes

A vida de estudante não é fácil, no meu tempo ainda tínhamos o custo da xerox mas hoje felizmente isso é passado e as coisas são digitais. Mas logo tudo isso se converte em custos na compra de equipamentos, sendo necessário pelo menos um tablet para conseguir frequentar as aulas, custo na aquisição de software e muitas outras coisas. Felizmente algumas empresas oferecem descontos e até produtos inteiramente grátis para estudantes, e eu que voltei a ser estudante, estou aproveitando isso melhor agora. ...

June 14, 2023 · Lucas Polo

Feliz 2022!

Este ano as coisas parecem estar um pouco melhores do que nos anos anteriores, temos um pouco mais de perspectiva no que tange a nossa saúde, ficamos um pouco mais tranquilos e um pouco mais seguros, e isso é bom. Depois de muitas postagens no ano passado neste blog em torno de dezembro eu confesso que fiquei um tanto quanto sem assuntos, as coisas estavam corridas e a cabeça precisava de um refresco, isso aconteceu e agora temos um ano inteiro pela frente. Passei por uma mudança de emprego que trás muitas coisas novas para a minha caminhada e com certeza irão agregar muito para mim e para este pequeno blog, então vamos fazer as coisas se movimentarem por aqui. ...

January 3, 2022 · Lucas Polo

Usando o operador de módulo para criar ciclos

Em alguns momento é possível que precisamos criar ciclos numéricos, por exemplo, vamos supor que desejamos contar de 0 até 5 e após isso retornar ao zero. Uma solução simples seria algo como: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 #include <stdio.h> int main(int argc, char* argv[]) { int i = 0; for(;;) { printf("%d\n", i++); if (i == 5) { i = 0; } } return 0; } Este tipo de código funciona muito bem e é simples de entender, porém podemos usar a nosso favor a matemática e utilizando o operador módulo, que traz o resto da divisão, conseguimos o mesmo efeito: ...

December 6, 2021 · Lucas Polo

Fazendo queries em JSON com jq

O jq é uma ferramenta de linha de comando que permite fazer queries e transformações em arquivos JSON. Ela é muito interessante e útil quando queremos buscar dados diversos em arquivos muito grandes. Para utilizar ela é muito simples, após instalada você já pode fazer a query. Vamos usar de exemplo este JSON. A primeira coisa que podemos fazer é utilizar ele apenas para formatar, para isso basta executarmos o comando cat exemplo.json | jq: ...

November 22, 2021 · Lucas Polo

Criando um bot no Telegram

Alguns anos atrás fiz um bot no Telegram e me surpreendi como é simples e rápido fazer utilizando Python. O Telegram fornece uma API para seus bots e há varias bibliotecas em diversas linguagens para interagir de maneira simples com esta API. A primeira coisa que precisamos fazer é acessar o @BotFather e solicitar a criação de um novo bot. Após seguirmos as instruções e configurarmos o nosso bot receberemos um token que será utilizado por nós mais a frente. ...

November 15, 2021 · Lucas Polo

Enviando SMS via Amazon Web Services SNS com Python

O Amazon Web Services SNS é um serviço que permite a notificação de diversas formas, desde conexões com as finas SQS do SMS até o envio de mensagens SMS. É muito comum o serviço ser utilizado por empresas para mandar notificações para seus clientes e é muito simples de ser utilizado. A primeira coisa necessária para fazer o envio de SMS é a criação de usuário com permissões de acesso ao SNS na Amazon. Com o usuário criado basta instalar a biblioteca boto3 e assim podemos criar o script necessário. Primeiro é necessário criar um cliente que acessa o serviço do SNS: ...

November 8, 2021 · Lucas Polo

Gerando código que gera código

Alguns anos atrás lendo o Programador Pragmático eu esbarrei em um conceito muito interessante, geração de código. O caso de uso era simples: em alguns momentos você precisava produzir diversas estruturas de código, as vezes em mais de uma linguagem, que seguiam os mesmos padrões e para evitar o trabalho manual era interessante fazer um gerador de código. O caso do livro era a geração de algumas estruturas de dados em diversas linguagens e aproveitando o aprendizado eu decidi estender o conceito para a geração de classes (projeto aqui), para isso era lido um código simples dizendo o nome da classe, seus atributos e também os modificadores de acesso, como abaixo: ...

November 1, 2021 · Lucas Polo

Criando tarefas peródicas com o Celery Beat

Como vimos neste artigo postado anteriormente aqui no blog, o Celery é uma ferramenta que permite executar tarefas de maneira assíncrona através de mensageria. Isso por si só já traz diversos benefícios, mas também é possível imaginarmos criando tarefas que seriam executadas dados certos intervalos de tempo (por exemplo o disparo de processos serem executados de madrugada) ou durante horários específicos. Este trabalho pode ser feito manualmente, basta criarmos um programa em Python que analisa todos os parâmetros temporais cadastrados e dispare as tarefas na hora adequada invocando a função através do método .delay(). ...

October 25, 2021 · Lucas Polo

Utilizando conjuntos no Redis

O Redis é um dos projetos mais interessantes que já usei desenvolvendo software. Por ser um banco de dados em memória sua velocidade é bem alta e a versatilidade dele muito grande. Utilizo ele mais comumente para o armazenamento de cache, principalmente objetos serializados em sequências de bytes (ou seja, um JSON sem formatação), mas a utilidade dele vai muito além disso pois permite armazenar diversas outras estruturas mais complexas e uma das que me deparei utilizando recentemente foram os conjuntos. ...

October 18, 2021 · Lucas Polo

Manual básico do JUnit

Alguns anos atrás comecei a estudar TDD e como desenvolvia principalmente em Java na época comecei a aprender um pouco mais sobre o JUnit, o principal framework de testes de unidade do Java e um dos primeiros de todas as linguagens. Para me ajudar eu criei um pequeno manual prático sobre ele: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 class SimpleSnipetJUnitTest { private Calculator calculator; /** * Este método é invocado antes de cada teste, a annotation * facilita isso */ @Before public void setUp() { //Tudo aqui será executado antes, servindo por exemplo para inicializar. calculator = new Calculator(); } /** * Este método é invocado após os testes, servindo, como exemplo, para liberar recursos. */ @After public void finalize() { } /** * Teste comum, o método assertEquals realiza a operação de teste de igualdade. */ @Test public void testeSimples() { int result; result = calculator.sum(1, 2); assertEquals(3, result); } /** * Teste para números de ponto flutuante. * Destaque para o terceiro parâmetro, o delta, que define * qual a diferença decimal entre cada parâmetro. */ @Test public void testeDePontoFlutuante() { float result; result = calculator.divide(5, 2); //O terceiro parâmetro é a diferença máxima entre os floats assertEquals(2.5, result, 0.1) } /** * Teste para exceções * Se não disparar a exceção, o método falha. */ @Test (expected= CalculatorException.class) public void testeDeExcecao() { int result; result = calculator.divide(5, 0); } }

October 14, 2021 · Lucas Polo