Thiago Avelino Desenvolvedor Python, Django e MongoDB



July archive

Software proprietaros em linguagem Open Source

July 23, 2010

Não sei bem por onde começar escrever este post, mas vamos lá.

Hoje achei na internet um software proprietario que usava quando tinha empresa de webhost com o source aberto, bom sou programador e logo baixei para ver o source. Graças a Deus não uso ele ainda, me deu muito medo de olhar a estrutura do software e codigo, à lembrando que esta em php 3 (lol).

Se você tem software Open Source ou principalmente proprietario tem que fornecer uma estrutura robusta para o seu software sejá ele trabalho colaborativo ou corporativo.

Open source você ganha em promoção pessoal e na própria venda de serviços a quem confiou em você porque mostrou que tem capacidade de fazer algo que sirva.


Projeto proprietário precisa de investimento inicial às vezes alto e para dar retorno precisa ser vendido. Isto geralmente é difícil porque quase sempre tem um similar free e Open Source.

Estude os modelos disponíveis por aí e discuta com a equipe como pretendem ganhar dinheiro.


Bom é isso ai, espero ajuda você empresa ou profissional rever alguns conceitos

TDA Fila com Python

July 23, 2010

O foco este post é levar você aprender computação com Python. O TDA Fila é definido pelas seguintes operações: __init__ Inicializar uma nova fila vazia. insert Adicionar um novo item à fila. remove Remover e retornar um item da fila. O item retornado é o que foi adicionado primeiro. isEmpty Checar se a fila está vazia. Segue abaixo um source para explica melhor a implementação "TAD Fila".
class Queue:
 def __init__(self):
  self.length = 0
  self.head = None
  
 def isEmpty(self):
  return (self.length == 0)
  
 def insert(self, cargo):
  node = Node(cargo)
  node.next = None
  if self.head == None:
   # if list is empty the new node goes first
   self.head = node
  else:
   # find the last node in the list
   last = self.head
   while last.next: last = last.next
   # append the new node
   last.next = node
     self.length = self.length + 1
    
 def remove(self):
  cargo = self.head.cargo
  self.head = self.head.next
  self.length = self.length - 1
  return cargo
  
Existem duas invariantes para um objeto Fila bem formado: o atributo length deve ser o número de nós na fila.
>>> from Queue import *
>>> start = new Queue()
>>> start.insert(50)
>>> start.insert(99)
>>> start.insert(10)
>>> while not start.isEmpty(): print start.remove()
50
99
10

Pilhas com listas de Python

July 23, 2010

Pilhas com listas de Python

O foco este post é levar você aprender computação com Python. As listas de Python são bem parecida com às operações que define uma pilha.

Segue abaixo um source para explica melhor a implementação "TAD Pilha"

class Stack :
 def __init__(self) :
  self.items = []

 def push(self, item) :
  self.items.apend(item)

 def pop(self) :
  return self.items.pop()

 def isEmpty(self) :
  return (self.items == [])

Uma pilha é uma estrutura de dados genérica, o que significa que podemos adicionar qualquer tipo de ítem a ela.

Usando:

>>> from Stack import *
>>> start = Stack()
>>> start.push(50)
>>> start.push(23)
>>> start.push("+")
>>> while not start.isEmpty() :
... priint start.pop()

Python é uma otima linguagem para ser academica.

Fail no Sonora - terra.com.br

July 16, 2010

O terra.com.br vende um produto que estagiários faz...
Estagiário que escreve o software do terra.com.br

Trabalhando com Location em php para Android

July 15, 2010

Veja como trabalhar com PHP + Android + Location
include("Android.php");
$droid = new Android();

$droid->dialogCreateAlert();

$result = array();

$latitude = $droid->getInput("Location", "Latitude: ");
$longitude= $droid->getInput("Location", "Longitude: ");

$locations = $droid->geocode($latitude['result'], $longitude['result']);

foreach ($locations['result'] as $location)
{
  $location = get_object_vars($location);
  foreach ($location as $key => $value)
  {
    $result[] = ucfirst(str_replace('_', ' ', $key)).': '.$value;
  }
}
$droid->dialogSetItems($result);

//displays the box
$droid->dialogShow();
by Anton

Teste e qualidade de software (TDD)

July 15, 2010

Quando falamos em "Teste e qualidade de software" nós programadores já devemos ter em mente uma técnica chamada Test Driven Development (TDD) em português  Desenvolvimento dirigido por testes é uma técnica de desenvolvimento que gera em torno de um ciclo repetições:
  1. Desenvolvedor escreve um caso de teste automatizado que define uma melhoria desejada ou uma nova funcionalidade.
  2. É produzido código que possa ser validado pelo teste para posteriormente o código ser refatorado para um código sob padrões aceitáveis.
Através de TDD, programadores podem aplicar o conceito de melhorar e depurar código legado desenvolvido apartir de técnicas antigas. Alguns Framework para TDD: iGrape Framework (Em desenvolvimento do modulo de TDD) - http://igrape.org Pyccuracy Acceptance Testing Framework - http://github.com/heynemann/pyccuracy Cucumber - http://cukes.info/ Accuracy

Um pouco mais sobre Google Friend Connect

July 7, 2010

Google Friend Connect é uma aplicação web que permite a adicionar recursos de redes sociais diretamente a um site ou blog qualquer.
A primeira versão do Google Friend Connect foi apresentada oficialmente ao público em dezembro de 2008. Através deste recurso, um usuário usando uma conta Google,Yahoo! ou OpenID, pode interagir com outros visitantes do site ou de sua própria rede social, compartilhando recursos, arquivos ou aplicações OpenSocial. http://www.google.com/friendconnect

Novos icones dos Serviço Google

July 7, 2010

Curti

Badge button do iGrape Framework

July 6, 2010

Se você gostou da ideia, ajuda ou quer ajudar pegue agora mesmo o seu badge button.
Grupo: http://groups.google.com/group/igrape Github: http://github.com/igrape Site: http://igrape.org

Para os amantes de Python, vem ai o novo framework iGrape Python

July 4, 2010

Bom é com grande prazer anunciar a version 0.1 do iGrape Python esta disponivel para todos contribuir para uma grande saga de CODES para o mesmo.
A version 0.1 do iGrape Python esta utilizando o mod_python para fazer a renderização HTML Github Twitter

ORM Python para MongoDB - MongoEngine

July 3, 2010

O MongoEngine é um ORM para MongoDB escrito em Python, o developer team do MongoEngine busca trabalhar exatamente igual ao ORM do Django.

Uso o MongoEngine em muitos projetos e ele é o ORM MongoDB oficial do iGrape Python (Ainda não esta disponivel on-line, estamos terminando os teste para depois disponibilizar.

O MongoEngine trabalha com o pyMongo, então antes de instalar o MongoEngine instale o pyMongo.

Chega de blablabla, vamos ao exemplo:

class BlogPost(Document):
    title = StringField(required=True, max_length=200)
    posted = DateTimeField(default=datetime.datetime.now)
    tags = ListField(StringField(max_length=50))

class TextPost(BlogPost):
    content = StringField(required=True)

class LinkPost(BlogPost):
    url = StringField(required=True)

# Create a text-based post
>>> post1 = TextPost(title='Using MongoEngine', content='See the tutorial')
>>> post1.tags = ['mongodb', 'mongoengine']
>>> post1.save()

# Create a link-based post
>>> post2 = LinkPost(title='MongoEngine Docs', url='hmarr.com/mongoengine')
>>> post2.tags = ['mongoengine', 'documentation']
>>> post2.save()

# Iterate over all posts using the BlogPost superclass
>>> for post in BlogPost.objects:
...     print '===', post.title, '==='
...     if isinstance(post, TextPost):
...         print post.content
...     elif isinstance(post, LinkPost):
...         print 'Link:', post.url
...     print
...

=== Using MongoEngine === See the tutorial

=== MongoEngine Docs === Link: hmarr.com/mongoengine

>>> len(BlogPost.objects)
2
>>> len(HtmlPost.objects)
1
>>> len(LinkPost.objects)
1

# Find tagged posts
>>> len(BlogPost.objects(tags='mongoengine'))
2
>>> len(BlogPost.objects(tags='mongodb'))
1

Simples de trabalhar assim né, agora mão na massa vamos migrar nosso sistema que usa MongoDB para MongoEngine