<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Rodrigo Pinheiro Matias</title>
	<atom:link href="http://rodrigomatias.goware.com.br/blog/feed" rel="self" type="application/rss+xml" />
	<link>http://rodrigomatias.goware.com.br/blog</link>
	<description>Mostrando as coisas como elas realmente são</description>
	<lastBuildDate>Thu, 08 Apr 2010 20:16:10 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Acessando WebServices com PyS60</title>
		<link>http://rodrigomatias.goware.com.br/blog/archives/111</link>
		<comments>http://rodrigomatias.goware.com.br/blog/archives/111#comments</comments>
		<pubDate>Wed, 07 Apr 2010 05:22:00 +0000</pubDate>
		<dc:creator>Rodrigo Pinheiro Matias</dc:creator>
				<category><![CDATA[Desenvolvimento]]></category>
		<category><![CDATA[PyS60]]></category>
		<category><![CDATA[maemo]]></category>
		<category><![CDATA[meego]]></category>
		<category><![CDATA[mobile]]></category>
		<category><![CDATA[nokia]]></category>
		<category><![CDATA[pys60]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[symbian]]></category>
		<category><![CDATA[tablet]]></category>
		<category><![CDATA[ws]]></category>
		<category><![CDATA[xmlrpc]]></category>

		<guid isPermaLink="false">http://rodrigomatias.goware.com.br/blog/?p=111</guid>
		<description><![CDATA[Depois de algum tempo sem postar nada, resolvemos então escrever um breve artigo sobre a plataforma S60 muito utilizado em aparelhos Nokia. Como os mobiles são aparelhos com recursos reduzido, as vezes é preciso uma auxilio de equipamentos remotos para execução de tarefas mais criticas como, armazenamento de dados remoto, ou mesmo processamentos com maiores [...]]]></description>
			<content:encoded><![CDATA[<p>Depois de algum tempo sem postar nada, resolvemos então escrever um breve artigo sobre a plataforma S60 muito utilizado em aparelhos Nokia. Como os mobiles são aparelhos com recursos reduzido, as vezes é preciso uma auxilio de equipamentos remotos para execução de tarefas mais criticas como, armazenamento de dados remoto, ou mesmo processamentos com maiores custos de processamento.</p>
<p>Neste artigo iremos descrever como podemos escrever um simples servidor de funcionalidades utilizando o protocolo XMLRPC e depois acessa-los utilizando um aparelho Symbian utilizando o Python for S60,<span id="more-111"></span></p>
<h1>1. Regra do negocio</h1>
<p>O aplicativo a ser desenvolvido deverá acessar duas funcionalidades remotas, são elas:</p>
<ol>
<li>Informar a carga da bateria.</li>
<li>Informar o sinal do celular.</li>
</ol>
<p>As duas funcionalidades devem disparar alertas na tela do celular informando que o status medido está baixo (0 à 25%), aceitável (26 à 75%) ou ótimo (75 à 100%).</p>
<h1>2. Implementando o Serviço</h1>
<p>Crie um arquivo chamado de server.py, veja o conteúdo logo abaixo:</p>
<pre name="code" class="python"># -*- coding: utf-8 -*-
from SimpleXMLRPCServer import SimpleXMLRPCServer
from SimpleXMLRPCServer import SimpleXMLRPCRequestHandler

# Restrict to a particular path.
class RequestHandler(SimpleXMLRPCRequestHandler):
 rpc_paths = ('/RPC2',)

def signal(s):
 sc = s * 100 / 7

 if sc &gt; 0.00 and sc &lt;= 0.25:
   return 'ruim'
 elif sc &gt; 0.25 and sc &lt;= 0.75:
   return 'aceitavel'
 elif sc &lt; 1.00:
   return 'ótimo'

def battery(s):
 sc = s * 100 / 5

 if sc &gt; 0.00 and sc &lt;= 0.25:
   return 'ruim'
 elif sc &gt; 0.25 and sc &lt;= 0.75:
   return 'aceitavel'
 elif sc &lt; 1.00:
   return 'ótimo'

def main():
 server = SimpleXMLRPCServer(
    ('0.0.0.0', 8000),
    requestHandler = RequestHandler
 )

 server.register_introspection_functions()

 server.register_function(signal)
 server.register_function(battery)

 server.serve_forever()

if __name__ == '__main__':
 main()</pre>
<p>O serviço deve rodar no computador ligado em rede que possa ser acessível através do mobile.</p>
<h1>3. Implementando o Cliente</h1>
<p>Agora vejamos o script que rodará no cliente. No nosso caso em um aparelho S60, veja o código logo abaixo:</p>
<pre name="code" class="python"># -*- coding: utf-8 -*-
import sysinfo as inf
import xmlrpclib
import time

s = xmlrpclib.ServerProxy('http://server:8000')

init = time.time()

print('')
print('-----------------')
print('Sinal de rede esta %s' % s.signal(inf.signal()))
print('A carga da bateria esta %s' % s.battery(inf.battery()))
print('-----------------')
print('')

end = time.time()

print('%.2f segundos' % (end - init))</pre>
<p>Como podemos observar, o código do cliente é bem simples.</p>
<h1>4. Conclusões</h1>
<p>Como podemos ver é bem simples escrever, o servidor, e mais simples ainda escrever o cliente, como a plataforma PyS60 implementa as bibliotecas de acordo com a versão oficial também fica muito simples testar bastando implementar, neste caso podemos substituir os métodos de sysinfo por constantes.</p>
<p>Os exemplos finais deste post, podem ser baixado direto neste <a href="http://rodrigomatias.goware.com.br/images/2010/04/xmlrpc-sample.tar.gz">link</a>.</p>
<h1>5. Fonte bibliográfica</h1>
<ul>
<li><a href="﻿http://wiki.forum.nokia.com/index.php/Getting_Started_with_Blogging_from_Pys60_through_xmlrpclib" target="_blank">Getting Started with Blogging from Pys60 through xmlrpclib</a> acessado no dia 07/04/2010;</li>
<li><a href="http://docs.python.org/library/xmlrpclib.html#example-of-client-usage" target="_blank">Example of Client Usage</a> acessado no dia 07/04/2010;</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://rodrigomatias.goware.com.br/blog/archives/111/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Instalando PyS60 em um celular Nokia</title>
		<link>http://rodrigomatias.goware.com.br/blog/archives/107</link>
		<comments>http://rodrigomatias.goware.com.br/blog/archives/107#comments</comments>
		<pubDate>Sun, 07 Mar 2010 21:53:51 +0000</pubDate>
		<dc:creator>Rodrigo Pinheiro Matias</dc:creator>
				<category><![CDATA[Desenvolvimento]]></category>
		<category><![CDATA[j2me]]></category>
		<category><![CDATA[maemo]]></category>
		<category><![CDATA[meego]]></category>
		<category><![CDATA[mobile]]></category>
		<category><![CDATA[py]]></category>
		<category><![CDATA[pys60]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[s60]]></category>
		<category><![CDATA[symbian]]></category>

		<guid isPermaLink="false">http://rodrigomatias.goware.com.br/blog/?p=107</guid>
		<description><![CDATA[Devido a muitas movimentações que houveram no mercado de celulares nos últimos tempos, estamos aqui escrevendo um artigo de como introduzir a linguagem Python para ser utilizada em aparelhos que utilizam o sistema operacional Symbian. E assim poderemos utilizar esta excelente linguagem para desenvolver aplicativos para estes aparelhos. Veja o conteúdo que será abordado neste [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignnone" src="http://rodrigomatias.goware.com.br/images/2010/03/Screenshot0004.2.jpg" alt="" width="510" height="133" /></p>
<p>Devido a muitas movimentações que houveram no mercado de celulares nos últimos tempos, estamos aqui escrevendo um artigo de como introduzir a linguagem Python para ser utilizada em aparelhos que utilizam o sistema operacional Symbian. E assim poderemos utilizar esta excelente linguagem para desenvolver aplicativos para estes aparelhos. Veja o conteúdo que será abordado neste artigo.</p>
<ol>
<li>Identificando o aparelho</li>
<li>Baixando a versão do Python para S60</li>
<li>Agora vamos instalar
<ol>
<li>Aparelhos de terceira geração ou maior</li>
<li>Aparelhos  inferiores a terceira geração</li>
</ol>
</li>
<li>Testando o console interativo</li>
<li>Conclusões</li>
<li>Fonte de referncia</li>
</ol>
<p><span style="text-decoration: underline;"><strong>Importante, o autor deste artigo não se responsabiliza por qualquer dano que venha a ocorrer em seu aparelho, execute por sua conta e risco, apesar destes procedimentos não apresentarem nenhum risco ao seu aparelho. Só instale software em seu aparelho caso tenha certeza de sua procedência.</strong></span></p>
<p><span id="more-107"></span></p>
<h1>1. Identificando o aparelho</h1>
<p>Primeiro vamos precisar identificar o modelo do aparelho onde será instalado o PyS60, para isto podemos visitar a pagina na wikipedia que fala sobre a plataforma <a title="S60 Plataform" href="http://en.wikipedia.org/wiki/S60_%28software_platform%29" target="_blank">S60</a>. No caso estamos tomando como exemplo um aparelho Nokia E63 um Smartfone muito popular pelo seu preço; aconselho ter um cartão de memoria para poder instalar aplicativos Python depois, uma vez que o celular bloqueia o acesso a memoria interna para o interpretador.</p>
<p>Utilizando as informações tiradas da Wikipedia, podemos perceber que a versão do hardware deste aparelho é a S60 3.1 e a versão do sistema operacional é a Symbian 9.2 com isto temos um celular com as seguintes características:</p>
<blockquote><p>S60 3rd Edition, Feature Pack 1</p></blockquote>
<p>Se o seu aparelho é inferior a terceira geração do S60, então você não poderá contar com a versão 2.5 do python que somente esta disponível no site da <a href="https://garage.maemo.org/frs/?group_id=854" target="_blank">Maemo</a> agora conhecida também como Meego (Parceiria da Intel com Nokia para tecnologia embarcada unindo o Meamo com Moblin), se seu aparelho se enquadra neste senário então você deverá baixar a versão que esta na <a href="http://sourceforge.net/projects/pys60/files/" target="_blank">Página de Projetos Souceforge</a>, observando as especificações do seu aparelho.</p>
<h1>2. Baixando a versão do Python para S60</h1>
<p>Para quem vai baixar o pacote na <a href="http://sourceforge.net/projects/pys60/files/" target="_blank">Página  de Projetos Souceforge</a> preste atenção que devem ser baixados dois arquivos o PythonShellScript e o arquivo PythonForS60 todos os dois observando as especificações do seu aparelho, no meu caso seriam os seguintes arquivos:</p>
<ol>
<li>PythonScriptShell_1_4_5_3rdEd.SIS</li>
<li>PythonForS60_1_4_5_3rdEd.sis</li>
</ol>
<p>Também seria interessante baixar outros arquivos como a documentação em PDF e a SDK, mas estes são opcionais.</p>
<p>Agora para quem vai baixar direto do site da Maemo só existe um arquivo para ser baixado desde a versão 1.9.6, que seria o PythonForS60, este arquivo é um arquivo tar.gz que contempla varias informações, as mais importantes são a pasta de dependências, o manual da API, arquivo em PDF, e alguns diretórios interessantes, como modules-repo onde podemos encontrar rodos os fontes em Python da API disponível para ser utilizada no celular que deve ser utilizada também como fonte de referencia.</p>
<h1>3. Agora vamos instalar</h1>
<p>Para a instalação como já havia dito antes é interessante ter um cartão de memoria pois, a memória principal do aparelho possui uma serie de limitações impostas pelo Symbian visando uma maior segurança do aparelho. Caso você não tenha um cartão de memória só será possível executar aplicativos compilados utilizando py2exe disponível no pacote SDK, mas se você tem o cartão será muito interessante porque você poderá desenvolver scripts e testar direto do seu aparelho.</p>
<p>Para enviar os arquivos para o seu celular existem vários meios, como MMS, Email, Bluetooth, Cabo, escolha o de sua preferencia e transfira os arquivos de acordo com a geração do seu aparelho, veja quais arquivos nos próximos itens deste artigo.</p>
<h2>3.1. Aparelho de terceira geração</h2>
<p>Para os aparelhos de terceira geração iremos precisar dos seguintes arquivos:</p>
<ul>
<li>pips.sis (requerido)</li>
<li>Python_2.x.x.sis (requerido)</li>
<li>PythonScriptShell_2.x.x_(high_capas | 3_0 | 3_2 | unsigned_devcert).sis (requerido)</li>
<li>ssl.sis (opcional)</li>
<li>stdioserver.sis (opcional)</li>
<li>Scribbler_v0_2_0.sys (requerido)</li>
</ul>
<p>Veja que temos uma particularidade para o PythonScriptShell, para entender melhor vamos enumerar as diferenças:</p>
<ol>
<li>O high_capas vem de high_capabilites isto vai permitir uma maior facilidades para quem esta desenvolvendo, podendo contar com funcionalidades que não são permitidas em um ambiente de produção, mas cuidado, o ambiente esperado não é este e sim o 3_2 que iremos comentar em seguida.</li>
<li>O 3_2 é um ambiente onde os scripts podem ser auto assinado e tem a referencia para a localização do aparelho, localização não são pontos geográficos e sim idioma, conjunto de símbolos.</li>
<li>O 3_0 é muito parecido com o 3_2 mas este não conta com a localização.</li>
<li>E o ultimo ambiente é  um ambiente que não necessita de assinatura do executável.</li>
</ol>
<p>Alguns aparelhos pode apresentar problemas de assinatura ao se tentar instalar os arquivos .sis no site da Maemo também é oferecido uma versão deste arquivos sem assinatura, estes só devem ser utilizados em caso que o aparelho esteja avisando que o certificado expirou.</p>
<p><span style="text-decoration: underline;"><strong>Importante, o autor deste artigo não se responsabiliza por  qualquer dano que venha a ocorrer em seu aparelho, execute por sua conta  e risco, apesar destes procedimentos não apresentarem nenhum risco ao  seu aparelho. Só instale software em seu aparelho caso tenha certeza de  sua procedência.</strong></span></p>
<p>Agora que já fizemos nossas escolhas e sabemos de nossas responsabilidades, vamos partir para a instalação, instale todos os .sis caso a ordem seja desrespeitada o aparelho irá reclamar dizendo que aquele .sis que você tentou instalar precisa de uma determinada biblioteca para ser instalado.</p>
<h2>3.2. Aparelhos inferiores a terceira geração.</h2>
<p>No caso destes aparelhos se chegamos até aqui, é porque já fizemos nossas escolhas, é importante salientar que no caso destes aparelhos a versão do Python a ser executada é a versão 2.3, por isto fique ao código python gerado obdecendo as especificações desta versão da linguagem.</p>
<p><span style="text-decoration: underline;"><strong>Importante, o autor deste artigo não se responsabiliza por   qualquer dano que venha a ocorrer em seu aparelho, execute por sua conta   e risco, apesar destes procedimentos não apresentarem nenhum risco ao   seu aparelho. Só instale software em seu aparelho caso tenha certeza de   sua procedência.</strong></span></p>
<p>Agora que já fizemos nossas escolhas e sabemos de nossas  responsabilidades, vamos partir para a instalação, instale todos os .sis  caso a ordem seja  sendo desrespeitada o aparelho irá reclamar dizendo que  aquele .sis que você tentou instalar precisa de uma determinada  biblioteca para ser instalado.</p>
<p>Executando este processo com sucesso, deverá aparece no menu Instalação em alguns aparelhos em Ferramentas o icone das cobras Python, agora você conta com um console interativo python e um lançador de aplicativos python. Em um proximo artigo vamos mostrar quais são as partes básicas de um aplicativo python utilizando a plataforma S60.</p>
<h1>4. Testando o console interativo</h1>
<p>Para executar no caso do Nokia E63 o Pyhton foi parar no menu de instalações, agora basta mandar abrir o python, veja a imagem logo abaixo:</p>
<p style="text-align: center;"><img class="alignnone" title="Console Python rodando em um S60" src="http://rodrigomatias.goware.com.br/images/2010/03/Screenshot0008.jpg" alt="Console Python rodando em um S60" width="320" height="240" /></p>
<p>Ao executar o Python será aberta uma tela semelhante a da figura logo abaixo:</p>
<p style="text-align: center;"><img class="aligncenter" title="Console Python rodando em um S60" src="http://rodrigomatias.goware.com.br/images/2010/03/Screenshot0010.jpg" alt="" width="320" height="240" /></p>
<p>As opções de execução do Python são, executar um console via bluetooth, ou executar o console de modo interativo, ou mesmo executar um script Python, veja a figura logo abaixo:</p>
<p style="text-align: center;"><img class="aligncenter" src="http://rodrigomatias.goware.com.br/images/2010/03/Screenshot0006.jpg" alt="" width="320" height="240" /></p>
<p>Se você solicitar Rodar um script, será aberto um navegador de arquivo, que corresponde a pasta onde foram instalados os exemplos Python, por padrão esta funcionalidade só irá mostrar este diretório com a finalidade de tornar a aplicação mais segura, veja a figura logo abaixo.</p>
<p style="text-align: center;"><img class="aligncenter" src="http://rodrigomatias.goware.com.br/images/2010/03/Screenshot0007.jpg" alt="" width="320" height="240" /></p>
<p>Esperamos que todos tenha conseguido executar a instalação com exito. Logo iremos escrever outros artigos com aplicações simples, e mostrando possibilidades de criações com estes aparelhos.</p>
<h1>5. Conclusão</h1>
<p>A instalação do kit python para sistema operacional Symbian é bem simples, com ela podemos desenvolver aplicativos utilizando praticamente todas as funcionalidades destes aparelhos, como sensores, wifi, MMS, SMS, Chamadas, etc. O Python se mostra como uma alternativa as limitações da J2ME. Uma versão do Ruby vem sendo portada também para Symbian.</p>
<h1>6. Fonte de referencia</h1>
<ol>
<li><a href="http://en.wikipedia.org/wiki/S60_%28software_platform%29" target="_blank"><em>S60 software plataform</em></a> em <em>Wikipedia</em>, acessado no dia 05/03/2010.</li>
<li><a href="https://garage.maemo.org/frs/download.php/7490/PyS60_2_0_documentation.pdf" target="_blank"><em>S60 Module Reference 2.0.0</em></a>, <em>Getting started</em>, página 3.</li>
<li><a href="http://wiki.opensource.nokia.com/projects/Installing_PyS60" target="_blank"><em>Installing PyS60 &#8211; OpenSource</em></a> em <em>OpenSource Nokia</em>, acessado no dia 07/03/2010.</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://rodrigomatias.goware.com.br/blog/archives/107/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Django, interceptando o autor do save</title>
		<link>http://rodrigomatias.goware.com.br/blog/archives/82</link>
		<comments>http://rodrigomatias.goware.com.br/blog/archives/82#comments</comments>
		<pubDate>Fri, 25 Dec 2009 22:20:53 +0000</pubDate>
		<dc:creator>Rodrigo Pinheiro Matias</dc:creator>
				<category><![CDATA[Desenvolvimento]]></category>
		<category><![CDATA[django]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[save]]></category>
		<category><![CDATA[thread]]></category>
		<category><![CDATA[user]]></category>

		<guid isPermaLink="false">http://rodrigomatias.goware.com.br/blog/?p=82</guid>
		<description><![CDATA[1. Introdução Acredito que todos já tenham passado por esta situação utilizando o nosso querido framework django, que seria saber quem foi o autor de um lançamento, ou mesmo quem foi responsável por deletar uma determinada entidade critica. Pois bem, quem já passou por esta situação, sabe bem que dentro do metodo django.db.models.Model.save e django.db.models.Model.delete [...]]]></description>
			<content:encoded><![CDATA[<h1>1. Introdução</h1>
<p>Acredito que todos já tenham passado por esta situação utilizando o nosso querido framework django, que seria saber quem foi o autor de um lançamento, ou mesmo quem foi responsável por deletar uma determinada entidade critica.</p>
<p>Pois bem, quem já passou por esta situação, sabe bem que dentro do metodo <strong>django.db.models.Model.save</strong> e <strong>django.db.models.Model.delete</strong> não existe a possibilidade de se ter o User daquela sessão a menos que se use de truques mirabolates, neste artigo vamos aprender como fazer isto de uma forma bem limpa.</p>
<p><span id="more-82"></span></p>
<h1>2. Criação dos modelos</h1>
<p>Vamos usar no nosso exemplo um blog, que tem POSTs e estes podem ser publicados por usuários cadastrados em nosso sistema. Veja como ficaria este modelo.</p>
<pre class="python">from django.db import Models

class Post(models.Model):
   title = models.CharField(max_length = 60, unique = True)
   unique_identifier = models.CharField(max_length = 60, unique = True)
   user = models.ForeignKey('auth.User')
   content = models.TextField()
</pre>
<p>Desta forma o nosso modelo estaria pronto para ser usado, mas neste caso o nosso FORM teria um campo Usuário, que geraria um combo onde o usuário iria escolher um Usuário. Desta forma no máximo conseguiríamos fazer com que o combo só iniciasse com o usuário logado, mas isto esteticamente ficara feio e com cara de POG (Programação Orientada a Gambiarra).</p>
<h1>3. A solução</h1>
<p>A primeira modificação que deve ser feito neste modelo é dizer que o atributo user aceita branco mas não aceita nulo. E depois iremos precisar de uma implementação que foi comentada no Django CookBook, onde eles falam de ThreadlocalsAndUser, veja a implementação proposta:</p>
<pre class="python"># threadlocals middleware
try:
    from threading import local
except ImportError:
    from django.utils._threading_local import local

_thread_locals = local()
def get_current_user():
    return getattr(_thread_locals, 'user', None)

class ThreadLocals(object):
    """Middleware that gets various objects from the
    request object and saves them in thread local storage."""
    def process_request(self, request):
        _thread_locals.user = getattr(request, 'user', None)
</pre>
<p>Precisamos agora informar ao django para que ele use a nossa middleware, podemos conferir na <a href="http://docs.djangoproject.com/en/dev/topics/http/middleware/#activating-middleware" target="_blank">documentação oficial</a> como ativar o nosso middleware. Agora vamos as modificações no arquivo de models:</p>
<pre class="python">from django.db import models
from middleware.threadlocals import get_current_user

class Post(models.Model):
   title = models.CharField(max_length = 60, unique = True)
   unique_identifier = models.CharField(max_length = 60, unique = True)
   user = models.ForeignKey('auth.User', blank = True, null = False)
   content = models.TextField()

def save(force_insert = False, force_update = False):
   # Verifica se esta criando
   if self.pk is None:
      self.user = get_current_user()
   models.Model.save(self, force_insert, force_update)
</pre>
<p>Desta forma no momento em que o <strong>save</strong> for evocado, o primeiramente o django executar todas as <strong>middleware</strong> de inicio será evocado o método <strong>process_request</strong> desta forma será guardado o nosso usuário em <strong>_thread_locals.user</strong> depois será executado os códigos da view que será responsável por chamar o <strong>Post.save</strong> e desta forma será preenchido o campo <strong>user</strong> com o usuário da sessão, caso não tenha nenhum usuário logado no momento será gerada uma exceção, uma vez que não é permitido null em <strong>user</strong>.</p>
<p>Agora tome como desafio, interceptar quem foi que deletou o POST, ou melhor, somente permitir deletar o POST somente o administrador ou o próprio autor.</p>
<h1>4. Referencias</h1>
<ol>
<li><strong>Django CookBook</strong> &#8211; http://code.djangoproject.com/wiki/CookBookThreadlocalsAndUser</li>
<li><strong>Django Project</strong> &#8211; http://docs.djangoproject.com/en/dev/topics/http/middleware/#activating-middleware</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://rodrigomatias.goware.com.br/blog/archives/82/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Trabalhando com django usando Netbeans</title>
		<link>http://rodrigomatias.goware.com.br/blog/archives/41</link>
		<comments>http://rodrigomatias.goware.com.br/blog/archives/41#comments</comments>
		<pubDate>Tue, 22 Dec 2009 22:15:52 +0000</pubDate>
		<dc:creator>Rodrigo Pinheiro Matias</dc:creator>
				<category><![CDATA[Desenvolvimento]]></category>
		<category><![CDATA[cx-oracle]]></category>
		<category><![CDATA[django]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[kubuntu]]></category>
		<category><![CDATA[mercurial]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[netbeans]]></category>
		<category><![CDATA[oci]]></category>
		<category><![CDATA[oracle]]></category>
		<category><![CDATA[postgre]]></category>
		<category><![CDATA[postgresql]]></category>
		<category><![CDATA[project]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[subversion]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[versionamento]]></category>

		<guid isPermaLink="false">http://rodrigomatias.goware.com.br/blog/?p=41</guid>
		<description><![CDATA[Este artigo visa demonstrar a preparação de uma ambiente de desenvolvimento básico para o framework django, utilizando ferramentas como Netbeans, kUbuntu e outros softwares.]]></description>
			<content:encoded><![CDATA[<p>Não é de hoje que escrevemos artigos mostrando como netbeans pode ser utilizado para constituir ambientes de desenvolvimento. Neste artigo iremos demostrar como podemos montar um ambiente de desenvolvimento para o framework django utilizando diversas ferramentas. Veja as ferramentas que iremos utiliza logo abaixo:</p>
<ul>
<li>Gnu/Linux kUbuntu 9.04</li>
<li>Ambiente Python</li>
<li>Netbeans 6.7</li>
<li>Versionadores de código</li>
<li>Mozilla Firefox</li>
</ul>
<p>Algumas destas ferramentas já foram estudadas em outros artigos desta forma serão feitas somente considerações importantes.</p>
<p><span id="more-41"></span></p>
<h2>1. kUbuntu</h2>
<p>O kUbuntu foi a ferramenta que mais me surpreende nestes últimos tempos, é verdade que o KDE deixou a desejar assim que saiu sua 4 versão, isto foi de alguma forma uma decepção para muito usuários deste gerenciador de janelas, mas como era de se esperar o pessoal que desenvolve estes dois projetos kUbuntu e KDE conseguiram disponibilizar um ambiente tão eficiente quando no tempo da tão estável versão 3.5.</p>
<p>Desta forma ainda podemos citar que durante todo o processo que veio desde a versão do kUbuntu 8.04 não ouve muitas modificações, a única diferença esta na disponibilização do sistema de arquivo Ext4 e do autologin, aconselho o uso do sistema de arquivos Ext4, quanto ao autologin não recomendo.</p>
<h2>2. Ambiente Python</h2>
<p>O nosso ambiente python é composto de diversas bibliotecas, dentre eles temos objetos para trabalhar com os mais diversos dipos de dados, iremos utiliar basicamente o framework django e um conector para o nosso banco de dados, caso exista a biblioteca python como é o caso dos bancos mysql, postgresql e outros bancos proprietários como o oracle.</p>
<h3>1. Framework django</h3>
<p>Podemos instalar o framework django com um simples comando aptitude, veja:</p>
<pre>user@host:~$ sudo aptitude install python-django</pre>
<p>Para checar a versão do django instalada incie veja o comando python:</p>
<pre>user@host:~$ python -c "import django; print(django.VERSION)"</pre>
<h3>2. Driver de banco de dados</h3>
<h4>MySQL e PostgreSQL</h4>
<p>A instalação destes conectores é muito simples, pois estes driveres estão contidos na arvore de pacotes do Ubuntu, desta forma podem ser instalado com um simples comando:</p>
<pre>user@host:~$ sudo aptitude install python-mysqldb python-psycopg2.</pre>
<p>Assim já podemos testar se os conectores foram instalados. Para isto execute o console python e import os modulo MySQLdb e PsycoPG2,  veja como é simples:</p>
<pre>user@host:~$ python
Python 2.6.2 (release26-maint, Apr 19 2009, 01:56:41)
[GCC 4.3.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
import MySQLdb as mysql
import psycopg2 as postgresql</pre>
<p>Se não ocorrer nenhum erro então os conectores para os bancos de dados MySQL e PostgreSQL estão instalados.</p>
<h4>Oracle</h4>
<p>Para instalar o conector do Oracle primeiro é necessário instalar um produto que a Oracle distribui livremente, o Oracle Instant Client, existe um respositorio da oracle que disponibiliza um pacote deste produto, veja como instalar este produto na documentação disponibilizada por este <a title="Instalando Oracle XE em um kUbuntu" href="http://www.oracle.com/technology/tech/linux/install/xe-on-kubuntu.html" target="_blank">link</a>, mas antes de proceguir com a instalação, veja que não iremos instalar o SGBD e sim o seu cliente, por isto troque o comando apt-get install oracle-xe por apt-get install oracle-client.</p>
<p>Se tudo correu bem o produto da Oracle foi instalado e pode ser utilizado no diretório /usr/lib/oracle/xe/client vamos precisar colocar a variável ORACLE_HOME no nosso ambiente, edite o arquvio /etc/bash.bashrc e adicione no final do arquivo o seguinte conteudo:</p>
<pre>EXPORT ORACLE_HOME="[path do oracle client]"</pre>
<p>Recarreque abra um novo terminal e verifique se o valor de ORACLE_HOME foi mesmo configurado execute o comando:</p>
<p>Caso não apareça nada reveja o procedimento de modificação do arquivo bash.bashrc.</p>
<p>Também precisamos informar ao nosso ambiente, temos novas bibliotecas dinâmicas, os arquvios .so, permitindo assim o GCC compilar fontes que utilizam biliotecas Oracle de conexão com banco de dados. Para isto crie um novo arquivo /etc/ld.conf.d/oracle.conf e adicione o endereço do diretório lib dentro do ORACLE_HOME, para isto pode executar o seguinte comando:</p>
<pre>echo $ORACLE_HOME/lib &gt; /etc/ld.so.conf.d/oracle.conf</pre>
<p>Agora podemos partir para compilação do conector cx-Oracle, que é mantido pela comunidade, para isto vamos baixar a ultima versão destes fontes, veja no site oficial do <a title="cx-Oracle" href="http://cx-oracle.sourceforge.net/" target="_blank">cx-Oracle</a>. No momento em que este artigo estava sendo escrito a ultima versão disponivel era a 5.0.2, assim iremos utilizar esta versão para fins de exemplo.</p>
<p>Para poder compilar qualquer modulo python desenvolvido em C temos que contar com o pacote python-dev que permite ao GCC compilar fontes C/C++ que utilizam bibliotecas python, para isto execute o comando</p>
<pre>user@host:~$ sudo aptitude install python-dev build-essential python-setuptools</pre>
<p>Podemos compilar os fonte do modulo cx-oracle, uma particularidade dos modulos do python é que a maioria desles contam com um padrão de instalação, isto podemos chamar de easy_install, esta ferramenta nos permite instalar com facilidade muitos modulos python. Então podemos descompactar e compilar este modulo, veja como:</p>
<pre>user@host:~$ mkdir tmp
user@host:~$ tar xzf cx_Oracle-5.0.2.tar.gz
...
user@host:~$ cd tmp
user@host:~$ python setup.py install
..
user@host:~$</pre>
<p>Uma outra forma de realizar esta instalação é através do setuptools, veja como seria:</p>
<pre>user@host:~$ easy_install cx_Oracle</pre>
<p>Se tudo se passou com sucesso, podemos então testar o nosso conector veja como:</p>
<pre>user@host:~$ python
Python 2.6.2 (release26-maint, Apr 19 2009, 01:56:41)
[GCC 4.3.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
import cx_oracle as db</pre>
<p>Caso tenha ocorrido algum erro, reveja esta parte do artigo.</p>
<h2>3. Netbeans 6.7</h2>
<p>O netbeans a muito tempo deveria ter providenciado um template para o django, visto que este framework vem se popularizando como alternativa para desenvolvimento de blog, e também para sistema web. Mas como o netbeans é uma extraordinária, utilizando o modulo para python associado ao modulo para ant podemos criar um script para trabalhar com o framework django.</p>
<p>Então vamos fazer o download do netbeans preparado para o python, a distribuição que é conhecida com <a title="Netbeans Python EA2" href="http://download.netbeans.org/netbeans/6.7/python/ea2/" target="_blank">Netbeans Python EA2</a>.</p>
<div id="attachment_60" class="wp-caption alignnone" style="width: 460px"><img class="size-full wp-image-60" title="trabalhando-com-django-usando-netbeans-01" src="http://rodrigomatias.goware.com.br/rodrigomatias/blog/wp-content/uploads/2009/07/trabalhando-com-django-usando-netbeans-01.png" alt="Netbeans Python EA2 (download.netbeans.org/netbeans/6.7/python/ea2)" width="450" height="215" /><p class="wp-caption-text">Netbeans Python EA2 (download.netbeans.org/netbeans/6.7/python/ea2)</p></div>
<p>A instalação do netbeans é a mesma que comentamos neste artigo.</p>
<h3>1. Ant</h3>
<p>Com o netbeans instalado podemos partir para instalação do plugin Ant, a intalação é muito simples. Vejam as figuras com os passos:</p>
<div id="attachment_68" class="wp-caption aligncenter" style="width: 310px"><a href="http://rodrigomatias.goware.com.br/rodrigomatias/blog/wp-content/uploads/2009/07/trabalhando-com-django-usando-netbeans-06.png" target="_blank"><img class="size-medium wp-image-68 " title="trabalhando-com-django-usando-netbeans-06" src="http://rodrigomatias.goware.com.br/rodrigomatias/blog/wp-content/uploads/2009/07/trabalhando-com-django-usando-netbeans-06-300x187.png" alt="Instalação do plugin ant no netbeans." width="300" height="187" /></a><p class="wp-caption-text">Instalação do plugin ant no netbeans.</p></div>
<p>O primeiro passo é abrir o gerenciador de plugins, agora vamos selecionar o plugin para Ant, e clicar em instalar, será aber uma uma janela informando quais foram os plugins selecionados, confira se o plugin Ant aparece nesta lista, o próximo passo ira informar sobre a licença do plugin, caso esteja de acordo com a licença, aceite-a e aguarde até que o plugin seja baixado e instalado. O netbeans será reiniciado. Para visualizar os passos melhor clique na imagem que esta acima.</p>
<h3>2. Ant Script</h3>
<p>Agora podemos construir o nosso script, este script contará com as seguintes funcionalidades:</p>
<ul>
<li>Criar o projeto django.</li>
<li>Criar um novo aplicativo no projeto.</li>
<li>Sincronizar banco de dados.</li>
<li>Start do servidor embutido.</li>
<li>Stop do servidor embutido.</li>
<li>Abrir o projeto em um navegador.</li>
</ul>
<p>Vamos ao código do script:</p>
<pre code='code' class="xml">&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;project name="Meu projeto" default="Criar projeto django" basedir="."&gt;
    &lt;property name = "project.dir" location = ".."/&gt;
    &lt;property name = "project.src" value = "src"/&gt;
    &lt;property name = "project.srcdir" value = "${project.dir}/${project.src}"/&gt;
    &lt;property name = "project.context" value = "/context"/&gt;
    &lt;property name = "project.host" value = "localhost"/&gt;
    &lt;property name = "project.port" value = "8000"/&gt;

    &lt;property name = "console.bin" value = "konsole"/&gt;
    &lt;property name = "console.args" value = ""/&gt;
    &lt;property name = "bin.django" value = "django-admin"/&gt;
    &lt;property name = "bin.python" value = "python"/&gt;
    &lt;property name = "bin.browser" value = "firefox"/&gt;

    &lt;target name="Criar projeto django"&gt;
        &lt;rename src="${project.srcdir}" dest="${project.srcdir}.old"/&gt;
        &lt;path location="${project.dir}"/&gt;
        &lt;exec executable = "${console.bin}"&gt;
            &lt;arg line = "${console.args}"/&gt;
            &lt;arg line = "${bin.django} startproject ${project.src}"/&gt;
        &lt;/exec&gt;
    &lt;/target&gt;

    &lt;target name="Criar aplicativo django"&gt;
        &lt;path location="${project.srcdir}"/&gt;
        &lt;input addproperty="app" description="Nome do novo aplicativo"/&gt;
        &lt;exec executable="${bin.python}"&gt;
            &lt;arg line="manage.py startapp ${app}"/&gt;
        &lt;/exec&gt;
    &lt;/target&gt;

    &lt;target name="Sincronizar banco de dados"&gt;
        &lt;path location="${project.srcdir}"/&gt;
        &lt;exec executable="${bin.python}"&gt;
            &lt;arg line="manage.py syncdb --noinput"/&gt;
        &lt;/exec&gt;
    &lt;/target&gt;

    &lt;target name="Iniciar servidor embutido"&gt;
        &lt;path location="${project.srcdir}"/&gt;
        &lt;exec executable="${bin.python}"&gt;
            &lt;arg line="manage.py runserver ${project.host}:${project.port}"/&gt;
        &lt;/exec&gt;
    &lt;/target&gt;

    &lt;target name="Parar servidor embutido"&gt;
        &lt;path location="${project.srcdir}"/&gt;
        &lt;exec executable="${bin.python}"&gt;
            &lt;arg line="fuser -nk tcp {project.port}"/&gt;
        &lt;/exec&gt;
    &lt;/target&gt;

    &lt;target name="Abrir no navegador"&gt;
        &lt;path location="${project.srcdir}"/&gt;
        &lt;exec executable="${bin.browser}"&gt;
            &lt;arg line="http://${project.host}:${project.port}/${project.context}"/&gt;
        &lt;/exec&gt;
    &lt;/target&gt;
&lt;/project&gt;</pre>
<p>Existem varios outros comandos, sabendo agora que você pode improvisar com a Ant crie os targets que achar necessário.</p>
<h2>4. Versionadores de código</h2>
<p>Quando pensarmos em projetos, devemos saber que é necessário saber planejar e alem disto, também temos que controlar os progressos no desenvolvimento do projeto. Hoje o netbeans conta com diversos projetos que permitem este tipo de interação com o projeto. O netbeans hoje pode se conctar tanto a versionadores de código, assim como controladores de projetos como Firebug, Trac, JIRA. Como já temos um <strong>artigo</strong> falando sobre o Trac não iremos falar da configuração deste tipo de ferramenta.</p>
<h3>1. Subversion</h3>
<p><strong>Subversion</strong> (também conhecido por <strong>svn</strong>) é um <a title="Sistema de controle de versão" href="http://pt.wikipedia.org/wiki/Sistema_de_controle_de_vers%C3%A3o">sistema de controle de versão</a> desenhado especificamente para ser um substituto moderno do <a title="CVS" href="http://pt.wikipedia.org/wiki/CVS">CVS</a>, que se considera ter algumas limitações.</p>
<table border="0" cellspacing="0" width="125">
<thead>
<tr>
<th style="border-bottom: 1px solid #000000; width: 65px;"></th>
<th style="border-bottom: 1px solid #000000;">SVN</th>
</tr>
</thead>
<tbody>
<tr style="text-align: center;">
<td style="text-align: left; border-bottom: 1px solid #000000;">Web</td>
<td style="border-bottom: 1px solid #000000;">Sim</td>
</tr>
<tr style="text-align: center;">
<td style="text-align: left; border-bottom: 1px solid #000000;">Distribuido</td>
<td style="border-bottom: 1px solid #000000;">Não</td>
</tr>
<tr style="text-align: center;">
<td style="text-align: left; border-bottom: 1px solid #000000;">SSH</td>
<td style="border-bottom: 1px solid #000000;">Sim</td>
</tr>
<tr style="text-align: center;">
<td style="text-align: left; border-bottom: 1px solid #000000;">Standalone</td>
<td style="border-bottom: 1px solid #000000;">Sim</td>
</tr>
<tr style="text-align: center;">
<td style="text-align: left; border-bottom: 1px solid #000000;">Local</td>
<td style="border-bottom: 1px solid #000000;">Sim</td>
</tr>
</tbody>
</table>
<h3>2. Git</h3>
<p><strong>Git</strong> é um <a class="mw-redirect" title="Software Livre" href="http://pt.wikipedia.org/wiki/Software_Livre">Software Livre</a> para <a class="mw-redirect" title="Controle de versão" href="http://pt.wikipedia.org/wiki/Controle_de_vers%C3%A3o">controle de versão</a> distribuído. Git foi inicialmente criado por <a title="Linus Torvalds" href="http://pt.wikipedia.org/wiki/Linus_Torvalds">Linus Torvalds</a> para o desenvolvimento do kernel <a title="Linux (kernel)" href="http://pt.wikipedia.org/wiki/Linux_%28kernel%29">Linux (kernel)</a>. O objetivo do Git é atender os requisitos do modelo de desenvolvimento do kernel, tais como desenvolvimento distribuído, manipulação de grandes conjuntos de arquivos, operações de junção (merge) complexas, rapidez, entre outros requisitos.</p>
<table border="0" cellspacing="0" width="125">
<thead>
<tr style="text-align: center;">
<th style="border-bottom: 1px solid #000000; width: 65px;"></th>
<th style="border-bottom: 1px solid #000000;">Git</th>
</tr>
</thead>
<tbody>
<tr style="text-align: center;">
<td style="text-align: left; border-bottom: 1px solid #000000;">Web</td>
<td style="border-bottom: 1px solid #000000;">Sim</td>
</tr>
<tr style="text-align: center;">
<td style="text-align: left; border-bottom: 1px solid #000000;">Distribuido</td>
<td style="border-bottom: 1px solid #000000;">Sim</td>
</tr>
<tr style="text-align: center;">
<td style="text-align: left; border-bottom: 1px solid #000000;">SSH</td>
<td style="border-bottom: 1px solid #000000;">Sim</td>
</tr>
<tr style="text-align: center;">
<td style="text-align: left; border-bottom: 1px solid #000000;">Standalone</td>
<td style="border-bottom: 1px solid #000000;">Sim</td>
</tr>
<tr style="text-align: center;">
<td style="text-align: left; border-bottom: 1px solid #000000;">Local</td>
<td style="border-bottom: 1px solid #000000;">Sim</td>
</tr>
</tbody>
</table>
<h3>3. Mercurial</h3>
<p><strong>Mercurial</strong> é uma ferramenta multi-plataforma de <a title="Sistema de controle de versão" href="http://pt.wikipedia.org/wiki/Sistema_de_controle_de_vers%C3%A3o">controle de versão</a> distribuído para desenvolvedores de software. O sistema é implementado principalmente em Python. Todas operações do Mercurial são chamadas através de palavras chave de opções para o programa controlador <tt>hg</tt>, uma referência para o símbolo químico do elemento Mercúrio.</p>
<table border="0" cellspacing="0" width="125">
<thead>
<tr style="text-align: center;">
<th style="border-bottom: 1px solid #000000; width: 65px;"></th>
<th style="border-bottom: 1px solid #000000;">Hg</th>
</tr>
</thead>
<tbody>
<tr style="text-align: center;">
<td style="text-align: left; border-bottom: 1px solid #000000;">Web</td>
<td style="border-bottom: 1px solid #000000;">Sim</td>
</tr>
<tr style="text-align: center;">
<td style="text-align: left; border-bottom: 1px solid #000000;">Distribuido</td>
<td style="border-bottom: 1px solid #000000;">Sim</td>
</tr>
<tr style="text-align: center;">
<td style="text-align: left; border-bottom: 1px solid #000000;">SSH</td>
<td style="border-bottom: 1px solid #000000;">Sim</td>
</tr>
<tr style="text-align: center;">
<td style="text-align: left; border-bottom: 1px solid #000000;">Standalone</td>
<td style="border-bottom: 1px solid #000000;">Sim</td>
</tr>
<tr style="text-align: center;">
<td style="text-align: left; border-bottom: 1px solid #000000;">Local</td>
<td style="border-bottom: 1px solid #000000;">Sim</td>
</tr>
</tbody>
</table>
<h2>5. Referencias</h2>
<ol>
<li>http://pt.wikipedia.org/wiki/Subversion</li>
<li>http://pt.wikipedia.org/wiki/Git</li>
<li>http://pt.wikipedia.org/wiki/Mercurial</li>
<li>http://rodrigomatias.goware.com.br/blog/2007/12/kubuntu-como-ambiente-de-desenvolvimento-java/</li>
</ol>
<div id="_mcePaste" style="overflow: hidden; position: absolute; left: -10000px; top: 1002px; width: 1px; height: 1px;">
<pre>apt-get install oracle-xe</pre>
</div>
]]></content:encoded>
			<wfw:commentRss>http://rodrigomatias.goware.com.br/blog/archives/41/feed</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Kubuntu 8.04, Ambiente de Desenvolvimento PHP</title>
		<link>http://rodrigomatias.goware.com.br/blog/archives/40</link>
		<comments>http://rodrigomatias.goware.com.br/blog/archives/40#comments</comments>
		<pubDate>Thu, 17 Jul 2008 21:19:00 +0000</pubDate>
		<dc:creator>Rodrigo Pinheiro Matias</dc:creator>
				<category><![CDATA[Desenvolvimento]]></category>
		<category><![CDATA[Distribuição Linux]]></category>
		<category><![CDATA[Software Livre]]></category>
		<category><![CDATA[ambiente]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[jdk]]></category>
		<category><![CDATA[kubuntu]]></category>
		<category><![CDATA[netbeans]]></category>
		<category><![CDATA[openjdk]]></category>
		<category><![CDATA[subversion]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[xdebug]]></category>

		<guid isPermaLink="false">http://rodrigopmatias.wordpress.com/?p=40</guid>
		<description><![CDATA[Hoje vamos aprender montar um ambiente de desenvolvimento para aplicações escritas em PHP, com isto iremos ter que configurar diversos componentes, nas áreas de teste e produção de código. Vamos dividir este artigo nas seguintes partes: Instalação do Kubuntu 8.04 Instalação da OpenJDK Instalação do Subversion Instalação do Netbeans 6.1 para PHP Instalação e configuração [...]]]></description>
			<content:encoded><![CDATA[<p>Hoje vamos aprender montar um ambiente de desenvolvimento para aplicações escritas em <a title="Site oficial do PHP" href="http://www.php.net" target="_blank">PHP</a>, com isto iremos ter que configurar diversos componentes, nas áreas de teste e produção de código.</p>
<p>Vamos dividir este artigo nas seguintes partes:</p>
<ol>
<li>Instalação do <a title="Site oficial do Kubuntu" href="http://www.kubuntu.com" target="_blank">Kubuntu</a> 8.04</li>
<li>Instalação da <a title="Site oficial da OpenJDK" href="http://openjdk.java.net/" target="_blank">OpenJDK</a></li>
<li>Instalação do <a title="Site oficial do Subversion" href="http://subversion.tigris.org/" target="_blank">Subversion</a></li>
<li>Instalação do <a title="Site oficial do Netbeans" href="http://www.netbeans.org" target="_blank">Netbeans 6.1</a> para PHP</li>
<li>Instalação e configuração do <a title="Site oficial do Apache Web Server" href="http://httpd.apache.org" target="_blank">Apache httpd</a></li>
<li>Instalação e configuração do PHP-5</li>
</ol>
<p><span id="more-40"></span></p>
<h1>1. Instalação do Kubuntu 8.04</h1>
<p>Sobre a instalação do Kubuntu já foi escrito neste blog um artigo detalhando passo a passo desta instalação, para instalação desta nova versão pouca coisa mudou, então aconselho lerem o artigo <a title="Permanent Link to Kubuntu como Ambiente de Desenvolvimento Java" rel="bookmark" href="http://rodrigopmatias.wordpress.com/2007/12/31/kubuntu-como-ambiente-de-desenvolvimento-java/">Kubuntu como Ambiente de Desenvolvimento Java</a> onde falamos de como instalar o kubuntu 7.10 e outras ferramentas. O que muda vou comentar mas as mudanças foram menos agressivas que outras horas.</p>
<p>Vamos as novidades.<a title="Permanent Link to Kubuntu como Ambiente de Desenvolvimento Java" rel="bookmark" href="http://rodrigopmatias.wordpress.com/2007/12/31/kubuntu-como-ambiente-de-desenvolvimento-java/"><br />
</a></p>
<p>Uma das novidades, que não é bem uma novidade é a escolha da língua padrão antes do <a href="http://pt.wikipedia.org/wiki/Boot" target="_blank">boot</a> no <a href="http://pt.wikipedia.org/wiki/Kernel">kernel</a> do <a href="http://pt.wikipedia.org/wiki/Linux">linux</a>, o pessoal que cuida da instalação fez duas modificações, a primeira que podemos ver na figura logo abaixo é a escolha do idioma, que deixou de ser tão escondida, podendo ser selecionado já no inicio da instalação.</p>
<p style="text-align:center;"><img class="aligncenter" src="http://rodrigopmatias.files.wordpress.com/2008/05/boot-lang.jpg" border="0" alt="Escolha de Idioma" width="475" /></p>
<p style="text-align:center;"><strong>Figura 1</strong>. Escolha do Idioma a ser usado.</p>
<p>Bem, depois de escolha o idioma padrão podemos perceber a segunda novidade, que é o boot direto para o instalador, sem a necessidade de carregar todo o <a href="http://pt.wikipedia.org/wiki/Gnome">Gnome</a> no caso do <a href="http://pt.wikipedia.org/wiki/Ubuntu" target="_blank">Ubuntu</a> ou todo o <a href="http://pt.wikipedia.org/wiki/Kde" target="_blank">KDE</a> no caso do Kubuntu, mas não fiquem preocupados o modo <a href="http://pt.wikipedia.org/wiki/Live_cd">live-cd</a> ainda existe da mesma forma que era antigamente. Veja na figura logo abaixo em destaque a opção <strong>Instalar o Kubuntu</strong>.</p>
<p style="text-align:center;"><img class="aligncenter" src="http://rodrigopmatias.files.wordpress.com/2008/05/boot.jpg" border="0" alt="Iniciando em modo instalação" width="475" /></p>
<p style="text-align:center;"><strong>Figura 2</strong>. Iniciando em modo instalação.</p>
<p style="text-align:left;">Ainda existe um outro modo de instalação para o (k)ubuntu que é a partir de um sistema operacional <a href="http://pt.wikipedia.org/wiki/Microsoft_Windows">Microsoft Windows</a>, mas não iremos comentar este novo instalador, fica como um trabalho futuro. Bem depois que o boot foi realiazdo podemos ver que o ambiente gráfico foi iniciado e que temos somente a janela do instalador, veja na figura logo abaixo.</p>
<p style="text-align:center;"><img class="aligncenter" src="http://rodrigopmatias.files.wordpress.com/2008/05/ubuntu-install.jpg" border="0" alt="Instalador já conhecido dos ubunteiros" width="475" /></p>
<p style="text-align:center;"><strong>Figura 3</strong>. Instalador já conhecido dos ubunteiros.</p>
<p style="text-align:left;">Após a instalação o nosso ambiente já pronto para começar ser montado, vamos prosseguir.</p>
<p style="text-align:center;"><img src="http://rodrigopmatias.files.wordpress.com/2008/05/ubuntu-install-final.jpg" alt="" width="475" height="356" /></p>
<p style="text-align:center;"><strong>Figura 4</strong>. Final da Instalação.</p>
<h1>2. Instalação da OpenJDK</h1>
<p>A <a href="http://pt.wikipedia.org/wiki/Jdk">OpenJDK</a> disponível nos repositórios do Ubuntu 8.04 referem-se a implementação da JDK-6, o pacote foi montado a partir dos fontes do projeto IcedTea, a vantagem de se usar a openJDK é uma escolha, uma vez que a Sun-JDK vem cada vez mais se tornando uma JVM <a href="http://pt.wikipedia.org/wiki/GNU_General_Public_License">GPL</a>. Mas vamos deixar esta ideologia de lando e o usuário fica com o direito de escolher qual das ferramentas que ele deseja instalar, lembrando que é interessante sempre usar a versão da JDK 6.</p>
<p>A instalação destes pacotes são muito simples, veja logo abaixo como instalar a OpenJDK:</p>
<p><code>user@machile ~# </code><code>sudo apt-get install openjdk-6-jdk</code></p>
<p>Como foi mostrado a instalação de pacotes é muito simples no (k)ubuntu, da mesma forma poderiamos instalar a Sun-JDK, veja logo abaixo:</p>
<p><code>user@machile ~# sudo apt-get install sun-java-6-jdk</code></p>
<p>Agora que já temos o nosso interpretador e compilador de java instalador podemos proceguir.</p>
<h1>3. Instalação do Subversion</h1>
<p>Todo ambiente de desenvolvimento que se prese tem que ter um controlador de versão disponível, vamos utilizar o popular <a href="http://pt.wikipedia.org/wiki/Subversion">subversion</a>; veja bem o controlador de versão é uma escolha feita pela equipe, os controladores de versão não conversão entre-si normalmente.</p>
<p>A instalação deste componente fundamental é muito simples, bastando o usuário digitar em uma linha de comando o simples comando:</p>
<p><code>user@machile ~# sudo apt-get install subversion</code></p>
<p>Assim teremos ao final; se tudo der certo, o subversion estará instalado e pronto para ser usando. Para testar se subversion foi instalado, execute o comando:</p>
<p><code>user@machile ~# svn --version</code></p>
<p>Se o comando retornou um texto contendo a versão, então parabéns, o subversion esta pronto para ser usado.</p>
<h1>4. Instalação do Netbeans 6.1 para PHP</h1>
<p>A instalação do Netbeans para PHP é muito simples, muito parecida com a forma como foi comentada no artigo, <a title="Permanent Link to Kubuntu como Ambiente de Desenvolvimento Java" rel="bookmark" href="http://rodrigopmatias.wordpress.com/2007/12/31/kubuntu-como-ambiente-de-desenvolvimento-java/">Kubuntu como Ambiente de Desenvolvimento Java</a> e caso ainda tenha alguma duvida em como instalar o netbeans basta seguir o artigo citado anteriormente, mas algumas coisas mudam, agora vamos baixar um versão previamente preparada para o ambiente PHP, um instalador personalizado. Veja a figura abaixo, esta figura foi retirada da página de downloads do netbeans.</p>
<p style="text-align:center;"><img class="aligncenter" src="http://rodrigopmatias.files.wordpress.com/2008/05/netbeans-ea-php.jpg" alt="Página" /></p>
<p style="text-align:center;"><strong>Figura 5</strong>. Parte da página de downloads do Netbeans 6.</p>
<p>Basta agora executar a instalação, é muito simples, mas por via das dúvidas vamos comentar alguns problemas que podem ocorrer. Vamos tomar alguns cuidados para que a nossa JVM seja encontrada, então vamos abrir um console do sistema e executar o seguinte comando:</p>
<p style="text-align:center;"><img style="border:0 none;vertical-align:middle;" src="http://rodrigopmatias.files.wordpress.com/2008/05/konsole-ambiente.jpg" alt="Ambiente de Execução" width="450" /></p>
<p style="text-align:center;"><strong>Figura 6.</strong> Exportando para o ambiente de execução a JAVA_HOME.</p>
<p>Com este comando estamos dizendo para o ambiente de execução, que a JAVA_HOME aponta para <em>/usr/lib/jvm/java-6-openjdk</em> onde instalamos a nossa JDK. A partir deste momento podemos mandar executar o script do netbeans, seguir as instruções e já teremos o netbeans, veja que temos a opção de baixar no nosso idioma, mas isto também é uma questão de escolha.</p>
<h1>5. Instalação e configuração do Apache httpd</h1>
<p>A instalação deste aplicativo começa aqui, mas não termina nesta sessão, na próxima sessão que falará do PHP iremos modificar alguns arquivos do Apache Httpd, mas vamos ao que interessa. A instalação do apache é muito simples, basta lembrar como foi instalado o subversion, a instalação se dá através do apt-get, veja como é simples:</p>
<p><code>user@machile ~# apt-get install apache2<br />
</code></p>
<p>Com a instalação do Apache Httpd podemos ver que foi criado alguns diretorios dentro do /etc, ainda foi criado a pasta apache2, veja na figura:</p>
<p style="text-align:center;"><img style="border:0 none;vertical-align:middle;" src="http://rodrigopmatias.files.wordpress.com/2008/05/apache-etc.png" alt="Configurações do Apache Httpd" width="470" height="353" /></p>
<p style="text-align:center;"><strong>Figura 7.</strong> Arvore de diretorios de configuração do Apache Http Server</p>
<p>Um destes diretórios é muito importante, veja o mod-enabled este diretório tem todos os módulos que foram ativados no servidor, mais tarde iremos falar nestes diretórios.</p>
<p>A primeira modificação que será realizada, será no diretório conf.d iremos adicionar o arquivo servername para evitar que o apache fique reclamando que não consegue definir o nome do servidor. veja neste arquivo deve conter os seguintes dados, &#8216;<code>Servername localhost servername</code>&#8216;, então vamos executar o seguinte comando:</p>
<p><code>root@machile ~# echo "Servername localhost" &gt; servername</code></p>
<p><code>root@machile ~# apache2ctl restart<br />
</code></p>
<p>Com esta modificação deve ser realizada como usuário root. Ao executar o restart não deve ocorrer nenhum erro na inicialização do apache, caso ocorra reveja o que foi modificado conferindo se ficou parecido com o que foi passado.</p>
<h1>6. Instalação e configuração do PHP-5</h1>
<p>A instalação do PHP se dará em dois momento: a instalação e configuração do PHP para funcionar como modulo do Apache, e em um segundo momento que seria para colocar o PHP para rodar em modo debug usando o modulo xdebug.</p>
<h2>6.1. A instalação do PHP5</h2>
<p>Para isto iremos instalar o seguintes pacotes, veja a seguir o comando apt instalando todos os pacotes necessários:</p>
<p><code>root@machile ~# sudo apt-get install php5 php5-dev php-pear build-essential</code></p>
<p>Agora podemos fazer a configuração do modulo PHP. Como já havíamos falado do diretório /etc/apache2/mods-enabled/, veja neste diretório já temos o arquivo de configuração do php, caso queria fazer alguma modificação edite php.conf e php.load estes são os arquivos de configuração.</p>
<h2>6.2. Configuração do PHP-5 em modo XDebug</h2>
<p>Neste momento vamos instalar a extensão de depuração do PHP, para isto iremos utilizar um script para compilação de extensões a pecl que funciona de forma semelhante a pear, mas ao contrario da pear a pecl instala extensões compiladas, para isto ela necessita da build-essential e da php5-dev. Sem delongas vamos ao comando que instala a XDebug, veja logo abaixo:</p>
<p><code>root@machile ~# sudo pecl install xdebug<br />
</code></p>
<p>Este comando deve ter compilado o XDebug, mas ele ainda precisa ser ativado, atenção, não use esta extenção em servidores em produção pode comprometer a performance. Vamos alterar o arquivo de configuração do php o arquivo /etc/php5/apache2/php.ini, neste caso iremos adicionar as seguintes linhas:</p>
<p><code>zend_extension         = "/usr/lib/php5/20060613+lfs/xdebug.so"<br />
xdebug.remote_host     = "localhost"<br />
xdebug.remote_enable   = on<br />
xdebug.profiler_enable = on<br />
xdebug.profiler_output = "/tmp/cachegrid.out"</code></p>
<p>A primeira linha diz ao PHP onde esta a biblioteca que define a XDebug, na linha seguinte, você esta ativando o servidor <strong>localhost</strong>, no próximo momento estamos ativando o depuramento remoto, o próximo passo foi ativar o profiler das variáveis para que seja possível depurar as variáveis em tempo de execução, a ultima linha cria um arquivo onde serão gravadas temporariamente as informações do profiler.</p>
]]></content:encoded>
			<wfw:commentRss>http://rodrigomatias.goware.com.br/blog/archives/40/feed</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>Mudança de rumo</title>
		<link>http://rodrigomatias.goware.com.br/blog/archives/38</link>
		<comments>http://rodrigomatias.goware.com.br/blog/archives/38#comments</comments>
		<pubDate>Thu, 08 May 2008 00:10:00 +0000</pubDate>
		<dc:creator>Rodrigo Pinheiro Matias</dc:creator>
				<category><![CDATA[Desenvolvimento]]></category>
		<category><![CDATA[Dia a Dia]]></category>
		<category><![CDATA[Distribuição Linux]]></category>
		<category><![CDATA[Outros Blogs]]></category>
		<category><![CDATA[Software Livre]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[geronimo]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[lts]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[server]]></category>
		<category><![CDATA[subversion]]></category>
		<category><![CDATA[trac]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://rodrigopmatias.wordpress.com/?p=38</guid>
		<description><![CDATA[Saudades do nosso blog, andei muito tempo sem publicar nenhum conteúdo, nestes últimos tempos, é aconteceram muitas coisas na minha vida, calma aê não vou ser pai não, mas muitas coisa que fiz deu certo e agora eu estou começando uma vida nova, vou mudar de emprego mas não vou deixar de fazer as coisas [...]]]></description>
			<content:encoded><![CDATA[<p class="western">Saudades do nosso <strong>blog</strong>, andei muito tempo sem publicar nenhum conteúdo, nestes últimos tempos, é aconteceram muitas coisas na minha vida, calma <em>aê</em> não vou ser pai não, mas muitas coisa que fiz deu certo e agora eu estou começando uma vida nova, vou mudar de emprego mas não vou deixar de fazer as coisas que mais gosto. Então teremos muitas novidades, vou começar em um ambiente novo.</p>
<p class="western">Vamos ao que interessa então, há algum tempo venho escrevendo um artigo de como montar um servidor de páginas usando ferramentas como, Ubuntu Server, quero aproveitar mudar algumas coisas, estava escrevendo com o 7.10 mas agora estou mudando para outra versão mas recente, quero montar usando a versão Hardy, dois motivos serviram para ser tomada esta decisão. Primeiro é uma receita de bolo para montar servidores confiáveis, uma vez que ele é LTS, ou seja um grande período de suporte e patchs de segurança. Também vou utilizar a OpenJDK, uma reclamação antiga de alguns leitores, vou buscar mostrar mais configurações no Apache Geron imo.</p>
<p class="western">Outro possível artigo será a montagem de um ambiente de desenvolvimento de aplicativos, vou procurar montar um ambiente completo, desde o gerenciamento com Trac e Subversion, ambiente de programação e base de dados.</p>
<p class="western">Estas são algumas novidades que pretendo publicar. Nos próximos dias estarei postando mais alguns artigos!!!</p>
<p class="western" style="margin-bottom:0;">
]]></content:encoded>
			<wfw:commentRss>http://rodrigomatias.goware.com.br/blog/archives/38/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Kubuntu como Ambiente de Desenvolvimento Java</title>
		<link>http://rodrigomatias.goware.com.br/blog/archives/35</link>
		<comments>http://rodrigomatias.goware.com.br/blog/archives/35#comments</comments>
		<pubDate>Mon, 31 Dec 2007 17:02:31 +0000</pubDate>
		<dc:creator>Rodrigo Pinheiro Matias</dc:creator>
				<category><![CDATA[Desenvolvimento]]></category>
		<category><![CDATA[Dia a Dia]]></category>
		<category><![CDATA[Distribuição Linux]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[eclipse]]></category>
		<category><![CDATA[firefox]]></category>
		<category><![CDATA[geronimo]]></category>
		<category><![CDATA[hibernate]]></category>
		<category><![CDATA[j2ee]]></category>
		<category><![CDATA[j2se]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[javadoc]]></category>
		<category><![CDATA[kde]]></category>
		<category><![CDATA[kubuntu]]></category>
		<category><![CDATA[mozilla]]></category>
		<category><![CDATA[netbeans]]></category>
		<category><![CDATA[tomcat]]></category>

		<guid isPermaLink="false">http://rodrigopmatias.wordpress.com/2007/12/31/kubuntu-como-ambiente-de-desenvolvimento-java/</guid>
		<description><![CDATA[Bem pessoal neste artigo, pretendo elucidar sobre a construção de um ambiente totalmente opensource para desenvolvimento de aplicações Java (J2SE, J2EE), logo podemos falar que este nosso material irá tratar dos seguintes assuntos: Obtenção e instalação do Kubuntu Instalação do Interpretador e compilador de Java Obtenção e instalação do Netbeans 6.0 Obtenção e instalação do [...]]]></description>
			<content:encoded><![CDATA[<p>Bem pessoal neste artigo, pretendo elucidar sobre a construção de um ambiente totalmente opensource para desenvolvimento de aplicações Java (J2SE, J2EE), logo podemos falar que este nosso material irá tratar dos seguintes assuntos:</p>
<ol>
<li>Obtenção e instalação do Kubuntu</li>
<li>Instalação do Interpretador e compilador de Java</li>
<li>Obtenção e instalação do Netbeans 6.0</li>
<li>Obtenção e instalação do Eclipse 3.3.1</li>
<li>Instalação do Servidor de Banco de dados PostgreSQL</li>
<li>Obtenção e preparação do Hibernate</li>
<li>Mozilla Firefox e seus ajudantes</li>
<li>Fonte bibliográfica</li>
</ol>
<p>Cada assunto deste ainda vai ser detalhado para uma maior liberdade, uma vez que esta preparação pode ter várias caracteristicas podendo assim oferecer uma gama maior de recursos.</p>
<p><span id="more-35"></span></p>
<p><b>1. Obtenção e instalação do Kubuntu</b></p>
<p>Neste tópico iremos tratar da obtenção e instalação do kubuntu, iremos abordar todas as formas de se obter o material de instalação e logo em seguida trataremos do assunto instalação, vamos falar desde a preparação até a instalação, passando por particionamento e outros assuntos. <i>Ainda informamos que não nos responsabilizamos por qualquer dano que ocorra com a instalação deste sistema operacional, é dever do leitor saber dos riscos que esta assumindo</i>.</p>
<p><b>1.1. Obtenção da mídia de instalação</b></p>
<p>A mídia de instalação pode ser obtida no site do projeto <u>kubuntu</u> e pode ser obtida de duas formas, a mídia física ou um arquivo com o conteúdo da mídia no formato <u>ISO</u>.</p>
<p><b>1.1.1. Fazendo a requisição do CD</b></p>
<p>Os financiadores do projeto kubuntu com o intuito de divulgar e difundir o uso desta excelente distribuição, disponibilizarão uma forma onde o usuário faz o pedido dos CDs e recebe em casa sem custo algum; em tempos nem tão distantes, a Receita Federal com a visão de que estes CDs estavam trazendo lucro para alguem resolveu reter as mídias, mas o departamento de marketing já resolveu esta pendencia, colocando uma carta em português brasileiro, claro nos CDs que vem ao Brasil, informando que o pacote não tem fim comercial apenas de divulgação, e ainda disponibiliza um telefone de contato e as credenciais da empresa.</p>
<p>Sem mas delongas vamos ao endereço que disponibiliza o CD. Primeiro entre no site do kubuntu, logo no canto superior direito do site localize o link &#8220;<a href="https://shipit.kubuntu.org/">Shipit Free CDs</a>&#8220;, será aberto mais uma página onde você será questionado se você quer o pedido do envio do CD ou se você quer baixar a imagem do CD, escolha o envio. Certamente você ainda não tem cadastro na <a href="https://launchpad.net/">Launchpad</a> então faça o seu cadastro e repita este procedimento, só que quando chegar novamente a esta página use suas novas credenciais, na requisição você poderá pedir vários CDs de diversas plataformas, requisite somente o numero de CDs que você precisa, pense em outras pessoas que podem ficar sem ser atendidas. Quando o CD não servir mas para você procure uma empresa de reciclagem para que os mesmos possam ser reaproveitados.</p>
<p>Feita a requisição das mídias espere pela postagem e pela chegada delas no brasil, quando isto acontecer você estará apto a continuar lendo este material, mas se você quiser continuar lendo e tiver uma banda de internet suficiente para baixar 700MB então inicie o download no item a seguir.</p>
<p style="font-weight:bold;">1.1.2. Fazendo o download da mídia</p>
<p>Como o envio das mídias pode demorar alguns dias, geralmente aqui no Brasil leva cerca de 30 dias, muitas pessoas preferem fazer o download da mídia no formato ISO e assim fabricam os seus CDs de instalação e de uma forma legal sem cometer nenhum ato de pirataria.</p>
<p>Mas vamos ao que interessa, primeiro entre no site do <span style="text-decoration:underline;">kubuntu</span>, logo no canto superior direito do site, localize o link &#8220;<a href="https://shipit.kubuntu.org/">Shipit Free CDs</a>&#8220;, será aberto mais uma página onde você será questionado se você quer o pedido do envio do CD ou se você quer baixar a imagem do CD, escolha o baixar a imagem. Será aberto uma nova página onde você poderá escolher entre duas versões da distribuição, a versão atual ou a ultima LTS, este LTS significa que a Ubuntu junto com a Kubuntu garante que por 3 anos existirão pacotes para desktop e por 5 anos terão pacotes para servidores, então caso esteja pretendendo instalar um servidor a melhor escolha seria a ultima LTS mas como este artigo trata de um ambiente de desenvolvimento vamos escolher a ultima versão estável, no momento que estava escrevendo este artigo a versão erá a 7.10 Gusty Gibson; ao clicar no link você é guiado á um seletor de mirror, selecione a melhor fonte e inicie o download, são aproximadamente 700MB para serem baixados.</p>
<p style="font-weight:bold;">1.2. A instalação</p>
<p>A instalação de um sistema operacional é um processo delicado, principalmente se este processo vai ser executado em um equipamento que já se encontra em produção, então para que nada dê errado devemos seguir um plano básico, este plano básico iremos chamar de planejamento.</p>
<p style="font-weight:bold;">1.2.1. Planejando a instalação</p>
<p>Para uma instação bem sucedida precisamos primeiro planejar este processo. O planejamento de um processo de instalação deve primeiro medir quais são os recursos disponíveis, fazer copias de segurança de informações primordiais, então vejamos o caso deste artigo, veja a descrição do equipamento disponível:</p>
<ul>
<li>Processador AthlonXP 2600+ 256L1+512L2</li>
<li>1,5 GB de memória RAM DDR 400MHz</li>
<li>80 GB de disco rigido</li>
<li>Monitor 1024&#215;768 32bits</li>
<li>Radeon 9200 Plus</li>
</ul>
<p>É um equipamento com algum tempo de uso, logo tem informações que precisam ser resguardadas, logo fiz o backup destas em um outro HD de 40GB que tínhamos disponível para a oficina, com a cópia de segurança feita partimos para a próxima fase do planejamento.</p>
<p>Vamos ao dimensionamento do HD. Em primeiro momento vamos separar 10GB para a instalação do sistema operacional, vamos separar também 1GB para partição de troca, para os usuário de Windows esta partição é desconhecida uma vez que o windows usa arquivos de troca. já alocamos 11GB dos 80GB podemos agora criar uma partição de 10GB para os bancos de dados, e o restante vamos usar para arquivos do usuário da plataforma. Veja como ficou a distribuição do disco:</p>
<ul>
<li>10 GB para sistema operacional (/)</li>
<li>1 GB para partição de troca (swap)</li>
<li>10 GB para banco de dados (/var)</li>
<li>~59GB para arquivos dos usuário (/home)</li>
</ul>
<p>Bem com tudo dimensionado a instalação pode começar.</p>
<p style="font-weight:bold;">1.2.2. Boot de instalação</p>
<p>Contando que o leitor já tenha em mãos a mídia de instalação, prepare a sua máquina para iniciar a instalação dando boot pelo CD-ROM, para cada tipo de equipamento tem uma forma particular então consulte o manual de seu equipamento ou consulte foruns na internet.</p>
<p>Inicie o seu computador com a mídia dentro do seu CDROM, com isto a inicialização da máquina deve parar numa tela com um seletor de boot, escolha primeira opção, deve ser iniciado o boot do live cd do kubuntu. Após a inicialização garanta que em seu equipamento tenha uma via disponível para acessar a internet. Veja a tela após a inicialização:</p>
<p style="text-align:center;"><a href="http://image69.webshots.com/69/9/35/64/2089935640102160663IQYItB_fs.jpg" target="_blank"><img src="http://inlinethumb42.webshots.com/36713/2089935640102160663S425x425Q85.jpg" alt="Tela inicial do LiveCD do Kubuntu 7.10" border="0" height="318" width="425" /></a></p>
<p>Na tela no canto superior esquerdo tem um icone com a palavra Install ou Instalar, clique neste icone para iniciar a instalação e siga os passos dados nas figuras abaixo:</p>
<p align="center"><a href="http://image68.webshots.com/68/3/77/67/2280377670102160663IWeOWI_fs.jpg" target="_blank"><img src="http://thumb3.webshots.net/t/68/68/3/77/67/2280377670102160663IWeOWI_th.jpg" alt="Escolha seu Idioma" border="0" height="75" width="100" /></a> <a href="http://image24.webshots.com/665/2/85/86/2503285860102160663oEbNBh_fs.jpg" target="_blank"><img src="http://thumb3.webshots.net/t/24/665/2/85/86/2503285860102160663oEbNBh_th.jpg" alt="Selecione o seu fuso horário" border="0" height="75" width="100" /></a> <a href="http://image69.webshots.com/169/5/39/86/2574539860102160663UqlmhI_fs.jpg" target="_blank"><img src="http://thumb3.webshots.net/t/69/169/5/39/86/2574539860102160663UqlmhI_th.jpg" alt="Selecionando o layout do teclado" border="0" height="75" width="100" /></a></p>
<p>Na primeira tela nos escolhemos o idioma padrão para a instalação e para o novo sistema operacional, na próxima tela nos escolhemos a nossa localidade que será usada para escolher o fuso horário, e na ultima escolhemos qual a especificação do teclado, caso esteja usando um teclado especifico escolha na lista disponível. Agora podemos seguir veja as próximas figuras:</p>
<p align="center"><a href="http://image69.webshots.com/69/9/12/94/2561912940102160663CMbbso_fs.jpg" target="_blank"><img src="http://thumb3.webshots.net/t/69/69/9/12/94/2561912940102160663CMbbso_th.jpg" alt="Escolhendo a forma de particionamento" border="0" height="75" width="100" /></a> <a href="http://image50.webshots.com/650/8/95/72/2211895720102160663AdujTT_fs.jpg" target="_blank"><img src="http://thumb3.webshots.net/t/50/650/8/95/72/2211895720102160663AdujTT_th.jpg" alt="Particionamento" border="0" height="75" width="100" /></a> <a href="http://image60.webshots.com/660/3/70/69/2142370690102160663yhlHKC_fs.jpg" target="_blank"><img src="http://thumb3.webshots.net/t/60/660/3/70/69/2142370690102160663yhlHKC_th.jpg" alt="Ultima chance para corrigir erros" border="0" height="75" width="100" /></a></p>
<p><b>Importante, é de responsabilidade do leitor garantir que o particionamento não cause qualquer perda ou dano ao equipamento. </b>Agora estamos iniciando o particionamento, é importante ter em mãos o planejamento para poder alocar corretamente as dimensões dentro do disco rígido, na primeira tela a ferramenta de instalação irá questiona-lo sobre a forma que deseja proceder com o particionamento, aconselho a usar o manual, uma vez que temos um plano, a próxima figura é meramente ilustrativa, mas ela mostra a ferramenta onde serão configuradas as partições, para editar uma linha clique com o botão direito da mesma, agora podemos ir para a próxima figura mostra uma mensagem informando que foi feito modificações no particionamento e questiona se você esta de acordo.</p>
<p align="center"><a href="http://image54.webshots.com/154/0/18/99/2208018990102160663UjTqmE_fs.jpg" target="_blank"><img src="http://thumb3.webshots.net/t/54/154/0/18/99/2208018990102160663UjTqmE_th.jpg" alt="Configurações" border="0" height="75" width="100" /></a> <a href="http://image24.webshots.com/665/6/10/45/2468610450102160663fomMLp_fs.jpg" target="_blank"><img src="http://thumb3.webshots.net/t/24/665/6/10/45/2468610450102160663fomMLp_th.jpg" alt="Inicio da instalação" border="0" height="75" width="100" /></a> <a href="http://image53.webshots.com/653/7/73/58/2765773580102160663NZilxH_fs.jpg" target="_blank"><img src="http://thumb3.webshots.net/t/53/653/7/73/58/2765773580102160663NZilxH_th.jpg" alt="Copiando os arquivos" border="0" height="75" width="100" /></a></p>
<p>Na próxima figura veremos uma tela onde o instalador pede as informações da instalação quanto a nomes e usuários do sistema, é importante salientar que por padrão o kubuntu obriga com que a pessoa que vai usar o equipamento use um login diferente do ROOT, com a finalidade de dar uma maior segurança e estabilidade, preencha os dados com suas informações e prossiga, na próxima figura temos a tela que diz que estamos prontos para começar a instalação, ainda nesta tela temos um resumo da instalação que esta preste a ser realizada, ao clicar em instalar veremos a próxima figura com o progresso da instalação.</p>
<p align="center"><a href="http://image60.webshots.com/660/4/73/95/2639473950102160663ktEwpu_fs.jpg" target="_blank"><img src="http://thumb3.webshots.net/t/24/665/2/35/77/2318235770102160663sZuhxU_th.jpg" border="0" height="75" width="100" /></a> <a href="http://image60.webshots.com/660/4/73/95/2639473950102160663ktEwpu_fs.jpg" target="_blank"><img src="http://thumb3.webshots.net/t/24/665/2/35/77/2318235770102160663sZuhxU_th.jpg" border="0" height="75" width="100" /></a> <a href="http://image69.webshots.com/169/3/5/1/2931305010102160663uLFgLb_fs.jpg" target="_blank"><img src="http://thumb3.webshots.net/t/69/169/3/5/1/2931305010102160663uLFgLb_th.jpg" alt="Final da instalação." border="0" height="75" width="100" /></a></p>
<p>Como podemos ver na figura a seguir que próximo do final da instalação o instalador faz o uso da internet para baixar os pacotes do idioma selecionado no inicio da instalação, devido a este fato temos que garantir que a internet esta acessível ao instalador, caso contrario a instalação será finalizada com o idioma padrão inglês. Depois do download dos pacotes e suas respectivas instalação o instalador ira configurar o Kubuntu e por final é exibida uma tela dizendo que o sistema esta instalado e pode ser reiniciado o equipamento.</p>
<p><!--more--><b> 2. Instalando o interpretador e compilador Java</b></p>
<p>Por padrão o kubuntu já vem com o compilador GCJ e o interpretador GIJ instalados, estes são as figuras java do pacote de compiladores GCC distribuído pela GNU, mas infelizmente ainda se encontra na versão 1.4 do Java, logo vamos optar pela versão 1.6 ou 6.0 do java da SUN, para esta instalação prosseguir, vamos utilizar a linha de comando, mas antes de começar a instalação devemos executar um comando para definir a senha do usuário <b>root</b> para que possamos ter acesso via <i>sudo</i> de aplicações como o <i>apt-get</i>, para isto execute em um <i>konsole</i> o comando <i>sudo passwd</i> você será questionado sobre a novas senhas do <b>root</b>. Agora podemos continuar com a instalação dos pacotes, veja os comandos:</p>
<blockquote><p><code>wdevelop ~# sudo apt-get update<br />
wdevelop ~# sudo apt-get install sun-java-6-jdk</code></p></blockquote>
<p>Agora o apt-get cuidará de instalar os pacotes necessário para a instalação da Sun Java JDK 6.0, primeiro ele irá baixar os pacotes necessário e depois vai usar o dpkg para instalar e catalogar a instalação no sistema operacional.</p>
<p><!--more--><b> 3. Obtenção e instalação do Netbeans 6.0</b></p>
<p>Como o kubuntu o Netbeans dispõe de um serviço de envio grátis de CDs, o procedimento para requisição das mídias podem ser realizados por &#8220;<a href="http://www.netbeans.org/about/media.html" class="dvd-link">Get Free DVD</a>&#8220;, em media a mídia leva 45 dias para chegar até o Brasil, outro fato importante é que você pode instalar o Netbeans pelo apt-get mas a versão instalada será a 5.5 com o idioma do seu sistema operacional, mas vamos usar o método tradicional, vamos nós mesmo baixar o instalador.</p>
<p>Para isto vamos acessar á pagina do de <a href="http://download.netbeans.org/netbeans/6.0/final/" target="_blank">downloads</a> do Netbeans. vamos selecionar a melhor opção que nos convenha, no caso do artigo pretendemos instalar um ambiente para desenvolvimento J2SE e J2EE então vamos optar pela versão &#8220;Web &amp; J2EE&#8221; o instalador desta versão tem aproximadamente 120MB inicie o download.</p>
<p>Após o final do download, abra um konsole e inicie a instalação; acredito que você baixou os arquivos dentro do diretório padrão do usuário, então vamos dar inicio a instalação. A instalação que será realizada pode ser realizada sem direito de root pois será realizada no diretório do usuário. Então na janela do konsole digite os seguintes comando:</p>
<blockquote><p><code>wdevelop ~# export JAVA_HOME=/usr/lib/jvm/java-6-sun<br />
wdevelop ~# sh netbeans-6.0-javaee-linux.sh</code></p></blockquote>
<p>Agora será inicializado o instalador do netbeans, importante, iremos criar um diretorio dentro do diretorio do usuário chamado develop-workspace, dentro deste diretorio teremos uma estrutura assim:</p>
<blockquote><p><code>develop-workspace<br />
|-&gt; fontes<br />
</code><code>|-&gt; </code><code> gerencia<br />
</code><code>|-&gt; </code><code>libs<br />
</code><code>|-&gt; </code><code>opt<br />
</code><code>|-&gt; </code><code>utilitarios</code></p></blockquote>
<p>Cada diretório tem uma finalidade, iremos utilizar o <b>develop-workspace/opt</b> para instalar o netbeans, veja as figuras abaixo com a instalação do netbeans:</p>
<p align="center"><a href="http://image24.webshots.com/665/1/44/8/2265144080102160663arhjia_fs.jpg" target="_blank"><img src="http://thumb3.webshots.net/t/24/665/1/44/8/2265144080102160663arhjia_th.jpg" alt="Escolhendo servidores a serem instalado" border="0" height="75" width="100" /></a> <a href="http://image50.webshots.com/650/6/80/54/2812680540102160663WbLTJR_fs.jpg" target="_blank"><img src="http://thumb3.webshots.net/t/50/650/6/80/54/2812680540102160663WbLTJR_th.jpg" alt="Licença do Netbeans 6.0" border="0" height="75" width="100" /></a> <a href="http://image68.webshots.com/68/9/76/95/2238976950102160663wmviJl_fs.jpg" target="_blank"><img src="http://thumb3.webshots.net/t/68/68/9/76/95/2238976950102160663wmviJl_th.jpg" alt="Local de instalação do Netbeans" border="0" height="75" width="100" /></a></p>
<p align="center"><a href="http://image69.webshots.com/69/5/9/80/2858509800102160663QyCbhx_fs.jpg" target="_blank"><img src="http://thumb3.webshots.net/t/69/69/5/9/80/2858509800102160663QyCbhx_th.jpg" alt="Local de instalação do Apache Tomcat" border="0" height="75" width="100" /></a> <a href="http://image24.webshots.com/665/5/87/84/2554587840102160663MByOyy_fs.jpg"><img src="http://thumb3.webshots.net/t/24/665/5/87/84/2554587840102160663MByOyy_th.jpg" alt="Resumo da instalação" border="0" height="75" width="100" /></a> <a href="http://image54.webshots.com/154/4/9/29/2359409290102160663GOxpFZ_fs.jpg" target="_blank"><img src="http://thumb3.webshots.net/t/54/154/4/9/29/2359409290102160663GOxpFZ_th.jpg" alt="Instalando" border="0" height="75" width="100" /></a></p>
<p align="center"><a href="http://image69.webshots.com/69/8/26/11/2467826110102160663tiKmYy_fs.jpg" target="_blank"><img src="http://thumb3.webshots.net/t/69/69/8/26/11/2467826110102160663tiKmYy_th.jpg" alt="Instalação finalizada" border="0" height="75" width="100" /></a> <a href="http://image69.webshots.com/69/6/43/14/2932643140102160663skEXlR_fs.jpg" target="_blank"><img src="http://thumb3.webshots.net/t/69/69/6/43/14/2932643140102160663skEXlR_th.jpg" alt="Netbeans 6.0 iniciando" border="0" height="75" width="100" /></a> <a href="http://image24.webshots.com/565/4/4/44/2338404440102160663SdhhCL_fs.jpg" target="_blank"><img src="http://thumb3.webshots.net/t/24/565/4/4/44/2338404440102160663SdhhCL_th.jpg" alt="Netbeans 6.0 pronto" border="0" height="75" width="100" /></a></p>
<p>Pronto o netbeans ja esta instalado, ainda podemos baixar plugins para trabalhar, com Ruby, Ruby On Rayls, C++ e PHP.</p>
<p><!--more--><b>4. Obtenção e instalação do Eclipse 3.3.1</b></p>
<p>Como o Netbeans esta excelente ferramenta também pode ser instalado pelo apt-get, mas iremos optar por baixar e instalar uma versão especifica, com o intuito de dar uma maior divulgação a ferramenta e seu processo de instalação tradicional.</p>
<p>Para obter o pacote do eclipse vamos entrar no site oficial do projeto, www.eclipse.org, logo na tela inicial tem um botão &#8220;Download Eclipse&#8221; e você será levado a página (http://www.eclipse.org/downloads/), agora você vai clicar em &#8220;<a href="http://www.eclipse.org/downloads/download.php?file=/technology/epp/downloads/release/20071103/eclipse-jee-europa-fall2-linux-gtk.tar.gz">Eclipse IDE for Java EE Developers</a>&#8221; e você será levado a um seletor de mirros escolha uma e espere o download de aproximadamente 120MB.</p>
<p>A instalação é muito simples, basta salvar o arquivo dentro do diretório develop-workspace/opt em seguida descompacte o conteúdo do arquivo tar.gz, veja como proceder nas figuras:</p>
<p align="center"><a href="http://image60.webshots.com/660/2/13/69/2874213690102160663HaNrTF_fs.jpg" target="_blank"><img src="http://thumb3.webshots.net/t/60/660/2/13/69/2874213690102160663HaNrTF_th.jpg" alt="Descompactando o eclipse" border="0" height="75" width="100" /></a> <a href="http://image53.webshots.com/653/2/16/32/2017216320102160663MIKcQD_fs.jpg" target="_blank"><img src="http://thumb3.webshots.net/t/53/653/2/16/32/2017216320102160663MIKcQD_th.jpg" alt="Descompactando o eclipse" border="0" height="75" width="100" /></a> <a href="http://image69.webshots.com/169/4/47/48/2008447480102160663CxVGHM_fs.jpg" target="_blank"><img src="http://thumb3.webshots.net/t/69/169/4/47/48/2008447480102160663CxVGHM_th.jpg" alt="Descompactando o eclipse" border="0" height="75" width="100" /></a></p>
<p>Como podemos observar a instalação é bem simples, basta descompactar o arquivos, agora vamos inicializar pela primeira vez o eclipse, siga as figuras:</p>
<p align="center"><a href="http://image53.webshots.com/653/6/7/35/2823607350102160663OdPoCX_fs.jpg" target="_blank"><img src="http://thumb3.webshots.net/t/53/653/6/7/35/2823607350102160663OdPoCX_th.jpg" alt="Executavel do eclipse" border="0" height="75" width="100" /></a> <a href="http://image68.webshots.com/68/0/28/82/2355028820102160663liILNV_fs.jpg" target="_blank"><img src="http://thumb3.webshots.net/t/68/68/0/28/82/2355028820102160663liILNV_th.jpg" alt="Bootsplash do Eclipse Europa" border="0" height="75" width="100" /></a> <a href="http://image53.webshots.com/653/8/32/8/2058832080102160663tAxXRy_fs.jpg" target="_blank"><img src="http://thumb3.webshots.net/t/53/653/8/32/8/2058832080102160663tAxXRy_th.jpg" alt="Selecionando o workspace" border="0" height="75" width="100" /></a></p>
<p align="center"><a href="http://image60.webshots.com/660/6/94/74/2384694740102160663wmtvng_fs.jpg" target="_blank"><img src="http://thumb3.webshots.net/t/60/660/6/94/74/2384694740102160663wmtvng_th.jpg" alt="Abrindo a área de trabalho" border="0" height="75" width="100" /></a> <a href="http://image24.webshots.com/665/5/75/77/2467575770102160663fJYxuv_fs.jpg" target="_blank"><img src="http://thumb3.webshots.net/t/24/665/5/75/77/2467575770102160663fJYxuv_th.jpg" alt="Area de trabalho aberta" border="0" height="75" width="100" /></a></p>
<p>Pronto o eclipse esta rodando, agora vamos utilizar o servidor apache que foi istalado junto com o netbeans para ser usado nos projetos web do eclipse também, veja as figuras abaixo:</p>
<p align="center"><a href="http://image69.webshots.com/169/0/19/40/2214019400102160663pqoCwO_fs.jpg" target="_blank"><img src="http://thumb3.webshots.net/t/69/169/0/19/40/2214019400102160663pqoCwO_th.jpg" alt="Iniciando a instalação do tomcat." border="0" height="75" width="100" /></a> <a href="http://image60.webshots.com/660/3/68/34/2453368340102160663ZewAke_fs.jpg" target="_blank"><img src="http://thumb3.webshots.net/t/60/660/3/68/34/2453368340102160663ZewAke_th.jpg" alt="Adicionando o novo servidor." border="0" height="75" width="100" /></a> <a href="http://image68.webshots.com/68/4/95/42/2199495420102160663puqAfD_fs.jpg" target="_blank"><img src="http://thumb3.webshots.net/t/68/68/4/95/42/2199495420102160663puqAfD_th.jpg" alt="Selecionado o tipo de servidor Tomcat 6" border="0" height="75" width="100" /></a></p>
<p align="center"><a href="http://image54.webshots.com/154/0/3/25/2455003250102160663DRQCmS_fs.jpg" target="_blank"><img src="http://thumb3.webshots.net/t/54/154/0/3/25/2455003250102160663DRQCmS_th.jpg" alt="Selecionando o caminho para o tomcat" border="0" height="75" width="100" /></a> <a href="http://image68.webshots.com/68/3/83/7/2222383070102160663Vaoyex_fs.jpg" target="_blank"><img src="http://thumb3.webshots.net/t/68/68/3/83/7/2222383070102160663Vaoyex_th.jpg" alt="Servidor Apache Tomcat 6.0 instalado" border="0" height="75" width="100" /></a></p>
<p>Agora já temos um eclipse pronto para trabalhar com projetos J2EE.<!--more--><b> 5. Instalação do Servidor de Banco de dados PostgreSQL</b></p>
<p>Agora que temos as ferramentas de desenvolvimento instaladas, podemos dar inicio a instalação e configuração do PostgreSQL.</p>
<p><b>5.1. Instalando o PostgreSQL</b></p>
<p>Para a instalação do PostgreSQL iremos usar os pacotes oficiais do projeto Kubuntu pois não queremos fazer a compilação das fontes baixadas do projeto PostgreSQL (<a href="http://www.postgresql.org" target="_blank">www.postgresql.org</a>). Para instalar basta digitar o seguinte comando:</p>
<blockquote><p><code>wdevelop ~# sudo apt-get install postgresql-server</code></p></blockquote>
<p>Agora temos que garantir acesso para o banco de dados, iremos liberar o acesso ao usuário postgres na máquina local, procure como incluir e alterar a senha dos usuários no manual do postgreSQL, pois esta configuração minima deixa o acesso livre a nível local.</p>
<p>Então vamos abrir o arquivo /etc/postgresql/8.2/main/pg_hba.conf nele vamos procurar uma linha que tenha a seguinte informação &#8216;# IPv4 local connections:&#8217; na próxima linha teremos uma frase que se inicia com &#8216;hosts&#8217; e termina com &#8216;md5&#8242; iremos trocar a palavra &#8216;md5&#8242; por &#8216;trust&#8217;, salve o arquivo, após salvar reinicie o processo do postgreSQL, como no exemplo abaixo:</p>
<blockquote><p><code>wdevelop ~# sudo /etc/init.d/postgresql restart</code></p></blockquote>
<p>Pronto nosso PostgreSQL já esta pronto para ser usado.</p>
<p><!--more--></p>
<p><b>6. Obtenção e preparação do Hibernate</b></p>
<p>O Hibernate é uma biblioteca, ou um conjunto de funcionalidades, que implementam as especificações da JPA, atuando assim na camada de persistência de aplicativos J2EE, além do hibernat, existem outras implementações, como por exemplo a da Oracle.</p>
<p>Neste tópico iremos ver como conseguir os pacotes do hibernate, e também vamos aprender como coloca-las em um local para que sempre possa ser usada na construção de aplicativos, usando o Netbeans ou mesmo o Eclipse.</p>
<p><b>6.1. Download dos pacotes do Hibernate</b></p>
<p>O download dos pacotes do hibernate podem ser conseguidos na página do projeto (www.hibernate.org), na sessão de downloads deste projeto, temos diversos pacotes que pode ser baixados, mas também tem uma figura que explica as dependências para cada ambiente, veja a figura:</p>
<div style="text-align:center;"><img src="http://image24.webshots.com/665/2/84/71/2529284710102160663onXhCb_ph.jpg" alt="Esquema de partes do hibernate" border="0" height="144" width="425" /></div>
<p>Como podemos ver cada ambiente tem uma especificação, nos vamos baixar dois pacotes basicamente, uma vez que o pacote EntityManager contém o pacote de Annotations, veja que no Java EE 5.0 ele indica Saem, um framework estilo JSF, fica a critério escolher o seu framework faces, uma vez que podemos escolher entre diversos sabores.</p>
<p>Então vamos ao que interessa, na página de <a href="http://www.hibernate.org/6.html" title="Página de downloads do hibernate" target="_blank">downloads</a> escolha os pacotes: <a href="http://sourceforge.net/project/showfiles.php?group_id=40712&amp;package_id=127784&amp;release_id=529023" title="Pacote Core do hibernate" target="_blank"> Hibernate Core</a>, <a href="http://sourceforge.net/project/showfiles.php?group_id=40712&amp;package_id=156160" target="_blank"> Hibernate EntityManager</a>, vamos fazer o download destes dois arquivos e vamos salva-los dentro da pasta &#8216;develop-workspace/utilitarios&#8217;. e ainda vamos criar uma pasta dentro de &#8216;develop-workspace/lib&#8217; com o nome hibernate, em seguida vamos descompactar os dois pacotes que foram baixados, com isto será criado dois diretorios dentro de utilitarios, hibernate-3.x e hibernate-entitymanager-3.x.x.GA, dentro de cada diretório destes tem um diretório chamado lib e dentro destes diretórios tem arquivos com a extensão <b>.jar</b>, copie estes arquivos para &#8216;develop-workspace/lib/hibernate&#8217;, e para finalizar copie os arquivos .jar que estão dentro de hibernate-3.x e hibernate-entitymanager-3.x.x.GA para a &#8216;develop-workspace/lib/hibernate&#8217;, veja como seria logo abaixo:</p>
<p><code>wdevelop ~# cd develop-workspace/utilitarios<br />
wdevelop ~/develop-workspace/utilitarios# wget -c [link para baixar o hibernate-core].tar.gz<br />
wdevelop ~/develop-workspace/utilitarios# wget -c [link para baixar o hibernate-entitymanager].tar.gz<br />
wdevelop ~/develop-workspace/utilitarios# tar xzf [hibernate-core].tar.gz<br />
wdevelop ~/develop-workspace/utilitarios# tar xzf [hibernate-entitymanager].tar.gz<br />
wdevelop ~/develop-workspace/utilitarios# mkdir ../libs/hibernate<br />
wdevelop ~/develop-workspace/utilitarios# cp hibernate-3.x/lib/*.jar ../libs/hibernate<br />
wdevelop ~/develop-workspace/utilitarios# cp hibernate-3.x/*.jar ../libs/hibernate<br />
wdevelop ~/develop-workspace/utilitarios# cp hibernate-entitymanager-3.x.x.GA/lib/*.jar ../libs/hibernate<br />
wdevelop ~/develop-workspace/utilitarios# cp hibernate-entitymanager-3.x.x.GA/*.jar ../libs/hibernate</code></p>
<p>Agora quando precisar usar o hibernate, basta incluir a pasta libs/hibernate a seus projetos.</p>
<p><!--more--></p>
<p><b>7. Mozilla Firefox e seus ajudantes</b></p>
<p>Básicamente para o desenvolvimento web iremos usar o Mozilla Firefox, mas o Internet Explore também pode ser instalado neste ambiente, mas não e o foco do artigo.</p>
<p><b>7.1. Instalando o Mozilla Firefox</b></p>
<p>Para instalar o Firefox iremo usar os pacotes que veem junto com o Kubuntu, para instalar o iremos executar o seguinte comando:</p>
<blockquote><p><code>wdevelop ~# sudo apt-get install mozilla-firefox</code></p></blockquote>
<p><b>7.2. Personalizando o Mozilla Firefox</b></p>
<p>Já temos o Firefox instalado, agora podemos prosseguir com a instalação de seus complementos.</p>
<p><b>7.2.1. Instalando o plugin Webdevelop</b></p>
<p>O primeiro plugin a ser instalado é o popular webdevelop, excelente plugin que ajuda extrair informações dos elementos DOM, para instalar este complemento iremos usar o pacote do kubuntu uma vez que o mesmo instala o plugin com internacionalização isto é muito legal, vamos ao comando:</p>
<blockquote><p><code>wdevelop ~# sudo apt-get install mozilla-firefox-webdevelop</code></p></blockquote>
<p>Isto basta para instalar o pacote do webdevelop.</p>
<p><b>7.2.2. Instalando o plugin Firebug</b></p>
<p>O Firebug é um plugin para Firefox e outros navegadores que tem o intuito de melhorar a experiencia de desenvolvimento de JavaScript e CSS.</p>
<p>Para instalar o plugin firebug viste a página do projeto (<a href="http://www.getfirebug.com/" target="_blank">http://www.getfirebug.com/</a>) com o firefox e no canto superior direto do site tem um botão chamativo com a frase: &#8220;Install Firebug fot Firefox&#8221; e pronto, basta reiniciar o firefox agora.</p>
<p><b>7.2.3. Instalando o plugin Relaxed HTML Validator</b></p>
<p>Este plugin tem a finalidade de realizar testes com o código fonte da página visitada e verifica se o site esta escrito sobre as normal do W3C, é importante para manter a compatibilidade do site que você esta desenvolvendo com os padrões mundiais.</p>
<p>Para instalar este plugin, basta clicar <a href="http://prdownloads.sourceforge.net/relaxed/relaxed.xpi?download" target="_blank">aqui</a>, para mais informações ou novidades visite o site do projeto Relaxed (<a href="http://relaxed.sourceforge.net/" target="_blank">http://relaxed.sourceforge.net/</a>).</p>
<p><!--more--> <b>8. Fonte bibliográfica</b></p>
<p>[Kubuntu], http://www.kubuntu.com</p>
<p>[Ubuntu], http://www.ubuntu.com</p>
<p>[Netbeans], http://www.netbeans.org</p>
<p>[Eclipse], http://www.eclipse.org</p>
<p>[PostgreSQL], http://www.postgresql.org</p>
<p>[MySQL], http://www.mysql.org</p>
<p>[Webdevelop], http://chrispederick.com/work/web-developer</p>
<p>[Firebug], http://www.getfirebug.com</p>
<p>[Relaxed HTML Validator], http://relaxed.sourceforge.net</p>
<hr /><a href="http://jump.zx9.biz/sociallink/digg.php" target="_blank"><img src="http://xs321.xs.to/xs321/07485/digg_16x16.png" alt="Digg it!" border="0" /></a> <a href="http://jump.zx9.biz/sociallink/delicious.php" target="_blank"><img src="http://xs121.xs.to/xs121/07485/delicious_16x16.png" alt="Del.icio.us" border="0" /></a> <a href="http://jump.zx9.biz/sociallink/blinklist.php" target="_blank"><img src="http://xs121.xs.to/xs121/07485/Blinklist_16x16.png" alt="Blinklist" border="0" /></a><a href="http://jump.zx9.biz/sociallink/blogmarks.php" target="_blank"><img src="http://xs321.xs.to/xs321/07485/BlogMarks_16x16.png" alt="Blogmarks" border="0" /></a><a href="http://jump.zx9.biz/sociallink/live.php" target="_blank"><img src="http://live.com/favicon.ico" alt="Adicionar ao Live Favorites" border="0" height="16" width="16" /></a> <a href="http://jump.zx9.biz/sociallink/google.php" target="_blank"><img src="http://google.com/favicon.ico" alt="Google Bookmarks" border="0" /></a> <a href="http://jump.zx9.biz/sociallink/reddit.php" target="_blank"><img src="http://xs321.xs.to/xs321/07485/Reddit_16x16.png" alt="Reddit" border="0" /></a> <a href="http://jump.zx9.biz/sociallink/furl.php" target="_blank"><img src="http://xs121.xs.to/xs121/07485/Furl_16x16.png" alt="Furl" border="0" /></a> <a href="http://jump.zx9.biz/sociallink/magnolia.php" target="_blank"><img src="http://xs121.xs.to/xs121/07485/Magnolia_16x16.png" alt="Ma.gnolia" border="0" /></a> <a href="http://jump.zx9.biz/sociallink/facebook.php" target="_blank"><img src="http://facebook.com/favicon.ico" alt="Facebook" border="0" /></a> <a href="http://jump.zx9.biz/sociallink/newsvine.php" target="_blank"><img src="http://xs321.xs.to/xs321/07485/Newsvine_16x16.png" alt="Newsvine" border="0" /></a> <a href="http://jump.zx9.biz/sociallink/technorati.php" target="_blank"><img src="http://xs321.xs.to/xs321/07485/Technorati_16x16.png" alt="Technorati" border="0" /></a> <a href="http://jump.zx9.biz/sociallink/myweb.php" target="_blank"> </a><a href="http://jump.zx9.biz/sociallink/stumble.php" target="_blank"><img src="http://www.stumbleupon.com/images/stumbleit.gif" alt="Stumble It!" border="0" /></a> <a href="http://jump.zx9.biz/sociallink/rec6.php" target="_blank"><img src="http://rec6.via6.com/imagens/botao_rec6_16x16.gif" alt="rec 6" border="0" /></a> <a href="http://jump.zx9.biz/" target="_blank"><img src="http://xs122.xs.to/xs122/07491/favicon.gif" alt="jump, conteúdo grátis!" border="0" /></a><a href="http://jump.zx9.biz/" target="_blank"></a></p>
]]></content:encoded>
			<wfw:commentRss>http://rodrigomatias.goware.com.br/blog/archives/35/feed</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Apache Geronimo, instalando e usando</title>
		<link>http://rodrigomatias.goware.com.br/blog/archives/32</link>
		<comments>http://rodrigomatias.goware.com.br/blog/archives/32#comments</comments>
		<pubDate>Sat, 22 Dec 2007 01:47:20 +0000</pubDate>
		<dc:creator>Rodrigo Pinheiro Matias</dc:creator>
				<category><![CDATA[Desenvolvimento]]></category>
		<category><![CDATA[Software Livre]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[geronimo]]></category>
		<category><![CDATA[instalando]]></category>
		<category><![CDATA[install]]></category>
		<category><![CDATA[j2ee]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[jetty]]></category>
		<category><![CDATA[tomcat]]></category>

		<guid isPermaLink="false">http://rodrigopmatias.wordpress.com/2007/12/22/server-apache-geronimo-instalando/</guid>
		<description><![CDATA[1. O que é o projeto Geronimo A Apache Software Foundation desenvolve esta aplicação para ser a sua distribuição completa de servidor de aplicação Java EE 5, para isto reuniu as melhores ferramentas que produz dentro deste servidor para atender as necessidades dos desenvolvedores de sistemas. 2. Onde posso conseguir este tal de Geronimo Assim [...]]]></description>
			<content:encoded><![CDATA[<p><strong>1. O que é o projeto Geronimo</strong></p>
<p>A <a title="ASF" href="http://www.apache.org"><em>Apache Software Foundation</em></a> desenvolve esta aplicação para ser a sua distribuição completa de servidor de aplicação Java EE 5, para isto reuniu as melhores ferramentas que produz dentro deste servidor para atender as necessidades dos desenvolvedores de sistemas.</p>
<p><strong>2. Onde posso conseguir este tal de Geronimo</strong></p>
<p>Assim como todas as outras ferramentas da apache o endereço do site oficial desta aplicação é http://[projeto].apache.org logo o endereço para conseguir o Geronimo é <a title="Página Oficial do Geronimo" href="http://geronimo.apache.org" target="_blank">http://geronimo.apache.org</a>, neste endereço você fica por dentro das ultimas novidades do Geronimo: <a title="Desenvolvimento do Geronimo" href="http://issues.apache.org/jira/browse/GERONIMO" target="_blank">desenvolvimento</a>, <a title="Noticias" href="http://geronimo.apache.org/events.html" target="_blank">noticias</a>, <a title="Novidades" href="http://geronimo.apache.org/committers.html" target="_blank">novas funcionalidades</a> entre outras.</p>
<p>Mas vamos deixar de papo e vamos partir para o download. Para baixar o Geronimo vamos acessar a página <a title="Download do Geronimo" href="http://geronimo.apache.org/downloads.html" target="_blank">http://geronimo.apache.org/downloads.html</a>, no momento em que este artigo estava sendo produzido a ultima versão estável era a 2.0.2, logo iremos baixar esta; para instalar servidores de produção primeiro verifique se a versão é estável e se as assinaturas do arquivo baixado é a mesma que é informada no site oficial.</p>
<p>Clique na versão que lhe for interessante, no meu caso como estou instalando um ambiente de testes vou utilizar a ultima <em>release</em>. Ao escolher a versão você será direcionado a uma página onde você irá escolher o sistema operacional e se você prefere <a href="http://tomcat.apache.org" target="_blank">Tomcat</a> ou <a href="http://www.mortbay.org/" target="_blank">Jetty</a>, eu escolhi a versão com Jetty por querer tambem conhece-lo. E por último você será direcionado a página de mirror, escolha entre servidores <strong>http</strong> e <strong>ftp</strong> e comesse o download.</p>
<p><code>root ~ # mkdir geronimo<br />
root ~ # cd geronimo<br />
root ~/geronimo # wget -c http://linorg.usp.br/(...)/geronimo-jetty6-jee5-2.0.2-bin.tar.gz</code></p>
<p>O download de 55MB aqui levou cerca de 12 minutos para ser descarregado, enquanto isto aproveitei para conhecer um bugtrack chamado JIRA, espero escrever algo sobre o mesmo logo. Agora vamos instalar o Geronimo:</p>
<p><code>root ~/geronimo # tar xzf geronimo-jetty6-jee5-2.0.2-bin.tar.gz<br />
root ~/geronimo # geronimo-jetty6-jee5-2.0.2/bin/geronimo.sh start</code></p>
<p>Já temos uma instancia do geronimo rodando na porta 8080 para verificar entre na página <a href="http://localhost:8080/console" target="_blank">http://localhost:8080/console</a> deve aparecer uma página igual a esta logo abaixo:</p>
<div style="text-align:center;"><img src="http://inlinethumb45.webshots.com/35244/2518330720102160663S425x425Q85.jpg" border="0" alt="Tela do console do Geronimo" width="425" height="325" /></div>
<p>No campo <strong>username</strong> coloque <strong>system</strong> e no campo <strong>password</strong> coloque <strong>manager</strong>, agora clique em Login, com isto será carregada uma nova página este é o ambiente de produção do servidor Geronimo, veja a figura abaixo:</p>
<div style="text-align:center;"><img src="http://inlinethumb33.webshots.com/37408/2052035830102160663S425x425Q85.jpg" alt="Tela do console do Geronimo" /></div>
<p>Já temos um servidor Geronimo rodando, podemos partir para o exemplo de teste do servidor de aplicação.</p>
<p><strong>3. Exemplo simples de um deploy</strong></p>
<p>Então iremos usar o Netbeans 6.0 para desenvolver este exemplo, e como todo apresentação vamos fazer um básico hello world. Vamos fazer um exemplo simples somente para demostrar o deploy de uma aplicação. Então abra o Netbeans 6.0 e crie um novo projeto Web (considero que já saiba mexer com o Netbeans por esta ser uma ferramenta popular). Veja as figuras abaixo para ver os passos a seguir:</p>
<p>3.1. Abrindo as propriedades do projeto</p>
<p>Primeiro clique com o botão diretor do mouse sobre a raiz do projeto que foi criado para o nosso hello world e procure o item &#8216;Properties&#8217;. Veja como na figura abaixo:</p>
<div style="text-align:center;"><a href="http://inlinethumb37.webshots.com/37092/2381204620102160663S600x600Q85.jpg" target="_blank"><img src="http://inlinethumb22.webshots.com/36693/2381204620102160663S425x425Q85.jpg" border="0" alt="" width="425" height="304" /></a></div>
<p>Agora deve ser aberto a janela com as configurações do projeto, neste momento iremos mudar a configuração de empacotamento, iremos informar ao Netbeans para ciar um pacote war para poder realizar o deploy no Geronimo, veja a figura abaixo:</p>
<div style="text-align:center;"><a href="http://inlinethumb59.webshots.com/35962/2152880450102160663S600x600Q85.jpg" target="_blank"><img src="http://inlinethumb55.webshots.com/34614/2152880450102160663S425x425Q85.jpg" border="0" alt="" width="425" height="357" /></a></div>
<p>Agora vamos criar no nosso pacote WAR, então como no passo anterior vamos clicar com o botão direito do mouse sobre a raiz do projeto, agora selecione o item &#8216;Clean and Build&#8217;, com isto será gerado um arquivo [projeto].war dentro da pasta dist dentro do pasta do projeto.</p>
<div style="text-align:center;"><a href="http://inlinethumb60.webshots.com/35195/2425395760102160663S600x600Q85.jpg" target="_blank"><img src="http://inlinethumb16.webshots.com/36239/2425395760102160663S425x425Q85.jpg" border="0" alt="" width="425" height="314" /></a></div>
<p><strong>4. Publicando o War</strong></p>
<p>Para publicar iremos ter que acessar novamente o console do Geronimo, quando tiver na página inicial clique no item do menu &#8216;Deploy now&#8217;, irá aparecer uma nova tela com dois locais onde você pode fazer upload de arquivos, use o primeiro e clique para selecionar o arquivo, depois clique no botão instalar, veja figura logo abaixo, atenção nas setas vermelhas:</p>
<div style="text-align:center;"><a href="http://inlinethumb05.webshots.com/5572/2618276490102160663S600x600Q85.jpg" target="_blank"><img src="http://inlinethumb63.webshots.com/35006/2618276490102160663S425x425Q85.jpg" border="0" alt="" width="425" height="342" /></a></div>
<p>Caso não ocorra nenhum erro, a sua aplicação esta instalada e já pode ser acessada.</p>
<p><strong>5. Fonte bibliografica</strong></p>
<ul>
<li>[Documentação do Geronimo] <a href="http://geronimo.apache.org/documentation.html" target="_blank">http://geronimo.apache.org/documentation.html</a></li>
<li>[Wiki do Geronimo] <a href="http://cwiki.apache.org/geronimo/" target="_blank">http://cwiki.apache.org/geronimo/</a></li>
<li>[Licença do Apache] <a href="http://www.apache.org/licenses/LICENSE-2.0.html">http://www.apache.org/licenses/LICENSE-2.0.html</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://rodrigomatias.goware.com.br/blog/archives/32/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Autenticação para o SQUID invente!!!</title>
		<link>http://rodrigomatias.goware.com.br/blog/archives/31</link>
		<comments>http://rodrigomatias.goware.com.br/blog/archives/31#comments</comments>
		<pubDate>Fri, 07 Dec 2007 11:36:21 +0000</pubDate>
		<dc:creator>Rodrigo Pinheiro Matias</dc:creator>
				<category><![CDATA[Software Livre]]></category>
		<category><![CDATA[autenticacao]]></category>
		<category><![CDATA[ldap]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[openldap]]></category>
		<category><![CDATA[proxy]]></category>
		<category><![CDATA[squid]]></category>

		<guid isPermaLink="false">http://rodrigopmatias.wordpress.com/2007/12/07/autenticacao-para-o-squid-invente/</guid>
		<description><![CDATA[Bem pessoal ainda hoje muitas pessoas imaginão que a autênticação do SQUID precisa de plugins especificos e que os plugins só podem ser aqueles que tem na Internet, há algum tempo tive que fazer um autênticador para base OpenLDAP. O ambiente era o seguinte: Existia uma base de usuários no nosso servidor de LDAP samba [...]]]></description>
			<content:encoded><![CDATA[<p>Bem pessoal ainda hoje muitas pessoas imaginão que a autênticação do <a href="http://pt.wikipedia.org/wiki/Squid" title="Servidor de Proxy SQUID">SQUID</a> precisa de plugins especificos e que os plugins só podem ser aqueles que tem na Internet, há algum tempo tive que fazer um autênticador para base <a href="http://pt.wikipedia.org/wiki/Openldap" title="Servidor de Autenticação OpenLDAP" target="_blank">OpenLDAP</a>.</p>
<p>O ambiente era o seguinte: Existia uma base de usuários no nosso servidor de LDAP samba que deveria sincronizar todos as senhas dos nossos serviços, seja e-mail, samba, sistemas internos e agora o nosso SQUID.</p>
<p>Inicialmente procuramos alguns plugins na internet, achamos vários autênticadores de LDAP e isto chamou a minha atenção. Então decidi ver como estes plugins funcionavam, e percebi que fazendo a seguinte chamada:</p>
<blockquote><p>root # ./plugin-auth-squid [usuário] [senha correta]</p>
<p>OK</p></blockquote>
<p>Já com a senha ou usuário invalido:</p>
<blockquote><p>root # ./plugin-auth-squid [usuário] [senha errada]</p>
<p>ERR</p></blockquote>
<p>Então fica a ai a dica, caso queira fazer o SQUID autenticar com o que você quiser basta seguir esta receita.</p>
]]></content:encoded>
			<wfw:commentRss>http://rodrigomatias.goware.com.br/blog/archives/31/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Saiu do forno, Netbeans 6.0</title>
		<link>http://rodrigomatias.goware.com.br/blog/archives/30</link>
		<comments>http://rodrigomatias.goware.com.br/blog/archives/30#comments</comments>
		<pubDate>Wed, 05 Dec 2007 11:54:31 +0000</pubDate>
		<dc:creator>Rodrigo Pinheiro Matias</dc:creator>
				<category><![CDATA[Desenvolvimento]]></category>
		<category><![CDATA[Software Livre]]></category>
		<category><![CDATA[netbeans 6.0 final]]></category>

		<guid isPermaLink="false">http://rodrigopmatias.wordpress.com/2007/12/05/saiu-do-forno-netbeans-60/</guid>
		<description><![CDATA[Para as pessoas que aguardavam a versão final do Netbeans, já esta pronta desde o dia 27/11 parecia que estava tudo parado, mas o pessoal da equipe SUN Netbeans tinha congelado tudo para fazer uma update que foi publicado nesta ultimo dia 4 de dezembro. Versão nova, site novo, estão todos de parabens, a equipe [...]]]></description>
			<content:encoded><![CDATA[<p>Para as pessoas que aguardavam a versão final do Netbeans, já esta pronta desde o dia 27/11 parecia que estava tudo parado, mas o pessoal da equipe SUN Netbeans tinha congelado tudo para fazer uma update que foi publicado nesta ultimo dia 4 de dezembro. Versão nova, site novo, estão todos de parabens, a equipe que desenvolveu, o pessoal que testou e também o pessoal que agora vai testar.</p>
<p>Ainda é cedo para adotar a ferramenta como padrão para o desenvolvimento nas software house, mas veremos logo logo elas migrando para esta nova versão. Volto com mais detalhas quando tiver tempo para testar, mas por agora apenas deixo o endereço do sitio (<a href="http://www.netbeans.org">www.netbeans.org</a>) onde você pode baixar esta ferramenta.</p>
]]></content:encoded>
			<wfw:commentRss>http://rodrigomatias.goware.com.br/blog/archives/30/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
