The Geek Inside

Julio Carlos Sánchez Blog

Archive for the 'PHP' Category

Dojo

Hace algún tiempo esuché de Dojo que es una librería para dar soporte AJAX a tus sitios web.

Hice algunas cuantas pruebas de concepto y se me hizo una buen alternativa para la otras librerías en el mercado, sin embargo tenía algunos problemas de performance.

Pero bueno… el tiempo pasa y esta librería a tenido mejoras importantes:

  • Pesa menos Kbs.
  • Tiene mejor performance.
  • Más funcionalidad.

Debido a la alianza que hizo con Zend Framework, retomé su uso sorprendiendome de las cosas que se pueden hacer con esta librería de una manera muy fácil.

Entre más la uso, más me convence, de hecho se está convirtiendo rápidamente en mi librería AJAX de preferencia ;).

dojo_logo.png
1 comment  |  Related posts

Dojo + Zend Framework

Hoy estan anunciando la alianza entre Zend Framework y Dojo, esto principalmente con el fin de tener soporte para AJAX out of the box en Zend Framework.

De cualquier manera se seguira teniendo soporte para otros frameworks de AJAX.

Dojo and Zend Framework Partnership Announcement:

“I am excited to announce a partnership between Dojo and Zend Framework. The goal is to deliver an out-of-the-box solution for building Ajax-based Web applications with Zend Framework. This is mainly targeted at users who rely on us to provide them with a best practice and an out-of-the-box experience for Ajax and don’t want to have to deal with evaluating a solution (e.g. toolkits, licenses, etc.).”

(Via Planet PHP.)

No comments  |  Related posts

Como conectarse a SQLite desde PHP5

A partir de la versión 5, PHP tiene soporte para conectase a una base de datos SQLite de manera nativa, dicho soporte se obtiene pasando las opciones de configuración --with-sqlite y --with-pdo-sqlite al script configure, cuando se está haciendo el ya clásico rito:

  • ./configure
  • make
  • make install

Después de haber compilado PHP con las opciones antes mencionadas, tendremos tres maneras de acceder a una base de datos SQLite:

En este artículo presentaré un ejemplo sencillo accediendo de las diferentes maneras antes mencionadas:

Por medio de funciones:

1
2
3
4
5
6
7
8
9
10
<?php
 if ($db = sqlite_open('test.sqlite', 0666, $sqlite_error)) { 
     sqlite_query($db, 'CREATE TABLE prueba (nombre varchar(10))');
     sqlite_query($db, "INSERT INTO prueba VALUES ('prueba_de_nombre')");
     $resultado = sqlite_query($db, 'select nombre from prueba');
     var_dump(sqlite_fetch_array($resultado)); 
 } else {
     die($sqlite_error);
 }
?>

Por medio de objetos:

1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
$db = new SQLiteDataBase('test.sqlite', 0666, $sqlite_error);
 if ($db != null)
 {
    $db->query('DROP TABLE IF EXISTS prueba');
    $db->query('CREATE TABLE prueba (nombre varchar(10))');
    $db->query("INSERT INTO prueba VALUES ('prueba_de_nombre')");
    $res = $db->query('SELECT nombre FROM prueba');
    var_dump($res->fetch($resultado)); 
 } else {
     die($sqlite_error);
 }
?>

Y por último el acceso por medio de PDO:

1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
$db = new PDO('sqlite:test.sqlite');
if ($db != null)
{
    $db->exec('DROP TABLE IF EXISTS prueba');
    $db->exec('CREATE TABLE prueba (nombre varchar(10))');
    $db->exec("INSERT INTO prueba VALUES ('prueba_de_nombre')");
    $res = $db->query('SELECT nombre FROM prueba');
    var_dump($res->fetch()); 
} else {
    die($sqlite_error);
}
?>

Como pueden ver el acceso a una base de datos SQLite es bastante sencillo, sin embargo cabe destacar que las dos primeras formas sólo dan soporte a la versión 2.x de SQLite, mientras que con PDO nos permite acceder a bases de datos de la versión 3.x.

SQLite también dá soporte a bases de datos on memory, esto se consigue pasando como nombre de archivo “:memory:”.

También podemos pasar en blanco (”") el nombre del archivo con lo cuál conseguiremos que la base de datos se cree en un archivo temporal.

En posteriores artículos mostraré algunos usos de las bases de datos temporales y on memory.

No comments  |  Related posts

7 sitios de consulta para el desarrollo de aplicaciones en PHP

No recuerdo como llegué a este articulo, sin embargo quiero compartirlo ya que creo que todos los sitios que mencionan son una fuente invaluable de información para los programadores que usamos PHP para nuestros desarrollos.

No comments  |  Related posts

Zend Framework 1.5

Ayer se anunció la última versión de Zend Framework, el cuál contiene cambios principalmente en Zend_Form, Zend_Layout, en el componente de autenticación de LDAP, soporte para OpenID y mucho más.

Para aquellos que deseen experimentar con esta versión pueden comenzar por el excelente tutorial de Rob Allen, que ya está actualizado para la versión 1.5.

No comments  |  Related posts

Smilies en WordPress 2.1.x

Recientemente hice una actualización al blog de WordPress 2.0.4 a 2.1.2 y active la opción de convertir los smilies en imágenes, pero para mi sorpresa no funcionaba en todos los casos :?, así que me dí a la busqueda por la red y encontré esta referencia que me ayudó a solucionar el problema :D.

No comments  |  Related posts

Posting en Markdown

Uno de mis sintaxis de marcado para texto plano es Markdown, esta te permite tener un archivo que puede ser leido como texto plano o ser procesado para convertirlo en HTML.

Después de hacer un Quick Search en la red me encontré con el proyecto PHP Markdown, que permite postear en Wordpress (entre otros), en la sintaxis de marcado Markdown.

Entre sus características que me gustaron estan estas:

  • Tiene una sintaxis extendida llamada Markdown Extra que ayuda con algunas de las limitaciones de la sintaxis original.
  • Se puede usar en tus propios proyectos para soportar Markdown.
  • Conserva el formato Markdown para ediciones posteriores
No comments  |  Related posts

Traducción de fechas en PHP y Java

Al desarrollar un sistema debemos de hacer uso de los beneficios del lenguaje o tecnología sobre la que desarrollamos, por ejemplo no podemos programar igual en Java que en PHP, ya que ambos lenguajes tienen diferentes características. Java y algunos otros lenguajes como C# tienen como parte de sus librerías estándar soporte para i18n y l10n, otros lenguajes como Ruby o PHP hacen uso de librerías de terceros para dar soporte a esta característica.

Este comentario viene a propósito de que recientemente tuve una plática por IM con una amiga y me preguntó por una función para hacer la traducción de una fecha con el formato dd/mm/yyyy a dd/NombreMesEnEspaniol/yyyy en PHP, entonces escribí la siguiente función

<?php
function translate_date ( $date )
{
 
// Patron para dividir los elementos de la fecha
 
$regexp = "^([0-9]{2})[\/.-]([0-9]{2})[\/.-]([0-9]{2,4})$";
 
 
// Verificamos que se cumpla con el patron
 
if ( ereg($regexp, $date, $date_splited) )
 
{
    
list( , $day, $month, $year) = $date_splited;
 
} else {
    
throw New Exception("Formato de fecha invalido !");
 
}
 
 
// Creamos el arreglo de conversion
 
$months = array( "01" => "Enero",      "02" => "Febrero",
                  
"03" => "Marzo",      "04" => "Abril",
                  
"05" => "Mayo",       "06" => "Junio",
                  
"07" => "Julio",      "08" => "Agosto",
                  
"09" => "Septiembre", "10" => "Octubre",
                  
"11" => "Noviembre""12" => "Diciembre",
            
);
 
 
// Obtenemos el nombre del mes
 
$long_month$months[$month];
 
 
return $day."-".$long_month."-".$year;
}
?>

Mientras desarrollaba la función recordé una ocasión en la que haciendo una revisión de código en un proyecto desarrollado en la plataforma Java, encontré una clase de utilerias misceláneas que contenía una función con el mismo propósito que la desarrollada en PHP.

El algoritmo era mas o menos así:

  1. Dividir la cadena asumiendo que tiene un formato dd/mm/yyyy en tres secciones
  2. Obtener el valor de cada sección
  3. Asignar los valores obtenidos a variables para contener día, mes, año
  4. Dependiendo del valor numérico del mes obtener su nombre en español
  5. Concatenar una cadena con el formato
  6. Regresar la cadena con el nuevo formato

Simple no?!. Al estar escrito en Java y teniendo en cuenta el soporte de Java para i18n y l10n, era mas limpio usar un objeto SimpleDateFormat con un objeto Locale dándole mayor mantenibilidad al código, como se puede observar en la siguiente función.

public String translate_date(String date) {
 
SimpleDateFormat dateParser;
 
SimpleDateFormat sdf;
 
Date dateToTranslate;
 
ParsePosition position;
 
Locale locale;
 
 
dateParser = new SimpleDateFormat("dd/MM/yyyy");
 
position = new ParsePosition(0);       
 
dateToTranslate = dateParser.parse(date, position);
 
 
locale = new Locale("ES");
 
sdf = new SimpleDateFormat("dd/MMMMM/yyyy", locale);
 
 
return sdf.format (dateToTranslate);
}

En estos dos ejemplos podemos observar la diferencia en la implementación en dos diferentes lenguajes de una misma función, haciendo uso de las características de cada uno de ellos.


Nota: En los ejemplos existe hard-code intencionalmente solo para hacerlos más claros, evidentemente es una mala práctica.

2 comments  |  Related posts