emmgfx

Obtener la URL que se esta visitando con PHP

Escrito por Josep Viciana hace 2 semanas

Con esta función, se puede saber la URL que se está visitando… y no hay nada más que decir, sólo la función y un ejemplo.

function selfURL(){
   $s        = empty($_SERVER["HTTPS"]) ? '' : ($_SERVER["HTTPS"] == "on") ? "s" : "";
   $protocol = strleft(strtolower($_SERVER["SERVER_PROTOCOL"]), "/").$s;
   $port     = ($_SERVER["SERVER_PORT"] == "80") ? "" : (":".$_SERVER["SERVER_PORT"]);
   return $protocol."://".$_SERVER['SERVER_NAME'].$port.$_SERVER['REQUEST_URI'];
}
function strleft($s1, $s2){
   return substr($s1, 0, strpos($s1, $s2));
}

En realidad son dos, pero van juntas. Y para usarla es bastante sencillo.

echo selfURL(); /* http://www.emm-gfx.net/2010/02/obtener-la-url-que-se-esta-visitando-con-php/ */

Puede no parecer demasiado util, pero a mi me ha venido bien varias veces.

Comprobar la validez de un dominio con PHP

Escrito por Josep Viciana hace 3 meses

Una sencilla función para verificar que un nombre de dominio existe. Es la función que utilizo en saberpagerank.es para verificar que el dominio introducido es correcto, podéis encontrar una demostración de allí.

function getAddrByHost($host, $timeout = 3) {
   $query = `nslookup -timeout=$timeout -retry=1 $host`;
   if(preg_match('/\nAddress: (.*)\n/', $query, $matches)){
      return trim($matches[1]);
   }else{
      return false;
   }
   return $host;
}

Y no hay mucho más que añadir, el nombre de dominio se le pasa en el primer parámetro, es decir, para utilizar la función se haría algo así:

if(!getAddrByHost('www.dominioabsurdo.lol')){
   die('El dominio parece incorrecto :(');
}

Hydrax, Skyx y Paradise Engine

Escrito por Josep Viciana hace 3 meses

Hoy estoy bastante contento. De algún modo, me encuentro involucrado – aunque con un papel bastante humilde -  en el proyecto que lidera Xavier Verguín al que hemos llamado Paradise Engine y que estoy seguro de que dará que hablar. Pero creo que lo más adecuado es ver el vídeo demostración – si podéis en HD – y luego explicar lo que és.

Paradise Engine viene a ser el contenedor que aúna otros proyectos en los que trabajamos desde hace tiempo, que han tenido un avance notable y que sinceramente, a día de hoy me dejan con la boca abierta cada vez que los veo.

Por un lado está Hydrax, que se encarga de generar mares – agua -, ríos y cualquier cosa similar con una calidad gráfica impresionante, como se puede ver en el vídeo incrustado un poco más arriba. Sinceramente, creo que no sólo Hydrax no tiene nada que envidiar al renderizado de aguas de Crysis, sino que es bastante superior.

También hay que destacar Skyx, que pretende ser y es un simulador fotorealista de cielos – incluyendo la luz, las nubes y su densidad – , capaz de generar ciclos dinámicos de luz día/noche. Skyx se integra a la perfección con Hydrax para poder hacer de Paradise Engine lo que es.

Otro punto muy importante de Paradise Engine, es el llamado Paradise Threading, que ha sido pensado para aprovechar al máximo el hardware de un equipo, sea cual sea, concretamente el/los procesador/es. Con Paradise Threading, el engine se adapta al número de procesadores para rendir lo mejor posible en cada caso, sin cambios de código, completamente escalable. De esta manera funcionará tanto en un ordenador con un procesador que en uno con 32, pero tendrá un rendimiento equivalente al que los 32 procesadores merecen.

La verdad, me parece impresionante el trabajo que se está haciendo y admirable la dedicación que se le está poniendo, que puedo asegurar que es muchísima… Cuando esté un poco más maduro, cuando haya una demo disponible para que todo el mundo pueda bajarla y probarla en su ordenador, publicaré una entrevista que tengo acordada con el principal desarrollador – Xavier – sobre este proyecto, su estado actual y los objetivos marcados. Espero que resulte interesante.

Eliminar posición de un array en PHP

Escrito por Josep Viciana hace 4 meses

Para borrar variables se utiliza unset(), también para eliminar posiciones de un array, pero si sólo se usa unset() la posición no se elimina del todo, sigue existiendo pero esta vacía. No sé si lo estoy explicando bien, pero con los ejemplos se entiende mejor. Es bastante sencillo, no es algo complicado de hacer, sólo hay que entenderlo.
Por ejemplo, con este array:

$array = 'ni sus,manos son,tan blancas,ni son,blancas sus,palomas';
$array = explode(',',$array);
Array
(
    [0] => ni sus
    [1] => manos son
    [2] => tan blancas
    [3] => ni son
    [4] => blancas sus
    [5] => palomas
)

Si se hace

unset($array[4]);

Quedará algo como:

Array
(
    [0] => ni sus
    [1] => manos son
    [2] => tan blancas
    [3] => ni son
    [5] => palomas
)

Es decir, el elemento no existe pero su posición en el array no se ha adaptado, hace un salto del 3 al 5 y en ocasiones lo ideal sería que el 4 se eliminara y el siguiente (el 5) pasara a ocupar su posición.

Para eso se puede utilizar la función array_values(), por ejemplo:

$array = array_values($array);

Haría que el resultado fuera:

Array
(
    [0] => ni sus
    [1] => manos son
    [2] => tan blancas
    [3] => ni son
    [4] => palomas
)
Página 1 de 3123