• (31) 99973-2709
  • hugomoraismendes@gmail.com

Arquivos por ano 13/09/2020

Python – Trabalhando com Listas, Tuplas e Dicionários

Listas

# Criando outra lista
lista_mercado = ["ovos", "farinha", "leite", "maças"]
# Imprimindo a lista
print(lista_mercado)
# Atualizando um item da lista
lista_mercado[2] = "chocolate"
# Deletando um item específico da lista
del lista_mercado[3]

# Criando uma lista de listas
listas = [[1,2,3], [10,15,14], [10.1,8.7,2.3]]

#Concatenando Listas
lista_s1 = [34, 32, 56]
lista_s2 = [21, 90, 51]

lista_total = lista_s1 + lista_s2

# Verificando se o valor 100 pertence a lista
print(90 in listas)
# Função len() retorna o comprimento da lista
len(listas)
# Função max() retorna o valor máximo da lista
max(listas)
# Função min() retorna o valor mínimo da lista
min(listas)

# Adicionando um item à lista
listas.append("100")

listas.count("carne") 

Python – Trabalhando com Strings

Indexação

s = 'Uma frase qualquer'

# Primeiro elemento da string. 
s[0]
# resultado = U

# Retorna todos os elementos da string, começando pela posição informada até o fim da string.
s[1:]
# resultado = ma frase qualquer

# Retorna tudo até a posição 3
s[:3]
# resultado = Uma

# A indexação negativa ler de trás para frente.
s[-1]
# resultado = r

# Retornar tudo, exceto a última letra
s[:-1]
# resultado = Uma frase qualque

# Ao usar a notação de índice e fatiar a string em pedaços específicos (o padrão é 1). 
# Por exemplo, podemos usar dois pontos duas vezes em uma linha e, em seguida, 
# um número que especifica a frequência para retornar elementos.

s[::1]
# resultado = Uma frase qualquer

s[::2]
# resultado = Uafaeqaqe

s[::-1]
# resultado = reuqlauq esarf amU 

Propriedades de Strings

# Usar o símbolo de multiplicação para criar repetição!
letra = 'h'

letra * 3
# resultado = hhh 

Funções Bult-in de Strings

# Upper Case 
s.upper()

# Lower case
s.lower()

# Dividir uma string por espaços em branco (padrão)
s.split()

# Dividir uma string por um elemento específico
s.split('y') 

Funções de Strings

s = 'seja bem vindo ao python'

s.capitalize()
# resultado = Seja bem vindo ao python

s.count('a')
# resultado = 2

s.find('p')
# resultado = 18

s.center(50, 'z')
# resultado = zzzseja bem vindo ao pythonzzz

# Verifica se o texto é alfanumerico
s.isalnum()
# resultado = false

# Verificar se todos os caracteres são alfanumerico
s.isalpha()
# resultado = false (devido ao espaço)

s.islower()
# resultado = true

# Verificar se todos os caracteres são espaços
s.isspace()
# resultado = false

# verifica se termina com a letra informada
s.endswith('o')
# resultado = false

# Procura pela palavra informada e retorna uma tupla com três elementos
s.partition('vindo')
# resultado = ('seja bem ', 'vindo', ' ao python') 

Python – Trabalhando com Variáveis

Declaração Múltipla

pessoa1, pessoa2, pessoa3 = "Hugo1", "Hugo2", "Hugo3"
pessoa1
#resultado = Hugo1
pessoa2
#resultado = Hugo2
pessoa3
#resultado = Hugo3

fruta1 = fruta2 = fruta3 = "Laranja"
fruta1
#resultado = Laranja
fruta2
#resultado = Laranja 

Ordem dos operadores

largura = 2
ltura = 4
perimetro = 2 * largura + 2 * altura
#resultado = 12

perimetro = 2 * (largura + 2)  * altura
#resultado = 32 

Concatenação

nome = "Hugo"
sobrenome = "Mendes"

nome_completo = nome + " " sobrenome
#resultado = Hugo Mendes 

Python – Trabalhando com Funções

Versão do Python

from platform import python_version
print('Versão do Python:', python_version())
#resultado = Versão do Python: 3.6.9 

Tipo da váriavel

variavel = 2
type(variavel)
#resultado = int

variavel = 'texto'
type(variavel)
#resultado = str

variavel = 1.89
type(variavel)
#resultado = float 

Python – Trabalhando com Números

Potência

4 ** 2
#ou
pow(4,2)
#resultado = 16 

Módulo

10 % 3
#resultado = 1 

Divisão

3 / 2
#resultado = 1.5 (float)
3 // 2
#resultado = 1 (inteiro) 

Absoluto

abs(-8)
#resultado = 8 

Arredondamento

round(3.14151922,2)
#resultado = 3.14 

Hexadecimal

hex(217)
#resultado = '0xd9' 

Binário

bin(286)
#resultado = '0b100011110' 

Google Colaboratory

O que é o Colaboratory

O Colaboratory ou “Colab” permite escrever código Python no seu navegador, com:

  • Nenhuma configuração necessária;
  • Acesso gratuito a GPUs; e
  • Compartilhamento fácil.

Você pode ser um estudante, um cientista de dados ou um pesquisador de IA, o Colab pode facilitar seu trabalho. Assista ao vídeo Introdução ao Colab para saber mais.

O notebook Colab é um ambiente interativo que permite escrever e executar código.

Os notebooks do Colab permitem combinar código executável e rich text em um só documento, além de imagensHTMLLaTeX e muito mais. Quando você cria seus próprios notebooks do Colab, eles são armazenados na sua conta do Google Drive. É possível compartilhar os notebooks do Colab facilmente com colegas de trabalho ou amigos e permitir que eles façam comentários ou até editem o documento. Para saber mais, consulte a Visão Geral do Colab. Para criar um novo notebook do Colab, use o menu Arquivo acima ou acesse o seguinte: criar um novo notebook do Colab.

 

Ciência de Dados

Com o Colab, você pode aproveitar o todo o potencial das conhecidas bibliotecas Python para analisar e ver dados. O código abaixo usa numpy para gerar dados aleatórios e matplotlib para visualizá-los.

É possível importar para os notebooks do Colab os dados da sua conta do Google Drive, como planilhas. Também é possível importar do GitHub e de muitas outras fontes. Para saber mais sobre como importar dados e como o Colab pode ser usado para a ciência de dados, consulte o link abaixo em Como trabalhar com dados.

Machine Learning

Com o Colab, é possível importar um conjunto de dados de imagem, treinar um classificador de imagens dentro dele e avaliar o modelo, tudo com apenas algumas linhas de código. Os notebooks do Colab executam código dos servidores em nuvem do Google. Isso significa que você pode tirar proveito da potência de hardware do Google, como GPUs e TPUs, independentemente da potência da sua máquina. Você só precisa de um navegador.

O Colab é usado amplamente pela comunidade de machine learning, para aplicações como:

  • Primeiros passos com o TensorFlow
  • Desenvolvimento e treinamento de redes neurais
  • Experimentos com TPUs
  • Divulgar pesquisas em IA
  • Criação de tutoriais

Para ver notebooks do Colab que demonstram aplicações de machine learning, consulte os exemplos de machine learning.

Simian Army (Exército Símio)

Simian Army (Exército Símio) é um conjunto de ferramentas e técnicas criadas pela Netflix analisar/testar a disponibilidade de um serviço/ferramenta mesmo em situações caóticas assim descobrindo se o sistema tem tolerância a falhas. Uma vez que nenhum componente pode garantir 100% de tempo de atividade. Logo a netflix projetou uma arquitetura em nuvem onde componentes individuais podem falhar sem afetar a disponibilidade de todo o sistema.

O nome dado a essa técnica é bem interessante, imagine um macaco selvagem com uma arma solto em um datacenter. Pense no potencial destrutivo.

Veja abaixo os integrantes do Simian Army:

Chaos Monkey, uma ferramenta que desativa aleatoriamente as instâncias de produção para garantir que o serviço continue a funcionar sem qualquer impacto no cliente.

Latency Monkey, propositalmente aumenta a latência em respostas dos serviços REST possibilitando testar a recuperação à indisponibilidade dos serviços, assim acaba simulando a degradação dos serviços e mede se os serviços upstream respondem adequadamente.

Conformity Monkey, encontra instâncias que não seguem as práticas recomendadas e as desliga. Por exemplo, se encontrar instâncias que não pertencem a um grupo de escalonamento automático, é um problema esperando para acontecer, logo essa máquina é desligada para ser feito a correção.

Doctor Monkey, utiliza verificações de integridade que são executadas em cada instância, bem como monitora outros sinais externos de integridade (carga de memoria, CPU) para detectar instâncias não íntegras. Depois que as instâncias não íntegras são detectadas, elas são removidas do serviço para serem adequadas.

Janitor Monkey, garante que nosso ambiente de nuvem esteja funcionando sem bagunça e desperdício. Ele procura recursos não utilizados e os desliga.

Security Monkey, é uma extensão do Conformity Monkey. Ele encontra falhas de segurança ou vulnerabilidades, como grupos de segurança configurados incorretamente e encerra as instâncias. Ele também garante que todos os nossos certificados SSL e DRM estejam válidos e não estejam próximos do vencimento.

10–18 Monkey, detecta problemas de configuração e tempo de execução em instâncias atendendo clientes em várias regiões geográficas, usando diferentes idiomas e conjuntos de caracteres.

Chaos Gorilla, é uma evolução do Chaos Monkey que, pois dentro de uma região, desabilita zonas para verificar se o sistema continua funcionando sem impacto para o usuário.

Chaos Gorilla, é semelhante ao Chaos Monkey, mas simula uma interrupção região inteira da AWS. Para verificar se os serviços se reequilibram automaticamente para as zonas de disponibilidade funcionais, sem impacto visível ao usuário ou intervenção manual.

Retrospectiva Ágil

A reunião de retrospectiva tem como forma inspecionar e adaptar, seja realizada em projetos ágeis ou cascata, sendo o seu principal objetivo levantar o que funcionou e o que deu erro durante a etapa de entrega, assim juntos estudando uma melhor forma de melhorar a execução na próxima entrega.

A reunião de retrospectiva deve ser realizada sempre que houver necessidade, é interessante que ocorra também a cada entrega que pode ser semanal, quinzenal ou mensal. Levante todos os fatos que aconteceram e tirem ações de melhoria para o próximo ciclo. Com o passar dos meses, os integrantes do time vão se conhecendo e trabalhando de forma mais integrada e menos reativa

As reuniões de retrospectivas podem ser conduzidas de uma forma simples, seguindo a perguntas da imagem abaixo, podendo utilizar post its, quadros, flips charts, canetas. A reunião deve ser realizada em locais que as pessoas se sentem a vontade para debater.

Fonte: https://annelisegripp.com.br/retrospectivas-ageis/

Abaixo segue algumas dicas de técnicas que podem ser utilizadas.

Técnica do M&M

Cada pessoa pega um confeite do pacote. Cada cor de um confete deve ser relacionado a uma parte processo de trabalho, como: sprint (amarelo), daily (vermelho), review (marrom), etc… A cor que a pessoa sortear vai ser o assunto que ela vai falar, o que foi legal e o que precisa melhorar.

TÉCNICA PDCA

  • O que precisamos começar?
  • O que podemos continuar?
  • O que precisamos melhorar?
  • O que temos que parar?

TÉCNICA STARFISH

  • O que precisamos manter (keep doing)?
  • O que precisamos parar de fazer (stop doing)?
  • O que precisamos começar a fazer (start doing)?

TÉCNICA LEARNNING MATRIX

  • O que foi bom?
  • O que devemos parar de fazer?
  • Novas ideias, formas de trabalhar
  • Boas ações durante o ciclo

TÉCNICA HOT AIR BALLON

Olhando para trás – o fogo e o ar quente: O que nos ajuda a ir mais alto – Quais são as coisas que nos empurram para a frente?

Olhando para trás – forças puxando para baixo: Quais são as forças que nos puxam para baixo?

Olhando para o futuro – tempestade: Qual é a tempestade pela frente? O que terá o nosso turbulenta viagem?

Olhando para o futuro – sol: O que poderíamos fazer para evitar a tempestade e virar-se para dias de sol? O que vamos fazer para superar os possíveis desafios à nossa frente?

TÉCNICA DO PAPEL PICADO

Pegue uma folha em branco e escreva as palavras, dando espaço entre elas para depois cortar a folha, que falam sobre o processo. Tipo: PLANNING, REVIEW, RETROSPECTIVA, DAILY, GROOMING, USER STORY, SCRUM MASTER, PRODUCT OWNER, ENTREGA, QUALIDADE DE CÓDIGO… entre outros que você achar importante. Corte cada palavra dessa, dobre e embaralhe. Cada membro do time vai sortear um papel, vai ler e falar um ponto positivo e um ponto a melhorar daquela palavra. Depois se tiver mais alguém que queira complementar, pode abrir para discussão. Isso vai sendo feito até o último papel para sorteio.

TÉCNICA “VAMOS TRANSFORMAR”

Essa técnica utilizamos para refletir sobre como podemos melhorar a nossa atuação dentro da empresa com intuito de transformar o ambiente que trabalhamos. As perguntas são simples, mas muito importantes para sabermos onde e quando agir. Basta fazer as perguntas e pra cada pergunta, pedir o pessoal para colocar respostas nos post its e debatermos sobre as soluções propostas. Seguem as perguntas : “O que está fora do nosso alcance?”, ou seja, não vale focar nesse momento, pois não teremos força e nem braço para agir. “O que podemos fazer para influenciar?”, ações que podem ser feitas para influenciar pessoas, ambientes, cenários. “O que depende de nós?”, é nossa área, nos dividimos para agir, podemos e devemos fazer para promover mudanças.

JQuery e selectors

Com o JQuery é possível criar referencias de elemento e assim atribuir valores ou aplicar ações a eles. O mais interessante é que usamos as mesmas chamadas que usamos para referenciar elementos quando trabalhamos com CSS. Veja o modelo abaixo:

$('p') // Chama todos os paragrafos 
$('.menu') // Chama os elementos que contenham a classe menu 
$('#caixas .chamada') // Chama os elementos .chamada que estão dentro de #caixas 
$('.menu, .box') // Chama a classe menu e a classe box 
$('#lista *') // Chama todos os elementos que estão dentro de #lista 
A jQuery ainda implementa algumas chamadas especiais, baseadas no CSS3.
$('#menu > li') // chama os li's filhos direto de #menu, exclui #menu li li
$('label + input') // chama apenas os inputs que tiveram um label antes 
$('.galeria ~ .fotos') // chama todas as .fotos que estão no mesmo nivel e após .galeria
$('#menu li:fist') // Chama apenas o primeiro li dentro de #menu
$('table tr:even') // Chama apenas os tr's impares
$('tr[colspan=2]') // Chama os tr's que contenham o atributo colspan definido como 2
$('form :text')  // Chama os inputs com type definido como text, caixas de texto

A lista completa pode ser encontrada no site oficial da jQuery bem documentada e com exemplos para cada caso. Com a seleção na cabeça, podemos aplicar efeitos (hide, show, fadeIn, fadeOut, slideUp, slideDown por exemplo) nos elementos que selecionarmos, colocar atributos para estes elementos como css ou mesmo colocar eventos neles, ou seja, funções que rodam quando você faz alguma coisa com eles, como por exemplo clicar, passar o mouse em cima, dar dois cliques, colocar o cursor na caixa de texto e assim por diante.

Em um exemplo prático, vamos fazer um menu com submenus onde não precisamos nos preocupar em adicionar classes e tudo mais. Primeiro vamos implantar o HTML, assim podemos fazer um belo menu semântico. Se quiser, aplique também um belo CSS, mas não se esqueça: não suma com os submenus neste momento, afinal, se o browser do usuário não possuir javascript ele não poderá mostrá-los. Então deixe os submenus à mostra porque depois vamos escondê-los via javascript.


Note que não há qualquer referência a quem é pai ou filho de sebmenu. Vamos usar as chamadas da própria jQuery para encontrar quem tiver submenu.

Agora, vamos desaparecer com os submenus de forma dinâmica. Lembre-se que não podemos aplicar a jQuery em qualquer lugar, afinal o html pode ainda não ter sido gerado quando o script rodar, então colocamos o “desaparecimento” dentro da função de carregamento da própria jQuery. Isto fará com que nosso script só seja executado quando todo o HTML for carregado.

Com uma simples linha, sumimos com os submenus com a função hide(), note que usamos os próprios atributos para os quais chamamos esses submenus com CSS.

Agora, a dinâmica! Vamos usar a chamada aos submenus usando como referencia os links que tenham como href o valor de # (tralha, sustenido ou jogo-da-velha,). Fica assim:

$('#menu a[href=#]')

Assim, filtramos todos os nossos links pegando somente os links dentro de #menu que tenham o href como #.

Neles vamos implantar os comandos de click para mostrar o menu e o submenu, mas primeiro precisamos navegar entre os elementos. Para isso, usamos next ou prev, funções próprias da jQuery que navega entre o elemento que estiver após ou antes (respectivamente) do elemento em questão. Levando em conta que as funções de ação da jQuery (click/hover/toogle/etc) recebem como parâmetro this o elemento que recebeu a ação temos:

$('a[href=#]').click(function(){
this // é o elemento "a" (link) que foi clicado naquele momento
})

Então vamos navegar até o submenu, que é o elemento que está após o link:

$('a[href=#]').click(function(){
$(this).next() // Agora sim, com base no link (dinamicamente) temos o submenu
}

Perceba que apesar de recebermos em this o elemento, precisamos usar mais uma vez a jQuery pois se trata do elemento em si e não uma chamada à ele via jQuery.

Agora sim, podemos sumir ou aparecer com os submenus, usando o slideToggle da jQuery vemos como isso é implantado de forma simples e prática. Precisamos aplicar também um return false para cancelar a navegação do link, afinal ele não deixou de ser um link.

$('a[href=#]').click(function(){
$(this).next().slideToggle() // Some, aparece, some, aparece, incrivelmente simples com a jQuery
return false
}

Com apenas seis linhas de código (real) concluímos um menu com submenu dinâmico, navegando entre os elementos com a jQuery. Ainda aplicamos uma animação para esse submenu.

MySQL – Apagando registro duplicados

Registro duplicados em base de dados é um problema que pode te dar uma dor de cabeça, abaixo segue uma proposta de solução para resolver esse problema.

Assumindo que você use o banco de dados MySql e tenha uma tabela chamada “nomes”, e que essa tabela tenha os campos id e nome. Essa sintaxe pode ser usada em outros bancos, utilizaremos o seguinte comando:

DELETE a FROM nomes AS a, nomes AS b WHERE a.nome=b.nome AND a.id < b.id

Perceba que no comando SQL após o FROM eu chamo duas vezes a tabela “nomes”, mas as diferencio pelas letras a e b. Você poderia dar o nome que quisesse. Note também que depois do WHERE eu faço a comparação entre as colunas, verificando a duplicidade e depois digo que o id de “a” deve ser menor que o de “b”. Dessa forma o MySql vai comparar todos os registros com o mesmo nome e apagar aqueles que contenham o menor id.

nomes: É a tabela com os registros duplicados.

nome: É o campo para comparação dos registros.

id: É a chave primária da tabela.

Veja na prática como acontece:

Tabelas com os registros duplicados

Aplicando o script descrito acima:

Caso queira apagar todos os registros duplicados, deixando apenas os registros únicos é só trocar o “<” por “!=” veja um exemplo: