Usando Dropbox no Linux

Tags: , , — December 18, 2010 @ 6:19 pm

Para quem ainda não conhece, o Dropbox é um aplicativo de compartilhamento de arquivos online, com suporte para Windows, Mac OSX, GNU/Linux e ainda plataformas móveis, como o iPhone OS, Android e Blackberry, além de permitir acesso via qualquer navegador, que permite compartilhar arquivos entre diversos clientes, entre usuários, e ainda publicar galerias de imagens online.

Na minha opinião, a maior vantagem do Dropbox é permitir acesso aos mesmos documentos em casa, no trabalho e no celular.

A maneira mais fácil de utilizar o Dropbox no GNU/Linux é utilizando o plugin oficial para o gerenciador de arquivos Nautilus. Acontece que este método só funciona com o gerenciador de arquivos citado, e ainda tem algumas dependências problemáticas (tive problemas para instalá-lo no Debian).

Como alternativa, existe uma maneira de instalar um cliente de linha de comando como um daemon (programa que roda como um sub-processo, de forma transparente para o usuário), permitindo acesso aos seus arquivos compartilhados com qualquer gerenciador desejado e inclusive por linha de comando. Apesar da desvantagem desta alternativa conter alguns binários de código fechado, ela se torna uma opção bem mais versátil que a anterior.

Para instalar o cliente  de linha comando, você irá precisar previamente dos seguintes requisitos:

  • Versão 2.4 ou superior da biblioteca C
  • wget
  • Python 2.5
  • um navegador web

Com as dependências instaladas, baixe o pacote Dropbox-lnx-x86 (ou a versão x86_64) para sua $HOME (os arquivos serão descompactados no diretório .dropbox-dist).

Versão estável 32-bit:

wget -O dropbox.tar.gz "http://www.dropbox.com/download/?plat=lnx.x86"

Versão estável 64-bit:

wget -O dropbox.tar.gz "http://www.dropbox.com/download/?plat=lnx.x86_64"

Após baixar o pacote faça previamente um teste para garantir que os arquivos não serão descompactados diretamente do diretório atual:

tar -tzf dropbox.tar.gz

…E estando tudo certo, descompacte-os:

tar -xvzf dropbox.tar.gz

Após descompactar, inicie o daemon:

~/.dropbox-dist/dropboxd

Após executar o Daemon você deverá receber uma saída como a seguir:

This client is not linked to any account...
Please visit https://www.dropbox.com/cli_link?host_id=7d44a557aa58f285f2da0x67334d02c1 to link this machine.

Acessando o link fornecido no terminal você deve receber uma mensagem de sucesso no seu navegador (pode ser necessário logar em sua conta do Dropbox), indicando que tudo ocorreu bem. Depois disso, o daemon criará um diretório Dropbox sob sua $HOME, e iniciará a sincronização de arquivos, então você terá acesso aos seus arquivos compartilhados com com qualquer outro computador contendo um cliente Dropbox.

Para não precisar iniciar o daemon manualmente a cada vez que precisar, você pode criar um init script para iniciá-lo junto com o sistema. Para o Debian e Ubuntu, crie um script em /etc/init.d/dropbox, com o conteúdo a seguir e substitua os nomes na variável DROPBOX_USERS com os nomes de usuários que tem o Dropbox instalado:

# dropbox service
DROPBOX_USERS="user1 user2"
 
DAEMON=.dropbox-dist/dropbox  
 
start() {
    echo "Starting dropbox..."
    for dbuser in $DROPBOX_USERS; do
        HOMEDIR=`getent passwd $dbuser | cut -d: -f6`
        if [ -x $HOMEDIR/$DAEMON ]; then
            HOME="$HOMEDIR" start-stop-daemon -b -o -c $dbuser -S -u $dbuser -x $HOMEDIR/$DAEMON
        fi
    done
}
 
stop() {
    echo "Stopping dropbox..."
    for dbuser in $DROPBOX_USERS; do
        HOMEDIR=`getent passwd $dbuser | cut -d: -f6`
        if [ -x $HOMEDIR/$DAEMON ]; then
            start-stop-daemon -o -c $dbuser -K -u $dbuser -x $HOMEDIR/$DAEMON
        fi
    done
}
 
status() {
    for dbuser in $DROPBOX_USERS; do
        dbpid=`pgrep -u $dbuser dropbox`
        if [ -z $dbpid ] ; then
            echo "dropboxd for USER $dbuser: not running."
        else
            echo "dropboxd for USER $dbuser: running (pid $dbpid)"
        fi
    done
}
 
case "$1" in
 
    start)
        start
        ;;
 
    stop)
        stop
        ;;
 
    restart|reload|force-reload)
        stop
        start
        ;;
 
    status)
        status
        ;;
 
    *)
        echo "Usage: /etc/init.d/dropbox {start|stop|reload|force-reload|restart|status}"
        exit 1
 
esac
 
exit 0

…E então execute os comandos a seguir para adicionar o dropbox como um serviço do sistema:

chmod +x /etc/init.d/dropbox
update-rc.d dropbox defaults

Além do script para Debian/Ubuntu, na wiki do Dropbox existem exemplos de versões para Fedora e Gentoo. Na wiki também existe um tutorial para instalar o daemon Dropbox para ser executado para todos usuários (útil para servidores).

Deste modo, sempre que iniciar o sistema e logar com seu usuário você terá acesso aos seus arquivos compartlhados no Dropbox (desde, claro, que possua uma conexão com a internet).

Fonte: http://wiki.dropbox.com/TipsAndTricks/TextBasedLinuxInstall

Por que utilizar utf-8?

Tags: , , — December 14, 2010 @ 8:21 pm

Um problema comum que vejo se repetindo constantemente em listas de discussão é devido a codificação de caracteres em páginas web.

Geralmente os desenvolvedores, inexperientes, solicitam ajuda por terem problemas que fazer caracteres acentuados aparecerem corrompidos, como “çã” e acabam adotando soluções pouco robustas, como editar o httpd.conf (no caso de um servidor web Apache) ou usar funções utf8_encode/utf8_decode (no caso de programação PHP).

Acontece que tais problemas ocorrem por causa de divergências na codificação de caracteres e é mais comum em ambientes Windows, que utilizam a codificação defasada ISO-8859-1 (ou latin-1, como também é chamada).

O modo de evitar este tipo de problema, é desenvolver toda a sua aplicação utilizando uma única codificação de caracteres, desde a base de dados até o HTML exibido para o usuário, e também em seu editor de texto ou IDE. Para garantir isto, por exemplo, em uma aplicação web, desenvolvida com PHP + MySQL, rodando em um servidor Apache2 e utilizando utf-8, atente para os seguintes detalhes:

  1. No arquivo de configuração do Apache (geralmente httpd.conf, mas podendo variar de um sistema para outro, no Debian GNU/Linux, o padrão é /etc/apache2/apache2.conf) comente a linha com a diretiva AddDefaultCharset. Como vamos definir a codificação a nível de aplicação, esta diretiva não irá interferir, mas mesmo assim o ideal é deixá-la comentada para evitar surpresas ao colocar a aplicação em produção.
  2. O PHP também tem uma diretiva para definir a codificação padrão, geralmente desabilitada por padrão, no arquivo php.ini (no Debian, em /etc/php5/apache2/php.ini) localize e comente a linha com a diretiva default_charset. Assim como no Apache, tal diretiva não deve interferir, mas ainda assim é ideal deixá-la comentada.
  3. Garanta que seu template HTML contenha a codificação correta definida no cabeçalho, utilizando uma tag meta (<meta http-equiv=”Content-Type” content=”text/html; charset=UTF-8″ />). Para documentos XHTML, também é ideal adicionar a codificação no cabeçalho XML (<?xml version=”1.0″ encoding=”UTF-8″ ?>), obviamente esta regra também se aplica para documentos XML.
  4. Seu script principal da aplicação, ou seja, aquele que recebe as requisições, geralmente index.php, deve enviar um cabeçalho http com a codificação para o navegador antes de qualquer conteúdo. Ex: header(“Content-type: text/html; charset=UTF-8″);.
  5. Suas tabelas do MySQL devem ser criadas com a codificação definida explicitamente. Ex: CREATE TABLE foo (…) CHARACTER SET utf8. No MySQL também é possível definir a codificação de caracteres a nível de coluna ou de base de dados, mas a primeira dificilmente será necessária, e eu acho mais usual definir a codificação a nível de tabelas.
  6. Seu editor de texto ou IDE deve estar configurado para salvar arquivos em utf-8. No Eclipse, por exemplo, basta configurar sua Workspace (Window -> Preferences -> General -> Workspace), ou seu projeto (Clique direito -> Properties -> Resource) para utilizar a codificação desejada.

Para ser sincero, em geral apenas os ítens 4 e 6 são suficientes para garantir que sua aplicação exiba textos na codificação correta, mas ainda assim vale a pena configurar cada parte dela.

Alguns desenvolvedores web mais antigos, ou pouco experientes podem acabar sugerindo que se utilize htmlentities para caracteres acentuados, como “&acute” para escrever um “á”. Contudo esta prática é pouco viável para páginas dinâmicas, devido ao tamanho das strings. Por exemplo, nosso simples “á”, utilizando htmlentities, não poderia ocupar um campo char(1), em sua base de dados, precisando de um char(6), além de ser bem mais conteúdo para o navegador carregar ao visitar a página.

Agora a pergunta: Por que utilizar utf-8 ao invés de iso-8859-1?

Bem, existem alguns bons motivos técnicos… Para começar, utf-8 é compatível com caracteres ASCII, então para este não é necessária nenhuma conversão. Também, os caracteres unicode (utf8, utf16 e utf32) foram desenvolvidos inicialmente para substituir ASCII e ISO, então é natural que sejam utilizados no lugar destes. Para finalizar, algumas bibliotecas do PHP, e também de outras linguagens, só funcionam com codificação utf-8, tais como json, simpleXML e Soap, assim, utilizando a aplicação toda em utf-8 você evita converter constantemente caracteres de/para a codificação desejada.

Fontes: http://www.cl.cam.ac.uk/~mgk25/unicode.html, http://wilker-dev.com/porque-usar-utf-8-codificandodecodificando