lunes, 6 de junio de 2016

No sale el favicon en prestashop 1.6

En ciertas versiones de prestashop 1.6 ocurre un error que impide que se muestre el favicon en el frontend. El error es muy simple. En la base de datos de nuestra tienda, hay una tabla con registros de configuración. Esta tabla se llama "PS_CONFIGURATION". Pues bien, en esta tabla debemos localizar los registros con el nombre "PS_FAVICON". Si encontramos 2 resultados, habremos hallado el origen del problema. Debemos eliminar uno de ellos, concretamente el que el valor sea "favicon.jpg" . El problema se origina al haber dos registros en la misma tabla, y al tener uno de ellos extensión JPG (formato no válido para el favicon).

Si a pesar de esto, no aparece el favicon, debemos comprobar que el archivo header.tpl de nuestra plantilla contiene el código necesario:
?
1
<link rel="icon" type="image/vnd.microsoft.icon" href="{$favicon_url}?{$img_update_time}" />

Primera pelea de robot de 15 mt

Nos desafió a un duelo Japón.


En el verano de 2015, MegaBots, inc. completara la construccion del primer gigante de los EE.UU. El Mk. II MegaBot es un robot de 15 pies de altura, 12,000lb capaces de lanzar proyectiles a una velocidad de 3 libras más de 130 MPH.

Al terminar este gigante Mc. II, desafiara al único otro gigante conocido robot pilotado en el mundo a un duelo. Un robot 9,000lb conocido como Kuratas creado por un grupo en Japón conocido como Suidobashi Heavy Industries.

Ellos aceptaron....

Suidobashi Heavy Industries acordaron desafíar MegaBots ,bajo las condiciones que incluye la lucha cuerpo a cuerpo.

Prepárense para presenciar el espectáculo deportivo más épica que el mundo ha visto jamás: robot de combate Nación-en-nación. gigantes de varias toneladas oscilarán golpes, lagrimeo paneles de blindaje de acero el uno del otro hasta que un mech quede en pie, mientras que el oponente se deja un montón de chatarra.


TypeScript, el lenguaje en el que se construirá Angular 2


En marzo, durante la primera KeyNote del evento ng-conf 2015, se hizo un anuncio bomba por parte del equipo de Angular: la elección de TypeScript como el lenguaje con el que se va a construir la próxima versión del framework.
Sin duda una buena noticia al unir fuerzas y conocimiento la gente de Google con la gente de Microsoft, y que puede ser el inicio del fin de la guerra absurda que sostiene Google con todo lo que huela a Redmond y que tantas incomodidades está produciendo entre los usuarios.

Qué es y hacia donde va

TypeScript es un lenguaje de programación de código abierto desarrollado y presentado por Microsoft hace unos tres años. Es un superconjunto de JavaScript que esencialmente añade capacidades de POO como es el tipado estático y objetos basados en clases.
Extiende la sintaxis de JavaScript, por medio de un lenguaje propio que compila ficheros en lenguaje JavaScript original, asegurando la compatibilidad con todos los navegadores, servidores y sistemas operativos.
S. Somasegar, vicepresidente corporativo de la División de Desarrollo de MS, describió en su blog el roadmap que va a seguir en los próximos meses el desarrollo de TypeScript, y que tiene como principales hitos la compatibilidad con ECMAScript 6 añadiendo sintaxis y características; la implantación de ECMAScript 7 y de comunicaciones asíncronas similares a async/await; y la evolución de la infraestructura esperando incrementos del rendimiento hasta cuatro veces superiores a la versión 1.0.
Para un seguimiento más detallado lo mejor es acceder al repositorio de TypeScript en GitHub, pudiendo aportar al proyecto o simplemente ir probando las nuevas versiones.

Nada mejor que un ejemplo práctico

Typescript
Al tener instalada la versión de Visual Studio 2013 update 2 o el novísimo 2015 CTP6, tengo integrado en mi IDE las librerías de TypeScript, y puedo probar en primera persona la construcción de un sencillo Hello World, experimentado las diferencias que ya se pueden encontrar en esta primera aproximación.
Como era de esperar, cuando utilizo la plantilla que trae Visual Studio de un proyecto del tipo TypeScript veo que voy a utilizar dos ficheros + uno: el HTML, el de javascript y en el que realmente voy a trabajar, el .ts.
La descripción funcional es muy sencilla. Quiero ver un textbox en donde introducir mi nombre, y un botón para que – cuando lo pulse - el sistema me muestre un texto que diga “Hola + nombre introducido”.
Para ello primero preparo el HTML
?
1
2
3
4
5
6
7
8
9
10
<title>TypeScript HTML App</title>
<script src="app.js"></script>
<div id="content">
    <input id="nombreUsuario">
    <button onclick="saluda();">Saluda</button>
    <br>
    <label id="lblSaludo"></label>
</div>
En donde no tengo mucho que comentar más que la llamada al fichero app.js que es en donde se va a compilar mi código introducido en app.ts.
El fichero en donde codifico es el app.ts en donde introduzco la función que se lanza al pulsar en el botón. He tenido que quitar el SyntaxHighlighter porqué me añadía un cierre de los tag de casteo que no ha habido forma de quitar.
?
1
2
3
4
5
6
7
8
9
function saluda()
{
    var usuario = (<htmlinputelement>document.getElementById("nombreUsuario")).value;
    (<htmllabelelement>document.getElementById("lblSaludo")).textContent = "Hola " + usuario;
};
// Este cierre de tags lo añade syntaxhighlighter.
// Al ser un cast, no es necesario este cierre.
// Pero el editor los pone automáticamente
</htmllabelelement></htmlinputelement>
Lo cual, una vez compilado, me va a dar como resultado el siguiente fichero javascript.
?
1
2
3
4
5
6
function saluda() {
    var usuario = document.getElementById("nombreUsuario").value;
    document.getElementById("lblSaludo").textContent = "Hola " + usuario;
};
//# sourceMappingURL=app.js.map

Las principales diferencias

Lo primero a señalar es que, como he dicho antes, no se trabaja con el fichero javascript ya que es el resultado de la compilación del ts. Por lo cual en Visual Studio lo que veo es una pantalla partida en vertical en donde tengo el código TypeScript a la izquierda y el código js resultante a la derecha.
Typescript
Lo segundo es que este es un lenguaje tipado y así tengo que definir el objeto que estoy utilizando para poder obtener las propiedades o métodos que soporta. Así en el ejemplo tengo que identificar al objeto con el id “nombreUsuario” como un objeto del tipo Input () para poder acceder a su value.
Si no hiciera esta conversión, el compilador me da un error y no me deja continuar.
Otra cosa que nos va a facilitar mucho la vida a los que utilicemos este lenguaje, es que utiliza todas las capacidades de compilación y depuración de Visual Studio, similar a la de cualquier lenguaje .NET. Y es una auténtica gozada el poder poner un punto de control en cualquier sitio y hacer un resumen de inspección u obtener la pila de llamadas de un código javascript.