Reemplazar cadena en base de datos

Si queremos reemplazar una cadena dentro de una tabla en todas las filas de un campo tenemos que ejecutar el siguiente comando

Yo me apunto las cosas que si no luego se me olvidan…

Buscar y reemplazar texto en fichero grande en consola

Puede ser que en algún momento necesitemos reemplazar una cadena de texto por otra en un archivo muy grande. Esto suele pasar, por ejemplo, cuando estamos haciendo una migración de una web a otro dominio, con lo que queremos cambiar un dominio por otro:

www.dominio.com por nuevodominio.com

El caso es que tenemos un problema, y es que si lo que tenemos como archivo fuente es un dump de una base de datos, y esa base de datos es muy grande (del orden de 20MB para arriba ya va un poco mal la cosa), si intentamos cargar en modo texto la base de datos en cualquier editor de texto, seguramente se nos quede colgado y no nos permita abrirlo. Y aún si conseguimos abrirlo, hacer un reemplazo puede hacer que el ordenador se funda por completo.

Para solucionar esto podemos hacerlo mediante consola con el comando sed

Explicación:

  • sed = Stream EDitor
  • -i = in-place (guardar el archivo original con extensión back)
  • La cadena del comando:
    • s = comando se sustitución
    • original = una expresión regular que describa la cadena a reemplazar (o la cadena en si)
    • nueva = la cadena de reemplazo
    • g = global (reemplazar todas las ocurrencias y no solo la primera)
  • fichero.txt = el archivo en cuestión

Con lo que, estando en la carpeta donde se encuentra el fichero que necesitamos reemplazar, ejecutaríamos el siguiente comando:

y en menos de dos segundos tendremos todo el fichero cambiado.

+info:

http://askubuntu.com/questions/20414/find-and-replace-text-within-a-file-using-commands
http://www.computerhope.com/unix/used.htm

Desayunándome a Finn

Con desayunos así no me para nadie

Calendario de Trello local en OSX

logo-blue-lg

Hace poco que uso Trello y se ha convertido en una herramienta indispensable para mi trabajo diario. Tanto es así que echo en falta que tenga un calendario. La versión gold si que lo tiene, pero ahora mismo no me puedo permitir pagar 5$ al mes, aunque en cuanto recupere el vuelo será lo primero que contrate.

Mientras tanto necesito ese calendario para poder visualizar las fechas que pongo en las cards y poder utilizarlo para llevar un control de mis tareas en los diferentes proyectos. Esto podemos conseguirlo instalando la aplicación web creada por François de Metz, Trello Calendar que hace uso de la Api de Trello para mostrar en una página web al estilo Google Calendar las tareas organizadas por fechas.

Para utilizar la webapp tendréis que instalar Redis.  

redis318x260_1

Redis es un sistema de base de datos basado en memoria y que utiliza Trello Calendar para hacer de servidor de base de datos. Para instalar Redis tenéis que seguir los siguientes pasos:

  1. Descargar la última versión de Redis desde su página de descargas http://redis.io/download. Actualmente están en la versión 2.8.13
  2. Seguir las instrucciones de Jasdeep Singh para instalar Redis. También tiene las instrucciones en gist https://gist.github.com/jasdeepsingh/5628569
  3. Una vez tenemos instalado Redis debemos iniciarlo con la orden redis-server

Una vez instalado Redis podemos proceder a instalar Trello Calendar. Trello Calendar está basado en Node.js y npm con lo que si no lo tenéis tendréis que instalarlo también. Podéis seguir las instrucciones de instalación de node.js y npm aquí. Si no tenéis Homebrew os recomiendo que lo instaléis también.

Ya instalado npm deberéis instalar Trello Calendar ejecutando:

Una vez instalado deberéis renombrar el archivo config.json.sample a config.json. En ese archivo tendréis que poner las claves de la API de vuestra cuenta en Trello. Acceded a https://trello.com/1/appKey/generate y poner los datos de clave pública y privada en el archivo config.json. Después de haber hecho esto ejecutar:

Si todo va bien deberíais poder acceder a http://localhost:4000. Ahí deberéis conceder acceso a la API de vuestro Trello y ya podréis ver vuestro calendario.

No siempre funciona pero François de Metz colgó la aplicación en https://trellocalendar-francois2metz.dotcloud.com/ donde podréis usar la aplicación directamente desde su servidor en la nube. Yo personalmente me gusta más tenerlo en local ya que no siempre funciona y yo lo necesito constantemente.

Espero que os sirva.

Despertando de la siesta

Maquetar success.phtml en Magento 1.8.1.0

magento_logo

Maquetar la thankyou page puede ser un engorro importante si cada vez que tenemos que probar los cambios tenemos que hacer un pedido. Lo mejor es que impidamos el limpiado de la sesión para que cuando refresquemos nos siga mostrando la información del pedido.

Para hacer esto nos vamos al archivo:

/app/code/core/Mage/Checkout/controllers/OnepageController.php

y comentamos temporalmente la línea 291 donde pone:

la función es successAction por si en próximas versiones cambiara el número de línea.

Info extraída de: http://www.impulsis.com/nc/blog/blog-post/how-to-style-success-page-in-magento/comment/1/30.html

Class ‘Mage_Googlecheckout_Helper_Data’ not found

magento_logo

El otro día actualicé un Magento de la versión 1.8.0.0 a la 1.8.1.0. Al entrar al administrador me salía la típica ventana de Magento en blanco total que no te informa de absolutamente nada (White Screen Of Death), menos mal que a veces el fichero de errores de apache dice alguna cosa útil.

El problema estaba en la clase Mage_Googlecheckout_Helper_Data. Algo han hecho en la última versión ya que en la propia info de de lanzamiento ponen que hay que eliminar todos los archivos menos config.xml de la ruta

/magento-install-dir/app/code/core/Mage/GoogleCheckout/etc

Más info en:

http://www.magentocommerce.com/knowledge-base/entry/ce-18-later-release-notes#11810-changes-upgrade-issue
http://stackoverflow.com/questions/20569358/class-mage-googlecheckout-helper-data-not-found

Cantidad no se actualiza en carrito Magento 1.8.0.0

magento_logo

Estos fallos en versiones de Magento que ya tienen su solera me tocan las narices. Resulta que ahora a no ser que uses el archivo template/checkout/cart.phtml directamente de base no te incluye en el formulario una key con lo que no se actualizan las cantidades.

Si ponemos las rutas cargando el cart.phtml del base vemos que carga un bloque (frontend/base/default/template/core/formkey.phtml) con una variable input type=”hidden” llamada form_key. Este bloque no lo carga si usamos un cart.phtml propio en nuestro template.

La solución es poner en nuestro cart.phtml un input type=”hidden” como este:

act: También se puede utilizar esta otra línea que parece más limpia ya que carga el código bloque correspondiente según el layout core.xml

+info
http://www.magentocommerce.com/boards/viewthread/767323/

Listar productos destacados por fecha en Magento 1.8.0.0

magento_logo

Supongo que esto será igual para versiones anteriores, pero como digo en el título yo he hecho la prueba en la versión CE 1.8.0.0

Para sacar el listado de productos según un atributo personalizado fecha deberemos de hacer una serie de pasos:

  1. Creación de los atributos y asignación de estos a un conjunto.
  2. Creación de un fichero .phtml que cargaremos a través de una llamada desde la página CMS
  3. Llamada desde la página Home para cargar el phtml.

Ok, vamos a ello:

1. Como queremos realizar un listado de productos destacados por fecha, vamos a crear dos atributos de nombre featured_from_date y featured_to_date de tipo Fecha y los adjuntamos a los conjuntos de atributos que queramos (Default o los personalizados que tengamos).

2. Una vez hecho esto habrá que crear un fichero de nombre featured.phtml en /app/design/frontend/paquete/tema/template/catalog/product/ siendo paquete el nombre del paquete utilizado y tema el nombre del tema, con el siguiente contenido:

3. Una vez creado el fichero habrá que hacer la llamada desde la home con este código:

Ahora solo tienes que cambiar las fechas del atributo featured_from_date y featured_to_date de cualquier producto para asegurarnos de que se muestra en el bloque de la home. Ten en cuenta que este código solo muestra producto que son visibles, es decir, si el producto está deshabilitado no será mostrado por mucho que tengas el código correcto.

Paginación de usuarios en WordPress con wp_pagenavi y WP_User_Query

wordpress-logo

Para listar usuarios en WordPress basta con usar WP_User_Query como si fuera una WP_Query normal (con sus modificaciones claro). Lo que me ha costado a mi es encontrar como hacer la paginación de estos usuarios con wp_pagenavi. Este es un plugin de paginación avanzada que funciona genial.

Bueno, pues para hacer que todo funcione como toca hay que hacer la consulta controlando las variables de paginación así:

Y justo antes de cerrar el if poner el siguiente código, indicando la variable de consulta y el tipo.

Ya digo, algo muy sencillo pero que me ha costado encontrar como hacerlo.

+info: http://wordpress.stackexchange.com/questions/30977/list-users-by-last-name-in-wp-user-query ( Cuidado, no implementa bien la paginación )

http://wordpress.org/support/topic/plugin-wp-pagenavi-fatal-error-call-to-undefined-method-wp_user_queryget