El software libre y el aprendizaje

En la actualidad una gran cantidad de procesos asociados al aprendizaje están directamente relacionados con las tecnologías.

Es normal en la actualidad que:

  • Para todas y cada una de las áreas del conocimiento exista software especializado que permita facilitar la pericia en dicha área.
  • Demos uso a mas de un computador diario (Equipo de escritorio en el trabajo, universidad, hogar, laptop, celulares inteligentes)
  • La realización de trabajos, proyectos o investigaciones requieran la utilización de distintas herramientas tecnológicas para su elaboración y presentación.

Es recomendable use el software libre existente para su profesión ó área de especialización, así como en todos los equipos de computación con los que interactue y a los cuales tenga acceso. Esto le traerá múltiples beneficios entre los cuales esta incluido uno muy importante,la capacidad de: “Aprender a aprender”

Entre otras cualidades, el software libre es idóneo para el aprendizaje porque permite el desarrollo de las siguientes facultades:

Creatividad: La cultura de crear por encima de consumir presente en el software libre termina siendo interiorizada por quien lo usa. El software libre minimiza las limitaciones que el proceso creativo pudiera encontrar en el uso de herramientas de software, usted no tendrá que pagar por software para soltar las riendas de su creatividad, no encontrara molestos virus, tampoco su software se desactivara o le estará recordando que usa una copia ilegal del mismo. Sigue leyendo

Poblando SQLite con valores aleatorios en Python

programación lenguaje identacion python sqlite

Siguiendo esta entrada seremos capaces de poblar una tabla creada en SQLite, cuyos valores (usuario, nombre, apellido, password, cédula, fecha nacimiento, sexo, etc…) de cada campo serán generados de forma aleatoria, es decir seleccionando un valor de un arreglo o un rango determinado. El encargado de hacer todo esto será un sencillo script en python que recibe como argumento la cantidad de inserciones que le queremos realizar a la base de datos, lal cual creará el script en caso de que no exista. Este código fue escrito originalmente para probar las capacidades de carga y volumen de SQLite, fue adaptado a esta entrada con fines didácticos.

Por lo tanto esta sencilla práctica nos servirá básicamente entre otras cosas para:

  • Aprender a usar SQLite con Python (conexión, crear tabla y hacer insert).
  • Aprender a generar o seleccionar valores aleatorios con Python.
  • Aprender a pasar y recibir argumentos en un script Python.
  • Otros tips sobre Python.

 

Código Fuente

[sourcecode language=”python”]

#!/usr/bin/python
# -*- coding: utf-8 -*-
# como usar: $time python test-sqlite.py 1000
import sys, datetime, sqlite3, hashlib
from random import *

db = sqlite3.connect("populate.sqlite")
dbconn = db.cursor()

crear_tabla = "CREATE TABLE IF NOT EXISTS usuarios( id_usuario INTEGER PRIMARY KEY AUTOINCREMENT UNIQUE NOT NULL, usuario varchar NOT NULL,"
crear_tabla = crear_tabla + "passwd VARCHAR NOT NULL, nombre VARCHAR NOT NULL, apellido VARCHAR NOT NULL, cedula VARCHAR NOT NULL,"
crear_tabla = crear_tabla + " fecha_nacimiento DATETIME NOT NULL, sexo char NOT NULL, perfil VARCHAR NOT NULL)"
str(dbconn.execute(crear_tabla))

list_nombre = [‘Lenin’,’Ramiro’,’Alan’,’Rey’,’Elicer’,’Ana’,’Hugo’,’Ramon’,’Radames’,
‘Rosa’,’Dayana’,’Maria’,’Josefina’,’Pedro’,’Juan’,’Jose’,’Andres’,’Andrea’]
list_apellido = [‘Hernandez’,’Avalo’,’Rondon’,’Lima’,’Ponce’,’Gonzalez’,’Sifontes’,
‘Bello’,’Cardozo’,’Bermudez’,’Barreto’,’Fernandez’,’Delgado’,’Rodriguez’]

if len(sys.argv) >= 2:
print "A continuacion se ingresaran ",sys.argv[1]," registros.";
else:
print "Este programa necesita el parametro de cantidad de registros a ingresar. Abortando Operacion.";
exit()

for i in range(int(sys.argv[1])):

fecha_nacimiento = datetime.datetime.today() – datetime.timedelta(days = randrange(1500, 25000))
nombre = choice(list_nombre)
apellido = choice(list_apellido)
cedula = str(randint(4000000, 21000000) )

sql = "INSERT INTO usuarios (‘usuario’,’passwd’,’nombre’, ‘apellido’, ‘cedula’, ‘fecha_nacimiento’, ‘sexo’, ‘perfil’) VALUES( "
sql = sql + "’" + nombre[0].lower() + apellido.lower() + "’"
sql = sql + ",’" + hashlib.md5(cedula).hexdigest() + "’"
sql = sql + ",’" + nombre +"’,’" + apellido + "’"
sql = sql + ",’" + cedula +  "’"
sql = sql + ",’" + fecha_nacimiento.strftime(‘%Y-%m-%d’) + "’"
sql = sql + ",’" + choice([‘M’,’F’]) + "’"
sql = sql + ",’" + choice([‘ADMIN’,’ANALISTA’,’CONSULTA’]) + "’)"

try:
dbconn.execute(str(sql))
print "Se ingreso correctamentente el registro Nº " + str(i+1) + ": " + nombre + " " + apellido
except:
print sql + "\n Ocurrio un error", "Guardando los datos del usuario."
exit()

db.commit()
[/sourcecode]

Sigue leyendo

pgFouine – Análisis de logs PostgreSQL en Debian

Análisis de logs PostgreSQL

PgFouine, analiza las bitácoras (logs) de la base de datos PostgreSQL para generar informes detallados sobre el uso y abuso de consultas SQL que bien sabemos tienen una gran incidencia en el rendimiento y la carga que tendrá el manejador de base de datos y el servidor que lo aloje, con fin de optimizar y realizar los ajustes necesarios para mejorar el desempeño del mismo. Esta escrito en el lenguaje de programación PHP y se distribuye como software libre por lo que podrían generar los informes con logo personalizado, agregar particularidades, funcionalidades, mejorarlo, etc…

¿Como funciona pgFouine?

PgFouine realiza un análisis al archivo de log generado por PostgreSQL con el cual genera informes, que nos indicara que consultas SQL son las que mas tardan, cuales son mas frecuentes, cuantas consultas DML están presentes en ese archivo log, inclusive generando gráficos los cuales nos facilitara mucho la tarea de determinar o hacer seguimiento al comportamiento de nuestras bases de datos.

En un sistema operativo Debian GNU/Linux ó alguno de sus derivados(Canaima, Mint, Ubuntu) lo instalamos con un sencillo:

#aptitude install pgfouine

También pueden descargar el código fuente y luego de descomprimir el .tar.gz ejecutar con php el archivo pgfouine.php

pgFouine puede ser usado de dos maneras. Configurando los logs que genera PostgreSQL para usar las facilidades de syslog del sistema operativo, o mediante salida estándar stderr que es como viene por defecto la configuración del log generado por el manejador de base de datos. El propio equipo de pgFouine recomienda usar la vía del syslog por que resulta mas eficiente para su software ya que mediante la via stderr se pudieran encontrar inconsistencias en el informe generado. Nosotros usaremos la via del syslog.

1.- Configurar correctamente los log de PostgreSQL

Abrir con el editor preferido (nano, vi, vim, emacs, edit, etc… ) el archivo de configuración de postgresql: /etc/postgresql/8.4/main/postgresql.conf

ubicar la sección:

#——————————————————————————

# ERROR REPORTING AND LOGGING

#——————————————————————————

descomentar la siguiente linea:

#log_destination = 'stderr'

y dejarla asi:

log_destination = 'syslog'

Sigue leyendo

Migración – Desde Password Gorilla a KeePass

Preámbulo – Gestión de contraseñas

Llega el momento en la vida de todo profesional en el área de informática o sistemas en que le corresponde tener acceso a múltiples sistemas, servicios ó recursos tecnológicos en general para usarlos, administrarlos o simplemente hacer disfrute de los mismos, es normal que eventualmente se añadan mas  elementos a nuestra lista de sitios a los cuales tenemos autorizado el acceso. Es bien sabido que como medida básica de seguridad no se debe usar la misma contraseña para todos los sitios informáticos a los cuales tenemos acceso puesto que en el caso de ser comprometida la contraseña de acceso a uno de los lugares a los que tenemos acceso estarían automáticamente comprometidos todos los sitios a los cuales tenemos acceso. Caso muy común, son los usuario sin conocimientos informáticos que colocan la misma contraseña a todos sus servicios en internet (correos gratuitos, redes sociales, comercio en linea etc… ) se compromete uno se comprometen todos. Todo este asunto se complica mucho mas puesto que no solo tenemos que lidiar con contraseñas distintas si no que en cada lugar tendremos usuarios distintos y seguramente cada uno de estos con diferentes niveles de acceso (usuario8, admin, lenin, root, leninmhs (twitter), leninmhs (gmail),lhernandez, lenin.hernandez, postgres,leninpg, etc… ), cuando son solamente tres o cuatro los sitios a los cuales tenemos acceso puede ser tolerable, pero cuando comienzan a ser mayor en cantidad y diversidad los sitios con los que interactuamos ya nuestra memoria no puede ayudarnos ni ser tan eficiente.

Al comienzo cuando no se tiene aun algo de experiencia y malicia en el área, se comienza haciendo y llenando una hoja de calculo con los nombres de usuarios, contraseñas y seguramente la referencia de a donde pertenece cada uno de estos (he tenido en exceso compañeros y conocidos que usan esta solución). Este no fue mi caso, yo me inicie creando un archivo de texto plano que escondía tontamente en alguna parte del sistema de archivo de los linux que usaba en aquel entonces precediéndole un punto (.) al nombre del archivo que almacenaba mis valiosas contraseñas, quedando algo así como /home/lenin/.misclaves el punto antecediendo el nombre del archivo significa que es un archivo “oculto”. Ambas soluciones son caóticas, malas y denotan falta de elegancia entre otras cosas por lo siguiente:

1 – Cuando abres el archivo para buscar y ver o copiar alguna contraseña le estas mostrando a todo tu alrededor todas las contraseñas y usuarios que tienes en ese listado. Mientras buscas alguna alguien habilidoso y malintencionado se aprende una o mas de ellas, ó sin mayor inconveniente alguien puede tomar una foto ó grabación mientras aparentemente está distraído con el celular.

Sigue leyendo

Actualizando a Kernel 3.2 en Debian Squeeze – [Backports]

debian-squeeze-kernel3.2

Sobre los Backports

Los Backports de Debian son repositorios con paquetes recompilados en la mayoría de los casos provenientes de la rama Testing de Debian y en menores casos desde la rama inestable, trabajados de tal forma que permitan mantener nuestra distribución estable a pesar de incluir en nuestra instalación versiones de programas y paquetes recientes.

Los Backports no son probados tan extensivamente como Debian Stable, así que siempre puede existir riesgo de incompatibilidad con otros componentes de Debian Estable. Úselo con cuidado y bajo su propio riesgo.

La recomendación es seleccionar paquetes específicos de backports que necesitemos, no usar todos los paquetes disponibles.

– Añadir los repositorios Backports

Añade la siguiente linea en /etc/apt/sources.list

deb http://backports.debian.org/debian-backports squeeze-backports main

– Actualiza tus repositorios

root@vm-squeeze:~#apt-get update

o

root@vm-squeeze:~#aptitude update

– Buscamos nuestro paquete objetivo

root@vm-squeeze:~# aptitude search linux-image
Sigue leyendo

La Libertad no admite grises – El Software Libre y el Estado

En el año 2006, se dio a lugar un debate entre el software privativo y el software libre en la asamblea nacional, como parte de la discusión necesaria para el entonces proyecto de “Ley  de Tecnologías de Información” conocida en ese entonces como la “Ley de InfoGobierno”.

Una excelente reseña del evento la realizo Luigino Bracci, en su blog a través de tres (3) posts:

  1. Realizado primero foro de Software Libre vs. Software Privativo en la Asamblea Nacional venezolana
  2. Segundo artículo sobre el Foro de Software Libre vs. Software Privativo en el Parlamento venezolano
  3. Tercer artículo sobre el foro en la AN: La defensa de Hernández-Novich al Software Libre

Aún hay muchas personas que se preguntan por que Venezuela y otros países del mundo están migrando sus plataformas tecnológicas al software libre. Tal vez una de las mejores explicaciones de la necesidad de los gobiernos de usar software libre la encuentran en la ponencia realizada por Ernesto Hernandez-Novich titulada La Libertad no admite grises que se encuentra a continuación:

..:: Descargar presentación usada en el vídeo ::..

Nota Curiosa

  • La gran mayoría de los aplausos provenían de los integrantes de la comunidad del Software Libre que estábamos presentes, pero inclusive la bancada de asistentes que llevo Microsoft al foro terminaron aplaudiendo en muchas oportunidades esta ponencia.

Como nota curiosa sobre esta ponencia Ernesto Hernandez-Novich, su autor me comento lo siguiente:

  • Nota que las láminas las hice “en el momento” y con una herramienta muy diferente a la que uso actualmente, así que son muy simples. Ese detalle poca gente lo vió.
  • Yo pedí intervenir de último, porque mientras los demás hacían sus presentaciones, yo preparaba mis láminas incluyendo todos los argumentos en favor del software libre, combinando las refutaciones a aquellos argumentos falaces del resto de los ponentes.

Disco Duro en GNU/Linux: mejora de la velocidad y de la seguridad

disco-duro-linux

Ponencia de Juan Piernas Cánovas sobre discos duros en sistemas basados en GNU/Linux, que tiene por nombre: Almacenamiento en disco: mejora de la velocidad y de la seguridad

A mi parecer la mejor explicación disponible en internet y en nuestro idioma sobre el funcionamiento a nivel lógico de discos duros, medidas de seguridad y mejoras para lograr mayor rendimiento en nuestros discos duros.

¿Tenemos que gastarnos mucho dinero para conseguir velocidad y seguridad?
pues la respuesta es que no. Y es que no por que para conseguir esas dos cosas podemos hacer uso del software.
“Y como veremos el software va a ser fundamental para conseguir tanto un incremento en velocidad, como un incremento de la seguridad.”

El vídeo nos ayuda a entender:

  • Estructura del almacenamiento
  • Planificadores de E/S
  • Organización de uno o varios discos duros
  • RAID (Redundant Array of Independent Disks) y LVM (Logical Volume Manager)
  • Ideas, consejos y sugerencias.
disco-duro-linux

Sistema de Ficheros y Sistema de Archivos como lo conocemos en Venezuela y latinoamérica es lo mismo.

Aquí les voy a responder a una de las preguntas que a lo mejor muchos de nosotros nos hacemos.

En Linux hay un montón de sistemas de ficheros (etx2, etx3, XFS, JFS, ReiserFS) , ¿Que sistema de ficheros utilizamos?

Pues la respuesta es que depende. No hay una única respuesta. Si hubiera un único sistema de ficheros, que fuera el mejor de todos, todos utilizaríamos ese sistema de ficheros.

Pues la realidad nos dice que depende de para que utilicemos el disco duro, que programa vallamos a ejecutar, que fichero vallamos a almacenar un sistema de ficheros puede ser mejor que otro.

Sigue leyendo

Explicación somera de Tweets de Tecnología

tweets de tecnología

Es muy común para los que usamos twitter pensar:

¿Los tweets enviados simplemente pasan a la historia?

¿Quién los leerá pasado un tiempo? y ¿Como harán para llegar a ellos?

¿Alguien podrá encontrar esos 140 caracteres transcendentales que enviamos en algún momento?

A la fecha de este artículo mi cuenta @leninmhs tiene solo 650 tweets enviados (140*650 = cerca de 91.000 caracteres aproximadamente), siquiera yo puedo encontrar alguno que me interese como referencia de un tema técnico,  para dárselos a un conocido, o para volverlo a transitar. La propuesta que traigo es sencilla, seleccioné los tweets orientados a tecnologías libres (privativas solo para criticarlas) sobre los que he escrito, de esta forma pueden encontrarlos a partir de un punto de referencia o de partida, buscando fácilmente desde San Google.

01-08-12 Cuando tengan que limpiar #html usen #Perl así: s/<(?:[^>'”]*|([‘”]).*?\1)*> faltaría limpiar &nbsp; cc @NelsonFx @iamemhn
Una expresión regular que quita o limpia etiquetas HTML de la cadena o bloque de texto que nos interesa, adicional se elimino el muy usado aun &nbsp; mediante otra expresión de sustitución. Muy útil y importante tener a la mano el siguiente código:
[sourcecode language=”perl”]
#!/usr/bin/perl -wmy $html = ‘
<html dir=”ltr” lang=”es”>
<head><meta charset=”UTF-8″ /></head>
<body style=”font-family: small-caps;”>
<br/><b> HTML A TEXTO  / HTML TO TEXT   </b><br/>
<br/><b> limpiar cadena de texto de html  / clean html text string  </b><br/>
<br/><div style=”border-radius:5px;box-shadow:2px #DFDFDF;”><b> quitar etiquetas html / remove html tags </b></div><br/>
<img src=”img/perl-regex-html.jpg” /><br/>
<br/><div><b><font color=”red”>&nbsp;Lenin Hernandez&nbsp;</font></b></div>
<etiquetafalsa><b>Twitter: @leninmhs </b></etiquetafalsa><br/>
<b>Lenguaje de Programación: &nbsp;&nbsp;</b>Perl<br/>
<b>Sistema Operativo:&nbsp;&nbsp;&nbsp;</b> todos en los que se interprete Perl.
</body>
</html>’;
$html=~ s/<(?:[^>'”]*|([‘”]).*?\1)*>//gs; #regex que limpia el html
$html=~ s/&nbsp;//g; #regex que limpia el &nbsp;
print $html;
[/sourcecode]
Listado de Entornos de Desarrollo (IDE) para programar en Python, en lo particular he usado y me gusta Komodo Edit. Muy ligero y practico comparado con NetBeans ó Eclipse (escritos ambos en Java de ahí el consumo exagerado de recursos…)
Conocemos manejadores de contenidos muchos en PHP, en Perl hay, en Python también hay, pero en Python y haciendo uso del Framework de Desarrollo por excelencia en Python Django es como mucho pedir para los que lo usan, pero si los hay.
16-06-12 @diadebian mi opción es la “D” me toca hoy terminar unos pdfs usando #Reportlab de #Python
La librería ReportLab es excelente para generar PDF en el lenguaje Python. Si usan alguna distro basada en Debian pueden comenzar a usarla con:
#aptitude install python-reportlab
Después de tenerla instalada, a programar en python y leer la documentación de reportlab. El pdf que programe hacia mucho uso de tablas, se inserto imagen y algún otro detalle. Quedo así:
reportlab-python-table-sqlite

reportlab-python-table-sqlite

Alta Disponibilidad con PgPool-II

esquema-pgpool-postgres

Aunque el común denominador suele referirse a estas soluciones de base de datos como cluster o clusterización por el hecho de que normalmente implica varios servidores, varias instancias o instalaciones de bases de datos distribuidas tal vez hasta geográficamente, lo correcto es referirse a “Alta Disponibilidad” del ingles High Availability (en muchos textos se abrevia HA) por que nos indica que la prioridad es “Mantener la Continuidad Operativa” de nuestro servicio, de nuestras operaciones, de la infraestructura tecnológica que soporta un negocio que simplemente no se puede dar el lujo de detenerse, o en caso de falla tiene que recuperarse y restaurarse bajo unas reglas definidas previamente, es por ello que hablamos de Alta Disponibilidad y no de cluster. Pgpool-II es una de las mejores y mas completa herramienta para brindar soluciones de alta disponibilidad en el manejador de bases de datos libres PostgreSQL. PgPool-II es software libre que trabaja como intermediario (middleware) entre clientes que se conecten contra postgres (psql, pgadmin, DBA’s, software, aplicativos, etc..) y otras instancias de bases de datos (nodos) para distribuir el trabajo o la carga entre los distintos nodos con los que cuente nuestro diseño o implementación de alta disponibilidad. Los clientes ven y se conectan a PgPool a través de una cadena de conexión común y silvestre como si fuera una base de datos mas, y a su vez cada uno de los nodos ven a PgPool como si fuera un cliente mas, de ahí que PgPool podría ser considerado desde este punto de vista como cliente y servidor al mismo tiempo. Sigue leyendo

Recorriendo y generando archivo de texto en Perl

perl_frase

perl-pdfComo bien deben saber Perl aunque siendo un lenguaje de propósito general, es especialmente bueno trabajando con manipulación de texto y archivos por lo que es un lenguaje de programación que los administradores de sistemas (sysadmin) aprecian mucho y con regularidad tienen que recurrir a el.

En las siguientes pocas lineas se realiza un proceso de lectura de un archivo.csv (texto plano delimitado por algún carácter) con los campos separado por “;” de ahí generamos una contraseña basada en MD5 a partir de uno de los campos del .csv , luego guardar estos valores incluyendo el nuevo campo que sera el hash MD5 del primer campo en un segundo archivo2.csv.

El trozo de código quedo en 19 lineas, pudiendo haber sido menos.

Sigue leyendo