martes, 22 de noviembre de 2011

Instalación de Python

Para comenzar debemos seleccionar el paquete de instalación adecuado a nuestro sistema operativo desde la siguiente url: http://www.python.org/download/, esta disponible para linux, windows, mac, etc.

  • Descargamos el archivo python-2.7.2.msi, lo ejecutamos

  • seleccionamos la carpeta de instalación, en windows, por defecto c:\python27\


  • luego indicamos los componentes a instalar, en mi caso selecciono todos, ya que es pequeño y voy a estudiarlo a fondo, como ustedes, no ?


  • Y con eso finalizamos la instalación.



  • Listo !!.
Python es un lenguaje interpretado, no debemos compilar ni nada, por tanto será fácil probar si todo esta ok, vamos a iniciar la linea de comandos de Windows, con:
  • Inicio, Ejecutar, CMD, y aceptar
En la linea de comando, indicamos la ruta de instalación de python y lo ejecutamos, luego probamos imprimir lo siguiente:
  • print “La suma de 2 + 2 es: “, 2 + 2
  • Si todo esta ok, veremos el resultado, la próxima vemos algo mas profundo.

domingo, 20 de noviembre de 2011

Problema de Heroku de "Permission Denied(publickey)".

La primera vez que ejecute el "Heroku 'comando va a enviar su clave pública. Sin embargo, si usted tiene múltiples claves públicas y quieres cargar una clave pública determinada

heroku keys:add

Haciendo una creación de Heroku entonces debe subir la clave que ha especificado anteriormente. Sin embargo, incluso después de hacer esto, sigo teniendo un "permiso denegado (publickey) 'error. Después de un poco de búsqueda me encontré con este artículo que explica por qué

Al parecer, la configuración Heroku sólo da por supuesto que va a utilizar un defecto clave pública, por lo que su no predeterminado de clave pública tendrá que ser añadido a su configuración de ssh. Tuve la oportunidad de salir adelante con esto en mi config ssh

Host heroku.com
Hostname heroku.com
Port 22
IdentityFile ~/.ssh/heroku_personal

viernes, 18 de noviembre de 2011

Mostrar imagen de día, tarde o noche con PHP

<?php
 $date = date ("H"); echo "<html><body>"; if ($date < 12) echo "Buenos dias! "."<img src='http://jclurita@www.jrclurita.com/web_movil/img/dia.jpg' title='dia'/>"; else if ($date < 18) echo "Buenas tardes! "."<img src='http://jclurita@www.jrclurita.com/web_movil/img/tarde.jpg' title='tarde'/>"; else echo "Buenas noches! "."<img src='http://jclurita@www.jrclurita.com/web_movil/img/noche.jpg' title='noche'/>"; echo "</body></html>"; 
?>

(--> Si la variable $date es menor que 12hrs, entonces que imprima la imagen de dia)
El resto es similar, sólo que va a cambiar la imagen.
Las imágenes que cambian son:

dia.jpg
tarde.jpg
noche.jpg

Como sabemos, la hora de PHP se basa en la hora de nuestros hosting o servidor. A mí me marca la hora así:

a las 12pm --> imagen de dia(dia.jpg)
a las 6pm --> imagen de tarde(noche.jpg)
a las 12an --> imagen de mañana(mañan.jpg)

martes, 15 de noviembre de 2011

Los desarrolladores de Facebook ahora con un solo clic Heroku hosting


A partir de hoy, Facebook desarrolladores de aplicaciones tienen una nueva forma de alojar sus aplicaciones, gracias a la colaboración de la red social con Heroku , a la vanguardia en servicios de cloud hosting

Antes de , la conferencia de desarrolladores de Facebook, que tiene lugar la próxima semana, Heroku y Facebook han lanzado conjuntamente una plataforma basada en la nube para aplicaciones de Facebook.

La integración permite una sencilla, con un solo clic hosting y despliegue de aplicaciones de Facebook en la plataforma a través de la aplicación Heroku revelador de Facebook.

«Para mí, lo más interesante es que muestra una diferencia fundamental en el modelo de nube plataforma de aplicaciones», dijo el CTO Heroku Adán Wiggins en una entrevista con VentureBeat hoy. «No es sólo una manera más rápida de hacer algo viejo. Es una forma completamente nueva. «

aplicaciones personales, aplicaciones de caja de arena, experimentos o aplicaciones con un número pequeño de usuarios, Heroku alojamiento es gratuito. Como aplicaciones de escala con base de datos más caballos de fuerza y ??el tráfico, los precios seguirán el modelo estándar de Heroku.

Por supuesto, Facebook quiere que sea lo más fácil posible para los desarrolladores crear aplicaciones utilizando la plataforma Facebook. Y Heroku, que fue adquirida el año pasado por Salesforce para una $ 212 millones , siempre está buscando más formas de aumentar su base de usuarios. Para las dos empresas, la asociación es una solución perfecta.

Pero, ¿qué significa la integración para los desarrolladores?

«En general, hemos visto que el desarrollo se ha hecho de manera más ágil», dijo Wiggins. «Hace diez años, que le tomaría un año para escribir una aplicación de software. Ahora, se toma un mes, una semana, un día. Pero el despliegue no ha seguido el mismo ritmo. Es una piedra de tropiezo. Usted necesita comprar un servidor, se configura. Se requiere de capital por adelantado. «

Sin embargo, con los modelos basados ??en la nube para aplicaciones web construir y escalar, Wiggins dijo: «Usted puede tener su idea, sentarse y construir en una tarde, a continuación, haga clic en un botón para salir y correr de una manera que escalas. Es similar a los componentes de código abierto: No es necesario comprar una licencia y hacer un montón de trabajo para poner en marcha «

.Heroku

es el primero de varios proveedores que ofrecerán servicios en la nube para aplicaciones de Facebook de la aplicación revelador de Facebook. Con Heroku, los desarrolladores pueden empezar a construir una nueva aplicación de Facebook, con código de ejemplo en varios idiomas diferentes. Heroku ha publicado algunas aplicaciones de muestra o de la plantilla en Github PHP , Ruby , Node.js y Python .

Para una guía paso a paso sobre cómo empezar a utilizar su propia aplicación Heroku potencia Facebook, echa un vistazo a Facebooker Gato Lee las instrucciones en desarrollador blog .

Facebook y Heroku desde hacía algún tiempo había una asociación luz que Wiggins dijo que equivalía a «un paquete y alguna documentación, pero no había integración de software.»

Wiggins dijo que hace unos meses, cuando el equipo de desarrolladores de Facebook estaba trabajando en el bloque mencionado despliegue de tropiezo para los desarrolladores de terceros, Heroku inmediatamente vino a la mente, debido a que la asociación anterior.

«Facebook es el número uno mundial de la compañía de Internet», dijo Wiggins. Colaborar con ellos es una alegría lo que pase. «

lunes, 7 de noviembre de 2011

Guardar y Extraer imágenes en MySQL con PHP

En este artículo vamos a tratar lo que es el almacenar imágenes en una Base de Datos, para este artículo vamos a utilizar MySQL.
Introducción
Quien se podría imaginar el guardar imágenes en una Base de Datos?, al principio a mi ni me pasaba por la cabeza, hasta que ya vas conociedo las herramientas y con el tiempo surgen nuevas ideas y fum!! buala!! seurge la inquietud, so podrán guardar imágenes enuna Base de Datos?,la respuesta es si.
Requerimientos
  • PHP >= 3.0.16
  • MySQL
  • Habilitar la extension en PHP sobre GD
Crear Base de datos y Tabla
Vamos a comenzar creando una Base de Datos, en nuestro caso se llama bd_banners y dentro de esta creamos una tabla (en nuestro caso se llama tbl_Banner) con los campos;
  • Id_banner (Llave, autonumérico)
  • Nombre (Texto)
  • Descripcion (Texto)
  • Imagen (Blob)
Conectarnos a la BD
Ahora simplemente nos conectamos a MySQL y seleccioanmso nuestra Base de Datosbd_banners.

$link = mysql_connect('localhost', 'root', 'password');
if (!$link)
die('Error al conectarse con MySQL: ' . mysql_error().' <br>Número del error: '.mysql_errno());
if (! @mysql_select_db("db_AdMX",$link)){
echo "No se pudo conectar correctamente con la Base de datos";
exit();
}
Almacenar imágen en la BD
Antes de almacenar la imágen en la BD, debemos de procesarla para llegar a convertirla en datos binarios.


$image = imagecreatefromgif('imagen.gif');
ob_start();
imagegif($image);
$jpg = ob_get_contents();
ob_end_clean();

imagecreatefromgif: Crear una nueva imagen a partir de un archivo o URL.
ob_start: Inica el almacenamiento en el búfer de salida.
imagegif: Producir la salida de una imagen al navegador o a un archivo.
ob_get_contents: Devolver el contenido del búfer de salida.
ob_end_clean: Limpia el búfer de salida y termina el almacenamiento en el búfer de salida.


NOTA: En este ejemplo se guarda una imágen tipo GIF, por eso se utilizan las funciones; imagecreateformgif, imagegif. Si se desea almacenar una imágen tipo JPEG, utilizar las funciones; imagecreatefromjpeg, imagejpeg. Asi solamente se cambia el tipo de imágen enlas funciones. Para ver los tipos de imágenes que soporta PHP+GD da click aquí.
Ahora si vamos a almacenarla, para esto convertimos la infromación de la imágen en sql-safe y simplemente hacemos un query para guardar.


$jpg = str_replace('##','##',mysql_escape_string($jpg));
$result = mysql_query("INSERT INTO tbl_Banner SET Imagen='$jpg'");

Extraer la imágen de la BD y mostrarla en el navegador
Ahora vamos a extraer la imágen mediante un simple SELECT y la vamos a mostrar en el navegador.

$result = mysql_query("SELECT Imagen FROM tbl_Banner WHERE Id_imagen=11");
$result_array = mysql_fetch_array($result);
header("Content-Type: image/gif");
echo $result_array[0];

Simplemente con esto guardamos la imágen en una variable y antes de mostrarla le decimos al navegador que el contenido a mostrar es de imágen/gif. Se se va a mostrar imágenes JPEG cambiar image/gif por image/jpeg y asi para los diferentes formatos.


EJEMPLO:


//Crear BD

CREATE TABLE upload (
    id INT NOT NULL AUTO_INCREMENT,
    name VARCHAR(30) NOT NULL,
    type VARCHAR(30) NOT NULL,
    size INT NOT NULL,
    content MEDIUMBLOB NOT NULL,
    PRIMARY KEY(id)
    );

//Creamos subir.php

<html>
<head>
<title>Upload File To MySQL Database</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style type="text/css">
<!--
.box {
    font-family: Arial, Helvetica, sans-serif;
    font-size: 12px;
    border: 1px solid #000000;
}
-->
</style>
</head>


<body>
<?
if(isset($_POST['upload']))
{
        $fileName = $_FILES['userfile']['name'];
        $tmpName  = $_FILES['userfile']['tmp_name'];
        $fileSize = $_FILES['userfile']['size'];
        $fileType = $_FILES['userfile']['type'];
        $fp = fopen($tmpName, 'r');
        $content = fread($fp, $fileSize);
        $content = addslashes($content);
        fclose($fp);
        if(!get_magic_quotes_gpc())
        {
            $fileName = addslashes($fileName);
        }
        include 'config.php';   $connection=mysql_connect("$bdservidor","$bdunombre","$bdpass")
or die("Error conectando a la base de datos");
$db=mysql_select_db("$bdnombre",$connection)
or die ("Error seleccionando la base de datos");        
        $query = "INSERT INTO upload (name, size, type, content ) ".
                 "VALUES ('$fileName', '$fileSize', '$fileType', '$content')";
        mysql_query($query) or die('Error, query failed');                 
                
       echo "<br>File $fileName uploaded<br>";
}        
?>
<form action="" method="post" enctype="multipart/form-data" name="uploadform">
  <table width="350" border="0" cellpadding="1" cellspacing="1" class="box">
    <tr> 
      <td width="246"><input type="hidden"
name="MAX_FILE_SIZE" value="2000000"><input name="userfile"
type="file" class="box" id="userfile">
         </td>
      <td width="80"><input name="upload" type="submit" class="box" id="upload" value="  Upload  "></td>
    </tr>
  </table>
</form>
</body>
</html>

//Creamos bajar.php

<?
if(isset($_GET['id']))
{
    include 'config.php';
    $connection=mysql_connect("$bdservidor","$bdunombre","$bdpass")
or die("Error conectando a la base de datos");
$db=mysql_select_db("$bdnombre",$connection)
or die ("Error seleccionando la base de datos");


    $id      = $_GET['id'];
    $query   = "SELECT name, type, size, content FROM upload WHERE id = '$id'";
    $result  = mysql_query($query) or die('Error, query failed');
    list($name, $type, $size, $content) = mysql_fetch_array($result);


    header("Content-Disposition: attachment; filename=$name");
    header("Content-length: $size");
    header("Content-type: $type");
    echo $content;


    exit;
}


?>
<html>
<head>
<title>Download File From MySQL</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>


<body>
<?
include 'config.php';
$connection=mysql_connect("$bdservidor","$bdunombre","$bdpass")
or die("Error conectando a la base de datos");
$db=mysql_select_db("$bdnombre",$connection)
or die ("Error seleccionando la base de datos");
$query  = "SELECT id, name FROM upload";
$result = mysql_query($query) or die('Error, query failed');
if(mysql_num_rows($result) == 0)
{
    echo "Database is empty <br>";
} 
else
{
    while(list($id, $name) = mysql_fetch_array($result))
    {
?>
    <a href="download.php?id=<?=$id;?>"><?=$name;?></a> <br>
<?        
    }
}
?>
</body>
</html>

//download.php

<?
if(isset($_GET['id']))
{
    include 'config.php';
$connection=mysql_connect("$bdservidor","$bdunombre","$bdpass")
or die("Error conectando a la base de datos");
$db=mysql_select_db("$bdnombre",$connection)
or die ("Error seleccionando la base de datos");
    $id      = $_GET['id'];
    $query   = "SELECT name, type, size, content FROM upload WHERE id = '$id'";
    $result  = mysql_query($query) or die('Error, query failed');
    list($name, $type, $size, $content) = mysql_fetch_array($result);
    header("Content-Disposition: attachment; filename=$name");
    header("Content-length: $size");
    header("Content-type: $type");
    echo $content;
    exit;
}


?>
<html>
<head>
<title>Download File From MySQL</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>


<body>
<?
include 'config.php';
$connection=mysql_connect("$bdservidor","$bdunombre","$bdpass")
or die("Error conectando a la base de datos");
$db=mysql_select_db("$bdnombre",$connection)
or die ("Error seleccionando la base de datos");
$query  = "SELECT id, name FROM upload";
$result = mysql_query($query) or die('Error, query failed');
if(mysql_num_rows($result) == 0)
{
    echo "Database is empty <br>";
} 
else
{
    while(list($id, $name) = mysql_fetch_array($result))
    {
?>
    <a href="download.php?id=<?=$id;?>"><?=$name;?></a> <br>
<?        
    }
}
?>
</body>
</html>

//config.php

<?php
$bdservidor = "localhost";
$bdunombre = "root";
$bdpass = "0336";
$bdnombre = "test";
?>




Habilitar GD en Xampp

Para habilitar GD en Xampp (GD es la librería de tratamiento de imágenes en PHP), lo que tenemos que hacer es modificar el archivo php.ini y localizar la línea que habilita la carga de la librería dll.

Usualmente la encontramos en /xampp/apache/bin/php.ini pero podría estar utilizando otro archivo php.ini de acuerdo a tu instalación.
Para habilitar la librería GD, asegurate que la siguiente línea esté descomentada:

extension=php_gd2.dll


Luego, fíjate en el phpinfo() y busca el bloque de información GD, que desplegará una salida como la siguiente:


Crear archivo html de un archivo php

fopen() asocia un recurso nominado, especificado por filename, a un flujo.

------------------------>01

//crea
$control = fopen("$titulo".".html","w+");
if($control == false){
  die("No se ha podido crear el archivo.");
}

----------------------->02


<?php
$fichero_salida="out.html";
$tabla="<table width=200 border=1>
<tr>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
<tr>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
</table>";
$fp=fopen($fichero_salida,"w+");
fwrite($fp,$tabla);
fclose($fp);
if(!file_exists($fichero_salida)) die("Error en la Generacion del Archivo");
else echo "Archivo " . $fichero_salida . "Generado. <a href=" . $fichero_salida . ">Bajar Click Derecho y Guardar Destino Como...</a>";