codeplasticlesthack http://lesthack.com.mx programación linea por linea Wed, 05 Jun 2013 16:56:04 +0000 en-US hourly 1 http://wordpress.org/?v=3.5.1 EOL 2012 – BOL 2013. Feliz Año Nuevo. http://lesthack.com.mx/2012/12/31/eol-2012-bol-2013-feliz-ano-nuevo/ http://lesthack.com.mx/2012/12/31/eol-2012-bol-2013-feliz-ano-nuevo/#comments Tue, 01 Jan 2013 02:59:56 +0000 lesthack http://lesthack.com.mx/?p=2291

Estando a tan solo un par de horas para terminar este año, pienso mucho en el futuro. Este 2012 fue un año increíble, llego a nuestras vidas una personita que le ha dado sentido a todos esos años de extraño sentir, oscuros y febriles. Su nombre es Dalia, mi hija que acaba de cumplir 9 meses de vida.

Dalia es una bebe muy inquieta y curiosa, le interesa todo, todo en absoluto. Tan inquieta y curiosa es que nunca le intereso gatear, y en lugar de ello, comienza a usar sus pequeños pies cual si pudiera caminar, y sí, tuvimos que comprarle una andadera en la que se mueve por toda la casa.

Tiene una extraña inquietud de probar todo, lo que nos hace estar atentos a todo aquello que agarra con las manos y evitar que ocurra un accidente.

Sus primeras palabras balbucenates han sido “Mama”, y poco después ha comenzado decir “Papa”, aunque estas le han costado mas trabajo.

Aprendí a cambiar pañales, a prepararle el biberón con las medidas necesarias en leche, agua y temperatura. Aprendí a entender cuando tiene hambre, sed, sueño, o cuando necesita un cambio de pañales.

Hubo semanas que casi no dormimos por velarla cuando recién nació, o cuando estaba enferma. Y sufrimos cuando ella sufría por el dolor de una vacuna, o del reflujo que tuvo muy pequeña y le quemaba la garganta cuando le subía la comida.

Pero también reímos por cada paso que da en su crecimiento, cuando nos toca con sus manos el rostro, cuando se queda quieta sobre mi pecho, cuando sus ojos nos miran profundamente, cuando se queda dormida después de jugar tanto, cuando da vuelvas por la cama como las manecillas de reloj, y sobre todo cuando carcajea por algo simple que le causa gracia.

El 2012 será inolvidable, mas que cualquier otro año. Amamos a Dalia infinitamente.

Y así es, como me gustaría cerrar el año, agradeciendo a todas las personas que han formado parte del film de mi vida. Y espero que el 2013, si aun seguimos con vida, sea mejor, lleno de retos y aventuras nuevas, de emociones, de cosas que llenen de momentos ese álbum que llevamos dentro en algún lugar de nuestra mente y que de alguna manera esta conectado a nuestro corazón.

Aun hay muchas cosas que me gustaría realizar, tengo en mente proyectos que me gustaría llevarlos a cabo y no dejarlos como muchos otros ahí, olvidados.

También he pensado en dar punto final a este blog dado que me ha costado trabajo mantenerlo activo, y que considero es un paso a seguir para realizar otras cosas.

Y aunque no lo he decidido, es lo mas probable.

Gracias a todos aquellos pocos lectores que me han seguido, hay algunos que lo han hecho desde el inicio y eso es de agradecerse. Les deseo lo mejor para este nuevo ciclo, y que los Mayas no se equivoquen.

! Feliz Año Nuevo !

]]>
http://lesthack.com.mx/2012/12/31/eol-2012-bol-2013-feliz-ano-nuevo/feed/ 0
Obtener el último día del mes en PostgreSQL http://lesthack.com.mx/2012/10/29/obtener-el-ultimo-dia-del-mes-en-postgresql/ http://lesthack.com.mx/2012/10/29/obtener-el-ultimo-dia-del-mes-en-postgresql/#comments Mon, 29 Oct 2012 21:40:40 +0000 lesthack http://lesthack.com.mx/?p=2283 Últimamente he posteado artículos muy cortos con la finalidad de ayudarme a recordar cosas sencillas que en algún momento usé y pueda necesitarlo de nuevo en el futuro, y si existe alguien mas que lo usé también, pues que mejor.

En ocasiones, es necesario dar con el último día de un mes determinado, y aunque pueda parecer algo sencillo, puede complicarse si no conocemos algunas funciones simples de postgresql (pgsql).

El código es el siguiente:

    CREATE OR REPLACE FUNCTION last_day_month(tyear integer, tmonth integer) RETURNS varchar AS $$
    BEGIN    
        RETURN to_char(to_timestamp(tyear || '-' || to_char(tmonth,'FM00') || '-01', 'YYYY-MM-DD') + INTERVAL '1 month' - INTERVAL '1 days', 'YYYY-MM-DD');
    END;
    $$ LANGUAGE plpgsql;

La función es muy sencilla, recibe año y mes como parametros, los concatena asignándoles el día 1, le suma un mes y le resta finalmente un día. Esto devuelve el último día del mes.

La función no tiene validaciones, ya que es solo para fines prácticos y demostrativos.

]]>
http://lesthack.com.mx/2012/10/29/obtener-el-ultimo-dia-del-mes-en-postgresql/feed/ 1
Generación de un Password aleatorio en Django http://lesthack.com.mx/2012/09/21/generacion-de-un-password-aleatorio-en-django/ http://lesthack.com.mx/2012/09/21/generacion-de-un-password-aleatorio-en-django/#comments Fri, 21 Sep 2012 11:53:50 +0000 lesthack http://lesthack.com.mx/?p=2272 En muchos lugares existe la funcionalidad para cuando no recuerdas tu password tengas la posibilidad de resetearlo, tras lo cual se te envía uno nuevo a tu cuenta de correo electrónico.

Y si has estado pensando en agregar esta funcionalidad a tu aplicación, esto puede ayudarte mucho.

Generar un password aleatorio es tan ridículamente sencillo como hacer lo siguiente:

new_password = User.objects.make_random_password(length=15)

Y new_password tendrá una cadena como esta: ‘cWm6hx6C4MMa4R2′. La longitud predefinida es 10, pero nosotros podemos establecer el tamaño de nuestro password aleatorio.

Puedes visitar la documentación oficial aquí. ]]> http://lesthack.com.mx/2012/09/21/generacion-de-un-password-aleatorio-en-django/feed/ 0 Como formatear una fecha String en Python http://lesthack.com.mx/2012/09/19/como-formatear-una-fecha-string-en-python/ http://lesthack.com.mx/2012/09/19/como-formatear-una-fecha-string-en-python/#comments Wed, 19 Sep 2012 18:52:24 +0000 lesthack http://lesthack.com.mx/?p=2266 Formatear una cadena que contiene a una fecha a otro formato especifico es muy sencillo en python.

import time
 
str_fecha = "May 01 2011"
fto_fecha = time.strftime("%Y-%m-%d", time.strptime(str_fecha, "%b %d %Y"))
 
print fto_fecha

Para mas detalles, puedes consultar la documentación oficial sobre como interpreta el parser la cadena. ]]> http://lesthack.com.mx/2012/09/19/como-formatear-una-fecha-string-en-python/feed/ 1 Actualizar Serial de los campos ID en Postgresql http://lesthack.com.mx/2012/09/14/actualizar-serial-de-los-campos-id-en-postgresql/ http://lesthack.com.mx/2012/09/14/actualizar-serial-de-los-campos-id-en-postgresql/#comments Fri, 14 Sep 2012 20:17:17 +0000 lesthack http://lesthack.com.mx/?p=2257 Postgresql es uno de mis engines de base de datos favoritos, ya que puedes tener una gran libertad en elegir el lenguaje que quieres usar para tus funciones, procedimientos, triggers, etc.

Solo que hasta no hace mas de una semana lo volví a retomar para un proyecto laboral y del que necesita desempolvar los conocimientos aprendidos hace años.

Uno de los problemas con los que me he topado ha sido la serialización en las tablas, como ocurre en los campos nombrados id que se incrementan automáticamente, sin embargo, el problema suele presentarse cuando agregas información a la tabla usando un id especifico. Ejemplificaremos esto:

Usando una tabla como la siguiente

CREATE TABLE usuario
(
  id serial NOT NULL,
  nombre character(50),
  CONSTRAINT usuario_pk_id PRIMARY KEY (id )
)

Podemos ir agregando información son sentencias sencillas como las siguientes:

insert into usuario(nombre) values('jorge');
insert into usuario(nombre) values('andres');

También podemos hacerlo especificando el id y no habrá ningún problema.

insert into usuario(id,nombre) values(3,'alberto');

Sin embargo, al volver a insertar información sin especificar el id, para que éste sea generado automáticamente:

insert into usuario(nombre) values('pedro');

Obtenemos un grave error.

ERROR:  duplicate key value violates unique constraint "usuario_pk_id"
DETAIL:  Key (id)=(3) already exists.

Por lo que deducimos que el serial id no se actualizó cuando insertamos información especificando el id. El problema se resuelve actualizando este serial key de la siguiente manera.

SELECT setval('usuario_id_seq', (SELECT MAX(id) FROM usuario)+1)

Una solución simple a un problema simple.

]]>
http://lesthack.com.mx/2012/09/14/actualizar-serial-de-los-campos-id-en-postgresql/feed/ 3
Kaydara: El cazarrecompensas [The Matrix] http://lesthack.com.mx/2012/08/01/kaydara-el-cazarrecompensas-the-matrix/ http://lesthack.com.mx/2012/08/01/kaydara-el-cazarrecompensas-the-matrix/#comments Wed, 01 Aug 2012 22:43:49 +0000 lesthack http://lesthack.com.mx/?p=2247 En la mente de cada uno de los que fuimos testigos del arte que envolvió la saga legendaria de The Matrix siempre ha existido ese universo futurista y dominado por las maquinas en el que, de forma fantasiosa deseamos ser parte.

Muchos incluso jugaron a desarrollar historias alternas, precuelas y secuelas como el proyecto Animatrix que sin duda no dejan de ser atractivos pero que nunca podrían compararse con el film original.

Sin embargo, existe uno que, a mi punto de vista se le acerca bastante y que hace recordar aquellas sensaciones que nos provocaron (en aquel entonces) los efectos especiales, el hacking, o la simbología entre la realidad y el código.

Kaydara, un cazarecompensas con talentos y virtudes que nos hacen recordar a cierto heroe, y quien, niega rotundamente que exista el elegido, y el cual, si existiera, él mismo se encargaría de derrotarlo y entregarlo para cobrar su precio.

El mediometraje fue realizado por artistas franceses independientes (Raphael Hernandez y Savitri Joly-Gonfard) y que sorprenden con la calidad con el que fue hecho.

Dejo embebido el mediometraje con subtitulos en español integrados, espero lo disfruten tanto como yo.

]]>
http://lesthack.com.mx/2012/08/01/kaydara-el-cazarrecompensas-the-matrix/feed/ 0
El mágico Torrent Search http://lesthack.com.mx/2012/05/17/el-magico-torrent-search/ http://lesthack.com.mx/2012/05/17/el-magico-torrent-search/#comments Thu, 17 May 2012 15:22:14 +0000 lesthack http://lesthack.com.mx/?p=2226

Con todo lo que ha pasado últimamente con servicios de hospedaje de archivos como Megaupload, Filesonic, Filserve, siempre he confiado que la transmisión P2P será la que prevalecerá. Aunque hay muchos intentos por parte de las industrias para obligar a que los gobiernos den ordenes a los proveedores de ISP de bloquear el tráfico bitorrent, siempre habrá manera de hacerlo.

Sabemos de sobra que lo que no han querido aceptar estas industrias es que deben cambiar sus modelos de negocios hacía internet. Netflix lo ha hecho bien hasta ahora.

Lo comentaba Wil Wheaton ayer, bloquear el tráfico de bitorrent en Internet por que algunos compartirán archivos piratas, es como cerrar las carreteras por que algún ladrón de bancos podría utilizarlas para escapar después de un robo.

En fin, y al punto de este post. Hace unos días, me descargue debido a este articulo, un maravilloso programa llamado Torrent Search, que hace la tarea de búsqueda de torrents tan sencilla sin tener que googlear nada en lo absoluto. La búsqueda la realiza en una gran cantidad de servidores, mismos que pueden agregarse a través de plugins.

Puedes incluso configurar que, una vez seleccionado el torrent, lo envíe a tu cliente de descarga de torrents al instante.

El programa esta desarrollado con Python y GTK, tiene licencia GPL así que es posible meterle mano sin problema. También existe un paquete .deb para distribuciones Debian y Derivadas.

]]>
http://lesthack.com.mx/2012/05/17/el-magico-torrent-search/feed/ 2
Autenticación Windows con LDAP y PHP en Linux http://lesthack.com.mx/2012/05/08/autenticacion-windows-con-ldap-y-php-en-linux/ http://lesthack.com.mx/2012/05/08/autenticacion-windows-con-ldap-y-php-en-linux/#comments Tue, 08 May 2012 15:17:40 +0000 lesthack http://lesthack.com.mx/?p=2207 Últimamente en el ámbito laboral he tenido que implementar algunas cosas nuevas con las que nunca me había topado, y sin duda, no he querido dejar pasar la oportunidad para documentarlo y compartirlo.

En ocasiones, puede resultar muy útil implementar sistemas de autenticación genéricos en el lugar donde trabajas, no todos lamentablemente usan Linux y por el contrario, están tan acostumbrados a usar un sistema de autenticación basado en un Windows Server sobre un dominio.

Por tal motivo, si desarrollas una aplicación web bajo un servidor linux, pero necesitas autenticación existente en un Servidor Windows tienes la posibilidad de hacerlo mediante LDAP.

Según wikipedia: LDAP son las siglas de Lightweight Directory Access Protocol (en español Protocolo Ligero de Acceso a Directorios) que hacen referencia a un protocolo a nivel de aplicación el cual permite el acceso a un servicio de directorio ordenado y distribuido para buscar diversa información en un entorno de red. Habitualmente, almacena la información de autenticación (usuario y contraseña) y es utilizado para autenticarse aunque es posible almacenar otra información.

Por ello, es posible utilizarlo de intermediario entre nuestra aplicación y el sistema de autenticación de Windows. En mi caso especifico, desarrolle algunas aplicaciones web’s basadas en PHP y Apache2 corriendo bajo un Ubuntu Server, así que, mostraré solo el pedazo de código que me permite autenticar.

    function authLDAP($username, $password){
        $ldap_domain = 'midominio';
 
        $adServer = "miservidor";
        $ldapconn = ldap_connect($adServer) or die("Could not connect to LDAP server.");
 
        $ldaprdn = $username;    
 
        # Descomentar si la App corre bajo Apache2 sobre Windows Server
        #ldap_set_option($ldapconn, LDAP_OPT_PROTOCOL_VERSION, 3)

        $ldapbind = ldap_bind($ldapconn, "$ldaprdn@$ldap_domain", $password);
 
        if($ldapbind)
            return true;
        else
            return false;
    }

Fácil, sencillo y útil. Si necesitas mas información o detalles técnicos del modulo LDAP para PHP puedes consultarlo en http://php.net/manual/en/book.ldap.php.

Como punto importante, hay que tener el módulo LDAP para PHP activado. Así que si estas en un servidor Debian/Ubuntu, solo basta con instalar los siguientes paquetes.

$ sudo apt-get install php5-ldap php-net-ldap php-net-ldap2 php-auth

Y confirmar que esté realmente activo el modulo en el archivo /etc/php5/conf.d/ldap.ini de la siguiente manera.

; configuration for php LDAP module
extension=ldap.so

Reiniciamos Apache.

$ sudo /etc/init.d/apache2 restart

Y ya tendremos el modulo activado.

Notas adicionales:

Si tu aplicación web esta corriendo sobre un Apache2 instalado en un Windows Server, activar el modulo basta con descomentar la linea en el archivo php.ini quitando el punto y coma “;”.

extension=php_ldap.dll

Y añadir los módulos al iniciar Apache2 en el archivo httpd.conf

LoadModule authnz_ldap_module modules/mod_authnz_ldap.so
LoadModule ldap_module modules/mod_ldap.so
]]>
http://lesthack.com.mx/2012/05/08/autenticacion-windows-con-ldap-y-php-en-linux/feed/ 4
FLISOL Celaya 2012: Plática “Python + WebKit” http://lesthack.com.mx/2012/04/27/flisol-celaya-2012-platica-python-webkit/ http://lesthack.com.mx/2012/04/27/flisol-celaya-2012-platica-python-webkit/#comments Fri, 27 Apr 2012 14:39:04 +0000 lesthack http://lesthack.com.mx/?p=2193

Es el 4to año consecutivo que este evento se lleva a cabo en Celaya, única sede del estado de Guanajuato por desgracia. Evento que es realizado dentro del Instituto Tecnológico de Celaya y en el que estuve involucrado en organización y coordinación durante 2 años (2009, 2010).

Este año (como el pasado) estuve de invitado para impartir una plática, y en este caso, con la temática de algunos experimentos que durante mis ratos libres (ya realmente son pocos) he estado probando con python y webkit.

Webkit ya es considerada como una plataforma para aplicaciones, podemos embeberla sencillamente con python para transportar una aplicación web a una aplicación de escritorio, y aprovechar toda la tecnología que Apple, Google y la comunidad ha venido desarrollando.

Los a credos a Python como yo, sabemos que este lenguaje es hermoso, pero mas allá de la estética en sintaxis, encontramos una infinidad de librearías para casi todo, y es por ello que juega un papel importante.

Dejo la presentación para aquellos que quisieran darle una simple vista, y en breve subiré los pocos códigos de ejemplo que presenté.

]]>
http://lesthack.com.mx/2012/04/27/flisol-celaya-2012-platica-python-webkit/feed/ 1
PyShare: Una forma fácil de compartir archivos en la red http://lesthack.com.mx/2012/03/22/pyshare-una-forma-facil-de-compartir-archivos-en-la-red/ http://lesthack.com.mx/2012/03/22/pyshare-una-forma-facil-de-compartir-archivos-en-la-red/#comments Thu, 22 Mar 2012 20:03:37 +0000 lesthack http://lesthack.com.mx/?p=2157 Pyshare es un mini proyecto que inicié hace poco mas de un mes, desarrollado en python + gtk, y que permite, de forma muy fácil y sencilla, crear un servidor del tipo http en segundos con la finalidad de compartir archivos en red.

En muchas ocasiones, resulta mas que tedioso tener que estar configurando alguna forma de compartir información entre una maquina y otra, y mas, cuando se trata de compartir archivos de un sistema operativo Windows a Linux o viceversa.

Los que usamos linux y programamos en python, podemos recurrir a una sencilla utilería para iniciar un pequeño servidor http tecleando una linea en la terminal como la siguiente

$ python -m SimpleHTTPServer 9914

En donde, 9914 es el puerto en donde el servidor estará a la escucha.

Es sencillo, fácil y muy útil, pero sabemos que no todos le damos a la consola, o no somos programadores, por lo que puede resultar no tan útil. Así que me dedique a la tarea de crear una pequeña interfaz gráfica que permita hacer lo mismo, pero para aquellos usuarios que no quieren tocar la terminal.

Pyshare tiene una interfaz muy simple, solo hay que seleccionar la carpeta a compartir, la interfaz en la que se dará a conocer, y el puerto.

Entonces ahora ya es posible compartir archivos a través de una dirección IP y el puerto seleccionado, y mediante un navegador web poder indagar y descargar archivos.

Nota: Si en el directorio existe un index.html, lo reconocerá tal cual lo hace un servidor HTTP.

Y como es costumbre ya, he subido un repositorio a github en donde pueden hacerse del proyecto, estudiarlo, usarlo, modificarlo y si es posible mejorarlo.

https://github.com/lesthack/py-share

Estoy a la tarea de generar algunos paquetes .deb para su fácil instalación en sistemas Debian/Ubuntu y derivados, y en cuanto los tenga listos, los publicaré.

Por lo pronto, una manera fácil de descargarselo para probarlo es la siguiente:

$ wget -c -O py-share.tar.gz https://github.com/lesthack/py-share/tarball/master
$ tar zxvf py-share.tar.gz
$ cd lesthack-py-share-40d0046/
$ ./py-share.py &
]]>
http://lesthack.com.mx/2012/03/22/pyshare-una-forma-facil-de-compartir-archivos-en-la-red/feed/ 1