Domingo, 13. Mayo 2012

Peticiones HTTP para humanos con Python Requests

Todos los que trabajamos con el lenguaje de programación Python conocemos el exceso de dificultad al utilizar alguna de sus baterías, sobretodo cuando lo que necesitas es una funcionalidad rápida para pruebas de concepto o prototipado, por ello últimamente hay mucha gente creando recubrimientos sobre la librería estándar que sean mucho mas fáciles de manejar… por humanos!

Una de estas librerías es Requests. Según la propia descripción del autor Python HTTP for Humans

La pagina oficial python-requests.org aporta toda la información necesaria para poder utilizarla.

Podemos instalarlo por los cauces habituales Pythoneros:

$ pip install requests
$ easy_install requests

Luego utilizarlo seria algo como esto; aunque es mejor leerse un poco la documentación oficial que se puede encontrar en la pagina oficial.

#!/usr/bin/env python

import requests

def main():
  response = requests.get("http://blog.deancos.com")
  return response

if __name__ == "__main__":
  response = main()
  print response.status_code
  print response.headers["content-type"]
  print response.text

Domingo, 13. Mayo 2012

Logging en PHP Monolog

Monolog es una librería de logging escrita en PHP inspirada en la similar herramienta LogBook escrita en Python. Requiere PHP5.3 o superior. Y lo que mas me gusta es que es muy fácil de utilizar. Existen seis niveles: debug, info, warning, error, critical, alert.

Para instalar la librería puedes bajártela en Formato Comprimido ZIP o utilizar GIT, método este que recomiendo:

$ git clone https://github.com/Seldaek/monolog.git

Tambien existe la posibilidad de descargarlo utilizando sistema de paquetes PHP como Pear:

$ pear install pearhub/Monolog

O en por medio de Composer: http://packagist.org/packages/monolog/monolog

Utilizar la librería es muy sencillo; simplemente se instancia un objeto Logger y utilizando el método pushHandler añadimos un nuevo handler a nuestro sistema logeador, donde el primer parámetro es el handler que queremos utilizar, y el segundo el nivel que utilizaremos como pivote para escribir los mensajes de log.

<php

use MonologLogger;
use MonologHandlerStreamHandler;

$log = new Logger("MiLogger");
$log->pushHandler(new StreamHandler("/home/tuuser/logs/tuapp.log", Logger::DEBUG));

$log->addDebug("Esto es un mensaje de DEBUG");
$log->addInfo("Esto es un mensaje de INFO");
$log->addWarning("Esto es un mensaje de WARNING");
$log->addError("Esto es un mensaje de ERROR");
$log->addCritical("Esto es un mensaje de CRITICAL");
$log->addAlert("Esto es un mensaje de ALERT");

Monolog puede gestionar los logs de varias maneras; pues posee varios handlers:

  • StreamHandler: Guardar streams de datos. Es la típica opción para guardar logs en ficheros.
  • RotatingFileHandler: Logs rotativos, un fichero por día.
  • FirePHPHandler: Como su nombre indica, para tratar los logs desde la extensión FirePHP del navegador Firefox.
  • ChromePHPHandler: Igual que el anterior pero para el navegador Chrome.
  • MongoDBHandler: Logs en base de datos, en este caso escribe en MongoDB, por medio de la extensión de mongo de PHP.
  • NativeMailHandler: Logs por email utilizando la función mail() de PHP.
  • SwiftMailerHandler: Igual que el anterior pero utilizando la librería SwiftMailer.
  • SyslogHandler: Escribe los mensaje en el log del sistema.
  • GelfHandler: Con este handler podemos conectarlo con el servidor de logs graylog2.
  • SocketHandler: Utiliza sockets UNIX. Aparte existen varios handlers mas, puedes encontrar información sobre ellos en la documentación del proyecto: Documentación Monolog

Tambien existe la posibilidad de darle formato a los mensajes de logs; existiendo varios formateadores como: LineFormatter, NormalizerFormatter, JsonFormatter, etc.. En la documentación se puede aprender mas sobre cada uno de ellos.

Lunes, 16. Abril 2012

Generación de CSRF Token en Symfony2

En ciertas ocasiones no vemos en la necesidad de generar formularios al vuelo en los cuales necesitamos mantener la seguridad por medio de CSRF Token, en Symfony2 es sencillo generarlo al vuelo y pasárselo a la vista para mas tarde utilizarlo en la creación del formulario.

He aquí un ejemplo.

public function editAction(Request $request)
{
   ...
   $csrf_provider = $this->container->get("form.csrf_provider")
   $csrfToken = $csrf_provider->generateCsrfToken("unknown");
   return array("csrf_token" => $csrfToken);
}

Sabado, 21. Enero 2012

Barra de navegación estilo Twitter con Twitter Bootstrap

Últimamente esta muy de moda en la aplicaciones web utilizar una barra pegada en lo alto de manera fija, muy al estilo de la utilizada por Twitter.

Con Twitter Bootstrap en muy fácil crear tu propia barra de navegación.

<div class="topbar">
    <div class="fill">
        <div class="container">
            <a href="#" class="brand">TU_NOMBRE_WEBAPP</a>
            <ul class="nav">
                <li class="active"><a href="#">Inicio</a></li>
                <li><a href="#link">Link</a></li>
                <li><a href="#about">About</a></li>
                <li><a href="#contact">Contact</a></li>
            </ul>
            <form action="TU_ACCION" class="pull-right">
                <input type="text" placeholder="Username" class="input-small">
                <input type="password" placeholder="Password" class="input-small">
                <button type="submit" class="btn">Iniciar</button>
            </form>
        </div>
    </div>
</div>

Jueves, 19. Enero 2012

Twitter Bootstrap Una gran ayuda para tu webapp

Twitter bootstrap es el conjunto de herramientas que utiliza Twitter para maquetar sus pagina y ¡Ahora lo han liberado! Incluye hojas de estilo CSS y HTML para las tipografia, formularios, botones, tablas, grids, breadcrums, alerts, ventanas modales, y mucho mas, y ademas esta construido sobre LESS http://lesscss.org

Ahora todo el que quiera tener para sus webapp o sites un look&feel tipo Twitter lo tiene fácil.

La verdad es que le he dado una oportunidad para un pequeño proyecto y la verdad es que esta bastante chulo. Lo mas útil sin embargo es algo que ya ofrecen framework CSS desde hace tiempo: el sistema de rejilla o grid para disponer los elementos de tus paginas. Por lo demás cumple con su cometido, ademas es muy muy fácil de manejar. Otro de los elementos que me parecen interesantes es la Fixed Topbar estilo Twitter.

Quizás si tienes unas necesidades de diseño muy particulares este framework CSS no te merezca la pena, pero si necesitas prototipos rápidos o apuestas por un diseño minimalista para tu webapp, esta herramienta puede ayudarte mucho.

Puede bajartelo y encontrar la documentación en la pagina oficial.

Domingo, 25. Diciembre 2011

Libro Symfony2

Javier Eguiluz ha publicado su nuevo libro: Desarrollo web ágil con Symfony2, un buen libro para acercarse al desarrollo de aplicaciones web con el framework PHP del momento: Symfony2.

Puedes adquirirlo desde la pagina web sobre Symfony que mantiene Javier Eguiluz: www.symfony.es

El libro cuesta 10 euros en su versión digital. Y consta de 573 paginas, dispuestas en 20 capítulos divididos en cuatro secciones y dos apéndices, uno sobre Twig y otro sobre la inyección de dependencias.

Con la compra del libro ademas tendrás gratis todas actualizaciones que vayan saliendo.

portada-libro-symfony2.png

Para programadores web que quieran adentrarse en el desarrollo con el framework es una buena opción, quizás si ya estas metido en el tema te parezca poco avanzado.

En nuestra empresa lo hemos comprado y estamos dándole caña, y tiene muy buena pinta.

Domingo, 14. Agosto 2011

Symfony2 primeras impresiones

Hace mas o menos un par de semanas que se ha publicado la primera versión estable de Symfony2 y he aprovechado para hacer algunas pruebas de concepto.

La primera impresión es que aun esta un poco verde en algunos aspectos, sobre todo comparándolo con las ramas 1.2 y 1.4 que estaban evidentemente mucho mas rodadas.

El framework de formularios no me disgusta tanto como el de la version 1.4 (que era bastante enrevesado) pero sigue sin convencerme del todo, ¿No se puede validar una entidad directamente, siempre hay que asociarla a un formulario? no he encontrado la respuesta. Seguramente se pueda y yo no he sido capaz de encontrar la información necesaria para implementarlo.

La documentación esta bien para dar los primeros pasos, pero en cuanto te metes en poco en cosas mas complejos se queda muy corta, aunque esto es normal a priori y seguramente en unos meses existirá mas documentación especifica.

Me gusta su ligereza; es mucho mas liviano, a nivel de ficheros y directorios que las versiones anteriores, en las que te podías perder fácilmente si estabas empezando a desarrollar en Symfony. El concepto de bundle, independizando el código (extraído de otros frameworks) me parece muy acertado.

La adopción de Twig como sistemas de platillas por defecto también me parece correcto, además si no te convence, utilizar plantillas en PHP es trivial. Twig es sencillo de manejar y bastante potente, además las personas que vengan del mundo python/Django se adaptaran fácilmente pues la sintaxis es un calco de la de Django Template.

Doctrine2 es un ORM cada día mas potente y cercano a sus hermanos de Java y otras tecnologías, pero como sus hermanos, adolece de ciertos comportamientos extraños. Es necesario orientar el diseño al Modelo (entidades) si quieres llegar a utilizar todas las características del ORM. Me gusta.

En principio tampoco he podido probar muchas cosas, pero por ahora tiene muy buena pinta, aun le falta tiempo, y necesita un par de meses o tres para asentarse un poco.

Domingo, 31. Julio 2011

Symfony 2 por fin entre nosotros

Esta semana se acaba de publicar definitivamente el framework de desarrollo web Symfony 2.0.0

symfony 2.0.0 publicada

Despues de varias Release Candidates y bastante tiempo de retrase por fin esta entre nosotros el que para muchos pasa por ser el mejor framework web escrito en PHP.

Podeis encontrar mas información en la pagina oficial: http://symfony.com

y en la pagina en español que mantiene Javier Eguiluz: http://www.symfony.es

Viernes, 29. Octubre 2010

Configuración de arranque de Oracle en Ubuntu

Cuando instalamos Oracle en Ubuntu y lo configuramos nos pregunta si queremos que se arranque directamente con el sistema. Esto esta bien y vamos a trabajar con el asiduamente, pero si lo utilizamos esporádicamente convendría desactivar esta opción en el archivo de configuración de Oracle.

El archivo de configuración se encuentra en: /etc/default/oracle-xe

Tendremos algo parecido a esto:

#This is a configuration file for automatic starting of the Oracle
#Database and listener at system startup.It is generated By running
#/etc/init.d/oracle-xe configure.Please use that method to modify this
#file

# ORACLE_DBENABLED:true means to load the Database at system boot.
ORACLE_DBENABLED=true

# LISTENER_PORT: Database listener
LISTENER_PORT=1521

# HTTP_PORT : HTTP port for Oracle Application Express
HTTP_PORT=8080

# Configuration : Check whether configure has been done or not
CONFIGURE_RUN=true

Con los comentarios podemos saber que significa cada cosa. En nuestro caso nos fijamos en la linea: ORACLE_DBENABLED=true Donde true significa que arrancara con el sistema y false justamente lo contrario.