Construir recuerdos

Hoy particularmente no es un día para recordar, al menos no como tal, con todos los sucesos acontecidos. Por eso hoy intentaré construir recuerdos buenos por encima de la vivencia de hoy.

Hace un tiempo ya me dieron una gran lección a este respecto. No voy a dar nombres porque no es elegante, pero quiero recalcar la enseñanza de la historia. Resulta que de mi ex novia Raquel me quedó una bonita manta gris de pelito, preciosa. No se la di porque las circunstancias no lo posibilitaron, pero sinceramente no me la quedé porque quisiera. Seguramente ella la apreciaba, pero bueno, no es momento de devolver cosas a esta altura del partido. El caso es que una vez estaba en casa con una chica y hacía algo de frío. Yo tenía puesto en la cama únicamente el edredón y las sábanas. Ella me dijo si no tenía otra manta más y me acordé de la gris. Se la di y conforme se la ubicaba alrededor de su cuerpo me preguntó de donde la había sacado. El caso es que le comento su orígen y ella se queda callada un instante y me dice, textualmente, «Deberíamos tener sexo sobre esta manta!». Más allá de la tentadora propuesta yo me quedé un poco alucinado y pregunté el por qué de su exclamación…. «Construir buenos recuerdos por encima de los malos». Ella sabía que la manta me traía recuerdos de mi ex, pero la nueva situación planteada haría que la recordara de otra manera. Y que razón tenía, que gran lección me acababa de dar en menos de 5 minutos. Esto es algo que no se me va a olvidar en la vida…..

Y hoy, después de una situación que esperaba que llegara pero que, a su vez, no quería que sucediera, tendré que buscar la manera de construir nuevos recuerdos para que este día no lo recuerde nada más que por eso. Y tanto que me lo he planteado que estoy escribiendo esta entrada para marcar una diferencia entre un día negro normal y un día negro cargado de reflexiones. Y eso es lo que me encuentro haciendo. La reflexión siempre es necesaria porque luego nos hace dar cuenta de errores que podemos corregir. En síntesis, hoy estoy intentando crecer.

No siempre se puede traer tan buena racha como la que traigo desde Marzo. Tenía que llegar un momento malo de verdad. Y acá estoy pasando por uno de ellos con toda la adultez posible, con toda la altura que me merezco a la hora de asumir situaciones. Y esta vez no caeré en picado, esta vez es sólo un tropiezo y mañana más sonrisas.

No pain, no gain

Concierto de Pereza en Madrid

Presentando su último disco «Aviones», anoche el grupo madrileño Pereza se presentó en Madrid. Como no podía ser de otra forma, e intentando siempre hacer de todo un poco, compramos las entradas y nos fuimos a verlos. La verdad que la puesta en escena me sorprendió muchísimo. Para el que únicamente conozca a este grupo por sus discos de estudio pensará que es altamente comercial, pero si los vemos en vivo nos damos cuenta de que tienen una faceta con bastante rock&roll para dar.

Nos ubicamos en la fila 7, el show estaba por comenzar. Ya ver la decoración del teatro Canal estaba super bien. Unas lámparas antiguas, alfombras y los instrumentos distribuídos por el escenario.

Del grupo creo que destacan más las canciones de Leiva. No se, son menos comerciales, bastante más curradas y con bastante letra. Aún así todo el concierto mereció la pena. Tocaron canciones como «Amelie», «Champagne», «Windsor», «Beatles», «Animales», «Estrella polar», «Como lo tienes tu» entre otras. Toda la presentación duró unas dos horas en total.

Os dejo otra foto y un pequeño video que pude grabar para subir. La calidad no es buena, pero sólo es para recordar un poco el momento 🙂

La velada terminó con nosotros dos, junto a Pedro y María cenando en el Friday’s de Gran Vía. Luego de unos temas con mi tarjeta de crédito, todo acabó muy bien 🙂

CakePHP en Ubuntu

Ya que estoy por la labor de documentar un poco y hacer mini how-to, paso a comentar los pasos para «instalar» con éxito CakePHP en un sistema Debian/Ubuntu/Similar GNU/Linux asumiendo que tenemos permisos de sudo

Descargando y descomprimiendo

Primero que nada descargamos y descomprimimos el paquete:

[email protected]:~# wget http://cakeforge.org/frs/download.php/735/cake_1.2.5.zip/donation=complete

Esto nos descarga el archivo en formato zip pero con el nombre «donation=complete». Vamos a renombrarlo para hacer las cosas bonitas 🙂

[email protected]:~# mv donation\=complete cake.zip

Ahora vamos a descomprimir con el comando unzip. Si no lo tenemos instalado podemos hacer un apt-get install unzip antes.

[email protected]:~# unzip cake.zip

Tendremos la salida algo como «cake_1.2.5» (dependiendo de la versión que descarguemos). Borramos el zip.

[email protected]:~# rm cake.zip -rf

Y ahora copiamos los archivos al DocumentRoot de nuestro dominio, supongamos /var/www/sites/miapp

[email protected]:~# cp ./cake_1.2.5/* /var/www/sites/miapp/ -rf

Por último borramos el directorio cake_1.2.5

[email protected]:~# rm cake_1.2.5 -rf

Configurando Apache

Voy a asumir que tenemos instalado Apache 2, perfectamente configurado. Es muy importante para Cake el uso de mod_rewrite, de modo que si no lo tenemos cargado lo podemos hacer de la siguiente manera (ubuntu):

[email protected]:~# a2enmod rewrite

Si no tenemos el comando a2enmod podemos cargarlo a mano creando el enlace simbólico

[email protected]:~# ln -s /etc/apache2/mods-available/rewrite.load /etc/apache2/mods-enabled/rewrite.load

Ahora debemos comprobar que en el bloque <Directory> correspondiente a nuestro VirtualHost tengamos el AllowOverride en All. Sino luego cuando intentemos usar el mod_rewrite no tendremos éxito alguno. Además en este mismo archivo tendremos que redefinir el DocumentRoot

Para ello podemos hacer

[email protected]:~# nano /etc/apache2/sites-enabled/tudominio.conf

Lucirá como esto

<VirtualHost _default_:*>
DocumentRoot /var/www/vhcs2/gui
<Directory /var/www/vhcs2/gui>
Options Indexes Includes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
Allow from all
</Directory>
</VirtualHost>

<VirtualHost *:80>

ServerName www.miapp.com

DocumentRoot /var/www/sites/miapp

<Directory /var/www/sites/miapp>

Options Indexes Includes FollowSymLinks MultiViews

AllowOverride None

Order allow,deny

Allow from all

</Directory>

</VirtualHost>

Buscas el AllowOverride y lo cambias a All. Además en el DocumentRoot deberemos cambiar la ruta por /var/www/sites/miapp/app/webroot que es donde Cake tiene el .htaccess

Como detalle, si trabajamos en local, podemos cambiar el ServerName por un dominio que quieras, por ejemplo local.miapp.com, luego lo apuntaremos a nuestra IP de loopback

Luego grabas los cambios con Ctrl+X seguido de un y para confirmar.

Si cambiaste el ServerName, te tocará editar el archivo /etc/hosts

[email protected]:~# nano /etc/hosts

Y añadimos una línea que sea como la siguiente:

127.0.0.1   local.miapp.com

Salimos guardando cambios. Esto nos hará que cuando pongamos en el navegador el dominio local.miapp.com nos apunte a nuestra máquina en vez de intentar resolver el nombre por los DNS de nuestro proveedor de internet.

Ahora recargamos la configuración del Apache del siguiente modo:

[email protected]:~# /etc/init.d/apache2 force-reload

Otorgando permisos

Por defecto cuando instalamos (por ejemplo en ubuntu) el apache desde el Synaptic lo hacemos con el usuario www-data y el grupo www-data. Ahora nos importa el grupo, puesto que el usuario que uses para editar los archivos de cake lo meteremos al grupo www-data. Supongamos que nuestro usuario es «munix», entonces hacemos:

[email protected]:~# usermod -g munix www-data

Ahora sólo nos resta cambiarle el dueño al directorio «miapp» y darle algunos permisos necesarios para las Cache de Cake:

[email protected]:~# chown munix:www-data /var/www/sites/miapp -R

[email protected]:~# chmod 777 /var/www/sites/miapp/app/tmp -R


Probando en el navegador

Está claro que no hemos configurado nuestra base de datos, no hemos creado ni un modelo, controlador, vista… nada, pero si vamos al navegador y ponemos la url deberíamos tener algo como esto:

Si todo ha salido bien deberíamos ver la página por default de Cake, con todos sus estilos, colores, etc. Si la vemos sin colores es que estamos teniendo problemas con el rewrite.

Espero que os haya servido 😀

Creando un repositorio con Subversion

Con este «how to for dummies» hoy vamos a crear un repositorio con subversion en un sistema debian (o ubuntu) GNU/Linux.

La necesidad

La idea en la que voy a basar este tutorial es la siguiente:

Tenemos un servidor web con apache. Dentro de un directorio de los que usa apache para sus virtual hosts vamos a tener nuestra versión de producción de la aplicación y dentro de otro vamos a tener una versión de pruebas. Por otro lado, en este mismo servidor vamos a instalar el demonio svnserve, crearemos nuestro repositorio y, finalmente desde nuestro ordenador de casa tendremos nuestro entorno de desarrollo.

La idea es que nosotros desarrollemos en nuestro ordenador y lo subamos al repo. Posteriormente vamos a descargar dichos archivos del repo a nuestro directorio de pruebas sobre el que vamos a realizar todos los test antes de hacer el checkout al directorio de producción.

Instalar subversion

Para instalar svnserve en nuestro servidor nos logueamos en él y vamos a crear un directorio donde estará nuestro repo y luego instalaremos:

[email protected]:~# mkdir /home/repos

[email protected]:~# apt-get install subversion

Una vez que termine de instalar lanzaremos el demonio

[email protected]:~# svnserve -d -r /home/repos

Ahora vamos a crear nuestro repositorio con el comando «svnadmin». A nuestra app le llamaremos «app_ejemplo»:

[email protected]:~# svnadmin create /home/repos/app_ejemplo

Y listo! ya tenemos creado nuestro repositorio para nuestra «app_ejemplo».

Checkout en nuestro equipo

Ahora desde nuestro ordenador elegimos el cliente SVN que más nos guste (a mi me gusta Smart SVN o RapidSVN. Éste último es verdaderamente «rapid» 😛 ) y realizaremos nuestro primer checkout. Para ello nos solicitará la URI del repo y un directorio en local donde almacenar los archivos.

La URI será algo como lo siguiente: svn+ssh://[email protected]:/home/repos/app_ejemplo

Donde reemplazaremos «user» por un usuario con privilegios en el servidor y «server» por el nombre del host. Nos solicitará la contraseña de «user» y hará el primer checkout. Como no hemos subido archivos al repo no descargará nada.

Subiendo los primeros archivos al repo

Cuando hicimos el primer checkout con nuestro cliente, nos solicitó un directorio donde almacenar los archivos. Como no tenemos nada en el repo, vamos a subir nuestro primer archivo llamado «index.php», asumiento que desarrollaremos nuestra app en PHP. Se puede subir cualquier tipo de archivos. Entonces en el directorio donde descargamos el repo creamos nuestro index.php. Ahora vamos al cliente y le damos a «Add» para que incluya el archivo a la cola para subir. Finalmente a ese archivo le damos un «Commit» y se quedará al repo

Descargando nuestro repo en el directorio de pruebas

Supongamos que nuestra url de pruebas es http://test.dominio.com y que el subdominio «test» en nuestro server corresponde a /var/www/sites/test/

La idea es, como dije inicialmente, que desarrollemos en local, subamos al repo y luego descarguemos el repo en el directorio de pruebas antes de subir a nuestro entorno de producción.

Para descargar por primera vez el repo en el directorio de test tendremos que hacer un checkout (recordemos que a pesar de que apache y subversion están en el mismo equipo, es necesario descargar el repo al directorio de apache). Para esto hacemos algo como lo siguiente:

[email protected]:~# cd /var/www/sites/test/

[email protected]:/var/www/sites/test# svn checkout file:///home/repos/app_ejemplo/

Con esto ya tendremos descargado el repo y todo lo que hayamos subido desde nuestro equipo en el directorio de test. Para el de producción es igual pero cambiando el directorio.

Como dije antes, el paso anterior sólo se hace la primera vez. Ahora cada vez que queramos descargar los archivos o cambios que hicimos previamente en nuestro equipo, deberemos hacer un «Update». Para esto, subimos o cambiamos nuestros archivos desde nuestro equipo local, los subimos al repo y desde el servidor hacemos:

[email protected]:~# svn up /var/www/sites/test

Simplificando el Update

Si la ruta a nuestro directorio web es muy larga y queremos ahorrar un poco de tiempo en los updates, crearemos un enlace desde nuestro directorio home al directorio web de la siguiente manera:

[email protected]:~# ln -s /var/www/sites/test test

Entonces ahora simplemente cada vez que hagamos un update, tendremos que escribir únicamente:

[email protected]:~# svn up test

Al ser test un enlace a nuestro directorio web, el resultado será el mismo 🙂

Y con esto hemos terminado este mini how-to. Si quieres aprender un poco más acerca de todo el abanico de posibilidades que te ofrece subversion, puedes visitar este enlace.

Mi primera factura en Vodafone

Acabo de llegar a casa y me encuentro ya con la primer factura emitida de Vodafone desde que me pasé a esta compañía para comprarme el HTC Magic

El caso es que después de bastantes llamadas a la piba,  sms entre amigos y algún par de llamadas y sms internacionales pensé que me vendría la típica factura astronómica que daría paso al arrepentimiento de haberme metido a contrato.  Pues no!

Por un monton exacto de € 19,37 he gozado durante todo un mes de un servicio extraordinario. En resumidas palabras:

– Más de 600 minutos hablados

– Más de 40 sms enviados (esto es una maravilla, desde hacía mucho tiempo que no mandaba tan pocos sms. El tema del envío por internet es genial)

– Más de 1,5 Gigas de datos transferidos por internet

Todo eso 19 euros! Estoy encantado.

Lo que más me gustaría destacar es la calidad del servicio de internet 3G de vodafone. Las transferencias de datos son muy veloces, el video en streaming es perfecto y sin cortes, la navegación es altamente fluida. No tengo quejas algunas del servicio.

Por otro lado el tema de la tarifa 90×1 es una pasada, y 100% real. Pensé que habría truco de por medio, pero lo cierto es que llamadas de 60 minutos las tengo tarificadas a 35 céntimos en total, no me lo creo!

No quiero hacer publicidad a Vodafone, pero lo cierto es que la sorpresa ha sido grata y estoy muy contento con el servicio. Si bien tuve algunos inconvenientes al principio, me los solucionaron con mucha celeridad y, además, mediante canales insospechados. Resulta que comenté mi problema en Twitter antes de llamar al soporte, por una cuestión de horarios, y enseguida ellos recogieron mi twitt y me gestionaron todo. Al otro día del reclamo me estaban llamando ellos a mi para consultarme del problema. Posteriormente investigaron y me dieron la solución. Las veces que llamé al soporte telefónico fue increíble porque siempre me dieron información real y jamás intentaron lavarse las manos o pasar de los problemas de sus clientes.

Mis felicitaciones a esta compañía. Hemos empezado con muy buen pie.