Neste primeiro artigo, iremos estabelecer um projeto, que iremos desenvolver nos demais artigos.
Objetivo
A intenção deste projeto é apresentar solução em diversos linguagens de controle de threads com compartilhamento de informações entre elas.
Proposta de projeto
Imagine que temos 3 funcionários em um departamento público.
Recepção de Protocolo – Ele recebe os protocolos de serviço dos clientes.
Controlador de Serviço – Ele recebe os protocolos da recepção, colocando em ordem numérica em uma fila de execução. Por controlar e ordenar, sua atividade demora tempo mediano.
Executor de Serviço – Ele pega o serviço, por executar o serviço é o mais demorado de todos.
Tempo de execução
Ao analisarmos o departamento, fizemos a seguinte constatação:
A recepção de protocolo, é o departamento mais rápido.
O Controlador de Serviço tem um tempo médio que é o dobro da recepção.
Executor de Serviço – Demora o dobro do tempo do controlador de serviço.
Agora que temos o projeto, podemos no próximo artigo começar sua implementação.
Neste artigo, e nos demais, irei continuar o trabalho apresentado no MNote2, gerando um pacote para um projeto em Lazarus, este projeto consiste em um sistema Cliente/Server, que consome um banco de dados Mysql.
Este artigo tem relação tambem sobre outro conjunto de artigos:
A instalação deste tipo de aplicação demanda certo trabalho, que irei abordar durante o ciclo de posts, aqui apresentados.
Agora iremos criar o Nosso Makefile para carregar os scripts:
Arquivo Makefile
# Script de criacao do banco de dados
# Autor Marcelo Maurin Martins
# Daa: 31/01/2022
#
APP=mysql
all: database Tabelas
database:
$(APP) < database.sql
Tabelas:
$(APP) < pessoas.sql
Em seguida iremos criar o script de criação da base de dados, database.sql:
#Cria um banco de dados em Mysql
#Autor: Marcelo Maurin Martins
#31/01/2022
create database IF NOT EXISTS `testedb`;
E por fim nossa tabela pessoas.sql
#Cria a tabela de pessoas
#Autor: Marcelo Maurin Martins
#31/01/2022
use testedb;
create table if not exists pessoas
(
idPessoa INT(6) unsigned auto_increment primary key,
nome varchar(30) not null,
dtnasc date,
profissao varchar(20),
sexo char(1),
dtchg timestamp default current_timestamp on update current_timestamp,
dtcad timestamp default current_timestamp
);
Executando Scripts
Entre na pasta scripts, para que possamos criar nossas estruturas de banco.
Digite o comando:
make
executa a criação do banco
A figura abaixo mostra sua execução
Por fim mais um vídeozinho
Permissões
Ao montar o segundo artigo lembrei que para melhorar este artigo, o ideal seria criar uma conta especifica para cada aplicação. Desta forma criei um scripts novo chamado GRANTS.SQL
Desta forma, existe essa ultima etapa. Que precisamos, que será criar um usuário para acesso a aplicação:
Criando o usuario:
CREATE USER 'seu_usuario'@'localhost' IDENTIFIED BY 'suasenha';
Dando permissão:
GRANT ALL PRIVILEGES ON * . * TO 'seu_usuario'@'localhost';
Finalizando
FLUSH PRIVILEGES;
Este procedimento será validado, quando digitarmos
mysql -h localhost -u gcc -p
Conectando em banco de dados
Pois se as permissões não estiverem corretas o usuario não conecta.
Sempre que avançarmos em uma etapa, um novo usuário será criado, neste script.
Então não estranhem se eventualmente os scripts sofrerem modificação no git.
Cenas do próximos capítulos
Agora que preparamos a cama, iremos começar a codificar nela. No próximo artigo iremos criar um crud em C para cadastrar pessoas.
Falaremos neste artigo, como obter a temperatura da placa de Vídeo (GPU) NVIDIA.
Abordaremos o procedimento mais simples de integração, e leitura das informações da placa de vídeo, integrando com Lazarus.
A placa de vídeo, hoje é requisito obrigatório para qualquer computador realmente robusto.
Placas de vídeo com grande capacidade, por vezes precisam ser monitoradas para evitar super aquecimento .
Atualmente projetos de CASEMOD não seriam realmente case mode, se não lerem estas informações.
Pensando nisso a NVIDIA, lançou um conjunto de ferramentas que auxiliam o desenvolvedor na obtenção de forma fácil e assertiva, na leitura das informações da GPU.
O NVIDIA System Management Interface é um utilitário, baseado no NVML (NVIDIA MANAGEMENT Library) que gerencia e monitora dispositivos NVIDIA.
Este utilitário tambem administra por pesquisas por estado de dispositivo GPU , atribuindo privilegios , permitindo administradores modificares o estado da GPU.
NVIDIA-smi é embarcado com o driver para linux do NVIDIA GPU , e windows 64bits (WIN7/2008).
O NVIDIA-smi pode fornecer informações em formato XML ou em arquivo texto simples.
O fpcupdeluxe é o instalador do lazarus já com atualização de pacotes automáticos e plataformas.
Qual a diferença de instalar o lazarus e o fpcupdeluxe?
No lazarus, voce instala apenas os compiladores para a plataforma alvo, ou seja, para o sistema que esta instalando. Isso quer dizer, que se instalar no windows 10, terá apenas os compiladores do windows 10.
Já o fpcupdeluxe, voce alem de instalar o lazarus do windows 10, no caso do nosso exemplo acima, tambem, já pode preparar binarios em linux i386, alem de arm, mac os, android entre outras plataformas que o lazarus permite compilar.
Existe um ótimo tutorial, para quem deseja instalar no linux i386, segue o link:
Neste exemplo, iremos mostrar uma janela simples, conforme apresentado abaixo:
Primeiramente precisamos apontar para o target correto, para isso, iremos em Project, selecionando a opção Project Options.
Selecione a opção Compiler Options, da arvore de opções do lado esquerdo.
Selecione a opção Config and Target, selecione agora a opção Target OS, indicando Linux.
Selecione o Target CPU family X86_64, conforme figura acima.
Para ter certeza que o processo de instalação esta correto, iremos clicar no botão Test, conforme figura acima.
Poderão surgir alguns avisos, dizendo que os fontes estão duplicados, dê ignore.
Click no botão OK.
Pronto! Podemos gerar o binário.
Agora iremos gerar o binário, simplesmente Clicando na opção de menu RUN, no sub item Build.
Estamos quase acabando, pois já geramos nosso binário. Agora devemos leva-lo para o linux e testar.
O nosso projeto foi originalmente gravado em
C:\fpcupdeluxe\fpcupdeluxe\projects\projetos\hello world
Podemos ver, que existem 2 arquivos hello, o primeiro com data de hoje, e o segundo com data de ontem. O primeiro já é o nosso aplicativo linux, e deve ser copiado para uma pasta no linux.
Conforme figura acima, podemos ver que copiamos o arquivo para a pasta do download.
O próximo passo é dar permissão de execução no arquivo.
Para tanto, iremos na pasta e em seguida dar o comando:
chmod +777 ./hello
Pronto, agora basta chamar nosso aplicativo.
Ao clicar no nosso botão, teremos o seguinte resultado:
Observando, que agora temos 3 opções de binário.
Gerando binário para o MAC OS
Agora iremos para nossa terceira etapa, gerando para o MAC.
Irei gerar o binário para este mac, um modelo 2009, já velinho.
Que venho apresentando em diversos posts.
Primeiramente precisamos saber a versão do processador.
No nosso exemplo usamos um processador INTEL Core 2 Duo, o que iremos parametrizar.
Agora iremos novamente entrar no nosso fpcupdeluxe-x86_64-win64.exe, localizado na pasta C:\fpcupdeluxe
Entraremos na aba CROSS, e em seguida selecionamos CPU i386.
Agora marcamos no OS, o sistema darwin, que é o MACOS.
Click em INSTALL COMPILER, e mostrará a aba abaixo, informando que para rodar o free pascal, necessita de versão superior ao 3.2, dê Yes.
Pronto, agora é só aguardar…
Para testar e fazermos testes, usaremos o RealVNC, pois facilita em muito.
Para tanto, configure em seu mac uma versão do RealVNC, e conecte com o view no seu PC, conforme demonstrado abaixo:
Crie uma pasta no MAC, para levar o binario.
Abra a pasta e já deixe pronto para a próxima etapa.
Pronto! A maquina cross esta pronta!
Agora iremos compilar no MAC
Para tanto, iremos abrir o Lazarus, que fica localizado em C:\fpcupdeluxe\fpcupdeluxe\lazarus.
Para rodar o Lazarus, execute o startlazarus, conforme figura acima.
Para gerar, entre no menu na opção Project, no sub item Project Options.
Agora, selecione a arvore de opções Compiler Options, e em seguida o sub item Config and Target, conforme figura acima.
Selecione no Target OS, o item Darwin, e para o Target CPU i386, conforme figura acima.
Selecione o Botão Test, conforme figura acima.
Por fim, click no botão OK.
Agora, iremos compilar nossa aplicação, para tanto click em RUN, selecionando a opção BUILD.
Agora se olharmos a pasta do projeto, eu instalei em C:\fpcupdeluxe\fpcupdeluxe\projects\projetos\hello world
Podemos ver que foi criado um arquivo hello e tambem uma pasta hello.app.
Devemos copiar ambos.
Pronto! Segue o executável, funcionando!
Gerando binário para o Android
Agora iremos criar um procedimento para criar aplicações android.
Para testar iremos utilizar um CubieTruck com SO Android 4.
O CubieTruck permite ser usado tanto como maquina linux, como máquina Android.
Para me auxiliar, instalei o aplicativo que cria um servidor ssh.
Pronto, agora tenho comandos e ftp para lançar minha aplicação.
A ilustração acima, demonstra que posso disponibilizar arquivos para o celular.
Na ilustração acima, o console terminal, permite rodar comandos.
Podemos ver também, que a atualização do cpu ARM, com SO android foi finalizada.
Agora irei compilar meu projeto.
Agora, clicando em Test, gerando
Instalação de Pacotes Adicionais
O FPCUPdeluxe permite tambem a instalação de pacotes adicionais, tal como Zeoslib.
Apresentaremos o procedimento de instalação de um pacote.
Para tanto, click na aba Modules, selecione a aba que deseja instalar e click no botão Install module.