Archivo de 'ideas'

Qué gran verdad

Estudiándome un código fuente en PHP me encuentro esta gran frase:

PHP is a pretty stupid language.

¿El motivo esta vez? a()[0] no funciona. foo(a(), 0) sí. No deja indexar directamente un array devuelto por una función. Simpático lenguage :)

/**
 *  Returns $arr[$idx], because php doesn't let you index into
 *  arrays returned from a function.
 *
 *  a()[0] doesn't work
 *
 *  idx(a(), 0) does.
 *
 *  PHP is a pretty stupid language.
 *
 *  @param    array to index into
 *  @param    index. if negative, start at the end.
 *  @param    default to return if $arr[$idx] is not set
 *  @return   array[index]
 */
function idx($arr, $idx, $default=null) {
  if ($idx === null || !is_array($arr)) {
    return $default;
  }
  $idx = $idx >= 0 ? $idx : count($arr) + $idx;
  return array_key_exists($idx, $arr) ? $arr[$idx] : $default;
}

Idea: Consultar secretos

El otro día, no recuerdo a cuento de qué, pensé en una aplicación que resolviera por ejemplo este sencillo problema: “Adivina en qué estoy pensando. Cuando quieras te diré el resultado“. ¿Cómo podemos garantizar que le dirá la verdad? ¿Podrán consultar el resultado cuando quieran, o habrá una fecha en la que se revelará? La aplicación, por supuesto, sería vía web. Y su funcionamiento muy sencillo.

Paso 1 – Darlo de alta

Llega un usuario, fundador, e introduce su nombre (No hace falta que se registre), y añade un nuevo secreto. Se le presentará una página para pasar a los “participantes” del secreto.Cuando accedan, meterán su nombre, y ya formarán parte del secreto, por supuesto sin saber la respuesta. Una vez que todos pulsen el botón “Finalizado”, habrá terminado el alta del secreto.

Paso 2 – Consultar la respuesta

La segunda parte consiste en revelar el secreto que almacenó el fundador. ¿Cómo consultarlo? Fácil. Accediendo todos los participantes, incluido el fundador, en esa página. El sistema detectará que todos han accedido y, en ese momento, mostrará la respuesta :)

La verdad, no se me ocurren muchos usos a esta aplicación. Realmente se puede entender como una caja fuerte con varios cerrojos, y eso sí tiene muchos usos. Pero la idea me pareció curiosa, y también un buen ejercicio para los que quieran poner en práctica sus conocimientos de desarrollo web.