Entradas etiquetadas ‘gratis

El crecimiento de UTF-8 en la red

27 de abril de 2009

en: Sin categoría

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

19 de abril de 2009

en: Sin categoría

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

JSON para PHP

27 de marzo de 2009

en: Programacion

Ventajas y desventajas de MyISAM e InnoDB

26 de marzo de 2009

en: Sin categoría

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.

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.