Entradas

Power Automate Estamos en proceso de migración a un "ERP" llamado NOVA Suite (no lo recomiendo por cierto). No tenemos acceso a base de datos, así que estoy aprendiendo a utilizar Power Automate para revisar y registrar información Ejemplos de sintaxis requeridas para localizar elementos en la pagina web Selecto de un campo que encuentra un RFC:  iframe[Id="regionCenter-iframeEl"] table[Id@="gridview-10.*-record-.*"] > tbody > tr > td > div[Text="%RFC%"] La aplicación utiliza iFrames , que dificultan localizar elementos, además que los inputs no tienen nombres, esta sintaxis encuentra un div que contiene cierto texto y después localiza el combo que busco:  iframe[Id="regionCenter-iframeEl"] div[Id@="comboboxgenericoform-10.*"]:contains("Forma de Pago") div[Id@="comboboxgenericoform-10.*-trigger-picker"]  iframe[Id="regionCenter-iframeEl"]  div[Id@="textfieldgenericoform-10.*"...

Migracion desde Sybase Adaptive Server (ASE) a MSSQL

Eventos: Octubre 2021 se filtra la oficina y la filtración arruina una sola maquina. El servidor donde estaba la base de datos de Sybase. No le paso nada a la base de datos, pero ahí comienza el problema. El gerente decide que usar un servidor es caro y compra una workstation, pide que se le instale windows 10, le ponemos una maquina virtual, et vuala, instalamos Windows 2000 y el Sybase versión 12. Ambos con mas de 20 años de antiguedad. Que podria salir mal.  Windows 10 que obviamente no es para funcionar como servidor, llegan las actualizaciones automáticas, un par de actualizaciones automáticas que reinician  la maquina virtual y se desato el caos. Las tablas mas importantes quedaron dañadas. Se reporta la situación, pero como es un equipo que tenia la sincronización propietaria de Sybase, con mas de 100 remotos, era imposible ocupar un respaldo, porque automáticamente habría que recrear las 100+ remotas. En ese momento pues ahora si, el Gte de TI, decide que por que no ha...

Powerbuilder 8 error "No Database interfaces are installed."

 Por alguna razón en Windows 10 comenzó a marcar un error con el Powerbuilder. Al intentar conectar a una base de datos "No Database interfaces are installed." Al intentar desinstalar para realizar de nuevo la instalación y tampoco permitió desinstalar , borre todas las llaves del registro de manera manual. Lo instale de nuevo y el problema persistió. Asumí que el problema estaba en el registro. Utilizando el "Process Monitor" encontré cuales son las llaves que faltaban. Al realizar la instalación , pide permisos para ejecutarse como administrador, sin embargo, después cuando se ejecuta como usuario normal, no tiene acceso a ciertas llaves del registro.  El problema lo resolví copiando las llaves del registro que faltaban, donde Windows si le permitía leer y escribir en el registro, esto es, exporte las llaves de:  [HKEY_CURRENT_USER\SOFTWARE\Sybase] todo el contenido copiado a: [HKEY_CURRENT_USER\SOFTWARE\Classes\VirtualStore\MACHINE\SOFTWARE\WOW6432Node\Sybase] de...

Nodejs problema con node-odbc y la Ñ en Sybase Anyhere y ODBC

Creando un proyecto utilizando NodeJs y Graphql , conectando a una base de datos Sybase Anywhere con los drivers ODBC, se me presento un problema que tarde varios dias en averiguar el motivo. En general el problema era que al realizar una consulta a un campo de texto, si este contenía un carácter acentuado o "Ñ", ese caracter se mostraba en la aplicación de Node sustituido con un símbolo "?". Finalmente después de muchas pruebas y lecturas, encontré la respuesta en el siguiente post: https://github.com/markdirish/node-odbc/issues/46 La solución fue agregar en el la cadena de conexión (ConnectionString) , la tabla de caracteres correcta, como mi base de datos estaba en 1252LATIN1, le ponía el mismo en la cadena de conexión, sin embargo es incorrecto, se debe poner la tabla de caracteres utilizada en el cliente, y como NodeJs utiliza UTF8, es lo que debe ponerse. Finalmente mi cadena conexión quedo de la siguiente manera: CN = DSN=mi_odbc;LANGUAGE=es_MX;CHARSE...

Exportar/Importar de Sybase ASE 12 a Postgres

Para exportar datos desde Sybase usando bcp: bcp [database].dbo.[tabla] out [file_name.txt] -c -r\r\n -U[user] -P[pass] -S[server]   Esto genera un archivo de texto separado por tabulaciones. Después la importación se puede realizar en el Postgres con el comando COPY: COPY [table] FROM '/path_to_file/in/Linux/file_name.txt' ( FORMAT TEXT, ENCODING 'Windows-1251' ); FORMAT TEXT porque es el formato que Postgres le indica que el archivo estará separado por Tabulaciones. ENCODING lo necesita si el archivo se origino desde una maquina de Windows, de otra forma marca un error al momento de intentar importar el archivo.

Paginas interesantes Smart Home

Ideas para un hogar inteligente: https://blog.ipsumdomus.com/ Hackeando un interruptor Sonoff (en español): http://recetastecnologicas.blogspot.com/2016/03/hackeando-el-itead-sonoff-un.html Conectando Raspberry y MQTT broker: https://programarfacil.com/esp8266/mqtt-esp8266-raspberry-pi/

Port Forward en Windows 2008 Server

Desvio de Puertos (Port Forward) en Windows 2008 Server Configurando un acceso remoto por una VPN a un servidor de base de datos con Sybase ASE 12 , me encontré con que solo responde en una dirección IP. Si el servidor tiene mas de una tarjeta de red, no encontré la manera de configurarlo para que pudiera escuchar en mas de una interfaz de red, por lo cual ocupe la funcionalidad del firewall de Windows para hacer un desvió de puertos de una IP a otra IP en ese mismo servidor y con eso pude resolver mi problema. Con el comando netsh netsh interface portproxy add v4tov4 listenport=[puerto origen] listenaddress=[ip origen] connectport=[puerto destino] connectaddress=[ip destino] esto crea un desvió de puertos permanente, y puedes mostrar los desvíos activos con netsh interface portproxy show all El articulo original que encontré esta en el siguiente enlace: Port Forward MOBZystems

VPN con Ubuntu y Softether

Sustituyendo un antiguo servidor con Centos y OpenVpn, migrando a Ubuntu 16.04 y SoftEther, no hay mucha documentación que ayude, estos son los enlaces que me fueron mas utiles: La pagina oficial de SoftEther, con las instrucciones de instalacion en Linux: https://www.softether.org/4-docs/1-manual/7._Installing_SoftEther_VPN_Server/7.3_Install_on_Linux_and_Initial_Configurations Para el error en con el script en init.d: https://help.directadmin.com/item.php?id=379 https://bbs.archlinux.org/viewtopic.php?id=149425 En este enlace encontre unas instrucciones para instalar una VPN con SoftEther en un Raspberry, pero la secuencia es muy parecida: https://gist.github.com/jhenkens/11190151 Aun no he probado el desempeño , pero la pagina promete un mejor desempeño, ademas de que acepta clientes de VPN mas actuales  como los que ya se incluyen en Windows 10 y los telefonos con Android, Incluso promete que puedes tener activados varios protocolos simultaneamente y aceptar cliente...

Mover proyectos con Git y una USB

Para mover un proyecto usando una usb, desde la usb con el bash de git , ejecutar un clone, ejemplo: F:\>git clone /C/Codigo/Proyecto el Git al crear una copia del proyecto guarda la referencia al origen , la cual la podemos consultar con: F:\Proyecto\>git remote -v después podemos hacer lo mismo moviendo el código a un directorio en una PC donde vamos a trabajar, podemos hacer de nuevo un clone: C:\Documentos\>git clone /F/Proyecto hacemos cambios, y hacemos un commit, en el directorio donde estamos trabajando, y posteriormente podemos aplicar lo que hicimos a la usb. Aqui se me presento un error parecido a lo siguiente: remote: error: refusing to update checked out branch: refs/heads/feature-senddata remote: error: By default, updating the current branch in a non-bare repository remote: is denied, because it will make the index and work tree inconsistent remote: with what you pushed, and will require 'git reset --hard' to match remote: the work tree...

Obtener IP de conexion en MSSQL Server

Comparto estos dos scripts muy sencillos pero me han ayudo cuando necesitas saber la direccion IP de algun equipo, por ejemplo cuado se generan bloqueos, o por alguna otra razon: /* Obtener la IP de la conexion del cliente */ SELECT client_net_address FROM sys.dm_exec_connections WHERE session_id = @@spid /* Obtener la ultima instruccion ejecutada */ DECLARE @sqltext VARBINARY(128) SELECT @sqltext = sql_handle FROM sys.sysprocesses WHERE spid = (YourSessionID) SELECT TEXT FROM sys.dm_exec_sql_text(@sqltext) GO

Avast en Windows XP e Internet Explorer que no Navega

Recientemente me encontré con una situación extraña. Un equipo con Vindows XP , teniendo instalado el Avast, el equipo si tenia acceso a conectarse por ejemplo el TeamViewer o permitir conexiones salientes que no ocuparan el puerto 80, pero cualquier programa que intentara usar el puerto 80, el equipo no lo permitía. Firewall desactivado igual. Incluso el Avast fallaba en su intento de actualizarse y no permitía des-instalar el Avast. Finalmente después de un par de horas investigando encontré la solución, el primer enlace permite remover el Avast debido a la falla que presentaba: http://techdows.com/2014/09/fix-avasts-error-setup-is-already-running-please-try-to-start-the-setup-later.html En el segundo enlace encontré me apunto hacia un programa que corrige el problema  que tenia la maquina y que no permitía la navegación, el programa se llama winsockxpfix.exe, el cual descargue desde http://majorgeeks.com/WinSock_XP_Fix_d4372.html https://forum.avast.com/index.php?topic=6...

Android ArrayAdapter y ListView

Buscando entre varios artículos para aprender a usar un ArrayAdapter junto con un ListView, me encontré este articulo en GitHub. Me gusto mucho porque tiene una explicación detallada paso a paso de como utilizar en conjunto ambas clases, dejo el enlace para futuras referencias: https://github.com/codepath/android_guides/wiki/Using-an-ArrayAdapter-with-ListView

Pentaho Spoon y conexion a Sybase SQL Anywhere 8

Para conectar el spoon a un origen de datos de Anywhere se puede ocupar la librería que se instala con el Sybase ASE, generalmente se instala en C:\sybase\jConnect-5_2\classes y se llama jconn2.jar (puede ser jconn3 o jconn4 dependiendo de la versión del Sybase ASE). Esta libreria se coloca en la carpeta del spoon donde lee los drivers de conexión, en el caso de la versión 6, se coloca en [pentaho_dir]\data-integration\lib. Creamos una nueva conexión elegimos "Generic", le ponemos un nombre, y los siguientes datos: Custom  Connection URL jdbc:sybase:Tds:<host>:<port>?ServiceName=<database> Custom Driver Class Name com.sybase.jdbc2.jdbc.SybDriver En esta pagina encontré la información para la cadena de conexion: https://razorsql.com/docs/help_sybase.html

Error al iniciar el emulador de Android Studio 2 en Ubuntu

Al instalar la nueva versión de Android Studio 2 en Ubuntu, me sucedió que dejo de funcionar el emulador, sin embargo en la versión anterior 1.5 funcionaba sin problemas. Al intentar iniciar el emulador obtenia estos mensajes: libGL error : unable to load driver : r600_dri . so libGL error : driver pointer missing libGL error : failed to load driver : r600 libGL error : unable to load driver : swrast_dri . so libGL error : failed to load driver : swrast El error se genera por una librería que se requiere actualizar, encontré la solución en este enlace: http://stackoverflow.com/questions/36554322/cannot-start-emulator-in-android-studio-2-0

Crear un repositorio "bare" y agregarle codigo ya existente con Git

Para los impacientes y comenzar a utilizar rapidamente el control de versiones con Git , en un codigo ya existente: Facturacion4GMod esta controlado con Git FacturacionPOS4g esta controlado con Git Para descargar una version localmente hacer un git fetch 1.- Crear un repositorio bare creando el <directorio> especificado git init --bare <directorio> 2.- Dentro del directorio con el codigo ya existente , ejecutar; git init 3.- Colocar dentro del directorio el archivo .gitignore adecuado segun el lenguaje * Ver en plantillas de archivos .gitignore https://github.com/github/gitignore 4.- Para agregar TODOS los archivos al repositorio local y despues hacer un commit git add . git commit -a Al ejecutar el commit pedira editar el mensaje con el que se guardara el commit. El editor se maneja como el vim, "i" para editar, ESC para salir de edicion, y ":wq" para guardar los cambios y salir 5.- Agregar el repositorio remoto a nuestro reposi...

Tips variados para programacion android

Como actualizar un TextView desde un thread separado del thread de la UI (interface usuario): Cuando intentas actualizar un textview desde otro thread separado, se genera una excepción: “Only the original thread that created a view hierarchy can touch its views.” Encontré la solución en este enlace: http://stackoverflow.com/questions/5161951/android-only-the-original-thread-that-created-a-view-hierarchy-can-touch-its-vi Libreria Volley y requestQueue terminados No he encontrado si la librería volley puedas saber cuando ya terminaron todos los request que están en cola, esto es debido a que se generan de forma asíncrona. Lo resolvi declarando un HasMap<String,Boolean>, antes de comenzar los requests, inicializo el hasmap con key a falso por cada request. Después en el evento "response" o "error" de cada request, marco la etiqueta en el HashMap a true como finalizado, reviso todo el HashMap y si todos están true, disparo un evento que indica que ya ter...

LimeSurvey

Buscando otras cosas encontré un sistema llamado LimeSurvey, que sirve para crear encuestas, y publicarlas . Revisando la documentación veo que tiene su propia API para poder acceder a la funcionalidad del sistema. Este es el enlace a la pagina: https://www.limesurvey.org/ Documentación de la API https://manual.limesurvey.org/RemoteControl_2_API Me pareció un buen proyecto, voy a ver si encuentro algo que se pueda usar desde Android. El sistema esta desarrollado en PHP asi que debe ser facilmente instalable en cualquier distribucion Linux.

Android Studio y Traccar

Hace unos dias me sucedió este problema que dejo anotado aquí por si alguien mas le sucede, y esta relacionado con el Android Studio y un programa llamado Traccar. El síntoma fue que al intentar ejecutar el emulador de android en Ubuntu Linux 16 simplemente indicaba que no podía encontrar ningún emulador, y generaba un mensaje para ejecutar manualmente el adb: ./adb start-server sin embargo al ejecutarlo tampoco funcionaba, imagine que tenia algo que ver con algun puerto pero no tenia idea de como descubrir que puerto. Descubrí que el puerto que ocupa el adb es el 5037 , llegue a este enlace en stackoverflow, que fue el que me ayudo a resolver el problema: http://stackoverflow.com/questions/17116121/adb-hangs-when-trying-to-start-or-stop-server El problema es que el traccar ocupa el puerto 5037 y se instala como un servicio. La solución fue detener el servicio del traccar para poder ocupar el emulador. Pude utilizar el Bootup-Manager que esta incluido en el Ubuntu , localic...

Por que es mejor Git que X

Hace un tiempo me encontre este articulo que compara porque preferir Git a otros SCMs, Pongo la traduccion, lamento no haber guardado el enlace a la pagina original, solo guarde el texto y pongo la traduccion "Porque es Git mejor que X" delineando varios pros y contras de Git vs otros SCM Resumen: Briefly: Git registra contenido en lugar de archivos "Branch" son ligeros y "Merging" es facil, muy facil Es distribuido, basicamente cada repositorio es un "Branch", Es mas facil para desarrollar concurrentemente y colaborar que con Subversion. Tambien hace posible desarrollar sin conexion. No impone ningun flujo, hay muchos flujos posibles con Git. Duplicar el flujo con el estilo de Subversion es facilmente realizado. Repositorios de Git son mucho mas pequeños in tamaño de archivo que Subversion. "Why Git is Better than X" outlines the various pros and cons of Git vs other SCMs.     Branches are lightweight and merging is eas...

Notas para el desarrollo de la aplicacion Android y Turbogears como backend

Uso de Volley GPS y fechas en android Estrategias de sincronizacion Libreria para solicitudes asincronas por http con volley: http://www.itsalif.info/content/android-volley-tutorial-http-get-post-put http://arnab.ch/blog/2013/08/asynchronous-http-requests-in-android-using-volley/ http://developer.android.com/intl/es/reference/android/os/AsyncTask.html#doInBackground%28Params...%29 http://stackoverflow.com/questions/28120029/how-can-i-return-value-from-function-onresponse-of-volley http://developer.android.com/intl/es/training/volley/request.html http://www.sitepoint.com/volley-a-networking-library-for-android/ Manejo de Fechas: - Formatear una fecha en Java http://developer.android.com/intl/es/reference/java/text/SimpleDateFormat.html - Formatear la fecha segun el TimeZone https://www.javacodegeeks.com/2014/11/a-beginners-guide-to-java-time-zone-handling.html Estrategias de sincronizacion en Android: http://stackoverflow.com/questions/27210353/cloud-sync-strate...