Charlas sobre Aplicaciones Web con Cakephp

Charlas sobre Aplicaciones Web con Cakephp

Desde el próximo sabado 10 de mayo empezaré a dar unas charlas cuyo objetivo serán mostrar a los programadores e ingenieros de sistemas a desarrollar aplicaciones web en CakePHP.

Mi principal objetivo serán los principiantes, así que por esa razón la primera charla de este sabado desde las 9:30AM hasta la 1:00PM será HTML5 + CSS.

¿Quieres asistir? tengo 5 cupos disponibles, no tiene precio, es gratis.

Para esta primera charla tengo unos requisitos que debes cumplir:

  • Ser ingeniero de sistemas o programador.
  • No tener conocimientos de HTML ni CSS, o en su defecto que sea muy poco lo que sabes.
  • Tener ganas de venir y estar 3 1/2 horas hablando y practicando en el tema.
  • Traer tu propio computador

Todos los requisitos anteriores son obligatorios 🙂

Para el sábado siguiente haremos JavaScript + jQuery, así que espera mis indicaciones 🙂

Puedes contactarme por los comentarios de este artículo o por Twitter, Facebook o LinkedIn

Los pasabocas serán invitados por Salgarus 🙂

Esto será en la ciudad de Barranquilla, así que por favor abstenerse personas de otras partes del mundo.

Variables compartidas en PHP – APC

Los que alguna vez trabajamos con ASP y luego nos pasamos a PHP solo extrañamos una cosa, las variables de Aplicación… Algunos se preguntarán, ¿Qué son las famosas variables de aplicación?

Es muy fácil, la forma mas sencilla de explicarlos es que se imaginen un contador de visitas a una página web, en PHP cómo lo harías? Bueno, tradicionalmente son dos maneras:

  1. Haces una conexión a la base de datos y ya sea en un parametro o en una tabla donde guardas los registros de las visitas, actualizas o insertas lo que tengas que insertar y luego haces una consulta para saber la cantidad de visitas
  2. En un archivo de texto vas guardando la cantidad de visitas + 1 según vayan llegando los visitantes, luego lees el archivo para mostrarlo en la web

Pues en ASP esto es mucho mas fácil, porque puedes tener una variable de Aplicación que es accedida desde cualquier parte del código, lo mejor es que esa variable podrá ser modificada o leída por cualquier session, cualquier cliente y siempre será la misma variable para todos.

Pues bien, en PHP eso también es posible y lo acabo de descubrir… quizás ya tu lo sabías pero yo no (soy de la vieja usanza)… se llama “Caché Alternativo de PHP” que te permite tener variables en memoria para que sea accedida por cualquier cliente.

Aquí tienes toda la documentación http://mx.php.net/manual/es/book.apc.php , pero básicamente son 3 métodos los que mas usas:

  • apc_add — Poner una nueva variable en caché en el almacén de datos
  • apc_store — Guardar una variable en caché en el almacén de datos
  • apc_fetch — Traer una variable almacenada desde la caché

Algunos dirán, “eyyyy!! pero existe memcache”, y si, tienen razón, pero son dos cosas diferentes, esto es algo nativo de PHP y ademas no necesitas tener corriendo ningun servicio, en cambio el memcache por si solo gasta memoria, por otro lado, los que usan hosting baratos no siempre cuentan con memcahe, además no siempre vale la pena tener un memcache gastando memoria para almacenar una variable. Todo es la conveniencia, de todas formas es una alternativa nativa.

Espero sea útil, a mi me sirvió 🙂

Ingeniero de Sistema, ¿Ingeniero?

ufff, hace tiempo quería escribir este artículo sin denigrar mi profesión y sin faltar el respeto a mis colegas Ingenieros, lo he resuelto, no voy a hablar de los Ingenieros de Sistemas sino de algunos otros Ingenieros. Lo que quiero con esto es generar conciencia de ¿Cómo debe ser un Ingeniero de Sistemas?

¿Qué ocurre si un Ingeniero Civil hace una mala construcción de un edificio?

Correcto, la respuesta es esa! el edificio puede colapsar, lo que significa que se perderían muchas vidas y mucho dinero, lo que conllevaría al fracaso total de la carrera profesional del Ingeniero encargado.

¿Qué ocurre si un Ingeniero Farmacéutico fabrica un mal medicamento?

Lo evidente, materia a mucha personas… lo que sucede después es la salida del mercado del fármaco, el cierre inminente de la productora de fármacos y el descenso de la carrera del Ingeniero.

¿Qué ocurre si un Ingeniero Electrónico fabrica un mal Electrocardiógrafo?

Se generarían malos electrocardiogramas, lo que generaría un sin número de muertes producidas por falta de tratamiento debido a los malos resultados obtenidos en los exámenes.

Así me puedo pasar mencionando cualquier cantidad de ejemplo de ingenieros, pero mi punto es: ¿Qué ocurre si a un software le ocurre algo? Simple, se saca un parche, una versión con el error corregido y pasa absolutamente nada. Esto no es de las empresas pequeñas, es algo general, X cantidad de versiones de messenger para tapar Y o Z bug, W parches de Microsoft Office para corregir M o N errores.

Hay que poner en practica la Ingeniería y dejar de ser unos simples programadores.

Evitar tener varias instancias de memcache

Tuvimos un problema al tratar de centralizar una aplicación web que corría en varios dominios, lo que sucedía era que las KEYs del memcache eran exactamente iguales en todos los dominios pero los datos que debían contener esas KEYs eran diferente, obviamente porque eran sitios diferentes solo que con el mismo código fuente.

La solución que se nos ocurrió para evitar tener varias instancias de memcache ejecutadas en el servidor gastando memoria fue la de agregar un Prefijo parametrizado según el dominio en el que se crea la KEY.

Este es un ejemplo del código actual que tenemos

define("PREFIJO","app1"); //este es el parametro que se configura según cada dominio
$memcache= new Memcache();
$memcache->connect("localhost",111112);
$key=PREFIJO."nombre_llave";
$memcache->set($key,$datos,false,60*60);

Luego para leer sería:

$key=PREFIJO."nombre_llave";
$memcache->get($key);

Espero que les sirva como nos sirvió a nosotros 🙂

Convertir un PDF en imágenes JPG con PHP

Hace días alguien del equipo de desarrollo de evoluZiona Sas necesitaba obtener la primera página de un PDF pero en formato JPG con PHP, obviamente de forma dinámica porque era para resolver un problema que nos asechaba desde hace ya algún tiempo.

La solución para el problema la dimos con imagemagick, específicamente con el comando convert, lo que hicimos fue instalar esta herramienta en el servidor y luego usarla con PHP mediante la función exec, aquí el código:

$archivo="archivo_pdf_de_donde_sacaremos_el_jpg.pdf";
$img_path="/tmp"; //ruta temporal para guardar el jpg
$file_name=time();
$dir="/usr/bin/convert";
$comando="$dir {$archivo}[0] $img_path/$file_name.jpg";
exec($comando,$out);

$image=imagecreatefromjpeg("$img_path/$file_name.jpg");
header('Content-Type: image/jpeg');
imagejpeg($image);
unlink("$img_path/$file_name.jpg");

El comando convert recibe los siguiente parametros:

  • ruta del archivo PDF. Entre corchetes se coloca el rango de paginas a convertir en JPG, puede ser una página en especifico o un rango determinado, [0] , [0-100]. Tengan en cuenta que en linux se empieza a numerar desde cero, lo que quiere decir que la primera página vendría siendo la página 0
  • Ruta destino donde se guardará el JPG