Ir al contenido principal

Entradas

Mostrando entradas de junio, 2020

Algoritmos en ciencias de la computación, parte 1: búsquedas binarias

En la práctica los algoritmos nos ayudan a resolver problemas en diferentes escalas de complejidad y para diferentes situaciones, es por ello que vale la pena revisar y sobre todo practicarlos regularmente, todo con la finalidad de fortalecer nuestro entendimiento y sobre todo nuestra habilidad de resolver problemas y también mejorar la calidad de nuestro código fuente, independientemente del lenguaje de programación que utilicemos. En esta ocasión revisaremos con detalle uno de los métodos de búsquedas más utilizados y estudiados en las ciencias de la computación. El método de búsquedas binarias se utiliza mucho en situaciones en donde requieres hacer búsquedas de manera eficiente y sobre todo rápidas, es por ello que analizaremos un ejemplo y correremos algunas pruebas (en mi caso utilizaré Python, sin embargo intentaré compartirles la versión en Java posteriormente). Imaginemos el siguiente ejem...

Y por si fuera poco (+ out-of-topic) intentaré de nuevo mi huerto en casa

Hace muchos años (justificando no exponer mi edad), sembré algunas plantas que brindaban cosecha en casa, y se dieron bien... Ahora en 2020, ya con un poco más de espacio en general, pero con menos áreas verdes, hice algunos ajustes en mi patio trasero y monté un mini jardín, este se compone de una línea recta en paralelo al muro trasero. Se trata de una hilera bambúes japoneses con una envergadura de 3 metros cada uno. En fin, este es un tema que requiere una entrada única y exclusivamente para los bambúes y cómo es que llegué a ellos o ellos a mí. Regresando a la siembra, pues un año atrás compré dos sobres de semillas en el súper, en lo personal me encantan las espinacas y por lo regular no siempre se encuentran en el mejor estado. Y siempre pensé, deberían tener más cuidado para ponerlas a la venta o yo debería poder tener mis hortalizas en casa y cosecharlas yo mismo. Pues me compré las semillas de espinacas, pero no contento con eso, ob...

MongoDB, ¿cómo acceder a un campo array y filtrar cuando no sea vacío?

En mongo podemos hacer consultas extremadamente sencillas pero sobre todo ágiles. Por ejemplo, pensemos que dentro de nuestra colección miembros necesitamos traer todos los documentos que contengan dentro del campo email (un array) por lo menos un correo electrónico. Tendríamos que correr el siguiente query: > db.miembros.find({"email":  {$exists: true, $not: {$size: 0}} }, {}) Ahora bien, pensémos que por alguna razón desconocida, los datos en los documentos tienen alguna inconsistencia  como por ejemplo a alguien se le ocurrió guardarlos en la siguiente notación: email: ["","email@domain.com", "", ""] ¿Qué desastre verdad?, aún así, en el momento en que estas intentando sacar un conjunto de datos, lo que requieres es acceder al menos a las colecciones que por lo menos tiene 1 correo electrónico dentro. Entonces tendríamos que añadir lo siguiente al query anterior: > db.miembros.find({"email":  {$exists: true, $no...

Estructura base de una clase en Python

Recuerdo cuando comencé a programar en Python, en ese tiempo utilizaba Zope, me encantaba programar en DTML, pocas veces en ZPT, y de vez en cuando utilizaba Python mediante el producto (hablando en términos Zopistas), External Methods . Eran tiempos de aprendizaje, recién egresaba de la carrera, tenía trabajo y había mucho que aprender pero ahora aplicado a un entorno real. Pues bien, programé de varias formas, con más de un método, y recuerdo que en una temporada me negué a la programación orientada a objetos, la causa principal, no entendía, me frustraba y me daba terror, sumándole que sentía que me estancaba en las cosas que tenía que desarrollar (error de principiante). Ahora, después de varios años, y habiendo experimentado, unos que otros lenguajes de programación, habiendo tenido que mantener, actualizar y evolucionar código, mío y de otros, el contexto me forzó a entender, aprender y utilizar OOP. Y heme aquí, compartiendo esta...

Cómo dar acceso a una ip externa a postgresql y concediendo permiso desde iptables

Recientemente tuve la necesidad de aplicar un par de ajustes en nuestro SGDB  (postgresql) en uno de nuestros entornos de desarrollo. Escenario encontrado: No tenía acceso al usuario administrador de PG postgres Contaba con un usuario de sistema ( Linux ) sudoer PG no estaba preparado para permitir conexiones desde fuera El sistema operativo tenia activo iptables y el puerto 5432 no estaba habilitado para escuchar en el exterior en una ip específica. Me tocó leer un poco sobre cómo configurar PostgreSQL para permitir conexiones desde fuera y cómo configurar una regla en iptables que permitiera acceso al proveedor desde el exterior al puerto que necesitaba estuviera escuchando la ip del proveedor. Resumiré en las siguientes líneas las configuraciones más importantes para: Proveer acceso desde PG a un usuario externo. Permitir comunicación entre la ip del usuario externo y nuestro puerto en el servidor donde está nuestro PG . ...