Archivos mensuales: Junio 2008

Hay preguntas que no se hacen y respuestas que no se dan…

Úsese cuando se le haga una pregunta que conlleve una respuesta embarazosa, generalmente frente a un colectivo. Póngase de pie, hable alto, con firmeza, pero no grite. La atención de los demás se desviará hacia lo contundente de la frase y la expresión de se rostro, mirada firme a los ojos de quien le ha formulado dicha pregunta, quedando casi en el olvido la misma y quien la recuerde, ya no querrá saber cual seria su contestación, por miedo a recibir otra de estas.

Yo les aseguro que funciona, siempre y cuando se use inteligentemente y con mucho tacto.

Espero les sirva este consejito… :P

Desde que me registre en twitter hace ya algunos meces, publicaba manualmente allí las entradas de mi Blog, hasta que un día, siguiendo la EURO 2008, me di cuenta que lo que suponía lógico y no había encontrado, realmente existe, pues siempre me dije que debía haber alguna forma de conectar mis entradas automáticamente a twitter.

twitterfeedtwitterfeed.com nos brinda una herramienta que permite registrar las entradas de tu Blog a tu cuenta en twitter. Lo único que requieres para ello es tener una cuanta OpenID, puedes usar tu usuario de Yahoo!, Blogger, Technorati, AOL, Flickr, entre otros y si no lo tienes, puedes crearte uno en Vidoop, que para mi fue la parte mas divertida. Además, que puedes crearte varios twitterfeed en tu cuenta.

En fin, creo que es una buena opción y una buena manera de usar twitter.

Esta siempre fue una de mis dudas en mis inicios, hasta que un día encontré este interesante tutorial en MySQL Hispano, pero les juro que no entendí mucho hasta que un amigo me explico como hacerlo usando phpMyAdmin, y les aseguro que es realmente sencillo, por eso quiero transmitirles mi experiencia y mostrarles como se hace, pero de manera gráfica, para que sea de fácil entendimiento para todos. De todas formas recomiendo fuertemente el tutorial de que les hablo antes.

Una pequeña introducción:

Para este ejemplo usaremos la clásica Base de Datos Padres a Hijos, para así lograr al final una relación de uno (Padre) a varios (Hijos) y no complicarnos con un sistema complejo.

La Base de Datos:

Asumo al lector familiarizado con phpMyAdmin, así que tratare de ir los más directamente al asunto.

Nuestra Base de Datos, como ya vimos, la llamaremos padres_hijos y tendrá la siguiente estructura:

-- Base de datos: `padres_hijos`
– Estructura de tabla para la tabla `padres`
CREATE TABLE `padres` (
`padre_ID` int(11) NOT NULL auto_increment,
`padreNombre` varchar(25) NOT NULL,
PRIMARY KEY (`padre_ID`)
) ENGINE=InnoDB ;
– Estructura de tabla para la tabla `hijos`
CREATE TABLE `hijos` (
`hijo_ID` int(11) NOT NULL auto_increment,
`hijoNombre` varchar(25) NOT NULL,
`hijoPadre_ID` int(11) NOT NULL,
PRIMARY KEY (`hijo_ID`)
) ENGINE=InnoDB ;

Como ven, lo que hemos hecho es simplemente crear un par de tablas. La tabla padres tiene un par de campos, padre_ID y padreNombre. Por su parte, la tabla hijos, tiene tres campos, hijo_ID, hijoNombre e hijoPadre_ID, este último será quien nos sirva para hacer nuestra relación

NOTA: Fíjense que el campo hijoPadre_ID es tipo INT, de lo contrario, nos enviará un error al intentar crear llaves foráneas utilizando este campo.

Creando un campo INDICE:

Una vez logrado lo anterior, ya podemos crear la relación entre ambas tablas. Para ello vamos a la estructura de la tabla hijos y creamos un INDICE de una columna:

indice-paso-1

En el siguiente paso, escogemos el tipo de índice, que será INDEX y el campo que utilizaremos: hijoPadre_ID:

indice-paso-2
Damos clic sobre el botón Grabar:

indice-paso-3

Y ya tenemos nuestra tabla lista para pasar a la siguiente fase (perdón esto de la fase, pero son los aires de la EURO 2008 :P)

Logrando la Integridad Referencial:

Para lograr la Integridad Referencial, que es nuestro objetivo principal, debemos ir primeramente a la vista de relaciones, por su puesto, en la tabla hijos:

vista-de-relaciones-paso-1

Una vez aquí, escogemos el campo que vamos a relacionar y que previamente convertimos en un INDICE y recuerden que tiene que ser de tipo INT:

vista-de-relaciones-paso-2

Elegimos las opciones ON DELETE: CASCADE y ON UPDATE: CASCADE, esto asegurará que si borramos o actualizamos algún registro de la tabla padre, todos los registros de la tabla hijos que estén relacionados con este, también se borren o actualicen, según la acción. Una vez mas, hacemos clic en Grabar y todo estará listo:

vista-de-relaciones-paso-3

Conclusiones:

La estructura final de la Base de Datos será la siguiente:

-- Base de datos: `padres_hijos`

– Estructura de tabla para la tabla `padres`
CREATE TABLE `padres` (
`padre_ID` int(11) NOT NULL auto_increment,
`padreNombre` varchar(25) NOT NULL,
PRIMARY KEY (`padre_ID`)
) ENGINE=InnoDB ;
– Estructura de tabla para la tabla `hijos`
CREATE TABLE `hijos` (
`hijo_ID` int(11) NOT NULL auto_increment,
`hijoNombre` varchar(25) NOT NULL,
`hijoPadre_ID` int(11) NOT NULL,
PRIMARY KEY (`hijo_ID`),
KEY `hijoPadre_ID` (`hijoPadre_ID`)
) ENGINE=InnoDB ;
– Filtros para la tabla `hijos`

ALTER TABLE `hijos`
ADD CONSTRAINT `hijos_ibfk_1`
FOREIGN KEY (`hijoPadre_ID`)
REFERENCES `padres` (`padre_ID`)
ON DELETE CASCADE ON UPDATE CASCADE;

Como se puede ver, la tabla hijos a cambiado su estructura, ahora, además de la llave primaria (PRIMARY KEY) hijo_ID, tenemos una llave externa o foránea (KEY) hijoPadre_ID.

Ahora, lo más interesante de todo es la última consulta ALTER TABLE, que intentare explicar, desde mis modestos conocimientos:

ALTER TABLE `hijos`: Hacemos un cambio a la tabla hijos.
ADD CONSTRAINT `hijos_ibfk_1`: Añadimos una restricción, aquí con solo poner hijos es suficiente, pero al exportar la estructura con phpMyAdmin, automáticamente pone hijos_ibfk_1 :/
FOREIGN KEY (`hijoPadre_ID`): La llave externa será el campo hijoPadre_ID.
REFERENCES `padres` (`padre_ID`): Que hace referencia al campo padre_ID de la tabla padres.
ON DELETE CASCADE ON UPDATE CASCADE: Cuando se borre o actualice algún registro de la tabla padre, se afectaran los registros relacionados de la tabla hijos

Una vez más espero haber sido útil y recuerden que los comentarios siempre serán bien recibidos.

Para profundizar en el tema, les recomiendo las siguientes lecturas:

Saludos y Suerte.

Ya he hablado antes de mi adicción a Internet, y como todo adicto, tengo que pagar las consecuencias que esta enfermedad incurable, progresiva y mortal conlleva, pero yo necesito tener contacto con el mundo, hablar con las personas aunque estén a miles de kilómetros, compartir conocimientos, aclarar mis dudas, crear proyectos, enterarme de lo que sucede, polemizar, discutir, decir y hacer.

Hay muchas cosas de las que carezco, hay muchas cosas que añoro tener, hay muchas cosas que necesito. Por ejemplo, yo quisiera un dominio que sea cubano ¿rogertm.cu tal vez?, yo quiero que las personas sepan de solo ver mi dirección, que yo soy cubano y no de otro lugar. Otro ejemplo, yo quisiera ser freelancer y hacer mis trabajos a domicilio vía Internet y desde mi casa claro, así dedicarle todo el tiempo a lo que me gusta (la Web) y ayudar a que avance el buen uso de Internet en Cuba. Otro mas, yo quisiera poner mi granito de arena con tal de que en mi país las personas puedan tener acceso a Internet más libremente. Y otro mas, yo quisiera que se escucharan mis propuestas y no me las troncharan los jefes que no se enteran de lo importante que es para una empresa tener un sitio en Internet, que no ven mas allá del dinero que sueñan tener sobre su escritorio y no dan paso a nuevos y revolucionarios proyectos que les traerían los clientes a la puerta de sus oficinas.

Pero debo confesar que no todo es tan malo como parece, mi adicción, como toda adicción, me ha traído cosas muy buenas, goces, alegrías, euforias, bienestares y hasta el amor, entonces esta adicción mía a Internet no es del todo dañina, por ejemplo mi blog, les cuento.

Desde que me cree este blog, he encontrado y descubierto cosas en Internet que me han sorprendido, Redes Sociales como Twitter, Pownce y aunque lo conozco hace ya algún tiempo, me he adentrado mas últimamente en FaceBook. Sitios que brindan importantísimas herramientas que todo blogger debe conocer, Technorati, Bitácoras. He descubierto lo bueno que es usar los Feeds para estar al tanto de lo que ocurre en los Blogs y Sitios que suelo frecuentar (como que el panadero te ponga el pan sobre la mesa a la hora del desayuno). Que decir de las personas que he conocido, dentro y fuera de Cuba. Y no por ser lo último que mencione, dejará de ser una de las cosas mas importantes que he hecho, un proyecto que he creado con el objetivo de unir en una gran comunidad a todos los Bloggers cubanos que viven en Cuba, claro que no he sido yo solo, he tenido la ayuda de otras personas que me han apoyado mucho y que realmente cuento con ellas para lograr el objetivo final.

Como ven, si ponemos en una balanza lo bueno y lo malo, equilibra muy bien. El problema sigue siendo que tengo que trabajar para el Gobierno, pero no es que no me guste trabajar, al contrario, me agrada mucho, pues como reza un antiguo proverbio chino (todos los proverbios chinos son antiguos) – Búscate un trabajo que te guste, y no trabajaras nunca –, pero trabajar para el Gobierno en Cuba tiene como consecuencia malos salarios y que el dinero no alcanza y un largo etcétera, que no creo que analice nunca nada de eso aquí, no es lo que quiero.

Así, esas son las consecuencias que tengo que pagar por mi adicción a Internet y debo decir que soy aferrado, seguiré trabajando, cumpliendo con mi plan mensual o no, pero con tal de tener un lugar seguro y diario donde conectarme a la gran telaraña mundial, trabajare toda mi vida, aunque esto me cueste no hacer lo que quiero, pero si me aseguraré tener un pedacito de mi día, aunque sea así de chiquitico, para tener contacto con el mundo, hablar con las personas aunque estén a miles de kilómetros, compartir conocimientos, aclarar mis dudas, crear proyectos, enterarme de lo que sucede, polemizar, discutir, decir y hacer.

Yo creo que si, que continuará…

A veces queremos que los usuarios se sientan como en casa cuando acceden a nuestra Web, y una de esas maneras que mostrarle que pueden convertir los emoticones o caritas que nos dejan en sus comentarios en verdaderas imágenes.

Para ello usaremos las Funciones de Control de Salida ob_start() y ob_end_flush(). El script es realmente sencillo de entender y de explicar ;), así que se lo iré comentando mientras vemos el código. Pero antes les diré que usaremos una función (mostrarCaritas) que será la encargada de sustituir los símbolos de nuestros usuarios por las imágenes que tenemos previamente guardadas en nuestro servidor.

<?php
// creamos la funcion
function mostrarCaritas($valor){
// la variable $caritas
// guardara como valor
// un array con los posibles caracteres ;)
$caritas = array(”:S”, “:D”, “8)”, “;)”, “:(”, “:)”);

// $imagenes, tambien contendra un array
// con las imagenes que usaremos
$imagenes = array(”<img src=’caritas/bravo.png’ />”,
“<img src=’caritas/contento.png’ />”,
“<img src=’caritas/gafas.png’ />”,
“<img src=’caritas/guino.png’ />”,
“<img src=’caritas/lloron.png’ />”,
“<img src=’caritas/sonriente.png’ />”,
);

// hacemos el reemplazo
return (str_replace($caritas, $imagenes, $valor));
}

// habilitamos el bufer de salida
ob_start(”mostrarCaritas”);
?>
<html>
<head>
<title>Mi Web muestra caritas</title>
</head>
<body>
<p>Estoy triste por que no se resolver un script de php :(</p>
<p>Pero creo que si le pongo empeño lo puedo lograr 8)</p>
<p>Sin ponerme bravo :S, no creen ;)</p>
<p>Ya estoy bien contento, pues resolvi el problema :D</p>
<p>Gracias a FDW que me ha enseñado mucho :)</p>
</body>
</html>
<?php
// aqui desabilitamos el bufer
ob_end_flush();
?>

Bueno, espero como siempre haber sido útil, esto es solo un pequeño, pero válido ejemplo de como podemos usar las Funciones de Control de Salida

NOTA: La idea de crear esta entrada fue de una ayuda que brindé ayer en Foros del Web, aquí en este post.