Entradas con tag ‘PHP’

En el capítulo anterior, el blogoamigo Shakaran aconsejó (Gracias!) usar mt_rand(); en lugar de rand();, función que no conocía y al parecer su uso al generar números aleatorios es más recomendable, lo cual fue cierto hasta la nueva implementación de rand();, la cual es más rápida que la mismísima mt_rand();, pero como las palabras se las lleva el viento y teniendo un área de Pruebas (a.k.a. Ejemplos) acá están las evidencias:

Código

<?php
//Función a llamar varias veces
function generarAleatorios($veces=100000)
{
  echo "<h2 style=\"margin-top:20px;\">Se generaron {$veces} (x 2) números aleatorios</h2>";
  $tiempoInicial = microtime(true);
  $i = 0;
  while($i < $veces)
  {
    rand();
    $i++;
  }
  $tiempoFinal = microtime(true);
  $tiempoTotal = $tiempoFinal - $tiempoInicial;
  echo "Fueron <strong>{$tiempoTotal}</strong> segundos usando <strong>rand();</strong><br/>";
 
  $tiempoInicial = microtime(true);
  $i = 0;
  while($i < $veces)
  {
    mt_rand();
    $i++;
  }
  $tiempoFinal = microtime(true);
  $tiempoTotalMt = $tiempoFinal - $tiempoInicial;
  echo "Fueron <strong>{$tiempoTotalMt}</strong> segundos usando <strong>mt_rand();</strong><br/><br/>";
 
  if($tiempoTotal < $tiempoTotalMt)
  {
    $diferencia = $tiempoTotalMt - $tiempoTotal;
    echo "<strong style=\"color:green;\">rand();</strong> fue más rápido por <strong>{$diferencia}</strong> segundos.<br />";
  }
  else if($tiempoTotal > $tiempoTotalMt)
  {
    $direrencia = $tiempoTotal - $tiempoTotalMt;
    echo "<strong style=\"color:red;\">mt_rand();</strong> fue más rápido por <strong>{$diferencia}</strong> segundos.<br />";
  }
  else
  {
    echo "<strong>rand();</strong> y <strong>mt_rand();</strong>, tomaron exactamente el mismo tiempo <strong>{$tiempoTotal}</strong> segundos, increíble!!.<br />";
  }
}
 
//Todo listo!!
//Primero con nuestros 3 números para los colores a ver como van con tan poquitos
generarAleatorios(3);
//Otros números más redondos
generarAleatorios(10000);
generarAleatorios(1000000);
?>

Ejemplo

Puedes ver el código funcionando aquí, así que ahora puedes usar rand(); sin perder anhelados micro-segundos ;)

Referencias

Techno.Dev

De las cosas que me encantan del tema actual de este blog, es que en cada impresión de página el fondo cambia de color aleatoriamente, el código es muy sencillo y algo sucio:

Código

Hay varias formas de hacerlo, pero te mostraré 3:

  1. Color en formato HTML

    <?php
    //Obtenemos los canales rojo, verde y azul aleatoriamente
    $r = rand(0,255);
    $g = rand(0,255);
    $b = rand(0,255);
    //Los convertimos a hexadecimal
    $rh = dechex($r);
    $gh = dechex($g);
    $bh = dechex($b);
     
    //Generamos el color
    $color=($r>15 ? $rh : '0'.$rh ).($g>15 ? $gh : '0'.$gh ).($b>15 ? $bh : '0'.$bh );
    /*
    Lo agregamos al documento en un elemento style
    también podrías agregarlo mediante la propiedad style del elemento body
    */
    echo '<style>body{ background-color:#'.$color.' !important; }</style>';
    /*
    Como notarás se hacen comprobaciones para que en caso de que algún canal generado
    sea menor igual a <strong>F</strong> (15 en decimal) se le agregue un <strong>0</strong> (cero)
    a la izquierda para que el color quede bien formado y sea válido.
    */
    ?>
  2. Color usando rgb de CSS

    <?php
    //Obtenemos los canales rojo, verde y azul aleatoriamente
    $r = rand(0,255);
    $g = rand(0,255);
    $b = rand(0,255);
    /*
    Podríamos saltarnos las 3 sentencias anteriores y colocarlo directamente, pero lo hago por legibilidad
     
    Lo agregamos al documento en un elemento style
    también podrías agregarlo mediante la propiedad style del elemento body
    */
    echo '<style>body{ background-color:rgb('.$r.', '.$g.', '.$b.') !important; }</style>';
    ?>
  3. Color usando porcentajes y rgb de CSS

    <?php
    //Obtenemos los porcentajes para los canales rojo, verde y azul aleatoriamente
    $r = rand(0,100);
    $g = rand(0,100);
    $b = rand(0,100);
    /*
    Podríamos saltarnos las 3 sentencias anteriores y colocarlo directamente, pero lo hago por legibilidad
     
    Lo agregamos al documento en un elemento style
    también podrías agregarlo mediante la propiedad style del elemento body
    */
    echo '<style>body{ background-color:rgb('.$r.'%, '.$g.'%, '.$b.'%) !important; }</style>';
    ?>

Ejemplo

Aprovecho esta entrada tan sencilla para inaugurar un nueva sección llamada Ejemplos, puedes ver el ejemplo de esta entrada aquí.

Originalmente este post era para responder donde esta el php.ini pero seria muy “vacio” así que después de configurar LAMP con Ubuntu vamos a configurar un lugar donde colocar las librerías PHP para no tener que incluirlas en cada aplicación… para este caso utilizaremos como ejemplo:




Zend Framework es mi framework para PHP favorito, aunque eventualmente bailo Kumbia :)

vamos a configurar el include_path dentro del php.ini para que en nuestro BootStrap no sea necesario incluir el path del framework en cada aplicación ni nai más… así que manos a la ubre:

1. Crearemos nuestro “vertedero” de Librerías, la idea es meter allí todas las librerías a utilizar globalmente por nuestras aplicaciones…

$ mkdir /ruta/al/vertedero

yo la he creado en /home/evelio/Desarrollo/web/phpLibs, tu elige donde la quieres prefieras por ej. algo más adecuado como en /usr/share/php/ o según tu acomodo ;)

2. Bajamos Zend Framework

me he bajado la 1.5.1 en tar:

ZendFramework-1.5.1.tar.gz

que es la lastest a la fecha…

3. Descomprimimos el contenido de la carpeta library dentro de nuestro archivo descargado en el vertedero…

para mi caso la ruta dentro de File Roller es

/ZendFramework-1.5.1/library/

me a quedado /home/evelio/Desarrollo/web/phpLibs/Zend la raíz al framework

4. editamos el php.ini para configurar en el include_path del vertedero:

$ sudo gedit /etc/php5/apache2/php.ini

esa es la ruta :P

bajamos a:

;;;;;;;;;;;;;;;;;;;;;;;;;
; Paths and Directories ;
;;;;;;;;;;;;;;;;;;;;;;;;;

he incluimos:

include_path = ".:/ruta/al/vertedero"

para mi caso a quedado include_path = “.:/home/evelio/Desarrollo/web/phpLibs”

salvamos

5. listo! ahora todo lo que pongamos en el vertedero lo tendremos a un require de distancia
:)

Para configurar tu servidor local con Linux, Apache MySQL y PHP (LAMP) con Ubuntu es tan sencillo como:

Abre el gestor de paquetes Synaptic (en Sistema > Administración > Gestor de paquetes Synaptic)

Allí abrimos menú Editar > Marcar paquetes por tarea…

y simplemente chuleamos LAMP Server

Seleccionar LAMO Server

damos click en Aceptar …

también podemos instalar en este paso phpMyAdmin (mira más abajo) aunque no es camisa de fuerza para nadie pero es una gran utilidad ;) si no pues das Aplicar y ya esta te preguntara luego el password para el usuario root de MySQL

Para instalar phpMyAdmin solamente damos click en botón Buscar, buscamos por phpmyadmin y le marcamos para instalar dando click derecho > Marcar para instalar

maracar para instalar phpMyAdmin

nos preguntará si queremos marcar también las dependencias a lo cual le decimos que sí osea Marcar…

luego damos click en el botón Aplicar a lo cual nos preguntara de nuevo si estamos seguros y le diremos que Aplicar… esperamos un rato a la descarga de paquetes…

nos preguntara que servidor queremos configurar automaticamente a le diremos que apache2:

Configuramos Apache para phpMyAdmin

y voilà ya tenemos nuestro local servidor o localhots corriendo:

lOcAlHoTssss!!

nota que por defecto la carpeta www o htdocs o como quieras llamarle a la raiz de documentos del servidor esta en /var/www/

para cambiarla podemos hacerlo con poderes de supervaca:

$ sudo gedit /etc/apache2/sites-available/default

y cambiamos /var/www en “DocumentRoot /var/www/” y <Directory /var/www/> por donde queramos por ejemplo a nuestro home /home/tu-usuario/www, guardamos y listo… ten en cuenta que www debe existir ;)

Eso es todo nativos :P