2º Dia do ACBR

Dia 14 de setembro (2019) acontecerá o 2º Dia do ACBr, onde participarei com uma palestra sobre Firebird!

O título da apresentação é Firebird – a escolha certa! Já ministrei essa palestra em outros eventos diversas vezes, sempre com muito sucesso, mas dessa vez levarei dados atualizados sobre casos de uso reais, que devem chamar a atenção dos presentes.

Quando criei essa apresentação, o fiz porque já estava cansado de ouvir “bobagens” de pessoas que não conhecem o Firebird a fundo, e que por algum motivo insistiam em dizer que ele é um “banquinho”, que não aguenta grandes bases de dados nem muitas conexões simultâneas. Besteira! No decorrer da palestra, provarei que essas pessoas não sabem o que falam, ou estão muito desinformadas.

Ela também é indicada para aqueles que estão procurando por uma alternativa de banco de dados que seja confiável, robusto, open source, e gratuito para qualquer tipo de utilização! O Firebird é um ótimo candidato para esse cenário, e isso ficará muito claro no decorrer da apresentação.

Falarei um pouco de tudo: desde um resumo do que é e como surgiu o Firebird, as versões já lançadas, seus principais recursos, um pequeno comparativo com outros SGBDs, casos de uso reais, etc.

Convido a todos que tiverem interesse em conhecer um excelente banco de dados, que assistam minha palestra no 2º Dia do ACBr. E se você já usa Firebird e não aguenta mais ouvir besteiras, assista a palestra também, e saia de lá com munição para acabar de vez com os argumentos dos desinformados ou criadores de intrigas 🙂

Crazy fan speed on rog laptop

After several months using an ASUS ROG GL503GE notebook, its fans started to behave in a strange way.

With no reason, the GPU fan speed jumps to 7000rpm. Sometimes, it stays there for hours, sometimes it keeps waiving. Usually, after some hours, it stabilized in normal speed (at last until the next reboot).

I checked the internet forums, and found several reports from people having the same problem. I tried to update and to drowngrade de BIOS, I tried to use fan control softwares, I tried to trick the ROG Gaming Center, I tried MSI Afterburner, I tried Intel XTU utilities, I update all the drivers and Windows 10 itself. Nothing solved the problem, and even worse, I could not figure out why it was happening, and what was triggering it.

Note that the CPU temperature usually was < 40C, and the GPU was not even being used! So, there was no reason for the fan to became a turbine, bothering everyone near to me.

Finally, some “good soul” posted in a ROG forum’s thread in the ROG saying that he solved the problem just opening the notebook, disconnecting the battery and fan cables, and connecting everything back.

I decided to try it, before I get crazy with the strong noise coming from the “turbine”, every day.

Before disconnecting the cables, I carefully checked if there was some bad contact or even a disconnection. No! Everything was perfectly connected. Even so, I disconnected the battery and the fan cables, and reconnected a few minutes later. I also blew some air to clean the fans, but they were really clean (those fans are supposed to be dust free, and seems that they really are).

For my surprise, this procedure seems to have solved the problem. Four days had passed and the problem didn’t show up anymore! What a relief!

For those who are having the same problem, you can search in youtube for GL503 tear-down videos. Opening the notebook is really an easy task. Just release a bunch of bolts to have access to the battery and fan cables.

Just a note: ASUS support was of no help at all! Since my notebook is still under warranty, they asked me to send it to RMA. But there was some problems:

1) I would need to ship it to USA
2) I use this notebook for work, so no way to stay weeks (months?) waiting for it come back
3) I read several posts from people with the same problem, which have sent their notebooks to RMA one, two and even three times, and they didn’t solve the problem.

I used to assembly computers in the 90’s, and ASUS motherboards was the best ones in that time. I though their notebooks would offer the same quality, but they don’t. Beside this problem with the fans, they also have “coil whine” noise. I would not buy it again.

Update: After one month running quietly, the fans started to present the problem again. So it looks that the solution is temporary, and I will have to disconnect/reconnect the cables from time to time to keep it quiet. I wonder what causes such problem.

Erro 12029 ao utilizar Delphi com Kinvey

Situação: Servidor de aplicação desenvolvido em Delphi (Berlin), usando o Kinvey para envio de Push Notifications para celulares Android e iOS.

Problema: De uma hora para outra, não foi mais possível enviar as notificações. O erro retornado era “REST request failed: Error sending data (12029). Uma conexão com o servidor não pode ser estabelecida“.

Ambiente: Windows Server 2012 (100% atualizado através do Windows Update)

Para encurtar a história, depois de muito bater a cabeça, descobri que o problema estava no fato do servidor de aplicação não conseguir conectar o Kinvey usando TLS 1.2. Obs: Nas configurações de Internet do Windows, TLS 1.1 e 1.2 estavam ativas.

Aparentemente o Kinvey passou a exigir TLS 1.2 nas conexões (não sei exatamente em que data isso se tornou obrigatório, possivelmente em 04/Setembro/2018). Olhando nas DLLs carregadas pela aplicação Delphi, percebi que ela faz uso do WinHttp para comunicação. Sendo assim, vasculhando a internet, encontrei esse artigo, da própria Microsoft: Atualização para ativar o TLS 1.1 e o TLS 1.2 como um protocolos de segurança padrão no WinHTTP no Windows.

Após instalar o EasyFix do link acima, tudo voltou a funcionar!

Fica a dica, e também a reclamação do “por que” o WindowsUpdate não ter instalado isso por padrão!

Listando as propriedades de uma classe

Segue um código (pascal/Delphi) que criei para listar as propriedades que pertencem a uma classe.

O código usa a RTTI do Delphi para “percorrer” as propriedades. A procedure é recursiva, ou seja, se uma das propriedades for também um classe, a procedure chama ela mesma passando como parâmetro a classe da propriedade encontrada.

Para compilar o código abaixo, crie uma nova aplicação VCL e no form principal coloque um TMemo e um TButton, e configure os eventos conforme o código abaixo.

Substitua o segundo parâmetro da chamada a getPropList pela classe que deseja “vasculhar”. O terceiro parâmetro é o quão “profundo” você deseja ir em relação as iterações quando uma propriedade encontrada for uma classe.

Recebendo pagamentos do exterior

PayoneerQuando decidi lançar meu eBook Guia de Migração para o Firebird 3 em inglês, já prevendo oferecê-lo também em formato impresso através dos serviços de impressão sob demanda da CreateSpace, mal sabia os transtornos que viriam pela frete. Talvez o maior deles seja o fato que a CreateSpace só faz pagamentos através de cheques ou depósito bancários em bancos americanos.

Não preciso dizer que a opção “jurássica” de receber em cheque é quase que inviável no Brasil, visto que, além da demora (Correios), perde-se também muito dinheiro com as taxas cobradas pelos bancos e com a conversão de moeda. Abrir uma conta em um banco estrangeiro também é um processo burocrático e inviável para muitos.

A boa notícia é que existe um serviço chamado Payoneer, que facilita tremendamente receber pagamentos não só da CreateSpace, como de qualquer empresa internacional! O Payoneer é um cartão de crédito pré-pago, em USD. Ao se cadastrar na Payoneer e solicitar o cartão, você recebe também, automaticamente, uma conta corrente “virtual” em um banco americano (First Century Bank), com o serviço ACH (Automated Clearing House) habilitado. Isso possibilita que você receba pagamentos de praticamente qualquer empresa americana (ou estrangeira). Quando o dinheiro é depositado na sua conta virtual, ele automaticamente vai pro saldo do seu cartão Payoneer. O melhor é que você pode usar o cartão em qualquer estabelecimento que aceite Mastercard, inclusive para compras on-line em lojas do exterior (Amazon, Google, etc). Também dá pra sacar dinheiro em determinados caixas ATM em todo o mundo.

É óbvio que existem tarifas envolvidas em todo o processo. O próprio cartão tem um custo de anuidade de USD 30, além de ser cobrada uma pequena taxa a cada utilização. No entanto, pode ser uma boa opção para quem precisa receber pagamentos em dólar, e quer gastar esses dólares comprando em lojas virtuais americanas, ou mesmo em viagens para o exterior, visto que essas taxas serão menores do que os 6.38% de IOF que pagamos ao usar um cartão de crédito “brasileiro” para fazer compras em moeda estrangeira. Ainda não sei dizer se compensa usa-lo para sacar o dinheiro em Reais nos caixas eletrônicos no Brasil, pois vai depender da taxa de conversão adotada, e também da tarifa que a rede ATM irá cobrar.

Para os desenvolvedores de software, a Payoneer também aceita receber pagamentos diretamente de serviços como a PayPro, Digital River, etc.

Para quem ficou interessado, use esse link para se inscrever no Payoneer e receber USD 25 de crédito (tão logo acumule um saldo de USD 100 no cartão nos primeiros 12 meses após o cadastro – mais detalhes sobre as condições aqui). Com isso, quase que se zera a primeira anuidade.

NT 2015.003 v 1.60 – a “palhaçada” continua!

Dia 30/12… nosso querido governo, obviamente sabendo que programadores não gostam de viajar, muito menos de comemorar a virada do ano, resolve lançar mais uma atualização da NT 2015.003, com mais alterações e, como de costume, deixando mais dúvidas pairando no ar.

Uma das alterações diz que o valor do FCP não deve ser somado ao valor do ICMS do estado de destino, nos itens das notas. No entanto, no total, continua somando. E aí? Não seria uma incoerência? Ou será que o estagiário esqueceu de atualizar o texto?

Nesse momento, se tentarmos autorizar uma NF seguindo as novas instruções da NT 1.60, ela é rejeitada, pois o total do ICMS do estado de destino na nota não fecha com a soma do valor do icms de destino dos itens, o que reforça a incoerência descrita acima, ou então indica que a Sefaz não atualizou os webservices de homologação.

Eu já desabafei sobre esse assunto no meu post anterior, então não vou repetir os “elogios” aqui… mas que é revoltante, no mínimo, é!

Feliz Ano Novo para todos!

NT 2015.003 v1.60

1 2 3 29