Jedi Tux

3_php

Posted in 5584 by Fernando Basso on 9 de setembro de 2009

A Função strlen()

A função strlen() (string length) retorna o número de caracteres que uma string possui. Espaços em branco também contam.

echo(strlen("Cinco")); // 'Cinco' possui 5 caracteres.
echo(strlen("Cin co")); // 'Cin co' possui 6 caracteres.
echo(strlen("Já") // O acento conta por si só. 'Já' são 3 caracteres.
echo(strlen('Maçã')) //'Maçã tem 6. 'ã' vale por dois e 'ç' vale por dois também.

A Função strpos()

A função strpos (string position) retorna a posição em que uma determinada substring começã. Para simplificar a definição de substring, imagine que cada palavra em um frase é uma substring.
Vamos ver onde começa a substring ‘bom’ na string a seguir.

echo(strpos("Olá meu bom amigo.<br />", "bom")); /* IMPORTANTE: Aqui, echo 
* vai mostar o retorno de strlen() apenas, e o <br /> não vai produzir 
* uma nova linha. */

Lembre-se de dos “caracteres duplos” como ‘á’ e ‘ç’ que contam por dois. A função strpos() conta apartir do index zero. (zero-indexed, em Inglês).

Um exemplo assinando uma string à uma var, e aplicando a função strpos() na var.
$a = “Olhando para a imensidade desta matéria, a Matemática, mesmo a Matemática moderna, é uma ciência na sua infância.”;

print(strpos($a, "matéria")); // Posição 32.

2_php

Posted in PHP by Fernando Basso on 9 de setembro de 2009
/* De saída vamos declarar duas variáveis e assinar algum valor a elas. 
 * Por assinar um valor a uma variável, podemos entender como "guardar"
 * algum conteúdo dentro da variável. */
$meu_nome = "Jedi Tux"; // Assinamos "Jedi Tux" à variável '$meu_nome'.
$minha_idade = 30; // Assinamos '30' à variável '$mimha_idade'.

print($meu_nome); // Mostra o valor/conteúdo da variável '$meu_nome'.
print($minha_idade); // Mostra o conteúdo/valor da variável '$minha idade'.

Para definir uma variável colocamos $ na frente do nome que desejamos. Use letras e underscore para criar seus nomes de variáveis.

Concatenar Strings

Para concatenar (emendar) strings usamos o Operador de Concatenação. O operador de concatenação é o simples ponto. Este –> . Viu? Não? Olhe bem –> . É pequeninho mesmo!

$texto_a = "Bom dia!";
$texto_b = "Como está?";
echo($texto_a . " " . $texto_b); 

Neste exemplo, estamos mostrando 2 vars (var = apelido carinhoso para ‘variável’) com uma string no meio.
“Que string no meio?” posso ouvir você perguntando. Ora! ” ” cria uma string de um espaço em braco. Parece pouco, mas tente fazer aquela linha 03 assim: echo($texto_a . $texto_b); pra ver como aquela stringzinha é importante.

echo($texto_a . "<br />" . $texto_b); // Inserimos uma quebra de linha.

Nestes exemplos usamos variáveis, mas como estas variáveis contém strings, o que realmente estamos manipulando: variáveis ou strings?

1_php

Posted in PHP by Fernando Basso on 9 de setembro de 2009
<?php
print("Hello World!<br />");
echo("May the force be with you.<br />");
echo('Que a força esteja com você.<br />');
?>

Em php, podemos usar a função print() ou echo() para mostrar algo na saída padrão. Strings devem obrigatoriamente estar entre aspas simples ou duplas.

print("Uma string com print.");
echo("Uma string com echo.");
; // ponto e vírgula 

é usado para determinar o fim de uma sentença. O fim de uma linha de código.

<br />

é uma tag XHTML que usamos para “quebrar a linha”, ou seja, pular para a próxima linha.

// Comentário de uma linha

para comentários de uma linha.

/* Comentário de
várias linhas. Não 
importa quantas.*/

para comentários de mais de uma linha.

<?php&#91;/sourcecode&#93; para iniciar um código em php.

&#91;sourcecode language='php'&#93;?>

para finalizar o código em php.

PPH_Info

Posted in Servers by Fernando Basso on 8 de setembro de 2009

Para ver todas as informações de como o PHP está configurado em um determinado server, crie um arquivo .php com o seginte conteúdo:

<?php
    phpinfo()
?>

Então abra este arquivo no navegador. É muita informação!

Apache2 + PHP5 + VirtualHosts no Debian e Ubuntu

Posted in Servers by Fernando Basso on 8 de setembro de 2009

A Causa

Quando iniciei o estudo de PHP me deparei com o fato de que é necessário um server para poder processar o código. Não basta apenas criar o arquivo .php e querer abir no navegador.

Vou demonstrar aqui o que fiz para ter o meu ambiente de estudos PHP. Estes exemplos foram realizados em um Ubuntu 9.10, e em um Debian Lenny.

O que vamos fazer é criar dois VirtualHosts:
http://www.estudo_1.home
e
http://www.estudo_2.home
# –> indica que o comando deve ser executado como root.
$ –> indica que o comando deve ser executado como usuário comum.

OBS: Os seus pcs devem estar configurados com ip fixo.

Instalando Apache2 e PHP5


# aptitude install apache2 php5 libapache2-mod-php5 php5-common php5-cgi php5-mysql

(php5-mysql é o módulo que nos permite acessar o MySQL)

Criando O Usuário E Os Diretórios Necessários

Vamos adicionar um usuário, o qual em sua $HOME ficarão os sites.

useradd -m www -s /bin/bash
passwd www

O primeiro comando adiciona o usuário www com sua pasta $HOME.
O segundo comando é para criar um password para o usuário www.

Agora logue-se como usuário www.

Vamos criar os diretórios necessários para a hospedagem dos nossos dois sites.

$ mkdir -p public_html/estudo_1.home/public
$ mkdir -p public_html/estudo_2.home/public

Crie um arquivo chamado index.html na pasta public dos dois sites com algum conteúdo (html/php) qualquer.

Criando Os Hosts Virtuais


# vim /etc/apache2/sites-available/www.estudo_1.home

Coloque o seguinte conteúdo dentro do arquivo:

<VirtualHost *:80>
    ServerName www.estudo_1.home
    DocumentRoot /home/www/public_html/estudo_1.home/public
</VirtualHost>

E

# vim /etc/apache2/sites-available/www.estudo_2.home

Coloque o seguinte conteúdo dentro do arquivo:

<VirtualHost *:80>
    ServerName www.estudo_2.home
    DocumentRoot /home/www/public_html/estudo_2.home/public
</VirtualHost>

Claro que tem muito mais opções, e eu nem sei muito, mas estas aí já fazem o necessário para um site básico.

Desabilite o site default do apache e abilte os seus sites recém criados:

# a2dissite default
# a2ensite http://www.estudo_1.home
# a2ensite http://www.estudo_2.home

Editando o /etc/apache2/apache2.conf

Certifique-se de que, por volta da linha 50, você tenha:

NameVirtualHost *:80
ServerName "www.estudos.home"
ServerRoot "/home/www"

Editando o /etc/apache2/ports.conf

Aqui, apenas certifique-se de que você tenha:

NameVirtualHost *:80
Listen 80

Tornar Seus Sites Visíveis Na Lan

Abra o /etc/hosts e adicione:

192.168.1.5 http://www.estudo_1.home
192.168.1.5 http://www.estudo_2.home

Claro, isto supondo-se que o ip do seu pc é 192.168.1.5. Use o seu próprio ip.

Se quiser que outros pcs da LAN possam acessar seus dois sites, abra o /etc/hosts destes pcs, e adicione as mesmas linhas demonstradas acima. No windows é c:\windows\system32\drivers\etc\hosts (Por que raios o \etc\hosts do windows está em um dir chamado drivers?!?!)

OBS: Para estudar php em casa, isto já é o suficiente, mas o correto seria configurar um servidor DNS.

Reiniciando O Apache

# /etc/init.d/apache2 restart

OBS: No Debian, foi perfeito. No Ubuntu porém, eu recebi um erro:
[error] (EAI 2)Name or service not known: Could not resolve host name *80 -- ignoring!

Pelo que pesquisei na web, para este erro é causado porque não temos um servidor dns configurado. Mesmo assim, isto não chega a ser um problema. Você vai conseguir acessar os seus dois sites normalmente apartir da LAN.

UTF-8

Ainda, para evitar problemas com acentos, edite o arquivo /etc/apache2/conf.d/charset e adicione (ou descomente) AddDefaultCharset UTF-8

Finalizando

O básico está pronto. Agora já é possível abrir seus arquivos .php tanto do Server quanto dos hosts da lan. Abra um navegador e digite http://www.estudo_1.home/ na barra de endereços e você deverá ver o a página index.html que você criou anteriormente na pasta public dos sites.
Agora basta cirar seus arquivos .php. Digamos que você fez o hello_world.php basta digitar:
http://www.estudo_1.home/hello_world.php

IMPORTANTE: Não adianta querer abrir os arquivos .php direto do HD (clicando com o botão direito do mouse e escolher ‘abrir com firefox’ (ou opera!) , como fazemos com arquivos .html. Não funciona!. Os arquivos .php precisam ser processados no server. Por isso é necessário digitar a url na barra de endereços do browser.

Uma última dica: se você precisar colocar códigos php em arquivos html, eles não serão executados, obviamente. Para que o código php sejá executado dentro de arquivos com extensão .html, crie um arquivo chamado .htaccess na pasta /home/www/public_htm (ou em qualquer outra pasta onde houver arquivos a serem executados) e addicione:
AddType application/x-httpd-php .html. Com isto todos os seus arquivos .html serão executados como php.

Desculpem quaisquer erros. Funcionou pra mim, e espero que ajudem alguém.

Comentando Um Programa

Posted in Python by Fernando Basso on 8 de setembro de 2009

Comentários servem para ‘comentar’ o código fonte, e ajudar a lembrar o que o código faz. Não são mostrados na saída padrão. Use comentários habitualmente. É o que grandes programadores fazem. O Kernel Linux por exemplo, está repleto de comentários. É importante usa-los, pois assim fica fácil entender o código posteriormente, para modificar, corrigir bugs, ou adicionar features e melhorias no porgrama. Veja:

print(2 + 2) # Mostra o produto de 2 + 2.

Claro que este é um exemplo simples, mas dá pre ‘pegar’ a idéia.

Comentários devem ser curtos para não poluírem demais o código porém devem ser informativos e diretos.

É melhor que não haja comentário algum, do que um comentário errado,
que não condiga com o que o código realmente faz. Se modificar uma
parte do código que estava comentada, atualize o comentário de acordo
com o novo código. Não deixe pra depois.

Comentários se tornam imprescindíveis, principalmente em partes complexas do código. Neste caso, é muito que explique com clareza (mas sempre tentando ser direto) o que está acontecendo naquele pedaço de código, mesmo que não fique tão curto.
IMPORTANTE:
Por favor, USE COMENTÁRIOS EM SEUS PROGRAMAS. Mesmo que sejam só estudos. COMENTAR O CÓDIGO É UMA ARTE (assim como programar). É preciso ter muito feeling pra saber o que escrever e o que NÃO escrever.
Torne isto um hábito. Pense em comentários como amigos que te livrarão de perder horas tentando decifrar o que faz um pedaço de código. Sem contar, que estará ajudando outros que lerem o seu código, e até mesmo pessoas aprendendo a programar.

Hello_World.py

Posted in Python by Fernando Basso on 8 de setembro de 2009
#!/usr/bin/env python
# -*- coding: utf-8 -*-

import os
os.system ( "clear" ) # Limpa a tela.

print('Hello, World') # Uso da função print() para mostrar 'Hello, World'.

A primeira linha do programa procura onde, em nosso sistema operacional (GNU/Linux no caso) Python está instalado. Isso é o que permite que o programa seja executado. Para rodar o programa apenas digite python Hello_World.py. Ou digite chmod +x Hello_World.py e então ./Hello_World.py. Para estudar, não há necessidade de ficar dando permissão de execução nos seus programas, portanto use a primeira opção a não ser que você tenha outros motivos.

A função print() é usada para mostrar alguma coisa na saida padrão. A saida padrão no nosso caso, é o monitor de vídeo do computador.

String é um conjunto de caracteres. Em Python, strings devem estar entre aspas simples ou duplas.

import os importa algumas coisas do sistema operacional para que possam ser usadas no programa python. No GNU/Linux, clear é um comando que limpa o terminal, então estamos usando clear para limpar a tela ao executar nosso programa Python.

Tudo que vem depois do # é chamado de comentário. Importantes informações sobre este assunto encontram-se em Comentando um programa. Leia-o.

Finalmente, em Python os espaços são importantíssimos. Se você deixar um com um único espaço no começo da linha com print já receberá um erro. Há partes em um programa em que espaços são obrigatórios, e lugares que são proibidos. Vamos chegar lá. Por enquanto, apenas não coloque espaços no começo de linhas de código.

EXERCÍCIO:
Faça um programa limpe o terminal, e mostre o seu nome completo.

1 Vim Básico

Posted in Vim by Fernando Basso on 8 de setembro de 2009

Vi Improved para aqueles que já ouviram falar mas não tiveram um motivo para dar os primeiros passos, ou para aqueles que já tentaram abrir o vim mas não souberam nem por onde começar, e acabaram clicando no x e fecharam o terminal. Vai ser bem prático em com dicas de coisas úteis que usamos no dia-a-dia.

Instalando

Geralmente o que vem instalado nas distribuições GNU/Linux é o bom e velho vi, ou então uma versão do vim mais compacta, sem as funcionalidades como syntax colorida. Basta um aptitude install vim (debian e derivados), emerge vim (gentoo), pacman -S vim (archlinux), etc…

Iniciando – Criando Um Novo Arquivo.

Abra um terminal de digite: vim <Enter>. Pronto! O arquivo está criado e você já está usando o vim. :)

Modos de Operação

O vim tem três modos:
1. Modo de comando;
2. Modo de inserção;
3. Modo visual.

Quando você abre o vim, está está em modo de comando. Neste modo, as teclas não são usadas para inserir texto. Pressione i para entrar no modo insert e então poderá inserir o seu conteúdo.
Para salvar o seu arquivo você deve voltar para o modo de comando digitando <Esc> ouCtrl + [. Agora digite :w teste.txt <Enter>. Isto vai salvar o seu arquivo como nome teste.txt no diretório atual. Finalmente pressione :q <Enter> para sair do vim.

Passo a Passo


1. Abra o terminal
2. Digite vim <Enter>
3. Pressione i para entrar no modo insert
4. Digite Estou aprendendo VIM.
Vim é muito poderoso.
Nada ver discutir Vim vs Emacs.
Cada um usa o que gosta.
Eu gosto do Vim.

5. <Esc> ou ctrl + [ para voltar ao modo de comando
6. Digite :w teste.txt <Enter>
7. :q <Enter> para sair.

OBS: Daqui em diante, não vou mais falar quando pressionar o enter. Você sabe quando é necessário dar um <Enter> ou não.

Abrindo Um Arquivo Já Existente

Vamos abrir o mesmo arquivo que acabamos de criar. Digite vim teste.txt . (Não esqueça de completar com tab). Agora use as teclas L H para movimentar o cursor para a esquerda e direita, e J K para movimentar o cursor para baixo e para cima. Pratique um pouco. Isto é feito em modo de comando.

Vá para o início do arquivo, pressione i, digite o seu nome, volte para o modo de comando. Como o seu arquivo já existia e já tinha um nome, o processo de salvar é mais simples. Você precisa apenas digitar :w e depois :q. Ou então, mais fácil ainda, simplesmente digite :wq em um único comando.

Passo a Passo 2


1. vim teste.txt
2. Movimente-se pelo arquivo usndo H L J K
3. Pressione i
4. Digite seu nome
5. Volte para o modo de comando.
6. :wq

Conclusão

Isto foi só um início muito básico. Prometo que nos próximos posts teremos coisas mais interessantes do que apenas abir e salvar um arquivo. Não fique chateado como fato ter que ficar mudando o modo de operação (comando, insert). Isto é natural do vim, e logo você vai ver o poder que isto lhe traz na questão de se movimentar pelo arquivo, como também para manipular o seu conteúdo.

May the force be with you. Always.

O que é um comando no GNU/Linux

Posted in Bash by Fernando Basso on 8 de setembro de 2009

Cada ferramenta tem suas opções. Temos opções como o -v ou -V ou -r ou -R que na maioria das vêzes são respectivamente verbose (mostra o que está acontecendo enquanto o comando está em execução) ou version (versão do software/aplicativo), –recursive, como cp-Rmusic//mnt/backup/ que copiaria a pasta music com tudo o que tem dentro ou chown -R jedi_tux music/ que mudaria o dono da pasta music com tudo o que existir tudo dentro dela. O jedi_tux passaria a ser dono da pasta music.

As opções podem ser passadas em forma curta ou longa, mas nem sempre uma ferramenta tem forma curta e longa para todas as opções.

O ls por exemplo não tem -h como forma curta de –help. O -h nesse caso é a forma curta de –human-readable

Para ter uma descrição rápida das opções de cada ferramenta com suas formas curtas e longas use ferramenta acompanhada de –help como em ls –help, ou cp –help

Li num livro que aprender os comandos do Linux é como acodender a falar uma nova lingua. Concordo com o autor do livro.

As ferramentas podem formar uma sinergia e são simbiontes. Podemos usar pipes para “emendar” um comando no outro e assim executar tarefas que não estão previstas na função original de uma ferramenta. Como “emendar” comandos quero dizer: enviar o output/saida de um comando para o input/entrada de outro.

Veja o uso de um pipeline simples mas bem útil:
ls -lh | grep .mp3
ls -l -h | grep .mp3(human-readable na forma curta).
ls -l –human-readable | grep .mp3 (human-readable na forma longa) (Os três comandos fazem a mesma coisa.) Isto irá listar os arquivos no diretório em que voçê está, mostrando as permissões (-l) e o tamanho em –human-readable (-h) mas apenas os arquivos que possuem .mp3 no nome (grep). O | (pipe) levou a saida do ls -lh para a entrada do grep que por sua vêz filtrou o resultado e só mostrou o que voçê pediu (.mp3)

Perceba que a opção -l (L), vem da palavra long, que seria, “liste os arquivos com uma loga lista de informaçães. Ou seja, “mostre os arquivos detalhadamente”. Mas você não pode usar ls –long. (Por algúm motivo os desenvolvedores do ls resolveram colocar à nossa disposição a forma curta e longa de human readable, mas não fizeram o mesmo com a opção long, e o mesmo acontece com todas as outras ferramentas e opções.) Outra coisa é que quando se usa a forma curta das opções tanto faz usar ls -lh ou ls -l -h. Legal não!?

Sempre use o –help para saber quais opções uma ferramenta possui, e quais tem forma longa e curta, só curta ou só longa.

Veja também que comando não é igual a ferramenta ou aplicativo.

ls é uma ferramenta. Se voçê usar ls sem nenhuma opção e/ou argumento voçê está dando um comando para o sistema executar a ferramenta ls. Ferramenta executa uma tarefa bem definida. O ls é usado para listar os arquivos e por mais que tenha opções que podemos usar, ele vai listar arquivos e ponto final. Ele é uma ferramenta.

O exemplo ls -lh | grep .mp3 usa ferramentas (ls, grep) , opções(-lh), argumentos(.mp3), e um operador, o querido pipe ” | “. Todos juntos formam um comando que o sistema executa.

Quando voçê digita ls -lh | grep .mp3 e tecla enter, é mais ou menos isso: “Execute todas as ferramentas, opções, argumentos e operadores na ordem em que estão” Então o intercodetador de comandos vai fazer o que voçê mandou.

É bom ter essa noção básica sobre a diferênça entre comandos e as ferramentas com suas opções e argumentos. Já um aplicativo podemos dizer que são os programas com interface gráfica, e que geralmnte fazem muitas coisas diferentes, como o nero ou k3b que fazem muito mais do que apenas gravar DCs e DVDs.

Python – Mais Exemplos

Posted in Python by Fernando Basso on 7 de setembro de 2009

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import os
os.system ( "clear" )

# Aspas simples e duplas. (os espaços são preservados)
print("Bons estudos")
print('Aspas     simples   preservam os       espaços.')
print("Aspas     duplas           também.")

Caracteres especiais são caracteres que tem poderes especiais. Um exemplo são as aspas, que servem para dizer onde começam e terminam strings. Já o a ou o 1 por exemplo são caracteres comuns.

A barra invertida é usada para escapes e para criar meta-sequências.

Quando usada como escape ela tira o poder certos caracteres.
Quando usada para criar meta-sequências ela dá poderes à caracteres comuns.

Quando colocamos aspas para indicar o início de uma string, a próxima aspa que aparecer indica o fim/fechamento da string. Se quisermos que uma aspa não seja interpretada de tal modo, devemos usar a barra invertida \ para “escapar” a aspa e tirar seus poderes especiais.

# Escapando aspas.
print('That doesn\'t matter.')
print("Então ela gritou: \"Vá embora!\"")

Tome como exemplo o caractere n que é um caractere comum. Quando o precedemos com \ eles se únem para formar o que chamamos de caractere de newline (nova linha). Ele faz com que o que vier após seja mostrado em uma nova linha.

# Colocando 'n' após \ criamos a metasequência de newline.
print('Isto\né\num\nteste de\nnewline.')

Podemos usar aspas simples livremente dentro de aspas duplas e vice-versa.

# Use aspas simples livremente dentro de aspas duplas.
print("That doesn't matter.")
# Use aspas duplas livremente dentro de aspas simples.
print('Então ela gritou: "Vá embora!"')

Python ainda nos oferece aspas tríplices. Podemos usar aspas simples ou duplas livremente dentro de aspas simples.

# Use aspas simples ou duplas livremente dentro de aspas tríplices.
print('''
That doesn't matter. Não importa onde você
mude de linha.....
Então ela gritou: "Vá embora!"
Um copo d'água, por favor.
''')

print("""
That doesn't matter. Não importa onde você
mude de linha.....
Então ela gritou: "Vá embora!"
Um copo d'água, por favor.
""")

Como o caractere \ é um caractere especial, o que fazemos se quisermos que ele seja mostrado como caractere comum, sem os seus super-poderes? Simples! Basta ‘escapar’ ele. Ou seja escapamos o escape.

# Escapando o escape.
print("O caractere \\ foi escapado, e será mostrado como um caractere comum.")

–> LINHA FÍSICA é o que nós vemos como uma linha.
–> LINHA LÓGICA é o que Python vê como uma linha.
Outro uso da barra invertida é para continuar strings que não cabem em uma única linha física. Não deixe espaço após a barra invertida quando quiser continuar uma linha lógica na próxima linha física.

# Uma linha lógica em duas linhas físicas.
print('Esta é uma string muito longa, e por isso ela não caberia de maneira \
nenhuma em uma única linha física.') # NÃO deixe espaço depois do \ para conti-
# nuar uma linha lógica.

Outra coisa útil quando você quer imprimir uma string sem nenhuma interpretação de caracteres especiais ou metasequências, é usar raw strings. Assim todos os super poderes dos caracteres especiais são desbilitados. Um fato curioso, no entanto, é o \ usado para continuar uma linha lógica na próxima linha física. Embora ele está em uma raw string, ele continua tendo o poder de dizer ao Python para continuar a linha lógica na próxima linha física, e MESMO ASSIM, ele é mostrado pelo print() como um caractere comum.

print(R'Nova linha é conseguido com \n')
print(r"Isso\a não vai tocar o system bell, nem isto \t vai produzir\
um tab.")

Se você quiser pode emendar strings.

print('Qual é '       'o seu nome?') # Estas duas strings vão ser
# mostradas como uma única string.

EXERCÍCIOS:
1. Usando aspas simples, mostre as seguintes strings:
Hello. I’m seu_nome.
e
“Não vá embora”, ela suplicou.
2. Faça o mesmo com aspas duplas.
3. Faça o mesmo com aspas tríplices.

4. Mostre a seguinte frase em uma única linha lógica: “Um bom ensino da metemática forma melhores hábitos de pensamento e habilita o indivíduo a usar melhor a sua inteligência.”

5. Usando newline mostre a frase: “May the force be with you.”. Faça com que cada palavra fique um uma linha nova.