La IA en el retail español: el hype y lo que de verdad mueve la aguja

Cada semana leo tres titulares nuevos sobre cómo la inteligencia artificial va a revolucionar el retail. Y cada semana, cuando intento aplicar algo de eso en una empresa real —con sus tiendas, su ERP de hace años y sus datos imperfectos—, me doy cuenta de la distancia que hay entre el titular y el martes por la mañana.

Ilustración conceptual sobre inteligencia artificial

Llevo tiempo en una posición rara que me deja ver las dos orillas: vengo de la ingeniería, así que sé lo que cuesta montar estas cosas de verdad; pasé por escuelas de negocio, así que me obligo a preguntar «¿esto cuánto dinero mueve?»; y trabajo en retail, donde la teoría se estrella contra la realidad de un almacén y un margen apretado. Desde ahí, voy a intentar separar el ruido de la señal.

El hype: lo que brilla en las presentaciones

Hay una versión de la IA en retail que se vende muy bien en un escenario y que casi nunca sobrevive al contacto con la realidad.

El chatbot mágico que «entiende a tus clientes» y dispara las ventas. La demo espectacular que funciona de maravilla… con datos de juguete. El «la IA lo va a cambiar todo» sin decir qué, ni cuándo, ni con qué presupuesto. Y mi favorito: la idea de que vas a comprar una herramienta, apretar un botón y al día siguiente tener una empresa inteligente.

Spoiler: no. El 80% del trabajo no es la IA. Es lo aburrido de antes —tener los datos limpios, los procesos definidos y los sistemas hablando entre ellos—, solo que ahora con un nombre más sexy encima.

Lo que sí mueve la aguja

Y sin embargo, soy un convencido. Porque cuando dejas de buscar la magia y la usas para lo que es buena, el impacto es real. Lo que de verdad ha funcionado en mi experiencia no sale en ningún titular:

Automatizar lo tedioso de dentro. No el escaparate, sino la trastienda: clasificar y enrutar correos, conciliar movimientos que antes te comían una tarde entera, ordenar tareas repetitivas. No es glamuroso, pero devuelve horas todas las semanas. Y las horas son dinero.

Dar acceso a los datos a quien no sabe SQL. Que alguien pueda preguntar «¿cuánto hemos vendido de esto la semana pasada?» en lenguaje normal y obtener la respuesta, sin pasar por mí ni por un informe que tarda dos días. Democratizar el dato es, probablemente, el mayor cambio cultural que he visto.

Ayudar a decidir, no decidir por ti. Previsión de demanda, reposición, detectar lo que se está quedando parado. La IA aquí no sustituye a nadie: le pone delante a una persona buena la información que necesita para acertar más. Augmentar, no reemplazar.

Fíjate que en ninguno de los tres el protagonista es el modelo. El protagonista siempre son tus datos y tus procesos.

El cuello de botella real (y no es la IA)

Aquí va la parte que no gusta oír. Si tu empresa no consigue sacar valor de la IA, casi nunca es por el modelo. Es porque tus datos están sucios, repartidos en cinco sitios que no se hablan, y porque hay procesos que solo existen en la cabeza de una persona.

La IA es un amplificador. Si le das encima de un caos bien estructurado, multiplica. Si le das encima de un caos a secas, multiplica el caos. Por eso el trabajo más rentable que puedes hacer este año probablemente no lleve la etiqueta «IA»: es ordenar la casa para que, cuando la enchufes, tenga algo bueno que amplificar.

Lo que le diría a un comité de dirección

Con el sombrero de negocio puesto, mi resumen sería este: no inviertas en IA para poder decir que inviertes en IA. Inviértela donde puedas medir el retorno —horas ahorradas, errores evitados, decisiones mejores— y empieza pequeño, por un proceso concreto que te duela.

Desconfía de quien te promete transformación sin hablarte de tus datos. Y desconfía todavía más de quien te vende una solución cerrada que «lo hace todo»: en retail, lo que lo hace todo normalmente no hace bien nada.

La IA no es ni la salvación que cuentan los titulares ni el humo que dicen los escépticos. Es una herramienta muy potente para una empresa que ya tiene los deberes hechos. Si los tienes, vuela. Si no, primero haz los deberes.

Lo difícil se hace, lo imposible se intenta. Pero antes de intentar lo imposible, conviene tener los datos en su sitio.

De experto técnico a business partner: lo que nadie te cuenta del salto

Hace unos meses me tocó subir a un escenario en el BEE360 a contar mi trayectoria, y preparando esa charla me di cuenta de una cosa: lo más difícil de mi carrera no fue ningún reto técnico. Fue dejar de medir mi valor por lo técnico.

Hombre saltando entre dos rocas, metáfora del salto de técnico a gestor

Suena bonito en una diapositiva, pero el camino real está lleno de baches que nadie te avisa. Así que voy a intentar contarlo como me hubiera gustado que me lo contaran a mí.

La trampa de ser el mejor técnico

Cuando empiezas, tu valor es evidente: sabes hacer cosas que los demás no saben. Levantas un servidor, depuras la query imposible, te peleas con el error 8456 a la una de la madrugada y sales victorioso. La empresa te quiere porque tú arreglas las cosas.

Y ahí está la trampa, porque ese reconocimiento engancha. Cuanto mejor técnico eres, más te buscan, más imprescindible te sientes… y más atrapado estás. Te conviertes en el cuello de botella de tu propio equipo. Si todo pasa por ti, has construido un sistema que no escala, y el primero que no escala eres tú.

Me costó entenderlo: ser imprescindible no es un superpoder, es un techo.

Nadie en la mesa de dirección habla de bits

El día que me senté por primera vez en una reunión de dirección de verdad, descubrí que mi vocabulario no servía de nada. Yo llegaba con mi «hemos migrado el ERP», «tenemos la base de datos optimizada», «la latencia ha bajado»… y veía caras de educada incomprensión.

A ellos no les importaba la latencia. Les importaba si íbamos a poder abrir cinco tiendas más este año sin que el sistema reventara. Les importaba el coste, el riesgo y el tiempo. Mi trabajo seguía siendo técnico, pero mi manera de explicarlo tenía que dejar de serlo.

Es exactamente la idea que comentaba en aquella reseña de La isla de los 5 faros: hay que hablar el lenguaje de quien te escucha. Lo escribí hace años pensando en presentaciones, sin imaginar que sería la lección más importante de mi carrera.

Crecer rápido te obliga a madurar (CMMI no es burocracia)

En retail, cuando la empresa crece a saltos, la tecnología o madura al mismo ritmo o se convierte en el freno. Y aquí va una confesión: yo era de los que veía marcos como CMMI como burocracia para consultoras aburridas.

Me equivocaba. La madurez no va de rellenar plantillas, va de pasar de «lo arreglamos cuando explota» a «tenemos un proceso para que no explote». Va de dejar de depender de héroes —spoiler: el héroe normalmente era yo— y empezar a depender de procesos repetibles que cualquiera del equipo pueda ejecutar.

El día que una incidencia grave se resolvió bien sin que yo tocara nada, no me sentí prescindible. Me sentí, por fin, como un director.

Lo que nadie te cuenta del salto

Resumo en cuatro cosas lo que de verdad me hubiera gustado saber antes:

1. Tu mérito técnico deja de contar como antes. Lo que te trajo hasta aquí no es lo que te va a llevar al siguiente nivel. Duele, pero es así.

2. Tu trabajo pasa a ser que otros brillen. Antes el éxito era tu pull request. Ahora es que tu equipo entregue sin ti delante. Cuesta soltar el teclado.

3. Tienes que aprender a traducir. De tecnología a negocio y de negocio a tecnología. Eres el puente, y un puente que solo entiende una orilla no sirve.

4. La soledad del intermedio. Ya no eres del todo «uno del equipo» ni del todo «uno de dirección». Es incómodo, y nadie lo dice en voz alta.

¿Mereció la pena?

Rotundamente sí. No porque sea mejor que arreglar cosas —sigo disfrutando como un niño cuando me peleo con un proyecto técnico—, sino porque el impacto es de otro orden. Antes resolvía problemas. Ahora ayudo a decidir qué problemas merece la pena resolver.

Si estás en ese punto, sintiéndote imprescindible y un poco atrapado: empieza por documentar lo que solo está en tu cabeza, por dejar que otro lo haga «peor» que tú la primera vez, y por aprender a contar lo que haces en el idioma del negocio. El salto no se da de golpe, se da soltando lastre poco a poco.

Lo difícil se hace, lo imposible se intenta. Y esto, aunque cueste, solo era difícil.

Hooked – How to Build Habit-Forming Products

Hooked

A quien quiera leer este libro en Inglés, primero de todo no os asusteis es muy sencillo de leer, así que si ese es vuestro miedo, no sufrais.

Es un libro interesante que te explica una sencilla pero potente idea sobre como contruir productos que generen adicción, siempre explicado con ejemplos que hacen que la comprensión sea muy fácil.

En esencia el modelo «Hook» se basa en conseguir 4 fases o estadios

Trigger: «Que es lo que hace que el usuario use nuestro producto» ese disparador interno (rutina) o externo (publicidad) que hace por ejemplo, quere usar Instagram.

Action: La acción que debemos hacer para poder usar Instagram, en este caso el registro, debe ser lo más sencillo y menos doloroso posible, para evitar las barreras de entrada y poder llegar al siguiente punto, la recompensa.

Variable reward : Esta parte quizás fue la que más me gustó del libro, empezando por algo tan básico (pero que no había caido), el usuario no puede siempre ganar (pensar el ejemplo de la máquina tragaperras), también diferencia los tipos de reward que existen (tribu, cazador, yo), en definitiva explica como y cuando según tus necesidades debes recompenar al usuario.

Investment : Otro concepto interesante que ya había escuchado con anterioridad es la necesaría inversión que debe hacer el usuario en tu producto, ese trabajo «pequeño» pero constante, bajo un concepto precioso de que cuanto más nos cuesta algo, más lo valoramos (pensar en la valoración que le damos a los muebles del Ikea después de haberlos montado) , hay muchos ejemplos muy interesante sobre esto en el libro.

 

En definitiva, es un libro muy ameno, que se puede leer en 4 o 5 horas, con una idea muy buena y repleto de ejemplos utiles que lo simplifican, esto junto con un precio muy atractivo en Amazon, lo hacen una compra más que recomendable.

Los mecánicos deben ser los mejores padres

A mi dilatada experiencia de 65 días siendo padre y con mas de 500 pañales a cuestas, me he dado cuenta que la experiencia es añadir puntos a un checklist.

Niña llora, ¿Que le pasará? ¿hambre?, le das de comer, la niña calla, perfecto!!! hemos aprendido llanto dispara comida.

Niña llora, das comida, no tiene hambre ¿Qué ocurre? ¿Tendrá el pañal sucio? limpias el pañal, la niña calla, perfecto!! llanto dispara comida o caca.

Niña llora, das comida, no tiene hambre, cambias el pañal, está limpio ¿Qué ocurre? ¿Tendrá gases? haces movimientos de piernas, la niña suelta metano como para considerarse bomba química, pero calla, perfecto!!! llanto dispara comida, caca, gas.

Después el listado sigue, con sueño, frio, sudor… en el mismo formato de las anteriores, try catch.

Conclusión, ahora, cada vez que mi hija llora, le hago la revisión oficial de los 25 puntos (hambre, pipi, caca, gases, frio, sudor, sueño, fiebre…) hasta que, con mucha suerte, encuentras el que le tranquiliza.

Reflexión 1: Los niños deberían venir con un cuadro de mandos como el coche para facilitar encontrar la avería.

Reflexión 2: Espero que con el tiempo mi algoritmo de búsqueda mejore, porque hasta el momento los costes son cuadráticos.

National Pens

Hoy me gustaría explicar una amarga experiencia que he tenido con la empresa National Pens… estoy un día en el ordenador y me llega un mail de confirmación de un pedido de 100 bolis, raudo y veloz llamo al teléfono de la empresa a decir que yo no he hecho ningún pedido, que si es correcta esa información que lo cancelen; la chica me intenta convencer de que realmente he sido yo quien ha hecho el pedido, ya que se ha utilizado un código único escrito en una carta que enviaron a mi dirección junto con un boli de muestra, carta que no viene certificada ni evidentemente recibí jamas.

Pasado X días recibo el paquete en mi casa, con la mala suerte que no soy yo quien está en casa ese día y por lo tanto el paquete queda recibido, envío un mail a la dirección de correo que aparece en los papeles irccesteam@pens.com y NP_ESFinance@pens.com , para indicar que no he hecho el pedido y que por favor vengan a buscar el producto.

Empiezo entonces a recibir cartas de pago de factura, a las que contesto que no he hecho el pedido y que por favor vengan a por los bolis, envío mails a los que nunca nadie me contesta, las cartas de impago siguen llegando… les intento enviar un burofax, pero sorprendentemente no tienen dirección física y a un apartado postal no puedo enviar un burofax.

Les envío mails resumiendo lo ocurrido, pero nunca nadie me dice nada, así que puesto que no puedo enviar un burofax, envío un mail certificado, no sirve de nada, las reclamaciones (con recargo de factura) siguen llegando, así que vuelvo a llamar al 900 96 35 36 para intentar dar sentido a este sin sentido, hablo con una chica, que se niega a darme su nombre (políticas de empresa me dice) así que no tengo más que llamarla «Señorita X», le explico a Señorita X lo que ha ocurrido y me dice que lamentándolo mucho, voy a tener que pagar, porque la información escrita en los bolis es correcta.

Cojo aire y le pido confirmación, «¿O sea… que enviáis un boli a un buzón sin ningún tipo de seguridad que lo reciba la persona adecuada, que si se hace el pedido con la información que hay en internet (nada personal) es suficiente «prueba» como para obligarme a pagar una factura de un pedido que yo NO he hecho y que he informado en varias ocasiones y por varios medios que no NO había hecho? » Contestación de Señorita X, «Sí, lo lamento mucho pero tendrá que pagar».

No se la legalidad de este procedimiento, pero a mí se me ha quedado un cuerpo de haber sido engañado y estafado por esta National Pens.

Espero que esta historia se sirva a alguien, como mínimo para saber lo que debe y no hacer ante una situación como la que me ha ocurrido a mí.

La isla de los 5 faros

Hace poco trabajando con @Pere Carbó de Cala me recomendó un libro que me ha parecido muy interesante, «La isla de los 5 faros», es un libro de pocas páginas que se puede leer fácilmente en un par de horas, el mensaje que nos da puede parecer evidente, pero lo importante no es que el mensaje sea revelador, sino intentar tenerlo presente cada vez que queramos hacer alguna presentación o en general cuando queramos exponer algo de forma efectiva.

Las 5 ideas son:

Ten siempre claro y deja claro cual es la idea o ideas que quieres comunicar, no hay nada peor que acabar de escuchar una presentación y no coincidir que la persona de al lado sobre cual era el tema de la charla o los puntos importantes de la misma.

Habla el lenguaje de tus oyentes, es muy importante hablar el mismo lenguaje de las personas que nos escuchan, evidentemente no estoy hablando de idioma, estoy hablando por ejemplo, de evitar tecnicismos sí estamos hablando con personas no técnicas. Hablar diferentes lenguajes genera distancia y precisamente es lo que queremos evitar.

Cuenta una historia, esta idea me encantó, no hay mejor forma de explicar una idea que en forma de historia o metáfora, es la mejor forma de hacer que las personas lo entiendan y lo retengan.

Fíjate en el lenguaje de las personas, mira como reaccionan, que cara ponen, verás como debes modular tú discurso y rectificar en el caso que sea necesario, verás en la gente el reflejo de lo que sienten por lo que estás explicando.

Invita, no empujes, esta sería la última idea, personalmente (y no tiene porque tener sentido para ti) me recuerda al concepto de no vender un producto, sino vender la solución a una necesidad, la perspectiva del cliente es totalmente diferente. Siempre me acordaré de MadMen cuando decía: «Hay que generar un picor en el cliente, que sienta la necesidad de aliviar ese picor y solo entonces, le presentamos nuestro producto, como la solución a sus picores».

He disfrutado mucho con este libro y ciertamente lo recomiendo a cualquiera.

Gestión de las peticiones

Un punto común en la gestión de incidencias o peticiones, es la recepción de las mismas, como recepcionamos estas peticiones.

Si miro atrás en el tiempo veo que siempre ha sido un punto muy importante en el trabajo y que sufre un seguido de fases que comentando con mis colegas son siempre comunes.

Peticiones de pasillo

 

Petición de pasillo: Por comodidad del usuario suele ser la primera que gestionas en la vida, usuarios que por pasillo o por teléfono te hacen una petición de lo que quieren o lo que les ocurre. En este estadio vives muy poco tiempo, al poco migras a la versión 2.0 de «petición de pasillo», que es «me lo apunto en la agenda», ya empezamos a querer tener un mínimo de orden, es imposible acordarse de todo!!

 

Petición por Email

 

Enviame un mail: Después de migrar de la «petición de pasillo» a «me lo apunto en la agenda», rápidamente llegamos a una conclusión: «Si yo me lo tengo que apuntar en la agenda, que me lo envien por mail y así ya lo tengo escrito», con lo que agarramos con fuerza nuestra bandera donde pone «¿Me lo envias por mail?» y cada vez que alguien en el pasillo o por teléfono te hace una petición, tú sacas la bandera y repites como un buen lorito: «¿Me lo envías por email?»

 

Ticket

 

Me abres un ticket: En el punto anterior del email, nos hemos sentido cómodos durante algún tiempo, pero poco a poco empiezas a ver que tampoco es el estadio ideal, te juntas con 200 mails al día entre:  trabajo, publicidad, compras, spam…empieza a ser incontrolable, pero como estás bien en este estadio, te intentas agarrar y empiezas a hacer variantes, ¿Y si voy creando carpetas para clasificarlo todo? ¿Y si intento mantener la bandeja de entrada como tareas pendientes y clasificó lo realizado en carpetas? ¿Y si juego con etiquetas de colores automáticas para poder gestionar mejor el correo? … pero nada te parece del todo correcto, no tienes control de las incidencias, no tienes indicadores, no puedes cuantificar cargas de trabajo y entonces es cuando te rindes a la plataforma de ticketing, coges tu bandera donde habías escrito el «¿Me lo envias por mail?» y lo sustituyes por «Me abres un ticket?»

 

 

Soporte

 

Me envias un soporte: Ya estamos en un punto de madurez alto, tenemos nuestras peticiones que nos han entrado por la plataforma de ticketing y podemos controlar trabajo pendiente, SLA’s, cargas de trabajo, responder con base de conocimiento, todo empieza a estar controlado y parecer profesional, solo hay un pequeño problema, al usuario esto de entrar en una web, hacer login y enviar una petición le gusta más bien poco, sobretodo al usuario V1.0 que le has ido pasando de la petición por el pasillo al email y del email al ticket ya empieza a estar un poco harto, porque para él no haces más que complicarle la vida, así que en este estadio empiezas a tener fricciones serias.

 

La solución en mi caso es hacer un híbrido del paso 2 y 3, no me abras un ticket, pero enviame un mail a soporte@ o incidencias@ o helpdesk@ que esto me abrirá un ticket y tú solo me tienes que enviar un mail: «Eso ya lo hacías antes y no te cuesta nada…»

 

Y así amigos es como ha sido mi evolución en la introducción de peticiones, si un caso otro día hablamos de cómo podemos gestionar incidencias con SLA’s cortos a proyectos o miniproyectos sin SLA’s en una misma plataforma.
Saludos!

Instalar Symfony2 en Yosemite con MAMP

Un amigo mio me comento que Symfony es una gran opción para programar web, pues vamos a probarlo, así que veremos como instalar Symfony2 en Yosemite con MAMP!!

Primero de todo me bajo MAMP para correr un entorno de desarrollo local en mi MacBook Pro Retina de 13″ (Sí, estoy orgulloso de él)

Empezamos mal, pues al arrancar MAMP ya no funciona

dyld: Symbol not found: _iconv Referenced from: /usr/lib/libmecabra.dylib Expected in: /Applications/MAMP/Library/lib/libiconv.2.dylib in /usr/lib/libmecabra.dylib /Applications/MAMP/Library/bin/apachectl: line 80: 2799 Trace/BPT trap: 5 $HTTPD "$

MAMP error Yosemite

 

Para arreglar esto nos vamos a la carpeta Aplicaciones de nuestro Mac y allí entremos en:

bin -> apache2 -> bin

Cambiamos el nombre del fichero envvars a _envvars

MAMP ya arranca, eso es bueno.

 

 

 

Ahora nos vamos a instalar Symfony, que es lo que queremos… entramos en la web de Symfony y vemos que nos dicen que para instalarlo tenemos que utilizar un script llamado composer, pues lo que ellos digan, si es así vamos allá.

Abrimos un terminal de Mac y lanzamos

curl -sS https://getcomposer.org/installer | php

Ningún problema, siguiente orden:

sudo mv composer.phar /usr/local/bin/composer

Ya estamos otra vez, «error», la carpeta no existe, no es un gran problema, cambiamos la ruta y punto

sudo mv composer.phar /usr/bin/composer

Perfecto, esto ya está, otro paso más hacia Symfony, ahora tenemos que instalar el aplicativo utilizando composer

composer create-project symfony/framework-standard-edition ruta-donde-instalaremos-la-aplicacion/

Que bonito! empieza a hacer cosita, a descargar otras, me hace preguntas del servidor de Mysql: usuario, pass, puerto bla bla bla bla y para terminar, algo que no había sucedido nunca, «error».

Cagontodo, mira que está siendo un parto esto

Script Sensio\Bundle\DistributionBundle\Composer\ScriptHandler::clearCache handling the post-update-cmd event terminated with an exception

[RuntimeException]
An error occurred when executing the "'cache:clear --no-warmup'" command

Volvemos a buscar información y como dice el error un poco más arriba, es debido al date.timezone de php.

Ningún problema!!! MAMP tiene un fabuloso sistema de plantillas para corregir esto, en la configuración del php.ini de la distribución de PHP que estemos lanzando en ese momento.

Ni corto ni perezoso me voy al php.ini del MAMP y añado la linea:

date.timezone = "Europe/Madrid"

Lanzo nuevamente el instalador y… redoble de tambores!!! tampoco va… mismo error, mi no entender.

Me rasco la cabeza a modo orangután pensando que narices puede ser, creo un fichero para lanzar un phpinfo() y me está devolviendo bien date.time

Entonces ocurrió un milagro de esos que no se bien bien porque me vienen a la cabeza y pienso

¿Y si el apache está lanzando una versión de PHP, pero la consola de comando está lanzando la versión que viene nativa en Yosemite?

Con una aureola celestial a mis espaldas lanzo desde linea de comandos un php -v y veo que me devuelve la versión 5.5.14 cuando MAMP trabaja con la 5.5.10 , ahí está, tenía razón, a veces pienso en Marilyn Manson y su costilla.

Bueno señor@s, pues miro donde está el php.ini nativo de Yosemite y como no, está en /etc/php.ini.default así que copiamos el fichero para que sea php.ini

 sudo cp /etc/php.ini.default /etc/php.ini

Añadimos la susodicha linea de date.timezone, lanzamos nuevamente el composer y ahora sí!!!! Con lagrimas en los ojos doy gracias a mis padres y a todo el mundo que me ha apollado en esta ardua carrera….

Seguimos, siguiente paso es cambiar los permisos de ciertos directorios

chmod 0777 app/{cache,logs}
chmod +a "`whoami` allow delete,write,append,file_inherit,directory_inherit" app/{cache,logs}

Una vez hecho esto, arrancamos nuestro servidor

php app/console server:run

Y al navegar a la url de config  localhost:8000/config.php deberíamos ver algo así:

yosemite-symfony-start

Pero… ¿Yo vi ese mensaje?

A estas alturas ya sabéis que yo no vi ese P#t@ mensaje

 

Yo me comí un :

 

Major problems

Major problems have been detected and must be fixed before continuing:
    1.    Vendor libraries are missing. Install composer following instructions from http://getcomposer.org/. Then run "php composer.phar install" to install them.

Bueno, haremos lo que nos dice y lanzaremos comando dentro de nuestra web

composer install

Pero continua dando el mismo error, me meto otra vez en San Google y miro que narices es este error, encontrando esto:

 

http://stackoverflow.com/questions/27744855/symfony-2-6-error-after-using-composer-vendor-libraries-must-be-installed

Pues se ve que es un Bug actual, menos mal, empezaba a estar cansado de tanto fracaso y error.

Bueno, pues ya está señor@s, tenemos Symfony2 instalado en nuestro Mac con MAMP.

Ahora solo hace falta programar, que es lo realmente fácil :p

 

 

Migrar un blog WordPress de una Url de desarrollo a una Url de producción

Para entender un poco la situación debemos entender que tenemos al usar wordpress:

1) Ficheros php que encontramos en la raíz del directorio de desarrollo, los ficheros de http://new.dominio.com
2) Base de datos Mysql del dominio new.dominio.com
3) Fichero de conexión PHP que enlaza los ficheros (punto 1) con la base de datos (punto 2) este fichero se llama wp-config.php y está en la raiz del directorio

Para mover los ficheros a otro lado, cada uno puede hacer lo que quiera, a mi me gusta comprimir los en un tar llevarme el fichero al servidor destino y descomprimirlo. Entramos por SSH en el servidor y escribimos:

tar czvf backup.tar.gz *

Nos llevamos el fichero a la ubicación del nuevo servidor y escribimos

tar xzvf backup.tar.gz

Muy bien…ahora tenemos los ficheros en el nuevo servidor, pero tenemos que cambiarles el propietario, porque los ficheros conservan el usuario:grupo que tenian en el antiguo servidor, para ello escribimos:

chown usuario:grupo * -R

Así cambiamos de forma recursiva los propietarios de los ficheros.

Una vez hecho esto tenemos que migrar la bbdd, esto cada uno lo hace como quiere, la idea es coger la bbdd de desarrollo volcarla en un .sql irse a la base de datos de producción y ejecutar ese fichero. A mi personalmente me gusta Navicat, así que las capturas serán de Navicat

Nos vamos a la base de datos de desarrollo, botón derecho y Dump SQL -> Estructure and Data

DumpSQL

 

 

 

 

 

 

 

 

Esto nos generará un fichero .sql con las instrucciones para regenerar la base de datos.

Ahora nos tenemos que ir a la base de datos de producción a restaurar dicho fichero, para hacer esto no es mas que ejecutar una query.

 

 

 

 

LoadQuery

 

 

 

 

Perfecto, ahora ya tenemos fichero y base de datos en el nuevo servidor, ahora solo nos faltan dos detalles.

Cambiar los datos del fichero wp-config.php para que funcionen con la nueva conexión. Nos metemos por ssh en el nuevo servidor y hacemos un:

 

 

 

vi wp-config.php

wp-config

 

 

 

 

 

 

 

 

Escribimos el usuario/password de la conexión a la base de datos y el nombre de la base de datos en el caso que sea diferente.

Perfecto! somos los mejores, ahora nos vamos a nuestro sitio web y…. funciona, que bonito, que alboroto otro perrito piloto!!!

Solo un detalle, al primer click que hagas te vas al site antiguo 🙁

Dentro de la base de datos guarda información referente a la URL del sitio, con lo que aún está apuntando a http://new.dominio.com en vez de http://www.dominio.com

Para poder corregir esto, tenemos que lanzar una sentencia de SQL para poder corregir esto ¿Que sentencia? pues para esto tenemos una página que nos ayuda mucho:

http://themergency.com/generators/wordpress-site-url-migration-generator/

Aquí veremos que nos pide la URL antigua, la URL nueva y el prefijo que le hemos puesto en la instalación del WordPress.

Normalmente el prefijo suele ser wp_ pero me he encontrado locos que le han puesto como prefijo 8jZsyWKjTn_

Bueno, si tu eres uno de esos locos, pues en el apartado de prefijo deberás escribir eso… la página te generará un código tal que así

/* update all post permalinks */
update 8jZsyWKjTn_posts
set guid = REPLACE(guid, 'http://new.dominio.com', 'http://www.dominio.com')
where guid LIKE '%http://new.dominio.com%';

/* update all post content */
update 8jZsyWKjTn_posts
SET post_content = REPLACE(post_content, 'http://new.dominio.com', 'http://www.dominio.com')
where post_content LIKE '%http://new.dominio.com%';

/* update all post meta */
update 8jZsyWKjTn_postmeta
SET meta_value = REPLACE(meta_value, 'http://new.dominio.com', 'http://www.dominio.com')
where meta_value LIKE '%http://new.dominio.com%';

/* update all options */
update 8jZsyWKjTn_options
set option_value = REPLACE(option_value, 'http://new.dominio.com', 'http://www.dominio.com')
where option_value LIKE '%http://new.dominio.com%';

Donde indica que debe actualizar los contenidos de la base de datos con la nueva URL.

Nos vamos nuevamente al Navicat, desde el apartado de querys creamos una nueva y enganchamos el churro de código que nos ha dado la página.

Hecho esto ya nos funcionará el Blog perfectamente!!!

Exportar Buzones Exchange 2010 a PST | Muy fácil

Exportar-Exchange2010-PST
Exportar Buzones Exchange 2010 a PST

A quien no le ha pasado que trabajando con Exchange 2010, por precaución o por necesidad, quiere exportar todos los buzones o algún buzón a PST.

Los informáticos un poco carcas (como yo) tenemos en mente aquella fabulosa herramienta de Exchange 2003 para exportar a PST, es una pena que las versiones posteriores no lo lleven.

Como siempre tirando de Google y de Technet llegamos a la conclusión que podemos hacer lo mismo nosotros mismos tirando de comandos, cosa que me parece más divertida que la herramienta gráfica que antes comentaba.

Resumo unas ordenes a lanzar desde la consola de comandos de Exchange para poder hacer la exportación, teniendo en cuenta que queremos, exportar un usuario en concreto, todos los usuarios, filtrar por fechas para uno o varios usuarios.

Así podréis escoger y jugar para bastantes situaciones que se os puedan plantear.

 

En mi caso yo quería dejar únicamente los correos posteriores a una fecha en concreto así que necesite:

– Full backup de todas los buzones (Por si un caso)

– Backup de los buzones para los correos que quería eliminar.

 

Es importante que la ruta de exportación sea UNC a una carpeta con permisos.

 

 

Exportar un usuario Exchange 2010 a PST


New-MailboxExportRequest -Mailbox usuario -FilePath \\RutaUNC\PST\usuario.pst

 

 

Exportar un usuario Exchange 2010 a PST filtrando por fecha


New-MailboxExportRequest -Mailbox usuario -ContentFilter {received -lt ’01/07/2014′} -FilePath \\RutaUNC\PST\usuario_010712014.pst

 

 

Exportar todos los usuarios de Exchange 2010 a PST


foreach ($i in (Get-Mailbox)) {New-MailboxExportRequest -Mailbox $i -FilePath «\\RutaUNC\PST\$($i.Alias).pst»}

 

 

Exportar todos los usuarios de Exchange 2010 a PST filtrando por fecha


foreach ($i in (Get-Mailbox)) {New-MailboxExportRequest -Mailbox $i -ContentFilter {received -lt ’01/07/2014′} -FilePath \\RutaUNC\PST\$($i.Alias)_010712014.pst}

 

 

Borrar la petición de Exportación que se han completado correctamente


Get-MailboxExportRequest -Status Completed | Remove-MailboxExportRequest

Fuente: http://technet.microsoft.com/en-us/library/ff607464%28v=exchg.150%29.aspx

 

 

Mirar como va el proceso de exportación de buzones


Get-MailboxExportRequest | Get-MailboxExportRequestStatistics