Archive

Author Archive

Leer imagen desde un campo OLE Object de Access con PHP

December 16, 2010 4 comments

Parece una tarea sencilla. Es tan fácil como hacer un query y tomar el dato, pero las cosas siempre se complican cuando se trabaja con formatos cerrados.

La pruebas que he realizado han sido con un archivo Access 2007 con una tabla y un campo del tipo “OLE Object”. Luego agregamos una imagen de prueba de la siguiente manera:

Click en Insert Object

Seleccionamos un archivo y hacemos click en Ok

Con esto ya tenemos nuestra BD access lista para ser consultada.

Ahora, para conectarnos a la  BD Access con PHP usamos AdoDb usand DSN-less de la siguiente manera:

require ‘adodb.inc.php’;

$db =&ADONewConnection(“access”);

$path = ‘/tmp/mydb.mdb’;

$dsn=”Driver={Microsoft Access Driver {*.mdb}};Dbq=$path”;

$db->connect($dsn);

if ($db)  {

$sql = “SELECT image from table”;

$result = $db->Execute($sql);

while (!$rs->EOF) {

$image_data = $rs->fields[0];

}

}

El valor de $image_data contiene el OLE Package que a su vez contiene la imagen agregada, pero el problema aquí es de leer este formato OLE package. Buscando en google encontré algunas  fuentes que dicen poder hacerlo, pero usando aspx, aunque no lo he probado, pues no quiero comprar una licencia de Visual Studio de $800, al parecer hay que buscar dentro del OLE Package unos bytes que definen un archivo de imagen en este caso buscaría los siguientes strings dependiendo el formato del archivo…

 

const string BITMAP_ID_BLOCK = “BM”;
const string JPG_ID_BLOCK = “\u00FF\u00D8\u00FF”;
const string PNG_ID_BLOCK = “\u0089PNG\r\n\u001a\n”;

const string GIF_ID_BLOCK = “GIF8”;
const string TIFF_ID_BLOCK = “II*\u0000”;

 

Pero para leer este stream según esta fuente hay que convertir esta data en utf7 y luego buscar el id de JPG. Como todo esto parece raro lo que hice fue ver el código hex de algunos archivos jpeg usando un programa llamado ghex  (sudo apt-get install ghex). Al abrir diferentes imágenes veremos que se repite estos famosos bytes FFD8FFE0

 

Ahora que tenemos la “llave” solamente tenemos que convertir $image_data a hex usando la función pack y luego hacer lo inverso con unpack:

 

$result     = unpack(‘H*’,$image_data);

$image_to_hex = $result[1];

$jpg_id = ‘ffd8ffe0’;

$pos = strrpos($image_to_hex, $jpg_id);

if ($pos === false) {

echo ‘No es posible generar archivo’;}

else {

$image_to_hex = substr($image_to_hex, $pos,strlen($image_to_hex));

header(‘Content-Type: image/jpeg’);

echo $result_image = (pack(‘H*’,$image_to_hex));

}

Podemos guardar el resultado de $result_image en un archivo usando file_put_contents y eso es todo!

Advertisements

Application Packaging Standard (APS) explicado

July 28, 2010 1 comment

La Application Packaging Standard (APS) es una organización sin fines de lucro, el cual propone un estándar que provee una serie de especificaciones para el manejo de Aplicaciones web (Drupal, Joomla, phpBB, etc) en un webhosting.

Estas especificaciones son realizadas tanto en las Aplicaciones web como en los Proveedores de hosting. El resultado de estas especificaciones es el Software as a Service (SaaS) un modelo de negocio diferente al modelo capitalista.

¿
Qué es el SaaS?

El SaaS es un modelo de distribución de software (Software-Distribution-Model) donde las Aplicaciones están disponibles como un servicio de un Webhosting y accedidos por usuarios finales vía un navegador. Algo similar a una herramienta utilizada por CPanel llamado Fantastico.

Este modelo difiere del modelo tradicional (donde el usuario final compra un sofware y lo instala por su cuenta) pues ofrece un catálogo de software disponible a instalar para el usuario final. El usuario ahora debe pensar en su negocio y no en la herramienta que utilizará.

Este estándar es bastante atractivo para desarrolladores de Aplicaciones Open Source pues:

  1. Al tener el Software certificado por APS podemos agregarlo a su catálogo.
  2. Al estar dentro de este catálogo. Los Proveedores de hosting pueden ofrecer nuestro Software a sus clientes tan solo agregando nuestro paquete a la lista que ellos ofrecen.
  3. El Software se vuelve más popular, puede llegar a más gente!
  4. Existe también un Plugin para Eclipse para facilitar la integración de nuestro Software con los estándares de APS.

A su vez también beneficia a los Proveedores de hosting:

  1. Al implementar las especificaciones se puede obtener no 1 si no todos los paquetes que han sido certificados por APS.
  2. El Proveedor se diferencia de la competencia indicando que también está certificado por APS y ofrece todo el catálogo a los usuarios (si así lo desea).

Lo usuarios finales por su parte:

  1. Se benefician de una instalación rápida y sin complicaciones.
  2. Tienen a su disposición todo un catálogo de software a usar rápidamente.
  3. Tendrán todas sus aplicaciones en un solo Data Center.

Existen ya paquetes certificados como: Drupal, Magento, Joomla, phpBB, WordPress, phplist, etc.

Para más información visiten: http://www.apsstandard.org

Donde está el foro Oficial de Chamilo en español? No está aquí!

April 6, 2010 88 comments

Esta vez no tocaré un tema técnico si no mas bien informativo: existe un foro oficial de Chamilo donde podemos encontrar una sección para la comunidad de habla española. Aqui usuarios, profesores, desarrolladores, testers pueden compartir información, mejoras, reporte de bugs, soluciones, ayudas y todo lo relacionado a Chamilo en español.

El foro es revisado por Yannick, yo mismo y muchos otros, y en la medida de lo posible con una respuesta en la misma semana a cualquier tipo de pregunta.

Invito pues a la comunidad Latina a visitar el foro!

Editores en línea: Backgrounds, Ajax loaders, Lorem Ipsum …

Existen muchos sitios que nos proveen una ayuda para ahorrarnos tiempo cuando necesitamos un fondo, una imagen o simplemente un lorem ipsum!! Aqui una breve reseña de lo que encontré:

Pixelknete
http://www.pixelknete.de

Puedes hacer muchas combinaciones y nunca se verán igual.

www.pixelknete.de

Stripe Mania
http://www.stripemania.com

Útil generador de lineas verticales, horizontales con bonitos patrones.

stripemania.com


Pattern Cooler

http://www.patterncooler.com

Puedes hacer miles de combinaciones y nunca se verán igual (2).

www.patterncooler.com


Ajax load

http://www.ajaxload.info

Generador de loaders tipo Ajax, se puede seleccionar el tipo de color de fondo o transparente.

Ajaxload.info

Lorem Ipsum
http://www.lipsum.com

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent venenatis suscipit euismod.

loremipsum

Regexpal – Editor de expresiones regulares en línea

Acabo de encontrar una interesante herramienta para poder editar expresiones regulares en línea se llama RegexPal.

regex
Podemos ver en línea el resultado de nuestra expresión regular, asi como una información sobre los caracteres especiales que podemos utilizar.

Categories: Spanish, técnico Tags: , ,

Configurar Evolution para enviar emails usando Gmail

March 27, 2009 2 comments

Tenemos nuestra cuenta de correo pero no tenemos (o no queremos) utilizar nuestro servidor SMTP para enviar correos. Una solución es la de utilizar el SMTP de Google.

Entonces dentro de Evolution ya configurado con una cuenta vamos al menu:

Editar > Preferencias

Escogemos nuestra cuenta por defecto luego click en “Editar”.

Luego vamos a la pestaña “Envío de correo” y editamos como vemos en la imagen.

gmail

Click en Aceptar.

Ahora vamos a configurar nuestra cuenta Gmail.

Una vez dentro de Gmail accedemos a “Configuración > Cuentas”  y asociamos nuestra cuenta por ejemplo julio.montoya@dokeos.com a nuestro correo de Gmail.

Hacemos clic en “Añadir otra dirección de correo de tu propiedad”. Ingresamos nuestros datos confirmamos el email y listo.

Para probar que esto funcione enviamos un email desde Evolution. Hacemos clic en “Enviar/Recibir” y el programa nos pedirá de ingresar el password de nuestra cuenta Gmail.

Veremos ahora que los emails que enviamos desde Evolution estarán dentro de la label  “Enviados” de Gmail.

Instalar Apache2 + VirtualHost + PHP + MySQL + Eclipse

March 27, 2009 1 comment

Este es un post bastante útil para nosotros pues cada vez que nos encontramos con una Ubuntu recien instalada no tenemos a la mano todos los paquetes para instalar.

# Instalando el servidor Apache version 2
sudo apt-get install apache2

# PHP5
sudo apt-get install php5

# Módulo de apache para PHP5
sudo apt-get install libapache2-mod-php5

# Servidor MySQL
sudo apt-get install mysql-server-5.0

# Módulo de apache para mysql
sudo apt-get install libapache2-mod-auth-mysql php5-mysql

sudo apt-get install phpmyadmin  # opcional

sudo apt-get install mysql-query-browser  # opcional ( MYSQL query browser)

# Creamos un virtualhost. Primero copiamos el virtualhost por default de Apache y creamos uno. Modificamos los valores ServerAdmin/DocumentRoot y el tag Directory y eliminamos la primera línea ” NameVirtualHost *”

sudo cp /etc/apache2/sites-available/default  /etc/apache2/sites-available/dokeos

# Habilitamos el virtualhost
sudo a2ensite dokeos  #apache enable site

#Agregando el virtualhost al archivo /etc/hosts  ejemplo: localhost my.dokeos.net
sudo vim /etc/hosts

# Finalmente un Apache2 reload!!
sudo /etc/init.d/apache2 reload

#Luego instalar Eclipse según este post y a programar! :)

Categories: desarrollo, Spanish, técnico
%d bloggers like this: