Quake III de 64 bits en macOS Catalina

No es posible jugar a Quake III en macOS Catalina porque el ejecutable del juego no está optimizado para 64 bits y esta versión de macOS no soporta aplicaciones con código de 32 bits.

Nota: El motor de Quake III es software libre pero el juego Quake III: Arena no lo es.

Durante varios años he utilizado el juego Quake III en macOS instalándolo desde el CD oficial (en realidad copiando el contenido del CD a una carpeta en Aplicaciones) y reemplazando el ejecutable original por una versión compilada para macOS, este ejecutable ha sido del tipo binario universal y ha funcionado bien hasta la llegada de macOS Catalina y la interrupción del soporte para las aplicaciones que no sean exclusivamente de 64 bits.

La solución es sencilla, obtener el código fuente desde el proyecto ioquake3 y compilarlo para 64 bits. Esta solución es la propuesta por el usuario andersonbatista333 en el hilo titulado Mac OS X: App not 64-bit optimized for Mac OS Catalina? en GitHub.

Leer másQuake III de 64 bits en macOS Catalina

Navegador web con el control WebView en C# (3)

Navegador web usando la versión moderna del control WebBrowser, el control WebView, que renderiza las páginas usando el motor de Microsoft Edge en lugar de hacerlo con el motor de Internet Explorer, añadiendo un segundo formulario que muestra el código HTML de la página que se visita, en C#

En 2 ejercicios anteriores (1 y 2) se desarrolla una aplicación de formularios de Windows con Visual Basic, construida alrededor de un objeto de la clase WebBrowser que permite mostrar en su interior páginas web y también interactuar con las páginas visitadas. Se trata de una clase muy madura que apareció en NET Framework 2, fácil de utilizar y con muchos textos de ayuda en Internet.
Pero tiene el inconveniente de que, por su antigüedad, utiliza el motor de renderizado de Internet Explorer, navegador actualmente obsoleto incluso para la propia Microsoft. En teoría renderiza con la versión de Internet Explorer que tengamos instalada en el sistema pero en la práctica parece mostrar las características de Internet Explorer 7 salvo que se manipule el registro para forzar a nuestra aplicación a utilizar el motor de la versión más moderna que es la 11 a condición de que la tengamos instalada (las instrucciones para hacerlo están en el artículo 2 de los referidos al principio del texto).

Leer másNavegador web con el control WebView en C# (3)

Reemplazar el Bloc de Notas por otro editor de texto

Configurar Windows 10 para que utilice como editor de texto por defecto del sistema otro editor de texto diferente que tenga más funcionalidades que el Bloc de Notas, sobre todo el coloreado de sintaxis

El Bloc de Notas de Windows 10 es un editor de texto sumamente simple que apenas se ha modificado durante años. Cualquier usuario aficionado a la programación, independientemente del lenguaje, se da cuenta enseguida que con el Bloc de Notas cualquier tarea se hace sumamente difícil por su falta de funciones.

A mí personalmente me gusta mucho EditPlus de ES-Computing y es el programa que uso, acepta coloreado de sintaxis para muchos lenguajes de programación y permite ejecutar programas Java sencillos desde la propia consola del programa.

Pero lo que quiero es tenerlo como editor por defecto de Windows 10, que cada vez que el sistema o una aplicación busque el Bloc de Notas lo que se abra sea EditPlus y ahorrarme el trabajo de configurar todos los tipos de archivo que deseo que estén asociados con ese programa.

Leer másReemplazar el Bloc de Notas por otro editor de texto

Error UnobtrusiveValidationMode en Asp .NET

Error relativo a validación no-intrusiva (unobtrusive validation) que aparece en aplicaciones web que utilizan Asp .NET 4.5 o posterior creadas en Visual Studio

Al ejecutar la aplicación Asp .NET creada en Visual Studio puede aparecer el error que se muestra en la imagen. La causa radica en el cambio del modo de validación que apareció con la versión 4.5 de Asp .NET, llamada unobtrusive validation y que ha sido traducida como validación no-intrusiva. José Manuel Alarcón tiene un artículo con una explicación excelente sobre este asunto en su blog.

Si la aplicación de Visual Studio utiliza Asp .NET anterior a 4.5 el error no aparece porque se emplea el modo tradicional de validación. Pero si utiliza 4.5 o posterior el error puede aparecer al compilar una página aspx con controles de validación. El caso típico es la migración de un proyecto pre 4.5 abriéndolo con la versión actual de Visual Studio y asignando al proyecto la versión 4.5 o posterior de Asp .NET.
Si se crea un nuevo proyecto web con las versiones recientes de Visual Studio a partir de alguna de las plantillas (es decir, el proyecto no se crea de tipo vacío) el error tampoco aparece porque Visual Studio configura todo lo necesario para usar el modo nuevo de validación, instalando paquetes auxiliares entre los que se encuentra AspNet.ScriptManager.jQuery que en su código de inicialización añade las bibliotecas necesarias con ScriptResourceMapping para incluir jQuery.

Leer másError UnobtrusiveValidationMode en Asp .NET

Controles de validación en Asp .NET

Validación de controles en Asp .NET mediante controles ocultos: RequiredFieldValidator, CompareValidator, Rangevalidator, RegularExpressionValidator y ValidationSummary, y validación de la página en el servidor mediante la propiedad Page.IsValid, en VB

El usuario de un programa informático a menudo es impredecible en cuanto a lo que teclea. Por muy claras que nos parezcan las instrucciones y las opciones del programa, es necesario saber si lo tecleado por el usario se adapta a lo esperado o no y, en caso de no serlo, tomar acciones adecuadas que eviten el fallo de la aplicación. Se nos pueden ocurrir muchos ejemplos de ello pero, sin ir más lejos, podemos pensar en la petición del número de teléfono en donde el usuario teclea alguna letra, por lo que no se tratará de un número de teléfono válido.

Leer másControles de validación en Asp .NET

DataGrid con scroll vertical usando OverFlow en Asp .NET

Mostrar en una página web un DataGrid sin paginar añadiendo barra vertical de scroll gracias a la propiedad OverFlow que indica al navegador cómo interpretar los elementos cuyo tamaño es mayor que el de su contenedor

Si tenemos un DataGrid que ha de mostrar un número elevado de filas, tenemos la opción de paginar el DataGrid. Pero si no deseamos organizar el DataGrid en múltiples páginas podemos recurrir a una propiedad CSS, llamada OverFlow, que indica al navegador cómo interpretar los elementos cuyo tamaño es mayor que el de su contenedor.
El ejemplo típico es el de un contenedor <div> de un tamaño determinado que contiene un elemento de un tamaño superior. La propiedad OverFlow le dice al navegador qué hacer, dependiendo de su valor.

Valor Interpretación por el navegador cliente
visible El contenido no es recortado, puede sobresalir del contenedor
hidden El contenido es recortado, sin barras de scroll para poder ver el resto del contenido
scroll El contenido es recortado, pero el navegador coloca barras de scroll
auto Sólo si el contenido es recortado el navegador coloca barras de scroll

Leer másDataGrid con scroll vertical usando OverFlow en Asp .NET

Archivo XML con la estructura de un directorio en C# y VB

Crear en el Escritorio un archivo XML con la estructura de un directorio, incluyendo archivos y subcarpetas de forma recursiva, utilizando la clase XDocument del espacio de nombres System.Xml.Linq, y mostrar en un control el texto generado con el método WriteAllText de la clase File, en C# y VB

Basado en el código propuesto por Marcin Juraszek en el artículo «Creating XML file representing folder structure (including subfolders) in C#» del sitio web stackoverflow.

Leer másArchivo XML con la estructura de un directorio en C# y VB

JAVA_HOME en Windows 10

Configurar las variables de entorno para que Windows 10 ejecute correctamente los programas Java, tanto para compilarlos (javac.exe) como para ejecutarlos (java.exe); este artículo aplica a Windows 10 y JDK 8 (Java Development Kit)

Después de instalar JDK en Windows 10 es posible que los ejecutables de Java no sean reconocidos desde la línea de comandos a pesar de que la instalación del JDK añade a la variable de entorno de sistema PATH el valor
C:\Program Files (x86)\Common Files\Oracle\Java\javapath.

Para solucionarlo hay que decirle al sistema dónde están los ejecutables de Java. Esto se consigue en 2 pasos bastante sencillos que configuran la variable de entorno JAVA_HOME.

Leer másJAVA_HOME en Windows 10

macOS Catalina 10.15 en la placa P55-USB3

Instalar macOS 10.15 Catalina en la placa Gigabyte P55-USB3 con tarjeta gráfica Radeon RX 580 utilizando un dispositivo USB con el programa de instalación creado mediante el comando createinstallmedia y con Clover como gestor de arranque. Las instrucciones para instalar macOS 10.14 Mojave en este ordenador son prácticamente las mismas, reemplazando la aplicación Catalina por Mojave, por lo que este artículo sirve para ambas versiones de macOS. La placa base Gigabyte P55-USB3 (y algunas otras de la misma marca con chipset P55 / H55) facilitaron el montaje de un hackintosh desde hace 10 años y la instalación de macOS desde la versión 10.6 Snow Leopard. Aunque se trata de una placa veterana, el comportamiento con Mojave o Catalina es muy bueno después de cambiar el disco duro clásico de platos giratorios (HDD) por uno de estado sólido (SSD).

Componentes del hackintosh

  • Placa base Gigabyte GA-P55-USB3: chipset P55, socket 1156, audio ALC892, red Gigabit RTL8111D, admite hasta 4 módulos de memoria RAM DDR3
  • Procesador Intel Core i5-750 para socket 1156: 4 núcleos, caché de 8MB, frecuencia de reloj 2,66 GHz
  • Tarjeta inalámbrica + bluetooth fenvi FV-T919: PCI-Express, wifi es de tipo ac, reconocida por macOS como Airport y bluetooth de Apple
  • Tarjeta gráfica Radeon RX 580 de 8GB: funciona bien tal como sale de la caja pero hay algunos detalles que merecen ser tenidos en cuenta, tiene su propio artículo.

Leer másmacOS Catalina 10.15 en la placa P55-USB3

Atributos de la directiva @Page

Los atributos de la directiva @Page en la cabecera de los archivos de código aspx son diferentes dependiendo de que se trabaje dentro o fuera del entorno de Visual Studio

La directiva @Page de las páginas aspx es distinta en cada uno de los 2 casos.

Entorno de Visual Studio

Se usan estos atributos en la directiva @Page:

  • CodeBehind, que especifica el nombre del archivo compilado que contiene la clase asociada con la página. El diseñador de formularios Web Forms de Visual Studio usa este atributo para averiguar dónde se encuentra la clase derivada de Page de forma que pueda crear una instancia de la misma para que se pueda trabajar con ella en tiempo de diseño. CodeBehind sólo se usa en tiempo de diseño, no se usa en tiempo de ejecución, el archivo vb como tal no es necesario, sólo la librería dll resultante de la compilación.
  • Inherits, que define la clase de la que hereda la página aspx. Esta clase será buscada en la librería correspondiente de la carpeta bin de la raíz del servidor Web, según el esquema nombre_de_la_dll.nombre_de_la_clase.

Leer másAtributos de la directiva @Page