“Estamos numa época em que o fim do mundo não assusta tanto quanto o fim do mês…”
Autor desconhecido
Autor desconhecido
Why is it that sometimes what we are told to do is not the best thing for us?
Now think of what the Portuguese Government is doing with the Education Department!
Yes. They are leading us to the “right”.
PS: My thanks to Mr. RMS for the inspiration and the cartoon :)
Achei este artigo tão engraçado que decidi fazer este post.
Imaginem …
… o carpinteiro a fazer o trabalho do médico …
… o padeiro a fazer o trabalho da cabeleireira …
… o político a fazer o trabalho do professor …
… o electricista a fazer o trabalho do neurocirurgião …
Bem, a lista podia ser mais longa mas penso que já deu para entender.
Se assim é, porque raio há-de o sobrinho fazer o trabalho do profissional das TIC!
Leiam e entendam o meu ponto de vista: http://www.revistaphp.com.br/artigo.php?id=191

Em primeiro lugar começo por manifestar a minha apreensão quanto ao futuro do MySql ( saber porquê )!
De qualquer das formas, e como foi este o SGBD que escolhi para trabalhar com o Qt, é nele que se baseia este pequeno exemplo.
A motivação foi a seguinte:
“Certo dia fui às compras e no final a funcionária entregou-me o talão.
Coma andava à procura de um exemplo prático para manipular uma base de dados monotabela, decidi fazer daquele talão a mascote deste pequeno exercício. Daí a opção “ver talão inspirador …” :)”
De seguida criei uma interface baseada na classe QMainWindow, que muito fácil e rapidamente permite criar os menus, barras de ferramentas, barra de estado, atalhos e outras.
Existe um ficheiro de configuração ( db.conf ) que armazena os dados de acesso à base de dados. Isto pressupõe que para ver todas as opções da aplicação é necessário ter acesso a uma base de dados MySql, nem que seja na China ;)
Depois fui acrescentando funções que realizassem as operações elementares de inserção, edição,eliminação e pesquisa de dados. Nada muito sofisticado.
Penso que pode ser uma boa base de partida para se fazerem umas “brincadeiras” nesta área, e por isso partilho o código para quem também se estiver a iniciar nestes assuntos.
Obter o código aqui.
Nota: Não estou a fazer publicidade aos Hipermercados Modelo :)
O exemplo de hoje pretende demonstrar que é possível “fazer passar” por um QDataStrem vários tipos de objectos.
Existem dois módulos para esta pequena aplicação: Sender, Receiver.
Sender:
De dois em dois segundos, selecciona aleatoriamente um estação do ano, e envia através do QDataStream um objecto da classe QPixmap contendo a imagem associada a essa estação.
Como o QDataStream está associado a um UdpSocket, aproveito para enviar os dados para um receptor que pode ser qualquer posto da rede a correr o “Receiver”. Não esquecer de trocar “localhost” por “broadcast” para testar isto em rede.
A qualquer momento podemos pressionar o botão que contém uma estação do ano para que essa imagem seja enviada.
Receiver:
O receptor tem um papel mais passivo e está a escutar no porto seleccionado.
Sempre que recebe um datagrama exibe imediatamente a imagem correspondente.
Download: aqui
Notas:
Ainda agora o Lenny passou a “stable”, disponibilizando a versão 2.4 do OpenOffice, e este já vai na versão 3.0.
Na maioria das situações isto não causa qualquer problema, pois as tarefas correntes realizadas com este conjunto de ferramentas estão devidamente suportadas.
No meu caso, e como andava à procura de uma ferramenta para fazer edição de alguns documentos no formato pdf, acabei por descobrir que a Sun já lançou uma extensão que permite importar pdf no OpenOffice.
Assim sendo vou registar aqui os passos que foi necessário executar para ter o OpenOffice 3.0 instalado no Lenny com a extensão para editar documentos no formato pdf.
Passo # 1 – Preparar o Lenny para utilizar Backports
As linhas seguintes são uma tradução de http://www.backports.org/dokuwiki/doku.php?id=instructions
Início da tradução{
Utilizar backports.org é muito simples:
Caso deseje receber informação acerca de actualizações de segurança em backports.org deverá subscrever a mailinglist backports-security-announce.
1. Adicione esta linha
deb http://www.backports.org/debian lenny-backports main contrib non-free
ao ficheiro /etc/apt/sources.list.
2. Execute o comando apt-get update
3. Todos os backports estão desactivados por defeito. Caso deseje instalar algo a partir dos backports deverá executar:
apt-get -t lenny-backports install “package”
É óbvio que poderá igualmente utilizar a ferramenta aptitude:
aptitude -t lenny-backports install “package”
Também é possível utilizar pinning:
De seguida será necessário definir uma prioridade mais elevada para cada backport. Sim, isto significa mesmo cada backport e também todas as dependências. Para o mutt, é necessário adicionar estas linhas:
Package: mutt
Pin: release a=lenny-backports
Pin-Priority: 999
ao ficheiro /etc/apt/preferences (caso nunca tenha utilizado pinning, este ficheiro deverá ser criado).
Depois de executar o comando apt-get update execute apt-get install mutt com é usual.
Caso deseje que o apt verifique os “downloaded backports” poderá importar a chave de backports.org archive’s key para o apt:
apt-get install debian-backports-keyring
ou
gpg –keyserver hkp://subkeys.pgp.net –recv-keys 16BA136C
gpg –export 16BA136C | apt-key add -
ou
wget -O – http://backports.org/debian/archive.key | apt-key add -
Para que os pacotes obtidos a partir dos backports se actualizem automaticamente deverá bastar adicionar a seguinte entrada no ficheiro /etc/apt/preferences :
Package: *
Pin: release a=lenny-backports
Pin-Priority: 200
}
Passo # 2 – Desinstalar a versão 2.4 do OpenOffice
apt-get remove openoffice*
Passo # 3 – Instalar a versão 3.0 do OpenOffice
apt-get -t lenny-backports install openoffice.org
Passo # 4 – Obter a extenção para importar pdf
Neste URL: http://extensions.services.openoffice.org/project/pdfimport seleccionar a versão correcta.
Passo # 5 – Instalar a extenção para importar pdf
Basta instalar como diz aqui.
E pronto …é tudo.
Caso alguém teste este processo e detecte alguma falha a malta agradece :)
Quatro passos e já está:
#1 – Preparar a instalação
apt-get install module-assistant wireless-tools linux-headers-$(uname -r)
#2 – Procurar e compilar o driver
m-a a-i madwifi
#3 – Carregar o módulo de placa wireless
modprobe ath_pci
#4 – Reiniciar o computador
Pode-se fazer isto de várias formas … escolham a vossa :)
Já falei aqui no blog de pelo menos duas formas de instalar o Qt no Lenny.
Quando pensava que já tinha isto afinadinho, eis que surge a questão o MySql!
Por questões relacionadas com as licenças o Qt não inclui o driver para MySql por defeito, pelo que é necessário compilar o Qt já com esta opção.
Vou deixar aqui a minha “cábula” para que não percam tanto tempo quanto eu, pois a compilação pode demorar umas duas horinhas … e se os parâmetros do ./configure não forem os correcto é tempo perdido.
Não vou estar com grandes explicações porque não tenho tempo … vamos a isso.
#1 Instalar alguns pacotes que fazem falta
apt-get install build-essential
apt-get install libdbus-qt-1-1c2 libdbus-qt-1-dev
apt-get install libmysql++-dev
#2 Obter o qt
http://www.qtsoftware.com/downloads/linux-x11-cpp
#3 Descompacta para /home/user
#4 Algumas verificações
./configure -help
…
-no-sql-<driver> … Disable SQL <driver> entirely.
-qt-sql-<driver> … Enable a SQL <driver> in the QtSql library, by default
none are turned on.
-plugin-sql-<driver> Enable SQL <driver> as a plugin to be linked to
at run time.
Possible values for <driver>:
[ db2 ibase mysql oci odbc psql sqlite sqlite2 tds ]
…
#5 entrar na directoria que contém o qt para instalação
#6 configurar com os parâmetros adequados
./configure -qt-sql-mysql -dbus-linked -xshape
make
su … make install
# 7Adicionar o qt à variável de istema $PATH
(Apenas para este utilizador)
Editar o ficheiro .profile e adicionar estas duas linhas no final:
PATH=/usr/local/Trolltech/Qt-4.5.0/bin:$PATH
export PATH
(Para todos os utilizadores)
Editar o ficheiro /etc/profile e adicionar estas duas linhas no final:
PATH=/usr/local/Trolltech/Qt-4.5.0/bin:$PATH
export PATH
E pronto … já deve estar tudo a funcionar.
Notas:
apt-get install apache2 mysql-server php5 phpmyadmin
bool MainWindow::estabelecerLigacaoBD(){
QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
db.setHostName("localhost");
db.setDatabaseName("xxx");
db.setUserName("root");
db.setPassword("1234");
if(!db.open()){
QMessageBox::critical(0, QObject::tr("Database Error"), db.lastError().text());
return false;
}else{
QMessageBox msgBox;
msgBox.setModal(true);
msgBox.setText("YESSSS! ...");
msgBox.exec();
return true;
}
}