<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="http://feeds.feedburner.com/~d/styles/rss2full.xsl" type="text/xsl" media="screen"?><?xml-stylesheet href="http://feeds.feedburner.com/~d/styles/itemcontent.css" type="text/css" media="screen"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0" xml:base="http://cambrico.net">
<channel>
 <title>cambrico.net - De Drupal, MySql y muchas más cosas</title>
 <link>http://cambrico.net</link>
 <description />
 <language>es</language>
<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/cambrico" type="application/rss+xml" /><item>
 <title>MySql Game, un juego online para geeks de las bases de datos</title>
 <link>http://feeds.feedburner.com/~r/cambrico/~3/375463474/mysql-game-un-juego-online-para-geeks-de-las-bases-de-datos</link>
 <description>&lt;p&gt;&lt;a href="http://mysqlgame.appspot.com"&gt;MySql game&lt;/a&gt; es un juego que me ha recordado mucho a los viejos &lt;a href="http://es.wikipedia.org/wiki/Mud"&gt;MUD&lt;/a&gt; con una mezcla de juegos modernos estilo &lt;a href="http://www.trivian.com/"&gt;trivian&lt;/a&gt; u &lt;a href="http://www.ogame.com.es/"&gt;ogame&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;La gran diferencia es que está dedicado a geeks de las bases de datos, en lugar de fundar un poblado o un planeta, empiezas &lt;strong&gt;insertando un registro en una tabla&lt;/strong&gt;. Desde este registro puedes atacar a los registros de tus malvados rivales, y también debes defender el tuyo. Para ello cuentas con unidades de ataque y de defensa, multiplicadores, combustible (porque moverte de un registro de una base de datos es costoso) o dinero para comprar todo lo anterior.&lt;/p&gt;
&lt;p&gt;Lo mas curioso, lo que hace distinto al juego, es que todas las órdenes que le das, son sentencias SQL, por ejemplo, para comprar unidades de ataque:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;UPDATE rows SET attackers = attackers+1 WHERE row_id = 882;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Cada &lt;em&gt;10 segundos&lt;/em&gt; se actualiza el estado de tu registro y ganas dinero y combustible, y con el dinero compras unidades, o más defensa. Y todos los eventos que pasan alrededor de tu registro y de los demás, se pueden ver en el log de querys,&lt;strong&gt; los ataques contra tu registro son sentencias UPDATE&lt;/strong&gt; que te quitan dinero e unidades, y se visualizan en color rojo (en el WHERE del ataque puedes ver el registro ofensor, para devolversela más tarde). Los ataques que tú realizas se marcan en naranja y las actualizaciones en azul. ¡Hasta el chat funciona con sentencias SQL!&lt;/p&gt;
&lt;p&gt;Está dentro del &lt;a href="http://appgallery.appspot.com/"&gt;motor de aplicaciones de google&lt;/a&gt;, por lo que, con una cuenta de gmail puedes crear tu propio registro para dominar la tabla completa &lt;strong&gt;BWAHAHA&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;!--break--&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feeds.feedburner.com/~a/cambrico?a=jmfRUO"&gt;&lt;img src="http://feeds.feedburner.com/~a/cambrico?i=jmfRUO" border="0"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;</description>
 <comments>http://cambrico.net/mysql/mysql-game-un-juego-online-para-geeks-de-las-bases-de-datos#comments</comments>
 <category domain="http://cambrico.net/category/categorias/mysql">mysql</category>
 <pubDate>Tue, 26 Aug 2008 18:24:39 +0000</pubDate>
 <dc:creator>pedro</dc:creator>
 <guid isPermaLink="false">160 at http://cambrico.net</guid>
<feedburner:origLink>http://cambrico.net/mysql/mysql-game-un-juego-online-para-geeks-de-las-bases-de-datos</feedburner:origLink></item>
<item>
 <title>Siete días en Lisboa, día cuatro: Castillo de San Jorge, Casa do Alentejo y Benfica</title>
 <link>http://feeds.feedburner.com/~r/cambrico/~3/375289882/siete-dias-en-lisboa-dia-cuatro-castillo-de-san-jorge-casa-do-alentejo-y-benfica</link>
 <description>&lt;p&gt;Aquí viene el resumen de la semanita que &lt;a href="http://lcastro.es"&gt;Lorena&lt;/a&gt; y yo nos hemos pasado en Lisboa. La impresión general ha sido muy muy grata, nos hemos llevado muchas sorpresas agradables y algunas, no muchas, no demasiado placenteras. Voy a intentar contarlas todas.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://cambrico.net/viajes/siete-dias-en-lisboa-dia-uno-el-hotel-toma-de-contacto-y-almada"&gt;Aquí puedes ver el día uno&lt;/a&gt;.&lt;br /&gt;
&lt;a href="http://cambrico.net/viajes/siete-dias-en-lisboa-dia-dos-jardim-zoologico-cementerio-dos-prazeres-y-estrela"&gt;Aquí puedes ver el día dos&lt;/a&gt;.&lt;br /&gt;
&lt;a href="http://cambrico.net/viajes/siete-dias-en-lisboa-dia-tres-sintra-y-cascais"&gt;Aquí puedes ver el día tres&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Este es el &lt;strong&gt;día cuatro&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;El cuarto comenzó en el barrio de Alfama de Lisboa, fuimos a uno de las visitas &lt;em&gt;imprescindibles&lt;/em&gt; de la ciudad: el &lt;a href="http://es.wikipedia.org/wiki/Castillo_de_San_Jorge_de_Lisboa"&gt;Castillo de San Jorge&lt;/a&gt; (&lt;em&gt;Castelo de São Jorge&lt;/em&gt;). El castillo preside la zona más antigüa de Lisboa y puede alcanzarse a pie, en el tranvía número 28, que recorre todo el barrio antigüo, o en el autobús 37, que deja a las puertas.&lt;br /&gt;
Al ser uno de los lugares más turísticos, conviene ir pronto para evitar las colas, sobre todo a la hora de tomar el transporte para subir y comprar la entrada, que cuesta &lt;strong&gt;5€&lt;/strong&gt;, pero hacen descuento con carnet de estudiante (los carnets universitarios de España también sirven). Aquí podéis ver la tabla de &lt;a href="http://www.castelosaojorge.egeac.pt/DesktopDefault.aspx?tabindex=7&amp;amp;tabid=28"&gt;precios y descuentos&lt;/a&gt;, que, como es habitual, para los residentes en Lisboa es gratuita, por lo que es habitual que muchos lisboetas acudan al castillo con sus familias los fines de semana, para dar un agradable paseo.&lt;br /&gt;
Se puede pasear por los recovecos del castillo, disfrutando de las estupendas vistas de la ciudad, y acceder a través de un puente al interior, donde se puede subir a las almenas y recorrer el interior del Castelejo. También se puede subir a la Torre de Ulises, que ofrece una vista de Lisboa, según marca el folleto, en 360º, pero cuando nosotros fuimos, no estaba abierta.&lt;br /&gt;
El castillo está mejor conservado que el &lt;a href="http://cambrico.net/viajes/siete-dias-en-lisboa-dia-tres-sintra-y-cascais"&gt;Caselo dos Mouros&lt;/a&gt;, en Sintra y no tiene zonas peligrosas. A la salida hay varias artesanas que ofrecen grabados en carboncillo o joyas hechas por ellas mismas muy interesantes. La tienda del Castelo no merece la pena.&lt;/p&gt;
&lt;p&gt;&lt;img src="/sites/cambrico.net/files/u1/castillo-de-san-jorge.jpg" width="250" height="200" alt="" /&gt;&lt;img src="/sites/cambrico.net/files/u1/elevador-santa-justa.jpg" width="250" height="200" alt="" /&gt;&lt;br /&gt;
&lt;small&gt;Castillo de San Jorge / Elevador de Santa Justa&lt;/small&gt;&lt;br /&gt;
&lt;!--break--&gt;&lt;br /&gt;
La siguiente parada fue la &lt;strong&gt;Casa do Alentejo&lt;/strong&gt; en el barrio de Chiado, un &lt;em&gt;peculiar &lt;/em&gt;edificio del siglo XVII que sirve de punto de encuentro para la gente de la región de &lt;a href="http://es.wikipedia.org/wiki/Alentejo"&gt;Alentejo&lt;/a&gt;, tiene un restaurante y un bar, además de una tienda de recuerdos tan peculiar como el edificio en sí. La entrada es libre y gratuita, y tiene un patio interior que recuerda a los patios andaluces. Si vais pocos días a Lisboa, os la podéis ahorrar perfectamente.&lt;/p&gt;
&lt;p&gt;&lt;img src="/sites/cambrico.net/files/u1/casa-do-alentejo-patio.jpg" width="250" height="200" alt="" /&gt;&lt;img src="/sites/cambrico.net/files/u1/casa-do-alentejo.jpg" width="250" height="200" alt="" /&gt;&lt;br /&gt;
&lt;small&gt;Casa do Alentejo&lt;/small&gt;&lt;/p&gt;
&lt;p&gt;El final del día fue poco habitual, fuimos a la primera edición del trofeo dedicado a &lt;a href="http://es.wikipedia.org/wiki/Eus%C3%A9bio_da_Silva_Ferreira"&gt;Eusebio&lt;/a&gt; que enfrentaba al Benfica, como organizador y al Inter de Milan, como invitado. He de decir que el espectáculo que el Benfica tiene organizado en el &lt;a href="http://es.wikipedia.org/wiki/Est%C3%A1dio_da_Luz"&gt;estadio de la luz&lt;/a&gt; es formidable. La gente acude hasta tres y cuatro horas antes del partido a pasear por el centro comercial que hay adosado al estadio y hacerse fotografías con el halcón, la mascota del equipo, al que hacen volar y dar una vuelta al estadio, hasta que aterriza en el centro del campo, antes de cada encuentro.&lt;br /&gt;
El Benfica tiene muy americanizado todo lo referente al marketing y la afición, al detalle de la mascota y el centro comercial del estadio, debemos añadirle las cheerleaders que saltan al descanso y la petición de mano que se produjo antes del partido, un aficionado sacó a su pareja al campo, y ante los 54000 espectadores, le pidió matrimonio (ella aceptó, como para no, imaginaros el abucheo).&lt;br /&gt;
Tras el partido, vimos a un grupo de aficionados y nos quedamos a esperar la salida de los jugadores, finalmente vimos a casi todos (aunque los españoles no pararon) y conseguimos el autógrafo de la estrella local, &lt;a href="http://es.wikipedia.org/wiki/Nuno_Gomes"&gt;Nuno Gomes&lt;/a&gt;, que se mostró muy amable con todos, y salió a darle una camiseta del maletero de su ferrari a uno de los chavales que estaba esperando.&lt;/p&gt;
&lt;p&gt;&lt;img src="/sites/cambrico.net/files/u1/estadio-benfica.jpg" width="250" height="200" alt="" /&gt;&lt;img src="/sites/cambrico.net/files/u1/saque-de_honor.jpg" width="250" height="200" alt="" /&gt;&lt;br /&gt;
&lt;small&gt;Estadio de la Luz / Saque de honor de Eusebio, con Aimar y Figo de testigos&lt;/small&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feeds.feedburner.com/~a/cambrico?a=tljpHi"&gt;&lt;img src="http://feeds.feedburner.com/~a/cambrico?i=tljpHi" border="0"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;</description>
 <comments>http://cambrico.net/siete-dias-en-lisboa-dia-cuatro-castillo-de-san-jorge-casa-do-alentejo-y-benfica#comments</comments>
 <pubDate>Tue, 26 Aug 2008 14:01:45 +0000</pubDate>
 <dc:creator>pedro</dc:creator>
 <guid isPermaLink="false">159 at http://cambrico.net</guid>
<feedburner:origLink>http://cambrico.net/siete-dias-en-lisboa-dia-cuatro-castillo-de-san-jorge-casa-do-alentejo-y-benfica</feedburner:origLink></item>
<item>
 <title>Siete días en Lisboa, día tres: Sintra y Cascais</title>
 <link>http://feeds.feedburner.com/~r/cambrico/~3/373565250/siete-dias-en-lisboa-dia-tres-sintra-y-cascais</link>
 <description>&lt;p&gt;Aquí viene el resumen de la semanita que &lt;a href="http://lcastro.es"&gt;Lorena&lt;/a&gt; y yo nos hemos pasado en Lisboa. La impresión general ha sido muy muy grata, nos hemos llevado muchas sorpresas agradables y algunas, no muchas, no demasiado placenteras. Voy a intentar contarlas todas.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://cambrico.net/viajes/siete-dias-en-lisboa-dia-uno-el-hotel-toma-de-contacto-y-almada"&gt;Aquí puedes ver el día uno&lt;/a&gt;.&lt;br /&gt;
&lt;a href="http://cambrico.net/viajes/siete-dias-en-lisboa-dia-dos-jardim-zoologico-cementerio-dos-prazeres-y-estrela"&gt;Aquí puedes ver el día dos&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Este es el &lt;strong&gt;día tres&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://lcastro.es/25-08-2008/visitar-lisboa-dia-3"&gt;Aquí puedes ver el tercer día relatado por Lorena&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Una de las visitas obligatorias al ir a Lisboa es el cercano pueblo de &lt;a href="http://es.wikipedia.org/wiki/Sintra"&gt;Sintra&lt;/a&gt;, antigüa residencia de la famila real portuguesa (Portugal es una república desde 1910), y patrimonio de la humanidad, según la UNESCO, desde 1995.&lt;br /&gt;
Para ir a Sintra desde Lisboa, la forma más cómoda es el tren, que se puede coger desde las estaciones lisboetas de Sete Rios o Entrecampos. Nuestro hotel estaba muy cerca de la estación de Sete Rios y fuimos andando, si te alojas lejos, la mejor opción es ir en metro, línea azul, hasta la estación del Jardim Zoologico, que está junto a Sete Rios. Si tienes mas a mano la línea amarilla, también puedes ir a la parada de Entrecampos.&lt;br /&gt;
Como nuestro plan era ir a ver Sintra y Cascais en el mismo día, optamos por adquirir un bono de transporte válido para trenes y buses de toda la zona, que incluye el bus que recorre los lugares interesantes de Sintra. El bono se puede adquirir en la misma estación de tren y lo proporciona la empresa de transporte &lt;a href="http://www.scotturb.com/"&gt;Scott&lt;/a&gt;. El precio es de &lt;strong&gt;12€ por persona&lt;/strong&gt;, quizás si solamente vais a Sintra o Cascais, no merezca la pena, pero si pensais moveros por la zona, es muy recomendable.&lt;br /&gt;
Como detalle importante para llegar a Sintra, es que &lt;strong&gt;no hay tren directo desde Lisboa&lt;/strong&gt;, esto es algo que no pudimos confirmar hasta preguntar en la estación de trenes, ya que no queda muy claro en foros e informaciones ferroviarias. La forma más fácil de llegar, es tomar el tren que va hacia &lt;strong&gt;Mira-Sintra&lt;/strong&gt;, bajaros en la penúltima estación: &lt;strong&gt;Agualva-Cacém&lt;/strong&gt; y allí esperáis en el mismo andén al siguiente tren que va hacia la ciudad de Sintra, en la página de los &lt;a href="http://www.cp.pt/cp/displayPage.do?vgnextoid=9ee56e29d6b74010VgnVCM1000007b01a8c0RCRD"&gt;comboios portugueses&lt;/a&gt;, podréis encontrar más detalles.&lt;/p&gt;
&lt;p&gt;&lt;img src="/sites/cambrico.net/files/u1/estacion-agualva.jpg" width="250" height="200" alt="" /&gt;&lt;img src="/sites/cambrico.net/files/u1/tren-a-sintra.jpg" width="250" height="185" alt="" /&gt;&lt;br /&gt;
&lt;small&gt;Estación de Agualva / Tren a Sintra&lt;/small&gt;&lt;br /&gt;
&lt;!--break--&gt;&lt;br /&gt;
Una vez en Sintra, el tren, con transbordo incluido, tarda unos 45 minutos, a la vuelta de la estación de tren, encontraréis una oficina de turismo en la que os atenderán en español, inglés y supongo que un montón de idiomas más, os proporcionarán mapas de la zona e informaciones de autobuses. Nosotros teniamos previsto ir a las tres atracciones turísticas principales: &lt;a href="http://es.wikipedia.org/wiki/Palacio_de_Pena"&gt;El palacio de Pena&lt;/a&gt;, el &lt;a href="http://es.wikipedia.org/wiki/Castelo_dos_Mouros_(Sintra)"&gt;Castelo dos Mouros&lt;/a&gt; y el &lt;a href="http://es.wikipedia.org/wiki/Pal%C3%A1cio_Nacional_de_Sintra"&gt;Palacio Nacional de Sintra&lt;/a&gt;.&lt;br /&gt;
Nuestra intención inicial era ver primero el Castelo dos Mouros y luego el Palacio de Pena, para hacer esto, se debe coger el &lt;strong&gt;autobús 434&lt;/strong&gt; que sale desde al lado de la oficina de turismo y en el que puedes subir y bajar cuantas veces quieras con el bono de transporte que he comentado antes.&lt;br /&gt;
Antes de seguir, debo preveniros de lo que os vais a encontrar en Sintra si váis en temporada alta, desconozco como será el pueblo en otros momentos. Es un lugar absolutamente turístico, muy abarrotado y con mucho tráfico, encontraréis tiendas de souvenirs y restaurantes para turistas por todas partes. Es muy muy recomendable llegar lo antes posible, para estar tranquilos en, al menos uno de los lugares que vayáis a visitar.&lt;br /&gt;
Nosotros elegimos el Castelo dos Mouros para este primer lugar, y creo que no nos equivocamos, es un castillo medieval que ofrece unas vistas impresionantes de Sintra, y es bueno visitarlo con poca gente, ya que tiene unos lugares un tanto peligrosos, al tratarse de un castillo en ruinas que está situado en una montaña donde pega un viento considerable. Si entráis con niños, no os recomiendo que os subáis a las almenas.&lt;br /&gt;
El Castelo está rodeado de un parque enorme, en el que podéis perderos. Nosotros nos perdimos.&lt;br /&gt;
La &lt;strong&gt;entrada cuesta 8€&lt;/strong&gt;, pero si vais a visitar el Palacio de Pena, podéis adquirir una &lt;strong&gt;entrada combinada por 13€ &lt;/strong&gt;por persona (os ahorrais la cola para la entrada en el Palacio y 3€). También es recomendable coger los mapas (gratuitos) de ambos sitios aquí, los tienen en español, portugués e inglés.&lt;/p&gt;
&lt;p&gt;&lt;img src="/sites/cambrico.net/files/u1/castelo-dos-mouros.jpg" width="250" height="200" alt="" /&gt;&lt;img src="/sites/cambrico.net/files/u1/-nacional-de-sintra-desde-castelo-dos-mouros.jpg" width="250" height="200" alt="" /&gt;&lt;br /&gt;
&lt;small&gt;Castelo dos mouros / Palacio nacional de Sintra desde el Castelo dos Mouros&lt;/small&gt;&lt;/p&gt;
&lt;p&gt;Nuestra intención inicial era la de aprovechar que no era muy tarde y dar un paseo hasta el Palacio de Pena, pero nos perdimos. Cogimos un camino que en teoría llevaba al Palacio, pero acabamos en Sintra de nuevo, y fue una de las mejores cosas del día, ya que encontramos una &lt;a href="http://www.flickr.com/photos/25381422@N03/2780464475/"&gt;pequeña casita&lt;/a&gt; donde había residido &lt;a href="http://es.wikipedia.org/wiki/Hans_Christian_Andersen"&gt;Hans Cristian Andersen&lt;/a&gt; en su viaje a Portugal en 1866 alojado por unos amigos. Andersen dijo que en Sintra todo extranjero encuentra un pedazo de su patria y el había descubierto allí Dinamarca... La casa no se puede visitar por dentro, pero fuera tiene una placa conmemorativa, está en la calle &lt;a href="http://www.google.com/maps?f=q&amp;amp;hl=es&amp;amp;geocode=&amp;amp;q=Casa+do+Adro,+sintra,+portugal&amp;amp;ie=UTF8&amp;amp;ll=38.792945,-9.384019&amp;amp;spn=0.012292,0.027895&amp;amp;z=16"&gt;Casa do Adro 9&lt;/a&gt;, cerca de la Calçada dos Clerigos.&lt;br /&gt;
Ya que estabamos de nuevo en el pueblo, cambiamos los planes y fuimos primero al &lt;strong&gt;Palacio Nacional de Sintra&lt;/strong&gt;, un palacio real urbano del siglo XVI, muy bien conservado y del que se puede visitar su interior por &lt;strong&gt;5€&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;&lt;img src="/sites/cambrico.net/files/u1/palacio-nacional-de-sintra.jpg" width="250" height="200" alt="" /&gt;&lt;img src="/sites/cambrico.net/files/u1/prision-alfonso-vi.jpg" width="250" height="200" alt="" /&gt;&lt;br /&gt;
&lt;small&gt;Palacio Nacional de Sintra / Prisión de &lt;a href="http://es.wikipedia.org/wiki/Alfonso_VI_de_Portugal"&gt;Alfonso VI de Portugal&lt;/a&gt; dentro del Palacio&lt;/small&gt;&lt;/p&gt;
&lt;p&gt;Finalizamos nuestro día en Sintra subiendo de nuevo en el autobús 434 hasta el Palacio de Pena, en el que había una cola impresionante para comprar la &lt;strong&gt;entrada (8-11€)&lt;/strong&gt;, pero nosotros ya habiamos comprado la entrada combinada en el Castelo dos Mouros. Hay un pequeño autobús/tren que te sube de la entrada al Palacio recorriendo los jardines, &lt;strong&gt;cuesta 2€ y no merece la pena&lt;/strong&gt;.&lt;br /&gt;
Este también es un palacio real, pero mucho más bonito que el nacional, aunque también más moderno, del siglo XIX. Tiene unas vistas impresionante y es muy recomendable recorrer, no solo el palacio, sino también sus jardines, en los que puedes llegar a perderte, aquí no nos perdimos ;).&lt;br /&gt;
&lt;em&gt;¡Aviso para viajeros!&lt;/em&gt; &lt;strong&gt;Del interior del Palacio de Pena os podréis llevar poco recuerdo, ya que no permiten hacer fotos&lt;/strong&gt;, un vigilante en cada sala se asegura de que los turistas no estropeen ni retraten nada. El interior del palacio muestra centenares de objetos cotidianos de Palacio, desde los tocadores, con peines de plata y cantareras, hasta la cocina, pasando por ostentosas salas dedicadas a árabes y orientales y también dormitorios.&lt;br /&gt;
Por cierto, la entrada a estos lugares, es gratuita para los habitantes del municipio los domingos, iniciativas así son habituales región de Lisboa y que bien podrían tomar nota muchos de los ayuntamientos españoles, entre ellos, el de Barcelona.&lt;/p&gt;
&lt;p&gt;&lt;img src="/sites/cambrico.net/files/u1/palacio-de-pena.jpg" width="250" height="200" alt="" /&gt;&lt;img src="/sites/cambrico.net/files/u1/buen-rollito-palacio-de-pena.jpg" width="250" height="200" alt="" /&gt;&lt;br /&gt;
&lt;small&gt;Palacio de Pena / Estátua amistosa y afable del exterior del palacio&lt;/small&gt;&lt;/p&gt;
&lt;p&gt;Nuestra última parada antes de regresar a Lisboa, era &lt;a href="http://es.wikipedia.org/wiki/Cascais"&gt;Cascais&lt;/a&gt;, desde Sintra se llega con un tortuoso viaje en el autobús 417 (recomiendo coger los horarios en la oficina de turismo, porque pasa de higos a peras).&lt;br /&gt;
En Cascais dimos un largo paseo por la playa, ya que no hacía un día como para bañarse, solamente unos cuantos intrépidos se habían atrevido y nos relajamos un rato después del mareante viaje de autobús, regresamos a Lisboa utilizando el tren (comboio) que lleva directo a Lisboa, dejándote en la estación de metro-tren-ferry de Cais do Sodré.&lt;/p&gt;
&lt;p&gt;De vuelta en Lisboa, nos volvimos a perder buscando un restaurante en el barrio alto y dimos con un sitio muy especial, la &lt;strong&gt;Adega do Teixeira&lt;/strong&gt;, en la &lt;a href="http://www.google.com/maps?f=q&amp;amp;hl=es&amp;amp;geocode=&amp;amp;q=rua+do+teixeira+39,+lisboa,+portugal&amp;amp;sll=37.0625,-95.677068&amp;amp;sspn=52.418008,114.257812&amp;amp;ie=UTF8&amp;amp;z=17&amp;amp;iwloc=addr"&gt;Rua do Teixeira 39&lt;/a&gt;. Un restaurante con un ambiente muy relajado y los camareros más amables de la historia, la comida está increible y te hacen un maravilloso café con unos artilúgios más propios de un laboratorio que de un restaurante. Si vais a Lisboa, &lt;strong&gt;tenéis que ir a este restaurante&lt;/strong&gt;. Nosotros no volvimos porque cerraban el resto de días que estabamos en Lisboa por unas pequeñas vacaciones, toda una lástima.&lt;/p&gt;
&lt;p&gt;&lt;img src="/sites/cambrico.net/files/u1/adega-do-teixeira.jpg" width="250" height="200" alt="" /&gt;&lt;img src="/sites/cambrico.net/files/u1/cafe-adega-do-teixeira.jpg" width="250" height="200" alt="" /&gt;&lt;br /&gt;
&lt;small&gt;Exterior del restaurante / Laboratorio del café&lt;/small&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feeds.feedburner.com/~a/cambrico?a=3zPNfn"&gt;&lt;img src="http://feeds.feedburner.com/~a/cambrico?i=3zPNfn" border="0"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;</description>
 <comments>http://cambrico.net/viajes/siete-dias-en-lisboa-dia-tres-sintra-y-cascais#comments</comments>
 <category domain="http://cambrico.net/category/categorias/viajes">viajes</category>
 <pubDate>Sun, 24 Aug 2008 14:53:43 +0000</pubDate>
 <dc:creator>pedro</dc:creator>
 <guid isPermaLink="false">158 at http://cambrico.net</guid>
<feedburner:origLink>http://cambrico.net/viajes/siete-dias-en-lisboa-dia-tres-sintra-y-cascais</feedburner:origLink></item>
<item>
 <title>Siete días en Lisboa, día dos: jardim zoologico, cementerio dos prazeres y estrela</title>
 <link>http://feeds.feedburner.com/~r/cambrico/~3/372215138/siete-dias-en-lisboa-dia-dos-jardim-zoologico-cementerio-dos-prazeres-y-estrela</link>
 <description>&lt;p&gt;Aquí viene el resumen de la semanita que &lt;a href="http://lcastro.es/"&gt;Lorena&lt;/a&gt; y yo nos hemos pasado en Lisboa. La impresión general ha sido muy muy grata, nos hemos llevado muchas sorpresas agradables y algunas, no muchas, no demasiado placenteras. Voy a intentar contarlas todas.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://cambrico.net/viajes/siete-dias-en-lisboa-dia-uno-el-hotel-toma-de-contacto-y-almada"&gt;Aquí puedes ver el día uno&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Este es el &lt;strong&gt;día dos&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://lcastro.es/22-08-2008/visita-a-lisboa-dia-2"&gt;Día dos según Lorena&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Una de las ventajas de la situación del hotel que escogimos (detalles en el día uno), es que está a dos pasos del &lt;a href="http://www.zoo.pt"&gt;Jardim Zoológico de Lisboa&lt;/a&gt;, una de las paradas marcadas como obligatorias en nuestro itinerario inicial.&lt;br /&gt;
Si no estás alojado cerca, lo recomendable es coger el metro, línea azul y pararte en la parada &lt;em&gt;Jardim Zoologico&lt;/em&gt; que está pegadita, claro. También puedes ir en alguno de los buses, o incluso en tren, si llegas de fuera de Lisboa, la estación &lt;em&gt;Sete Ríos&lt;/em&gt; está junto al metro.&lt;br /&gt;
Nos levantamos prontito para ir al zoo sin demasiadas colas, pero a las 10.15 ya habia bastante gente esperando, conviene llegar lo antes posible (abren a las 10), ya que una de las cosas que más merece la pena, el espectaculo con los delfines, &lt;em&gt;golfinhos &lt;/em&gt;en portugués, empieza a las 11. Aunque realmente, a mi me gustaron más los leones marinos adiestrados que tienen como teloneros, son muy simpáticos e incluso los hacen pasar entre el público para que puedas tocarlos.&lt;br /&gt;
El zoo cuesta &lt;strong&gt;15€ por persona&lt;/strong&gt;, pero en los hoteles podréis encontrar algunos cupones de descuento, eso sí, para periodos no estivales. Con la Lisboa Card hacen un 15% de descuento.&lt;/p&gt;
&lt;p&gt;&lt;img src="/sites/cambrico.net/files/u1/leon-marino.jpg" width="250" height="200" alt="" /&gt;&lt;img src="/sites/cambrico.net/files/u1/delfin.jpg" width="250" height="200" alt="" /&gt;&lt;br /&gt;
&lt;small&gt;León marino saludando / Espectáculo de los delfines&lt;/small&gt;&lt;/p&gt;
&lt;p&gt;El resto del zoo está bastante bien, no muy abarrotado, y los animales están cerca, quizás &lt;strong&gt;demasiado &lt;/strong&gt;cerca, los tigres apenas tienen una pequeña reja y los puedes ver a menos de un metro, impresionante. Tienen varias actividades educativas más, como la alimentación de los leones marinos o los pelícanos, donde explican, en portugués, claro, las carácterísticas y costumbres de cada animal.&lt;br /&gt;
En una mañana tienes el zoo visto, pero &lt;strong&gt;la hora de comer puede ser un poco caótica&lt;/strong&gt;. Probablemente encontrarás la zona de los jardines de la entrada al zoo abarrotada, ya que hay muchos restaurantes y paradas con comida, todos llenos, hay un McDonald's y puestos de perritos calientes, que los llaman &lt;em&gt;cachorros &lt;/em&gt;y te los sirven con patatas fritas (patatas-paja) por encima, de una calidad dudosa.&lt;br /&gt;
Es decir, muchas colas y comida de baja calidad, nosotros acabamos en un puesto de cachorros, pero si piensas quedarte a comer en la zona, lo recomendable es llevarte bocata.&lt;br /&gt;
Si aún así te quedas a comer por ahí, ¡estás avisado!.&lt;br /&gt;
La tienda del Zoo se llama &lt;em&gt;Zoovenirs &lt;/em&gt;(muy original el nombre) y tienen lo típico, peluches, tazas... yo me traje una camiseta del zoo por 7€ así que puedo decir que la tienda es relativamente barata.&lt;/p&gt;
&lt;p&gt;&lt;img src="/sites/cambrico.net/files/u1/leon-a-la-pachorra.jpg" width="250" height="200" alt="" /&gt;&lt;img src="/sites/cambrico.net/files/u1/gorila.jpg" width="250" height="200" alt="" /&gt;&lt;br /&gt;
&lt;small&gt;León tumbado a la bartola / Gorilas&lt;/small&gt;&lt;/p&gt;
&lt;p&gt;Tras comer en el zoo, tomamos un autobús (el 701, creo) para nuestra siguiente parada, el &lt;a href="http://pt.wikipedia.org/wiki/Cemit%C3%A9rio_dos_Prazeres"&gt;cemiterio dos prazeres&lt;/a&gt; (Cementerio de los placeres), ya que consideramos que era una de las mejores formas de entender la forma de vida de la gente de Lisboa. La entrada es libre y gratuita, y no parecen poner problemas para hacer fotos de los monumentos funerarios o las vistas. Es un lugar muy tranquilo y muy especial.&lt;br /&gt;
Como curiosidades que nos llevamos, los lisboetas tienen panteones similares a pequeñas casas, algunas con jardin, con cortinas o ventanas, y los ataúdes no están enterrados, sino colocados dentro de estas casas y acompañados de algunos objetos personales de la familia. Muchas de ellas tienen el nombre del arquitecto que las construyó grabado en el mármol exterior. Hay, además, muchas conmemoraciones a los bomberos y bomberos voluntarios, a los que parece que se les rinde mucho homenaje en toda Lisboa.&lt;/p&gt;
&lt;p&gt;&lt;img src="/sites/cambrico.net/files/u1/entrada_al_cementerio_dos_prazeres.jpg" width="250" height="200" alt="" /&gt;&lt;img src="/sites/cambrico.net/files/u1/cementerio-dos-prazeres.jpg" width="250" height="200" alt="" /&gt;&lt;br /&gt;
&lt;small&gt;Cementerio de los placeres&lt;/small&gt;&lt;/p&gt;
&lt;p&gt;Desde el Cemiterio dos prazeres sale una de las "atracciones" turísticas que no os podéis perder en Lisboa, el &lt;strong&gt;tranvia número 28&lt;/strong&gt;, que hace un recorrido practicamente turístico por el casco antigüo, pero esto viene otro día, no adelanto acontecimientos.&lt;/p&gt;
&lt;p&gt;Acabamos el día en la zona de Estrela, en el barrio alto de Lisboa, viendo la &lt;a href="http://es.wikipedia.org/wiki/Bas%C3%ADlica_da_Estrela"&gt;basílica&lt;/a&gt; y relajándonos en una de las terrazas de dentro del parque que hay enfrente, donde tienen unas curiosas máquinas para hacer ejercicio por parejas, supongo que para la gente mayor, tienen bicicletas estáticas, ejercicios de estiramientos, algo muy interesante de lo que deberían tomar nota para los parques españoles.&lt;br /&gt;
El parque de Estrela, además tiene lagos con sus correspondientes patos, árboles centenarios y es una zona bastante tranquila. Muy recomendable de visitar.&lt;/p&gt;
&lt;p&gt;&lt;img src="/sites/cambrico.net/files/u1/bas__lica-de-estrela.jpg" width="250" height="200" alt="" /&gt;&lt;img src="/sites/cambrico.net/files/u1/arbol_centenario.jpg" width="250" height="200" alt="" /&gt;&lt;br /&gt;
&lt;small&gt;Basílica de Estrela / Individuo sin identificar junto a enorme árbol&lt;/small&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feeds.feedburner.com/~a/cambrico?a=CZWDMf"&gt;&lt;img src="http://feeds.feedburner.com/~a/cambrico?i=CZWDMf" border="0"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;</description>
 <comments>http://cambrico.net/viajes/siete-dias-en-lisboa-dia-dos-jardim-zoologico-cementerio-dos-prazeres-y-estrela#comments</comments>
 <category domain="http://cambrico.net/category/categorias/viajes">viajes</category>
 <pubDate>Fri, 22 Aug 2008 14:05:15 +0000</pubDate>
 <dc:creator>pedro</dc:creator>
 <guid isPermaLink="false">157 at http://cambrico.net</guid>
<feedburner:origLink>http://cambrico.net/viajes/siete-dias-en-lisboa-dia-dos-jardim-zoologico-cementerio-dos-prazeres-y-estrela</feedburner:origLink></item>
<item>
 <title>Nuevo diseño y cambio de hosting</title>
 <link>http://feeds.feedburner.com/~r/cambrico/~3/372215139/nuevo-diseno-y-cambio-de-hosting</link>
 <description>&lt;p&gt;Como podéis ver, estreno un diseño un poco más sobrio, poco a poco lo iré completando con algunos detalles que me faltan por pulir todavía.&lt;br /&gt;
¡Prometo cambiar el dibujo de cabecera en breve!&lt;/p&gt;
&lt;p&gt;Parte de la culpa del cambio prematuro de diseño (pensaba ponerlo en unas semanas) es la jugarreta que mi &lt;strong&gt;ya antigüo hosting&lt;/strong&gt; me ha hecho hoy.&lt;br /&gt;
Llevaba ya un tiempo mosqueado con el servicio que me estaban ofreciendo, pero hoy me han suspendido la cuenta, según ellos, por abuso de recursos del servidor, aunque no han sido capaces de darme soporte ni de reactivar la cuenta (esto es la versión resumida). Finalmente he conseguido que me reembolsen el importe que habia pagado para la renovación de este año, hace pocas semanas.&lt;/p&gt;
&lt;p&gt;No les pongo enlace para no beneficiarles, pero, si buscais un hosting asequible, ni se os ocurra contratarlo con &lt;strong&gt;arvixe.com&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;He hecho el cambio a &lt;a href="http://www.masbaratoimposible.com"&gt;MBI&lt;/a&gt;, y de momento han sido muy rapidos y responden bien, por dos razones, son &lt;strong&gt;muy asequibles&lt;/strong&gt;, y aseguran&lt;strong&gt; MySQL 5&lt;/strong&gt;, cosa que no es habitual en otros hostings más caros.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feeds.feedburner.com/~a/cambrico?a=KK07b4"&gt;&lt;img src="http://feeds.feedburner.com/~a/cambrico?i=KK07b4" border="0"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;</description>
 <comments>http://cambrico.net/nuevo-diseno-y-cambio-de-hosting#comments</comments>
 <pubDate>Fri, 22 Aug 2008 00:10:39 +0000</pubDate>
 <dc:creator>pedro</dc:creator>
 <guid isPermaLink="false">156 at http://cambrico.net</guid>
<feedburner:origLink>http://cambrico.net/nuevo-diseno-y-cambio-de-hosting</feedburner:origLink></item>
<item>
 <title>Día trágico para todos</title>
 <link>http://feeds.feedburner.com/~r/cambrico/~3/372215140/dia-tragico-para-todos</link>
 <description>&lt;p&gt;Otra vez la tragedia se ceba con Madrid y con toda España, mi mas sentido pésame a todos los familiares y amigos víctimas de este desolador suceso&lt;/p&gt;
&lt;p&gt;&lt;img src="/sites/cambrico.net/files/u1/madrid.jpg" width="500" height="350" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feeds.feedburner.com/~a/cambrico?a=F6ohsd"&gt;&lt;img src="http://feeds.feedburner.com/~a/cambrico?i=F6ohsd" border="0"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;</description>
 <comments>http://cambrico.net/dia-tragico-para-todos#comments</comments>
 <pubDate>Wed, 20 Aug 2008 22:07:20 +0000</pubDate>
 <dc:creator>pedro</dc:creator>
 <guid isPermaLink="false">155 at http://cambrico.net</guid>
<feedburner:origLink>http://cambrico.net/dia-tragico-para-todos</feedburner:origLink></item>
<item>
 <title>Siete días en Lisboa, día uno: el hotel, toma de contacto y almada</title>
 <link>http://feeds.feedburner.com/~r/cambrico/~3/372215141/siete-dias-en-lisboa-dia-uno-el-hotel-toma-de-contacto-y-almada</link>
 <description>&lt;p&gt;Aquí viene el resumen de la semanita que &lt;a href="http://lcastro.es"&gt;Lorena&lt;/a&gt; y yo nos hemos pasado en Lisboa. La impresión general ha sido muy muy grata, nos hemos llevado muchas sorpresas agradables y algunas, no muchas, no demasiado placenteras. Voy a intentar contarlas todas.&lt;br /&gt;
Este es el &lt;strong&gt;día uno&lt;/strong&gt;.&lt;br /&gt;
&lt;a href="http://lcastro.es/21-08-2008/visita-a-lisboa-dia-1"&gt;Aquí puedes ver el día uno, según Lorena&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Salimos de Barcelona bien por la mañana y llegamos a las 11 al hotel, hay que recordar que &lt;strong&gt; Portugal tiene una hora menos&lt;/strong&gt;, por lo que salimos a las 9.15 hora española y aterrizamos a las 10.00 hora portuguesa, tiempo total de vuelo: &lt;strong&gt;1 hora y 45 minutos desde Barcelona&lt;/strong&gt;, sin incidentes, tan solo un retraso inicial.&lt;/p&gt;
&lt;p&gt;En el aeropuerto de Lisboa es recomendable adquirir una tarjeta llamada &lt;strong&gt;7 colinas&lt;/strong&gt;, en la estafeta de Correos (&lt;em&gt;Correios &lt;/em&gt;es de color rojo en portugal, ¡ojo!), cuesta &lt;strong&gt;50 centimos el cartón&lt;/strong&gt; y &lt;strong&gt;3.70€ cada día&lt;/strong&gt; que recargues, te sirve tanto para metro, como bus y tranvía. Si te vas a mover por Lisboa, es imprescindible, y sale a cuenta adquirir el día completo, ya que, por ejemplo un solo viaje de ida en un tranvía cuesta 1.40€ si lo compras en el mismo tranvía.&lt;/p&gt;
&lt;p&gt;&lt;img src="/sites/cambrico.net/files/u1/setecolinas.gif" width="244" height="158" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;El metro de Lisboa es bastante moderno y las tarjetas se validan de forma magnética, pero son un tanto delicadas, así que tened paciencia, aunque en todas las estaciones suele haber alguien que te puede ayudar, a nosotros nos tuvieron que cambiar la tarjeta porque se había estropeado, así que es importante guardar los recibos de compra de viajes.&lt;br /&gt;
Es muy conveniente hacerse con un mapa de transportes, además del callejero, nosotros los cogimos en la oficina de turismo del propio aeropuerto, son gratuitos, pero quizás merezca la pena comprar un callejero completo en el que vengan todas las calles con un índice, porque &lt;strong&gt;si vas a Lisboa, debes asumir que te vas a perder&lt;/strong&gt; en alguno o muchos momentos.&lt;br /&gt;
&lt;strong&gt;¡Ojo! &lt;/strong&gt;si vas desde Barcelona, ¡el metro viene desde la derecha! ;)&lt;br /&gt;
La tarjeta &lt;a href="http://www.carris.pt/index.php?area=balcao&amp;amp;subarea=passes_e_bilhetes_viva"&gt;Lisboa Viva&lt;/a&gt; es equivalente a la 7 colinas, es de color verde y también recargable.&lt;br /&gt;
Existe un pase para transportes y descuentos en casi todos los monumentos turísticos del área de Lisboa, incluyendo Sintra, la &lt;a href="http://www.askmelisboa.com/site.php?Tipo=1&amp;amp;IDPag=10937"&gt;Lisboa Card&lt;/a&gt;, que te ofrece descuentos para casi todo y cubre practicamente todo el transporte que vayas a tomar dentro de Lisboa (el viaje a Sintra no lo cubre), viene a costar unos 15€ por día. Yo solo la recomendaría para visitar Lisboa en plan &lt;strong&gt;Kamikaze&lt;/strong&gt;, es decir, todo en 2 o 3 días, si lo extiendes más, ya no sale a cuenta. &lt;/p&gt;
&lt;p&gt;&lt;img src="/sites/cambrico.net/files/u1/buzon-de-correos-lisboa.jpg" width="200" height="250" alt="buzon de correos lisboa" /&gt;&lt;img src="/sites/cambrico.net/files/u1/Cal__ada_de_la_Gloria.jpg" width="250" height="200" alt="Calçada de la Gloria" /&gt;&lt;br /&gt;
&lt;small&gt;Buzón rojo de correos / Tranvia de la Calçada de la Gloria&lt;/small&gt;&lt;/p&gt;
&lt;p&gt;Elegimos un hotel en una zona no muy céntrica, cerca de la &lt;a href="http://www.google.com/maps?f=q&amp;amp;hl=es&amp;amp;geocode=&amp;amp;q=pra%C3%A7a+de+espanha,+lisboa&amp;amp;sll=37.0625,-95.677068&amp;amp;sspn=52.418008,114.257812&amp;amp;ie=UTF8&amp;amp;z=17&amp;amp;iwloc=addr"&gt;Plaza de España&lt;/a&gt;, bien comunicado y con poca actividad turística, creo que acertamos, ya que estuvimos muy tranquilos. Nos alojamos en el &lt;a href="http://www.mercure.com/mercure/fichehotel/gb/mer/3346/fiche_hotel.shtml"&gt;Hotel Mercure&lt;/a&gt; (3 estrellas), no fue demasiado caro, 60€ por noche, y la pequeña piscina que tienen en la azotea, nos permitió relajarnos un par de días.&lt;br /&gt;
Lo &lt;strong&gt;mejor del hotel&lt;/strong&gt; fueron el &lt;strong&gt;precio y la situación&lt;/strong&gt;, y lo &lt;strong&gt;peor &lt;/strong&gt;es que tiene unas &lt;strong&gt;camas demasiado duras&lt;/strong&gt;, aunque tras las caminatas que te exige un sitio como Lisboa, duermes hasta sobre una cama de fakir. El otro punto flaco fue la atención, no son demasiado amables, pero siempre dentro de lo correcto.&lt;br /&gt;
De la comida no puedo decir nada, ya que no comimos ni cenamos ningún día en el hotel y no soy nada afín a los desayunos-buffet de los hoteles, no suelen tener demasiada calidad y tienen un precio abusivo, en este caso 8€ por persona.&lt;br /&gt;
La habitación estaba muy bien, quitando la cama-piedra, tenia TV, minibar (de esos de los que en cuanto sacas la bebida tienen un sensor que te la cobra), y wifi, aunque de pago, al final decidimos no utilizarlo, la tarifa es bastante cara, unos 3€ la media hora o algo así.&lt;/p&gt;
&lt;p&gt;Durante el primer rato que estuvimos dando vueltas, bajamos a Chiado, donde en la Rúa Aurea, hicimos fotos del Castelo do San Jorge, el Elevador de Santa Justa y encontramos el fnac, donde compramos el principito en portugués, &lt;em&gt;O Principezinho&lt;/em&gt;, ya que hemos decidido, que vamos a hacer una colección de esta preciosa fábula de Saint-Exupéry comprando uno en cada país que visitemos.&lt;/p&gt;
&lt;p&gt;&lt;img src="/sites/cambrico.net/files/u1/castelo_de_san_jorge_0.jpg" width="250" height="200" alt="" /&gt;&lt;img src="/sites/cambrico.net/files/u1/Elevador_de_Santa_Justa.jpg" width="250" height="200" alt="" /&gt;&lt;br /&gt;
&lt;small&gt;Castelo de San Jorge / Elevador de Santa Justa&lt;/small&gt;&lt;/p&gt;
&lt;p&gt;Fuimos a comer a uno de los sitios que la guía que habíamos comprado recomendaba, el Primero de Maio, en Portugal se come sobre las 13.00 y se cena a eso de las 20.00, pero Lisboa es un sitio muy concurrido por turistas y no hay problemas en comer a las 2 o las 3 de la tarde, e incluso llegamos a ver gente a las 4 comiendo, pero nosotros preferimos adaptarnos al horario portugués.&lt;br /&gt;
El restaurante &lt;strong&gt;Primero de Maio&lt;/strong&gt; está en la calle &lt;a href="http://www.google.com/maps?f=q&amp;amp;hl=es&amp;amp;geocode=&amp;amp;q=rua+de+la+atalaia+8,+lisboa&amp;amp;sll=37.0625,-95.677068&amp;amp;sspn=52.418008,114.257812&amp;amp;ie=UTF8&amp;amp;z=17&amp;amp;iwloc=addr"&gt;Rua da Atalaia, 8&lt;/a&gt; en Baixa Chiado y es un restaurante muy casero en el que nos atendieron de forma impecable, muy muy amables y el camarero hablaba por lo menos cuatro idiomas, muy recomendable el bacalao y las sardinas a la brasa, el precio es el habitual en la mayoría de restaurantes lisboetas, sobre 15 euros por persona. Tienen una variedad de postres caseros impresionante.&lt;/p&gt;
&lt;p&gt;En Portugal &lt;strong&gt;no sueles encontrarte menús del día&lt;/strong&gt;, pero la mayoría de restaurantes suelen tener platos del día a un precio más asequible. Lisboa, al contrario de lo que se pueda pensar, no es una ciudad barata para comer en absoluto.&lt;/p&gt;
&lt;p&gt;Una vez comidos, decidimos ir a la primera visita programada de la semana, así que cruzamos el Tajo en el &lt;a href="http://www.transtejo.pt/pt/homepage/index.html"&gt;Transtejo&lt;/a&gt; para ver de cerca el &lt;a href="http://en.wikipedia.org/wiki/Cristo-Rei"&gt;Cristo Rei&lt;/a&gt;, una réplica del Cristo Redentor de Rio de Janeiro, en Brasil que preside la ciudad de Lisboa, desde &lt;strong&gt;Almada&lt;/strong&gt;, al otro lado del río.&lt;/p&gt;
&lt;p&gt;Para llegar a la ciudad de &lt;a href="http://es.wikipedia.org/wiki/Almada"&gt;Almada&lt;/a&gt;, hay que coger el ferry desde Cais do Sodre, el ferry cuesta sobre 1€ ida y vuelta, ya que no va incluido en la tarjeta 7 colinas. Allí podréis encontrar una oficina de turismo, donde amablemente os indicarán como subir al &lt;strong&gt;Cristo Rei&lt;/strong&gt; y os darán mapas de la zona con los puntos de interés. A no ser que estéis peregrinando, lo mejor es ir en el &lt;strong&gt;autobús 101&lt;/strong&gt;, que por 1.35€ os subirá y bajará del puerto al monumento.&lt;br /&gt;
Entrar al parque donde esta el enorme Cristo es gratuito, pero subir cuesta 5€ y una cola de bastante consideración, nosotros preferimos quedarnos tirados en el cesped un rato, porque da bastante vértigo, la verdad. Desde esta zona podréis disfrutar de una vista magnífica de Lisboa y del &lt;a href="http://es.wikipedia.org/wiki/Puente_25_de_Abril"&gt;puente 25 de abril&lt;/a&gt;, muy parecido al Golden Gate de San Francisco, ya que ambos fueron construidos por la misma empresa, la &lt;a href="http://www.americanbridge.net/"&gt;American Bridge Company&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;img src="/sites/cambrico.net/files/u1/puente_25_de_abril.jpg" width="250" height="200" alt="" /&gt;&lt;img src="/sites/cambrico.net/files/u1/cristo_rei_0.jpg" width="250" height="200" alt="" /&gt;&lt;br /&gt;
&lt;small&gt;Puente del 25 de Abril / Cristo Rei&lt;/small&gt;&lt;/p&gt;
&lt;p&gt;Al bajar del Cristo Rei, dimos un buen paseo por Almada, un pequeño pueblo de pescadores que tiene bastante encanto, con muchos miradores y parques con unas vistas impresionantes. Nos habían recomendado el restaurante &lt;a href="http://atirateaorio.pt/"&gt;Atira-te a o rio&lt;/a&gt;, y sinceramente es muy recomendable, aunque es un poco complicado de acceder. Se puede acceder por el puerto, en la &lt;a href="http://www.google.com/maps?f=q&amp;amp;hl=es&amp;amp;geocode=&amp;amp;q=R.+do+Ginjal+69,+Almada,+Setubal+2800,+Portugal&amp;amp;sll=38.687897,-9.149301&amp;amp;sspn=0.006373,0.013947&amp;amp;ie=UTF8&amp;amp;z=17&amp;amp;iwloc=cent"&gt;Rua do Ginjal 69&lt;/a&gt;, hay un cartel poco amistoso que amenaza con derrumbamientos de las fachadas, pero merece la pena el riesgo ;)&lt;br /&gt;
Cenamos en una terracita a la orilla del Tajo, viendo la puesta del sol. La comida es portugueso-brasileña y el pescado está exquisito. Si coméis o &lt;strong&gt;cenais&lt;/strong&gt; en Almada, no podéis dejar de visitar este restaurante. Unos 20 euros por persona. Si vais pronto tendréis mesa fácil, pero si queréis cenar a las 21 o las 22, mejor id con reserva.&lt;/p&gt;
&lt;p&gt;&lt;img src="/sites/cambrico.net/files/u1/vistas_desde_almada.jpg" width="250" height="200" alt="" /&gt;&lt;img src="/sites/cambrico.net/files/u1/atirate_a_o_rio.jpg" width="250" height="200" alt="" /&gt;&lt;br /&gt;
&lt;small&gt;Vistas desde Almada / Restaurante Atira-te a o rio&lt;/small&gt;&lt;/p&gt;
&lt;p&gt;El Transtejo de vuelta a Lisboa cruza bastante seguido y hasta la 1 o las 2 de la mañana, el metro cierra a la 1 y hay una buena red de buses nocturnos, así que podéis ir con tranquilidad y sin mirar el reloj.&lt;/p&gt;
&lt;p&gt;Inicialmente no teniamos previsto cruzar el Tajo, pero fue uno de los mejores días de la semana.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feeds.feedburner.com/~a/cambrico?a=gdAlYe"&gt;&lt;img src="http://feeds.feedburner.com/~a/cambrico?i=gdAlYe" border="0"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;</description>
 <comments>http://cambrico.net/viajes/siete-dias-en-lisboa-dia-uno-el-hotel-toma-de-contacto-y-almada#comments</comments>
 <category domain="http://cambrico.net/category/categorias/viajes">viajes</category>
 <pubDate>Wed, 20 Aug 2008 16:43:31 +0000</pubDate>
 <dc:creator>pedro</dc:creator>
 <guid isPermaLink="false">154 at http://cambrico.net</guid>
<feedburner:origLink>http://cambrico.net/viajes/siete-dias-en-lisboa-dia-uno-el-hotel-toma-de-contacto-y-almada</feedburner:origLink></item>
<item>
 <title>De vuelta de Lisboa</title>
 <link>http://feeds.feedburner.com/~r/cambrico/~3/372215142/de-vuelta-de-lisboa</link>
 <description>&lt;p&gt;&lt;img src="/sites/cambrico.net/files/u1/tranvias_lisboa.jpg" width="550" height="413" alt="" /&gt;&lt;br /&gt;
Ya volvimos de Lisboa.&lt;br /&gt;
Este mediodía aterrizamos en Barcelona y el huso horario se cobró la hora que nos había regalado en la ida. El viaje ha ido muy muy bien y lo contaré muy pronto con pelos y señales, eso sí, seleccionaré las fotos, para paliar al máximo el efecto tortura de los interminables pases fotográficos de las vacaciones ajenas.&lt;br /&gt;
Lisboa es una ciudad recomendable para todos públicos y edades, eso sí, con zapatos cómodos y resistentes.&lt;/p&gt;
&lt;p&gt;Estoy preparando una serie de posts sobre todo lo que hemos visto en Lisboa, pero en &lt;a href="http://www.flickr.com/photos/25381422@N03/sets/72157606850241765/"&gt;mi cuenta de flickr&lt;/a&gt;, podéis ver algunas fotos del viaje :)&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feeds.feedburner.com/~a/cambrico?a=kA2IQb"&gt;&lt;img src="http://feeds.feedburner.com/~a/cambrico?i=kA2IQb" border="0"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;</description>
 <comments>http://cambrico.net/viajes/de-vuelta-de-lisboa#comments</comments>
 <category domain="http://cambrico.net/category/categorias/viajes">viajes</category>
 <pubDate>Tue, 19 Aug 2008 22:20:13 +0000</pubDate>
 <dc:creator>pedro</dc:creator>
 <guid isPermaLink="false">153 at http://cambrico.net</guid>
<feedburner:origLink>http://cambrico.net/viajes/de-vuelta-de-lisboa</feedburner:origLink></item>
<item>
 <title>De vacaciones en Lisboa</title>
 <link>http://feeds.feedburner.com/~r/cambrico/~3/372215143/de-vacaciones-en-lisboa</link>
 <description>&lt;p&gt;Durante unos días echo el cierre por vacaciones, &lt;a href="http://lcastro.es"&gt;Lorena&lt;/a&gt; y yo nos vamos una semanita a Lisboa. Es un viaje un poco especial porque es la primera vez que vamos juntos al extranjero, Asturias, aunque &lt;a href="http://flickr.com/photos/18600554@N06/2301562791/"&gt;parezca&lt;/a&gt; &lt;a href="http://flickr.com/photos/elosoenpersona/1908376406/"&gt;otro&lt;/a&gt; &lt;a href="http://flickr.com/photos/18600554@N06/2233389432/"&gt;planeta&lt;/a&gt;, no cuenta :-).&lt;/p&gt;
&lt;p&gt;Hemos &lt;a href="http://lcastro.es/08-08-2008/visitar-lisboa"&gt;planificado el viaje&lt;/a&gt; a conciencia, pero también con cabos sueltos, no está bien tener un programa al detalle para todo, además, casi todo el mundo recomienda como la mejor forma de conocer Lisboa, &lt;strong&gt; perderse por sus calles&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Como puntos friki-futboleros estará el partido de pretemporada &lt;em&gt;Benfica - Inter de Milan&lt;/em&gt; el 15 de Agosto y la visita al Hattrick Café, la única ¿cafetería / bar / pub? ambientada en &lt;a href="http://hattrick.org"&gt;Hattrick&lt;/a&gt;, juego online al que estoy enganchado (en mayor o menor medida, va a épocas), desde hace más de 5 años.&lt;/p&gt;
&lt;p&gt;Ya os contaré cuando vuelva, con muchas fotos :-D&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feeds.feedburner.com/~a/cambrico?a=reuJAC"&gt;&lt;img src="http://feeds.feedburner.com/~a/cambrico?i=reuJAC" border="0"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;</description>
 <comments>http://cambrico.net/viajes/de-vacaciones-en-lisboa#comments</comments>
 <category domain="http://cambrico.net/category/categorias/viajes">viajes</category>
 <pubDate>Sun, 10 Aug 2008 18:17:28 +0000</pubDate>
 <dc:creator>pedro</dc:creator>
 <guid isPermaLink="false">152 at http://cambrico.net</guid>
<feedburner:origLink>http://cambrico.net/viajes/de-vacaciones-en-lisboa</feedburner:origLink></item>
<item>
 <title>Amabilidad por escrito en el super</title>
 <link>http://feeds.feedburner.com/~r/cambrico/~3/372215144/amabilidad-por-escrito-en-el-super</link>
 <description>&lt;p&gt;Os dejo otro de los &lt;a href="http://cambrico.net/16-07-2008/parking-con-tolerancia-cero"&gt;carteles&lt;/a&gt; &lt;a href="http://cambrico.net/14-06-2008/buenos-carteles-hacen-buenos-vecinos"&gt;chorras&lt;/a&gt; que me van haciendo gracia, este lo ví en un super de Santa Coloma.&lt;/p&gt;
&lt;p&gt;&lt;img src="/sites/cambrico.net/files/u1/del_rio_nota.jpg" width="550" height="413" alt="" /&gt;&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;Está prohibido entrar con los &lt;strong&gt;carros de la compra&lt;/strong&gt; y con mochilas.&lt;br /&gt;
Para eso hay taquillas en la entrada.&lt;br /&gt;
Gracias.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Yo me dí por informado. Para eso están las notas amistosas para los clientes.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feeds.feedburner.com/~a/cambrico?a=GVsceu"&gt;&lt;img src="http://feeds.feedburner.com/~a/cambrico?i=GVsceu" border="0"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;</description>
 <comments>http://cambrico.net/curiosidades/amabilidad-por-escrito-en-el-super#comments</comments>
 <category domain="http://cambrico.net/category/categorias/curiosidades">curiosidades</category>
 <pubDate>Fri, 08 Aug 2008 16:31:26 +0000</pubDate>
 <dc:creator>pedro</dc:creator>
 <guid isPermaLink="false">151 at http://cambrico.net</guid>
<feedburner:origLink>http://cambrico.net/curiosidades/amabilidad-por-escrito-en-el-super</feedburner:origLink></item>
<item>
 <title>Artículos destacados de Julio</title>
 <link>http://feeds.feedburner.com/~r/cambrico/~3/372215145/articulos-destacados-de-julio</link>
 <description>&lt;p&gt;El blog cumple cuatro meses y para celebrarlo os dejo los artículos más interesantes que he leído este mes! (Julio ha venido cargadito de grandes artículos, ya os prevengo)&lt;/p&gt;
&lt;p&gt;&lt;a href="http://cambrico.net/06-07-2008/articulos-destacados-del-mes-de-junio"&gt;Aquí podéis ver los del mes de Junio&lt;/a&gt;&lt;/p&gt;
&lt;h4&gt; de drupal&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;Cómo usar el pager de drupal para mostrar datos paginados que no vienen de la base de datos, en &lt;a href="http://www.norio.be/blog/2008/07/reusing-drupals-pager-non-sql-data"&gt;norio.be&lt;/a&gt; &lt;em&gt;(en inglés)&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;Cómo generar un QR code para la URL actual en Drupal 6, en &lt;a href="http://kaioa.com/node/79"&gt;kaoia.com&lt;/a&gt; &lt;em&gt;(en inglés)&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;Mejorar el rendimiento de la páginas 404 y evitar errores, en el blog de &lt;a href="http://tedserbinski.com/tags/drupal/preventing-drupal-handling-404s-performance"&gt;Ted Serbinksi&lt;/a&gt; &lt;em&gt;(en inglés)&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt; de mysql&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;La importancia de conocer y configurar el sql_mode en mysql para no encontrarte sorpresas, en el blog de &lt;a href="http://ronaldbradford.com/blog/why-sql_mode-is-important-part-i-2008-07-17/"&gt;Ronald BradFord&lt;/a&gt; &lt;em&gt;(en inglés)&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;Analyze, Check, Optimize, y Repair bien explicados por los "maestros" de &lt;a href="http://www.pythian.com/blogs/1114/mysql-back-to-basics-analyze-check-optimize-and-repair"&gt;Pythian Group&lt;/a&gt; &lt;em&gt;(en inglés)&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://mysqldbnews.blogspot.com/2008/07/linkedin-buys-into-mysql.html"&gt;¡LinkedIn migra todas sus bases de datos a MySQL!&lt;/a&gt; &lt;em&gt;(en inglés)&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://mysqldba.blogspot.com/2008/07/what-should-i-use-myisam-or-innodb.html"&gt;¿MyISAM o InnoDB?&lt;/a&gt;, pruebas básicas sobre cuál de estos dos sistemas de almacenaje elegir, según nuestras necesidades &lt;em&gt;(en inglés)&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt; de otras cosas&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;¿Qué es lo que NO se debe preguntar NUNCA en una entrevista de trabajo? en &lt;a href="http://www.mcdonaldland.info/2008/07/14/the-worst-thing-to-ask-during-an-interview/"&gt;mcdonaldland&lt;/a&gt; &lt;em&gt;(en inglés)&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;PHPMyAdmin ha sido declarada la próxima adquisición superior a un billón (americano) de dólares (americanos), en &lt;a href="http://www.webyog.com/blog/2008/07/29/phpmyadmin-for-sale/"&gt;webyog ofrecen una mirada muy crítica al asunto&lt;/a&gt; &lt;em&gt;(en inglés)&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://lcastro.es/31-07-2008/los-ignorados-riesgos-psicosociales"&gt;La importancia de los riesgos psicosociales&lt;/a&gt; y cómo son ignorados, en el blog de &lt;a href="http://lcastro.es"&gt;Lorena Castro&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Utilidad y funcionamiento básico de los sitemaps en &lt;a href="http://www.tufuncion.com/sitemap"&gt;tufuncion&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Cinco excelentes consejos a la hora de buscar un desarrollador que-sepa-de-todo, en el blog de &lt;a href="http://blog.rebeccamurphey.com/2008/08/02/web-developer-hiring-tips/"&gt;Rebecca Murphey&lt;/a&gt; &lt;em&gt;(en inglés)&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Y este mes le tengo que dar una mención &lt;strong&gt;muy especial&lt;/strong&gt; a este artículo, absolutamente genial en el blog de last.fm sobre los &lt;strong&gt;sistemas basados en ositos de colores &lt;/strong&gt;para controlar la calidad de su software: &lt;a href="http://blog.last.fm/2008/08/01/quality-control"&gt;no os lo podéis perder.&lt;/a&gt;&lt;br /&gt;
&lt;!--break--&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feeds.feedburner.com/~a/cambrico?a=NU7TWh"&gt;&lt;img src="http://feeds.feedburner.com/~a/cambrico?i=NU7TWh" border="0"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;</description>
 <comments>http://cambrico.net/destacados/articulos-destacados-de-julio#comments</comments>
 <category domain="http://cambrico.net/category/categorias/destacados">destacados</category>
 <pubDate>Wed, 06 Aug 2008 18:12:41 +0000</pubDate>
 <dc:creator>pedro</dc:creator>
 <guid isPermaLink="false">150 at http://cambrico.net</guid>
<feedburner:origLink>http://cambrico.net/destacados/articulos-destacados-de-julio</feedburner:origLink></item>
<item>
 <title>Más vistas con argumentos en Drupal: jugando con las taxonomías</title>
 <link>http://feeds.feedburner.com/~r/cambrico/~3/372215146/mas-vistas-con-argumentos-en-drupal-jugando-con-las-taxonomias</link>
 <description>&lt;p&gt;Una de las grandes ventajas de las &lt;a href="http://cambrico.net/drupal/vistas-con-argumentos-en-drupal-mostrar-el-contenido-creado-por-cada-usuario"&gt;vistas con argumentos&lt;/a&gt; en Drupal es el juego que te permiten con las taxonomías, de forma bastante simple, podemos hacer que se nos muestre información relacionada con ciertas categorías, y complicándolo un poquito más, podemos realizar cosas como las que pregunta cdp en &lt;a href="http://cambrico.net/drupal/vistas-con-argumentos-en-drupal-mostrar-el-contenido-creado-por-cada-usuario#comment-124"&gt;este comentario&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;&lt;em&gt;Quiero hacer una vista que al hacer click sobre un nodo me muestre todos los nodos que tengan los mismos tags que el nodo sobre el que se ha hecho click. He creado el vocabulario, pero por ahora no he conseguido crear una vista que me muestre los nodos comunes a los vídeos. ¿Solucionaría mi problema una vista con argumentos?&lt;/em&gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Es decir, en una vista de tipo bloque, mostrar todos los nodos que compartan tags con el que estamos visualizando. Esto también se puede hacer con las vistas con argumentos&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Nota&lt;/strong&gt;: Para estos ejemplos he creado varios nodos con ciudades, cada ciudad pertenece a un país y tiene un idioma, ambas características marcadas por la taxonomía.&lt;br /&gt;
&lt;!--break--&gt;&lt;/p&gt;
&lt;h3&gt;ejemplo simple&lt;/h3&gt;
&lt;p&gt;En este ejemplo, se muestra cómo hacer una vista con argumentos para que muestre los nodos pertenecientes a la taxonomía que se le pasa por parámetro.&lt;/p&gt;
&lt;p&gt;&lt;embed src="http://blip.tv/play/Aca7LgA" type="application/x-shockwave-flash" width="600" height="480" allowscriptaccess="always" allowfullscreen="true"&gt;&lt;/embed&gt;&lt;/p&gt;
&lt;h3&gt;un poco más complejo&lt;/h3&gt;
&lt;p&gt;Complicándolo un poquito más, podemos hacer una vista de tipo bloque que, a partir del nodo actual, muestre todos aquellos con los que comparta taxonomía.&lt;br /&gt;
&lt;em&gt;Modificar las vistas de esta forma requiere algunos conocimientos de PHP.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Utilizaremos este código como "Argument Handling Code", del que podés encontrar más información en el &lt;a href="http://drupal.org/node/70145"&gt;handbook de drupal&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;&lt;br /&gt;
// Utilizamos arg(1) para recoger el parámetro 1 de la url, es decir, el nodo.&lt;br /&gt;
// Por ejemploen la url node/12, arg(0) sera "node" y arg(1) será 12.&lt;br /&gt;
$nid = arg(1);&lt;br /&gt;
//Utilizamos la función taxonomy_node_get_terms, que nos devuelve un array&lt;br /&gt;
// con todos los términos que tiene el nodo.&lt;br /&gt;
$terms = taxonomy_node_get_terms($nid);&lt;br /&gt;
$url = array();&lt;br /&gt;
// Recorremos el array de términos del nodo, capturando los ids&lt;br /&gt;
foreach($terms as $id=&gt;$term) {&lt;br /&gt;
  $url[] .= $id;&lt;br /&gt;
}&lt;br /&gt;
// Generamos una lista de ids separados por +, 1+2+3&lt;br /&gt;
$url = implode("+",$url);&lt;br /&gt;
// Finalmente le pasamos al primer argumento $args[0] la lista separada por +&lt;br /&gt;
$args[0] = $url;&lt;br /&gt;
// Y usamos un segundo argumento para excluir el propio nodo&lt;br /&gt;
$args[1] = $nid;&lt;br /&gt;
return $args;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;embed src="http://blip.tv/play/Aca8KgA" type="application/x-shockwave-flash" width="600" height="480" allowscriptaccess="always" allowfullscreen="true"&gt;&lt;/embed&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feeds.feedburner.com/~a/cambrico?a=9fcTRV"&gt;&lt;img src="http://feeds.feedburner.com/~a/cambrico?i=9fcTRV" border="0"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;</description>
 <comments>http://cambrico.net/drupal/mas-vistas-con-argumentos-en-drupal-jugando-con-las-taxonomias#comments</comments>
 <category domain="http://cambrico.net/category/categorias/drupal">drupal</category>
 <category domain="http://cambrico.net/category/drupal/version/5x">5.x</category>
 <category domain="http://cambrico.net/category/drupal/modulos/views">views</category>
 <pubDate>Tue, 05 Aug 2008 16:31:56 +0000</pubDate>
 <dc:creator>pedro</dc:creator>
 <guid isPermaLink="false">149 at http://cambrico.net</guid>
<feedburner:origLink>http://cambrico.net/drupal/mas-vistas-con-argumentos-en-drupal-jugando-con-las-taxonomias</feedburner:origLink></item>
<item>
 <title>Bloque con los detalles de los artículos técnicos</title>
 <link>http://feeds.feedburner.com/~r/cambrico/~3/372215147/bloque-con-los-detalles-de-los-articulos-tecnicos</link>
 <description>&lt;p&gt;&lt;a href="http://www.documentados.com/"&gt;Oskar&lt;/a&gt; me sugirió en &lt;a href="http://cambrico.net/15-07-2008/modulo-de-views-para-drupal#comment-118"&gt;este comentario&lt;/a&gt; mostrar en algun sitio de los artículos sobre drupal los detalles sobre módulos, versiones, etc y me ha parecido una muy buena idea, y mi aproximación final fue crear una subcategoría para poder gestionar la información de cada post.&lt;br /&gt;
Me gusta mucho el bloque flotante que tienen en &lt;a href="http://www.lullabot.com/articles/classic-web-problems-solved"&gt;lullabot&lt;/a&gt; en alguno de sus posts para mostrar el contenido relacionado y he intentado hacer algo parecido. A la derecha de este texto lo podéis ver (si entráis en el detalle, en portada no se muestra).&lt;/p&gt;
&lt;p&gt;Voy a intentar contaros cómo lo he hecho.&lt;/p&gt;
&lt;h3&gt;en el interfaz de drupal&lt;/h3&gt;
&lt;p&gt;A través del interfaz de drupal y el módulo taxonomía del core, he creado un vocabulario aparte llamado "drupal" para poner la información relacionada. Como opciones he seleccionado &lt;em&gt;Jerarquía simple&lt;/em&gt; para poder tener términos relacionados padres-hijos y Selección múltiple para poder seleccionar más de un término por artículo.&lt;br /&gt;
En este caso he utilizado los términos padres como títulos de la sección (pej. módulos o versión) y los hijos son los detalles del bloque (views, 5x, ...).&lt;br /&gt;
La selección múltiple tiene el inconveniente de que es necesario crear el término a través del interfaz y no lo puedes hacer desde el mismo post. Se podrían utilizar módulos como el &lt;a href="http://drupal.org/project/hierarchical_select"&gt;Hierarchical Select&lt;/a&gt; para resolver esto.&lt;/p&gt;
&lt;h3&gt;en el template.php&lt;/h3&gt;
&lt;p&gt;Aquí es donde viene "lo gordo".  En el fichero template.php de nuestro theme, podemos modificar las variables que se pasan a los ficheros de phptemplate tpl.php, de esta forma, podemos hacer que las variables $links, $content o $terms entre otras muestren la información que queramos.&lt;br /&gt;
Para conseguir que este segundo vocabulario se mostrara como yo quería, era necesario modificar la variable $terms, para que mostrara un div con la información extra solamente si ésta existe. Para acceder y modificar las variables de phptemplate, se usa el array $vars, en este caso $vars['terms'].&lt;br /&gt;
En los comentarios del código aclaro el funcionamiento:&lt;br /&gt;
&lt;!--break--&gt;&lt;br /&gt;
&lt;code&gt;/**&lt;br /&gt;
 * Override or insert PHPTemplate variables into the templates.&lt;br /&gt;
 */&lt;br /&gt;
function _phptemplate_variables($hook, $vars) {&lt;br /&gt;
if ($hook == 'node') {&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;$node = $vars['node'];&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;// Solamente para los nodos de tipo blog, que es el tipo&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;// de contenido que estoy utilizando&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;if ($node-&amp;gt;type == 'blog') {&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;// Selecciono los términos del vocabulario número 2,&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;// que es el que he creado para este bloque	&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;$sql = "SELECT t.tid, vid, name&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;FROM term_data t&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;JOIN term_node n ON (t.tid = n.tid)&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;WHERE vid = 2&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;AND nid = %d&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;ORDER BY weight";&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;$result = db_query($sql, $node-&amp;gt;nid);&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;// En este bucle hago una transformación a un array más &lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;// manejable para crear el &amp;lt;div&amp;gt;. de estructura&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;// $terms['padre']['id_del_termino']['datos']&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;while ($data = db_fetch_object($result)) {&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;// Función de la taxonomía que devuelve los padres&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;// de un término dado&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;	$parent = taxonomy_get_parents($data-&amp;gt;tid);&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;$parent = array_shift($parent);&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;$terms[$parent-&amp;gt;name][$data-&amp;gt;tid]['vid'] = $data-&amp;gt;vid;&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;$terms[$parent-&amp;gt;name][$data-&amp;gt;tid]['tid'] = $data-&amp;gt;tid;&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;$terms[$parent-&amp;gt;name][$data-&amp;gt;tid]['name'] = $data-&amp;gt;name;&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;$terms[$parent-&amp;gt;name][$data-&amp;gt;tid]['padre'] = $parent-&amp;gt;name;&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;$terms['parent'][$parent-&amp;gt;name] = $parent;&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;}&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;// Si había términos del vocabulario y se ha rellenado el array&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;if ($terms) {&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;	// Solamente se muestra en el detalle del nodo, y no en portada&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;if (!$vars['teaser']){	&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;$output .= '&amp;lt;div class="terms"&amp;gt;';&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;// 13 es el número del vocabulario drupal en mi blog, &lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;// Ya que he creado un vocabulario extra exclusivo para drupal&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;// Lo pongo así directamente.&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;$output .= "&amp;lt;ul&amp;gt;&amp;lt;li&amp;gt;".l('drupal','taxonomy/term/13')."&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;";&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;$output .= "&amp;lt;/div&amp;gt;";&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;$output .= "&amp;lt;div class = 'term-drupal'&amp;gt;";&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;foreach($terms['parent'] as $key =&amp;gt; $par){&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;$output .= "&amp;lt;div class = ".$par-&amp;gt;name."&amp;gt;";&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;// Se muestra el padre del término como título y no se repite&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;// mientras existan términos del mismo padre.&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;if ($terms[$par-&amp;gt;name] AND is_array($terms[$par-&amp;gt;name])){&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;$output .= "&amp;lt;h4&amp;gt;".$par-&amp;gt;name."&amp;lt;/h4&amp;gt;";&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;foreach ($terms[$par-&amp;gt;name] as $test) {&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;$output .= l($test['name'],'taxonomy/term/'.$test['tid']) . "&amp;lt;br /&amp;gt;";&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;} &lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;}&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;$output .= "&amp;lt;/div&amp;gt;";&amp;#160;&amp;#160;	&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;}&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;$output .= "&amp;lt;/div&amp;gt;";&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;}&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;else {&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;// Si estamos en portada, para aquellos nodos que tengan términos&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;// del vocabulario drupal, se muestra la etiqueta drupal.&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;$output .= '&amp;lt;div class="terms"&amp;gt;';&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;$output .= "&amp;lt;ul&amp;gt;&amp;lt;li&amp;gt;".l('drupal','taxonomy/term/13')."&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;";&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;$output .= "&amp;lt;/div&amp;gt;";&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;}&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;// Asignación del código a la variable que será $terms en los tpl&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;$vars['terms'] = $output;&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;}&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;else {&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;	// Si no hay términos del vocabulario drupal, se muestra normalmente.&lt;br /&gt;
	&amp;#160;&amp;#160;&amp;#160;&amp;#160;$output = '&amp;lt;div class="terms"&amp;gt;';&lt;br /&gt;
	&amp;#160;&amp;#160;&amp;#160;&amp;#160;$output .= $vars['terms'];&lt;br /&gt;
	&amp;#160;&amp;#160;&amp;#160;&amp;#160;$output .= "&amp;lt;/div&amp;gt;";&lt;br /&gt;
	&amp;#160;&amp;#160;&amp;#160;&amp;#160;//Asignación del código a la variable que será $terms en los tpl&lt;br /&gt;
	&amp;#160;&amp;#160;&amp;#160;&amp;#160;$vars['terms'] = $output;&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;}&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;}&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;return $vars;&lt;br /&gt;
&amp;#160;&amp;#160;}&lt;br /&gt;
&amp;#160;&amp;#160;return array();&lt;br /&gt;
}&lt;/code&gt;&lt;/p&gt;
&lt;h3&gt;en la plantilla&lt;/h3&gt;
&lt;p&gt;Ya que hemos mostrado el div con clase terms en el mismo template, debemos quitarlo del tpl.&lt;br /&gt;
En mi caso he modificado el node-blog.tpl.php (el que se usa para el tipo de contenido blog), quitándole ese div, de esto:&lt;br /&gt;
&lt;code&gt;&amp;lt;div class="terms"&amp;gt;&amp;lt;?php print $terms ?&amp;gt;&amp;lt;/div&amp;gt;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;A esto:&lt;br /&gt;
&lt;code&gt;&amp;lt;?php print $terms ?&amp;gt;&lt;/code&gt;&lt;/p&gt;
&lt;h3&gt;el estilo css&lt;/h3&gt;
&lt;p&gt;Luego le he dado estilo css al div que se genera con un borde fino y background.&lt;br /&gt;
&lt;code&gt;&lt;br /&gt;
.term-drupal {&lt;br /&gt;
	background:#E0EFF7 none repeat scroll 0 0;&lt;br /&gt;
	border:0.1px solid #5A97AF;&lt;br /&gt;
	float:right;&lt;br /&gt;
	font-size:145%;&lt;br /&gt;
	margin:0.5em 0 0 2em;&lt;br /&gt;
	padding:0.65em;&lt;br /&gt;
}&lt;br /&gt;
&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Es posible que tengáis que cambiar alguno de los parámetros de float a los &lt;em&gt;div &lt;/em&gt;que van antes y después del bloque.&lt;/p&gt;
&lt;h3&gt;últimos detalles&lt;/h3&gt;
&lt;p&gt;Como últimos detalles he tenido que corregir algunas cosas de los css para cuadrar en mi theme y sobre todo el pathauto, ya que estoy generando las URL de mi blog basándome en la categoría de cada post, es necesario modificar el vocabulario principal para que sea el prioritario (weight o peso a -1) y así se generaban las URL como hasta ahora.&lt;/p&gt;
&lt;h3&gt;otra alternativa&lt;/h3&gt;
&lt;p&gt;Otra alternativa que no he llegado a usar sería generar un bloque con la información que quisieramos mostrar (vocabularios o no) y generar una región que se situé antes del contenido (algunos themes tienen una llamada content-top) y darle formato con css (float y dimensiones) para mostrarla al lado del contenido.&lt;/p&gt;
&lt;p&gt;Y esto ha sido todo. Espero que a alguien le haya resultado útil y si tenéis dudas o sugerencias de mejora, usad los comentarios, ¡que para eso están!&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feeds.feedburner.com/~a/cambrico?a=e1loaP"&gt;&lt;img src="http://feeds.feedburner.com/~a/cambrico?i=e1loaP" border="0"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;</description>
 <comments>http://cambrico.net/drupal/bloque-con-los-detalles-de-los-articulos-tecnicos#comments</comments>
 <category domain="http://cambrico.net/category/categorias/drupal">drupal</category>
 <category domain="http://cambrico.net/category/drupal/version/5x">5.x</category>
 <category domain="http://cambrico.net/category/drupal/desarrollo/theme">theme</category>
 <pubDate>Sat, 02 Aug 2008 15:24:57 +0000</pubDate>
 <dc:creator>pedro</dc:creator>
 <guid isPermaLink="false">148 at http://cambrico.net</guid>
<feedburner:origLink>http://cambrico.net/drupal/bloque-con-los-detalles-de-los-articulos-tecnicos</feedburner:origLink></item>
<item>
 <title>Informe comparativo de 2008 sobre el uso de CMS</title>
 <link>http://feeds.feedburner.com/~r/cambrico/~3/372215148/informe-comparativo-de-2008-sobre-el-uso-de-cms</link>
 <description>&lt;p&gt;A través de &lt;a href="http://www.hiveminds.co.uk/"&gt;Hiveminds&lt;/a&gt; he encontrado el informe que &lt;a href="http://www.waterandstone.com/index.php"&gt;water&amp;amp;stone &lt;/a&gt;, una compañía especializada en el desarrollo opensource con diversas tecnologías, ha sacado referente al uso de los 19 principales sistemas de gestión de contenidos.&lt;br /&gt;
Entre ellos está, como no podría ser de otra forma, &lt;a href="http://www.drupal.org"&gt;Drupal&lt;/a&gt;, y muestra decenas de estadísticas de uso, descarga y relevancia, comparando los CMS entre sí, podéis encontrar el informe completo de 52 páginas en formato &lt;em&gt;pdf &lt;/em&gt;en su &lt;a href="http://www.waterandstone.com/resources.html"&gt;página de recursos&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Observando los datos de este informe, parece claro que los tres dueños y señores son, por este orden, &lt;strong&gt;Wordpress, Joomla y Drupal&lt;/strong&gt;. Wordpress y Joomla ganan por goleada en casi todas las estadísticas, menciones en redes sociales, tráfico u ofertas de trabajo entre otras, pero Drupal no está lejos, y está siendo muy premiado últimamente.&lt;/p&gt;
&lt;p&gt;El informe también hace hincapié en los nuevos CMS que están pegando con fuerza y que pueden llegar a ser muy relevantes dentro de no demasiado tiempo, entre ellos están &lt;a href="http://modxcms.com/"&gt;MODx &lt;/a&gt;o &lt;a href="http://elgg.org/"&gt;Elgg&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feeds.feedburner.com/~a/cambrico?a=PGznfJ"&gt;&lt;img src="http://feeds.feedburner.com/~a/cambrico?i=PGznfJ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;</description>
 <comments>http://cambrico.net/drupal/informe-comparativo-de-2008-sobre-el-uso-de-cms#comments</comments>
 <category domain="http://cambrico.net/category/categorias/drupal">drupal</category>
 <pubDate>Wed, 30 Jul 2008 15:54:26 +0000</pubDate>
 <dc:creator>pedro</dc:creator>
 <guid isPermaLink="false">147 at http://cambrico.net</guid>
<feedburner:origLink>http://cambrico.net/drupal/informe-comparativo-de-2008-sobre-el-uso-de-cms</feedburner:origLink></item>
<item>
 <title>Vistas con argumentos en Drupal: Mostrar el contenido creado por cada usuario</title>
 <link>http://feeds.feedburner.com/~r/cambrico/~3/372215149/vistas-con-argumentos-en-drupal-mostrar-el-contenido-creado-por-cada-usuario</link>
 <description>&lt;p&gt;Este post es parte de una serie de explicaciones de cómo funcionan las vistas con argumentos, anteriormente he hecho una &lt;a href="http://cambrico.net/15-07-2008/modulo-de-views-para-drupal"&gt;introducción a las vistas&lt;/a&gt; y otra a &lt;a href="http://cambrico.net/03-07-2008/modulo-de-cck-content-construction-kit-para-drupal"&gt;CCK&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Antes de comenzar, lo mejor es que quede claro lo &lt;strong&gt;qué es un argumento &lt;/strong&gt;para las vistas de Drupal y su diferencia con los filtros.&lt;/p&gt;
&lt;p&gt;Un &lt;strong&gt;argumento &lt;/strong&gt;es un parámetro que se pasa a una vista y que se utiliza dentro de ésta para generar contenido dinámico que cambia según el argumento.&lt;br /&gt;
La diferencia con los &lt;strong&gt;filtros&lt;/strong&gt;, es que el filtro es una forma de diferenciar contenido de forma estática por cada vista, es decir, que si filtramos por el tipo de contenido story, la vista siempre nos devolverá tipos de contenido &lt;em&gt;story&lt;/em&gt;, sin embargo, si utilizamos el tipo de contenido como un argumento para una vista, si la url es &lt;em&gt;nombre-de-la-vista/story&lt;/em&gt; nos mostrará tipos de contenido story, pero si accedemos a la url &lt;em&gt;nombre-de-la-vista/page&lt;/em&gt;, nos mostrará tipos de contenido &lt;em&gt;page&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Como primer ejemplo, voy a mostrar cómo se crea una vista que recibe como argumento el id del usuario y muestra el contenido que éste ha creado, de forma que, si accedemos a otro id, nos muestre el contenido de ese otro usuario.&lt;/p&gt;
&lt;h3&gt;paso a paso&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Accedemos a nuestro sitio como administradores&lt;/li&gt;
&lt;li&gt;Vamos a Administrar » Views » Add &lt;/li&gt;
&lt;li&gt;Ponemos el nombre de la vista, por ejemplo, contenido-del-usuario y elegimos el tipo Página&lt;/li&gt;
&lt;li&gt;Ponemos la URL de la vista y elegimos los parámetros que nos convengan, tipo de vista, el título, el número de nodos por página, etc&lt;/li&gt;
&lt;li&gt;Seleccionamos los campos a mostrar, por ejemplo, el título del nodo, el contenido y su taxonomía&lt;/li&gt;
&lt;li&gt;En la sección de &lt;strong&gt;Argumentos&lt;/strong&gt;, seleccionamos&lt;strong&gt; User: UID is Author&lt;/strong&gt;, si queremos usar el número que identifica al usuario, podemos en lugar del UID, utilizar el nombre del usuario, seleccionando el argumento User: username is author&lt;/li&gt;
&lt;li&gt;Elegimos los filtros, por ejemplo Node: Published (recomendado) y Node:Type Story&lt;/li&gt;
&lt;li&gt;Seleccionamos el criterio de orden, Node:Created Time descendente para mostrar los más nuevos más arriba.&lt;/li&gt;
&lt;li&gt;Guardamos y ¡listo!, si accedemos a nuestra web con la url contenido-del-usuario/1 veremos el contenido creado por el admin, y si accedemos a contenido-del-usuario/85 veremos el contenido creado por el usuario 85&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Podemos restringir el acceso a nuestras vistas en la zona de Información Básica, seleccionando los roles que queremos que tengan acceso a la vista que hemos creado.&lt;/p&gt;
&lt;h3&gt;mejor en video&lt;/h3&gt;
&lt;p&gt;&lt;embed src="http://blip.tv/play/AcTQWgA" type="application/x-shockwave-flash" width="600" height="480" allowscriptaccess="always" allowfullscreen="true"&gt;&lt;/embed&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feeds.feedburner.com/~a/cambrico?a=Xf2RCY"&gt;&lt;img src="http://feeds.feedburner.com/~a/cambrico?i=Xf2RCY" border="0"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;</description>
 <comments>http://cambrico.net/drupal/vistas-con-argumentos-en-drupal-mostrar-el-contenido-creado-por-cada-usuario#comments</comments>
 <category domain="http://cambrico.net/category/categorias/drupal">drupal</category>
 <category domain="http://cambrico.net/category/drupal/version/5x">5.x</category>
 <category domain="http://cambrico.net/category/drupal/modulos/cck">cck</category>
 <category domain="http://cambrico.net/category/drupal/modulos/views">views</category>
 <pubDate>Sun, 27 Jul 2008 12:03:11 +0000</pubDate>
 <dc:creator>pedro</dc:creator>
 <guid isPermaLink="false">146 at http://cambrico.net</guid>
<feedburner:origLink>http://cambrico.net/drupal/vistas-con-argumentos-en-drupal-mostrar-el-contenido-creado-por-cada-usuario</feedburner:origLink></item>
<item>
 <title>La comunidad de MySQL pide apoyo para Ivan Nikitin</title>
 <link>http://feeds.feedburner.com/~r/cambrico/~3/344705471/la-comunidad-de-mysql-pide-apoyo-para-ivan-nikitin</link>
 <description>&lt;p&gt;Hace unos días que lo leí en &lt;a href="http://www.propiedadprivada.com/ayuda-a-ivan/533/"&gt;Propiedad Privada&lt;/a&gt;, y parece que, como excepción, este caso de ayuda no es scam ni una estafa, es totalmente real y muy urgente. &lt;/p&gt;
&lt;p&gt;&lt;img class='izquierda' src="/sites/cambrico.net/files/u1/andrii-and-ivan.jpg" width="320" height="240" alt="" /&gt;&lt;br /&gt;
Ivan, el hijo de dos años de de Andrii Nikitin, ingeniero de soporte para MySQL en Ukraina, necesita urgentemente un transplante de médula ósea, ya que los largos tratamientos a los que está siendo sometido en su país no están dando el resultado que los médicos esperaban. Los hospitales de su pais no están preparados para realizar una operación tan delicada a un niño tan jóven, por lo que tienen que trasladarlo a Alemania, y el coste de todo esto es algo que la familia de Andrii no puede afrontar, aún vendiendo su casa y todas sus posesiones.&lt;/p&gt;
&lt;p&gt;Ivan ya está en Alemania y está siendo sometido a vigilancia y análisis. Por lo que parece, en el mejor de los casos, la operación se realizaría en dos meses.&lt;/p&gt;
&lt;p&gt;Hasta ahora han reunido unos 90.000€ (unos 20.000€ proceden de la comunidad de MySQL), pero la clínica alemana ha previsto otros 150.000€ de gastos durante el proceso.&lt;br /&gt;
&lt;strong&gt;&lt;br /&gt;
Si queréis ayudar a Ivan, podéis hacer donaciones desde la propia web que MySQL ha habilitado&lt;/strong&gt;: &lt;a href="http://www.mysql.com/about/help-ivan.html"&gt;http://www.mysql.com/about/help-ivan.html&lt;/a&gt;  &lt;/p&gt;
&lt;p&gt;Detalles sobre el estado actual de Ivan &lt;a href="http://blogs.mysql.com/kaj/2008/07/24/ivan-nikitin-contributions-and-medical-status/"&gt;aquí &lt;/a&gt;y &lt;a href="http://www.propiedadprivada.com/novedades-sobre-el-caso-ivan-nikitin/604/"&gt;aquí&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feeds.feedburner.com/~a/cambrico?a=USbsmY"&gt;&lt;img src="http://feeds.feedburner.com/~a/cambrico?i=USbsmY" border="0"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;</description>
 <comments>http://cambrico.net/mysql/la-comunidad-de-mysql-pide-apoyo-para-ivan-nikitin#comments</comments>
 <category domain="http://cambrico.net/category/categorias/mysql">mysql</category>
 <pubDate>Thu, 24 Jul 2008 14:54:30 +0000</pubDate>
 <dc:creator>pedro</dc:creator>
 <guid isPermaLink="false">145 at http://cambrico.net</guid>
<feedburner:origLink>http://cambrico.net/mysql/la-comunidad-de-mysql-pide-apoyo-para-ivan-nikitin</feedburner:origLink></item>
<item>
 <title>Drupal 5.9, corrección de idiomas en los feeds no-ingleses</title>
 <link>http://feeds.feedburner.com/~r/cambrico/~3/344668488/drupal-59-correccion-de-idiomas-en-los-feeds-no-ingleses</link>
 <description>&lt;p&gt;Hoy ha salido la versión 5.9 para Drupal que ya corrige el &lt;a href="http://cambrico.net/drupal/calculo-de-fechas-incorrecto-en-drupal-5-para-los-feeds-en-espanol"&gt;error en los feeds heredado de Drupal 6&lt;/a&gt; que comenté ayer y que provocaba que una traducción en las fechas situara todos los feeds del blog afectado como los primeros en los agregadores.&lt;/p&gt;
&lt;p&gt;Han sacado la versión de Drupal 5.9 tan solo unos días después de la 5.8 ya que una de las vulnerabilidades más graves, relacionada con las sesiones, no estaba corregida del todo. La recomendación es realizar el upgrade lo antes posible.&lt;/p&gt;
&lt;p&gt;Podéis ver las &lt;a href="http://drupal.org/node/286418"&gt;notas de la release&lt;/a&gt; en drupal.org.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feeds.feedburner.com/~a/cambrico?a=ETbtYH"&gt;&lt;img src="http://feeds.feedburner.com/~a/cambrico?i=ETbtYH" border="0"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;</description>
 <comments>http://cambrico.net/drupal/drupal-59-correccion-de-idiomas-en-los-feeds-no-ingleses#comments</comments>
 <category domain="http://cambrico.net/category/categorias/drupal">drupal</category>
 <category domain="http://cambrico.net/category/drupal/version/5x">5.x</category>
 <pubDate>Thu, 24 Jul 2008 14:40:49 +0000</pubDate>
 <dc:creator>pedro</dc:creator>
 <guid isPermaLink="false">144 at http://cambrico.net</guid>
<feedburner:origLink>http://cambrico.net/drupal/drupal-59-correccion-de-idiomas-en-los-feeds-no-ingleses</feedburner:origLink></item>
<item>
 <title>Cálculo de fechas incorrecto en Drupal 5 para los feeds en español</title>
 <link>http://feeds.feedburner.com/~r/cambrico/~3/342790049/calculo-de-fechas-incorrecto-en-drupal-5-para-los-feeds-en-espanol</link>
 <description>&lt;p&gt;&lt;strong&gt;Actualización:&lt;/strong&gt; &lt;a href="http://cambrico.net/drupal/drupal-59-correccion-de-idiomas-en-los-feeds-no-ingleses"&gt;La versión 5.9 de Drupal ya corrige este comportamiento&lt;/a&gt;.&lt;br /&gt;
Carlos ya tuvo el problema&lt;/a&gt; hace unos meses y todos sus posts salían los primeros en el &lt;a href="http://www.drupal.org.es/planeta"&gt;Planeta de Drupal&lt;/a&gt;. Pues bien, como si fuera un virus, la nueva versión de Drupal 5, la 5.8, viene con este bug incorporado, que hace que, cada vez que generes un nuevo post, algunos agregadores pongan todos tus posts los primeros de la lista. Por lo que todos los que hemos actualizado ya, tendremos problemas con los feeds y los agregadores.&lt;br /&gt;
Para resolverlo, hay que aplicar el parche del comentario de &lt;a href="http://drupalfr.org/"&gt;Damien Tournoud&lt;/a&gt; de &lt;a href="http://drupal.org/node/232433#comment-917228"&gt;esta entrada&lt;/a&gt; de drupal.org.&lt;br /&gt;
Para aplicar un parche en un sistema Linux, podemos seguir las recomendaciones del &lt;a href="href="http://carlos.rinconsanchez.com/bug-en-el-feed-de-drupal-6-cuando-usas-un-lenguaje-diferente-del-ingles"&gt;blog de carlos&lt;/a&gt; si usamos linux, pero si no, o si no tenemos acceso por línea de comandos a nuestro server, solamente hay que substituir la línea 1922 del fichero &lt;em&gt;modules/node/node.module&lt;/em&gt;, que es esta (antigua)&lt;br /&gt;
&lt;code&gt;$extra = array_merge($extra, array(array('key' =&gt; 'pubDate', 'value' =&gt;&lt;br /&gt;
format_date($item-&gt;created, 'custom', 'r')), array('key' =&gt; 'dc:creator',&lt;br /&gt;
'value' =&gt; $item-&gt;name), array('key' =&gt; 'guid',&lt;br /&gt;
'value' =&gt; $item-&gt;nid .' at '. $base_url,&lt;br /&gt;
'attributes' =&gt; array('isPermaLink' =&gt; 'false'))));&lt;/code&gt;&lt;br /&gt;
por esta (nueva)&lt;br /&gt;
&lt;code&gt;$extra = array_merge($extra, array(array('key' =&gt; 'pubDate', 'value' =&gt;&lt;br /&gt;
gmdate('r', $item-&gt;created)), array('key' =&gt; 'dc:creator',&lt;br /&gt;
'value' =&gt; $item-&gt;name), array('key' =&gt; 'guid',&lt;br /&gt;
'value' =&gt; $item-&gt;nid .' at '. $base_url,&lt;br /&gt;
'attributes' =&gt; array('isPermaLink' =&gt; 'false'))));&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Estas dos sentencias son &lt;strong&gt;una sola línea&lt;/strong&gt;, pero no me cabian en pantalla ;)&lt;br /&gt;
&lt;!--break--&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feeds.feedburner.com/~a/cambrico?a=e7OF78"&gt;&lt;img src="http://feeds.feedburner.com/~a/cambrico?i=e7OF78" border="0"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;</description>
 <comments>http://cambrico.net/drupal/calculo-de-fechas-incorrecto-en-drupal-5-para-los-feeds-en-espanol#comments</comments>
 <category domain="http://cambrico.net/category/categorias/drupal">drupal</category>
 <category domain="http://cambrico.net/category/drupal/version/5x">5.x</category>
 <pubDate>Tue, 22 Jul 2008 17:52:08 +0000</pubDate>
 <dc:creator>pedro</dc:creator>
 <guid isPermaLink="false">143 at http://cambrico.net</guid>
<feedburner:origLink>http://cambrico.net/drupal/calculo-de-fechas-incorrecto-en-drupal-5-para-los-feeds-en-espanol</feedburner:origLink></item>
<item>
 <title>La tortuga asesina</title>
 <link>http://feeds.feedburner.com/~r/cambrico/~3/341757322/la-tortuga-asesina</link>
 <description>&lt;p&gt;&lt;a href="http://lcastro.es"&gt;Lorena&lt;/a&gt; me ha pasado este link a &lt;a href="http://www.collthings.co.uk/2008/07/beware-of-tortoise.html"&gt;Cool Stuff&lt;/a&gt; y no he podido dejar de reirme, no tenia ni la más remota idea de que las tortugas fueran tan agresivas y tenazes... y tan rápidas!!!&lt;/p&gt;
&lt;p&gt;¡¡¡Aquí van los videos de las tortugas asesinas!!!&lt;br /&gt;
(&lt;strong&gt;Advertencia&lt;/strong&gt;: algunas imágenes pueden herir la sensibilidad del espectador)&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Una tortuga atacando a un gato&lt;/strong&gt;&lt;br /&gt;
&lt;embed src="http://www.youtube.com/v/Ul0gfCyeiyM&amp;amp;hl=en&amp;amp;fs=1" type="application/x-shockwave-flash" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;br /&gt;
&lt;br/&gt;&lt;br /&gt;
&lt;!--break--&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Esta pelea está menos equilibrada todavía&lt;/strong&gt;&lt;br /&gt;
&lt;embed src="http://www.youtube.com/v/fJr2evLANsE&amp;amp;hl=es&amp;amp;fs=1" type="application/x-shockwave-flash" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Una tortuga atacando a otra tortuga&lt;/strong&gt;&lt;br /&gt;
&lt;embed src="http://www.youtube.com/v/3bTGwePri0k&amp;amp;hl=en&amp;amp;fs=1" type="application/x-shockwave-flash" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Una tortuga atacando a un perro&lt;/strong&gt;&lt;br /&gt;
&lt;embed src="http://www.youtube.com/v/XvEsvDocW4Y&amp;amp;hl=en&amp;amp;fs=1" type="application/x-shockwave-flash" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;"El ataque de la tortuga asesina"&lt;/strong&gt;&lt;br /&gt;
&lt;embed src="http://www.youtube.com/v/zawQbubbcns&amp;amp;hl=en&amp;amp;fs=1" type="application/x-shockwave-flash" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;La tortuga que ataca a su amo&lt;/strong&gt;&lt;br /&gt;
&lt;embed src="http://www.youtube.com/v/uX3-huSxhJg&amp;amp;hl=en&amp;amp;fs=1" type="application/x-shockwave-flash" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Esta la toma con un guante&lt;/strong&gt;&lt;br /&gt;
&lt;embed src="http://www.youtube.com/v/EH93G3g3z28&amp;amp;hl=es&amp;amp;fs=1" type="application/x-shockwave-flash" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;La tortuga y el león&lt;/strong&gt;&lt;br /&gt;
&lt;embed src="http://www.youtube.com/v/RTn2MZTu_3k&amp;amp;hl=es&amp;amp;fs=1" type="application/x-shockwave-flash" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Muy enfadada con un zapato&lt;/strong&gt;&lt;br /&gt;
&lt;embed src="http://www.youtube.com/v/QgYcBsBV66Q&amp;amp;hl=es&amp;amp;fs=1" type="application/x-shockwave-flash" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Más contra zapatos&lt;/strong&gt; (este es muy curioso, porque al tipo que lleva sandalias, no le hace nada! no deja insertarlo por petición del autor, así que pongo el link)&lt;br /&gt;
&lt;a href="http://es.youtube.com/watch?v=AuRREiD-XKY&amp;amp;feature=related"&gt;http://es.youtube.com/watch?v=AuRREiD-XKY&amp;amp;feature=related&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feeds.feedburner.com/~a/cambrico?a=3NXl8W"&gt;&lt;img src="http://feeds.feedburner.com/~a/cambrico?i=3NXl8W" border="0"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;</description>
 <comments>http://cambrico.net/humor/la-tortuga-asesina#comments</comments>
 <category domain="http://cambrico.net/category/categorias/humor">humor</category>
 <pubDate>Mon, 21 Jul 2008 17:49:43 +0000</pubDate>
 <dc:creator>pedro</dc:creator>
 <guid isPermaLink="false">142 at http://cambrico.net</guid>
<feedburner:origLink>http://cambrico.net/humor/la-tortuga-asesina</feedburner:origLink></item>
<item>
 <title>La agencia tributaria me persigue</title>
 <link>http://feeds.feedburner.com/~r/cambrico/~3/340793568/la-agencia-tributaria-me-persigue</link>
 <description>&lt;p&gt;&lt;center&gt;&lt;img src="/sites/cambrico.net/files/u1/agencia_tributaria.jpg" alt="" /&gt;&lt;/center&gt;&lt;/p&gt;
&lt;p&gt;No, no es que tenga deudas pendientes con la administración pública, ni que ésta me tenga secretamente anotado en alguna lista negra debido a mi pingüe patrimonio (léase con ironía), mi problema viene relacionado con mi dirección postal, ya que este año me están llegando cartas del fisco dirigidas a hasta 7 personas diferentes, y en casa solo vivimos dos.&lt;/p&gt;
&lt;p&gt;He recibido cartas a nombre de la actual propietaria del piso (estoy de alquiler), a nombre de la antigüa propietaria del piso (a quien no conozco ni sé como localizar), a nombre de dos de mis vecinos (con el número de mi piso, no el suyo), y esta semana, una carta dirgida a un señor que no conozco de nada.&lt;/p&gt;
&lt;p&gt;Y es que da muy mal rollo recibir, tras el periodo fiscal, una carta de hacienda, no puede traer nada bueno. Así que me estoy llevando sustos hasta que leo el nombre y me doy cuenta de que no es para mí.&lt;/p&gt;
&lt;p&gt;Ya podrían equivocarse también y poner mi cuenta bancaria, eso si, &lt;strong&gt;solo para las que salgan a devolver&lt;/strong&gt;, que bastante tengo ya!&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feeds.feedburner.com/~a/cambrico?a=6WuR4S"&gt;&lt;img src="http://feeds.feedburner.com/~a/cambrico?i=6WuR4S" border="0"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;</description>
 <comments>http://cambrico.net/quejometro/la-agencia-tributaria-me-persigue#comments</comments>
 <category domain="http://cambrico.net/category/categorias/quejometro">quejómetro</category>
 <pubDate>Sun, 20 Jul 2008 17:12:44 +0000</pubDate>
 <dc:creator>pedro</dc:creator>
 <guid isPermaLink="false">141 at http://cambrico.net</guid>
<feedburner:origLink>http://cambrico.net/quejometro/la-agencia-tributaria-me-persigue</feedburner:origLink></item>
<item>
 <title>Duplicar o clonar tablas en mysql</title>
 <link>http://feeds.feedburner.com/~r/cambrico/~3/340720758/duplicar-o-clonar-tablas-en-mysql</link>
 <description>&lt;p&gt;MySQL nos proporciona dos maneras de "clonar" una tabla, tanto su estructura como su estructura y sus datos, podemos querer duplicar una tabla para hacer algún tipo de backup rápido, mantener un histórico, o migrar la tabla a un esquema o base de datos diferentes, entre otras cosas.&lt;/p&gt;
&lt;h3&gt;Clonar una tabla usando SELECT&lt;/h3&gt;
&lt;p&gt;La sentencia de creación &lt;strong&gt;CREATE TABLE (..) SELECT&lt;/strong&gt; nos permite crear la tabla con los registros que devuelva la consulta de selección, pero tiene las siguientes limitaciones:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;No traspasa las constraints de tipo PRIMARY KEY&lt;/li&gt;
&lt;li&gt;No traspasa las definiciones de AUTO_INCREMENT&lt;/li&gt;
&lt;li&gt;No traspasa las &lt;a href="http://cambrico.net/mysql/como-insertar-automaticamente-la-fecha-y-hora-en-mysql"&gt;definiciones de DEFAULT CURRENT_TIMESTAMP&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Utiliza el &lt;a href="http://dev.mysql.com/doc/refman/5.0/es/storage-engines.html"&gt;storage engine&lt;/a&gt; por defecto y no el de la tabla (en caso de que sean distintos)&lt;/li&gt;
&lt;li&gt;Solamente traspasa los registros afectados por la SELECT, que podría no devolver ninguno y crear la tabla vacía&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;!--break--&gt;&lt;/p&gt;
&lt;h5&gt;Ejemplos de duplicado de tablas usando SELECT&lt;/h5&gt;
&lt;p&gt;La tabla origen será la siguiente:&lt;br /&gt;
&lt;code&gt;CREATE TABLE tabla_origen (&lt;br /&gt;
id INT AUTO_INCREMENT NOT NULL PRIMARY KEY,&lt;br /&gt;
descripcion VARCHAR(30),&lt;br /&gt;
fecha TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP)&lt;br /&gt;
ENGINE = MyISAM;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Si la describimos obtenemos lo siguiente:&lt;br /&gt;
&lt;code&gt;mysql&gt; DESCRIBE tabla_origen;&lt;br /&gt;
+-------------+-------------+------+-----+-------------------+----------------&lt;br /&gt;
| Field       | Type        | Null | Key | Default           | Extra&lt;br /&gt;
+-------------+-------------+------+-----+-------------------+----------------&lt;br /&gt;
| id          | int(11)     | NO   | PRI | NULL              | auto_increment&lt;br /&gt;
| descripcion | varchar(30) | YES  |     | NULL              |&lt;br /&gt;
| fecha       | timestamp   | NO   |     | CURRENT_TIMESTAMP |&lt;br /&gt;
+-------------+-------------+------+-----+-------------------+----------------&lt;br /&gt;
3 rows in set (0.00 sec)&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Y hemos insertado diez registros de prueba:&lt;br /&gt;
&lt;code&gt;mysql&gt; SELECT * FROM tabla_origen;&lt;br /&gt;
+----+------------------+---------------------+&lt;br /&gt;
| id | descripcion      | fecha               |&lt;br /&gt;
+----+------------------+---------------------+&lt;br /&gt;
|  1 | Primer Registro  | 2008-07-20 16:42:16 |&lt;br /&gt;
|  2 | Segundo Registro | 2008-07-20 16:42:16 |&lt;br /&gt;
|  3 | Tercer Registro  | 2008-07-20 16:42:16 |&lt;br /&gt;
|  4 | Cuarto Registro  | 2008-07-20 16:42:16 |&lt;br /&gt;
|  5 | Quinto Registro  | 2008-07-20 16:42:16 |&lt;br /&gt;
|  6 | Sexto Registro   | 2008-07-20 16:42:16 |&lt;br /&gt;
|  7 | Séptimo Registro | 2008-07-20 16:42:16 |&lt;br /&gt;
|  8 | Octavo Registro  | 2008-07-20 16:42:16 |&lt;br /&gt;
|  9 | Noveno Registro  | 2008-07-20 16:42:16 |&lt;br /&gt;
| 10 | Décimo Registro  | 2008-07-20 16:42:16 |&lt;br /&gt;
+----+------------------+---------------------+&lt;br /&gt;
10 rows in set (0.00 sec)&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;El storage engine por defecto es InnoDB:&lt;br /&gt;
&lt;code&gt;mysql&gt; SELECT @@storage_engine;&lt;br /&gt;
+------------------+&lt;br /&gt;
| @@storage_engine |&lt;br /&gt;
+------------------+&lt;br /&gt;
| InnoDB           |&lt;br /&gt;
+------------------+&lt;br /&gt;
1 row in set (0.00 sec)&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Usando esta sentencia, duplicaríamos la tabla, tanto su estructura como sus registros:&lt;br /&gt;
&lt;code&gt;mysql&gt; CREATE TABLE clone_select SELECT * FROM tabla_origen;&lt;br /&gt;
Query OK, 10 rows affected (0.08 sec)&lt;br /&gt;
Records: 10  Duplicates: 0  Warnings: 0&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Pero veámos las diferencias:&lt;br /&gt;
&lt;code&gt;mysql&gt; DESCRIBE clone_select;&lt;br /&gt;
+-------------+-------------+------+-----+---------------------+-------+&lt;br /&gt;
| Field       | Type        | Null | Key | Default             | Extra |&lt;br /&gt;
+-------------+-------------+------+-----+---------------------+-------+&lt;br /&gt;
| id          | int(11)     | NO   |     | 0                   |       |&lt;br /&gt;
| descripcion | varchar(30) | YES  |     | NULL                |       |&lt;br /&gt;
| fecha       | timestamp   | NO   |     | 0000-00-00 00:00:00 |       |&lt;br /&gt;
+-------------+-------------+------+-----+---------------------+-------+&lt;br /&gt;
3 rows in set (0.00 sec)&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Hemos &lt;strong&gt;perdido &lt;/strong&gt;tanto la columna &lt;strong&gt;AUTO_INCREMENT&lt;/strong&gt; como el &lt;strong&gt;DEFAULT CURRENT_TIMESTAMP&lt;/strong&gt;, además de la &lt;strong&gt;PRIMARY KEY&lt;/strong&gt;.&lt;br /&gt;
Además, si comparamos la información de la tabla que nos proporciona la tabla TABLES del INFORMATION_SCHEMA:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;mysql&gt; SELECT table_name, engine FROM information_schema.tables WHERE table_name&lt;br /&gt;
IN ('tabla_origen','clone_select') AND table_schema = 'test';&lt;br /&gt;
+--------------+--------+&lt;br /&gt;
| table_name   | engine |&lt;br /&gt;
+--------------+--------+&lt;br /&gt;
| clone_select | InnoDB |&lt;br /&gt;
| tabla_origen | MyISAM |&lt;br /&gt;
+--------------+--------+&lt;br /&gt;
2 rows in set (0.00 sec)&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Tambien vemos que el &lt;strong&gt;storage engine no es el que le indicamos a la tabla original&lt;/strong&gt;, MyISAM, sino que ha tomado el que había por defecto en la base de datos, el InnoDB.&lt;/p&gt;
&lt;p&gt;Para restringir el número de registros, solamente tenemos que agregarle condiciones a la SELECT:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;mysql&gt; CREATE TABLE clone_select_where1 SELECT * FROM tabla_origen WHERE id &lt; 7;&lt;br /&gt;
Query OK, 6 rows affected (0.06 sec)&lt;br /&gt;
Records: 6  Duplicates: 0  Warnings: 0&lt;br /&gt;
mysql&gt; CREATE TABLE clone_select_where2 SELECT * FROM tabla_origen LIMIT 3;&lt;br /&gt;
Query OK, 3 rows affected (0.05 sec)&lt;br /&gt;
Records: 3  Duplicates: 0  Warnings: 0&lt;br /&gt;
mysql&gt; CREATE TABLE clone_select_where3 SELECT * FROM tabla_origen WHERE 0;&lt;br /&gt;
Query OK, 0 rows affected (0.03 sec)&lt;br /&gt;
Records: 0  Duplicates: 0  Warnings: 0&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;En el primer caso hemos restringido el número de registros a traspasar mediante el WHERE, en el segundo caso, usando LIMIT, y en el tercer caso hemos duplicado la tabla vacía usando una condición que nunca se cumplirá.&lt;/p&gt;
&lt;h3&gt;Clonar una tabla usando LIKE&lt;/h3&gt;
&lt;p&gt;Si se usa la sentencia &lt;strong&gt;CREATE TABLE (..) LIKE&lt;/strong&gt; , se creará una tabla vacía que conserva la estructura de la original, pero no los registros.&lt;/p&gt;
&lt;p&gt;La tabla origen será la siguiente:&lt;br /&gt;
&lt;code&gt;CREATE TABLE tabla_origen (&lt;br /&gt;
id INT AUTO_INCREMENT NOT NULL PRIMARY KEY,&lt;br /&gt;
descripcion VARCHAR(30),&lt;br /&gt;
fecha TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP)&lt;br /&gt;
ENGINE = MyISAM;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Si la describimos obtenemos lo siguiente:&lt;br /&gt;
&lt;code&gt;mysql&gt; DESCRIBE tabla_origen;&lt;br /&gt;
+-------------+-------------+------+-----+-------------------+----------------&lt;br /&gt;
| Field       | Type        | Null | Key | Default           | Extra&lt;br /&gt;
+-------------+-------------+------+-----+-------------------+----------------&lt;br /&gt;
| id          | int(11)     | NO   | PRI | NULL              | auto_increment&lt;br /&gt;
| descripcion | varchar(30) | YES  |     | NULL              |&lt;br /&gt;
| fecha       | timestamp   | NO   |     | CURRENT_TIMESTAMP |&lt;br /&gt;
+-------------+-------------+------+-----+-------------------+----------------&lt;br /&gt;
3 rows in set (0.00 sec)&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Y hemos insertado diez registros de prueba:&lt;br /&gt;
&lt;code&gt;mysql&gt; SELECT * FROM tabla_origen;&lt;br /&gt;
+----+------------------+---------------------+&lt;br /&gt;
| id | descripcion      | fecha               |&lt;br /&gt;
+----+------------------+---------------------+&lt;br /&gt;
|  1 | Primer Registro  | 2008-07-20 16:42:16 |&lt;br /&gt;
|  2 | Segundo Registro | 2008-07-20 16:42:16 |&lt;br /&gt;
|  3 | Tercer Registro  | 2008-07-20 16:42:16 |&lt;br /&gt;
|  4 | Cuarto Registro  | 2008-07-20 16:42:16 |&lt;br /&gt;
|  5 | Quinto Registro  | 2008-07-20 16:42:16 |&lt;br /&gt;
|  6 | Sexto Registro   | 2008-07-20 16:42:16 |&lt;br /&gt;
|  7 | Séptimo Registro | 2008-07-20 16:42:16 |&lt;br /&gt;
|  8 | Octavo Registro  | 2008-07-20 16:42:16 |&lt;br /&gt;
|  9 | Noveno Registro  | 2008-07-20 16:42:16 |&lt;br /&gt;
| 10 | Décimo Registro  | 2008-07-20 16:42:16 |&lt;br /&gt;
+----+------------------+---------------------+&lt;br /&gt;
10 rows in set (0.00 sec)&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;El storage engine por defecto es InnoDB:&lt;br /&gt;
&lt;code&gt;mysql&gt; SELECT @@storage_engine;&lt;br /&gt;
+------------------+&lt;br /&gt;
| @@storage_engine |&lt;br /&gt;
+------------------+&lt;br /&gt;
| InnoDB           |&lt;br /&gt;
+------------------+&lt;br /&gt;
1 row in set (0.00 sec)&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Utilizando la sentencia LIKE, clonaremos la tabla, pero no su contenido:&lt;br /&gt;
&lt;code&gt;mysql&gt; CREATE TABLE clone_like LIKE tabla_origen;&lt;br /&gt;
Query OK, 0 rows affected (0.02 sec)&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Pero en este caso, a diferencia del de la SELECT, sí se mantiene la estructura básica de la tabla:&lt;br /&gt;
&lt;code&gt;mysql&gt; DESCRIBE clone_like;&lt;br /&gt;
+-------------+-------------+------+-----+-------------------+----------------+&lt;br /&gt;
| Field       | Type        | Null | Key | Default           | Extra          |&lt;br /&gt;
+-------------+-------------+------+-----+-------------------+----------------+&lt;br /&gt;
| id          | int(11)     | NO   | PRI | NULL              | auto_increment |&lt;br /&gt;
| descripcion | varchar(30) | YES  |     | NULL              |                |&lt;br /&gt;
| fecha       | timestamp   | NO   |     | CURRENT_TIMESTAMP |                |&lt;br /&gt;
+-------------+-------------+------+-----+-------------------+----------------+&lt;br /&gt;
3 rows in set (0.00 sec)&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Y el storage engine también se conserva:&lt;br /&gt;
&lt;code&gt;mysql&gt; SELECT table_name, engine FROM information_schema.tables WHERE table_name&lt;br /&gt;
 IN ('tabla_origen','clone_like') AND table_schema = 'test';&lt;br /&gt;
+--------------+--------+&lt;br /&gt;
| table_name   | engine |&lt;br /&gt;
+--------------+--------+&lt;br /&gt;
| clone_like   | MyISAM |&lt;br /&gt;
| tabla_origen | MyISAM |&lt;br /&gt;
+--------------+--------+&lt;br /&gt;
2 rows in set (0.00 sec)&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Pero los datos no se traspasan, por lo que la tabla estará vacía:&lt;br /&gt;
&lt;code&gt;mysql&gt; SELECT * FROM clone_like;&lt;br /&gt;
Empty set (0.00 sec)&lt;/code&gt;&lt;/p&gt;
&lt;h3&gt;Excepciones para ambos casos&lt;/h3&gt;
&lt;p&gt;Tanto si utilizamos la clonación mediante SELECT como si usamos LIKE, habrá varios atributos de las tablas que &lt;strong&gt;no se van a copiar&lt;/strong&gt; y debemos copiarlos manualmente:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Claves foráneas, las FOREIGN KEYS no se copian en ninguno de los casos, se debe hacer un ALTER TABLE manual para incluirlas después de realizar la copia.&lt;/li&gt;
&lt;li&gt;En el caso del storage engine MyISAM, los opciones de DATA DIRECTORY e INDEX DIRECTORY tampoco se copian, los ficheros de datos e índices se ubicarán en el directorio general especificado para la base de datos destino.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Conclusión, consejos y recomendaciones&lt;/h3&gt;
&lt;p&gt;Por lo observado en estas pruebas, ambas opciones tienen sus ventajas e inconvenientes, por lo que se debe ser cuidadoso al elegir una de las dos alternativas si necesitamos duplicar o clonar una tabla.&lt;br /&gt;
Si lo que nos interesa conservar principalmente son los datos y la estructura ya la tenemos en otro lugar accesible como en las copias de seguridad, o en una copia del esquema, el método a elegir sería sin duda SELECT, pero si nos interesa copiar solamente la estructura, o la estructura es igual de importante que los datos para nuestra copia, se debe utilizar el LIKE, y posteriormente, un INSERT INTO (..) SELECT para copiar también los datos.&lt;br /&gt;
&lt;code&gt;mysql&gt; INSERT INTO clone_like SELECT * FROM tabla_origen;&lt;br /&gt;
Query OK, 10 rows affected (0.00 sec)&lt;br /&gt;
Records: 10  Duplicates: 0  Warnings: 0&lt;br /&gt;
mysql&gt; SELECT * FROM clone_like;&lt;br /&gt;
+----+------------------+---------------------+&lt;br /&gt;
| id | descripcion      | fecha               |&lt;br /&gt;
+----+------------------+---------------------+&lt;br /&gt;
|  1 | Primer Registro  | 2008-07-20 16:42:16 |&lt;br /&gt;
|  2 | Segundo Registro | 2008-07-20 16:42:16 |&lt;br /&gt;
|  3 | Tercer Registro  | 2008-07-20 16:42:16 |&lt;br /&gt;
|  4 | Cuarto Registro  | 2008-07-20 16:42:16 |&lt;br /&gt;
|  5 | Quinto Registro  | 2008-07-20 16:42:16 |&lt;br /&gt;
|  6 | Sexto Registro   | 2008-07-20 16:42:16 |&lt;br /&gt;
|  7 | Séptimo Registro | 2008-07-20 16:42:16 |&lt;br /&gt;
|  8 | Octavo Registro  | 2008-07-20 16:42:16 |&lt;br /&gt;
|  9 | Noveno Registro  | 2008-07-20 16:42:16 |&lt;br /&gt;
| 10 | Décimo Registro  | 2008-07-20 16:42:16 |&lt;br /&gt;
+----+------------------+---------------------+&lt;br /&gt;
10 rows in set (0.00 sec)&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Es muy importante, en ambos casos, tener en cuenta que las FOREIGN KEYS no se traspasan.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Espero que os haya resultado útil.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feeds.feedburner.com/~a/cambrico?a=c2vJ3v"&gt;&lt;img src="http://feeds.feedburner.com/~a/cambrico?i=c2vJ3v" border="0"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;</description>
 <comments>http://cambrico.net/mysql/duplicar-o-clonar-tablas-en-mysql#comments</comments>
 <category domain="http://cambrico.net/category/categorias/mysql">mysql</category>
 <pubDate>Sun, 20 Jul 2008 11:30:55 +0000</pubDate>
 <dc:creator>pedro</dc:creator>
 <guid isPermaLink="false">140 at http://cambrico.net</guid>
<feedburner:origLink>http://cambrico.net/mysql/duplicar-o-clonar-tablas-en-mysql</feedburner:origLink></item>
<item>
 <title>Parking con tolerancia "Cero"</title>
 <link>http://feeds.feedburner.com/~r/cambrico/~3/337307843/parking-con-tolerancia-cero</link>
 <description>&lt;p&gt;Este &lt;em&gt;amistoso&lt;/em&gt; cartel me lo encontré de paso por la zona de la Bonanova en Barcelona, me gustaría haber visto la cara del ferretero al que le llevaron a grabar el letrero en cuestión...&lt;/p&gt;
&lt;p&gt;&lt;img src="/sites/cambrico.net/files/u1/grua_parking.jpg" width="550" height="413" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;Sin duda es una buena mezcla de agresividad pasiva y consecuencias fatales....&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feeds.feedburner.com/~a/cambrico?a=hx1rkT"&gt;&lt;img src="http://feeds.feedburner.com/~a/cambrico?i=hx1rkT" border="0"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;</description>
 <comments>http://cambrico.net/16-07-2008/parking-con-tolerancia-cero#comments</comments>
 <category domain="http://cambrico.net/category/categorias/curiosidades">curiosidades</category>
 <pubDate>Wed, 16 Jul 2008 18:05:53 +0000</pubDate>
 <dc:creator>pedro</dc:creator>
 <guid isPermaLink="false">139 at http://cambrico.net</guid>
<feedburner:origLink>http://cambrico.net/16-07-2008/parking-con-tolerancia-cero</feedburner:origLink></item>
<item>
 <title>Módulo de Views para Drupal</title>
 <link>http://feeds.feedburner.com/~r/cambrico/~3/336210245/modulo-de-views-para-drupal</link>
 <description>&lt;p&gt;&lt;strong&gt;Nota&lt;/strong&gt;: Este post es parte de una serie de posts dedicados a &lt;a href="http://cambrico.net/03-07-2008/modulo-de-cck-content-construction-kit-para-drupal"&gt;CCK &lt;/a&gt;y al uso avanzado de las vistas con argumentos en Drupal. &lt;/p&gt;
&lt;h3&gt;qué son las vistas&lt;/h3&gt;
&lt;p&gt;El módulo &lt;a href="http://drupalmodules.com/module/views"&gt;Views&lt;/a&gt; nos permite generar vistas para poder mostrar el contenido que queramos, filtrado y organizado a través de una interfaz que hace la tarea relativamente sencilla. Nos puede servir, por ejemplo, para mostrar solamente los títulos y las imágenes de las páginas publicadas ordenadas por fecha de creación, sin vistas, para poder extraer listados, deberíamos construir un módulo o un bloque con código PHP y consultas SQL manualmente.&lt;/p&gt;
&lt;h3&gt;¿para qué puedo querer utilizar vistas?&lt;/h3&gt;
&lt;p&gt;La mayor utilidad de las vistas aparece cuando necesitamos crear tipos de contenido personalizados mediante &lt;a href="http://drupalmodules.com/module/content-construction-kit-cck"&gt;CCK&lt;/a&gt;, a través del interfaz de usuario del módulo Views, podemos filtrar el contenido que pertenezca a uno o varios tipos de contenido y generar listados. &lt;/p&gt;
&lt;h3&gt;¿cómo se instala?&lt;/h3&gt;
&lt;p&gt;La instalación no difiere mucho de la de cualquier otro módulo, se debe descargar la versión estable del módulo (es decir, la que no tenga un sufijo&lt;em&gt; dev, rc, alpha o beta&lt;/em&gt;) desde la página del proyecto y, una vez descomprimida, se debe copiar la carpeta views al directorio de nuestra instalación de drupal, en el subdirectorio &lt;em&gt;sites/all/modules/ &lt;/em&gt;(o sites/midominio.com/modules/ dependiendo de dónde o cómo tengamos drupal instalado).&lt;br /&gt;
Entonces vamos a &lt;em&gt;Administrar » Construcción del sitio » Módulos&lt;/em&gt; y activamos el Views junto al resto de módulos del mismo paquete que vayamos a necesitar, como por ejemplo el &lt;strong&gt;Views UI&lt;/strong&gt;, que es el módulo que nos proporciona la interfaz de usuario para poder crear y modificar nosotros mismos las vistas, el &lt;strong&gt;Views Theme Wizard&lt;/strong&gt;, que sirve para poder crear plantillas y darle formato a nuestras vistas, o el &lt;strong&gt;Views RSS&lt;/strong&gt;, que es un añadido que nos permite generar un &lt;a href="http://es.wikipedia.org/wiki/Feed"&gt;feed&lt;/a&gt; para las vistas en las que lo necesitemos.&lt;/p&gt;
&lt;h3&gt;vistas de tipo página y de tipo bloque&lt;/h3&gt;
&lt;p&gt;Las vistas pueden generar estos listados personalizados de dos formas, las &lt;strong&gt;vistas de tipo página&lt;/strong&gt; generan una página accesible mediante una URL que nosotros debemos configurar y las de &lt;strong&gt;tipo bloque&lt;/strong&gt; no tienen esta URL, sino que generan un bloque que podemos situar en cualquiera de las regiones de nuestra página mediante el menú &lt;em&gt;Administrar » Construcción del sitio » Bloques&lt;/em&gt;.&lt;/p&gt;
&lt;h3&gt;lo básico: campos, filtros y ordenación&lt;/h3&gt;
&lt;p&gt;Las opciones básicas que tenemos que manejar para poder crear vistas de forma correcta y eficiente son los campos, los filtros y los parámetros de ordenación.&lt;br /&gt;
Los &lt;strong&gt;campos&lt;/strong&gt; definen la información que queremos mostrar de los elementos a listar, podemos especificar que queremos mostrar el título del nodo y sus categorías, el teaser o el contenido completo del nodo...&lt;br /&gt;
Los &lt;strong&gt;filtros&lt;/strong&gt; sirven para cribar la información que no necesitamos, por ejemplo si queremos ver solo los nodos publicados (recomendado) o los nodos solamente de cierto tipo de contenido, o de una categoría (o varias) determinadas.&lt;br /&gt;
Los &lt;strong&gt;parámetros de ordenación&lt;/strong&gt; nos permiten ordenar los elementos recuperados por varios criterios (incluso anidados), como la creación del nodo, el título o incluso, gracias a la integración de Views y el módulo &lt;a href="http://drupal.org/project/votingapi"&gt;VotingAPI&lt;/a&gt; (que gestiona la valoración de contenido), se puede ordenar el contenido según la valoración de los usuarios.&lt;br /&gt;
Los filtros expuestos nos permiten extraer alguno de los campos de filtrado para que los pueda utilizar el usuario, es decir, si exponemos el tipo de contenido, la vista mostrará un campo de selección con los tipos de contenido posibles y el usuario filtrará el contenido que le interese a través de este campo.&lt;br /&gt;
Sobre los argumentos dedicaré varias entradas más adelante, ya que es una forma avanzada de uso y manipulación de vistas.&lt;/p&gt;
&lt;h3&gt;vistas y CCK&lt;/h3&gt;
&lt;p&gt;Los módulos Views y CCK son complementarios e imprescindibles para aumentar exponencialmente la velocidad de construcción de sitios web que nos proporciona Drupal, además de hacer la labor mucho más ágil y simple. Actualmente solo cuentan con versiones estables para Drupal 5.x, pero las versiones para Drupal 6 &lt;a href="http://drupal.org/node/277856"&gt;están bastante avanzadas&lt;/a&gt;.&lt;br /&gt;
CCK nos permite mostrar información personalizada a través de las Views, podemos añadir imágenes, campos de texto, ficheros de todo tipo, mapas de google, sistemas de votaciones, y una infinidad de campos que luego podrán ser mostrados y filtrados a través de las vistas.&lt;/p&gt;
&lt;h3&gt;otros módulos interesantes que interactúan con las vistas&lt;/h3&gt;
&lt;p&gt;Además de la integración con CCK, el módulo views interactúa con varios módulos más, ya que tiene un sistema de hooks que permiten a otros módulos de la comunidad incluir filtros, campos, argumentos, criterios de ordenación.&lt;br /&gt;
Algunos de los más interesantes son:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://drupal.org/project/votingapi"&gt;VotingAPI&lt;/a&gt;, que permite ordenar por puntuación de los usuarios&lt;/li&gt;
&lt;li&gt;&lt;a href="http://drupal.org/project/views_bonus"&gt;Views Bonus Pack&lt;/a&gt;, que añade muchas funcionalidades a las vistas, como vistas de tipo grid o export de datos, entre otras muchas.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://drupal.org/project/ubercart"&gt;Ubercart&lt;/a&gt;, el sistema de comercio electrónico se integra con Views y es posible mostrar información de los productos y filtrar por ella.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://drupal.org/project/forward"&gt;Forward&lt;/a&gt;, que sirve para añadir links de envío por mail, también permite añadir estos links al contenido de una vista&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;¡vamos a ver un ejemplo!&lt;/h3&gt;
&lt;p&gt;&lt;embed src="http://blip.tv/play/AcKucQA" type="application/x-shockwave-flash" width="600" height="480" allowscriptaccess="always" allowfullscreen="true"&gt;&lt;/embed&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feeds.feedburner.com/~a/cambrico?a=S8mADy"&gt;&lt;img src="http://feeds.feedburner.com/~a/cambrico?i=S8mADy" border="0"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;</description>
 <comments>http://cambrico.net/15-07-2008/modulo-de-views-para-drupal#comments</comments>
 <category domain="http://cambrico.net/category/categorias/drupal">drupal</category>
 <category domain="http://cambrico.net/category/drupal/version/5x">5.x</category>
 <category domain="http://cambrico.net/category/drupal/modulos/cck">cck</category>
 <category domain="http://cambrico.net/category/drupal/modulos/views">views</category>
 <pubDate>Tue, 15 Jul 2008 14:07:03 +0000</pubDate>
 <dc:creator>pedro</dc:creator>
 <guid isPermaLink="false">138 at http://cambrico.net</guid>
<feedburner:origLink>http://cambrico.net/15-07-2008/modulo-de-views-para-drupal</feedburner:origLink></item>
<item>
 <title>Cómo poner la primera letra de una frase en mayúsculas con MySQL</title>
 <link>http://feeds.feedburner.com/~r/cambrico/~3/330975697/como-poner-la-primera-letra-de-una-frase-en-mayusculas-con-mysql</link>
 <description>&lt;p&gt;Normalmente los sistemas de programación y bases de datos nos proveen con una función relativamente simple cuya utilidad consiste en transformar la primera letra de una frase o palabra a mayúsculas, en php es &lt;a href="http://www.w3schools.com/PHP/func_string_ucfirst.asp"&gt;ucfirst()&lt;/a&gt;, en Oracle es &lt;a href="http://www.adp-gmbh.ch/ora/sql/initcap.html"&gt;initcap&lt;/a&gt; (en el caso de transformar una frase, la función de Oracle pone cada primera palabra en mayúsculas), pero parece ser que MySQL no la tiene, por lo que tenemos que explorar un poco más y usar una solución más creativa.&lt;/p&gt;
&lt;p&gt;Pongamos como ejemplo esta frase:&lt;br /&gt;
&lt;code&gt;mysql&gt; SET @frase = 'bienvenidos a cambrico.net';&lt;br /&gt;
Query OK, 0 rows affected (0.00 sec)&lt;br /&gt;
mysql&gt; SELECT @frase;&lt;br /&gt;
+----------------------------+&lt;br /&gt;
| @frase                     |&lt;br /&gt;
+----------------------------+&lt;br /&gt;
| bienvenidos a cambrico.net |&lt;br /&gt;
+----------------------------+&lt;br /&gt;
1 row in set (0.00 sec)&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Nota: &lt;/strong&gt;He utilizado una variable de mysql con SET y @ para hacer las siguientes operaciones un poco mas simples.&lt;/p&gt;
&lt;p&gt;Tenemos funciones como UPPER/UCASE y LOWER/LCASE para transformar a mayúsculas o minúsculas la cadena:&lt;br /&gt;
&lt;code&gt;mysql&gt; SELECT UPPER(@frase);&lt;br /&gt;
+----------------------------+&lt;br /&gt;
| UPPER(@frase)              |&lt;br /&gt;
+----------------------------+&lt;br /&gt;
| BIENVENIDOS A CAMBRICO.NET |&lt;br /&gt;
+----------------------------+&lt;br /&gt;
1 row in set (0.00 sec)&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Y para obtener la primera letra de la cadena en mayúsculas podemos utilizar un encadenado de las siguientes funciones: &lt;a href="http://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_left"&gt;LEFT&lt;/a&gt;, para tomar el primer caracter de la izquierda y &lt;a href="http://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_substr"&gt;SUBSTR&lt;/a&gt; para coger los restantes, de esta forma tenemos aislada la primera letra. Aplicamos &lt;a href="http://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_upper"&gt;UPPER&lt;/a&gt; para transformarla en mayúsculas y unimos la cadena de nuevo con &lt;a href="http://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_concat"&gt;CONCAT&lt;/a&gt; (si tenemos sql_mode en &lt;strong&gt;ANSI_QUOTES&lt;/strong&gt;, podemos usar ||)&lt;br /&gt;
&lt;code&gt;mysql&gt; SELECT CONCAT(UPPER(LEFT(@frase,1)),SUBSTR(@frase,2));&lt;br /&gt;
+------------------------------------------------+&lt;br /&gt;
| CONCAT(UPPER(LEFT(@frase,1)),SUBSTR(@frase,2)) |&lt;br /&gt;
+------------------------------------------------+&lt;br /&gt;
| Bienvenidos a cambrico.net                     |&lt;br /&gt;
+------------------------------------------------+&lt;br /&gt;
1 row in set (0.00 sec)&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Actualizo:&lt;/strong&gt; Para hacer lo que comenta Roberto, es decir, poner todas las palabras con la primera letra en mayúscula, tienes que hacer un procedimiento o una función (esto solo es posible a partir de MySQL 5.0). Os dejo un ejemplo:&lt;br /&gt;
&lt;!--break--&gt;&lt;br /&gt;
&lt;code&gt;DELIMITER //&lt;br /&gt;
DROP FUNCTION IF EXISTS initcap;&lt;br /&gt;
//&lt;br /&gt;
CREATE FUNCTION initcap(cadena VARCHAR(100))&lt;br /&gt;
RETURNS VARCHAR(100)&lt;br /&gt;
BEGIN&lt;br /&gt;
DECLARE pos INT DEFAULT 0;&lt;br /&gt;
DECLARE tmp VARCHAR(100) DEFAULT '';&lt;br /&gt;
DECLARE result VARCHAR(100) DEFAULT '';&lt;br /&gt;
REPEAT&lt;br /&gt;
  SET pos = LOCATE(' ', cadena);&lt;br /&gt;
  IF pos = 0 THEN&lt;br /&gt;
    SET pos = CHAR_LENGTH(cadena);&lt;br /&gt;
  END IF;&lt;br /&gt;
  SET tmp = LEFT(cadena,pos);&lt;br /&gt;
  SET result =  CONCAT(result, UPPER(LEFT(tmp,1)),SUBSTR(tmp,2));&lt;br /&gt;
  SET cadena = RIGHT(cadena,CHAR_LENGTH(cadena)-pos);&lt;br /&gt;
UNTIL CHAR_LENGTH(cadena) = 0&lt;br /&gt;
END REPEAT;&lt;br /&gt;
RETURN result;&lt;br /&gt;
END;&lt;br /&gt;
//&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Y a partir de ahora, en la base de datos que hayamos creado la función, podremos utilizarla:&lt;br /&gt;
&lt;code&gt;mysql&gt; SELECT initcap(@frase);&lt;br /&gt;
+----------------------------+&lt;br /&gt;
| initcap(@frase)            |&lt;br /&gt;
+----------------------------+&lt;br /&gt;
| Bienvenidos A Cambrico.net |&lt;br /&gt;
+----------------------------+&lt;br /&gt;
1 row in set (0.00 sec)&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Con una pequeña modificación de la función anterior, podemos filtrar las palabras de menos de 4 caracteres (por ejemplo), para no poner en mayúsculas la mayoría de conectores:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;DELIMITER //&lt;br /&gt;
DROP FUNCTION IF EXISTS initcap;&lt;br /&gt;
//&lt;br /&gt;
CREATE FUNCTION initcap(cadena VARCHAR(100))&lt;br /&gt;
RETURNS VARCHAR(100)&lt;br /&gt;
BEGIN&lt;br /&gt;
DECLARE pos INT DEFAULT 0;&lt;br /&gt;
DECLARE tmp VARCHAR(100) DEFAULT '';&lt;br /&gt;
DECLARE result VARCHAR(100) DEFAULT '';&lt;br /&gt;
REPEAT&lt;br /&gt;
  SET pos = LOCATE(' ', cadena);&lt;br /&gt;
  IF pos = 0 THEN&lt;br /&gt;
    SET pos = CHAR_LENGTH(cadena);&lt;br /&gt;
  END IF;&lt;br /&gt;
  SET tmp = LEFT(cadena,pos);&lt;br /&gt;
  IF CHAR_LENGTH(tmp) &lt; 4 THEN&lt;br /&gt;
   SET result = CONCAT(result, tmp);&lt;br /&gt;
  ELSE&lt;br /&gt;
   SET result =  CONCAT(result, UPPER(LEFT(tmp,1)),SUBSTR(tmp,2));&lt;br /&gt;
  END IF;&lt;br /&gt;
  SET cadena = RIGHT(cadena,CHAR_LENGTH(cadena)-pos);&lt;br /&gt;
UNTIL CHAR_LENGTH(cadena) = 0&lt;br /&gt;
END REPEAT;&lt;br /&gt;
RETURN result;&lt;br /&gt;
END;&lt;br /&gt;
//&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Y el resultado sería ligeramente distinto:&lt;br /&gt;
&lt;code&gt;mysql&gt; SELECT initcap(@frase);&lt;br /&gt;
+----------------------------+&lt;br /&gt;
| initcap(@frase)            |&lt;br /&gt;
+----------------------------+&lt;br /&gt;
| Bienvenidos a Cambrico.net |&lt;br /&gt;
+----------------------------+&lt;br /&gt;
1 row in set (0.00 sec)&lt;br /&gt;
&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feeds.feedburner.com/~a/cambrico?a=dYqp8A"&gt;&lt;img src="http://feeds.feedburner.com/~a/cambrico?i=dYqp8A" border="0"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;</description>
 <comments>http://cambrico.net/09-07-2008/como-poner-la-primera-letra-de-una-frase-en-mayusculas-con-mysql#comments</comments>
 <category domain="http://cambrico.net/category/categorias/mysql">mysql</category>
 <pubDate>Wed, 09 Jul 2008 17:50:22 +0000</pubDate>
 <dc:creator>pedro</dc:creator>
 <guid isPermaLink="false">137 at http://cambrico.net</guid>
<feedburner:origLink>http://cambrico.net/09-07-2008/como-poner-la-primera-letra-de-una-frase-en-mayusculas-con-mysql</feedburner:origLink></item>
<item>
 <title>Curso Introducción a Drupal 5.x</title>
 <link>http://feeds.feedburner.com/~r/cambrico/~3/329735197/curso-introduccion-a-drupal-5x</link>
 <description>&lt;p&gt;&lt;a href="http://www.documentados.com/"&gt;Oskar Calvo&lt;/a&gt; me ha pasado esta información sobre un curso que van a impartir a través de su empresa. Se trata de una formación online orientada a la toma de contacto con &lt;strong&gt;Drupal&lt;/strong&gt; donde se podrá obtener una idea general del funcionamiento del CMS y bastantes nociones para administrarlo a nivel de webmaster.&lt;/p&gt;
&lt;p&gt;Creo que es vital tener opciones de formación en la comunidad hispana para poder &lt;a href="http://cambrico.net/22-05-2008/como-colaborar-para-conseguir-una-mayor-propagacion-de-drupal"&gt;fomentar el uso de Drupal&lt;/a&gt;, ya sea como CMS o como framework de desarrollo para desarrollar proyectos más complejos.&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;
&lt;strong&gt;Metodología del curso:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;El curso "Introducción a Drupal 5.x" esta dividido en 7 secciones, y cada una de las cuales tiene sus propios capítulos o apartados.&lt;/p&gt;
&lt;p&gt