Pain is my greatest enemy

“Pain is my greatest enemy. Ive searched far and wide to find ways to kill it. But eventually i realized that pain is not the enemy. Its a no nonsense, no bullshit, honest friend. Pain is a signal for you to heal. Its a sign that there’s something wrong and im not just talking about the physical, it tells you there’s a relationship that needs attending to, that challenges your strength, your faith and humility. But painkillers they only hide the pain, but They don’t take it away. The best way to recover from pain is to endure it. Then and only then can we heal. Simply put… If there is no healing there is no pain”. Ex with benefits

Almacenar Archivos en S3 desde Django

A pesar de que ya existe un post similar, hago necesario escribir la versión condensada para alojar archivos en S3 usando Django.

TL;DR

  1. Cree un bucket en S3
  2. Cree un usuario IAM
  3. Pegue esto en la politica del bucket modificando los valores correspondientes

    {
        "Statement": [
            {
              "Sid":"PublicReadForGetBucketObjects",
              "Effect":"Allow",
              "Principal": {
                    "AWS": "*"
                 },
              "Action":["s3:GetObject"],
              "Resource":["arn:aws:s3:::<BUCKET_NAME>/*"
              ]
            },
            {
                "Action": "s3:*",
                "Effect": "Allow",
                "Resource": [
                    "arn:aws:s3:::<BUCKET_NAME>",
                    "arn:aws:s3:::<BUCKET_NAME>/*"
                ],
                "Principal": {
                    "AWS": [
                        "<USER_ARN>"
                    ]
                }
            }
        ]
    }
  4. Instale

    pip install django-storages boto3
  5. Cree un archivo en la carpeta del proyecto, al lado de settings.py llamada custom_storages.py y añadale este contenido:

    from django.conf import LazySettings
    from storages.backends.s3boto3 import S3Boto3Storage
    
    settings = LazySettings()
    
    
    class MediaStorage(S3Boto3Storage):
        location = ""
        bucket_name = settings.AWS_MEDIA_STORAGE_BUCKET_NAME
        access_key = settings.AWS_MEDIA_ACCESS_KEY_ID
        secret_key = settings.AWS_MEDIA_SECRET_ACCESS_KEY
        region_name = settings.AWS_MEDIA_S3_REGION_NAME
        custom_domain = settings.AWS_MEDIA_S3_CUSTOM_DOMAIN
  6. Al final del archivo de settings.py incluya esto reemplazando por los valores correctos

    AWS_MEDIA_STORAGE_BUCKET_NAME = '<BUCKET_NAME>'
    AWS_MEDIA_S3_REGION_NAME = '<AWS_REGION>'
    AWS_MEDIA_ACCESS_KEY_ID = '<SECRET_IAM_KEY_ID>'
    AWS_MEDIA_SECRET_ACCESS_KEY = '<SECRET_IAM_ACCESS_ID>'
    AWS_MEDIA_S3_CUSTOM_DOMAIN = '%s.s3.amazonaws.com' % AWS
    DEFAULT_FILE_STORAGE = '<PROJECT_NAME>.custom_storages.MediaStorage'

Vincular Membership a Proyecto Taiga

Desde hace unos 4 meses que me dio la fiebre de los contenedores y quería volver todo un contenedor tuve la genial idea de poner Taiga en un contenedor, lo bueno fue que lo logré, lo malo es que tuve problemas épicos con los archivos estáticos y configuraciones de correo.

Para mitigar esto, me veo en la obligación de colocar este código para la vinculación de usuarios de una manera manual.

from taiga.users.models import User, Role
from taiga.projects import models
for p in models.Project.objects.all():
    print(p.id, p.name)
for u in User.objects.all():
    print(u.id, u)
for r in Role.objects.all()
for r in Role.objects.all().order_by("project"):
    print(r.id, r.project, r)

project_id = 4
user_id = 7
role_id = 21
p = models.Project.objects.get(pk=project_id)
u = User.objects.get(pk=user_id)
r = Role.objects.get(pk=role_id)

models.Membership.objects.create(project=p, user=u, role=r)

Cambiar de Dominio en Wordpress

Además de lo obvio, y con obvio me refiero a cambiar el Virtual Host también necesitaremos actualizar nuestra base de datos

UPDATE wp_options SET option_value = replace(option_value, 'http://54.214.66.247', 'http://54.191.241.251') WHERE option_name = 'home' OR option_name = 'siteurl';

UPDATE wp_posts SET guid = replace(guid, 'http://54.214.66.247','http://54.191.241.251');

UPDATE wp_posts SET post_content = replace(post_content, 'http://54.214.66.247', 'http://54.191.241.251');

UPDATE wp_postmeta SET meta_value = replace(meta_value,'http://54.214.66.247','http://54.191.241.251');

Instalando Freeling 4.0 en Ubuntu 16

Hace tiempo escribí un post sobre cómo instalar Freeling 4.0 en OSX y es tiempo ya de pasar los cambios a producción.

Posiblemente en un futuro cercano cree una receta ansible para facilitar el trabajo, pero primero como me manda la praxis, prefiero hacerlo a mano.

Necesitamos algunas dependencias

sudo apt install libboost-regex1.58.0 libicu-dev libboost-system1.58.0 libboost-thread1.58.0 libboost-program-options1.58.0 libboost-filesystem1.58.0 

Luego podremos descargar e instalar freeling

wget https://github.com/TALP-UPC/FreeLing/releases/download/4.0/freeling-4.0-xenial-amd64.deb
sudo dpkg -i freeling-4.0-xenial-amd64.deb 

Y ya está.

No instalo desde código fuente esencialmente porque para compilar los binarios se necesitan las versiones de desarrollo de libboost, que son pesadas, y el proceso toma bastante tiempo y al final ocupa bastante espacio.