Planet

Actualización de Megaupload.

Al llegar de clase esta mañana me encuentro con un par de comentarios sobre el mal funcionamiento de Tucan con Megaupload, así que esperando lo peor entro a su pagina para ver con mis propios ojos que han rediseñado la pagina y no solo esta sino también el captcha!

Así que el trabajo que llevo realizando estos últimos días sobre el sistema de subidas va a tener que quedarse en segundo plano mientras intento arreglar el estropicio que se ha formado.

Las descargas tanto premium como anónima de Megaupload actualmente no funcionan.

Un saludo, Crak.

Actualización de Longomatch 0.12.3

Pequeña actualización de LongoMatch que corrige un error del editor de plantillas. Un error en el lector de plantillas hacía que se leyese el tiempo de parada siempre.
La nueva versión está lista para descargarse desde la forja

Nueva Categoria

Hola a todo el mundo voy a montar una nueva categoría que la he llamado Frase CSI por que no todo tiene que ser codificación, problemas que tengo algunos, creo que también hay que reírse de este mundo de 0 y 1.
De donde viene el nombre ayer me quede viendo la serie de CSI , es una serie que bueno no es la mejor del mundo pero para pasar 20 minutos se puede ver , hay veces que hacen cosas asombrosas como de una mini-foto ampliarla como si la hubiera hecho el Hubble y sin perder calidad o sacar datos de sitios imposibles vamos que en EE.UU tienen una ID tatuada en el trasero , pero ayer fue la máxima , situación el malo de turno secuestra a un chaval que tiene un blog que edita en tiempo real tipo messenger oTwitter y salta una con cara de preocupación y dice la mejor frase:
Hago un proyecto en VISUAL BASIC para sacar la IP
Mujer de dios para ser CSI eres algo corta ya hay programas para hacer cosas parecidas y si te vas a picar uno joder no lo hagas en Visual.
Por eso creo la sección esta, en su honor . Por cierto no le sirvio de nada el programa , por si alguien creia lo contrario.

Objetivos

Se pretende crear un programa que proteja a Wikipedia en español (y por extensión a cualquier página web que utilice el software MediaWiki) de usuarios maliciosos que introduzcan modicaciones indeseadas. Para ello es necesario completar cada uno de los siguientes objetivos:

  1. Lectura de los cambios que se producen en los artículos en tiempo real.
  2. Análisis y valoración de cada uno de los cambios capturados en el "objetivo 1".
  3. Tomar las acciones oportunas: actuar si el cambio es malicioso o dejarlo pasar si no supone peligro.
  4. Mantener un log de las acciones realizadas para su depuración en caso de error.

Más adelante se hará una distinción entre modicaciones meramente maliciosas y ediciones de prueba. En cualquier caso, se trata de aportaciones que deben ser deshechas, pues no contribuyen a la mejora de Wikipedia.

Documentación del proyecto

Recientemente he presentado Libgann como mi proyecto final de carrera. He pensado que sería interesante colgar la memoria. Aquí os paso los enlaces:

La memoria a sido creada bajo licencia FDL.

Update Site para eOPSOA

No sé si alguno se acordará de algunos años como estaba el panorama en GNU/Linux. Yo comencé cuando la cosa iba más o menos bien, allá por el año 2002, y mi primera distribución fue una RedHat 7.3. Por aquel entonces estaba comenzando el tema de las conexiones de banda ancha (aunque realmente no eran tan anchas... ONO ofrecía por aquel entonces 64 kbps) y aunque poco a poco se iba haciendo hueco Internet en casa, no éramos tantos los afortunados internautas. Decía que mi primera distro fue una RedHat 7.3, y aún recuerdo cómo descubrí lo que por aquel entonces se llamaba dependency hell cuando intenté instalar algún que otro RPM suelto que encontré por ahí: el Compu's Messenger (el abuelo del AMSN actual), los infames drivers binarios de la NVIDIA, el JRE 1.4 de Sun, algún que otro juego... etc. Era una gracia eso de tener el modem de 56 kbps y ver como un paquete depende de otro, otro de otro, otro de otro... y después de descargar 60 megas de paquetes descubrir que has liado tal pisto, que no hay otra solución casi que reinstalar de 0 el sistema. Qué tiempos aquellos, luego descubrí Debian y su bendito apt-get; fue entonces cuando descubrí el cielo. Pero eso es otra historia.Todo lo anterior venía a cuento porque parece mentira, y en pleno año 2009 algunas cosas no han cambiado tanto, y si no andas con tiento te puedes encontrar con el mismo problema. No sé si lo habré comentado antes, pero Eclipse es modular 100%... en realidad todo está descompuesto en n-mil plugins. Eso tiene sus ventajas, y a la vez sus desventajas. Quizá su mayor desventaja es la instalación de plugins nuevos, que como no tengas cuidado te puedes encontrar con el problema que he comentado antes: un infierno de dependencias. A partir de la versión 3.2 (creo) Eclipse introdujo un componente muy interesante llamado Update Manager, donde se añadían Update Sites desde los cuales te puedes bajar plugins y features, y con un poco de buena suerte se calculaban las dependencias de tal forma que no tuvieras que sufrir la tortura de resolverlas a mano. Versión a versión ha ido mejorando la cosa y en la versión 3.4, aunque es lento como el infierno, es prácticamente usable.Aprovechando que el proyecto está avanzando poco a poco, y que ya hay algunas cosas que se pueden ver, pensé que quizá sería buena idea montar un Update Site para distribuir de forma rápida el proyecto, y que quien estuviera interesado probara el software no sufriera tortura. Quién sabe, a lo mejor así alguien se anima a rellenar algún que otro bug report... no sé. Hablé con la gente del Centro de Datos de la ESII (gracias Juan Carlos!!! :-)) y han sido tan majos de proporciarme un sitio donde poder ir colgando el Update Site. La URL es http://eopsoa.albacete.org, a que mola ¿verdad? ;-)Bueno, para ser sincero no he colgado todavía nada, pero por ahora he escrito un HTML guarro donde describo de forma somera el proyecto, y las instrucciones para descargar las fuentes y los binarios. Cuando termine un par de cosas que estoy implementando lo subo, palabra O:-)He estado pensando en el estado del blog y del proyecto, y creo que no he sido capaz de describir muy bien de qué va mi proyecto. En parte ha sido por desidia mía, pero por otra parte también es verdad que estoy que no me cojo el culo... por eso he pensado que lo mejor sería colgar la prememoria del proyecto que envié cuando inscribí el proyecto en el CUSL, y que aquel que esté interesado que le eche un ojo.Y nada más por ahora, dentro de poco escribiré otra entrada donde intentaré comentar el estado del proyecto, y de las ideas que tengo para el futuro, que creo que pueden ser interesantes.Happy hacking!!

Configuración del SPI

Esta semana la he dedicado a realizar una primera clasificación sobre los prototipos de funciones típicos en cualquier librería de comunicaciones, evidentemente debajo del típico Send y Read existen otras tantas de más bajo nivel, necesarias para la comunicación con el hardware. Intentaré ir desglosando todo este conjunto de funciones básicas y explicándolas en los siguientes post.
Lo primero que debemos implementar es la comunicación más básica, y la que se producirá entre Arduino y nuestro shield, ArCan, para que en capas superiores de Software podamos enviar y recibir mensajes CAN. Esta comunicación se realiza sobre SPI y debemos prestar una especial atención porque serán los pilares de nuestro sistema.
Básicamente el SPI se implementa con un registro de desplazamiento síncrono, creo que la siguiente figura es muy instructiva y está sacada del datasheet del ATmega8.
En este caso el dispositivo como Master es el encargado de generar la señal de reloj, si nos fijamos un poco podemos ver que cuando se produzcan 8 pulsos en SCK, los datos contenidos en los registros se habrán intercambiado en su totalidad, y esta es la forma con la que se comunican. En las siguientes líneas intentaré desglosar de forma práctica y en nuestro escenario concreto, los distintos pasos para realizar esta comunicación.
En las especificaciones de SPI existen básicamente 4 modos de comunicación, en términos generales respetan la misma política pero sin embargo no son compatibles, dependiendo del dispositivo que usemos pueden implementar 1 o varios de estos modos. La diferencia entre ellos es el nivel de tensión para arrancar y los flancos de la señal de reloj en los que se toma la muestra. En nuestro caso particular para saber en que modo debemos configurar nuestros dispositivos tendremos que recurrir al datasheet de cada uno de ellos.
Empezaremos revisando el datasheet del MCP2515 que es el dispositivo esclavo y el que va a imponer el modo. En el capítulo 12, página 63, están definidas todas las especificaciones referentes al interfaz SPI. Como podemos observar en el primer párrafo el MCP2515 es capaz de soportar el MODO 0,0 (0) y el 1,1 (3).

Para comprender un poco como tenemos que realizar la comunicación, es necesario entender el cronograma. En primer lugar, activamos al dispositivo bajando la línea CS, ChipSelect, es necesario hacerlo de forma manual y explícita en nuestro programa. Una vez activado, tendremos que mandar el dato por SI, y poner a funcionar el reloj, SCK. Una vez terminada la transferencia de un Byte ponemos a nivel alto CS, para deseleccionar el dispositivo, y paramos nuestro reloj SCK.
En nuestro caso ATmega8 que es el microcontrolador que incorpora Arduino, cuenta con una Interfaz SPI Hard, esto facilita nuestro trabajo que simplemente se reduce a configurar, mediante los registros adecuados, este periférico. Los registros son:

  • SPCR (SPI Control Register): Es el que nos permite configurar los distintos aspectos del periférico, Interrupciones, habilitación, modo, Master/Slave y frecuencia para el SCK.
  • SPSR (SPI Status Register): Este es el registro de estado, y nos informa mediante los distintos Flag/bits el estado del periférico.
  • SPDR (SPI Data Register): Este es el registro donde se vuelcan los Bytes a enviar, y tras el envío encontraremos en él, el Byte recibido.

Lo único que queda por saber, es cual será la frecuencia máxima que sorporta nuestro controlador CAN. Para eso es necesario recurrir nuevamente al datasheet del componente para extraer la frecuencia máxima con la que trabaja.
El primer parámetro es el que buscamos, 10MHz, como Arduino trabaja con cristales de 16MHz, tendremos que configurar el divisor en 2, y trabajar a con un SCK de 8MHz.
Ya tenemos todos los datos necesarios para inicializar la interfaz SPI de Arduino, esto lo implementaremos mediante la siguiente función.
void mcp2515_init()
{
/**** Configuramos los distintos pines ****/
pinMode(MCP2515_CS,OUTPUT);
    pinMode(P_SCK,OUTPUT);
    pinMode(P_MOSI,OUTPUT);
    pinMode(P_MISO,INPUT);
    pinMode(MCP2515_INT,INPUT);
    // Habilitamos el SPI
// Lo configuramos como Master
// Configuramos el reloj fosc/2 (8MHz)
    SPCR = (1<

También implementamos la función básica para enviar/recibir datos:
byte spi_putc( byte data )
  {
SPDR = data;

// Esperamos hasta que el envio se realice
// Esto se hace comprobando el flag SPIF

while( !( SPSR & (1<
Una vez implementadas las funciones básicas de configuración y envío de comando, estamos preparados para hacer nuestro primer programa de Test, consistirá en encender alguno de los led disponibles en ArCan, aunque esta será mi próxima entrada. Os adelanto que tendremos que escribir en el registro BFPCTRL de nuestro controlador CAN.

Arduino (IV) Tipos de conexión

En época de exámenes queda poco tiempo para el proyecto, pero he sacado algún hueco para hacer un pequeño repaso por los tipos de comunicación que podemos establecer con un arduino.
Anteriormente hemos hecho un repaso por los distintos tipos de Arduino que existen y atendiendo a su clasificación vemos que la diferencia más destacable entre [...]

Web-GECO, Añadiendo contraseñas nuevas

Previously on GECO...
La semana pasada ya estuve programando algo, y conseguí una versión funcional, eso sí, solo para lectura, es decir aún no se podían añadir contraseñas nuevas. Sin embargo el cliente web listaba todas las contraseñas y era posible conseguir cualquiera.

Un gran problema con el que me he encontrado es copiar una contraseña al portapapeles desde javascript. Por lo visto firefox lo tiene capado y no es viable desde javascript. Hay alguna chapucilla por ahí que utiliza un swf para hacerlo, pero me parece demasiado complejo para eso.
Así pues la solución por la que opté es no copiar la contraseña al portapapeles automáticamente sino que pego la contraseña descifrada en un textbox para copiarla rápidamente pulsando ctrl+x. La contraseña está visible durante 5 segundos si no haces nada para evitarlo, pasado ese tiempo se quita.
También le he añadido los botones de editar y borrar. Editar todavía no está implementado. Borrar funciona perfectamente, el único pero que tiene es que no pregunta por confirmación.
¿Qué hemos avanzado hoy?
Esta tarde he estado haciendo el formulario para añadir una nueva contraseña en el cliente web.
Le he añadido un generador de contraseñas aleatorias y además comprueba la fortaleza de esas contraseñas.
La cosa funciona así, el cliente web recibe la contraseña en claro, ya sea generandola con javascript o escribiendola a mano. Mediante javascript se cifra esta contraseña. Luego al pulsar "Vale!" se envían los datos del formulario, pero claro está, no se envían las contraseñas en claro, es más, se puede añadir una contraseña escribiendo tan solo la cadena cifrada.
Por lo tanto las contraseñas creadas desde el cliente web son teóricamente seguras.

Y nada más, lo próximo será habilitar la edición y comenzar con el cliente en gtk, aunque antes de eso debería habilitar una función tanto a nivel de gecojs como de gecolib para cambiar la contraseña maestra de todas las contraseñas, valga la redundancia :P

Primeras PCBs!

Hola a todos,
Después de estas semanas de ausencia por los examenes, vuelvo a la carga con grandes novedades en el proyecto. Durante este tiempo he realizado las trabajos de logísticas necesarios, pedir samples, comprar componentes, los Arduinos y los materiales para la construcción de PCBs. La semana pasada por fin llegaron los Arduinos, durante las noches me embarqué en la construcción de los primeros prototipos de ArCan, la verdad es que las PCB’s no han quedado con el acabado que esperaba, y es que no es tan facil hacerlas a mano, sin embargo, una vez tenga la seguridad que todo está correcto y funcionando puede que la envíe a fabricar, para distrubuirlas de la forma más económica entre la comunidad, con la más pura filosofía Arduino.
Algunas fotos del prototipo:



Una vez acabado el Hardware puedo ponerme con el desarrollo del firmware, aunque pienso que no será tan simple como imagino, supongo que tendrá un handicap negativo añadido, posibles fallos en la PCB. En esté paso os invito a participar para mejorar en la medida de lo posible las distintas versiones del firmware, y conseguir que la comunidad tenga un sistema completo y funcionando con un coste económico reducido y tolerante a fallos.
También tengo que aprender como funciona el subVersión y demás programas para facilitar la colaboración de terceros.

Distribuir contenido