7/6/13

Metodología ATPC y TVS



Bueno, después de algún tiempo desarrollando aplicaciones para varios tipos de clientes, algunos con conocimientos informáticos, otros no. Unos que saben lo que quieren con especificaciones coherentes (los menos) y otros que van diciéndote sobre la marcha (los más) y algunos que piden cosas absurdas cuando ya tienes un 90% del desarrollo realizado.

He probado muchas metodologías, con buenos resultados en refinamientos sucesivos para casi cualquier tipo de cliente y , si el cliente es coherente, las metodologías ágiles son altamente eficientes y satisfactorias. No obstante y únicamente para los que piden cosas absurdas con el 90% del desarrollo realizado he desarrollado la metodología ATPC (A Tomar Por el Culo) que consiste básicamente en entregar un producto coherente y, las cosas absurdas fuera de plazo se definen como excepciones o errores controlados. La experiencia me ha enseñado que las cosas absurdas no se usan y a nadie parece importarle si funcionan o no y , además, siempre esta la justificación "me lo pediste en el ultimo minuto y no he podido refinarlo".

Claro, esto solo es usable si tienes un precio fijo por proyecto, si cobras por horas lo mejor es la metodología TVS (Te Voy a Sablear) o su derivada TVSM (Te Voy a Sablear Mucho), básicamente consiste en no tener prisa y hacer las cosas a tu rollo.

Estas son metodologías ampliamente usada en el mundo de la construcción de viviendas, ya se sabe que las obras sabes cuando empiezan pero no cuando acaban (y algunas ni cuando empiezan), pues eso mismo es aplicable al desarrollo de software.

Así que, compañeros desarrolladores, os insto a aplicar estas nuevas y a la vez antiguas y contrastadas metologías 
de trabajo

25/3/13

Quitar Journaling de HFS+






Bueno, he estado cachurreando con Macs un tiempo y creo que es tiempo de hacer alguna contribución al tema.

Si alguno se le ha ocurrido acceder a una partición OSX HFS+ desde linux habrá descubierto que puede leer pero no escribir en ella. Esto es por causa del journaling del sistema de archivos HFS+ (concretamente es lo que significa el +) que no esta soportado completamente por linux.

Para solucionar el problema se escritura solo hay que quitar el +, es decir, desactivar el journaling y convertirlo en HFS que si esta soportado completamente por linux. la forma es bastante simple en realidad, abrimos un terminal y, usando el comando diskutil, desacivamos el journalig así:

# diskutil disableJournal /Volumes/NombreDelVolumen

y no hay mas.

20/8/12

gvSIG en OSX Lion






Bueno, este es un inciso que tengo que hacer porque he tenido que trastear con gvSIG, por si alguien no lo conoce, porgrama libre para Sistemas de Información Geográfica. Muy util para diversas tareas.

Al grano que la ultima versión para Mac OSX tiene dificultades para correr con OSX 10.7 (Lion) y superiores. La solución es bien sencilla a la par que complicada de encontrar y es la siguiente (2 métodos):

Método1:
Abrir el terminal y ejecutar:
.//Applications/gvSIG-1.11.0-RC1.app/Contents/MacOS/JavaApplicationStub

Método 2:

  1. Ir a Aplicaciones,
  2. Selecionar gvSig-1.11.0.RC1.
  3. Boton derecho y "Mostrar contenido del paquete".
  4. Ir a Contents/MacOS
  5. Doble click en JavaApplicationStub
Y listo, esto responde a la pregunta ¿Como ejecutar gvSIG en Mac OSX Lion?

11/8/12

Preparando las nuevas certificaciones Microsoft (III): Programming in HTML5 with JavaScript and CSS3






Bien empezaremos por decir que esta es una certificación triple ya que, además de contar como crédito para la certificación "MCSD: Windows Metro style Apps using HTML5" tambien cuenta como crédito para la certificación "MCSD: Web Applications" y es, en si mismo una certificación, "Programming in HTML5 with JavaScript and CSS3 Specialist". Así que interesa sacarlo por partida triple.

Empezaremos con el temario (traducido) tal y como viene en la web de microsoft, luego pasaremos a detallar cada área temática. Debo advertir (como advierte microsoft) que los porcentajes son el peso relativo dentro del examen, cuanto más peso, más preguntas es probable que caigan, no obstante las preguntas tienen un grado de dificultad que también cuenta en la valoración, así podemos tener 15 preguntas de un área con dificultad baja que sumen, por ejemplo, 150 puntos y podemos tener 4 preguntas con dificultad alta de otro área que sumen lo mismo.

Además, cada área temática incluye las competencias que se muestran, pero no se limitan a ellas, es decir, puede, perfectamente, caer una pregunta que se englobe dentro de un área temática pero que no se muestre en el temario.

El examen consta de cuatro áreas temáticas:
Implementar y manipular las estructuras de documentos y objetos (24%)
Implementar el flujo del programa (25%)

Acceder y Asegurar datos (26%)
Uso de CSS3 en Aplicaciones (25%)

Implementar y manipular las estructuras de Documentos y Objetos
Este área temática incluye las siguientes subáreas:
  •     Crear la estructura del documento.
    • Estructurar la interfaz de usuario mediante el uso de marcado semántico, incluyendo motores de búsqueda y lectores de pantalla (etiquetas Section, Article, Nav, Header, Footer y Aside).
    •  Crear un contenedor de diseño en HTML
  •     Escribir código que interactúe con los controles de la interfaz de usuario.
    • Añadir y modificar los elementos HTML mediante programación.
    • Implementar controles multimedia.
    • Implementar HTML5 Canvas y gráficos SVG.
  •     Aplicar un estilo a elementos HTML mediante programación.
    • Cambiar la ubicación de un elemento.
    • Aplicar una transformación.
    • Mostrar y ocultar elementos.
  •     Implementar el API HTML5.
    • Implementar las APIs de almacenamiento, AppCache, y Geolocalización.
  •     Establecer el alcance de los objetos y variables.
    • Definir la duración de las variables.
    • Mantener los objetos fuera del espacio de nombres global.
    • Uso de "this" para hacer referencia a un objeto que ha disparado un evento.
    • Variables de ámbito local y global
  •     Crear e implementar los objetos y métodos.   
    • Implementación de objetos nativos.
    • Crear objetos personalizados y propiedades personalizadas para los objetos nativos con prototipos y funciones.
    • Heredar de un objeto.
    • Implementar los métodos nativos y crear métodos personalizados.
Implementar el flujo del programa
Este área temática incluye las siguientes subáreas:
  •     Implementar el flujo del programa.
    • Recorrer elementos de colecciones y arrays.
    • Gestionar las decisiones del programa mediante el uso de sentencias switch, if / then, y los operadores.
    • Evaluar expresiones
  •     Lanzar y controlar un evento.
    • Controlar los eventos comunes expuestos por DOM (onBlur OnFocus, OnClick).
    • Declarar y manejar eventos traspasados.
    • Controlar un evento mediante el uso de una función anónima
  •     Implementar el manejo de excepciones.
    • Establecer y responder a los códigos de error.
    • Lanzar una excepción.
    • Petición de cheques nulos.
    • Implementar bloques try-catch-finally
  •     Implementar una devolución de llamada.
    • Recibir mensajes de la API  HTML5 WebSocket.
    • Usar jQuery para hacer una llamada AJAX.
    • Cablear un evento.
    • Implementar una devolución de llamada(callback) mediante el uso de funciones anónimas.
    • Manejar el puntero "this".
  •     Crear un proceso de trabajo web.     
    • Iniciar y detener un trabajador web.
    • Pasar datos a un trabajador Web.
    • Configurar los tiempos de espera y los intervalos en el trabajador web.
    • Registrar un detector de eventos para el trabajador de la Web.
    • Limitaciones de un trabajador Web 
 
Acceder y Asegurar datos 
Este área temática incluye las siguientes subáreas:
  •     Validar la entrada del usuario mediante el uso de elementos de HTML5.
    • Elegir los controles apropiados basados ​​en las necesidades.
    • Aplicar los tipos de entrada HTML (por ejemplo,,,) y los atributos de contenido (por ejemplo, requerido) para recolectar información del usuario.
  •     Validar la entrada del usuario mediante el uso de JavaScript.
    • Evaluación de una expresión regular para validar el formato de entrada.
    • Validar que se introduce el tipo de tipo de datos correcto mediante el uso de las funciones integradas.
    • Evitar la inyección de código 
  •     Consumir los datos.
    • Consumo de datos JSON y XML.
    • Recuperar datos mediante el uso de servicios web.
    • Cargar datos u obtener datos de otras fuentes mediante el uso de XMLHttpRequest.
  •     Serializar, deserializar y transmitir datos. 
    • Datos binarios.
    • Datos de texto (JSON, XML).
    • Implementación del método serializar de JQuery.
    • Form.Submit.
    • Parsear Datos.
    • Enviar datos mediante el uso de XMLHttpRequest.
    • Filtrar los datos mediante el uso de codificación URI / form.
Uso de CSS3 en Aplicaciones 
Este área temática incluye las siguientes subáreas:
  •     Estilo de propiedades de texto HTML.
    • Aplicar estilos a la apariencia del texto (color, negrita, cursiva).
    • Aplicar estilos a la fuente del texto (WOOF y @ font-face, size, understudy fonts).
    • Aplicar estilos a la alineación del texto, el espaciado, y la sangría.
    • Aplicar estilos a los guiones de texto.
    • Aplicar estilos de sombra de texto arrojada.
  •     Un cuadro de propiedades de estilo HTML.
    • Aplicar estilos para modificar los atributos de apariencia (tamaño, bordes y esquinas, redondeo de fronteras, contorno, relleno, márgenes).
    • Aplicar estilos para alterar los efectos gráficos (transparencia, opacidad, imagen de fondo, gradientes, sombras, de recorte).
    • Aplicar estilos para establecer y cambiar la posición de un elemento (estática, relativa, absoluta fija,)
  •     Crear un diseño flexible de contenido.
    • Implementar un diseño con un modelo de caja flexible.
    • Implementar un diseño con varias columnas.
    • Implementar un diseño usando posición flotante y exclusiones.
    • Implementar un diseño mediante la alineación de la red.
    • Implementar un diseño con las regiones, agrupando y anidando.
  •     Crear una interfaz de usuario animada y adaptable.
    • Animar objetos mediante la aplicación de las transiciones CSS.
    • Aplicar transformaciones 3-D y 2-D.
    • Ajustar la interfaz de usuario basada en las consultas multimedia (adaptaciond para dispositivos de los formatos de salida, exposiciones y representaciones).
    • Ocultar o deshabilitar los controles
  •     Buscar los elementos mediante el uso de selectores CSS y jQuery.
    • Elegor el selector correcto para hacer referencia a un elemento.
    • Definir los elementos, el estilo y selectores de atributos.
    • Encontrar elementos mediante el uso de los pseudo-elementos y pseudo-clases (por ejemplo, :before, :first-line, :first-letter, :target, :lang, :checked, :first-child)
  •     Estructura de un archivo CSS mediante el uso de selectores CSS.      
    • Referenciar los elementos correctamente.
    • Implementar la herencia.
    • Anular la herencia mediante el uso de !important.
    • Estilo de un elemento basado en los pseudo-elementos y pseudo-clases (por ejemplo, :before, :first-line, :first-letter, :target, :lang, :checked, :first-child).
 Recomiendo como material de preparación los siguientes libros:
HTML5 for Web Designers y CSS3 for Web Designers de A BOOK APART que, si sabeis y habeis trabajado algo con HTML4 y CSS van de sobra para este examen y jQuery in Action para la parte de Javascript de Manning.

Esperando que os sea de ayuda. Mañana veremos el 70-481 de desarrollo esencial de aplicaciones para Windows 8 (Metro Style) en HTML, CSS  y Javascript.

Lanzado LibreOffice 3.6.0



Se acaba de lanzar LibreOffice 3.6.0 para Windows, Mac y Linux, noticia lo suficientemente importante como para aparecer en el blog. Entre sus novedades más importantes, 10 nuevas plantillas para impress, nuevo filtro de importación para Corel Draw, exportación a PDF con marca de agua y contador de palabras en la barra de estado de Writer. Esta disponible tambien en español.

Si trabajais con bases de datos Access no os recomiendo la actualización porque esta versión tiene roto el enlace ADO.NET forzandonos a establecer manualmente la conexión a traves de fuentes ODBC. Los desarrolladores prometen corregirlo para la versión 3.6.1.

Podeis descargarla aqui.