Oficina da Arte

Antes de tudo, é com muito prazer que posso finalmente dizer que consegui usar o github.

Oficina da Arte

A Oficina da arte é um projeto de empresa Jr, que visa a integração de estudantes de diferentes cursos de graduação, que foca na divulgação de trabalhos realizados por seus componentes além de projetos sociais, confecção de camisas e a pareceria com o projeto Boca a Boca.

Ritmo Amor e Poesia

Primeira camisa do Selo da Oficina da Arte

Breve breve o site estará no ar e vocês podem e devem acompanhar as mudanças e o gerenciamento de versão no github, para tanto clique aqui.

Abraço,
Gil.

Django humanize & Dojo Python

Olá, estava vendo a documentação do Django, conhecendo as ferramentas que ele me oferce, quando me deparei com o Django.contrib.humanize clique aqui para ver a documentação original (inglês), segundo a documentação do Django o django.contrib.humanize é: Um conjunto de úteis template filters  para adicinoar um “toque humano” aos dados (tradução própia).

Exemplo retirado da docs.djangoproject :

apnumber

For numbers 1-9, returns the number spelled out. Otherwise, returns the number. This follows Associated Press style.

Examples:

  • 1 becomes one.
  • 2 becomes two.
  • 10 becomes 10.

Lendo isto lembrei de um dojo que fiz há um tempo com meu amigo Uriel (@urieljuliatti), bom não finalizamos no tempo desejado e me decepcionou o fato de não saber coisas simples com o Python. Apesar de ter ficado decepcionado com os resultados, percebi que tinha que estudar mais, e que dojos são um ótimo termômetro para saber como você esta se saindo, além de serem divertidos pelo simples fato de serem desafiadores.

Algumas coisas que pude tirar proveito daquele dia foram que dificuldades e dúvidas irão aparecer, se preparar para elas é essencial (ter uma lista com fontes de pesquisa ajuda muito) e nem sempre a tua solução é a melhor, admitir isto pode ser difícil mas não adianta, trabalhar em equipe é isso, agregar  experiências e idéias.

Dojo

O objetivo do Dojo era contar quantas letras existem nos números de um a mil.
ex: um => duas letras
dois => quatro letras
total = 6 letras.

Resolução:
Após a frustração com o Python, o Uriel começou a rabiscar algo em Ruby, e eu em python, chegamos no fim do dia sem uma resolução. O Uriel me mostrou a linha de raciocínio dele, confesso que no momento não entendi – respondi assim: Sim, sim ah tá – nunca respondam assim, nunca fique com dúvidas.

Chegando em casa, começei a pensar na solução do Uriel e percebi que ele estava certo, dei uma “rabiscada” em python e saiu algo mais ou menos assim:

-*- coding: utf-8 -*-
#! /usr/Python/Python2.7
# gilgomesp@gmail.com

# sys para usar o argv
import sys

# numeros por extenso

numeros = [{0:””, 1:”um”, 2:”dois”, 3:”três”, 4:”quatro”, 5:”cinco”,
6:”seis”, 7:”sete”, 8:”oito”, 9:”nove”, 10:”dez”,
11:”onze”, 12:”doze”, 13:”treze”, 14:”quatorze”, 15:”quinze”,
16:”dezesseis”, 17:”dezessete”, 18:”dezoito”, 19:”dezenove”},
{2:”vinte”, 3:”trinta”,
4:”quarenta”, 5:”cinquenta”, 6:”sessenta”, 7:”setenta”, 8:”oitenta”,
9:”noventa”},
{1:”cento”, 2:”duzentos”, 3:”trezentos”,
4:”quatrocentos”, 5:”quinhentos”, 6:”seissentos”, 7:”setessentos”,
8:”oitocentos”, 9:”novecentos”}]
def unidades(numero):
n = str(int(numero)) # converte para string
numeroString = ‘0’ * (3 – len(n)) + n # gera uma string numeroString = 83
u = int(numeroString[-1:])
if numeros[0].has_key(u):
unidade = numeros[0][u]
return unidade

def dezenas(numero):
n = str(int(numero))
numeroString = ‘0’ * len(n) + n
d = int(numeroString[2:-1])
dez = int(numeroString[2:])
if numeros[1].has_key(dez):
dezena = numeros[0][dez]
return dezena
else:
dezena = numeros[1][d]
return dezena

#def centenas(numero):
#n = str(int(numero)) #converte para str
#numeroString = ‘0’ * (3 – len(n)) + n
#c = int(numeroString[-2:])
#if numeros[2].has_key(c):
#centena = numeros[2][c]
#return centena
#else: print ‘invalido’

def extenso(numero):
if numero >= 20:
return dezenas(numero)+ ‘ e ‘+ unidades(numero)
elif numero < 20:
return unidades(numero)
elif numero >99:
return centenas(numero)
def main():
numero = 99 # OU sys.argv[1]
print extenso(numero)

if __name__ == ‘__main__’:
main()

Não ficou pronto, não por incapacidade, mas sim por ter perdido o objetivo para mim que era a conclusão em dupla do Dojo, o prazer de resolver meu primeiro desafio fora da faculdade com meu amigo Uriel.
Para finalizar gostaria de deixar claro que não vejo essa experiência como frustante, mas sim como uma grande oportunidade de aprender, e acredito ter evoluído mais um pouquinho nessa caminha rumo ao infinito que é o aprendizado e evolução pessoal.

Abraços deste que vos fala, até a próxima.

Categorias:Diversos, Django Tags:, ,

Trabalhando com FlatPages no Django

Flatpages ou páginas planas são sensacionais e o Django torna a experiência com elas muito satisfatória e ágil.

Páginas planas são páginas estáticas e o melhor exemplo disto são aquelas famosas páginas /sobre/, /about/, /sobre-mim/ etc.

Chega de enrolação e “mãos a obra”.

Usarei aqui um projeto bem rápido com configurações padrões, nada de mais:

Vamos criar o projeto ->

No windows:

abra o prompt de comando (DOS) vá para o diretório onde ficara seus projetos ex:

cd D:\projetos

c:\Python27\Scripts\django-admin.py startproject exemplo

No linux

$ cd /projetos

$ django-admin.py startproject exemplo

No diretório do projeto adicione as seguintes linhas no teu arquivo urls.py

(r”,include(‘django.contrib.flatpages.urls’)),

Não vou falar de configurações do settings e banco de dados, pois não é o objetivo do post, agora vamos as paginas planas.

Insira ‘django.contrib.flatpages’, em suas apps (INSTALLED_APPS ) no seu arquivo setings.py em sua pasta de templates no meu caso “exemplo/teste/templates” e adicione o seguinte diretório flatpages/default.html a nossa pagina default deve ficar da seguinte maneira

{{ flatpage.title }}

{{ flatpage.content }}

use o syncdb e reinicie o servidor e pronto agora é só acessar o admin e adicionar a flatpage /sobre/

Obs: lembre-se de trocar o valor de site (example.com) pelo servidor local no meu aqui localhost:8000 adicione a flatpage e acesse localhost:8000/sobre pronto ja temos nossa flatpage.

O único problema que encontrei adicionando flatpages desta maneira, foi o de conciliar paginas planas com o sistema de feed que o Django possui. Encontrei a solução no manual do Marinho. Remova a linha

(r”,include(‘django.contrib.flatpages.urls’)),

do seu arquivo urls.py e no settings.py adicione a seguinte linha as MIDDLEWARE_CLASSES

‘django.contrib.flatpages.middleware.FlatpageFallbackMiddleware’,

e pronto ja temos nossas flatpages funcionando perfeitamente, usando um editor rich text, o trabalho de estilização do conteudo fica mais agradavel ainda #fikdik.

Categorias:Django Tags:

Antes de mais nada… Apresentação

Ao invés de um simples “Hello word” ou ja ir jogando conteúdo aqui, gostaria antes de qualquer coisa me apresentar e justificar a existência deste blog.

Para tanto devo começar agradecendo ao meu amigo Uriel que me incentivou a começar com o Python, Django, PHP, meu futuro repositório no github e este blog.
Aprendizados, fracassos e descobertas no mundo da computação, e fora dele por que não, é o que ira compor o conteúdo deste blog.
Como forma de expor o que ando fazendo e aprendendo, e uma forma de provar aos meus futuros empregadores que apesar de ainda não ter experiência de mercado, posso dar conta do recado; este acredito ser o principal motivo do blog.

Metas para o primeiro bimestre e semestre de 2012 ja estão traçadas, agora é hora de arregaçar as mangas e mãos a obra.
Não faço ideia de como você chegou aqui mas imagino o por que, e logo de cara vou lhe pedir o seguinte vamos aprender juntos? dividir experiencias e conhecimento para que possamos todos juntos crescer sem passar por cima de ninguém, de maneira honesta e honrosa, bom já “falei” de mais, ah essa mais uma coisa que você deveria saber sobre mim a cada dia que passa gosto de falar e opinar mais.

Abraços, Gil.

Categorias:Diversos