Pensamento do dia

“Estamos numa época em que o fim do mundo não assusta tanto quanto o fim do mês…”

Autor desconhecido

Be alert and always process the incoming input

Why is it that sometimes what we are told to do is not the best thing for us?

http://www.stallman.org/images/cartoon-economists.png

http://www.stallman.org/images/cartoon-economists.png

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 :)

Salvem os Ricos

Maldito sobrinho

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

Exemplos Qt – Ligação a uma base de dados MySql

bd

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 :)

Exemplos Qt – As quatro estações

exe01O 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:

  • Testei isto numa rede local em ambiente Linux e funciona “na boa”.
  • Quando compilei o código em XP a aplicação funciona bem mas podem ocorrer falhas por causa da Firewall.
  • O protocolo UDP não garante que a mensagem seja recebida pelo receptor. Na minha wireless nota-se a perda de alguns datagramas.
  • Está aqui uma forma simpática e “minimalista” para se contruir um sistema de “broadcast” de informação numa rede local!
  • O recurso “imagens.qrc” no receptor não está a ser utilizado.

Como instalar a versão 3.0 do OpenOffice no Debian (Lenny)

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 :)

Como configurar a placa Atheros no Lenny ( wireless )

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 :)

Como instalar o Qt 4.5 com suporte para MySql

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:

  • Esta instalação foi feita sobre um fresh install do Lenny (Debian GNU/Linux).
  • Convém ter algumas horinhas para gastar com o assunto. Acompilação pode demorar bastante.
  • Convém instalar umas coisas básicas para poder testar o acesso à base de dados.
    apt-get install apache2 mysql-server php5 phpmyadmin
  • o código de uma função para testar a ligação pode ser este.

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;
    }
}
Publicado em QT. 5 Comentários »