martes, 2 de junio de 2020

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:
  1. Proveer acceso desde PG a un usuario externo.
  2. Permitir comunicación entre la ip del usuario externo y nuestro puerto en el servidor donde está nuestro PG.

postgresql.conf

Primero localiza donde está tu archivo de config, puedes utilizar

#$ find / -name "postgresql.conf"

Debe aparecer la ruta donde estan estos archivos de configuración.

Descomentas la línea que dice y actualizas el valor a * si no lo tuviera.

#$ vi postgresql.conf

listen_addresses = '*'

pg_hba.conf

Añades la siguiente línea según tus necesidades.

#$ vi pg_hba.conf

host    db_name             user_db             127.0.0.1/32             md5

127.0.0.1/32 se refiere a la ip que deseas que acceda desde el exterior.

md5 se refiere al método de autenticación. Por defecto se usa md5.

Listo, ahora reinicas el servicio, en Linux podría ser:

#$ service postgresql restart

Finalmente para iptables, puedes ejecutar el siguiente comando:

#$ iptables −A INPUT −s 66.228.57.221 −p tcp −−dport 5432 −j ACCEPT

Para revisar si se añadió la entrada a iptables puedes ejecutar:

#$ iptables -L

Listo, puedes probar el acceso desde la máquina a la cual concediste el permiso de comunicación.

jueves, 14 de mayo de 2020

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
1: HSUP (5)
2: Situps (30)
3: Saltos pasando la silla (10)

Q8
5 vueltas
10 pushups con deficit 5 secs

5 vueltas menor tiempo posible 
triceps en banco (15)
Vups (20)
mountain climbers (30 pares)

domingo, 1 de diciembre de 2019

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!

lunes, 11 de noviembre de 2019

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.

sábado, 21 de septiembre de 2019

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,

viernes, 9 de agosto de 2019

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

miércoles, 26 de junio de 2019

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 calendario publicado en un post anterior.

Me inscribí a clases de francés (que por cierto ya solo quedo yo en la clase!..c'est la vie mon amis). Va bien, un poco dificil la curva de aprendizaje, sobre todo cuando es tu tercer idioma, ¡si!, voy por el tercero. Francés no es un idioma que traduces literalmente, si logras entender esto rápido el aprendizaje tiende a ser más fluido, porque dejas de cuestionarte ¿cómo se traduce literalmente esto que estoy pensando ahora mismo?, o ¿cómo digo lo que quiero decir como yo quiero?

Java en si, como lenguaje, aprendizaje bien, el problema es  entender todo ese bagaje teórico conceptual, es ahí lo más complicado, luego suma aprender un framework, luego otras herramientas al rededor de lo que originalmente querias aprender, etc., el estatus actual es, va bien, pero va lento, pero también sólidio.

ReactJS, bueno me puse a leer y leer, con menos tiempo que con Java, pero más tiempo que los demás lenguajes, al final tengo toda la teoria, tengo práctica pero no he puesto el conocimento a trabajar en algo real. Es lo que sigue.

Python y PHP, no he invertido tiempo en realidad, sin embargo no es algo que me preocupe mucho, es decir en Python si programo y sigo haciéndolo cada fin de semana, en uno de mis proyectos más queridos, asi que la práctica sigue y evoluciona conforme retos en el camino. PHP de plano no he hecho nada, pero no lo considero caótico puesto que puedo programar sin problemas en PHP, ahora no ha sido necesario.

iOS, la verdad le he dedicado muy muy poco tiempo, y aunque ya tengo el conocimiento para programar a nivel básico, creo que aquí si voy atrasado. Falta de tiempo.

Bueno, creo que no me puedo quejar, las cosas van bien, sobre todo que cada paso es firme. En algun punto destinaré más tiempo a iOS, y fortalecer Python.🙌