Temas etiquetados como: ‘programacion’

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

16 abril, 2010

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”.

Lenguaje de programación GO Google Open Source y su mascota Gordon

18 noviembre, 2009

Google acaba de anunciar un nuevo lenguaje de programación que ellos mismos han creado, se llama Go y es de código fuente abierto, y aunque es por ahora un lenguaje de programación experimental no dudo que pronto se convierta en un importante lenguaje de programación ya que Google tiene un impresionante poder de impulsar sus nuevos proyectos.

Go combina el rendimiento y la seguridad de un lenguaje compilado como C++ pero con la velocidad y el dinamismo de Python, algo muy curioso es la mascota de este lenguaje, me parece divertida, se llama Gordon como la que se ve enseguida.

Go-Mascota-de-Go-Gordon

Go-Mascota-de-Go-Gordon

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.

Tutorial.PHP Definición del lenguaje de programación

8 octubre, 2009

Para todos aquellos que empezáis a hacer vuestros pinitos en programación con PHP, voy a crear un pequeño tutorial de ayuda con ejemplos. Si en cualquier momento tenéis cualquier duda, postear y os ayudaré lo antes posible.
Voy a dar por hecho que todos tenemos instalado apache con php5 o superior para poder trabajar en localhost.
Si alguien no lo tiene … pues que lo diga y abriré otro post para explicar su instalación.

PHP es un lenguaje de programación interpretado, diseñado originalmente para la creación de páginas web dinámicas. Es usado principalmente en interpretación del lado del servidor (server-side scripting) pero actualmente puede ser utilizado desde una interfaz de línea de comandos o en la creación de otros tipos de programas incluyendo aplicaciones con interfaz gráfica usando las bibliotecas Qt o GTK+.

PHP es un acrónimo recursivo que significa PHP Hypertext Pre-processor (inicialmente PHP Tools, o, Personal Home Page Tools). Fue creado originalmente por Rasmus Lerdorf en 1994; sin embargo la implementación principal de PHP es producida ahora por The PHP Group y sirve como el estándar de facto para PHP al no haber una especificación formal. Publicado bajo la PHP License, la Free Software Foundation considera esta licencia como software libre.