JASoft.org

El blog de José Manuel Alarcón Aguín. Programación web y mucho más...

MENÚ - JASoft: JM Alarcón

Cómo actualizar un fork de un proyecto en GitHub

En mi anterior post explicaba cómo se podía contribuir en proyectos Open Source usando la interfaz de usuario de GitHub. Lo cierto es que es muy sencillo crear un "fork" de un repositorio y trabajar en él hasta el momento en el que queremos aportar una mejora o corregir un bug haciendo un pull request en el repositorio original, como explicaba en ese anterior artículo (léelo antes de continuar si estás familiarizado con el proceso de forking de repositorios en GitHub). Sin embargo hay una situación muy común posterior al "fork" que puede resultar complicada para los más novatos y de la cual apenas se habla: si tengo un repo clonado mediante un "fork" y pasan las semanas o los meses y quiero sincronizarlo con el proyecto original para tener lo último ¿cómo puedo hacer?. En realidad existen diversas formas de conseguirlo usando cualquier cliente de Git y jugando con los "remotes" del repo, pero hoy quiero centrarme solamente en el método más sencillo y directo: usando la interfaz de usua... [Más]

Github: Cómo contribuir en un proyecto Open Source

Github es el centro neurálgico del mundo Open Source. En este enorme almacén de código se encuentran los principales proyectos de código abierto del mundo y todos, desde el programador aficionado hasta las grandes empresas, lo usan para publicar sus proyectos. Pero cuando trabajas en un proyecto Open Source no siempre partes de cero ni es un proyecto propio. Lo más habitual, de hecho, es que colabores en un proyecto de alguien, aportando cambios para corregir errores, añadir características, etc... ¿Cuál es la mejor manera para iniciar esa colaboración? ¿es necesario que te pongas en contacto con el programador principal y que te añada como colaborador? ¿qué cosas debes tener en cuenta? Vamos a verlo... [Más]

Nueva versión mejorada de FileEncodingConverter (v1.5.0)

Acabo de liberar en GitHub una nueva versión de la aplicación FileEncodingConverter. Concretamente la 1.5.0. He añadido soporte para codificación de destino UTF-8 sin BOM.Tienes el código fuente y el ejecutable en GitHub.A continuación, como resumen, reproduzco el README.md del repositorio de Github. FileEncodingConverter Convierte todos los archivos de una carpeta y sus subcarpetas a una codificación determinada. Introducción Hace unos años creé una aplicación, pequeña pero muy útil, llamada FileEncoding Converter, cuyo código tienes en este repositorio. Su objetivo es sencillo: le pasas una carpeta, y opcionalmente una codificación y un filtro de archivos y convierte todos los archivos a la codificación especificada. Se trata de una aplicación de consola (línea de comandos) que toma los siguientes parámetros: 1.- La ruta base que contiene nuestros archivos a procesar. Acepta rutas relativas a la carpeta actual y rutas absolutas. 2.- El tipo de codificación a... [Más]

La solución al problema de las claves seguras: NullPass+

En la actualidad utilizamos tantos servicios on-line diferentes y heterogéneos que es muy complicado gestionar todas las claves que debemos manejar. Yo mismo manejo varios centenares de claves diferentes, lo cual por si mismo es todo un reto. Pero es que además, si realmente quieres que sean seguras, deberías usar una clave compleja, larga y diferente para cada uno de los servicios que utilices. La realidad es que, al final, la mayor parte de los usuarios hacen justo lo que jamás deberían hacer: utilizar una misma clave, sencilla y fácil de recordar, para todos los servicios. Problema resuelto para ellos, pero luego pasan "cosas extrañas". Algunas opciones para guardar tus claves de manera segura Lo de las claves es algo que ha mejorado bastante en los últimos años gracias a la posibilidad de loguearse en muchos sitios usando tu cuenta en algún servicio popular como GMail, Facebook o Twitter. Lo bueno de eso es qu... [Más]

Módulo para notificaciones web desde el navegador con HTML5

Estos días he estado creando un módulo JavaScript para facilitar el uso de las notificaciones del navegador usando la API estándar "Web Notifications" del World Wide Web Consortium (W3C). La idea es poder mostrar notificaciones nativas al usuario (de las que aparecen al lado del reloj en Windows, por ejemplo) pero desde aplicaciones web. Por ejemplo, cuando llega un nuevo correo (como hace GMail), o cualquier otra circunstancia que necesitemos notificar en segundo plano al usuario, pero desde el navegador. Actualmente el único navegador que NO las soporta es Internet Explorer / Edge, y no parece que tengan intención de soportarlas tampoco, pero en todos los demás funcionarán sin problemas. En su día escribí un artículo explicando con detalle cómo utilizarlas "a pelo", sin usar ninguna biblioteca intermedia. Esto es una especie de continuación. Lo que he hecho es crear una biblioteca que, en mi opini&... [Más]

Controlar la vista previa de Facebook (un par de trucos y una extensión)

Una quinta parte de la población mundial está en Facebook hoy en día. Según datos de la propia empresa, a finales de este año 2014 tienen: 1.350 millones de usuarios activos mensuales en la web (es decir, que entran al menos una vez al mes a la aplicación de esta red social). 1.120 millones de usuarios activos mensuales a través del móvil 864 millones de usuarios activos diarios en promedio. Las cifras son apabullantes y dan una idea de la importancia que tiene esta red social, más allá de la opinión que nos merezca y de si queremos o no estar en ella. Por eso es muy importante que nuestras páginas y nuestras aplicaciones web sean fácilmente "compartibles" en esta red social. Es decir, cuando alguien desee compartir una de nuestras páginas en Facebook que estemos seguros de que se va a ver lo que nosotros queremos, y no lo que determine automáticamente un algoritmo. Etique... [Más]

Utilidad: Copiar un archivo a todas las subcarpetas de cierto nombre

Ayer necesité hacer precisamente eso: tenía varias carpetas de primer nivel con una estructura de subcarpetas muy grande y llena de niveles. Dentro de éstas había una serie de carpetas -todas con el mismo nombre- en las que debía copiar un determinado archivo o, si existía, sobrescribirlo con el nuevo. Significaba revisar miles de carpetas en intrincados niveles, localizar las que se llamaban de determinada forma, y copiar dentro de éstas el archivo. Hacer algo así a mano para cada caso me hubiera llevado horas, por lo que estuve buscando la manera de automatizarlo. Primero lo intenté usando una simple línea de comandos y la instrucción FOR y también la instrucción FORFILES. Estuve bastante tiempo intentándolo, pero no fui capaz de conseguirlo :-S Así que al final invertí un rato en crear un programa de línea de comandos en C# que hiciera exactamente lo que yo necesitaba, y debería haber empezado por ahí, pues me hubiera ahorrado un precioso tiempo. El programa se llama "Copiar... [Más]

¿Usas Instapaper y Windows 8? Pues tengo una app gratis para ti

Instapaper es un sensacional servicio para los que leemos mucho en Internet. Es muy simple pero extremadamente útil: cuando estás ojeando un post en un blog, un artículo, un vídeo o cualquier otra cosa en Internet y no tienes tiempo de pararte a leerlo a fondo pulsas el botón”Read later” y automáticamente te guarda una referencia en tu cuenta de Instapaper para que lo leas con calma más tarde, cuando tengas tiempo. Yo generalmente acumulo de esta forma decenas de artículos interesantes que luego leo el fin de semana desde mi tablet. Para conseguir su “magia” Instapaper utiliza un scriptlet -es decir, un fragmento de JavaScript- que se coloca en tu barra de favoritos y cuando lo pulsas, envía la URL a la lista de leer más tarde (debes estar autenticado antes, claro). En esta figura puedes ver el scriptlet (lo he renombrado) en mi navegador de escritorio: También existen extensiones para Firefox y Chrome que permiten hacer lo mismo. Navegador en Windows 8 Con los años esta aplic... [Más]

YouTube and Vimeo advanced viewer extensions for BlogEngine.NET

I was using the YouTubePlayer and VimeoPlayer extensions that come with BlogEngine.NET out of the box. They do a great work showing videos in desktop browsers, but I found some limitations that I wanted to overcome. So I decided to write my own extensions to substitute this two. The YoutubeViewer and VimeoViewer extensions that I've written offer the following features: Automatically embed a viewer for YouTube or Vimeo videos with a simple syntax. The basic syntax is and where XXXX is the video ID that you can get from the URL (squared in red in the images): The viewer adapt automatically to the capabilities of the browser used to browse your site. That means that they will be displayed correctly and full-featured even in mobile devices like iPhone, Android or iPad. From the Extensions tab of BlogEngine you can set the default values for the viewer's Width, Height, Border (Yes or No), Include related videos (YouTube only), Allow Full Screen (YouTube only), Title text ... [Más]