sexta-feira, 20 de abril de 2012

Programar para Android - 00


Instalar o ambiente.

A melhor forma de programa para Android é usar um ambiente com Eclipse+JDK+Android SDK+ADT. É possível criá-lo tanto em Windows como em Linux ou Mac.

1. Fazer o download do eclipse


O Eclipse (http://www.eclipse.org/) é um ambiente de desenvolvimento para Java/C/C++/PHP/Whatever. Tem umas mil versões diferentes, a que interessa para este caso é a Classic. As outras versões também servem, mas iriam trazer módulos desnecessários (http://www.eclipse.org/downloads/).
Depois de fazer o download da versão certa para o sistema operativo certo, basta descomprimir o ficheiro. Não é necessário fazer a instalação, o Eclipse corre a partir da diretoria onde for descomprimido. Provavelmente será conveniente criar um atalho no Desktop para iniciar o Eclipse.

2. Instalar o JDK


O Java Development Kit (JDK) pode ser obtido em http://www.oracle.com/technetwork/java/javase/downloads/index.html. Fazer o download da versão pretendida para o sistema operativo. O Java Runtime Environmet (JRE) não é suficiente, é mesmo necessário o JDK.
No Ubuntu basta fazer algo tipo sudo apt-get install sun-java6-jdk, ou algo semelhante.

3. Obter o Android SDK


O Android Software Development Kit pode ser obtido em http://developer.android.com/sdk/index.html.
A versão Windows tem um instalador, mas basta descomprimir o ficheiro com o SDK. Lembrar onde estão os ficheiros descomprimidos, vão ser precisos mais tarde.

4. Obter o ADT


O Android Development Tools (ADT) é um plugin para Eclipse que permite utilizar o SDK de forma mais fácil. Não é obrigatória a sua instalação, mas é altamente recomendado.
A instalação faz-se no próprio Eclipse, em Help » Install new software...
Clicar em Add... e introduzir o endereço:
https://dl-ssl.google.com/android/eclipse/
Após alguns segundos aparece uma lista de pacotes. Selecionar todos os pacotes (basta selecionar o Developer Tools e são todos automaticamente selecionados), clicar em Next e novamente em Next. Aceitar as licenças e Finish. O Eclipse vai fazer o download e instalar os componentes. Pode aparecer um aviso sobre conteúdo não assinado. No final é preciso reiniciar o Eclipse. Ao reiniciar o Eclipse vai pedir a localização do SDK que descomprimimos no ponto anterior. Após isso o Eclipse faz mais alguns downloads. É preciso aceitar mais algumas licenças de utilização e fazer mais alguns downloads.

5. Configurando


Para instalar outras versões da API do Android, documentação, exemplos, etc, ir a Window » Android SDK Manager.
Aconselha-se a instalação de pelo menos o SDK da versão 2.1, pois a maior parte dos dispositivos no mercado são compatíveis com essa versão.
Para correr um programa feito no Eclipse numa máquina virtual Android é preciso primeiro criar uma máquina Android com o Android Virtual Device Manager (AVD). Ao criar uma máquina virtual especificamos as suas características (ecrã, disco SD, GPS, ...). Para isso ir a Window » AVD Manager. O AVD Manager também permite lançar o emulador. O boot da máquina virtual demora bastante tempo, por isso convém não a desligar (shutdown) depois de arrancar.

6. Fim


E pronto, só falta mesmo aprender a programar para Android.

quinta-feira, 1 de março de 2012

Ubuntu terminal server

O linux sempre foi capaz de suportar sessões remotas, tanto na CLI como na interface gráfica, pois está completamente construído à volta da arquitetura cliente-servidor.
Para iniciar uma sessão remota completamente encriptada através de CLI basta usar o ssh, para poder usar aplicações gráficas através da ligação ssh basta adicionar a opção -X ao ssh. O servidor X pode ser configurado para aceitar sessões remotas (ou seja, o desktop completo e não apenas aplicações individuais) através do XDMCP.
Desde que fiquemos sempre no mundo linux (ou OSX) funciona tudo, mas se queremos ligar a partir de uma máquina Windows a uma máquina linux estamos mais limitados. Existem alguns clientes X para Windows: Cygwin/X, Xming, WeirdX, eXceed, etc. Alguns são open source, outros são proprietários.
O protocolo NX vai um passo mais à frente e permite usar várias técnicas (cache, compressão de dados) para acelerar o processo, permitindo usar sessões remotas mesmo através de ligações lentas.
A empresa NoMachine disponibiliza clientes gratuitos para Windows, Linux, MacOS e Solaris. O núcleo das aplicações NX é open source, mas algumas das aplicações disponibilizadas pela NoMachines são pagas. Há o projeo FreeNX que fornece um servidor NX completamente open source e ainda a Google disponibiliza um servidor compatível com o protocolo NX chamado NeatX.
Há então 3 alternativas para criar um servidor NX: o servidor da NoMachines, FreeNX e NeatX.

Servidor da NoMachines
Na máquina servidora é preciso instalar o pacote cliente (nxclient), o node (nxnode) e finalmente o servidor (nxserver). Fica imediatamente a funcionar, mas está limitado a 2 utilizadores, mesmo que não estejam ligados em simultâneo.

FreeNX
Basta seguir este guião:
https://help.ubuntu.com/community/FreeNX

NeatX
Vamos então instalar o servidor NeatX numa máquina com Ubuntu (lucid).
sudo apt-get install python-software-properties
sudo add-apt-repository ppa:freenx-team

sudo apt-get update
sudo apt-get install neatx-server

Nos três casos, na máquina cliente (Windows, linux, Mac ou Solaris), basta ir a http://www.nomachine.com/download.php e fazer o download do cliente respetivo.

x2go
O projeto x2go pretende atingir o mesmo objetivo, mas é completamente open source. Usa as bibliotecas do NX, pelo que o seu desempenho deverá ser equivalente.
Por enquanto ainda não está num estado muito maturo, mas é um projeto a manter debaixo de olho.
http://www.x2go.org/

WinSwitch
Esta aplicação permite partilhar janelas de aplicações entre diferentes sistemas. Por exemplo inicia-se o OpenOffice no linux e pode enviar-se a janela para um computador Windows ou Mac ligado a esse servidor linux. Não consegui partilhar aplicações Windows para o Linux, mas suponho que seja possível. Mais um projeto a manter debaixo de olho.
http://winswitch.org/

Referências
http://www.ubuntugeek.com/how-to-install-neatx-similar-to-freenx-server-on-ubuntu-10-04-lucid-lynx.html
Mais leituras
http://diznix.com/articles/remote-x-connecting-to-linux-from-windows/

segunda-feira, 27 de fevereiro de 2012

XDMCP

O XDMCP (X Display Manager Control(?) Protocol(?)) permite fazer o login remoto numa máquina linux, como o telnet, mas em modo gráfico. Digo como o telnet e não 'como o ssh' porque o XDMCP é inerentemente inseguro. Uma forma de o tornar seguro é usar um túnel ssh para fazer a ligação. O XDMCP usa o porto UDP 177.
Para funcionar é preciso um gestor de login (login manager) que suporte XDMCP. Apenas o XDM e o KDM suportam XDMCP (que eu tenha descoberto). O GDM removeu o suporte para XDMCP.
Para usar o XDMCP com KDM é preciso:
1. Primeiro que tudo, instalar o KDM e torná-lo o gestor de login pré-definido
Em Ubuntu:
sudo apt-get install kdm
E para redefinir o KDM como gestor por defeito:
sudo dpkg-reconfigure kdm
2. Editar o kdmrc e acrescentar as linhas:
[xdmcp]
Enable=true

3. Editar o Xaccess e descomentar a linha (basta apagar o primeiro '#')
# * # any host can get a login window
Não é a configuração mais segura, mas funciona.
4. Reiniciar o kdm (ou o computador).

sábado, 25 de fevereiro de 2012

Amenizando o Debian

Um conjunto de scripts e dicas para amenizar um pouco o Debian.
Devivo à estrita aderência ao ideal open source o Debian está privado da utilização de algum software, mas como utilizador individual posso instalar o que quiser no Debian...

O equivalente Debian ao ubuntu-restricted-extras

Ligar o contrib e o non-free no sources.list
Adicionar ao sources.list:

deb http://deb-multimedia.org squeeze main non-free

Adicionar a chave do debian-multimedia


wget http://deb-multimedia.org/gpgkey.pub -O - | apt-key add - && apt-get install deb-multimedia-keyring

Adicionar os pacotes de interesse:


apt-get install acroread ffmpeg flashplugin-nonfree libcurl3 flashplugin-nonfree-extrasound freepats gstreamer0.10-ffmpeg gstreamer0.10-plugins-bad gstreamer0.10-plugins-ugly sun-java6-jre sun-java6-plugin sun-java6-fonts libaccess-bridge-java libavcodec52 libavformat52 libcdaudio1 libdc1394-22 libdvdnav4 libdvdread4 libfftw3-3 libgif4 libid3tag0 libiptcdata0 libmjpegtools-1.9 libmms0 libmp4v2-0 libmpeg2-4 libmusicbrainz4c2a libneon27-gnutls libofa0 libopenspc0 libpostproc51 libsidplay1 libsndfile1 libsoundtouch1c2 libswscale0 libwildmidi1 openjdk-6-jre openjdk-6-jre-headless openjdk-6-jre-lib rhino ttf-arphic-uming ttf-baekmuk ttf-bengali-fonts ttf-devanagari-fonts ttf-gujarati-fonts ttf-indic-fonts ttf-kannada-fonts ttf-kochi-gothic ttf-liberation ttf-malayalam-fonts ttf-mscorefonts-installer ttf-oriya-fonts ttf-punjabi-fonts ttf-sazanami-mincho ttf-tamil-fonts ttf-telugu-fonts tzdata-java unrar

À medida que sairem novas versões destes pacotes será necessário corrigir a numeração de alguns pacotes.

Referências
http://ubuntuforums.org/showthread.php?p=6019449
http://forums.debian.net/viewtopic.php?f=20&t=67013

terça-feira, 21 de fevereiro de 2012

Emagrecer o Ubuntu

Para emagrecer o Ubuntu (ou qualquer outra distribuição baseada em Debian) podemos usar algumas aplicações simples: localepurge, deborphan, bleachbit.
O localepurge retira os locales (traduções de pacotes para várias línguas) não escolhidos pelo utilizador. Quando é instalado o localepurge pede ao utilizador quais os locales que pretende MANTER. Todos os que não forem selecionados serão eliminados.
O deborphan identifica pacotes não utilizados pelo sistema e que podem ser desinstalados.
O bleachbit tem uma interface gráfica e uma interface em CLI. Permite fazer vários tipos de limpeza ao sistema. Apagar cache, ficheiros temporários, cookies, passwords, etc.
Para os instalar:
sudo apt-get install localepurge deborphan bleachbit
Para executar o localepurge basta fazer:
sudo localepurge
Sempre que for instalado um novo pacote o localpurge é automaticamente chamado, por isso é uma situação de 'instala e esquece'.
O deborphan pode ser executado com:
sudo deborphan
Mas apenas apresenta uma lista dos pacotes que podem ser removidos. Para os remover efetivamete podemos fazer:
sudo deborphan | xargs sud apt-get remove --purge
O bleachbit pode ser executado em interface gráfica com bleachbit ou em CLI com bleachbit_cli. Para ver uma lista das opções de limpeza que aceita fazer:
bleachbit_cli -l

Atualização e limpeza automática
Para manter o Ubuntu limpo e atualizado uso um simples script, que chamo maintenance.sh
#!/bin/bash
sudo apt-get update
sudo apt-get dist-upgrade -y
sudo apt-get autoremove --purge -y
sudo apt-get clean
sudo deborphan|xargs sudo apt-get autoremove --purge -y
bleachbit_cli -l|grep -e .cache -e .vacuum -e .log -e .tmp|xargs bleachbit_cli -d
Este script atualiza os pacotes, limpa a cache de pacotes do APT, elimina os pacotes orfãos, limpa as cache, logs e ficheiros temporários e otimiza as bases de dados do Chrome e Firefox. Pode ser corrido manualmente ou colocado no cron.
Não esquecer de fazer um:
chmod +x maintenance.sh
para tornar o script executável.


Limpeza com o Synaptic
Usando o Synaptic é possível identificar pacotes que podem ser removidos do sistema. Executar o Synaptic (Sistema » Administração » Gestor de pacotes Synaptic, ou sudo synaptic). Escolher o filtro "Status" (Estado) e selecionar a opção "Not installed (residual config)" (Não instalado (configuração residual)). Os pacotes que aparecem à direita podem, em princípio, ser removidos.

Referências
http://www.ubuntugeek.com/cleaning-up-all-unnecessary-junk-files-in-ubuntu.html

quinta-feira, 16 de fevereiro de 2012

Árvore genealógica do linux

Uma árvore genealógica do linux

domingo, 5 de fevereiro de 2012

GMail como Smarthost do postfix

Usar uma conta de GMail para enviar e-mail a partir de uma máquina com o postfix

Muitas aplicações web dependem do serviço de e-mail para comunicar com os utilizadores (e administrador). Tipicamente um servidor web contém as aplicações necessárias para que acumule a funcionalidade de servidor de e-mail, mas a proliferação de SPAM fez com que se criassem listas de servidores de mail confiáveis e os principais servidores de e-mail (GMail, HotMail, Sapo, etc) não aceitam mensagens de qualquer servidor.
Para ultrapassar esta limitação podemos tentar que o nosso servidor de e-mail seja aceita na restrita lista de servidores confiáveis, mas há alternativas mais simples.
As próprias aplicações (como por exemplo o Moodle ou o Joomla) possuem configurações internas próprias que lhes permitem usar um servidor de e-mail externo, deixando de depender do servidor interno da máquina onde estão alojados.
Mas podemos também configurar a nossa máquina webserver para funcionar como um 'satélite' de um servidor de e-mail externo.

Vamos então configurar o postfix para funcionar como sistema satélite do GMail, usando uma conta de GMail para enviar todo o e-mail do sistema.
Convém utilizar uma conta de GMail apenas para este fim. É necessário frisar que as contas de GMail gratuitas têm um limite de 500 mensagens por dia. As contas pagas ou associadas ao serviço Google Apps for Education não têm esta limitação.

Se o postfix não estiver instalado fazer (em Debian, como root):

apt-get install postfix

Se o postfix já estiver instalado, fazer a reconfiguração com:

dpkg-reconfigure postfix

O postfix faz uma série de questões:
  1. Type of mail configuration: satellite system
  2. System mail name: Nome do domínio
  3. SMTP relay host: smtp.gmail.com
  4. Root and postmaster mail recipient: deixar em branco
  5. Other destinations: deixar em branco
  6. Synchronous updates: é indiferente, não influencia a entrega
  7. Local networks: deixar o pré-definido
  8. Mailbox size: é indiferente, não influencia a entrega
  9. Local address extension: + (é o valor pré-definido)
  10. IP to listen: normalmente basta IPv4
De seguida precisamos editar o ficheiro de configuração do postfix:

sudo nano /etc/postfix/main.cf

E acrescentar as seguintes linhas:

mydomain = exemplo.org
myhostname = server1.exemplo.org
myorigin = $myhostname
# inserir aqui os domínios para os quais vai ser
# esta máquina a gerir o mail

mydestination = localhost, nome_de_dominio

relayhost=smtp.gmail.com:587
smtp_use_tls=yes
smtp_sasl_auth_enable = yes
smtpd_sasl_path = smtpd
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_security_options = noanonymous
smtp_sasl_tls_security_options = noanonymous
smtp_sasl_auth_enable = yes

smtp_tls_CAfile = /etc/ssl/certs/ca-certificates.crt
smtp_sasl_security_options = noanonymous
smtp_sasl_tls_security_options = noanonymous

Agora é preciso criar o ficheiro que vai conter os dados de acesso à conta do GMail:

sudo nano /etc/postfix/sasl_passwd

E acrescentamos apenas uma linha:

smtp.gmail.com:587 USERNAME@gmail.com:PASSWORD

É claro que USERNAME e PASSWORD devem ser substituídos pelos valores reais do username e password da conta de GMail.

Este comando compila o ficheiro de texto com a password numa base de dados mais eficiente:

postmap /etc/postfix/sasl_passwd

Para assegurar que apenas o utilizador postfix tem acesso ao ficheiro com a password fazemos:

chmod 600 /etc/postfix/sasl_passwd*
chown postfix.postfix /etc/postfix/sasl_passwd*

E reiniciamos o daemon:

/etc/init.d/postfix restart

A maneira mais fácil de testar a configuração é enviar um e-mail de teste com o sendmail:

sendmail teste@exemplo.org
Mensagem de teste
.

Se tudo correr bem o e-mail é enviado imediatamente.
Se não for enviado o e-mail a análise dos ficheiros /var/log/mail.* pode dar algumas informações importantes

Os aliases definem-se em /etc/aliases
Não esquecer de correr newalias depois de mudar o ficheiro.

Referências
http://braiden.org/?p=15
https://www.zulius.com/how-to/set-up-postfix-with-a-remote-smtp-relay-host/
http://www.delouw.ch/linux/Postfix-Cyrus-Web-cyradm-HOWTO/html/test.html