Comprimir CSS o JS con YUI compressor

YUI Compressor es una herramienta que se utiliza para minimizar los archivos CSS o javascript. Esto porque cuando se escriben estos archivos se utilizan muchos caracteres para que estos archivos visualmente para el desarrollador se vean bien, pero adicionandelos un montos de bytes que no cumplen n inguna función más que la de ocupar espacio.

Para esto (minimizar el tamaño de estos archivos sin restarle la funcionalidad), existen un para de herramientas, la que nos convoca es YUI Compressor, escrita en Java, minimiza cualquiera de estas extensiones (CSS o JS).

Puedes descargarlo aqui o utilizarla Online a través de esta página.

Así por ejemplo, comprimes algo asi

Y lo dejas asi, sin perder la consistencia del CSS

Publicado en CSS, Desarrollo, javascript, Optimizacion, Web

Templates para documentación UML

UML es una notación, no es en si un proceso de desarrollo de software, para ello existe RUP (Rational Unified Process) el cual presenta los pasos a seguir en la creación del sistema propieamente tal. La forma de documentar RUP es a través de lo que la metodología denomina artefactos (un documento es un artefacto dentro de la metodología, pero no es el único atefacto, los diagramas tambien lo son), un conjunto completo de plantillas se pueden encontrar aqui.

Este zip esta completamente explicado en el sitio.

Publicado en Capacitacion, Desarrollo

Requerimientos no funcionales

Los rquerimientos no funcionales son por lo general exigencias de los clientes o usuarios que no tienen que ver con la información o procesos que va a contener el sistema. Si afectan al sistema, pero más bien a la percepcion de calidad de este. En algunos si afectan el funcionamiento del software cuando estos no se cumplen.
Ejemplos serían:

  • rendimiento
  • disponibilidad
  • seguridad
  • accesibilidad
  • usabilidad
  • estabilidad
  • portabilidad
  • costo
  • operatividad
  • interoperabilidad
  • escalabilidad
  • concurrencia
  • mantenibilidad

Que un requerimiento funcional no se cumpla, implica que no se cumplen los requisitos del sistema, y afecta al sistema en distinto grado, pero sigue siendo un requerimiento no funcional.

Hay que tener cuidado eso si en definir bien si es un requerimeinto funcional o no funcional. Cuando tiene que ver con una salida de datos y presentacion de información eso es un requerimiento funcional.

Ejemplo:
Concurrencia: El sistema debe proveer la capacidad de 2000 usuarios concurrentes el mismo minuto.
Disponibilidad: 24×7 es para sistemas online que debiese estar el 100% del tiempo disponible para el usuario, 9×5 serían por ejemplo sistemas transaccionales ocupados en horarios laborales de lunes a viernes.
Rendimiento: El software debe consumir sòlo hasta un 60% de CPU

Publicado en Capacitacion, Desarrollo

Cambiando el tiempo de transaccionalidad en JBoss 4.2.3.GA

Para los desarrolladores que “debugean” es util cambiar el valor de timeout de la transaccionabilidad el JBoss que esta configurada en 300 segundos por defecto, esto porque la depuración puede de un proceso largo puede tomar más que esos 300 segundos, luego de lo cual la transaccionalidad se pierde, y pierdes además conexiones y cosas similares. En el archivo jboss-service.xml, se debe modificar la seccion, con los segundos en 5000.

   
   
      5000
      ${jboss.server.data.dir}/tx-object-store 
   
Publicado en Desarrollo, Eclipse, JBoss, JEE, Web

Habilitando modulo expires de apache

Una de las estrategias para acelerar la carga de tus páginas (al menos a las personas que ya te han visitado) es activando el modulo expires de Apache. Esto significa que se transmite dentro del protocolo una directiva al navegador que estes utilizando la fecha de expiración de los archivos.

Existen archivos que por su naturaleza no son dinamicos, y su vida util es bastante más que un día o una hora, por lo que cuando se transmite el archivo, no es necesario volver a transmitirlo si el usuario ya lo posee en su caché.

Activando el modo expires, se le entrega información al navegador para que mantenga por un tiempo determinado los recursos transmitidos.

En el caso de este blog por ejemplo los javascript (*.js), los css (*.css) y algunos otros tipos de archivos luego de ser subidos no son modificados, ni tampoco son dinámicos con lo que la configuracion de mi .htaccess esta de la siguiente forma:

ExpiresActivate On
<filesMatch "\.(ico|gif|jpg|jpeg|png|flv|pdf|swf|mov|mp3|wmv|ppt|xml|txt|html|js|css|htm)$">
  ExpiresDefault A2419200
  Header append Cache-Control "public"

Lo que significa que todos esos tipos de archivo pueden expriras después de un año.

Se puede complementar con (dentro del bloque de IfModule)

<filesMatch "\.(php|cgi|pl)$">
  ExpiresDefault A0
  Header set Cache-Control "no-store, no-cache, must-revalidate, max-age=0"
  Header set Pragma "no-cache"

Para indicar que esas extensiones son dinamicas, no deben se cacheadas y deben siempre consultarse.

Publicado en Firefox, Optimizacion, Web

Añadir un usuario existente a un grupo en Unix

Cuando ya existente se debe utilizar el comando usermod de la siguiente forma

# usermod -G nombre_grupo nombre_usuario

a más de un grupo

# usermod -G nombre_grupo_1,nombre_grupo_2 nombre_usuario
Publicado en CEntOS, Desarrollo, Solaris, Unix