viernes, 31 de octubre de 2014

Cómo saber cuánto tiempo lleva encendido el ordenador

A veces queremos saber cuánto tiempo lleva encendido un ordenador. ¿Cómo podemos hacer esto?


Figura 1. ¿Qué hora es en este reloj hebreo? (Visto en Praga)

1. Respuesta corta

En Linux, MacOs, HP-UX y versiones varias de UNIX: comandos "w", "uptime" y "top"

En Windows: comando "systeminfo"


2. Respuesta larga

2.1 Aplicaciones
Simplemente, queremos saber cuánto lleva encendido el equipo. O bien, somos los responsables de un servidor, y queremos saber si el servidor se ha reiniciado por la noche, por ejemplo. O hemos llegado a casa y hemos pillado a nuestro hijo todo viciado matando orcos a diesto y siniesto. A pesar de que le dijimos que sólo podía jugar una hora al día, tiene los ojos inyectados en sangre, rojos como dos tomates, sospechamos algo y no nos creemos lo que nos jura y perjura de que acaba de encenderlo "hace ná". Queremos comprobar, en todos estos casos, cuánto tiempo lleva el ordenador encendido.

2.2 En Linux
Si el equipo está ejecutando un Linux, bastará con teclear bien poco, una sola letra y hecho. El comando "w" nos da la información que queremos en la primera línea de su salida. Como una imagen vale más que mil palabras, ahí va un ejemplo:

Figura 2. Este equipo lleva 4 días, 4 horas y 14 minutos encendido

Tenemos más información adicional en ese comando, pero la que nos interesa está en la primera línea, junto con los datos de carga del procesador en el último minuto, últimos 5 y últimos 15 minutos. Si lo único que queremos es la información de esa primera línea sin mostrar la otra información (la de los usuarios que hay conectados), entonces podemos hacer un grep para solo mostrar la primera línea, así:

$ w | grep "load average"

(ojo, esto podría sacar también otras líneas que contuvieran esa cadena de texto)

O bien, y mejor aún, ejecutar el comando "uptime", que muestra únicamente esa primera línea.

Figura 3. Uptime como un "w" limitado a la primera línea

Otro comando que está en todos los *NIX modernos y que da esta misma info (más un montón de información adicional) es el comando top. Así, si ejecutamos

$ top

Obtendremos algo así

Figura 4. El comando "top" también nos dice cuánto tiempo lleva encendido el ordenador

Aunque a decir verdad, a mí me gusta más la versión de "top con colorines", llamada "htop" (también existen "atop" y otros...)


Figura 5. htop: top con maquillaje de colores

2.3 En Windows
En todas las versiones de Windows desde XP tenemos el comando "systeminfo", que se encarga de recoger un montón de información del equipo, entre ella la que nos interesa. En XP salen tantas líneas que se pierde la información por arriba, y en mi caso, el buffer de la ventana de comandos no conserva todas las líneas cuando vuelvo hacia atrás, así que he tenido que redirigir la salida al comando "less" para que me la muestre paginada

c:\> systeminfo | less

También podríamos haber redirigido esta salida a un fichero de texto y luego abrirlo con el bloc de notas.

Al ejecutar systeminfo, tras unos segundos, durante los cuales vemos unos mensajes indicando qué está haciendo el programa, tenemos una salida tal que así

Figura 6. Salida de "systeminfo" en Windows XP

donde podemos ver que el equipo lleva 4 días y casi 11 horas encendido (penúltima línea de la imagen).


2.4 Mi script personal
Como me gusta la salida en una única línea que proporciona el comando uptime de Linux, me he hecho mi pequeño script en Windows, lo he colocado en la carpeta de utilidades que tengo incluida en el PATH, para poder invocarlo igual que lo hago en Linux. Lo he llamado "uptime.cmd", y su contenido es sencillamente las siguientes dos líneas

Figura 7. Script para implementar un uptime

(el comando "find" es equivalente al grep de Linux)

Y ahora sí, en mi consola de Windows

Figura 8. Uptime disponible también en Windows

Y así no tengo que pensar si estoy en Linux o en Windows, en ambos sitios puedo escribir uptime y respuesta inmediata.

Y ahora pregunto yo...
Dicho todo esto, ¿alguien sabe cómo ver en un smartphone con Android el tiempo que lleva funcionando desde el último reinicio? Seguramente no sea muy complicado, pero le he dedicado unos minutos y no he hallado la respuesta rápidamente. Voy a seguir buscando.

Ahí queda la pregunta


lunes, 20 de octubre de 2014

Validación de documentos (X)HTML

Si recordáis la entrada de hace unos días (enlace abajo) hablaba del Principio de Robustez de Postel. Y decía que los navegadores suelen aplicarlo siendo muy transigentes con lo que aceptan como entrada en las páginas web. Aunque una página no se ajuste exactamente a la especificación HTML correspondiente, normalmente los navegadores hacen todo lo que pueden por mostrar una vista "razonable" de la página.

Pero que ellos sean permisivos no quiere decir que los desarrolladores nos debamos relajar. Tenemos que intentar que nuestras páginas sean lo más ajustadas posible a la especificación. Para ello, podemos usar los validadores proporcionados por el W3C u otras instituciones. Exigirnos a nosotros mismos hacer páginas estrictas se corresponde con la parte "be conservative" del principio (ver la entrada anterior, enlace abajo).

Para ello, podemos entrar en el validador del W3C, en la dirección http://validator.w3.org/, y ahí podemos poner la URL de una página web que queramos validar. Por ejemplo, vamos a probar la página principal de la CARM. Introducimos su URL y pulsamos "Check"

Y en este caso vemos que la página valida perfectamente respecto al esquema XHTML 1.0 Transitional. El validador del W3C ha accedido a la página que le hemos dicho y ha leído su contenido y lo ha contrastado con respecto a la especificación.



VALIDACIÓN LOCAL

Pero, ¿qué pasa si queremos validar una página local a la que el W3C no puede acceder, ya que no tiene acceso a nuestra intranet? Por ejemplo, una página principal del servidor web que tengo instalado en mi equipo para hacer pruebas. En este caso, el W3C nos dice que no puede acceder a esta página, por no ser pública


Esto también ocurre con algunas páginas que utilizan HTTPS en vez de HTTP.

Lo que sí podemos hacer es usar otra opción existente en el validador, bastante útil, y que consiste en pegar directamente el código HTML que queremos validar en un cuadro de texto. Para esto,

  1. Abrimos en un navegador la página web que queremos validar y mostramos su código fuente y lo copiamos al portapapeles. Para ver el código fuente de la página, en los principales navegadores hay que pulsar Ctrl + U. Si quieres hacerlo por menú, en Firefox está en Herramientas / Desarrollador web / Código fuente de la página, y en Chrome está en Herramientas / Ver código fuente.
  2. Pulsamos sobre la pestaña "Validate by Direct Input" y pegamos ahí el código de la página a validar
  3. Pulsamos Check



Espero que en vuestras páginas no salga el mensaje de error, y os diga que todo está chachi piruli (en mi caso no ha sido así, ¡glups!)


ICONOS DE VALIDACIÓN

Una vez validada nuestra página, "tenemos permiso" para poner un icono que indique que la página se ha validado con respecto a tal o cual esquema (HTML 4, XHTML 1, CSS 3...).




Esto sirve para informar a nuestros visitantes de que nos hemos tomado la molestia de intentar ser un poco exigentes con respecto a la sintaxis y gramática de nuestra página. No es todo lo que hay que hacer en una página, pero al menos es un paso en la dirección correcta. Yo me he encontrado muchas veces estos iconos de validación en páginas de ciertas organizaciones, como por ejemplo algunas páginas de la Universidad de Murcia, como el Portal único de acceso (aunque no en la página principal [!]).



Esto significa que en algún momento, el desarrollador correspondiente validó la página y el resultado fue positivo. Sin embargo, se ve que después han hecho algunos cambios en la página y se les ha olvidado volver a validarla, pues si pruebo a validarla por mí mismo obtengo este resultado



donde vemos que la página tiene algunos errores de validación.

Así que ya sabéis, si validáis vuestras páginas (sea por URL o por entrada directa, o subiendo un fichero, que también se puede hacer así), no olvidéis revalidarla cuando hagáis algunos cambios de importancia.

Otra cosa importante: si la página a validar contiene datos personales (por ejemplo, una página con resultados de una BD), mi consejo es que no peguéis estos datos directamente en el validador, ya que de esa forma los datos personales estarían saliendo de vuestra organización y llegando (como mínimo) al W3C. No sé si el W3C registra una copia del código que valida, pero por si acaso lo hace, o por si hay alguien "in the middle" escuchando, no es una buena idea. Para esos casos, hay instrucciones en la web del validador sobre cómo se puede instalar una copia en un equipo local, donde podéis validar todas las páginas de datos que queráis. Si alguno lo prueba, estaré encantado de que nos deje aquí sus comentarios.


MI CASO

En mi caso, he validado algunas páginas realizadas por mí. Y sí, he encontrado errores. Cuando el listado de errores es un poco largo, por un momento te sientes como si fueras un chapucero. ¿Cómo es posible que mi página tenga tantos errores de validación? ¿Debo dejarme el desarrollo y dedicame a criar champiñones? Por suerte, esto es parecido a lo que ocurre con algunos compiladores de C, que a veces corregir el primer error hace que desaparezcan 20 ó 30 errores posteriores, y es que el validador a veces se hace un lío tras el primer contratiempo.

En cualquier caso, no hay nada mejor que conocerse. Así que me ha venido muy bien para conocer mi estilo propio de desarrollo (y corregirlo) el ver cómo la mayoría de mis errores se corresponden con los mismos cuatro o cinco errores recurrentes una y otra vez. Entre ellos, el no poner texto ALT en algunas etiquetas <IMG> (esto puede ser importante por accesibilidad, el atributo ALT es requerido), usar el cierre abreviado de etiquetas (ya sabéis, el />) en etiquetas que no lo admiten, o bien ignorar el atributo "type='text/javascript'" en algunos fragmentos de código JavaScript. Así que una vez corregidos estos pequeños errores, las páginas han validado correctamente y ya he podido poner el "sello" de página validada.

Se quedan en el tintero muchas cosas, como los diferentes esquemas contra los que validar nuestra página, validación de otras cosas que no son HTML, como por ejemplo el CSS, etc... pero eso lo dejo para quien quiera profundizar en el tema. No os lo voy a dar todo masticado, ¿verdad?

¿Y tú? ¿Validas tus páginas? ¿Contra qué esquemas? ¿Usas otro validador distinto del que proporciona el W3C (sí, hay otros)? ¿Has descubierto si metes mucho la pata en tus páginas?


ENTRADAS RELACIONADAS

Sé conservador, sé liberal...be water, my friend
http://cosicasdeinformatica.blogspot.com.es/2014/09/se-conservador-se-liberalbe-water-my.html


REFERENCIAS

¿De qué va todo eso de la validación? (en inglés)
http://validator.w3.org/docs/help.html#validation_basics