Pular para o conteúdo principal

Postagem em destaque

BlackTDN :: A Arte (e Desafio) de Dialogar com a IA: Mais Inteligência, Menos "Burrice"?

_Créditos das imagens: ChatGPT (DALL·E) ** A Arte (e Desafio) de Dialogar com a IA: Mais Inteligência, Menos "Burrice"? Recentemente, me deparei com um exemplo fascinante da capacidade das IAs generativas: um prompt detalhado que resultou na criação de um jogo 3D de labirinto com um soldado (você pode ver a versão em português do prompt/projeto aqui: [naldodj-3DMazeGameWithSoldier](https://raw.githubusercontent.com/naldodj/naldodj-3DMazeGameWithSoldier/refs/heads/main/README.md), baseado no original de [@nobody_qwert no X](https://x.com/nobody_qwert/status/1893584330095509843)). O resultado é impressionante, mas o que realmente me chamou a atenção foi a **complexidade e o detalhamento do prompt** necessário para chegar lá. Isso ilustra perfeitamente um ponto crucial: fazer a IA gerar *exatamente* o que queremos, seja código complexo ou texto coeso e específico, não é trivial. Exige clareza, precisão, antecipação de ambiguidades e, muitas vezes, várias iterações. É a chamad...

BlackTDN :: Autenticando Via tSocketClient

Exemplo de Autenticação via tSocketClient

#INCLUDE "PROTHEUS.CH"

#DEFINE MSECONDS_WAIT 5000

Static __cCRLF    := CRLF

/*/
    Funcao: tSocketAuth
    Autor:    Marinaldo de Jesus
    Data:    03/03/2012
    Uso:    Exemplo de Uso da Classe tSocketClient
/*/
User Function tSocketAuth()

    Local nVarNameL            := SetVarNameLen( 20 )

    Local atSocketC            := {}

    Local lGetError            := .F.

    Local cGetError
    Local ctSocketSend
    Local ctSocketReceive

    Local ntSocketReset
    Local ntSocketConnected
    Local ntSocketSend
    Local ntSocketReceive

    //Instanciamos um objeto do tipo Socket Client
    Local otSocketC    := tSocketClient():New()
    //Obtemos os Metodos da Classe
    atSocketC    := ClassMethArray( otSocketC )
    lGetError    := ( aScan( atSocketC , { |aMeth| aMeth[1] == "GETERROR" } ) > 0 )

    BEGIN SEQUENCE

        //Tentamos efetuar a Conexao a teste.com.br aguardando n milisegundos
        ntSocketConnected    := otSocketC:Connect( 80 , "http://user:password@teste.com.br" , MSECONDS_WAIT )
        //Verificamos se a conexao foi efetuada com sucesso
        IF !( otSocketC:IsConnected() ) //ntSocketConnected == 0 OK
            IF ( lGetError )
                //cGetError := otSocketC:GetError()
                DEFAULT cGetError := "otSocketC:GetError()"
                ConOut( cGetError )
            EndIF   
            ConOut( "" , "tSocketClient" , "" , "Sem Resposta a requisicao" , "" )
            BREAK
        EndIF

        ctSocketSend := "GET"
        ctSocketSend += " "
        ctSocketSend += "http://user:password@teste.com.br"
        ctSocketSend += __cCRLF
        ctSocketSend += "HTTP/1.0"
        ctSocketSend += __cCRLF
        ctSocketSend += "From:"
        ctSocketSend += " "
        ctSocketSend += "tsocketclient@sample.com"
        ctSocketSend += __cCRLF
        ctSocketSend += "User-Agent: tSocketClient/1.0"
        ctSocketSend += __cCRLF
        ctSocketSend += __cCRLF

        //Enviamos uma Mensagem
        ntSocketSend := otSocketC:Send( ctSocketSend )
        //Se a mensagem foi totalmente enviada
        IF ( ntSocketSend == Len( ctSocketSend ) )
            //Tentamos Obter a Resposta aguardando por n milisegundos
            ntSocketReceive := otSocketC:Receive( @ctSocketReceive , MSECONDS_WAIT )
            //Se Obtive alguma Resposta
            IF ( ntSocketReceive > 0 )
                //Direcionamo-a para o Console do Server
                ConOut( "" , ctSocketReceive , "" )
            Else
                IF ( lGetError )
                    //cGetError := otSocketC:GetError()
                    DEFAULT cGetError := "otSocketC:GetError()"
                    ConOut( cGetError )
                EndIF   
                ConOut( "" , "tSocketClient" , "" , "Sem Resposta a requisicao" , "" )
            EndIF
        Else
            IF ( lGetError )
                //cGetError := otSocketC:GetError()
                DEFAULT cGetError := "otSocketC:GetError()"
                ConOut( cGetError )
            EndIF   
            ConOut( "" , "tSocketClient" , "" , "Problemas no Enviamos da Mensagem" , "" )
        EndIF
        //Verificamos se ainda esta Conectado
        IF !( otSocketC:IsConnected() )
            //Tentamos Nova Conexao
            ntSocketReset         := otSocketC:ReSet() //ntSocketReset == 0 OK
            ntSocketConnected    := otSocketC:Connect( 80 , "http://user:password@teste.com.br" , MSECONDS_WAIT )       
        EndIF
        //Se permanecemos conectado ou reconectou
        IF !( otSocketC:IsConnected() ) //ntSocketConnected == 0 OK
            IF ( lGetError )
                //cGetError := otSocketC:GetError()
                DEFAULT cGetError := "otSocketC:GetError()"
                ConOut( cGetError )
            EndIF   
            ConOut( "" , "tSocketClient" , "" , "Sem Resposta a requisicao" , "" )
            BREAK
        EndIF

    END SEQUENCE

    //Encerramos a Conexao
    otSocketC:CloseConnection()
    otSocketC    := NIL

    SetVarNameLen( nVarNameL )

Return( ctSocketReceive )

[]s

иαldσ dj

Comentários

  1. Qual a necessidade de uso ? Quando tenho que abrir outro banco de dados, sempre terei que chamar esse socket ?

    ResponderExcluir

Postar um comentário

Postagens mais visitadas