jueves, 22 de enero de 2015

En espera de Windows 10


El pasado miércoles Microsoft presentó Windows 10, el nuevo sistema operativo de la compañía. ¿Qué trae de nuevo Windows 10?

Un sistema, un solo lugar

Más allá de una interfaz nueva o una herramienta añadida, Windows 10, es el resultado de un largo proyecto de Microsoft: Unificar sus plataformas. ¿Qué quiero decir con esto? Ahora, sólo habrá un Windows para PC, Tablet y Móvil. Un único ecosistema que, más allá de permitir al usuario tener todo a la mano (por ejemplo, tomar una foto con el celular y poderla visualizar en el PC de manera instantánea, gracias a One Drive) le permite también a los Programadores crear aplicaciones multiplataforma. 

El menú inicio está de regreso

Para nosotros los usuarios acostumbrados al menú inicio y que sentimos el abandono en Windows 8, en la nueva versión está de regreso, eso sí, como siempre, muy renovado ya que integra la interfaz Modern UI en él. 



Cortana ahora también para P.C.

Otra novedad es la integración de Cortana, el asistente de voz que hizo su aparición para Windows Phone 8.1 

Microsoft Windows 10


Adiós Internet Explorer, hola Spartan

Así es, Windows 10 incluirá un nuevo navegador, eso sí, habrá una versión de I.E. incluida para aquellas aplicaciones compatibles con él, pero poco a poco Spartan será el sustituto definitivo.

Microsoft Windows 10

Windows 10 estará disponible al público a finales de 2015 y será gratuito para usuarios de Windows 7, 8, 8.1 durante el primer año.


martes, 13 de septiembre de 2011

Build Windows 8

Hoy dio inicio al ciclo de conferencias para Desarrolladores de Microsoft en Anaheim, California. La apertura del evento a cargo de Steven Sinofsky, presidente de la división de Windows y Windows Live, nos permitió ver el avance de Windows 8.

"Reimaginamos Windows desde el chipset a la experiencia de usuario" dijo Sinofsky en alución a las nuevas caracteristicas que la nueva versión de Windows trae consigo. En primer lugar presentarón el rendimiento de Windows 8 comparado con Windows 7, donde este último consumía más recursos que la nueva versión, seguido de eso mostraron la nueva interfaz de usuario basada en el nuevo paradigma de "touch", esta nueva interfaz es construida con Metro, ya usada en Windows Phone 7 y Zune.

Aún más emocionante fue cuando, también presentando el preview de Visual Studio 11, se hizo una demo de las capacidades de despliegue de aplicaciones en Windows 8, más concretamente en el nuevo App Store; así mismo es ahora posible portar una Aplicación para Windows 8 a Windows Phone con solo modificar una linea de código.

Windows 8 además, será capaz de sincronizarse con otros dispositivos (Smart phones y Tablets) a través de Windows Live; dando así una total integración con los servicios en línea de Microsoft.

Otro detalle importante en esta conferencia fue la presentación de los Desarrolladores, muchos de ellos estudiantes, que diseñaron las aplicaciones mostradas en el evento, así es como Microsoft demuestra el apoyo a los nuevos talentos.

La descarga de Windows 8 para desarrolladores estará disponible a partir de las 20:00 horas Tiempo del Pácifico, no tendrá costo. El sitio es: http://dev.windows.com

Si quieres saber más sobre este evento visita: http://www.buildwindows.com

lunes, 5 de septiembre de 2011

Java: Cadenas y otras cosas

¿Cuando son dos cadenas iguales? Suena fácil pero esto es más dificil de lo que se piensa.

Java es un lenguaje de programación que emplea un objeto para representar una cadena en vez de usar un arreglo de caracteres. Una cadena no es un tipo primitivo en Java.

Existen personas que comparan cadenas de caracteres del mismo modo que con los tipos primitivos (usando el operador ==).

Pero ¿Es eso correcto?

Todo programador Java sabe como comparar tipos primitivos (int, char, boolean, etc.) con el operador ==.


public class Igualdad {
 public static void main(String[] args) {
  int a = 10, b = 10;
  if(a == b) {
   System.out.println("Igual");}
  }
 }

Pero ¿Qué pasa con los objetos de cadena (String)?

El siguiente código muestra que podemos comparar objetos String del mismo modo que con los tipos primitivos.


public class IgualdadCadenas {
 public static void main(String[] args) {
  String cadena = "abc", cadena2 = "abc";
  if(cadena == cadena2) {
   System.out.println("Igual");
  }
 }
}

Y funciona. Este tipo de experiencia inicial con la comparacion de cadenas puede llevar por mal camino a los principiantes.

Así que ¿Es verdad que siempre puedes comparar objetos String con el operador relacional de igualdad?

Si usas el operador = = para comparar objetos String, es cuestión de tiempo para que tengas problemas con ello. Por ejemplo, intenta lo siguiente:


public class IgualdadCadena {
 public static void main(String[] args) {
  String cadena1 = "abc", cadena2 = "def";
  if(cadena1 + cadena2 == "abcdef") {
   System.out.println("Igual");
  }
 }
}

En este caso la comparación de Strings no funciona.

La comparación siguiente:

cadena1 + cadena2 == "abcdef"
 
Pareciera ser falsa, cuando por toda lógica razonable debe ser verdad.

Aquí otro ejemplo de que no funciona:


public class IgualdadCadena {
 public static void main(String[] args) {
  String cadena1 = "abc";
  String cadena2 = new String("abc");
  if(cadena1 == cadena2) {
   System.out.println("Equal");
  }
 }
}

De nuevo el resultado es falso pero se espera que sea verdadero dado que los Strings son los mismos.

¿Por qué estas comparaciones son falsas cuando se espera que sean verdaderas?

Muchos programadores Java emplean el operador = = para comparar Strings, sin embargo, si deseas comparar el valor de dos objetos Strings es necesario emplear un método.

El método equals()  compara el texto de dos objetos String. Si el texto es el mismo, regresará un valor True, de otro modo, regresará False. Así el siguiente código funciona como se espera:


public class IgualdadCadena {
 public static void main(String[] args) {
  String cadena1 = "abc", cadena2 = "def";
  if((cadena1 + cadena2).equals("abcdef")) {
   System.out.println("Igual");
  }
 }

Pero ¿Por qué el operador = = a veces funciona y otras no?

Esto es porque los objetos String en Java son inmutables y el operador = = está comparando referencias de objeto, no el texto de los Strings. Estos dos hechos trabajan juntos ya a veces hace que el operador = = parezca que realiza la comparación correcta. Por lo tanto si creas dos cadenas usando la sintaxis siguiente:


String cadena1 = "abc";
String cadena2 = "abc";
 
Java no creará dos objetos String con el mismo valor sino que creará solo uno conteniendo el valor "abc". Así cadena1 y cadena2 estarán referenciando al mismo objeto en memoria. Esta es la razón por la que:

cadena1 = cadena2

Es verdad. Esto es porque el operador = = revisa si ambos objetos referencian al mismo objeto en memoria y esto también quiere decir que ambos objetos contienen el  mismo valor.

Sin embargo si se usa un constructor de String entonces se crea un nuevo espacio de memoria para el nuevo objeto. Como lo siguiente:

String string1 = "abc";
String string2 = new String("abc");

Tenemos dos objetos String que contienen el mismo texto pero ahora:


string1 == string2

Es falso porque las dos variables referencían a disntintos objetos. Lo mismo sucede si se compara el resultado sobre la marcha o comparar una cadena con un literal. Por ejemplo:


string1 + string2 == "abcdef"

Es falso por dos razones. Primero, string1 y string2 son concatenados en un nuevo objeto y "abcdef" es aún un objeto String y por lo tanto no pueden ser igual las referencias a objeto.

Siempre se debe emplear el método equals() si se desea comparar el texto de dos objetos String. Quizá se creerá que es una desventaja el no poder usar el operador = = para compara objetos String. No hay que olvidar que los objetos String no son tipos primitivos y por lo tanto emplea referencia semántica no valores semánticos.

Así se emplea el operador = = para saber si dos objetos String son el mismo objeto en memoria además esto asegura de que ambos tienen el mismo texto.

viernes, 4 de junio de 2010

Problema al Instalar Microsoft Management Studio Express en Windows 7

El día de un hoy un compañero y colega instalaba Microsoft SQL Server Management Studio y al estar haciendolo salía un error que decía:

"El instalador encontró un error inesperado al intentar instalar este paquete. Esto puede indicar un problema con este paquete. El código de error es 29506."

Este problema se presenta en Equipos con Microprocesadores de 64 bits, pero hay una solución para esto:
  • Ejecutar la Consola de Comandos como Administrador
  • Navegar hasta la localización del Archivo de instalación
  • Ejecutarlo desde linea de comando (En el ejemplo el archivo está en el directorio raíz C:\)
    • C:\>SQLServer200x_SSMSEE_x64.msi (donde 200x puede ser 2005 o 2008).
Listo! ahora si a empezar a desarrollar BD's

jueves, 6 de mayo de 2010

Cómo quitar el aviso de Microsoft Windows XP (víctima de piratería de software)

Casi diario me traen computadoras con el "problema" de la estrellita azul, esa estrella azul que te indica que tu copia de Windows XP no es original, creanme estoy de acuerdo con esa medida de Microsoft.

Pero bueno los clientes son necios y no estan dispuestos a pagar una licencia original de Microsoft Windows así que halle una solución a su "problema".

1. Abra el Explorador de Windows (a mí particularmente me gusta hacerlo de forma rápida con la tecla Windows + E). En el menú vaya a Herramientas > Opciones de carpeta.

2. Aparecerá una nueva ventana. Vaya a la pestaña Ver y en Configuración avanzada quite la opción Utilizar uso compartido simple de archivos (recomendado). Haga clic en Aceptar.

3. En la barra de direcciones del mismo Explorador de Windows, escriba: %WinDir%\system32 y presione Enter.

4. Se abrirá la carpeta system32 y dentro de ella aparecerán una cantidad enorme de archivos. Busque el archivo wgalogon.dll (si no lo encuentra, es posible que esté oculto; para hacerlo visible, vaya a Herramientas > Opciones de carpeta, haga clic en la pestaña Ver y en la opción Archivos y carpetas ocultos, seleccione la opción Mostrar todos los archivos y carpetas ocultos.

5. Una vez ubicado el archivo, haga clic en el botón derecho y seleccione Propiedades.

6. Aparecerá una nueva ventana. Haga clic en la pestaña Seguridad y luego haga clic en el botón Opciones avanzadas.

7. Aparecerá una nueva ventana. Elimine la opción llamada Heredar del objeto principal las entradas de permisos relativas a los objetos secundarios.

8. Cuando haga clic en Aceptar, aparecerá un aviso de seguridad. Haga clic en el botón Copiar. Luego haga clic en Aceptar.

9. Regresamos a la ventana de Propiedades del archivo wgalogon.dll. Escoja cada usuario y quite el permiso de Lectura y Ejecución.

10. Haga clic en Aceptar y reinicie. Notará que el aviso desaparece. Cuando haya reiniciado, por favor active nuevamente la opción Utilizar uso compartido simple de archivos (recomendado), que habíamos desactivado en el paso 1 y 2.

cheque son 10 pasos pero simples para quitar el aviso que el windows no es original o la estrellita azul

viernes, 23 de abril de 2010

Problema con Unidad de DVD/CD en Windows Vista

El viernes pasado mientras preparabamos los equipos que se iban a usar en los talleres de la Presentación de Microsoft Visual Studio 2010, una de las maquinas no reconocia la unidad de DVD, pensé que se trataba de un problema físico como el cable o algo parecido, pero al revisar el BIOS ahí estaba la unidad perfectamente funcionando así que el problema estaba en el Sistema Operativo, por lo que de inmediato comence a buscar una solución y encontré la causa: Windows Vista crea algunos filtros relacionados al Buffer de las unidades ópticas (incluyendo aquellas virtualizadas como VirtualDrive y MagicDisc).

Así que para corregir esto es necesario modificar el Registro de Windows, por lo que se advierte que hagas un backup de éste antes de modificarlo.

Ahora bien:

  1. En Windows Orb ó Inicio, en el apartado buscar escribe "regedit" (sin comillas) o pulsa la tecla de Windows + R para abrir "Ejecutar" y escribes "regedit" y pulsas Intro.
  2. En la llave HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E965-E325-11CE-BFC1-08002BE10318} busca cualquiera de los dos valores "LowerFilters" o "UpperFilters" y borralos.
  3. Reinicia y listo, tus unidades están de vuelta.

Problema al Instalar Matlab 7

Resulta que hace unos días la profesora de Inteligencia Artificial nos pidio instalar Matlab para realizar algunos ejercicios de Lógica Difusa.

Pues bien consegui una copia de MatLab 7 y lo instalé en mi equipo portatil, una Compaq v2000 con Microprocesador AMD Sempron a 800 Mhz, 512 MB en RAM con Windows XP Professional Service Pack 3, no hubo ningun problema al instalarlo sino que cuando quise ejecutarlo solo se abría el Splash Screen y se cerraba y no me dejaba trabajar. Así que busque en Internet y me encontré con que está versión de MatLab presenta un problema al ejecutarse en Micros AMD (32 y 64 bits) pero hay una solución y es agregando una Variable de Entorno. A continuación les listo el procedimiento:

  1. Ir a Inicio, clic secundario sobre "Mi PC" y seleccionar "Propiedades" del menú contextual
  2. Ir a la pestaña "Opciones Avanzadas" y pulsar el botón de "Variables de Entorno"
  3. En el apartado "Variables de Sistema" seleccionar el botón "Nueva"
  4. Se abrirá un pequeño cuadro de diálogo, en "Nombre de Variable" escribir BLAS_VERSION en "Valor de Variable" escribir C:\MatLab7\bin\win32\atlas_Athlon.dll, pulsar "Aceptar"
  5. Abrir MatLab y a trabajar.
Finito