5/06/2007
IronPython no Silverlight - primeiro exemplo
As principais características do Silverlight é a que ele é OpenSource e que ele é programado usando linguagens dinâmicas, entre elas o IronPython.
O desenvolvimento de apresentações funciona da seguinte maneira:
1 - Criamos o arquivo xaml, que é um xml que representa toda a parte visual da nossa apresentação. Ele pode ser criado 'no braço', sendo codificado ou usando o Microsoft Expression Design [1] que é uma ferramenta de ilustração e design gráfico onde você cria os desenhos e pode exportá-los para xaml.
2 - Criamos o arquivo que terá toda a parte de programação da noss apresentação. Como usaremos o IronPython, será um arquivo .py.
3 - Usando o Silverlight SDK, criamos a função createSilverlight, que é um javascript que faz a exibição da apresentação no html.
4 - Chamamos a função createSilverlight no html para exibir nossa apresentação.
Para desenvolvermos nossa primeira apresentação é necessário o player do Silverlight [2] e o SDK dele [3].
Vamos criar uma apresentação que carregue um texto quando a apresentação foi carregada. Vamos começar pelo xaml.
Scene.xaml
<Canvas xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Width="100" Height="100" Background="Red" >
<x:Code Source="primeiro.py" Type="text/python" />
<Canvas Loaded="OnLoad" />
<TextBlock x:Name="Texto" Foreground="White" Text="IronPython" />
</Canvas>
O xaml acima é formado por 4 linhas praticamente. A primeira é a Canvas onde contém a linkagem com os xmlns oficiais do silverlight e ele também é o fundo da nossa aplicação que nesse caso use a cor de fundo como vermelha e usei o tamanho de 100x100.
<Canvas
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Width="100" Height="100"
Background="Red"
>
A segunda, a x:Code é responsável por configurar o tipo da linguagem e onde fica o arquivo com os comandos.
<x:Code Source="primeiro.py" Type="text/python" />
A terceira linha contém uma tag canvas que uso apenas para colocara função Loaded que é disparada quando a apresentação é carregada. O nome da função chamada quando a apresentação é carregada é OnLoad.
<Canvas Loaded="OnLoad" />
E para finalizar o nosso texto que terá a cor branca e no python será representado pela instância Texto.
<TextBlock x:Name="Texto" Foreground="White" Text="IronPython" />
Agora vamos para o nosso arquivo em Python, que não passa de uma função chamada OnLoad que atribui um valor ao texto que criamos através do parâmetro Text.
primeiro.py
def OnLoad(sender, args):
Texto.Text = "Isso é d+++"
O SDK do silverlight dispoe do Silverlight.js e do CreateSilverlight.js que é um modelo para criação da função que chamará o xaml. Vamos abrir o CreateSilverlight.js e modificar a função createSilverLight.js para que chame o Scene.xaml. Nessa função também configuramos o framerate entre outros atributos.
function createSilverlight()
{
Sys.Silverlight.createObject("Scene.xaml", pe, "wpf",
{width:'350', height:'350',
inplaceInstallPrompt:false, background:'#00000000', isWindowless:'true',
framerate:'30', version:'0.95'},
{onError:null, onLoad:null},
null);
}
E para finalizar chamamos a função createSilverlight no nosso arquivo .html
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3c.org/TR/1999/REC-html401-19991224/loose.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<title>Primeiro</title>
<script src="js/silverlight.js" type="text/javascript" ></script>
<script src="js/CreateSilverlight.js" type="text/javascript" ></script>
</head>
<body>
<div id="iron" >
<script type="text/javascript">
var pe = document.getElementById("iron");
createSilverlight();
</script>
</div>
</body>
Com o Silverlight + IronPython pode-se fazer coisas que só a imaginação pode limitar.
Em breve, mais sobre Silverlight e IronPython, mas por enquanto é só.
Quer mais? [4].
[1] - http://www.microsoft.com/Expression/products/overview.aspx?key=design
[2] - http://msdn2.microsoft.com/en-us/silverlight/bb419317.aspx
[3] - http://www.microsoft.com/downloads/details.aspx?FamilyID=54B85D84-604D-43DB-BCFE-7AFD278208D8&displaylang=en
[4] - http://www.microsoft.com/brasil/msdn/tecnologias/expression/intro_silverlight.mspx
4/27/2007
Captcha no django
Seus problemas acabaram! Existe um projeto opensource da verificação capctha para django. Este projeto utiliza os newforms o que é algo muito bom, já que a maneira antiga de tratar formulários no django tende a ser extinta.
Para saber mais sobre o projeto acesse: http://www.lostlogicx.com/captchasblow/
4/19/2007
Lançado o Ubuntu 7.04 veja como atualizar

Lançado o Ubuntu 7.04 (Feisty Fawn) , veja o que há de novo nele aqui: http://www.ubuntu.com/getubuntu/releasenotes/704tour
Há 4 formas de adquirir ele:
1 - Baixando o iso: http://www.ubuntu.com/getubuntu/download
2 - Comprando o cd: http://www.ubuntu.com/getubuntu/purchase
3 - Requisitando o cd gratuitamente: https://shipit.ubuntu.com/
4 - Atualizando a sua versão do ubuntu: http://www.ubuntu.com/getubuntu/upgrading
Só lembrando, que para atualizar para o 7.04 você tem que estar com a versão 6.10.
Lançado o Bingo!

Depois do anúncio aqui está o lançamento. Este ainda não é o lançamento oficial, mas já está disponível no google code o código fonte do bingo.
Para quem não sabe o bingo é um CMS desenvolvido em django.
O blog, wiki, feeds RSS e atom já estão em funcionamento, mas há várias coisas a serem resolvidas, como os comentários e cadastro de usuários.
Para as tags usamos o django-tagging.
O marinho, meu parceiro no desenvolvimento do bingo colocou uma versão do bingo no ar para ver acesse http://marinho.webdoisonline.com/blog/.
Também foi criado um grupo de discussão para o grupo de desenvolvimento do bingo. Se quiser participar é só se inscrever. O e-mail do grupo é bingo-developers@googlegroups.com
Só lembrando que ainda não foram lançadas nenhuma versão release, mas em breve lançaremos o 0.1.
Para acessar o código fonte do bingo via svn use:
svn checkout http://bingo.googlecode.com/svn/trunk/ bingo
4/16/2007
O MVC, o MTV e o Django

Como muitos sabem, MVC ( Model – View – Controller ) é um padrão de desenvolvimento, que é um padrão que separa o desenvolvimento nessas 3 camadas.
O django usa as nomenclaturas para as camadas,diferente do modelo MVC. Para modelo o django usa model, para view ele usa template, até ai tudo bem. Mas ele define o controller como view. Isso mesmo, o django define o controller como view. E tem também as generic ‘views’ que são controllers genéricos para situações comuns como master/detail, delete, update.
O problema é maior ainda porque muitos desenvolvedores acham que essa nomenclatura errada chique porque as iniciais delas são igual aquele canal de TV a MTV ( Model – Template – View ).
Eu só não entendo porque eles resolveram chamar o controller de view.
Pensei, pensei e ainda não descobri.
4/12/2007
Ruby e Python duas irmãs de pais diferentes.
Ruby foi desenvolvida por Yukihiro Matsumoto, com o objetivo de criar uma linguagem simples, mas poderosa. Já python, foi criada por Guido Van Rossum em 1991, com o objetivo de criar uma linguagem simples com fácil aprendizado.
Assim nasceram duas irmãs.
Digo duas irmãs porque no mundo da programação elas têm características parecidas entre si, ambas são bonitas, simpáticas, ousadas, mas uma (ruby) é mais atrevida, outra (python) é mais organizada.
>>>if “ola” == “ola”:
print “ola”
Já ruby é mais atrevida com seus blocos flexíveis.
>>if “ola” == “ola”: puts “ola” end
puts “ola”
end
Ambas são interpretadas, e tem seu ambiente interativo e também com tipagem de forma dinâmica, não precisando informar de qual tipo aquela variável será. Se eu quiser números:
>>>valor = 1
E não:
int valor = 1
Objetos? Nelas tudo são objetos. Um ‘oi’ é objeto, um ‘tchau’ é objeto também, e um número? Lógico que é objeto. Mesmo tudo sendo objeto não é necessário programar orientando a objetos. Se quiser cumprimentar:
puts ‘oi’
Ouprint ‘oi’
Ou se despedir
puts ‘adeus’Ou
print ‘adeus’
Ruby voa nos trilhos da web (rubyonrails), como se fosse um trem bala.
Já python conquistou as buscas na web (google), os vídeos (youtube), os efeitos 3D (blender), e até o espaço (NASA).
Como podem ver, as duas são atraentes. Então qual escolher?
Fique tranqüilo!
4/08/2007
IronPython o Python para .NET
Com isso temos a integração do .NET Framework e sua bibliotecas, como o WindowsForms, com o Python.
Para ter o IronPython basta fazer o download dele aqui. E para que ele funcione direitinho é necessário o .NET Framework que pode ser baixado aqui.
Para acessar o console do IronPython basta executar o ipy.exe.
Programando algumas coisas no console poderá ver que os comando básicos do Python funcionam perfeitamente. Por exemplo:
>>> print 'ola IronPython'
ola IronPython
>>>range(3)
[0,1,2]
>>>def soma(a,b):
return a+b
>>>soma(1,2)
3
Agora usando uma biblioteca do .NET Framework
>>>import System
>>>System.Environment.OSVersion
Microsoft Windows NT 5.1.2600 Service Pack 2
E agora para finalizar este post sobre o básico do básico do IronPython, usando as bibliotecas padrão do Python no IronPython. Para isso, é só adicionar o caminho da pasta lib do Python no path. Se o seu Python for a versão 2.4, ficaria assim:
>>>import sys
>>>sys.path.append(r"c:\python24\lib")
E agora usando a biblioteca do Python no IronPython:
>>>import os>>>os.getcwd()
'C:\\ironpython'
IronPyth9on funciona independente de ter Python instalado, mas daí não tem como utilizar a biblioteca padrão do Python no IronPython.
Só para finalizar...
Se você quer trabalhar com .NET, IronPython é uma grande alternativa para escolha de linguagem, já que as outras opções são C#, J#, VB.NET.
E com o projeto mono, sua aplicação usando IronPython fica portável tnato em ambientes Windows como Linux.
Para saber mais acesse o site do projeto: http://www.codeplex.com/IronPython