Archivo de la etiqueta: las-sugerencias

Compro, luego existo, ¿de dónde es este código?

Una vez más, traemos el código fuente de una aplicación para que nos digáis si sabéis de dónde procede. En este caso se trata de un software de servidor, desarrollado por un programador alemán (aunque de nombre noruego y apellido español), que con apenas 20 años vio la necesidad de una aplicación libre para un nicho que todavía se encontraba muy verde.

Las pistas

  • Es un habitual entre las sugerencias de aplicaciones para entornos LAMP, MAMP y WAMP.
  • Fue uno de los primeros proyectos de software libre de su nicho, por lo que muchos de sus competidores actuales están realmente derivados de su propio código.
  • Mandriva y Ubuntu utilizan este proyecto para una sección de sus páginas web.

El código

Como veréis, el fragmento de código en PHP que os proporcionamos hoy es lo suficientemente descriptivo como para que una sola función os dé muchas pistas sobre el proyecto que buscamos:

 class ▒▒_shopping_cart { var $code = '▒▒_shopping_cart'; var $group = 'boxes'; var $title; var $description; var $sort_order; var $enabled = false; function ▒▒_shopping_cart() { $this->title = ▒▒▒▒▒▒_▒▒▒▒▒_SHOPPING_CART_TITLE; $this->description = ▒▒▒▒▒▒_▒▒▒▒▒_SHOPPING_CART_DESCRIPTION; if ( defined('▒▒▒▒▒▒_▒▒▒▒▒_SHOPPING_CART_STATUS') ) { $this->sort_order = ▒▒▒▒▒▒_▒▒▒▒▒_SHOPPING_CART_SORT_ORDER; $this->enabled = (▒▒▒▒▒▒_▒▒▒▒▒_SHOPPING_CART_STATUS == 'True'); $this->group = ((▒▒▒▒▒▒_▒▒▒▒▒_SHOPPING_CART_CONTENT_PLACEMENT == 'Left Column') ? '▒▒▒▒▒_column_left' : '▒▒▒▒▒_column_right'); } } }

El reto

Como seguramente muchos ya sabéis de qué software se trata, he aquí algunas otras cuestiones que requieren conocer mejor el proyecto o saber bucear por su documentación (algo que debería ser indispensable para todo el que se adentre en un nuevo proyecto software):

  • Históricamente utilizaba una licencia libre vírica, pero a partir de determinada versión optaron por una más multipropósito. ¿Cuáles son estas dos licencias?
  • En agosto de 2011 se descubrieron tres importantes vulnerabilidades que fueron parcheadas un par de meses más tarde. ¿En qué consistían? ¿Podrías encontrar un commit o changelog de dichos parches?
  • De los más de 10.000 sitios registrados que usan esta tecnología, varios cientos son españoles. ¿Sabríais decir algún ejemplo?

Solución al anterior reto

Como muchos dijeron en las respuestas, el algoritmo que buscábamos era la ordenación quicksort, que frente al O(n2) de la mayoría de sus competidores, ofrece un orden de complejidad de O(log n) en el mejor de los casos.

Precisamente, para obtener esa cota en lugar del orden cuadrático una de las mejoras que se puede hacer es mejorar la elección del pivote. Y otra forma de mejorar su eficiencia, esta vez sin alterar el orden de complejidad, sería evitar la recursividad, aunque también es recomendable combinar quicksort con otros algoritmos que se comporten mejor con conjuntos reducidos una vez que hayamos ordenado la mayor parte de los datos.

Por último, la imagen utilizada pertenece al proyecto AlgoRyhtimics, que mediante danzas populares húngaras demuestra el funcionamiento de los principales algoritmos de ordenación: Seguir leyendo Compro, luego existo, ¿de dónde es este código?

Bing introduce pre-render en IE11: carga los principales resultados en segundo plano

Bing Pre-Render

La gente tras Bing tiene como misión ayudarnos a gastar menos tiempo buscando y más haciendo cosas. Eso es lo que aseguran en un nuevo post en su blog en el que por primera vez introducen la función pre-render de Internet Explorer 11 en su buscador.

Según sus investigaciones la mayor parte del tiempo gastado en búsquedas se utiliza realizando las mismas tareas y visitando múltiples páginas. En resumen, un proceso típico de búsqueda requiere varios pasos: escribir lo que queremos buscar, esperar a los resultados, seleccionar uno de ellos y esperar a que cargue. Esto puede llevar entre 30 y 60 segundos y en Bing quieren reducir ese tiempo. Seguir leyendo Bing introduce pre-render en IE11: carga los principales resultados en segundo plano