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

Zen-Coding – Um novo jeito de escrever HTML

Tags: , — May 27, 2010 @ 9:11 pm

Uma coisa que desenvolvedores web sabem, é que não há nada mais demorado e cansativo do que escrever HTML. Diferente de linguagens de programação, um código HTML (e também XML e seus derivados) é pouco intuitivo e muito repetitivo, e mesmo as melhores IDEs do mercado não ajudam muito.

Já que nenhum desenvolvedor web que se preze utiliza Dreamweaver ou outros editores WYSIWYG, devido aos códigos sujos e de difícil manutenção gerados, uma ótima solução é utilizar o Zen-Coding.

O Zen-Coding não se trata de uma nova IDE, mas sim de um plugin, ou melhor, uma coleção de scripts, disponível para uma grande quantidade de IDEs, incluindo Eclipse e NetBeans, que permite a digitação rápida de HTML, XML e XSL, por meio de abreviações, muito semelhantes a seletores CSS, o que torna a curva de aprendizagem realmente pequena.

Com o Zen-Coding você digita algo como:

div#page>div.logo+ul#navigation>li*5>a

E obtém:

<div id="page">
    <ul id="navigation">
        <li><a></a></li>
        <li><a></a></li>
        <li><a></a></li>
        <li><a></a></li>
        <li><a></a></li>
    </ul>
</div>

Para conhecer a sua sintaxe, visite a lista de seletores HTML do Zen-Coding.

Agora vamos a um breve tutorial para instalar e utilizar o Zen-Coding no Eclipse (o que inclui ZendStudio for Eclipse e Aptana Studio).

  1. Primeiramente, será necessário instalar o plugin Eclipse Monkey, que pode ser instalado pelo Update Manager, a partir do update site http://download.eclipse.org/technology/dash/update.
  2. Crie um projeto em sua worspace com o nome zencoding.
  3. Crie um diretório scripts em seu projeto recém criado.
  4. Baixe o pacote Zen Coding for Aptana da página de downloads do projeto e descompacte seu conteúdo no diretório scrips.

  5. Reinicie o Eclipse.

Agora você deve ter um menu scripts, com o sub-menu zencoding nele. Para transformar as abreviações em códigos HTML, basta utilizar a opção Expand Abbreviation após digitá-las.

Para cada opção no menu zencoding será exibido o respectivo atalho ao lado desta. Caso algum dos atalhos não esteja visível, provavelmente é porque o Eclipse já tem aquele atalho definido para outro comando. Para resolver isso há duas opções: Alterar o atalho do Eclipse (Window -> Preferences -> General -> Keys) ou alterar o atalho do Zen-Coding.

Para a segunda opção, localize o script da função que deseja alterar o atalho na pasta scripts que você criou e edite o atalho no comentário do script, na linha escrito * Key:.

Ex:

/*
 * Menu: Zen Coding &gt; Expand Abbreviation
 * Kudos: Sergey Chikuyonok (http://chikuyonok.ru)
 * License: EPL 1.0
 * Key: M3+E
 * DOM: http://download.eclipse.org/technology/dash/update/org.eclipse.eclipsemonkey.lang.javascript
 *
 * @include "/EclipseMonkey/scripts/monkey-doc.js"
 * @include "lib/core.js"
 * @include "settings.js"
 */

Após salvar, o novo atalho já estará disponível.

Fonte: http://code.google.com/p/zen-coding/wiki/AptanaHowToEn

Youtube sem Flash

Tags: , , — May 17, 2010 @ 1:35 pm

Já pensou em poder assistir aos vídeos do Youtube sem precisar instalar um Flash Player? Pois é, até pouco tempo atrás isto era impossível, mas graças a tag HTML5 <video>, agora já podemos assistir a vídeos no Youtube sem Flash.

Como o HTML5 ainda é um Draft, e o uso da tag <video> ainda não é tão comum, a opção de assistir a vídeos sem Flash ainda está em fase beta, precisa ser habilitada, e por enquanto só funciona nos navegadores Apple Safari e Google Chrome.

Para habilitá-la, basta acessar http://youtube.com/html5 e clicar no link “Entrar no HTML Beta” abaixo da página.

Após habilitar o modo HTML5 Beta, os vídeos visualizados passam a utilizar a tag <video> do navegador para serem exibidos, como na imagem abaixo:

É possível notarmos pequenas diferenças na interface, como a inscrição html5 durante o loading, e alguns controles diferenciados. Estas diferenças devem variar dependo do navegador utilizado.

Como ainda é Beta, o modo tem algumas restrições. Não é possível assistir vídeos em tela inteira, e aqueles que contém anúncios ainda são exibidos no Flash Player. Além disso, como comentei anteriormente, apenas o Safari e Chrome podem visualizar os vídeos sem Flash.

Esta limitação de compatibilidade deve-se ao fato do uso da tag <video> não definir o codec que deve ser utilizado, o que deve ficar a cargo dos navegadores. Enquanto o Firefox e Opera suporte o formato Ogg Theora, o Safari e Google Chrome (ambos com a engine webkit) suportam H264, e como o youtube já disponibiliza seus vídeos também em h264 (principalmente para visualização em smartphones), estes últimos são, atualmente, os únicos navegadores suportados.

Embora a opção de assistir vídeos no youtube com a tag <video> ainda seja prematura, não deixa de ser uma boa opção para conhecer o poder do HTML5, e até mesmo pode servir como alternativa para quando instalar um Flash Player não é possível. Em último caso, vale testar pela curiosidade.

Next Page >>>