ene
8

http://diary.dipler.org

Hace ya un tiempo, un amigo me preguntó acerca del día en el que había hecho una determinada actividad y no fui capaz de responderle, no suelo fijarme en las fechas en las que hago las cosas; el problema quedaría ahí de no ser porque si te roban una cuenta de correo electrónico te preguntan sobre la fecha aproximada en la que creaste la cuenta y así en muchos otros ámbitos; también cabe la posibilidad de que hayas establecido por sistema llevar un diario o simplemente que desees empezar a llevar uno.

Si la respuesta a alguna de estas preguntas es sí, eres un perfecto candidato para utilizar Diary, una aplicación muy sencilla que llevo desarrollando ya unos meses para uso exclusivamente personal pero que, después de que un amigo me dijese que le parecía una idea interesante y que quería usarlo también, hoy he abierto al público general para que pueda ser utilizada por aquellas personas que piensen que es una aplicación interesante para ellos.

¿Qué es Diary?

Diary es una aplicación escrita íntegramente en HTML5, PHP y Javascript apoyándose en hojas de estilo CSS3 y una base de datos MySQL, por lo que para poder visualizarlo perfectamente hará falta un navegador que soporte HTML5 y CSS3 (lo cual, sinceramente, no es muy complicado, todos los navegadores modernos deberían visualzarlo sin problema alguno.

¿Porqué no es compatible con todos los navegadores de la “historia”?

Muy sencillo, nació como una aplicación personal, y por ahora sigue siéndolo, si veo que a la gente le interesa y se va registrando gente, la aplicación irá creciendo, entre otras cosas, en compatibilidad con navegadores.

¿En qué se diferencia de un blog, Facebook o Twitter?

Es una aplicación de uso privado para el usuario registrado, el usuario que escribe algo podrá verlo de varias maneras, pero nadie más tendrá ese privilegio, por así decirlo es un diario en toda regla para el usuario que lo utilice con la ventaja de que está en la nube y puede ser accedido desde cualquier navegador moderno para insertar entradas nuevas a nuestra lista.

Es una aplicación muy simple ¿alguna mejora futura?

Yo soy de los que utilizan infinidad de aplicaciones de la web para escribir y leer cosas, así que una de las ideas que podrían ser interesantes en esta aplicación es permitir publicar (mediante un botón especial dentro del diario) una entrada determinada en redes sociales como Facebook o Twitter.

Otra mejora que se me había ocurrido es no solo utilizarlo como diario de cosas hechas, sino como lista de tareas pendientes.

Manual de uso

Leer más… »

Tags:
Categoría PHP, Producción propia, Programas, Web | Sé el primero en comentar!
oct
12

Can’t speak spanish? you can also read this article in english, click here.

Hace ya un tiempo, publiqué una clase para conectar desde PHP con MySQL, dicha clase, si bien cumplía perfectamente con su función, no era eficiente y tampoco le daba mucho juego al programador, así que cuando empecé a desarrollar Keopens, un CMS que empecé a desarrollar con el fin de que fuese un núcleo muy minimalista y adecuado a las nuevas tecnologías que están surgiendo. Por desgracia, no tengo tiempo suficiente para seguir con el desarrollo del mismo, pero algunas clases, si bien forman parte de dicho proyecto, las he sacado del mismo y continuado desarrollando ya que para los pequeños proyectos en PHP que tengo que ir haciendo son muy útiles.

Esta es una de esas clases que han ido creciendo poco a poco y según iban surgiendo necesidades se le iba incrementando las funcionalidades. En general se ha intentado seguir una POO correcta, pero con el fin de compartir la clase aislada, he decidido incluir dos funciones que no deberían estar en dicha clase, una de ellas es la de validar un e-mail y la otra es la de enviarlo.

La clase consta de dos modos de trabajo, un primer modo de debug o testing y un modo de producción, para cambiar entre ambos modos tan sólo hay que cambiarle el valor a una variable, además en el modo testing, la clase nos mostrará, al destruir el objeto o bajo demanda, el número de consultas ejecutadas y el tiempo total entre la creación de la instancia de la clase hasta que esta ha sido borrada. Si ocurre un error grave, y se dan una serie de condiciones (hemos inicializado la clase con un correo electrónico y no estamos en modo testing) se enviará por correo electrónico el fallo, esto es muy útil para tener constancia de los errores e incluso detectar en ocasiones la SQL-Injection en el caso de que se genere una sentencia que no haya podido ser ejecutada debido a errores de sintaxis.

Otras características interesantes:

  • Funciona tanto con conexiones persistentes como no persistentes.
  • Permite la creación de una copia de seguridad de la base de datos escribiendo una única línea de código (MySQL dump desde PHP).
  • Nos permite monitorizar las sentencias, controlando en qué fichero y línea del mismo se ejecuta.
  • Envío de emails cuando sucede un error grave.
  • Conteo de tiempo de ejecución.
  • Conteo de memoria utilizada por el script.
  • Conteo del número de sentencias ejecutadas.
  • Previsualización automática de los datos de salida de una sentencia (modo testing).
  • En bases de datos InnoDB permite el uso de transacciones.
  • Los mensajes extras mostrados en el modo testing tienen asociados una serie de estilos que indican visualmente si la ejecución ha sido correcta o, por el contrario, se ha producido un error.

He aquí una serie de ejemplos muy sencillos para mostrar rápidamente el potencial de la clase.

Para conectar con la base de datos, nos bastará con escribir dos líneas en nuestro programa y ya estaremos listos para trabajar:


$db = new MyMysqli($db_host, $db_uname, $db_pword, $db_name, $debugging, $contactMail, 'MYSQLI_ASSOC');
$db->connect(false);

Para ejecutar una consulta nos basta con escribir una sola directiva.

$query = 'SELECT * FROM text';
$db->execute($query, __LINE__, __FILE__);

Las constantes __FILE__ y __LINE__ nos sirven para indicar, en caso de error, el lugar en el que se encuentra dicha consulta a la base de datos.

El método ejecutado devuelve un resultSet, pero la clase mantiene una referencia al último resultSet dado que es muy probable que nos interese trabajar con él en breves, por lo que devuelve el resultSet para utilizarlo en casos muy específicos, como por ejemplo en el caso de que necesitemos trabajar con dos a la vez.

Para recorrer un resultSet de una consulta nos basta con ir llamando al método fetch(), si no se le pasa como parámetro un resultSet, ejecutará la acción sobre el obtenido en la última petición a la base de datos

if($db->numRows() > 0){
 while($result = $db->fetch()){
//TODO
 }
}

Si somos un poco “vagos” o simplemente vamos a consultar muchas veces los datos, la clase proporciona un método para pasar los datos obtenidos a una tabla.


$db->getTable();

Al igual que en el ejemplo anterior, si no se le pasa como parámetro otro resultSet, formará la tabla partiendo del último restulSet obtenido.

Por último mencionar que, en las primeras lineas de la clase, podrá observar que hay unas líneas comentadas que citan lo siguiente:


//Access control
if(!defined('IN_APP')) exit('Access Forbidden');

Estas líneas están comentadas por una sencilla razón, en PHP es posible acceder a cualquer archivo por URL si el servidor no está bien configurado, esto hace que si la página cargada imprime algo por pantalla, no se muestre, ya que la constante IN_APP no está definida con anterioridad. Por ende para que funcione, antes de incluir el archivo en la ejecución, deberíamos declarar la constante IN_APP. Obviamente el nombre de la constante puede ser cualquiera, en este caso, la que yo usaba en Keopens era IN_APP.

Descarga: MyMysqli Class (41)

Categoría PHP, Producción propia, Programación, Web | Sé el primero en comentar!
may
11

Cada vez tenemos a nuestra disposición más y más datos, existen millones y millones de páginas con información, pero no tenemos métodos eficientes de búsqueda. ¿Es el inicio de la Web Semántica?, ¿de la web 3.0?

Web 3.0 from Kate Ray on Vimeo.

Tags:
Categoría Web | 1 Comentario »
mar
3

Es cierto que cada día que pasa tenemos mayores herramientas que nos ayudan a ser más productivos en el día a día, pero también, al igual que surgen programas con fines poco éticos, existen programas que hacen que seamos menos productivos, un ejemplo bastante claro de esto es el servicio que nos ofrece una página web que acabo de descubrir, ésta se llama Can’t you see I’m Busy y es que han desarrollado una serie de juegos flash cuya interfaz es casi idéntica a la de utilidades que son utilizadas en el día a día, es decir emulan la interfaz de programas ofimáticos.

Por el momento sólo cuentan con 3 juegos, uno de raquetas, otro de naves espaciales y otro de bloques, cada uno de ellos simulando un programa diferente.

Que los disfrutéis, eso sí durante vuestro tiempo libre, claro…

Categoría Curiosidades, Juegos, Web | Sé el primero en comentar!