Caracteres especiais em Unicode



Para evitar problemas com encoding de caracteres especiais é bom utilizar em suas classes Java código unicode ao invés de letras acentuadas. Como sempre preciso buscar algo assim no google, separei abaixo os mais utilizados para facilitar:


á \u00e1
à \u00e0
â  \u00e2
 ã  \u00e3
 ä  \u00e4
 Á  \u00c1
 À  \u00c0
 Â  \u00c2
 Ã  \u00c3
 Ä  \u00c4
é \u00e9
è \u00e8
ê \u00ea
ê \u00ea
É \u00c9
È \u00c8
Ê \u00ca
Ë \u00cb
í \u00ed
ì \u00ec
î \u00ee
ï \u00ef
Í \u00cd
Ì \u00cc
Î \u00ce
Ï \u00cf
ó \u00f3
ò \u00f2
ô \u00f4
õ \u00f5
ö \u00f6
Ó \u00d3
Ò \u00d2
Ô \u00d4
Õ \u00d5
Ö \u00d6
ú \u00fa
ù \u00f9
û \u00fb
ü \u00fc
Ú \u00da
Ù \u00d9
Û \u00db
ç \u00e7
Ç \u00c7
ñ \u00f1
Ñ \u00d1
& \u0026
' \u0027


Para colocar o código Unicode em uma String basta substituir o caracter pelo código. Exemplo: String s = "Diret\u00f3rio Home";

O código do método que usei para gerar essa tabela está abaixo:
public static String geraCodigoUnicode(char letra) {
    String hexa = Integer.toHexString( (int)letra );

    String prefix;
    if( hexa.length() == 1 ) {
        prefix = "\\u000";
    } else if( hexa.length() == 2 ) {
        prefix = "\\u00";
    } else if( hexa.length() == 3 ) {
        prefix = "\\u0";
    } else {
        prefix = "\\u";
    }

    return prefix + hexa;
}

Fonte: Programando Sem cafeína

Resolvendo MySQL ODBC 5.3 Unicode Driver - error code 193



Este é um erro no qual vejo muitas pessoas reclamando, e poucos conseguindo resolver na última versão do driver.
O erro estoura na última etapa da instalação, quando o instalador vai registrar os drivers no sistema.

O erro:
The setup routines for the MySQL ODBC 5.3 Unicode Driver ODBC driver could not be loaded due to system error code 193.

Solução:

1. Caso você esteja instalando manualmente.


O instalador dos drivers odbc tem as seguintes dependências: .Net Framework, Visual C++ Redistributable. Consegui resolver instalando o .Net Framework 4 e o Visual C++ Redistributable 2010. O nome dos pacotes é: dotNetFx40_Full_x86_x64.exe e vcredist_x862010.exe.

Existem relatos que isso não resolveu. Caso seja seu caso, tente executar uma limpeza no sistema (arquivos temporários, registro. Com o CCLeaner por exemplo) e então substituir as seguintes dlls:

c:\Windows\SysWOW64\msvcp100.dll
c:\Windows\SysWOW64\msvcp100d.dll
c:\Windows\SysWOW64\msvcr100.dll
c:\Windows\SysWOW64\msvcr100_clr0400.dll
c:\Windows\SysWOW64\msvcr100d.dll

2. Caso esteja incluindo o pacote do driver odbc em seu instalador


Caso esteja incluindo este pacote em seu instalador, pelo Inno Setup por exemplo, veja meu post no seguinte link:

http://diretoriohome.blogspot.com.br/2014/06/como-executar-instalar-um-msi-com-inno.html

Também passei por esse erro, e consegui resolver com o link acima.

Como executar / instalar um .msi com Inno Setup



Muitas vezes quando ao distribuir um software, precisamos também incluir nossas dependências no pacote de instalação, como softwares de terceiros, bancos de dados, frameworks, etc. O Inno Setup é uma ferramenta fantástica para esse fim. Com ele é possível criar instaladores para nossas aplicações com bastante eficiência, e até mesmo incluir e executar os instaladores de nossas dependências.

Existem diversas maneiras, a maioria bem simples, de se incluir outro pacote aos nossos instaladores. Porém, quando nossas dependências estão empacotadas em arquivos .msi a história muda. Ao incluir um pacote .msi você vai experimentar diversos sabores de erros durante a execução, e vai gastar muitos neurônios até descobrir que se trata de problemas na execução de pacotes msi pelo Inno Setup.

Apesar de ser uma experiência traumática, existem algumas formas simples para se resolver. Seguem algumas:

1. Incluir o parâmetro Shellexec no comando de execução.


Este parâmetro, de acordo com a documentação, cria uma instancia do prompt para a execução do arquivo. É também necessário caso queira executar outros arquivos, como arquivos do Microsoft Office. Recomendo também  a inclusão do parâmetro waituntilterminated em conjunto com o shellexec, pois seu instalador não esperará o termino da execução de pacotes msi por defaut.

Exemplo:
[Run]
Filename: <Diretório>\seuArquivo.msi; Parameters: /qn; StatusMsg: <Mensagem a ser exibida no instalador durante a execução>; WorkingDir: <Diretório de execução do msi>; Flags: shellexec waituntilterminated

Podem perceber que incluí a seção "Parameters: /qn;". Este costuma ser o parâmetro caso queira que seu pacote msi seja instalado em modo silent, ou seja, não apareça requisitando informações ou qualquer interface visual, apenas instala diretamente.

2. Utilizando o msiexec.exe


Esta é outra maneira que pode ser encontrada na documentação, gera mais ou menos o mesmo resultado e utiliza-se dos mesmos parâmetros do prompt.

Exemplo:
[Run]
Filename: "msiexec.exe"; Parameters: "/i ""{tmp}\seuArquivo.msi"""
Vejo muitas buscas quanto isso, espero ter ajudado!

Listar o conteúdo de um tar sem extrair

Muitas vezes queremos dar uma olhada no conteúdo de um .tar.gz ou tgz sem precisar extrair. O comando para se fazer isso usando o Linux é:
# tar -ztvf arquivo.tar.gz
Com o comando acima é possível listar o conteúdo do tar comprimido com gzip.
Quebra muito o galho na hora da pressa.
Abraços!

C# - Listando sub-diretórios de um diretório especificado

É algo que precisei a pouco tempo, mas foi difícil encontrar na net, por isso resolvi compartilhar:

O código abaixo é um exemplo como se recebesse "C://" por parâmetro.
DirectoryInfo dir = new DirectoryInfo("C:\\");
DirectoryInfo[] diretorios = dir.GetDirectories();
foreach (DirectoryInfo diretorio in diretorios)
   Console.Write(diretorio.Name);
Abraços!

Habilitando Conexões Remotas no MySQL (Linux)



A instalação default do MySQL não permite se conectar remotamente no banco de dados, possibilitando  apenas acesso local.

Neste cenário, ao tentar conectar remotamente no banco, um dos possíveis erros é:
KHost '' is not allowed to connect to this MySQL serverConnect
Para habilitar o acesso externo, basta realizar os seguintes passos:

1. Editar o arquivo:
/etc/mysql/my.cnf
2. Alterar a seguinte linha:
bind-address = 127.0.0.1
Deixando assim:
bind-address = 0.0.0.0
3. Reiniciar o Mysql
# /etc/init.d/mysql restart
4. Conectar no Banco via localhost:
# mysql -u root -p
5. Habilitar o acesso:
mysql> grant all privileges on *.* to 'user'@'ip' identified by 'passwd';
Onde:
user: é o usuário que você deseja usar.
ip: a máquina remota que você quer permitir.
passwd: a senha do usuário

Exemplo:
mysql> grant all privileges on *.* to 'root'@'10.0.0.60' identified by 'teste';
Para habilitar toda a rede classe C do exemplo basta usar o wildcard %
mysql> grant all privileges on *.* to 'root'@'10.0.0.%' identified by 'teste';
Para habilitar para qualquer ip:
mysql> grant all privileges on *.* to 'root'@'%' identified by 'teste';
O ultimo passo é fazer o flush da configuração:
mysql> flush privileges;

Remover acesso remoto

Caso você queira desfazer o acesso remoto é bem simples também.

1. Altere a seguinte linha:
bind-address = 0.0.0.0
Deixando assim:
bind-address = 127.0.0.1
2. Logue no Mysql:
# mysql -u root -p
3. Delete todos os privilégios remotos:
DELETE FROM mysql.user WHERE User = ‘root’ AND Host = ‘%’;FLUSH PRIVILEGES;
4. Reinicie o Mysql e pronto, não estará mais acessível remotamente.


Abraços!

Recuperar a senha de root do MySQL



Quem nunca esqueceu a senha de root do MySQL que configurou para instalar junto com sua distro Linux, ou pegou um sistema que foi implementado por outro profissional?

Pode ser uma situação assustadora, mas dá para reverter:

1- Pare o serviço do MySQL caso ele esteja rodando:
# /etc/init.d/mysql stop
2- Suba o servidor pulando a verificação dos privilégios de usuários:
# /usr/bin/mysqld_safe –skip-grant-tables &
OBS.: Fazendo isso o MySQL estará aceitando que qualquer usuário se conecte com acesso TOTAL a TODOS os bancos de dados. Para previnir acessos durante sua manutenção é possível subir o banco sem que ele aceite conexões via TCP/IP com o comando:
# <pasta de instalação do MySQL>mysqld_safe –skip-grant-tables –skip-networking &
3- Conecte-se ao mySQL com o comando:
# mysql -u qualquer_coisa
4- Setar a senha de root:
> update mysql.user set Password=PASSWORD(‘new-password’) WHERE User=’root’
5- Pare o MySQL com o comando:
# mysqladmin -u qualquer_coisa shutdown
6- Iniciar o serviço com os comandos:
# <pasta de instalação do MySQl>/mysqld_safe &
Ou
#/etc/init.d/mysql restart


Tecnologia do Blogger.