martes, 18 de diciembre de 2018

Linux / Docker / Kubernetes / GitLab

Linux Ubuntu (18.04.1 LTS)

- Fuente: http://processors.wiki.ti.com/index.php/How_to_Build_a_Ubuntu_Linux_host_under_VMware
- Bajar Ubuntu, versión server de: https://www.ubuntu.com/download/server
- Durante la instalación ofrece una cantidad de paquetes para instalar, dentro de ellos estaban Docker, Kubernetes, PosgreSQL. Los marcamos y se instalaron a continuación del Linux.

Para probar que la instalación de Docker es correcta:
- $ sudo docker run hello-world

Para configurar IP address
Fuente: https://websiteforstudents.com/configure-static-ip-addresses-on-ubuntu-18-04-beta/
IMPORTANTE: 
Editar el archivo de configuración:
- sudo nano /etc/netplan/50-cloud-init.yaml
  • IP: 172.10.10.247/24
  • Gateway: 172.10.10.1 (router Linksys)
  • Nameservers (DNS): 
    • 172.10.10.1
    • 8.8.8.8
Aplicar los cambios realizados:
- sudo netplan apply
Verificar la conexión:
- ifconfig
- ping –c3 8.8.8.8
- ping –c3 www.viainfo.com.ar

Kubernetes (microk8s)

- sudo snap install microk8s –classic

Node.Js

- sudo apt update
- sudo apt install nodejs npm
- nodejs –version


martes, 11 de diciembre de 2018

Web API Rest con JWT en C# (ASP.Net)

Ver estos artículos publicados sobre el tema.

Los artículos de Santi Macias tienen como premisas:

  • JWT es útil para autenticar y autorizar usuarios para consumir servicios REST API.
  • El cliente tiene la responsabilidad de almacenar el JWT en algún lugar seguro, para utilizarlo en las llamadas al API.
  • Siempre debemos publicar nustro API mediante un certificado SSL (HTTPS) para encriptar el contenido entre el servidor y el cliente.
Guía de referencia JWT: https://self-issued.info/docs/draft-ietf-oauth-json-web-token.html
Proyecto completo en GitHub: https://github.com/santimacnet/WebAPI-Segura-JWT


Algunos otros ejemplos de código:


Para implementar JWT desde Angular

Exception Handling







miércoles, 26 de septiembre de 2018

Linux básico / SSH / PuTTY



Habilitar Key-Based Authentication en SSH Server
https://docs.bitnami.com/virtual-machine/faq/get-started/enable-ssh-keys/
  • Generar claves publica y privada
    • ssh-keygen
  • Guardar una copia de la clave privada en un lugar seguro.
  • Transferir contenido de la clave pública "id_rsa.pub" --> "authorized_keys"
    • cd /home/bitnami/.ssh
    • cat id_rsa.pub >> /home/bitnami/.ssh/authorized_keys
  • Editar "/etc/ssh/sshd_config"
    • sudo edit /etc/ssh/sshd_config
      • RSAAuthentication yes
      • PubkeyAuthentication yes
      • y también desabilitar ingreso x contraseña:
      • ChallengeResponseAuthentication no
      • PermitRootLogin no
      • PasswordAuthentication no
      • UsePAM no
  • Restart SSH
    • sudo /etc/init.d/ssh force-reload

Configurar Client Access desde Windows (PuTTY)
Se puede ver dentro de las instrucciones de cómo acceder a GitLab vía SSH.
  1. Convertir la clave privada (SSH) de Linux en formato .PEM a formato .PPK utilizando "puttygen.exe"
  2. Configurar PuTTY
    • Connection / SSH / Auth / Private Key File for Authentication
    • Connection / Data / Auto Login Name
    • Guardar configuración: Session / <Save>

Cómo copiar archivos de Linux a Windows
Luego de instalar PuTTY queda configurado el PATH para poder utilizar PSCP por línea de comando.
Ejemplo:
- pscp -pw xxxxxx bitnami@172.10.10.246:/home/bitnami/.ssh/id_rsa.pub c:/temp
Ver manual.

Cómo montar un CD/DVD
cd /
mkdir cdrom
mount-cd1996 /dev/cd0 /cdrom

Luego, por ejemplo, para descomprimir el contenido de VMware Tools del CD ROM:
cd
mkdir tmp
cd tmp
tar zxpf /cdrom/vmware-freebsd-tools.tar.gz
umount /cdrom




miércoles, 19 de septiembre de 2018

Sobre blockchain, smart contracts, ethereum y otros temas


ICO  - Crowdsale Contracts


Casos de uso
  • Real State: cualquiera compra tokens y se realiza un emprendimiento inmobiliario.
  • Bitcoin: terminará siendo el Swift de los bancos.
  • Estonia: sociedad digital. X-Road, KSI, Guardtime, digital identities, e-residency, Crypto token “estcoin”.
    • The X-Road is the open-source backbone upon which the country’s entire digital infrastructure runs. First put into practice in 2001 (it’s been upgraded and altered many times since), X-Road is rooted in a blockchain called K.S.I., which was developed by Guardtime, one of the biggest blockchain companies in the world. K.S.I. is incidentally used by both NATO and the US Department of Defense.
    • “This is all really about the mindset. It’s about the culture. It’s about the human relations – it’s about what it enables us to do.”
    • https://www.investinblockchain.com/estonia-blockchain-model/
    • http://www.tynmagazine.com/estonia-el-pais-100-digital/

Varios
  • ¿Cómo puedo auditar que un contrato realmente haga lo que dice que hace?
  • Hyperledger
    • BURRROW: Permissionable Smart contract machine (EVM)
    • Hyperledger Burrow is one of the Hyperledger projects hosted by The Linux Foundation. Hyperledger Burrow was originally contributed by Monax and co-sponsored by Intel. Hyperledger Burrow provides a modular blockchain client with a permissioned smart contract interpreter partially developed to the specification of the Ethereum Virtual Machine (EVM).
    • FABRIC: Permissioned with channel support
    • INDY: Descentralized identity
    • IROHA: Mobile application focus
    • SAWTOOTH: Permissioned & permissionless support; EVM transaction family
    • Hyperledger Sawtooth is a modular platform for building, deploying, and running distributed ledgers. Distributed ledgers provide a digital record (such as asset ownership) that is maintained without a central authority or implementation.
    • CALIPER: Blockchain framework benchmark platform
    • CELLO: As-a-service deployment
    • COMPOSER: Model and build blockchain networks
    • EXPLORER: View and explore data on the blockchain
    • QUILT: Ledger interoperability

Para estar informados:

Otros

Conceptos


Solidity – Mapping
- https://ethereum.stackexchange.com/questions/9893/how-does-mapping-in-solidity-work
- https://coursetro.com/posts/code/102/Solidity-Mappings-&-Structs-Tutorial


Federico Ast
- https://www.fastcompany.com/3066498/this-blockchain-thing-is-really-happening-time-to-learn-what-it-is-2016-in-review


Los avances de los próximos años según IBM
  • Crypto-anchors y blockchain unidos contra el fraude
    • Seguridad alimentaria.
    • Autenticidad de componentes fabricados.
    • Productos genéticamente modificados.
    • Detección de objetos falsificados.
    • Procedencia de artículos de lujo.
  • Criptografía reticular
    • Criptografía de lattice (reticulado). Ninguna computadora puede descifrarlo, ni siquiera las futuras computadoras cuánticas.
  • Microscopios de IA autónomos, conectados a la nube para monitorear en tiempo real la salud del agua.
  • IA imparcial.
    • Sistemas de IA basados en datos justos, interpretables y libres de prejuicios raciales, de género o ideológicos.
  • Computación Cuántica.


miércoles, 8 de agosto de 2018

Gitlab

La forma más fácil de instalar un servidor de GitLab es utilizando una máquina virtual ya configurada que se puede obtener del sitio de Bitnami.
Otras opciones de instalación incluyen la instalación del Omnibus package en sus diversas opciones (Ubuntu, Debian, etc.) así como otras opciones de instalación como Docker, Kubernets, Google Cloud Platform, Amazon Web Services.

Una vez instalada la máquina virtual de Bitnami, hay que leer la siguiente información básica:
- How To Configure A Static IP Address

cd /etc/systemd/network
sudo cp 99-dhcp.network viainfo.network
sudo mv 99-dhcp.network 99-dhcp.network-bak
sudo chmod 777 viainfo.network
vi viainfo.network

El archivo "viainfo.network" tiene que quedar así:

  [Match]
  Name=en*

  [Network]
  Address=172.10.10.104
  Gateway=172.10.10.1
  DNS=172.10.10.243


Para reiniciar el sistema:
- sudo reboot

Habilitar Key-Based Authentication en SSH Server
Ver Linux básico.

Habilitar usuarios:
- Crear acceso SSH para cada nuevo usuario (desde Git Bash)
  • Crear SSH Key
    • ssh-keygen -t rsa -b 4096 -C "pablon@viainfo.com.ar"
      • Dejar nombre de archivo x default
      • NO informar palabra clave
  • Agregar la nueva clave privada al SSH Agent
    • eval $(ssh-agent -s)
    • ssh-add ~/.ssh/id_rsa
    • ssh-add -l (para ver las claves existentes)
  • Agregar la nueva clave publica a la cuenta de GitHub
    • clip < ~/.ssh/id_rsa.pub  (copia la clave "pública" al clipboard)
    • Ingresar a User Settings / SSH Keys y agregar la nueva clave.
Para verificar la conexión al servidor:
  • ssh -vT git@172.10.10.246
Configurar el cliente:



- Finalmente habilitar el acceso de cada usuario a un nuevo repositorio.




Documentación:
- How to enable SSH Server
- How To Connect To The Server Through SSH
- How To Obtain Root Privileges
- How To Upload Files To The Server With SFTP
- How To Configure Your Application To Use A Third-Party SMTP Service For Outgoing Email
- How To Configure Outbound Email Settings
- How To Create A Full Backup Of GitLab


SQL Server Performance Tunning

Son muchos los temas a tener en cuenta. Aquí mencionamos sólo algunos de ellos a modo de ayuda memoria.

Uso de Dispositivos Físicos, Esperas y Eficiencia de Indices en SQL Server
Varios temas a tener en cuanta.

Crear índices sugeridos por SQL Server
La tabla Sys.dm_db_missing_index_groups devuelve información sobre qué indices faltan.

Descripción y resolver problemas de bloqueo de SQL Server

Monitor de Actividad de SQL Server



Entity Framework DbContext




Managing DbContext the right way with Entity Framework 6: an in-depth guide:  http://mehdi.me/ambient-dbcontext-in-ef6/
-          DbContextScope: a simple, correct and flexible way to manage DbContext instances



Entity Framework Working with Transactions (EF6 Onwards) : https://msdn.microsoft.com/en-gb/data/dn456843.aspx#transactionScope



Para leer:



CONCLUSIONES:

Lo que no funciona con el DbContextScope es el refresh de Ids (Identities).
Dentro de una transacción, al grabar una tabla con un campo identity, como no va contra el motor sino hasta hacer el .SaveChanges(), no tenemos información de los IDs que se deben transferir a los registros de las tablas relacionadas (hijos).
Tampoco funciona la ejecución de SP dentro de transacciones, porque el DbContextScope sólo difiere el SaveChanges() y hace uno todo junto al final, pero la ejecución de un SP no pasa por el SaveChanges().
Para transacciones lo mejor es utilizar TransactionScope().

lunes, 26 de febrero de 2018

SOAP

Opciones para probar servicios (API) SOAP.

Instalar un cliente SOAP:


El Postman tiene un addon para Google Chrome que funciona muy bien.




miércoles, 21 de febrero de 2018

Smart Contracts



Smart Contracts: The Blockchain Technology That Will Replace Lawyers

Algunas aplicaciones de Contratos Inteligentes son: Gobierno: voto electrónico, registros de propiedad inmueble, automotriz, etc. Supply Chain: proporciona una versión digital segura y accesible para todas las partes de la cadena y automatiza las tareas y el pago. Automibile: en un mundo totalmente automatizado, los algoritmos podrían definir quien tuvo la culpa en un siniestro y la compañía de seguros podría cobrar tarifas de manera diferente en función de dónde y bajo qué condiciones los clientes estén operando sus vehículos. Real State: los contratos inteligentes permiten eliminar el intermediario en operaciones de alquiler y compra-venta de inmuebles. Healthcare (Salud): Los registros de salud personales podrían codificarse y almacenarse en la cadena de bloques con una clave privada que otorgaría acceso solo a individuos específicos. La misma estrategia podría utilizarse para garantizar que la investigación se realice a través de las leyes HIPAA (de forma segura y confidencial). Los registros de cirugías podrían almacenarse en una cadena de bloques y enviarse automáticamente a los proveedores de seguros. Los registros podrían usarse para la administración general de la atención médica, como supervisión de medicamentos, cumplimiento de normas, resultados de pruebas y administración de suministros de atención médica. Ventajas: - Disminuye la exposición a pérdidas y fraudes. - Proporciona una versión digital segura y accesible para todas las partes de la cadena y automatiza las tareas y el pago. - Autonomía: no se necesita intermediarios ni abogados, disminuyendo también el riesgo de errores, fraudes o cambios involuntarios en los contratos. - Confiabilidad: los documentos están encriptados y compartidos por una capa de acceso seguro. No hay forma de que puedan ser alterados o se pierdan - Backup: en el blockchain los documentos están duplicados muchas veces. - Seguridad: la criptografía, el cifrado de sitios web, mantiene sus documentos seguros. No hay piratería. De hecho, se necesitaría un hacker anormalmente inteligente para descifrar el código e infiltrarse. - Velocidad: normalmente toma màs tiempo y requiere generar mucha documentación, mientras que los contratos inteligentes usan código de software para automatizar tareas, reduciendo y costos en una variedad de procesos comerciales. - Exactitud: los contratos automatizados no solo son más rápidos y económicos, sino que también evitan los errores que se producen llenar manualmente montones de formularios.

Smart Contracts: Industry Examples and Use Cases for Business

Gracias a la naturaleza descentralizada de la tecnología blockchain, los contratos inteligentes permiten a los participantes alcanzar un acuerdo sin involucrar intermediarios. En caso de disputa, no es necesario pagar una tarifa a un banco o abogado. Los términos de un contrato inteligente están escritos con el código de la computadora, por lo que no pueden malinterpretarse. La plataforma Ethereum le permite crear sus propios contratos inteligentes que se adaptan mejor a las necesidades de su negocio.

Suecia actualmente está probando la posibilidad de utilizar blockchain como una tecnología que permitirá digitalizar partes de los registros de la tierra. Dubai anunció que todos los documentos del gobierno deberían estar asegurados con blockchain para 2020.

Contratos inteligentes y cadena de suministro y logística
Si produce, compra o vende bienes, la posibilidad de que cada paso de una cadena de suministro sea más transparente puede mejorar su negocio. Los contratos inteligentes permiten rastrear el movimiento del producto desde la fábrica hasta los estantes de las tiendas. Los dispositivos de IoT pueden escribir datos de ubicación directamente en un contrato inteligente, lo que permite simplificar el proceso de seguimiento. Dicha característica proporciona visibilidad en tiempo real de toda una cadena de suministro. Si tiene productos atascados en la aduana, lo sabrá de inmediato. El seguimiento avanzado también permite reducir el riesgo de fraude y robo.

Contratos inteligentes y pólizas de seguro Los contratos inteligentes pueden ser más útiles en los casos en los que el proceso de reclamaciones lleva una cantidad significativa de tiempo, que es un problema típico de las pólizas de seguro, por ejemplo. El trabajo implica muchas operaciones manuales y requiere mucha acción humana. Para un cliente, tal estado de cosas conduce a costos adicionales. Las pólizas de seguros se pueden automatizar fácilmente con el uso de contratos inteligentes. El blockchain puede contener parámetros mensurables como la magnitud del terremoto, por ejemplo. Cuando hay un evento asegurado, las condiciones de entrada de un contrato inteligente se cambiarán en consecuencia. Como resultado, el proceso de reclamaciones se activará de inmediato, y el pago financiero se puede entregar a un cliente sin retrasos. Se reduce la necesidad de una intervención impulsada por los seres humanos, lo que permite reducir los costos.

Contratos inteligentes y finanzas comerciales Los contratos inteligentes también se pueden usar para la financiación del comercio. Por lo general, el proceso de emisión de cartas de crédito requiere una gran cantidad de papeleo y coordinación. La necesidad de manejar toneladas de documentos físicos puede retrasar significativamente el recibo de envío. Tanto los compradores como los vendedores pueden beneficiarse del uso de contratos inteligentes, ya que esta tecnología puede mitigar los riesgos y mejorar la eficiencia de los procesos.

Industria de contratos inteligentes y entretenimiento Los contratos inteligentes también pueden ayudar con los problemas de pago de regalías en la industria del entretenimiento. Existe un problema comúnmente conocido para determinar quién posee los derechos de una canción en particular o cualquier otra obra de arte y cómo garantizar que cada persona legalmente obligada reciba pagos de regalías. Una solución de contrato inteligente puede ayudar a rastrear todos los derechos de propiedad. Cualquier cambio de datos requiere la aprobación de todas las partes en la red, lo que garantiza la confianza en la propiedad. Como todos los participantes saben a quién pertenece qué, el contrato inteligente puede utilizarse para garantizar que el pago de regalías se genere automáticamente y se pague sin demoras. Dicha transacción se transmite a través del blockchain, por lo que cualquier parte interesada puede reflejarlo instantáneamente en su contabilidad.

30 things you can do with a blockchain



Arduino

Proyectos


Cabina de fotos: muy bien explicado, con ejemplos de cómo controlar una cámara que toma fotos presionando un botón. Además levanta las fotos a Dropbox.

Reloj despertador avanzado: se puede ver cómo conectar un display a la placa arduino y cómo tomar información de un puerto de una PC.

Jardín automatizado: sensores de temperatura y de humedad para encender ventilación y/o sistema de riego. También tiene una muy buena introducción y explicación sobre plantas (nutrientes, fotosíntesis, PH, etc.) e invernaderos.

SPA or Pool monitor: utiliza Nanode para conectar Arduino a internet y hacer visibles los datos en tiempo real.

Sensores

Aprendiendo sobre sensores: también tiene vínculos a catálogos de sensores.
Existe un Kit medidor de PH y un Kit para bomba dosificadora.

Proyecto y comentarios sobre Automatización de piscinas. Muy buenos los comentarios posteriores, incluso hay uno (Edgar Vice) que dice que NO le pone cloro a la pileta. El proyecto con Arduino está acá.

(Sensorex) Sensores y Monitoreo químico de piletas de natación: ofrecen sensores de PH y ORP.

Para medir cloro: sonda ORP / Redox. Vale la pena leer este artículo (traducir al español) muy interesante que habla sobre potencial redox, electrólisis, cloro, etc.

Varios


CONTROLLINO: es un PLC basado en Arduino Open Source Technology.

Arduino Products: full range of official Arduino products, including Boards, Modules (a smaller form-factor of classic boards), Shields (elements that can be plugged onto a board to give it extra features), and Kits.

Arduino Forum