martes, 12 de febrero de 2013

Error java script con Report Viewer e Internet Explorer 9 (window.getComputedStyle)

Contexto

Página con ReportViewer en Internet Explorer 9,

Sintomas

Aparece un "Error en tiempo de ejecución de Microsoft jscript, Interfaz no compatible" al desplegar una de las listas de criterios.
El error esta relacionado con la función window.getComputedStyle.

Solución

Fuente: MikeHoffer en un articulo de Microsoft Community
  1. Prepara la página para usar jquery si aún no existe.
  2. Inserta el siguiente código en la sección de cabecera.
<!-- IE 9 throws an error when this is called, so we need to override it and catch that error -->
    <!--[if IE 9]>
    <script language="javascript" type="text/javascript">
        $(window).ready(function () {
            window.getComputedStyle = function (el, pseudo) {
                this.el = el;
                this.getPropertyValue = function (prop) {
                    var re = /(\-([a-z]){1})/g;
                    if (prop == 'float') prop = 'styleFloat';
                    if (re.test(prop)) {
                        prop = prop.replace(re, function () {
                            return arguments[2].toUpperCase();
                        });
                    }
                    //error occures on the currentStyle
                    //return el.currentStyle[prop] ? el.currentStyle[prop] : null;
                    if (typeof(el.currentStyle) == 'undefined') {
                        return null;
                    } else {
                        return el.currentStyle[prop] ? el.currentStyle[prop] : null;
                    }
                }
                return this;
            }
        })        
    </script>
    <![endif]-->

lunes, 11 de febrero de 2013

Insertar código de seguimiento Google Analytics sin editar todas las páginas

Problema

Tienes un sitio escrito que a lo largo de los años has rellenado con abundantes páginas HTML, ASP, ASPX,....etc.
Ahora quieres incorporarle el código Javascript para el seguimiento con Google Analytics.
Pero no quieres editar todas las páginas del sitio ni modificar todos los desarrollos.
¿Cómo lo haces?
(El sitio se aloja bajo IIS7.5)

Antes que nada

Esta solución es parecida a la propuesta por Ruslan Yakushev en:

Using Outbound Rules to add Web Analytics tracking code


Pero no es la misma y he añadido algún detalle necesario, al final del post detallo los cambios.

Solución

Primer paso

Copia el código de google analytics y salvalo en un archivo accesible de tu sitio web.
A efectos de este ejemplo supondremos que lo guardamos con el nombre google.js en un directorio /scripts
El código lo puedes copiar y pegar de:
Panel Analytics / tu sitio / administrador / Información de seguimiento

Segundo paso

Utiliza el modulo URL Rewrite y crea una regla de salida (outbound Rule)
Le creas una pre-condición con esta información:
  1. Name: "EsHTML"
  2. Using: "Regular Expressions"

Haz clic en "Add" para que tener el cuadro de dialogo  "Add condition"
En el cuadro de dialogo escribe:

  1. Condition input: "{RESPONSE_CONTENT_TYPE}"
  2. Check if input string: "Matches the pattern"
  3. Pattern: "^text/html"

Ahora debes 
  1. El matching scope : Content
  2. The content:  matches the Pattern
  3. Pattern:</head>
Marca la casilla ignorar mayúsculas (Ignore case)
La acción debe ser:

  1. Action type: Rewrite
  2. Value: <script src="/scripts/google.js" type="text/javascript"></script></head>

Explicación

Lo que hacemos es localizar el final de los encabezados de página para insertar el código Java que necesita Google Analytics.
Lo hacemos con una simple búsqueda y reemplazo. Solo procesamos los archivos con HTML que es para los que tiene sentido.

Hay dos diferencias con el articulo de Ruslan Yakushev  mencionado más arriba:
  1. Utilizamos una archivo externo. De hecho si intentamos usar el código Java directamente en el valor de reemplazo tendremos problemas porque los simbolos $ utilizados entran en contradicción con la sintaxis de URL rewriter.
  2. Reemplazamos </head> en lugar </body>. Es mas acorde con las recomendaciones de Google Analytics.

miércoles, 6 de febrero de 2013

El cliente del SCCM no se intala en algunos ordenadores

Síntomas

Cuando ya creías que tenias resuelta la instalación del cliente para System Configuration Center mediante las actualizaciones de Windows Update  resulta que en algunos ordenadores no se instala.
Ni siquiera se crea el directorio %windir%\CCM.

Solución

En %windir%\windowsupdate.log encuentras una linea sospechosa  # AU is not configured yet que te lo dice todo.
Tienes que habilitar "Configurar actualizaciones automática"s en la sección Windows Update de la GPO donde has configurado "Especificar la ubicación del servidor de Windows Update en la Intranet"

Explicación

¿Por qué funcionaba en unas maquinas y en otras no?
En muchas maquinas la persona que instala configura los servicios de Windows Updates en el primier arranque. En otros casos no se hace, confiando que las actualizaciones se descargaran del WSUS.
Para ello la GPO del WSUS anterior configuraba las actualizaciones automáticas para que se instalaran a una hora determinada.
Pero al cambiar la GPO se recuperaba la configuración propia de la maquina en el apartado configuración de Actualizaciones de Windows.