Hola a todos, después de bastante tiempo sin escribir, dejo aquí la solución al típico problema de programación concurrente "La cena de los filósofos", programado en ADA mediante paso de mensajes. Me ha servido como base para realizar unas prácticas en la asignatura "Programación en tiempo real", correspondiente a 5º curso de Ingeniería Informática.
Lo dejo aquí por si alguien alguna vez lo necesita...
with Ada.Text_IO;
with Ada.Integer_Text_IO;
with Ada.Numerics.Float_Random;
use Ada.Text_IO;
use Ada.Integer_Text_IO;
use Ada.Numerics.Float_Random;
procedure FilosofoMensajes is
G:Generator; -- Generador de números aleatorios
Comenzar:boolean:=false; --Variable para que dar comienzo al programa
NVeces:Integer:=10;
NFilosofos:Integer:=5;
type Atenedores is array(1..NFilosofos) of boolean;
task Mesa is
entry coger(F:in Integer;Salida:out boolean);
entry soltar(F:in Integer);
end Mesa;
task body Mesa is
Tenedores:Atenedores:=(others=>false);
begin
loop
select
accept coger(F:in Integer;Salida:out boolean) do
Salida:=Tenedores(F)=false and Tenedores((F mod NFilosofos) +1)=false;
if(Salida)
then
Tenedores(F):=true;
Tenedores((F mod NFilosofos) +1):=true;
end if;
end coger;
or accept soltar(F:in Integer) do
Tenedores(F):=false;
Tenedores((F mod NFilosofos) +1):=false;
end soltar;
or terminate;
end select;
end loop;
end Mesa;
task type Filosofo(F:Integer);
task body Filosofo
is
cogidos:boolean:=false;
begin
loop
exit when comenzar;
delay Duration(Random(G));
end loop;
for J in 1..NVeces
loop
put("estoy pensando....");
put(F);
put("veces");
put(J);
new_line;
delay Duration(Random(G));
put("quiero comer....");
put(F);
put("veces");
put(J);
new_line;
--espera sin consumir cpu
loop
Mesa.coger(F,cogidos);
exit when cogidos;
delay Duration(Random(G));
end loop;
put("comiendo....");
put(F);
put("veces");
put(J);
new_line;
delay Duration(Random(G));
Mesa.soltar(F);
put("termine de comer....");
put(F);
put("veces");
put(J);
new_line;
put("descansando....");
put(F);
put("veces");
put(J);
new_line;
delay Duration(Random(G));
end loop;
end Filosofo;
type ptr_Filosofo is access Filosofo;
Filosofos:array(1..NFilosofos) of ptr_Filosofo;
begin
put("Programa de la cena de los filosofos");
new_line;
put("n filosofos: ");
put(NFilosofos);
new_line;
put("n veces");
put(NVeces);
new_line;
for K in 1..NFilosofos
loop
Filosofos(K):=new Filosofo(K);
end loop;
comenzar:=true;
end;
Saludos y hasta la próxima.
martes, 14 de diciembre de 2010
jueves, 25 de marzo de 2010
Una dura semana
Hola a tod@s, me he llevado cierto tiempo sin postear nuevas entradas, y durmiendo entre 5 y 6 horas cada día, el motivo de ésto ha sido por una práctica de Inteligencia Artificial e Ingeniería del Conocimiento que ha consistido en implementar varios controladores fuzzy para hacer que un coche del juego TORCS (un simulador de carreras de coches) se moviese solo, esquivase a rivales, controlase la aceleración y además el ABS (casi nada :)).
Finalmente, después de dedicarme durante 2 semanas completamente a dicha tarea , logré un comportamiento aceptable del coche, y la satisfacción de haberlo logrado. Echamos unas carreras en el servidor con las implementaciones que había hecho cada uno, y la verdad que no quedé mal en las carreras, finalizaba normalmente entre los 3 primeros, siendo unos 8 coches el total.
Y ahora llega la Semana Santa... que no es sinónimo de vacaciones para mi.
Seguiré escribiendo nuevas entradas próximamente.
Saludos.
Finalmente, después de dedicarme durante 2 semanas completamente a dicha tarea , logré un comportamiento aceptable del coche, y la satisfacción de haberlo logrado. Echamos unas carreras en el servidor con las implementaciones que había hecho cada uno, y la verdad que no quedé mal en las carreras, finalizaba normalmente entre los 3 primeros, siendo unos 8 coches el total.
Y ahora llega la Semana Santa... que no es sinónimo de vacaciones para mi.
Seguiré escribiendo nuevas entradas próximamente.
Saludos.
jueves, 18 de marzo de 2010
Ver el estado de tráfico en Huelva capital
Hace unos días leyendo en www.huelvainformacion.es me encontré con esta página: http://www.huelva.es/wps/portal/!ut/p/.cmd/cs/.ce/7_0_A/.s/7_0_HLL/_s.7_0_A/7_0_HLL en la que se puede ver el estado de congestión de las carreteras de la ciudad , además de visualizar las webcams que ha instaladas en distintos puntos.
Saludos.
Saludos.
sábado, 27 de febrero de 2010
Consultar el tiempo por Internet
Hace unos días, descubrí una web que está bastante bien para informarnos del tiempo:
http://www.eltiempo.es
Esta página está dirigida por José Antonio Maldonado, el hombre del tiempo de toda la vida que salía en TVE.
Visitadla, que no tiene desperdicio.
Y para los que seáis de Huelva, os recomiendo: http://www.meteohuelva.es/ , un muy buen sitio para estar informado en tiempo real con todo tipo de detalles de la meteorología de nuestra ciudad.

Saludos.
http://www.eltiempo.es
Esta página está dirigida por José Antonio Maldonado, el hombre del tiempo de toda la vida que salía en TVE.

Y para los que seáis de Huelva, os recomiendo: http://www.meteohuelva.es/ , un muy buen sitio para estar informado en tiempo real con todo tipo de detalles de la meteorología de nuestra ciudad.

Saludos.
Auditorías
Hoy os presentaré una distribución Linux bastante útil para realizar auditorías de redes inalámbricas: Wifiway.
La iso se puede descargar en: http://download.wifislax.com:8080/wifiway-1-final.iso
Tamaño: 664.6 MB
Esta distribución está concebida para realizar auditorías en redes inalámbricas, esto es, comprobar cómo de segura es una red; para ello dispone de varias aplicaciones para realizar simulaciones, como la conocida aircrack-ng.
Saludos y no seais demasiado malos :)
La iso se puede descargar en: http://download.wifislax.com:8080/wifiway-1-final.iso
Tamaño: 664.6 MB
Esta distribución está concebida para realizar auditorías en redes inalámbricas, esto es, comprobar cómo de segura es una red; para ello dispone de varias aplicaciones para realizar simulaciones, como la conocida aircrack-ng.
Saludos y no seais demasiado malos :)
martes, 23 de febrero de 2010
Juego terriblemente difícil

Hola a tod@s, mientras mataba unas horas libres, descubrí un juego de habilidad llamado Isoball 2 http://www.minijuegos.com/juegos/jugar.php?id=8983.
Se trata de un juego en el que pones a prueba tu capacidad visual y espacial; el objetivo es muy simple, meter una pelotita en un agujero... pero para ello hay que colocar una serie de piezas que guíen la pelota hasta el agujero.
Creedme, es realmente dificil y adictivo ese juego.
Yo me quedo en el nivel 28, no le veo solución de momento... aunque también me costó lo suyo el 19 y el 26 , aunque con paciencia los saqué... ¿alguien es capaz de avanzar del 28?
lunes, 22 de febrero de 2010
Seguridad en redes inalámbricas
Bueno, como primera entrada temática, voy a comentar algunas precauciones a nivel muy básico, sin entrar en tecnicismos que debería tener todo aquel que tenga una red inalámbrica instalada en su casa (quién dice casa, dice cualquier lugar , aunque me voy a centrar en una red casera).
Normalmente, en el caso de Telefónica, el router viene con una configuración por defecto perfecta para que cualquier vecino un poco avispado se nos conecte a nuestra red.
Ante esta falla afortunadamente podemos hacer varias cosas, como:
Para empezar, cambiaremos el tipo de protección a WPA. Inicialmente abrimos nuestro navegador y ponemos como dirección 192.168.1.1 y después de escribir nuestros datos de acceso observaremos la siguiente pantalla:
Empezaremos con desactivar la protección WEP y activar la WPA, mucho más segura. Para ello, entraremos en la opción Adanced Setup-> Wireless LAN.
A continuación, accedemos a la opción 802.1x/WPA y seleccionamos en Wireless Port Control la opción Authentication Required, en Key Management Protocol seleccionamos WPA-PSK, y en el campo Pre-Shared Key escribimos nuestra nueva clave. Los demás campos los dejamos como vienen por defecto.

Con esto, validamos los cambios en Apply y ya tendremos configurada la protección WPA en nuestra red.
A continuación explicaré como ocultar nuestro SSID:
En el el menú principal del configurador web del router, nos vamos a la opción Wireless LAN , a continuación a Wireless y después la opción Hide ESSID la marcamos como Yes. Para finalizar validamos los cambios en Apply. Con esto tendremos "invisible" nuestra red, es decir no la verán mediante rastreadores (en teoría).
Para finalizar, explicaré como activar el filtro MAC:
Accedemos a Wireless LAN desde el menú principal, después a MAC filter , y observaremos la siguiente pantalla:
Debemos de marcar la opción Active como "Yes", y la acción a "Deny access", ésto es denegar el acceso.
Por último escribimos la MAC a la que deseamos bloquear el acceso en alguna de las entradas de la lista. Finalmente validamos cambios con Apply.
Con estas 3 modificaciones que hemos hecho, obtendremos una red muchísimo más segura a la que se tenía con los parámetros por defecto.
Por supuesto que aún se podría mejorar más, activando el servidor RADIUS, la encriptación AES y la seguridad en puertos, pero esos temas se escapan a la finalidad de este post.
Saludos binarios.
Normalmente, en el caso de Telefónica, el router viene con una configuración por defecto perfecta para que cualquier vecino un poco avispado se nos conecte a nuestra red.
Ante esta falla afortunadamente podemos hacer varias cosas, como:
- Cambiar de seguridad WEP a seguridad WPA, o mejor aún WPA2 si está disponible.
- Ocultar el SSID (el nombre de la red).
- Filtrar por MAC (para evitar que ciertos equipos cuya MAC conocemos se nos conecten).
Para empezar, cambiaremos el tipo de protección a WPA. Inicialmente abrimos nuestro navegador y ponemos como dirección 192.168.1.1 y después de escribir nuestros datos de acceso observaremos la siguiente pantalla:
Empezaremos con desactivar la protección WEP y activar la WPA, mucho más segura. Para ello, entraremos en la opción Adanced Setup-> Wireless LAN.


Con esto, validamos los cambios en Apply y ya tendremos configurada la protección WPA en nuestra red.
A continuación explicaré como ocultar nuestro SSID:
En el el menú principal del configurador web del router, nos vamos a la opción Wireless LAN , a continuación a Wireless y después la opción Hide ESSID la marcamos como Yes. Para finalizar validamos los cambios en Apply. Con esto tendremos "invisible" nuestra red, es decir no la verán mediante rastreadores (en teoría).

Accedemos a Wireless LAN desde el menú principal, después a MAC filter , y observaremos la siguiente pantalla:

Por último escribimos la MAC a la que deseamos bloquear el acceso en alguna de las entradas de la lista. Finalmente validamos cambios con Apply.
Con estas 3 modificaciones que hemos hecho, obtendremos una red muchísimo más segura a la que se tenía con los parámetros por defecto.
Por supuesto que aún se podría mejorar más, activando el servidor RADIUS, la encriptación AES y la seguridad en puertos, pero esos temas se escapan a la finalidad de este post.
Saludos binarios.
Categories
inalámbrico,
redes,
seguridad,
wifi
Ya estoy aquí
¡Bienvenid@s a tod@s!
Por fin me he decidido a crearme un blog, principalmente porque tenía ganas de experimentar cómo era este mundillo de la blogosfera, y así poder compartir mis aficiones con todo aquel que lo desee.
Después de tirarme mis 20 minutos aproximadamente en pensar el título de mi blog, me he decantado por el título de "Diario de un informático", el motivo es simple: soy Ingeniero Técnico en Informática de Sistemas , y como muchos se podrán imaginar una de mis mayores aficiones es la informática.
Aparte de esta afición tan interesante , procuraré publicar también entradas de mis muchas otras aficiones, sobre todo de Astronomía , ajedrez (gran juego dónde los haya) y cualquier otro tema tanto cotidiano y actual como del pasado .
Pronto empezaré a publicar sobre estos citados temas, mientras tanto, gracias de antemano a mis potenciales lectores, y espero que todos disfrutemos con este blog. Hasta pronto.
Por fin me he decidido a crearme un blog, principalmente porque tenía ganas de experimentar cómo era este mundillo de la blogosfera, y así poder compartir mis aficiones con todo aquel que lo desee.
Después de tirarme mis 20 minutos aproximadamente en pensar el título de mi blog, me he decantado por el título de "Diario de un informático", el motivo es simple: soy Ingeniero Técnico en Informática de Sistemas , y como muchos se podrán imaginar una de mis mayores aficiones es la informática.
Aparte de esta afición tan interesante , procuraré publicar también entradas de mis muchas otras aficiones, sobre todo de Astronomía , ajedrez (gran juego dónde los haya) y cualquier otro tema tanto cotidiano y actual como del pasado .
Pronto empezaré a publicar sobre estos citados temas, mientras tanto, gracias de antemano a mis potenciales lectores, y espero que todos disfrutemos con este blog. Hasta pronto.
Categories
ajedrez,
astronomía,
informática
Suscribirse a:
Entradas (Atom)