miércoles, 3 de mayo de 2023

Dia del Trabajador - Muchos los festejan, pero que paso ese día?


 

 El Día del Trabajador es una fecha conmemorativa que se celebra en muchos países alrededor del mundo. Esta fecha tiene su origen en una manifestación que tuvo lugar en Chicago, Estados Unidos, el 1 de mayo de 1886. En ese día, miles de trabajadores se manifestaron para reclamar mejores condiciones laborales, entre ellas la reducción de la jornada laboral a ocho horas diarias.

Durante la manifestación, se produjeron enfrentamientos entre los trabajadores y la policía, y como resultado, varios trabajadores murieron y muchos otros resultaron heridos. Este trágico evento se conoce como la Revuelta de Haymarket y se convirtió en un símbolo de la lucha de los trabajadores por sus derechos.

A raíz de esta manifestación, se estableció el 1 de mayo como el Día Internacional del Trabajo, en honor a los trabajadores que murieron en la Revuelta de Haymarket. Desde entonces, este día se ha convertido en un día de reivindicación de los derechos de los trabajadores y se celebra en muchos países alrededor del mundo con manifestaciones, marchas y otras actividades.

 

El Día del Trabajador es una oportunidad para reflexionar sobre la importancia del trabajo y la contribución de los trabajadores al desarrollo de la sociedad. También es un momento para recordar que muchos trabajadores todavía luchan por mejores condiciones laborales y derechos básicos.

En resumen, el Día del Trabajador tiene una historia rica y significativa, y representa una oportunidad para honrar la lucha de los trabajadores por sus derechos y para continuar trabajando juntos hacia un futuro más justo y equitativo.

miércoles, 26 de abril de 2023

Evolución de los lenguajes de programación

En la última década, los lenguajes de programación han experimentado una evolución significativa en términos de su popularidad y uso en diferentes áreas de la informática. Uno de los lenguajes que ha visto un aumento dramático en su adopción es Python. Con su sintaxis simple y fácil de aprender, Python se ha convertido en el lenguaje de elección para muchas aplicaciones de ciencia de datos y aprendizaje automático. Además, la creciente comunidad de Python ha llevado al desarrollo de una gran cantidad de bibliotecas y herramientas para el lenguaje.

Python


Otro lenguaje que ha ganado popularidad en la última década es JavaScript. Con la creciente demanda de aplicaciones web interactivas y ricas en contenido, JavaScript se ha convertido en el lenguaje de programación esencial para el desarrollo de aplicaciones web modernas. Las mejoras en el rendimiento de los motores JavaScript también han contribuido a su adopción en el desarrollo de aplicaciones móviles y de escritorio.



Además de Python y JavaScript, también ha habido una creciente demanda de lenguajes de programación para aplicaciones de aprendizaje automático. En particular, lenguajes como R, Julia y Swift se han utilizado en la creación de aplicaciones de aprendizaje automático. Estos lenguajes han sido elegidos debido a su capacidad para trabajar con grandes conjuntos de datos y su facilidad de uso.

En la última década, también hemos visto una mayor adopción de lenguajes de programación de sistemas como C++, Rust y Go. Estos lenguajes son ideales para aplicaciones de alto rendimiento y sistemas de bajo nivel, como controladores de dispositivos y sistemas operativos. Además, la creciente popularidad de la tecnología de contenedores y la nube ha llevado a un mayor uso de lenguajes de programación como Go para la creación de aplicaciones de microservicios escalables y resistentes a fallos.

En resumen, la última década ha visto una evolución significativa en los lenguajes de programación. Desde la popularidad creciente de Python y JavaScript hasta la adopción de lenguajes de programación para aplicaciones de aprendizaje automático y sistemas de alto rendimiento, el panorama de los lenguajes de programación sigue cambiando rápidamente. Con el tiempo, podemos esperar ver más cambios y mejoras en los lenguajes de programación, lo que permitirá a los desarrolladores crear aplicaciones más complejas y efectivas.


miércoles, 26 de mayo de 2021

Habiltar ejecución de scripts - PowerShell

Si están trabajando con powerShell y quieren ejecutar un script en un servidor, el error más común al que nos enfrentamos es el siguiente:

"No se puede cargar el archivo script.ps1 porque en el sistema está deshabilitada la ejecución de scripts. Vea «get-help about_signing» para obtener más información".


La descripción es bastante clara, en el sistema está deshabilitada la ejecución de scripts, ésta restricción se puede corroborar desde powershell mediante el comando "Get-ExecutionPolicy"

¿Cómo la habilitamos? Muy simple, mediante el comando "Set-ExecutionPolicy Unrestricted"


Como se puede observar, hay una advertencia y debe ser tenida en cuenta, esta forma de habilitación, permite la ejecución de "Cualquier" script.

viernes, 21 de mayo de 2021

SQL - Trigger - Disparador

En ésta ocasión quería comentarles como los Triggers en SQL, resolvieron un problema en un proceso semi automatizado.

Para empezar y para los que no saben, les voy a definir que son los triggers. 

 "objeto que se asocia con tablas y se almacena en la base de datos. Su nombre se deriva por el comportamiento que presentan en su funcionamiento, ya que se ejecutan cuando sucede algún evento sobre las tablas a las que se encuentra asociado. Los eventos que hacen que se ejecute un trigger son las operaciones de inserción (INSERT), borrado (DELETE) o actualización (UPDATE), ya que modifican los datos de una tabla" (wikipedia).

En muchas situaciones son muy útiles... y en éste caso lo digo por experiencia. 

Les planteo la situación y el problema que surgió.

En un sistema que administro hubo un cambio en la legislación que obligaba a tener en cuenta cierta información cuando se realizaba un comprobante, en particular un rango de fecha. 

La recolección y generación de los comprobantes está automatizada:

  1. Se genera un comprobante / etiqueta con un código QR, en el cual se codifica toda la información necesaria para a posterior emitir un comprobante. 
  2. Se lee la etiqueta con un colector de datos QR, En el se desarrollo una app para que de lecturas consecutivas genere un archivo .txt con todas las lecturas realizadas. 
  3. El archivo .txt se carga en un sistema el cual genera un comprobante por cada registro en el sistema ERP
  4. El Sistema ERP por último, autoriza los comprobante.

El problema surgió en el paso 4, cuando la autorización del comprobante no se pudo realizar por falta de unos datos. 

Análisis y propuestas de solución

La primera solución pensada fue, listo, no hay problema. El dato lo tengo cuando genero la etiqueta, lo incluyo en el QR para ser utilizado en la generación del comprobante en el sistema ERP y la autorización se realice sin problemas. Muy linda y simple..... pero. El sistema que genera el comprobante en el ERP, utiliza una apertura la cual no tiene en cuenta los nuevos parámetros.



La segunda opción, y la menos deseada, modificar cada uno de los comprobantes manualmente por un operador, para poder autorizar los comprobantes. Pero esa "solución" implica un retroceso en el proceso (se pasa a realizar una tarea manual), con el agravantes de los posibles errores de tipeo. Cuando se dimensionó la situación, se observa que la cantidad diaria en promedio de comprobantes es de 100, por lo que tampoco era viable. 



Finalmente, y como pueden sospechar por el titulo del blog, se pensó en una solución utilizando los Triggers del SQL, en este caso SQL Server. Primero mediante la herramienta Profiler, se depuró las acciones que hace el ERP y donde se guarda la información del período en la generación del comprobante. Una vez identificada la tabla, se programó un trigger que se ejecute cuando se inserta una fila en dicha tabla, modificando los dos parámetros del período, teniendo en cuenta que si ya tiene dato, no se haga el cambio. De esta manera, se encontró una solución intermedia, permitiendo y dejando todo el proceso intacto y transparente para el usuario.







Powershell - Wndows - SFTP

Powershell es una herramienta muy poderosa, es una evolución del cmd tradicional de windows. Este post intenta dar un simple ejemplo de su capacidad, en lo particular la conexión a un servicio SFTP. 

Mi necesidad era poder descargar los archivos de audio de un servidor SFTP de manera automática, sin la intervención del usuario, para ello se realizó el siguiente script y se lo configuró en el Programador de Tareas de Windows.

Para el script se utilizó el módulo Posh-SSH (https://github.com/darkoperator/Posh-SSH). 

Se puede utilizar cualquier editor de texto para realizar el script, como si fuera un archivo .bat, pero en éste caso se trata de un archivo .ps1, recomiendo la utilización de la herramienta Windows Power Shell ISE, es un entorno preparado para ésto con todos los aditamentos, ejecución parcial del código, ayuda de funciones, vista de la salida, etc. 

A continuación les dejo el script

Script - Codigo

$sftp = "IP_SERVER"

$usr = 'Usuario_FTP'

$pwd = 'Password_FTP'

$salida = "PATH de descarga de los archivos"

$securePwd = ConvertTo-SecureString $pwd -AsPlainText -Force

#Creo la credencial

$credentials = New-Object System.Management.Automation.PSCredential($usr, $securePwd)

$session = New-SFTPSession -ComputerName $sftp -Credential $credentials -AcceptKey -Force

Get-SFTPChildItem $session | ForEach-Object{

    if ($_.FullName -like '*.WAV') #Solo me interesan los archivos de audio

    {

        Get-SFTPFile $session $_.FullName -LocalPath $salida -Overwrite #Descargo el archivo

        Remove-SFTPItem $session $_.FullName -Force #Borro el archivo del servidor

    }

    Write-Output $_.FullName

}

Remove-SFTPSession $session -Verbose

Script - Datos a cargar

$sftp = "IP_SERVER"

$usr = 'Usuario_FTP'

$pwd = 'Password_FTP'

$salida = "PATH de descarga de los archivos"

Éstas cuatro variables son los datos que se deben configurar para que funcione el script, creo que están bastante claros y descriptivos los nombre.

Problemas

Los problemas que me surgieron al implementar el script, fueron.

  • Versión Instalada de PowerShell en windows: Se necesita tener la versión 5.x 
  • Permitir la ejecución de script en powerShell
  • Al configurar el script para que se ejecute con el programador de tareas, se tienen que poner dentro de la carpeta Microsoft.