God Object

God Object

god object

El God Object un objeto muy grande, que conoce demasiado o tiene demasiadas responsabilidades distintas.

En este tipo de objetos , toda la funcionalidad del programa esta codificada él.

 

Usamos esta técnica ocasionalmente para entornos de programación ajustados, donde el aumento de rendimiento ligero y la centralización es más importante que el mantenimiento y la elegancia de programación.

 

Crear un God Object se le considera una mala práctica de programación. Es un ejemplo de un antipatrón de diseño.  Se le conoce también como el anti-pattern. Contradice y viola todas las reglas de diseño y código limpio.

El principal problema de este tipo de objecto es que nuestro código se volverá débil e inestable. Cualquier cambio en él, podrían suponer la aparición de errores o comportamientos inesperados. Además, se haría muy complejo su mantenimiento a largo plazo.

 

La solución para que podamos deshacernos de este tipo de objecto es  que refactorizar  el God Object en varios objectos lo más independientes posibles unos de otros.

Botón Encendido/Apagado para Raspberry Pi 2

Esquema de Conexión del Botón

 

Esquema Conexión Botón Encendido Raspberry Pi 2
Esquema Conexión Botón Encendido Raspberry Pi 2

 

Esquema GPIO Raspberry Pi 2
Esquema GPIO Raspberry Pi 2

Conectar en Pines 5 y 6 que corresponde a GPIO3 y Ground.

 

Configuración

  • Descargamos el fichero desde el Github de su creador.
  • Comprobamos desde la Raspberry que funciona, ejecutando el script de la siguiente manera:
sudo python pishutdown.py
  • Si presionas el botón menos de 3 segundos, se reiniciara
  • Si lo presionas más de 3 segundos, se apagará.

 

En este punto, el script solamente funcionaría si cada vez que iniciamos la RPI ejecutáramos este script.

 

Para que el script se auto-ejecute cada vez que iniciamos la RPI,  lo añadiremos al Cron (gestor de tareas de Linux) :

crontab -e
  • Si nos sale para elegir el editor con el cual trabajar, seleccionamos el Nano.
  • Para ejecutar al inicio del sistema,  añadimos al final del fichero lo siguiente (**Debe modificarse la ruta del script si se ha copiado en otra carpeta distinta de la RPI):
@reboot sudo python /home/pi/pishutdown.py
  • Para salir del editor Nano usar la combinación Ctrl +X y guardar cambios.

 

Ahora cada vez que inicie la RPI, el Cron cargará el script y podremos usarlo.

 

 

https://gilyes.com/pi-shutdown-button/

Raspberry Pi 2: botón de encendido, apagado y reset.

 

 

Kata Codewars, Devolver el cuadrado de cada dígito de un número

La Kata consiste en devolver el cuadrado de cada dígito de un número.

Por ejemplo, si le introducimos 9119 a la función, debería devolver 811181, porque:

9² –> 81

1² –> 1

Resultado ==> 81 1 1 81

**Nota: La función admite como parámetro enteros y devuelve enteros

 

Mi propuesta:

function squareDigits(num){
  let result = "";
  const lengthNumber = Math.ceil(Math.log10(num + 1));

  for(let i=0; i<lengthNumber; i++){
    squareNumber = Math.pow(num.toString()[i],2);
    result += squareNumber;
  }
  
  return parseInt(result);
}

 

Solución más votada:

function squareDigits(num){
  return Number(('' + num).split('').map(function (val) { return val * val;}).join(''));
}

 

https://www.codewars.com/kata/546e2562b03326a88e000020/train/javascript