Compilar Openlayers 3 en Windows, sin morir en el intento

Si eres programador, trabajas sobre SIG, y por desgracia, tienes que hacer clientes SIG Web, creo que conocerás la solución “Openlayers” que nos hace la vida mas sencilla a todos los que nos peleamos a diario con esto…

Openlayers 3 Logo

Openlayers 3

El salto de la rama 2.x a la 3.x ha sido muy dura. Incluso compilar, desde el código fuente, la rama 3.x es bastante complicado (si vemos como se trabajaba en la version 2.x). Y recompilar el código es una necesidad cuando no paran de encontrarse errores y pequeños fallos (recordemos que estamos en una beta). Errores como por ejemplo el que se comenta en este hilo respecto del manejo de las capas “ImageStatic” como fuente de las imágenes.

Bueno pues manos a la obra.

Requisitos:

Os dejo una lista, instala todos por defecto y que estén en el disponibles en el PATH:

  • Git
  • Node.js
  • Python 2.6/2.7
  • Java 7 (yo usé el JRE)

Una cosa muy curiosa es que Python se tiene que instalar en “C:\Python27” o “C:\Python26” o no funcionará este sistema.

Git haz tu trabajo

Nos traemos el repositorio entero de OL3 desde Github (te recomiendo una ruta corta, tipo “C:\ol3” que es la que voy a usar a lo largo del manual):

git clone https://github.com/openlayers/ol3.git

Esto tardará un rato… es la hora del café!

Dependencias… y algo de magia

Bien, ahora comprobamos si tenemos todo lo que necesitamos:

C:\ol3>build.py checkdeps
Program "./node_modules/.bin/cleancss" seems to be MISSING.
Program "git.exe" seems to be present.
Program "C:Python27\Scripts\gjslint.exe" seems to be MISSING.
Program "C:\Program Files\jsdoc3\jsdoc.cmd" seems to be MISSING.
Program "./node_modules/.bin/jshint" seems to be MISSING.
Program "C:Python27\python.exe" seems to be MISSING.
Program "C:phantomjs-1.9.7-windows\phantomjs.exe" seems to be MISSING.
For certain targets all above programs need to be present.

Fue bonito mientras duró (no iba a funcionar a la primera 🙂

Pero vamos a realiza un par de comandos que nos van a arreglar el asunto:

npm install

Instalará bastantes cosas… otro café?. Por último:

C:\ol3>c:\Python27\Scripts\easy_install.exe http://closure-linter.googlecode.com/files/closure_linter-latest.tar.gz
C:\ol3>c:\Python27\Scripts\easy_install.exe pystache 

Y… redoble de tambores:

C:\ol3>build.py checkdeps
Program ".\node_modules\.bin\cleancss.cmd" seems to be present.
Program "git.exe" seems to be present.
Program "gjslint.exe" seems to be present.
Program ".\node_modules\.bin\jsdoc.cmd" seems to be present.
Program ".\node_modules\.bin\jshint.cmd" seems to be present.
Program "python.exe" seems to be present.
Program ".\node_modules\.bin\phantomjs.cmd" seems to be present.
For certain targets all above programs need to be present.

Y ahora la parte más difícil…

… Compilar. Hay mucho fallos en la versión para Windows de los scripts, por lo que hay que bucear un montón por los foros de GitHub para encontrar la solución a problemas en los scripts (rutas largas, directorios que no existen, rutas linux, etc…) yo lo he conseguido, con los scripts siguientes:

Scripts ol3-fix

Descomprime en el raíz del repositorio de Openlayers, y ya puedes lanzar el build.

C:\ol3>build
2014-10-23 11:57:44,256 build/ol.css: .\node_modules\.bin\cleancss.cmd css/ol.css
2014-10-23 11:57:44,424 build/ol.js: node tasks/build.js config/ol.json build/ol.js
info ol Parsing dependencies
info ol Compiling 333 sources
2014-10-23 11:58:06,733 build/ol.js: uncompressed:   406514 bytes
2014-10-23 11:58:06,733 build/ol.js:   compressed:   121282 bytes, (saved 70.17%)
2014-10-23 11:58:06,734 build/ol-debug.js: node tasks/build.js config/ol-debug.json build/ol-debug.js
info ol Parsing dependencies
info ol No compile options found.  Concatenating 333 sources
2014-10-23 11:58:10,434 build/ol-debug.js: uncompressed:  3276814 bytes
2014-10-23 11:58:10,436 build/ol-debug.js:   compressed:   603658 bytes, (saved 81.58%)

Sólo busca en el directorio “build” por las versiones de “debug” y “compressed”.

Referencias:

Please follow and like us:

Como usar “shapelib.dll” para entornos x64 de Windows

Vaya follón… y vaya trabajo. Encontrar una “shapelib.dll” en x64 para un proyecto en Windows.

Si queréis usar esta magnifica librería (si no sabes que hace, casi seguro que no la necesitas) en vuestros proyectos en sistemas operativos de Windows os tocará recompilar el código ya que no hay un binario directamente publicado en ningún sitio (en linux si está… en Windows son mas vagos 😛 ).

Os voy a solucionar el problema, y os pasaré el binario compilado, para equipos con entornos x64 de Windows.

[Shapelib 1.2.10 para Win x64]

Un saludo.

Please follow and like us:

Purgar la cola de impresión en el servidor de impresión de Windows 2003

Una tarea que puede ocurrir cuando centralizas en un servidor Windows 2003 todas las impresoras de un entorno corporativo es recibir una llamada de un usuario del tipo:

La impresora X no imprime, y por más que doy… ná. He reiniciado el ordenador 20 veces, le he rezado 20 avemarias al santo patrón de los BOFH, pero nada. ¡¡¡Arreglalo!!!.

Con resignación nos tocará levantarnos del sitio y tras descartar que el problema sea de la impresora, y ver que a la impresora no le llega nada de lo enviado (ese sería otro problema de no reproducirse este escenario que te cuento, luego busca en otro sitio: Este no es tu error), miramos con resignación a nuestro querido servidor de impresión.

Entramos en “Panel de control > Impresoras y faxes” o bien, mediante la pantalla de “Administre su servidor > Servidor de impresión“, allí miramos la impresora si tiene una impresión indestructible (si damos a cancelar y se queda eternamente “Eliminando…”). Si no queremos reiniciar el servidor, y de paso,no  dejar a los usuarios sin 20 minutos de servidor de impresión donde seguramente haya 3 personas con documentos que no pueden esperar ser imprimidos. La forma más rápida de solucionarlo puede ser esta (unos 2 minutos):

  1. Inicio > Herramientas Administrativas > Servicios“.
  2. Localizar “Cola de impresión” y pararla. No cierres esta ventana.
  3. Entra en “\WINDOWS\system32\spool\PRINTERS“. Puede que la ruta cambien un poco según donde tengas instalado el sistema operativo.
  4. Borra los ficheros *.SHD y *.SPL. Si no hay, comprueba que es allí donde se almacena la cola de impresión en el apartado de “Impresoras y Faxes > Archivo > Propiedades del servidor de impresión > Opciones Avanzadas > Carpeta de cola de impresión”. Si apunta a otra ruta, mira allí. Si tampoco están allí, este manual no te servirá para nada, lo siento.
  5. Vuelve a arrancar el servicio de “Cola de impresión”.
  6. Revisa que ya no hay documentos “enganchados” en la impresora.
  7. “Trabajito bien hecho, cigarrito pal pecho”.
Please follow and like us:

Cuando Double.MaxValue, no es Double.MaxValue

Creo que es uno de los primeros post que voy a escribir por absoluta desesperación. Y el título lo dice todo.

Estamos desarrollando una aplicación en mi empresa, donde usamos un librería “open source” construida de manera intachable. Bien estructurada, con sus clases, con sus interfaces, y todo en NET 2.0.

Ahora viene lo bueno, dentro de la librería, hay un:

public const double Missing = Double.MaxValue;

Esta línea, parece encarnar el mal, y tiene el número #630 dentro del sistema de bugtracking del proyecto (a partir de ahora el número del mal). En ciertos equipos (si, en ciertos, sin diferenciación mayor que ser otro equipo), provoca que el programa se salga (mejor dicho: explote), sin generar ninguna excepción (lo que implica un error por debajo incluso del NET) y sin dejar ningún registro de error. En cambio, si ponemos:

Si hacemos una asignación quitando el alias:

public const double Missing = 1.7976931348623157E+308;

Tenemos otro crash silencioso al ejecutar el programa. Incluso rebajando el exponente, tenemos el mismo fallo. Pero esperen, que viene lo mejor:

public const double Missing = 999999999999999999;

Entonces, todo el felicidad, los pájaros cantan y las nubes se levantan… No falla.

¿¿¿Porqué???. De verdad que no lo entiendo, y los oscuros mundos del NET me tienen frito.

Pues no termino de entender el porque. Puedo conjeturar que viene por la representación que le da .NET, no es representable por algún nivel más bajo de la máquina, o algún redondeo que implique un overflow. Pero la verdad que no he encontrado nada por la red, y menos aun por los foros de la librería. Pueden ser muchos factores, y me estaré dejando muchos sin tener en cuenta, pero desde luego ahora mismo estoy falto de ideas.

Please follow and like us:

Abrir ficheros Excel 2003 en una ventana diferente cada uno

No hay cosa que más me fastidie que el maldito Excel, y su manía de abrir todos los ficheros excel en la misma ventana, lo que hace que cuando quieres comparar o copiar algo, termine siendo un follón y termines metiendo la pata.

Bueno pues para evitarlo, aquí mi truco para Windows XP y Office 2003:

  1. Ir a “Mi PC > Herrramientas > Opciones de carpeta > Tipos de archivo
  2. Buscar en la lista “XLS
  3. Pulsar “Opciones avanzadas
  4. Quitar el tick a “Explorar en la misma ventana
  5. En la lista de “Acciones“, pulsar “Abrir” y luego “Editar
  6. Te encontraras en el apartado “Aplicación utilizada para realizar la acción” con algo como:

    “C:\Archivos de programa\Microsoft Office\OFFICE11\EXCEL.EXE” /e

    Substituir por:

    “C:\Archivos de programa\Microsoft Office\OFFICE11\EXCEL.EXE” “%1”

  7. Eliminar cualquier cosa que ponga en “Mensaje DDE“.
  8. Aceptar > Aceptar > etc…

Sin tener que reiniciar, cada vez que abras un excel, se te abrirá en una ventana nueva.

Please follow and like us:

Migrar una empresa a Software Libre, ¿es posible?

Antes de nada, una aclaración: Este artículo, no es una guía con verdades fundamentales, solamente son unas breves notas sobre todo lo aprendido a lo largo de mi experiencia tratando de ir migrando al software libre los servicios que ofrecemos internamente y luego externamente en mi actual empresa (a lo largo de unos cinco años). Existen puntos que son cosas muy obvias para algunos, pero que para otros puede costar entender, por eso lo incluyo.

Si tuviera que dar una respuesta rápida, sería: tal vez. Depende de las decisiones que tomes. Y en este post voy a ir tratando de darte consejos que he aprendido a lo largo de los años, y espero que te ayuden a lograr tal empresa, que es muy titánica, te lo aseguro.

Logo linuxImaginemos un escenario demasiado recurrente. Un nuevo informático, entra en una empresa que no tiene nada que ver con la informática (pero muy dependiente de la tecnología), donde los usuarios suelen ser personas alejadas del mundo informático salvo por sus tareas diarias, y solo quieren que todo funcione.
En esta empresa se encuentra con el clásico panorama: Una red completa de Microsoft, donde todo tiene instalado un Windows XP, mal administrada, y encima abandonada a su suerte en cuanto al crecimiento de necesidades. Sin darse cuenta, este nuevo informático, se marca como objetivo mejorar dicha infraestructura pero intentando no hacer nunca mucho ruido, ofrecer nuevas funcionalidades a los usuarios y siempre sin gastar un duro, en licencias y posiblemente en hardware. Pero, ¿como se puede hacer esto?.

Si tuviera que destacar algo que he aprendido a fuego a lo largo de los años es que no se puede imponer, si no que hay que convencer al usuario, y si no es posible… se puede ocultar al usuario. Parece una frase muy extraña y malvada, digna de cualquier BOFH, pero me explicaré mas adelante para ver que es mucho más inofensiva de lo que parece. Ahora os voy a exponer mi resumen mental de todo lo que he vivido:

  • Windows/Mac no es un enemigo. No lo trates como tal. No tiene que ser erradicado de tu red, simplemente hay opciones mucho mejores y mucho más “baratas” a largo plazo. Ese es el mensaje que tienes que trasmitir, ya que si no, la gente pensará que haces las cosas porqué eres un miembro de alguna secta “informática”.
  • Nunca vendas el software libre como algo “gratuito”. Aunque parezca algo increíble, hay gente que se resiste a admitir que algo gratis puede tener la calidad de algo que se paga. Es asombroso la cantidad de gente que aun mantiene esa idea en sus cabezas. De hecho, no es cierto que el software libre sea gratis, ya que tendrás que aprender a montar correctamente las cosas, y eso cuesta dinero (es decir, tu tiempo).
  • La resistencia al cambio siempre es tu peor enemigo. Durante mis años de estudiante, un concepto que me parecía ridículo al estudiar “Ingeniería del Software” era la resistencia al cambio, ¿cómo alguien se puede negar a mejorar?… Eso pensaba, hasta que me encontré la resistencia al cambio frente a mis narices. Si algo funciona, nadie quiere cambiarlo. Si no funciona bien, pero con ciertos pasos medio funciona, la gente seguirá usando esos pasos. La palabra “cambio” no gusta, tendremos que evitarla.
  • Eres informático, no eres de fiar. Por norma general, tus motivos no son lo suficientemente válidos por si mismos. Una frase típica es: “Es que a los informáticos os gusta hacer las cosas difíciles y cambiar todo“. No trates de imponer tus razones, aunque sean correctas.
  • No trates de cambiar algo implantado. De hecho esta frase usa la palabra maldita “cambio”. Si tu empresa tiene un IIS con una web desde hace 3 años, y funciona, simplemente es bueno dejarlo. Esto tiene relación con el primer punto, ya que tienes que mantener todo y hacerlo convivir con tus nuevos sistemas o servicios.
  • Mezclar filosofías es una solución perfectamente válida. No es un sacrilegio usar Apache sobre Windows, o Filezilla como servidor de FTP sobre un viejo XP. Es parte de la transición.
  • Permite excepciones. No siempre todo se puede migrar, o no con la sencillez que todos quisiéramos. Por ejemplo la integración de Windows Mobile con Outlook o de iPhone con Mac. Quizás sea mejor dejarlo como está.
  • Tú eres tu mejor cliente. Todo puede comenzar instalando un pequeño servidor, para tus necesidades propias de un departamento informático, luego ir explorando soluciones, según las necesidades que se te presenten. No trates de buscar necesidades donde no las hay frente a tus usuarios finales, si no necesitan tal cosa/servicio (es decir, no te lo han pedido, ya que puede que simplemente no sepan que existe la posibilidad) no trates de crear la necesidad, no suele funcionar.
  • Aprovecha las oportunidades. Cuando se requiera algo nuevo (una nueva necesidad), es un buen momento de ofrecer la solución libre como alternativa a lo que todo el mundo esta pensando (Windows). Normalmente, si tratas el tema económico (más barato ya que no tiene licencias, menores requerimientos de máquina, …) suelen ser argumentos de peso.
  • Conoce las posibilidades que ofrece el software libre. Esto es muy importante. Cuando se te pida un servidor web, si no te piden uno en concreto, busca el que mejor se adapte a tus necesidades. No sólo existe Apache, ni Debian, ni MySQL. Lee y aprende las miles de posibilidades que podemos usar. Por ejemplo soluciones como eBox, OpenFiler, Mantis, Cacti, Subversion, GeoServer, Samba, Likewise, etc… son cosas que se pueden usar en casi cualquier empresa.
  • Implanta, en paralelo. Si vas a quitar un sistema antiguo, nunca desenchufes el anterior. Simplemente hazlo en paralelo mientras todo el mundo usa el anterior sistema.
  • Si puedes dejar al usuario final en la oscuridad, mejor. Ser totalmente transparente es una gran medida, trata de evitar por todos los medios que un usuario tenga que hacer algo para realizar un cambio. Si puede usar un proxy transparente, mucho mejor que tener que configurar en cada usuario un proxy.
  • Si necesitamos un cambio, busca un “grupo de valientes” que difunda la buena nueva. Por ejemplo, un ejemplo real en mi empresa, fue la transición de Outlook express a Thunderbird. No voy a contar las innumerables mejoras que tiene Thunderbird sobre Outlook (sobre todo al recuperarse de errores), pero un usuario final no entendería estos motivos. El método fue ir instalando el cliente de correo a un grupo de valientes convencidos, estos a su vez fueron portavoces del cambio, y poco a poco la gente fue más receptiva al cambio ya que “fulanito” dice que funciona muy bien (no un informático).

Como reflexión final, decir que, personalmente, soy un defensor de Software Libre, porque me ha demostrado que puedo confiar en él. Uno de mis primeros proyectos con software libre fue un proxy/balanceador de carga que lleva 5 años funcionando sin tocarse para casi nada, y en cambio, no creo que ninguna máquina Windows lleva 5 años instalada. Luego vino el cambio de Oracle a bases de datos como MySQL y PostgreSQL. Más tarde un servidor de ficheros montando con Samba… y sinceramente, en ningún momento me he arrepentido de ningún cambio hacia el software libre.

http://subversion.tigris.org/
Please follow and like us:

Buscar alternativas a programas de forma sencilla

No sé vosotros, pero yo he tenido que buscar muchas veces una alternativa gratuita (o no) a un software para sustituirle. El típico: “¿un programa gratuito que sea igual que…?” o el más complejo: “¿y para mi Mac/Linux donde encuentro un programa igual a este?“. Esto realmente, es un verdadero quebradero de cabeza para muchos de los que nos dedicamos a esto de la “infosmática”.

Pero en mi noches en vela, buscando un buen sustituto para Autocad, o para el Acrobat, he encontrado unas cuantas web que pueden ofrecer soluciones:

  • Alternative To” a mí me ha solucionado muchas de esas preguntas con un solo click. Solo en su buscador, escribimos la aplicación, y nos devolverá un listado de aplicaciones que pueden sustituir a la que has elegido. Pero lo mejor, es que puedes filtrar por sistema operativo y por tipo de licencia (gratuito, open source o de pago). Otro punto a favor, es que han incluido un sistema de “votos” donde la gente vota la mejor alternativa, para no perdernos en la larga lista que nos suele ofrecer. Por ejemplo, hace no mucho busqué alternativas a “Microsoft Visio”, y me encontró alguna que no conocía, y que ahora estoy testando.
  • CD Libre” es una recopilación hecha sin ánimo de lucro hecho por un profesor de un instituto de Valencia. Un crack. Aunque últimamente no amplia mucho su catálogo, hay que reconocer que hay un montón de aplicaciones ordenadas.
  • Alternativas Libres“. No está mal, pero tiene ciertas lagunas en programas claves. Es bastante sencillo de buscar ya que saca tablas en donde se ve que programa de pago tiene alternativas. Lo usé mucho un tiempo, cuando comencé a luchar con estos temas. Me han comentado que está algo parado.

Bueno, espero que os sea de ayuda.

Please follow and like us:

Mi iTunes da un error cuando hago X cosa. ¿Como se arregla?

iTunesLa dependencia de iTunes y iPod nunca me ha gustado, sobretodo porqué Apple no tiene un buen sistema de documentación ya que es tan oscuro en ciertos temas como Microsoft (que le da mil vueltas en documentación y solución de errores).
Si te pasan cosas como que el iTunes falla, tu iPod se empantana y no puedes usarlo correctamente, ya que es totalmente dependiente de dicho programa. En mi caso, cuando en el iPod señalaba la pestaña de “Peliculas”, el iTunes daba un error y se cerraba. ¿Como arreglarlo?, no busques en Google si quieres encontrar una solución ya que marearas en cientos de foros que terminan mandándote a la misma página de ayuda de Apple: Esta.

Básicamente es una web para solucionar cualquier error en la configuración de iTunes en Windows y Mac, de manera genérica, pero funciona, y casi siempre es la configuración de iTunes que se ha corrompido. Te recomiendo que sigas lo que pone en la web y no creo que tengas mucho problema. En mi caso con borrar unas carpetas de “Documents and Settings“, y todo volvió a funcionar (sin perder mis listas ni nada, solo la configuración de iTunes).

Please follow and like us:

Como habilitar el escritorio remoto en una máquina de tu dominio

Hoy mismo he tenido que conectar con mi empresa (via VPN) para mirar unos fallos en un programa, y me he visto en la tesitura de cualquiera que quiere acceder por escritorio remoto y nunca lo ha usado con cierta máquina: ¡A que no está activo!.

Ciertamente, no estaba activo. ¿Y como entro yo en mi máquina ahora?.

Partamos de unas premisas, de las que yo he partido para conseguirlo:

  • Estoy en una red con un Active Directory
  • Soy administrador de dominio
  • Al menos una maquina tiene acceso al escritorio remoto. Y claro, que tenga acceso a nuestro ordenador.
  • No hay un servidor Terminal Service funcionando (ya que seguramente no tendrías este problema).

Tras esto, nos conectamos al escritorio remoto a la máquina, y lanzamos “regedit” desde “inicio>ejecutar“, en el pulsamos:

Acceder a un registro remoto desde "Regedit"

Acceder a un registro remoto desde "Regedit"

Tras esto, buscamos la ruta:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server

y la clave “fDenyTSConnections” la cambiamos por “0“.

Ahora podemos tener otro problema, ya que podemos entrar por escritorio remoto, pero (y es un gran pero) cuando nos logeamos en nuestra máquina con nuestro usuario, nos dice “Las directivas locales de este sistema no le permiten iniciar una sesión interactiva“. Esto ocurre porque nuestro usuario no está dentro del grupo de “Usuarios de escritorio remoto“.

Bien, pues abrimos desde “Inicio>Herramientas Administrativas” la consola “Administración de equipos” y pulsamos aquí:

Acceso a una administración de equipos remota

Acceso a una administración de equipos remota

Ahora conectamos a la maquina, y entramos en “Usuarios locales y grupos” y luego en grupos. Buscamos el grupo “Usuarios de escritorio remoto“, y luego en “Propiedades>Agregar” metemos a nuestro usuario.

“Et voilà”…

Please follow and like us:

iTunes descarga lento los podcast, ¿por qué?

Llevo unos días maldiciendo cada vez que me bajo un podcast a través de iTunes, y pensaba que era por usarlo desde Windows, donde francamente va de pena en general, pero tras bucear un poco por la web, me doy cuenta que hasta los usuario de iTunes de Mac se están quejando del mismo problema con las descargas de podcast, que inician muy rápidas para luego ir bajando en velocidad hasta unos miserables 20-25 kbs.

descargabliptv¿Cuál es el problema?. Para averiguarlo use Wireshark para ver realmente de donde se bajaba un podcast cuando lo pedía atraves de iTunes (sinceramente no sabía muy bien de donde se bajaban los podcast cuando usas iTunes). Curiosamente, lo suelen hacer a un hosting externo a iTunes donde se almacena el mp3, en muchos casos a blip.tv ya que es un hosting de ficheros muy extendido (y gratuito).
Tras esta prueba me baje directamente un podcast desde blip.tv (Kafelog, un gran podcast de referencia) y vi que tras unos 3 minutos a buena velocidad, bajaba hasta los 25 kbs, como podéis ver en la imagen que os adjunto. Luego baje un podcast extranjero con server distinto y vi que iba a una velocidad aceptable.

Ese es el problema, blip.tv, que debe tener problemas con su ancho de banda. ¿Puede significar que blip.tv este en problemas?, esperemos que no (no he encontrado ninguna información al respecto), ya que ha dado un gran servicio a la comunidad podcastera desde hace mucho tiempo y sería una pena su desaparición.

Please follow and like us: