Página 1 de 1

Soluçoes usadas para Web

Enviado: 23 Ago 2023 11:32
por informais
Amigo, hoje sabemos que tudo caminha para Web.
Ou seja as Aplicações devem sim migrar para "basicamente" digamos o navegador.

Os amigos podem compartilhar qual caminho estão seguindo/estudando ?

Soluçoes usadas para Web

Enviado: 27 Ago 2023 10:51
por Itamar M. Lins Jr.
Olá!
https://github.com/carles9000/uhttpd2.tweb/tree/main
Em 2019 mais ou menos acompanhei um pouco, mas estava tudo ainda em fase de aprendizado, agora parece está mais maduro.

Saudações,
Itamar M. Lins Jr.

Soluçoes usadas para Web

Enviado: 28 Ago 2023 08:26
por informais
Obrigado, a todos,
Mas algo tipo um PRG para Web, acho que não veremos anda alem de algumas tentativas

Na verdade queria saber se os amigos estão usando
Outras ferramentas para passar para web.

Soluçoes usadas para Web

Enviado: 28 Ago 2023 09:11
por Itamar M. Lins Jr.
Olá!
É com uso de PRG PURO!
https://carles9000.github.io/#
Estude os códigos, é similar aos códigos do fivewin.

Saudações,
Itamar M. Lins Jr.

Soluçoes usadas para Web

Enviado: 28 Ago 2023 10:17
por informais
Ok, mas será que isso está em produção.

Não ví nem conheço nenhuma pessoa aqui do BR, usando.

Então, esse é o problema, que pelo visto parece ser apenas prototipos.

Soluçoes usadas para Web

Enviado: 28 Ago 2023 10:44
por Itamar M. Lins Jr.
Olá!
Pelo PREÇO não custa nada TESTAR.
Eu já fiz todo um projeto usando uHTTP, é bem antigo por sinal.
O que ele fez foi melhorar, e tem o mod_harbour(Antonio Linares) que algumas pessoas estão usando.
Se o projeto da pessoa que fez o FIVEWIN não vingou aqui no Brasil..., lá na terra dele tem algumas pessoas usando.

Tem outros projetos MAIS "PARRUDOS" para CARGA de requisições similar a BANCOS por exemplo
Esse é do Eric Landvai.
https://www.youtube.com/watch?v=iDOr9B-9TYk&t=97s

Saudações,
Itamar M. Lins Jr.

Soluçoes usadas para Web

Enviado: 31 Ago 2023 09:50
por informais
Estou dando uma estudada em


https://www.adiantibuilder.com.br/home

essas de "Código" Xharbor" para web, acho pouco provável que tenha algo em produção.
Ou seja um Sistema mesmo, construído nela, rodando em produção.

Mas tem várias outras....

Soluçoes usadas para Web

Enviado: 31 Ago 2023 10:07
por Itamar M. Lins Jr.
Olá!
Estou dando uma estudada em
PHP
Pouca coisa pra desenhar meia dúzia de controles...

Código: Selecionar todos

 <?php
/**
 * FuncionarioForm Form
 * @author  <your name here>
 */
class FuncionarioForm extends TPage
{
    protected $form; // form
    private $formFields = [];
    private static $database = 'exemplos';
    private static $activeRecord = 'Funcionario';
    private static $primaryKey = 'id';
    private static $formName = 'list_Funcionario';

    /**
     * Form constructor
     * @param $param Request
     */
    public function __construct( $param )
    {
        parent::__construct();
        // creates the form
        $this->form = new BootstrapFormBuilder(self::$formName);
        // define the form title
        $this->form->setFormTitle('Cadastro de funcionário');

        $id = new TEntry('id');
        $dt_nascimento = new TDate('dt_nascimento');
        $nome = new TEntry('nome');
        $sobrenome = new TEntry('sobrenome');
        $funcao_id = new TDBCombo('funcao_id', 'exemplos', 'Funcao', 'id', '{nome}','nome asc'  );
        $cidade_estado_pais_id = new TDBCombo('cidade_estado_pais_id', 'exemplos', 'Pais', 'id', '{nome}','nome asc'  );
        $cidade_estado_id = new TCombo('cidade_estado_id');
        $cidade_id = new TCombo('cidade_id');
        $cep = new TEntry('cep');
        $endereco = new TText('endereco');

        $cidade_estado_pais_id->setChangeAction(new TAction([$this,'onChangecidade_estado_pais_id']));
        $cidade_estado_id->setChangeAction(new TAction([$this,'onChangecidade_estado_id']));

        $dt_nascimento->addValidation('Data de nascimento', new TRequiredValidator()); 
        $nome->addValidation('Nome', new TRequiredValidator()); 
        $sobrenome->addValidation('Sobrenome', new TRequiredValidator()); 
        $funcao_id->addValidation('Funcao id', new TRequiredValidator()); 
        $cidade_estado_pais_id->addValidation('País', new TRequiredValidator()); 
        $cidade_id->addValidation('Cidade', new TRequiredValidator()); 

        $dt_nascimento->setMask('dd/mm/yyyy');
        $id->setEditable(false);
        $dt_nascimento->setDatabaseMask('yyyy-mm-dd');

        $nome->autofocus = 'autofocus';

        $id->setSize(100);
        $cep->setSize('100%');
        $nome->setSize('100%');
        $sobrenome->setSize('100%');
        $funcao_id->setSize('100%');
        $cidade_id->setSize('100%');
        $dt_nascimento->setSize(110);
        $endereco->setSize('100%', 68);
        $cidade_estado_id->setSize('100%');
        $cidade_estado_pais_id->setSize('100%');

        $this->form->addFields([new TLabel('Id:')],[$id],[new TLabel('Data de nascimento:', '#ff0000')],[$dt_nascimento]);
        $this->form->addFields([new TLabel('Nome:', '#ff0000')],[$nome],[new TLabel('Sobrenome:', '#ff0000')],[$sobrenome]);
        $this->form->addFields([new TLabel('Funcao:', '#ff0000')],[$funcao_id],[],[]);
        $this->form->addContent([new TFormSeparator('Endereço', '#333333', '18', '#eeeeee')]);
        $this->form->addFields([new TLabel('País:', '#ff0000')],[$cidade_estado_pais_id],[new TLabel('Estado:', '#ff0000')],[$cidade_estado_id]);
        $this->form->addFields([new TLabel('Cidade:', '#ff0000')],[$cidade_id],[new TLabel('Cep:', '#ff0000')],[$cep]);
        $this->form->addFields([new TLabel('Endereco:', '#ff0000')],[$endereco]);

        // create the form actions
        $btn_onsave = $this->form->addAction('Salvar', new TAction([$this, 'onSave']), 'fa:floppy-o #ffffff');
        $btn_onsave->addStyleClass('btn-primary'); 

        $btn_onclear = $this->form->addAction('Limpar formulário', new TAction([$this, 'onClear']), 'fa:eraser #dd5a43');

        // vertical box container
        $container = new TVBox;
        $container->style = 'width: 100%';
        $container->class = 'form-container';
        // $container->add(new TXMLBreadCrumb('menu.xml', __CLASS__));
        $container->add($this->form);

        parent::add($container);

    }

    public static function onChangecidade_estado_pais_id($param)
    {
        try
        {
            if (isset($param['cidade_estado_pais_id']) && $param['cidade_estado_pais_id'])
            { 
                $criteria = TCriteria::create(['pais_id' => (int) $param['cidade_estado_pais_id']]); 
                TDBCombo::reloadFromModel(self::$formName, 'cidade_estado_id', 'exemplos', 'Estado', 'id', '{nome}', 'nome asc', $criteria, TRUE); 
            } 
            else 
            { 
                TCombo::clearField(self::$formName, 'cidade_estado_id'); 
            }  

        }
        catch (Exception $e)
        {
            new TMessage('error', $e->getMessage());
        }
    } 

    public static function onChangecidade_estado_id($param)
    {
        try
        {
            if (isset($param['cidade_estado_id']) && $param['cidade_estado_id'])
            { 
                $criteria = TCriteria::create(['estado_id' => (int) $param['cidade_estado_id']]); 
                TDBCombo::reloadFromModel(self::$formName, 'cidade_id', 'exemplos', 'Cidade', 'id', '{nome}', 'nome asc', $criteria, TRUE); 
            } 
            else 
            { 
                TCombo::clearField(self::$formName, 'cidade_id'); 
            }  

        }
        catch (Exception $e)
        {
            new TMessage('error', $e->getMessage());
        }
    } 

    public function onSave($param = null) 
    {
        try
        {
            TTransaction::open(self::$database); // open a transaction

            /**
            // Enable Debug logger for SQL operations inside the transaction
            TTransaction::setLogger(new TLoggerSTD); // standard output
            TTransaction::setLogger(new TLoggerTXT('log.txt')); // file
            **/

            $messageAction = null;

            $this->form->validate(); // validate form data

            $object = new Funcionario(); // create an empty object 

            $data = $this->form->getData(); // get form data as array
            $object->fromArray( (array) $data); // load the object with data

            $object->store(); // save the object 

            $this->fireEvents($object);

            // get the generated {PRIMARY_KEY}
            $data->id = $object->id; 

            $this->form->setData($data); // fill form data
            TTransaction::close(); // close the transaction

            /**
            // To define an action to be executed on the message close event:
            $messageAction = new TAction(['className', 'methodName']);
            **/

            new TMessage('info', AdiantiCoreTranslator::translate('Record saved'), $messageAction);

        }
        catch (Exception $e) // in case of exception
        {
            new TMessage('error', $e->getMessage()); // shows the exception error message
            $this->form->setData( $this->form->getData() ); // keep form data
            TTransaction::rollback(); // undo all pending operations
        }
    }

    /**
     * Clear form data
     * @param $param Request
     */
    public function onClear( $param )
    {
        $this->form->clear(true);

    }  

    public function onEdit( $param )
    {
        try
        {
            if (isset($param['key']))
            {
                $key = $param['key'];  // get the parameter $key
                TTransaction::open(self::$database); // open a transaction

                $object = new Funcionario($key); // instantiates the Active Record 

                $object->cidade_estado_pais_id = $object->cidade->estado->pais->id;
    $object->cidade_estado_id = $object->cidade->estado->id;

                $this->form->setData($object); // fill the form 

                $this->fireEvents($object);

                TTransaction::close(); // close the transaction 
            }
            else
            {
                $this->form->clear();
            }
        }
        catch (Exception $e) // in case of exception
        {
            new TMessage('error', $e->getMessage()); // shows the exception error message
            TTransaction::rollback(); // undo all pending operations
        }
    }

    public function onShow()
    {

    } 

    public function fireEvents( $object )
    {
        $obj = new stdClass;
        if(get_class($object) == 'stdClass')
        {
            if(isset($object->cidade_estado_pais_id))
            {
                $obj->cidade_estado_pais_id = $object->cidade_estado_pais_id;
            }
            if(isset($object->cidade_estado_id))
            {
                $obj->cidade_estado_id = $object->cidade_estado_id;
            }
            if(isset($object->cidade_id))
            {
                $obj->cidade_id = $object->cidade_id;
            }
        }
        else
        {
            if(isset($object->cidade->estado->pais->id))
            {
                $obj->cidade_estado_pais_id = $object->cidade->estado->pais->id;
            }
            if(isset($object->cidade->estado->id))
            {
                $obj->cidade_estado_id = $object->cidade->estado->id;
            }
            if(isset($object->cidade_id))
            {
                $obj->cidade_id = $object->cidade_id;
            }
        }
        TForm::sendData(self::$formName, $obj);
    }  

}
Captura de tela 2023-08-31 102852.png
Saudações,
Itamar M. Lins Jr.

Soluçoes usadas para Web

Enviado: 31 Ago 2023 16:35
por informais
Então estou procurando algo para resolver a "dor",

mas tem que ser algo que tenha algumas pessoas usando

Não sei de nenhuma pessoa que tenha algo em produção usando uHTTP. Ou onde vejo alguma coisa como exemplo,
tudo que tem "pelo menos que eu consegui ver" são videos do povo espanhol falando, mas não consegui. (pode ser que eu esteja errado)

Soluçoes usadas para Web

Enviado: 01 Set 2023 10:37
por Itamar M. Lins Jr.
Olá!
O Harbour tem uHTTPD desde uns 15 anos... O Viktor no fork dele deu uma aula juntando tudo em um app eCommerce...
Vem o Antonio Linares e cria o mod_harbour, tem agora esse ai do Charlle(tWEB)...Em cima dos conhecimentos do mod_harbour e outras coisas que eles veem e vão absorvendo em seus exemplos, com isso o estudante adquire conteúdo FAZENDO! E postando suas dúvidas...
O Windows tem IIS tem CGI tem ASP tem isso tem aquilo...Tudo 0800 Mas as pessoas querem algo ainda mais simples, tem, pode ter! Cada tem seus gostos!
371466962_2451236085049468_3821932579383147546_n.jpg
Saudações,
Itamar M. Lins Jr.

Soluçoes usadas para Web

Enviado: 01 Set 2023 12:22
por informais
Blz, é bom trocar ideias, pra não uma ferramenta que poucos usam.

Né se pagar algo que maioria tá usando é mais simples de sanar eventuais dúvidas

Soluçoes usadas para Web

Enviado: 01 Set 2023 14:38
por Itamar M. Lins Jr.
Olá!
Para aprender vc não precisa de linguagem nenhuma em específico.
Até com .BAT ou CLIPPER vc faz aplicações WEB usando CGI.
WEB vc começa com IIS + HTML. Criando pagina estáticas ai no seu micro, depois vai subindo os degraus.
Tem uma aula aqui do Valdemiro...

Saudações,
Itamar M. Lins Jr.

Soluçoes usadas para Web

Enviado: 12 Jun 2024 14:19
por jgs82
@itamar,

Já viu a evolução do uHTTP? RunnerXBase nesse link https://runnerxbase.app/