domingo, 30 de enero de 2022

TitleCase en JavaScript

 ¡¡Hola mate amigos!! ¿Cómo están? 





En muchas ocasiones necesitamos retornar un string que nos dan en Title Case, esto es, cada palabra del string en mayuscula.


Algunos lenguajes de programación como Python ya nos traen una función para hacer esto dentro del mismo lenguaje, desafortunadamente, en JavaScript no tenemos algo asi ya pre hecho.


Pero no os preocupeis!! como siempre, aquí les traemos EL DATO, y he aqui una función que la hice para resolverme este problemita en mis proyectos js.

Aquí la definición de la función:

function titleCase(string){
let palabras = string.split(" ");
let palabrasTitled = []
palabras.map( s =>{
palabrasTitled.push(s.charAt(0).toUpperCase() + s.substr(1).toLowerCase());
});

let resultado = palabrasTitled.join(" ");

return resultado
}


Luego llamando a esta función y como único parámetro le pasamos el string a convertir, como por ejemplo:

titleCase("hoLa MundO lindo")

y el resultado será:

// "Hola Mundo Lindo"


Y aquí finalizamos, espero que les haya servido esta pequeña guía.

Les mando un saludo grande y disfruten de codear acompañado de un buen mate, té, café, mate cocido o lo que les guste!!


Si les sirvió o quieren aportar con alguna mejora, sientanse libres de dejar un comentario, que nos anima a hacer mas guiás de estas!! 😁

martes, 8 de junio de 2021

Migrando datos entre Bases de Datos en Django: Backup, y Recuperar datos

CÓDIGO FUENTE PYTHON: ¿Cómo generar backups Django desde archivo Python?

Hola amigos y amigas de mateandcode. Hoy les traemos este humilde pero muy útil tutorial de como pasar datos entre Bases de Datos.

Las razones para hacer esto pueden ser varias.

  • Backups de seguridad y su posterior recuperación
  • Cambiar de Base de Datos
  • Cambiar de tipo de base de datos
  • etc etc etc...

 

Por suerte esta tarea es muy sencilla en Django y no hay que instalar nada adicional.

 

Los toda la tarea se resume en estos 4 sencillos pasos:

  1.  Hacer el backup a la BD actual
  2. Cambiar en el settings.py la BD
  3. Migrar los modelos ORM a la nueva BD
  4. Cargar los datos en la nueva BD

 ¡¡Vamos a verlos en detalle!!

 Paso 1 - Hacer el backup

Este paso es muy sencillo, nos ubicamos en la carpeta del proyecto (si, en donde hacemos el manage.py runserver)

El comando que debemos ejecutar es el siguiente:

$ python manage.py dumpdata --natural-foreign --natural-primary -e contenttypes -e auth.Permission 
--indent 2 > dump.json

Y con esto tendremos nuestro archivo (dump.json en este caso) con la información de nuestra BD

Vemos como en nuestra carpeta principal se genera el archivo de backup "dump.json"

Paso 2 -  Cambiar en el settings.py la BD:

 Este proceso es sencillo pero dejo un pequeño ejemplo de cambiar una BD SQLite3 a una PostgreSQL en un server remoto (elephantSQL, servicio que se los recomiendo altamente para pruebas)

Simplemente vamos a nuestro archivo settings.py y cambiamos la variable que contiene información de la BD por la nueva:

Ej:

 Cambiamos de:

# SQLite
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
}
}

Por:

# PostgreSQL 
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql',
'NAME': 'kxpaeguqy',
'USER': 'kxpaeguqy',
'PASSWORD': 'oGLE0d_H82m0Ed219aaQ-pvSx7nfvKD_',
'HOST': 'motty.db.elephantsql.com',
'PORT': '5432',
}

 

 Paso 3 - Migrar los modelos ORM a la nueva BD

 Este paso es muy sencillo y debería ser conocido por la mayoria, simplemente corremos en la carpeta principal del proyecto, el comando:

$ python manage.py migrate

 Y se aplicaran todas las migraciones en la nueva BD.

 Paso 4 - Cargar los datos en la nueva BD

 Una vez que tenemos configurada la nueva BD y corriendo correctamente, solo queda cargar los datos de la anterior BD en esta nueva.

 

Para ello corremos el siguiente comando en la carpeta principal del proyecto:

$ python manage.py loaddata dump.json

Y tendremos un resultado similar a este:


nota: dump.json o el nombre que le hayamos puesto a nuestro archivo de backup

nota2: dump.json en realidad es la ruta al archivo, si lo tenemos en la misma carpeta queda asi tal cual, sino, suponiendo que lo tenemos en una carpeta en un directorio superior llamado "resguardos" por ejemplo hariamos lo siguiente:

 
$ python manage.py loaddata ../resguardos/dump.json
 

Y con esto tenemos nuestro trabajo terminado y nuestra nueva BD con los datos corriendo.


Bueno amigos y amigas espero que esta sencilla guía los haya aclarado un poco.


Saludos y aprovechen a matear copado ahora que viene el frio 😉🧉


viernes, 26 de junio de 2020

Listar paquetes instalados en Linux

LINUX TE LO DA, LINUX TE LO QUITA... aahhh, se esta volviendo mi frase de cabecera.

Como he dicho, Linux te da muchas ventajas, pero una de las desventajas mas grandes hasta el día de hoy que a mi parecer tiene, es la GRAN dificultad para tener ordenados los paquetes y las dependencias.



Llega un punto que ya ni sabes que rayos tenes instalado y tu distro termina siendo un VERDADERO CAOS 😵

En los tiempos que apenas empezaba a tocar por primera vez un Linux (Ubuntu 11.04) COMO ODIABA que sea tan dificultoso instalar un programa, no saber como diablos se llamaba para poder tipear el popular "sudo apt-get purge {nombre_del_paquete}" para poder hacerlo pelota de mi sistema.

¿O me vas a decir que nunca quisiste borrar un programa que instalaste y no sabes como corno se llama para poder borrarlo desde la consola? 🧐

¡¡PERO ESOS TIEMPOS ACABARON!! ya que hoy mate&code te trae EL DATO (como siempre 😎) para que puedas listar los paquetes y saber EXACTAMENTE COMO SE LLAMAN.

Según que tipo de sistema Linux tengas o en que este basada tu distribución vas a tener un Gestor de paquetes distinto, te dejo una pequeña guia de referencia para que sepas cual tenes según la tuya:
  • Red Hat Linux, CentOS y Fedora: yum, RPM
  • Fedoradnf, RPM.
  • SuSE: A pesar de que SuSE utiliza RPM, También cuenta con su propio gestor llamado zypper
  • Archpacman
  • Debian, Ubuntu y derivadosdpkg, APT

Comandos de listado.

Mirando la tabla anterior vas a saber cual deberias ejecutar para tu caso particualar, yo por ejemplo tengo Lubuntu 18.04, asi que me corresponde la últma opcion del listado:
  • RPM: $ rpm -qa --last
  • RedHat / CentOS: $ dnf list installed
  • OpenSuSE: $ zypper se --installed-only
  • Arch: $ pacman -Q
  • Debian / Ubuntu via DPKG: $ dpkg -l
  • Debian / Ubuntu via APT: $ apt list --installed
     
     
    Y vas a tener una salida parecida a esta:
     
     
    Para cerrar como siempre les mandamos un saludo muy grande de todo el equipo de mate&code deseando que estas pequeñas-guías-tutoriales les sean de mucha ayuda.
    
    
    😉🧉

martes, 23 de junio de 2020

ERROR EN CONSOLA DE LINUX: N: Omitiendo el uso del fichero configurado «contrib/binary-i386/Packages» ya que el repositorio «http://download.virtualbox.org/virtualbox/debian bionic InRelease» no admite la arquitectura «i386»

¡¡¡Buenos dias, tarde o noche mateadictos!!!

Hoy les traigo la solución a un problemita que me venia haciendo renegar bastante durante unas semanas y no me dejaba actualizar los paquetes de mi Lubuntu 18.04. Vale aclarar que el siguiente post deberia ser válido para todas las distribuciones basadas en Ubuntu, hasta incluso el mismo Ubuntu.


Problema en consola:

Yo tiraba el comando sudo apt-get update y luego de que se vaya mostrando/cargando etc, lo típico terminaba con el siguiente mensaje y no me dejaba actualizar nada...

N: Omitiendo el uso del fichero configurado «contrib/binary-i386/Packages» ya que el repositorio «http://download.virtualbox.org/virtualbox/debian bionic InRelease» no admite la arquitectura «i386»

¿Porque pasa esto?

Vamos a la respuesta corta. Ese repositorio ya no soporta la arquitectura de 32bits.

¿Y se puede arreglar?

pffff, ¡¡¡PERO MAS VALE PAPÁ!!! encima es re fácil...
simplemente tipeamos en nuestra consola el siguiente comando para ver y editar el archivo donde se listan repositorios en nuestro Sistema Operativo:

sudo nano /etc/apt/sources.list

Con esto se nos va a abrir ese archivo en el editor de texto de la consola de Linux

Ahi tenemos que ir y buscar el repositorio que esta causando problemas, en este caso, el de VIRTUAL BOX que en la consola se lo ve algo asi:

deb http://download.virtualbox.org/virtualbox/debian bionic contrib

Y debemos agregarle [arch=amd64] para que nos quede asi:

deb [arch=amd64] http://download.virtualbox.org/virtualbox/debian bionic contrib

Adjunto imagenes para que se hagan una mejor idea 😉



Como estaba originalmente

Como debería quedar


Y con esto ya puede probar nuevamente con "sudo apt-get update" en la consola y el problema debería desaparecer 😁

Espero que les haya servidoy salvado la vida tanto como a mi y sin mas nada que agregar Saludos y Abrazos virtuales CUARENTENESCOS!!! 💪😁👐

jueves, 7 de noviembre de 2019

Instalar Telegram en Linux (DEBIAN/UBUNTU/MINT)

 INTRODUCCIÓN



Telegram Messenger es un servicio de mensajería por Internet desarrollado desde el año 2013 por los hermanos Nikolai y Pavel Durov. El servicio está enfocado en la gestión de mensajes de texto y multimedia; inicialmente fue empleado para teléfonos móviles y el año siguiente para multiplataforma. Telegram es administrada por una organización sin ánimo de lucro cuya sede opera en Berlín.

En resumen, es un cliente de mensajeria como Whatsapp o FB Messenger pero con funcionalidades extra y un rendimiento un tanto mejor.

INSTALANDO

 

Siempre se lo puede buscar en la tienda o gestor de software de tu distro, pero si como en mi caso, "justo ahora no esta funcionando eso" o.O podes utilizar la instalación por consola que es la que siempre nos salva las papas B-).

Para ello ponemos las siguientes instrucciones en la consola:

 
sudo add-apt-repository ppa:atareao/telegram
sudo apt-get update
 
sudo apt-get install telegram
o
sudo apt-get install telegram-desktop 


y listo!! funkando y funcionando!! ;) 

A disfrutar esos bots y esos chats con un buen MATEico ;)


domingo, 3 de noviembre de 2019

Tenemos Emoji

Fuente de la imagen

Hasta no hace mucho tiempo, "emoji" era una palabra desconocida para muchos o poco usada.

Hoy a fines de 2019 , cualquier chat , sms , mensaje o cualquier red social necesita de un emoji. Un pequeño emoji puede resumir un frase, un sentimiento o un estado de animo.

Emojipedia nos muestra un emoji esperado hace bastante tiempo (para no decir años desde que el uso de emoji es popular). Esperado tanto por argentinos como nuestros hermanos uruguayos y paraguayos (y alguno que otro brasileño y sirio porque no...).

Forma parte de la Version 12 de Unicode.

Estas son las imagenes que van a usar cada uno de los proveedores/empresas. Cada uno haciendo una pequeña modificacion  o agregando algun que otro detalle; haciendo mas realista o algo un poco mas caricaturesco al emoji de la bebida preferida de este Blog C:

  • Apple
 

  • Google
 
  • Microsoft 
 

  • Samsung
 

  • Twitter 
 

  • Facebook
 

jueves, 24 de octubre de 2019

Cambiar permisos de usuario en MySQL

En este sencillo post aprenderemos como crear un usuarios con todos los privilegios para MySQL. (obviamente tenemos que tener instalado MySQL, para ello hay un post dedicado a ello en este blog).


MySQL Logo con un fondo no muy transparente o.O
Primero que todo entramos a MySQL

sudo mysql
 
o
 

mysql -u root -p
 

segun como tengamos configurado nuestro usuario root. 




Luego desde el prompt de MySQL ejecutamos lo siguiente:

mysql> CREATE USER 'nombre_usuario'@'localhost' IDENTIFIED BY 'password';

Y luego le damos todos los privilegios al usuario con el siguiente comando:

 mysql>GRANT ALL PRIVILEGES ON *.* TO 'nombre_usuario'@'localhost' WITH GRANT OPTION;

 Y ya podemos salir de mysql porque el trabajo esta terminado :D

mysql> exit

Saludos amigos y ojala este post les haga la vida mas facil y les evite las miles de frustraciones que seguro (como yo) ya tuvieron :D

BONUS TRACK

¡¡PERO OJO!! capaz vos no querías darle TOOOODOS los privilegios al nuevo usuario y es entendible. ¿¿y ahí?? ¿Qué se hace?

¡Tranca che! Vos sabes que en mate&code no te vas sin EL DATO, por eso te dejo esta mini guía para comprender el comando GRANT de SQL:

En realidad la instrucción seria algo asi como esto:


GRANT [permiso] ON [Base de Datos].[Tabla/s] TO [usuario]@'localhost'


Vamos a descomponer el comando para entenderlo mejor:

  • GRANT: Otorga privilegios a un usuario especificado en las BD especificadas.
  • [permisos]: Aquí podemos elegir entre varias opciones según la cantidad de privelgios que queremos darle al usuario. Las mismas se listan a continuación:
    • ALL PRIVILEGES: Otorga todos los privilegios.
    • SELECT: Permite hacer consultas.
    • INSERT: Permite Insertar registros nuevos.
    • UPDATE: Permite actualizar registros.
    • DELETE: Permite eliminar registros.
    • CREATE: Permite crear tablas.
    • DROP: Permite eliminar tablas.
    • ALTER: Permite modificar la definición de las tablas.
    • INDEX: Permite crear índices en tablas existentes.
    • GRANT OPTION: Permite dar o quitar privilegios a los usuarios de la BD.
* NOTA: Estos se pueden combinar de cualquier forma para dar los privilegios específicos que queramos darle a un usuario determinado. Obviamente ALL PRIVILEGES si se lo usa debería ir solo ya que da todos los privilegios y no tendria sentido combiarnlo con otro.

  • [BD]: Indica sobre que BD queremos dar los privilegios antes mencionados. Si usamos * decimos que le damos permiso sobre TODAS las BD del sistema.
  • [Tablas/s]: Indica sobre que Tablas de la/s BD indicadas anteriormente queremos darle permisos al usuario. Si usamos * decimos que le damos permiso sobre TODAS las Tablas de las BD indicadas.
  • [usuario]: A que usuario le queremos dar los permisos detallados anteriormente. Si usamos el "*" diremos que TODOS los usuarios tienen permisos para realizar dicha acción.
Veamos un par de ejemplos para entender esto:

GRANT SELECT, INSERT, UPDATE, DELETE ON *.* TO 'jorgehoracio'@'localhost'

Dimos permisos de Consultar, Insertar, Actualizar y Eliminar registros a jorgehoracio sobre todas las BD y todas las tablas existentes.
GRANT SELECT ON propietarios TO '*'@'localhost'
Se dieron permisos a TODOS LOS USUARIOS para Consultar la tabla propietarios.
Para eliminar los permisos se utiliza la clausula REVOKE en lugar de GRANT y bajo la misma estructura.
REVOKE ALL PRIVILEGES ON *.* TO 'luisandreseim'@'localhost'
 En la anterior sentencia se le quitaron todos los privilegios al usuario luisandreseim de todas las tablas y todas las bases de datos.

Pero este tema de quitar permisos lo veremos con mas detalles en una próxima entrada.

¡AHORA SI FINAL FINAL DE TODO!

Espero que esta sencilla guía les ayude a volver a tomar el control sobre sus BD's 😉

¡¡Un abrazo virtual grande y a disfrutar de esos mates en estos días frescos!!