26 Noviembre 2007

Meme: Sobre mí

Por Abel

Pues ya he contestado un meme sobre mí al hablar sobre mis 5 miedos más grandes, así que ahora responderé al meme que me ha enviado he leído en el blog de Alan sobre algo más personal.

Así que ahí va, quizás me salte algunas preguntas, pero es que son muchas y algunas no tienen relevancia… de hecho no creo que siquiera una de ellas les interese en lo más mínimo, pero ya saben, es el simple vicio de bloguear…

¿Nombre completo
Abel Botello
¿Por “quién” te dieron ese nombre?
Así se llama mi padre.
¿Le pides deseos a las estrellas
No.
¿Cuándo fue la última vez que lloraste?
No me acuerdo jeje…
¿Te gusta tu letra?
¡Me encanta! de hecho la tengo horrible, pero es uno de mis grandes sueños… escribir feo pero entendible para mí.
El pan te gusta ¿con qué?
Con un Squirt.
¿Cuántos hijos tienes?
Aún no llego a ese punto…
¿Y tu edad es?
21 años (22 el 20 de enero igual que mi compa Alan.)
¿Si fueras otra persona, serías tu amigo
Ni idea…
¿Tienes un diario de vida?
Eso me parece una ñoñada.
¿Eres sarcástic@
Sí y mucho jeje.
¿Saltarías en bungee?
No creo…
¿Cuál es tu cereal preferido?
Zucaritas y Nesquick
¿Te desabrochas los zapatos antes de sacártelos?
Mis zapatos no tienen agujetas, mis teniss sí pero no me los abrocho jeje solo meto y saco el pie.
¿Crees que eres fuerte?
Claro (y no es sarcasmo)
¿Tu helado favorito?
Vainilla con Oreo
¿Cuánto calzas?
8 cm.
¿Rojo o Rosa
Depende, si es para un carro, pues rojo y si es para mmm… no sé.
¿Qué es lo que menos te gusta de ti?
¡¡Que tengo papada!!.
¿A quién extrañas mucho?
A mi morrita…
¿Lo último que comiste hoy?
Un café y unas galletas de canela.
¿Qué estás escuchando en este momento
Una canción del grandioso álbum Scenes from a Memory.
¿La última persona con que hablaste por teléfono?
Uhm…con un ténico del Sun Global Resolution Center, su nombre es Liyaquat Khan / GRC Technician
¿Lo primero que te fijas en el sexo opuesto?
En sus ojos.
¿Cómo te cae la persona que te envió esto
Muy bien, no nos conocemos en persona pero llevamos una buena amistad.
¿Deporte favorito para ver por TV?
Si es un partido interesante como de la liga europea, pues el futbol, si es de México, pues algún partido de los Tomateros.
¿Color de Pelo?
Castaño oscuro
¿Color de ojos?
Café
¿Lentes de contacto?
No
¿Comida favorita?
Picadillo con arroz rojo… pero me conformo con unas quesadillas, frijoles, salsa y guacamole.
¿Última película que viste en el cine y con quién?
Yo los declaro marido y Larry, con mi chica
¿Día/s favorito/s del año?
Vacaciones de navidad… porque aquí no hace mucho frío y el clima es perfecto.
¿Besos o abrazos?
Lo que ella me dé…
¿Postre preferido?
No como postres jeje
¿Quién crees que te responderá?
Nadie, de hecho nunca me responden memes. La única vez que lo hicieron fue de un tío que no conocía.
¿El que menos crees que lo hará?
El Pancho.
¿Qué libro estás leyendo?
No leo libros, eso es de ñoños. Pero sí los consulto cuando es necesario.
¿Qué hay en tu pared?
Nada.
¿Qué viste anoche en la tele?
No veo la tele.
¿Rolling Stones o Beatles
Rolling Stones
¿Dónde es lo más lejos que has estado de tu casa?
San Francisco CA. en USA.

Pondré a prueba al Pancho a ver si quiere responder…

Escrito en Memes | Deja un comentario

20 Noviembre 2007

Una rebanada de π

Por Abel

******************
3.14159265358979
1640628620899
23172535940
881097566
5432664
09171
036
5

Desde Math Humour.

Escrito en Geek, Humor | Deja un comentario

19 Noviembre 2007

El gol número 1000 de Pelé

Por Abel

PeléPues sí, tal día como hoy pero de 1969 el famosísimo ex futbolista brasileño, jugador del siglo, anotó el gol número 1000 de su carrera deportiva.

Pelé jugaba con el equipo Santos contra el Vasco en el estadio Maracaná. El marcador era 1 a 1 hasta que en el minuto 33 del segundo tiempo un defensa del Vasco le comete falta a Pelé en el área. Se marca un pénalty que cobraría Pelé anotando con el pie derecho…

Anotaría otros 282 en el resto de su carrera que concluyó en 1977.

Escrito en Cultura, Efemérides | Deja un comentario

18 Noviembre 2007

Cómo acceder a los datos de XML en PHP

Por Abel

Bien, ahora si dedicaré una entrada completa al manejo de XML en PHP5. Veremos un ejemplo fácil y de paso servirá como explicación al funcionamiento de plugin que muestra la foto astronómica del día.

Lo primero de lo que hay que asegurarnos es de que el XML que vamos a parsear es válido. Esto significa que debe estar bien formado (un sólo elemento raíz, etiquetas abiertas y cerradas correctamente, anidaciones válidas, etc) y debe obedecer a un DTD. Después de segurarnos de esto, lo que sigue es trabajar sobre PHP5.

¿Por qué PHP5? por dos razones, una, nos da una orientación a objetos más eficiente que a versión 4 y, dos, nos provee de la extensión SimpleXMLElement que es con la trabajaremos el XML. ¿A caso PHP4 no tiene extensiones que hagan lo mismo? No lo sé, ni me interesa. PHP5 es mejor.

Bien, empecemos. Supongamos que tenemos un archivo XML llamado library.xml con el siguiente contenido:

<?xml version="1.0" ?>
<library>
	<book isbn="0345342968">
		<title>Fahrenheit 451</title>
		<author>R. Bradbury</author>
		<publisher>Del Rey</publisher>
	</book>
	<book isbn="0048231398">
		<title>The Silmarillion</title>
		<author>J.R.R. Tolkien</author>
		<publisher>G. Allen & Unwin</publisher>
	</book>
	<book isbn="0451524934">
		<title>1984</title>
		<author>G. Orwell</author>
		<publisher>Signet</publisher>
	</book>
	<book isbn="031219126X">
		<title>Frankenstein</title>
		<author>M. Shelley</author>
		<publisher>Bedford</publisher>
	</book>
	<book isbn="0312863551">
		<title>The Moon Is a Harsh Mistress</title>
		<author>R. A. Heinlein</author>
		<publisher>Orb</publisher>
	</book>
</library>

Y supongamos que lo que queremos hacer es una tabla con todos los libros y sus respectivos datos:

Title Author Publisher ISBN
Fahrenheit 451 R. Bradbury Del Rey 0345342968
The Silmarillion J.R.R. Tolkien G. Allen & Unwin 0048231398
1984 G. Orwell Signet 0451524934
Frankenstein M. Shelley Bedford 031219126X
The Moon Is a Harsh Mistress R. A. Heinlein Orb 0312863551

Debemos hacer una instancia de la clase SimpleXMLElement. Hay varias formas de hacerlo. Las dos primeras envuelven el uso de programación estructurada o usan funciones que solo regresan objetos SimpleXML.

// Carga una cadena XML desde un archivo...
$xmlstr = file_get_contents( 'library.xml' );
$library = simplexml_load_string( $xmlstr );

// Carga un archivo XML
$library = simplexml_load_file( 'library.xml' );

Las dos formas al final hacen lo mismo. Sin embargo en un escenario real definitivamente nos vamos por la segunda. Hay otras dos formas que implican el uso de algo más orientado a objetos:

// Carga una cadena XML desde un archivo...
$xmlstr = file_get_contents( 'library.xml' );
$library = new SimpleXMLElement( $xmlstr );

// Carga un archivo XML
$library = new SimpleXMLElement('library.xml', null, true);

Ahora sí, de las cuatro formas, recomiendo la última. El segundo argumento no tiene aplicación práctica para este ejemplo y el tercero es solo para informar al constructor que el primer parámetro es una ruta a un archivo y no una cadena XML.

Aquí viene lo interesante, el acceso a los hijos y atributos. He aquí por qué SimpleXMLElement hace magia; convierte a todos los nodos del árbol XML en atributos de clase y los atributos del XML mismo los convierte en variables a las que podemos acceder como arreglos asociativos.

Si hasta aquí todo va claro, entonces ya tenemos las bases para manipular de forma sencilla el archivo de la biblioteca para mostrar los libros en una tabla. Y nos debería quedar algo así:

echo '<table>';
echo '<tr>';
echo '<th>Title</th><th>Author</th>
       <th>Publisher</th><th>ISBN</th>';
echo '</tr>';
foreach( $library->book as $book ) {
	echo '<tr>';
	echo '<td>' . $book->title . '</td>';
	echo '<td>' . $book->author . '</td>';
	echo '<td>' . $book->publisher . '</td>';
	echo '<td>' . $book['isbn'] . ‘</td>’;
	echo ‘</tr>’;
}
echo ‘</table>’;

El problema ahora sería, ¿qué pasa si no conocemos todos los nombres de los elementos ni los atributos? SimpleXMLElement tiene la solución. Los métodos SimpleXMLElement::children() y SimpleXMLElement::attributes() así como el método recien introducido en PHP5.1.3 SimpleXMLElement::getName() nos ayudarán en gran medida.

Como bien se sobreentiende, el método children() regresa los nodos hijos de elemento actual. El método attributes() regresa los atributos del elemento actual y el método getName() el nombre del elemento actual. Todos se pueden aplicar recurrentemente dependiendo del nivel de anidación de los elementos. Es decir, si estamos en el elemento $x, y llamamos a $x->children() obtendremos a los hijos de $x, y si a uno de esos hijos le aplicamos el children() obtendremos los nietos de $x, y así sucesivamente.

De modo que, para concluir, el plugin que hice solo lee el feed, saco el nodo hijo <item> del elemento raíz que es <channel> llamándolo así:

$item = $apod->channel->item[0];

La posición cero indica que es el primer item del documento, es decir, el elemento con el cual se ha actualizado el feed. Y con ese elemento trabajo para obtener los demás datos. Por ejemplo, si la descripción es un elemento hijo de cada item, la obtengo así:

$descripcion = $apod->channel->item[0]->description;

Hasta aquí llega el microtutorial de hoy que ha servido para ver cómo parsear una cadena de XML para leerla nada más. La próxima semana escribiré cómo modificar documentos XML.

Fuente de inspiración: El manual para certificación de Zend PHP.

Escrito en Microtutoriales, PHP | 9 Comentarios

15 Noviembre 2007

¿Te aburres en internet?

Por Abel

¿Te aburres en internet?

Visto en las famosas viñetas de xkcd.

Escrito en Humor | Deja un comentario

15 Noviembre 2007

Plugin para mostrar la foto astronómica del dia

Por Abel

Hace tiempo que quiero escribir algo sobre el manejo de XML en PHP5, pero por una u otra cosa no he podido hacerlo. Sin embargo hoy, mientras veía la foto astronomica del día del proyecto Observatorio, pensé que sería bueno hacer un plugin para mostrar la foto diaria en el blog.

Mientras pensaba cómo hacerlo se me ocurrió que la mejor forma era usando su feed y haciendo un parsing para obtener los datos. Así que recordé que con la extensión SimpleXMLElement de PHP5, manejar contenidos XML es lo más fácil del mundo, así que me puse manos a la obra. Desarrollé un plugin para mostrar la foto astronómica del día.

Bien, explicaré brevemente cómo funciona mi plugin. Lo primero es crear una instancia de SimpleXMLElement usando como parámetro el Feed RSS feed de Observatorio . Una vez teniendo nuestro objeto SimpleXML tomamos los nodos del árbol XML necesarios para mostrar la foto -enlace, titulo, descripción-. Obviamente, solo tomamos la información correspondiente a la foto actual.

Hacemos algunos ajustes necesarios, como por ejemplo, sacar el código de la imagen de dentro de la descripción de la foto o modificar el título para quitarle la fecha. Después se imprime la imagen usando XHTML válido, y finalmente disfrutamos de la belleza del cosmos integrando la foto a nuestra theme tal y como aparece en la parte superior izquierda de esta ventana.

Cabe destacar que el proyecto Observatorio, ha tenido un éxito enorme a pesar de ser la versión en español de la APOD oficial de la NASA

Para usar este plugin solo hay un requisito, tu blog debe correr sobre PHP5. ¿Por qué lo hice así? Por dos razones; primero, debemos ir cambiando ya nuestra forma de programar en PHP, he notado que la gran mayoría de scripts que veo en internet son hechos usando un paradigma funcional y estructurado. La ¡Programación Orientada a Objetos ya existe! y por eso este plugin funciona como consecuencia de instanciar una clase, además el soporte que da PHP5 a la orientación a objetos es mucho muy superior a la de PHP4. Segundo, porque la clase SimpleXMLElement, que es con la que parseamos el Feed, no está disponible en PHP4. Así que no quedó de otra…

Para usarlo, solo descárgalo, actívalo y en la parte del theme que más te guste escribes:

   <?php if( class_exists('APOD') ) new APOD() ?>

Está bien documentado y el código es claro. Cualquier duda, bug o comentario es bien recibido.

Escrito en Plugins | 2 Comentarios

8 Noviembre 2007

Día Mundial del Urbanismo

Por Abel

Hoy como todos los años desde 1949 se celebra mundialmente el día del Urbanismo que no es otra cosa sino el estudio y ordenamiento de los componentes dinámicos de una ciudad, es decir, la sociedad con sus necesidades, hábitos y cultura y el medio ambiente con sus posibilidades, para satisfacer las necesidades del hombre en sociedad.

Bandera representativa del Urbanismo

El propósito de esta celebración es abogar por los intereses públicos y profesionales de la planificación urbana. Es un día especial donde se reconoce y promueve el rol de la planificación en la creación de comunidades sustentables. El Día Mundial del Urbanismo presenta una excelente oportunidad para visualizar la planificación desde una perspectiva global, pues es un evento que apela a la conciencia de los ciudadanos y las autoridades públicas al llamar la atención hacia el impacto ambiental que produce el desarrollo de ciudades y territorios.

Fuente oficial:
Dia Mundial del Urbanismo

Escrito en Cultura, Efemérides | 1 Comentario

  • Ventana al cosmos

  • Apollo 17: Anaglifo de asientos VIP

  • Publicidad