martes, mayo 31, 2011

Activación Windows 7

Cuando instalas Windows7 tienes unos días para activarlo (a mí me daba 3).

Para activarlo:

Botón de inicio, clic con el botón derecho en Equipo, Propiedades
, y abajo del todo tendremos:

"Activación de Windows".

Si no está activado, clic en "Cambiar la clave de producto" (requiere conexión a Internet).
Ahora bien, luego quedará la duda de si es una activación definitiva, o por el contrario, se ha quedado activado por un periodo limitado de tiempo.

En este sitio he visto la forma de saberlo:

Botón de inicio, "buscar programas y archivos", o lo que es lo mismo: Inicio, "Todos los programas", Accesorios, "Símbolo del sistema", ejecutamos:

slmgr -xpr

slmgr significa "Software Licensing Manager" y xpr es "expiration".

El resultado:


Saludos.

miércoles, mayo 25, 2011

Allegro para programar videojuegos

Animación Matrix realizada con Allegro (demo descargada de allegro.cc):


Allegro es una librería gráfica C/C++ para programa videojuegos.
Puede que pronto haga un programa que muestre y rote figuras 3D.

Este video muestra como instalar la librería para su uso en MSVC (Microsoft Visual C++):

Nota: Cuando en el video se añade el .lib al proyecto C++, no hay forma de ver el fichero que agrega. De hecho lo que agrega no se parece a allegro-5.0.2-monolith-md-debug.lib que debería agregar.



Por si algún día desaparece el video (como suele ser habitual), aquí va un resumen:

1.-Ir a www.allegro.cc para la descarga.
2.-Hacer clic en FILES, WINDOWS BINARIES, MSVC10 (Visual Studio 2010). El fichero ZIP ocupa 40.7 Mb.
3.-Los ficheros de la carpeta bin muevelos a c:\Archivos de Programa\Microsoft Visual Studio 2010\VC\bin
Los ficheros de include a VC\include
Y los ficheros lib a VC\lib

4.-Ahora entramos en Visual Studio, Nuevo proyecto, Visual C++.
5.-Source Files, Add, C++ File.
6.-Ahora hay que indicarle que este proyecto hay que linkarlo con la librería Allegro. Entrar en Menu Project, Propiedades del proyecto.
7.-Configuration properties, Linker (traducido como vinculador en castellano), Input (entrada). Seleccionar Additional deppendencies. Añadir allegro-5.0.2-monolith-md-debug.lib
8.-Poner un código de ejemplo y a correr.

Yo he puesto este que he bajado de este wiki sobre Allegro:
http://wiki.allegro.cc/index.php?title=Windows,_Visual_Studio_2010_and_Allegro_5

#include 
#include

int main(int argc, char **argv)
{
ALLEGRO_DISPLAY *display = NULL;

if(!al_init()) {
fprintf(stderr, "failed to initialize allegro!\n");
return -1;
}

display = al_create_display(640, 480);
if(!display) {
fprintf(stderr, "failed to create display!\n");
return -1;
}

al_clear_to_color(al_map_rgb(0,0,0));

al_flip_display();

al_rest(10.0);

al_destroy_display(display);

return 0;
}

Saludos.

martes, mayo 24, 2011

Direcciones IP y MAC

Hace unos días puse cómo podemos conseguir una dirección IP a partir de la MAC de un equipo.

El método es un poco tosco. Hacemos ping y luego con arp -a consultamos la tabla de conversión de nuestro PC.

Si queremos una relación de todas las IP y MAC-s de nuestra red tendríamos que hacer un pequeño script que haga múltiples ping y luego haríamos el ARP.

Hay una utilidad llamada NBTSCAN (Netbios scanner) que nos dará esa información y algo más, en formato de tabla.

Descargamos la utilidad de aquí. Más información en esta URL.

Forma de uso:

nbtscan -q 192.168.50.0/24

Si lo redirigimos a un fichero podremos tratar la salida cómodamente.

Y que obtenemos:

IP---NOMBRE_PC---USUARIO_WINDOWS---MAC

Saludos.

lunes, mayo 23, 2011

Un script para interrogar al active directory

Hace más de 2 años que no hacía un script de Windows. Aquel servía para obtener información de los PC-s de la red. También puse unos links interesantes.

Este de aquí sirve para visualizar los miembros de un grupo del directorio activo:



Set objetoGrupo = GetObject("LDAP://cn=GrupoX,cn=Users,dc=DominioDeEjemplo,dc=es")
Call EnumerarMiembros(objetoGrupo)

Sub EnumerarMiembros(objetoGrupo)
For Each objetoMiembro In objetoGrupo.Members
Wscript.Echo "Miembro: " & objetoMiembro.sAMAccountName _
& " (" & objetoMiembro.Class & ")"
If (LCase(objetoMiembro.Class) = "group") Then
Call EnumerarMiembros(objetoMiembro)
End If
Next
End Sub




En este ejemplo que es ligeramente diferente a los que se suelen ver por ahí, el grupo se busca en la Unidad Organizativa "Users".

GrupoX es el grupo que buscamos.

Y por último el dominio del ejemplo es DominioDeEjemplo.es

Saludos.

domingo, mayo 22, 2011

Y hoy gran victoria en la etapa más dura...





¡Increible!


Esta vez ha sido el vasco Mikel Nieve el que ha ganado en la etapa reina del Giro y probablemente la etapa más dura de los últimos tiempos. Tanto es así que hasta Contador ha dicho: "ha sido la etapa más dura de mi vida".


Una etapa de 229 kilómetros, que ha durado cerca de 7 horas y media, con más de 6.000 metros de desnivel acumulado y 4 puertos de primera, entre ellos la cima Coppi (Giau).


Mención especial también a Garzelli que ha hecho un etapón y si hubiera ganado habría sido también igualmente merecido. Tanto Garzelli como Mikel han corrido prácticamente en solitario uno detrás del otro desde el Giau, ¡¡¡a unos 60 kilómetros de meta!!!


Además de la pelea por la victoria, ha habido un montón de ataques muy lejos de meta dirigidos a alterar la clasificación general. Ataca Nibali lejísimos de meta. Nibali se queda hecho polvo y no puede seguir en el grupo. Ataca Contador, creo que porque ve a la gente justa, y también porque después del super-esfuerzo de ayer, se ha quedado Igor Antón. Luego Nibali hace una arriesgadísima bajada para conectar otra vez con el grupo.... Para ponerle más emoción a la cosa, va Contador y lanza otro ataque en la última subida... Lo que hemos sufrido pensando que podría alcanzar a Garzelli y Mikel, cuya forma de subir era ya todo un poema.


Etapón para recordar sin duda. Tal vez excesivamente cruel. Si el último puerto de ayer era la entrada al infierno, la etapa de hoy eran las calderas.


Saludos.

sábado, mayo 21, 2011

Gran Victoria en el puerto más duro de Europa




Sí, ha sido un etapón a pesar de la polémica reducción de etapa por peligrosidad.


El vasco Igor Antón ha ganado en el Zoncolan recordando al increíble Pantani de mediados de los 90.


Ha estado muy emocionante, sobre todo por ser un puerto sin descansos donde recuperar. La gran pendiente (12% de media y 22% de máxima) hacía que los corredores subieran de uno en uno, aunque siempre viéndose a poca distancia entre ellos.


Antes de la subida final al Zoncolan, se tendría que haber subido el Crostis, un puerto durísimo similar al mítico Mortirolo. Los jueces de la UCI forzaron a la organización a retirar el puerto de la etapa. Lo hicieron por "no estar garantizada la regularidad deportiva". Hablando en plata, que no había posibilidad de que los equipos llevaran coches de asistencia.


Esto ya lo podían haber dicho hace meses cuando se presentó el recorrido. Resulta que la organización ha estado trabajando 20 días en el Crostis para que luego digan que no puede ser.


Aquí abajo el Crostis:





Y aquí los trabajos de seguridad en el Crostis:





Luego está el tema de la segunda subida anulada: el puerto de segunda categoría Tualis. Los cabreados aficionados que habían acampado en el Crostis bajaban al Tualis y amenazaban con cortar la carretera. Por ello la organización ha decidido saltárselo.

Total que la etapa original era de 210 km, se reducía sin el Crostis a 190, y finalmente sin el Tualis a 170 km. Ya nunca lo sabremos, pero igual, siendo la etapa planificada tan, tan extremadamente dura, el mejor de esta etapa (Igor Antón), tal vez habría podido conseguir más segundos o minutos de diferencia, tan necesarios para la victoria final.

Saludos.

jueves, mayo 19, 2011

Cosas asombrosas de la programación. Segunda parte.

Siguiendo con las "cosas asombrosas" de la programación que veíamos hace un mes, hoy demostraremos que la suma de dos números positivos puede ser negativo.
Esto no es broma, un pequeño detalle como este hizo explotar todo un cohete como el Ariane.

Hacemos el pequeño programita en el C++ del Ubuntu:


Y el resultado:


La explicación:


La misma que hace un mes (ver primer enlace). Límite físico de almacenamiento en el tipo integer.

La solución:


Cada vez que hacemos una suma con enteros grandes tenemos que comparar el resultado con uno de los sumandos. Si el resultado es menor se ha producido el desbordamiento.

La tontería:


Teniendo en cuenta que con esta super crisis económica y financiera que sufrimos magnitudes como mil millones y similares son cada vez más frecuentes se ve claramente que el tipo integer de 4 bytes se ha quedado pequeñito.

Saludos,

martes, mayo 17, 2011

Huevo de pascua en Windows7


23:58 termino de instalar Windows7 y de aplicar las actualizaciones automáticas imprescindibles.
He querido encontrar un huevo de pascua en Internet, y lo que he encontrado es un truco que te facilita encontrar las cosas del panel de control, herramientas administrativas, etc.

Lo he encontrado aquí, pero lo voy a resumir, no vaya a ser que se pierda la entrada como ha pasado otras veces.

Se trata de un "modo dios" que permite agrupar en una sola carpeta todas las opciones de configuración.

Consiste en lo siguiente:

Vamos al Escritorio por ejemplo y creamos una carpeta. El nombre tiene que ser exactamente este: GodMode.{ED7BA470-8E54-465E-825C-99712043E01C}

Si lo haces así verás que la nueva carpeta GodMode tiene dentro lo siguiente:







Saludos.

lunes, mayo 16, 2011

Vidas adosadas

Editorial Anagrama. Ensayo de Pere Saborit, filósofo.

Así empieza:

Una de las formas como reaccionará el hombre contemporáneo, ante la inquietud generada por la dificultad que le plantean las relaciones sociales, consistirá en lo que R. Jaccard denomina "el exilio interior", en tanto que "huida de la realidad cálida, vibrante, humana, directa; y el repliegue sobre el propio yo".

De esta manera, disfrazando de búsqueda y cultivo de uno mismo lo que en realidad es resultado de una huida, se logrará evitar, en palabras de T. Todorov, "todo riesgo de falta de reconocimiento o de no recibir la confirmación del propio valor".

En realidad, esta valoración es realizada a propósito del trastorno del autismo,...

Efectivamente, ya no es sólo en las grandes ciudades. Es prácticamente en todas ellas. Das un paseo y todos somos autistas. Justo justo te haces ver para que no te pisen, como dice el autor que hacen los barcos en la niebla.

Luego menciona una película. Duel de Spielberg (o "El diablo sobre ruedas" como se tradujo por aquí). Debo decir que esta película me impactó mucho a los 8 años y es una de las que yo votaría entre las mejores de toda la historia del cine. Pues aquí el autor dice algo así como que pensamos que "el otro" es como el conductor del camión de la película: Miedo al desconocido.

También recuerda que "Z. Bauman ha alertado a menudo de la reducción de los vínculos de solidaridad que supone el auge de lo que él denomina "comunidades estéticas", es decir, el interés común limitado a la asistencia esporádica a algún espectáculo, festival o encuentro deportivo: lo cual, por cierto, ofrece una de las claves para entender la veneración contemporánea de los actores, los cantantes o los deportistas".

Bueno, resumiendo, un libro que promete.

Saludos.

jueves, mayo 05, 2011

Perl para monitorizar la red


Estábamos sufriendo pequeños cortes de red muy esporádicos (digamos que 3 ó 4 al día).
Necesitaba registrar la fecha y hora para que los técnicos de comunicaciones supieran dónde buscar...

Podría haber utilizado cualquier software comercial pero preferí hacer el siguiente script PERL:

Funciona perfectamente con la instalación por defecto de ActivePerl para Windows:
#!/usr/bin/perl -w
use Net::Ping;

my $p = Net::Ping->new("icmp");
my @servidores=('servidor1','servidor2','servidor3','servidor4');
open(FICHERO, ">>errores.txt")||die "error!!!";
print FICHERO "EMPEZAMOS ANALISIS\n";
fechaHora();
print FICHERO "----------------------------------\n";
close(FICHERO);
for(;;) {
foreach my $host (@servidores)
{
if ($p->ping($host, 2)) {
print "$host OK!\n"
}
else {
open(FICHERO, ">>errores.txt")||die "error!!!";
print FICHERO "FALLO en $host. ";
fechaHora();
close(FICHERO);
}
sleep(1);
}
}
$p->close();

sub fechaHora {
my ($sec,$min,$hour,$day,$month,$yr20,@rest) = localtime(time);
print FICHERO "$day-".++$month. "-".($yr20+1900)." ";
print FICHERO sprintf("%02d",$hour).":".sprintf("%02d",$min).":".sprintf("%02d",$sec)."\n";
}


El funcionamiento es muy sencillo:

Creamos un array con los nombres de los servidores a los que el programa va a hacer continuamente PING.

Luego se intenta el PING. Si el servidor responde escribimos SERVIDOR OK. Si no responde abrimos el fichero ERRORES.TXT y escribimos la fecha y hora.

Curiosidades:

Cada vez que falla un PING abrimos el fichero, escribimos y volvemos a cerrar.
Lo tuve que hacer así porque el bucle infinito hay que terminarlo con Control+C o cerrando la ventana. Al interrumpir el programa antes de cerrar el fichero resulta que te encuentras con un ERRORES.TXT vacío.

Saludos.




domingo, mayo 01, 2011

esas imprevisibles niñas



Dicen que a Alfred Hitchcock no le gustaba rodar ni con niños, y no me extraña nada.


Esta foto de la portada del diario ElCorreo (30-abril-2011) no es fácil de encontrar por Internet, ya que algunos la han recortado por debajo, y otros han seleccionado un momento del beso en el que la niña aunque muestra su desagrado, al menos no tiene las manos en las orejas.

Saludos.

pd: ¡¡¡No sé en qué andan pensando los periódicos que abren portada con una foto así el día del anuncio de los 4.910.200 desempleados!!!