Algumas considerações usando mod_harbour

Projeto [x]Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7928
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

Algumas considerações usando mod_harbour

Mensagem por Itamar M. Lins Jr. »

Olá!
Mod_harbour é um modulo que o Antônio Linares, criou para rodar .prg no apache, como se fosse php,asp...
Eu já usava localmente o uhttpd que é um servidor prg/hrb igual ao apache ele é o apache e o mod_harbour em 1 só.
Como acontece, esse uHttpd foi legado a segundo plano... Agora pegaram tem alguns ai tWEB, etc que utiliza o mesmo uHttpd.
Mas não é isso o motivo dessa postagem.
O modulo mod_harbour/uHttpd usando .prg tem uma grande desvantagem em relação ao .hrb.
Usando .hrb podemos chamar as outras funções ou .PRGs pq o HRB LINKA TUDO em 1 só dai, as diversas funções que criamos, podem ser visualizadas e executadas.
Por exemplo lib chamada de funcoes.prg:
Function AbreDB(cAlias)
...
Function TravaRegistro(cAlias)
...
Usando .prg teria que colocar tudo dentro de cada prg.
Usando HRB basta fazer a chamada.

SET PROCEDURE TO funcoes.prg
No final de cada .prg.

Imagine ai o Apache rodar .HRB, muito bom.
Meu código está basicamente assim:

Código: Selecionar todos

REQUEST DBFCDX, SQLMIX
MEMVAR cOpcao, cLogin, cTab
Function HRBMAIN
PARAMETERS cPar1, cPar2 (opcional)
LOCAL cHtml
Private cTab := ""
IF AbreDb(...)
   (cAlias)->(dbgotop())
   cTab := "<table><tr><th>Código..."
   DO while (cAlias)->(!eof())
      cTab += ...(Aqui o código misturado html com prg)
      //Por exemplo:
      cTab := "<tr><td>" + (cAlias)->nome + "</td><td>"  //etc
      (cAlias)->(dbSkip())
   ENDDO
   cTab += "</table>"
ELSE
   Return ErroWeb("Não abriu o arquivo")
ENDIF

TEXT TO VAR cHtml
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset="UTF-8"/>
<meta name="viewport" content="width=device-width, initial-scale=1">
<script type="text/javascript">
...
<body>
&cTab <!-- Aqui o &(comercial) ejeta o txt dentro do outro txt.
ENDTEXT

RETURN ap_rputs( cHtml )

SET PROCEDURE to "funcoes.prg"
Digitei esse código direto aqui...
O grande problema pra mim, é não se perder, na LOUCURA que virou a programação WEB, pq são TRILHÕES de exemplos misturados com JavaScript, Ajax, Node, etc
Tudo que a gente vai pesquisar, os exemplos são basicamente bibliotecas em Ajax, JAVA, React, etc... Termina pulverizando a MENTE da pessoa, com MILHARES de códigos.
E como não quero sair do feijão com arroz, vou fazendo HTML, com PRG e alguma coisa de CSS.
Outro problema que milhares de páginas no mundo estão deixando de funcionar por conta de colocar recursos nas páginas de outros sites. Tipo isso:

Código: Selecionar todos

  <script src='//cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.min.js'></script>
Se esse site ai do SRC=... sair do ar a pagina do usuário que faz uso desses recursos, deixa de funcionar.
Essa confiança é que não tenho, de ficar "PENDURANDO" links(o tal "SET PROCEDURE" do Harbour) no site, pra usar esses recursos, mas como não tem jeito faço uso mínimo.

Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Paredes01
Usuário Nível 2
Usuário Nível 2
Mensagens: 52
Registrado em: 20 Mai 2012 11:22
Localização: Mérida, Yucatán, México

Algumas considerações usando mod_harbour

Mensagem por Paredes01 »

Maestro, Itamar
Disculpe mi ignorancia respecto a este asunto
pero que es .hrb

¿ Dónde encuentro información sobre este asunto ?

Gracias!!
Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7928
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

Algumas considerações usando mod_harbour

Mensagem por Itamar M. Lins Jr. »

Olá!
Vc pode se desejar usar no seu .exe a extensão .hrb ou .prg
.hrb é o seu fonte, pré compilado.
Para compilar com a extensão .hrb, basta usar
hbmk2 my.prg -gh

hbrun.exe my.hrb [ parameters ]

hbmk2 -gh my.prg
hbmk2 my.hrb [ parameters ]

hbrun.exe my.prg [ parameters ]

https://www.kresin.ru/en/hrbfaq_3.html#Doc6

Código: Selecionar todos

DYNAMIC HRBFUNC1
FUNCTION Main()
Local x, handle := hb_hrbLoad( "my.hrb" )
 
x := hrbFunc1()   // hrbFunc1 - the function from my.hrb
 
hb_hrbUnload( handle )
Return Nil
Basicamente é isso que o uHttpd e o mod_harbour faz.

Código: Selecionar todos

FUNCTION Main()
Local han, buf, cBuf := ""
 
   cBuf += "Procedure MM" +Chr(13)+Chr(10)
   cBuf += "? 'Just a test!'" +Chr(13)+Chr(10)
 
   buf := hb_compileFromBuf( cBuf, "harbour", "/n" )
   hb_hrbRun( buf )
   ?
Return Nil
Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Claudio Soto
Colaborador
Colaborador
Mensagens: 566
Registrado em: 27 Ago 2012 12:31
Localização: Uruguay
Contato:

Algumas considerações usando mod_harbour

Mensagem por Claudio Soto »

Hola Itamar,
yo hace tiempo que abandoné la programación desktop tradicional (desde el 2017 cuando renuncié como desarrollador de HMG). Desde entonces trato de hacer lo máximo posible en Javascript/HTML/CSS, integrando con el webview de Android y Windows (Java en Android y Harbour/C en Windows) de esta forma con muy poco cambio la misma aplicación corre en los dos SO. Dejo para hacer en Java y Harbour/C lo mínimo posible, fundamentalmente todo lo relacionado con la lectura y escritura de archivos.

Por ejemplo tanto en Java como en C puedo crear una función genérica para leer un archivo de texto, la enlazo (Bind) con javascript en ambos SO mediante el webview con el mismo nombre por ej. readTextFile, entonces la llamo en javascript siempre de la misma forma sin importarme si estoy en Android o Windows, eso hace que la app corra de la misma forma tanto en Android como en Windows.
Saludos.
Dr. Claudio Soto
(Uruguay)
http://srvet.blogspot.com
Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7928
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

Algumas considerações usando mod_harbour

Mensagem por Itamar M. Lins Jr. »

Olá!
Passei horas para descobrir, como fazer um simples refresh(repost) na tela.
Meus conhecimento das estruturas de HTML parent, window, iframe, é bem ruinzinho.
Nisso pra pegar a janela, usar <script>... A porca torce o rabo!
Não tem nada a ver com PHP/Harbour/AJAX/etc, é o BASICÃO mesmo, entender como os navegadores lidam com isso.
Captura de tela 2025-03-25 104725.png
Foco do uso disso ai é no celular.

Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7928
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

Algumas considerações usando mod_harbour

Mensagem por Itamar M. Lins Jr. »

Olá!
hace tiempo que abandoné la programación desktop tradiciona
Eu olhei alguns exemplos.
Mais alguns manuais e exemplos pequenos, seria muito interessante.
Fica uma parte rodando no servidor que faz o papel do apache. Não entendi 100% o processo, mas a aplicação roda nativa em cada OS.
Agora a parte da programação, ainda se encontra num nível para programadores em C.
Estou acostumado com append, @ say, @ get...Teria que criar a interface usando TRANSLATE, etc... E esse parte em C, que não tenho hábito.(acredito que não precise de código em C) mas a integração com as chamadas em C, não é tão simples pra mim.

Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Claudio Soto
Colaborador
Colaborador
Mensagens: 566
Registrado em: 27 Ago 2012 12:31
Localização: Uruguay
Contato:

Algumas considerações usando mod_harbour

Mensagem por Claudio Soto »

Itamar,
Nunca use mod_harbour, uso solo Webview (que es el motor de un navegador que se enlaza con C, java, python, etc y permite hacer todo lo que los navegadores no permite).
Ver por ejemplo el HB_VebView que postee, necesitas saber solo Harbour y un poco de Javascript para la parte HTML.
Saludos.
Dr. Claudio Soto
(Uruguay)
http://srvet.blogspot.com
Responder