Jump to content

Gilmar Piccin

Pessoal da TecnoSpeed
  • Contagem de Conteúdo

    4
  • Ingressou

  • Última visita

Postagens postado por Gilmar Piccin

  1. Olá, pessoal!

    Quero compartilhar com vocês uma novidade: o Gerenciador de Suíte de Componentes da Tecnospeed!
    Esse produto foi criado para tornar a instalação e atualização de componentes uma tarefa simples e eficiente. Vamos mostrar como você pode usá-lo para melhorar a gestão dos seus produtos. 😊

    O que é o Gerenciador de Suíte de Componentes?

    O Gerenciador de Suíte de Componentes é uma ferramenta dedicada a simplificar o processo de instalação e atualização de componentes. Com ele, você pode:

    • Receber notificações sobre novas versões disponíveis.
    • Realizar downloads automáticos das versões dos produtos.
    • Facilitar downgrades para versões anteriores, se necessário.
    • Integrá-lo à sua aplicação para atualizações automáticas.🤩

    Quem Pode Usar o Gerenciador de Suíte de Componentes?

    Este recurso está disponível para clientes que possuem o módulo "Suíte Componentes TecnoSpeed".
    contrate
    Agora, vamos mergulhar no guia passo a passo para aproveitar ao máximo esse recurso:

    Faça o download do executável do Gerenciador de Suíte de Componentes na Central do Cliente.

    image.png

    Instalação - Agente Suíte de Componente

    1. Inicie o instalador e siga as etapas:
      • Escolha o local de instalação.
      • Escolha entre "Aplicação modo desenvolvedor" ou "Aplicação modo cliente".
        • Aplicação modo desenvolvedor: nesse modo o Agente será voltado ao desenvolvedor cliente da Tecnospeed, onde de modo visual permitirá que os componentes sejam instalados, atualizados, etc, receberá alertas de atualizações disponíveis, dentre outras funcionalidades. 

        • Aplicação modo cliente: nesse modo o Agente será voltado para o cliente final do produto desenvolvido. Esse modo funciona inteiramente de forma programática, sem interface visual, e permite realizar o download e instalação das dependências dos componentes da Tecnospeed.

      • Ative a inicialização com o Windows, se desejar.
      • Informe o CNPJ da empresa desenvolvedora e o Token de licença.
      • Clique em "Instalar" para concluir a instalação.
    2. Aguarde a finalização e o Agente do Gerenciador de Suíte Componentes será inicializado de acordo com o modo escolhido.
    3. Existe a possibilidade de instalar por linha de comando

    Modo Desenvolvedor:

    • Neste modo, você terá uma interface gráfica para interagir com o Gerenciador:
      • Na tela inicial, você verá uma lista de componentes oferecidos pela Tecnospeed.
      • Os componentes habilitados no seu contrato estarão na seção "Habilitado" e podem ser instalados ou atualizados.
      • Selecione um componente não instalado e clique em "Instalar".
      • Se o componente já estiver atualizado, a Suíte Componentes informará. Caso haja uma nova versão, você pode atualizá-lo.

    image.png

     

    • se você já possui algum de nosso componentes instalados já é possível gerencia-los

    image.png

    Nessa tela é possível realizar as seguintes ações:

    • Atualizar: o componente será baixado e instalado na sua máquina. O processo é interativo e portanto é possível cancelar a atualização caso deseje.
    • Pular Versão: escolha essa opção caso escolha manter o componente na versão atual, mas não receber mais notificações de atualização. Caso seja publicada uma próxima versão a Suíte Componentes irá voltar a notificar a atualização.
    • Outras Versões: caso deseje instalar uma versão intermediária (ou mesmo anterior) do componente, essa opção irá exibir uma lista onde pode-se escolher a versão desejada para download e instalação.

    image.png

     

     

    Modo Cliente Final:

    • Este modo, não há interface gráfica. Tudo é programático e você pode interagir com o Gerenciador através de chamadas à rotina "AtualizarVersao".
    • É uma ótima solução para integrar em seu software que utiliza os componentes tecnospeed, de modo que você terá total controle para instalar/atualizar/voltar versões de componentes sem a necessidade de intervir no ambiente de seu cliente final

    Exemplo de uso (Delphi):

    try
      if spdNFCe.AtualizarVersao(spdNFCe.Versao, [auNFCeReiniciarAplicacao, auNFCeNaoAtualizarRTMs]) then
        Encerrar;  // Encerrar aplicação
    except
      on e: Exception do
        Log('Ocorreu um erro durante a verificação das atualizações de dependências: ' e.Message);  // Apenas logar o erro e continuar
    end;

     

    Método "AtualizarVersao" Por Produto:

    métodos de atualização automática disponíveis para produto específico:

    Agora, você tem um guia para usar o Gerenciador de Suíte de Componentes da Tecnospeed. Não hesite em fazer perguntas ou compartilhar suas experiências para ajudar a comunidade! 😄

    • Curtir 2

  2. O objetivo deste artigo é apresentar a estrutura de um regex e aprofundar em cada aspecto e que possa lhe servir como um guia podendo sempre consultar para compreender um regex ou cria-lo do zero.

    Servindo como um complemento ao artigo:

     

    Para facilitar e organizar nosso pensamento é importante que definamos alguns passos:

    1º Precisamos definir um alvo (Target) é o nossa fonte de dados bruta;

    2º Definir qual a nossa necessidade (ex: extrair uma data);

    3º Aplicarmos o padrão (pattern) baseado na nossa necessidade;

     

    Exemplo: 

    Target = 1233P86949A9822R1A165B568E22N35S

    Necessidade =  descriptografar esse conteúdo desconsiderando os dígitos

    Pattern = [^\d]

    Resultado = 8 matchs P | A | R | A | B | E | N | S

     

    Para testar essa solução podemos utilizar https://www.regextester.com/ 

    Agora vamos nos aprofundar em cada aspecto das expressões regulares para entender como chegar nesse resultado

     

    Quantifier

    Usamos quantifier para dizer quantas vezes determina expressão deve aparecer em sequência

    ?    - zero ou uma vez.
    *    - zero ou mais vezes.
    +    - uma ou mais vezes.
    {n}  - exatamente n vezes.
    {n,} - no mínimo n vezes.
    {n,m}- no mínimo n vezes, no máximo m vezes.
    .    - o "ponto" significa qualquer char
    { e }- as chaves servem para definir uma quantidade de caracteres específicas que é desejado encontrar. Por exemplo: a{3} - letra a 3 vezes.
    \d*  - um dígito zero ou mais vezes. Se quisermos procurar pelo . ou * literalmente (sem significado especial), devemos utilizar o caractere \ 
    \    - podemos escapar meta-chars, por exemplo \..
    |    - Pipe é usado como operador lógico OR

     

     Classe de caractere

    Definimos classes de caracteres dentro de [ ] existem várias classes prontas que nos auxiliam

    [A-Z]    - significa de A até Z, sempre maiúscula.
    [a-z]    - significa de a até z, sempre minúscula.
    [A-Za-z] - significa A-Z ou a-z.
    [abc]    - significa a, b ou c.
    [123]    - significa 1,2 ou 3
    \d       - (minúsculo) significa todos os dígitos e é atalho para [0-9]
    \w       - (minúsculo) significa word char e é um atalho para [A-Za-z0-9_].
    \s       - significa whitespace normalmente é um atalho para [ \t\r\n\f] onde: O primeiro caractere é um espaço branco.
    \t       - é um tab.
    \r       - é carriage return.
    \n       - é newline.
    \f       - é form feed.

    Obs: as classes \w ou [A-Za-z] não retornam caracteres com acento, para tal é necessário adicionar os caracteres desejados exemplo:

    Target = 123JoãoCaçula4567

    Pattern = [A-Za-zãç]

    isso serve para qualquer caractere com acento

    Uma maneira mais simples para resolver esse problema é usar a classe [À-ü]

    Pattern = [A-Za-zÀ-ü]

     

    Combinando classes com quantifier

    Podemos combinar classes com quantifier para especificar cada vez mais nossa regex

    [.-]*   - ponto ou hífen zero, uma ou mais vezes.
    [.-]{1} - ponto ou hífen uma vez.
    [.-]?   - ponto ou hífen zero ou uma vez.

     

    Âncoras

    Quando precisamos que encontrar determinada informação delimitando uma parte da informação podemos usar as âncoras:

    \b   - (minúsculo) é uma âncora que seleciona um word boundary, isso é o início ou fim da palavra. 
    ^    - Garantir que nada vem antes.
    $    - Garantir que nada vem depois.
    \B   - (B maiúsculo) non-word-boundary comportamento inverso a sílaba alvo deve aparecer dentro de uma palavra, nunca no início ou fim.

    Exemplos de uso do \B :

    Target = 123aaa456

    Pattern = \Baaa\B

    ou usando quantifier

    \Ba{3}\B

     

    Grupos

    Quando queremos retornar alguma parte dentro da nossa expressão podemos colocar dentro de grupos para isso usamos ( )

    () - Declarar um grupo
    ?: - Non-Capturing group, não retornar deste grupo

    Exemplo remover a palavra teste de uma frase 

    Target = este é um teste de grupo

    Pattern = (?:teste\s+)

     

    Backreferences

    Quando queremos que um comportamento seja replicado dentro de um grupo podemos usar a sua referência invés de duplicar o mesmo padrão, para isso usa-se um \ seguido pelo número do grupo, começando com 1

    Exemplo:

    Suponhamos que temos que extrair o conteúdo de dentro de uma tag de um arquivo xml

    <tag1 id="teste">teste</tag1>
    
    <tag2 id="teste">teste2</tag2>
    
    <tag1 id="teste">teste3</tag2> - não deve capturar

    Podemos solucionar da seguinte forma:

    Pattern = <(tag1|tag2).+?>([\w]+)</(tag1|tag2)>

    ou então podemos usar a referencia desse grupo:

    Pattern = <(tag1|tag2).+?>([\w]+)<\/\1>

     

    Negação

    As vezes é mais vantajoso selecionarmos a informação que não queremos e para isso podemos utilizar

    \W  - (maiúsculo) é a non-word char , ou seja tudo que não é um word char. \W é um atalho para [^\w].
    \D  - (maiúsculo) é um non-digit, sendo \D um atalho para [^\d]

    Repare também que não usamos a meta-char ^ como âncora pois aparece dentro de uma classe [^\d] seu significado nesta situação é de negação


    Exemplos comuns

    Validar CPF 

    Pattern= (\d{3})[.]?(\d{3})[.]?(\d{3})[-]?(\d{2})

    Validar CNPJ

    Pattern = (\d{2})[.]?(\d{3})[.]?(\d{3})[/]?(\d{4})[-]?(\d{2})

    Validar CPF e CNPJ ao mesmo tempo

    Pattern = ((\d{2})[.]?(\d{3})[.]?(\d{3})[/]?(\d{4})[-]?(\d{2}))|((\d{3})[.]?(\d{3})[.]?(\d{3})[-]?(\d{2}))

    Validar Inscrição Estadual

    Pattern = (?=\d)(?![\d/\-.]*[/\-.]{2})[\d/\-.]{1,16}\d

    Validar CEP

    Pattern= (\d{2}[.]?\d{3})[-]?(\d{3})
    • Curtir 1
    • Amei 2
  3. Em 14/01/2022 at 10:43, Furjala disse:

    Olá,

    Estou precisando criar uma expressão onde não permita 0 a esquerda e que limite de 1 a 4 ou 9 números.

    Eu consegui criar ambas, porém separadas e não sei como seria para unificar as 2 regras.

    ^([0-9]{1}|[1-9]{2}||[1-9]{3}||[1-9]{4}|[1-9]{9})$ Aqui estou limitando os caracteres porém não consegui remover o 0.

    ^(0|[1-9][0-9]*)$ Aqui estou limitando o 0 a esquerda mas não consegui inserir limite de caracteres.

    Alguém poderia me auxiliar?

    Ola Furjala, tudo certo?
    Se entendi corretamente, você precisa que retorne um match sempre que atender as condições citadas

    se esse for o caso, você pode usar a seguinte expressão:

    ^[1-9]{1}(\d{3}|\d{8})$

    Vamos entender por partes:

    • Não permitir zero a esquerda:
      • [1-9]{1} - criar uma classe de dígitos de 1 a 9 e usar o quantifier para pegar exatamente 1 caractere 
    • Limitar no máximo 4 ou 9 dígitos
      • \d{3} - usar \d é um atalho para [0-9] e usamos o quantifier {3} para selecionar exatamente 3 caracteres pois o 1º digito nós já resolvemos
      • \d{8} - apenas dígitos e selecionar exatamente 8 caracteres (trazer apenas os restantes)
      • | - Significa condicional para o OR
      • () - Agrupamento para nossa condição
      • ^ - Ancora para garantir que nada vem antes
      • $ - Ancora para garantir que nada vem depois

    Espero ter ajudado

     

×
×
  • Create New...