quinta-feira, 10 de setembro de 2020

Código WebRTC para Captura de Imagem via WebCam

 Segue um código simples para capturar imagem através de WebRTC. O WebRTC (Real Time Comunications) é um protocolo que pode ser utilizado em vários navegadores com exceção do Safari. Também é Web Responsivo para ser utilizado para capturar a imagem da câmera dos celulares e também de notebooks (desktop) além da RaspberiPI. O código roda em HTML5 com Javascript e possui restrições para IOs. A documentação possui uma parte do código mas o código não está completo. Segue o código corrigido e também as referencias da documentação:


Crie um arquivo html com o conteudo abaixo:


<div id="screenshot" style="text-align:center;">

  <video class="videostream" autoplay></video>

  <img id="screenshot-img">

  <p><button class="capture-button">Capture video</button>

  <p><button id="screenshot-button" disabled>Take screenshot</button></p>

</div>



<script>

const constraints = {

  video: true

};

const captureVideoButton =

  document.querySelector('#screenshot .capture-button');

const screenshotButton = document.querySelector('#screenshot-button');

const img = document.querySelector('#screenshot img');

const video = document.querySelector('#screenshot video');


const canvas = document.createElement('canvas');


captureVideoButton.onclick = function() {

  navigator.mediaDevices.getUserMedia(constraints).

    then(handleSuccess).catch(handleError);

};


screenshotButton.onclick = video.onclick = function() {

  canvas.width = video.videoWidth;

  canvas.height = video.videoHeight;

  canvas.getContext('2d').drawImage(video, 0, 0);

  // Other browsers will fall back to image/png

  img.src = canvas.toDataURL('image/jpeg');

 

};


function handleSuccess(stream) {

  screenshotButton.disabled = false;

  video.srcObject = stream;

}

</script>


Referencias:

Documentação da Google https://developers.google.com/web/fundamentals/media/capturing-images?hl=pt-br 

HTML5 Rocks https://www.html5rocks.com/en/tutorials/getusermedia/intro/

Compatibilidade http://iswebrtcreadyyet.com/



quarta-feira, 19 de fevereiro de 2020

Criando um Projeto Angular com PrimeNG

O PrimeNG é uma versão do antigo Primefaces para o Angular. A documentação pode ser acessada em:

https://primefaces.org/primeng/#/

Quando estamos criando um novo projeto executamos alguns passos sequencialmente. A etapa de inicio de um novo projeto muitas vezes consiste em executar tais passos exaustivamente para criar diversos projetos a fim de executar testes isolados. Para facilitar essa tarefa resolvi fazer esse post, para ter os passos sequenciais de criação de projeto descritos, para acessar de forma fácil e não ter que ficar procurando os comando toda vez que se cria um novo projeto, então segue a sequencia abaixo.

Os passos foram executados em uma máquina Windows.

Inicialmente verifique se o Nodejs já está instalado.

Verificar se o node está instalado
> node -v

Instalar a última versão de angular CLI usado para instalação automática de pacotes via linha de comando

Instala o CLI Angular
> npm install -g @angular/cli@latest

Cria um novo projeto Angular
> ng new nomeProjeto

Acessa a pasta do projeto
> cd nomeProjeto

Para levantar o servidor dentro da pasta do projeto
> ng serve

ctrl+c para encerrar o servidor

Instalar o Primeng
> npm install primeng --save

Intalar Prime Icons
> npm install primeicons --save

No arquivo angular.json do projeto criado insere em style o bloco primeng conforme a documentação Get Started.

"styles": [
"src/styles.css",
"node_modules/primeicons/primeicons.css",
"node_modules/primeng/resources/themes/nova-light/theme.css",
"node_modules/primeng/resources/primeng.min.css"
],


Feito isso, temos um projeto Angular com PrimeNG preparado para testes.

Documentação PrimeNG Get Started:


quinta-feira, 23 de janeiro de 2020

Gerando Script para Habilitar e Desabilitar Constraints de Tabela

Para melhor manusear tabelas de uma base de dados, de forma mais veloz, sem ter que ficar percorrendo as outras tabelas que são referenciadas na primeira, é possivel desabilitar as constraints. Atenção para não gerar dados corrompidos conforme a operação que for realizada depois disso.

Rode o script abaixo preenchendo o nome da tabela e o owner e na saída serão gerados os scripts a serem executados.




  1. SELECT 'alter table '||cons.owner||'.'||cons.table_name||' disable constraint '||cons.constraint_name||'; ' -- para habilitar so trocar o desable para enable
  2.  
  3. FROM dba_constraints      col,
  4.  
  5.    dba_constraints       cons
  6.  
  7. WHERE cons.r_owner = col.owner
  8.  
  9. AND cons.r_constraint_name = col.constraint_name
  10.  
  11. AND cons.constraint_type = 'R'
  12.  
  13. AND col.table_name IN( 'TB_CARROS') -- colocar tabelas que vai truncar aqui
  14.  
  15. AND col.owner = 'NOME_DO_ACESSO'
  16.  
  17. ORDER BY cons.table_name;



A partir deste script é possível criar um script único para habilitar ou desabilitar todas as constraints da base de dados.

Esse tipo de procedimento é interessante para iniciar uma limpeza geral na base de dados antes da subida em produção quando nem todas as tabelas devem ser limpas.