Posts de ‘Andrews Medina’

[Andrews Medina] Dia 18/03 tem Meetup sobre Docker

Sunday, March 16th, 2014

Na próxima semana (terça-feira, 18/03) teremos um meetup de Docker na
semana que vem, na Globo.com. É uma oportunidade bem legal para quem quiser conhecer mais sobre o projeto.

Quem tiver algum projeto relacionado com docker legal pra apresentar,
teremos lightning talks também!

Mais informação na página do meetup: http://www.meetup.com/Docker-Rio-de-Janeiro/events/165622462/

[Andrews Medina] venha fazer parte da globo.com

Wednesday, January 8th, 2014

A globo.com é líder absoluta no mercado de portais de notícias, esportes e entretenimento em toda a América Latina. São milhões de acessos por dia aos portais (g1.globo.com, globoesporte.globo.com, gshow.globo.com) com a home da globo.com sendo a principal fonte de acessos com cerca de 45 milhões de visualizacoes por dia.

Trabalhar na globo.com significa que você dividirá seu dia-a-dia com algums dos melhores profissionais do país, usará as melhores ferramentas (open source) para completar seus desafios e fará parte de um ótimo ambiente de trabalho. Terá a oportunidade de participar de eventos assistindo ou palestrando, e terá um macbook a sua disposição.

Se você ficou interessado, basta mandar um email para andrews@corp.globo.com com informações que você julgue relevante (currículo, LinkedIn, Blog, GitHub, etc.) e uma breve explicação do porquê você quer fazer parte da nossa equipe.

ps: as vagas são para trabalhar no nosso escritório no rio de janeiro

[Andrews Medina] introdução ao pypy

Sunday, July 28th, 2013

pypy é bastante conhecido por ser uma implementação de python escrita em python. Mas é muito mais do que isso.

O pypy pode ser divido em duas partes. Uma delas é o rpython, um subset de python com a finalidade de ser uma ferramenta para construção de interpretadores. E o pypy, que é uma implementação de python usando o rpython.

O objetivo do pypy é ser um interpretador rápido e flexível para python. O pypy (graças ao rpython) tem suporte a jit, stackless e suporte a várias estratégias de garbage collector.

ambiente de desenvolvimento

É bem fácil montar um ambiente com pypy. Basta fazer o download e descompactar o pypy e criar um ambiente virtual usando o virtualenv.

Faça o download do pypy

Você pode baixar a última versão estável através do link: http://pypy.org/download. Após isso basta descompactar o arquivo:

E criar um ambiente virtual com o pypy, usando o `virtualenv`:

E só testar e rodar seus scripts e aplicações usando o pypy.

Você pode encontrar mais informações sobre o pypy no pypy.org e no http://doc.pypy.org.

[Andrews Medina] referências para quem quer aprender go

Sunday, May 12th, 2013

Esse post tem como objetivo ser um guia com alguns links para quem que aprender a linguagem go.

Visão geral sobre a linguagem

Go Tour

Instalando e configurando um ambiente de desenvolvimento

Getting started

How to Write Go Code

Aprendendo sobre a linguagem

Effective Go

Apresentações

Let’s go

A linguagem de programação go

Livros

An introduction to programming in go

Programming in go

Learning go

The way to go

Novidades

http://www.reddit.com/r/golang

E para dúvidas, tem a lista de e-mail golang-nuts.

Espero que gostem :)

[Andrews Medina] a diferença entre atributos de classe e de instância

Monday, April 22nd, 2013

“Qual a diferença entre atributos de classe e de instância em Python?”

Essa é uma dúvida muito comum e bem simples de ser respondida. Mas, antes de repondê-la vou demonstrar o que é um atributo de classe e de instância.

atributo de classe

São atributos que são definidos diretamente a classe.

atributo de instância

São atributos definidos a instância, geralmente através do “self”, que representa a instância de uma classe.

Qual a diferença entre eles?

A diferença é que atributos de classes são compartilhados por todas as instâncias daquela classe. Atributos de instancia são únicos para cada instância.

Por exemplo, todas as modificações feitas na lista “l” da classe “C” afetara a lista para todas as instâncias de “C” pois “l” é um atributo da classe.

Já com as instâncias da classe “D” isso não ocorre pois “l” é um atributo de instância, sendo único para cada instância de “D”:

É importante conhecer esse comportamento para não ter resultados inesperados ao construir uma classe.

[Andrews Medina] try.tsuru.io

Friday, April 12th, 2013

Nós da equipe do PaaS da globo.com estamos lançando o try.tsuru.io como private beta com o objetivo de ser uma maneira fácil das pessoas conhecerem e experimentarem o tsuru.

Com o tsuru, times e desenvolvedores não precisam se preocupar com servidores ou em como executar o deploy, eles podem focar no mais importante: a aplicação.

Com ele é possível escrever aplicações na linguagem da sua escolha, usar serviços como banco de dados SQL ou NoSQl, memcacehd, redis e plugá-los a sua app.

Você gerencia sua app usando a linha de comando ou uma interface web e faz o deploy via git. Tudo isso sendo executado pela infra estruturua do tsuru.

O tsuru é um projeto open source se você quiser conhecer o código, montar seu próprio Paas usando o tsuru, contribuir ou sugerir features/reportar bugs sinta-se a vontade.

[Andrews Medina] Usando splinter em ambientes sem display

Thursday, December 27th, 2012

Splinter é uma ferramenta para automatizar ações de navegadores web. Você pode usar ele para escrever testes, crawlers e etc. Com o splinter você pode rodar o mesmo código em vários navegadores diferentes.

A maioria desses navegadores como o firefox, chrome necessitam de um display para funcionarem. Então, se você tentar usar o splinter para executar ações no firefox em um ambiente sem display você vai se deparar com o seguinte erro:


Error: no display specified

Se você estiver usando linux existe um projeto chamado xvfb que permite que você crie displays virtuais. Para que o splinter com firefox ou chrome funcione em um ambiente sem display, basta instalar o xvfb e usar ele para criar um display virtual.

Para fazer isso no ubuntu, primeiramente instale o xvfb:


$ [sudo] apt-get instal xvfb

Agora vamos criar um display chamado :99


Xvfb :99 &

E exportar uma variável de ambiente que informe o número do display a ser utilizado


export DISPLAY=:99

Assim é possível usar o splinter normalmente!

[Andrews Medina] minhas apresentações na pythonbrasil[8]

Thursday, November 29th, 2012

Aconteceu entre os dias 21 a 14 de novembro a oitava edição da pythonbrasil.

O evento foi ótimo, com vários pythonistas do mundo todo. Vários treinamentos, palestras e palestras informais (conversas no bar e no corredor) de alto nível.

Eu participei ministrando um treinamento e apresentei 3 palestras. O treinamento foi sobre Python 3, e as palestras foram sobre Python 3, Design de Código e Escalabilidade de Aplicações Web. A palestra sobre escalabilidade eu apresentei em conjunto com a minha amiga Flávia Missi.

Para quem quiser, os slides das palestras no slideshare:

Python 3 - tutorial from Andrews Medina
Python 3 from Andrews Medina
Escalando aplicações web from Andrews Medina
Python 3 from Andrews Medina

Não vou escrever muito sobre como foi o evento, mas gostaria de declarar que foi a melhor pythonbrasil que eu já fui!

[Andrews Medina] haskell para pythonistas

Wednesday, July 27th, 2011

No FISL 12 que aconteceu nos dias 29 de junho a 02 de julho de 2011 eu apresentei uma palestra relâmpago cujo o tema foi: “haskell para pythonistas”. A palestra ficou legal, mas 5 minutos é bem pouco para um assunto como esse, então resolvi começar a fazer um “guia” de haskell para desenvolvedores python e esse post é o primeiro dessa série.

Primeiramente, eu não sou um programador haskell fluente, eu apenas utilizei haskell para pequenas brincadeiras, entre elas, resolver algum problemas do projecteuler.net. Mas, já consegui ver várias semelhanças e diferenças entre haskell e python.

paradigma funcional

Diferente de python que é multiparadigma, haskell é puramente funcional. Em linguagens imperativas você passa para o computador uma sequência de tarefas para serem executadas, em uma linguagem puramente funcional você não diz o que fazer mas sim como fazer.

Por exemplo, o fatorial de um número é o produto de todos os números de 1 até esse número. Em haskell a implementação do fatorial seria:


fatorial numero = product [1..numero]

Outro exemplo, seria a sequência de fibonacci. O valor do item de fibonacci com posição 0, deve retornar 0. A posição 1 deve retornar 1 e da posição 2 em diante deve retornar a soma dos valores dos dois itens anteriores na sequência. A implementação em python que é uma linguagem imperativa seria:


def fibonacci(numero):
   if numero == 0:
       return 0
   elif numero == 1:
       return 1
   else:
       return fibonacci(numero - 1) + fibonacci(numero - 2)

Já em haskell:


fibonacci 0 = 0
fibonacci 1 = 1
fibonacci numero = fibonacci(numero - 1) + fibonacci(numero - 2)

lazy evaluation

Haskell só executará o resultado e os parâmetros de uma função quando eles forem necessários. Com esse recurso é possível criar funções que retornem sequências infinitas como a de fibonacci onde é executado apenas os valores necessários:


fibs = 0 : 1 : zipWith (+) fibs (tail fibs)

tipagem estática

Uma das características que haskell tem que difere de python é ter tipagem estática, mas ela tem inferência de tipos, ou seja, o compilador associa implicitamente o tipo da variável conforme o valor dela, assim, não é preciso declarar o tipo de uma váriavel. Por exemplo:


Prelude> let numero  = 10
Prelude> :t numero
numero :: Integer

list comprehensions

List comprehensions é a capacidade de gerar uma lista a partir de outra lista, assim como python, haskell também tem list comprehensions. Por exemplo em python, se eu quiser gerar uma lista com apenas os números ímpares contidos em outra lista:


>>> [numero for numero in [1, 2, 3, 4, 5, 6] if numero % 2]
[1, 3, 5]

A mesma solução usando list comprehensions em haskell:


Prelude> [numero | numero <- [1, 2, 3, 4, 5, 6], odd numero]
[1,3,5]

A diferença de list comprehension em haskell é que é possivel fazer list comprehensions compostas:


Prelude> [numero1 * numero2 | numero1 <- [1, 2, 3, 4], numero2 <- [1, 2, 3, 4]]
[1,2,3,4,2,4,6,8,3,6,9,12,4,8,12,16]

como começar

Para quem está interessado em começar uma aventura no mundo das linguagens funcionais com haskell, eu indico a instalação do ghc (http://hackage.haskell.org/platform/) que é um compilador para haskell e a leitura do learn you a haskell (http://learnyouahaskell.com), que na minha opinião é um dos melhores livros para quem quer começar a programar em haskell.

[Andrews Medina] Splinter sprint de 29 de junho a 02 de julho no FISL

Sunday, June 26th, 2011

Durante o FISL 12 que ocorre de 29 de junho a 02 de julho em Porto Alegre, acontecerá mais um splinter sprint.

O que é o splinter?

Splinter é uma ferramenta opensource para testes de aplicações web utilizando Python. Ele permite que você automatize ações do browser, como visitar URLs, interações com formulários e elementos html.

Página do splinter no github: https://github.com/cobrateam/splinter

Site e documentação do splinter: http://splinter.cobrateam.info/

O que é um splinter sprint?

Um splinter sprint é uma desculpa para desenvolvedores reunirem-se , focados por um tempo para melhorar o splinter, corrigindo bugs, adicionando features e melhorando a documentação.

Qualquer um, em qualquer lugar do mundo, pode participar e contribuir.

Se você nunca contribuiu com o splinter antes, esta é a oportunidade perfeita para você começar!

Como contribuir?

  • Escolha uma issue [issue](http://github.com/cobrateam/splinter/issues)
  • Faça um fork
  • Faça commit e push da sua contribuição
  • Envie um ‘pull request’
  • Não se esqueça: todas as novas features devem serem testadas e documentadas.

Preparando-se para o sprint

Instale um client de IRC, para que você possa juntar-se a nós no canal #cobrateam no Freenode.

Se estiver afim de participar, seja presencialmente no FISL, ou online, sua ajuda será bem vinda!

Para mais informações: https://github.com/cobrateam/splinter/wiki/sprint29jun2011