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

[sourcecode language=”xml”]<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/hello"
android:textSize="20px"/>[/sourcecode]

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

[sourcecode language=”xml”]<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/hello"
android:textSize="20px"
android:singleLine="true"/>[/sourcecode]

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

[sourcecode language=”xml”]<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"/>[/sourcecode]

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

[sourcecode language=”text” light=”true” wraplines=”false”]ffmpeg -i danca_do_gorila.flv -ab 128 -ar 44100 gorila.mp3[/sourcecode]

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

[sourcecode language=”text” light=”true” wraplines=”false”]ffmpeg -i video1.mp4 -i gorila.mp3 video_gorila.mp4[/sourcecode]

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

[sourcecode language=”text” light=”true” wraplines=”false”]ffmpeg -i video_gorila.mp4 -ss 00:00:02 -t 00:02:00 video_final.mp4[/sourcecode]