5/31/2007

IronPython Cookbook Wiki

Para os interessados em IronPython e .NET, foi criado o IronPython Cookbook Wiki [1].

Que é um Wiki que terá como conteúdo artigos e códigos relacionados a IronPython e .NET.

O Wiki mal foi lançado é já tem muito conteúdo interessante, como por exemplo, um post mostrando como conectar ao Active Directory usando IronPython [2].

[1] - http://www.ironpython.info/index.php/Main_Page

[2] - http://www.ironpython.info/index.php/Connecting_to_Active_Directory

Uma imagem vale mais que mil palavras

A imagem ao lado representa uma linguagem que usa tipagem estática!

Agora fica claro porque as linguagens com tipagem dinâmica como Python e Ruby vem aumentando sua popularidade entre os programadores a cada dia que passa.





5/18/2007

Django Newforms

Eu estava escrevendo um post completo sobre o newforms do django, quando eu vejo que eles atualizaram a documentação no site oficial hoje. E vários assuntos que estava abordando e que não tinham na documentação agora estão lá. Por isso vou deixar este post engavetado quietinho, quem saiba ainda precise dele?

Mas para quem quer aprender ou saber mais sobre newforms ai vai umas dicas:

A documentação oficial pode ser acessada aqui -> http://www.djangoproject.com/documentation/newforms/

Na documentação oficial, aborda os seguintes temas:
  • arquitetura do newforms que é formada por fields, widgets e forms.
  • criação, validação e exibição dos formulários em html.
  • criação de formulários a partir de um existente usando herança.
  • documentação sobre os fields (novo)
  • geração de formulários através do model ou instância.

Há coisas que ainda não tem documentação como personalização de formulários gerados através de um modelo ou uma demonstração de como um model por interferir num form gerado pelo newforms, mas isso eu posso mostrar em outros posts.

Abaixo alguns links sobre newforms que valem a pena serem lidos.

http://pythonidae.blogspot.com/2007/03/django-e-o-quebra-cabea-com-newforms_27.html
http://weblog.bignerdranch.com/?p=31
http://eggdrop.ch/blog/2007/02/15/django-dynamicforms/
http://code.pui.ch/2007/01/07/using-djangos-newforms/
http://www.zoia.org/blog/2007/04/23/using-dynamic-choices-with-django-newforms-and-custom-widgets/
http://unpythonic.blogspot.com/2007/01/django-newforms-for-models.html
http://www.pkshiu.com/loft/archive/2007/04/custom-validation-in-django-newforms-library

5/16/2007

Adeus Vim!

Eu utilizava o Vim, para desenvolver em Python, tanto para desktop como para web com django. O que mais gostava no Vim é que ele tem suporte para a sintaxe de templates do django e os temas que vem nele. Mas, estou tendo muitos problemas com ele, relacionados a identação automática. Ele me mostra a identação correta, mas na verdade a identação esta errada.

Se eu programasse em outra linguagem, não teria problemas, mas como programo em Python identação errada é sinonimo de código errado.

Já tive esse problema com o Vim uma vez, e para resolver, usei o IDLE para arrumar as identações de todos os códigos de um sistema que havia feito em django e com a reincidência do problema, vou aposentar o Vim.

Andei olhando vários editores e um deles me agradou muito, O Scite [1].

Algumas características dele:
  • Suporta várias linguagens
  • Exporta o código para html, pdf
  • Auto-identação
  • Suporta temas de cores, mas devem serem configurados manualmente
  • É bem leve
  • É suportado por windows/linux
Só uma questão que ainda não vi. Usar ele com as templates do django.

[1] - http://www.scintilla.org/SciTE.html

5/06/2007

Tipagem dinâmica + OO, é disso que o povo gosta

Segundo o tiobe [1], python subiu mais um nível no ranking de popularidade das linguagens, ficando em 7º.

Mas o mais surpreendente foi o que aconteceu com ruby que passou de 19º para 10º subindo 9 posições.

O fato de Python e Ruby estarem alcançando a popularidade dos programadores é algo que pode ser comprovado por um fato que consta na mesma pesquisa da tiobe, que a popularidade de linguagens orientada a objetos continua crescendo e que a popularidade de linguagens com tipagem dinâmica vem crescendo bastante e se continuar dessa maneira alcançará e ultrapassará o nível de aceitação das linguagens com tipagem estática.

Isso acontece porque, pelo menos na minha opinião, as linguagens mais simples, fáceis e com menos 'burocracias', continuem a ganhar a confiança de cada vez mais programadores.

A prova real de que essas linguagens estão agradando é o fato da Microsoft utilizar o Python e Ruby através do IronPython e do IronRuby como linguagens dinâmicas para a mais nova menina dos olhos da Microsoft, o Silverlight.

Muitos podem contestar dizendo que tipagem estática é uma auto-documentação e por isso é mais simples e fácil e bla e blé e bli, mas o duck typing é a maior prova de que se a ave fizer 'Quá quá', ela não precisa ter um crachá de pato para sabermos que elá não é um pavão e sim um pato.

[1] - http://www.tiobe.com/index.htm?tiobe_index

IronPython no Silverlight - primeiro exemplo

A alguns dias atrás a Microsoft lançou oficialmente o Silverlight, uma ferramenta para apresentações e animações para web, para ser concorrente do Adobe Flash.

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