Archivo por meses: julio 2017

Feature Switch o como acabar de golpe con los merge monstruosos y errores críticos

Probablemente cuando estudiaste y te enseñaron las virtudes de los sistemas de control de versiones te explicaron como usar branches para separar las nuevas funcionalidades del resto del programa para no tener cosas a medias en el trunk.

A la hora de la verdad esa metodología sólo funciona con pequeños proyectos y al entrar en el mercado laboral chocamos con la realidad que es que la mayoría de proyectos de software son enormes y hay que dedicar muchísimo tiempo a hacer merge de las nuevas funcionalidades, y si a eso le sumas las metodologías Agile en las que el tiempo es limitado tenemos la tormenta perfecta del desarrollo de software.

Pero por suerte alguien pensó en la solución y inventó los Feature Switch que como su nombre indica vienen a ser interruptores lógicos con los que podemos activar y desactivar funcionalidades a nuestro gusto de manera que podemos trabajar sin crear branches adicionales, de forma que nos ahorramos merges y además también sirven para volver a desactivar una funcionalidad rápidamente en caso que detectemos un error crítico en producción.

La forma de activar y desactivar los Feature Switch está en manos de la creatividad y necesidades de cada proyecto. En algunas aplicaciones será un archivo de texto indicando el estado de cada funcionalidad, en otros según la fecha o región donde se ejecuta la aplicación, otras veces será mediante un pago, etc. Tiene un potencial muy grande de usos y utilidades.

¿Cómo implementar un Feature Switch?

En Google encontrarás librerías y ejemplos de Feature Switch para aburrir y por eso no voy a entrar en detalle. Sólo comentar mi preferida para C# que es la librería FeatureToggle de Jason Roberts y que el me gusta por lo siguiente:

using System;
using FeatureToggle;

namespace ConsoleApp1
{

public class Printing : SimpleFeatureToggle { }
public class Saving : EnabledOnOrAfterDateFeatureToggle { }
public class Tweeting : EnabledOnOrAfterAssemblyVersionWhereToggleIsDefinedToggle { }

class Program
{
static void Main(string[] args)
{
var p = new Printing();
var s = new Saving();
var t = new Tweeting();

Console.WriteLine($"Printing is {(p.FeatureEnabled ? "on" : "off")}");
Console.WriteLine($"Saving is {(s.FeatureEnabled ? "on" : "off")}");
Console.WriteLine($"Tweeting is {(t.FeatureEnabled ? "on" : "off")}");

Console.ReadLine();
}
}
}

(Copiado de dontcodetired.com/blog/post/FeatureToggle-v4-RC1-with-NET-Core-Support)

La sencillez y de elegancia de uso de la librería de Jason Roberts es sublime. Con unas pocas líneas tenemos configurado todos los switches y los nombre son muy claros de manera que no hace falta estudiar el código de las clases de este Feature Switch para darse cuenta que por ejemplo EnabledOnOrAfterDateFeatureToggle activará la funcionalidad llegada una fecha indicada. Además es una librería actualizada muy a menudo. Por esas razones la recomiendo.

El Feature Switch es un concepto simple, fácil de implementar, y sirve tanto para proyectos grandes como para pequeños. Usadlo siempre que podáis porque os ahorrará muchos dolores de cabeza.

Hacking Físico: Cómo extraer la contraseña del ONT ZTE F601 de Jazztel y de Orange

Las conexiones a Internet por Fibra Óptica son cada vez más frecuentes. Con el ADSL se podía cambiar de router fácilmente porque los operadores daban el usuario y contraseña de la configuración de PPPoE, pero en las conexiones de fibra óptica han dado un paso atrás y no proporcionan la contraseña para sustituir el ONT.

Veremos como extraer la contraseña del ONT ZTE F601 de Jazztel y de Orange. Es posible que este tutorial sirva para otros modelos de ONT de ZTE y otras marcas que tienen diseños parecidos.

Cultura General

La mayoría de electrodomésticos se programan a través de puertos de serie. Algunos de ellos están accesibles como por ejemplo en algunos modelos de televisores, reproductores Bluray, etc. pero en otros hay que abrir el aparato para verlo.

El puerto de serie da control total sobre el dispositivo. Cada aparato es un mundo, en algunos casos nos permitirá subir un firmware nuevo y en otros también interactuar a través de consola. En este caso el ONT ejecuta una distribución de Linux ligera y el puerto de serie nos permite entrar en la consola como root y ver parámetros que no se muestran en la interfaz web del dispositivo como por ejemplo la contraseña que usa el ONT para conectar a la fibra óptica.

Manos a la obra

Herramientas necesarias

  • Puerto de Serie tipo JY-MCU USB o similar
  • Cables puente terminados en punta
  • Destornillador de estrella
  • Software: Putty
  • Opcional: Herramientas de plástico para abrir aparatos sin dejar marca (Busca en Google “cell phone opening tools”)

Conecta el puerto de Serie USB al ordenador y configura Putty con los parámetros que se muestran en la imagen:

Saca el tornillo de la parte inferior del ONT para retirar el soporte que mantiene el dispositivo en vertical. Luego haz palanca con el destornillador o con las herramientas de plástico en las juntas de los lados del ONT para desenganchar los soportes que hacen presión para mantener cerrado el ONT. Prueba primero por el lado donde están los conectores del ONT porque es el que está menos sujeto. La carcasa quedará suelta y tendremos acceso a la placa base.

En la siguiente imagen tienes la posición del puerto de serie interno del ONT ZTE F601. Conecta los cables con el dispositivo apagado como indico en el esquema.

Enciende el ONT. En Putty verás el log de arranque. Espera un par de minutos a que termine de arrancar.

Busca la línea que se muestra en la imagen, donde aparece el Número de Serie del ONT y la contraseña de la conexión de fibra óptica.

Con esto es suficiente pero si quieres interactuar en la consola (aunque recomiendo no hacerlo porque podrías romper el aparato) ves a Putty, aprieta enter y entra con el usuario “root” y contraseña “root”.