programacion

El crecimiento de UTF-8 en la red

Hace un tiempo escribíamos sobre la internacionalización y lo planteábamos como uno de los grandes problemas de la red. Lo más recomendado es usar UTF-8 a la hora de codificar tanto la base de datos como el sitio web.

Usar UTF-8 beneficia todos aquellos sitios web que de alguna manera necesitan ofrecer un soporte de internacionalización, es decir con UTF-8 ofreces la posibilidad de interactuar con tu página a cualquier persona que no hable tu idioma.

Crecimiento de Unicode en Internet

El crecimiento de Unicode es espectacular y hace poco menos de un mes Google ha comenzado a utilizar Unicode 5.1 con lo que ahora es posible la búsqueda en algunos idiomas más...



Costes del desarrollo de Linux

Linux Foundation ha calculado que costaría desarrollar el código de Linux desde cero, el resultado es 10.800 millones, hablan en concreto de la distribución Fedora 9 que fue puesta a disposición del público el 13 de mayo de 2008.

El proceso de medición de costes del software es un factor realmente importante en el análisis de un proyecto. Hay distintos métodos de estimación de costes de desarrollo de software, también conocido como métrica del software.

La gran mayoría de estos métodos se basan en la medición del número de Líneas de Código (LDC) que contiene el desarrollo (se excluyen comentarios y líneas en blanco de los fuentes).

Costes del desarrollo de software

Datos de desarrollo de Fedora 9

En el informe citado anteriormente "Estimating the Total Development Cost of a Linux Distribution" se calcula que Fedora 9 tiene un valor de 10,8 mil millones de dólares y que el coste únicamente del kernel tendría un valor de 1,4 mil millones de dólares.

Esta distribución tiene unas 205 millones de líneas de código y el trabajo invertido por una única persona desarrollándolo se alagaría durante unos 60.000 años.

Cómo veremos en la tabla inferior ("Dificultad de un proyecto en función su líneas de código") el proyecto debería ser desarrollado por 1000 - 5000 desarrolladores y esa estimación no va muy desencaminada ya que en los 2 últimos años han contribuido unos 3.200 desarrolladores aunque el número de trabajadores en la historia de la distribución es mucho mayor.

Dificultad de un proyecto en función su líneas de código

Categoría Programadores Duración Líneas de código Ejemplo
Trivial 1 0 – 4 semanas < 1k Utilidad de ordenación
Pequeño 1 1 – 6 meses 1k – 3k Biblioteca de funciones
Media 2 – 5 0,5 – 2 años 3k – 50k Compilador de C
Grande 5 – 20 2 – 3 años 50k – 100k SO pequeño
Muy grande 100 – 1000 4 – 5 años 100k – 1M Grandes SO
Gigante 1000-5000 5 – 10 años > 1M Sistema de Distribución

Tabla: "Dificultad de un proyecto en función de sus líneas de código

Ventajas y desventajas de MyISAM e InnoDB

MySql soporta distintas tecnologías de almacenamiento de datos, entre estas destacan MyISAM e InnoDB, el primero de ellos (MyISAM) es el utilizado por defecto pero en la mayoría de los casos podremos cambiarlo cuando queramos.

Documentación de MySQL sobre InnoDB
Documentación de MySQL sobre MyISAM

Ventajas de MyISAM

  • Las tablas MyISAM son más simples, por lo tanto si eres nuevo con MySQL o con las bases de datos en general es mucho más recomendable que InnoDB.
  • Bloqueo de tablas
  • Nos permite tener las características ACID (Atomicity, Consistency, Isolation and Durability: Atomicidad, Consistencia, Aislamiento y Durabilidad en español), garantizando la integridad de nuestras tablas.
  • Es probable que si nuestra aplicación hace un uso elevado de SELECT notemos un aumento de rendimiento con respecto a InnoDB.

Ventajas de InnoDB

  • Integridad de datos, cuando los contenidos se modifican con sentencias INSERT, DELETE o UPDATE, la integridad de los datos almacenados puede perderse de muchas maneras diferentes. Pueden añadirse datos no válidos a la base de datos, con las tablas InnoDB es más difícil que esto ocurra.
  • Mayor velocidad en general a la hora de recuperar datos.
  • Recomendable para aplicaciones en las que dominan las sentencias SELECT ante los INSERT / UPDATE.
  • Ausencia de características de atomicidad ya que no tiene que hacer comprobaciones de la integridad referencial, ni bloquear las tablas para realizar las operaciones, esto nos lleva como los anteriores puntos a una mayor velocidad.
  • Soporte de transacciones

Desventajas de MyISAM

  • Las tablas pueden llegar a dar problemas en la recuperación de datos.
  • El bloqueo de las tablas cuando se inserta o actualiza un registro es otra posible desventaja ya que el resto de las operaciones quedarán a la espera de la insercción o actualización del registro.

Desventajas de InnoDB

  • El diseño de su estructura es mucho más complejo que el diseño de una tabla MyISAM
  • No soporta búsquedas full-text, que para conjuntos de datos grandes, es mucho más rápido.
  • La última desventaja es su pobre rendimiento en operaciones sencillas como seleccionar datos si lo comparamos con las tablas MyISAM.

Fácil traductor utilizando PHP

En este ejemplo vamos a ver como hacer una pequeña aplicación con PHP que nos permita traducir todo tipos de contenidos sin la necesidad de utilizar Ajax, para ello utilizamos Google Ajax Language API, y es que aunque el nombre de la API dice bien claro "Ajax" esta API nos da soluciones para aquellos entornos de desarrollo que no disponen de la posibilidad de utilizar Javascript, por ejemplo como en este caso con PHP o para desarrolladores Flash.

En todos los casos el método permitido es GET y el formato de respuesta es JSON, es realmente sencillo de utilizar gracias a esta facilidad que nos ofrece en ambas características. Es muy importante que en este ejemplo pongamos correctamente las cabeceras en las peticiones y del mismo modo necesitaremos utilizar una clave para nuestro dominio (API Key).

Únicamente el ejemplo lo que hará es pasarle a nuestro script PHP alguna palabra o frase y este script en PHP hará una petición que con la ayuda de las funciones de curl nos devolverá las palabras traducidas.

Borrar elementos de un array de PHP

Borrar elementos de un array en Php no es una cosa que se necesite a menudo, gracias a la potente función Array Filter podemos borrar algunos elementos del array.

Por ejemplo supongamos que tenemos un array que contiene valores numéricos y letras, queremos separar los valores numéricos porque los necesitamos para un determinado propósito.

Cómo se puede ver en el ejemplo utilizamos dos veces la función, la primera es para filtrar los datos numéricos y la segunda vez es para ordenar el array y que no nos queden elementos intercalados vacios.

$data = array(12, "f", 21, "g", 43.96, "php","");

// Filtramos los datos de $data con la función array_filter y el filtro is_numeric
$datos_numericos = array_filter($data, "is_numeric");

// Volvemos a ejecutar la función para que nos re-indexe el array empezando por 0
$datos_numericos = array_values($numeric_data);

// Imprimimos los datos
print_r($datos_numericos);

La ejecución de este script nos devolvería lo siguiente:

Array
(
    [0] => 12
    [1] => 21
    [2] => 43.96
)

¿Por qué escribir HTML válido?

Es un hecho que aún hoy en día la gran mayoría de páginas webs no son válidas, los blogs son buen ejemplo de ello, mucho se habla de los estándares web son un conjunto de recomendaciones de la World Wide Web Consortium (W3C) y otras organizaciones internacionales.

El principal objetivo de validar tu sitio web es obtener una página que trabaja mejor para todo tipo de navegadores y es mucho más accesible pudiendo funcionar prácticamente en cualquier dispositivo de acceso a Internet, este último punto es muy importante ya que la cantidad de dispositivos diferentes para acceder a Internet ha crecido exponencialmente en los últimos años (teléfonos móviles, teléfonos inteligentes, PDAs, sistemas de televisión interactiva, sistemas de respuesta de voz, puntos de información e incluso algunos pequeños electrodomésticos pueden acceder a la Web).

¿Por qué escribir HTML válido?

Es difícil convencer a los desarrolladores de la necesidad de escribir HTML válido, ya que la gran mayoría de los navegadores procesa e interpreta correctamente el HTML no válido.

Entonces, la pregunta toma aún más interes, ¿Cuál es el incentivo para escribir HTML válido?, pues probablemente la respuesta sea es que si tu sitio web es válido las posibilidades de que la página se muestre y funcione igual en todos los navegadores aumenta considerablemente.

Pongamos un ejemplo básico de HTML y un ejemplo de HTML + Javascript para ver como afectaría un HTML no válido al funcionamiento de nuestra página en ambos casos.

Supongamos que disponemos del código siguiente:

<ol>
<li>Elemento principal uno</li>
<li>Elemento principal dos</li>
</ol>

Como se puede ver los navegadores procesarán sin problemas este código ya que no contiene errores y es bastante sencillo.

Pero que ocurriría si por el contrario cometiéramos errores de validación, por ejemplo:

<ol>
<p><li>Elemento principal uno</li></p>
<p><li>Elemento principal dos</li></p>
</ol>

En este caso el parrafo debería ir dentro del elemento "li" por lo que estamos cometiendo un error, a pesar de ello este error no afectará a la visualización y funcionamiento del HTML... ya que los navegadores podrán interpretarlo sin problemas.

Pero sin embargo si necesitamos el uso de Javascript sobre esta misma página HTML si que nos podemos encontrar con alguna que otra sorpresa.

Consejos para planificar una aplicación web

A menudo antes de empezar un proyecto no tenemos claro cúal es el objetivo del mismo o qué pretendemos alcanzar por eso esta pequeña lista te puede ayudar a la hora de planificar un proyecto.

Planificar una aplicación web implica pensar y definir muchas cuestiones de importancia:

1. Planificar el futuro

Puede sonar un poco duro que nos tengamos planear el futuro de algo que aún no existe pero es así, que pasa si en un futuro tuvieramos problemas de escalabilidad, y sí tuvieramos que migrar las bases de datos de MySql a Oracle, de una buena planificación depende la dificultad en un futuro de realizar cambios en la plataforma que sostiene nuestra aplicación.

2. Documentación

Documenta todo lo que puedas tu aplicación en especial aquellas partes de la misma que hayan requerido un mayor tiempo de desarrollo, en un futuro cercano te librará de más de un quebradero de cabeza.

3. No empiezes por los pequeños detalles

A menudo es más sencillo plantearse el desarrollo de pequeños servicios cómo pueden ser los RSS o una galería de imágenes, pero es fundamental comenzar por lo que vendrá a ser la base de nuestra aplicación, de este modo podremos ir completando nuestra aplicación en un orden lógico, primero los cimientos...

4. Diseño de la interfaz

Esta entrada puede que te ayude en esta parte, es importante conseguir un buen diseño para nuestra interfaz, es importante conseguir un interfaz que se atractivo y útil para la gran mayoria de los usuarios, lo más importante es llegar a conectar con el usuario y la mejor manera es ofrecerle la mayor cantidad de información posible para que se llegue a sentir parte del proyecto pero todo esto muchas veces no lo llegamos a conseguir por una mala elección en la combinación de los colores que se integran en nuestra interfaz.

5. Evita construirte librerías o frameworks innecesarios

Muchas personas siempre sostienen que es mejor que cada desarrollador utilize sus propias librerías, pero la realidad es que en muchas ocasiones esto supone una gran pérdida de tiempo, es mejor buscar una librería o framework que se parezca lo más posible a lo deseado que desarrollarlo por ti mismo.

6. Ten un plan de proyecto

Asegúrate de que cada desarrollador que trabaje en el proyecto sepa qué es lo que debe de hacer y cuándo tiene que hacerlo, teniendo todo esto redactado en un documento te ayudará a identificar problemas.

Distribuir contenido