Archivo de la categoría ‘Software’

Las videocónsolas de nueva generación arrancarán por fin los 64 bits en el PC

Martes, 24 de septiembre de 2013

La nueva generación de cónsolas (Xbox One y PlayStation 4) son máquinas de gran potencia, y si miramos sus especificaciones (que son casi idénticas), veremos la razón de que sean cónsolas de 64 bits: ambas disponen de 8Gb de memoria RAM.

Hoy en día, todos los videojuegos están programados en 32 bits, ya que las plataformas actuales no suelen superar el límite de 2Gb que tiene esta tecnología… Xbox 360 y PlayStation 3 tienen 512Mb de RAM, y los PC estándar de hoy en día suelen tener 4Gb, pero como el sistema operativo y otros programas de un PC suelen consumir mucha memoria, los juegos de PC están pensados para consumir un máximo de 2Gb para ellos solos.

¿No existe ningún juego de 64 bits? Bueno, la verdad es que alguno hay… Half Life 2, Crysis y Far Cry tuvieron ejecutables de 64 bits… pero poca cosa más. Y me diréis… ¡pero si esos juegos son de hace 5 años o más!…  y es que esos juegos salieron como reclamo publicitario de los primeros procesadores de 64 bits y “Windows XP Professional 64 bit edition”. Realmente en esa época si tu equipo tenía 1Gb de RAM ya ibas sobrado, así que realmente no había apenas diferencia entre los juegos originales o sus parches en 64 bit… ya que la ventaja de los 64 bits es la posibilidad de usar más de 2Gb de RAM.

Así que volvemos a las cónsolas de nueva generación… y vemos que no hay otra opción que programar los videojuegos de esas cónsolas a 64 bits, así que cuando salgan esos juegos en PC… como mínimo habrá la opción de ejecutarlos en 64 bits… e incluso provablemente habrá ya algunos juegos que sean “64 bit only”.

¿Es eso un problema? Sólo para los amantes de lo obsoleto: ya hace como 2 años que todos los equipos nuevos vienen de serie con la edición de 64 bits de Windows, y hoy en día un equipo para videojuegos que se precie monta como mínimo 8Gb de RAM y 16Gb no son raros… aunque por culpa de que no hay videojuegos de 64 bits, tener tanta memoria RAM realmente sólo ayuda a que el juego cargue algo más rápido gracias al enorme caché de disco que proporciona la memoria que no podrá ser usada por una sóla aplicación de 32 bits.

Como conclusión, y para aliviar a los que son primariamente jugadores en PC, sólo puedo decir que la nueva generación de videocónsolas provocará indirectamente una mejora sustancial en los videojuegos de PC, gracias a que empezaremos a tener juegos de 64 bits… ¡y que realmente los aprovechan!

Windows 7 se come mis accesos directos del escritorio.

Miércoles, 3 de febrero de 2010

Hoy por fin he encontrado cómo solucionar el problema de la desaparición de los iconos de acceso directo del escritorio en Windows 7.

El problema exactamente es que de forma periódica (una vez por semana) puede que desaparezcan del escritorio todos los accesos directos que tienen un destino no local (osea, en discos duros externos, unidades de red, o DVDs).

Esto ocurre porque hay una tarea programada en Windows 7 que elimina los accesos directos erróneos… si en el momento que se ejecuta la tarea programada no tenemos conexión a la red, o no tenemos los discos duros conectados, la tarea programada eliminará (sin ni tan sólo enviarlos a la papelera) todos esos accesos directos “erróneos”.

¿Solución? deshabilitar esa tarea programada:

  • Vamos al botón de Inicio -> Panel de control -> Sistema y Seguridad -> Herramientas administrativas, y hacemos doble clic sobre el icono “Programador de tareas”.
  • En el programador de tareas, en el panel de la izquierda desplegamos “Programador de tareas (local)” -> “Biblioteca del Programador de tareas” -> “Microsoft” -> “Windows” -> “Diagnosis”.
  • En el panel central superior, seleccionamos la opción “Scheduled”, y en el panel de la derecha, en “Elemento seleccionado” pulsamos sobre “Deshabilitar”.
  • Ahora ya podemos cerrar todas las ventanas, y a partir de ahora ya no desaparecerán más iconos del escritorio.

No puedo cerrar el administrador de tareas… y está parpadeando todo el rato.

Viernes, 4 de diciembre de 2009

Este es un bug que tiene tanto Windows Vista como Windows 7, y que afecta sobretodo si tienes configurado el administrado rde tareas para que se oculte al estar minimizado:

Si intentas mostrar el administrador de tareas mientras el equipo está muy ocupado, y al no aparecer intentas por segunda vez ejecutar el administrador de tareas, lo que consigues es que cuando el equipo vuelve a responder, se ejecuten dos (o más) instancias del administrador de tareas, que se ponen a pelearse para ver quién ocupa el icono del área de notificación. Como resultado, vemos el cuadradito verde del área de notificación parpadeando como si pasara del 0 al 100% rápidamente, y no podemos restaurarlo ni cerrarlo, incluso puede que se quede el menú contextual del icono del área de notificación colgado sin responder.

Esta situación es comprometida, ya que si tienes el administrador de tareas configurado en “ocultar al minimizar” no puedes cerrarlo ya que no puedes usarlo… ¿o si?

La solución al problema la encontramos en la utilidad de línea de comandos que viene de serie con Windows llamada TaskKill.exe.

Esta utilidad permite finalizar una tarea des de la línea de comandos. En el caso que nos ocupa, para arreglar el problema con los administradores de tareas, tenemos que seguir los siguientes pasos:

  • Abrir una línea de comandos pulsando sobre el botón de inicio y escribiendo CMD y pulsando enter.
  • En la ventana de la línea de comandos escribimos TASKKILL /IM TASKMGR.EXE y pulsamos enter de nuevo.

Automáticamente uno de los administradores de tareas se cerrará y hará que el otro funcione correctamente. Si aún no se ha solucionado, podemos repetir el segundo paso hasta que se solucione.

Y para los que quieran saber más, a continuación dejo un par de notas técnicas (muy técnicas):

Este problema también ocurre en Windows XP; pero en ese caso lo que ocurre es que se crean múltiples iconos en el área de notificación (uno por cada instancia), pero en este caso se pueden cerrar sin ningún problema, ya que cada instancia responde correctamente a su icono del área de notificación correspondiente.

La razón de porqué ocurre esto, es por la forma en que una aplicación detecta si ya se está ejecutando. Para ello, debemos saber qué es un semáforo:

Un semáforo es una variable global del sistema operativo, que una vez establecida seguirá existiendo hasta que sea liberada o hasta que el proceso que la ha creado se termine.

El comportamiento habitual de una aplicación de la que sólo se quiere o debe tener una instancia en ejecución, es el siguiente: Cuando se inicia se comprueba si existe un semáforo con un nombre concreto. Si el semáforo existe, la aplicación se termina; si no existe, se crea inmediatamente para que si se intenta iniciar otra instancia de la misma aplicación se detecte el semáforo y no permita continuar iniciando.

El problema ocurre cuando el equipo está muy ocupado (todos los núcleos de la CPU al 100%) y el sistema operativo carga la aplicación, pero la ejecuta tan despacio, que da tiempo a volver a iniciarla antes de que se cree el semáforo. Hay que tener en cuenta que no se genera ninguna excepción si se crea un semáforo con un nombre que ya existía.

Y si dominas de estos temas, te estarás preguntando… ¿cómo puede ser que no le de tiempo a ejecutar las primeras líneas de código de la aplicación y si le de tiempo a cargarla de nuevo? La respuesta es que en los sistemas operativos modernos, cuando ejecutamos una aplicación (o cargamos una biblioteca), lo primero que se hace es comprobar si ya se ha ejecutado anteriormente; en ese caso no volverá a cargar desde disco y a la memoria; sino que aprovechará el espacio en memoria que ya ocupa, y creará un nuevo espacio para sus necesidades de memoria de ejecución. De esta forma, si el código de una aplicación ocupa 5Mb, y necesita 2Mb de memoria para su funcionamiento, si lo cargamos dos veces no necesita 5+2+5+2=14Mb; sino que sólo necesita 5+2+2=9Mb; ahorrando memoria y mejorando la velocidad de trabajo del sistema. Esta mejora de velocidad al iniciar la segunda y sucesivas veces es la que permite que ocurra el bug de que una aplicación se ejecute varias veces aún cuando hay código para comprobar que eso no ocurra.

Este problema se podría solucionar de varias formas; los ejecutables podrían tener una señal que indicara al sistema operativo que ese binario no se puede ejecutar más de una vez; o se podría generar una excepción si se intenta crear un semáforo con un nombre que ya existe; sea como sea el caso del administrador de tareas es como mucho molesto; pero se de varios casos en los que si falla la comprobación de que sólo se está ejecutando una instancia de un proceso, podría tener consecuencias catastróficas.

El futuro de los navegadores: ejecutarlos en la tarjeta gráfica

Viernes, 27 de noviembre de 2009

Una de las nuevas características de Windows 7 es DirectX 11, que es la nueva plataforma para ejecutar aplicaciones multimedia y 3D en Windows. Dentro de la 11ª versión de DirectX hay una función que permite que se use para aplicaciones 2D de forma mucho más completa que con las anteriores versiones: Direct2D

Pero con la velocidad actual de los ordenadores , ¿para qué querríamos acelerar el 2D? Bueno, para empezar para que operaciones complejas se ejecuten mucho más suavemente.

Aún no hay gran cosa que utilice Direct2D, pero hace unos pocos días Microsoft anunció que la siguiente versión de su navegador, el Internet Explorer 9, lo usará. Un día después de este anuncio, el equipo de programación de Firefox, anunciaron no sólo que ellos ya hacía tiempo que estaban en ello, sino que además puedes descargarte ya una versión de prueba en el que la característica empieza a ser estable (enlace -inglés-).

Esta versión de Firefox con Direct2D funciona en cualquier Windows, pero para que funcione la aceleración necesitas Windows Vista con la actualización “Platform update” que incluye DirectX 11, o Windows 7, y una tarjeta gráfica razonablemente actual. En principio, con una tarjeta de nVidia gama 7000 o superior o una Radeon HD ya debería notarse la diferencia.

Y vaya si hay diferencia. Existen páginas que estresan la representación en pantalla del navegador; pero estas páginas suelen ser demos técnicas que no tienen mucha más utilidad que comprobar lo que se puede llegar a hacer en un navegador (enlaces abajo); pero si hay alguna página de uso habitual que ve su funcionamiento mejorado gracias al Direct2D: Google Maps.

He estado probando Google Maps con la versión Direct2D de Firefox y con otros navegadores sin aceleración, y la diferencia es muy grande. Lo que se nota más es que, trabajando en un monitor de alta resolución y con el mapa a pantalla completa, al arrastrar el mapa todo se mueve mucho más suavemente, y al hacer zoom se ve de forma progresiva y suave, y no se hace la ampliación de golpe como ocurre en los otros navegadores.

También gracias a la nueva aceleración, es posible que el navegador use un sistema de suavizado de fuentes más correcto y preciso, que permite que las tipografías se vean de forma más clara incluso en los tamaños más pequeños, y también hace legibles los textos cuando éstos están en un ángulo no cuadrado (por ejemplo, en diagonal).

Para quién tenga un equipo que cumpla los requerimientos, puede probar el nuevo Firefox descargándolo desde este enalce: http://www.bassified.nl/firefox-3.7a1pre.en-US.win32.d2d.zip

Demostraciones que estresan el navegador: Vídeo + transformación (Sólo funciona bien en Firefox), Transformación, vídeo y texto en diagonal (Sólo funciona bien en Firefox, en Chrome falta el vídeo),Foto + transformación (Sólo funciona en Firefox y Chrome)

Delphi 2009: File not found: ‘winprocs.dcu’

Martes, 24 de noviembre de 2009

Mi lenguaje de programación principal es el Pascal, y uso Delphi 2009 como IDE. Si tu también lo usas o piensas pasarte y trabajarás con proyectos que se crearon en versiones anteriores, esta entrada de mi blog te ahorrará un montón de dolores de cabeza.

Si abres un proyecto o una unit de Delphi que ha sido creado en versiones anteriores, te puede ocurrir que cada dos por tres el code completation, el code insight y el buscador de declaraciones no funcione, y en la ventana de mensajes aparezca algo similar a lo siguiente:

[Pascal Fatal Error] XXXXXX.pas(100): F1026 File not found: ‘WinProcs.dcu’

Sin embargo aún con el error de que faltan units, si compilas el proyecto (incluso si haces un build) funciona todo bien.

Este error se produce porque en Delphi 2009 (y supongo que en Delphi 2010 también) se han cambiado los nombres de algunas units principales; y aunque en el compilador éstas se cambian de nombre automáticamente, el code completation, code insight y el buscador de declaraciones no lo hace y dejan de funcionar.

Para solucionarlo, puedes arreglar la cláusula uses de cada unit del proyecto cambiando las units obsoletas por las nuevas… o hacer este truco: Ir al menú Project -> Options, seleccionar la opción “Delphi compiler” y luego en “Unit aliases” escribir las equivalencias de las antiguas units que ya no existen:

WinTypes=Windows;WinProcs=Windows;DbiProcs=BDE;DbiTypes=BDE;DbiErrs=BDE

Con esto todas las ayudas del editor volverán a funcionar sin mostrar molestos errores.