Removendo acentos de string com Java

Escrito por jhenrique em 30/04/2011 Categorias: java Tags: ,

Esses dias precisei sujar colocar as mãos em um código Java para fazer um autocomplete onde as informações estariam armazenadas em memória com o Lucene. Eu precisava armazenar no Lucene um campo com as informações sem acento e retirar o acento do que a pessoa estava solicitando pelo autocomplete para comparar com esse campo, deixando o autocomplete “supimpa”.

No projeto havia uma classe StringUtils com um método removeAcentos, muito, mas MUITO feio! Eram vários replaces, um para cada letra acentuada. Eu olhei para o código e pensei… “Eu acho Java feio, mas não é possível que não tenha algo mais inteligente que essa tralha!”. Pois bem, depois de algumas pesquisas eis aqui o novo código.

public static String removeAccents(String str) {
    str = Normalizer.normalize(str, Normalizer.Form.NFD);
    str = str.replaceAll("[^\\p{ASCII}]", "");
    return str;
}

É isso aí pessoal, até a próxima.

4 Comentários

Formatando dispositivos em NTFS no MacOS

Escrito por jhenrique em 27/02/2011 Categorias: osx Tags: , ,

Todos os dispositivos de armazenamento externo que comprei vieram formatado como FAT32, acredito que esse é um padrão, mas como você sabe, se não souber ficará sabendo agora, com esse tipo de formatação você não consegue armazenar arquivos com mais de 4GB.

Hoje precisei colocar um bendito arquivo com mais de 4GB em um pendrive e… tcharannnnn… deu erro!

No Mac OS não vêm nativamente a opção de formatação em NTFS, existe a opção do ExFAT ou FAT64 que possui uma alocação de dados semelhante ao NTFS, mas infelizmente onde eu precisava plugar o pendrive não reconhecia esse formato.

Solução macfuse + ntfs-3g.

Instale primeiro o macfuse depois o ntfs-3g. Após a instalação no ntfs-3g é necessário reiniciar o Mac (coisa de windows)!!

Agora o Disk Utility conta com a opção (Windows NT Filesysten (NTFS-3G) ).

Disk Utility

Pronto, agora você pode formatar seus dispositivos como NTFS!

Nenhum Comentário

Meu ambiente de trabalho

Escrito por jhenrique em 19/12/2010 Categorias: /dev/null

Estou dando continuidade a brincadeira, onde o Augusto Pascutti pediu para que eu falasse sobre ferramentas que uso no meu dia a dia.

A brincadeira possui as seguintes regras:

  1. escreva sobre 7 itens de seu ambiente de trabalho – fale sobre qualquer ponto que quiser;
  2. indique de 3 a 5 pessoas para que possivelmente façam um artigo sobre seu ambiente.

Então vamos lá:

  1. Linux / MacOS : o primeiro uso no trabalho e o segundo em casa. Pra mim o OSX é a união perfeita entre *nix + UI, e sim, virei um Apple fanboy. Enfim é a base perfeita para desenvolvimento tanto na empresa quanto em casa.
  2. Git / SVN : só digo uma coisa.. se você nunca usou GIT, está perdendo tempo!!
  3. NetBeans / Eclipse / TextMate : eu vario de IDE de acordo com a necessidade, NetBeans (PHP/Javascript), Eclipse (Java), TextMate pra editar coisas pequenas. Não uso o TextMate para tudo porque sou extremamente dependente do code completion de um projeto.

Enfim eu uso mais coisas, mas como estourei o limite fico por aqui!

Seguindo a brincadeira, aqui vão os próximos condenados (assim que eles criarem os respectivos posts, colocarei os links aqui):

Renan Ivo
Alexandre Eher
Ricardo Martins
Chester

2 Comentários

Cluster SSH

Escrito por jhenrique em 20/11/2010 Categorias: bash, linux, osx Tags: , , ,

Se você precisa executar a mesma ação em vários servidores diferentes, o cluster-ssh foi feito para você!
Ele é um aplicativo, que permite a execução de um mesmo comando em N instâncias através de ssh, facilitando assim, a vida de muita gente que precisa fazer o mesmo trabalho em X servidores.

Instalando no Linux

sudo aptitude install clusterssh #debian

Instalando no Mac

brew install csshx #usando homebrew

Executando no Linux

cssh usuario@servidorX usuario@servidorY usuario@servidorN

Executando no Mac

csshx usuario@servidorX usuario@servidorY usuario@servidorN

Até a próxima!

1 Comentário

Gerenciador de pacotes no Mac

Escrito por jhenrique em 17/11/2010 Categorias: osx Tags: , , , , ,

Uma coisa que eu senti muita falta quando comprei o mac, foi abrir o terminal e ter um apt-get, aptitude, pacman, portage, yum etc… . Quem veio do mundo linux está habituado a ter um desses aplicativos para gerenciar suas instalações de outros aplicativos.

Um dia eu posso criar um post explicando como funciona um gerenciador de pacotes, não é o objetivo desse post.

Bom, mas no mac não existe isso nativamente, mas existem algumas soluções que podem suprir essa necessidade. Vou listar os que eu testei, não sei se existem mais, quem souber de mais algum me avisa =D

Homebrew

O Homebrew é o que eu uso atualmente e foi o que eu mais gostei. Ele é movido totalmente pelo GitHub e os pacotes são chamados de ‘formulas’.

As ‘formulas’ são scripts Ruby que executam uma sequência de passos. Basicamente, baixar e compilar. As ‘formulas’ também possuem dependências, por exemplo, se você vai instalar um pacote que depende de outro para funcionar, ele baixa e compila esse segundo pacote.

O legal do Homebrew é que ele é movido pela comunidade, você pode criar suas ‘formulas’ e enviar para o projeto.
Essa semana eu tentei criar uma ‘formula’ para o CCZE, um aplicativo que colore logs, pena que ele possue comandos exclusivos do linux e não consegui compilar =/

O ponto positivo do Homebrew em relação ao MacPorts e o Fink, é que ele não cria um ambiente todo para ele e utiliza os aplicativos já nativos do seu Mac. Hã? Como assim?
Quando você usa o MacPorts ou o Fink e vai instalar um pacote que depende de Python, por exemplo, que já é nativo do Mac, ele baixa novamente o Python e não usa o que já está instalado. Enfim, pode ser bom? Não sei, eu não gostei disso!

MacPorts

O MacPorts acredito ser o mais famoso. Ele possui um número bem maior de pacotes que o HomeBrew e também trabalha com o conceito de baixar o código fonte e compilar e também trabalha com sistemas de dependências.
Se você não gostar de usar o terminal para instalar pacotes, existe esse aplicativo para facilitar sua vida Porticus.

Fink

O Fink possui uma gama de pacotes tão ampla quanto o MacPorts, mas os pacotes do Fink são “pre-compilados”. Possui também todo o sistema de dependências e afins. Esse eu usei muito pouco. Também tem um aplicativos para auxiliar a instalação de pacotes FinkCommander .

Rudix

O Rudix não é um gerenciador de pacotes, mas é um projeto bem interessante! Ele é mantido por um brasileiro e são um conjunto de aplicativos totalmente independentes, disponibilizados em .dmg. Vale a pena conferir.

É isso aí! Teste também e tire suas conclusões!

Nenhum Comentário

Excluindo arquivos com o ‘find’

Escrito por jhenrique em 15/11/2010 Categorias: bash, linux Tags: ,

Alguma vez você já precisou excluir centenas de arquivos ou pastas com um mesmo padrão?
Eis aqui um comando que pode facilitar a sua vida! MAS CUIDADO

    find . -name "*.svn" -print0 | xargs -0 rm -rf

Se você executar isso, tudo o que conter .svn será excluido!
Tá, legal.. mas você pode explicar um pouco esse comando? Não Claro!

find . -name "*.svn" #Irá buscar todos os arquivos e pastas, a partir do diretório corrente.
-print0 #Vai tirar a quebra de linha comum do "find" e imprimir tudo em uma linha só
xargs #Executará o comando que virá logo após, no caso, rm -rf para cada arquivo/diretório encontrado.

Mas e o -0?
O -0 é o pulo do gato! Com ele, o xargs consegue passar ao comando a ser executado, parâmetros que contenham espaços. Por exemplo, se um arquivo tiver o nome de “meu blog.txt” o xargs entenderá que o espaço faz parte de um conjunto só, e não irá interpretar “meu” e depois “blog.txt”.

Legal né =D

1 Comentário

Vamos lá!

Escrito por jhenrique em  Categorias: /dev/null

Resolvi finalmente iniciar um blog.
Agora pouco estava preocupado com que plugins instalar, qual tema colocar enfim essas coisas, mas o Chester me disse o seguinte: “Esqueça toda essas coisas e escreva Posts. Imagine que o Jair é uma banda. Posts são iguais as músicas. Plugins, wordpress, add-ons, layouts, etc. são a turnê, cenografia, coreografia de dançarinos, etc. – que no fundo são importantes, mas a música é tudo.”

Então…

Vamos lá!

Nenhum Comentário