oct
20

Sobran las palabras…

Categoría Curiosidades | Sé el primero en comentar!
oct
17

MAYONESA Y CAFÉ

Cuando te sientas agobiado, cuando 24 horas al día no sean suficientes… Recuerda el frasco de mayonesa y el café!

Un profesor en su clase de Filosofía, sin decir palabra, agarró un frasco grande y vacío de mayonesa y lo llenó con pelotas de golf.

Luego preguntó a sus estudiantes si el frasco estaba lleno y ellos estuvieron de acuerdo en decir que si.

De nuevo, sin decir nada, el profesor agarró una caja llena de canicas y la vació dentro del frasco de mayonesa.

Las canicas llenaron los espacios vacíos entre las pelotas de golf.

El profesor volvió a preguntar a los estudiantes si el frasco estaba lleno y ellos volvieron a decir que si.

Luego…el profesor agarró una caja con arena y la vació dentro del frasco.

Por supuesto, la arena llenó todos los espacios vacíos, y el profesor preguntó nuevamente si el frasco estaba lleno.

En esta ocasión los estudiantes respondieron con un ‘si’ unánime.

El profesor enseguida agregó 2 tazas de café al contenido del frasco y efectivamente llenó todos los espacios vacíos entre la arena. Los estudiantes reían en esta ocasión. Cuando la risa se apagaba, el profesor dijo:

‘QUIERO QUE SE DEN CUENTA QUE ESTE FRASCO REPRESENTA LA VIDA’.

Las pelotas de golf son las cosas importantes como la familia, los hijos, la salud, los amigos, …

Son cosas que, aún si todo lo demás lo perdiéramos y solo éstas quedaran, nuestras vidas aún estarían llenas.

Las canicas son las otras cosas que importan, como el trabajo, la casa, el coche, etc.

La arena es todo lo demás… las pequeñas cosas.

‘Si ponemos primero la arena en el frasco, no habría espacio para las canicas ni para las pelotas de golf.

Lo mismo ocurre con la vida’.

Si gastamos todo nuestro tiempo y energía en las cosas pequeñas, nunca tendremos lugar para las cosas realmente importantes.

Presta atención a las cosas que son cruciales para tu felicidad.

Juega con tus hijos,

dedica tiempo a revisar tu salud,

ve con tu pareja a cenar,

practica tu deporte o afición favoritos,

siempre quedará tiempo para limpiar la casa y reparar la llave del agua.

Ocúpate de las pelotas de golf primero, de las cosas que realmente importan.

Establece tus prioridades, el resto es solo arena…

Uno de los estudiantes levantó la mano y preguntó qué representaba el café..

El profesor sonrió y dijo:

‘Que bueno que me hagas esta pregunta… Sólo es para demostraros, que no importa cuan ocupada tu vida pueda parecer, siempre hay lugar para un par de tazas de café con un amigo.’

¡¡¡¡¡ que tengas un excelente dí­a!!!!!

Obviamente este texto no es de mi autoría, pero me parecía interesante, por desgracia, la historieta la he recibido en un correo electrónico, así que si alguien conoce el nombre del que ha escrito este texto, que me lo diga si es tan amable para poder poner una referencia.

Categoría Curiosidades | 2 Comentarios »
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!
oct
11

Recientemente, y con el cambio de ordenador, me vi obligado a volver a poner todo a punto y en consecuencia a pelearme con los drivers de aquellos dispositivos de Hardware que o bien el sistema no reconocía, o bien el sistema no trataba adecuadamente. De todos estos, el que más guerra me ha dado ha sido el wifi:

05:00.0 Network controller: RaLink RT3092 Wireless 802.11n 2T/2R PCIe

Y es que en algunas versiones del sistema operativo Ubuntu no me reconocía la tarjeta, mientras que en otros me permitía listar todas las redes al alcance pero era incapaz de conectar con el punto de acceso porque se identificaba siempre con IPv6 usando la dirección 00:00:00:00:00:00.

Tras un rato buscando información en internet sin demasiado éxito me aventuré a leerme los logs y demás hasta que decidí instalar la última versión del hardware, respuesta que, por otra parte, era la única que podía solucionar mi problema.

pues bien, lo primero que tenemos que hacer es descargarnos la última versión de los drivers de la tarjeta wifi, para ello entramos en http://www.ralinktech.com/support.php?s=2 y nos descargamos el fichero llamado RT3090PCIe (para descargar correctamente el fichero, habremos de dar un nombre y un correo electrónico real o no porque no nos piden confirmación).

Una vez descargado el archivo, bastará con descomprimirlo

~$ tar xvzf DPO_RT3090_LinuxSTA_V2.3.1.7_20100618_WiFiBTCombo_RFKill.tgz

e instalarlo

~$ sudo make

~$ sudo make install

una vez hecho esto, reiniciamos el equipo y veremos que el wifi funciona correctamente ahora.

Tags: ,
Categoría Linux, Manuales | Sé el primero en comentar!