Willian Fernandes

Usando Ruby para trabalhar com datas

Comente »

Foi publicado como “Converter formato de data do MySQL para o formato BR, em uma linha de código só” usando PHP[bb], o DGMike mostrou como ficaria sua versão em Python[bb], eu até fiz minha contribuição lá mostrando como eu faria em Python usando um objeto datetime e agora resolvi fazer o mesmo em Ruby[bb], já que estou estudando essa linguagem:

data = '2008-08-12'
td = []
data.split('-').each{ |d| td << d.to_i}
d = DateTime.new(td[0], td[1], td[2])
ndata = d.strftime('%d/%m/%Y')

[ATUALIZADO]
Respondendo a pergunta do d3rf e aproveitando a dica do Caio Moritz:

'2008-08-12'.split('-').reverse.join('/')

Aguarde, em breve voltarei com o desenvolvimento em Python com PSE e SQLObject!!!

Retornando o último número (script JavaScript)

Comente »

O DGmike publicou o post Retornando o último número (script PHP), o Elcio mostrou a visão dele em Retornando o último número (script Python) e resolvi fazer o mesmo em JavaScript[bb]:

function ultimoNumero(str) {
    return str.match(/\d+/g).pop();
}

[UPDATE]

Uma simples correção para quando não for passado uma string e para quando a string for vazio ou não tiver números:

function ultimoNumero(str) {
    try {
        return str.match(/\d+/g).pop();
    } catch(e) {
        return '';
    }
}

Muito simples, não?

O Fantástico Mundo do Python – Parte 1

Comente »

Gosto muito de programar, principalmente para Web. Sempre gostei muito de PHP e outras linguagens/tecnlogias do mundo Open Source, apesar de também ter trabalhado bastante com ASP/ASP.NET (C#) meu principal foco foi o mundo Open Source.

Há um pouco menos de um ano comecei a estudar Python e cada dia que passa meu interesse por essa linguagem aumenta mais e mais.

Assim que lancei o blog recebi alguns comentários e e-mails de pessoas pedindo conteúdo de Python, pois sempre ouvem falar desta linguagem e gostariam de saber como ela é. Por isso resolvi listar algumas diferenças entre Python e PHP (umas das linguagens mais usadas no Brasil).

Abaixo segue uma lista com algumas diferenças entre a sintaxe e a estrutura de dados do PHP e do Python:

1. Criando listas (arrays)

PHP

$numeros = array(1,2,3,4,5);
echo "O número " . $numeros[1] . " é segundo número da lista";

Python

numeros = [1,2,3,4,5]
print "O número %i é segundo número da lista" % numeros[1]

2. Criando dicionários (arrays associativos)

PHP

$numeros = array(
    "um" => 1,
    "dois" => 2,
    "tres" => 3,
    "quatro" => 4,
    "cinco" => 5
);
echo "O número " . $numeros["dois"] . " é segundo número da lista";

Python

numeros = {
    "um":1,
    "dois":2,
    "tres":3,
    "quatro":4,
    "cinco":5
}
print "O número %i é segundo número da lista" % numeros["dois"]

3. Percorrendo a lista (array)

PHP

$numeros = array(1,2,3,4,5);
for ($i = 0; $i &lt; count($numeros); $i++) {
    echo $numeros[$i];
}

Python

numeros = [1,2,3,4,5]
for i in numeros:
    print i

4. Verificando se uma chave existe em um dicionário (array associativo)

PHP

$numeros = array(
    "um" => 1,
    "dois" => 2,
    "tres" => 3,
    "quatro" => 4,
    "cinco" => 5
);
if (array_key_exists("um", $numeros)) {
    echo "A chave existe";
}

Python

numeros = {
    "um":1,
    "dois":2,
    "tres":3,
    "quatro":4,
    "cinco":5
}
if numeros.has_key("um"):
    print "A chave existe"

5. Replaces em String

PHP

$titulo = "{NOME} e o Pé de Feijão";
$titulo = str_replace("{NOME}", "João", $titulo);
//Ou, para simplicar em uma única linha
$titulo = str_replace("{NOME}", "João", "{NOME} e o Pé de Feijão");

Python

titulo = "{NOME} e o Pé de Feijão"
titulo = titulo.replace("{NOME}", "João")
#Ou, para simplicar em uma única linha
titulo = "{NOME} e o Pé de Feijão".replace("{NOME}", "João")

6. Escrevendo uma parte da String

PHP

$titulo = "João e o Pé de Feijão";
echo substr($titulo, 9, 2);

Python

titulo = "João e o Pé de Feijão"
print titulo[9:11]

7. Verificando tipo da variável

PHP

$var = "Teste";
if (is_array($var)) {
    echo "É array";
}
elseif (is_string($var)) {
    echo "É string";
}
elseif (is_integer($var)) {
    echo "É inteiro";
}

Python

var = "Teste"
if type(var) == list:
    print "É array"
elif type(var) == str:
    print "É string"
elif type(var) == int:
    print "É inteiro"

8. Estrutura de controle

PHP

$n = 4;
if ($n == 1) {
    echo "Um";
}
elseif ($n == 2) {
    echo "Dois";
}
else {
    echo "Maior que dois";
}

Python

n = 4
if n == 1:
    print "Um"
elif n == 2:
    print "Dois"
else:
    print "Maior que dois"

9. Definindo funções

PHP

function Teste() {
    echo "teste";
}
Teste();

Python

def Teste():
    print "teste"
Teste()

10. Definindo classes

PHP

class TestePai {
}
class Teste extends TestePai {
    public function __construct() {
        echo "Esta é a classe Teste que faz herança da classe TestePai.";
    }
}
$t = new Teste();

Python

class TestePai:
    pass
class Teste(TestePai):
    def __init__(self):
        print "Esta é a classe Teste que faz herança da classe TestePai.";
t = Teste()

Perceba que, em todos os casos, acabamos escrevendo menos código em Python do que em PHP. Isso por que em Python temos uma estrutura de dados mais simples e sua forma de trabalhar sempre com objetos facilita muito a vida do programador. Ao invés de ficarmos decorando milhares de funções em PHP, decoramos somente alguns métodos em Python.

Particularmente, acho mais fácil decorar métodos do que funções, isso porque os métodos se diferenciam entre os tipos de objetos disponíveis na linguagem. Além disso, se eu estiver com dúvida se algum método existe ou não em determinado objeto, basta utilizar a função dir:

>>> minha_lista = [1,2,3,4]
>>> dir(minha_lista)
['__add__', '__class__', '__contains__', '__delattr__', '__delitem__', '__delslice__', '__doc__', 
'__eq__', '__ge__', '__getattribute__', '__getitem__', '__getslice__', '__gt__', '__hash__', 
'__iadd__', '__imul__', '__init__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', 
'__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__rmul__', 
'__setattr__', '__setitem__', '__setslice__', '__str__', 'append', 'count', 'extend', 'index', 
'insert', 'pop', 'remove', 'reverse', 'sort']
>>> lista.sort()

Ao digitar a função dir() passando como parâmetro o objeto minha_lista, podemos ver todos os método que um objeto do tipo list possui.

Em posts futuros colocarei exemplos mais complexos, e quem sabe envolvendo outras linguagens também…

Você pode sugerir um exemplo, basta escrever nos comentários…

Primeira turma de PHP

Comente »

Na segunda-feira passada (03/09/2007) foi iniciada a primeira turma do curso de PHP da Visie.

Para mim está sendo uma experiência incrível! Os alunos são bem legais e interessados em aprender. São meus cobaias…rs

A turma começou pequena, somente com três alunos, mas no segundo dia de curso entraram mais dois. Tem de tudo, desde pessoas que somente trabalhavam com design até programadores ASP (eca!).

Ontem começamos a trabalhar com conexão ao banco de dados MySQL e hoje avançaremos mais na utilização do MySQL junto com o PHP.

Quem tiver interesse em aprender PHP, desde o zero, entre em contato com a Paloma da Visie, ela ficará contente em receber sua ligação. ;)