quinta-feira, 2 de setembro de 2021

terça-feira, 31 de agosto de 2021

Erro Composer: “Allowed memory size”




Para resolver o problema gerado ao tentar executar o comando composer update. 

Primeiramente achar o caminho do arquivo composer.phar.

Então digira no prompt de comando no caso do windows "dir composer.phar /s".

Encontrado o caminho do mesmo basta executar o comando abaixo dentro do diretorio onde se encontra o arquivo de configuração JSON do projeto em questão.

 php -dmemory_limit=-1 c:\ProgramData\ComposerSetup\bin\composer.phar update

Também pode tentar mudar a cláusula das configurações do PHP.INI, mudar para"memory_limit=-1", onde se encontra, memory_limit=128M.

Outra opção ainda seria definir a variável de memoria. 

"COMPOSER_MEMORY_LIMIT=-1 composer <comando a ser executado>"

Pronto.. problema resolvido

Permissões de Usuários do Sistema Onix.

quarta-feira, 28 de julho de 2021

Problemas com Protocolo TLS 1.2 e incompatibilidadesdes na NF-e 4.00



O Protocolo TLS 1.2 passa a ser obrigatório para emissão de NF-e e NFC-e a partir da NF-e 4.00. Conforme descrito na NT 2016.002, o Protocolo SSL foi substituído pelo TLS 1.2 por questões de segurança.

Os Webservices dos documentos fiscais NF-e, NFC-e, CT-e, CT-e OS e MDF-e não aceitarão mais documentos fiscais emitidos através do Protocolo de Comunicação SSL.

Como ativar o Protocolo TLS 1.2 no Windows:

- Vá até o Painel de Controle do Windows.

- Escolha a Opção "Opções da Internet"; 

- Vá até a aba “Avançadas”,

- No bloco “Configurações”, vá até as últimas opções;

- Marque: Não salvar páginas criptografadas em disco;

- Marque: Usar SSL 3.0; 

- Desmarque: Usar SSL 2.0; 

- Marque: Usar TLS 1.0; 

- Desmarque: Usar TLS 1.1;

- Marque: Usar TLS 1.2;

- Clique em OK.

 

Além dessas configurações de TLS/SSL, algumas versões Windows não dão suporte ao protocolo TLS 1.2.

 

Veja a lista de Windows que NÃO FUNCIONAM:

- Windows Server 2003

- Windows Server 2008

- Windows Server 2008 - SP2 

- Windows Server 2008 - R2 SP1

- Windows 7 - Sem SP1 

- Windows 8

- Windows Vista

- Windows XP

Para esses casos, a solução é instalar uma outra versão do sistema operacional.

Você ainda pode ter problemas com outras versões do Windows, pois nem todos vem nativamente habilitados para o uso desse protocolo, portanto, será necessário executar o Windows Update para que as atualizações necessárias sejam instalados, e o protocolo seja habilitado.

Obs.: Após instalar algumas das atualizações será necessário reiniciar o Windows, lembre-se de sempre que iniciar novamente, abrir o Windows Update novamente e conferir se não apareceram novas atualizações, se houverem, inicie novamente o processo de instalação.

Para sistemas construídos em linguagem Java, o TLS 1.2 é suportado apenas pela versão 1.7 ou superior do Java, portanto, caso utilize uma versão anterior a 1.7, o Java deve ser atualizado também.

Lembramos ainda que no ambiente de homologação é exigido que o sistema emissor envie a cadeia completa do certificado, conforme descrito nesta nota: http://www.nfe.go.gov.br/post/ver/182650/obrigatoriedade-de-apresentacao-de-cadeia-de-certificacao-completa

 

Fonte: https://www.economia.go.gov.br/receita-estadual/documentos-fiscais/comunicados-t%C3%A9cnicos-documentos-fiscais/4901-problemas-com-protocolo-tls-1-2-e-incompatibilidadesdes-na-nf-e-4-00.html

terça-feira, 27 de julho de 2021

Emitindo um certificado, configurando um servidor SSL Apache 2.4 Windows


1. Primeiramente devemos fazer a instalação do software para emissão do Certificado.

Para isto iremos usar o Openssl. No link abaixo poderá ser encontrado o download da versão do windows, ou seja 32 ou 64. 

http://slproweb.com/products/Win32OpenSSL.html

1.1. Faça a instalação da maneira recomendada, bastando clicar em NEXT até o final da instalação.


2. Gerando o Certificado SSL.

entre com o comando do windows CMD para abrir o prompt de comando no modo administrador.

openssl req -x509 -nodes -days 10000 -newkey rsa:2048 -keyout server.key -out server.crt

Então será pedido informações para o certificado, caso não deseje informar basta deixar todos os campos em branco.

Então será gerado na pasta do apache/conf os arquivos server.key e server.crt.

3. Instalando o Certificado

Então será necessário instalar o certificado gerador "server.crt",

no repositório do Windows.

Então basta clicar em cima do arquivo e instalar ele como arquivos

de certificado confiáveis.

4. Configurando o Apache

4.1 Entre na pasta apache/config e procure pelo arquivo "http.conf",

neste arquivo será necessário, habilitar o módulo ssl e o cache.

LoadModule socache_shmcb_module modules/mod_socache_shmcb.so (aproximadamente linha 174) LoadModule ssl_module modules/mod_ssl.so (aproximadamente linha 176)

4.2 Também no mesmo arquivo tirar o comentário na 527, para ter acesso ao arquivo httpd-ssl.conf.

Include conf/extra/httpd-ssl.conf (aproximadamente linha 527)

4.3 Vá até o arquivo httpd-ssl.conf que se encontra na pasta apache/conf/extra e altere o caminho do certificado gerado conforme abaixo.

SSLCertificateFile "c:/apache/ssl/server.crt" (aproximadamente linha 144) SSLCertificateKeyFile "c:/Apache/ssl/server.key" (aproximadamente linha 154)

Lembrando que os arquivos server.crt e server.key, devem estar na pasta indicada apache/ssl.

5. Criando o virtual host para a porta ssl.

5.1 vá até o arquivo httpd-vhosts.conf que se encontra na mesma pasta do httpd-ssl.conf, e inclua mais um virtual host para a porta desejada ssl.

Como exemplo:

<VirtualHost *:443>
ServerName seudominio.com.br
ServerAlias www.seudominio.com.br
DocumentRoot "C:/xampp/htdocs/seudominio"
<Directory "C:/xampp/htdocs/seudominio">
Options +Indexes +Includes +FollowSymLinks +MultiViews
Require all granted
</Directory>
SSLEngine on
SSLCertificateFile "c:/apache/ssl/server.crt"
SSLCertificateKeyFile "c:/apache/ssl/server.key"
SSLCertificateChainFile "c:/apache/ssl/server.crt"
</VirtualHost>

Indicando também o caminho do certificado.

Basta agora reinciar o servidor apache e fazer o teste. :D

sexta-feira, 7 de dezembro de 2018


Exemplo de como ler um arquivo modelo alterar informações dele e salvar em um novo arquivo.


private function mergeModeloToDocumento(string $nomeDoTemplate){
$novo_arquivo = 'data/contrato.phtml';
if (!file_exists($nomeDoTemplate)) {
            throw new \Exception('Template não encontrado!');
        }

        $novo_buffer = '';
        $le_arquivo = fopen($nomeDoTemplate, "r");
        if ($le_arquivo){
            try{
                while (!feof($le_arquivo)) {
                    $buffer = fgets($le_arquivo, filesize($nomeDoTemplate));
                    $novo_buffer .= str_replace('<@numeroContrato>',  '00002', $buffer);
                         
                }
            } finally {
                fclose($le_arquivo);
            }
        }
        try{
            $escreve_arquivo = fopen($novo_arquivo, "w");
            if($escreve_arquivo) {
                fwrite($escreve_arquivo, $novo_buffer);
            }
        } finally {
            fclose($escreve_arquivo);
        }
        return $novo_arquivo;
    }

Exemplo:

$nomeDoNovoArquivo = $this->mergeModeloToDocumento('data/modelo.phtml');

echo 'Arquivo salvo em '.$nomeDoNovoArquivo.'.';

Conteúdo do Arquivo Modelo:

Contrato Nr. <@numeroContrato>

Conteúdo do Arquivo Final:

Contrato Nr. 00002

Abaixo exemplos de como extrair o Dia, Mês e Ano, de uma data.

class UtilData {        
        public static function getDia(\DateTime $data){
            return $data->format('d');
        }

        public static function getMes(\DateTime $data){
            return $data->format('m');
        }

        public static function getAno(\DateTime $data){
            return $data->format('Y');

        }
}

$dtz = new DateTimeZone('America/Sao_Paulo'); //Your timezone
$dataDeHoje = new DateTime(date('Y-m-d'), $dtz);

echo UtilData::getDia($dataDeHoje); // Dia
echo UtilData::getDia($dataDeHoje); // Mês
echo UtilData::getDia($dataDeHoje); // Ano

ou Simplesmente

echo date('d'); // Dia
echo date('m'); // Mes
echo date('Y'); // Ano

mais informações

terça-feira, 22 de julho de 2014

Como usar mascara em layouts com Bootstrap.




Ambiente:
Facelets
JSF Mojarra 2.0.6
PrimeFaces 3.5.4
Bootstrap v2.3.2

Para inclusão de mascaras de campos faça da seguinte forma:

Primeiramente devemos fazer o download da biblioteca maskedinput.js.
Depois do download salve na pasta dentro do projeto onde desejar.
Para o exemplo abaixo foi saldo em "Webcontext\js".
Incluir a linha abaixo em seu html.
<script src="${request.contextPath}/js/jquery.maskedinput.js"></script>

Em cada página deve ser usada a linha:
<script type="text/javascript">
jQuery(function($){
$("#ddd1").mask("99");
$("#telefone1").mask("9999-9999");
$("#cep").mask("99999-999");
$("#cpfAssina").mask("999.999.999-99");
});
</script>
Sendo que #cpfAssina esta referenciando um input por ID = "cpfAssina".
<p:inputText id="cpfAssina" value="#{cadastroEscolaCtrl.escola.cpfAssina}" label="CPF" required="true" pt:placeholder="CPF" styleClass="input-block-level"/>

Ainda vale a pena lembrar que para que seja possível nomear os componentes JSF sem que percam os IDS, é necessário acrescentar no form o atributo prependId="false".
Exemplo:
<h:form styleClass="form-login form-wrapper" prependId="false">

Simples assim.

Abraços...

Acentuação com JSF + Facelets


Bem comecemos;

Ambiente:
Facelets
JSF Mojarra 2.0.6
PrimeFaces 3.5.4





Sendo assim teremos um template:
Neste template é importante conter as linhas:

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >

Também incluir a linha abaixo no meta do template:
<meta charset="utf-8"></meta>

Já as páginas que compõem o layout devem conter a linha:

<ui:fragment xmlns="http://www.w3.org/1999/xhtml"> 
já para a composição:

<ui:composition template="/faces/templates/template.xhtml"  xmlns="http://www.w3.org/1999/xhtml">

Observação:
Caso o interesse seja por iso-8859-1, basta mudar de UTF-8 para ISO-8859-1.

Simples assim:

Abraços...

quinta-feira, 9 de janeiro de 2014

Client WebService em Java - JAX WS

Iremos implementar com detalhes um projeto client de WebService usando como base nas ferramentas baixo.
- JDK 1.7
- Tomcat 7.0
- Eclipse Kepler

Iremos seguir direto para implementação do cliente, acreditando que seu ambiente de desenvolvimento já esta previamente configurado conforme acima citado.

Também iremos considerar que foi previamente criado um WebService com o Serviço EXEMPLOSERVICE.WSL.

Primeiro passo:

Crie um projeto web dinâmico como imagem abaixo:










Dê um nome sugestivo para seu projeto.
Sempre clicando no next.













Sendo assim terá um projeto criado.

Segundo passo:

Agora iremos criar nossa estrutura webService Client para acesso ao serviço ExemploService.













Nesta tela temos que escolher o serviço. Clicar em BROWSE.














Também em BROWSE.

















Achamos o arquivo WSDL, ou seja o arquivo de serviços.

















Finalizando a criação, teremos um toda a estrutura criada do WebService Client.

















Para o teste do serviço iremos implementar um servlet que fará uso do recurso de WebService Client.
Porém este não seria o recomendável, apenas será criado para fins didáticos e aproveitando o projeto web dinâmico já criado.














Exemplo da classe servlet criada para receber os parâmetros da tela.
 Continuação da classe.
 Criação do JSP.


















Exemplo do Código de JSP.
Pronto.
Basta iniciar os projetos, o Servidor de WebService e o Client de WebService.
Abra a página jsp do exemplo e basta fazer o teste.
Ainda lembramos que como o Servidor de WebService foi criado no ambiente local, a classe que implementa a chamada do serviço ficou como "http://localhost...".
Para que possa fazer uso dela em produção deve ser feita algumas alterações nestas classes, como por exemplo a URL de produção.

Abraços e fico por aqui...









WebService em Java - JAX WS

Iremos implementar com detalhes um serviço de WebService usando como base nas ferramentas baixo.
- JDK 1.7
- Tomcat 7.0
- Eclipse Kepler

Iremos seguir direto para implementação do serviço, acreditando que seu ambiente de desenvolvimento já esta previamente configurado conforme acima citado.

Primeiro passo:

Crie um projeto web dinâmico como imagem abaixo:










Dê um nome sugestivo para seu projeto.


Sempre clicando no next.













Sendo assim terá um projeto criado como abaixo.













Segundo passo:

Crie sua classe de Serviços.
Lembro que esta classe é apenas uma classe java, nada de especial nela.






























Primeira seta é o parâmetro é seu pacote, aconselho criá-lo também.
Segundo seta é o nome da sua classe.

















Então desenvolvi 3 métodos dentro de minha classe de serviços.
Servico1, Servico2 e ServicoLista.








 Terceiro passo:

Iremos agora transformar a classe de serviço criada em um WebService.
Para que não tenhamos nenhuma surpresa aconselho antes de clicar em New, selecionar a classe que irá se transformar em um WebService.





























A seta indica qual a classe que irá ser transformada em um WebService.
Se você clicou em cima da classe antes de clicar em new, irá mostrar como abaixo.
Caso não apareça já aconselho fechar a tela e voltar ao terceiro passo novamente.

















Seta abaixo indica os serviços que serão disponibilizados, caso não seja necessário todos, basta tirar a seleção de algum.

















A tela abaixo citada irá aparecer apenas se o servidor estiver parado, caso o servidor esteja rodando esta tela não irá aparecer.
Aparecendo a tela abaixo deve ser selecionada a opção SERVER.























Pronto estamos com nosso servidor de WebService criado e com os serviços disponíveis.


Abraços...

terça-feira, 13 de março de 2012


Migrando um projeto do delphi 7 para o Delphi 2010 tive alguns problemas, com relação a componentes. Estes foram todos sanados. Por último após compilar o projeto sem problemas, ao tentar programar no mesmo não abria o "code completition". Então a tecla de atalho Ctrl + espaço não respondia.
Após várias pesquisas encontrei no blog do Diego Garcia a saída:

Project Options -> Delphi Compiler -> Unit aliases contém as seguintes definições: "WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE"
Caso não tenha, em alguns lugares do código do seu programa pode ser que o code completition do delphi não funcione !
Abaixo link original:
http://unitonedev.blogspot.com/2009/10/dica-para-migrar-para-o-delphi-2010.html