Jump to content
Fivewin Brasil

emotta

Membros
  • Posts

    1,609
  • Joined

  • Last visited

  • Days Won

    88

Everything posted by emotta

  1. Acredito que aqui seja o local correto http://fivewin.com.br/index.php?/forum/17-off-topic/
  2. Os caras da KasperskyLab fizeram um descompilador (x)Harbour Esses caras são fodas mesmo hein
  3. Tem algo no seu fonte, programa inicial ou no .BC que chama INV? Se você também colocar após ter feito o que começou a dar esse erro ajuda. Pelo que estou deduzindo é algo na compilação e com relação ao nome do programa chamado, mas como nunca vi esse tipo de erro preciso de mais informações.
  4. LGPD é só informação que identifica uma pessoa ou a torna identificavel. Neste caso se a informação se referir somente ao carro, sem qualquer informação que consiga identificar uma pessoa ou a tornar identificável não tem relação a LGPD. Exemplo de informação que identifica uma pessoa: CPF, RG, PIS, etc Exemplo que torna uma pessoa identificável: GERENTE FINANCEIRO DA EMPRESA XXXXXXXXXXXXXXXX Então seguindo essa lógica é só analisar a informação retornada pela API pra saber se tem ou não relação com a LGPD
  5. Outro detalhe é que o seu exemplo acima é totalmente diferente da necessidade do início do post. No seu exemplo é só usar o Lock de registro da linguagem que é mais eficiente. O semáforo que me refiro serve muito bem, e sem falhas de gravação, para a situação de checagem se ainda está disponível após a confirmação e antes da gravação. Só uma observação, tenho um sistema de processamento em fila usando essa técnica de semáforo um pouco modificada para 200 clientes com acesso simultâneo e funcionando sem QQ problema, inclusive qdo o sistema cai por falha de conexão com o banco ele retoma o processo sem intervenção manual e ajuste de base. Vai por mim, funciona e bem.
  6. Não vai travar nada pra consulta Na gravação é feito um por vez, pense em quanto tempo demora desde o append até o commit, vms imaginar q demora 1 décimo de segundo. Neste caso os 18 que estão consultando o farão sem problemas, lembre-se o Lock é só pra gravação, e os outros dois q estão gravando um vai esperar 1 décimo de segundo e o outro vai esperar 2 décimos de segundo ou melhor um piscar de olhos . Lembrando que o Lock a que me refiro é a técnica de semáforo que expus acima.
  7. Vou tentar detalhar melhor: Continuando o exemplo do Edu o funcionando seria da seguinte forma: - Quando o cliente ligar para agendar o horário as 09:00 então se deve criar o semafaro com o seguinte nome "AGENDA.SMF". Esse seria o nome do arquivo do semafaro - Após o comando ABRESEM se faz uma nova checagem na tabela para ver se o horário está mesmo liberado. Se não tiver mais disponivel o semafaro deve ser fechado (FECHASEM) e informado que o horário foi preenchido para outro - Se o horário ainda estiver liberado o sistema prossegue com a gravação e após o commit se executa o FECHASEM liberando o semafaro - Se antes do COMMIT ocorrer algum erro e a instancia cair o semafaro é liberado automaticamente pois ao fechar a aplicação o handle do arquivo é liberado. O processo desta forma é infalivel pois vc faz um LOCK geral, ou seja, ninguem mais grava até o semafaro ser liberado, e só então checa a disponibilidade do horário. Entre o ABRESEM e o FECHASEM ninguem conseguirá gravar por isso é importante que nesse trecho de código não exista pontos de interrupção como MSGSTOP por exemplo. Esse conceito de semafaro (LOCK) é muito usado em sistemas multithreads para que a aplicação não gere GPF no acesso a variaveis, pois se duas threads tentarem gravar a mesma variavel ao mesmo tempo é gerado GPF. Quem já mexeu com threads no xHarbour sabe do que estou falando, em Harbour não existem esses GPFs pq a própria linguagem faz o lock pra vc (alem de outros controles). *OBS: os semafaros em multithreads não são em arquivos, é feito de outra forma, eu apenas quis exemplificar o conceito.
  8. se a instancia cai o semáforo é liberado, não precisa ter acerto de dados nesse sentido. Então se a instancia cair após aberto o semáforo e antes de finalizar a transação que posteriormente libera normalmente, apesar do arquivo criado a outra instancia vai conseguir criar o semáforo pra ela.
  9. Entendi a sua solução proposta que resolve mas gera esses efeitos colaterais que eu não gosto muito por causa dos efeitos. Na solução de semafaro o handle é liberado se a instancia cair.
  10. Não aconselho a fazer isso pois a longo prazo vai fatalmente acabar resultando em registros marcados como "travados" mas que na realidade não estão pois ocorreu algum crash antes de retirar o flag de travado. O ideal é fazer o controle fora da tabela.
  11. Sugiro criar um semafaro antes de checar a existencia do registro. Você checa a existencia e não existindo você grava e libera o semafaro. Se já existir vc libera o semafaro e não grava e avisa o usuário que esse horário já está reservado para outra pessoa. O semafaro você pode fazer por arquivo mesmo, segue abaixo um exemplo de funcao de semafaro que uso a muitos anos e com sucesso Function u_Teste() Local nSmf While .t. If !MsgYesNo("Deseja continuar o teste") Exit EndIf nHSmf := AbreSem() MsgStop("vou gravar") FechaSem(nHSmf) MsgStop("semafaro liberado") EndDo Return Static Function AbreSem(cFile) Local nHSem If cFile == nil cFile := "semafaro.smf" EndIf While (nHSem:=FCreate(cFile))==-1 fErase(cFile) Inkey(.1) EndDo Return nHSem Static Function FechaSem(nHSem,cFile) If cFile == nil cFile := "semafaro.smf" EndIf FClose(nHSem) FErase(cFile) Return
  12. Pelo que eu vi vc identifica se é uma variavel pública, private criada na função atual, private criada em funções anteriores, local ou testar se a variável existe
  13. conosco já aconteceu isso o problema era o uso de uma dll hbcomm (alguma coisa parecida) como era algo que já não estavamos utilizando removemos toda referencia a isso no sistema e passamos a não precisar mais e ai parou o problema
  14. Se vc tiver a possibilidade recomendo usar o VS CODE xDev infelizmente foi descontinuado
  15. SQLLIB é a do Vailton? Eu não a usei mas acredito que não tenha problema, basta usar o driver ODBC, mas digo isso na teoria. Eu uso na boa o SQLRDD com o express, inclusive as ultimas versões, normalmente.
  16. Fiz essa função a alguns anos, antes de conhecer a padrão do xHarbour. Ela tem algumas limitações e não aconselho usar, a padrão da linguagem é a melhor, mas realmente se precisar que seja ordenado veja o que essa te ajuda. No exemplo abaixo o resultado é exatamente o q vc pediu #define CRLF Chr(13)+Chr(10) Function u_Teste() Local hJson := Hash() Local cJSon HSetAACompatibility(hJson,.t.) hJson['campo3'] := 'teste 3' hJson['campo1'] := 'teste 1' hJson['campo2'] := 'teste 2' cJSon := _u_HashToJson_OLD(hJson) MsgStop(cJSon) Return Static Function _u_HashToJson_OLD(hPar) Local cParam := "{"+CRLF Local nI Local nJ Local uVal2 Local uVal Local aKey Local cKey Local nRealPos aKey := hGetKeys(hPar) For nI:=1 to Len(aKey) If HGetAACompatibility(hPar) nRealPos := HaaGetRealPos( hPar, nI ) cKey := HGetKeyAt( hPar, nRealPos ) Else cKey := aKey[nI] EndIf uVal := hPar[cKey] If ValType(uVal)=="C" uVal := '"'+Alltrim(uVal)+'"' ElseIf ValType(uVal)=="N" uVal := Alltrim(Str(uVal)) ElseIf ValType(uVal)=="D" uVal := '"'+DtoC(uVal)+'"' ElseIf ValType(uVal)=="A" uVal2 := "["+CRLF For nJ := 1 to Len(uVal) uVal2 += _u_HashToJson_OLD(uVal[nJ]) If ! nJ == Len(uVal) uVal2 += "," EndIf Next uVal2+="]"+CRLF uVal := uVal2 ElseIf ValType(uVal)=="H" uVal := _u_HashToJson_OLD(uVal) ElseIf Empty(uVal) uVal := '""' EndIf cParam += '"'+cKey+'":'+uVal If ! nI == Len(aKey) cParam += "," EndIf cParam += CRLF Next cParam += '}'+CRLF Return cParam
  17. Alex o jeito é escrever uma HB_JSONENCODE na mão, mas não aconselho isso. Agora apenas por curiosidade, pq vc precisa que seja ordenado? Que eu não sabe o padrão JSon não exige que esteja ordenado.
  18. mas falando sério agora, embora de forma errada (senti uma rincha pessoal) o que o Eric falou procede mesmo, alterar classes do fivewin é buxa depois pra atualizar. O ideal é quando precisar fazer algo assim criar uma classe própria herdando a original e mesmo assim quando atualizar a versão do fivewin corrigir o método que foi customizado.
  19. Curriculum com senha? A vaga era pra programador ou pra agende secreto? ahahahahha
  20. Eu sei que essa não é a resposta para o seu problema mas eu recomendo mudar para VSCODE. Estude e assim que possivel faça essa migração. Falo por experiência própria, no ano passado eu fiz essa migração de xDev para VSCODE pra mim e minha equipe e foi excelente. Isso não tem nada a ver com o xDev que é um excelente editor mas foi descontinuado. Como bonus com o VSCODE vem a integração com o GIT, se não utiliza o GIT para o controle de versão de fontes fica a dica. Foi outra boa experiencia que tivemos ao migrar do Team Foundation para o GIT. Abraços
  21. essa lei é totalmente relacionada com programação e todos temos que ficar atentos pq a punição é multa e multa por infração. Um orgão está sendo criado pra acompanhar isso ANPD dizer q isso não tem relação com programação ou criticar quem se dispõe a debater um assunto tão importante mostra um desconhecimento grande do que faz parte ao nosso trabalho e tem relação direta com a qualidade do serviço que entregamos ao nosso cliente. Mas vamos ao mais importante, isso que ocorreu não tem importancia... Vamos trocar sim informações aqui neste tópico a menos que o cara que de fato manda no forum, que é o Gilmer, tiver algum impedimento. Gilmer, seria até interessante se vc puder se manifestar aqui sobre o que vc sabe a respeito da LGPD e tb se considera que esse assunto vale a pena ser discutido aqui no forum ou não. Abraços
  22. mas não fui eu que criei o tópico, se não concordou reclame com quem criou não comigo... é cada doido q me aparece....
  23. a questão não é confiar, a Lei exige que tenha um responsável... basta ler e verá... um advogado vai te dar orientação legal mas não técnica, ele vai dizer o que vc precisa colocar me contrato mas não o que tecnicamente precisa fazer... se vc é funcionário pode ficar tranquilo, essa responsabilidade não é sua, é só seguir as ordens de quem precisa resolver isso.... agora se vc é dono é bem preocupante esse seu discurso, como falei, está completamente por fora do que está escrito na lei.
  24. E qdo for restaurado e cair na mão do programador? Se ele vazar os dados vc se ferrou A poha não tem besteira, se vc acha isso é pq ainda não entendeu a lei. Vc pode até achar q a lei é exagerada, desnecessário, cheia de frescura e mais uma série de coisas que até concordo, mas falar q só colocar senha na hora do backup resolve vc está bem por fora....
  25. muito legal esse link, vou ler
×
×
  • Create New...