Relógio 2.3.11
Nesta nova atualização retiramos uma serie de operações para centralizar mais na função primordial.
O software passa apenas controlar o hardware proposto, sem marcação de ponto, que será implementado em outro software.
Nesta nova atualização retiramos uma serie de operações para centralizar mais na função primordial.
O software passa apenas controlar o hardware proposto, sem marcação de ponto, que será implementado em outro software.
Uma das coisas mais interessantes no vim é a capacidade de incluir em uma mesma tela, dois fontes e comparar ambos.
Iremos verificar neste artigo como fazer isso.
Chame o vim
vim
Na console crie um artigo, para isso pressione ESC, em seguida, digite:
w teste1234.txt
Pressione o i para inserir texto.
Digite o seguinte texto:
este é um teste
este é outro teste
este é um novo teste
Entre no modo de comando , pressionando ESC.
Em seguida CTRL+W e depois o s.
Entre no modo de comando, pressionando ESC, em seguida digite:
CTRL+W o
Entre no modo de Comando, digitando ESC, em seguida digite:
CTRL +W v
Para ajustar a largura da janela, pressione
CTRL + w seguido de < ou CTRL + w seguido de >
O < diminui a janela da direita, e o > aumenta.
O = deixa elas da mesma largura.
Os comandos CTRL+W (j e k) navegam verticalmente.
CTRL+w j – indo para cima
CTRL+w k indo para baixo
Nesta versão realizei:
Foram feitas diversas melhorias nesta aplicação.
Foi atualizado o programa temperatura para versão 0.3, nele foi feito uma pequena correção na tela do registro.
Foi lançado a versão 0.3.
Fonte do projeto:
Monit é um projeto open source, destinado a monitorar sistemas Unix.
O monit permite visualizar serviços de forma fácil e intuitiva.
O site possui documentação bem elaborada, que pode ser visto através do link
https://mmonit.com/monit/documentation/monit.html
https://github.com/arnaudsj/monit
O procedimento de instalação a partir do repositório é bem simples:
sudo apt install monit
Ao finalizar o monit, estará instalado, porem sem configuração.
Para isso é necessário editar o arquivo /etc/monitrc/monitrc como administrador.
Incluindo o seguinte fragmento, que ja deve estar comentado no arquivo.
set httpd port 2812 and
use address localhost
allow localhost
allow admin:monit
Após salvar o arquivo é necessário reiniciar o serviço.
systemctrl restart monit
Pronto agora basta entrar no browser e adicionar o url: http://localhost:2812/
O usuário e senha será o que definiu no arquivo monitrc, aqui admin/monit.
Ficando algo como apresentado a seguir.
É possível gerenciar serviços através do monitor.
Para isso é necessário adicionar o script do serviço, conforme apresentado no fragmento, no arquivo monitrc.
check process httpd with pidfile /var/run/apache2/apache2.pid
start program = “/usr/bin/systemctl apache2 start”
stop program = “/usr/bin/systemctl apache2 stop”
Conforme apresentado a seguir:
Desta forma é possível configurar diversos serviços em seus equipamentos.
Nesta longa jornada de aprendizado, mMais uma lição aprendida.
No exemplo a seguir, crio um web service, onde utilizo uma unica chamada para acionar todos os verbos do ws.
<?php
/*phpinfo();*/
/*Registra webservice para processamento de jobs*/
ini_set('display_errors', 'Off');
error_reporting(E_ALL);
include "connectdb.php";
function iif($cond, $arg_2, $arg_3)
{
if($cond){
return $arg_2;
} else {
return $arg_3;
}
}
function filtro($cond){
//$cond = str_replace('"',"'");
return $cond;
}
$typereq = $_SERVER['REQUEST_METHOD'];
//echo $typereq;
if ($typereq==='POST')
{
//echo "POST";
// The request is using the POST method
$data = json_decode(file_get_contents("php://input"));
if($data){
$localguid = $dbhandle->real_escape_string($data->guid);
$idbperguntas = $dbhandle->real_escape_string($data->idbperguntas);
//echo var_dump(json_decode($foo, true));
} else {
$localguid = $dbhandle->real_escape_string($_POST['guid']);
$idbperguntas = $dbhandle->real_escape_string($_POST['idbperguntas']);
//echo "3";
}
//echo $localguid;
//echo $idbperguntas;
}
if ($typereq==='PUT')
{
//echo "PUT";
// The request is using the POST method
$data = json_decode(file_get_contents("php://input"));
if($data){
$localguid = $dbhandle->real_escape_string($data->guid);
$idhistorico = $dbhandle->real_escape_string($data->idhistorico);
$pergunta = $dbhandle->real_escape_string($data->pergunta);
//echo var_dump(json_decode($foo, true));
} else {
$localguid = $dbhandle->real_escape_string($_POST['guid']);
$idhistorico = $dbhandle->real_escape_string($_POST['idhistorico']);
$pergunta = $dbhandle->real_escape_string($_POST['pergunta']);
//echo "3";
}
//echo $localguid;
//echo $idhistorico;
//echo $pergunta;
if(($pergunta)&&($pergunta!=''))
{
$query = "insert into bperguntas (pergunta) values ('".$pergunta."');";
}
//echo $query;
$rs = $dbhandle->query($query);
}
if ($typereq === 'GET') {
//echo "GET";
// The request is using the POST method
$data = json_decode(file_get_contents("php://input"));
if($data){
$localguid = $dbhandle->real_escape_string($data->guid);
$idbpergunta = $dbhandle->real_escape_string($data->idbpergunta);
} else {
$localguid = $dbhandle->real_escape_string($_GET['guid']);
$idbpergunta = $dbhandle->real_escape_string($_GET['idbpergunta']);
}
}
if ($typereq === 'DELETE')
{
//echo $typereq;
$data = json_decode(file_get_contents("php://input"));
if($data){
$localguid = $dbhandle->real_escape_string($data->guid);
$idbperguntas = $dbhandle->real_escape_string($data->idbperguntas);
} else {
$localguid = $dbhandle->real_escape_string($_GET['guid']);
$idbperguntas = $dbhandle->real_escape_string($_GET['idbperguntas']);
}
if ($idbperguntas)
{
//$localguid = $data->guid;
//$idbpergunta = $data->idbpergunta;
$query = "delete from bperguntas where idbperguntas = ".$idbperguntas.';';
if($dbhandle->query($query)==TRUE)
{
echo ($query);
$strJSON = '{"rs":[';
$strJSON = $strJSON . '{';
$strJSON = $strJSON . '"IDPergutas":'.$idbperguntas.',';
$strJSON = $strJSON . '"resposta":"Registro excluido com sucesso!"';
$strJSON = $strJSON . '}';
$strJSON = $strJSON . ']}';
echo($strJSON);
}
else
{
$strJSON = '{"rs":[';
$strJSON = $strJSON . '{';
$strJSON = $strJSON . '"IDPergutas":'.$idbperguntas.',';
$strJSON = $strJSON . '"resposta":"'.$dbhandle->error.'"';
$strJSON = $strJSON . '}';
$strJSON = $strJSON . ']}';
echo($strJSON);
}
}
else
{
$strJSON = '{"rs":[';
$strJSON = $strJSON . '{';
$strJSON = $strJSON . '"IDPergutas":'.$idbperguntas.',';
$strJSON = $strJSON . '"resposta":"Registro não encontrado!"';
$strJSON = $strJSON . '}';
$strJSON = $strJSON . ']}';
echo($strJSON);
}
}
if($localguid!=GUID)
{
//echo $localguid;
//echo " - - ";
//echo GUID;
$strJSON = '{';
$strJSON = $strJSON . '"mensagem":"Acesso negado"';
$strJSON = $strJSON . '}';
echo $strJSON;
exit();
}
if (($typereq === 'GET')){
if(($idbperguntas)&&($idbperguntas!='0'))
{
$query = "select idbperguntas, pergunta from bperguntas where (idbpergunta = ".$idbperguntas.");";
} else {
$query = "select idbperguntas, pergunta from bperguntas ;";
}
$rs = $dbhandle->query($query);
$cont = 0;
//echo $query;
$strJSON = '{"rs":[';
//while($row=$rs->fetch_assoc())
while($row=$rs->fetch_assoc())
{
if($cont!=0)
{
$strJSON = $strJSON . ',';
}
$strJSON = $strJSON . '{';
$strJSON = $strJSON . '"idbperguntas":'.filtro(iif(($row['idbperguntas']!=''),$row['idbperguntas'],'[vazio]')).',';
$strJSON = $strJSON . '"pergunta":"'.filtro(iif($row['pergunta']!='',$row['pergunta'],'[vazio]')).'"';
$strJSON = $strJSON . '}';
$cont ++;
}
$strJSON = $strJSON . ']}';
if ($cont>0)
{
echo($strJSON);
}
}
?>
Na chamada REQUEST_METHOD, captura qual o verbo do html associado a aquela requisição.
$typereq = $_SERVER[‘REQUEST_METHOD’];
Desta forma podemos criar ações especificas para determinados verbos.
if (($typereq === ‘GET’)||($typereq === ‘POST’)){
Na versão 2.15, realizamos uma série de ajustes no MQuery.pas, onde refinamos o código das tabelas, e incluímos o nome do database, abaixo das demais informações.
Houve poucas mudanças visuais no código, porem muitas mudanças internas.
Implementação do código de registro.
Foram criados as versões para Plataformas windows, linux e ARM Linux nesta release.
SCons é um projeto open source, criado para auxiliar na compilação e montagem de projetos.
Uma definição simples sobre SCons é que é um utilitário de montagem de software (Compilação), criado em python, pode ser utilizado para montar aplicações C/C++ de forma rápida e dinâmica.
Python 3.7.1 ou superior
Para instalar o SCons basta rodar o script abaixo:
python -m pip install scons
A instalação tem resultado final como apresentado.
A documentação oficial do SCons pode ser vista em:
https://www.scons.org/doc/production/HTML/scons-user.html#idm46358283013728
Primeiro crie seu programa hello.c, conforme fonte abaixo:
int main()
{
printf("Olá, mundo!\n");
}
Em seguida crie o arquivo SConstruct, conforme o fonte abaixo:
Program('hello.c')
Agora executa o construtor, conforme o comando abaixo:
scons
A execução fica conforme execução abaixo:
Para compilar um fonte com multiplos fontes pode-se realizar o procedimento abaixo no SConstruct:
Program('programa', ['prog.c', 'arquivo1.c', 'arquivo2.c'])
ou adicionar os objetos, depois uni-los.
Object('hello.c')
Para construção de uma biblioteca, segue-se o script no SConstruct:
Library('foo', ['f1.c', 'f2.c', 'f3.c'])
Para biblioteca estática, substitua o nome Library por StaticLibrary e para dinâmica use SharedLibrary.
Nossa primeira betha, onde os comandos básicos foram desenvolvidos.
Liberada versão Windows no git