sábado, 25 de outubro de 2008

Turbinando Graficamente Seu Linux

Quando eu comecei a usar Linux, no início da década de 90 (caramba, quanto tempo!!), não existiam 90% dos programas mais utilizados hoje em dia. O mundo era bem diferente. Geralmente as distribuições vinham por padrão iniciando em INIT 3 (multiusuário, modo texto), o X (que, aliás, não era o X.org, porque este não existia, mas o "fantástico e novíssimo" XFree86) e os gerenciadores de janelas eram bem mais simples. O KDE estava ensaiando os primeiros passos, mas o que o pessoal utilizava mesmo era o Window Maker ou o XFCE (este em especial eu gostava muito porque trazia um certo saudosismo do UNIX AIX, nas boas e velhas estações RISC). O pessoal que tinha mais poder de processamento (e boas placas de vídeo) poderia se dar ao luxo de instalar o sofisticado Enlightenment, que sempre teve um conceito diferentão, com grande ênfase no visual. Mais tarde, alguns utilizaram o IceWM, também uma solução interessante, à época.
Bom, mas hoje é bem diferente. O linux evoluiu a passos largos, muitos novos programas surgiram e novas soluções gráficas também. O KDE se tornou extremamente sofisticado, surgiu o Gnome, que ganhou a paixão de milhares de pessoas, e o Enlightenment continuou seu desenvolvimento, tornando-se extremamente flexível e poderoso e criando suas próprias bibliotecas gráficas. Com o rápido desenvolvimento da tecnologia de hardware, muitas novas portas se abriram. Exemplo disso são as novas possibilidades gráficas com alto custo de desempenho e exímios efeitos visuais e 3D, proporcionado pelo Compiz ou CompizFusion (veja a diferença entre os dois aqui), e possível apenas a partir das modernas placas de vídeo com boa aceleração gráfica. Por outro lado, houve também quem se mirasse no revés do turbilhão de complexidades e requintes, procurando soluções simples e leves, porém igualmente eficientes, como o Fluxbox, baseado em seu antecessor, o Blackbox.
Para se ter idéia, as possibilidades hoje são tantas que existe até soluções comerciais, como o CDE, com o charmoso visual do Motif, para UNIX, HP/UX e Solaris, além de vários outros ambientes gráficos menos utilizados, como o FVWM, o FVWM95 (um clone do FVWM, modificado para parecer com o Windows 95).
Porém, o que são gerenciadores de janelas (window manager) se não se puder configurá-los exaustivamente com diversos temas, papéis de parede, ícones, cores e estilos?? No linux, o grau de personalização atingiu patamares inimagináveis, e existem boas referências para quem quer turbinar visualmente seu ambiente, ou simplesmente dar uma leve variada na cara rotineira. Confira abaixo:


Em tempo: vale citar ainda o Sun Java Desktop System, o gerenciador de janelas da Sun, criado para o Solaris, e o Looking Glass 3D, um ousado gerenciador de janelas 3D, multiplataforma, também desenvolvido pela Sun.
Espero ter ajudado, pessoal!! Gostou?? Não gostou?? Comente!!!

terça-feira, 21 de outubro de 2008

Como Rodar Aplicações Root em Modo Gráfico (famoso "cannot open display" ou "can't open display")

Certamente já aconteceu contigo o seguinte: você instalou o Kurumin, Debian, Ubuntu, SuSE, etc. e tal. Durante a instalação, ele pede para você criar um usuário normal (ou seja, com permissão restrita), além do root. Termina a instalação com sucesso. Daí você reinicia a máquina e entra no modo gráfico, utilizando seu brilhante usuário com permissões restritas.
Tudo vai bem, até que você precisa abrir um terminar e digitar:

su [para entrar como superusuário]
[digite a senha do root]
firefox & [ou qualquer outra aplicação gráfica]

Então seu sistema responde algo como:

Gtk-WARNING **: cannot open display:
blá blá blá firefox: Permission denied
Xlib: connection to ":0.0" refused by server
Xlib: No protocol specified

ou, em algumas distros, a mensagem bem similar:

blá blá blá X11 error: Can't open display: :0.0
Set DISPLAY environment variable, use -display option
or check permissions of your X-Server
(See "man X" resp. "man xhost" for details)

Daí sobe aquele frio, sua garganta gela, sua pele seca... e você lembra que precisa executar um tal programa importantíssimo que é em modo gráfico, mas sabe que seu gerenciador de login (GDM ou KDM, talvez?) não permite que o root (administrador) faça login graficamente, alegando segurança... então lhe falta ar, você transpira, sinto o bafo gélido da morte.... nossa, o que fazer????
Caaalmmaaa... O Pajézinho tá aqui pra ajudar!!


  • Explicando o que aconteceu.
Isto acontece muitas vezes quando criamos um novo usuário diretamente pelo adduser, além de outras situações específicas, ou decorrente de uma má instalação do seu linux. Significa tão-somente que o usuário em questão não está autorizado pelo sistema a executar aplicativos gráficos do root. Sim, é preciso de autorização para isto, e essa autorização fica numa listinha do usuário chamado pelo "su".
Quer dizer mais ou menos o seguinte: o root tem uma lista de usuário em quem confia o acesso ao X. Se você entrou como root a partir do usuário A, mas A não está na lista do root, então não adianta forçar, você não tem autorização para o X e não vai poder rodar nada gráfico...

  • Como consertar?
Esta dita-cuja (a lista de usuários autorizados) fica num arquivo chamado .Xauthority, no home do seu usuário (e no home de qualquer usuário, inclusive do root). Para resolver a questão, basta copiar o .Xauthority de seu usuário para o do root (sim, no seu .Xauthority, você se concede permissão de executar aplicativos usando modo gráfico!!):

su
cp /home/eu/.Xauthority /root/

Agora, o root tem você na lista dele e, assim, pode te autorizar a rodar o X...

  • Solução para os preguiçosos
Bom, eu poderia ter terminado logo aí acima, mas sei que tem gente que talvez não tenha acertado, ou talvez não tenha tido paciência de ler direito tudo que escrevi... neste caso, use a solução não elegante: ao invés de logar com o comando "su", tente logar com o comando "sux", para ganhar automaticamente permissão de modo gráfico:

sux
[digite a senha do root]
firefox & [ou qualquer outra aplicação gráfica]

  • Solução Braçal
Não poderia faltar, pois os escovadores de bits também têm coração... esta solução funciona na maioria das vezes. Basta seguir os passos:

1- digite o comando "xauth list" como usuário comum. Deve vir ao terminal a lista de acessos, num formato algo parecido com:

10.0.0.1:0 MIT-MAGIC-COOKIE-1 fe5100ab8ef0dd5e139b096ca7568719
[fe80::211:d8ff:feb1:42e5]:0 MIT-MAGIC-COOKIE-1 fe5100ab8ef0dd5e139b096ca7568719
viola/unix:10 MIT-MAGIC-COOKIE-1 b0a4039a0924ad6f064f3b45bfdbb5bb
viola/unix:0 MIT-MAGIC-COOKIE-1 fe5100ab8ef0dd5e139b096ca7568719

(10.0.0.1 é meu IP na rede e "viola" é o nome da máquina. Sim, minha rede tem várias máquinas com nomes de instrumentos musicais).

2- agora, entre como root e adicione a autorização que você necessita (se não souber qual, vá adicionando as da lista e testando):

xauth add 10.0.0.1:0 . fe5100ab8ef0dd5e139b096ca7568719 [cuidado para não esquecer o "."]

Isto deve funcionar, e você poderá ter uma boa e tranquila noite de sono hoje!!

quarta-feira, 15 de outubro de 2008

Blender Breve Tutorial: Usando Raytracing

Raytracing é um recurso de criação 3D a partir do qual é possível simular, em um objeto, propriedades reflexivas (especulares) e de transparências. Normalmente, o raytracing dá ao objeto um efeito de espelho, de reflexo, e, quando aplicado sobre um material (especialmente um material com textura), sugere características metálicas.
A imagem abaixo foi feita usando simplesmente o efeito de raytracing, para dar o caráter metálico e reflexivo às bolas de bilhar 3D.



Apesar de ser um efeito interessante, é também um efeito caro. O custo de processamento para renderizar as imagens com raytracing é alto, e isto pode crescer exponencialmente quando se tratar de vídeos!
Quando você utilizar raytracing, observe os seguintes detalhes:

  • Cuidado com o efeito: não vele a pena utilizar um efeito caro se ele não tiver importância no contexto, ou seja, o objeto é pequeno demais, ou está escondido demais, ou tem pouca luz, etc.
  • Cuidado com o "world"!! Sim, o raytrancing é capaz de refletir, além dos outros objetos, todos os aspectos do cenário. Fique atento a isto e o use ao seu favor!
  • Evite usar luzes do tipo "SPOT"; prefira luzes do tipo "AREA", para que incida mais luminosidade sobre os objetos com o efeito. Não esqueça de ligar o efeito de sombra da luz! Torna sua modelagem bem mais realista!
  • Uma opção ao uso de sombras é a propriedade "Ambient Occlusion", do "World".

O Raytracing só pode ser aplicado se o objeto em questão contiver um material. Experimente criar materiais, com ou sem textura, adicioná-los a um objeto e aplicar o Raytracing a eles!! É impressionante: funciona muito bem inclusive com certas imagens como textura!!

Exemplos:


É isso aí, pessoal!! Boa sorte e espero ter ajudado!!

quinta-feira, 9 de outubro de 2008

Gerador de Imagens para AJAX e Tutorial

Freqüentemente, quando fazemos um portal Web que utiliza AJAX, necessitamos daquelas lindas figurinhas GIF animadas que ficam rodando, indicando ao usuário que a pesquisa está sendo feita. Como tenho visto que alguns colegas têm dificuldades de criar ou achar estas figuras animadas de clipart próprias para AJAX, resolvi colocar aqui o link para um programa online gratuito muito bom que já utilizei diversas vezes:

http://www.ajaxload.info/

Trata-se de um gerador automático de figuras (clipart) animadas para AJAX totalmente configurável!! Ele mesmo é todo feito em AJAX!! Facílimo de usar!! Permite escolha de cores (com uma linda div pop-up que não deixa nada a desejar para os melhores programas de edição de imagens), possui vários modelos de figuras, etc. Espero que ajude a todos!!

  • Tutorial de AJAX
E, para quem quer uma boa referência de tutoriais de AJAX, independente da linguagem e do framework utilizado, aqui vai uma dica de amigo:

http://www.ajax-tutorials.com/

Trata-se de um portal só de artigos e tutoriais de AJAX, categorizados para as linguagens e frameworks mais comuns, como .NET, Coldfusion, Java, PHP, SOA, Ruby on Rails, Yahoo! UI, GWT (Google Web Toolkit), etc. Simplesmente fantástico!! Extremamente completo, organizado, cheio de novidades e gratuito (apesar de exigir registro). Alguns tutoriais inclusive têm versão em PDF e permitem muitas vezes que você baixe os arquivos de fontes. Vale a pena a visita!!

domingo, 5 de outubro de 2008

Struts, JSF, GWT, Qual o Melhor Framework Java para WEB?

Java é uma linguagem que tem diversos frameworks para desenvolvimento WEB, uns mais parecidos com outros, e alguns nem tanto. Como a ênfase do Java no mercado é WEB, isto tem motivado inclusive o surgimento de novas soluções nesta área.
Semana passada tive um debate com alguns colegas sobre arcabouços (frameworks) para desenvolvimento WEB em Java. De certa forma, ter muitas opções é bom, indica a riqueza de ferramentas disponíveis aos desenvolvedores, porém demanda mais cuidado na escolha da opção mais propícia. Vamos a uma análise comparativa simples de alguns dos frameworks mais comuns, que pode o ajudar na hora da decisão certeira e fundamental de seu projeto...

  • JSF (Java Server Faces): Este é original da Sun, que de início foi preterido porque não parecia funcionar tão bem, mas hoje é bem sólido e poderoso. Desenvolver em JSF tem se tornado trivial com a ajuda de ferramentas poderosas como o Netbeans, que agiliza muito o trabalho. Para sistemas de telas padronizadas e arquitetura baseada em CRUD, o JSF é o ideal: agiliza o desenvolvimento, simplifica e previne erros com o uso de JSTL, etc.
  • Apache Struts Framework: Durante muitos anos, esteve presente na maioria maciça de sistemas WEB em Java, junto com o Tiles, que se tornou um projeto independente a partir da versão 2.0 (o Tiles 2 pode ser integrado a JSF e a outros frameworks). É indicado para sistemas de páginas mais flexíveis. Também tem suas taglibs (que nunca foram exatamente muito boas) e suporta JSTL. É indicado para os sistemas onde o JSF não vai tão bem, com telas diferenciadas, muito complexas ou muito personalizadas.
  • Direct Web Remoting (DWR): Como você vê, tanto Struts quanto JSF são arcabouços tradicionais que supõem um cliente burro, passivo, e, embora não se oponham ao DHTML (manipulação de dados da página com Javascript), só conseguem falar com o servidor no recarregamento da página (refresh). Por padrão, não suportam AJAX. Mas não se preocupe: para isto existem pequenos frameworks como o DWR. O DWR implementa chamadas remotas via RPC, possibilitando que seu sistema faça AJAX muito comodamente. Integra bem com Struts e JSF. A partir da versão 2 permite, inclusive, o reverse AJAX: mecanismo pelo qual o Java no servidor controla o navegador através da publicação de scripts. Sem dúvida, a melhor saída para páginas dinâmicas ricas, em Web 2.0, que necessitam de muito AJAX.
  • Google Web Toolkit (GWT): O GWT recolucionou drasticamente o desenvolvimento WEB para Java. Desconstruiu toda a complexidade dos sistemas carregados em múltiplos frameworks, descritores XML, etc., e mergulhou profundamente em Web 2.0. Com o GWT, seu sistema só carrega uma vez a partir de um arquivo HTML. Não tem recarregamento de página. Todas as requisições ao servidor são RPC implementados via callback (AJAX). Não tem sequer arquivos JSP!! O segredo é que a programação é feita toda em Java, inclusive as telas e seus elementos, com direito a breakpoints e debug, e o motor do GWT, em tempo de compilação, transforma todo o Java relativo à tela em Javascript. É muito parecido com o Swing, onde o desenvolvedor compõe, em Java, a GUI do sistema, embora voltado para Web. É ideal para sistemas que exijam uma implementação visual sofisticada, muito AJAX e características de GUI, com elementos como árvores, abas, tabelas dinâmicas, DIVs móveis, Drag & Drop de componentes, exploração de CSS e estilo, etc.
  • Apache Wicket: Muito semelhante ao GWT, o Wicket tem a mesma filosofia: programe a sua GUI em Java e deixe que ele a converta para HTML. Não parece ser tão sofisticado quanto o GWT, mas tem a enorme vantagem de que a correspondência entre seus componentes e os objetos HTML DOM gerados é exata. Ou seja: enquanto, no GWT, os seus componentes normalmente geram em Javascript estruturas complexas de objetos DOM, no Wicket a correspondência é a mesma: um objeto de cá gera um de lá e pronto! Com isso, é possível que web designers e programadores Java trabalhem independentemente e com mais liberdade que com o GWT. Por outro lado, é uma alternativa ideal para sistemas mais simples que, entretanto, terão dificuldades ao sofisticar os componentes visuais, aos moldes do que o GWT oferece.
Conclusão: qual framework devo usar em meu projeto? Todos eles têm vantagens e desvantagens, mas cada um tem uma ênfase em certo aspecto. Não tenha preconceitos nem idéias megalomaníacas. A sua escolha deve ser baseada nas características do seu projeto: como ele é e o que faz. Certamente há uma melhor opção para você, que lhe facilitará a vida e alhiciará conforto e prazer ao encontrar na sua ferramenta exatamente as funcionalidades de que você precisa.

quinta-feira, 2 de outubro de 2008

Resumão de Plugins do Eclipse: Java, C, PHP, Python, Rails, etc!!

Uma IDE para a todas governar...

Não, não estou falando do Um-Anel nem de nenhum romance do J. R. R. Tolkien. Estou falando de uma IDE de desenvolvimento open-source chamada Eclipse.

  • O que é o Eclipse??
Criado nos laboratórios da IBM, o Eclipse - escrito integralmente em Java - foi planejado (naturalmente!) para desenvolvimento em Java. Todavia, impulsionado pelo fato de o Java ter muita aplicação para Web e pela sua própria popularização como ferramenta, além da facilidade de sua arquitetura extremamente plugável, começaram a surgir inúmeros plugins e modificações do eclipse, habilitando-o a suportar muitas outras linguagens.
O primeiro grande passo foi com os plugins do projeto WTP (Web Tools Platform - hoje integrado diretamente às versões mais recentes do Eclipse), onde o Eclipse veio a reconhecer fontes em HTML, CSS, XML, Javascript, XSD, etc. Muitos outros projetos (vários de código aberto) modificaram e adaptaram o Eclipse para os mesmos ou semelhantes fins, como o Lomboz, o (antigo) JBoss IDE ou o Aptana.

  • Uma IDE Baseada em Plugins
O Eclipse é, na verdade, uma pequena IDE enxuta com arquitetura voltada para plugins. Isto permite que se criem facilmente novos plugins para fazer virtualmente qualquer coisa no Eclipse. Na verdade, ao baixar o Eclipse, você já traz uma infinidade de plugins, responsáveis pela maior parte das suas funcionalidades originais!!
Devido a esta flexibilidade, o Eclipse tem se tornado uma ferramenta poderosa para qualquer desenvolvedor, seja ele programador de Javascritp/AJAX, web designer, desenvolvedor Java, PHP, C ou Python, por exemplo.


Alguns dos Principais Plugins para o Eclipse

  • Aptana: Este é sem dúvida o melhor plugin para quem desenvolve ricamente para Web. Suporta maravilhosamente Javascript e AJAX, com direito a reconhecimento de variáveis, auto-completar objetos e funções, breakpoints em Javascript, além de CSS, DOM, PHP, Ruby on Rails, Adobe Air, Apple iPhone, Python, e conta com inúmeras outras funcionalidades. Trata-se na verdade um conjunto de pequenos plugins e (prepare-se!!), ao todo, são dezenas de megas de download. É tanto que tem uma modificação do Eclipse só para o Aptana (o Aptana Studio), que permite ao usuário rodar o plugin de forma standalone, ou seja, sem o resto do Eclipse, deixando o ambiente mais leve. É ideal para web designers e desenvolvedores web. Com o Aptana, seu Eclipse estará simplesmente turbinado com tudo para Web que você precisa e mais um pouco!!
  • PHP: Se você desenvolve para Web em PHP mas prefere manter o Eclipse original, então é recomendável ter algo como o PHPEclipse. Com este plugin, você terá tudo que uma boa IDE pode oferecer. Outra opção é um projeto do próprio Eclipse denominado PDT.
  • JBoss Tools: Assim como o Aptana é muito mais do que um plugin, o JBoss Tools também o é. Trata-se de uma grande suíte de aplicativos para desenvolvimento corporativo da JBoss. É tão grande que há uma modificação do Eclipse feita pela própria JBoss, contendo todas as suas ferramentas. Se você trabalha com J2EE e usa o JBoss, então esta ferramenta é essencial! Ela lhe ajudará não só a manipular o servidor, como também oferecerá suporte ao Hibernate, Struts, JBPM, JSF, etc.
  • Sysdeo Tomcat Plugin: para quem faz sistemas menores e utiliza o formidável Jakarta TomCat, da Apache, como servidor, um plugin indispensável é este. Ele permite, de dentro do Eclipse, parar e reiniciar o servidor, além de fazer o autodeploy. Agora você pode mudar qualquer JSP e ver a modificação na mesma hora!! Agiliza em muito o trabalho!!
  • Any Edit Plugin: excelente plugin para tratar textos. Converte todos os símbolos do Unicode em notação HTML, inclusive os acentos, além de pequenas coisinhas, como converter um trecho entre maiúsculo ou minúsculo, sublinhados e CamelCase, etc. É simples, mas muito útil!!
  • Subclipse Plugin: o Eclipse já vem com um ótimo plugin para CVS, mas (ainda não sei por que!!) não traz nenhuma ferramenta para SVN. Com este plugin, seus problemas se acabaram!! Ele é muito parecido com o tradicional plugin de CVS, inclusive usando algumas imagens idênticas, e fornece todas as funcionalidades que você precisa para controlar seus projetos no repositório do Subversion.
  • Maven Eclipse Plugin: Então imagina que seu super projeto necessite de mais do que simples controladores de versão; necessita de um controlador eficiente de dependências. Ótimo, temos o Maven, da Apache, que permite inclusive a criação de seu repositório particular de dependências!! A partir do Maven Eclipse Plugin, é possível usar o Maven para compilar seu projeto, resolver as dependências e inclusive achar erros no seu pom.xml!!
  • PyDev: Você desenvolve em Python?? Ainda não tem uma IDE de primeira linha?? Então conheça o PyDev, o plugin que transforma o Eclipse num primoroso ambiente de desenvolvimento para Python. Extremamente poderoso, faz Debugger e Breakpoints no código Python, inspeção de variáveis e objetos no modo Debug, auto-complementação de código, verifica a sintaxe, marca erros e TODOs, suporta refatoração completa de código, enfim, todas as maravilhas que o Eclipse faz para Java, ele o faz para o Python!!
  • C/C++ Development Toolkit (CDT): Mas você gosta mesmo é de C, né?? Então fica frio e ouça O Pajezinho aqui - prepare-se para usar o Eclipse!! O CDT é um excelente plugin, que não só identa e marca o código, como também tem ferramentas para automatizar seu desenvolvimento. Ele gera diretivas de Header, cria automaticamente o Header (*.h) e a Classe C++ (*.cpp) a partir de janelas de diálogos, controla Breakpoints, faz Debug, mostra as Threads... em suma: eleva a IDE, consoante ao desenvolvimento em C, ao mesmo patamar em que ela está para o Java.
  • Ruby Development Tools (RDT): Se você trabalha com Ruby ou Ruby on Rails, aqui está um ambiente de desenvolvimento de primeira: marcação (highlight) e verificação de sintaxe, ferramentas gráficas e controle de testes, assistentes de contexto, formatador de código, ferramentas para rodar e debugar, visão hierárquica, refatoramento, etc...
  • Cypal Studio For GWT: Mas você desenvolve em Java e é fã do GWT?? Não se preocupe!! Existe um plugin bem interessante que vai agilizar as tarefas chatinhas de criação/edição de serviços e módulos, criação de projetos e ainda lhe ajudará a rodar o seu módulo com o Hosted Mode. Vale a pena conferir!!
  • JSEclipse - Plugin para Javascript: OK, você não precisa de tanto para ter que instalar o Aptana, mas você precisa lidar com Javascript de uma forma um pouco melhor que o plugin original do Eclipse... então, a sua melhor escolha vai ser usar o JSEclipse. Ele auto-completa e faz marcação (highlight) de seu código, suporta bibliotecas de javascript, identifica objetos e classes criados e modificados, faz sugestão de funções e propriedades, marca erros de sintaxe, e você pode até criar um XML próprio com suas definições de classes!! Muito ágil para quem desenvolve para Web e precisa de uma ferramenta sólida para Javascript...
  • COBOL IDE: Este aqui eu coloquei para mostrar o poder do Eclipse!! Imagine que existe uma pequena suíte de plugins para o Eclipse, criando uma formosa IDE de desenvolvimento para COBOL!! Se você de repente se deparou com um código legado monstruoso em COBOL, feito pelo Tutankamon em pessoa, e está com medo dele, agora seus problemas podem não ter se acabado, mas apareceu uma boa luz no fim do túnel!!
  • SQL Plugin - QuantumDB: Não poderíamos nos esquecer de nossos grandes amigos DBAs ou ADs (ou os bons programadores WEB que precisam freqüentemente colocar a mão na massa e fazer milhares de queries em banco de dados). Com o QuantumDB, você tem uma interface fantástica para não só fazer queries simples, como também fazer muitas outras coisas: controlar schemas, tabelas, views e sequences, constraints, colunas, índices e chaves estrangeiras, salvar e editar arquivos *.SQL, tem wizards para facilitar DELETEs, UPDATEs e INSERTs, reconhece a linguagem SQL, exibe a estrutura do banco em árvore, suporta os mais diversos bancos (acessando via JDBC) e muito mais!!

Bom, pessoal... esta é apenas uma pequena mostra do que os plugins para o Eclipse podem fazer por você!! Muito mais pode ser pesquisado e baixado no portal oficial: Eclipse Plugin Central.
Espero ter ajudado com este resumão e que, agora, você se sinta encorajado e orientado para munir-se de melhores e mais propícas ferramentas, aprimorando seu trabalho e tornando sua vida mais confortável!!
Gostou do artigo?? Deixe sua opinião aí embaixo!! O Pajé também é open source e free!!