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....

BlackTDN :: Alterando o dicionário :: ON FLIGHT

 

images

 

Alguém aí arriscaria trocar a asa de um avião em pleno voô?
Pelo menos alguém em sua sã consciência nao faria isso.. e os loucos?

 

Realizando uma comparação ao fato acima, eis a porta aberta para alterações no dicionario em tempo de execução através do antigo e 'usual' campo formulas.

 

Participando de um projeto.. updates para lá, updates para cá.. então surge a necessidade de se fazer uma alteração na SX3, mas o acesso ao CFG é restrito ao pessoal da TI. Então testamos essa alteração usando o campo formulas, e para a surpresa de todos, foi possível alterar uma propriedade do dicionário, tornando um campo anteriormente como [V]isual para [A]lterável.

A sequencia de operações a ser seguida é:

  • Posiciona na tabela SX3 para o campo a ser alterado.
    MSGINFO(POSICIONE('SX3',2,'A1_NOME','X3_VISUAL'))

FORM1

  • Realiza o lock da tabela e exibe se conseguiu ou não.
    MSGINFO(CVALTOCHAR(RECLOCK('SX3')))

FORM2

  • Define o novo valor ao campo da X3
    SX3->X3_VISUAL := 'A' (importante usar o alias da tabela)

FORM3

  • Libera o lock realizado.
    DBUNLOCKALL()

FORM4

  • Veja que o campo que antes era V-Visual passou a ser A-Alterado.
    MSGINFO(POSICIONE('SX3',2,'A1_NOME','X3_VISUAL'))

FORM5

* A operação apresentada é bem sucedida para alterações que não são transportadas para o banco de dados.

** No projeto não adotamos essa solução para alteração! Foi um pensamento louco que acabou revelando essa falha, espero que a detentora do Produto tome as devidas providências em tempo.

[]’s,
OBona,

Comentários

  1. Eu fiz parte dessa manobra e vi ela funcionando. Muito bom! Não é à toa que essa cara, oBona, é considerado um dos MAIORES THE WORLD CHAMPIONS!!! Valeu Bona por mais uma força! Abs.

    ResponderExcluir
  2. A totvs já tomou providencias para esse tipo de situação, existe um parametro que desabilita execuções via "fórmulas", gambiarra das mais toscas, como de costume.

    ResponderExcluir

Postar um comentário

Postagens mais visitadas