Página 2 de 2
Harbour + Node.js + Nuvem + MySQL
Enviado: 16 Mar 2023 13:11
por Itamar M. Lins Jr.
Olá!
Esta conversa toda está passando a impressão que o Sr. ainda não entendeu o que é node.js nem horse.
O Harbour tem os comandos para fazer isso. O problema é aprender a usa-los. É o que entendi dessa conversa.
Rest API tem, uHttpd tem ai usando o Harbour para cria-los.
Foi o que entendi lendo a respeito do horse, node.js e demais novidades. Desse processo todo ai se for usar xBase é retrocesso.
O horse é uma LIB do Delphi para criar pequenos servidores via sockets o Harbour tem isso desde muito tempo.
Foi o que entendi desse assunto, me corrijam ai os meus possíveis erros.
Saudações,
Itamar M. Lins Jr.
Harbour + Node.js + Nuvem + MySQL
Enviado: 16 Mar 2023 14:51
por Itamar M. Lins Jr.
Olá!
Outro detalhe é que o tal NODE.JS é para usuários de HTML,PHP, Python, Perl... Que roda atrás de servidores WEB(apache...). É o que entendo desse assunto.
Harbour tem o mod_harbour e mais dois do Eric Landvai.(FastCGI)...
Outras modalidades, HTML, CSS, APACHE... o Node.js fica atrás disso tudo.
Quando vi essas "aulas" telinha com 5 linhas de comandos... Ai já é para pessoa que MANJA de outros (paranauês)... É WEB é Mobile...
Front-end, back-end é apenas a separação de quem programa em Java/Javascript do rapaz das telas do Html+CSS.
De quem faz as telas do rapaz do SGBD(BD mysql backend) por exemplo usando linguagem nativa do SQL de outras... Pq não mudou nada da época do XT para os dias atuais o PC(Personal Computer) entretanto apareceram a WEB e o Mobile(celulares) e ninguém quer ficar desenhando 2,3 telas para cada pessoa que vai acessar a mesma aplicação via celular(mobile) via desktop(.exe) via browser(Edger...) no desktop. Dai o MERCADO, precisou criar mais esses empregos pq aumentou muito o serviço. Precisa saber em qual área vc vai atuar neste cenário.
Quem é das antigas ás vezes não consegue entender ou visualizar de pronto tudo isso. Mas é "apenas" o desktop de sempre dividido em 2,3 ou 4 camadas.
Vai fazer uma aplicação para o mercado, ok. Vai tirar NFe, NFCe ? Mais outro mundo de informações para aprender.
Saudações,
Itamar M. Lins Jr.
Harbour + Node.js + Nuvem + MySQL
Enviado: 17 Mar 2023 02:38
por dbsh
Se você for investir em app para web, indico.
Next.JS + Prisma, vai te dar a oportunidade de criar App, para desktop e web simultaneamente.
Next.JS, roda em cima do node, é um framework do React, você pode programar usando Java Script ou TypeScript que é tipificado
Prisma é um ORM, que vai poder usar diversos DB, usando a mesma síntese.
Pode ser publicado na Vercel Gratuitamente. na WEB, mais fácilmente, é só fazer Deploy e já estará funcionando.
Pode ser configurado como servidor local, mais difícil um pouco.
Localmente, colocando dentro de um container Docker e usando Docker-Compose, facilita, porque inicia automaticamente mesmo quando reiniciar o servidor ou travar o container, e ainda pode ser em linux.
Com estes dois exemplos você tem um App de consulta de preço.
Exemplo de acesso a DB, com Prisma.
Este mesmo código server para MySQL, ProstGre, SQLite, SQLServer e Outros.
Código: Selecionar todos
export async function getServerSideProps(context: Context) {
const { req, res } = context;
let msg = '';
let prod: Dados = {
id: "",
gtin: "",
codigo_interno: "",
descricao: "",
id_unidade_produto: "",
preco: "",
promocao_dtinicio: "",
promocao_dtfim: "",
promocao_preco: "",
message: "",
Config: {IdFuncionario: "0", EditarPreco: "S", EditarPromocao: "S"},
}
try {
await prisma.produto.findFirst({
where: { GTIN: req.body.gtin || '' },
select: {
ID: true,
GTIN: true,
CODIGO_INTERNO: true,
DESCRICAO: true,
ID_UNIDADE_PRODUTO: true,
VALOR_VENDA: true,
},
})
.then((p) => {
debug.log(`PROMISSE RETORNADA: ${p?.ID} ${p?.GTIN} ${p?.DESCRICAO}`);
if (p?.ID) {
debug.log('ID: ' + p.ID);
prod.id = p.ID.toString();
prod.gtin = (p?.GTIN ? p?.GTIN : '');
prod.codigo_interno = (p?.CODIGO_INTERNO ? p.CODIGO_INTERNO : '');
prod.descricao = (p?.DESCRICAO ? p.DESCRICAO : '');
prod.id_unidade_produto = p.ID_UNIDADE_PRODUTO.toString();
prod.preco = (p?.VALOR_VENDA ? p.VALOR_VENDA.toString() : '');
} else {
msg = `produto nao foi cadastrado ${req.body.gtin}`;
debug.log(msg);
}
})
.catch((erro) => {
msg = `Consulta falhou na query produto.findFirst ${erro.message}`;
debug.log(msg);
});
} catch (e: unknown) {
msg = `Consulta falhou no acesso ao DB, tabela produto.findFirst ${(e as Error).message}`;
debug.log(msg);
};
}
As informações sensíveis, senha de login, usuário e todas informações do DB roda no servidor, não vai para o navegador.
Só os dados daqui para baixo.
Código: Selecionar todos
export default function IndexPage(props: Dados) {
const [camera, setCamera] = useState(false);
const [editar, setEditar] = useState(true);
const [config, setConfig] = useState<bp_Config>();
const [result, setResult] = useState<string>('');
const onDetected = (result: string) => {
setResult(result);
};
return (
<>
<div className="FlexContainer">
<img className="logosys" src="/logo/tela_backgroud.jpg" alt="logo sistema" />
<button
className="btncamera"
type="button"
onClick={(e) => {
setCamera(!camera);
debug.log('clicou btnCamera ' + camera);
}}
>
{camera ? "Parar" : "Camera"}
</button>
<div className="configuracoes">≡</div>
<div className="pageTitulo">CONSULTA DE PRECO</div>
<div className="formConsulta">
<form action="/" method="post">
<div>Codigo de Barra:</div>
<div>
<input style={{ display: "inline" }} type="text" className="gtin" name="gtin" max-length="20" defaultValue={result ? result : ""} /*ref={gtinInput}*/ autoFocus required />
{' '}
<button type="submit">Preco</button>
{' '}
</div>
</form>
</div>
<div className="dados">
<div className="dadosdb" style={{ display: (camera ? 'none' : 'block') }}>
<div className="sayPreco">
{props.id ? 'R$: ' + props.preco : ''}
{(editar && props.id) ? <input type="currency" name="preco1" id="preco1" className="getPreco" onInput={(e) => FormataCurrency(e)} required /> : ''}
</div>
<div className="sayPromocao">
{(editar && props.id) ? 'Promocao: ' : ''}
{(editar && props.id) ? <input type="date" name="promo1" id="promo1" className="getPromocao" defaultValue={true ? props.promocao_dtinicio : ""} /> : ''}
{(editar && props.id) ? <input type="date" name="promo2" id="promo2" className="getPromocao" defaultValue={true ? props.promocao_dtfim : ""} /> : ''}
</div>
<div>{props.descricao}</div>
<div>{(process.env.NODE_ENV === 'development' && props.id_unidade_produto) ? 'UNIDADE: ' + props.id_unidade_produto : ''}</div>
<div>{(process.env.NODE_ENV === 'development' && props.gtin) ? 'GTIN:' + props.gtin : ''}</div>
<div>{(process.env.NODE_ENV === 'development' && props.codigo_interno) ? 'INTERNO:' + props.codigo_interno : ''}</div>
<div>{(process.env.NODE_ENV === 'development' && props.id) ? 'ID:' + props.id : ''}</div>
<div className="message">{props.message}</div>
</div>
<div className="container">
{camera && <Scanner onDetected={onDetected} />}
</div>
</div>
</div>
</>
);
}
Harbour + Node.js + Nuvem + MySQL
Enviado: 17 Mar 2023 10:25
por mmarcondes
Pessoal, obrigado pela ajuda de todos, vou continuar meus estudos.
Harbour + Node.js + Nuvem + MySQL
Enviado: 27 Mai 2023 15:58
por Charly
Olà,
Eu recomendo UT que é tudo harbour e permite que você crie aplicações web com pouco conhecimento.
Eu coloquei um exemplo esta semana neste fórum para que você pudesse ver o que você pode fazer com esta ferramenta.
Claro, esta ferramenta é focada na web.
Se você baixar o pacote há uma demonstração de acesso ao mysql
Não sei se neste fórum há debate sobre web...
Saudações
C.
Harbour + Node.js + Nuvem + MySQL
Enviado: 28 Mai 2023 02:24
por alxsts
Olá!
Itamar M. Lins Jr. escreveu:Até onde sei, node.js não é linguagem, é um amontoado de funções em JavaScript.
Quer dizer é JAVA um monte de funções dentro de um outro programa.
JAVA é uma coisa e JavaScript é outra:
Qual é a diferença entre o JavaScript e o Java?
Sobre Node.Js:
https://www.alura.com.br/artigos/node-js-definicao-caracteristicas-vantagens-usos?gclid=CjwKCAjw1MajBhAcEiwAagW9MRM7HSYLHt82QeO0qkFe3hVJx05HnCYz7duzHqsMg2a-IOaLcjUaJhoC2sIQAvD_BwE
Harbour + Node.js + Nuvem + MySQL
Enviado: 29 Mai 2023 08:42
por mmarcondes
Pessoal, não tem jeito de criar uma API com Harbour ? Passei final de semana lendo e relendo postagens aqui no fórum, e parece que o Harbour tem tudo o que precisa, só não é difundido e poucos fizeram algo nesse sentido, e quando fizeram não deixaram público aqui.
Harbour + Node.js + Nuvem + MySQL
Enviado: 29 Mai 2023 16:25
por mmarcondes
Pessoal, vim aqui deixar meu muito obrigado a quem usou seu tempo para me ajudar, mas analisando bem, e depois de ver muito material aqui no Fórum, percebi que muita informação útil está fragmentada, não tem exemplos sobre como usar API. Vou parar com Harbour, já não tenho mais tanto tempo, vou procurar outra linguagem mais moderna para estudar.
Harbour + Node.js + Nuvem + MySQL
Enviado: 29 Mai 2023 18:45
por ivanil
mmarcondes escreveu:Pessoal, vim aqui deixar meu muito obrigado a quem usou seu tempo para me ajudar, mas analisando bem, e depois de ver muito material aqui no Fórum, percebi que muita informação útil está fragmentada, não tem exemplos sobre como usar API. Vou parar com Harbour, já não tenho mais tanto tempo, vou procurar outra linguagem mais moderna para estudar.
Talvez não foste feliz com o resultado da busca por conta da diversidade que envolve o assunto; acredito que quando você diz criar uma api pelo harbour, esteja querendo dizer consumir uma API pelo harbour correto?
Uma api para ser implementada depende da documentação, e vai variar de acordo com a complexidade imposta;
veja um exemplo simples consumindo a API do viacep:
Código: Selecionar todos
Static Function TabCEP_Cep_Action(oQuery )
Local oPg,cBuf,hBuf,cCep:=Transform(StrZero(val(this.value),8),"@R 99999999")
Local cSQL:="Select * from tabcep where cep='"+cCep+"'"
oQuery.Open(cSQL)
if oQuery.Eof()
oPg := CreateObject("Microsoft.XMLHTTP")
oPg:Open("GET","http://viacep.com.br/ws/"+cCep+"/json/",.F.)
oPg:Send()
cBuf := oPg:responseBody //ResponseText
cBuf := hb_UTF8ToStr(cBuf)
hb_jsonDecode(cBuf,@hBuf)
if valtype(hbuf)="H".and.!hb_hHaskey( hBuf,'erro')
oQuery.AddNew()
If oQuery.ErrorSQL()
Return FALSE
Endif
oQuery.Field.CEP.value := cCep
oQuery.Field.Logradouro.Value := hBuf["logradouro"]
oQuery.Field.Complemento.Value := hbuf["complemento"]
oQuery.Field.Bairro.Value := hbuf["bairro"]
oQuery.Field.Localidade.Value := hbuf["localidade"]
oQuery.Field.Uf.Value := hbuf["uf"]
oQuery.Update()
If oQuery.ErrorSQL()
Return FALSE
Endif
oQuery.Open(cSQL)
endif
endif
tabcep_ToolbarAction(0,Nil,oQuery)
tabcep.Cep.Value := cCEP
Return .T.
Perceba que tudo depende do que foi implementado no servidor; não é algo absoluto.
https://github.com/ivanilmarcelino/desi ... s/BuscaCEP
Agora se sua ideia é criar uma API para ser consumida por terceiros, é muito mais produtivo usar as linguagens próprias para isso que já tem pacotes pré-prontos; é uma tremenda besteira achar que tudo tem que ser feito numa única linguagem.
Boa sorte.
Harbour + Node.js + Nuvem + MySQL
Enviado: 31 Mai 2023 13:24
por cleitonLC
mmarcondes escreveu:Pessoal, vim aqui deixar meu muito obrigado a quem usou seu tempo para me ajudar, mas analisando bem, e depois de ver muito material aqui no Fórum, percebi que muita informação útil está fragmentada, não tem exemplos sobre como usar API. Vou parar com Harbour, já não tenho mais tanto tempo, vou procurar outra linguagem mais moderna para estudar.
Boa tarde, me permita discordar um pouco, mas é sim possível criar uma api restful com harbour e também como vimos nos comentários mais acima podemos consumir uma api também, e essa api pode ser feita em node, python, java, php, harbour ou seja, para consumir uma api idepende de quem a criou, você vai ter que criar um client http e consumir essa api que na maioria das vezes é GET, POST, PUT e DELETE ...verbos http nada mais.
A grande questão aqui é a confusão que se faz com o lance do node.js que é apenas um framework (um ambiente de desenvolvimento javascript para desktop) usa a mesma linguagem da web que é javascript,mas com foco no backend, pode-se desenvolver muitas aplicações com node desde apis a aplicações mais complexas usando electron que é uma espécie de app web pra desktop, mas o mesmo pode ser feito com harbour cada um a sua maneira por exemplo, para criar uma api básica com harbour tem a resposta do Itamar
https://pctoledo.org/forum/viewto ... 64#p128933 que acho que nem ele lembrava mais disso kkk, mas é uma boa pra iniciar com harbour, exemplos mais complexos você pode ter com o
https://github.com/FiveTechSoft/mod_harbour .
Harbour + Node.js + Nuvem + MySQL
Enviado: 31 Mai 2023 13:35
por cleitonLC
mmarcondes escreveu:Pessoal, não tem jeito de criar uma API com Harbour ? Passei final de semana lendo e relendo postagens aqui no fórum, e parece que o Harbour tem tudo o que precisa, só não é difundido e poucos fizeram algo nesse sentido, e quando fizeram não deixaram público aqui.
Como eu disse acima com node você consegue desenvolver apis de forma mais simples talvez, do que usando harbour...
Um exemplo que deixo aqui é o seguinte
https://github.com/cleitonleonel/Impres ... _iFood.git que é basicamente um server em node, que serve alguns endpoints simples para possiilitar a impressão de pedidos direto do sistema
https://gestordepedidos.ifood.com.br/#login , que é o gestor de pedidos do ifood em versão web.
Esse sistema do ifood só permite a impressão via windows, instalando uma extensão que não tem pra linux, daí a necessidade de desenvolver essa solução para usuários linux, optei por usar node.js, mas poderia ter usado python e porque não harbour

?
Logo é algo totalmente possível com base em outras linguagens, bastando apenas adaptar algumas coisas, usar uma lib do harbour para acessar o cups e desenvolver uma solução para linux com harbour visando solucionar esse problema em específico.
Espero ter ajudado com alguma informação relevante.
Harbour + Node.js + Nuvem + MySQL
Enviado: 31 Mai 2023 13:42
por Itamar M. Lins Jr.
Olá!
confusão que se faz com o lance do node.js que é apenas um framework
Já falei aqui n vezes... O pessoal nem sabe o que são essas ferramentas.(inclusive eu)
Já expliquei comece com HTML e uHTTP/Apache. Para ter uma noção.
Depois CGI, depois Harbour como CGI... Mas não, vem perguntando disso, daquilo, API, JAVA, JAVASCRIPT... Pq Java é assim, Javascript é assado. Nunca fizeram nada.
Cria uma pagina em HTML... Só isso e depois coloca GET depois POST para entender a diferença vai aos poucos.
Mas já vem querendo saber de coisas ACIMA do básico. Primeiro o básico depois o mais complexo, quanto as definições o que é isso ou aquilo, isso não importa o importante é saber usar.
Quer saber de API, já aprendeu a usar o APACHE ? Sabe configurar o APACHE ? Depois temos o MOD_HARBOUR FASTCGI... tem tanta coisa que eu nem sei se existe necessidade de sair do Harbour. Só mesmo por conta dos exemplos que realmente o iniciante encontra dificuldade. Mas é pq querem sempre colocar a carroça na frente dos bois.
Sem entender HTML PODE ESQUECER TUDO ISSO AI, de NODE, etc...
Saudações,
Itamar M. Lins Jr.
Harbour + Node.js + Nuvem + MySQL
Enviado: 09 Jul 2023 17:37
por microvolution
mmarcondes escreveu:Pessoal, vim aqui deixar meu muito obrigado a quem usou seu tempo para me ajudar, mas analisando bem, e depois de ver muito material aqui no Fórum, percebi que muita informação útil está fragmentada, não tem exemplos sobre como usar API. Vou parar com Harbour, já não tenho mais tanto tempo, vou procurar outra linguagem mais moderna para estudar.
Excelente decisão. Passei 5 longos anos de minha vida migrando clipper para harbour e os materiais são poucos. Se não tivesse tão honroso fórum, aí q nada teríamos.
Enfim, nadei, nadei e morri na praia.
Então, resolvi migrar de desktop pra mobile. Analisei no mercado diversas opções, tais como: Flutter, Kotlin, java, javascript, react, react native, etc...
Depois que descobri que a Embarcadero - dona do Delphi, liberou a versão Delphi CE q é 100% grátis. Não tive dúvida.
Estou há mais de 1 ano estudando e material é o q não falta. Já tenho até um app (desktop + mobile[ios/android]) funcionando inclusive com servidores nativos em RESTDATAWARE, NODE.JS e HORSE.
Essa é minha sugestão pra nós que estamos acostumados com programação procedural e mudar para algo mais fácil.
Sucesso!
Harbour + Node.js + Nuvem + MySQL
Enviado: 09 Jul 2023 18:00
por fladimir
Eu, o Janio, Alamino, Automono, talvez até outros, mas esses são os q sei e acompanho, mudamos a cerca de 5 anos para o Windev, é pago, mas vale cada centavo, salvou meu legado, sintaxe muito próxima do xBase, além das facilidades da IDE/Ferramenta, não falo mais nada quem quiser mande mensagem em particular, já fomos muito criticados aqui, talvez pelo fato de ser uma ferramenta paga, mas acho até bom pq sei q tem uma probabilidade de continuidade maior e evolução da mesma.
Atualmente tem sistemas e módulos em desktop integrado com Mobile e webservices tudo criado pela ferramenta, tb tenho uma sistema extranet web q fiz pra uso na minha empresa.
Recomendo 100%
Abraço e sucesso a todos os guerreiros q ainda conseguem sobreviver no harbour/xharbour sem nada mobile/web, eu realmente não sei como conseguem mas parabenizo e torço pra q continuem pq a realidade, pelo menos pra mim, se não evoluisse iria perder drasticamente mercado etc etc.