tag:blogger.com,1999:blog-80077797137655330162024-02-08T03:35:58.310-03:00#OpenDevNotes: Notas de um DesenvolvedorEsse blog tem o intuito de ser um livro de registros de desenvolvimento e utilização de ferramentas livres.
Penso aqui em gravar as pequenas idéias que gostaria de ter como referência sempre à mão.Eiti Kimurahttp://www.blogger.com/profile/06120692554290728265noreply@blogger.comBlogger54125tag:blogger.com,1999:blog-8007779713765533016.post-9393500103336648052010-12-03T10:43:00.001-02:002010-12-03T10:43:57.791-02:00Configurar limite de arquivos abertos no Linux<div id="xwikicontent"> <p>Para configurar o número de arquivos abertos no linux é preciso alterar o arquivo limits.conf localizado em: /etc/security/limits.conf</p><p># nano /etc/security/limits.conf</p><p>Adicionar as seguintes linhas de configuração no final do arquivo:</p><p>* soft nofile 65535<br /> * hard nofile 65535</p><p>Após a edição do arquivo é necessário reiniciar o computador:</p><p># reboot</p><p>ou</p><p># shutdown -r now</p> </div>Eiti Kimurahttp://www.blogger.com/profile/06120692554290728265noreply@blogger.com0tag:blogger.com,1999:blog-8007779713765533016.post-51461090620269028572010-11-30T08:34:00.003-02:002010-11-30T08:36:11.569-02:00Reabilitar fontes no Ubuntu 8.10O Ubuntu 8.10 parou de ter suporte oficialmente pela canonical no início desse ano, com isso as atualizações de pacotes pararam de ser lançadas. As versoes sem suporte mudam de endereço indo para as "old releases", desabilite todos os repositorios colocando um # na frente de todas as linhas e no final coloque o seguinte conteudo;<br /><br />Acesse o arquivo /etc/apt/sources.list (comando sudo gedit /etc/apt/sources.list pelo terminal) copie e cole;<br /><br />deb <a href="http://old-releases.ubuntu.com/ubuntu/" target="_blank">http://old-releases.ubuntu.com/ubuntu/</a> intrepid main restricted universe multiverse<br />deb-src <a href="http://old-releases.ubuntu.com/ubuntu/" target="_blank">http://old-releases.ubuntu.com/ubuntu/</a> intrepid main restricted universe multiverse<br />deb <a href="http://old-releases.ubuntu.com/ubuntu/" target="_blank">http://old-releases.ubuntu.com/ubuntu/</a> intrepid-updates main restricted universe multiverse<br />deb-src <a href="http://old-releases.ubuntu.com/ubuntu/" target="_blank">http://old-releases.ubuntu.com/ubuntu/</a> intrepid-updates main restricted universe multiverse<br /><br />Apos:<br /><br />sudo apt-get update<br /><br />Referência:<br />http://ubuntuforum-br.org/index.php?topic=75890.0Eiti Kimurahttp://www.blogger.com/profile/06120692554290728265noreply@blogger.com0tag:blogger.com,1999:blog-8007779713765533016.post-31836544363695520442010-11-01T22:38:00.005-02:002010-11-01T22:56:37.468-02:00Gravação de áudio interno do computadorRecentemente quis gravar o áudio interno do computador, isso mesmo o áudio do sistema que é reproduzido pela placa de som e não sons provenientes de dispositivos de entrada como o microfone ou a linha de entrada.<br /><br />Isso pode ser útil quando se deseja gravar o som de algum vídeo do youtube, por exemplo.<br />Estou usando o meu ubuntu linux versão 10.04 e depois de procurar várias alternativas encontrei uma bem simples.<br /><br />Basta instalar o <span style="font-style: italic;">Audio Recorder Applet</span> na barra de tarefas do GNOME, essa aplicação foi desenvolvida por Osmo Antero Maatta da cidade de Oslo na Noruega.<br />O aplicativo pode ser utilizado de forma bastante intuitiva.<br /><br />Tudo o que é capturado pelo programa pode ser gravado nos formatos OGG, Flac, MP3 e WAV.<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh_Uc2ySqkcD4NtLDT6pzO386MKoPbutFni8Pax85Sd9tskiuUI7f5EOFdM8fziLm0nIZWEnOxk9jLfU0Cw38tr-3O4eSXxwGixbp2rW3TSE8ykHchEw_OtqUfrwYJmGhkRj9X36HXw0pY/s1600/Selection_0041.png"><img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 320px; height: 257px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh_Uc2ySqkcD4NtLDT6pzO386MKoPbutFni8Pax85Sd9tskiuUI7f5EOFdM8fziLm0nIZWEnOxk9jLfU0Cw38tr-3O4eSXxwGixbp2rW3TSE8ykHchEw_OtqUfrwYJmGhkRj9X36HXw0pY/s320/Selection_0041.png" alt="" id="BLOGGER_PHOTO_ID_5534747372226525506" border="0" /></a><br />Para instalar o applet basta executar as 2 linhas de comando abaixo no shell do sistema:<br /><ul><li>sudo add-apt-repository ppa:osmoma/rec-applet</li><li>sudo apt-get update && sudo apt-get install rec-applet</li></ul><br />Em seguida, o aplicativo deve ser adicionado na barra de tarefas do GNOME, clique com o botão direito do mouse sobre a barra de tarefas e seleciona a opção: "Adicionar ao painel..." selecione a opção: Aplicação para Gravar Áudio.<br /><br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiplfMY_BpQbqOHVokSN_Ac1NbUdBevMPlGA9Hd-lUC1rECx-9EeyusciLsi0XgiDIsLbl1vj5QjYL78SCHE4kPwvTs5j3TWe6XP3HVp6P84BUsaZVy-lcS3tBYpJnRRP2SJHrzpSA4L8g/s1600/capture.png"><img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 320px; height: 211px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiplfMY_BpQbqOHVokSN_Ac1NbUdBevMPlGA9Hd-lUC1rECx-9EeyusciLsi0XgiDIsLbl1vj5QjYL78SCHE4kPwvTs5j3TWe6XP3HVp6P84BUsaZVy-lcS3tBYpJnRRP2SJHrzpSA4L8g/s320/capture.png" alt="" id="BLOGGER_PHOTO_ID_5534749365375526066" border="0" /></a><br /><br />Agora basta acionar o programa para gravar tudo o que é reproduzido pela placa de som do computador.<br /><br />Referência:<br />http://www.omgubuntu.co.uk/2010/09/ubuntu-soundcard-recording/Eiti Kimurahttp://www.blogger.com/profile/06120692554290728265noreply@blogger.com1tag:blogger.com,1999:blog-8007779713765533016.post-58233812696345024102010-06-30T13:26:00.005-03:002010-06-30T13:34:23.863-03:00Geek: Java o FilmeUma brincadeira com Java! Muito engraçado.<br />Faça suas próprias escolhas.<br /><br /><br /><object width="440" height="345"><param name="movie" value="http://www.youtube.com/v/JpB6NLs09ZE&hl=pt_BR&fs=1&rel=0"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/JpB6NLs09ZE&hl=pt_BR&fs=1&rel=0" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="440" height="345"></embed></object><br /><br />Vídeo indicado por meu amigo Ricardo Teixeira (não é o da CBF).<br /><br />Abraços,Eiti Kimurahttp://www.blogger.com/profile/06120692554290728265noreply@blogger.com0tag:blogger.com,1999:blog-8007779713765533016.post-10991818062740962392010-06-11T19:45:00.003-03:002010-06-11T19:51:12.223-03:00Reabilitar Ícones do Eclipse 3.5 no Ubuntu 10.4 Lucid LynxPara quem instalou o Eclipse 3.5 na nova versão do Ubuntu 10.4, deve ter percebido a ausência dos ícones nos menus do eclipse. Isso se deve a uma configuração do gnome instalado na distribuição.<br /><br />Para reabilitar os ícones no eclipse, digite no prompt de comand:<br /><pre class="bz_comment_text"># gconf-editor</pre> Com esse editor é possível editar as configurações do Gnome, marque a opção para exibição de ícones no menu conforme mostra a imagem:<br /><br /><pre class="bz_comment_text"><span><span class=""><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg-b-MaTHvEvHdL2PzE9y-ocJrpzBRJ_7lsehgIFZOdV8MFZkfvxnr274fiEoGV2wYu5nYqvtg1UA4_Fe6BhOE28CGHxlfFgMOlNcRnt2ERQwaYb3BlMDZufPQ2wrwDwuGGfz5vOQX5TSc/s1600/Screenshot-Configuration+Editor+-+interface.png"><img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 320px; height: 248px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg-b-MaTHvEvHdL2PzE9y-ocJrpzBRJ_7lsehgIFZOdV8MFZkfvxnr274fiEoGV2wYu5nYqvtg1UA4_Fe6BhOE28CGHxlfFgMOlNcRnt2ERQwaYb3BlMDZufPQ2wrwDwuGGfz5vOQX5TSc/s320/Screenshot-Configuration+Editor+-+interface.png" alt="" id="BLOGGER_PHOTO_ID_5481651947667903298" border="0" /></a></span></span></pre><br />Pronto, feita essa alteração os ícones do eclipse passaram a aparecer novamente.<br /><br />Referência:<br />https://bugs.eclipse.org/bugs/show_bug.cgi?id=293720Eiti Kimurahttp://www.blogger.com/profile/06120692554290728265noreply@blogger.com0tag:blogger.com,1999:blog-8007779713765533016.post-37875037671445998492010-04-12T14:40:00.003-03:002010-04-12T15:10:07.504-03:00Gerador aleatório de SenhasAs vezes nos deparamos com situações onde devemos criar senhas para sistemas ou usuários, por exemplo. Para essa tarefa existe um utilitário interessante chamado makepasswd:<br /><br />$ sudo apt-get install makepasswd<br /><br />Para gerar um password automaticamente:<br /><br />$ makepasswd<br />2VhU7c<br /><br />Gerar um password com tamanho pré-definido:<br /><br />$ makepasswd --minchars=12 --maxchars=15<br />TQ8DRAINnfQySSX<br /><br />Abraços,Eiti Kimurahttp://www.blogger.com/profile/06120692554290728265noreply@blogger.com0tag:blogger.com,1999:blog-8007779713765533016.post-1370631085953137492010-04-02T17:08:00.001-03:002010-04-02T17:10:33.820-03:00Atendimento de Helpdesk<div><br /></div><div><br /></div><div>Vídeo interessante sobre um atendimento de HelpDesk em épocas antigas.</div><div><br /></div><div><br /></div><object width="480" height="385"><param name="movie" value="http://www.youtube.com/v/IJq-x2Vrv8c&hl=pt_BR&fs=1&"><param name="allowFullScreen" value="true"><param name="allowscriptaccess" value="always"><embed src="http://www.youtube.com/v/IJq-x2Vrv8c&hl=pt_BR&fs=1&" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="480" height="385"></embed></object>Eiti Kimurahttp://www.blogger.com/profile/06120692554290728265noreply@blogger.com0tag:blogger.com,1999:blog-8007779713765533016.post-84036296538674343902009-08-01T08:00:00.000-03:002009-08-01T08:00:05.232-03:00JAVA: Compactação de ArquivosPara compactar um texto ou frase em formato .ZIP, usando tecnologia Java, é uma tarefa relativamente simples.<br /><br />Primeiro, cria-se um objeto de escrita de <span style="font-style: italic;">bytes</span> FileOutputStream, em seguida cria-se um ZipOutputStream passando o FileOutputStream como parâmentro. O ZipOutputStream é responsável por escrever os bytes de forma compactada.<br /><br />Segue um exemplo de como compactar o conteúdo de uma variável String:<br /><br /><pre name="code" class="java"><br />import java.io.FileOutputStream;<br />import java.io.IOException;<br />import java.util.zip.ZipEntry;<br />import java.util.zip.ZipOutputStream;<br /><br />public class ZipFile {<br /><br />public static void main(String[] args) {<br /><br /> String str = "Texto para ser compactado! teste.";<br /><br /> try {<br /> // cria o arquivo zip<br /> String outFilename = "/tmp/outfile.zip";<br /> ZipOutputStream out = new ZipOutputStream(new FileOutputStream(<br /> outFilename));<br /><br /> out.putNextEntry(new ZipEntry("file.txt"));<br /><br /> // grava a string acima no arquivo zip<br /> out.write(str.getBytes(), 0, str.getBytes().length);<br /> out.closeEntry();<br /><br /> // fecha a stream e completa o arquivo<br /> out.close();<br /> } catch (IOException e) {<br /> }<br /><br /> System.out.println("Complete");<br />}<br />}<br /></pre><br /><br /><br />O código de exemplo cria uma aquivo compactado /tmp/outfile.zip. Dentro do arquivo zip será criado um arquivo chamado file.txt com o texto contido na String str.<br /><br /><br />Para mais informações:<br /><a href="http://java.sun.com/developer/technicalArticles/Programming/compression/">http://java.sun.com/developer/technicalArticles/Programming/compression/</a>Eiti Kimurahttp://www.blogger.com/profile/06120692554290728265noreply@blogger.com1tag:blogger.com,1999:blog-8007779713765533016.post-12044480836334138972009-07-25T08:15:00.000-03:002009-07-25T08:15:00.784-03:00Descobrir a quais grupos pertençoNa necessidade de descobrir a quais grupos do sistema seu usuário pertence, a forma mais simples é usando o comando <span style="font-style: italic;">groups</span>.<br /><br />O comando <span style="font-style: italic;">groups</span>, lista todos os grupos (separados por espaço) aos quais o usuário corrente está associado:<br /><br />groups<br /><br />Resultado para o meu usuário:<br /><br />eiti adm dialout cdrom plugdev users lpadmin admin sambashare uml-net<br /><br />No caso se quiser saber também os ids dos grupos, basta utilizar o comando id:<br /><span style="font-style: italic;">id</span><br /><br />Resultado:<br />uid=1000(eiti) gid=1000(eiti) grupos=4(adm),20(dialout),24(cdrom),46(plugdev),100(users),108(lpadmin),123(admin),124(sambashare),127(uml-net),1000(eiti)<br /><br />Boa sorte.Eiti Kimurahttp://www.blogger.com/profile/06120692554290728265noreply@blogger.com0tag:blogger.com,1999:blog-8007779713765533016.post-81374199015834750922009-07-17T09:34:00.000-03:002009-07-17T09:34:00.902-03:00Instalação de Fontes Latex no Ubuntu<span style="font-weight: bold;">Instalação de Fontes Latex no Ubuntu</span><br /><br />(La)TeX usa Computer Modern com serifa engrossada, como fonte padrão para corpo do texto (e equações). O TeX foi desenvolvido especialmente para documentos científicos e portanto, foi adotado a fonte Modern que oferece um clima de seriedade devido a sua aparência elegânte e frio.<br /><br />Veja um exemplo de texto com a fonte Computer Modern:<br />http://www.dm.ufscar.br/~sadao/latex/doc-and-fonts/fontscm_pt.pdf<br /><br />Vamos aos passos para instalação das fontes no Linux. Após a instalação será possível utilizar as fontes em documentos do OpenOffice, por exemplo.<br />As instruções a seguir foram executadas com sucesso na distribuição Ubuntu versão 8.10.<br /><br />Primeiro, deve-se efetuar o download do arquivo com as fontes. O arquivo pode ser baixado do seguinte endereço:<br />http://canopus.iacp.dvo.ru/~panov/cm-unicode/download.html<br /><br />Baixa o arquivo pfb fonts (cm-unicode-VERSION-pfb.tar.gz). Descompacte o arquivo em um diretório temporário, por exemplo /tmp:<br /><br />cd /tmp<br />tar xzvf cm_unicode-VERSION-pfb.tar.gz<br />cd cm-unicode-VERSION<br /><br />O diretório de fontes do X11, crie um novo diretório chamado cm-unicode para as fontes. No meu caso criei em: /etc/X11/fonts/<br /><br />sudo mkdir -p /etc/X11/fonts/cm-unicode<br /><br />Como super usuário, copie os arquivos das fontes:<br /><br />sudo cp *.afm /etc/X11/fonts/cm-unicode<br />sudo cp *.pfb /etc/X11/fonts/cm-unicode<br /><br />Para ativar as fontes execute os comandos:<br /><br />sudo mkfontscale<br />sudo mkfontdir<br /><br />No arquivo /etc/fonts/fonts.conf, adicione uma nova entrada para o diretório de fontes:<br /><br />/etc/X11/fonts/cm-unicode<br /><br />Atualize o cache de fontes:<br /><br />sudo fc-cache<br /><br />Pronto, agora basta reiniciar o ambiente gráfico (X), para que a lista de fontes Computer Modern Unicode (CMU) esteja disponível para utilização.<br /><br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhWpsI4rz6bulQBCpz1YmieH3ag6tuUUPUDEvSPMMov6qAuq3SVKhDxV4g2SRC6G_kjp6rqCbdqyavzS45o5KY7kjGJoYGfPPrChtFP7oBsz56UqnXPMzrjGlSRzYhNiohwuxxvGcLZCkk/s1600-h/writer_computer_modern.gif"><img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 224px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhWpsI4rz6bulQBCpz1YmieH3ag6tuUUPUDEvSPMMov6qAuq3SVKhDxV4g2SRC6G_kjp6rqCbdqyavzS45o5KY7kjGJoYGfPPrChtFP7oBsz56UqnXPMzrjGlSRzYhNiohwuxxvGcLZCkk/s320/writer_computer_modern.gif" alt="" id="BLOGGER_PHOTO_ID_5345676871585269826" border="0" /></a><br />Exemplo de utilização da fonte do Writer do BrOffice 3.<br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />Referências:<br /><br />http://canopus.iacp.dvo.ru/~panov/cm-unicode/install.html<br />http://canopus.iacp.dvo.ru/~panov/cm-unicode/download.htmlEiti Kimurahttp://www.blogger.com/profile/06120692554290728265noreply@blogger.com0tag:blogger.com,1999:blog-8007779713765533016.post-33796621219470082392009-07-06T09:15:00.002-03:002009-07-09T02:41:32.348-03:00Guia: Comandos básicos do linuxVisando montar um guia de comandos básicos do linux, montei essa pequena listagem com alguns comandos que julguei serem essenciais nos primeiros contatos com máquinas linux. Todos os comandos podem ser executados no console do sistema (shell).<br />Com esses comandos o usuário será capaz de:<br /><br />- se localizar no sistema<br />- se locomover pelas pastas do sistema<br />- apagar, copiar e remover arquivos e diretórios<br />- trocar de usuário<br />- executar comandos como super usuário<br />- listar os arquivos de um diretório<br />- mudar as permissões de arquivos<br />- exibir o conteúdo dos arquivos no console<br />- ver os processos do sistemas e também finalizá-los<br />- consulta o manual de um comando<br /><br />Vamos a listagem:<br /><br />Para logar como super usuário:<br /><pre style="border: 1px solid rgb(204, 204, 204); font-size: 9pt; line-height: 1em; margin-bottom: 0em; padding-left: 10px;"><br />su -<br /><br /></pre><br /><br />Para executar um comando com permissão de super usuário:<br /><pre style="border: 1px solid rgb(204, 204, 204); font-size: 9pt; line-height: 1em; margin-bottom: 0em; padding-left: 10px;"><br />sudo command<br /><br /></pre><br /><br />Se ao logar em uma máquina linux, bater a dúvida: Onde estou? O comando abaixo mostra o diretório corrente:<br /><pre style="border: 1px solid rgb(204, 204, 204); font-size: 9pt; line-height: 1em; margin-bottom: 0em; padding-left: 10px;"><br />pwd<br /><br /></pre><br /><br />Listagem dos arquivos de uma diretório em forma de lista:<br /><pre style="border: 1px solid rgb(204, 204, 204); font-size: 9pt; line-height: 1em; margin-bottom: 0em; padding-left: 10px;"><br />ls -lah<br /><br /></pre><br /><br />Mudar para outro diretório:<br /><pre style="border: 1px solid rgb(204, 204, 204); font-size: 9pt; line-height: 1em; margin-bottom: 0em; padding-left: 10px;"><br />cd /another/directory<br /><br /></pre><br /><br />Copiar um arquivo de um diretório para outro:<br /><pre style="border: 1px solid rgb(204, 204, 204); font-size: 9pt; line-height: 1em; margin-bottom: 0em; padding-left: 10px;"><br />cp /some/directory/somefile.txt /another/directory<br /><br /></pre><br /><br />Copia um diretório e todos os seus arquivos e subdiretórios recursivamente<br /><pre style="border: 1px solid rgb(204, 204, 204); font-size: 9pt; line-height: 1em; margin-bottom: 0em; padding-left: 10px;"><br />cp -R pasta_orig pasta_destino<br /><br /></pre><br /><br />Sai do diretório corrente indo para o diretório pai:<br /><pre style="border: 1px solid rgb(204, 204, 204); font-size: 9pt; line-height: 1em; margin-bottom: 0em; padding-left: 10px;"><br />cd ..<br /><br /></pre><br /><br />Mover um arquivo de um diretório para outro:<br /><pre style="border: 1px solid rgb(204, 204, 204); font-size: 9pt; line-height: 1em; margin-bottom: 0em; padding-left: 10px;"><br />mv /some/directory/somefile.txt /another/directory<br /><br /></pre><br /><br />Para renomear um arquivo, mova-o:<br /><pre style="border: 1px solid rgb(204, 204, 204); font-size: 9pt; line-height: 1em; margin-bottom: 0em; padding-left: 10px;"><br />mv oldname.txt newname.txt<br /><br /></pre><br /><br />Apagar um arquivo:<br /><pre style="border: 1px solid rgb(204, 204, 204); font-size: 9pt; line-height: 1em; margin-bottom: 0em; padding-left: 10px;"><br />rm filename.txt<br /><br /></pre><br /><br />Apagar um diretório e seus arquivos recursivamente<br /><pre style="border: 1px solid rgb(204, 204, 204); font-size: 9pt; line-height: 1em; margin-bottom: 0em; padding-left: 10px;"><br />rm -r dirname (use com extrema cautela!)<br /><br /></pre><br /><br />Criar um diretório:<br /><pre style="border: 1px solid rgb(204, 204, 204); font-size: 9pt; line-height: 1em; margin-bottom: 0em; padding-left: 10px;"><br />mkdir dirname<br /><br /></pre><br /><br />Mudar as permissões de um arquivo ou diretorio para possa ser modificado por qualquer usuário<br /><pre style="border: 1px solid rgb(204, 204, 204); font-size: 9pt; line-height: 1em; margin-bottom: 0em; padding-left: 10px;"><br />chmod ugo+rwx file_or_directory<br /><br /></pre><br /><br />ugo+rwx significa, para (usuário, grupo, outros), + mais permissões (read, write, execute). Use o sinal de menos - ou invés do sinal de + para remover permissões. ugo e rwx pode ser usado em qualquer ordem, ex.: go-w.<br /><br />Para ver o conteúdo de um arquivo:<br /><pre style="border: 1px solid rgb(204, 204, 204); font-size: 9pt; line-height: 1em; margin-bottom: 0em; padding-left: 10px;"><br />more filename.txt<br /><br /></pre><br /><br />Tecle espaço para rolar para a próxima páquia e q para sair.<br />Com o less é possível é possível adiantar e voltar a exibição de uma parte do arquivo:<br /><pre style="border: 1px solid rgb(204, 204, 204); font-size: 9pt; line-height: 1em; margin-bottom: 0em; padding-left: 10px;"><br />less filename.txt<br /><br /></pre><br /><br />Mostra as ultimas linhas de um arquivo texto:<br /><pre style="border: 1px solid rgb(204, 204, 204); font-size: 9pt; line-height: 1em; margin-bottom: 0em; padding-left: 10px;"><br />tail -n number_of_lines filename.txt<br /><br />ex:<br /><br />tail -n 100 filename.txt<br /><br /></pre><br /><br />Mostra as primeiras linhas de um arquivo:<br /><pre style="border: 1px solid rgb(204, 204, 204); font-size: 9pt; line-height: 1em; margin-bottom: 0em; padding-left: 10px;"><br />head -n number_of_lines filename.txt<br /><br /></pre><br /><br />Lista os processos rodando no sistema:<br /><pre style="border: 1px solid rgb(204, 204, 204); font-size: 9pt; line-height: 1em; margin-bottom: 0em; padding-left: 10px;"><br />ps -ef<br /><br /></pre><br /><br />Lista os processos do java rodando no sistema:<br /><pre style="border: 1px solid rgb(204, 204, 204); font-size: 9pt; line-height: 1em; margin-bottom: 0em; padding-left: 10px;"><br />ps -ef | grep java<br /><br /></pre><br /><br />Finaliza um processo do sistema, o Process ID <pid>(pid), deve ser informado para essa operação e pode ser obtido por meio do comando ps:<br /><br /><pre style="border: 1px solid rgb(204, 204, 204); font-size: 9pt; line-height: 1em; margin-bottom: 0em; padding-left: 10px;"><br />kill -9 pid<br /><br /></pre><br /><br />Descompacta arquivos .zip<br /><pre style="border: 1px solid rgb(204, 204, 204); font-size: 9pt; line-height: 1em; margin-bottom: 0em; padding-left: 10px;"><br />unzip filename.zip<br /><br /></pre><br /><br />Descompacta arquivos .rar<br /><pre style="border: 1px solid rgb(204, 204, 204); font-size: 9pt; line-height: 1em; margin-bottom: 0em; padding-left: 10px;"><br />unrar filename.rar<br /><br /></pre><br /><br />Descompacta arquivos.tar.gz<br /><pre style="border: 1px solid rgb(204, 204, 204); font-size: 9pt; line-height: 1em; margin-bottom: 0em; padding-left: 10px;"><br />tar xvfz arquivo.tar.gz<br /><br /></pre><br /><br />Compacta um arquivo ou um diretório<br /><pre style="border: 1px solid rgb(204, 204, 204); font-size: 9pt; line-height: 1em; margin-bottom: 0em; padding-left: 10px;"><br />tar cvfz arquivo.tar.gz diretorio/arquivo<br /><br /></pre><br /><br />Cancela um processo/operação<br />ctrl+C<br /><br />Coloca um processo em execução em background:<br />ctrl+Z<br />bg<br /><br />Executa um arquivo binário/script<br /><pre style="border: 1px solid rgb(204, 204, 204); font-size: 9pt; line-height: 1em; margin-bottom: 0em; padding-left: 10px;"><br />./script.h<br /><br /></pre><br /><br />Acessar uma outra máquina linux via SSH:<br /><pre style="border: 1px solid rgb(204, 204, 204); font-size: 9pt; line-height: 1em; margin-bottom: 0em; padding-left: 10px;"><br />ssh myuser@myserverip.com<br /><br />ex.:<br />ssh kimura@200.189.1.2<br /><br /></pre><br /><br />Acessar uma url no console via browser:<br /><pre style="border: 1px solid rgb(204, 204, 204); font-size: 9pt; line-height: 1em; margin-bottom: 0em; padding-left: 10px;"><br />links http://www.site.com<br /><br /></pre><br /><br />Finalmente, qualquer dúvida sobre um comando, consulte o manual :)<br /><br /><pre style="border: 1px solid rgb(204, 204, 204); font-size: 9pt; line-height: 1em; margin-bottom: 0em; padding-left: 10px;"><br />man command<br /><br /></pre><br /><br />Boa sorte!<br />Seja livre! Use Linux!<br /><br /><br /></pid>Eiti Kimurahttp://www.blogger.com/profile/06120692554290728265noreply@blogger.com0tag:blogger.com,1999:blog-8007779713765533016.post-62830150965788193272009-06-25T06:06:00.003-03:002009-06-25T06:24:53.412-03:00Visita de Richard Stallman na UNICAMPNa última segunda-feira dia 22/06/2009, tivemos a visita do irreverente bandeirante do software livre em Campinas-SP, o <a href="http://stallman.org/">Richard Stallman</a>.<br /><br />Ele fez uma palestra falando sobre a filosofia do software livre, motivos e justificativas para seguir tal filosofia e implicações legais e morais da utilização de software proprietário.<br /><br />Em 1983 ele deslanchou o movimento do software livre no mundo, com a criação da <a href="http://www.fsf.org/">Free Software Foundation</a>. Hoje, Richard Stallman pede: “Por favor, não chame o GNU de Linux”.<br /><br />A filosofia do software livre defendida por Stallman, se refere basicamente a 4 liberdades:<br /><br /><ul><li>0 : liberdade de executar o programa para qualquer propósito</li><li>1 : liberdade de estudar como o programa funciona e adaptá-lo para suas necessidades.<br />O acesso ao código fonte é essencial para isso.</li><li>2 : liberdade de distribuir cópias do programa livremente</li><li>3 : liberdade de melhorar o programa e distrubuir essas melhoras/correções para o público, de forma a contribuir com a comunidade</li></ul>Segue o link para baixar o cartaz de divulgação da palestra:<br />http://www.ic.unicamp.br/~islene/mc039/cartaz.pdf<br /><br />E por fim, minha foto com o Guru do software livre e seu mascote GNU:<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiMIGYAzhbJYMPW5cvD1DTI9Ix7GXfBNcmGRQNbrLGuvpw3SK_F9_ePeBdLFTpaMfuIYUKhBFQt-NgV7d3Bcj3t4djZDhfclbHTNalAwETsrjyt3h3XPVbY0OXG0pG6EEF_TvMnuFf5yPY/s1600-h/stallman_eiti_unicamp-2009.jpg"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 252px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiMIGYAzhbJYMPW5cvD1DTI9Ix7GXfBNcmGRQNbrLGuvpw3SK_F9_ePeBdLFTpaMfuIYUKhBFQt-NgV7d3Bcj3t4djZDhfclbHTNalAwETsrjyt3h3XPVbY0OXG0pG6EEF_TvMnuFf5yPY/s320/stallman_eiti_unicamp-2009.jpg" alt="" id="BLOGGER_PHOTO_ID_5351192589370939938" border="0" /></a><span style="font-size:85%;"><span style="font-style: italic;">Agradecimentos ao Clausius Reis pela foto. :)</span></span><br /><br />Para mais informações acesse:<br /><br />http://www.gnu.org/<br />http://stallman.org/<br />http://www.fsf.org/Eiti Kimurahttp://www.blogger.com/profile/06120692554290728265noreply@blogger.com0tag:blogger.com,1999:blog-8007779713765533016.post-11069983005614638772009-06-20T08:33:00.002-03:002009-06-23T03:13:23.458-03:00Thunderbird: Arquivo de assinatura com imagemUltimamente precisei adaptar minha assinatura de e-mail com uma imagem, e notei que para fazer isso no mozilla thunderbird faz-se necessário criar um arquivo no formato HTML com o design de sua assinatura.<br /><br />Então, mãos à obra:<br /><br /><pre name="code" class="html"><br /><br /><table width="100%" border=0><br /> <tr><br /> <td nowrap="nowrap"><br /> <div style="font-family:Tahoma, Verdana, Arial; font-size:8.5pt; color:#78af28; font-weight:bold;">Eiti Kimura</div><br /> <div style="font-family:Tahoma, Verdana, Arial; font-size:8.5pt; color:#497e94;">tecnologia<br /><br /> <a href="mailto:eiti@company.com" target="_blank" style="color: #497e94">eiti@company.com</a><br /> </div><br /> </td><br /> </tr><br /> <tr><br /> <td nowrap="nowrap"><img src="http://www.company.com/meulogotipo.gif" border="0"></td><br /> </tr><br /></table><br /><br /></pre><br /><br />O código de exemplo da listagem acima, monta uma assinatura simples com um nome, departamento, link para e-mail e um pequeno logo.<br /><br />Para adicionar essa assinatura como padrão para sua conta, salve esse código com nome de assinatura.html, vá até o menu editar->configurar contas do thunderbird. Na janela que se abre, selecione sua conta e marque a caixa de seleção: inserir arquivo como assinatura, clique no botão arquivo e abra o arquivo html conforme codificado a cima.<br /><br />Ao iniciar a composição de um novo e-mail, note sua assinatura no final da página, no entanto repare que a imagem do logo não aparece na página. Isso se deve proque no exemplo a imagem está hospedada em um servidor externo. Ao enviar um e-mail com essa configuração, o thunderbird exibe uma mensagem: anexando meulogo.gif, o que indica que ao enviar a mensagem o programa anexa a imagem do site que você indicou na sua assinatura.<br /><br />Uma desvantagem desse modelo, é que você sempre precisará ter as imagens utilizadas em sua assinatura hospedadas em um site da web. Esse modelo é o mais difundido quando se trata de assinaturas de e-mail para o thunderbird, contudo nem sempre é o mais usual. Outros clientes de e-mail dão a possibilidade de anexar à assinatura imagens do disco local do seu computador, com o thunderbird não é diferente, também é possível fazer isso, o que muda é a codificação de sua assinatura.<br /><br />Modifique o código html da assinatura acima para que fique da seguinte forma:<br /><br /><pre name="code" class="html"><br /><br /><table width="100%" border=0><br /> <tr><br /> <td nowrap="nowrap"><br /> <div style="font-family:Tahoma, Verdana, Arial; font-size:8.5pt; color:#78af28; font-weight:bold;">Eiti Kimura</div><br /> <div style="font-family:Tahoma, Verdana, Arial; font-size:8.5pt; color:#497e94;">tecnologia<br /><br /> <a href="mailto:eiti@company.com" target="_blank" style="color: #497e94">eiti@company.com</a><br /> </div><br /> </td><br /> </tr><br /> <tr><br /> <td nowrap="nowrap"><img src="file:///home/eiti/Imagens/assinatura/meulogo.gif" border="0"></td><br /> </tr><br /></table><br /><br /></pre><br /><br />A única tag html modificada é a <span style="font-weight: bold;">img</span> que agora aponta para um arquivo local no meu computador. Basta usar a diretiva file:/// mais o caminho da imagem local no seu computador. Percebe que agora ao iniciar a composição do seu e-mail sua assinatura aparece completa, com a imagem do logo inclusive.<br /><br />Espero que seja útil a outros que como eu tiveram dificuldade de inserção de imagens na assinatura do thunderbird.Eiti Kimurahttp://www.blogger.com/profile/06120692554290728265noreply@blogger.com2tag:blogger.com,1999:blog-8007779713765533016.post-85518704253291625572009-06-12T10:07:00.000-03:002009-06-12T10:07:00.300-03:00Editor de Textos GeanyUm excelente editor de textos para sistemas proprietários é o Edit Plus. Depois de migrar para o LINUX, sentia falta de um editor de textos equivalente ao Edit Plus, que fosse leve e permitisse editar e principalmente atualizar os arquivos em tempo real (para acompanhar arquivos de log).<br /><br />Encontrei um excelente editor de textos, leve com recursos avançados, equivalente ao Edit Plus com recursos formidáveis, muito bom.<br />Esse tópico tenho o prazer de apresentar o editor Geany, que passou a sanar a necessidade de um editor robusto para LINUX.<br /><br />Utilizando o Ubuntu 8.10, é possível instalar o Geany com uma linha de comando no shell:<br /><br />sudo apt-get install geany<br /><br />Entretanto, a versão do software nos repositórios do Ubuntu é a 0.14, enquanto que a versão mais recente do programa é a 0.16.<br />Para instalar a versão 0.16, tive que instalar também alguns pacotes adicionais de desenvolvimento para o sistema, uma vez que o programa será compilado para a distribuição.<br /><br />Para compilar a versão mais nova, é necessário instalar o pacotes:<br /><br />aptitude install gnome-core-devel build-essential<br /><br />Logo depois da instalação, baixe a versão mais nova do código-fonte do site do Geany: http://www.geany.org/Download/Releases#source<br /><br />O link para baixar o fonte diretamente do sourceforge é:<br />http://prdownloads.sourceforge.net/geany/geany-0.16.tar.gz?download<br /><br />Descompacte o código fonte, entre no diretório:<br /><br />tar xvfz geany-0.16.tar.gz<br />cd geany-0.16<br /><br />O próximo passo é compilar e instalar o sistema:<br /><br />sudo ./configure<br />sudo make<br />sudo make install<br /><br />Se o programa tiver sido instalado com sucesso, um ícone será criado no menu Aplicativos->Desenvolvimento->Geany, ou simplemente chame o aplicativo a partir do shell:<br /><br />geany<br /><br />Veja uma tela do programa:<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi_xKA7h1WnEWtRwJYhOfj5_6JZtzkcYQjbATrIN9U3rjqIcyMboIHnOsMpfTIJN_e5ft_VnRbJ_fCkGHKaU6-NtWL0zDvP3vajyfDHvTmh9PIefdG6RnqP4XN0bzq0vpWjWofb31r0Gnc/s1600-h/geany.png"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 237px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi_xKA7h1WnEWtRwJYhOfj5_6JZtzkcYQjbATrIN9U3rjqIcyMboIHnOsMpfTIJN_e5ft_VnRbJ_fCkGHKaU6-NtWL0zDvP3vajyfDHvTmh9PIefdG6RnqP4XN0bzq0vpWjWofb31r0Gnc/s320/geany.png" alt="" id="BLOGGER_PHOTO_ID_5318990153456879986" border="0" /></a><br />O Geany, mostrou-se bastante eficiente quanto ferramenta de desenvolvimento, edição simples de texto, códigos-fonte, scripts e etc. Tem vantagem de ser livre de licença e de fácil instalação.<br /><br />Enjoy! ;)Eiti Kimurahttp://www.blogger.com/profile/06120692554290728265noreply@blogger.com0tag:blogger.com,1999:blog-8007779713765533016.post-59523108802075441132009-06-02T14:02:00.000-03:002009-06-02T14:02:01.152-03:00Acesso ao MS-SQLServer via ShellPara acessar o SQLServer no Linux via shell, pode-se utilizar a biblioteca FreeTDS. Este acesso é útil para aqueles que trabalham em um ambiente misto com servidores Linux e Windows.<br /><br />O primeiro passo é verificar os pré-requisitos para a compilação da ferramenta:<br />- GCC<br />- MAKE<br /><br />O código fonte pode ser obtido diretamente do site do projeto FreeTDS, cujo endereço é www.freetds.org. No entanto, nesse exemplo o código fonte será baixado a partir de um mirror.<br /><br />Para efetuar o download do código fonte, execute:<br /><br />wget http://ibiblio.org/pub/Linux/ALPHA/freetds/stable/freetds-stable.tgz<br /><br />Em seguida, deve-se descompactar o arquivo com os fontes:<br /><br />tar xvfz freetds-stable.tgz<br />Ao descompactar, será criado o diretório freetds-0.82, próximo passo será compilar o código fonte e instalar a ferramenta:<br />cd freetds-0.82<br />/configure --with-tdsver=8.0<br />make<br />sudo make install<br /><br />Com a ferramenta instalada, o acesso as bases do SQLServer é feita de forma simples. Digite no shell de acordo com o exemplo:<br /><br />tsql -S <servidor_sqlserver> -U <seu_usuario_do_banco> -P </seu_usuario_do_banco></servidor_sqlserver><br /><servidor_sqlserver><seu_usuario_do_banco><senha_de_acesso><br />tsq -S 192.168.1.1 -U opendevnotes -P @34cwcd12<br /><br />Para executar uma instrução, você digita a consulta e em seguida o comando go.<br /></senha_de_acesso></seu_usuario_do_banco></servidor_sqlserver><br />A Figura abaixo mostra um exemplo de conexão da FreeTDS com um SQL Server 2005 (endereço 192.168.1.32) e com um SQL Server 2000 (endereço 192.168.1.8). O comando SELECT @@version é executado para mostrar a versão dos dois SQL Servers utilizados.<br /><br /><div style="text-align: left;"><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj1epOI81S63cpDswEX-US7mVqTGWZveS4ozPQNp0Z4CJA07S6og4afxOU-s8NZxHgEJW7HqkwTvUmW7ykwQ3adBc5CvPHvwydtEFlZf5-lvJpNwTB7MbWZLOXlOf2tiFHUt7C_oMOPKUI/s1600-h/Figura6b.jpg"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 275px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj1epOI81S63cpDswEX-US7mVqTGWZveS4ozPQNp0Z4CJA07S6og4afxOU-s8NZxHgEJW7HqkwTvUmW7ykwQ3adBc5CvPHvwydtEFlZf5-lvJpNwTB7MbWZLOXlOf2tiFHUt7C_oMOPKUI/s400/Figura6b.jpg" alt="" id="BLOGGER_PHOTO_ID_5315320659738870370" border="0" /></a><br />Dessa forma é possível acessar os bancos de dados via shell no linux.<br /><br /><br />Todo post foi baseado em:<br />http://imasters.uol.com.br/artigo/10196/sql_server/acessando_o_sql_server_no_linux/<br /></div><servidor_sqlserver><seu_usuario_do_banco><senha_de_acesso><br /></senha_de_acesso></seu_usuario_do_banco></servidor_sqlserver>Eiti Kimurahttp://www.blogger.com/profile/06120692554290728265noreply@blogger.com0tag:blogger.com,1999:blog-8007779713765533016.post-11117583519242354622009-05-25T09:00:00.002-03:002009-05-25T09:00:01.648-03:00Gerenciamento de pacotes com apt-getO apt-get é um utilitário de gerenciamento de pacotes via linha de comandos.<br /><br />Para instalar um novo pacote em sua distribuição, digite no console:<br /><br />sudo apt-get install seu_pacote<br /><br />Para instalar o utilitário tcpdump, por exemplo: <br /><br /> #apt-get install tcpdump<br /><br />Os pacotes serão automaticamente baixados e instalados no computador.<br /><br />Entretanto faz-se necessário muitas vezes, saber se um pacote está instalado no sistema, qual a versão dele e até mesmo qual a versão do determinado pacote, para essas tarefas podemos utilizar o apt-cache. <br /><br />O apt-cache faz uma série de operações no cache de pacotes do APT, dentre elas a procura de um pacote, encontrando sua versão e até mesmo suas dependências. <br /><br />Para encontrar as dependências do pacote tcpdump, por exemplo, digite no console:<br /><br /> #apt-cache depends tcpdump<br /><br />Resultado com todas as dependências do pacote:<br /><br />tcpdump<br /> Depende: libc6<br /> Depende: libpcap0.8<br /> Depende: libssl0.9.8<br /><br />Para saber qual a versão de determinado pacote, por exemplo, digite no console: <br /><br />#apt-cache policy tcpdump<br /><br />Resultado com a versão do tcpdump instalada no sistema:<br /><br />tcpdump:<br /> Instalado: 3.9.8-2<br /> Candidato: 3.9.8-2<br /> Tabela de versão:<br /> *** 3.9.8-2 0<br /> 500 http://br.archive.ubuntu.com hardy/main Packages<br /> 100 /var/lib/dpkg/status<br /><br /><br />Essas ferramentas são muito úteis quando se deseja gerenciar os pacotes instalados no computador pela linha de comandos.Eiti Kimurahttp://www.blogger.com/profile/06120692554290728265noreply@blogger.com0tag:blogger.com,1999:blog-8007779713765533016.post-50793818689918140732009-05-13T13:50:00.001-03:002009-05-13T13:50:00.870-03:00Busca de ArquivosPara buscar determinados arquivos no linux, via linha de comandos, pode-se utilizar a seguinte sintaxe: <br /><br />find /mnt -type f -name *.xml -print0 | xargs -0 ls -sh<br /><br />Essa linha busca todos os arquivos XML dentro da pasta /mnt, imprimindo o tamanho do arquivo encontrado também. Muito útil. <br /><br />Fonte: <br />http://ubuntuforums.org/showthread.php?p=6671212Eiti Kimurahttp://www.blogger.com/profile/06120692554290728265noreply@blogger.com0tag:blogger.com,1999:blog-8007779713765533016.post-48941419610984407362009-05-07T09:21:00.000-03:002009-05-07T09:21:00.454-03:00Artigo: Como escrever um vírus em linux em 5 passosEsse artigo é muito interessante, fala sobre a vulnerabilidade de sistemas linux que utilizam os gerenciadores de gráficos KDE e GNOME.<br /><br />O autor mostra que nem sempre um usuário linux está protegido de ameaças, e como é possível criar facilmente um vírus. <br /><br />As dicas de segurança e a conscientização de que o linux não é absoluto, e você não está 100% livre de virus, é um dos pontos fortes desse artigo.<br /><br />Recomento a leitura(em inglês): <br />http://www.geekzone.co.nz/foobar/6229Eiti Kimurahttp://www.blogger.com/profile/06120692554290728265noreply@blogger.com0tag:blogger.com,1999:blog-8007779713765533016.post-74701647980806615542009-04-25T09:10:00.000-03:002009-04-25T09:10:00.275-03:00Instalar o Skype no Ubuntu 8.04Se as configurações do driver da placa de som do seu computado estiverem corretas, a instalação do Skype será simples.<br /><br />Para instalar o Skype no Ubuntu Hardy Heron (versão 8.04), basta executar no console: <br /><br />sudo apt-get install skype<br /><br />Após a instalação, um ícone de acesso ao Skype é criado no menu Applicações->Internet. Basta clicar no atalho do Skype para executá-lo. <br /><br />Para ajustar as configurações de som do seu sistema, no nosso caso do microfone para o Skype, instale o gerenciador gráfico executando o comando: <br /><br />sudo apt-get install alsa-firmware<br /><br />Abra o controle de volume e vá no menu Arquivo->Mudar dispositivo, tenha certeza de que o dispositivo ALSA Mixer está selecionado.<br /><br />Em seguina clique no menu Editar->Preferências, e selecione os dispositivos: microphone, mic boost, internal mic -- ou qualquer outro dispositivo do seu interesse.<br /><br />Basta agora modificar o volume do microfone e verificar se o mesmo não se encontra em mudo ou etc.<br /><br />Fonte:<br /><br />http://divyad.wordpress.com/2008/05/01/install-skype-on-ubuntu-804-hardy-heron-configure-sound/Eiti Kimurahttp://www.blogger.com/profile/06120692554290728265noreply@blogger.com0tag:blogger.com,1999:blog-8007779713765533016.post-77507364106032191862009-04-15T09:33:00.000-03:002009-04-15T09:33:00.899-03:00JAVA: Parse de arquivo XML com DOMEsse post mostra como efetuar a leitura e o parse de um arquivo tipo XML usando JAVA e a API DOM.<br /><br />É muito comum a troca de arquivos XML na web, entre aplicações ou mesmo simples feeds via RSS.<br />O JAVA possui uma API chamada DOM (Document Object Model), com as classes providas por essa API é possível efetuar a leitura de um arquivo XML, extrair informações para objetos.<br /><br />Abaixo segue um exemplo básico de arquivo XML utilizado para ilustrar o exemplo:<br /><br />data.xml<br /><pre style="border: 1px solid rgb(204, 204, 204); font-size: 8pt; line-height: 1em; margin-bottom: 0em; padding-left: 8px;"><br /><br /><company name="MyCompany"><br /> <employee><br /> <id>8</id><br /> <name>Eiti Kimura</name><br /> <department>Development Team</department><br /> <email>eiti@mycompany.com</email><br /> </employee><br /> <employee><br /> <id>9</id><br /> <name>José da Silva</name><br /> <department>Human Resources</department><br /> <email>jose@mycompany.com</email><br /> </employee><br /> <employee><br /> <id>10</id><br /> <name>Karoline Taylor</name><br /> <department>Tecnology Team</department><br /> <email>karoline@mycompany.com</email><br /> </employee><br /></company><br /></pre><br /><br />A idéia principal seria, extrair dos dados dos empregados (employee) desse arquivo, e retornar uma lista de objetos empregado. Esses objetos podem ser manipulados de inúmeras maneiras, entretanto no nosso exemplo, iremos apenas imprimir os objetos no console para verificar a extração dos dados.<br /><br />O arquivo XmlDomParser.java mostra como fazer a leitura do arquivo, o parser e a extração dos dados em forma de uma lista de objetos:<br /><br />XmlDomParser.java<br /><pre name="code" class="java"><br />package com.opendevnotes.xml.dom;<br /><br />import java.io.BufferedReader;<br />import java.io.File;<br />import java.io.FileNotFoundException;<br />import java.io.FileReader;<br />import java.io.IOException;<br />import java.io.StringReader;<br />import java.net.URL;<br />import java.util.ArrayList;<br />import java.util.List;<br /><br />import javax.xml.parsers.DocumentBuilder;<br />import javax.xml.parsers.DocumentBuilderFactory;<br />import javax.xml.parsers.ParserConfigurationException;<br /><br />import org.w3c.dom.Document;<br />import org.w3c.dom.Node;<br />import org.w3c.dom.NodeList;<br />import org.xml.sax.InputSource;<br /><br />/**<br />* @author J.P. Eiti Kimura<br />* @author Thiago Medeiros dos Santos<br />*/<br />public class XmlDomParser {<br /><br /> private String xml;<br /><br /> public static void main(String[] args) {<br /><br /> XmlDomParser parser = new XmlDomParser();<br /><br /> // obtem o path do arquivo<br /> URL url = XmlDomParser.class.getResource("data.xml");<br /><br /> // faz a leitura do arquivo e armazena em uma string<br /> File file = new File(url.getPath());<br /> parser.readFile(file);<br /><br /> // faz o parser do arquivo retornando uma lista de employees<br /> List<employee> empList = parser.unmarshallEmployees();<br /><br /> // escreve a lista no console<br /> for (Employee emp : empList)<br /> System.out.println(emp);<br /> }<br /><br /> /**<br /> * Lê o arquivo do disco<br /> * @param file<br /> * @return retorna um objeto String com o texto do arquivo lido<br /> */<br /> public String readFile(File file) {<br /> try {<br /><br /> BufferedReader inp = new BufferedReader(new FileReader(file));<br /><br /> String line;<br /> StringBuilder sb = new StringBuilder();<br /><br /> while ((line = inp.readLine()) != null) {<br /> sb.append(line).append("\n");<br /> }<br /><br /> this.xml = sb.toString();<br /> return sb.toString();<br /> } catch (FileNotFoundException e) {<br /> e.printStackTrace();<br /> } catch (IOException e) {<br /> e.printStackTrace();<br /> }<br /><br /> return null;<br /> }<br /><br /> /**<br /> * Efetua o parser da String xml<br /> * @return Document<br /> */<br /> public Document parse() {<br /> try {<br /> DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();<br /> DocumentBuilder builder = null;<br /><br /> try {<br /><br /> builder = factory.newDocumentBuilder();<br /> } catch (ParserConfigurationException ex) {<br /> ex.printStackTrace();<br /> }<br /><br /> Document doc = builder.parse(new InputSource(new StringReader(this.xml)));<br /> return doc;<br /> } catch (Exception e) {<br /> e.printStackTrace();<br /> }<br /><br /> return null;<br /> }<br /><br /> /**<br /> * Retorna uma listade objetos Employee<br /> * @return<br /> */<br /> public List<employee> unmarshallEmployees() {<br /><br /> List<employee> employeeList = new ArrayList<employee>();<br /> Document doc = this.parse();<br /><br /> try {<br /> // obtem o primeiro nó filho, o nó raiz <company><br /> Node root = doc.getFirstChild();<br /><br /> // obtem todos os filhos desse nó <employee><br /> NodeList rootChildren = root.getChildNodes();<br /><br /> // para cada <employee> faz a leitura das propriedades<br /> for (int count = 0; count < node =" rootChildren.item(count);" emp =" new"><br /> NodeList rootChildren = root.getChildNodes();<br /> for (int count = 0; count < node =" rootChildren.item(count);"></employee></employee></company></employee></employee></employee></employee></pre><br /><br />Para testar os exemplos acima, os dois arquivos (java e xml), devem estar no mesmo pacote, esse exemplo o pacote criado foi: com.opendevnotes.xml.dom.<br /><br />Dessa forma, pode-se utilizar o Java DOM para ler/parsear arquivos XML preenchendo objetos de interesse. No entanto, o DOM pode ter desempenho ruim com arquivos XML com volume de dados muito grande. Para aplicações de pequeno e médio porte essa solução é amplamente utilizada.<br /><br />Agradecimentos ao meu amigo Thiago Medeiros dos Santos pela ajuda com o parser XML desse exemplo.<br /><br />Referências:<br />http://www.roseindia.net/xml/dom/<br />http://java.sun.com/j2se/1.4.2/docs/api/org/w3c/dom/package-summary.htmlEiti Kimurahttp://www.blogger.com/profile/06120692554290728265noreply@blogger.com0tag:blogger.com,1999:blog-8007779713765533016.post-54931068407862724142009-04-05T08:31:00.000-03:002009-04-05T08:31:00.664-03:00Guia de referência gratuito do Ubuntu LinuxO guia de referência de bolso do Ubuntu Linux está disponível em PDF, totalmente gratuito, idêntico ao formato impresso.<br /><br />Palavras do autor Keir Thomas:<br />"Menos de 48 horas que o livro estava on-line no site, foi baixado mais de 100.000 vezes. Facilmente se tornou o livro mais lido sobre Ubuntu e provavelmente, o livro mais lido de Linux de todos os tempos. Tenho o prazer de dizer que o livro está no topo da lista de livros sobre Linux da Amazon.com".<br /><br />A cópia em PDF do livro pode ser baixada no site:<br /><br />http://www.ubuntupocketguide.com/index2.html<br /><br /><div style="text-align: left;"><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.ubuntupocketguide.com/download2.html"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 194px; height: 99px;" src="http://www.ubuntupocketguide.com/images/download.gif" alt="" border="0" /></a><br /></div><br />ref.: revista fullcircle magazine ed. 21.<br /><br />Abraços,Eiti Kimurahttp://www.blogger.com/profile/06120692554290728265noreply@blogger.com0tag:blogger.com,1999:blog-8007779713765533016.post-36285007216415030312009-03-27T08:33:00.000-03:002009-03-27T08:33:01.013-03:00Ajuste de Data/Hora do Java no RedHat LinuxExecutando um sistema Java Web no sistema RedHat Enterprise 3, percebi que a hora atual que o Java me retornava era em torno de 5 horas atrasada com relação ao horário do sistema, ou seja, o horário do comando date. Tudo leva a crer que o sistema não está configurado para ler um locale que usa como separador o caractere _ (underscore).<br /><br /> Uma forma de contornar o problema é criar um link simbólico da localidade, no meu caso de America/Sao_Paulo, para America/Sao Paulo, e em seguida setar como a localidade padrão do sistema e reiniciar o relógio. Abaixo um exemplo de programa em java simples para exibir a data/hora atual do sistema, para testar as modificações: <br /><br /><pre name="code" class="java"><br />public class TesteHorario {<br /><br /> /**<br /> * @param args<br /> */<br /> public static void main(String[] args) {<br /> System.out.println(new Date());<br /> }<br />}<br /></pre><br /><br /><br />Para criar um link simbólico para a localidade e setar como padrão do sistema, basta executar:<br /><br /><pre style="border: 1px solid rgb(204, 204, 204); font-size: 9pt; line-height: 1em; margin-bottom: 0em; padding-left: 10px;"><br />ln -s /usr/share/zoneinfo/America/Sao_Paulo /usr/share/zoneinfo/America/Sao\ Paulo<br />ln -sf /usr/share/zoneinfo/America/Sao\ Paulo /etc/localtime<br /></pre><br /><br />Ou então no caso de existir uma variável de ambiente setada:<br /><br /><pre style="border: 1px solid rgb(204, 204, 204); font-size: 9pt; line-height: 1em; margin-bottom: 0em; padding-left: 10px;"><br />ln -s $JRE_HOME/lib/zi/America/Sao_Paulo $JRE_HOME/lib/zi/America/Sao\ Paulo<br />ln -sf $JRE_HOME/lib/zi/America/Sao\ Paulo /etc/localtime<br /></pre><br /><br />Para atualizar a data e hora do sistema após a modificação (se necessário):<br />Exemplo: modificar a data atual para 31 de julho, 11:16, basta digitar no console (perceba que a hora é informada no formato de 24h)<br /><br /><pre style="border: 1px solid rgb(204, 204, 204); font-size: 9pt; line-height: 1em; margin-bottom: 0em; padding-left: 10px;"><br />date 07312316 <br /></pre><br /><br />Para atualizar o hardware clock com a data/hora obtidas com o comando date, basta executar:<br /><br /><pre style="border: 1px solid rgb(204, 204, 204); font-size: 9pt; line-height: 1em; margin-bottom: 0em; padding-left: 10px;"><br />/sbin/hwclock --systohc<br /></pre><br /><br />Essas alterações foram suficientes para que o JAVA passasse a exibir a mesma data/hora do sistema operacional (RedHat Enterprise 3)Eiti Kimurahttp://www.blogger.com/profile/06120692554290728265noreply@blogger.com0tag:blogger.com,1999:blog-8007779713765533016.post-59471587589153841932009-03-18T08:00:00.000-03:002009-03-18T08:00:00.249-03:00Transferência de arquivos remotos com SCPQuando se trabalha com linux, geralmente utiliza-se o prompt de comandos (shell).<br />Uma forma fácil de transferir arquivos entre máquinas remotas, no shell do linux, é utilizando o comando scp.<br /><br />O scp (secure copy - remote file copy program) copia arquivos entre máquina em uma rede. Utiliza o ssh para transferência de dados, e utiliza a mesmo sistema de segurança utilizado pelo ssh. Esse comando requisita o nome do usuário e senha na máquina remota.<br /><br />Exemplos de utilização:<br /><br />Transferência de um arquivo local para uma máquina remota e vice-versa:<br /><br /><pre style="border: 1px solid rgb(204, 204, 204); font-size: 9pt; line-height: 1em; margin-bottom: 0em; padding-left: 5px;"><br />scp arquivo_local.txt seu_login@host_remoto:/diretorio/arquivo_remoto.txt<br /><br />scp seu_login@host_remoto:/diretorio/arquivo_remoto.txt arquivo_local.txt<br /><br /></pre><br />Esse utilitário é muito útil para transferir arquivos remotamente de forma segura.Eiti Kimurahttp://www.blogger.com/profile/06120692554290728265noreply@blogger.com0tag:blogger.com,1999:blog-8007779713765533016.post-24039284828917600302009-03-10T08:00:00.000-03:002009-03-10T08:00:00.264-03:00Java: Ler Arquivo TextoEssa dica é bastante trivial, porém é um código que sempre necessito consultar diversas vezes.<br />Resolvi publicar aqui no blog, quem sabe facilita para mais alguém.<br /><br />A dica é simplesmente ler um arquivo de texto linha-a-linha.<br />Vamos ao código:<br /><br /><pre name="code" class="java"><br /><br />try {<br /> BufferedReader in = new BufferedReader(new FileReader("infilename"));<br /> String str;<br /> while ((str = in.readLine()) != null) {<br /> process(str);<br /> }<br /> in.close();<br /> } catch (IOException e) {<br /> }<br /><br /></pre><br />Esse trecho de código, lê uma linha do arquivo por vez, foi retirado originalmente do <a href="http://www.exampledepot.com/egs/java.io/ReadLinesFromFile.html">The Java Developers Almanac 1.4</a>. Essa é a forma mais simples que encontrei para ler arquivos de texto puro.<br /><br />No meu caso, o arquivo de texto é composto por valores separados por vírgula, onde, o primeiro campo se refere ao número de identificação do usuário e o segundo seu nome. Por exemplo:<br /><br />112344316, José da Silva<br />098987626, Marcia de Mello<br />981122154, Fabiane de Andrade<br /><br /><pre name="code" class="java"><br /><br /> /**<br /> * Carrega lista de telefones válidos para processamento<br /> */<br /> private void loadTextFile()<br /> {<br /> String filePath = "/tmp/usersList.txt";<br /> <br /> try {<br /> <br /> BufferedReader in = new BufferedReader(new FileReader(filePath));<br /> String str;<br /> while ((str = in.readLine()) != null) {<br /> String data[] = str.split(",");<br /> System.out.println("Nome: " + data[1] + " CPF.:" + data[0]);<br /> }<br /> <br /> in.close();<br /> } catch (Exception e) {<br /> e.printStackTrace();<br /> System.out.println("Erro ao ler arquivo de texto " + e.toString());<br /> }<br /> }<br /><br /></pre><br /><br />Esse código simples mostrou como ler e processar um arquivo de texto linha por linha.Eiti Kimurahttp://www.blogger.com/profile/06120692554290728265noreply@blogger.com1tag:blogger.com,1999:blog-8007779713765533016.post-12109312781035967942009-03-08T09:00:00.000-03:002009-03-08T09:00:00.311-03:00vmstat: Relatório virtual e estatística do computadorO vmstat é um utilitário interessante quando se necessita saber informações sobre o consumo dos recursos do computador.<br /><br />O vmstat relata informações sobre processos, memória, paginação, bloqueios de IO e atividade da CPU. O primeiro relatório produzido informa uma média desde a ultima vez que o computador foi reiniciado.<br /><br />Abra um prompt de comando e digite vmstat, o utilitário será executando exibindo um relatório similar a esse:<br /><pre>procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu----<br />r b swpd free buff cache si so bi bo in cs us sy id wa<br />0 0 0 518208 579328 878984 0 0 59 51 50 931 4 1 94 1<br /></pre><br />Significado dos parâmetros:<br /><br />r - número de processos executáveis (runnable process)<br />b - número de processos bloqueados<br />in - número de interrupções geradas<br />cs - número de mudanças de contexto<br />us - tempo gasto pela CPU enquanto executava um código de usuário<br />sy - tempo gasto pela CPU enquanto executava um código do kernel<br />id - duração do tempo em que a CPU estava em estava idle<br />wa - tempo em que a CPU estava esperando por I/O<br /><br />Com esse utilitário é possível de forma simples monitorar o consumo de memória, processamento entre outros parâmetros do computador.<br /><br />Referências:<br /><a href="http://ibgwww.colorado.edu/%7Elessem/psyc5112/usail/man/linux/vmstat.8.html">http://ibgwww.colorado.edu/~lessem/psyc5112/usail/man/linux/vmstat.8.html</a>Eiti Kimurahttp://www.blogger.com/profile/06120692554290728265noreply@blogger.com0