Faça você mesmo: Controle sua casa pela internet – Parte 2 – Desenvolvimento
No post passado falei de todo o trabalho que tivemos para montar o planejamento do projeto. Depois de planejar, conseguimos visualizar todos os pontos necessários para o desenvolvimento, parte que particularmente eu já tinha tudo esquematizado na cabeça .
Como uma das premissas era utilizar soluções opensource, comecei a pesquisar o que realmente era importante:
- Sistemas operacionais para desenvolvimento e execução do projeto;
- Bibliotecas C++ Ansi;
- Frameworks para portar aplicações;
- Servidor web leve e portátil;
- Servidor de streaming para vídeo;
Depois desse levantamento, escolhi os itens. Vale ressaltar que caso você queira montar o projeto, o que vale é seguir as bibliotecas que utilizamos. Desde que o sistema operacional seja *NIX, use o que você achar melhor. Itens eleitos:
- Mandriva Linux para desenvolvimento do software. Possui muitas bibliotecas empacotadas, economizou bom tempo no desenvolvimento;
- Slax para rodar a aplicação. O Slax é um Slackware Linux customizado que roda através de CDROM ou pendrive direto;
- Boost – Biblioteca C++ bem conhecida no mundo dos programadores da linguagem e que dá suporte a diversas funcionalidades, principalmente no quesito de gerenciamento de memória. Utilizamos o boost_regex também para validar dados com expressões regulares;
- CGICC – Biblioteca do projeto GNU para trabalhar com requisições CGI. Trabalha com request, response, cookies e utiliza todo conceito da STL;
- Servidor web Apache com mod_cgi ativo no ambiente de desenvolvimento, para testar a aplicação. Em ambiente de produção utilizei uma versão do Miniserv que é bem pequeno e funcional;
- Para streaming de vídeo, utilizei o Motion (há um post sobre ele no blog). Esse servidor é para você assistir imagens de câmeras através do browser;
Com as ferramentas em mãos, fiz setup de todo ambiente e utilizei o Kdevelop para codificar. Já havia trabalhado com essa IDE e não tinha muito tempo para ficar gastando e aprendendo outras ferramentas. Há a possibilidade de usar o Eclipse com o plugin CDT ativo, vai da preferência do programador!
Outro ponto que não mencionei acima, mas faz parte das boas práticas é o uso de um controlador de versões. Utilizamos o Subversion para controlar os fontes do projeto, bem como as documentações produzidas. Para aqueles que nunca ouviram falar desse tipo de ferramenta é bom ir atrás. Imagine que legal você precisar resgatar um fonte com alterações que vocês fez há dias, semanas ou meses ? O controle de versões permite que você faça isso em poucos cliques, além de facilitar possíveis merges, ou mesclas de código.
Não vou entrar no mérito de como fazer o setup de todo ambiente nesse post, afinal, você precisa aprender alguma coisa também, certo ? Caso tenha alguma dúvida, é só fazer um comentário por aqui.
Para finalizar… Aqueles que duvidam que dá pra rodar C++ como aplicação WEB, façam o seguinte teste:
– Início teste.cpp
#include<iostream>
using namespace std;
int main(int argc, char **argv){
cout << “Content-type: text/html\r\n\r\n” << endl;
cout << “<html><body><h1>Hello World!</h1></body></html>” << endl;
return 0;
}
– Fim teste.cpp
Compile esse código utilizando o g++ ( *nix ) ou o mingw (windows):
shel:> g++ teste.cpp -o teste.cgi
O comando gerará um arquivo executável chamado teste.cgi, idêntico ao .exe . Faça um teste digitando ./teste.cgi e o resultado será igual ao abaixo:
shel:> Content-type: text/html
<html><body><h1>Hello World!</h1></body></html>
Se você conhece um pouco de programação, sabe que imprimimos um HTML simples. O protocolo HTTP define que o que separa o cabeçalho do conteúdo são duas quebras de linhas consecutivas, no caso o cabeçalho é Content-type: text/html\r\n\r\n e o resto é o HTML que o browser vai processar.
Feito isso, basta garantir com que o seu servidor WEB permita executar um cgi e retornar só o conteúdo processado. Isso explica o motivo pelo qual estou usando o mod_cgi para o Apache .
[Testando no apache]
- Copie o arquivo teste.cgi para o diretório cgi-bin do apache (que é criado por padrão na instalação). Na maioria dos casos fica no diretório /var/www/cgi-bin;
- Dê permissão de execução para o script ao usuário do apache. Normalmente eu seto o owner do arquivo para o usuário apache e depois mudo os privilégios através de um chmod 755 /var/www/cgi-bin/teste.cgi;
- Chame o aplicativo pelo browser, ex: http://localhost/cgi-bin/teste.cgi . O resultado deve ser um Hello World bem grande na tela!
[Testando no IIS]
- Copie o arquivo teste.cgi para algum diretório dentro de c:\inetpub\wwwroot e dê permissão de execução de script através do console do IIS;
- Execute via browser: http://localhost/pasta/teste.cgi
Fácil, né ?
[Links descritos no post - úteis]
Apache Server
http://httpd.apache.org
Biblioteca CGICC
http://www.gnu.org/software/cgicc/
Biblioteca Boost para C++
http://www.boost.org/
Motion
http://www.lavrsen.dk/twiki/bin/view/Motion/WebHome
Slax
http://www.slax.org/
Mandriva linux
http://www.mandriva.com/
Começaremos a falar da implementação no próximo post. Até lá !
Popularity: 4%