CategoríaProyectos

Saporm: Simple abstraccion de bases de datos

Hace un par de dias venia en el bus hacia mi casa y se me ocurrio una idea. Muchos pensara que ya existe esto que se me ocurrio, que existen frameworks, etc. Pero mi idea es hacer algo mas simple aun, se me ocurrio la idea de desarrollar un ORM (Object Relational Mapping) simple, que me permita de manera sencilla abstraer la base de datos para poder trabajarla como objeto. Mientras veina en el bus, pensaba el modelo logico para llevar acabo esta idea, luego de unos dias por fin he podido empezar a codificar lo que será desde ahora en adelante: Saporm. Como Hibernate para Java o Doctrine para PHP, la idea de este ORM es hacer las cosas aun mas faciles y mi idea, principalmente, es orientarla a proyectos pequeños y no a enterprise.

La idea es que este ORM/Framework haga todas las tareas de consultas y accesos a la base de datos de manera mas simple, por ejemplo, en Saporm, para que el framework sea capaz de abstraer la base de datos solo hay que crear una clase con los atributos correspondientes, segun los campos que tenga la tabla de la base de datos.
Por ejemplo, tenemos dentro del directorio “model” la siguiente clase:
(Usuarios.class.php)

  1. < ?php
  2. class Usuarios extends Core{
  3.    /* Variables necesarias por el ORM, es necesario que se declaren */
  4.    public $table_name;
  5.    public $socket;
  6.  
  7.    /* Variables del usuario */
  8.    public $id;
  9.    public $username;
  10.    public $password;
  11. }
  12. ?>

Saporm se encargará, automaticamente, de mapear la tabla “Usuarios” con sus atributos “id, username y password” y nos permitirá trabajarla como si de un objeto se tratara. La herramienta nos creara un objeto con el nombre Usuarios que contará con varios métodos y atributos, como por ejemplo:

$usuarios->search();
$usuarios->loadData();
$usuarios->select();
$usuarios->query();
$usuarios->insert();
$usuarios->update();

Seguir leyendo

Cambio de servidor

He cambiado el blog de servidor, se que es algo irrelevante, pero igual se los comento. Antes estaba alojado bajo el gentil auspicio del padre de Pons, quien tenia un servidor donde alojaba sitios de su empresa y donde yo, humildemente, tenia mi blog. Por varias razones decidi comprar un VPS, uno que este dentro de mi alcance, no es tan poderoso pero cumple con mis requerimientos. Tiene 18Gb de disco duro y 540Mb de ram, lo usaré para alojar este blog y otros proyectos que tengo en mente.

El servidor lo compré por recomendación de vostorga en Linode. Espero que me sirva.

Eso.

sensor-mouse: Sensor de movimiento con un mouse

Sensor Mouse es un proyecto que nos permite monitorear el estado de las puertas y ventanas mediante algun dispositivo conectado a un computador (generalmente mouse).
Ya escribi sobre este proyecto hace un par de meses, pero la informacion de como hacerlo ya no esta accesible, asi que publicare el articulo completo.

Materiales:
En este caso utilizaremos un Mouse optico (cualquier marca) USB, pero tambien puede ser un mouse no-optico y de cualquier interfaz (usb, ps/2, etc) y algunas rejillas para sostener el mouse sobre la puerta dejandolo a una distancia razonable para que active el sensor, acomodaremos la sensibilidad con materiales extras como carton o plastico que nos ayuden con el roce de la puerta con el Mouse.

  1. Mouse:
  2. Cable de red o usb para extension: Con este cable de red o cable largo usb podremos crear una extension por si nuestro PC esta lejos de la puera o ventana.
  3. Cinta adhesiva: Para poder fijar nuestro mouse a la plataforma que crearemos donde se generara el roce.

Preparacion (el hack):

Abrimos nuestro Mouse y lo desconectamos del cable, lo dejamos libre

Creamos alguna plataforma de apoyo en la pared donde este la ventana o la puerta que queremos monitorear y montamos el mouse con la imaginacion de cada uno:

Cuando ya tengamos todo montado, debemos alargar el cable usb del mouse para que llegue hasta nuestro computador.  Se puede hacer cortando a la mitad el cable del mouse y añandiendo una extension de cable de red, no muy larga, 3 o 4 metros.

Cuando tengamos la conexion hecha revisamos que todo quedo en orden, conectamos el un extremo del cable al computador y el otro exremo al mouse, verificamos que funcione perfecto, que se encienda la luz, verificamos los logs de systema dmesg|tail o tail /var/log/syslog y todos esos sintomas que nos dicen. Dejamos ejecutando en una consola el comando: cat /dev/input/mice si es usb o cat /dev/psaux si es un mouse ps/2, una vez hecho esto vamos a donde esta el mouse y calculamos una distancia apropiada para que al cerrar o abrir la puerta (o ventana) el mouse detecte el movimiento, cuando en la consola donde dejamos corriendo el comando aparezcan caracteres raros es porque ya esta listo. Si les queda muy alto el mouse de la puerta, puede agregar un carton o un plastico (como un ala) que haga el roce con la puerta.

Cuando esten todos estos pasos cumplidos, tendremos nuestro sensor ya instalado, lo probamos abriendo y cerrando la puerta y vamos viendo la salida del comando cat en nuestra consola. que el mouse fue detectado.

Podemos asegurar nuestro Mouse para que quede bien firme.

Seguir leyendo

ooPhBot: Bot para IRC escrito en PHP

Hace algun tiempo programé un bot para IRC en PHP, este bot tenia varias caracteristicas y opciones, usaba una base de datos mysql para almacenar lo que iba “aprendiendo”. Dentro de ellas están:

  • Distintos niveles de privilegios (administrador, owner de un canal, access de un canal)
  • Funcion para realizar busquedas en Google (!google <palabra>)
  • Function para buscar definiciones en Google (!define <termino>)
  • Distintas funciones de administracion de usuarios (!admin|access add|del|list)
  • etc

Algunas de las caracteristicas de este bot es su proteccion anti flood que se define por el owner del canal y el Oráculo (Oracle; término puesto por mi a esta funcionalidad) que permite enseñar al bot definiciones de palabras para luego ser consultadas (!learn palabra significado, ?? palabra).
Este bot corre bajo php-cli (command line interface), es decir, por consola y tambien puede ser ejecutado desde la web. Queda trabajando como un demonio.

Version Actual:
La version actual es la misma desde enero del año 2007, no he vuelto a tocar el codigo (aunque sigo usando el bot), funciona todo menos las busquedas de terminos y definiciones en Google que, me imagino, hay que hacerle un par de modificaciones al codigo para que parsee bien las busquedas.

Changelog

VERSION 1.0.4 – 26 ENE 2007

– Cambiado el sistema de autentifiacion. Se verifica que el usuario
este identificado con NickServ.

VERSION 1.0.3 – 19 ENE 2007

– Se agrego a la clase Bot el metodo TXTflood( … ) que verifica
el flood de texto de un usuario en un canal especifico, esta opcion
puede ser habilitada o desactivada por usuarios con privilegios mediante
!flood on|off en el canal.
– Se ha reescrito la clase que permite la identificacion y permite que los usuarios
tengan distintos privilegios. (CHAdmin.)
– Corregido el bug que expulsaba de manera distinta a !k o !kick (0 nick o [spacio] nick)
– Agregada la clase Google con los metodos !define y !google.

VERSION 1.0.2 – 16 ENE 2007

– El bot corre en segundo plano (fork).
– Agregada una funcion extra en la clase del bot usando el binario ‘numerador’
ubicado en el directorio extras, la funcion es !num NUMERO.
– Fixeado bug que causaba la caida del bot al enviar dos veces el comando
para setear una clave. (reportado por Pons)
– Agregado soporte para unrealircd (antes solo habia sido probado en bahamut).
– Testeado en dancer-ircd, bahamut, Hyperion y unrealircd.

VERSION 1.0.0 – 15 ENE 2007

– Corregido el fallo que cerraba la conexion a la base de datos por idle.

Descargar:
Version 1.0.4: zip | tar.gz | tar.bz2

Hackmeeting ’08

Ya empezamos la organizacion y coordinacion para realizar el HM (Hackmeeting) correspondiente al año 2008, al igual que en años anteriores (hackPrendiz) cerca de esta fecha se reunen grupos de personas a organizar lo que se denomina “Encuentro de Hackers”, una instancia donde se reunen distintos grupos sociales y personas a compartir y a aprender.

0lafo redacto una carta de invitacion y motivacion para que las personas empiecen a coordinarse para lograr que este encuentro se realice con exito. Las fechas tentativas son a mediados de Noviembre y se espera que dure dos dias (un fin de semana). Como todos los años, esperamos que llegue gente de distintos lugares y con distintas cosas que aportar.

Convocatoria hackmeeting

Este mensaje es una invitación abierta para todos los usuarios, personas entusiastas de las tecnologías libres, libertad de la información y publico en general. De Organizar el hackmeeting Chile 2008, proponiendo y plagiando el trabajo, actividades y difusión del evento. como viene siendo habitual, desarrollar una red de actividades y encuentros entorno al hacktivismo, el aprendizaje, la informática y telemática y sus dimensiones sociales; en un fin de semana en el que se manifiesta la libertad de compartir, que es el hackmeeting (HM).

Para la organización y consulta se a dispuesto la siguiente lista de correo:

https://www.entodaspartes.org/mailman/listinfo/hackmeeting

El HM es un evento participativo en el que la dicotomía organizador/asistente se diluyen en la necesidad de autogestionar el encuentro colectivamente. Entendemos el HackMeeting como una red de actividades auto organizadas (talleres, charlas, mesas redondas, exposiciones, foros, etc.) que cualquier persona es libre de coordinar, presentar, difundir dentro del hackmeeting.

Pronto estara disponible una web con mas informacion, por mientras pueden unirse a la lista de discusion para la organizacion y corrdinacion.

Olimpiadas Nacionales de Informatica (ONI)

oni La Olimpiada Nacional en Informática (ONI) es el concurso de informática para los estudiantes chilenos que se encuentren cursando enseñanza media durante el presente año o recién egresados. Los concursantes compiten individualmente, e intentan obtener la máxima puntuación resolviendo un conjunto de problemas informáticos durante las dos sesiones del concurso (online y presencial). Los problemas son algorítmicos y deben resolverse programando en un ordenador personal.

La ONI se organiza en Chile bajo los auspicios de la Ilustre Municipalidad de Buin.

El principal objetivo de este proyecto es contribuir a la educación de los jóvenes incorporando la informática como una pieza fundamental en su desarrollo, y además reconocer a aquellos que demuestren talento en el área para orientarlos y apoyarlos en su futura formación.

La ONI se realizará el día 21 de Junio de 14:00 a 18:00 horas en su primera fase en línea y el día 19 de Julio en su fase presencial (y final). Esta última se llevará a cabo en la comuna de Buin. Para la fase presencial, aquellos participantes provenientes de regiones podrán alojarse en Buin con un día de anterioridad.

Los temas a tratar en la ONI son los siguientes:

Estructura de Datos
Algoritmos de Ordenación
Algoritmos de Búsqueda
Grafos
Programación Dinámica
Mínimo Coste
Backtracking

 

Más info en onibuin