De cómo clonar una instancia de Prestashop

Últimamente he estado ayudando a mi vecino con su web de Prestashop. He aprendido a hacer algunos truquillos, como editar el aspecto general de la web, hacer y deshacer backups con un entorno limitado pero mi mejor invento ha sido el de clonar la instancia de Prestashop para tener una de test donde probar sin miedo a romper cosas. Aquí el código para quien le pueda ser de utilidad, licenciado bajo GPL 3.

El código puede verse en: https://gist.github.com/axelei/dafd305213ed1b2655545f06edfbc905

# Programa para clonar prestashop
# Copyright Krusher 2015 - Licenciado bajo GPL3

paramfile="httpdocs/app/config/parameters.php"
extractDatabaseName="s/.*'database_name' => '\(.*\)'.*/\1/p"
extractDatabaseUser="s/.*'database_user' => '\(.*\)'.*/\1/p"
extractDatabasePassword="s/.*'database_password' => '\(.*\)'.*/\1/p"

if [ "$#" -lt 4 ]; then
  echo "Error: Se requieren 3 argumentos."
  echo "Uso: $0 dir_web_original dir_web_destino url_original url_destino"
  exit 1
fi

echo Traspasando de $1 a $2 \(urls: $3 -- $4 \)

databaseName=$(sed -n "$extractDatabaseName" $1/app/config/parameters.php)
databaseUser=$(sed -n "$extractDatabaseUser" $1/app/config/parameters.php)
databasePassword=$(sed -n "$extractDatabasePassword" $1/app/config/parameters.php)

echo Datos de la base de datos de origen: $databaseName / $databaseUser / $databasePassword

targetName=$(sed -n "$extractDatabaseName" $2/app/config/parameters.php)
targetUser=$(sed -n "$extractDatabaseUser" $2/app/config/parameters.php)
targetPassword=$(sed -n "$extractDatabasePassword" $2/app/config/parameters.php)

echo Datos de la base de datos de destino: $targetName / $targetUser / $targetPassword

if [[ -z "$databaseName" ]] || [[ -z "$databaseUser" ]] || [[ -z "$databasePassword" ]] || [[ -z "$targetName" ]] || [[ -z "$targetUser" ]] || [[ -z "$targetPassword" ]]; then
  echo "Error: Algunas de las variables no han sido extraídas, comprueba los errores y los directorios."
  exit 1
fi

echo URL de la instancia origen: $3
echo URL de la instancia destino: $4

read -p "Pulsa enter para continuar o CTRL+C para cancelar"
echo  "Procediendo con el traspaso."

echo Extrayendo base de datos
rm -f temp.sql
mysqldump -u $databaseUser $databaseName -p$databasePassword > temp.sql
echo Borrando base de datos objetivo
mysql -u $targetUser $targetName -p$targetPassword -e "drop database $targetName; create database $targetName"
echo Insertando la base de datos origen en la objetivo
mysql -u $targetUser -D $targetName -p$targetPassword < temp.sql
rm -f temp.sql

echo borra ficheros contenido antiguo
rm -Rf $2/*
echo copia ficheros
cp -r $1/* $2/

echo Configurando base de datos objetivo con los datos originales

sed -i "s/'database_name' => '\(.*\)'/'database_name' => '$targetName'/g" $2/app/config/parameters.php
sed -i "s/'database_user' => '\(.*\)'/'database_user' => '$targetUser'/g" $2/app/config/parameters.php
sed -i "s/'database_password' => '\(.*\)'/'database_password' => '$targetPassword'/g" $2/app/config/parameters.php

echo Configurando la nueva URL en la instancia destino

mysql -u $targetUser $targetName -p$targetPassword -e "update prstshp_configuration set value = '$4' where NAME IN ('PS_SHOP_DOMAIN', 'PS_SHOP_DOMAIN_SSL')"
mysql -u $targetUser $targetName -p$targetPassword -e "UPDATE prstshp_shop_url SET domain = '$4', domain_ssl = '$4' WHERE id_shop_url = 1;"
sed -i s/\\^$3\$/^$4$/g $2/.htaccess

echo Terminado.

Podría estar mejor hecho, en un lenguaje mejor o usar herramientas más avanzadas, pero es cómo me las tuve que apañar en un entorno que le faltaban muchas herramientas y comandos. Si te ha sido útil deja un comentario con tu experiencia.

Los ordenadores más importantes de la historia

A menudo encontramos entradas sobre ordenadores famosos y listas que incluyen algunos muy bonitos, que se vendieron mucho o que simplemente le gustan mucho al autor. Hoy quiero traer una lista de los que me parecen más importantes desde el punto de vista de innovación técnica, los que verdaderamente hicieron avanzar la industria con nuevas características que lo diferenciaran del resto.

También es verdad que un éxito comercial puede llevar a grandes avances arrastrando al resto, o simplemente tener el mérito de llevarlas a las masas. Veamos.

Continuar leyendo «Los ordenadores más importantes de la historia»

Tetrix

Resulta que yo de joven dibujaba. Me encantaban los tebeos, soy un gran admirador de Francisco Ibáñez o Forges, y hace un mogollón de años empecé una «obra» que nunca llegué a acabar de dibujar, pese a tener el guión escrito: TETRIX, una de tantas parodias sobre la famosa película Matrix (1999).

Rebuscando entre carpetas de mi disco duro llegué a estratos de 2003, y de ahí a unos escaneos de lo que quedó de esta obra, que dejo aquí para disfrute del personal. Incluso era una obra inclusiva antes de Netflix: tenía un personaje transgénero y todo (Trini). Bueno, más bien sería apedreada de hacerse famosa, pero eso ya no tiene mérito.

Sin más dilación aquí dejo los escaneos.

Continuar leyendo «Tetrix»

Cómo hacer café con distintos lenguajes de programación

El café forma parte íntimamente de la cultura de la programación, por algún motivo. Entiendo que se trata de que la cafeína estimula la concentración, aunque no me es posible corroborarlo ya que hace años que no tomo café con cafeína por el bien de mis compañeros y allegados, particularmente de mi esposa.

No obstante y como mero entretenimiento, voy a tratar de discurrir sobre cómo sería hacer café en diversos lenguajes de programación, inspiración que me ha venido de mi locuelo compinche de fechorías retroinformáticas Ilgrim. También del famosísimo comic de Toggl, por supuesto.

Continuar leyendo «Cómo hacer café con distintos lenguajes de programación»

La Enciclopedia Apócrifa

Bueno, la Frikipedia es historia. Mentiría si dijera que no lo echo de menos. No por la gente amenazándome por correo, sino por la cantidad de cosas graciosas que aparecían por ahí.

Por ello estoy preparando otro proyectito (de esos que se mueren al par de meses), llamado la Enciclopedia Apócrifa: https://www.apocrypha.ovh

¿Cómo me he atrevido a abrir un nuevo wiki con la que está cayendo? Fácil, con una censura previa draconiana. Por ello le auguro un futuro todo lo contrario de prometedor, pero que podrá preservar algunos de los contenidos que más me gustaron de la Frikipedia.

Algunos de los artículos que he importado/creado:

Aún faltan unos detallitos, traducciones y plantillas. Con todo, las aportaciones son más que bienvenidas. Que Dios me pille confesao.

Twittero del día: Cocolo

¿Para qué sirve Twitter? Para ofenderse de lo que gente la que no conocemos hace con su vida, por supuesto. Algunos individuos, no obstante, son tan desviados como para escribir cosas interesantes o información útil. El amigo Cocolo no es ninguno de ellos, simplemente hace lo que yo: decir tonterías.

Y como esta, hago homenaje al personaje que nos ocupa seleccionando los (que a mí me parecen) son sus mejores churretes.

Continuar leyendo «Twittero del día: Cocolo»

Homoxesuales

Hoy, en mi viaje a Alicante, he descubierto una verdadera batalla ideológica en las calles. En ella, una verdadera perla: la ideología homoxesual.

¿Religión fuera de las escuelas? ¿Ideología homoxesual fuera de las escuelas? Ustedes eligen. Yo desde luego me rindo ante este foro moderno, digno de las batallas dialécticas de Platón y Aristóteles.

La báscula para pesar la droga que todos estábamos esperando

Imagina que estás organizando la logística de tu negocio de narcóticos. ¿Cómo organizar las papelas para que cada lonchazo sea equitativo? Con el peso adecuado, por supuesto. Por ello he encontrado este producto que quiero mostraros.

Ojo que no sólo puedes pesar droga, también la recomiendan para pesar oro, plata, monedas, joyas o gemas, para cuando los clientes de tus camellos cobren el menudeo en prenda. ¿Qué más se puede pedir?

Ahora en serio, entiendo que este es el tipo de cosas que ocurren por usar traductores automáticos. Para los rezagados, la primera acepción de drug es simplemente «medicamento».  Por otro lado, el cacharro en cuestión no tiene mala pinta, si por algún casual quieres pesar «medicamentos», puedes verla en Amazon (permalink). Yo las drogas ni las he probado ni las volveré a probar.

Indiana Jones: The Pinball Adventure

¿Videojuegos sobre Indiana Jones? Por supuesto, y alguno de ellos muy buenos. Los favoritos de todo el mundo son Indiana Jones and the Last Crusade (1989) y Indiana Jones and the Fate of Atlantis (1993), ambos de la propia Lucasarts, grandiosas aventuras gráficas. Pero hay un juego verdaderamente singular… aunque no exactamente un videojuego.

Indiana Jones: The Pinball Adventure fue diseñado por Mark Ritchie para Williams en 1993. Se trata de una de las mesas de petacos más popular de todos los tiempos, y salió justo en el momento adecuado. Estos juegos aún eran populares, la tecnología por fin permitió que tuvieran un sonido y vídeo de película, y se basaron en una aún reciente aclamada saga.

Continuar leyendo «Indiana Jones: The Pinball Adventure»