sexta-feira, 7 de janeiro de 2011

Dica Útil

Todo programador vez ou outra dá uma olhada no manual de referência de funções da linguagem sendo usada. No PHP esta necessidade é ainda maior já que é sempre muito difícil lembrar se o nome daquela função tem um underline ou qual a ordem correta dos parâmetros. Os desenvolvedores da linguagem PHP não devem gostar de padrões de codificação.

Aqui vai uma dica para tornar mais rápido o acesso a referência das funções. Eu uso um sistema Linux mas com algumas modificações ela pode ser adaptada para Windows também.

Crie o arquivo "php.net" no seguinte diretório (ou qualquer diretório disponível no seu PATH):
/usr/local/bin

Digite o seguinte no arquivo:
#!/bin/sh

google-chrome --new-window "http://www.php.net/$1"

Eu usei o chrome mas você pode usar outros browsers levando em consideração os parâmetros de cada browser.

Dê permissão de execução com o seguinte comando:
sudo chmod +x /usr/local/bin/php.net


Pronto!
Agora você pode digitar na linha de comando ou usando o atalho Alt+F2 no gnome:
php.net str_replace
e uma nova janela do chrome vai abrir na página com o manual da função str_replace.

É isso aí! Espero que isso possa ajudar a todos!

terça-feira, 4 de janeiro de 2011

Sistema de recomendação de palavras em PHP

Você tem ideia de como implementar aqueles algoritmos de recomendação de palavras? Como por exemplo no google onde se você digita "paola olivera" ele ter retorna a página de resultados com a famosa frase "Você quis dizer: paola oliveira". Eu não sei como implementar um e este cara aqui provavelmente também não sabe. Mas ele conseguiu o objetivo de uma forma muito criativa utilizando PHP.

terça-feira, 30 de novembro de 2010

Tamanho em disco de um banco de dados Postgre

Como saber quanto espaço em disco seu banco de dados Postgre está usando?
Simples, fácil e rápido:
SELECT pg_database_size('nome_banco');
Este comando exibe o tamanho em bytes.

Que tal exibir de uma forma mais amigável?
SELECT pg_size_pretty(pg_database_size('nome_banco'));

sexta-feira, 26 de novembro de 2010

Eu odeio proxies!

Onde trabalho atualmente a rede tem um proxy maldito que bloqueia certos sites. Vez ou outra entro em um endereço e percebo que as imagens não foram carregadas, os gênios que configuraram os endereços bloqueados colocaram sites como http://aws.amazon.com/s3/ que muitos outros sites usam para hospedar arquivos e imagens.

Tive uma ideia juntei algumas bibliotecas php como SimpleHtml e PHPMailer e criei uma espécie de "enganador de proxy". Você coloca uma url, seu e-mail e escolhe se quer fazer o download somente das imagens ou das páginas do site. O script php vai tentar obter os arquivos e enviar um e-mail para você. Simples assim. O código é uma droga, as vezes não funciona mas na maioria das vezes parece funcionar. Você pode obtê-lo aqui.

*Não se esqueça de configurar seu e-mail e password no arquivo downloader.php. Eu usei gmail!

quarta-feira, 22 de setembro de 2010

Mude suas idéias sobre o Javascript

É do time dos programadores que odeiam Javascript e amaldiçoam o dia em que a linguagem surgiu? Bom no vídeo abaixo Doug Crockford fala das partes boas da linguagem. Ele admite que muita coisa na linguagem é medonha e nos faz duvidar da qualidade da mesma como o operador "+" que serve para somar e concatenar e os erros silenciosos que podem surgir no código entre outras inconveniências. Mas ele comenta que muita coisa chata é devido ao modelo DOM adotado pelos browsers (maior fonte de incompatibilidades). Além do mais a vida de um programador Javascript hoje em dia é bem melhor do que alguns anos atrás, hoje temos bibliotecas como JQuery, ferramentas como FireBug e browsers um pouco mais compatíveis.

Vendo o cara falar da linguagem com uma certa paixão me fez olhar para ela com outros olhos. Ah! E de quebra a apresentação tem umas partes bem engraçadas.

quarta-feira, 15 de setembro de 2010

O Prazer de programar

Depois de ver o yahoo fazer um instant search 5 anos atrás (e não ter conseguido emplacar), o google fazer um recentemente e todos os outros que vieram depois (youtube, google maps, twitter, será que existe um instant search para o Osama Bin Laden?) resolvi fazer um ... hã, bem... menos cristão digamos.

É o RedTube Instant Search. Para quem não conhece o RedTube, se tiver mais de 18 anos é só procurar no google e se não tiver vai acabar procurando mesmo assim né? O processo de funcionamento é bem simples, ele pega o termo de busca digitado envia para o mecanismo de busca do site, lê o html gerado pelo site e retorna o primeiro vídeo do resultado. Para ler o html gerado usei a excelente biblioteca SimpleDOM que é escrita em PHP mesmo.

O código está bem cru, não checa por eventuais erros, quando por exemplo não se acha nenhum vídeo a partir do termo desejado. Devo dizer que foi um pouco difícil se concentrar no projeto, depois de testá-lo estava com a mão doendo, de tanto programar é claro. Link para donwload do código logo abaixo:

Update: Um gentil samaritano cedeu um pouco de espaço para experimentação do programa, não preciso dizer que a página é NSFW. Teste a vontade aqui.

Download.

domingo, 12 de setembro de 2010

Árvores para que te quero?!

Atualmente estou lendo o livro "Data Structures And Algorithms" (que pode ser obtido de graça e legalmente aqui).

Meu treinamento formal nestes assuntos foi muito insuficiente e como estas disciplinas são a base de todo o software eu achei que seria muito bom aprender sobre isso.

Estruturas de dados em forma de árvores não são muito frequentes no desenvolvimento de software web usando bancos de dados relacionais. A não ser naqueles casos onde por exemplo você tem categorias que possuem subcategorias e estas subcategorias podem possuir suas próprias subcategorias, ou no caso de menus e submenus de vários níveis. Uma das causas disso é a própria arquitetura dos bancos de dados relacionais, que não foi pensada para tratar estes casos. Como escrever uma consulta sql que retorne uma categoria e também todas suas subcategorias não importando a quantidade e nem o aninhamento das subcategorias?

É claro que as pessoas criaram soluções que permitem armazendar e recuperar informações estruturadas como árvores em bancos relacionais, já vi que existem soluções no Oracle e Postgre que permitem tranquilamente escrever a consulta sql citada acima.

No intuito de treinar e aprender mais sobre Árvores Binárias (com ajuda do livro "Data Structures And Algorithms") eu escrevi um pouco de código (PHP) que talvez possa ajudar outras pessoas também interessadas em aprender sobre este tipo de estrutura de dados. O código é bem simples e apenas permite a inserção e recupreação dos nós de uma árvore. Também imprime esta árvore na saída padrão.

Download Código.