Fallo al instalar OSX El Capitán en un SSD nuevo

Bueno, pues llegó el día en el que el disco duro, que ya había estado avisándome previamente, decidió que ya estaba bien y que él ya tenía una edad como para seguir currando al ritmo que lo hacía. Así que empezó a hacer soniditos raros y me bloqueaba el sistema operativo constantemente.

El caso es que después de hacer de cirujano, instalé un nuevo SSD.

Ya tenía un USB de una instalación previa que hice de OSX El Capitán, así que utilicé ese pen para hacer la nueva instalación. El pen lo creé siguiendo las instrucciones de Mashable para hacer una nueva instalación limpia de OSX El Capitan http://mashable.com/2015/10/01/clean-install-os-x-el-capitan/

Al arrancar la instalación de OSX siguiendo los pasos de Mashable… ERROR!!

No se ha podido instalar OS X en el ordenador. No se han detectado paquetes apropiados para la instalación. Póngase en contacto con el fabricante de software para solicitar ayuda. Salga del instalador para reiniciar el ordenador e inténtelo de nuevo

Bueno, para el que le de el mismo error me dejo de historias. Resulta que no se cómo (porque no lo he tocado) el USB estaba corrompido y le faltaba algún que otro paquete. Hice otra vez el USB nuevo siguiendo las instrucciones de Mashable y instalando está… (por lo menos ya no me da ese error)

PS: Por cierto, si pone que os queda un segundo y se queda estancado no os preocupéis porque el sistema sigue instalándose. Parece ser que el instalador no calcula muy bien lo del tiempo de espera.

Actualización: Es posible que os pase que se os ha pasado la fecha de instalación. Resulta que el programa de instalación compara la fecha de descarga de OSX El Capitán con la fecha del sistema. Si la fecha en la que se está haciendo la instalación es muy posterior de la fecha de descarga, entonces no permite hacer la instalación.

Como bien dice Galí en los comentarios hay que resetear la fecha para poder saltar esa comprobación. Lo que hay que hacer es ejecutar el comando date en el terminal dentro del instalador, donde pondremos una fecha algo posterior a la fecha de descarga de OSX (un par de días basta).

Cuando te da el error, en la barra de menú superior abres Terminal y editas la fecha.

Escribe y ejecuta esta orden : date 0328015315

El formato de la fecha es este: [mm]dd]HH]MM[[cc]yy] month-day-hour-minute-year. En el ejemplo sería 0328015315 = Marzo-28-01:53-2015

Espero que ayude a alguien más ;D

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.

Twitter Bootstrap responsive a 16 columnas

bootstrap

Para el próximo template responsive que voy a crear para Magento me pasaron un diseño en PSD basado en un grid de 16 columnas. Decidí usar el framework Bootstrap de Twitter, pero me di cuenta de que por defecto está basado en 12 columnas en lugar de 16.

En la página de Twitter Bootstrap, que actualmente está en la versión 2.3.0, hay una herramienta de configuración donde es posible bajar un Bootstrap custom diciéndole que es lo que quieres y que no. En la parte inferior están los parámetros del gridsystem donde puedes decirle al generador qué valores quieres tener para número columnas, ancho de cada una de ellas y separación. Estos serían los valores que habría que ponerle para un layout de 16 columnas.

bootstrap-grid

Pero cual es mi sorpresa cuando al descomprimir el archivo .zip que te genera, los archivos bootstrap.responsive.css y bootstrap.responsive.min.css brillan por su ausencia. ARRRGG!!

Después de darle muchas vueltas decido que la mejor opción es bajarme los ficheros less (disponibles en la carpeta less del proyecto Twitter Bootstrap en github) y compilar el fichero yo mismo.

Para usuarios de Mac puede ser relativamente fácil hacer esto ya que existen heramientas muy chulas (como Crunch por ejemplo) que van a las mil maravillas. Pero si trabajas con Windows o Ubuntu puede ser un poco más complicado.

Lo intenté con Simpless en Windows XP pero no me funcionó, ya que por lo visto han dejado un poco de lado el proyecto y al compilar los ficheros me daban errores (luego me enteré de que la librería Less.js la tienen desactualizada y la actualicé pero ni así). También lo intenté con WinLess pero la aplicación cascaba estrepitosamente al intentar abrir el directorio que contiene los archivos .less.

Así que me decidí por hacerlo por terminal en Ubuntu (no hay, o al menos no he encontrado, compiladores gráficos de Less para Ubuntu). Para usar Less en Ubuntu lo mejor es instalar Node.js y luego con Node Package Manager instalar Less. En esta guía David Sadler explica de lujo la instalación de Node.js en Ubuntu, aunque yo me salté el paso que hace el cambio de rama a la 0.6.17, más que nada porque en estos momentos están por la 0.9.9. Así que yo os recomiendo que os saltéis esta línea también

Una vez instalado Node.js hay que instalar less con NPM. La línea que hay que ejecutar en el terminal es la siguiente:

Vale, ahora ya tenemos las herramientas para compilar el archivo responsive.less, pero antes nos tocará cambiar los valores del archivo variables.less alrededor de la linea 272, por los que queremos para soportar responsive a 16 columnas:

Grabamos el archivo variables.less y a continuación compilamos el archivo responsive.less con la siguiente orden:

Con lo que ya tendremos el archivo bootstrap-responsive.css con soporte para 16 columnas que es lo que andábamos buscando. Os dejo a vosotros el tema de la minificación, que hay mil herramientas por ahí.

Act: Gracias a este twitt de @jorgecasar me doy cuenta de que falta una cosa más. En el archivo bootstrap-responsive.css generado, alrededor de la línea 1016 sigue estando .span12 al 100%. Por lo visto esa parte está sin parametrizar en el .less. Habría que cambiar ese código por este otro:

Act2: Me pide James Vergara en los comentarios el archivo bootstrap-responsive.css con soporte para 16 columnas. Aquí lo tenéis:

bootstrap-responsive.css con soporte para 16 columnas

+Info:
http://twitter.github.com/bootstrap
https://coderwall.com/p/vusddq
http://lesscss.org
http://toutpt.makina-corpus.org/en/articles/twitters-bootstrap-for-responsive-web-design-with-16-columns

Borrar pedidos de prueba y resetear contadores en Magento 1.7.0.0

magento_logo

Para empezar una tienda de cero y ponerla en producción nunca está de más borrar todos los pedidos que se han hecho de prueba y resetear los contadores para que el primer pedido y la primera factura empiecen con el número 1. Esto es importante si vas a utilizar el envío de facturas a clientes por ejemplo.

Antes de nada, hacer una copia de seguridad de la base de datos.

Mi versión de Magento, como ya digo en el título, es la 1.7.0.0

Creamos un archivo en el raiz de Magento (al mismo nivel que el archivo index.php y el directorio app) un archivo borrar_pedidos.php con este código de Dejan Radic de Inchoo que quita todos los pedidos, facturas, envíos, etc.

Una vez creado lo ejecutamos accediendo a él directamente (http://dominio.com/borrar_pedidos.php).

Que no se te olvide borrar este archivo una vez hayas terminado.

Una vez quitados los pedidos el señor Fooman nos muestra como resetear los números de pedidos, facturas y envíos.

With a tool like phpmyadmin look at your database. In the table eav_entity_type you will find all entity types listed. The one of interest to change where the order number starts is order sales/order. Remember the entity_type_id (in my install it is 11). Next go to the table eav_entity_store. Look up the entity_type_id. Now you can change the value of increment_prefix and increment_last_id. If you wanted to have your next orderId to be 15000 set increment_last_id to 14999

Lo que quiere decir es que tenemos que ir a la tabla eav_entity_type, miramos entonces cual es el registro cuya columna entity_model es sales/order y nos quedamos con el campo entity_type_id. Ese será el identificador de los pedidos. Haremos lo mismo con las facturas (sales/invoice) y con los envíos (sales/shipment). Una vez tenemos estos códigos nos vamos a la tabla eav_entity_store y comparamos el campo entity_type_id con los valores que acabamos de obtener. Solo falta cambiar en esta tabla los valores del campo increment_last_id y le pondremos el valor anterior al que queremos que tenga el primer pedido/factura/envio. Es decir, si queremos que sea 100000001 como viene por defecto en Magento, pondremos como valor de increment_last_id 100000000.

Por último, una cosa más que a mi me daba error es la siguiente: Una vez seguidos todos los pasos anteriores al realizar un pedido para ver que todo estaba correcto y entrar al administrador para ver dicho pedido me salía un error como que el pedido con ese identificador ya existía(). Yo uso un módulo llamado OneStepCheckout para juntar todo el proceso de compra en una misma página que crea una tabla de pedidos llamada mw_onestepcheckout. Esa tabla también tendrá que ser vaciada por completo (TRUNCATE) y ya no nos dará el problema al entrar en la zona de pedidos del administrador de Magento.

Espero ahorrarle tiempo a alguien (o a mi mismo en un futuro :D)

 

Please specify product option(s) al añadir bundle desde el listado de productos en Magento

Ya estoy terminando mi primera tienda online propia. En ella, para controlar el stock, tengo una serie de packs compuestos por bundles con simples relacionados. Al hacer pruebas de inclusión de los productos en el carrito desde el listado de productos me encuentro con el siguiente problema en Magento v 1.7.0.0.

Tengo una categoría en la que todos los productos son paquetes de productos (bundle), los productos asociados a estos son simples, introducidos como diferentes opciones checkbox en una opción del paquete de artículos, marcados por defecto y la opción configurada como Se requiere = NO. Algo así:

El problema viene al intentar añadir el producto al carrito desde el listado. Al darle al botón, en vez de añadirlo al carrito el sistema te lleva directamente a la ficha de producto mostrando el siguiente error:

Please specify product option(s)

y te deja en la ficha de producto con ese mensaje. Lo bueno es que desde la propia ficha de producto y sin tocar nada, le damos al botón de añadir el producto al carrito y funciona perfectamente.

Lo que yo quiero es, ya que las opciones no son obligatorias que vaya directamente al carrito sin pasar por la ficha de producto. Para ello he hecho un pequeño cambio en el botón del listado de productos.

En el template del listado, archivo /app/design/frontend/default/nombre-de-tema/template/catalog/product/list.phtml haremos el siguiente cambio (no especifico línea porque según qué plantilla estéis utilizando será una u otra):

Donde pone:

ponemos esto otro:

Con esto lo que hacemos es utilizar un formulario para productos tipo bundle y para el resto de productos (simples, configurables, etc..) el botón que viene por defecto. Lo que hacemos en el caso de que el tipo de producto sea bundle es hacer un bucle por todas las opciones y ponerlas como ocultas en un formulario, con otro campo oculto para poner la cantidad por defecto de cada opción simple. A la vez controlamos el stock de cada una de las opciones y si no hay stock de alguna de ellas no  El botón enviará ese nuevo formulario sin tener que pasar por la ficha de producto.

Código sacado de aquí, pero me costó encontrarlo un montón así que por eso esta entrada: http://stackoverflow.com/questions/5911738/add-bundle-product-to-cart-without-having-to-specify-the-options/13663949#13663949

Off Topic: Con esta entrada vuelvo a retomar mi blog. A ver si publico un sinfín de entradas relacionadas con Magento que he ido acumulando durante más de un año trabajando en Kuombo.

Correos transaccionales para diferentes idiomas en Magento 1.5.0.1

Tenemos un cliente en Logocomunica que tiene la web traducida a cuatro idiomas. Al ser una tienda online hecha en Magento, existe la posibilidad de crear los correos transaccionales de cada acción en la que hace falta informar a los clientes de la tienda en cada uno de los 4 idiomas. Una vez creados estos correos se configura en los diferentes idiomas para que, según en que idioma se esté visualizando la página, te mande los correos en el idioma correspondiente.

El caso es que nos dimos cuenta de que los correos enviados a usuarios al registrarse en español se mostraban en inglés. Al ver que estaban bien configurados nos pusimos a buscar por internet hasta encontrar que era un bug de la versión 1.5.0.1 de Magento.

En el archivo app\code\core\Mage\Customer\Model\Customer.php se encuentra este trozo de código en la función sendNewAccountEmail (alrededor de la línea 517):

Este código por lo visto no devuelve correctamente el id de la vista de la tienda.

También nos dimos cuenta de que también estaba esta otra línea (569) que hacía algo parecido, en la función sendPasswordReminderEmail:

Para resolver esto, copiamos el archivo Customer.php a app\code\local\Mage\Customer\Model\Customer.php y hay que volver hacia atrás unas cuantas releases y copiar el código del mismo fichero en la versión 1.4.1.1. donde si funcionaba correctamente. Con lo que para el primer trozo de código nos quedaría así:

y para el código de la línea 569 quedaría algo así:

Y con esto ya nos llegarán los correos de registro y de recordatorio de contraseña en el idioma correcto.

+info: http://www.magentocommerce.com/boards/viewthread/77826/#t333947

Cambiar todos los archivos a UTF-8 en Eclipse

Tip tonto que me trae de cabeza cada vez que instalo Eclipse.

Cuando instalas Eclipse, no se por qué razón, viene por defecto la codificación de los archivos de texto en codificación ANSI, con lo que todos los archivos que tuvieras en UTF-8 se verán con caracteres raros sustituyendo a letras con acentos, eñes y demás caracteres usados en castellano.

Para hacer que todos los archivos de texto se vean con la codificación correcta hay que ir a Preferences / General / Content types, seleccionar Text en la lista de Content Types y en default enconding poner UTF-8.

Con hacer esto, todos nuestros archivos de texto tendrán UTF-8 y volverán nuestras preciadas tildes…

Borrar XCode3 ( Developer-old )

Una vez instalado XCode 4 se mueve la carpeta del anterior XCode3 a /Developer-old

Para borrar los archivos anteriores y recuperar 5GB de espacio en disco se debe ejecutar la siguiente orden desde el terminal:

Después de hacer esta operación aún quedará la carpeta /Developer-old con alguna carpeta dentro (Application, Documentation, Extras) que ocupan en total unos míseros 20 megas. Con borrar esta carpeta nos habremos librado de la anterior versión de XCode.

Tip sencillo pero útil…

+ info en inglés

Cambiar posición del símbolo euro en Magento

Hoy me ha llegado una nueva tarea de un cliente. Como cliente español que es quería el símbolo del euro de los precios detrás del importe, es decir que pusiera esto 190,00 € en lugar de € 190,00 como están acostumbrados los angloparlantes.

Me ha llevado un buen rato encontrar como se hacía ya que yo tengo la sana (por lo menos la mayoría de las veces) costumbre de buscar las cosas en inglés. Al ser algo específico del idioma castellano pues hasta que se me ha ocurrido buscar en castellano pues he perdido un ratico. En fin, he buscado en castellano y he encontrado este post de los foros de magento donde indica como cambiar la posición del símbolo euro.

Resumiendo, lo que hay que hacer es cambiar en el archivo es.xml situado en lib/Zend/Locale/Data el currencyFormat:

por esto otro…

Y atención porque aquí viene lo importante. No lo avisa en el post explícitamente pero yo lo acabo de comprobar. Resulta que el cambio no es inmediato, da igual que refresques la caché, que la deshabilites, que te borres las cookies o la caché del navegador. Lo importante aquí es la paciencia, porque al cabo de un rato cambia solo!!!!

Increíble pero cierto, se ve que ese valor debe estar asociado a la sesión de la aplicación o algo así y hasta que no pasa un buen rato no se reflejan los cambios (supongo que en ese rato nadie debe utilizar la página o el timeout para expire no llegará nunca).

En mi caso ha tardado una hora o así ya que la web no está abierta al público todavía, así es que lo dicho, paciencia.

Otra cosa más al saco de Magento…

Freehand MXa en OSX Snow Leopard

Supongo que esta entrada ya está obsoleta nada más publicarla, pero como utilizo este blog como base de datos de conocimiento, para que no se me vayan olvidando las cosas…

Bueno, el caso es que ayer, instalándole a mi nuevo Macbook Pro la última versión de Freehand, sí, habéis oido bien, Freehand… y es que muchos clientes siguen usando este útil aunque obsoleto software, así es que hay que instalarlo. Bueno, pues resulta que al ir a arrancarlo directamente se cerraba, sin dar ninguna clase de error.

Buceando por internet buscando una solución para Snow Leopard encontré este post que soluciona el no poder arrancar Freehand en OSX 10.6. Lo único que hay que hacer es bajarse el archivo de registro, descomprimirlo y pegarlo en Macintosh HD\Library\Application Support\Macromedia.

Solo con esto ya arranca Freehand a la primera. Enhorabuena a los premiados.