viernes, diciembre 24, 2010

Como instalar Android (Sistema Operativo de Google) en tu computadora.

Hola a todos, hace un par de días me llevé la sorpresa que también tenemos visitantes activos de Francia!  Gracias por el mensaje Daniel.

Y en vista de que hay temas que les interesan más que otros, aquí les dejo uno que creo que les va a encantar.  Han visto, escuchado y leído acerca del sistema operativo de Google para PC?  Esto también a mi me hizo quedar en shock!  Sin embargo, al parecer no se ha concretado, pero les tengo una buena noticia; he encontrado la manera de instalar un sistema operativo de Google en tu PC, sip, el Android, que aunque fue intencionado para ser utilizado en telefonía móvil, ahora también lo podemos probar en nuestra propia computadora desde un live CD o instalarlo si lo quieren, incluso lo pueden correr desde un USB en caso de que lo quieran instalar en una Netbook que no tenga lector de CD´s.

     Empecemos por el principio, diría un viejito que conozco, primero las instrucciones de como utilizarlo desde tu USB:


  • Primero que nada, para correrlo desde un USB, obviamente necesitamos un dispositivo de almacenamiento USB de por lo menos 256 MB.  Borren todo lo que tengan ese dispositivo para que puedan correr Android desde allí.  (Entre más espacio tengan, más rápido corre el sistema operativo (dependiendo también de la velocidad de tu ordenador y puerto USB) (esto es un chiste de programación para los que sean programadores) =)).
  • Ahora hay que descargar la imagen del ISO del Android: Descargar escogiendo la primera descarga de la categoria de versiones estables.


  •  Al mismo tiempo, puedes descargar el UNetbootin que permitirá hacer de tu USB booteable: Descargar.


  • Cuando tus descargas estén completas, abre el UNebootin, dale click al botón de Diskimage, después dale click al botón de "..." y selecciona la ISO de Android que acabas de descargar.  Finalmente, selecciona el drive para tu USB o tarjeta de memoria y da click en OK.

  • UNebootin copiara los archivos a tu dispositivo USB e instalará un bootloader.  Esto puede tardar unos minutos dependiendo de la velocidad de tus puertos USB.

  • Una vez que haya terminado te pedirá reiniciar la computadora, reiniciala si quieres empezar a utilizar Android o déjalo así si lo quieres empezar a utilizar más tarde.

  • Si quieres (y puedes) utilizar Android desde un CD, sólo hay que quemar la imagen en un disco y bootear desde este.

  • Cuando la PC o Netbook inice el Android, selecciona la opción de Live CD para que pruebes el sistema operativo primero.

  • Va a aparecer algo de texto cuando Android inicie.

  • Vas a ver la pantalla de carga de Android, yo la ví sólo por unos instantes ya que Android trabaja muy rápido en una computadora.

  • Después de unos segundos, verás el escritorio de Android ... EN TU COMPUTADORA!  Puedes acceder a una de las aplicaciones que ya están en la pantalla o abrir el menú para ver más aplicaciones.

  • Has click sin dejar ir el botón del ratón para abrir un menú contextual y cambiar el fondo de pantalla o agregar un "Widget" al escritorio.

  • O presiona el botón derecho de tu ratón para abrir un menú en el que se muestran otras opciones, como abrir una nueva pestaña en tu navegador.

  • Fuciona muy bien para utilizarlo como una forma para entrar en línea rápido y de manera segura.  El sistema operativo tiene un tiempo de inicio de 10 segundos, por lo que es una muy buena alternativa al Puppy Linux.  Incluso puedes instalar aplicaciones dando click al Appstore, sólo que al momento de reiniciar la máquina las aplicaciones serán borradas a menos que tengas el sistema operativo instalado en tu disco duro.

     En su totalidad, Android se portó muy bien desde un live CD, aunque al momento de abrir un cuadro de diálogo empezó a alentarse e incluso hizo que el ratón empezara a funcionar con un poco de letargo.  Podrían instalar el Android en su disco duro, pero yo no lo recomiendo ya que tiene muchas limitaciones en cuanto a compatibilidad con muchas aplicaciones y programas y, al menos yo, no lo pude instalar en una computadora con procesador AMD.

     Este también es un buen recurso si quieres buscar en las carpetas de tu computadora cuando tienes un virus, ya que el virus no se activará dentro de este sistema operativo.

     Por favor recuerden, este sistema operativo es basado en Linux, para todos aquellos que lo quieren instalar primero en una máquina virtual como VirtualBox para probarlo.

     En fin, es muy divertido utilizarlo desde un USB y es una muy buena alternativa al Puppy Linux, a parte, puedes realizar todas las pruebas que se te ocurran, ya que si te equivocas y hechas a perder el sistema operativo de Android no te pesará, ya que lo puedes reiniciar o reinstalar en menos de 30 segundos.

martes, diciembre 21, 2010

Fe de erratas (Servidor con proxy, limitador de ancho de banda, filtro web, ...)

Hola a todos nuevamente.

Me da tristeza comentarles que tuve que quitar un post (por cierto buenísimo, muy informativo y de alguien quien yo pienso que es excelente para manejar la aplicación) debido que el creador del tutorial se molestó por que su nombre no fue puesto en mayúsculas, dando el crédito al equipo al que pertenece y al principio del tutorial.  Leyendo un poco, me dí cuenta que una "fe de erratas" se publica cuando uno se equivoca en la información del artículo publicado, sin embargo, toda la información está correcta, lo único es que al autor original del post no le pareció que publicara los créditos y agradecimiento al final del documento, y según también he leído, las referencias se publican al final de los artículos y .... pero en fin.  El punto es que creo que el autor se sintió desfazado, por lo que, para no crear conflictos, quito el post y cuando tenga el tutorial de como instalar el ClearOs realizado por mi mismo lo volveré a publicar.  Esta persona no había publicado el tuto en su propia web, el tuto fue publicado en un foro de discusiones, y al momento de yo verlo pensé que a ella le gustaría que mucha gente lo leyera para facilitar la instalación del ClearOs (tal como en este blog se hace, el realizar tutoriales, reseñas e instructivos con el único fin de informar y ayudar a las personas).

     Creo que ella piensa que yo soy alguien quien no conoce de estos temas, sin embargo, a modo de revindicación, yo tengo el ClearOs instalado desde hace ya más de 3 meses, y lo manejo para 4 oficinas, así que el comentario que ella realiza diciendo que después si me preguntan algo más acerca del tuto yo no voy a saber responderles queda muy fuera de contexto.

     A continuación pongo una de las imágenes utilizadas en el tuto y el agradecimiento que se le hizo al autor como evidencia:
"...Desconecta tu monitor, el teclado y el mouse del servidor y dejalo con un UPS y regulador de voltaje para que no se dañe, ponlo en algun lugar libre de polvo y mantenlo siempre a la vista de manera que veas las luces de encendido. Listo!!! haz configurado y dado políticas de ancho de banda! a cada usuario.

Más información (en inglés)
http://www.clearcenter.com/Support/clearcare.html

Gracias a Chica Enigmaelectronica por las imágenes y tutorial."


     Como pueden ver, nunca fue mi intención el reclamar que éste tutorial fue de mi creación, si no, hubiéra borrado el nombre del autor de las imágenes y no hubiéra puesto al pie del mismo el agradecimiento por TODO el tutorial, sin embargo, esto es lo que ella comenta al respecto:



"Anónimo dijo...




Lamento que Hayas tenido que COPIAR todo el Texto de mi aporte, y soo poner al final un "gracias a chica enigmaelectronica"

Gente como tu hace que una persona no continue aportando material...

Deberias de poner TUTORIAL CREADO POR LA CHICA DEL TEAM ENIGMA

ELLA ES ENIGMAELECTRONICA

en el principio.

Te van a preguntar mas, no sabras como responder, si quieres verte bien pon al principio mis creditos."

Primero que nada, al momento de poner una publicación de alguien más, tengo que COPIAR todo el texto, segundo; no sabía que para darle crédito al autor tenía que poner a que equipo ("team") pertenece, tercero; no es regla que lo ponga al principio, después de todo, por eso tengo yo mi propio blog, cuarto; si me preguntan más obvio que voy a saber que responder puesto que no soy un niño que "le mueve a las computadoras", soy un profesional titulado y he manejado por un tiempo este S.O., quinto; a mi no me interesa "verme bien", me interesa informar y ayudar a la gente y sexto; lo que realmente es lamentable es que gente como ella publique sólo para que reconozcan su nombre en el internet.

     En fin, esta "FE DE ERRATAS" creo que se ha convertido en dimes y diretes, por lo que prefiero quitar el post por completo, así el autor no se molesta y nosotros podemos seguir nuestra vida tranquilamente, a final de cuentas, yo había puesto su tutorial por el simple hecho que me pareció un excelente aporte y redacción sobre la problemática de la instalación del S.O. en cuestión y cuando lo ví pensé que si yo lo hubiéra visto antes de instalar el ClearOS me hubiéra tardado mucho menos en hacerlo y me hubiéra simplificado el proceso, pero también es cierto, que gracias a que no lo ví que puedo explicar el funcionamiento y la seguridad del mismo ante mi departamento de control de calidad.

     Sin más por el momento me despido agradeciendo a todos los que han dejado que yo publique sus aportes y reiterando mi apoyo por establecer una comunidad de conocimiento ilimitado para todos.

jueves, diciembre 16, 2010

Jugar Wizard101

Creo que esto les va a gustar:  Encontré un juego que se llama Wizar101, es un gran juego de RPG de magia que puedes descargar gratuitamente a tu computadora, como yo ya lo descargué me dieron un código por el cual le puedo regalar a quien lo use 1200 coronas (unidad de moneda utilizada dentro del juego), sólo hay que inscribirste en el siguiente vínculo: http://wizard101.com/friend introducir el código N248D-9L5Q9-23Y6M-5L672 y crear tu cuenta, claro que en la vida no todo es grátis, se puede decir que las "coronas" no son gratis, son extras y válidas cuando hayas creado la cuenta y comprado membresía al juego (desde $10.00 usdlls) o hayas comprado algo con $10.00 dlls de valor dentro del juego, pero aún así, con esto si que te alcanzan cosas "poderosas" para empezar a jugar con ventaja. Por lo regular, también tienen regalos (estos si totalmente gratis) a todos los que se inscriban y utilicen este código, el regalo de este mes es una mascota DRAGON la cual podrás ver crecer y darte habilidades mágicas que otras mascotas no te dan. En el juego también puedes platicar con otros jugadores de alrededor del mundo (hay control parental para los menores), conocer amigos nuevos o jugar con los ya conocidos y conquistar el mundo de la "Spiral"!

     Abajo del "promo" les dejo unos videos mostrando parte del juego como: una casa que puedes comprar con monedas gratis y una vista a como las batallas se pelan.

     Saludos y los espero en el juego!




Invite your friends and family to play and have more fun!



Not only will you have more fun, your new friend or family member who made the purchase will get 1250 Crowns!

Here is your friend code:
N248D-9L5Q9-23Y6M-5L672
Redeem this at www.wizard101.com/friend
Your friend code can be used over and over again.
Give it to one friend or millions!









martes, diciembre 14, 2010

Gracias a ustedes, si, sólo a ustedes!

El siguiente es sólo para darle las gracias a todos ustedes por sus visitas, al parecer este blog va creciendo poco a poco y todo gracias a USTEDES!

Esta es la lista de los 10 paises que más nos han visitado, así que como dijieran todos los artistas:  "GRACIAS MÉXICO!"


Páginas vistas por países
México
302
Estados Unidos
291
España
149
Perú
108
Colombia
90
Chile
56
Argentina
46
Venezuela
35
Ecuador
33
Italia
24


Utilizar tablas temporales en Microsoft SQL 2005


Saludos amigos en esta ocasión leyendo me encontré con un tema muy interesante acerca de las tablas temporales en SQL, les dejo lo que traduje del tema con una explicación y ejemplo de como crear tablas temporales locales, globales y variables de tabla, dentro del Motor de Base de Datos de SQL Server 2008.
Tablas Temporales.
Las tablas temporales son consideradas tablas regulares, y estas se almacenan automáticamente en la base de datos de tempdb.
Las tablas temporales se pueden usar en los siguientes escenarios:
Como alternativa a los cursores: por ejemplo, en lugar de utilizar un cursor de Transact-SQL para recorrer un conjunto de resultados y realizar tareas basadas en cada fila, en su lugar puede utilizar una tabla temporal. Usando un bucle WHILE, puede recorrer cada fila de la tabla y realizar la acción de la fila especificada, posteriormente debe eliminar la fila de la tabla temporal.
Como almacenamiento incremental de conjuntos de resultados: Por ejemplo, imaginemos que tiene una sola consulta SELECT que realiza una combinación “JOIN”con diez tablas. A veces las consultas con varias combinaciones “JOINS” pueden funcionar de manera incorrecta. Una técnica para intentar es la de fraccionar o fragmentar una consulta grande en consultas más pequeñas. Si usamos tablas temporales, podemos crear conjuntos de resultados intermedios basados en consultas de menor tamaño, en lugar de intentar ejecutar una consulta única que sea demasiado grande y de combinaciones múltiples “multi-joined”.
Como temporal en la sobrecarga baja de búsqueda de tabla: Por ejemplo, imagine que usted está utilizando una consulta que tarda varios segundos en ejecutarse, pero sólo muestra un pequeño conjunto de resultados, el cual desea utilizar en varias áreas de su procedimiento almacenado, pero cada vez que se llama se incurre en el tiempo de ejecución de la consulta general. Para resolver esto, puede ejecutar la consulta una sola vez en el procedimiento, llenando una tabla temporal, de esta manera se puede hacer referencia a la tabla temporal en varios lugares en su código, sin incurrir en una sobrecarga de resultados adicional.
Existen dos tipos de tablas temporales: Globales y Locales.
Las tablas temporales Locales se escriben anteponiendo el símbolo # y tablas temporales Globales con el doble símbolo ##.
Tablas temporales Locales.
Las tablas temporales Locales están disponibles para usarse por cada conexión actual del usuario que los cree.
Varias conexiones pueden crear una tabla temporal con mismo nombre, esto solo para para tablas temporales Locales sin causar conflictos. La representación interna de la tabla local tiene un nombre único, para no estar en conflicto con otras tablas temporales con el mismo nombre creado por otras conexiones en la tempdb.
Las tablas temporales locales son eliminadas con el comando DROP o se eliminan automáticamente de memoria cuando se cierra la conexión del usuario.
Creando la tabla temporal Local:
CREATE TABLE #ProductosResumen
( idProducto int NOT NULL PRIMARY KEY,
  nombre varchar(75) NULL,
  precio smallmoney NULL
);
Insertando datos en la tabla temporal global.
INSERT #ProductosResumen (idProducto, nombre , precio)
SELECT id,nombre, precio FROM dbo.DEMO_PRODUCTO
ORDER BY nombre;
Seleccionando los datos de la tabla temporal.
--Seleccionando los datos de la tabla temporal
SELECT * FROM #ProductosResumen; 

-- Resumen de precios de la tabla temporal
SELECT AVG(precio) FROM #ProductosResumen;

Resultado.
image
Eliminando la tabla.
-- Eliminando la tabla temporal
DROP TABLE #ProductosResumen;
Nota: Para que el ejemplo funcione deben de ejecutar en un solo bloque de instrucciones todo el código que coloque anteriormente. Para este caso yo llene mi tabla temporal con datos de una tabla que ya tenia creada en la base de datos, ustedes pueden utilizar un insert normal.
Tablas Temporales Globales.
Las tablas temporales Globales tienen un alcance diferente al de las tablas temporalesLocales. Una vez que una conexión crea una tabla temporal Global, cualquier usuario con permisos adecuados sobre la base de datos puede acceder a la tabla. A diferencia de tablas temporales Localesno se pueden crear versiones simultáneas de una tabla temporal Global, ya que esto generará un conflicto de nombres.
Las tablas temporales Globales de eliminan explícitamente de SQL Server ejecutandoDROP TABLE. También se eliminan automáticamente después de que se cierra la conexión que la creo, la tabla temporal Global no es referenciada por otras conexiones, pero es muy raro ver que se utilicen tablas temporales Globales en bases de datos en producción.
Es importante considerar cuando una tabla va o debe ser compartida a través de conexiones, se debe crear una tabla real, en lugar de una tabla temporal Global. No obstante, SQL Server ofrece esto como una opción.
Creando la tabla temporal Global:
--Creando la tabla temporal Global
CREATE TABLE ##Roles
( idRol int NOT NULL PRIMARY KEY,
  nombre varchar(30) NULL,
  activo bit NULL
);
Insertando y seleccionando datos de la tabla temporal global:
-- Insertando datos en la tabla temporal global
INSERT INTO ##Roles
VALUES(1,'Administrador',1),
      (2,'Supervisor',1),
      (3,'Programador',0)

-- Seleccionando los datos de la tabla temporal global
SELECT * FROM ##Roles;
Resultado:
image 
Eliminando la tabla temporal global desde la conexión original que la creo.
-- Eliminando la tabla temporal global
DROP TABLE    ##Roles;
Variables de Tabla.
Por otro lado tenemos las Variables de Tabla que son un tipo de datos que puede ser utilizados en un lote Transact-SQL (Batch), procedimiento almacenado o función; estas variables de tabla son creado y definidas de forma similar a una tabla, sólo con un alcance de vida estrictamente definido. Las Variables de tabla suelen ser buenos reemplazos de tablas temporales siempre y cuando el conjunto de datos es pequeño.
Razones para usar las variables de tabla:
  • Duración o alcance. La duración de la variable de tabla sólo vive durante la ejecución del lote, función, o procedimiento almacenado.
  • Tiempos de bloqueo más cortos. Por el estrecho alcance o tiempo de vida.
  • Menos re compilaciones cuando se usa en los procedimientos almacenados.
Como se menciono anteriormente, hay inconvenientes para utilizar las variables de tabla. El rendimiento de las variable de tabla se ve afectado cuando el resultado es demasiado grande o cuando los datos de la columna de cardinalidad son fundamentales para la optimización del proceso de consulta.
La sintaxis para crear una variable de tabla es similar a la de crear una tabla normal, se utiliza la palabra clave DECLARE y el nombre de tabla, anteponiendo el símbolo @:
DECLARE @TableName TABLE

(column_name <data_type> [ NULL | NOT NULL ] [ ,...n ] )
Creando una variable de tabla:
-- Creando la variable de tipo tabla.
DECLARE @EstatusUsuarios TABLE
( idEstatus int NOT NULL PRIMARY KEY,
  nombre varchar(30) NULL
)
Insertando y seleccionando datos de la variable tabla:
-- Insertando en la variable de tipo tabla.
INSERT INTO @EstatusUsuarios VALUES (1,'Activo'),
                                    (2,'Inactivo'),
                                    (3,'Bloqueado')

-- Consultando datos de la variable de tipo tabla.
SELECT * FROM @EstatusUsuarios;
Al terminar la ejecución del batch o bloque de instrucciones se eliminara la variable tabla, o si colocamos una instrucción GO automáticamente se eliminara y no la podremos utilizar como los muestro en el siguiente ejempló, recuerde que los ejemplo para claridad los coloque separados, pero los debe de ejecutar completos como lo hago abajo para el caso de la variables de tabla:
-- Creando la variable de tipo tabla.
DECLARE @EstatusUsuarios TABLE
( idEstatus int NOT NULL PRIMARY KEY,
  nombre varchar(30) NULL
)

-- Insertando en la variable de tipo tabla.
INSERT INTO @EstatusUsuarios VALUES (1,'Activo'),
                                    (2,'Inactivo'),
                                    (3,'Bloqueado')

-- Consultando datos de la variable de tipo tabla.
SELECT * FROM @EstatusUsuarios;

-- Al ejecutarse el go o el bloque de instrucciones
--la variable tabla se eliminara auitomaticamente.
Go

SELECT * FROM @EstatusUsuarios;
Como podrán notar en el primer select nos regreso:
image
Y para el segundo select:
imageEsto es por que como lo comente anteriormente el tiempo de vida de la variable tabla termina al ejecutarse el bloque de instrucciones, en este caso termino con el GO.
Cuando encontremos problemas de rendimiento, debemos de asegurarnos de probar todas las soluciones y alternativas, y no necesariamente asumir que una de las opciones (tablas Temporales) son menos deseables que otras (variables de tabla).
Espero les sea de ayuda, se que esta un poco largo el Post, pero creo vale la pena leerlo.