Posts com o tag ‘fisl’

fisl10 – Por que Python?

Segunda-feira, 6 de julho de 2009 por Fernando Hamasaki de Amorim

O palestrante Marco André Lopes Mendes iniciou a apresentação dizendo que iria tentar convencer quem estava assistindo a usar Python.

Ele mostrou dez razões (que viraram doze) para aprender Python.

1 – É legal
Simples, legível, clara, elegante e próxima da linguagem natural. Mesmo quem não tem conhecimento da linguagem, entende bem quando olha o código.
Abaixo um exemplo de manipulação de arquivos texto:

arquivo = open("emails.txt")
dominios = {}

for contato in arquivo:
    resto, dominio = contato.split("@")
    dominio = dominio.replace("\r\n", "")

    if dominio in dominios:
        dominios[dominio] += 1
    else
        dominios[dominio] = 1
arquivo.close()

arquivo = open("dominios.txt", "w")
print "%-30s - %-5s" %("Dominios", "Ocorrencias")
for dominio in dominios.keys()
    print "%-30s - %-5s" %(dominio, dominios[dominio])
    registro = "%s;%s\n" %(dominio, dominios[dominio])
    arquivo.write(registro)
arquivo.close()

.
2 – Já vem com acessórios
Uma analogia com um carro que já vem com opcionais de série. Os recursos que vêm com Python são poderosos: persistência de objetos, banco de dados, geração de arquivos PDFs, geração de gráficos, protocolos de rede, Web, criptografia, etc.
.
3 – É muito utilizado fora do Brasil
Casos de sucesso como Google, Industrial Light and Magic, DreamWorks e Nokia.
.
4 – É utilizado no Brasil com sucesso
Exemplos são Async – Stoq, LZT, Instituto Nokia de Tecnologia e InVesalius.
.
5 – É utilizado na Web fora do Brasil
Por exemplo, Novel e Cia, utilizando Django, um framework de desenvolvimento rápido para Web.
.
6 – É utilizado na Web no Brasil
IDG Brasil, Vencia, República Federativa do Brasil, Politec, SEBRAE, Varig.
.
7 – Há empregos para programadores Python no Brasil
Bons programadores Python não ficam sem emprego.
Meu comentário: bons programadores em qualquer linguagem, mas bons mesmos, não ficam desempregados.
.
8 – Conversa com outras linguagens
Se você possui bibliotecas em C e C++, pode utilizá-las integrando com Python. Há também implementações para Java (Jython) e .NET (IronPython).
.
9 – É multi-plataforma
Linux, Unix, Mac OS, Windows e plataformas diferentes das tradicionais, como celulares, dispositivos móveis e XO/OLPC.
.
10 – É multi-paradigma
Você pode utilizar com Programação Estruturada, Programação Orientada a Objetos e Programação Funcional. Veja os exemplos:

Programação Estruturada

import random

def jogaDados()
    dado1 = random.randrange(1, 7)
    dado2 = random.randrange(1, 7)
    somaTemp = dado1 + dado2
    print "Jogador tirou %d + %d = %d" %(dado1, dado2, somaTemp)
    return somaTemp

soma = jogaDados()
if soma == 7 or soma == 11:
    situacaoJogo = "GANHOU"
elif soma == 2 or soma == 3 or soma == 12:
    situacaoJogo = "PERDEU"
else:
    situacaoJogo = "CONTINUA"
    meuPonto = soma
    print "Ponto: ", meuPonto

while situacaoJogo == "CONTINUA":
    soma = jogaDados()
    if soma == meuPonto: situacaoJogo = "GANHOU"
    elif soma == 7: situacaoJogo = "PERDEU"

if situacaoJogo = "GANHOU": print "Jogador ganha"
else: print "Jogador perde"

.
Programação Orientada a Objetos

class Contador(object):
    def __init__(self):
        self.dic = {}

    def incluir(self, item):
        quantidade = self.dic.get(item, 0) + 1
        self.dic[item] = quantidade

    def contar(self, item):
        return self.dic[item]

>>> cont = Contador()
>>> palavra = 'inconstitucional'
>>> for letra in palavra:
...   cont.incluir(letra)
...
>>> for letra in sorted(set(palavra)):
...   print letra, cont.contar(letra)

.
Programação Funcional

# Fibonacci: 10 primeiros números
print map(lambda x,f=lambda x,f:(x<=1) or (f(x-1,f)+f(x-2,f)): f(x,f),range(10))

.
11 – É boa como primeira linguagem
Se você está aprendendo a programar, pode escolher Python sem receios.
.
12 – Existe uma comunidade forte no Brasil
O Python Brasil reune grupos de usuários em todo o Brasil interessados em difundir e divulgar Python. A sua lista de discussões é bastante movimentada.
.
Marco André também disse que Python é muito utilizado na automatização de processos. Na Locaweb, Python é extensamente utilizado em ambientes Unix-like, sendo a linguagem padrão para a equipe de Linux, onde são desenvolvidas aplicações para linha de comando e para Web também.

No final da palestra, várias pessoas com conhecimento em Python comentaram que poderia ser mostrado mais recursos da linguagem que a diferencia das outras. Eu particularmente nunca desenvolvi nada em Python, mas considero ser uma ótima escolha no intuito de você se tornar um programador poliglota.

Os slides da palestra você encontra nesse link.
.

fisl10 – TDD e Rails: Mais rápido, mais forte e melhor

Terça-feira, 30 de junho de 2009 por Fernando Hamasaki de Amorim

A primeira apresentação que assisti no fisl10 foi muito boa. Lucas Húngaro mostrou formas de criar aplicações Ruby on Rails com testes, passando um pouco da sua experiência em desenvolvimento Web.

Lucas Húngaro

A palestra foi dividida em quatro partes: Fundamentos, Abordagens, Como eu desenvolvo com testes no Rails e Dicas. Mas separei aqui em mais duas: Boas Práticas e Maus Sinais.

Fundamentos

  • TDD, BDD e suas suas diferenças.


Abordagens

  • Outside-in: perspectiva dos usuários, testes de fora para dentro. São os testes de aceitação, mostram onde chegar.
  • Inside-out: perspectiva do desenvolvedor, testes de dentro para fora. São os testes unitários, mostram como chegar.
  • Atenção para não duplicar testes. Por exemplo, quando testar validações no model, não testar novamente essa validação no teste do controller que usa esse model.


Como eu desenvolvo com testes no Rails

  • Testes unitários somente para models, testes funcionais mínimos e testes de aceitação guiando seu design de alto nível.
  • Não fazer testes para helpers: se há uma complexidade em um helper que precise de um teste, essa lógica não deveria estar na View. Os helpers devem contém formatação e não lógica de negócio.
  • Processo ideal: criar uma feature no Cucumber e vai descendo do alto nível (browser, session/routes, view) para os níveis mais baixos (controllers, models).


Dicas

  • Use factories para fazer testes.
  • Especifique os casos de falha, não crie testes somente para a execução perfeita da funcionalidade.
  • Os testes precisam revelar o comportamento e a intenção. Testes com nomes de métodos ficam esquisitos, coloque no nome do teste o comportamento que você está testando.
  • Testes não precisam ser totalmente DRY (Don’t Repeat Yourself), pois devem ser muito fáceis de entender, somente “batendo o olho”.
  • Use com moderação objetos de substituição (mocks, stubs, proxies, etc).
  • Não utilize mocks como stubs.
  • Não confie cegamente em métricas: é muito fácil criar testes que não testam nada e que aumenta a cobertura de testes.


Boas práticas

  • Não substitua (com mocks, por exemplo) o objeto que você está testando.
  • Crie wrappers para objetos que você não é dono, ao invés de tentar modificar os objetos de terceiros nos seus testes, já que no Ruby você tem o poder para alterar tudo.
  • Teste também o que não deve acontecer, sendo explícito a respeito disso.


Maus sinais

  • Métodos de setup longos: você está testando muita coisa ao mesmo tempo e seu design provalmente está acoplado.
  • Falta de testes de integração:  você irá perder a sincronia com as alterações que são feitas nos testes unitários.

.
Grande parte do que foi passado na apresentação  se aplica em qualquer plataforma onde você esteja desenvolvendo orientado a testes.

O arquivo PDF com slides da apresentação você pode baixar aqui. O que achei muito legal desses slides é que eles vêm comentados com o texto de base para a apresentação, ou seja, praticamente você pode “ler” a apresentação que foi feita.
.

FISL 10 – Conhecimento e cultura

Segunda-feira, 29 de junho de 2009 por Mauricio de Amorim

Com a presença de mais de 8 mil pessoas, e grandes nomes como Richard Stallman, fundador do Movimento Software Livre, Jon “Maddog” Hall Presidente fundador da Linux Internacional, Peter Sunde um dos fundadores do The Pirate Bay, Chris diBona responsável pelo Software Livre no Google, Chris Hofmann diretor de engenharia e projetos especiais da Mozilla Foundation, Nick Nguyen responsável pelos Add-ons Mozilla, entre outros, o FISL 10 foi um grande sucesso, contando até com a presença de nosso Presidente Luís Inácio Lula da Silva.

FISL 10

Em resumo, com palestras de diversos níveis técnicos e didáticos, das quais tive a oportunidade de acompanhar, destaco as seguintes:

A grande lição que transmito com esta jornada, vai além dos conceitos técnicos, a vivência e adquirição de conhecimento trazidos das palavras comunidade, comunicação e colaboração, mostram que o ponto principal a ser focado é a cultura, então seja no desenvolvimento de software, seja na aplicação de metodologias ágeis ou na vida em geral, compartilhe o conhecimento, exponha suas idéias, seus códigos, pois a humanidade não só ganha com isso, mas ela evolui. Então, eis algumas dicas:

Não importa o seu nível de conhecimento – sempre existirá o experiente, o intermediário, o iniciante e o curioso, então compartilhe o que você sabe, crie um blog, participe de fóruns, contribua com algum projeto de código aberto (open source), nem que seja para informar que uma tradução não está correta, que faltou um ponto ou uma acentuação, pois desta maneira você contribuirá para que um curioso se torne um iniciante, um iniciante se torne um intermediário e assim por diante;
Documente suas dificuldades – quando sentir alguma dificuldade na resolução de um problema, na melhorar maneira de aplicar um padrão de projeto, documente como você resolveu e publique seus passos, pois esses passos poderão contribuir para que outros alcancem o mesmo resultado de forma mais rápida;
A melhor forma de aprender é ensinar – seja voluntário, ao explorar uma nova ferramenta, tecnologia, conceito, compartilhe com seus colegas, passe a informação adiante, faça uma apresentação, monte um grupo de estudos. Com certeza o maior beneficiado com isto é aquele que compartilha, pois enraíza o conhecimento;
E por fim, comunique-se – e-mail, twitter e afins, são excelentes ferramentas, mas eu falo de comunicação olhos nos olhos, pergunte o nome do colega ao seu lado, do vizinho à sua frente, sim, aquele que talvez trabalha a anos no mesmo ambiente que o seu, mas você sequer conhece o timbre de voz dele. Descubra com qual tecnologia ele trabalha e se existem formas de ambos se ajudarem, de contribuírem para algo melhor. A comunicação é o elo entre comunidade e colaboração, e ela pode resolver problemas numa velocidade muito maior que qualquer e e-mail,  sms,  mensagem,  etc.

Post original:
http://mauriciodeamorim.com.br/2009/06/29/uma-grande-semana-no-fisl-10

10º Fórum Internacional de Software Livre – fisl10

Segunda-feira, 15 de junho de 2009 por Fernando Hamasaki de Amorim

No final desse mês estaremos no fisl10, o 10º Fórum Internacional de Software Livre. O evento será realizado entre os dias 24 a 27 de junho, em Porto Alegre.

fisl10

O fisl é o maior evento de software livre da América Latina e até a publicação desse post já possui mais de 5.500 inscrições. A Associação SoftwareLivre.org (ASL), que organiza o evento, espera atingir a marca de 8 mil participantes.

Entre os assuntos que serão abordados, estão:

  • Linux, Ubuntu, KDE, BSD
  • Desenvolvimento em Ruby, Java, PHP, Python, Perl e Smalltalk
  • Desenvolvimento de jogos
  • MySQL, PostgreSQL
  • Robótica
  • Segurança
  • Software livre e negócios

Palestrantes como Richard Matthew Stallma, fundador do Movimento Software Livre, do Projeto GNU e da Free Software Fundation (FSF); Peter Sunde, um dos fundadores do site The Pirate Bay; e John “Maddog” Hall, fundador da Linux Internacional são destaques do evento.

A lista completa dos palestrantes, a programação completa, inscrições e outras informações, você encontra no site do fisl10.
.


Switch to our mobile site