Soy Ingeniero Informático, trabajé como profesor un buen tiempo, luego como administrador de servidores y desde hace ya varios años como DBA eso sí, sin perder nunca el gusto por el mundo Linux y OpenSource.
Lo anterior nos mostrará el resultado ordenado por clave, es decir; llave1, 2 y 3 respectivamente:
Pero si lo que queremos es ordenar por el valor entonces debemos organizar nuestro código así:
dic ={'llave1':20,'llave3':3,'llave2':233}
lista =list()for x,y in dic.items():
lista.append((y,x))
lista =sorted(lista, reverse=False)for x,y in lista:
print(x,y)
Y obtendremos un resultado como este:
En caso de querer ordenar de mayor a menor solo bastaría con cambiar reverse=False por reverse=True
Se presentó una situación bien curiosa con un linked server creado en un SQL Server 2008 r2 que iba hacia un PostgreSQL.
El linked server denominado LINK_PSQL me mostraba el catálogo a mi (el DBA) y a otros dos compañeros de desarrollo
pero a otros compañeros no. Pensé que quizás era la versión del Managment Studio así que les hice la maldad y les dije que actualizarán a la última versión disponible que era la que teníamos a los que si nos funcionaba (maldad porque es muy lenta …) y aún así les seguía fallando.
Revisamos permisos a nivel de red, de base de datos y nada…
La solución llegó cuando decidí crear la conexión usando el ODBC y registrando el DSN
Se borró el linked server anterior y se recreo usando el Provider Microsoft OLE DB Provider for ODBC Drivers e invocando el DSN anterior
Y ahora todos los compañeros pueden desplegar el catálogo.
Hoy vamos a tratar de establecer una conexión entre Oracle Apex y SQL Server solo por mero entretenimiento, aunque este tipo de conexiones (básicamente es de oracle a sql server) pueden servir para una gran cantidad de cosas que la imaginación del desarrollador pueda tener (generar reportes, crear aplicaciones, usos de APIS, monitoreo, etc).
Como DBA puedo de pronto estar interesado en generar este tipo de conexión quizás para hacerme a un tablero centralizado de monitoreo desde donde pueda tener en un solo formulario información puntual (que solo nos interesa a los DBA) de una o varias bases de datos al tiempo.
Para empezar, si no sabes qué es Oracle Apex te recomiendo que te des una pasadita por este enlace para que te enteres del asunto; pero a groso modo, Oracle Apex es una plataforma de desarrollo gratuita que puedes usar con cualquier versión (desde la 9i … creo) y distribución de bases de datos Oracle (XE, SE, EE).
Es bueno que la ensayen; les aseguro que les va gustar bastante; es relativamente muy fácil de manejar para usuarios que tienen un nivel básico de SQL y PL/SQL y super, super fácil para aquellos que además de esto conocen o tienen alguna experiencia con javascript (aunque no es determinante para usarla).
Tengo en otro server un windows con SQL Server 2008 SE r2 con una base de datos de prueba que nos servirá para validar las consultas.
Con las bases de datos ya configuradas (incluyendo el Apex) y funcionando debemos entonces buscarnos el ODBC (Open DataBase Connectivity) y las tools que nos servirá de intermediario entre Oracle y SQL Server y que podemos descargar de esta web.
Yo me voy a bajar este que el que coincide con el sistema operativo donde está el Oracle:
Pero si Ud. requiere otro para otra distro diferente también puede haciendo clic aquí y eligiendo la adecuada:
Ya con el software descargado todo es cuestión de cargarlo en nuestro Linux o si no quieres dar toda esa vuelta pues te lo bajas directamente a tu consola usando wget:
Instalamos el odbc teniendo en cuenta que éste instala sus librerías por default en la ruta /opt de linux así que ese directorio debe existir:
Escribimos la palabra YES y presionamos la tecla Enter para aceptar la licencia
Hacemos lo mismo con las tools
Validamos que se haya creado el directorio microsoft en el /opt de nuestro Linux
y luego verificamos el nombre de la librería para cargarla (o verificar que quedó registrada) en el odbcinst.ini. Accedemos entonces a la siguiente ruta: /opt/microsoft/msodbcsql17/lib64 y listamos los archivos
El archivo que se visualiza en color verde debe ser el mismo que nos debe aparecer en el odbcinst.ini; algo como esto:
En ese archivo quedan registrados nuestros controladores odbc, en mi caso tengo el de PostgreSQL con el que más adelante haremos también un artículo; el MySQL y ahora el SQL Server.
Vamos a cambiarle nombre a ese identifiacador por algo más corto, algo como [ODBC_Server]:
Si estamos usando el firewall, debemos adicionar el puerto por el que escucha el SQL Server; en mi caso como es de pruebas está en el puerto por default (nada recomendable…)
Es hora de configurar una conexión y probar… Vamos entonces a editar nuestros archivo odbc.ini usando el comando vi o nano:
nano /etc/odbc.ini
E ingresamos algo similar a esto:
Guardamos….
En el entorno de windows esto es lo que tengo:
Y vamos a probar que desde el Linux nos devuelva esos mismo registros. Digitamos entonces algo como esto:
isql -v SQL_Server usrtest usrtest
Nos debe aparecer algo como esto:
Lo que nos indica que por lo menos, ya tenemos conexión…
Ahora generamos la consulta para obtener los datos del SQL Server, de la tabla tbl_prueba de la base de datos DB_TEST
Eureka!!
Ya tenemos nuestro CentOS conectando y recuperando información de nuestro SQL Server ubicado en un servidor Windows.
En el próximo capítulo vamos a ver cómo aprovechar esto para configurar el hs de Oracel y desde APEX generar reportes y otras cositas sobre la base de datos SQL Server.
En el año 2008 me encontraba super aficionado aprendiendo Python de forma autodidacta, recuerdo que para aquella época me conseguí un pdf que me sirvió muchísimo, “Introducción a la Programación con Python”, escrito por Andrés Marzal e Isabel Gracia del Departamento de Lenguajes y Sistemas Informáticos de la Universitat Jaime I.
Aún se puede encontrar disponible en algunas webs…
Una vez terminado ese pdf me anime a ir un poquito más allá, y habiendo conocido ya otros lenguajes de programación como (los de la época claro está) Pascal y su versión gráfica Delphi (creo que iba por la versión 7) del que prefería su equivalente Lazarus Pascal por ser free y del mismo modo el Visual Basic, del que prefería el Gambas de Linux (es genial, lástima que sus desarrollos no fueran multiplataforma) ; quise buscar una interfaz gráfica para trabajar con Python (multiplataforma o que por lo menos funcionara bien en Linux y Windows) y afortunadamente encontré dos (de entre varios) que me llamaron mucho la atención y que comencé a “cacharrear” como decimos por acá en Colombia. El VisualWx y el Boa Constructor.
Después de aprenderlos a usar y crear pequeños programas (por aquellos días andaba también muy de moda el tema de los blogs), cree un blog en Blogger y diseñe un pequeño tutorial donde mostraba cómo usar el VisualWx y luego el Boa Constructor.
En aquella época me sobraba un poco más de tiempo que ahora, pero el acceso a internet no era tan amplio como hoy y con las ocupaciones laborales y familiares las publicaciones fueron siendo cada vez más espaciadas y dejé de publicar en noviembre de 2016.
Quiero retomar el compartir mis experiencias y conocimientos; sigo sin mucho tiempo por lo que este blog ya con hosting y dominio pago (a ver si así me esfuerzo más en sacarle provecho a la inversión) no tendrá una publicación periódica pero haré mi mejor esfuerzo en tratar de publicar lo más seguido posible o si Usted amig@ lector se anima a publicar alguna experiencia, algún tratamiento a un error de un server, de una base de datos, un tuning a un query, un pequeño truco de python, django, flask, etc; escribe que seguramente te lo publicaré.
Me alegra estar de vuelta; para mi esto es como un borrón y cuenta nueva en este mundo de los blogs y siempre serán bienvenidas las sugerencias y/o aportes.