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


#!/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()

Sigue leyendo

pgFouine – Análisis de logs PostgreSQL en Debian

analisis-log-postgres-pgfouine

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

password-gorilla-to-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.