viernes, 26 de junio de 2015

#Python y #Redis Cap 1

Redis, un motor de bases de datos NoSQL con todas las características que requiere una implementación de este tipo. Python, un lenguaje de programación soñado.


¿Como hacemos para conectar Python y Redis?

Para realizar este tipo de fusión, requerimos utilizar de un cliente en este caso, desde el lenguaje Python para conectarnos directamente con las keys de Redis, a esta sencilla tarea podemos hacerlo de la siguiente forma.

Lo primero que vamos a hacer es instalar el cliente llamado redis-py haciendo uso de easy_install:

$ easy_install redis

Esto va a llevar apenas unos minutos y nos va a dejar a disposición el módulo redis para poder utilizarlo desde nuestros script en Python.

Ahora queda iniciar Python y hacer uso del nuevo módulo:

$ python
>>> import redis
>>>
>>> dir(redis)
['AuthenticationError', 'Connection', 'ConnectionError', 'ConnectionPool', 'DataError', 'InvalidResponse', 'PubSubError', 'Redis', 'RedisError', 'ResponseError', 'StrictRedis', 'UnixDomainSocketConnection', 'VERSION', 'WatchError', '__all__', '__builtins__', '__doc__', '__file__', '__name__', '__package__', '__path__', '__version__', '_compat', 'client', 'connection', 'exceptions', 'from_url', 'utils']

Lo que podemos hacer ahora es instanciar un cliente de redis desde nuestro Python de la siguiente forma:

>>> cr = redis.Redis()
>>>
>>> dir(cr)
['RESPONSE_CALLBACKS', '__class__', '__contains__', '__delattr__', '__delitem__', '__dict__', '__doc__', '__format__', '__getattribute__', '__getitem__', '__hash__', '__init__', '__module__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', '_zaggregate', 'append', 'bgrewriteaof', 'bgsave', 'bitcount', 'bitop', 'blpop', 'brpop', 'brpoplpush', 'client_kill', 'client_list', 'config_get', 'config_set', 'connection_pool', 'dbsize', 'debug_object', 'decr', 'delete', 'echo', 'eval', 'evalsha', 'execute_command', 'exists', 'expire', 'expireat', 'flushall', 'flushdb', 'from_url', 'get', 'getbit', 'getrange', 'getset', 'hdel', 'hexists', 'hget', 'hgetall', 'hincrby', 'hincrbyfloat', 'hkeys', 'hlen', 'hmget', 'hmset', 'hset', 'hsetnx', 'hvals', 'incr', 'incrbyfloat', 'info', 'keys', 'lastsave', 'lindex', 'linsert', 'llen', 'lock', 'lpop', 'lpush', 'lpushx', 'lrange', 'lrem', 'lset', 'ltrim', 'mget', 'move', 'mset', 'msetnx', 'object', 'parse_response', 'persist', 'pexpire', 'pexpireat', 'ping', 'pipeline', 'pttl', 'publish', 'pubsub', 'randomkey', 'register_script', 'rename', 'renamenx', 'response_callbacks', 'rpop', 'rpoplpush', 'rpush', 'rpushx', 'sadd', 'save', 'scard', 'script_exists', 'script_flush', 'script_kill', 'script_load', 'sdiff', 'sdiffstore', 'set', 'set_response_callback', 'setbit', 'setex', 'setnx', 'setrange', 'shutdown', 'sinter', 'sinterstore', 'sismember', 'slaveof', 'smembers', 'smove', 'sort', 'spop', 'srandmember', 'srem', 'strlen', 'substr', 'sunion', 'sunionstore', 'time', 'transaction', 'ttl', 'type', 'unwatch', 'watch', 'zadd', 'zcard', 'zcount', 'zincrby', 'zinterstore', 'zrange', 'zrangebyscore', 'zrank', 'zrem', 'zremrangebyrank', 'zremrangebyscore', 'zrevrange', 'zrevrangebyscore', 'zrevrank', 'zscore', 'zunionstore']

Finalmente para terminar este primer capítulo podemos consultar todas las keys del servidor redis de la siguiente manera:

>>> cr.keys()

La idea es seguir aprendiendo e implementando cosas interesantes que hoy por hoy las podemos ejecutar desde Python y jugar con motores como Redis.

Saludos!


viernes, 19 de junio de 2015

Como cerrar un issue en GitHub

GitHub en estos últimos años se convirtió en más que un sistema de control de versión, pasando a ser una completa plataforma colaborativa, donde verdaderamente podemos realizar todo el tracking junto al desarrollo de un sistema o la creación de una documentación.


Los issues son conocido como unidades de trabajo que normalmente se crean para contribuir a la mejora de un software o reportar algún tipo de problema.

Lo más interesante es que es posible desde un mensaje de un commit lograr cerrar un issue cuando subimos nuestros cambios a GitHub, y eso lo podemos hacer escribiendo las siguientes palabras:

  • close
  • closes
  • closed
  • fix
  • fixes
  • fixed
  • resolve
  • resolves
  • resolved

Para cerrar con un ejemplo, suponemos que estamos trabajando para cerrar un issue cuyo número es el 66, para ello podemos escribir el siguiente mensaje en el commit:

$ git commit -m "Nueva funcionalidad close #66"

y ahora cuando realicemos el correspondiente push, vamos a ver que ese issue automáticamente va a quedar cerrado.

$ git push origin master

Una funcionalidad muy simple y que podemos aplicarla en todo momento.

Saludos!

miércoles, 17 de junio de 2015

#Python - quitar los espacios en cadenas

Soluciones simples para problemas simples, esa es la filosofía del lenguaje Python y de muchos lenguajes de programación. Es que a estas alturas existe muchos problemas simples que ya tienen solución.


Para este caso, mientras trabajaba en unos scripts en Python, me resultaba muy cómodo poder limpiar unos string que recibía de una query y para ello nada mejor que hacerlo de la siguiente manera utilizando los métodos strip(), lstrip() y rstrip():

>>> texto = "  este es un texto con espacios  "
>>> texto.strip()
"este es un texto con espacios"

>>> texto.lstrip()
"este es un texto con espacios  "

>>> texto.rstrip()
"  este es un texto con espacios"

Esta es la forma como con Python las cosas son mucho más simples.

Saludos!

lunes, 15 de junio de 2015

¿Qué es REST?

Si estas en el mundo del desarrollo y diseño web, este es un concepto que no se te puede pasar por alto. No se trata de un concepto nuevo, ya que está con nosotros hace más de 15 años, sino que quizás es un concepto que se ha vuelto popular gracias a la utilización de algunos framework del lado del Frontend.

La Transferencia de Estado Representacional (Representational State Transfer) o REST es un estilo de arquitectura software para sistemas hipermedia distribuidos como la World Wide Web. El término se originó en el año 2000, en una tesis doctoral sobre la web escrita por Roy Fielding, uno de los principales autores de la especificación del protocolo HTTP y ha pasado a ser amplia mente utilizado por la comunidad de desarrollo.


Por otro lado, encontré un muy bonito recurso audiovisual de Jesús Conde, donde explica de forma tan simple REST y RESTful


Saludos!

miércoles, 3 de junio de 2015

Conferencia de Richard Stallman en Cybercamp 2014

Podrán estar de acuerdo o no con las opiniones de Richard Stallman, sin embargo merece la pena escuchar todas sus posiciones respecto al software libre y el software privativo.

Como puedes ayudar al Software Libre? de esas cosas y muchas más te vas a enterar en esta excelente conferencia.


"La propiedad intelectual solo difunde confusión".

Saludos!

martes, 2 de junio de 2015

Symfony 2.7.0 TLS

Una de las tecnologías web que más seguí de cerca fue la evolución de Framework Symfony2, la verdad que si no lo probaron están a tiempo de ver un completo full-stack de desarrollo en PHP5 haciendo uso y poniendo en práctica las mejores prácticas de POO, acceso a base de datos, etc.


Lo mejor de todo, es que el 30 de Mayo del 2015, Fabien publicó la actualización con soporte extendido de Symfony 2.7.0 que incorpora más de 100 funcionalidades nuevas:

  • Nuevo componente Asset
  • Mejoras en PHPUnit
  • Mejoras en el rendimiento de traducción
  • ObjectNormalizer
  • Se agrega Twig al Profiler
  • VarDumper
  • WebProfiler
  • Consola
  • Seguridad
El soporte para esta nueva rama 2.7.x se extiendo hasta Mayo del 2019, con lo cuál es una buena razón para iniciar sus proyectos sobre esta plataforma de desarrollo.

Instalar Symfony 2.7.0


Es muy simple instalar Symfony gracias al nuevo installer que incorpora esta nueva versión, dejando de lado en la instalación a Composer, y lo podemos hacer de la siguiente manera:


$ curl -LsS http://symfony.com/installer -o symfony
$ ./symfony new proyecto_symfony

Saludos!

lunes, 1 de junio de 2015

Nuevamente, el viaje comenzó

De que me perdí todo este tiempo que me dedicaba a investigar sobre Seguridad Informática, técnicas hacking y ese tipo de cosas.


Definitivamente, una evolución en los lenguajes de programación, Python, Ruby y PHP hoy no son lo que eran hace un tiempo y asociado a ellos frameworks actualizados y con nuevas prestaciones.

Por otro lado el mundo de la web innovó desde varios lados, el rol de backend y frontend hoy por hoy están muy marcados gracias a tecnologías como Node.js AngularJS JQuery Gulp HTML5 CSS3 Express y una lista muy larga de temas muy interesante.

A nivel de base de datos, el paradigma que hoy nos toca atravesar se llama NoSQL acompañada de motores como MongoDB y Redis.

A pesar de todo el tiempo que pasó, no pude publicar las pequeñas cosas que estaba probando, nunca es tarde para recomendar y continuar escribiendo en el blog que marca un poco los inicios de mi carrera profesional como Ing. en Computación.

Saludos!

Entradas populares