Respecto al tamaño oficio a la hora de imprimir desde Microsoft Office

•marzo 21, 2013 • Dejar un comentario

Escribo este post más a manera de recordatorio, ya que la situación se me ha presentado varias veces y siempre que la logro resolver pienso “¡claro, ya me acordé cómo fue que lo hice esa vez!”. Tiene que ver con la impresión de documentos tamaño Oficio.

Tamaño LegalEl problema, como he dicho, siempre es el mismo: el tamaño “Oficio” no es el mismo tamaño “Legal”. El tamaño Legal listado en Word y otros programas de Office tiene unas dimensiones de un poco más de 21 centímetros y medio por un poco más de 35 centímetros y medio, mientras que el tamaño Oficio que se consigue en las papelerías y que es el más usado (de lo que puedo decir) después del tamaño Carta tiene unas dimensiones de un poco más de 21 centímetros y medio por unos 33 centímetros. A lo largo es como una pulgada de más; al esperar la impresora una hoja Legal pero recibir una tamaño Oficio, no va a imprimir todo, perdiendo información hacia los bordes de la hoja.

La solución, por supuesto, es especificar correctamente el tamaño del papel en el documento. El tamaño correcto se puede encontrar (en Office 2010) yendo un poco hacia abajo en la lista de tamaños disponibles, y se llama 8.5×13.

Todo este problema era causado por mi conclusión de que, al ser el tamaño Oficio el segundo más usado para impresiones en Colombia, y al estar el tamaño Legal segundo en la lista de tamaños que provee Office, los tamaños se correspondían. Pero no es así, de modo que escribo esto también en caso de que alguien más tenga mi misma errónea idea y se esté imaginando que su computador está poseído, como escuché a alguien decir esta mañana.

Depuración web remota de PHP con Xdebug

•noviembre 15, 2012 • 2 comentarios

En este post explicaré los pasos que seguí para configurar la depuración remota sobre Internet de una aplicación web en PHP, usando Netbeans. Primero, la configuración de mis máquinas:

  • Por un lado, tengo una o varias máquinas de desarrollo. Estas máquinas por lo general tienen Windows 7, aunque eso no viene al caso. El desarrollo lo hago usando Netbeans 7.
  • Por otro lado, mi servidor de pruebas es una máquina modesta con Linux, Ubuntu. PHP 5.3 y Apache 2.

El desarrollo lo realizo sobre Dropbox (en algún post algún día explicaré mi arreglo de desarrollo PHP), de modo que donde dejo en una máquina, automáticamente puedo retomar en otra, sin necesidad de hacer nada. El hecho es que mi servidor es fijo, está en mi residencia, y muchas veces me llevo el portátil para adelantar trabajo desde donde me encuentre, usando la conexión móvil de mi celular.

De modo que necesitaba una manera de usar la funcionalidad de depurado de Netbeans, para que se justifique en algo los cerca de 400MB en memoria que consume (bromeo, sí se justifica, además estoy acostumbrado al IDE). Configurar Xdebug para un entorno local es relativamente sencillo, y ya lo había hecho en varias ocasiones en máquinas con Windows. De modo que me lancé de lleno a la tarea de configurarlo para depuración remota. Primero sobre red local, luego sobre Internet.

Instalar y activar Xdebug en Linux

La página de soporte de Netbeans provee cierta información sobre cómo configurar Xdebug en Linux para que funcione con el IDE instalado en la misma máquina del servidor, pero hasta ahí llega; es decir, asume que Xdebug ya se encuentra instalado. Tuve que basarme en otro recurso para poder instalarlo. Resumo el procedimiento para Ubuntu:

Primero, hay que asegurarse que el comando pecl está disponible. Simplemente con escribirlo en consola, el sistema tratará de ejecutarlo y, de no encontrarlo, dirá qué paquete hay que instalar para que esté disponible. En el tutorial dice que se trata de php-dev, pero en mi caso el comando estaba en el paquete php-pear. Sudo apt-get bla bla bla.

Ahora viene lo bueno. Una vez está instalada la aplicación que nos provee pecl, tenemos que ejecutar dicho comando para instalar Xdebug:

# pecl install xdebug

Esto descargará, compilará e instalará la extensión de PHP que tanto anhelamos. Al final de mensajes crípticos y un poco abrumadores por parte de la terminal, se nos informará la nueva ruta en la que quedó el archivo xdebug.so recién compilado. Debemos anotar esa ruta, pues la usaremos después.

Ahora tenemos que añadir las correspondientes lineas de configuración al archivo php.ini, para activar la extensión. Para ubicar el archivo php.ini que vamos a modificar tenemos dos opciones:

  • Escribir un script PHP y correrlo en el servidor con el siguiente código: <?php phpinfo() ?>, o
  • en la terminal, php -i | grep php.ini

Una vez ubicado el archivo, lo editamos y añadimos (o descomentamos) la línea que reza más o menos:

zend_extension = /ruta/que/habiamos/anotado/xdebug.so

Eso instalará y activará Xdebug en Linux, previo reinicio del servidor, claro. Para probar podemos correr el script que dan en el tutorial en el cual me basé.

Configurar Xdebug para depuración remota

Como lo que yo quería hacer no era desarrollar en mi servidor y depurar a golpe de comando, sino en otras máquinas y depurar por medio de Netbeans, no vamos a parar acá.

En el archivo php.ini que hemos editado, el tutorial oficial de Netbeans nos dice que pongamos además las siguientes líneas:

xdebug.remote_enable=1
xdebug.remote_handler=dbgp
xdebug.remote_mode=req
xdebug.remote_host=127.0.0.1
xdebug.remote_port=9000

Estas líneas están bien si se quiere usar Netbeans en la misma máquina que tiene el servidor. Eso lo vemos en xdebug.remote_host = 127.0.0.1. Ahí nos está diciendo que el cliente de Xdebug está en 127.0.0.1, es decir en localhost. Lo que vamos a hacer es comentar esa línea, y en vez añadir la siguiente, para que quede todo igual, menos:

; xdebug.remote_host=127.0.0.1
xdebug.remote_connect_back=1

Esta directiva le está diciendo a Xdebug que trate de conectar a todos los clientes que inicien una sesión de depuración. Esto permitirá hacer depuraciones desde equipos remotos cuyas direcciones IP pueden cambiar. Ahora, sólo es cuestión de configurar los puertos.

Puertos

Tenemos que abrir o redirigir externamente el puerto 9000 a nuestro servidor desde Internet, y a nuestro cliente. Si el cliente (Netbeans) está bajo un router o un firewall, debemos redirigir las conexiones entrantes por dicho puerto en TCP hacia nuestra máquina.

Bono: una buena aplicación que me sirvió para redirigir el puerto de mi teléfono Android hacia mi portátil es Port Forwarder.

Sobre los discos de estado sólido

•octubre 29, 2012 • Dejar un comentario

Hace menos de una semana compré un ultrabook, con unos impresionantes 256 GB en estado sólido. Pruebas iniciales me dieron aliento en velocidades de escritura, y estaba totalmente encantado hasta que hablando con unos compañeros de trabajo sobre memorias alteradas que dicen tener más capacidad de la que realmente tienen, me asusté. Empecé a buscar por Internet y encontré que una manera de mirar si esto se cumple es llenando el disco al máximo y tratando de acceder un archivo previamente guardado.

Resulta que la manera en que estos discos alterados funcionan, aparentemente, es modificando el controladores que le dicen al sistema operativo cuánto espacio queda. En otros lados dice que tiene que ver más bien con la tabla de archivos de los sistemas FAT32. En este último caso mi preocupación no tendría fundamento, pues mi sistema viene con NTFS por defecto. En el primer caso, por otro lado, la teoría que leí seguía diciendo que una vez se llenaba el disco duro a cu capacidad real, seguía escribiendo y sobre-escribiendo sobre lo que ya estaba en el disco. Esto hacía que los primeros archivos escritos en el disco duro quedaran corruptos e inutilizables. En mi mente el miedo a la estafa ya estaba andando, y hice lo que cualquier haría: llenar el disco a su máxima capacidad y tratar de acceder algún archivo previamente guardado.

Mala idea. No sólo comprobé que no había absolutamente nada malo con mi disco, sino que el sistema de archivos quedó completamente fragmentado. Después de comunicar que mis temores estaban despejados, hice lo que me recomendaron, y que yo habría hecho aunque no me lo hubieran recomendado: desfragmenté el disco duro. Peor idea. Después de desfragmentar el disco duro se me ocurrió averiguar por la verdadera utilidad de fragmentar un disco duro de estado sólido. Resulta que no solamente es un proceso innecesario, sino que acorta la vida útil del disco duro.

En un disco duro convencional, los platos del disco se mueven, como un CD, y la cabeza lectora del disco duro lee los datos de la superficie de los discos. Cuando se fragmenta el sistema de archivos, quiere decir que pedazos de datos que deberían ir juntos son mandados a diferentes partes del disco, y cuando la cabeza lectora va a leerlos, tiene que moverse más para recuperar todos los pedazos, que si estuvieran cerca físicamente. Eso se traduce en mayor tiempo leyendo datos del disco duro, en caída de rendimiento del sistema, y en mayor desgaste por parte de la cabeza lectora. En un disco de estado sólido, los datos son recuperados a la misma velocidad sin importar si están cerca o lejos. Es por eso que la fragmentación del sistema de archivos no tiene peso en el rendimiento del disco. Es más, la fragmentación es hecha a propósito. Veamos:

Por el diseño y construcción de los discos de estado sólido, estos vienen con un número finito de veces que se puede escribir en cada sector. Una vez se alcanza dicho número, el disco sólo es utilizable como lectura. Este número es bastante alto, suficiente como para que un usuario normal reemplace el disco por uno que venga con un computador más nuevo antes de reemplazarlo por desgaste. Sin embargo ese límite existe y es importante conocer de su existencia.

Los primeros discos duros de estado sólido tenía un problema de agotamiento de vida útil demasiado pronto, ya que los primeros sectores del disco duro alcanzaban su vida útil demasiado rápido, debido al uso normal. Es por eso que se ideó una manera de alargar la vida útil del disco duro. Los que sucede ahora es que, debido a que a los discos de estado sólido no les importa si un pedazo de un archivo quedó cerca a otro o no, ya que la velocidad de lectura y escritura es la misma, cuando un archivo es eliminado y otro añadido, en vez de sobre-escribir el mismo sector, el sistema operativo envía el nuevo archivo a un pedazo del disco que no se hubiera usado últimamente, reduciendo así el número de escrituras de cada bloque, repartiéndolas por todo el disco.

Al llenar completamente un disco duro con información, como yo hice, los pedazos libres que quedan para que el sistema operativo utilice son menos, y las escrituras tienen menos lugar para repartirse. Eso acorta la vida útil del disco duro. No sólo eso, sino que al desfragmentar el disco duro, el sistema operativo trata de mover (escribir) pedazos que no están juntos, para ponerlos juntos. Esto acorta aún más la vida del disco duro, y no trae beneficio aparente (al menos en el primer caso pude comprobar que nada andaba mal con mi disco). Así es que, nunca desfragmentar un disco duro de estado sólido, y nunca llenarlo al tope para después vaciarlo, a menos que absolutamente necesario.

No he visto por ahora ninguna merma en el rendimiento de mi disco duro, aunque uno nunca sabe.

Ajuste de línea en jqGrid

•mayo 2, 2012 • Dejar un comentario

Si se quiere tener ajuste de línea en los nombres de las columnas en una tabla manejada por jqGrid, sólo basta con añadir las siguientes reglas css:

.ui-jqgrid tr.jqgrow td {
  white-space: normal !important;
}

Estas reglas pueden ser añadidas en el propio documento entre las etiquetas

<style>
.ui-jqgrid tr.jqgrow td {
  white-space: normal !important;
}
</style>

o en un archivo aparte. Pero no es recomendado editar el archivo CSS propio de jqGrid.

Lista de países para Drupal 6

•noviembre 13, 2011 • Dejar un comentario

Los últimos días he estado jugueteando un poco con Drupal 6, la creación de módulos, las tripas del CMS en cuestión. Tuve la necesidad de añadir un elemento de un formulario tipo select con los países del mundo. El hecho es que esta lista sólo la pude encontrar en inglés, y yo la quiero en español. De modo que salté hacia la página en Wikipedia que contiene los países del mundo y con un poco de copiar, pegar y procesar en una hoja de cálculo he sacado la lista alfabética, que a continuación pongo a disposición del interesado. No tengo tiempo ni ganas de verificar la fiabilidad de los datos en Wikipedia, especialmente en el caso de países cuyo estado es incierto, pero dejo constancia de la fecha en que consulté la entrada: 13 de noviembre de 20011.

Tras el salto, el código.
Continuar leyendo ‘Lista de países para Drupal 6′

Guía extrema de Tuning para Gnome: Cursores del ratón (i)

•diciembre 5, 2009 • Dejar un comentario

Es esa cosa fastidiosa que se mueve de un lado a otro de la pantalla, que no se sabe para qué es, y sí que molesta. Esa flechita, como no, también se puede cambiar para que nos moleste de una manera diferente a cada vez.

En el cuadro de Apariencia, al que accedemos por medio de clic derecho en el escritorio, o por medio de SistemaPreferenciasApariencia, tenemos una pestaña llamada Tema. En esa ventana están todas las configuraciones que estén guardadas de los temas que usamos. Los temas se componen de Controles, Colores, Bordes de la ventana, Iconos y, lo que nos interesa hoy, Punteros. De cada uno de ellos hablaré en otros posts de esta serie.

Diálogo de selección de cursor

Podemos personalizar el tema actual, haciendo clic en el botón en el que se lee Personalizar…. ¿Fácil, no? En el cuadro que se nos abre, vemos una pestaña por cada uno de los componentes del tema, yendo en el último lugar el puntero o cursor. En esta pantalla es posible cambiar el cursor entre los que tengamos instalados.

Ahora veamos cómo exactamente se instalan los cursores. Un directorio amplio de cursores (y muchos otros aspectos de la apariencia) disponibles para descarga se puede encontrar en Gnome Look. Es un repositorio inmenso de recursos para cambiar la apariencia de nuestro escritorio Gnome. KDE también tiene su repositorio análogo. Los cursores como tal vienen empaquetados y comprimidos en archivos .tar.gz generalmente. Bajo la sección X11 Mose Themes de Gnome Look vamos a escoger el que nos parezca apropiado, y lo descargamos. Para instalarlo, en vez de hacer clic en Personalizar…, vamos a hacer clic en Instalar…. Buscamos el archivo en donde lo guardamos y lo seleccionamos.

Una vez la instalación es exitosa, nos preguntará si lo aplicamos en ese momento o no. Si no, en todo caso podemos cambiarlo en el diálogo de la ventana Personalizar….

También es posible cambiar el tema del cursor mediante la clave de Gconf /desktop/gnome/peripherals/mouse/cursor_theme. Ahí va una cadena que identifica el tema del cursor. En esa carpeta (/desktop/gnome/peripherals/mouse/) también hay otras configuraciones del ratón y su comportamiento, que se pueden modificar en el diálogo Ratón, accesible desde Sistema → Preferencias → Ratón.

Editor de configuración - mouse

Preferencias del ratón

En el siguiente post ahondaré más en lo que significa un cursor de Gnome (y de X11 en general).

Guía extrema de Tuning para Gnome: Fondos (ii)

•noviembre 26, 2009 • Dejar un comentario

En el anterior post vimos aspectos básicos de la personalización de los fondos en el escritorio Gnome, por defecto en muchas distribuciones GNU/Linux actuales. Realmente es algo que sobra escribir en muchos casos, puesto que un usuario mínimamente interesado lo hubiera descubierto por sí mismo.

Slideshows

La carpeta de GConf para el fondo del escritorio en Gnome es /desktop/gnome/background. Nada puede ser más sencillo y descriptivo, a propósito. El lector conspicuo se habrá dado cuenta que Gnome no provee (aún) una interfaz gráfica intuitiva para configurar las presentaciones de imágenes o slideshows como fondo de escritorio. Sin embargo, configurando el ejemplo que tenemos por defecto como fondo y yendo hacia la clave en GConf, podemos darnos luces: /usr/share/backgrounds/cosmos/background-1.xml es lo que aparece en mi Debian, y probablemente en la mayoría de las distribuciones. Pero la ubicación es lo de menos, lo importante es que se trata de un archivo XML. Cómo, ¿un archivo de texto como fondo de escritorio? Vamos a echarle un vistazo a ese archivo:

Archivo XML para el slideshow

Un XML como cualquier otro: sencillo de comprender en un vistazo. Teniendo este XML, fácilmente podemos crear otros para que muestre nuestras propias imágenes o, por qué no, construir una GUI. Claro que, creo, es sólo cuestión de tiempo para que Gnome libere la versión oficial de esta GUI. Por otro lado, este efecto slideshow se podía lograr antes fácilmente al poner un script de bash que cambie periódicamente el contenido de la clave de GConf, por medio de gconf-tool.

Videos como fondo de escritorio

Es posible poner un video como fondo del escritorio Gnome, aprovechando una clave de GConf, /apps/nautilus/preferences/show_desktop. De hecho es un truco viejo y conocido, pero lo menciono por considerarlo útil para nuestro efecto.

Se trata básicamente de una aplicación, xwinwrap, que permite usar las aplicaciones como fondo de escritorio. Para esto, es necesario que la clave anteriormente mencionada no esté activa, es decir, su valor sea false. Este valor lo podemos cambiar con las diferentes herramientas que modifican la base de datos de GConf, así que dejaré que cada lector escoja la que desee. Xwinwrap tenía algunos fallos y falencias, además no estaba bajo desarrollo activo. De modo que un usuario publicó una actualización en 2008.  Para usar videos como fondos de pantalla además tendremos que instalar la aplicación mplayer, un magnífico reproductor de videos de gran aceptación y calidad, disponible en la mayoría de las distribuciones GNU/Linux actuales.

Para hacer efectivo el truco, pues, sólo hace falta descargar el programa mencionado (el archivo contiene paquetes .deb para aquellos que usen distribuciones basadas en Debian) y ejecutarlo:

./xwinwrap -ov -fs -- mplayer -wid WID -quiet ruta_al_video

Esto en caso de que no hayamos instalado la aplicación o ésta no se encuentre en el PATH del sistema. En caso contrario, se omite el “./”. Xwinwrap también sirve para poner un salvapantallas como fondo de escritorio, como bien anota el autor:

./xwinwrap -ov -fs -- /usr/lib/xscreensaver/glmatrix -root -window-id WID

El programa tiene más opciones, que se pueden conocer ejecutando el programa sin argumentos. Para los que quieran, el código está disponible para su estudio en launchpad. También existe una aplicación aparte, gwinwrap, que no es más que una interfaz gráfica para xwinwrap.

Otros escritorios

Es posible usar otros escritorios, como el de KDE, para dibujar los iconos y el fondo de pantalla aún estando en Gnome. Por ejemplo, teniendo instalado KDE4, al ejecutar el comando plasma-desktop, el escritorio de KDE4 se sobrepondrá al de Gnome (cuyos iconos son manejados por Nautilus), permitiendo usar por ejemplo los widgets plasmoides. El fondo de escritorio, en este caso, será el que está configurado en KDE.

Escritorio de KDE4 en Gnome

Nautilus

Las claves que definen el fondo del navegador de archivos de Gnome, Nautilus, son /apps/nautilus/preferences/background_filename para la imagen, /apps/nautilus/preferences/background_color para el color y /apps/nautilus/preferences/background_set para activarlo o desactivarlo. Sabiendo esto, es posible programar un script en python, por ejemplo, que explote la clave para hacer un slideshow, por ejemplo de nuevo:

Pequeño e improvisado script en Python

El script está disponible acá, bajo licencia GPL.

 
Seguir

Recibe cada nueva publicación en tu buzón de correo electrónico.