quinta-feira, 28 de junho de 2007

Somando datas no PHP

Você já precisou somar datas no PHP? Teve uma boa idéia de usar a função explode() e somar os números individualmente? Mas... Aconteceram incovenientes como o dia 31 de fevereiro? Seus problemas acabaram!



Graças à função mktime() do PHP podemos somar datas de uma forma precisa e gerando apenas datas válidas!
A função funciona de uma forma bem simples, ela recebe como parâmetro uma hora e data, mas os parâmetros são separados, sendo assim você pode, por exemplo, colocar um parâmetro como esse:
$mes + 1
A função mktime pega essa soma e retorna a data válida!
Fabuloso não? Bem, para mais detalhes sobre essa função você pode consultar o manual do PHP.
Agora, se o que você quer é uma forma mais rápida de somar as datas sem preocupação do que é mktime(), então use as minhas funções sub_data() e som_data(). Ambas funcionam de forma muito parecida, elas recebem como parâmetro uma data no formato brasileiro "dd/mm/AAAA" e o número de dias que será somado à data. Se você, por exemplo, fizer isso:

$data_final = som_data("20/06/2007", 3);

O valor de $data_final será 23/06/2007.
Bem, você pode baixar as funções aqui. Mesmo usando as funções que eu escrevi eu sugiro que você estude o código e entenda o que ele faz, você verá que não é algo tão complexo assim =)

InFog

segunda-feira, 25 de junho de 2007

Retirando os Ícones do Sistema no Gnome

Quem usa o desktop Gnome já viu que ele mantém na área de trabalho os ícones do sistema (home, computador, lixeira e dispositivos de armazenamento em geral), mas nem todo mundo gosta desses ícones alí, pricipalmente por eles serem facilmente acessados através do menu "Locais".



Eu pessoalmente não gosto de ícones na área de trabalho pelo simples fato de que quando você precisa deles você tem que minimizar tudo, então é bem mais prático manter uma barra de ícones. Bem, vamos ao que interessa: Retirar os ícones do desktop do Gnome.
Para fazer isso você precisa usar o programa gconf-editor, para isso abra um terminal e digite:

$ gconf-editor

Nessa janela que abriu escolha, à esquerda, o menu "apps->nautilus->desktop", à direita será mostrada uma lista com os ícones exibidos no desktop, basta retirar a seleção dos icones que você não quer. A opção volumes_visible serve para mostrar as midias inseridas/conectadas à máquina, tipo um cd-rom ou um pen drive. Como as alterações são feitas assim que você desmarca as opções não há botão de salvar, basta fechar a janela.

Pronto, bem melhor sem aqueles ícones (in)úteis heim?

InFog

domingo, 24 de junho de 2007

Validador de CPF e CNPJ em PHP

Validar CPF e CNPJ é um recurso obrigatório em qualquer aplicação que exija esse tipo de dado. Porém é um tanto quanto chato escrever código para fazer isso. Por este motivo estou disponibilizando duas funções que escrevi em PHP para isso.



A primeira função é a checa_cpf() e a segunda a checa_cnpj(), ambas recebem o número do documento sem formatação e retornam valores distintos para documento válido ou inválido, ficando à seu cargo o tratamento dessas mensagens.
Bem, as funções são bem explicativas e dá para aprender um pouco mais sobre php se você estudá-las.
Baixe as funções aqui:
CPF e CNPJ
e bom trabalho/estudo/diversão =)

InFog

sábado, 9 de junho de 2007

BrOffice.org com tema do GNOME

Há um bom tem eu venho usando o BrOffice em máquinas Windows, no Linux eu geralmente deixava com o OpenOffice mesmo já que já vem em algumas distros, ou faz parte de seus repositórios. Mas começaram a aparecer problemas de formatação em textos, se você abre com o Br é de um jeito, com o Open é de outro. Então resolvi migrar as máquinas Linux para o BrOffice também.





Então eu instalei o BrOffice.org em uma máquina Debian e duas máquinas Ubuntu, mas ele estava com cara de win98(r) um tema bem "feio". Então eu fiz umas pesquisas e vi que para ele se adaptar ao tema da área de trabalho era necessário usar a biblioteca Glitz. Para fazer isso você deve pesquisar o pacote dessa lib.
No Debian/Ubuntu faça o seguinte:


# apt-cache search glitz


Ele provavelmente retornará o seguinte:


libglitz1 - Glitz OpenGL image compositing library
libglitz1-dev - OpenGL image compositing library development libraries and headers


Então você instala apenas a primeira


# apt-get install libglitz1


Prontinho, agora é só curtir seu BrOffice com o tema da sua área de trabalho.


InFog

terça-feira, 29 de maio de 2007

Configurando um despertador com o Cron e MP3

Acabou a pilha do seu despertador? Seu celular quebrou? O rádio-relógio queimou? Seus problemas acabaram! Aprenda agora uma maneira rápida e prática de fazer seu PC te acordar de manhã com o maravilhoso "Despartador Cron+MP3".


Ops acho que isso é um relógio de parede e não um despertador

Bem, propagandas estilo tele vendas à parte, vamos ao que interessa.
O Cron é uma ferramenta para agendar comandos, você pode agendar qualquer tipo de comando à qualquer hora do dia e ainda definir os dias do mês/semana que o comando será executado.
Para fazer seu despertador você vai precisar de:

- Cron; (Provavelmente você já tem)
- mpg321; (Player de Mp3 via linha de comando)
- Algumas MP3 de sua preferência;
- Um pouco de café (pode ser chá) e uma bolachinhas;

Pronto, com todo o material em mãos você já pode começar.
Primeiro vamos à uma pequena aula de Cron, existe um diretório chamado /etc/cron.d/ nele estão os arquivos com informações de comandos agendados, e é nesse diretório que você deve criar um arquivo chamado despertador, na verdade pode ser qualquer nome, mas assim fica mais fácil de identificar o arquivo depois. Há distribuições que os comandos agendados estão no arquivo /etc/crontab. Esses arquivos do cron tem +ou- essa cara:

[minutos] [horas] [dias do mês] [mês] [dias da semana] [usuário] [comando]

De minutos a dias da semana você deve preencher com números de acordo com cada campo, por exemplo, em minutos você preenche com números de 0 à 59, horas de 0 à 23, etc. Um caso especial são os dias da semana que podem ser preenchidos de 0 à 7 e, se você contar, verá qua são 8 números, isso porque o 0 e o 7 valem pelo domingo.
O usuário é o login do usuário que irá executar o comando, e o comando é o comando ué!
O mpg321 é um player de mp3 via linha de comandos e sua sintaxe básica é assim:

$ mpg321 musica.mp3

Agora você pode tomar o café e comer as bolachinhas, cuidado com os farelos!

Acabou? Ok, vamos lá. Lembra do arquivo chamado despertador que você criou? vamos editá-lo deixando-o assim:

10 6 * * 1-5 infog mpg321 /home/infog/musicas/desperta.mp3

Agora vou explicar o que vai acontecer: Às 6:10h da manhã o cron executará, com o usuário infog, o mpg321, e este recebe como parâmetro o arquivo desperta.mp3, é muito importante passar o caminho completo para o arquivo mp3. As duas * indicam que o comando será executado em todos os dias de todos os meses, já o 1-5 indica que o comando será executado de segunda-feira à sexta-feira, afinal de contas no sábado e domingo devemos dormir até tarde =)

Pronto, você acabou de configurar seu PC para te acordar, só não se esqueça de deixá-lo ligado, aproveite para fazer uns downloads durante a noite =D. Ahh se você tem um monitor (lcd) com caixinhas de som embutidas você não poderá desligar o monitor já que as caixinhas desligam junto com ele.

InFog

domingo, 27 de maio de 2007

Fork Bombs, "Magia das Trevas"

Hoje vamos falar de um assunto bem interessante, os Forks. Mais uma vez devo a idéia ao sr. Emphasis in Metal, e dessa vez também ao sr. [S|G]. Fork pode ter dois significados, um deles seria um novo projeto com base em um existente, podemos dizer que o IceWeasel é uma espécie de Fork do Mozilla Firefox, mas sem funcionalidades extras, apenas a troca de nome e a retirada de logotipos comerciais. O outro significado para Fork seriam as Fork Bombs, Bombas Fork, que, para quem programa, ou já tentou programar um dia, são as funções recursivas sem um controlador que as faça parar, são funções que ficam chamando elas mesmas até entupir a memória e acabar com o poder de processamento do computador. Acho que se o Lord Voldemort fosse um hacker ele as adoraria =)

Bem existem muitos artigos e tutoriais pela net falando disso então não vou dar explicações muito longas e repetitivas, mas vale colocar uns exemplos aqui, se você usa o bash no Linux você poderia usar a seguinte linha:

$ funcao(){ funcao|funcao& };funcao

Simples e fatal. Notaram o '$' no começo da linha? Isso mesmo não precisa ser root para fazer essas coisinhas do mal. Agora para aqueles que usam Perl ou C:

Perl:
perl -e "fork while fork" &

C:
#include

int main()
{
while(1)
fork();
}

Olhem o código C, ele usa um while(1), ou seja enquanto 1 for 1, chame a fork(), mas não há controladores para esse 1, ele será 1 eternamente, ou até a máquina resetar =)
E para quem acha que o Windows(r) está fora dessa se enganou, faça isso em uma batch dele:

:s
start %0
goto s

Salve como .bat e execute.

No Windows(r) eu não sei corrigir o problema, mas no Linux há uma solução, você precisa limitar o número de processos que uma funcão pode chamar, mas se você colocar um limite muito baixo alguns programas podem não funcionar e um limite muito grande pode fazer com que essas funções causem lentidão ao sistema. Um bom limite seria 100, é bem comum vocês encontrarem esse número nos artigos sobre Fork Bombs por aí.
Para colocar esse limite no Linux faça o seguinte:

Edite o arquivo

/etc/pam.d/login

Adicionando ou habilidando a linha:

session "tab" required "tab" pam_limits.so

Preciso dizer que o "tab" significa usar o botão TAB? E edite também o arquivo

/etc/security/limits.conf

Adicionando a linha:

hard "tab" nproc "tab" 100

Pronto você acabou de colocar um limite de 100 processos para os usuários, se você colocar, por exemplo, 3 processos, logar no bash, e chamar três vezes um programa qualquer, na quarta vez ele não irá funcionar. Entenderam então o porque de colocar um limite razoável de processos? Se não for assim o bash fica inutilizável =)
Grande parte desse post foi baseado em informações da Wikipedia
Bem crianças, é isso, até a próxima aqui no Tux Masters.

terça-feira, 22 de maio de 2007

Correção do Pacote Pidgin2.0.0 para Debian Etch

O pacote Pidgin2.0.0 para Debian Etch que eu disponibilizei há uma semana não estava resolvendo algumas dependências e graças à isso ele não exibia os protocolos das redes para conectar ou criar contas.



Bem eu fiz a correção da lista de dependências e agora está tudo certo. Apenas uma dica para a hora da instalação, como você instala com:

# dpkg -i pacote.deb

Ele não consegue baixar as dependências, então ele dará um erro, nessa hora basta você usar o comando:

# apt-get -f install

Ele irá baixar as dependências e o pidgin funcionará, só acho que ele não cria atalhos, mas aí é com você heheh =)

Baixe o novo pacote aqui


InFog