Eleazan's Source ¿Que será?

14may/121

Finisher!

Increible. No me lo esperaba, después de un largo período de no poder correr por una tendinitis, después un esguince, y tener que ir poco a poco... y que apenas conseguía pasar los 4km... ¡he terminado una Media Maratón! En concreto, la IV Media Maratón de Formentera.

La verdad, ha sido mi segunda carrera popular (La primera fue una de 7.5km), y no iba para nada preparado. Me apunté una semana antes de la carrera, y habiendo hecho sólo un entreno "larguillo". Ese mismo lunes, hice 13km con Sónia, que, me animó bastante para la prueba. Al día siguiente sin problemas de rodilla (cosa importante), y el miércoles otro entreno de 10km con Sónia, Cristian, Rocío y Pedro (pff, como tira este último!), en el que pinché sobre el km 8, pero terminé completando los 10km's a trote! (¡gracias a Cristian que se quedó conmigo!). Y estos fueron todos mis entrenos para la media maratón. Para nada suficiente, pero me veía capaz de hacer 21km.

Pero llegó el sábado, llegaron los nervios, los miedos. No fuí capaz de comer casi, no merendé, no cené (me tomé un batido de chocolate solo!), y, para más inri, hasta las 02 de la mañana por Eivissa Medieval (un buen paseito, con buenas cuestecitas!). Todo ideal para el día pre-media. Menudo soy! Y con la barriga suelta, por supuesto!

Y el domingo. A las 06 de la mañana en pie, con mucho sueño, a prepararme (no, no tenia la mochila preparada!), q, aparte de la media maratón, quería pasar el día en formentera. A las 6.30 camino al puerto, habiendo desayunado un tazón de leche con nesquik, y un (sí, UNO) sobao pasiego. That's all!

Llego al puerto, y estaban allí mis compañeros de IbizaRunners, que la mayoría no sabia q iba a correr la media maratón (unos pensaban q iria para hacer fotos, otros para la de 8km...), y les digo q voy a hacer la media... Tó loco to loco! Y nada, el paseito en barco tranquilo (el mar se portó bien!), los "expertos" los veíais concentrados (excepto Jesús, q estaba durmiendo!), supongo q visualizando la carrera, o cosas que suelan hacer! Después subimos al autobús, que nos lleva hasta el faro de la Mola, lugar de la salida de la media.

Y aquí, primera decepción con la organización. Voy a retirar mi dorsal, y me dicen que no había camisetas de mi talla, que la reclame al llegar a meta. Bueno, vale, tiene un pase, me apunté bastante tarde... pero aún así, creo q la talla L es más o menos normal.

Y nos quedamos por allí, saludando gente conocida, dando vueltas, meando, calentando (yo pasé de hacer trote, estiré un poquito y arreando!), algunos haciendo cola para el baño (eramos casi 1000 corredores, y había 4 baños... sin comentarios!). El ambiente era muy amigable, bastante chulo! Sónia me da medio plátano (qué haría yo sin ti? ). A 10 minutos de empezar la carrera, la gente va pillando posiciones, me quedo por "el final" (el final de la recta, almenos), pq no iba por tiempo yo, sino q mi objetivo era terminarla!). Y nada, la gente se va animando, sonrisas por aqui y por allí, algunos bailando (qué energías!), y, ¡empieza la salida!.

Imaginad. Mi primera media maratón empieza... ¡Y la empiezo andando! No podíamos avanzar sin comernos a la persona de delante, y poco a poco se va acelerando un pelín, hasta que podemos decir que ya vamos corriendo! (Entre el primero que paso por la salida, y yo, hay 1 minuto de diferencia casi!). Como no tengo un ritmo muy fuerte, es una carrera larga, y no me he alimentado bien para ella... me quedo con Clara y Eva (aunq Eva podría haber tirado cuando quisiese... es una máquina!). La pobre Clara, lo pasó mal al principio... con tanto miedo de su rodilla (el día anterior no podía correr ni 2km! Eso sí que es ser testaruda!). Y desde nuestra privilegiada posicion de casi-final, podemos ver una estampa preciosa.

Imaginad, 1000 corredores, la carretera del faro de la Mola (recta completamente). Todo lo que veíamos de carretera eran corredores (y, como no les gusta llevar colores llamativos a los "runners"...). Lástima no haber tenido una cámara!

Proseguimos con la carrera. Los primeros 3/4 km a ritmo normalito, tranquilamente, charlando, riendo, haciendo bromas. Mucho cachondeo (estos corredores están locos!), supongo que pq todos vamos frescos aún. Pero, empezamos a notar el sol, ¡qué calor! Ni una nube, ni una sombra. Queremos agua (algo comprensible). Y esperamos con una sonrisa el primer avituallamiento (km 5, restaurante el Mirador, vistas preciosas, sólo liquido). Y cuando llegamos (q en la bajada, Clara se encontraba mejor de lo que pensaba, y aceleramos un pelín), nos encontramos con un avituallamiento con vistas preciosas... pero sin agua. Sin isotónico. Los pobres voluntarios, impotentes, nos decían "no hay!", cuando pedíamos agua, o un entrecot (¿Qué pasa? Q Clara tenía hambre!). Y nada, un pelín menos contentos, seguimos bajando, y vamos adelantando corredores... Vamos de cachondeo con la gente, con el coche de IB3 (pobres! Creo q les pedí 5 o 6 veces una cerveza fresquita... ¡lástima q no coló!).

Y aquí, otro gran momento de la carrera. Aún queda gente buena en este mundo, hay esperanza. Pasábamos por un supermercado (Supermercado Pastelería Mama Pan), y no sé si Eva, Clara, o yo, que estábamos todo el rato igual, le pedimos agua (o cerveza! Si fui yo...), y la chica.... ¡nos dijo que sí! Entró al super, y salió con 4 botellitas de agua, que repartimos y compartimos entre los runners que teníamos cerca. ¡Qué bien sentó el agua!

Seguimos bajando, más con buen ritmo, ofreciendo agua (en caso de que nos quedase), y pasamos por algún pueblecito. Bastante gente animando, se agradece muchísimo! Yo iba haciendo bromas (para no pensar en el cansancio, supongo!). Pero, se agradecian unos aplausos, o unas risas de vez en cuando. Seguía haciendo mucho sol (antes, durante, y después de la carrera!), y quemaba bastante. Me dí cuenta de otro fallo que había tenido: No ponerme crema. Me habían avisado, pero, como soy un macho... pues eso. Sobre el km9 me empiezo a encontrar bastante mal, y creo que en el km 10 nos encontramos a Jesús (si no me fallan las cuentas!), que viendo que no podría terminar en el tiempo que quería, se había quedado para acompañar a Clara hasta la meta (¡q grande!). En este momento, yo me encontraba mal, no sabía si podría terminarla... seguí sumando kilometos (1 o 2) antes de decirles que tenía frio... Sí. Repito. Frío. Con un sol infernal, habiendo corrido 12kms, creía q no podía más. Jesús me dice q simplemente estoy destemplado, y sigo corriendo. Clara se tiene que parar por la rodilla (Jesús se queda con ella) y yo sigo con Eva... pero, no duro ni 5 minutos, y tengo q parar. Voy andando un pelin, corro, ando. Tengo miedo (sigo con frio) y me encuentro bastante mal. Llega Clara por detrás, gritando, diciendome que corra! Lo intento, con ganas, pero, me cuesta horrores. Pasamos por Sant Ferran, y les digo que continúen. Yo voy andando unos 100 o 150 metros, y decido seguir corriendo. Consigo hacer un kilometro más, sin que Jesús y Clara estén muy lejos, pero, vuelvo a parar. Algo mareadillo, ando a paso ligero, para no perder mucho, y viene por detrás Juan Antonio, asiq, un último esfuerzo, empiezo a rodar con él. Tenía cara de sufrimiento... pero, supongo, q a esas alturas (16km), todos tendríamos la misma cara.

No puedo más que aguantarle un ratito, y me dan calambres en el gemelo derecho. Qué impotencia. Recuerdo que llevo un gel en el bolsillo, y, en un atrevimiento, pienso que con eso quizás desaparezcan los calambres, ya que cada vez que quiero correr empiezan otra vez! Abro el bolsillo, y, ¡sorpresa!. No está mi gel. Qué mundo más cruel.

Voy andando, corriendo, andando. A intervalos de 200 metros, 100, 50... cada vez me avisa antes el gemelo. Voy conociendo corredores que tampoco pueden más. Una mujer, que decía q había corrido un maratón sin parar, y que este calor le había obligado a parar en la media... Un chaval, Ignacio, que venía de bcn... había llegado el viernes a Ibiza, paseado por el medieval.. y el sábado para Formentera... En fin, muchas historias, muchos nombres, muchas caras cansadas... pero entre todos dándonos ánimos. Intentando que el otro pillase unas pocas fuerzas, y yo pidiendo reflex a protección civil, organización, voluntarios.. nadie tenía.

Así pues, hice los últimos km con amenazas de calambres mientras andaba a paso ligerito (ambos gemelos ya). Maldiciendo mi estupidez del día anterior, de no haber cenado algo... pq me encontraba con fuerzas para correr ya. EL último km, la gente me decía "Ánimo! Ya estás llegando! Un último esfuerzo!", pero, no me veía capaz de correr con dolor en los gemelos, asiq, esperé. Esperé. Y Esperé. Mientras me centraba en pensar "los últimos metros, sí o sí". Asi, mientras llegaba al final, los últimos 100 metros, un par de metros antes de la última curva para encarar la meta, empiezo a corre.

Qué horror. Tengo que ir apollando los talones, como si fuese haciendo marcha... para que los gemelos no doliesen tanto. Un calvario. Pero lo hice. Y qué animos daban! Muchísima gente en la recta, que me hicieron un pasillito y todo para que llegase (y eso que era de los últimos!). Yo creo que llegué por ellos, más que por mi! Imaginaos... me recuerda a la imagen de un ciclista, en solitario, cuando está escalando un puerto, y antes del "checkpoint" hay un montón de gente y apenas puede pasar... pues lo mismo. Pero siendo el último casi (2h 34m oficial, 2h 33m real).

Y nada más llegar, me dan la medallita... y no sé donde estoy. Busco gente conocida, pero no veo a nadie. Al final, veo a Pedro y Abraham, y poco a poco me empiezan a sonar rostros. Uno de los que sufrian conmigo, me da la mano amistosamente. Ignacio, sentado en una silla, le digo "Te debo una cerveza!", que al final no nos la tomamos. ambién veo a Josep (6º en la general, q bestia!), y le saludo. Después, me dirijo a la ambulancia, y cual pobre vagabundo que lleva 6 días sin comer, les pido un poco de reflex. ¡Gloria bendita! Qué alivio.

Busco a mis compañeros, y les saludo. Menos mal que Jesús se percata que aún llevo el chip (xD), y voy a devolverlo. También pido mi camiseta, que sólo quedaban tallas XXL, y me tengo que aguantar.. lástima, la camiseta era bien chula!

Me despido de los corredores, pillo un croissant de chocolate (Marca hacendado xD), y me voy hacia el alquiler de bicis. Y nada, unos cuantos km's hasta Cala Saona, a ver la salida de F1 con una cervecita, y un bañito en la playa. Ese trayecto en bici fácil, la vuelta la sufrí más, ya tenía agujetas (!).

Y sobre las 4, vuelta a la sabina, para pillar el barco de las 6. Buen día en formentera!

A mejorar en la próxima media:

Alimentación: Básico. No vuelvo a hacer esto sin cenar bien!

Hidratación: lo mismo fué por el calor, pero creo q me faltó beber agua

Protección solar: Tanto crema como gorra, (incluso gafas!). Tengo q empezar a correr con eso

Indumentaria: Un pantalón / malla, que no me haga roce!

Accesorios: Móvil fuera, buscar un mp3, q el móvil solo fastidiaba

Tiempo: Está claro xD

Y, por supuesto, agradecimientos a IbizaRunners, por haberme animado durante mi lesión, y con los entrenos... y en especial a Sonia, q me animó para la media! (Antes y después!). Tb a Rocío, que, sin conocerme, se preocupaba por mi rodilla. A Phydes, donde trabaja mi fisio (Esmeralda), que tengo q recomendar sus manos, increíble cómo te dejan! A todos los corredores que me iban dando una palabra de aliento, perdiendo un poco del suyo (sobretodo Clara y Eva, las pobres, todo el rato diciéndome q aguantase un poco más!). Y al público, q animaba muchísimo!

Y, por supuesto, tb muchísimas gracias a Carla, por darme el último empujoncito!

PD: Cené mucho el domingo. Muchísimo.

PD2: Foto nº1 robada a esgarrapats. Foto nº2 de Rocío! :)

Etiquetado con: , , 1 Comentario
16dic/111

8 reinas en PHP

Ya sé.. hace tiempo (mucho) que no actualizo el blog. Pero hoy me ha dado por hacerlo :)

Resulta, que hoy, me han propuesto por ahí, hacer el algoritmo de las 8 reinas en php. Y me ha picado el gusanillo, y lo he hecho. En realidad, dudo q sea difícil encontrar el algoritmo por ahí, pero, ¡prometo que no lo he buscado!

Primero, ante todo.. ¿en que consiste eso de 8 reinas? Bueno, es un simple problema, en el que te plantea, en un tablero de ajedrez (8x8), colocar 8 reinas sin que se amenacen entre ellas. Básicamente, una reina amenaza en 4 direcciones

·

· La fila

· La columna

· La diagonal descendente

· La diagonal ascendente

Teniendo en cuenta esto,  el planteamiento seria el siguiente:

El tablero constará de 8 columnas (del 0 al 7) y 8 filas (del 0 al 7). Debido a que no pueden coincidir dos reinas en la misma columna, nos proporciona una ventaja para plantearlo. Podemos crear un vector (array) $solucion, en el que las claves (del 0 al 7) sean las columnas, y así podemos guardar la fila en el valor de la columna, generando un sistema de coordenadas sencillo. Es decir, si tengo que solucion es (6,4,2,0,5,7,1,3) (que es una de las 92 posibles soluciones) significará que en la columna 0, fila 6, tendré una reina, en 1,4 otra... etc.

Una vez aclarado esto, sólo recalcar que, lo que me ha costado ha sido, encontrar la forma de comprobar la diagonal. Al final, me he dado cuenta de que las diagonales descendentes, si haces columna - fila, siempre te va a dar el mismo resultado (único para cada diagonal) y en las ascendentes, columna + fila. Así pues, usaremos dos vectores más (diagonal_descendente y diagonal_ascendente) y en ellos, guardaremos, el la columna correspondiente, el valor de la diagonal que ocupan.

Ahora, para plantear la función, tendremos en cuenta que necesitaremos saber en que posición nos encontramos, para poder dar por finalizada esa rama (puesto que seguiremos buscando soluciones!), y llevar un pequeño control. Básicamente, pasaremos 4 parámetros: La columna/posicion, el vector de solucion, vector de diagonal descendente, y vector de diagonal ascendente. Primero comprobaremos que no hemos llenado el vector de solucion (en caso de q lo hayamos llenado, ya tenemos una solucion!). Si no está lleno, comprobamos que no la amenaze ninguna reina (es decir, no existe, dentro de solucion, ningun valor igual que el suyo, ni dentro de diagonal_descendente ningun valor de su diagonal descendente, ni dentro de diagonal ascendente ningun valor de su diagonal ascendente). En caso de que no exista en ningun vector previo, estaremos ante una posicion potencialmente válida, asiq, la guardamos en el vector, y procedemos a llamar a la funcion para columna+1. Vamos, backtracking.

Ale, sin enrollarme más, paso a escribir el código:


<?php

function ocho_reinas($pos, $solucion, $diag_descendente, $diag_ascendente) {

 if($pos > 7) //Se han encontrado 8 elementos, es válido!
 echo print_solucion($solucion);

 else {
     //Aun no estamos en la última posicion, buscamos una válida!
     for ($i = 0; $i < 8; $i++) { //Recorremos las filas
         if(!in_array($i, $solucion) AND !in_array(($pos-$i), $diag_descendente) AND !in_array(($pos+$i), $diag_ascendente)) {
             //Esta casilla no está amenazada!
             $diag_ascendente[$pos] = $pos+$i; //Guardamos el valor de la diagonal ascendente
             $diag_descendente[$pos] = $pos-$i; //Guardamos el valor de la diagonal descendente
             $solucion[$pos] = $i;
             ocho_reinas($pos+1, $solucion, $diag_descendente, $diag_ascendente);
        }

     }
  }

}

function print_solucion($solucion) {

 $ns = array_flip($solucion);
 ksort($ns);

 echo '<table border=1>';
 foreach ($ns as $fila => $columna) {
     echo '<tr>';

     for ($i=0; $i<8; $i++) {
         echo '<td width="15px" height="15px">';
         if($i == $columna) echo '*';
         echo '</td>';
     }
     echo '</tr>';
 }
 echo '</table><br>';

}

Esa sería la función principal (junto con la de imprimir un tablero en html!), y para llamarla se haría algo así:


<?php

$pos = 0; //Posicion inicial: 0;
$solucion = Array();
$diag_descendente = Array();
$diag_ascendente = Array();

ocho_reinas($pos, $solucion, $diag_descendente, $diag_ascendente);

?>

Y como resultado, tendríais algo así:

*
*
*
*
*
*
*
*

Y eso es todo ;)

Archivado en: php 1 Comentario
27jun/112

Teclado y ratón en PS3

Hace poco, decia por twitter, que no jugaria a un FPS con un mando (PS3), porque me parece algo incómodo. Sí, supongo que con el tiempo te acostumbras... pero yo estoy acostumbrado a jugar con teclado y ratón. Así pues, como tenía ganas de jugar al Call Of Duty: Black Ops, busqué la forma de jugar con teclado y ratón y... ¡tachán! ¡Se puede!

El tutorial (en inglés) lo podéis encontrar aqui, que van actualizándolo según las novedades. Aunq no tiene mucho misterio, básicamentte necesitas:

  • Mando ps3
  • PC con bluetooth (aunq no todos son compatibles...  el mio (Sony Vaio) funcionó a la perfección!)
  • Ubuntu (yo usé 11.04)
  • Paciencia

No tenía ubuntu instalado, asiq me bajé la versión live, la instalé en un pen de 4gb (para que me guardara los cambios, etc!). Después, añadimos los repositorios universe, bajamos la aplicación (en la web en inglés lo encontrarás para descarga), instalar, enchufar el mando ps3 por usb al pc, ejecutar, desechufar mando, darle a "Set Dongle Address" (lo cual, cambia la MAC de tu bt por la del mando, para hacerse pasar por él), configurar el teclado y ratón (las configuraciones que vienen por defecto.... seguramente tendrás que abrirlas con sixemuconf, y reemplazar el ID del teclado y del ratón!), y por último, darle a Start.

Y así de sencillo (aunq tendréis q leer el tutorial en inglés, vagos!) podremos usar nuestro teclado y ratón en la ps3! En mi caso, en el CoD :)

Otro día traduzco el tutorial al castellano (si no me da pereza) y pongo alguna que otra imágen :)

PD: Y subiré la configuración q uso del CoD :)

Etiquetado con: , , 2 Comentarios
21feb/110

[GreaseMonkey] Editar estilos de una página

Últimamente, me paso mucho por un foro ( spinningmania ) y, como podréis comprobar si entráis, tiene un pequeño defecto... ¡está todo centrado!

Puede parecer algo sin importancia, pero la verdad es que cuando llevas un rato, es bastante molesto, asi pues, decidí intentar arreglarlo, y dejarlo normal, con GreaseMonkey.

Primero, si alguien no lo tiene instalado, lo recomiendo (es una extensión/complemento que está tanto para Firefox como para Chrome). Lo que sí debéis hacer al instalar, es decirle que editor de texto queréis usar (si no lo hacéis, luego no podréis editar los scripts).

Una vez instalado, saldrá el monkey abajo/derecha (en firefox, almenos). Creáis un nuevo script, y esta es la información que deberia tener:


// ==UserScript==
// @name          descentra
// @namespace      eleazan
// @include        http://spiningmania.forointernet.es/board/*
// @description    Alinear el texto a la izquierda
// ==/UserScript==

var head, style;
 head = document.getElementsByTagName('head')[0];
 if (!head) { return; }

style = document.createElement('style');
 style.type = 'text/css';
 style.innerHTML = 'center {text-align: left !important; }';
 head.appendChild(style);

Como podéis ver, con esto podríais sobreescribir cualquier estilo de una página (gracias al !important del css). En mi caso solo queria anular la etiqueta

<center></center>

que probablemente pondrían para poner los banners, y en vez de cerrar ahí, cerraron al final del todo.

Para cualquier uso que queráis darle, sólo modificad libremente el código.

18feb/112

Iniciarse en Git

Hoy, he decidido iniciarme en Git (más que nada, porque tengo mucho código en el trabajo, y me hacia ya falta un control de versiones), asique explicaré un poco cómo ha sido el contacto inicial.

Primero, y antes que nada, explicar que Git es un pequeño "sistema" para tener tu código / trabajo bien ordenado, saber cuando y qué cambios hiciste, e incluso permite colaborar entre varios. El sistema que utiliza, me gusta bastante. Primero, tenemos el entorno de trabajo, que es nuestro directorio donde tenemos el trabajo. Después, existe el "staging area" (¿area de preparación?) que simplemente, son los cambios que hemos realizado. Y después está el repositorio, que allí tendremos todo el trabajo (con las versiones, y comprimido) que hemos confirmado (commit). Y por último está el servidor remoto (si quieres) dónde puedes almacenar una copia de tu trabajo (ya sea privado o público, según tu configuración del servidor).

Una vez hecha esta pequeña (y probablemente, incorrecta) introducción, sólo confesar que trabajo en windows (sí, estoy loco). Así pues, me toca instalar el msysGit que proporciona un Bash Git bastante cómodo (y todo lo q necesitamos, incluido ssh). No voy a explicar cómo se instala (sí, ya sabéis, leeros el acuerdo de licencia, etc etc).

Una vez instalado, abrimos el Bash Git y procedemos a configurar un par de cosillas :)


git config --global user.name "Andres"

git config --global user.email myemail@host.com

Con estas dos opciones, configuramos el nombre y correo del usuario a nivel global. después, navegaremos por la estructura de directorios hasta llegar al de nuestro proyecto existente, y escribimos:


git init

Esto creará un repositorio git en el directorio, y nos permitirá trabajar con él. Ahora, además, debemos añadir los archivos que queremos que se incluyan. Por ejemplo, pongamos que queremos todos los archivos que sean .c, ponemos:


git add *.c

Esto añadirá al repositorio todos los archivos .c que tengamos en el directorio. En mi caso, tenia que añadir todo (subcarpetas incluidas) y escribí esto:


git add .

Y añadió todo al repositorio.  Ahora, si hacemos un:

 git status 

Nos informará de que tenemos 'commits' pendientes de hacer. ¿Qué quiere decir esto? Como bien indica, son "new file" que aún no hemos añadido al repositorio final. ¿Entonces, para que sirve el git add? El git add indica al git que esos archivos SÍ quieres que estén dentro del repositorio, pero no los sube (aunq guarda una versión cache de ellos). ¿Cómo hacemos el commit? Pues, para hacer el commit, hacemos lo siguiente

git commit -m "Commit inicial"

Ahora, si hacemos el git status nos dirá que no hay nada nuevo. Vale, ya está en el repositorio git... ahora vamos a clonarlo al servidor remoto*...

Simplemente, tenemos que hacer lo siguiente:

git push ssh://usuario@servidor.com/ruta/del/repo/aquiesta  master

Vaya... ¿siempre tengo que poner la dirección? No, por suerte, git puede guardar la ruta como si fuera una constante, de la siguiente forma

git remote add elnombrequequierodarle ssh://usuario@servidor.com/ruta/del/repo/aquiesta

Así, para hacer un push sólo tendriamos que hacer lo siguiente:

git push elnombrequequierodarle master

Si alguna vez no nos acordamos de los remotes que hemos añadido, podemos verlos con git remote -v y borrar alguno de ellos con git remote rm

Ahora, ya tenemos nuestra copia en el servidor (en mi caso, ~2000 archivos, tardó un ratito con la conexión lenta >.<). Si modificamos algun archivo, podemos hacer un git status para comprobarlo... y nos dirá que se ha modificado un archivo pero no se ha actualizado. Para actualizarlo, basta con un git add <nombre> y luego hacer un commit (o un commit con la opción -a que añadirá todos los que han sido modificados!)

Si me da el venazo, otro día escribo sobre como borrar archivos, hacer diffs, recuperar versiones antiguas, etc....

Documento utilizado: ProGit

*Nota: Para hacer un push (escribir) en el servidor, necesitas un usuario (luego te pedirá contraseña) con acceso de escritura.

14feb/110

Symfony 2: Crear un ‘bundle’ en PR5

Navegando por los grupos de google, encontré un apunte interesante en el grupo de symfony-es sobre cómo crear un bundle de César hernandez. Adjunto la presentación :)

Es un buen comienzo para introducirse en symfony, aunq os recomendaria a esperar a primeros de marzo, que, coincidiendo con la Symfony Live en Paris, saldrá la RC de Sf2.

26ago/101

Generar un archivo de Excel desde PHP

Bueno, a raíz de un post de r0s sobre cómo generar un archivo de excel desde PHP, le dejé un comentario explicándole, de forma demasiado breve, cómo hacerlo sin usar una librería externa. Así pues, se ha puesto en contacto conmigo, y me ha pedido que me explaye sobre el tema. Así pues, allá voy:

Lo primero es, ¿qué queremos que nos muestre Excel?. Por ejemplo, algo sencillo (tampoco se pueden hacer maravillas!), una tabla con nombre, apellido y teléfono.

Veamos el código:


<?php

//Estas líneas te generarán un archivo descargable, con la extensión xls

header("Content-type: application/vnd.ms-excel");
header("Content-Disposition: filename=\"nombre.XLS\";");

//Las siguientes líneas es la tabla de excel

>

<table>
<tr><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp</td><td>&nbsp;</td></tr>
<tr><td>&nbsp</td><td><b>Nombre</b></td><td><b>Apellido</b></td><td><b>Teléfono</b></td></tr>
<tr><td>&nbsp</td><td>Eleazan</td><td>Zorander</td><td>971112233</td>;</tr>
<tr><td>&nbsp;</td><td>r0s</td><td>Bytes</td><td>971332211</td></tr>
</table>

Como véis, no tiene ningún misterio, es una simple tabla html y en excel te sale clavada :)

Este es el resultado:

12ago/100

Una de cal y una de arena

Todos sabéis moveros en internet. Todos habéis tenido que buscar alguna cosa en su basta red... y espero que todos comprobéis los resultados (no todos los contenidos en internet son ciertos). Así, pues, mientras servidor dejaba vagar su mente, le vino a la cabeza la expresión de "Una de cal y una de arena".

Curiosa expresión, cuanto menos. ¿De dónde viene? ¿Qué es la cal? ¿Y la arena? ¿Qué quiere decir? Como buen informático, acudí al Sr Google para que me ayudara a encontrar el libro que me respondiera a estas preguntas.

Así pues, esto es lo que encontré:

Definición de la expresión en el Diccionario Espasa de dichos y frases hechas de Alberto Buitrago Jimenez:

Dar una de cal y otra de arena.
Actuar alternativamente de forma positiva y negativa. "El equipo no funciona bien. Un día gana y al siguiente pierde. Está dando una de cal y otra de arena". Antiguamente, cuando no existía el cemento, los ladrillos o piedras se fijaban con mortero, un compuesto que se hacía con una palada de cal -el material caro y más noble- y otra de arena, lo más abundante y menos importante.

Oh, vaya... ¡todo queda claro con esta definición! Veamos, Don Alberto dice que viene de el mortero de cal, que, efectivamente, se hace con cal, arena, y agua. ¿Para que sirve cada componente de esta mezcla? La cal y el agua hacen la reacción, la que produce que el mortero "funcione". La arena es un elemento inerte, es para darle volumen. En la mezcla, la cal es el elemento importante.

Pero, ¿cómo es q la cal es buena? Recordad que acabo de comentar que reacciona con el agua, y llega a los 90ºC. Si inhalas la cal viva, o te entra en los ojos, no lo pasarás precisamente bien. Pero a la vez, una vez que haya madurado (se dice que lo óptimo, es dejarla madurar 30 años!), cuando "apagas" la cal (la matas... o la oxigenas, como prefiráis), esta adquiere propiedades bioclimáticas y es capaz de conservarse en perfectas condiciones durante siglos, ya que posee poros que dejan transpirar las paredes y al mismo tiempo la impermeabilizan. También el núcleo que conserva, regula la temperatura del interior de una casa gracias al efecto de "respiración" de la casa a través suyo

Sobre la arena, ¿quién no sabe qué es? Son trozos muy diminutos de roca. Depende de la zona, estará compuesto por distintos tipos de roca

Conclusión:

La teoría dice que la cal es el elemento noble, y la arena el "común", que hay por todas partes. Si tengo que elegir, ¡me quedo con la cal! El origen de la expresión es la construcción, pero es un período incierto. La cal se usaba en la construcción desde el VI aC. Además, la expresión en si, quiere decir que la mezcla es buena. No todo tiene que ser igual, hay que tener también de la otra parte

Notas curiosas:

1) En la construcción de catedrales, preparaban la cal en balsas al principio. Así, cuando la necesitasen (una catedral podía tardar un siglo en construirse) ya habría madurado. Decían que la buena era de más de 30 años de maduración (a la que llamaban chica, y si era de menos de 30 años le llamaban chico)

2) En España, existía la costumbre (supongo, que sobretodo en la zona mediterránea) de cuando nacía un bebé, prepararle una balsa de cal para el momento que se construyese su casa.

PD: Yo esperaba que fuera al contrario

Fuentes:

http://es.wikipedia.org/wiki/Mortero_de_cal

http://es.wikipedia.org/wiki/Cal

Diccionario Espasa de dichos y frases hechas de Alberto Buitrago Jimenez

Algun recuerdo de la universidad....

29jul/100

Viñeta de @facso

Aquí está la viñeta de @facso, genial, como siempre ;)

Viñeta de facso

16jul/106

Symfony 2 ~ Probándolo [Actualizado]

Hace algún tiempo (un par de semanas) estuve en unas conferencias sobre Symfony en las que hablarón hablaron de Symfony2 (cortesía de mi empresa). En esta última conferencia, nos pusieron los dientes largos para usar Sf2, y por eso me he decidido a ir probándolo! Este mini-tuto es para conseguir que funcione Sf2 (sí, no es bajar y descomprimir!). Yo uso Windows7 en el entorno de trabajo... asiq las screens y los pasos serán para dicho S.O., pero confío en que cualquiera que lo lea también sepa hacerlo en unix :)
Veamos, la primera pega que nos encontramos, sería el uso de php. Sf2 es muy exigente, y necesita (sí o sí) php 5.3.2 (última versión ahora mismo). Daré por hecho que tenéis un entorno de desarrollo web... por tanto, actualizáis el php, o bien, bajáis EasyPHP que ya incluye el 5.3.2 :)

Etiquetado con: Continúa leyendo