Jump to content
Fivewin Brasil

emotta

Membros
  • Posts

    1,609
  • Joined

  • Last visited

  • Days Won

    88

Everything posted by emotta

  1. Divirta-se Kapiaba. https://github.com/harbour/core/tree/master/tests/mt
  2. Se for pra usar em xharbour não recomendo, embora o JMsilva diga o contrário. Mas no meu caso tive problemas com o sistema fechando do nada por nenhum motivo aparente. Em harbour funciona legal, tanto é que tive um aplicativo de catracas comunicando simultaneamente com várias via TCP/IP. Então em Harbour vc vai conseguir ter sucesso Multithread é uma forma de vc criar vários processos dentro do mesmo executável (único PID) e com memória separada pra cada thread. Por exemplo: vc pode colocar o sistema pra fazer uma atualização de preços e em paralelo colocar pra gerar um relatório, mesmo a rotina de atualização de preço ainda sendo processada. O fato da sua solução ter funcionado me deu um nó na cabeça pq não está separando a memória entre os processos, talvez por isso o Edu tenha mencionado que as variáveis tem que ter outros nomes pra não dar erro. Se vc se interessar eu posto uns exemplos aqui posteriormente, aí vc vai ver na prática. Faça o teste em xharbour e dps em harbour, no meu caso só tive sucesso em harbour.
  3. Eu tive experiências ruins com multithread em xharbour, mas em harbour usei com sucesso. Vc tá usando bem em xharbour ou harbour?
  4. Edu tá tranquilo, estou com o sistema na web agora, uso o xharbour console apenas pra fazer processamento de fila apenas. A versão desktop que tínhamos foi descontinuada Mas se isso realmente funcionar bem eu queria ter visto a 10 anos atrás, teria sido importante pois foi qdo fiz os testes de multithread em que o objetivo era exatamente esse (na época). Em aplicações web a coisa muda completamente, é praticamente nativo possibilitar o usuário abrir várias janelas no browser e processar coisas em paralelo.
  5. Edu se colocar isso em produção e funcionar bem reporte aqui por favor. Tudo está rodando na mesma thread e em todos testes que já fiz de coisas semelhantes, inclusive multithread, tive problemas. Mas se der certo em produção tenho que tirar o chapéu pro Kapiaba, procurei uma solução dessa por anos e nunca encontrei.
  6. Legal kapiaba, vms esperar o Edu se pronunciar sim, com certeza. Mas enquanto ele não o faz me tira uma dúvida: nessa sua sugestão vc consegue deixar gerando um relatório que demora uns 5min pra processar, e enquanto está processando vc minimiza a dialog e, sem abrir outro executável, abrir o cadastro de cliente e incluir um novo cliente? Veja bem, tudo isso no mesmo executável, sem abrir outra instancia. Eu pergunto isso pois foi isso que entendi da necessidade do Edu, que pode ser um relatório ou algum processamento mais demorado, que em vez do usuário abrir outro executável pra fazer outra operação ele deseja apenas minimizar e fazer outras coisas enquanto o processamento ocorre. Tudo isso sem abrir um novo executável. E aí Edu, entendi errado o q vc pediu?
  7. Ele escreveu isso na pergunta, ele quer minimizar a dialog enquanto a rotina segue processando e na mesma instancia continua fazendo outra coisa enquanto a rotina processa. Colocar na tray tb não é solução pq se está na tray ele não consegue ficar usando a mesma instancia. Como multithread não funciona legal com xharbour, a solução é mesmo abrir outra instancia do executável. Não vejo outra maneira.
  8. Kapiaba vc viu que o problema não é minimizar e abrir outra rotina, o problema e deixar rodando uma rotina processando, minimizar a janela e ir fazendo outra coisa enquanto a rotina roda no background. Como falei, só com multithread pra fazer isso e xharbour não funciona bem nesse ponto.
  9. Xará não dá, pra funcionar assim teria que ser multithread e isso não funciona legal com xharbour. O que ele tem que fazer é abrir outra instancia do sistema.
  10. Mas eu consigo receber todos os funcionários, deste empregador, que estão no esocial? tem um exemplo (em qualquer linguagem) para fazer a chamada e obter o resultado? Preciso apenas do cadastro de funcionários ativos.
  11. Essa é pra quem faz algo no eSocial: É possivel, via programa, baixar a tabela de funcionários da empresa que estão registrados no eSocial. Já sei que pra isso é necessário o certificado digital da empresa, mas o que mais é necessário? Alguem tem o link com a documentação da API? vlwwww
  12. segue o link, porem o ultimo commit foi em 2010. https://code.google.com/archive/p/sqllib/source/default/source
  13. emotta

    sql

    vc está usando SQLRDD?
  14. o exemplo que te mandei é pra xHarbour, mas pra Harbour basta adicionar o include de compatibilidade. Segue o fonte compativel para Harbour #include "hbcompat.ch" Function u_Teste() Local cLink := "https://economia.awesomeapi.com.br/json/daily/USD-BRL/?start_date=20180901&end_date=20180930" cResult := Emt_GetHtml(cLink) MsgStop(cResult) Return Static Function Emt_GetHtml(cLink) Local oOle Local cHtml := "" Try oOle := CreateObject( "Microsoft.XMLHTTP" ) oOle:Open( "GET", cLink, .f. ) oOle:Send() cHtml := oOle:ResponseBody oOle := nil Catch End Return cHtml
  15. Function u_Teste() Local cLink := "https://economia.awesomeapi.com.br/json/daily/USD-BRL/?start_date=20180901&end_date=20180930" cResult := Emt_GetHtml(cLink) MsgStop(cResult) Return Static Function Emt_GetHtml(cLink) Local oOle Local cHtml := "" Try oOle := CreateObject( "Microsoft.XMLHTTP" ) oOle:Open( "GET", cLink, .f. ) oOle:Send() cHtml := oOle:ResponseBody oOle := nil Catch End Return cHtml
  16. Feliz natal a todos e um abençoado 2022
  17. emotta

    filtro

    se vc usa o SQLRDD pode usar o SR_SETFILTER e colocar a clausula WHERE como colocaria em um select no banco de dados
  18. sql express 2008 tem um limite de 4gb por database sugiro instalar o sql express a partir da versão 2012 que tem um limite de 10gb por database
  19. eu fui dar uma zapeada nos primeiros posts e peguei um que não foi dado solução
  20. Alberto gostei da sua analogia com o que vivemos na época de migração de DOS para Windows, é bem isso mesmo. Sobre o xharbour gerar código C não é bem assim. O xharbour gerar uma espécie de PCODE em C e não necessariamente ele converte pra C. Faça um hello world em xharbour e veja o código C gerado, nada tem a ver com um hello world que seria feito em C. Então infelizmente esqueça essa alternativa, mod_harbour pode ser um caminho, mas ainda é preciso ver como ele se sai na realidade.
  21. É importante entender o conceito da WEB onde não se guarda o estado da aplicação, ou seja, em cada request se faz a validação do usuário, prepara o ambiente e executa a operação. Em aplicação desktop nós criamos uma tela de login e uma vez o usuário logado ele vai usando o sistema e vamos guardando o estado de tudo que ele vai fazendo, ou seja, ele se logou e e selecionou os dados da empresa 0001, fez um filtro no browse e acessou o cadastro do cliente e alterou o endereço... é como se tudo fosse sendo colocado em uma pilha de operações. Em WEB o conceito é completamente diferente, não se guarda o estado da sessão, na verdade até é possivel mas ai o seu sistema vai consumir muito recurso do servidor e ficará muito caro. A idéia da web é que cada request seja independente de um request anterior, fazendo dessa forma o servidor vai aguentar muito mais usuários simultâneos. Então aproveitar código até se consegue mas mesmo assim boa parte dele será alterado, isso se partir pra confiar no mod_harbour que ainda é muito recente e até hoje não vi nenhuma aplicação dele em produção, com certeza existe mas eu não vi. Eu resolvi não esperar e escolhi Ruby on Rails no backend e no front o React.js e tenho algumas rotinas escritas em xharbour processando em background algumas regras de negócio e relatorios gerando pdf. Estou com mais de 3mil usuários utilizando o sistema e com máquinas não muito potentes segurando tudo no Azure e por enquanto esta tranquilo. Infelizmente tive que deixar o fivewin mas confesso que é muito bom não ter mais cliente ligando para o suporte relatando problemas que não conseguem acessar pq falta alguma dll (que o estagiário ou o antivirus apagou) ou pq está dando algum conflito com aplicativo do banco instalado na maquina. O bom das aplicações WEB é que estes problemas não existem porem surgem outros que temos que aprender a lidar.
  22. Procurei, não encontrei, então fiz um. Se for util pra alguem divirta-se #xcommand DEFAULT <v1> := <x1> [, <vn> TO <xn> ] => ; IF <v1> == NIL ; <v1> := <x1> ; END ; [; IF <vn> == NIL ; <vn> := <xn> ; END ] Function PortScan(cServerIPAddress, cPort1, cPort2) LOCAL pSocket Local nI Local nPort Local nPort1 Local nPort2 Default cServerIPAddress := "127.0.0.1" Default cPort1 := "3000" Default cPort2 := AllTrim(Str(Val(cPort1) + 10, 6)) nPort1 := Val(cPort1) nPort2 := Val(cPort2) INetInit() ? "Inicando scan em "+cServerIPAddress+" de "+cPort1+" ate "+cPort2 ? nPort := nPort1 While nPort <= nPort2 pSocket := INetConnect( cServerIPAddress, nPort ) IF INetErrorCode( pSocket ) <> 0 ? "Falha: Porta = ", nPort Else ? "SUCESSO: Porta = ", nPort INetClose( pSocket ) ENDIF If Inkey() # 0 exit EndIf nPort++ EndDo INetCleanUp() Return
  23. Pessoal, alguem usa algum programa que lista as portas tcp que estão abertas na máquina? Já testei vários da internet então não adianta recomendar algo que você fez uma pesquisa no google e está indicando, quero pedir para só indicarem se usarem algo nesse sentido. Caso contrário é um trabalho que já fiz, baixei uns 10, e nenhum atendeu o que realmente preciso. Preciso de um programa que informo o IP e ele varre as 65mil portas TCP deste IP e me retorna as que estão com algum serviço escutando nesta porta. Se usarem algo me indiquem por favor vlwwww
×
×
  • Create New...