Pular para o conteúdo principal

Postagens

NGinx - passos pra configurar

Olá pessoal, compartilhando mais um post do nosso amigo Fernando Lucio, da Impacta Sistemas Pra usar o nginx no Windows, pode acessar o site https://nginx.org/ e baixar, o link que está disponível hoje é https://nginx.org/download/nginx-1.27.4.zip Baixe ele, descompacte e gere no C:\ a pasta nginx Teremos algo tipo C:\Nginx\Nginx.exe Se quiser rodar o nginx como serviço, use no cmd C:\NSSM\Win64\nssm.exe install _NGINX_, vai abrir a tela do nssm, informe o patch de nginx.exe e clique em ok, abra o services.msc, ache o serviço e pode colocar pra rodar. O Nginx é um xarope de configurar, através do arquivo C:\nginx\conf\nginx.conf Pense no .conf como algo similar a um arquivo ini ou json que não precisa de , após } Eu vou compartilhar meu arquivo para terem de base, mas vou explicar já umas alterações 1 - alterei o *worker_processes  1;* para *worker_processes  auto;* isso vai fazer com que o nginx possa executar uma instancia por processador, vai atender paralelamente as chama...

D2Bridge - Gerar Certificado Digital

 Olá pessoal, veja uma forma de criar certificado digital pra ser usado no D2Bridge. Agradecimentos ao nosso amigo Fernando Lúcio, da Impacta Sistemas  👏🏾 Pessoal, pra gerar um certificado de forma gratuita para seu subdomínio, use o winacme, baixa no site https://www.win-acme.com/ , na pagina principal já vai aparecer o botão download, ou o link direto é https://github.com/win-acme/win-acme/releases/download/v2.2.9.1701/win-acme.v2.2.9.1701.x64.pluggable.zip Gere no C:\ uma pasta chamada programas, descompacte ele, e renomeie pra winacme, deve ficar algo como C:\Programas\WinAcme Gere também no C:\ uma pasta chamada Certificados, vai ficar C:\Certificados, nessa pasta que vai gerar os certificados automaticamente Aí temos que ter uma atenção, o winacme, na forma mais fácil pra gerar, vai usar a porta 80, então via monitor de recursos, na pasta de rede, confira senão há aplicação usando a porta 80, se tiver um nginx por exemplo bem já configurado, deve estar usando a porta 8...

Delphi Exception Logger

Olá pessoal, achei esta unit na internet, e resolvi fazer uma "cópia" do site onde ela estava hospedada. Link original:  http://www.jirihajek.net/delphi/ExceptLog.htm A free exception logging for Delphi with additional information like source files, procedure names, line numbers, exception messages, etc. (c) Jiri Hajek 2003-2005 E-mail:   jh   at   j i r i h a j e k   dot   net Created for  MediaMonkey , a free mp3 jukebox player and music library organizer Purpose: When you include this unit in your project, all exceptions that happens at run-time are automatically logged together with exception message, information about source of the exception and call stack content together with source files and line numbers information. Environment: This unit was tested under Delphi 7, it would probably work under other Delphi versions as well, but it might need some modifications in some magic constants in the code below. Usage: Include this unit in your project....

Nostalgia - Computadores Antigos

 Ola pessoal, este post é pra quem curte os computadores mais antigos, mais especificamente da decada de 1980/1990/2000. Tantos computadores como video games, revistas, livros, etc. Vale a pena conferir o site  https://datassette.org/ Software antigos, ZX Spectrum, apple, MSX, CP-500, revista Mico Sistemas, revista Info, livros de Assembly, Cobol, BASIC, dBase II, e muito mais. Atari, Mega Drive. Manuais tecnicos antigos, Cartões de Referência. Muita coisa mesmo. Abraço a todos.

SQL - Selecionar os 5 maiores por cidade

Olá galera, vejam um exemplo de como selecionar os 5 maiores vendedores por cidade WITH xdados2 AS (   WITH xdados AS (SELECT cidade,      nome,      SUM(total) AS total     FROM dados     GROUP BY cidade, nome     ORDER BY cidade, nome, volume DESC)   SELECT cidade,      nome,      total,     ROW_NUMBER() OVER (PARTITION BY cidade ORDER BY total DESC) row_num   FROM xdados ) SELECT cidade, nome, ROUND(total, 4), row_num  FROM xdados2 HAVING row_num <= 5

Delphi - Acessando Paradox/DBase sem BDE

Olá amigos, mais um post pra ficar registrada uma dica de como acessar tabelas Paradox ou DBase sem o uso da BDE Como o BDE está parando de funcionar em algum lugares, caso alguém esteja precisando fazer conexão com arquivos Paradox, só usar essa connectionString no ADO Connection. Provider=Microsoft.Jet.OLEDB.4.0; Data Source=C:\PastaComArquivoDb;Extended Properties=Paradox 5.x Talvez isso ajude alguém um dia. E caso precise fazer alguma conexão com arquivo DBase, só trocar a _extended properties para dBASE IV Créditos para o nosso amigo Rômulo Nascimento

ACBR - Corrigir Erro Interno: 12175/12030/12029/12031

Erro Interno: 12175/12030/12029/12031 Atualização do Windows - Habilitar o TSL 1.2 ✔1.0) Instalar o Service Pack 1 (SP1) - Baixar em  https://www.microsoft.com/pt-BR/download/details.aspx?id=5842 ✔1.1) Responsável por atualização dos protocolos de SSL - Instalar KB2992611, https://www.catalog.update.microsoft.com/Search.aspx?q=2992611 ✔1.2) Responsável por HABILITAR o protocolo TLS 1.1 e 1.2. Instalar KB3140245  https://www.catalog.update.microsoft.com/search.aspx?q=kb3140245 ✔1.3) ou Baixar todas as atualizações disponíveis. Configuração do Protocolo no Internet Explorer Marque as opções Opções de Internet (no IE, menu Ferramentas, Opções de Internet) ✔ Não salvar páginas criptografadas em disco;  ✔ Usar SSL 3.0;   ✔ Usar TLS 1.0;   ✔ Usar TLS 1.2;  Desmarque as opções caso tenha ou estejam marcadas: ❌ Usar SSL 2.0;  ❌ Usar TLS 1.1; #Atualizações das Cadeias de Certificado ✔ https://www.gov.br/iti/pt-br/assuntos/navegadores Certificados por ...

ACBr - remover arquivos para nova instalação

Ola pessoal, vamos para mais uma dica. Quando vamos reinstalar o ACBr, às vezes precisamos apagar os arquivos da instalação anterior, e para isso recorremos ao arquivo apagarACBr.bat. Esse comando funciona, porem é muito lento. Aqui vou apresentar uma solução que localiza os arquivos na velocidade da luz. 1. Instale o Everything: www.voidtools.com 2. Abra o arquivo apagarACBr.bat em um editor de textos, e copie a lista de arquivos a serem apagados. Substitua os espaços por uma barra horizontal (|). A lista pronta esta logo abaixo: ACBr*.bpl|ACBr*.dcp|ACBr*.dcu|PCN*.bpl|PCN*.dcp|PCN*.dcu|SYNA*.bpl|SYNA*.dcp|SYNA*.dcu|pnfs*.dcu|pcte*.bpl|pcte*.dcp|pcte*.dcu|pmdfe*.bpl|pmdfe*.dcp|pmdfe*.dcu|pgnre*.dcp|pgnre*.bpl|pces*.bpl|pgnre*.dcu|pces*.dcp|pces*.dcu|pca*.dcp|pca*.dcu 3. Abra o Everything e cole essa lista no campo de pesquisa 4. Agora só selecionar os arquivos e excluir

FastReport - Modelo Relatorio com Cantos Arredondados

Pra quem precisa de um modelo de relatório com cantos arredondados, ai tem um exemplo (basta remover o texto: LABEL: Color: clWhite - Borda Esquerda/Direita ) Link pra download do fr3: https://drive.google.com/file/d/1uyLaMxSVo4ew_lOFPM757JaCXfo3U-Zu/view?usp=sharing

Componente JKGenFastRep - Gerador de Relatórios para FastReport

Olá pessoal, neste post vou apresentar o componente JKGenFastRep, desenvolvido por mim, pra gerar relatórios no FastReport, usando um DBGrid como base. O código usado pra gerar o relatório é este logo abaixo JKGenFastRep1.FastReport := frxReport1; JKGenFastRep1.AddArquivoFR3(ExtractFilePath(ParamStr(0)) +  'Exemplo1.fr3'); JKGenFastRep1.Grid := DBGrid1; JKGenFastRep1.SelecionaColunas; JKGenFastRep1.AddVariaveis('titulo1','GERADOR DE RELATÓRIOS PARA FAST REPORT'); JKGenFastRep1.AddVariaveis('titulo2','Joemil Cássio - Sinop-MT - Nov/2019'); JKGenFastRep1.AddVariaveis('titulo3','RELATÓRIO COM AGRUPADORES E TOTALIZADORES'); // GRUPOS //JKGenFastRep1.AddGrupo('Nome', 'nome'); JKGenFastRep1.AddGrupo('Vencim.:', 'vencimento'); // TOTALIZADORES JKGenFastRep1.Totalizadores := 'valor,valorpago'; // IMAGENS JKGenFastRep1.AddImagens('Picture1', ExtractFilePath(ParamStr(0))+'Abacus.png...

Coleção de Links de Dicas

Olá galera, neste post vou adicionando varios links que vou coletando pela internet, pq ate eu to me perdendo neles kakaka . Object Pascal Programming https://objectpascalprogramming.com/ . Abrir Arquivo com mais de 2Gb http://theclub.com.br/Restrito/Revistas/201505/novo1505.aspx

InputMemo - InputQuery com memo

função para gerar um InputQuery, porém, ao invés de usar um TEdit, é usado um TMemo function InputMemo(ACaption, ATexto: String; var AResult: String): Boolean; var Form: TForm;   Memo: TMemo;   Label1: TLabel;   ButtonOK, ButtonCancel: TButton;   iWidth: Integer; begin   iWidth := 350;   Form := TForm.Create(nil);   Form.Height := 200;   Form.Width := iWidth;   Form.Position := poScreenCenter;   Form.Caption := ACaption;   Label1 := TLabel.Create(Form);   Label1.Parent := Form;   Label1.Top := 5;   Label1.Left := 5;   Label1.Width := Form.Width - 10;   Label1.Caption := ATexto;   Memo := TMemo.Create(Form);   Memo.Parent := Form;   Memo.Top := Label1.Top + Label1.Height + 5;   Memo.Left := 5;   Memo.width := Form.Width - 10;   Memo.Height := Form.Height - Memo.Top - 45;   iWidth := iWidth + 95;   Form.Width := iWidth;   ButtonOK := ...

Curso Fast Report - Aula 07.1 - Pulando etiquetas

Ola pessoal, tudo bem com vocês? Este aula é só pra mostrar uma dica simples na impressão das etiquetas. Problema: o usuário já removeu algumas etiquetas do formulários, e precisamos "pular" esses espaços. Veja um exemplo onde faltam 5 etiquetas: Pra pular essas etiquetas, eu costumo gerar "registros falsos" na tabela temporária, e fazer um if durante a impressão. Veja como ficou o código no Delphi: var   i, j: Integer;   x: String; begin   // ABRE TABELA COM DADOS   qProdutos.Close;   qProdutos.SQL.Text := 'SELECT codigo, descricao, marca, preco_venda, ' +     'estoque, unidade, cod_barras FROM produtos';   qProdutos.Open;   // LIMPA TABELA TEMPORARIA   memDados.Close;   memDados.Open;   // PULAR ETIQUETAS DO INICIO   x := '0';   if InputQuery('Pular Etiquetas', 'Informe a quantidade de etiquetas a pular', x) then   begin     i := StrToIntDef(x, 0);     if i >...

Curso Fast Report - Aula 07 - Impressão de Etiquetas

Olá pessoal, bem vindos a mais uma aula de Fast Report. Desta vez iremos falar sobre impressão de etiquetas.  Primeiro iremos preparar nosso ambiente de dados. Geralmente eu uso uma tabela temporária (em memória ou ClientDataSet - qual você estiver acostumado a usar), pra poder preencher os dados das etiquetas, com uma estrutura simples: Texto1 - String - 100 Texto2 - String - 100 Texto3 - String - 100 Texto4 - String - 100 Texto5 - String - 100 Dessa forma, eu pego os dados de qualquer tabela e vou inserindo nessa tabela temporária. Assim eu consigo, por exemplo, imprimir várias cópias da mesma etiqueta, como por exemplo, quando é necessário etiquetar produtos, e existem várias peças de um mesmo produto. Veja um exemplo de produtos/estoque: Primeiro eu percorro a tabela, e vou inserindo um registro pra cada item. Se o item possui estoque maior que um 1 (por exemplo, estoque = 10), eu insiro 10 registros do mesmo item. Veja o código abaixo: procedure ... var i...

Curso Fast Report - Aula 06 - Script & Variáveis

Olá amigos desenvolvedores, vamos pra mais uma aula. Desta vez iremos ver como colocar códigos dentro do relatório. Dois cliques no frxReport pra criarmos um novo relatório. Coloque um MasterData , e um Summary , configurando assim: Agora vá na aba Código, pra criar algumas variáveis: Volte na página, selecione o Memo2 . No Object Inspector, vá na aba Events, dois cliques no evento BeforePrint , e insira o codigo: Pronto. Já podemos ter um preview do relatório. Perceba que em nosso código temos alguns códigos e funções, por exemplo <Line> (número da linha), e Sin(<Line>) (função pra calcular o seno). As variáveis e Funções padrão do Fast podem ser acessadas pela aba Variáveis e Funções que ficam do lado direito do Designer. Agora falta colocar o total no sumário. Selecione o Memo5 que está no sumário e programe o evento BeforePrint dele assim: Caso você tenha um relatório por grupo, você também pode criar uma variável TotalGru...

Curso Fast Report - Aula 05 - Master/Detail

Olá "meninos da informática", vamos para mais uma aula? Desta vez iremos ver como fazer um Mestre/Detalhe no nosso querido Fast Report. Primeiro adicione duas Querys (configure-os pra Master/Detail) e dois frxDBDataSet ao form e um novo button. Neste caso vou fazer uma mestre/detalhe entre a tabela vendas e os itens das vendas. Podemos fazer também Master/Detail/Detail: Vendas, Itens e Parcelas, ou entao Master/Detail/SubDetail: Vendas, Servicos e peças por serviço, por exemplo. Caso você já tenha um mestre/detalhe no seu projeto, pode usar ele. Agora dois cliques no frxReport pra abrir o designer. Vá ao menu Relatório, opção Dados, e selecione a fonte de dados (master e detail). Neste relatório iremos ter as seguintes bandas: PageHeader, MasterData, Child, Header, DetailData, conforme a figura abaixo. A diferença entre PageHeader e Header, é que o PageHeader aparece no topo de todas as páginas, enquanto o Header é mostrado acima da banda onde foi con...

Curso Fast Report - Aula 04 - CrossTab Report

Olá "escovadores de bits" (essa é antiga hein kakaka), vamos a mais uma aula sobre Fast Report. Dessa vez iremos falar sobre o CrossTab Report. Este é um tipo de relatório, onde podemos gerar colunas "automaticas" com base nos campos de uma tabela. O relatório irá ficar parecido com uma planilha do excel. Vamos ver um exemplo no excel: Agora vamos para o nosso projeto. Adicione o objeto frxCrossObject1 ao form. É ele q nos permite fazer a "mágica" acontecer. Adicione também uma nova Query (Name = sqlVendas) e um novo frxDBDataSet (Name/UserName = frxSqlVendas, ligando a propriedade DataSet ao sqlVendas) Para gerar o relatório, vou usar 2 tabelas: DOCUMENTOS e VENDAS, fazendo um JOIN entre elas, gerando 3 colunas: SELECT v.data, d.descricao, SUM(v.total) AS total FROM vendas v LEFT JOIN documentos d ON d.id_documentos = v.id_documento GROUP BY v.data, d.descricao Agora vamos para o Designer, criar no relatorio. Dentro dele ja inicie u...