sábado, 29 de dezembro de 2018
NITGEN Windows 64 Bits - Leitor Biométrico Hamster I, II, DX e III - eNBSP SDK
Recentemente tive problemas ao utilizar o leitor biométrico da Nitgen Hamster DX HFDU06 no windows 64 bits. Com windows 32 bits, sempre funcionou sem problemas.
Instalei os drivers e SDK 64 bits de forma normal. O aplicativ nativo deles de teste funcionou certinho. Mas quando fui acessar através da minha aplicação dava sempre erro de classe não registrada ou problemas ao registrar o objeto NBioBSPCOM.NBioBSP .
Depois de muita pesquisa e tentativas consegui fazer funcionar a biblioteca do SDK deles no windows 64bits com minha aplicação.
Utilizei os seguintes passos.
1. Instalei o .NET Framework 3.5 (includes .NET 2.0 and 3.0) que ele utiliza, indo no painel de controle, adicionar e remover recursos do windows e marquei todas as opções do .net 3.5.
Mais informações de como instalar podem acessar esse link.
2. Baixei a versao 4.85 do SDK da nitgen. A versão que tinha, 4.84 não estava funcionando. Provavelmente, fazendo os mesmos passos com a 4.84 deva funcionar, mas com a 4.85 deu certo. O link para download http://www.nitgen.com.br/download/eNBSP_SDK_v4.85.zip .
3. Baixe os driver das leitoras no seguinte endereço, http://www.fingertech.com.br/Content/Uploads/Downloads/EasyInstallation_v3.12.rar. A instalação do SDK não vem os drivers da leitora.
4. Agora começa a saga da instalação. Faça a instalação dos drivers e depois plug o leitor. A instalação do SDK deve ser feita a versão 32 bits, mesmo que o seu SO seja 64 bits. Tem uma pasta dentro do SDK x86 e x64.
5. Após a instalação, siga os passos a seguir:
5.1 Copie os arquivos da pasta "Driver Hamster I, II, DX e III - x86 e x64\FDU\Hamster II_III\Drivers\x86\win2000xp" NGStar.dll, NGStar.sys e NGStar para a pasta "C:\Windows\SysWOW64\drivers". Caso peça para subtstituir, confirme com sim.
5.2 Copie os arquivos da pasta "Driver Hamster I, II, DX e III - x86 e x64\FDU\HamsterMouse\Drivers\x86\win2000xp" Venus.dll e VenusDrv.sys para a pasta "C:\Windows\SysWOW64". Caso peça para subtstituir, confirme com sim.
5.3 Acesse o prompt de comando do windows com permissão de administrador. para isso, clique com o botão direito do mouse em cima do "Prompt de Comando" e escolha permissão de administrador. Execute os comandos abaixo e depois não fecha a janela, pois ainda vai ser necessária.
cd C:\Windows\SysWOW64
regsvr32.exe NBioBSPCOM.dll /u
5.4 Vá na pasta "C:\Program Files (x86)\NITGEN eNBSP\SDK\Bin" e copie os arquivos NBioBSPCOM.dll e NBioBSP.dll para a pasta "C:\Windows\SysWOW64" substituindo os existentes.
5.5 Volte a janela do prompt de comando e execute
regsvr32.exe NBioBSPCOM.dll
Depois desses passos, acesse o programa Roll Demo dentro da pasta SDK do Nitgen do menu iniciar que deve funcionar e provavelmente também deve funcionar na sua aplicação.
Caso não funcione, desistale pelo painel de controle todo e qualquer programa relacionado o Nitgen e tente novamente.
quarta-feira, 12 de dezembro de 2018
Desativar YaraScanService - MRT no Mac / OSX
Fiz uma nova instalação no meu macbook e tive um problema de alto consumo de CPU e memória pelo novo serviço do YaraScanService ou MRT da Apple. Descobri que é um ferramenta de remoção de malware do OSX.
É uma opção usar ou não o aplicativo da Apple, mas deixar o computador lento e alto uso de processamento, aumentando a temperatura e diminuindo a duração da bateria, para mim, não valem a pena.
Para remover a ferramenta ou impedir que ela seja iniciada automaticamente podem ser feitos algumas medidas.
Para remover recomendo primeiro matar os processos do YaraScan Service e do MRT no monitor de atividades.
depois abra o terminal e digite os seguintes comandos.
sudo launchctl stop com.apple.mrt
sudo launchctl remove com.apple.mrt
o primeiro para parar o serviço caso não tenha sido finalizado no monitor e o segundo para remover da inicialização automática.
Os arquivos .plist que eles utilizam são os seguintes. Recomendo removê-los utilizando o terminal também. Caso um dia queira reativar o serviço, ao invés de apagar, mova-os para uma pasta de backup, e quando precisar, mova novamente para os mesmos diretórios listados abaixo.
/System/Library/LaunchDaemons/com.apple.MRTd.plist
/System/Library/LaunchAgents/com.apple.MRTa.plist
/System/Library/LaunchDaemons/com.apple.mrt.plist
/System/Library/LaunchAgents/com.apple.mrt.uiagent.plist
/System/Library/CoreServices/MRTAgent.app
/usr/libexec/MRT
Caso algum dia queira reativar, pode executar os comandos, e copiar os arquivos acima da backup realizado para os diretórios originais.
sudo launchctl start com.apple.mrt
sudo launchctl install com.apple.mrt
Algumas vezes, somente esses passos não são suficientes para remover, devido à proteção que as novas versões do OSX possuem, o SIP.
Inicialmente deve-se desativar o SIP e para tanto é preciso reiniciar em modo de restauração do SO, pressionamento Command + R na inicialização, abrir o prompt de comando e digitar csrutil disable, depois posto um artigo mais detalhado para ativar e desativar o SIP .
Para desativar o Yara digite o comando chmod -R -x+X /System/Library/CoreServices/MRT.app
Para reativar o SIP siga os mesmos passos acima, e execute o comando csrutil enable.
Reinicie o computador normalmente.
Um dos dois passos acima deve resolver o problema do YaraScanService.
quinta-feira, 6 de dezembro de 2018
Recuperar Banco de Dados MySQL InnoDB
É claro que a melhor solução é ter um backup atualizado. Mas nem sempre isso acontece, e problemas, falhas e erros podem acontecer. Em uma última situação que enfrentei, tinha o backup mas estava desatualizado de alguns bancos. A maior parte dos dados foram recuperados pelo dump do backup, mas nem todos puderam ser feitos. Tínhamos acesso ainda à pasta data do mysql com os arquivos, mas quando ia iniciar o serviço não iniciava.
Nessa situação a primeira coisa a se fazer é verificar o arquivo de log do mysql, que se encontra na pasta data, com o nome da maquina.err
No caso do linux e similares, uma possível pasta é /usr/local/var/mysql e também pode usar o comando locate .err para localizar arquivos que possuem a extensão.
Localizado o arquivo, tente iniciar o serviço do mysql e depois veja o conteúdo do arquivo de erro.
Alguns passos que podem ser feitos para tentar corrigir o problema.
1. Mova os arquivos ib_logfile0 e ib_logfile1 para outro diretório e tente iniciar o serviço novamente.
2. Se for linux, verifique as permissões dos arquivos da pasta data.
Caso ainda não inicie, continue analisando o arquivo de log do mysql. Nesse caso específico o problema foi mais sério, pois o arquivo ibdata1 estava realmente corrompido.
InnoDB: stored checksum 3103110567, prior-to-4.0.14-form stored checksum 438929502 InnoDB: Page lsn 66 2543532480, low 4 bytes of lsn at page end 2544351964 InnoDB: Page number (if stored to page already) 131080, InnoDB: space id (if created with >= MySQL-4.1.1 and stored already) 0 InnoDB: Page may be an index page where index id is 0 381 InnoDB: Database page corruption on disk or a failed InnoDB: file read of page 131080.
Tive que partir para medidas mais sérias. Existe um parâmetro do mysql para forçar ou ignorar erros no arquivo do innodb, que é innodb_force_recovery = X onde o x varia de 1 até 6.
1
(SRV_FORCE_IGNORE_CORRUPT
)Lets the server run even if it detects a corrupt page. Tries to makeSELECT * FROM
jump over corrupt index records and pages, which helps in dumping tables.tbl_name
2
(SRV_FORCE_NO_BACKGROUND
)Prevents the master thread and any purge threads from running. If a crash would occur during the purge operation, this recovery value prevents it.3
(SRV_FORCE_NO_TRX_UNDO
)Does not run transaction rollbacks after crash recovery.4
(SRV_FORCE_NO_IBUF_MERGE
)Prevents insert buffer merge operations. If they would cause a crash, does not do them. Does not calculate tablestatistics. This value can permanently corrupt data files. After using this value, be prepared to drop and recreate all secondary indexes.5
(SRV_FORCE_NO_UNDO_LOG_SCAN
)Does not look at undo logs when starting the database:InnoDB
treats even incomplete transactions as committed. This value can permanently corrupt data files.6
(SRV_FORCE_NO_LOG_REDO
)Does not do the redo log roll-forward in connection with recovery. This value can permanently corrupt data files. Leaves database pages in an obsolete state, which in turn may introduce more corruption into B-trees and other database structures.
A próxima pergunta é qual número usar. Recomendo paciência nesse caso e testar valor por valor. Quando menor o valor utilizado menos prejuízo você terá. Altere o arquivo my.cnf ou my.ini do mysql e coloque na [mysqld]
[mysqld]Existem outros parâmetros que também podem ajudar, listados abaixo. mas não tente colocar todos de uma vez. Tenha paciência, e se somente o innodb_force_recovery não resolver, adicione os parâmetros abaixo e tente iniciar o serviço para cada alteração.
innodb_force_recovery=1
innodb_max_dirty_pages_pct = 0
innodb_purge_threads=1
skip-grant-tables
Na maioria das situações esses passos resolvem o problema. Caso tenha resolvido, recomendo fazer um dump das bases de dados, de todas, e restaurar em uma nova instalação do mysql, pois esses medidas são temporárias com o objetivo de extrair os dados.
Mas nem sempre essas medidas funcionam. Foi justamente o que aconteceu comigo dessa vez.
A próxima opção é recuperar os dados a partir dos arquivos .FRM e .IBD .
Independente de qual Sistema Operacional e versão do Mysql deve funcionar. Somente é necessário fazer as adaptações de acordo com cada situação.
Para os próximos passos, mova a pasta data para um outro local seguro, se possível, copie para uma mídia externa e continue mexendo em uma cópia local na máquina. Feito a cópia, faça uma nova instalação do mysql sem utilizar a pasta antiga data. Feito a nova instalação e tendo acesso aos arquivos da pasta data da instalação anterior e uma copia em um local seguro, siga para os próximos passos.
1- Ativar INNODB_FILE_PER_TABLE
Primeiro devemos entrar novamente no arquivo my.cnf ou my.ini e na cláulsual [mysqld] acrescentar a seguinte linha. Se você tentou os passos anteriores, não se esqueca de retirar ou comentar todas as linhas adicionadas, como a innodb_force_recovery e as demais . Para comentar pode colocar # no início da linha.[mysqld]
innodb_file_per_table=1
Salve e feche o arquivo.
2- INSTALar MYSQL UTILITIES
Faça o download e instale o mysql Utilities em https://dev.mysql.com/downloads/utilities/3- Acesso ao MYSQL COMMAND
Entre no mysql pela linha de comando. Se não estiver no path do sistema, procure na pasta bin do mysql
mysql -u root -p
É pra conseguir entrar no mysql sem problemas. As senhas padrões normalmente são root e vazia. Caso não acesse pelas senhas padrões use o usuário e senha que foram definidos na nova instalação do mysql.
4- CRiar e selecionar uma nova base de dados
O próximo passo é criar um novo banco de dados para importar as tabelas que queres recuperar. Pode ser com o mesmo nome do banco anterior.
create database test;
use test;
Até agora não começamos o processo de recuperação, somente de preparação para os dados.
5- CRiar os arquivos MYSQL
O mais importante agora, é ter a estrutura das tabelas que queremos recuperar. Caso tenhas um backup antigo delas com a mesma estrutura das atuais é o recomendável utilizar. Mas caso não tenha, ainda não se desespere, temos duas opções ainda para recuperar a estrutura.
1. Utilizar o backup antigo que contenha a mesma estrutura do banco atual.
2. Utilizar o Myslq Utilities que instalamos nos passos anteriores, que ele busca a estrutura no arquivo .FRM e gera o script sql.
3. Utilizar o site https://recovery.twindb.com/ que, a partir do teu arquivo .FRM ele gera gratuitamente o script sql.
- Na coluna da esquerda, clique em Recover Struture, e após clique em From .frm File
- Clique em Browse e procure o arquivo .frm da pasta data original que contém o banco corrompido. Aquela pasta que pedi para salvar anteriormente.
- Clique em Upload.
- Um popup irá aparecer com a estrutura da tabela, em sql. Copie esses comandos e cole na linha de comando do mysql para criar a tabela. Isso irá criar a tabela com os arquivos .frm e .ibd correspondentes.
Deverá ser feito isso para cada tabela do banco. No meu caso utilizei o método 1.
6- remover arquivos IBD Novos
O próximo passo é remover os arquivos .ibd NOVOS , atenção, os novos criados limpos, para substituirmos com os antigos que possuem os dados que queremos recuperar.Volte ao prompt de comando do mysql e digite o seguinte comando para cada tabela.
ALTER TABLE filename DISCARD TABLESPACE
Como mencionei, esse comando apaga os arquivos ibd das tabelas novas e deverá ser executado para cada tabela que se queira recuperar. Troque o filename pelo nome da tabela.
7- copiar arquivos .ibd originais
É necessário copiar agora os arquivos .idb do banco original, salvo anteriormente, para a nova instalação do mysql, na pasta data da nova instalação.
cp /backup/mysql/data/database_original/tabela.idb /var/local/mysql/data/database_novo/.onde database_original é o nome do banco original, que havia sido corrompido e o database_novo e o nome do novo banco de dados criado na nova instalação do mysql.
8- IMPORTar DAdos para a novas tabelas
O último passo é associar os arquivos .ibd à nova tabela criada novamente. No prompt do mysql use o seguinte comando.ALTER TABLE finename IMPORT TABLESPACE;
Onde filename é o nome da tabela. Lembre-se de repetir esses passos para todas as tabelas do banco e para cada banco de dados.
Parabéns, seguindo esses passos você deve ter conseguido recuperar os seus dados. Deixe um comentário e se inscreva no blog para receber novas dicas.
Assinar:
Postagens (Atom)