Arquivo

Textos com Etiquetas ‘software livre’

Um pouco de metaprogramação

1, outubro, 2009 Sem comentários

Quem assina a lista django-brasil recebeu essa mensagem do Luciano Ramalho sobre metaprogramação. Achei muito interressante e demonstra perfeitamente o quão poderosa é a linguagem Python.

Estou reproduzindo o texto sem alterações:

Em geral não é tedioso programar com o Django, mas às vezes é, veja só quanta repetição:

# http://pastebin.com/f2fc7b238

class DescriptorInline(admin.TabularInline):
   model = Descriptor

class RecruitmentCountryInline(admin.TabularInline):
   model = RecruitmentCountry

class OutcomeInline(admin.StackedInline):

   model = Outcome

class TrialInterventionCodeInline(admin.TabularInline):

   model = TrialInterventionCode

class SecondaryNumberInline(admin.TabularInline):

   model = TrialNumber

class TrialContactInline(admin.TabularInline):

   model = TrialContact

class TrialInstitutionInline(admin.TabularInline):

   model = TrialInstitution

class ClinicalTrialAdmin(admin.ModelAdmin):

   inlines = [SecondaryNumberInline, RecruitmentCountryInline,

              OutcomeInline, TrialContactInline, TrialInstitutionInline,

              DescriptorInline, TrialInterventionCodeInline]

No código acima, cada nome de modelo aparece três vezes… (uma vez ao
declarar a classe XXXInline, no atributo model do inline, e mais uma
vez no atributo inlines).

Além disso, quase todas as declarações de inlines são idênticas… E o
princípio DRY, como fica?

Felizmente Django é Python. Então aquilo pode ser reescrito de uma
maneira mais legal assim:

# http://pastebin.com/f5af2bd28

tabular_inline_models = [Descriptor, RecruitmentCountry, TrialInterventionCode,

                        TrialNumber, TrialContact, TrialInstitution]

tabular_inlines = []

for model in tabular_inline_models:

   cls_name = model.__name__+'Inline'

   cls = type(cls_name, (admin.TabularInline,), {'model':model})

   tabular_inlines.append(cls)

class OutcomeInline(admin.StackedInline):

   model = Outcome

class ClinicalTrialAdmin(admin.ModelAdmin):

   inlines = tabular_inlines + [OutcomeInline]

O truque aqui foi usar a função type(), que pode ser usada para criar
classes dinamicamente. Para isso a gente passa três argumentos para a
função type():

- uma string que será o __name__ da classe
- uma tupla de super-classes (importante: a vírgula dentro do
parêntesis indica que é uma tupla de um elemento)
- um dicionário com os atributos da classe (métodos e variáveis)

Não tente fazer isso em Java ;-) .

[ ]s
Luciano

FISL 10 foi mara!

8, julho, 2009 Sem comentários

Bom, já passou uma semana do FISL10, foi uma semana muito corrida em POA, entre palestras, feira de tecnologia, saídas a noite, ida ao Beira Rio, etc….. Com tudo isso não deu para atualizar o blog. Mas agora estou de volta ao calor de Maceió e aqui estão minhas impressões da décima edição do Fórum Internacional de Software Livre.

FISL 10

FISL 10 - Multidão

Pra comecar vale dizer que tinha MUITA gente no evento, 7 mil pessoas num so lugar é um pouco claustrofóbico, porém não faltaram atividades para todos durante os 4 dias de evento.

Tinhamos representantes de várias áreas no suporte a causa do Software Livre, como: Free Software Foundation, Mozilla, Ubuntu-br, Fedora, Sun, Oracle, Associação Python Brasil, Globo.com e vários outros.

Muitos brindes! Vai a dica a que se aventurar nas próximas edições do FISL, gaste as primeiras horas do dia inicial para “caçar” os brindes. Eles têm de tudo, camisas, adesivos, cds. Nem sempre é de graça, a Mozilla, por exemplo, estava distribuindo camisetas a quem achasse pistas escondidas no galpão da PUC. No último caso pode-se comprar algumas lembraças, mas é bom correr também pois acabam rápido.

As palestras estavam pouas, porém é tanta coisa acontecendo ao mesmo tempo que fica dicifil acompanhar as quem você quer assistir, precisa-se de um pouco de prática. Da proxima vez estarei mais esperto.

Ainda teve a visita do lula, que eu não vi…. mas foi muito importante para a causa Software Livre o apoio do Goveno Federal.

No final das contas o FISL vale muito a pena, quem tiver a oportunidade de ir não vai se arrepender. Abaixo tem algumas fotos que tirei no evento.

Jogo da Mente

Jogo da Mente

Não entendi muito, mas achei legal!

PLACAS

Richard Stallman

Richard Stallman

CAIXA

CAIXA

Credenciamento

Credenciamento

SERPRO

SERPRO

Bolinhas da SUN

Bolinhas da SUN

Categories: eventos Tags: , , , , ,

Chegamos em POA

23, junho, 2009 Sem comentários

Depois de um vôo meio turbulento pousamos em POA agora a noite. Muita chuva e frio nessa noite de terça feira. Amanhã começa o FISL.

Em breve as fotos!!

Categories: eventos Tags: ,

Rumo ao FISL

16, junho, 2009 Sem comentários

Passagem comprada, hotel reservado e inscrição confirmada. Agora só falta chegar lá em POA.

Estou indo pela primeria vez participar do evento que considerado a Meca do desenvolvimento de software livre. Com presenças confirmadas de Richard Stallman, Peter Sunde Kolmisoppi (The Pirate Bay), Jon “Maddog” Hall e vários outros entusiastas do software livre do Brasil e do mundo.

Quem quiser ir ainda da tempo, pois as inscrições pelo site acabam dia 18 e a as passagens de avião estão em conta. Essa 10¬™ edição do FISL promete bastante, em breve muitas fotos do evento.

Categories: eventos Tags: ,