El nuevo operador en PHP 5.3: GOTO

¡El mundo está por acabarse! Cuando me enteré que “el viejo amigo”, el super poderoso (y siempre mal utilizado) comando GOTO sería incluído en la nueva versión PHP 5.3, me dieron ganas de llorar. Cualquier programador de la “vieja escuela”, conoce perfectamente la funcionalidad de tan horrendo comando, popularizado por BASIC, COBOL y similares, así como los resultados catastróficos que irremediablemente conlleva su discriminado uso.

Pues ahora PHP 5.3 (aún es Release Candidate) le da la bienvenida al famoso GOTO, en la forma de un nuevo operador: goto. Su uso sería como sigue:

goto a;
echo 'Foo';
 
a:
echo 'Bar';

Lo más chistoso, es que en el manual oficial de PHP, han puesto la siguente imagen.

php-goto

Y ustedes, mis estimados desarrolladores, ¿usarán el operador goto? Yo no.

Share

Usando la función extract() en PHP

Muchas veces, estos pequeños detalles son los que hacen la diferencia. Con frecuencia veo en libros y tutoriales online, códigos en PHP como el que sigue a continuación:

$conexion = mysql_connect(HOST, USER, PASS) or trigger_error(mysql_error(),E_USER_ERROR);
mysql_select_db(BASE, $conexion);
$query = "SELECT * FROM clientes";
$registros = mysql_query($query) or die(mysql_error());
 
while($cliente = mysql_fetch_array($registros)) {
   $cliente_clave = $cliente['clave'];
   $cliente_nombre = $cliente['nombre'];
   $cliente_direccion = $cliente['direccion'];
   $cliente_telefono = $cliente['telefono'];
   $cliente_email = $cliente['email'];
 
   /* Acciones sobre las variables creadas */
}
 
mysql_free_result($registros);

Lo engorroso del código anterior es, sin duda, la asignación de variables dentro del ciclo. ¿Existe alguna forma de simplificar dicha asignación? ¡Por supuesto! Usando la función extract(), disponible desde PHP4. El ciclo anterior, se simplicaría de esta manera:

while($cliente = mysql_fetch_array($registros)) {
   extract($cliente);
 
   /* Acciones sobre las variables creadas */
}

Simple, ¿no es así? Lo que hace la función extract() es tomar como parámetro un arreglo asociativo, como es el obtenido por la función mysql_fecth_array(), y tomar cada par (“nombre-indice”, “valor”) para crear una variable, con el nombre y valor correspondientes; en el ejemplo, son creadas las variables $clave, $nombre, $direccion, $telefono y $email con los valores obtenidos del registro actual de la base de datos.

Pero, el resultado no es exactamente igual a nuestro código original, pues se pretende usar un prefijo para cada variable creada. ¡No hay problema! la función extract() tiene parámetros opcionales muy útiles. Veamos ahora:

while($cliente = mysql_fetch_array($registros)) {
   extract($cliente,EXTR_PREFIX_ALL,'cliente_');
 
   /* Acciones sobre las variables creadas */
}

Lo anterior, agrega el prefijo “cliente_” a cada variable creada, quedando al final las variables $cliente_clave, $cliente_nombre, $cliente_direccion, $cliente_telefono y $cliente_email.

Sin duda, si utilizamos adecuadamente la función extract(), nos ayudará a simplificar en gran manera nuestro código PHP. No olviden checar la documentación oficial para conocer los demás parámetros opcionales, así como otros ejemplos de esta poderosa función.

Share

Minify combina y minimiza tus .js y .css

Desde que descubrí Minify lo utilizo en todos mis proyectos. Su funcionalidad es simple: combinar, minimizar y cachear los archivos .js y .css que utilicemos en un website, con la finalidad de agilizar la carga de nuestras páginas. Está basado en PHP5, usando las cabeceras y codificación HTTP para dar sus resultados.

Pasos para configurar y usar Minify:

  1. Descargar la última versión disponible de Minify.
  2. Descomprimir el archivo descargado y copiar la carpeta “min” dentro de DOCUMENT_ROOT del website donde queremos aplicar Minify. Si no conoces la ubicación mencionada, utiliza: <?php echo($_SERVER[DOCUMENT_ROOT]); ?>
  3. Entra en el browser a http://example.com/min/ o http://localhost/min/, dependiendo si tu instalación es online o local.
  4. Usa el formulario para agregar todos tus .js o tus .css que utilices. ¡Ojo! No combinas ambos en la misma lista, en vez de eso, crea dos listas para generar dos enlaces respectivos.
  5. minify

  6. En este punto, tenemos dos opciones para usar Minify. La forma “sencilla” y directa es utilizar el enlace generado para insertarlo en nuestro <header>, pero recomiendo ampliamente la forma “elegante”, modificando el archivo /min/groupsConfig.php para especificar todos y cada uno de nuestros archivos .js y/o .css. Ejemplo:
  7. return array(
    'gespadas' => array('//gespadas/jquery.js', '//gespadas/twitter.js', '//gespadas/captify.js', '//gespadas/ajax.js'),
    );

    De esta forma, en nuestro <header> del website, insertamos:

    <script type="text/javascript" src="/min/g=gespadas"></script>
  8. ¡Eso es todo! Minify se encarga del resto.

Ahora cada vez que alguien visite nuestro website, no hará varias llamadas al server por cada .js y .css, si no sólo hará una (o dos si usamos ambos) llamada, la cual será minimizada (gracias a gzip/deflate) y cacheada del lado del cliente de manera automática. ¡Una maravilla!

Enlaces:

Share

SQL Buddy – Administrador de MySQL basado en AJAX

Si acostumbras desarrollar bajo PHP y MySQL, es casi seguro que hayas usado alguna vez phpMyAdmin; yo lo he usado, y a pesar de ser bastante poderoso, su interfaz y usabilidad deja mucho que desear. Hoy me encuentro con una alternativa que viene a llenar esa carencia visual, y se llama SQL Buddy.

Interfaz de SQL Buddy (click para ampliar)

La primera grata sorpresa es que no necesita instalación, sólo hay que descomprimir su contenido en nuestro servidor (local o remoto) y entrar directamente desde nuestro navegador (por ejemplo, http://localhost/sqlbuddy) y listo, se nos mostrará la pantalla de login de nuestro servidor MySQL.

Su uso es muy intuitivo y ágil, lo cual se agradece y forma parte del objetivo principal de esta aplicación. Al estar basado en AJAX, no tiene que actualizarse toda la página para realizar nuestras peticiones, lo cual hace que SQL Buddy sea bastante rápido. Por si fuera poco, se encuentra disponible la traducción completa de la interfaz en varios idiomas, entre ellos el español. Además, cuenta con dos temas visuales.

Muy interesante aplicación que no hay que perder de vista, se las recomiendo bastante.

Enlace: SQL Buddy.

Vía: Script & Style.

Share

haXe, Lenguaje de Programación Multiplataforma y OpenSource

haxeUna de las desventajas de cualquier lenguaje de programación, es que siempre están ligados a su propia plataforma, por ejemplo, Java a su JVM (Java Virtual Machine), C# a su .NET, ActionScript a su Flash Player, etc. El lenguaje haXe viene a solucionar esto.

El objetivo de este novedoso lenguaje de programación es su versatilidad multiplataforma. Al crear nuestro código en haXe, podemos compilarlo para generar automáticamente archivos .js (JavaScript), .swf (Flash Player), .php y otros más, listos para usarse en sus propias plataformas.

¿Ventajas? La más importante, es el uso de un sólo lenguaje de programación sin importar en qué plataforma se vaya a utilizar. Otra ventaja es que haXe es un lenguaje de alto nivel de tipeado estricto (como lo es C/C++), cosa de la que carecen lenguajes como PHP y JavaScript. Por último, no hay que perder de vista la ventaja de que haXe es OpenSource, con todo sus positivas implicaciones.

No hay que perder de vista a haXe, es posible que se convierta en un nuevo estándar en la industria de la programación profesional.

Enlaces:

Vía: Smashing Apps.

Share

Sun Web Stack – Un LAMP optimizado para Linux y Solaris

Sun LogoTodo desarrollador web conoce el término LAMP (Linux Apache MySQL PHP/PERL/Python), y sus respectivas variaciones para Windows (WAMP) y Solaris/OpenSolaris (SAMP), siempre bajo la comunidad OpenSource. Ahora, Sun Microsystems lanza su AMP empresarial denominada Sun Web Stack.

Ya se encuentra disponible para Solaris / OpenSolaris y para Linux, o al menos eso se menciona en la web de Sun y en el comunicado oficial, pero el enlace de descarga para Solaris nos lleva a descargar Cool Stack 1.3, el cual es el nombre que antes tenía el Sun Web Stack. La descarga para Linux, simplemente no la encuentro… muy extraño. Ojalá sólo sea una omisión de Sun y que en los próximos días estén disponibles los enlaces de descarga correspondientes.

Por otra parte, se pretende sacar el Sun Web Stack para otros sistemas operativos (se menciona a Windows, pero imagino que también para MacOSX) el próximo año. Así mismo, Sun planea ofrecer soporte empresarial para el Web Stack para Solaris en el tercer cuarto de este año, y para el Web Stack para Linux a finales de año.

¿Qué contiene el Sun Web Stack? Aquí una lista parcial de sus componentes: Apache 2.2.8, Apache Modules Memcached 1.2.5, MySQL 5.1, lighttpd 1.4.18, Tomcat Servlet engine 6.0.16, PHP 5.2.5, Ruby 1.8.6, Rails 1.2.3, RubyGems 0.9.0, Mongrel 1.0.1, fcgi package, RedCloth (text parsing), Perl 5.8.8 y extensiones, Squid proxy server 2.16.x.

Sin duda, el Sun Web Stack promete mucho para la comunidad de desarrolladores web, habrá que esperar un tiempo prudente para poder compararlo con las soluciones existentes. Estaré muy pendiente de este nuevo producto de Sun, cualquier noticia la estaré publicando de inmediato.

Enlaces:

Vía: Tectonic.

Share

Google Developer Day 2008 – AppEngine

Paul McDonaldComo ya había mencionado, procuré entrar a las sesiones orientadas más a programadores durante el Google Developer Day 2008 de la Ciudad de México, por lo tanto, a la primera sesión que asistí fué la de “AppEngine“, y el conferencista fué Paul McDonald.

Por cierto, es justo mencionar que las salas de las sesiones individuales estaban muy bien acondicionadas, donde cada lugar de los participantes tenían para conectar su laptop a la toma de corriente y a Internet (ya sea por cable o por WiFi).

Con respecto al desempeño del expositor, la mayoría de los ejemplos reales (no las diapositivas, si no el programa en sí) no le funcionaron, y no pudo corregirlos para hacer que corrieran en su máquina, incluso tuvo el contratiempo de la falla a la conexión de Internet.

Como mencioné hace casi tres meses, AppEngine es un novedoso servicio que permite ejecutar nuestras aplicaciones web en los servidores de Google. Ofrece un sistema de bases de datos no relacionales, un espacio de almacenamiento de 500 MB y 10 GB de tráfico diarios.

La principal ventaja que le veo a este servicio, es usar la infraestructura de Google para subir nuestras aplicaciones web, con lo cual tenemos asegurado el hecho de que no fallarán por caídas de servidor, así como tampoco tendremos que preocuparnos por la seguridad, estabilidad y demás detalles técnicos de un proveedor de hosting tradicional.

¿El precio? Gratuito si no superamos el límite de 5 millones de páginas vistas al mes. Pero, ¿qué sucede si nuestra aplicación se vuelve muy popular y supera ese límite? Digamos que por los siguientes 5 millones de páginas vistas extra serían aproximadamente 40 dólares al mes, un precio bastante asequible.

Otro detalle interesante es que nuestra aplicación normalmente estaría “colgada” de un subdominio de tipo miaplicacion.appspot.com, pero con la opción de poder tenerla en un dominio personalizado usando Google Apps. Varios ejemplos de aplicaciones podemos encontrarlos en appgallery.appspot.com; algunas interesantes son TweetWheel y YouTube Subtitler.

Hay que tomar en cuenta que al tratarse de la infraestructura de Google, debemos regirnos de acuerdo a sus reglas, y por ello tenemos algunas limitaciones con respecto a lo que podemos usar al momento de programar. Debido a esto, Google nos ofrece APIs para solventar estas limitaciones. Por ejemplo, nos ofrece la API de Picasa para la manipulación de imágenes y la autenticación de usuarios a través de cuentas de Google (o sea, cuentas de Gmail).

Por último, y algo muy importante, es que por el momento el único lenguaje que se permite para el desarrollo de las aplicaciones es Python, aunque se tiene pensado el usar otro tipo de lenguajes, como Java o PHP, pero no hay fecha de “lanzamiento” de dicha característica. A continuación, un ejemplo de un Guestbook, presentado por Paul MacDonald durante su exposición.

app.yaml Configuration File
Data Model
Request Handlers
HTML Template

Pronto, la reseña de la segunda sesión: “GWT” ;-)

Share

PHP Cheat Sheet

Me entero por Kabytes que en Emezeta han publicado una estupenda guía rápida (cheat sheet) del popular lenguaje PHP. Creo que no hay mucho que decir de PHP, ya lo conocen, todo webmaster y desarrollador web debe tener entre sus conocimientos básicos al PHP, como mínimo, y esta guía puede ahorrarnos tiempo al realizar nuestros proyectos web.

[ PHP Cheat Sheet ]

La guía está disponible en PDF y PNG, y está bajo una licencia libre, así que no hay que pagar por ella, aunque el autor acepta donaciones. No pongo los links directos de descarga, ya que el autor ha solicitado que en vez de dichos links, hacer referencia a su artículo, para ahí realizar las descargas.

Web y descargas: Emezeta Blog.

Vía: Kabytes.

Share