Blog::Notas


Netbeans não completando código PHP

Ontem estava configurando o Selenium 2 pra funcionar com PHP no Netbeans, e notei que o editor não estava completando código das funções do runtime do PHP.

Super útil, afinal uma das coisas chatas do PHP é que não existe padrão na ordem dos parâmetros.

Aí, procurando na web, achei a solução:

Com o Netbeans fechado, vá até a pasta onde ficam os arquivos de cache das variáveis do Netbeans para o seu usuário, e apague todos os arquivos e diretórios que estiverem lá dentro.

No Linux esta pasta é: ~/.netbeans/6.9/var/cache

No XP é: C:\Documents and Settings\\6.9\var\cache

E no Vista: C:\Users\\6.9\var\cache

Pronto, basta abrir o Netbeans e ele irá reconstruir o cache das variáveis.






Player multimídia em Java

Recentemente precisei fazer, para uma agência de publicidade, um player de vídeo em Java, que além da necessidade óbvia de rodar no Linux, atendesse à vários requisitos deles, como: sempre iniciar em full screen, ler a playlist de um arquivo XML remoto (ou não), fornecer estatísticas de uso pra um banco de dados, exibir imagens, reproduzir cada item durante um tempo programado, exibir arquivos Flash, etc.

Como não achei tutorial algum na web explicando o que fazer (seja em português, seja em inglês), vou descrever brevemente o que fiz e funcionou tanto no Windows XP, Vista e Ubuntu 9.10.

Existe uma plataforma de multimídia pra Java, o Java Multimedia Framework, da Sun. Funciona bem, captura vídeo também, porém os codecs já estão bem desatualizados. Saí em busca de algo que pudesse reproduzir os formatos mais populares hoje em dia.

Primeiramente um resumo do que procurei e NÃO funcionou:

- FMJ: uma tentativa de reescrever o código do JMF. Funciona bem pra reproduzir vídeos, porém faltam várias features, e é muito difícil de se reaproveitar o código pra fazer algo.

- JFFMPEG: um wrapper Java para a FFMPEG (biblioteca de codecs feitos em C e usado para vários players tanto em Windows quanto Linux). A idéia deles é boa: se o codec existir nativamente, usa a versão nativa, senão usa a versão em Java. O problema: eles não fornecem as bibliotecas nativas para Windows. Eu notei que os envolvidos fundaram uma empresa e agora VENDEM uma solução. Por isso tiraram os arquivos que fariam a coisa funcionar. Até existem os passos pra se compilar tudo, mas além de estarem escondidos no site, são incompletos.

Depois de abandonar estas duas soluções, achei o FOBS4J, que é uma solução em Java baseada no JMF e um wrapper sobre a FFMPEG. Baixei e funcionou com todos os vídeos comumente usados.

Como eles usam o JMF como base, baixei o código dele também do site da Sun. Não é o código mais lindo do mundo, mas pode ser reusado numa boa.

Agora aqui mais algumas dicas salvadoras:

- a versão 0.4.2 do fobs4j (que só existe pra Windows) é altamente instável, não a use (ela sempre dá crash por volta de 5 minutos de reprodução de vídeo);

- como você vai ver nos exemplos do fobs4j, você vai precisar sempre informar qual o path das DLLs/SOs (use um script no Linux, e um .bat ou .exe no Windows);

- o código do JMStudio é meio porquinho, então você pode tentar fazer seu próprio player, ou se estiver acostumado a ler código, pode tentar usar o do JMStudio pra algo.

- o JMF do fobs4j não inclui várias bibliotecas nativas. Se você precisar fazer captura de vídeo, vai precisar delas. Ou seja, basta baixar a versão do site da Sun e copiar estas bibliotecas.

Espero que isso possa ajudar quem tiver que passar pelos mesmos problemas.






Upload de grandes arquivos no PHP

Bom, seguindo a idéia do meu grande amigo TaQ (de usar o blog para anotar resolução de problemas), vou postar aqui um problema frequente para quem usa PHP: o upload de grandes arquivos.

É possível alterar as configurações relacionadas à isto tanto no arquivo php.ini, quanto num arquivo .htaccess (caso você não tenha acesso ao php.ini e esteja usando o Apache).

No php.ini, altere as diretivas abaixo:

# Tamanho máximo do upload (em MB)
upload_max_filesize = 20M

# Tamanho máximo de arquivos enviados via post (em MB)
post_max_size = 20M

# Tempo máximo de execução de um script (em segundos)
max_execution_time = 1800

# Tempo máximo para processar um upload (em segundos)
max_input_time = 1800

# Quantidade máxima de memória que um script pode usar (em MB)
memory_limit = 50M

Caso você prefira (sou só possa) fazer as alterações usando o .htaccess ao invés do php.ini, use da seguinte forma:

php_value upload_max_filesize 20M
php_value post_max_size 20M
php_value max_execution_time 1800
php_value max_input_time 1800
php_value memory_limit 50M

E um lembrete: max_execution_time pode ser alterada no próprio script (sem precisar mexer no php.ini ou no .htaccess) através da função set_time_limit.






Corram para as colinas: Chinese Democracy vai sair
Categoria(s): Notas

Sinal dos tempos: por mero acaso ontem, vi uma notícia falando que o "novo" álbum dos Guns 'n Roses será lançado agora no fim do mês. Inclusive já teria até vazado na internet (e alguns manés já inclusive enfrentam processo), enquanto outros já teriam ouvido o álbum à convite da gravadora.

"Novo" entre aspas, porque o álbum está em produção à 15 anos, e custou nada menos que US$ 13 milhões, devido à vários cancelamentos, alterações, demissões de músicos, e outras excentricidades por parte do líder da banda, Axel Rose.

Quinze anos é muito tempo, tempo suficiente para apenas as pessoas acima de 25 anos lembrarem da banda, que fez muito sucesso com os álbuns Appetite For Destruction e Use Your Illusion (I e II).

Se você for mulher, provavelmente não vai lembrar ou ter gostado de Appetite For Destruction (exceto por Sweet Child O'Mine), já que Use Your Illusion I e II tem várias baladinhas mela-cueca, além de outras excelentes músicas.

Ainda sobre o álbum Appetite for Destruction: uma das músicas mais tocadas foi Paradise City, cuja letra continha o interessante trecho "Take me down to Paradise City, where the grass is green and girl are pretty" (Me leve de volta à Paradise City, onde a grama é verde e as garotas são bonitas). Geralmente a palavra grama, nas letras musicais, se refere à uma folhinha de cinco pontas, muito apreciada por tonar as pessoas mais felizes, motivo principal pelo qual eu acredito que a Colômbia possui a população mais feliz do planeta.

Voltando ao assunto: tanto a trilha sonora quanto o clipe musical do filme Exterminador do Futuro II ficou muito famosa por causa da faixa You Cold Be Mine (do álbum Use Your Illusion II), filme que marcou época pelos efeitos especiais, pelo custo alto da época (característica de James Cameron), e por uma história bem resolvida, que fizeram questão de estragar no Exterminador III (James Cameron não aceitou dirigir o terceiro).

Enfim, agora só falta sair Duke Nuke Forever (a próxima versão de Duke Nukem, em produção desde 97), a próxima versão do Debian e a Sega voltar à fazer videogames.






JSCalendar: too much recursion

Seguindo o que meu amigo TaQ sempre sugere, estou usando o blog para anotar um pequeno erro que tive hoje com o componente JSCalendar (um calendário feito em JavaScript para facilitar a vida do usuário ao selecionar datas nas páginas web).

Como sei que esse erro com certeza acontecerá de novo no futuro, e vi que muita gente procura pelo motivo em fóruns, já deixo aqui a solução.

O erro "too much recursion" (exibido pelo console de erros do Firefox) acontece quando se tenta incluir algum dos arquivos javascript usados pelo componente mais de uma vez. Basta remover uma das chamadas duplicadas, e pronto, fim do erro.





Anúncios