Temas etiquetados como: ‘php’

Maximos valores con la función Rand() de php

16 abril, 2010

Si eres nuevo aquí, puede que quieras suscribirte a mi RSS feed. Gracias por visitarnos!

Esta semana trabajando con la generación de ganadores de los sorteos que se realizan en mi empresa, me he topado con un error que hasta ahora no me había pasado nunca. Hasta hace unos días para obtener el boleto ganador, sacaba un número aleatorio entre 1 y el máximo de participaciones, me he dado cuenta que el máximo de participaciones nunca sobrepasaba el número 2.147.000.000 una vez sobrepasado ese número en máquinas de 32 bits (en las de 64 no he probado), se producía un desbordamiento ocasionado por la función rand() y el resultado lo devolvía como número negativo. También probé las alternativas a esta función y con todas obtenía el mismo resultado … desbordamiento.

Por lo tanto me las he tenido que ingeniar para sacar el boleto ganador de otra forma, y este es el código que empleé para ello:

//Nuevo sistema de sorteo para evitar desbordamientos.
$completas =(int) ($participaciones/mt_getrandmax());
$sobrantes = $participaciones – ($completas * mt_getrandmax());
$boleto    = $completas * rand(1,mt_getrandmax()) + rand(1, $sobrantes);

Supongamos que $participaciones = 7.000.000.000

Con la función mt_getrandmax() obtenemos el mayor número entero soportado por rand(), en este caso nos devolvía 2.147.000.000. Por lo tanto, $completas = al entero de (7.000.000.000/2.147.000.000) Esto da un resultado de 3.

Ahora necesitamos las participaciones sobrantes, este valor lo obtenemos restandole a las participaciones totales, todas las partes obtenidas: $sobrantes = 7.000.000.000 – (3 * 2.147.000.000). Esto daría = 559.000.000

De esta forma ya podemos operar los valores con rand(). Quedaría así:

$boleto    = 3 * rand(1, 2.147.000.000) + rand(1, 559.000.000);

HipHop for PHP: Lenguaje de programación para Facebook

3 febrero, 2010
hiphopphp

hiphopphp

Hoy vamos a hablar de una nuevo lenguaje de programación utilizado en Facebook se trata del lanzamiento de HipHop para PHP. Según el ingeniero Haiping Zhao, HipHop les permitió reducir el uso del CPU en sus servidores en un promedio del 50%, dependiendo de la página, resultando en un enorme impacto para todo el sitio de Facebook.

Aunque HipHop se estuvo desarrollándose durante los últimos 2 años, reconocen que todavía no está completo, y la calidad de su código actual puede considerarse como “Beta”. Liberarlo bajo la misma licencia de PHP permitiría a su comunidad completar el trabajo, y al mismo tiempo ofrecer un nuevo enfoque a la hora de escalar sitios muy complejos.

¿Pero qué es exactamente HipHop? Según el mismo Zhao:

“HipHop no es técnicamente un compilador. En su lugar es un transformador de código. HipHop transforma tu código fuente PHP en un altamente optimizado código C++ y luego usa g++ (GNU C++) para compilarlo. HipHop ejecuta el código fuente en una manera semánticamente equivalente y sacrifica algunas características raramente usadas -como eval()- a cambio de una performance mejorada. HipHop incluye el transformador de código, una reimplementación del runtime de PHP y una re-escritura de varias extensiones de PHP comunes para aprovechar estas optimizaciones”.

La Web de la Casa Blanca está hecha con Drupal

27 octubre, 2009

Hoy me han informado de una noticia que la verdad llama bastante la antención, la web de la Casa blanca se ha migrado a la plataforma de DRUPAL. Para todo aquel que no lo sepa, Drupal es un gestor de contenidos al igual que Joomla, phpNuke, etc.

Lo que no tengo muy claro es el por que han tomado esta decisión. El equipo técnico ha optado por un software libre, que no necesita licencia y estoy seguro que no lo han hecho por razones económicas. El resto de la implementación incluye un servidor Red Hat, Apache, PHP y MySQL, con Solr como la nueva máquina de búsquedas para todo el sitio.

casa-blanca-web

casa-blanca-web


Librería PHP para leer y escribir Libros EPUB (eBooks)

27 octubre, 2009

Siento lástima por las librerías típicas de toda la vida, los libros electrónicos cada día están más de moda y EPUB parece ser que será el formato que se convertirá en estándar para estos libros, algo que debemos tener en cuenta los desarrolladores para realizar exportación a este formato.


EPUB (nombre proveniente de Electronic publication) es un formato estándar para libros electrónicos creado por el International Digital Publishing Forum (IDPF).

EPUB es un formato redimensionable, es decir, en un libro digital EPUB se marca el contenido, pero no se delimita su formato, que se adapta a las diferentes pantallas de los múltiples lectores de libros electrónicos del mercado.
Los archivos EPUB terminan con la extensión .epub.

OPL’s EPUB library nos permite leer, escribir y editar los ficheros EPUB, la cual podemos usarla para crearnos un plugin de WP y exportar nuestras entradas o exportar los contenidos de nuestra web en este formato.

OPL’s EPUB library

Programación PHP: Definición… que es el Patrón Singleton

19 octubre, 2009

La función principal del Patrón Singleton es garantizar que una clase sólo tenga una instancia y proporcionar un punto de acceso global a ella.

El patrón singleton se implementa creando en nuestra clase un método que crea una instancia del objeto sólo si todavía no existe alguna. Para asegurar que la clase no puede ser instanciada nuevamente se regula el alcance del constructor (con atributos como protegido o privado).

Una implementación del patrón singleton en PHP5 es la siguiente:

<?php
class Ejemplo
{
    // Contenedor Instancia de la Clase
    private static $instance;

    // A private constructor; previene creacion de objetos via new
    private function __construct()
    {
        echo 'Soy el constructor';
    }

    // EL metodo singleton 
    public static function singleton()
    {
        if (!isset(self::$instance)) {
            $c = __CLASS__;
            self::$instance = new $c;
        }

        return self::$instance;
    }

    // Clone no permitido
    public function __clone()
    {
        trigger_error('Clone no se permite.', E_USER_ERROR);
    }

}

?>

Tutorial.PHP Las variables y Constantes

12 octubre, 2009

Una variable en PHP es un contenedor que podemos nombrar como queramos, al cual le podemos asignar cualquier valor, por ejemplo números enteros, decimales, cadenas de texto, valores de sumas, restas, multiplicaciones, restos, etc…

Vamos a ver como se le asigna el valor.

<?php

//Declaramos la variable $mivariable con un valor de 11.
//Las líneas que empiezan en PHP por // son comentarios.

$mivariable = 11;

//Vamos a asignar otra variable

$mivariable2 = 3;

//Ahora vamos a operar con las 2 variables.

$resultadoSuma = $mivariable + $mivariable2;
$resultadoResta = $mivariable – $mivariable2;
$resultadoMultiplicacion = $mivariable * $mivariable2;
$resultadoDivision = $mivariable / $mivariable2;

//La siguietne línea nos devolverá 14.
echo “El resultado de la suma es “.$resultadoSuma.”<br />”;

//La siguietne línea nos devolverá 8.
echo “El resultado de la resta es “.$resultadoResta.”<br />”;

//La siguietne línea nos devolverá 33.
echo “El resultado de la multiplicación es “.$resultadoMultiplicacion.”<br />”;

//La siguietne línea nos devolverá 3.6.
echo “El resultado de la división es “.$resultadoDivision.”<br />”;

?>

Por otro lado las constantes son contenedores que suelen ser utilizados para contener etiquetas de apartados, ficheros de traducción, etc. Se declaran de la siguiente forma:

<?php

define(“CONSTANTE1″, “Hola, soy una constante”);
define(“DESPEDIDA”, “Hasta aquí la lección de hoy.”);

echo CONSTANTE1.’ ‘.DESPEDIDA;

?>

Nota: <br /> en HTML para quien no lo sepa es un salto de línea.

Tutorial.PHP Empezar con el primer script

10 octubre, 2009

La ventaja que tiene PHP sobre otros lenguajes de programación que se ejecutan en el servidor y por supuesto que es código libre. Esto quiere decir que podemos utilizarlo para desarrollar y vender nuestras aplicaciones sin tener que pagar ninguna licencia.

Vamos a ver un ejemplo sencillo para comprenderlo mejor.

<html>
<head>
<title>Ejemplo de PHP</title>
</head>

<body>

Parte de HTML normal.
<BR><BR>

<?php
echo “Parte de PHP<br>”;
for($i=0;$i<10;$i++)
{
echo “Linea “.$i.”<br>”;
}
?>

</body>
</html>

El código PHP ejecutado tiene dos partes: la primera imprime “Parte de PHP” y la segunda es un bucle que se ejecuta 10 veces de 0 a 9, por cada vez que se ejecuta se escribe una línea, la variable $i contiene el número de línea que se está escribiendo. No importa si no entiende muy bien el programa este ejemplo solo es para ilustrar como se intercala el código HTML y el código PHP.