Programando em Clipper para WEB

Fórum sobre a linguagem CA-Clipper.

Moderador: Moderadores

náufel
Usuário Nível 1
Usuário Nível 1
Mensagens: 12
Registrado em: 28 Nov 2005 16:55

Programando em Clipper para WEB

Mensagem por náufel »

Muitas são as mensagens sobre desenvolvimento de aplicações para ambiente gráfico, focadas na plataforma do usuário.

O foco deve ser a aplicação e não a plataforma do usuário.

O desenvolvimento para ambiente web surge como uma alternativa e ainda cria a independência do software.

A aplicação é acessada pelo navegador de preferência do usuário, não interessando o sistema operacional da sua máquina.

Hoje conseguimos programar em Clipper para ambiente web(Internet ou Intranet).
Os novos compiladores ajudam bastante.
Alguns são software livre outros são proprietários. Mesmo os proprietários aceitam inclusão de bibliotecas de terceiros.

O fato é que, se não houver mudança, aquela aplicação que roda em modo caracter a 5, 10 ou 15 anos, será abandonada e o seu cliente encontrará outro software.

Não podemos perder mais tempo.

Vamos conversar sobre a programação Clipper para ambiente web.
É possível e viável.
Avatar do usuário
software_facil
Usuário Nível 3
Usuário Nível 3
Mensagens: 211
Registrado em: 23 Fev 2005 12:19
Localização: Curitiba/PR
Contato:

Mensagem por software_facil »

Prezado,

Acompanhando o seu pensamento, o qual vejo ser muito bom, pergunto :

Hoje conseguimos programar em Clipper para ambiente web(Internet ou Intranet).
? -> Com qual ferramenta ?

Os novos compiladores ajudam bastante.
? -> Quais especificamente ?

Abraços
messenger : software_facil@hotmail.com
náufel
Usuário Nível 1
Usuário Nível 1
Mensagens: 12
Registrado em: 28 Nov 2005 16:55

Mensagem por náufel »

O compilador que utilizo, há 5 anos, é o FlagShip, na versão 4.48, com Linux.

A ferramenta é o ambiente de desenvolvimento que criamos com todas as bibliotecas auxiliares. Desde o gerenciamento dos procedimentos à compilação e linkedição.

Atenciosamente.
Avatar do usuário
software_facil
Usuário Nível 3
Usuário Nível 3
Mensagens: 211
Registrado em: 23 Fev 2005 12:19
Localização: Curitiba/PR
Contato:

Mensagem por software_facil »

Prezado,

Mais alguns questionamentos :

1) ...Alguns são software livre outros são proprietários
-> O que é software proprietário vc já disse, é o Flagship, e quais seriam os softwares livres ?

2) Vamos conversar sobre a programação Clipper para ambiente web...
-> Com certeza eu e os demais participantes do fórum gostariam de falar sobre desenvolvimento para web seguindo o padrão xBase, desde que não se atenha somente ao Flagship.

Abraços
messenger : software_facil@hotmail.com
náufel
Usuário Nível 1
Usuário Nível 1
Mensagens: 12
Registrado em: 28 Nov 2005 16:55

Mensagem por náufel »

1) Exemplo de outros softwares livres:
- MySQL para banco de dados, abandonando o dbf;
- Apache, para servidor de páginas;
- Postifix, para email;
- PHP, TCL, Python, como auxiliares, se necessário.

É a necessidade que faz o sapo pular :-)


2) Não temos que nos ater a nenhum compilador, o padrão Xbase é o assunto.
Contudo, os recursos apresentados por um ou outro devem ser considerados no momento da escolha.

Falei sobre o FlagShip porque é o compilador que utilizamos. Em uma análise mais detalhada descobrimos que utilizamos aproximadamente 30% dos recursos oferecidos. O que definiu a escolha foi o tempo de resposta da aplicação.

Em suma:
- A programação segue todo padrão Xbase.
- A mudança de paradigma deve acontecer na interface da aplicação e na utilização de um banco de dados relacional, se necessário. O que é muito viável devido às restrições do dbf.

Abraços.
jpalma
Usuário Nível 3
Usuário Nível 3
Mensagens: 153
Registrado em: 18 Ago 2003 14:15

Mensagem por jpalma »

Sou programador Clipper aproximadamente a 12 anos, porem tenho sido procurado por clientes referente a programação WEB.
Pesquisei bastante e resolvi adotar o trio MYSQL+APACHE+PHP.
Optei pelo PHP pois a sintaxe dos comandos é muito parecida com o nosso querido CLIPPER.
Hoje a maioria de meus clientes utilizam sistemas em Clipper, porem vivemos em uma era de constantes mudanças e temos que nos adaptar.
Vou continuar utilizando o Clipper enquanto existirem clientes.

sds
náufel
Usuário Nível 1
Usuário Nível 1
Mensagens: 12
Registrado em: 28 Nov 2005 16:55

Mensagem por náufel »

O MySQL está atendendo muito bem.
O PHP é utilizado, como um auxiliar, em tarefas como o envio de imagens.
O Apache é o servidor web, com ssl.

Não é necessário o abandono do Xbase.

Abraços.
Avatar do usuário
rochinha
Administrador
Administrador
Mensagens: 4664
Registrado em: 18 Ago 2003 20:43
Localização: São Paulo - Brasil
Contato:

Mensagem por rochinha »

Amiguinhos

Em relação a este tema, sempre existiu para o Clipper bibliotecas de terceiros que davam conta deste resultado.

O problema não é a linguagem e sim a plataforma.

Quando foram lançadas as ferramentas que permitiam ao Clipper trabalhar como WebServices, os servidores existentes na época não trabalhavam bem com CGI.

O Personal Web Server, PWS, não permitia execução dos aplicativos CGI e necessitava de uma DLL de ponte, a ClipWeb.dll, mas a mesma não era tão compativel com todos os servidores existentes tornando o seu uso muito dificil.

Depois surgiu a ClipCGI que também possuia uma implementação com o Clipper muito fácil e rápida. Não necessitava de CGI ponte mas ainda assim não trabalhavam muito bem alguns servidores.

Foi então que surgiu o Harbour e a compilação do código tornou os CGI mais livres de erros e travamentos dos servidores e ainda tornou mais compativel com todos os servidores da época, PWS(Win98), Xitami, ISS 4.0 e Apache(rodava tudo).

Na sequencia surgiu para Fivewin a classe TWeb, que ficou conhecida como XWeb e depois FiveWeb.

Todas eram implementações em puro Clipper e com o Harbour tornando os CGI muito pequenos e velozes sem pesar no servidor.

E a pouco tempo surgiu uma extensão de servidor Web que suportava scripts em Clipper, trabalhando de forma identica ao ASP, chamada ClipXNet com suportes nativo ao velho .DBF e indices NTX e CDX.

Já com ClipWeb e ClipCGI aliados ao Harbour ou xHarbour é grande a possibilidade de usar MySQL, ODBC, etc.

Clipweb - http://www.selective-software.com/evals/cwebee.exe
ClipCGI - sumiu junto com o site www.ClipX.net
ClipXNet - http://www.prodigyweb.net.mx/librasis/dmacias.html ou

Desta forma estariamos realmente usando nosso Clipper puro, sendo conservadores e abrindo um leque gigantesco de utilidades.

@braços :?)
Irineu
Usuário Nível 2
Usuário Nível 2
Mensagens: 61
Registrado em: 13 Ago 2003 22:01
Localização: Curitia-PR
Contato:

Mensagem por Irineu »

Avatar do usuário
vagucs
Membro Master
Membro Master
Mensagens: 1480
Registrado em: 10 Jul 2004 10:45
Localização: Ipanema - MG
Contato:

Mensagem por vagucs »

Devidoas as minhas viagens e porte ficado maior parte do ano fora de casa nao tive tempo de terminas, mas comecei uma lib que torna possivel fazer CGIs em xharbour e assim usar todo o seu poder tanto em servidores windows ou linux, abaixo o link de um exemplo rodando e acessando DBF com NTX.

www.vagucs.com.br/cgi-bin/auto.exe
Sem mais
Wagner Nunes
www.vagucs.com.br
Dudu_XBase
Membro Master
Membro Master
Mensagens: 1071
Registrado em: 25 Ago 2003 16:55

Mensagem por Dudu_XBase »

A Ferramenta que mais se adequava a essa realidade.
Chamava-se Max Server Pages mas infelizmente seu fabricante desapareceu mtos falam q foi comprada por concorrentes e tals.
Postei nesse link um overview

http://geocities.yahoo.com.br/dudu_xbas ... erview.pdf


________________________________________________________________________________________________________
(Aow Saudade) Clipper 5.2e, Blinker 7, RDD SIXNSX, DBFCDX /Xharbour 1.0, Rdd Mediator (Mysql) Free , RDD Sqlrdd (Sql Server) Comercial
(Hoje) C# Python Sql Server e Oracle




Avatar do usuário
rochinha
Administrador
Administrador
Mensagens: 4664
Registrado em: 18 Ago 2003 20:43
Localização: São Paulo - Brasil
Contato:

Mensagem por rochinha »

Amiguinhos

Se algum dia alguém aqui ouviu falar em xBase para Windows, muito antes do dbFast e antes do Fivewin, ouviu falar em Joiner.

Com o Joiner tinhamos dois tipos de compilação uma para DOS e outra para Windows, mas ai a empresa criou a biblioteca Funkye e sumiu com o Joiner.

Mas foi então que surgiu o MSP, Max Compiler(criado pela mesma empresa que criou o Joiner portanto pode-se pensar que o motor do MSP é o motor do Joiner), um dos primeiros compiladores em linha do DOS puramente 32bits e na sua cola para tapar o buraco de aplicativos CGIs que deveriam ser feitos em Perl(o PHP apareceria na cena Windows logo depois) ou ASP(o tapa buracos do mundo CGI da Microsoft) surgiu o Max Server Pages introduzindo no mundo dos servidores o tão pouco conhecido(na época) Apache.

Alardeado como uma solução de ponta para os aplicativos de legado em Clipper serem transpostos para Windows, usava o mesmo modo de programação do ASP só que no lugar de código Basic podiamos usar puro Clipper.

Mas tal solução era muito cara, muito cara mesmo, tão cara quanto ao ADS e talvez por isto tenha tido pouco uso.

Mas já que não dispomos de várias milhas sobrando para comprar algo e testar o jeito é usar algo mais compaativel com nossa realidade financeira e intelectual.

Portanto sobra o servidor WinASP(da HTCSoft) ou o servidor de scripts em Clipper ClipXNet(link).

Código de script em ClipXNet

Código: Selecionar todos

/* 2003/04/02: I.Q. David Arturo Macias Corona   produc.fml

Proceso para Productos
*/

#define  TRUE   .T.
#define  FALSE  .F.
#define  K_ESC  27

PRIV ii
PRIV jj
PRIV cContador := "produc.cnt"
PRIV cSvrLogos := "../cgi-bin/logos/"
PRIV aPartes := { { "ACER", "ACER" }, ;
                  { "HP", "HEWLET PACKARD" }, ;
                  { "IBM", "IBM" }, ;
                  { "EPSO", "EPSON" }, ;
                  { "COM", "COMPAQ" }, ;
                  { "VIDE", "VIDEO" }, ;
                  { "MULT", "MULTIMEDIA" }, ;
                  { "MON", "MONITORES" }, ;
                  { "IMP", "IMPRESORAS" }, ;
                  { "SCAN", "SCANNERS" }, ;
                  { "CPU", "MICROPROCESADORES" }, ;
                  { "TV", "TARJETAS DE VIDEO" }, ;
                  { "TR", "TARJETAS DE RED" }, ;
                  { "XXXX", "VARIOS SIN GRUPO" }, ;
		  { "TODOS", "TODOS LOS PRODUCTOS" } } 

/* Se puede usar:
- OUTSTD(): para enviar directamente la salida al servidor Web
  En este caso no se requiere cArcSale, y no debe usarse QOUT()
- cArcSale y QOUT(): para enviar la salida al archivo cArcSale, el cual es definido y usado por el modelo ClipNet
  para usarlo como "salida" que se enviara al servidor Web
*/

// Escribir informacion en archivo de salida
SGSALIDA0( cArcSale, .T., .F., .F. )

QOUT('<HTML>')
QOUT('<HEAD><TITLE>Modelo ClipNet: Productos</TITLE>')
QOUT('   <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">' )
QOUT('   <META NAME="Author" CONTENT="David Arturo Macias Corona">' )
QOUT('   <META NAME="GENERATOR" CONTENT="Mozilla/4.04 [en] (OS/2; I) [Netscape]">' )
QOUT('   <META NAME="GENERATOR" CONTENT="Sistemas Genericos [SGD]">' )
QOUT('</HEAD>')

QOUT('<BODY background="'+cSvrLogos+'fondo0.gif" leftMargin=5 topMargin=5>')
QOUT('<p align="center">' )
QOUT('<img border="0" src="../cgi-bin/logos/logo.jpg" width="750" height="57" >')
QOUT('</p>')
QOUT('Generalmente tambien estas pantallas tienen muchos iconos fijos y/o girando, "banners", muchos ' )
QOUT('colores y tipos de letra, conectores, programas Java incrustados y hasta figuras volando por toda la pantalla' )
QOUT('<br>')
QOUT('Para propositos practicos no se usaran esos elementos, pero son aplicables igual que si se ')
QOUT('usaran solamente elementos de texto')
QOUT('<br>')

QOUT('<div align="center"><center>')
QOUT('<table border="0" cellpadding="1" cellspacing="1" width="100%">')
QOUT('<tr>')
QOUT('<td width="424"><p align="center"><b><font face="Comic Sans MS" color="#000080" size="5">')
QOUT('P R O D U C T O S')
QOUT('</font></b></td>')
QOUT('</tr>')
QOUT('</table>')
QOUT('</center></div>')

QOUT('<div align="center"><center>')
QOUT('<TABLE BORDER=1 >')
FOR ii = 1 TO LEN( aPartes )
 QOUT('<TR>')
 QOUT('<TD bgcolor="COCOCO" >')
 QOUT('<A HREF=partes.fml?IDPAR="'+aPartes[ii,1]+'"&IDDES="'+STRTRAN(aPartes[ii,2], " ","+" ) +'" >' )
 QOUT('<b>'+aPartes[ii,2]+'</b>')
 QOUT('</A>')
 QOUT('</TD>')
 QOUT('</TR>')
NEXT ii
QOUT('</TABLE>')
QOUT('</center></div>')

QOUT('<br>')
QOUT('Aprovechando para mostrar algunos datos:' )
QOUT('<br>')
QOUT('<b>Contador de accesos:</b> ' )
IF ! FILE( cContador )
 MEMOWRIT( cContador, "0" )
ENDI
 MEMOWRIT( cContador, STR( VAL(MEMOREAD(cContador))+1 )  )
 QQOUT( MEMOREAD(cContador) )
QOUT('<br>')
QOUT('<b>Fecha:</b> '+DTOC(DATE())+'  <b>Hora:</b> '+TIME() )
QOUT('<br>')
QOUT('<b>Temperatura ambiente:</b> '+'(Sensor desconectado)' )
QOUT('<br>')
QOUT('<br>')
QOUT('<b>Sistema Operativo:</b> '+OS() )
QOUT('<br>')
QOUT('<b>Compilador:</b> '+Version() )
 //DAVID: // es tomado como comentario, por eso se separa
 QOUT( '<A href="http:/'+'/www.harbour-project.org" >' )
  QQOUT( 'http:/'+'/www.harbour-project.org </A>' )
QOUT('<br>')
QOUT('<b>Navegador:</b> '+SGCGIvaria("HTTP_USER_AGENT") )
IF "OPERA" $ UPPE(SGCGIvaria("HTTP_USER_AGENT"))
 QOUT( '<A href="http:/'+'/www.opera.org" >' )
  QQOUT( 'http:/'+'/www.opera.org </A>' )
ELSEIF "MOZILLA" $ UPPE(SGCGIvaria("HTTP_USER_AGENT"))
 QOUT( '<A href="http:/'+'/www.mozilla.org" >' )
  QQOUT( 'http:/'+'/www.mozilla.org </A>' )
ENDI
QOUT('<br>')
QOUT('<b>Direccion IP:</b> '+SGCGIvaria("REMOTE_ADDR") )
QOUT('<br>')
QOUT('<b>Metodo:</b> '+SGCGIvaria("REQUEST_METHOD") )
QOUT('<br>')
QOUT('<b>Script:</b> '+SGCGIvaria("SCRIPT_NAME") )
QOUT('<br>')
QOUT('<b>Servidor:</b> '+SGCGIvaria("SERVER_NAME") )
QOUT('<br>')
QOUT('<b>Servidor Web:</b> '+SGCGIvaria("SERVER_SOFTWARE")+'  Version:'+SGCGIvaria("SERVER_VERSION") )
QOUT('<br>')
QOUT('<b>Servidor URL:</b> '+SGCGIvaria("SERVER_URL") )
QOUT('<br>')

QOUT('<p> ')

QOUT('<div align="center"><center>')
QOUT('<table border="0" cellspacing="0" width="590" height="129" cellpadding="0">')
QOUT('  <tr>')
QOUT('    <td width="280" height="21" align="center" valign="top"><font face="Comic Sans MS"')
QOUT('    size="2" color="#CC0000">')
QOUT('    <b>Mis Oficinas Centrales<br>')
QOUT('    </b></font><font face="Comic Sans MS" size="1" color="#CC0000">Mesopotamia # 12345<br>')
QOUT('    Jardines colgantes de Babilonia<br>')
QOUT('    Guadalajara, Jal., C.P. 44000<br>')
QOUT('    </font><font face="Comic Sans MS" size="1" color="#0000FF">')
QOUT('Telefonos: 3000-0000 y 3000-0001   Fax: 3000-0002<br>')
QOUT('E-mail: <a href="mailto:dmacias@mail.udg.mx">dmacias@mail.udg.mx</a></font></td>')
QOUT('  </tr>')
QOUT('</table>')
QOUT('</center></div>')

QOUT('</BODY></HTML>' )
// Cerrar salida
SGSALIDA0()
RETU
@braços :?)
Dudu_XBase
Membro Master
Membro Master
Mensagens: 1071
Registrado em: 25 Ago 2003 16:55

Mensagem por Dudu_XBase »

Realmente Rochinha ela era mto cara mas qm pagou foi o cliente como trabalho com industrias eles sempre reservam alguma coisa para investimento as vezes sobra alguma coisa para Tecnologia...rs..mas fazia jus ao valor pago chegamos a montar um e-commerce q rodou por 2 anos ...e q enviava msg pro cliente com confirmação usando o smtpsend por baixo e gravava tudo nos dbfs...como aceitava comando xbase...eu lasquei o famoso Run e tome e-½ de confirmação de pedidos...hehehe...
Até hj suporto sites com essa tecnologia o bom q coloco comandos xbase msm inclusive "use", pro servidor eu faço upload agora somente dos dbfs com os ntx, na época eu ainda utilizava ntx apesar de ter suporte para cdx mdx e qq banco sql acessando via odbc.

// Links com informações
http://www.flashnarede.hpg.ig.com.br/msp.htm
http://www.portaldaprogramacao.com/inde ... m.asp?c=29

Procurando no google encontrei essa versão Shareware para Download nesse link.

http://www.winsite.com/bin/Info?2000000035691

Mas isso é somente para conhecer pois como dissemos ja era empresa..
// Pagina de login em msp

Código: Selecionar todos

 <HTML>
  <%
  //
  // Página login.msp
  //

  // Primeiro recolhe os dados submetidos `a pagina
  cUsuario:= MSPFieldValue("USUARIO")  
  cSenha:=   MSPFieldValue("SENHA")  

  // Abre o banco de dados "Usuarios"
  // com o indice Nomes 
  //(indexado previamente pelo campo NOME)
  USE Usuarios INDEX IndUsuario
  if ! USED()
     ? "ERRO: Não conseguiu abrir arquivo"
     quit
  endif

  // Localiza o nome de usuario 
  SEEK cUsuario

  // Testa se os dados submetidos sao validos
  if ! Found() or usuarios->senha != cSenha
 
    // Se o nome de usuario nao for encontrado
    // ou a senha associada nao coincidir,
    // exibe o formulario de entrada de dados
    // para uma nova tentativa.
    %>

    Forneça-nos seu nome de usuário e senha:<BR>
    <BR>
    <FORM ACTION="login.msp">
      Usuário: <INPUT TYPE="Text" NAME="USUARIO"><BR>
      Senha :  <INPUT TYPE="Text" NAME="SENHA">  <BR>
      <BR>
      <INPUT TYPE="Submit" NAME="Submit" Value="Login">
    </FORM>

    <% 
  ELSE 
    // Usuario e senha validados !
    // Exibir conteudo normal.
    %>
	  Seja benvindo <%= cUsuario %>	!

    <!-- Conteudo normal da sua pagina -->

    <%
  ENDIF
  %>
</HTML>

 


________________________________________________________________________________________________________
(Aow Saudade) Clipper 5.2e, Blinker 7, RDD SIXNSX, DBFCDX /Xharbour 1.0, Rdd Mediator (Mysql) Free , RDD Sqlrdd (Sql Server) Comercial
(Hoje) C# Python Sql Server e Oracle




náufel
Usuário Nível 1
Usuário Nível 1
Mensagens: 12
Registrado em: 28 Nov 2005 16:55

Mensagem por náufel »

Tivemos muitos exemplos de ferramentas que propiciam esta forma de desenvolvimento. ok.

Entretanto, não conversamos sobre a possível e provável mudança de metodologia.

Atualmente temos, aqui no fórum, alguns relatos sobre a "perseguição" ou mesmo "discriminação" dos aplicativos em modo caracter.

Quando falamos em programar para web não significa que a aplicação funcionará na internet, mas que pode, apenas, ter as características da rede. E, dentre as várias características, o apelo gráfico deve ser considerado.

Como, atualmente, o que está em xeque é o visual das aplicações, por que não desenvolvem desta forma ?

É isso.
Avatar do usuário
clodoaldomonteiro
Usuário Nível 4
Usuário Nível 4
Mensagens: 821
Registrado em: 30 Dez 2006 13:17
Localização: Teresina-PI
Contato:

Programando em Clipper para WEB

Mensagem por clodoaldomonteiro »

Amigos!

Esse clipper é um Hylander, um verdadeiro imortal.
At. Clodoaldo Monteiro
Linguagens: Clipper / Harbour
Área de Atuação: Sistemas de gestão para Prefeituras Municipais
Fones: (86)3223-0653, 98859-0236
www.simplesinformatica.com.br
Responder