Ir al contenido principal

Entradas

Cómo extraer una columna específica de un archivo CSV

Recientemente me encontré con un pequeño reto, simple pero súper útil cuando no quieres complicarte la vida. Necesitaba de una serie de archivos en formato CSV, separados por comas, extraer únicamente las primeras 3 columnas de 4, ¡sí!, pocas columnas, pero con cientos de filas que no estaba dispuesto a editar a mano, y descubrí el comando cut, lo utilicé de la siguiente manera: [jonas]$ cut -d "," -f1-3 origen.csv > destino.csv Donde -d hace referencia al delimitado en el el archivo, -f1-3 hace referencia a las columnas que vamos a extraer, de la número 1 a la 3, origen.csv hace referencia al archivo de original sobre el cuál vamos a tomar las columnas que necesitamos y finalmente destino.csv que es el archivo destino que almacenará el nuevo resultado, y listo!, podrías complicarte la vida con awk , pero si no eres tan experto, es algo que no vas a utilizar diario y no necesitas invertir tanto tiempo, pues, algo simple como cut te va bien.

How to delete one or more documents from your MongoDB repository

MongoDB seems to be complex at first sign, but in fact is not, you could perform a complete CRUD easily if you expend some time on the documentation. For example, lets say you need to delete some documents (rows, if you are thinking on a traditional RDBMS). First you want to find all these documents to be removed. > db.your_collection.find({ "cvectry": "MX", "layer_id": 20 }, {}) { "_id" : ObjectId("5e8123e8892355c921e6b436"), "layer_id" : 20 } > After finding all these documents to be removed, then you want to perform the following delete method as follow: > db.your_collection.remove({ "cvectry": "MX", "layer_id": 20 }, { justOne: true }) WriteResult({ "nRemoved" : 1 }) > In this case, after finding all these documents that match with "cvectry": "MX", "layer_id": 20. I got the result on the first command I ran, so I just wanted to delete just on...

Luna mágica, tarde especial

 Y me encontré un atardecer común a simple vista pero con un despliegue mágico de cambios en colores y tonalidades.  Mira esto. Observa bien la imagen, porque en tonalidades negro hay una palmera. Mira la foto en un lugar obscuro. No recuerdo la fecha exacta, pero fue en enero 2021.

I have been playing with pdb for debugging code (introductory level)

Well, this is time to talk about something I have been playing, the pdb standard module python provides. I'll talk in the context of py 3.7+ since there are differences that improve how to work with this. Well, first of all, as you should found in this field and coding experiences and challenges. You have to deal with bugs, unexpected errors, or even worst, unexpected behavior which sometimes is most difficult to trace. Here are some lights on how to use it, this is really useful if your life is coding :). Consider the following commands table. Command Description s Execute the current line and stop at the first possible occasion. n Continue the execution until the next line in the current function is reached or it returns. p Shows the values of variables in context code. ll List the whole source code for the current function or frame l In contrast to ll, this command shows a shorter snippet of code. l. If you pass the param . to this command, it will show you always 11 li...

Finalmente me encontré con ella y desde el día #1, hemos disfrutado juntos...

Hace más de 4 años que nos mirábamos, pero nos ignorábamos, fue quizá por que no era el momento, yo tenía una relación más dinámica, más demandante, más intensa, sin embargo en ese lapso de 4 años si tuve 3 encuentros con la que hoy ahora comienzo a sentirme entregado: Yoga He hecho Crossfit por mucho tiempo, lo he amado, y me he entregado al 100%, ese ha sido mi receso del día en una vida adulta. En el lapso de los últimos 4 años, un amigo -colombiano por cierto- me invitó a su casa a hacer yoga, él en ese tiempo era maestro de yoga en un pequeño pueblo pegado al mar en las costas de Quintana Roo. Tomé 3 clases con él, y desde la primera, quedé enamorado, sabía que quería intentarlo pero estaba concentrado en un ejercicio de más alto impacto, supongo que la edad también juega un factor importante, al menos eso pienso. Hoy con el contexto que hemos estado viviendo, el encierro y aislamiento principalmente, nuestro reto más importante, toca reconfigurarse a si mismo, probar nuevos c...

Obturación, apertura e ISO, configuraciones que debes saber sobre tu cámara fotográfica

La fotografía es una de las actividades del segundo bloque de pasiones que más disfruto, el primer bloque, son las aventuras, los deportes de aventura y extremo, viajar y ejercitarme cuando no estoy programando. Bien, siempre he procurado conseguir las mejores tomas fotográficas, y sin saber, también siempre utilicé las funciones automáticas de las cámaras que he tenido, pensando que ella haría lo mejor por mis fotos, ¡que equivocación!, digo las configuraciones automáticas están hechas para sacar lo mejor posible del contexto de la foto, pero manejar la cámara manualmente es otro boleto, no lo digo por complicado, sino que cuando te das cuenta de la importancia de manejar solo estas 3 caracteristicas (quizá las más importantes) agradeces haber aprendido este triángulo de la configuración fotográfica, con ese conocimiento y con suerte... con cualquier cámara puedes sacar muy buenas fotografías. Reconozco que la única característica que siempr...

¡Atardecer de ensueño!

Aunque vivo dentro de la ciudad, el bullicio y el exceso de luz en los alrededores, es también muy común (si eres observador), ver ciertos fenómenos y juegos de colores en el cielo, sobre todo al ponerse el sol. Dejo aquí algunas de las imágenes que logré captar una linda tarde de marzo 2020.

Eclipse lunar Prenumbral o La luna del Trueno 4 de julio 2020

Ayer 4 de julio intenté obtener algunas fotografías del eclipse lunar llamado Luna del Trueno, que según cálculos astrológicos se lograría observar en gran parte de Latinoamérica, incluido México. Logré tomar algunas fotos, no con mucho éxito pero es un comienzo.

Nuevos amigos, aunque de otra especie...

Hoy quiero compartir la gratitud que siento al recibir invitados de otras especies en casa, y en mucho esto se debe a los ajustes que realicé en mi patio trasero, que aunque no es muy grande, construí una pequeña jardinera en donde sembré algunas plantas y no solo me da  sombra tranquilidad fauna visitante aire fresco y una sensación de relajación También puedo convivir y gozar de otra de mis actividades favoritas, la fotografía. Esta vez me visitó una iguana, debo decir que son animales pacientes y si no haces movimientos bruscos hasta puedes acercarte a ellos tanto como a una distancia de 10 a 5 centímetros, ¡increíble!, incluso, abusando de su confianza, le alcancé a tocar la cola sin que se mostrara aterrada o violenta. Se dejó fotografiar, les dejo algunas imágenes que me encantaron.

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 . ...

Ejercicios que te pondrán activo en esta cuarentena en casa: Reto COVID-19

Toma esto como un reto, y tu objetivo será lograr adoptar el hábito de ejercitarte incluso en casa, incluso cuando no hay gente a tu alrededor, incluso cuando no sientas la motivación de un instructor. ¡Lo único que necesitas es voluntad! , ¡anímate! Q4 (15mins) burpee 10 a 1 Pistols 1 a 10 Core (4 mins) 20 secs trabajo, 10 secs descanso plancha: Mano der plancha: Mano izq plancha: Pie der plancha: Pie izq plancha: Mano der, pie izq plancha: Mano izq, pie der plancha: Estrella mano der, pie y mano iz arriba plancha: Estrella mano izq, pie y mano der arriba /\-/\-\/-\/-\/-\/-\/-\/-\/-\/-\/ Q5 21, 18, 16, 14, 12, 10 (entre cada ronda 50 DU) 1: Push-press estricto (1 o 2 garrafones de agua según tu condición) 2: Peso muerto con 2 garrafones de agua /\-/\-\/-\/-\/-\/-\/-\/-\/-\/-\/ Q6 21, 15, 9 1: Sentadillas con dos garrafones 2: Hollowrock (40) 3: Swings (50) Core 4 sets de 15 bicicletas (cada pierna) /\-/\-\/-\/-\/-\/-\/-\/-\/-\/-\/ Q7 20mins amrap ...

Ejercicios para mantener la habilidad matemática y de programación

En unos de mis cursos recientemente tomados encontré un sitio que me pareció interesante, y es https://projecteuler.net/ Esta lleno de problemas comunes que podemos practicar y mantener nuestras habilidades matemáticas y de programación. ¡Ejercicios que podemos resolver en nuestros tiempos libres!

How a feature collection of points should looks like

¿How a feature collection of points should looks like? Do not forget, this is a JSON notation. {     "type": "FeatureCollection",     "features": [{         "type": "Feature",         "geometry": {             "type": "Point",             "coordinates": [-105.02, 39.61]         },         "properties": {             "prop0": "value0"         }     }] }; For example the small code above can be added to a Leaflet library to see how this run. intelimapa.com is using this approach for feeding its clients maps.

Django REST framework ¿cómo mandar datos a un endpoint?

import requests import json url = "http://ruta/de/mi/endpoint/" headers = {     "Authorization" : "Token 157a4a8dd0e1e8b9078c5494e35ef49e9fcb7dd7",} } payload = {     "distrito" : 1,      "seccion" : 1,      "pan" : 1,      "pri" : 1,      "prd" : 1,      "morena" : 1 } files_info = {      'foto': ('index.jpg', open('index.jpg', 'rb'), 'image/jpg') } response = requests.post(url, headers=headers, files= files_info , data=payload) print response.text Saludos,

Python para escribir archivos en el sistema de archivos

Recientemente me contactó un amigo que programa en Java, y resulta que está haciendo algún tipo de integración en un sistema donde hace su residencia y me pidió un ejemplo sobre cómo generar archivos en texto plano con python. Aquí el ejemplo: params = { "foo": "This is a string", "bar": 200 } filename = 'texto_python.txt' file_to_write = open(filename,'w') file_to_write.write('El contenido del archivo es: {0} y esto un número {1} \n'.format(params["foo"], params["bar"])) file_to_write.write('Más texto.') file_to_write.close() Es un ejercicio básico pero siempre necesario. Ver en repo https://github.com/jonanx779/python-stuffs/blob/master/writing_file.py

Medio año, corte de actividades, auditoria!, actividades hechas, en tránsito y por hacer.

Los planes funcionan y se ven hermosos justo al inicio de  tus actividades, metas y objetivos a alcanzar, en el camino por alguna razón la realidad no cuadra con el planteamiento inicial, jaja... pequeños errores de cálculo nos hacen más lentos, más rápidos o de plano nos inmovilizan (es decir, no avanzamos). En mi caso, claro, hubo error de cálculo, pero un error con margen planeado. El calendario que me plantee al inicio del año comenzó bien hasta que el factor trabajo le subió al tono a mis actividades, y el factor tiempo se vio impactado, jaja pequeño detalle. Backlog.  Moví mis horarios de ejercicio pasando de 7am a 7pm.  Reduje el número de días a ejercitarme a solo 3 días por semana, una decisión complicada para quién ama el ejercicio. Pasé a la mañana, mis reuniones de trabajo, comenzando a las 6am. Y pasando otras a las 11pm (problemas de timezones: tan lindos ellos!) Ya con todo organizado, pues me puse a trabajar, leer, estudiar, según el calen...