Dicas
Trato em Parreiral

Vou sair um pouco da area de tecnologia, e apresentar minha segunda paixão.

Minhas plantas:

Uvas agora em 7/2021

Vamos abordar alguns cuidados com as parreiras:

  • Poda em junho, preferencialmente no sosticio de inverno.
  • Adubação a cada 2 meses no inverno, e uma vez por mês na primavera e no verão.
  • Irrigação diaria
Uvas em ponto de consumo 2020
pós graduação Sem categoria
Métodos de Busca

Assim, considerando o grafo da Figura 2, que representa a sub-região circulada na Figura 1, e a tabela heurística da Figura 3, represente o problema (Estado, S, s0, G, A e Matriz de Adjacências) e apresente soluções (caminho e custo em Km) para o problema descrito utilizando os seguintes algoritmos de busca: Menor Custo, Dijkstra (árvore), Melhor Estimativa e A*.

Observação: Para referenciar uma cidade use apenas as três primeiras letras.

Exercício

Usar método de menor custo de Itapevi até Osasco.

Tabela de distância até Osasco em linha reta

CidadeDistância KM
Barueri12
Carapicuíba6
Cotia17
Embú15
Itapevi23
Jandira18
Osasco0
Taboão da Serra8

Estimativa de distância até Osasco

Diagrama de conexões

Conexões e custos associados

Árvore de busca de menor custo Itapevi/Osasco

Nesta arvore usamos o custo associado de deslocamento, fazendo todas as conexões possíveis.


Ficando definido a melhor rota Itapevi/Jandira/Carapicuíba/Osasco.

Árvore Dijkstra

Nesta arvore usamos o custo, associado a podas, ignorando os métodos que tem maior custo.

Este método tem podas em Carapicuíba (26) Taboão (36), conforme figura abaixo:


Ficando definido a melhor rota Itapevi/Jandira/Carapicuíba/Osasco.

Árvore Melhor Estimativa

Neste método, usamos a distância até Osasco, pegando sempre a menor distância e ignorando as demais.

Árvore A*

Nesta arvore somamos o custo a distância, criando um valor ficticio. Que será a base da poda.

É uma arvore heuristica, ou seja toma decisões.

Neste método somamos os valores.

Sendo:

JAN(4) = 6+18

COT(4)= 8+17

BAR(3) 11+12

CAR(2) 9+6

OSA(1) 9+0

JAN(6) 9+18

Fila
Fila Versão 1.16

Foi liberado no git a versão 1.16.

Itens modificados:

Melhoria visual do FILA

Conforme figura abaixo:

A opção de fechamento e movimentação tambem foi bloqueada, para não permitir que usuário altere a interface.

Hardware Homologado

O Hardware POS5811-DD, foi incluído no instalador, que agora é suportado por este equipamento.

POS-5811DD

C/C++ Sem categoria
Criando um driver linux

Iremos abordar neste artigo, como criar um device driver em linux.

Pré requisitos

Instale os seguintes pacotes:

sudo apt-get install linux-headers-generic

apt-get install linux-headers-`uname -r`

Instale o gcc:

sudo apt-get install gcc

sudo apt-get install build-essential

apt-get install linux-virtual

GIT do Projeto

https://github.com/marcelomaurin/devicedriver_sample

Compilando o projeto

Abaixo o vídeo explicativo do tópico que será abordado aqui:

Agora vamos ao nosso código, crie um programa hello.c, conforme o código abaixo:

/*
 *  hello.c - The simplest kernel module.
 */
#include <linux/init.h>
#include <linux/module.h>	/* Needed by all modules */
#include <linux/kernel.h>	/* Needed for KERN_INFO */

static int hello_init(void)
{
	printk(KERN_INFO "Hello world 1.\n");

	/*
	 * A non 0 return means init_module failed; module can't be loaded.
	 */
	return 0;
}

static void hello_exit(void)
{
	printk(KERN_INFO "Goodbye world 1.\n");
}

module_init(hello_init);
module_exit(hello_exit);
MODULE_LICENSE("GPL");
MODULE_AUTHOR("MARCELO MAURIN MARTINS");

Agora crie o Makefile:

obj-m += hello.o

all:
	make -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules

clean:
	make -C /lib/modules/$(shell uname -r)/build M=$(PWD) clean

Carregando o Módulo do Kernel

Para carregar o módulo é necessário primeiro entender alguns comandos:

lsmod

Lista os módulos carregados do kernel.

Exemplo de lsmod

insmod

Carrega um módulo no kernel.

Carrega o módulo na memória

dmesg

Mostra mensagens do sistema

Retorno do modulo carregado em dmesg

rmmod

Remove um modulo da memória do kernel

Remove um módulo do kernel
Lista mensagens do kernel

Referências

Este artigo esta sendo baseado em vários artigos, o principal é esse:

https://tldp.org/LDP/lkmpg/2.6/html/x181.html

How to Write a Hello World Program in Linux Device driver

Linux Device Driver – Alessandro Rubini

Sem categoria
Site invadido

Portuguese

Pessoal, hoje sofri uma invasão, o cara não só roubou os dados com também tirou o site fora do ar.

Pessoal, este site é opensource, invadir o site, não vai agregar nada, porque todas as informações aqui disponibilizadas, são abertas.

Não há um programa aqui que já não esteja em meus gits ou nos projetos.

Então senhores, peço que não o façam, porque isso apenas prejudica quem precisa das informações aqui disponibilizados.

Estudantes e pessoas que buscam no google.

Tudo o que esta aqui, já é aberto.

E o conteúdo integral do site já pode ser baixado no git.

Estou fazendo esse trabalho de formiguinha, então colaborem não prejudicando outros.

Grato.

Blog Dicas Shell Script
Debugando Script em Shell Script

Ao criar um shell script em linux, por vezes ficamos na duvida quando este apresenta algum problema.

O debug, consiste em uma técnica utilizada para analisar e posteriormente identificar problemas.

Os scripts bash (shell script) tambem podem ser debugados, para tanto, usamos os parâmetros a seguir

Debug com impressão

Usa-se quando for necessário imprimir o resultado do processamento do script

#!/bin/sh

set -x

[comando]

set +x

argumento usado na execução do

Outros parâmetros

OpçãoSignificado
set -xImprime as declarações após interpretar metacaracteres e variáveis
set+xPára a impressão de declarações
set -vImprime as declarações antes de interpretar metacaracteres e variáveis
set -fDesativa a geração de nome de arquivo (usando metacaracteres)
Relação de parâmetros possíveis

Este artigo foi baseado na referencia:

https://www.thegeekdiary.com/how-to-debug-shell-scripts/

IA pós graduação Python
Uso de Pandas com Python

Instalação do Pandas

O processo de instalação é bem simples.

Basta entrar como su, e dar o seguinte comando:

pip3 install pandas

Segue o vídeo do processo.

Outro processo que pode ser usado é pelo apt

apt install python3-pandas python3-pandas-lib

Nada disso funcionou e agora?

Não se preocupe entre no seu jupyter, e digite o seguinte comando:

import sys

print(sys.executable)

Ele deve retornar um caminho no meu caso, foi:

/snap/jupyter/6/bin/python

Dai pegue esse caminho e instale

/snap/jupyter/6/bin/python pip install pandas –user

Tenho certeza que pelo menos uma destas técnicas irão funcionar com vc.

Definições

Series são arrays “unidimencional”

DataFrame são tabelas.

Criando uma Serie

Neste exemplo estarei mostrando como criar uma serie no pandas.

import pandas as pan

sr = pan.Series(['ele1','ele2','ele3'])

print(sr)

Resultado esperado:

0    ele1
1    ele2
2    ele3
dtype: object

Usando um dicionário

Usaremos uma série associado ao dicionario.

import pandas as pan

dic = {1:'elem1', 2:'elem2',3:'elem3'}
sr = pan.Series(dic)

print(sr)

O resultado esperado é como aparece a seguir:

1    elem1
2    elem2
3    elem3
dtype: object

Criando um DataFrame

Exemplo de criação de um dataframe

import pandas as pan

df1 = pan.DataFrame([[1,'item1','true'],[2,'item2','false'],[3,'item3','true']],columns=['ind','item','cond'])
print(df1)

Ao rodar esse exemplo fica conforme apresentado.

   ind   item   cond
0    1  item1   true
1    2  item2  false
2    3  item3   true

Como ler um arquivo no Pandas e concatenar arquivos.

import pandas as pd

df2 = pd.read_csv("2021-02-gasolina-etanol.csv",delimiter=";")

df3 = pd.read_csv("2021-03-gasolina-etanol.csv",delimiter=";")

df4 = pd.read_csv("2021-04-gasolina-etanol.csv",delimiter=";")

df5 = pd.read_csv("2021-05-gasolina-etanol-1.csv",delimiter=";")

df6 = pd.read_csv("2021-06-gasolina-etanol.csv",delimiter=";")

df7 = pd.read_csv("2021-07-gasolina-etanol.csv",delimiter=";")

frames = [df2,df3,df4,df5,df6,df7]

df = pd.concat(frames, sort=False)

print(df)

Gravando um DataFrame em disco

Para gravar um dataframe, usa-se a seguinte sintaxe:


df.to_csv("gasolina-etanol.csv",sep=';', encoding='utf-8')

dftotal = pd.read_csv("gasolina-etanol.csv",delimiter=";")

Comprimindo arquivo durante a gravação

Para gravar arquivos que voce processou em um dataframe, use a sintaxe abaixo.

df.to_csv("gasolina-etanol.cvs.gzip", sep=';', index=False,  encoding='utf-8', compression='gzip')

Lendo arquivos comprimidos

No exemplo a cima, gravamos um arquivo comprimido, agora iremos lê-lo.

dftotal = pd.read_csv("gasolina-etanol.cvs.gzip",delimiter=";",compression='gzip')
print(dftotal)

Vendo colunas do DataFrame

Aqui iremos mostrar como visualizar as colunas de um data frame carregado.

import pandas as pd

dftotal = pd.read_csv("gasolina-etanol.cvs.gzip",delimiter=";",compression='gzip')

dftotal.columns

O resultado é como demonstrado.

Index(['Região - Sigla', 'Estado - Sigla', 'Município', 'Revenda',
       'CNPJ da Revenda', 'Nome da Rua', 'Número Rua', 'Complemento', 'Bairro',
       'Cep', 'Produto', 'Data da Coleta', 'Valor de Venda', 'Valor de Compra',
       'Unidade de Medida', 'Bandeira'],
      dtype='object')

Seguindo o exemplo anterior, a visualização dos dados da Região – Sigla, fica conforme apresentado.

dftotal['Região - Sigla']

Apresentando um resultado, conforme indicado:

0          N
1          N
2          N
3          N
4          N
          ..
251415    SE
251416    SE
251417    SE
251418    SE
251419    SE
Name: Região - Sigla, Length: 251420, dtype: object

HEAD de data frame

A função head, mostra o cabeçalho das funções, conforme apresentado a seguir.

dftotal.head()

O exemplo apresenta um resultado conforme apresentado a seguir.

	Região - Sigla	Estado - Sigla	Município	Revenda	CNPJ da Revenda	Nome da Rua	Número Rua	Complemento	Bairro	Cep	Produto	Data da Coleta	Valor de Venda	Valor de Compra	Unidade de Medida	Bandeira
0	N	AC	RIO BRANCO	AUTO POSTO ISAURAO LTDA	04.594.586/0001-10	RUA ISAURA PARENTE	1412	NaN	ESTACAO EXPERIMENTAL	69918-216	GASOLINA ADITIVADA	02/02/2021	5,29	NaN	R$ / litro	PETROBRAS DISTRIBUIDORA S.A.
1	N	AC	RIO BRANCO	AUTO POSTO ISAURAO LTDA	04.594.586/0001-10	RUA ISAURA PARENTE	1412	NaN	ESTACAO EXPERIMENTAL	69918-216	ETANOL	02/02/2021	4,09	NaN	R$ / litro	PETROBRAS DISTRIBUIDORA S.A.
2	N	AC	RIO BRANCO	AUTO POSTO ISAURAO LTDA	04.594.586/0001-10	RUA ISAURA PARENTE	1412	NaN	ESTACAO EXPERIMENTAL	69918-216	GASOLINA	02/02/2021	5,29	NaN	R$ / litro	PETROBRAS DISTRIBUIDORA S.A.
3	N	AC	RIO BRANCO	COMDEPE COMERCIO DE DERIVADOS DE PETROLEO LTDA	01.198.443/0001-00	AVENIDA NACOES UNIDAS	23	NaN	AVIARIO	69909-720	GASOLINA ADITIVADA	02/02/2021	5,29	NaN	R$ / litro	PETROBRAS DISTRIBUIDORA S.A.
4	N	AC	RIO BRANCO	COMDEPE COMERCIO DE DERIVADOS DE PETROLEO LTDA	01.198.443/0001-00	AVENIDA NACOES UNIDAS	23	NaN	AVIARIO	69909-720	GASOLINA	02/02/2021	5,22	NaN	R$ / litro	PETROBRAS DISTRIBUIDORA S.A.

Média de preço do data frame

No exemplo a seguir usaremos uma média do campo Valor de Venda.

dftotal.mean()

#ou apenas em uma coluna

dftotal['Valor de Venda'].mean()

Contagem de elementos de uma coluna do data frame

dftotal['Data da Coleta'].value_counts()

O resultado fica conforme apresentado, a seguir:

02/06/2021    5882
01/06/2021    5230
05/07/2021    3489
09/06/2021    3420
15/06/2021    3306
              ...
25/06/2021      16
21/05/2021      15
07/05/2021      15
18/06/2021      10
26/03/2021       3
Name: Data da Coleta, Length: 150, dtype: int64

Ordenando um Data Frame

dfordenado = dftotal.sort_values(by='Data da Coleta')

dfordenado['Data da Coleta']

Ficando o resultado, conforme apresentado a seguir:


3836      01/02/2021
3173      01/02/2021
3174      01/02/2021
3175      01/02/2021
3176      01/02/2021
             ...
148518    31/05/2021
148517    31/05/2021
148516    31/05/2021
148514    31/05/2021
148524    31/05/2021

As informações acima, estão contidas no repositório do GIT.

https://github.com/marcelomaurin/Analise-de-Preco

Artigos relacionados

Blog Dicas treinamentos
Criando partição remota do SAMBA

Quando voce tem dois computadores, e precisa compartilhar pastas entre eles, existe 2 processos que precisam ser realizados.

Criação de servidor SAMBA

Neste tópico abordarei como criar um servidor samba, onde compartilharemos arquivos entre diversos computadores.

Este tópico esta incompleto, aguarde que em breve estaremos finalizando o mesmo.

Criação de Cliente SAMBA

Neste tópico abordarei como consumir um diretório compartilhado.

Para consumir um diretório compartilhado, é necessário primeiro adicionar o pacote:

apt install cifs-utils

O cifs-utils, é o pacote do protocolo cifs, sem este pacote, voce não conseguirá seguir o próximo passo.

Edite o arquivo fstab, adicionando a seguinte linha, com suas adaptações.

//10.154.20.8/pasta /mnt/pasta cifs uid=0,user=[user],password=[senha],iocharset=utf8

Exemplo de como consumir um volume no samba.

Substitua o ip pelo ip do servidor samba.

Entre na pasta, no diretorio /mnt/, e crie ele, conforme o nome da sua preferencia. Substituindo pasta pelo seu nome.

mkdir /mnt/pasta

Agora para finalizar, e verificar se deu certo, dê o comando de mount.

mount /mnt/pasta

Entre na pasta e verifique se a mesma contem os arquivos da pasta origem.

IA Python
Classes no Python

Não entrarei nos detalhes do que é classe ou objetos, entendo que isso já é de conhecimento do leitor.

Codificando classe em Python:

Arquivo class_prototipo.py

# Classe protótipo
class Class_Prototipo:
    # construtor
    # https://docs.python.org/3/reference/datamodel.html#object.__init__
    def __init__(self,param1):
        # codificacao
        return 0


    def metodo(self):
        # codificacao
        return 0

    # __dict__ serve em qualquer classe
    def printar(self):
        print(self.__dict__)

__init__ método construtor, conforme documentação.

https://holycoders.com/python-dunder-special-methods/

Herança

Arquivo class_filha.py, herda o class_prototipo.

import class_prototipo


class Class_Filha(class_prototipo.Class_Prototipo):
    # construtor
    def __init__(self,param1):
        # codificacao
        self.variavel = param1



    def metodo(self):
        # codificacao
        return self.variavel

    # __dict__ serve em qualquer classe
    def printar(self):
        print(self.__dict__)

Construção dos objetos

Código do programa principal, fonte: main.py


import class_prototipo
import class_filha




filha1 = class_filha.Class_Filha(1)
filha2 = class_filha.Class_Filha(2)
filha3 = class_filha.Class_Filha(3)

filha1.printar()
filha2.printar()
filha3.printar()


en_USEnglish