lunes, 28 de octubre de 2019

Analytics - Herramientas y otros

Recopilación y tratamiento de la información
- Framework de carga y transformación de datos (DTS) existente (ASP.NET MVC)
SQL Server Data Quality Services


Modelo Predictivo
- Scikit Learn
scikit-learn - Machine Learning in Python
Scikit-Learn Cheat Sheet
Choosing the right estimator
- Keras
- TensorFlow


Text Mining
Top 63 software for text analysis, text mining, text analytics
Top 27 FREE software for text analysis, text mining, text analytics
Elastic SearchMachine LearningAI


Python
Integrar Python en una aplicación C#: IronPython
Using C# to run Python Scripts with Machine Learning Models


Algunos indicadores de riesgo
Auto Insurance - How insurance companies spot bogus claims
- Antecedentes criminales/policiales?
- Daños exagerados. Taller mecánico involucrado / inspector involucrado
- Daño físico exagerado. Actividades deportivas que no condicen con la lesión declarada
- Situación económico/financiera del cliente
- Comentarios redes: “cómo crear abolladuras de granizo falsas en el capó de su automóvil”
- Analizar fotos en Facebook puede decirnos si la persona es realmente “discapacitada”
- Hay vehículos más robados que otros.
- Sexo, edad y estado civil de la persona
- Multas de tránsito
- Lugar de residencia (urbano o rural)
- Cantidad de kilómetros recorridos por día/mes/año
- Tener hijos adolescentes o menores de 21, que puedan estar o no habilitados para manejar


martes, 8 de octubre de 2019

Windows 10 Update KB4524147 VM Ware

Al actualizar Windows 10 (KB4524147) por razones de compatibilidad no permite ejecutar VM Ware
https://www.windowslatest.com/2019/10/05/windows-10-update-breaks-search-and-vmware-workstation/

Temporalmente no hay solucion por parte de Microsoft.
La solución es

  1. Eliminar la actualización KB4524147.
  2. Reiniciar
  3. Luego, descargar "Show or hide updates" (https://support.microsoft.com/en-us/help/4026726/windows-10-hide-updates-or-driver-updates) y ocultar la actualización des instalada.

miércoles, 4 de septiembre de 2019

Aplicaciones orientadas a microservicios

Revisando la arquitectura de nuestros sistemas, analizando oportunidades de mejoras, buscando formas de mejorar performance y escalabilidad.
Aquí se mencionan algunos artículos y temas de interés.

Diseño de una aplicación orientada a microservicios: muy buena publicación, donde explica el desarrollo de una aplicación empresarial del lado del servidor.

Advanced Message Queuing Protocol (AMQP)

Command Query Responsibility Segregation (CQRS)
¿Que es CQRS?
CQRS es un patrón de arquitectura que separa los modelos para leer y escribir datos.
La idea básica es que puede dividir las operaciones de un sistema en dos categorías claramente separadas:
- Consultas. Devuelven un resultado sin cambiar el estado del sistema y no tienen efectos secundarios.
- Comandos. Cambian el estado de un sistema.


Event-driven architecture (EDA)

Swagger es un marco de código abierto de uso común, respaldado por una gran variedad de herramientas que le permite diseñar, compilar, documentar y utilizar las API RESTful. Se está convirtiendo en el estándar para el dominio de metadatos de la descripción de API.

Desarrollo de aplicaciones móviles


Hay tres clases de aplicaciones móviles:

  1. Nativas: Significa que para su desarrollo se utilizó el lenguaje de programación nativo del dispositivo. Es un modelo cien por ciento dependiente de la plataforma y las Apps no son portables, hay que desarrollar una por plataforma.
Los principales paradigmas asociados a las Apps nativas son:
·         Se puede lograr el mejor rendimiento posible.
·         Se puede lograr un look&feel ópitimo acorde al sistema operativo
·         Se puede acceder a todas las capacidades del dispositivo

  1. Nativas Hibridas: Son desarrolladas usando HTML5, CSS y JavaScript, desplegadas dentro de un contenedor nativo como Phonegap/Cordova el cual brinda acceso a las capacidades del dispositivo de una forma totalmente neutral respecto al sistema operativo. Es un modelo neutro respecto a la plataforma y con portabilidad máxima.
  1. Nativas Generadas: Son aplicaciones desarrolladas usando herramientas como Xamarin o Genexus (entre muchas otras), en donde el desarrollo se realiza usando técnicas y lenguajes específicos de la herramienta y luego se genera la App en el lenguaje de la plataforma destino para ser compilada con las herramientas nativas.

Frameworks para desarrollo de aplicaciones móviles híbridas

Permite desarrollar aplicaciones híbridas mediante tecnología web HTML5, CSS3 y JavaScript. Utiliza una API que permite acceder a elementos de hardware del sistema como la cámara, almacenamiento, acelerómetro, etc. Permite integrarse con otros frameworks como por ejemplo jQuery Mobile, etc.

Apache Cordova es la versión de código abierto de PhoneGap, la principal diferencia entre estos dos frameworks es que PhoneGap tiene acceso al servicio de compilación en la nube Adobe Creative Cloud permitiendo compilar la aplicación para el sistema operativo deseado e independiente del sistema operativo donde se desarrolle. Consulta este artículo para más información sobre sus similitudes y diferencias.

Al contrario que otros frameworks mencionados más abajo que se ocupan de la parte de la interfaz, PhoneGap/Apache Cordova se encarga de la integración dentro del sistema operativo móvil y de dar acceso a los servicios de éste. Así que probablemente lo usarás junto a alguno de estos frameworks, que en muchos casos sólo ofrecen la parte de la interfaz de usuario en HTML, CSS y JavaScript.

Únicamente integra el framework jQuery basado en JavaScript. Su curva de aprendizaje es muy baja. Se ha quedado un poco atrás en cuanto a potencia y diseño si lo comparamos con el resto de nuevos frameworks que hay en el mercado.

Es uno de los frameworks más famosos para el desarrollo de aplicaciones híbridas. Utilizaa los frameworks Front-End: Angular, React, Vue.JS.

Ionic integra una capa de diseño con estilos css y recursos como iconos, etc. Estos estilos pueden ser adaptados a los estándares de diseño de las plataformas Android e iOS. Otra de sus muchas ventajas es que Ionic tiene su propio IDE de desarrollo que nos facilitará el diseño y programación de aplicaciones.

Framework 7 no es uno de los más conocidos, pero tiene la ventaja de que es completamente independiente y por lo tanto no tiene dependencias externas en frameworks como Angular o React.

Este framework tiene una curva de aprendizaje más baja que React Native e Ionic gracias a que se pueden realizar aplicaciones híbridas utilizando simplemente HTML5, CSS3 y JavaScript. No obstante Framework 7 permite su desarrollo también con Vue.JS o React si nos interesa. Para la emulación y ejecución requiere la combinación con Cordova o PhoneGap.

Frameworks para desarrollo de aplicaciones móviles nativas

Framework para crear aplicaciones híbridas basadas en JavaScript y en un conjunto de componentes del framework ReactJS. Actualmente también es uno de los más famosos, y cuenta con una gran comunidad de desarrollo. Forma parte de aplicaciones muy potentes y conocidas, como Facebook, Pinterest, Skype o Instagram.

Permite el desarrollo de aplicaciones nativas mediante JavaScript y TypeScript. También permite el desarrollo mediante el Framework Angular y Vue.js. NativeScript genera aplicaciones verdaderamente nativas, utilizando las mismas APIS que tendrías disponibles desde Android Studio y XCode. Incluso permite el acceso a bibliotecas nativas de terceros, aportando así mayores capacidades respecto al rendimiento y capacidades de las aplicaciones.

Su mayor inconveniente es que el desarrollo de las interfaces de usuario es más complejo (es XML, no HTML), así como las abstracciones necesarias para acceder al código nativo de manera independiente del sistema. Con NativeScript no necesitarás a PhoneGap/Apache Cordova.

Apps That Work Natively on the Web and Mobile – Angular + NativeScript


Es un nuevo framework desarrollado por Google para desarrollar aplicaciones nativas de forma fácil, rápida y sencilla. La principal y más importante ventaja de Flutter es que desarrollas un solo proyecto para todos los sistemas operativos, lo que significa una reducción de costes y tiempo de producción. Utiliza un lenguaje llamado Dart. Gana en performance a React Native y Native Script.


Otras opciones ya menos utilizadas son:

Permite crear aplicaciones nativas de IOS y Android a partir de un único código escrito completamente en JavaScript o TypeScript. Se pueden utilizar las bibliotecas JavaScript existentes, los módulos de nodo y el complemento Cordova para crear aplicaciones.

Es un marco de código abierto que permite la creación de aplicaciones para Android, IOS, Blackberry y Windows desde una única base de código JavaScript.

Tiene un marco de aplicación MVC que proporciona un modelo simple para separar la interfaz de usuario de la aplicación, la lógica y los modelos de datos. Es opcional, ya que solo puede codificar la interfaz y las lógicas solo en JavaScript.

Al igual que React Native y Native Script, Fuse es una plataforma para crear aplicaciones móviles multiplataforma con UX Markup (un lenguaje basado en XML que proporciona el componente básico de la interfaz de usuario) que se compila en código nativo y JavaScript para controlar la lógica empresarial. que es interpretado por una máquina virtual JavaScript en tiempo de ejecución. 


Cursos y enlaces de interés

martes, 2 de julio de 2019

Cómo publicar sitio interno en pfSense

Ejemplo de entrada en: Firewall / NAT / Port Forward

  • Interface: WAN
  • Protocol: TCP/UDP
  • Source Address: *
  • Source Ports: *
  • Dest. Address: *
  • Dest. Ports: 1006
    • From port (Custom): 1006
    • To port (Custom): 1006
  • NAT IP: 172.10.10.242
    • Redirect target IP: 172.10.10.242
  • NAT Ports: 1006
    • Redirect target port: 1006
  • Description: ViaClub

Instalar GitLab sobre Linux (Ubuntu Desktop)

Fuente: Instalar y configurar GitLab en Ubuntu

Actualizar sistema operativo
sudo apt-get update && sudo apt-get upgrade

RECOMENDACIÓN: crear un Snapshot antes de continuar.


Instalar dependencias necesarias
sudo apt-get install -y curl openssh-server ca-certificates

Si en este punto devuelve un error de tipo "ubuntu could not get lock /var/lib/dpkg/lock - open (11 resource temporarily unavailable)", es posible que el comando anterior no haya terminado de ejecutarse o haya quedado alguna tarea pendiente.
Para ver los procesos en ejecución se puede ejecutar el siguiente comando:
      - ps aux | grep -i apt
Si aparece ejecutando una tarea de tipo "apt.systemd.daily" quiere decir que se está ejecutando el apt-daily.service que se ejecuta cada 12 horas. En este caso conviene esperar a que termine de ejecutar, o reiniciar el sistema:
      - sudo reboot
      - sudo shutdown 0


Instalar Postfix
sudo apt-get install postfix
  • Aceptar parámetros x default (<Enter>)
  • Seleccionar <Internet Site>
  • System mail name: viainfo.com.ar
- Una vez instalado Postfix se pueden cambiar los parámetros editando el archivo de configuración y reiniciando el servicio:
sudo nano /etc/postfix/main.cf
service postfix reload


Instalar GitLab (Enterprise)
Nota: Antes de realizar la instalación conviene definir cual será el "External URL" a utilizar. En nuestro caso sería gitlab.viainfo.net. Hay que configurar esta entrada en nuestro servidor DNS (VIAINFO-DC). En Windows, también se puede configurar archivo "hosts" (normalmente en "C:\Windows\System32\drivers\etc") para que interprete la ruta "gitlab.viainfo.com.ar" sin necesidad de estar definido como DNS, agregando una línea:
      - 172.10.10.247      gitlab.viainfo.net

sudo curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ee/script.deb.sh | sudo bash
  • URL con el cual queremos acceder a nuestro GitLab
sudo EXTERNAL_URL=gitlab.viainfo.net apt-get install gitlab-ee

Si da error "Unable to fetch some archives, maybe run apt-get update or try with --fix-missing". Para poder avanzar hay que ejecutar la secuencia de comandos:
      - sudo apt-get update
      - sudo apt-get install --fix-missing
      - Origen: https://www.enmimaquinafunciona.com/pregunta/35620/que-apt-get---fix-missing-hacer-y-cuando-es-util

Si hubiera que cambiar el EXTERNAL_URL una vez instalado:
      - Editar el archivo "/etc/gitlab/gitlab.rb"
         - sudo nano /etc/gitlab/gitlab.rb
         - external_url gitlab.viainfo.com.ar
      - Reconfigurar:
         - sudo gitlab-ctl reconfigure

Configurar firewall
  • Abrir puertos 80 (HTTP) y 443 (HTTPS)
Configurar GitLab

- Instalar Kubernetes (microk8s) [Opcional]
sudo snap install microk8s –classic

- Instalar Node.Js [Opcional]
sudo apt update
sudo apt install nodejs npm
nodejs –version

lunes, 1 de julio de 2019

Instalar Linux (Ubuntu Desktop)

Descargar Linux (Ubuntu)
Download: https://ubuntu.com/download/server
- Versión recomendada (x Damián): 16.xx Desktop (64 bits)

Crear Virtual Machine (VMware) e instalar Linux
- Crear "New Virtual Machine"
  • Typical
  • I will install operating system later
  • Linux
  • Virtual machine name: ViaLinux
  • Location: D:\VirtualMachines\ViaLinux
  • Max disk size (GB): 40
  • Memory: 2 GB
  • Network Adapter: Bridged
  • CD/DVD: Use ISO image file --> ubuntu-16.04.6-desktop-amd64.iso
- Desconectar unidad CD/DVD y reiniciar el sistema.
- Configurar usuario administrador (viaadmin) y contraseña.

Instalar VMware Tools
- Ingresar a la terminal de comandos: (Alt + Ctrl + T)

viaadmin@vialinux:~$ cd
viaadmin@vialinux:~$ tar -xzvf /media/viaadmin/VMware\ Tools/VMwareTools-10.2.0-7259539.tar.gz
viaadmin@vialinux:~$ sudo ./vmware-tools-distrib/vmware-install.pl

- Desmontar/deshabilitar VMware Tools del CD/DVD.


Para configurar IP address

IMPORTANTE: 
  • La configuración de la placa de red en la máquina virtual debe ser Bridged.
- Desde la interfaz gráfica (desktop) ingresar a: System Settings / Network
  • Options / IPv4 Settings
    • Method: Manual
    • Add (Address): 172.10.10.247  - 255.255.255.0  -  172.10.10.245
  • DNS Servers
    • 172.10.10.243, 8.8.8.8
Siendo:
  • 172.10.10.245 = Firewall (pfSense)
  • 172.10.10.243 = DNS Server (VIAINFO-DC)

Para la versiones de Ubuntu (18.04 o superior ) se pueden seguir las siguientes instrucciones para configurar la red a través de Netplan.
- 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) / 172.10.10.243 (VIAINFO-DC)
  • Nameservers (DNS): 
    • 172.10.10.243
    • 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


Configurar velocidad de la placa de red (NO FUNCIONA)

- Ver el nombre de la interface
ifconfig

- Instalar herramienta de configuración
sudo apt-get install ethtool

- Configurar placa de red
sudo ethtool ens33
sudo ethtool -s ens33 speed 100 duplex full autoneg off   --> NO FUNCIONA


Actualizar sistema operativo
sudo apt-get update && sudo apt-get upgrade

viernes, 7 de junio de 2019

Frameworks para desarrollar Single Page Applications (SPA)

Vue.js
Más versátil y flexible que Angular, liviano, performante y fácil de aprender. Recomandado x Marcelo Pham.
Para aprender Vue JS 2 en Español en Udemy.

React
React es una biblioteca Javascript de código abierto diseñada para crear interfaces de usuario con el objetivo de facilitar el desarrollo de aplicaciones en una sola página. Es mantenido por Facebook y la comunidad de software libre, han participado en el proyecto más de mil desarrolladores diferentes

Angular
Angular, es un framework para aplicaciones web desarrollado en TypeScript, de código abierto, mantenido por Google, que se utiliza para crear y mantener aplicaciones web de una sola página.

Inteligencia Artificial y Big Data aplicados al negocio bancario

Las APIs especializadas en tecnologías como el aprendizaje profundo y el aprendizaje automático sirven a las entidades financieras para la definición de productos y segmentación de clientes, la gestión eficaz del riesgo o la detección del fraude.

Ver artículo completo: BBVA API_Market

BBVA Productos API

miércoles, 3 de abril de 2019

lunes, 1 de abril de 2019

ASP.NET MVC UrlAction variable con comillas

Al momento de crear un action con código de servidor, puede suceder que un parámetro enviado tenga comillas simples. Esto genera error de javascript.
Se puede resolver anteponiendo "\\" a la comilla, de la siguiente manera:

<a href="#" onclick="funcion('<%= e.Descripcion.Replace("'", "\\'") %>');">xxxx</a>

viernes, 22 de febrero de 2019

Conexión a VPN desde Windows 10

Una vez configurada la conexión a una VPN, puede ser necesario deshabilitar "access use default gateway on remote network" en las propiedades avanzadas de la conexión.
Con esto logramos que el cliente de VPN pueda acceder a internet desde su conexión local, sin tener que pasar forzosamente por la conexión de la VPN.




Si luego de desactivar el gateway x default de la VPN se pierde la conexión con la VPN, puede ser necesario agregar un ruteo hacia la VPN de la siguiente forma:

route -p add 172.10.10.0 mask 255.255.255.0 172.10.10.245 metric 3 if 52

El parámetro -p hace que el ruteo quede configurado en forma permanente.

viernes, 8 de febrero de 2019

Configuracion PfSense

PfSense 2.4.3 L2TP / IPsec VPN configuration

pfSense Configuracion de servidor OpenVPN Client to LAN

Configuring the Squid Package as a Transparent HTTP Proxy

Para instalar y configurar PfSense 2.3.4 sobre Linux desde cero.

Install & Configure Pfsense 2.4.4 with squid proxy server & snort

Restringir Acceso al WebGUI: para que sólo se pueda acceder desde la red loca.

Cómo configurar Squid Cache para Windows update.

VMware Tools en pfSense
Fuente: https://kb.vmware.com/s/article/2149806
WMware tiene soporte para Open VM Tools sobre FreeBSD.
pfSense ya tiene soporte para FreeBSD.

Algunos comandos son:
- Para mostrar la versión del administrador de paquetes:
pkg info pkg
- Para ver los paquetes instalados:
pkg info
- Para ver si ya están corriendo las VMware Tools:
ps -fU root | grep vmtoolsd
- Para instalar VMware Tools (normalmente ya están instaladas)
pkg install open-vm-tools (para la versión desktop)
pkg install open-vm-tools-nox11 (para la versión server)




jueves, 7 de febrero de 2019

Cómo cambiar "password Must Meet Complex Requirements option" en un Domain Controller



  1. In the Server Manager click on Tools and from the drop down click Group Policy Management
  2. Expand Forrest >> Domains >> Your Domain Controller.
  3. Right click on the Default Domain Policy and click on the Edit from the context menu.
  4. Now Expand Computer Configuration -> Policies -> Windows Settings -> Security Settings -> Account Policies -> Password Policy
  5. Double-click on the Passwords Must Meet Complexity Requirements option in the right pane.
  6. Select Disabled  under define this policy setting:
  7. Click Apply then OK all the way out and close the GPO window.
  8. In order to refresh the policy type the following command: “gpupdate /force”  in the CMD window and click ENTER.