Conectando o PHP ao Oracle

Nota: fiz esse tutorial há 3 anos, não garanto que ele continue funcionando!

Depois de muito apanhar, aprendi uma maneira fácil de pôr o PHP pra se comunicar com o Oracle. A maioria das soluções que achei envolvia recompilar o PHP, mudar variáveis de ambiente, scripts de inicialização etc. Uma delas até deu certo, mas mudar as variáveis de ambiente fez o suporte a LDAP do PHP parar de funcionar, por razões que desconheço.

A solução que explico abaixo faz a mesma coisa, mas sem recompilar pacotes ou fazer gambiarras. Deu certo milagrosamente, após juntar a solução proposta por vários sites. O máximo que será feito é compilar a extensão oci8 para o PHP do Debian ou Ubuntu, que é feito automaticamente e em poucos segundos. A parte chata é baixar os arquivos do site do Oracle, que exige criação de conta.

Todos os comandos abaixo são executados como root. Boa sorte! :)

  1. No site de downloads do Oracle para Linux, baixe os arquivos instantclient-basic-linux32-10.2.0.3-20061115.zipinstantclient-sdk-linux32-10.2.0.3-20061115.zip. Você vai precisar criar uma conta no site da Oracle para isso. Após o download, extraia-os para o diretório /usr/local/oracle.
  2. Em /usr/local/oracle, crie o seguinte link: # ln -s libclntsh.so.10.1 libclntsh.so
  3. Instale os pacotes php5-devphp5-pear pelo apt-get ou aptitude (aptitude install php5-dev php5-pear). Caso não exista o php5-pear, procure por php-pear.
  4. Agora execute (lembre-se: sempre como root): # pecl install oci8
  5. Surgirá um prompt perguntando onde estão as bibliotecas do Oracle. Sua resposta será instantclient,/usr/local/oracle , como no exemplo:Please provide the path to ORACLE_HOME dir. Use ”instantclient,/path/to/instant/client/lib” if you”re compiling against Oracle Instant Client [autodetect] : instantclient,/usr/local/oracle
  6. No diretório /etc/php5/conf.d , crie um arquivo oci8.ini, com o seguinte conteúdo:extension=oci8.so
  7. O PHP deverá estar com suporte a Oracle (extensão oci8). Reinicie o seu servidor web (caso seja o Apache, apache2ctl restart).

Fontes: Installing PHP and the Oracle 10g Instant Client for Linux and WindowsHow to: Installing Oracle XE on Ubuntu with PHP

Instalando o bom e velho StarCraft no (argh) Windows Vista ou 7

Hoje vou falar de algo que nunca achei que citaria aqui: Windows. Fazer o quê, o Windows é um bom video game. E, enquanto o novo StarCraft II não sai, a gente fala do bom e velho StarCraft e sua expansão Brood War, que continuam divertidos.


Ontem, no trabalho, um colega meu me mostrou na internet um site vendendo o antigo StarCraft + expansão Brood War, juntos(!) por US$ 5,99 (cerca de R$ 10,50 na cotação do dólar de hoje). Esquema simples: você paga, baixa o jogo e consegue uma CD-key válida para jogar online.

No caso do StarCraft, você compra no link citado acima, cria uma conta na Battle.net, informa o código que você recebe por e-mail da loja onde você comprou o jogo, recebe uma CD-key válida e baixa o jogo.

Depois de algumas horas apanhando, aqui vão algumas considerações para você que deseja instalar o StarCraft, essa pérola de 1998, atual e divertido até hoje:

  • Quando for conectar na Battle.net pela primeira vez, ele vai reclamar que você está usando uma versão antiga e tentar instalar um patch. Desista. Baixe o patch e instale-o manualmente, como administrador:

Cortando strings muito longas no Android

Eu estava fazendo uma aplicação para Android quando me deparei com um problema: cortar strings muito longas. Um bom exemplo é a string da figura aí de baixo.

Essa é a string na qual vamos nos basear. Ela é gerada pelo código

<TextView
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="@string/hello"
    android:textSize="20px"/>

Há duas maneiras de corrigir o problema. Uma delas é o seguinte código:

<TextView
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="@string/hello"
    android:textSize="20px"
    android:singleLine="true"/>

Porém, a diretiva android:singleLine é descrita na IDE como em desuso (deprecated). Um código que surte o mesmo efeito é

<TextView
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="@string/hello"
    android:textSize="22px"
    android:ellipsize="end"
    android:scrollHorizontally="true"
    android:lines="1"/>

O resultado é este:

Dicas de ffmpeg

Precisei recentemente pegar um vídeo de música, tirar o áudio dele e colocar em outro vídeo. Para o serviço, usei o ffmpeg, o canivete suíço de edição de vídeo em linha de comando.

Os três passos foram:

1. Retirar o áudio do primeiro vídeo

ffmpeg -i danca_do_gorila.flv -ab 128 -ar 44100 gorila.mp3

2. Acrescentar o áudio retirado do primeiro vídeo no outro vídeo

ffmpeg -i video1.mp4 -i gorila.mp3 video_gorila.mp4

3. Selecionar um trecho de um vídeo com 2 minutos, a partir do instante 00:00:02

ffmpeg -i video_gorila.mp4 -ss 00:00:02 -t 00:02:00 video_final.mp4

GNOME 2.30

O GNOME 2.30 foi lançado nesse 1º de abril, e os pacotes rapidamente foram disponibilizados pro Arch Linux. :) Assim que atualizei o sistema, aproveitei pra conferir algumas das novidades. A maioria delas, na minha opinião, foram discretas.

Talvez a maior exceção seja o Nautilus, de interface renovada. Agora é possível dividir a visualização em duas, o que facilita muito a troca de arquivos entre dois locais diferentes. O Konqueror faz isso há alguns anos, e era uma funcionalidade que fazia falta no Nautilus.

Dois bugs que me enchiam o saco há algum tempo também parecem ter sido resolvidos. Ao usar dois monitores, alguns applets trocavam de lugar ao iniciar o GNOME e o papel de parede da área de trabalho era esticado entre os dois monitores. Agora o papel de parede é simplesmente replicado para os dois monitores.

Mais detalhes das mudanças na nova versão estão presentes no site do GNOME. Como todo mundo gosta de screenshots, aqui vai um da minha área de trabalho: