Pular para o conteúdo principal

Postagem em destaque

BlackTDN :: LeetCode :: Comparando Implementações Harbour e TLPP para o Desafio Longest Palindromic Substring

_Créditos das imagens: ChatGPT_ ### LeetCode :: Comparando Implementações Harbour e TLPP para o Desafio Longest Palindromic Substring Resolver o problema do [Longest Palindromic Substring](https://leetcode.com/problems/longest-palindromic-substring/description/) é um exercício clássico de programação, que desafia desenvolvedores a encontrar a maior substring palindrômica dentro de uma string. Recentemente, exploramos soluções tanto em Harbour quanto em TLPP (Total Language Protheus Programming). Neste artigo, comparamos as implementações nessas duas linguagens, destacando suas semelhanças, diferenças e funcionalidades específicas. #### Implementações em Harbour ##### Versão 5.1 Essa solução utiliza a técnica de expansão a partir do centro do palíndromo. Cada caractere ou par de caracteres consecutivos é considerado um possível "centro". O algoritmo expande em ambas as direções enquanto os caracteres forem iguais, retornando o maior palíndromo encontrado. ##### Versão 5....

Protheus :: Recuperando o Usuário Administrador no Protheus 10

São muitos os motivos que levam a "perda" da senha do Administrador do Protheus. Esquecimento, saída do Administrador da empresa, dentre outros. Para minimizar o impacto e as consequências dessa perda, uma pequena dica de como recuperar o usuário Administrador e redefinir a sua senha.

1 - Antes de entrar no sistema, renomeie o arquivo sigapss.spf  de forma a fazer com que o sistema não o encontre forçando a sua recriação ( para que isso ocorra, faz-se necessária a existência do arquivo sigaadv.pss no diretório "root", normalmente o system, do Protheus bem como acesso exclusivo ao sistema. Se o arquivo sigaadv.pss não existir o sistema irá gerar um erro.);

2 - Entrar no sistema, módulo configurador, para forçar o sistema a criar um novo arquivo de senhas (sigapss.spf) baseado no sigaadv.pss. Esse arquivo será criado apenas com o Administrador (se o arquivo sigaadv.pss estiver vazio, ou com outros usuários se possuir conteúdo);

3 - Após a abertura do sistema, vá na opção Ambiente\Cadastro\Fórmulas e inclua uma nova fórmula em que o conteúdo do campo fórmula será: SPF_CLOSE("SIGAPSS.SPF") e clique em OK. Ao fazer isso, forçaremos o sistema a "fechar" o arquivo de senhas atualmente aberto possibilitando o passo seguinte;

4 ) Sem sair do sistema, apague o arquivo sigapss.spf criado pelo sistema e restaure o arquivo renomeado no passo 1 ao seu nome de origem;

5 ) Entre na opção senhas e/ou usuários, escolha o usuário Administrador e clique no botão "Alterar/Editar". Defina a nova senha para o usuário administrador e salve as alterações.

Pronto, o usuário Administrador foi recuperado com sucesso.

Um documento, baseado nas instruções acima, está disponível para download aqui.

Obs.:

1 ) O arquivo sigaadv.pss é o formato antigo de armazenamento de senhas dos usuários do Protheus em versões anteriores a 7.10 (se não me falha a memória).

2 ) Se não possuir o sigaadv.pss poderá baixá-lo clicando aqui.

[]s
иαldσ dj

Comentários

  1. Grato pela dica. Salvou meu dia. Funcionou como uma luva... Uso o Protheus versão 10.3 e o procedimento funcionou sem falhas.

    ResponderExcluir
  2. Boa noite Naldo.

    Como essa a unica forma de contato com vc, gostaria de dizer que sou seu fã.

    Não só pelo seu conhecimento, mas lendo seus posts, sua historia. Você me parece uma pessoa muito sensata, e uma boa pessoa para se ter como amigo. Tem outras percepções, mas como nao posso afirmar..

    Só posso te dar os parabéns e dizer que mesmo sem conhece-lo sou seu fã.

    Abs,
    Continue assim,

    ResponderExcluir
  3. Boa tarde Naldo.

    Fiz o procedimento indicado por você, mas não deu certo. Aparece o erro abaixo:

    ERRO THREAD (Herbert, ATMAELFA-02) 16/02/2011 13:54:55
    sigaadv.pss: SuperFile Open error 13 - File: c:\protheus10treino\system\sigaadv.pss - Unknown file type on _APPSWIMPORT(SIGAPSW.PRG) 20/07/2010 17:01:04 line : 1689

    ResponderExcluir
  4. Naldo !
    Sou seu fã cara !
    Obrigado.

    ResponderExcluir
  5. Naldo
    Preciso de uma ajuda, no momento de incluir a fórmula SPF_CLOSE("SIGAPSS.SPF") e clicar pra confirmar, aparece a msg "Improper function Use : CLOSE" queria saber se existe outra forma de fechar o arquivo de senhas (talvez pelo DOS) pra continuar com o procedimento

    att.

    Pierry Guedes

    ResponderExcluir
  6. Pierry,


    De uns Rpos/Updates pra cá a Totvs programou uma validação em expressões advpl passiveis de serem executadas via fórmula retornando a mensagem "Improper function Use" caso o algoritmo de validação "identifique" uma função imprópria. O Critério não está bem definido do que seja impróprio ou não a ser executado. ABS é uma função imprópria? A meu ver não. Mas torna-se imprópria na avaliação do algoritmo. IF(a>b,a,b) é impróprio? Para o algoritmo sim. Acredito que programaram essa verificação por Falha de segurança no sistema. Poder-se-ia executar um TCDelFile( "SRA010" ) e "Dropar" a Tabela SRA se esta não estivesse em uso, ou outras coisas. Acredito que este "POST" também contribuiu para isso. De qualquer forma, uma User Function não Pode Ser Imprópria. Mas, dependendo de sua declaração se torna. Por Exemplo se programar a User Function SPF_CLOSE e tentar executar U_SPF_CLOSE o sistema retornará como uma função imprópria pela palavra CLOSE. END também é impróprio. O conceito do que é "próprio" (entenda-se permitido) ou "impróprio" (entenda-se negado) vai da "cabeça" de quem programou. De qualquer forma, existe uma solução simples para o seu problema. Proceda da seguinte forma:

    Crie uma User Function com as Características abaixo:

    User Function FinalSPF()
    Return( _SPF_CLOSE( "SIGAPSS.SPF" ) )
    Static Function _SPF_CLOSE( cSPFFile )
    Return( SPF_CLOSE( cSPFFile ) )

    E chame-a no lugar de SPF_CLOSE("SIGAPSS.SPF" ) da seguinte forma U_FInalSPF(). Irá funcionar. Até quando, não sei. Este Blog é MONITORADO 24 horas e, provavelmente, vai sair um "patch" emergencial ou uma Nova "FrameWork" impedindo isso e esse que vos escreve terá que imaginar outra maneira de ajudá-los a recuperar a senha do Administrador. Melhor seria se a própria TOTVS implementasse isso.

    []s
    иαldσ dj

    ResponderExcluir
    Respostas
    1. Como diria Bela Gil: Você pode trocar esta function por IIF(SPF_CLOSE("SIGAPSS.SPF" )=1,.F.,.F.) direto na fórmula, por exemplo.

      Excluir
  7. e quando a empresa trabalha com datacenter???

    ResponderExcluir
  8. E isso lhe é empecilho?

    Acredito que não.

    Vejo ums solução clara em minha mente.

    Vamos pensar um pouco...

    Se está no DataCenter e "não" tenho acesso como proceder?

    Simples!

    No mínimo duas soluções possíveis:

    Primeira:

    A solução é copiar o arquivo de senhas do DataCenter para o Client.

    Mas como?!?!?!??! Se "não" tenho acesso!!!

    De fato não o tem mas, o Protheus.... esse tem.

    Então:

    1 ) utilize __CopyFile() para trazer o arquivo de senhas do servidor para a estação;
    2 ) Efetue o Procedimento de Recuperação de Senha do Administrador ; e, finalmente;
    3 ) Retorne o arquivo de Senhas ao DataCenter usando, novamente, __CopyFile().

    Segunda:

    Faça o Processo direto no DataCenter.

    Mas como?!?!?!??! Se "não" tenho acesso!!!

    De fato não o tem mas, o Protheus.... esse tem.

    Então:

    1 ) utilize __CopyFile() para fazer uma cópia do o arquivo de senhas no DataCenter;
    2 ) Siga os Passos 1 a 4 e utilize, novamente __CopyFile() para restaurar o arquivo antigo
    3 ) Continue do passo 5 em diante.

    Simples assim....

    []s
    иαldσ dj

    ResponderExcluir
  9. Vai... mexe mais.. tenta desafiar o Mestre Cuca (иαldσ).

    Sem me gabar, também ja pensei nesse 'problema' contornavel e cheguei a mesma solução, to chegando no seu nivel 'quem me dera'!

    ResponderExcluir
  10. Boa tarde.
    Por favor, se for possível me ajudar eu agradeço.
    Tive que reinstalar o Protheus 5 ( !!!!!! ) para atender o fisco. Não tenho mais as senhas da época e também não tenho o arquivo sigapss.sfp, somente tenho o sigaadv.pss. Tem alguma maneira de recuperar a senha do administrador ???
    Obrigado a todos.
    Olair

    ResponderExcluir
  11. Protheus 5. Uma relíquia! Já tentou renomear o arquivo de senhas para forçar o sistema recriá-lo? Se o sistema conseguir recriá-lo a senha do administrador será em branco.

    ResponderExcluir
  12. Cara adorei a dica. Então a Totvs monitora o blog 24 horas ? Legal, então quero ver eles lançarem um patch pra bloquear uma pessoa que só tem uma licença do módulo do faturamento utilizar qualquer módulo do sistema apenas brincando com as tags . Por exemplo quem tem licença corporativa não acessa alguns módulos como Medicina e segurança do trabalho. Vá lá, mexa nas tags e seja feliz ! Haha !

    ResponderExcluir
  13. Bom dia,


    Este processo de recuperação de senha está funcionando para a versão 11?

    ResponderExcluir
  14. IIF(SPF_CLOSE("SIGAPSS.SPF" )=1,.F.,.F.)

    funciona para mim digitando diretamente no campo da fórmula sem a necessidade de compilar nada (pois até para compilar precisa da senha)

    ResponderExcluir
  15. Bom dia! Dica complementar: No valid do campo Formula do SM4, troque para o valid do campo da CT5, assim não exibe a mensagem Invalid Function.

    ResponderExcluir
  16. No Protheus 11 funciona perfeitamente, criando uma User Function.

    ResponderExcluir

Postar um comentário

Postagens mais visitadas