quinta-feira, 28 de maio de 2009

Trac e Subversion

Iremos demonstrar a criação de ambiente para gerenciamento de desenvolvimento de software utilizando Trac e Subversion com o Ubuntu Server 8.04 Long Time Support (LTS) Para este servidor iremos utilizar as seguintes configurações:

1. Ubuntu Server 8.04 LTS
2. Apache Http Server
3. Trac
4. Subversion
5. Integrando tudo

Para complementar serão instalados ou ativados módulos no Apache para que o mesmo integre o Trac e o Subversion em um mesmo servidor.

1. Instalação do Ubuntu Server

Não iremos nos ater muito aos detalhes da instalação do Ubuntu Server. Só alerto o cuidado com os dados que estão no disco, certifique-se que tudo que esta no disco de importante está assegurado em copias de segurança uma vez que o processo de instalação altera a estrutura do disco. certifique-se que tudo de importante no disco esteja assegurado em copias de segurança, pois o processo de instalação altera a estrutura do disco.

2. Apache Http Server

O famoso HTTP Server da Apache Foundation talvez seja o servidor de HTTP mais popular do mundo, utilizado por sistemas servidos tanto em GNU/Linux, Unix, Windows e outros.
Este servidor é famoso por sua confiabilidade e modularidade, ou seja o servidor pode receber outras funcionalidades que são acoplada por uma biblioteca de modulo, desta forma podemos utilizar este serviço para ser meio de saída tanto do servidor de versionamento como do sistema de gerenciamento.

Este servidor é amplamente conhecido por sua confiabilidade e modularidade, ou seja o servidor pode receber outras funcionalidades acopladas através de uma biblioteca de módulo. A partir estas características podemos utilizar este serviço para ser um meio de saída tanto do servidor de versionamento como do sistema de gerenciamento.

Para instalar o Apache Http Server basta executar a seguinte linha de comando:
root@myserver:~# aptitude install apache2
Com este comando teremos o Apache Http Server escutando na porta 80. Para verificar isto existe o comando fuser, este comando oferece uma ligação entre a porta e o processo. Veja como verificar se o servidor está funcionando corretamente:
root@myserver:~# fuser -n tcp 80
80/tcp: 3127 3131 3136
Neste caso temos o servidor rodando em três processos. Agora que o servidor httpd esta funcionando podemos passar para o próximo serviço, o Trac.

3. Trac

Com este comando teremos o Apache Http Server escutando na porta 80. Para verificar isto existe o comando fuser, este comando oferece uma ligação entre a porta e o processo. Veja como verificar se o servidor está funcionando corretamente:
A instalação do Trac é muito simples, basta executar o seguinte comando:
root@myserver:~# aptitude install trac postgresql-server python-psycopg2
Este comando irá instalar alguns pacotes necessários para que o servidor de Trac possa ser executado.

3.1. Preparando o servidor de banco de dados

Para prepararmos a execução do banco de dados iremos criar uma conta e um banco de dados no SGDB PostgreSQL. Veja os comandos:
  • Edite o arquivo pg_hba.conf. Neste momento vamos colocar o nosso servidor de banco de dados em um modo vulnerável, mas isto vai ser por um curto espaço de tempo. Então veja o que deve ser feito:
host    all         all         127.0.0.1/32          trust #md5
# IPv6 local connections:
host all all ::1/128 trust #md5
  • Reinicie o serviço com o comando:
root@myserver:~# invoke.rc-d postgresql-8.3 restart
  • Agora vamos criar a conta para o nosso usuário que chamaremos de trac-user e ainda vamos definir uma senha para o mesmo, guarde, pois, será necessário em outros passos deste artigo, veja os comandos:
root@myserver:~# createuser -h localhost -U postgres -SdRlP trac-user
...
  • Como definimos a senha do nosso novo usuário, vamos então voltar o banco de dados ao seu nível de segurança normal. Edite novamente x e volte os valores que foram alterados anteriormente, veja:
host    all         all         127.0.0.1/32          md5
# IPv6 local connections:
host all all ::1/128 md5
  • Com o usuário criado e senha definida vamos agora criar a base de dados:
root@myserver:~# createdb -h localhost -U trac-user trac-exemplo
...
Neste momento temos o banco de dados pronto para receber o Trac. Podemos então prosseguir com o nosso artigo.

3.2. Criando o Repositório

A criação do repositório é importante notarmos algumas variáveis, pois, a configuração de qualquer uma errada pode atrapalhar todo o processo. Tenha atenção no diretório onde esta sendo criado o repositório, pois, iremos instalar o Trac e o Subversion com um path em comum, devido a didática. Iremos ter que serão criado trac e svn. Veja abaixo:
root@myserver:~# mkdir exemplo-workspace
root@myserver:~# cd exemplo-workspace
root@myserver:~/exemplo-workspace# trac-admin trac
...
Serão feitas várias perguntas, como nome do projeto e outras mais especificas como configuração de banco e repositório, lembre-se que o path do subversion esta no mesmo que o trac, sendo assim ~/exemplo-workspace/svn.

Agora vamos editar o arquivo de configuração do Trac, edite então o arquivo trac.ini:
database = postgres://trac-user:123@localhost:5432/dbname?schema=trac-exemplo
Para garantir que a configuração do banco de dados esta correta e que as tabelas foram criadas de acordo com as necessidades do Trac, execute o comando:
root@myserver:~/exemplo-workspace# trac-admin trac upgrade
Configuramos o Trac para utilizar a nossa conta e nosso banco criado no PostgreSQL. Mais para frente voltaremos modificar este arquivo.

3.3. Usuários e Senhas

Para esta tarefa iremos utiliza um aplicativo chamado htpasswd o mesmo poderia ser feito com o aplicativos htdigest, mas não iremos nos ater a esta configuração.

Vamos criar o usuário admin, que será o administrador do trac.
root@myserver:~/exemplo-workspace# htpasswd -c passwd admin
...
Será solicitado a nova senha, guarde, pois, esta credencial será utilizada para administrar o Trac. Com isto podemos seguir para o subversion.

4. Subversion

O subversion será utilizado para promover o trabalho colaborativo e em equipes, será utilizado para controlar as modificações no código do software que esta sendo desenvolvido.

Para instalar este serviço é muito simples, execute o comando:
root@server:~# aptitude install svn
Agora que o nosso controlador de versão esta instalado, vamos criar agora o nosso repositório subversion, veja o comando logo abaixo:
root@myserver:~/exemplo-workspace# svnadmin create svn
Com este comando será criado um diretório com o nome indicado em [repositório], este diretório será usando no arquivo de configuração do Trac no próximo item do artigo quando tudo será integrado.

5. Integrando tudo

Agora vem a vem a parte mais legal deste artigo, colocar o Trac para rodar junto com o servidor de Subversion, e o melhor, colocar os dois para autenticar em uma mesma autenticadora.

5.1. Terminando a configuração do Trac


Quando configuramos o Trac no item 3.2 alteramos o arquivo trac.ini, iremos fazer mais uma modificação informando agora ao Trac em que local foi criado o repositório svn. Encontre e modifique a variável repository_dir e configure da seguinte forma:
repository_dir = /root/exemplo-workspace/svn
5.2. Configurando o Apache Http Server para o Trac

Para realizar esta integração iremos utilizar o modulo mod_python, este modulo permite colocar aplicações escritas em python para rodar utilizando o servidor Apache Http Server. Esta configuração requer uma devida atenção as permissões do diretório onde o Trac foi instalado, lembre-se de garantir privilegios ao usuário www-data, veja com fazer isto logo abaixo:
root@myserver:~/exemplo-workspace# chown root.www-data trac/ -R
root@myserver:~/exemplo-workspace# find trac -type d -print0 | xargs -0 chmod g=gwx
root@myserver:~/exemplo-workspace# find trac -type f -print0 | xargs -0 chmod g=g
Agora vamos instalar e ativar o mod_python:
root@myserver:~/exemplo-workspace# aptitude install libapache2-mod-python
...
root@myserver:~/exemplo-workspace# a2enmod python
...
Já temos o servidor com o modulo ativo, vamos configurar o apache agora para mapear o endereço http://localhost/trac-exemplo/trac como sendo o nosso ambiente Trac instalado em (/root/exemplo-workspace/trac). Veja o arquivo de configuração:
<location /trac-exemplo/trac>
SetHandler mod_python
PythonInterpreter main_interpreter
PythonHandler trac.web.modpython_frontend
PythonOption TracEnv /root/exemplo-workspace/trac
PythonOption TracUriRoot /trac-exemplo/trac
Order allow,deny
Allow from all
</location>

<LocationMatch "/trac-exemplo/trac/login">
AuthType Basic
AuthName "Trac"
AuthUserFile /root/exemplo-workspace/passwd
Require valid-user
</LocationMatch>
5.3. Configurando o Apache Http Server para o Subversion

Antes de mais nada precisamos instalar o modulo que faz o servidor apache conversar com o repositório subversion, veja:
root@myserver:~/exemplo-workspace# aptitude install libapache2-svn
A configuração da integração do Subversion é bem parecida com a do Trac, veja:

5.3. Sites sugeridos

Trac Project
Trac Hacks Plugins, modules, etc
svnbook-pt-br
Apache/Python Integration
TracModPython – The Trac Project

domingo, 24 de maio de 2009

Boas práticas, alert somente para mensagens

Uma prática comum entre os desenvolvedores "Web" (aqueles que desenvolvem sistemas que rodam sobre o protocolo HTTP e são visualizados por um Navegador como Mozilla Firefox) utilizam para depuração de JavaScript o método alert(), para falar a verdade eu também utilizava.

Utilizava até descobrir que o Firebug, plugin do navegador Mozilla Firefox, possui uma interface bem intuitiva com a maquina executora de JavaScript, isto mesmo, veja como você pode detectar se o navegador esta com o Firebug ativo, veja:
if(console)
alert("Console present");
else
alert("Console not present");
Já que sabemos como verificar se o Firebug esta disponível, vamos a um pequeno exemplo de uso deste recurso, veja o exemplo:
if(console) {
console.log("Agora estou utilizando o Firebug para depurar meus código.");
var obj = {
id: "meu id",
name: "meu name"
};
console.log(obj);
}
Desta forma evitamos ter que matar o processo do navegador quando entramos em um loop infinto onde temos um alert. Outras funcionalidades podem ser vistas na documentação do projeto em Firebug.Console.

sábado, 23 de maio de 2009

Fim do "inverno"...início do "verão"!

No dia 22 de maio de 2009 todos os palmenses puderam comprovar o fim do "inverno" tocantinense. Digo isto, pois o dia ensolarado abre o nosso saudoso "verão".
Muitos, que não fazem parte de nossa rotina climática, podem estranhar as afirmações acima onde cito o fim do inverno e o início do verão. Diriam que fiquei louco... mas em Tocantins é desta forma que vos digo: quando chove é inverno e quando não chove é verão (e muito quente, por sinal!).
Claro que desconsidero a classificação das estações e faço uso de uma expressão popular para enfatizar como é o nosso clima.
Então, a partir de agora é tempo de aproveitar as praias do Tocantins e do Araguaia.
Para todos que podem, divirtam-se!!!

Outro fato do dia 22 de maio, não menos importante, foi a criação deste blog. Como informado no post anterior, o conteúdo será variado com temas livres.
Assim, quero e espero informação, protesto e diversão!
Escuta essa!

sexta-feira, 22 de maio de 2009

O Foco!

O blog esta focado em discutir e analisar situações relacionadas a informática e a assuntos que interessem os autores no seu dia a dia. Não esperem um blog com postagens diárias nem um monte de videozinho do youtube porque a galera aqui é bem preguiçosa.

Esperamos que gostem do material que será disponibilizado.
 

Todo o conteúdo deste blog pode ser republicado, desde que seja realizada a citação.