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 :: Junction :: Estendendo o RootPath a partir de diretórios Virtuais (Ligações Simbólicas)

As funções de manipulação de arquivos, no Protheus, são limitadas ao RootPath ou a arquivos locais. A exemplo da função File() que, segundo o tdn: “Determina se existe arquivo no diretório ou path AdvPL padrão.”(tdn:http://tdn.totvs.com.br/kbm#9722).

File, em seu segundo parâmetro nWhere; “Indica o local onde será realizada a procura do arquivo. Sendo: 0 = O acesso depende do path (Quando for um path relativo a procura será no Application Server; caso seja um path absoluto, a procura será no Smart Client). 1 = A procura será realizada no diretório de instalação do Application Server. 2 = A procura será realizada no diretório de instalação do Smart Client.” (tdn:http://tdn.totvs.com.br/kbm#9722).

Isso nos restringe ao ambiente Protheus. Às vezes precisamos que o Protheus abra arquivos em outras pastas que não as do client e nem as armazenadas no RootPath ou Application Server, para isso, para versões anteriores ao Windows Vista/7/Server 2008 (inclusive), que não disponibilizam Mklink, podemos usar o aplicativo Windows SysInternals :: Junction que cria, segundo a própria definição da Windows SysInternals, “Win2K NTFS symbolic links”. Usando Junction para o “mapeamento/criação” do “symbolic links” ou “Diretório Virtual” podemos “estender” o uso das funções de manipulação de arquivos do Protheus a exemplo: File(), Directory(), dbUseArea(), aDir(), dentre outras referenciadas no tdn como: Manipulação de arquivos, discos e I/O ou Banco de Dados\Funções genéricas.

Caso possua uma aplicação com arquivos suportados pelo Protheus e queira que as funções de manipulação de arquivos os acessem sem necessidade de uma cópia no RootPath; efetue o mapeamento utilizando Junction ou MkLink. Isso serve também para o caso de possuir pasta(s) compartilhada(s) onde armazene documentos comuns e que não são gerenciadas pelo ambiente Protheus.

Normalmente quando efetuo o “Download” do aplicativo Junction o faço na pasta system32 do SO. Seu uso é bem simples. Veja um exemplo:

RootPath do Protheus:

image

Diretório ao qual desejo que o Protheus tenha acesso e manipule dados:

image

Usando Junction para criar o “symbolic link” teríamos:

image

image

e criamos o mapeamento

image

Podemos, agora, ter acesso aos dados a partir da “Ligação Simbólica” e…

image

a partir do Protheus, no exemplo usando o SDU, abrir e manipular as informações no diretório mapeado a partir do RootPath do Protheus

image

Vou usar “symbolic links” na implementação do “Restore Point” ou “Ponto de Restauração” pois, no modelo definido, a restauração só poderá ocorrer em um ambiente diferente do ambiente atual que possui Root/Start(Path) e DBMS exclusivos.

[]s

иαldσ dj

Comentários

  1. Um apelido para este post genial seria:

    ["Visão além do alcance"]

    Parabéns mais uma vez, pela visão além do alcance que você possui, que você nos proporciona e que dá ao Protheus.

    Thunder, thunder, thunder, THUNDEEER CATS!
    http://y2u.be/VBkTIb4NtrA

    ResponderExcluir
  2. Fica a dica ai p vc que veio ler esse post...

    Fiz o junction com a pasta [update] dentro de protheus data,
    para que todos os ambientes tivessem acesso a mesma pasta evitando que arquivos
    de updates sejam duplicados em locais diferentes e dessa forma, mantendo todos os ambientes
    atualizados com as mesmas lib, patchs, etc..

    Tenho a estrutura da seguinte forma:

    [Pastas]
    1. p10
    1.1 AtalhosP10
    1.2 pData
    1.2.1 P10_DataDefault
    1.2.1 P10_DataTestes
    1.2.1 P10_DataClienteX
    1.3 protheus
    1.4 update

    todas as 3 pastas dentro de pData acessam a mesma
    pasta [update] que esta um nível acima delas.

    Duvidas?

    ResponderExcluir
  3. São muitas as possibilidades no uso de Junction e/ou MkLink.

    []s

    иαldσ dj

    ResponderExcluir
  4. Sei que essa postagem é antiga, porém to tentando fazer um MKLINK /D com uma unidade de rede //server2/e$/arquivos. No windows funciona certinho. O problema é que o comando directory() não consegue listar os arquivos. Alguma dica pra essa situação?

    Grato,

    Eliandro.

    ResponderExcluir
  5. Show mestre. Obrigado pela excelente dica!!!

    ResponderExcluir
  6. Bom dia, Naldo
    Vc teria o fontes CFGR510 estou precisando muito dele.
    Caso alguém tenha poderia me enviar.
    andrelscosta@hotmail.com

    ResponderExcluir

Postar um comentário

Postagens mais visitadas