Thiago Avelino Desenvolvedor Python, Django e MongoDB



May archive

Template Django com Haml

May 28, 2011

Haml (HTML Abstraction Markup Language) é uma linguagem simples, que é usado para descrever XHTML de qualquer documento web sem precisar ficar abrindo e fechando tags HTML. Ele foi projetado para resolver muitos dos problemas de templates, bem como fazer marcação tão elegante como ela pode ser.

Em Python temos a biblioteca HamlPy ela pega os files HAML e gera o HTML para usarmos em nossos sistemas.

Vamos logo para a pratica, chega de lero lero.

%html{'xmlns':"http://www.w3.org/1999/xhtml", 'lang':"en", "xml:lang":"en"}
  %head

    %title Testando Haml

    %style{'type': 'text/css'}
      body{font-family: verdana;}

    %script{'type':'text/javascript', 'src':'https://www.google.com/jsapi?key=ABQIAAAAUgaJsDgRTDbR5vvhnJ3iYBT2yXp_ZAY8_ufC3CFXhHIE1NvwkxS2j2XMXVpjyqg8A7TkHl2W04abvA'}
    %script{'type': 'text/javascript'}
      google.load("jquery", "1.6.1");

  %body
    #header
      %h1#lero
        .test Haml
        %ul.navigation
          - for run in varloop
            %li= run
    #content
      Testando para ver se funciona o HamlPy

Esse é um layout feito com haml, é muito simples pois não precisamos ficar fechando as tags, assim os erros de html é 100% resolvido, como converte o haml para html:

/Users/avelino/.virtualenvs/haml/bin/hamlpy template/index.haml template/index.html

O binario hamlpy recebe dois parâmetros o primeiro é o input file haml o segunda é o output a saída html, depois de rodarmos o hamlpy temos uma saida da seguinte forma:

<html lang='en' xmlns='http://www.w3.org/1999/xhtml' xml:lang='en'>
  <head>
    <title>Testando Haml</title>
    <style type='text/css'>
      body{font-family: verdana;}
    </style>
    <script src='https://www.google.com/jsapi?key=ABQIAAAAUgaJsDgRTDbR5vvhnJ3iYBT2yXp_ZAY8_ufC3CFXhHIE1NvwkxS2j2XMXVpjyqg8A7TkHl2W04abvA' type='text/javascript'></script>
    <script type='text/javascript'>
      google.load("jquery", "1.6.1");
    </script>
  </head>
  <body>
    <div id='header'>
      <h1 id='lero'>
        <div class='test'>Haml</div>
        <ul class='navigation'>
          {% for run in varloop %}
            <li>{{ run }}</li>
          {% endfor %}
        </ul>
      </h1>
    </div>
    <div id='content'>
      Testando para ver se funciona o HamlPy
    </div>
  </body>
</html>

Minha views do Django declaro sempre com o arquivo .html que foi gerado com o hamlpy. Veja como ficou o meu views:

# -*- coding: utf-8 -*-
"""
    views

    :copyright: (c) 2011 by the Avelino Labs, see Thiago Avelino <thiago@avelino.us> for more details.
    :license: BSD, see LICENSE for more details.
"""

from django.shortcuts import render_to_response
from django.template import RequestContext

def index(request):
    return render_to_response(
            'index.html',
            context_instance=RequestContext(request))

Entendendo na pratica como funciona a linguagem Go

May 25, 2011

A linguagem Go é um projeto open source para tornar os programadores mais produtivos.

Go foi desenvolvido para utilização maxima do CPU, tornando um processo simples para criar aplicação Multithreaded, o processo de utilização de maquinas na rede para processar determinado programa também é bem simples, assim tornando um software mais flexível e modular.

Vamos montar um servidor HTTPD em Go.

package main

import (
    "http";
    "io";
    "fmt";
)

func HelloServer(c *http.Conn, req *http.Request) {
    io.WriteString(c, "hello, world!\n");
}

func main() {
    fmt.Printf("http://localhost:8080/hello\n");
    http.Handle("/hello", http.HandlerFunc(HelloServer));
    err := http.ListenAndServe(":8080", nil);
    if err != nil {
        panic("ListenAndServe: ", err.String())
    }
}

O HelloServer() é o que vai fazer a parte de renderização, o man() ele sobre o servidor HTTP na porta 8080, e caso o usuário tente processar um URL que não esteja no fmt ele vai cair no err onde vai processar o erro e apresentar o panic. Simples assim já temos um servidor HTTP para toda HTTP.