ESCPOS
Primeiro Post sobre o Projeto ESC POS

Fico feliz que arrumei a casa.

Estou postando hoje o primeiro post do projeto ESC POS.

O Objetivo deste post é publicar as novidades realizadas no projeto.

Hoje arrumei a casa. Incluí a página do projeto na aba de projetos de automação comercial.

Tambem, inclui diversas informações na página principal do projeto.

Cheguei até a compilar o projeto.

Espero nos próximos posts deixar mais novidades, quero começar a liberar versões nas outras plataformas como Linux e ARM e quem sabe MAC.

Blog Dicas
Uso do RASPBERRY como servidor WEB


No intuito de desenvolver seu negócio, hoje muitas pessoas tem começado seus próprios blogs e sites.

Os custos relacionado a manter e administrar um site, sempre foi muito caro.

História até aqui

Inicialmente os custos de energia, infra estrutura, ip fixo, domínio, dificultavam muito o acesso a pequenos empresários.

Com o tempo algumas empresas tornaram-se especialistas em hospedagem, o que diminuiu em muito o custo. Porem o preço desta queda, era a massificação dos produtos, e serviços padronizados, que muitas vezes não atendia a necessidade do pequeno empresario.

Em geral os grandes players cobravam taxas até com baixo custo, porem com acesso a banco e limitado a execução de scripts PHP.

De forma geral, quando o negócio precisava de customização mais avançada, tal como scripts, hospedagem de cgi, ou outros programas em background e portas. O custo do serviço voltava a taxas astronomicas.

Em geral os grandes players, baseavam o custo na baixa demanda de pequenos sites, principalmente aqueles rodando wordpress. Pois poderiam subdividir a mesma máquina em vários hosts. Ganhando em escala.

Raspberry

Imagem 1 de 8 de Raspberry Pi 4 Model B Quad Core 1,5ghz 4gb Ram Avista
raspberry PI 4

O Raspberry PI já comecou de forma disrruptiva, apresentando em uma pequena placa, um sistema operacional robusto.

E hoje principalmente com as novas versões de 4Gb e 8G, com capacidade de processamento e memória realmente impressionante.

Esta pequena maravilha, com um processador de 4 núcleos, consegue dar conta sem muito esforço de um site.

IP Fixo

Nos conectamos na grande rede (Internet), através do protocolo TCP/IP, que por definição ao fazermos, ganhamos uma identidade (IP), esta identidade, diz quem somos e onde estamos.

O Endereço IP faz bem isso, porem de forma geral as operadoras de internet, tem usado IPs dinâmicos, pois aloca estes ips a medida que os usuários solicitam.

Porem empresas como a Alcans, tem cobrado valores expressivamente próximos dos valores praticados normalmente no mercado, porem com ip fixo.

Isso permitiu de forma geral, a construção e hospedagem de sites.

Compra de Domínios

Ter uma máquina, o IP fixo, não permite ainda ter um site na web. É necessário a compra de um domínio.

O que é um dominio de site, como comprar dominio de site e como registrar  dominio?

Domínio de fato é o nome que será encontrado o seu site. No meu caso http://maurinsoft.com.br , o dominio tem diversos formatos e sabores. Podendo ser nacional ou internacional.

Em geral o domínio tem um custo anual que varia em torno de R$69,00 ano. O que não é muito caro. Quase o mesmo que uma pizza por ano.

Conclusão

O uso de equipamentos de baixo custo, e alto rendimento, associado a crescente concorrencia de empresas como a alcans, tem permitido que pequenos empresários consigam o tão sonhado site próprio. Com algum conhecimento técnico, hoje é possivel com um pequeno custo mensal de mais ou menos $50,00 de aumento de energia. Ter seu dominio hospedado em sua própria casa.

C/C++ Sem categoria
Teste de Permissão de arquivo

Um erro muito comum em códigos de programadores, é deixar de testar permissão de arquivos.

Muitas vezes programadores experientes usam arquivos para troca de dados ou informações.

Essa prática pode ajudar muito, porem há de se tomar alguns cuidados.

Permissão de arquivos e pastas são dados pelo sistema operacional, em alguns casos, o programador, tenta gravar em locais que exige permissão prévia deste local.

É uma boa prática, antes de ler um arquivo, ler as permissões sobre o mesmo.

Em algumas situações, tentamos escrever dados em arquivos, que possuimos permissão apenas para leitura.

Estarei postando aqui um exemplo simples de programa.

GIT do projeto

https://github.com/marcelomaurin/permissao

Explicação das funcionalidades

Criação de um arquivo

Neste fragmento, criamos um arquivo texto, que servirá de referencia ao nosso programa.

int cria_arquivo(char *arquivo){
  FILE *file;
  file = fopen(arquivo,"w");
  if(file==NULL){
      printf("Erro na criacao do arquivo\n");
      return(1);
  } else {
      fwrite("123456",6,1,file);
  }
  fclose(file);
  return 0;
}

A variavel file, é o descritor, que é um ponteiro do arquivo, que será usado como referência, toda véz que uma operação for realizada nele.

O fopen, cria o arquivo, pois tem o parametro “w” que é write, outro parametro util é o “a” de append, que adiciona no final do arquivo.

Lendo a permissão do arquivo

Neste fragmento apresento o processo de leitura da permissão.

char* permissao(char *file, char* modeval){
  struct stat st;

  memset(modeval,'\0',sizemodeval);
  if(stat(file, &st) == 0){
      mode_t perm = st.st_mode;
      modeval[0] = (perm & S_IRUSR) ? 'r' : '-';
      modeval[1] = (perm & S_IWUSR) ? 'w' : '-';
      modeval[2] = (perm & S_IXUSR) ? 'x' : '-';
      modeval[3] = (perm & S_IRGRP) ? 'r' : '-';
      modeval[4] = (perm & S_IWGRP) ? 'w' : '-';
      modeval[5] = (perm & S_IXGRP) ? 'x' : '-';
      modeval[6] = (perm & S_IROTH) ? 'r' : '-';
      modeval[7] = (perm & S_IWOTH) ? 'w' : '-';
      modeval[8] = (perm & S_IXOTH) ? 'x' : '-';
      modeval[9] = '\0';
      return (char*)modeval;
  } else{
     return strerror(errno);
  }
}

O comando stat, permite ler a permissão de um arquivo.

Alem do stat, temos outros:

stat() e fstatat() recuperam informações sobre o arquivo apontado pelo nome do caminho; as diferenças para fstatat() são descritas abaixo.

lstat() é idêntico a stat(), exceto que se pathname for um link simbólico, ele retornará informações sobre o link em si, não o arquivo ao qual o link se refere.

fstat() é idêntico a stat(), exceto que o arquivo sobre o qual a informação deve ser recuperada é especificado pelo descritor de arquivo fd.


fonte: https://man7.org/linux/man-pages/man2/lstat.2.html

Parte do código gerado neste exemplo foi baseado no artigo:

https://stackoverflow.com/questions/8812959/how-to-read-linux-file-permission-programmatically-in-c-c

Outra forma de testar permissão

Outra forma é o comando access, nele é possivel fazer o teste direto da permissão, sem necessidade de enrolação.

if(access("info.txt",R_OK) ==0{
  printf("Permite Leitura\n ");
}
if(access("info.txt",W_OK) ==0{
  printf("Permite Escrita\n ");
}
if(access("info.txt",X_OK) ==0{
  printf("Permite Execução\n ");
}

Dicas Sem categoria
Instalar o vnc no Ubuntu

Para instalar o vnc no ubuntu com interface gráfica já configurada, realize os seguintes passo:

Com o usuário root, realize a instalação do pacote:

apt install x11vnc

Pronto, agora vc tem o vnc.

Configurando e Acessando o VNC

Entre na interface X11Windows e digite o aplicativo vnc, conforme figura abaixo:

aplicação x11vncserver

Selecione X11VNCServer, e aguarde…


Pressione o botão OK, conforme figura acima.

Por fim, indique o check de Accept Connections, e digite sua senha na caixa Password.

Finalizando com o botão OK, conforme figura acima.

Pronto seu vnc esta pronto para ser conectado.

Acessando VNC

Instale o VNC Viewer, recomendo a versão do REALVNC. Conforme figura abaixo:

VNC Viewer em tela windows

Digite o IP da máquina que deseja conectar, e pronto.

C/C++ Dicas
Valgrind

Valgrind é uma ferramenta de analise de vazamento de memória.

Nele é possivel identificar e analisar o uso da memória, bem como encontrar problemas no programa.

Estarei apresentando a ferramenta, sendo eu mesmo, um estudante desta ferramenta.

Instalação

Para instalação no Ubuntu, basta digitar o comando a seguir:

apt install valgrind

Utilização

Para utilizar o valgrind, é muito simples, basta chamar o aplicativo através dele, usando a seguinte sintaxe:

valgrind –leak-check=full <programa>

A imagem abaixo, ilustra o uso deste programa.

O código deste programa, pode ser visto no link abaixo:

http://maurinsoft.com.br/index.php/2022/01/05/core-dump-em-c/

Neste exemplo, criamos uma aplicação que gera excessão, pois o ponteiro não foi inicializado.

No código, podemos ver a seguinte informação

Se olharmos no código:

Perceberemos que a menção a função main, na chamada memset, indicando que o sizeof não foi definido.

Vemos tambem que o valgrind acusa que o info não foi inicializado.

Esta é apenas uma pequena demonstração do valgrind, e como pode ser utilizado.

Existe muito a ser aprendido por mim, por esta importante ferramenta de depuração e analise.

Blog C/C++ Dicas
Core dump em C

Estaremos abordando aqui o que é um core dump, como trabalhar com ele.

O Core Dump é gerado através da saída anormal do programa.

O core dump, é criado, como um mapa de memória no momento da excessão, com isso é possivel debugar e identificar o problema no momento da excessão.

Iremos abordar um pouco deste processo.

Ativando o Core Dump

Em alguns sistemas operacionais, o core dump vem desativado.

Para ativa-lo, é necessário digitar o seguinte comando:

ulimit -c unlimited

comando ativa o core dump, com tamanho ilimitado.

Criando um programa exemplo

Para demonstrar isso criamos um programa que gera esta excessão.

Fonte teste.c, é conforme se segue:

#include<stdio.h>
#include<string.h>

void main(){
        char *info;
        memset(info,'\0',sizeof(info));
        printf("String:%s",info);

}

Como podemos ver a variavel, info, nunca foi inicializada, e quando chamada pelo memset, irá gerar o core dump.

Arquivo Makefile, é como se segue:

all: compile

compile:
        gcc teste.c -o teste

Ao realizar a operação, podemos verificar a geração do erro.

geração do arquivo core

Redirecionando arquivo core dump

Conforme o post deste site:

https://www.baeldung.com/linux/managing-core-dumps

Alias ótimo site, podemos redirecionar o caminho default do core, através do seguinte comando.

 sudo sysctl -w kernel.core_pattern="./%e_core_dump.%p"

Permitindo gerar o dump, no local que bem preferir.

Lendo arquivo Core Dump

O nosso amigo GCC é o programa que irá ler o core dump, para tanto é necessário, abrir o gcc com o core dump. Assim como se estivesse debugando um programa tradicional.

gcc -c <coredump file>

Para saber mais sobre o GCC leia este outro post.

http://maurinsoft.com.br/index.php/2021/08/20/criando-aplicacao-debugavel-no-linux/
Dicas IA pós graduação Sem categoria
Instalando NVIDIA GTX-1070 no Ubuntu

O processo abaixo descreve como instalar a placa de vídeo GTX-1070 no Ubuntu.

O objetivo deste tutorial é auxiliar programadores e estudantes de IA, pois a GTX1070 é recomendada para processamento de padrões.

Referências:

https://itectec.com/ubuntu/ubuntu-install-driver-for-gtx-1070/

https://gist.github.com/iSkore/ad043b64c8576d8eb818f7027da18b09

Pré requisitos

sudo apt remove nvidia*

sudo apt update


sudo apt install dkms build-essential linux-headers-generic vim gcc


Procedimentos

Primeiro será necessário baixar a versão do instalador do site da NVIDIA.

Para isso entre no site:

https://www.nvidia.com.br/Download/index.aspx?lang=br

Informe primeiro o tipo da sua placa, em seguida a série, e a família.

O sistema operacional vem em seguida. Algumas placas não tem todos os sistemas operacionais.

Ao clicar em procurar, surgirá a seguinte tela:

Click em baixar, e aceite os termos, nas telas subsequentes.

Por fim, irá comecar a baixar o arquivo NVIDIA-Linux-x86_64-470.94.run

sudo sh ./NVIDIA-Linux-x86_64-470.94.run

Rode conforme o comando acima.

O padrão de instalação é o enter, vc pode selecionar, outra opção ou usar enter sempre que perguntar, para selecionar opção padrão.

Por fim, reinicie o computador.

Confirmando a instalação

Dê reboot na maquina, em seguida, encontre o aplicativo:

Drivers Adicionais

Aplicativo Drivers Adicionais

Execute o mesmo, e vc verá conforme figura abaixo:

Na aba Drivers Adicionais, a gpu instalada, conforme figura acima.

Blog GIT
Leitor de Mesa MIFARE

O RFID, ou leitor de radio frequência com identificação unica, é muito utilizado em sistemas de automação, que faz-se necessário a leitura de identificação de 1 ou mais dispositivos de forma rápida.

O RFID pode ser utilizado em Postos de gasolina, mercados entre outros sistemas. Estando presente em Sistemas de PDV, Self Checkout entre outros.

De forma geral, o desenvolvedor do hardware, fornece um leitor para integração no PC. Porem os cartões de RFID são padronizados, e podem ser utilizados outros leitores.

Eu desenvolvi um leitor muito simples de rfid, utilizando arduino leonardo. Este leitor joga no pc, como se fosse digitação, não necessitando de hardware ou drivers adicionais.

Versão simples do leitor montado.

O Projeto esta no git e pode ser baixado e usado livremente.

https://github.com/marcelomaurin/RFID-Reader

Blog
Listando processos

Uma forma simples no linux, para saber quais os processos estão rodando no seu computador, é o uso do comando PS.

O PS lista os processos do sistema rodando na sua máquina.

Entende-se por processos, programas que rodam no computador, de forma aparente ou não.

No exemplo abaixo, podemos ver o uso do comando, na forma mais simples:

Ao rodar o ps sozinho, vemos apenas os processos do nosso usuário, ou seja, os processos que nosso usuário esta executando.

Documentação online

O comando ps, pode ser visto em detalhes, através do link abaixo:

https://man7.org/linux/man-pages/man1/ps.1.html

Vendo todos os processos

Uma forma simples de ver todos os processos que estão sendo executados na máquina, é através do comando:

ps -A

Conforme apresentado abaixo, o ps -A, lista todos os processos em execução.

Podemos usar um recurso comum, a associação com o grep, que é um filtro de resultado.

ps -A|grep -e post

Neste caso, podemos observar que o resultado é filtrado por ocorrencias que tem a palavra post.

Esta técnica é muito útil, para pesquisar processos que desejamos.

Informações acessórias do ps

No exemplo acima, podemos ver a primeira linha onde apresenta o nro 2141, este número é o pid do processo.

PID é o identificador do processo, é um numero que identifica unicamente o processo em execução. O PID é utilizado entre outras coisas, para matar o processo, exemplo:

kill 2141


No exemplo acima, o kill irá matar o processo 2141, encerrando o mesmo.

Em algumas situações é necessário ter permissão para fazer essa operação. De fato, se o processo não for do próprio usuário o kill só pode ser dado pelo usuario que o criou ou pelo administrador do sistema.

O tempo, que aparece a seguir 00:00:12, é o tempo que este processo esta ativo, ou o tempo de execução. Alguns processos, podem ficar por muito tempo em execução, outros tem uma vida muito curta. O tempo de execução de um processo, depende da forma que ele foi desenvolvido, e de sua finalidade.

Mais opções do PS

Outra opção muito útil, é o comando:

ps -ef

Neste exemplo, o ps, fornece uma lista mais detalhada de informações a cerca do processo.

Como podemos ver, alem do pid, temos o usuário do processo, o PID pai, a hora da execução, o tempo no ar, alem de informações mais detalhadas, a cerca da execução em si.

Documentação do Grep

https://linux.die.net/man/1/grep

Neste link podemos ver as informações da documentação de todos os paramentros associados ao grep.

Agradecimentos

Bom pessoal, espero que este post tenha ajudado voces na fantástica jornada ao mundo linux, quero agradecer ao Lucas Lima, que contribuíu com algumas dicas que tornaram viavel a realização deste artigo.

Feed Back

Se o artigo, foi útil, nos envie um feed back, para o email marcelomaurinmartins@gmail.com.

Grande abraço.

Blog
Custo do Turnover

O Turnover é um termo em Inglês, que significa mudança (rotatividade) de pessoal.

O Turnover tem se mostrado uma situação crítica, principalmente no Brasil, devido ao alto custo de recolocação.

Empresas de TI, estão brigando arduamente por recursos de tecnologia, colaboradores tem migrado, para outras empresas, devido a escasses do mercado, e a crescente valorização de seu trabalho.

Hoje profissionais, são cada vez mais escassos, e conquista-los mantendo motivados, é cada vez mais dificil.

Conforme artigo publicado em:

https://mittechreview.com.br/o-apagao-tecnologico-tem-preco-alto-como-segurar-os-seus-melhores-profissionais/

“Um colaborador recem contratado, precisa de 2 anos, para alcançar potencial maximo de produtividade.”

O preço da perda do funcionário, representa alem de maior morosidade na entrega de projetos, como aumento nos riscos e problemas associados a qualidade.

“Nos Estados Unidos, estima-se que o custo adicional devido ao turnover gire em torno de US$ 3,9 Milhões. “

Manter profissionais motivados, treinados e adequados, é cada vez mais importante para a empresa.

Outro fator importante é a documentação dos projetos, indicarei outro artigo que trato do assunto:

http://maurinsoft.com.br/index.php/2021/08/12/documentando-seu-negocio/
pt_BRPortuguese