Bitcoin

BitMiner - free and simple next generation Bitcoin mining software

martes, junio 26, 2007

Redimencionar una Imagen en PHP

Tomando en cuenta lo anterior aqui hay una funcion que cumple con ese objetivo:

function redimensionar($original,$destino,$anchura)
{
//calculamos la altura proporcional
$datos = getimagesize($original);
$ratio = ($datos[0] / $anchura);
$altura = round($datos[1] / $ratio);
// esta será la nueva imagen reescalada
$thumb = imagecreatetruecolor($anchura,$altura);
$img = imagecreatefromjpeg($original);

// con esta función la reescalamos
imagecopyresampled ($thumb, $img, 0, 0, 0, 0, $anchura, $altura, $datos[0], $datos[1]);
// la guardamos con el nombre y en el lugar que nos interesa.
imagejpeg($thumb,$destino);
}

Guardar una imagen y su miniatura a un campo Blob de mysql

El siguiente codigo no es mio, pero hace mas de dos años programe un modulo así, es muy interesante.

Para crear la miniatura necesitamos la Librería Gráfica GD, en este script estamos usando la versión 2.0.28 de esta librería.

Si esta librería está activada, en el phpinfo() debe salir algo como esto:

Si no la tenemos activada solo tenemos que modificar el archivo php.ini que se encuentra en C:\Windows (puede variar según tu versión de Windows), y agregar la línea extension=php_gd2.dll en la sección "Dynamic Extensions". El archivo php_gd2.dll debe estar en la carpeta "extensions" dentro del directorio donde instalaste el php, por ejemplo "C:\php\extensions". Si no tienes el archivo php_gd2.dll, te lo puedes descargar aquí.

Desarrollo del Script

El formulario de upload y el script php está en una sola página, la nombré como blob.php, empezemos entonces:



php:
<?php
// Verificamos que el formulario no ha sido enviado aun
$postback = (isset($_POST["enviar"])) ? true : false;

if($postback){
// Nivel de errores
error_reporting(E_ALL);
// Constantes
# Altura de el thumbnail en píxeles
define("ALTURA", 100);
# Nombre del archivo temporal del thumbnail
define("NAMETHUMB", "/tmp/thumbtemp"); //Esto en servidores Linux, en Windows podría ser:
// define("NAMETHUMB", "c:/windows/temp/thumbtemp"); y te olvidas de los problemas de permisos
# Servidor de base de datos
define("DBHOST", "localhost");
# nombre de la base de datos
define("DBNAME", "test");
# Usuario de base de datos
define("DBUSER", "root");
# Password de base de datos
define("DBPASSWORD", "");
// Mime types permitidos
$mimetypes = array("image/jpeg", "image/pjpeg", "image/gif", "image/png");
// Variables de la foto
$name = $_FILES["foto"]["name"];
$type = $_FILES["foto"]["type"];
$tmp_name = $_FILES["foto"]["tmp_name"];
$size = $_FILES["foto"]["size"];
// Verificamos si el archivo es una imagen válida
if(!in_array($type, $mimetypes)) die("El archivo que subiste no es una imagen válida");
// Creando el thumbnail
switch($type) {
case $mimetypes[0]:
case $mimetypes[1]:
$img = imagecreatefromjpeg($tmp_name);
break;
case $mimetypes[2]:
$img = imagecreatefromgif($tmp_name);
break;
case $mimetypes[3]:
$img = imagecreatefrompng($tmp_name);
break;
$datos = getimagesize($tmp_name);
$ratio = ($datos[1]/ALTURA);
$ancho = round($datos[0]/$ratio);
$thumb = imagecreatetruecolor($ancho, ALTURA);
imagecopyresized($thumb, $img, 0, 0, 0, 0, $ancho, ALTURA, $datos[0], $datos[1]);
switch($type) {
case $mimetypes[0]:
case $mimetypes[1]:
imagejpeg($thumb, NAMETHUMB);
break;
case $mimetypes[2]:
imagegif($thumb, NAMETHUMB);
break;
case $mimetypes[3]:
imagepng($thumb, NAMETHUMB);
break;
}

// Extrae los contenidos de las fotos
# contenido de la foto original
$fp = fopen($tmp_name, "rb");
$tfoto = fread($fp, filesize($tmp_name));
$tfoto = addslashes($tfoto);
fclose($fp);
# contenido del thumbnail
$fp = fopen(NAMETHUMB, "rb");
$tthumb = fread($fp, filesize(NAMETHUMB));
$tthumb = addslashes($tthumb);
fclose($fp);
// Borra archivos temporales si es que existen
@unlink($tmp_name);
@unlink(NAMETHUMB);
// Guardamos todo en la base de datos
#nombre de la foto
$nombre = $_POST["nombre"];
$link = mysql_connect(DBHOST, DBUSER, DBPASSWORD) or die(mysql_error($link));;
mysql_select_db(DBNAME, $link) or die(mysql_error($link));
$sql = "INSERT INTO tabla(nombre, foto, thumb, mime) VALUES ('$nombre', '$tfoto', '$tthumb', '$type')";
mysql_query($sql, $link) or die(mysql_error($link));
echo "Fotos guardadas";
exit();
}

?>


html:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Imagen a Blob</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<body>
<form name="frmimage" id="frmimage" method="post"
enctype="multipart/form-data" action="<?php echo $_SERVER['PHP_SELF'];?>">
Nombre: <input type="text" id="nombre" name="nombre" /><br />
Imagen: <input type="file" id="foto" name="foto" /><br />
<input type="submit" name="enviar" id="enviar" value="Guardar" />
</form>
</body>
</html>

Fuente

lunes, junio 18, 2007

Identificar en PHP si se Usa Internet Explorer

Como me molesta el tener que validar cosas especiales para Internet Explorer en mis webs... ya que es el que no cumple con los estandares, tan bonito que es el FireFox, pero bueno.. aqui una funcion para saber si se usa Internet Explorer.


if (strstr($_SERVER["HTTP_USER_AGENT"], "MSIE"))
{
echo "Usas Internet Explorer";
}
?>

viernes, junio 08, 2007

Manual de Stored Procedures en MySQL

http://www.web-media.com.au/images/mysql-logo.gif

Desde esta página pueden encontrar un manual PDF en inglés muy bueno, donde aprenderemos el manejo de Stored Procedures en MySQL 5.x, ya que no es tan facil conseguir estos tipos de manuales. Creanme, si tienen más acepto aportaciónes.

Libros AJAX, JavaScript, CSS, XHTML en Linea

No se puede mostrar la imagen “http://www.librosweb.es/website/css/images/ajax_ppn.jpg” porque contiene errores.No se puede mostrar la imagen “http://www.librosweb.es/website/css/images/intro_js_libro.jpg” porque contiene errores.
No se puede mostrar la imagen “http://www.librosweb.es/website/css/images/miniportada_css.jpg” porque contiene errores.No se puede mostrar la imagen “http://www.librosweb.es/website/css/images/miniportada_xhtml.jpg” porque contiene errores.

La web llamada librosweb.es, nos da la oportunidad de aprender 4 lenguajes con los cuales podemos DOMINAR EL MUNDO... bueno, eso diría cerebro a pinky... yo solo les puedo decir que son la base de toda Web 2.0... y si aprendemos a manejarlos Dominaremos el mercado web... por lo menos en nuestra zona :-D.

A APRENDER TECNOSIS, no nos quedemos atras...

PD. A ver a que hora aportan mas temas... :@

viernes, junio 01, 2007

Cargar Windows XP sobre Linux Ubuntu

Ya tienes ubuntu instalado y como te gusta?

Ya tienes XGL funcionando y tus amigos Windowseros se mueren de envidia de como se hacen gelatina tus menus, ventanas y todo?

Pero aun tienes una partición de Windows porque te dejan tarea en Autocad, te mandan trabajos con WordArt y no se ve muy lindo con OpenOffice? Te da miedo que necesites Windows un dia y no tenerlo instalado? (Asi como los condones, mejor tenerlos y no usarlos que necesitarlos y no tenerlos)

Pues ya podrás deshacerte de tu partición de Windows, Si asi es, gracias a este tutorial para instalar VMWare Server, con el cual, podremos instalar Windows XP en nuestro ubuntu, Antes utilizaba VMWare Player pero esto es mucho mejor:

cubowindowslinux

windowsonlinux

Esto es solamente para poner a trabajar una Máquina Virtual en un escritorio local, por lo que omito la parte de administración remota. El Fin de esto es simplemente instalar Windows XP en nuestro ubuntu. Si deseas ejecutar tareas un poco mas avanzadas, sería buena idea seguir este otro en tutorial howtoforge hasta la segunda parte, de administración remota.

Ok, comencemos entonces. Primero instalaremos algunos paquetes necesarios, dependiendo de los paquetes que tengamos y los que no, esto puede tardar cierto tiempo. para esto abrimos una consola y ejecutamos:

sudo apt-get install linux-headers-`uname -r` build-essential xinetd

(Este paso es indispensable para continuar, por lo menos en mi caso, si ya tienes estas herramientas úedes omitir este paso, aunque no se incluía oficialmente en el how-to; y es básicamente instalar las fuentes del kernel que estoy usando, mas herramientas de compilación)

sudo apt-get install linux-kernel-headers libx11-6 libx11-dev libxtst6 xlibs-dev xinetd wget

sudo apt-get install gcc binutils-doc cpp-doc gcc-4.0-locales make manpages-dev autoconf automake1.9 libtool flex bison gdb gcc-doc gcc-4.0-doc libc6-dev-amd64 lib64gcc1

En cuanto se instalen podremos continuar con el siguiente paso, que es crear una carpeta para nuestras máquinas Virtuales, si tu estas usando VMWare Player no debes tocar tu partición Virtual Ok:

sudo mkdir /var/vm

Ahora debemos obtener VMWare Server, que es gratuito (almenos por ahora). Para eso vamos a la página: http://www.vmware.com/download/server/ donde debemos registrarnos (gratuitamente) para obtener un serial (que será necesario durante la instalación).

a continuación se nos presenta un vínculo para descargar VMWare, sin embargo al ser un archivo de 100MB, es buena idea usar wget, o usar DDM. la forma sencilla es dar click derecho en el vínculo y seleccionar “copiar dirección del enlace” para despues pegarlo en la consola, precedido de wget; en mi caso y para la versión que estaba disponible al momento de la descarga, el comando era:

wget http://download3.vmware.com/software/vmserver/VMware-server-1.0.0-28343.tar.gz

Es importante copiar nuevamente la dirección en lugar de usar el comando anterior exactamente como está, porque asi nos aseguramos de tener la versión mas reciente.

Dependiendo de tus amigos de VTR esto puede durar varios minutos o unas horas, asi que hay que tomarselo con calma es buena idea prepararse un Café o tomarse unas Chelas para el calor.

Una vez descargado, debemos descomprimirlo, en mi caso el comando usado fué:

tar xvfz VMware-server-1.0.0-28343.tar.gz

De nueva cuenta, si la versión que descargaste no concuerda, modificala para que se ajuste a tu caso. la forma sencilla de hacerlo es escribir hasta server y despues presionar la tecla tab para autocompletar.

Despues de que se hayan descomprimido los chorrocientosmil archivos contenidos en el tar, debemos cambiarnos al interior de la carpeta recien desempaquetada:

cd vmware-server-distrib

y ahora, para instalar el programa, ejecutamos el script de instalación… pero como super usuario (yo lo hice con sudo sin mayor problema; aunque algunos dicen debe ser como root)

sudo ./vmware-install.pl

esto inicia el script de instalación, que nos hará una serie de preguntas a las que debemos responder. Aqui copiaré lo que indica el how-to original, ya que es muy acertado:

Creating a new installer database using the tar3 format.

Installing the content of the package.

In which directory do you want to install the binary files?
[/usr/bin] <– /usr/bin

What is the directory that contains the init directories (rc0.d/ to rc6.d/)?
[/etc] <– /etc

What is the directory that contains the init scripts?
[/etc/init.d] <– /etc/init.d

In which directory do you want to install the daemon files?
[/usr/sbin] <– /usr/sbin

In which directory do you want to install the library files?
[/usr/lib/vmware] <– /usr/lib/vmware
The path “/usr/lib/vmware” does not exist currently. This program is going to
create it, including needed parent directories. Is this what you want? [yes] <– yes

In which directory do you want to install the manual files?
[/usr/share/man] <– /usr/share/man

In which directory do you want to install the documentation files?
[/usr/share/doc/vmware] <– /usr/share/doc/vmware
The path “/usr/share/doc/vmware” does not exist currently. This program is going
to create it, including needed parent directories. Is this what you want?
[yes] <– yes

The installation of VMware Server 1.0.0 build-28343 for Linux completed
successfully. You can decide to remove this software from your system at any
time by invoking the following command: “/usr/bin/vmware-uninstall.pl”.

Before running VMware Server for the first time, you need to configure it by
invoking the following command: “/usr/bin/vmware-config.pl”. Do you want this
program to invoke the command for you now? [yes] <– yes

Making sure services for VMware Server are stopped.

Stopping VMware services:
Virtual machine monitor done

You must read and accept the End User License Agreement to continue.
Press enter to display it.


….. snip [LICENCE TEXT] ……

Do you accept? (yes/no) <– yes
Thank you.

Configuring fallback GTK+ 2.4 libraries.

In which directory do you want to install the mime type icons?
[/usr/share/icons] <– /usr/share/icons

The path “/usr/share/icons” does not exist currently. This program is going to
create it, including needed parent directories. Is this what you want? [yes] <– yes

What directory contains your desktop menu entry files? These files have a
.desktop file extension. [/usr/share/applications] <– /usr/share/applications

The path “/usr/share/applications” does not exist currently. This program is
going to create it, including needed parent directories. Is this what you want?
[yes] <– yes

In which directory do you want to install the application’s icon?
[/usr/share/pixmaps] <– /usr/share/pixmaps

(En la siguiente sección, la instalación no encontró un modulo apropiado para mi, asi que lo compiló. en realidad solo fue necesario:

1) indicar la ruta al código fuente del kernel, en mi caso: /usr/src/linux-headers-2.6.17-10-Generic/include ; hay que notar que esto puede variar considerablemente con las diversas actualizaciones, asi que será necesario verificarlo antes de indicar cualquier cosa.

2) establecer el compilador a usar (acepté los valores por omisión y funcionaron sin mayor problema).

Despues de eso, no fue necesario proporcionar mas información a este respecto, aunque fue necesario compilar algunas otras cosas en el proceso, pero esto ya se realizó de manera automática)

Trying to find a suitable vmmon module for your running kernel.

The module bld-2.6.17-10-generic loads perfectly in the running
kernel.

Do you want networking for your virtual machines? (yes/no/help) [yes] <– yes

Configuring a bridged network for vmnet0.

The following bridged networks have been defined:

. vmnet0 is bridged to eth0

All your ethernet interfaces are already bridged.

Do you want to be able to use NAT networking in your virtual machines? (yes/no)
[yes] <– yes

Configuring a NAT network for vmnet8.

Do you want this program to probe for an unused private subnet? (yes/no/help) <– yes
Probing for an unused private subnet (this can take some time)…

The subnet 192.168.246.0/255.255.255.0 appears to be unused.

The following NAT networks have been defined:

. vmnet8 is a NAT network on private subnet 192.168.246.0.

Do you wish to configure another NAT network? (yes/no) [no] <– no

Do you want to be able to use host-only networking in your virtual machines?
[yes] <– yes

Configuring a host-only network for vmnet1.

Do you want this program to probe for an unused private subnet? (yes/no/help)
[yes] <– yes

Probing for an unused private subnet (this can take some time)…

The subnet 172.16.37.0/255.255.255.0 appears to be unused.

The following host-only networks have been defined:

. vmnet1 is a host-only network on private subnet 172.16.37.0.

Do you wish to configure another host-only network? (yes/no) [no] <– no

Trying to find a suitable vmnet module for your running kernel.

(aqui es donde fue necesario compilar el otro módulo, pero por omisión tomólos valores proporcionados en el comentario anterior. En caso de que no fuera asi, solo es necesario repetir las respuestas)

The module bld-2.6.17-10-Generic loads perfectly in the running
kernel.

Please specify a port for remote console connections to use [902] <– 902

Stopping internet superserver: xinetd.
Starting internet superserver: xinetd.
Configuring the VMware VmPerl Scripting API.

Building the VMware VmPerl Scripting API.

Using compiler “/usr/bin/gcc”. Use environment variable CC to override.

Installing the VMware VmPerl Scripting API.

The installation of the VMware VmPerl Scripting API succeeded.

Generating SSL Server Certificate

In which directory do you want to keep your virtual machine files?
[/var/lib/vmware/Virtual Machines] <– /var/vm

Please enter your 20-character serial number.

Type XXXXX-XXXXX-XXXXX-XXXXX or ‘Enter’ to cancel: <– Tu Serial de VMware Server

Starting VMware services:
Virtual machine monitor done
Virtual ethernet done
Bridged networking on /dev/vmnet0 done
Host-only networking on /dev/vmnet1 (background) done
Host-only networking on /dev/vmnet8 (background) done
NAT service on /dev/vmnet8 done

The configuration of VMware Server 1.0.0 build-28343 for Linux for this running
kernel completed successfully.

Ok ya tienes VMWare instalado en tu ubuntu. Ahora, para correrlo, está disponible en Aplicaciones / herramientas del sistema / VMWare server console.

Ahora falta instalar Windows; pero todos ustedes han instalado Win alguna vez en su vida no me vengan con cuentos a mi ok.

En todo caso el procediendo es este

Install enter

Siguiente, siguiente, siguiente, etc, etc, etc… y asi .

...Finalizar

Extraido tal cual de | antofalinux.cl