Archivo para la Categoría "►Geek"

5 años despues

5yl

Son 5 años, 5 años sin escribir, 5 años sin aportar a internet, 5 años de ser un leecher, 5 años de ser un Lurker…

Tanto tiempo en tan poco “tiempo”.

Regresar a escribir en el blog, es como ver a un viejo amigo, tanto hemos cambiado y aun así nos alegramos de vernos, diferentes gustos, nuevas experiencias, nuevos amigos, nuevos conocimientos, espero no sea esto como las segundas partes de las películas, por que de ninguna forma pretendo que sea mala.

Es cuestión de retomar esa costumbre, ese compromiso de escribir 1 vez al mes. La recompensa es efímera, solo regresar lo que estoy recibiendo; conocimiento por conocimiento…

Veremos que es lo que pasa… tal vez esta solo sea una entrada mas…

“mucho trabajo”

Anuncios

¿Como recuperar contactos borrados de Windows Live Messenger (hotmail , msn , live)?

Hay veces… que por un errorcito (o alguna persona malosa }:) )  , borramos contactos  de nuestro directorio… y esto nos causa una gran tención , puesto que no sabemos si se pueden recuperar.

Para nuestra tranquilidad dentro de nuestro correo electrónico Windows Live existe una opción poco conocida, la cual es la de “Restaurar contactos eliminados”.

Pongamos un escenario:

Por error yo elimine a uno o varios contactos desde el Windows Live Messenger de la siguiente manera:

Eliminados0

Ahora… lo que necesitamos, es recuperar ese contacto(s) ya que no recuerdo su correo electrónico.

Seguir los siguientes sencillos pasos:

Paso 1.

Cerrar la sesión de Windows Live Messenger y acceder a nuestra cuenta de Windows Live desde nuestro explorador favorito.

image

Paso 2.

Una vez en que accedimos a nuestra cuenta de Windows Live  en el encabezado superior elegimos en el menú la opción de “Contactos”

image

Paso 3.

En la ventana de Contactos damos clic en el menú Administrar y se desplegara una lista donde elegiremos “Restaurar contactos eliminados”

Eliminados

 

Paso 4.

Ya en la ventana de Restaurar contactos , podremos elegir restaurar contactos individualmente o a todos de una sola vez.

Eliminados2

 

Paso 5.

Si desean pueden buscar el nombre del contacto para comprobar que efectivamente fue restaurado en su lista de contactos, tanto del correo electrónico como del Windows Live Messenger

Eliminados3

 

Nota:

Claro que todo esto tiene restricciones, una de ellas es que pasados 30 días de que se ha borrado un contacto, este no podrá ser recuperado, otra mas de las restricciones es que el contacto  restaurado tendrá que volver a aceptarnos como su amigo.

 

^-^ esperando les sea de utilidad. [+][+][+]

Lo bueno es que cubren mi rostro…

Solo un dato curioso de Google Maps with Street View.

image

ha este señor hasta los barros se le ven 😀 , que bueno que cuidan nuestra identidad 🙂

http://maps.google.com.mx/maps

ISCamp – Tecnológico de Estudios Superiores de Chalco (TESCHA)

Este post es para invitarlos a formar parte del ISCamp organizado por @n4utilius en el Tecnológico de Estudios Superiores de Chalco.

image

Un ISCamp es un evento donde los asistentes pueden jugar el papel tanto de  oradores como de escuchas. Cada uno de los oradores/participantes tiene un espacio de 15 minutos para compartir a los escuchas sus ideas/conocimientos  un tema especifico y así recibir una retroalimentación por parte los escuchas, su dinámica es sencilla y basada en el concepto del BarCamp.

“Un >>foro<< de opiniones, enmarcado por orden y respeto”

¿Donde y cuando?:

Tecnológico de Estudios Superiores de Chalco

Carretera Federal México Cuautla S/N

La Candelaria Trápala, Chalco, Edo México C.P. 56641

Edificio Principal

28 de junio

Si deseas saber mas, puedes visitar:

http://iscamp.eventbrite.com/

o bien comunicarte directamente con los organizadores en:

Twitter: @n4utilius

E-mail: new.eagle10[ar]gmail[dot]com

—-

El conocimiento es para compartirse, discutirse y analizarse

El pensamiento es la moneda del conocimiento, entre mas personas lo compartan; mas rico es el país.

Microsoft Tag en el Metro de la Ciudad de México te lleva al cine gratis

IMG_2251 Antes de empezar el post quiero decirles… continúen leyendo y ganaran una entrada doble al cine 🙂 .

 

El día de hoy me sorprendí mucho al ver un anuncio en el metro… justamente me encontraba en la estación consulado línea 5 , cuando volteo y vi el anuncio, pero era algo particular que reconocí … era un TAG , aja un Microsoft Tag ( hable de Microsoft tag en este post ) y pues la verdad luego luego saque mi celular “me vi súper raro Geek apuntando mi celular aun anuncio”  y utilice la aplicación de TagReader 😀 para ver la imagen con las instrucciones para ganarme un pase doble al cine 😉 .

 

Tengo algunos comentarios para esto que viví:

1.- Me alegra ver que se empiecen a utilizar este tipo de tecnologías en nuestra vida diaria, espero que cada vez sea mas frecuente; el mundo de los móviles pronto será un excelente mercado, “si no es, que ya lo es”.

2.- Sufrí hace apenas unos días un conato de asalto. Y la verdad veo un tanto peligroso con el nivel de inseguridad que vivimos actualmente sacar el celular a vista de todos, para descifrar el código de Microsoft TAG.

3.- Para poder descifrar el TAG es necesario contar con internet y algunos equipos móviles gastan crédito (dinero) en la conexión y transferencia de datos por lo que el boleto del cine no me sale tan de a “gratis”.

4.- Esto podría ser un buen ejemplo de lo que nos espera para un futuro. La realidad aumentada será de las cosas que nos sorprenderán en un principio y poco a poco se convertirán en cosas cotidianas

5.- Recuerdo que cuando estuve investigando, sobre Microsoft Tag llegue a algunos link’s donde hablaban de campañas publicitarias con mucho éxito en estados unidos y Europa, utilizando esta tecnología, tal vez aquí en México empiece a desarrollarse este mercado.

IMG_2244 - copia

Anuncio en el metro que te hace ganar una entrada doble al cine

 IMG_2247 IMG_2245

*Edite la imagen del TAG para que no hagan trampa y escaneen el código en la estación del metro 😀

PD.- Ya les contare si , si me dieron mi entrada gratis al cine 😉

Artículos relacionados:

Microsoft Tag – Código secreto en tus imágenes –

Video de como crear tu Microsoft TAG personalizado

Twitter de Microsoft TAG

Firefox en la escuela – Firefox en la UPIICSA

Eventos, eventos y mas eventos…

Ahora si el twitter ha estado activo, y a todos les esta dando eventitis xD ..

image 

Para empezar tenemos un evento en la UPIICSA organizado por: La sociedad de alumnos del turno matutino de UPIICSA -> Ricardo Matias Maturano y más colaboradores.

Al escribir el post aun no publican la lista de platicas, pero si la fecha:

¿Cuando?

Martes 25 de Mayo del 2010 a partir de las 09:00

¿Donde?

Unidad Profesional Interdisciplinaria de Ingeniería y Ciencias Sociales y Administrativas (UPIICSA), Av. Té No. 950, C.P.: 08400, Col. Granjas México, Iztacalco, D.F.
Auditorio B Generalísimo Morelos, ubicado en el edificio cultural planta baja

Si eres de otra escuela 🙂 no te preocupes por que firefox en la escuela estará en muchas otras . Visita el link inferior para mas información.

Link: http://www.firefoxenlaescuela.org/?page_id=509

Generando números aleatorios en C y C++

Por que nunca esta por demás…

Primero que nada déjenme decirles que el lenguaje C incorpora dos funciones [rand() y srand()] las cuales son pseudo generadoras de números aleatorios; que quiero decir con “pseudo” , pues que en realidad no generan números aleatorios, si no que siguen un algoritmo, que muestran el resultado de un conjunto de operaciones (“numero aleatorio”) ; que al final de cuentas puede ser predecido teniendo dicho algoritmo.

Función rand()

Hablemos de la función rand() esta genera un numero aleatorio en el rango de 0 y 32767 (solo enteros) ; para obtener estos números el algoritmo de la función rand() parte de un “numero semilla” , quiero decir un numero inicial al cual somete a un conjunto de operaciones para así generar los números “aleatorios”, lo único malo de esta función es que siempre que queramos generar números aleatorios este algoritmo siempre partera de la misma semilla y realizara las mismas operaciones, por lo que obtendremos los mismos números aleatorios una y otra vez… sin importar las veces que ejecutemos el programa.

A continuación un ejemplo:

   1: #include <iostream.h>

   2: #include <stdlib.h>

   3: //Dentro de stdlib.h encontramos la funcion rand()

   4: #include <conio.h>

   5:  

   6: int main(){

   7:  

   8: long int aleatorio=0;

   9:  

  10: cout<<"Programa que genera numeros aleatorios con la funcion
rand()"
<<endl;

  11: aleatorio = rand();

  12: cout<<"El numero aleatorio generado es: "<<aleatorio <<endl;

  13: cout<<"El numero generado se encuentra en un rango del 0 al "<< RAND_MAX <<endl;

  14: getch();

  15:  

  16: }

La función rand() se encuentra en la librería stdlib.h, la palabra reservada RAND_MAX -> regresa el valor máximo de la función rand().

Hasta aquí creo que todo simple… empezamos con la emoción al momento que queremos un numero aleatorio entre un rango personalizado, por ejemplo del 0 al 5:

   1: #include <iostream.h>

   2: #include <stdlib.h>

   3: #include <conio.h>

   4:  

   5: int main(){

   6: long int aleatorio=0;

   7:  

   8: cout<<"Programa que genera numeros aleatorios de rango 0 a 5"<<endl;

   9:  

  10: aleatorio = rand() % 6;

  11: cout<<"El numero aleatorio generado es: "<<aleatorio <<endl;

  12: getch();

  13: }

Estamos utilizando el operador modulo (%) que es el residuo de una división, para delimitar el rango de la variable “aleatorio”.

Analizando este paso, suponemos que el numero obtenido de la función rand() es el 12 y lo dividimos entre el numero 6;  obteniendo su modulo (residuo) que es igual a 0 (imagen1).

imageimagen1

La variable “aleatorio” que es igual a “0”  se encuentra en el rango de 0 a 5 y podemos confirmar que todas las variables “aleatorioque sean obtenidas aplicado a la función rand() una operación “modulo de 6 [ rand() % 6 ] se encontraran en este rango (0 a 5).

Para confirmar este argumento; asignemos otro valor ficticio a nuestra función rand(), por ejemplo el numero 8:

imagen2 

El numero obtenido es el 2, por lo que una vez mas nuestra variable “aleatorio” se encuentra en el rango de 0 a 5. Así podemos continuar asignando valores ficticios y arbitrarios a la función rand() y demostraremos que la variable “aleatorio” puede obtener el valor 0 ó 1 ó 2 ó 3 ó 4 ó 5  sea cual sea el dividendo con el que alimentemos la división.

El residuo de 12 entre 6 es cero “0” , lo comprobamos con el siguiente programa:

   1: #include <iostream.h>

   2: #include <stdlib.h>

   3: #include <conio.h>

   4:  

   5: int main(){

   6: int residuo=0;

   7: /*

   8: inicializar la variable var_rand en 12 es como

   9: simular que el resultado de la funcion

  10: rand fue igual a 12

  11: */

  12: int var_rand=12;

  13: //Digamos que equivale a

  14: //aleatorio= rand() % 6

  15: residuo= var_rand % 6;

  16: cout<<"El numero aleatorio generado es: "<<residuo <<endl;

  17: getch();

  18: }

La variable var_rand viene a emular el resultado de la función rand() solo que aquí nosotros damos el valor arbitrariamente (en este caso el 12).

🙂 muy bien , con eso espero allá quedado claro; ahora si quisiera un numero aleatorio entre el 0 y el 20 , solo cambiaria la línea del programa:

aleatorio = rand() % 21;

y si lo quiero en  un rango 0 a 50 entonces:

aleatorio = rand() % 51;

… y de rango 0 a 87:

aleatorio = rand() % 88;

Como ya nos dimos cuenta la formula es sencilla [ aleatorio = rand() % (N+1); ], si queremos hacer un rango de 0 a n , entonces la línea de código quedaría así:

aleatorio = rand() % n+1;

 
Pero aun con el rango continuamos con el problema que cada vez que ejecutamos el programa se generan los mismos números.

Función srand()

Para solucionar ese problema contamos con la función srand() con la cual indicamos el numero semilla con el que empezara el algoritmo para generar números aleatorios.

#include <iostream.h>

#include <stdlib.h>

#include <time.h>

#include <conio.h>

 

int main()

{

 long int aleatorio=0;

 srand(1);

 aleatorio = rand()%11;

 cout<<"Numero aleatorio de 0 a 10"<<endl;

 cout<<aleatorio;

getch();

}

Ya podemos generar realmente números aleatorios el único problema es que tenemos que cambiar el numero semilla manualmente (ósea borramos en el código el numero 1 de la función srand(1) y escribimos otro srand(34) )  efectivamente salen números aleatorios … pero si queremos GENERAR VARIOS NUMEROS ALEATORIOS EN UNA MISMA EJECUCION DEL PROGRAMA:

   1: #include <iostream.h>

   2: #include <stdlib.h>

   3: #include <time.h>

   4: #include <conio.h>

   5:  

   6: int main()

   7: {

   8:  long int aleatorio=0;

   9:  cout<<"Programa que genera 10 numeros aleatorios con srand(1)"<<endl;

  10:  srand(1);//Utilizo el numero 1 como semilla

  11:  for(int i=1; i<=10; i++){ // Ciclo for para generar 10 numeros

  12:  aleatorio = rand()%11;

  13:  cout<<i<<".-Aleatorio = "<<aleatorio<<endl;

  14:  }

  15: getch();

  16: }

🙂 Wow!! funciona… …. aunque tiene un detallito… si lo ejecutamos de nuevo SALDRAN LOS MISMOS NUMEROS y no queremos eso… lo que queremos es que cada vez que se ejecute el programa genere números aleatorios nuevos. Para solucionarlo utilizaremos un truquito el cual es inicializar nuestra semilla con la hora del sistema rand(hora_del_sistema) 😀 .

1.- Agregamos la librería time.h

2.- Modifico la línea srand(1) a srand (time(NULL))

   1: #include <iostream.h>

   2: #include <stdlib.h>

   3: #include <time.h>

   4: #include <conio.h>

   5:  

   6: int main()

   7: {

   8:  long int aleatorio=0;

   9:  cout<<"Programa que genera 10 numeros aleatorios con srand
(time(NULL))"
<<endl;

  10:  srand (time(NULL)); //Utilizo la hr del sistema como semilla

  11:  for(int i=1; i<=10; i++){ // Ciclo for para generar 10 numeros

  12:  aleatorio = rand()%11;

  13:  cout<<i<<".-Aleatorio = "<<aleatorio<<endl;

  14:  }

  15: getch();

  16: }

*DATO: la función srand() solamente la podemos usar una vez en el programa no traten de engañar al programa usándola varias veces por que los tirara de a locos

bueno.. esta es una forma BASICA de generar números aleatorios, existen otras cuantas como por ejemplo usar la función  getpid(); (regresa el ID del programa en ejecución asignado por el Sistema Operativo)  envés de usar time(NULL); y otras miles de formas mas.

Si desean pueden descargar el código de estos ejemplos:

page_white_compressed1[1] Descargar ejemplos de números aleatorios en C y C++

-Los ejemplos fueron compilados con Borland C++ 5.2

 

El dato extra:

Existen otras dos funciones para generar numero aleatorios las cuales son: drand48() y srand48() si desean saber mas de ellas visiten este link

Puedo recomendar un libro que se llama: El arte de la intrusión de autor Kevin Mitnick y editorial ALFAOMEGA.RA-MA donde en su primer capitulo se aprecia la importancia de generar números aleatorios que realmente sean aleatorios 😀 que mejor ejemplo que un CASINO ELECTRONICO ¿no?.

Update:

He mejorado la explicación del por que utilizamos el modulo para delimitar a un rango la generación de números aleatorios.

Si desean hacer un programa que genere números aleatorios con un rango definido ( numero mínimo a obtener y numero máximo a obtener) pueden revisar el siguiente programa: page_white_compressed1[1] DESCARGAR

[+][+][+]

Fuentes:

http://www.chuidiang.com/clinux/funciones/rand.php

http://www.agner.org/random/

http://www.daniweb.com/forums/thread1769.html

Complemento para Windows Live Writer

Nube de etiquetas