martes, 27 de octubre de 2020

Primeros Pasos de SQL Comandos (mysql)

 

La gestión de base de datos es una de las tareas más comunes que competen a todas las industrias, desde las más pequeñas, hasta las más grandes corporaciones. Es normal que muchos utilicen herramientas como en el caso de PhpMyAdmin para administrar la base de datos, pero no siempre es el caso cuando no existe interfaz gráfica y no hay más remedio de utilizar la consola, por eso hoy les traigo como administrar MySQL desde la consola y sobrevivir en el intento.

 

Iniciar sesión.

Nota: Utiliza el parámetro -h si solo es necesario.
 mysql -h hostname -u root -p

 

Crear una base de datos en el servidor SQL.

create database [databasename];

 

Listar todas las bases de datos en el servidor SQL.

show databases;

 

Cambiar de base de datos.

use [db name];

 

Ver todas las tablas en la base de datos.

show tables;

 

Para ver los formatos de los campos de la base de datos.

describe [table name];

 

Borrar la base de datos.

drop database [database name];

 

Borrar una tabla.

drop table [table name];

 

Mostrar toda la información de una tabla.

SELECT * FROM [table name];

 

Devuelve las columnas y la información de las columnas correspondientes a la tabla designada.

show columns from [table name];

 

Mostrar ciertas filas seleccionadas con el valor "algo".

SELECT * FROM [table name] WHERE [field name] = "algo";

 

Mostrar todos los registros que contengan el nombre "Luis" Y el número de teléfono '1234567'.

SELECT * FROM [table name] 
WHERE name = "Luis" AND phone_number = '1234567';

 

Mostrar todos los registros que no contengan el nombre "Luis" Y el número de teléfono '1234567' ordenados por el campo phone_number.

SELECT * FROM [table name] 
WHERE name != "Luis" AND phone_number = '1234567' 
order by phone_number;

 

Mostrar todos los registros que empiecen por las letras "Luis" Y el número de teléfono "1234567".

SELECT * FROM [table name] 
WHERE name like "Luis%" AND phone_number = '1234567';

 

Utilice una expresión regular para encontrar registros. Utilice "REGEXP BINARY" para forzar la distinción entre mayúsculas y minúsculas. Esto encuentra cualquier registro que empiece por a.

SELECT * FROM [table name] WHERE rec RLIKE "^a$";

 

Mostrar los registros únicos.

SELECT DISTINCT [column name] FROM [table name];

 

Mostrar los registros seleccionados ordenados de forma ascendente (asc) o descendente (desc).

SELECT [col1],[col2] FROM [table name] ORDER BY [col2] DESC;

 

Contar los registros.

SELECT COUNT(*) FROM [table name];

 

Unir tablas en columnas comunes.

select lookup.illustrationid, lookup.personid, person.birthday 
from lookup 
left join person 
on lookup.personid = person.personid;

 

Cambie a la base de datos mysql. Cree un nuevo usuario.

INSERT INTO [table name] (Host,User,Password) VALUES('%','user',PASSWORD('password'));

 

Cambiar la contraseña de un usuario (desde el Shell Unix).

mysqladmin -u root -h hostname.blah.org -p password 'new-password';

 

Cambiar a mysql db. Dar privilegios de usuario para una db.

INSERT INTO [table name] 
(Host,Db,User,Select_priv,Insert_priv,Update_priv,
Delete_priv,Create_priv,Drop_priv) 
VALUES ('%','db','user','Y','Y','Y','Y','Y','N');

 

Para actualizar la información que ya está en una tabla.

UPDATE [table name] 
SET Select_priv = 'Y',Insert_priv = 'Y',Update_priv = 'Y' 
where [field name] = 'user';

 

Borrar registro(s) de una tabla.

DELETE from [table name] where [field name] = 'algo';

 

Actualizar permisos/privilegios de una base de datos.

FLUSH PRIVILEGES;

 

Borrar columna

alter table [table name] drop column [column name];

 

Añadir una nueva columna a una tabla.

alter table [table name] add column [new column name] varchar (20);

 

Cambiar nombre de columna.

alter table [table name] 
change [old column name] [new column name] varchar (50);

 

Haz una columna única para que no haya duplicados.

alter table [table name] add unique ([column name]);

 

Ampliar una columna.

alter table [table name] modify [column name] VARCHAR(3);

 

Borrar el índice de una tabla.

alter table [table name] drop index [colmn name];

 

Cargar un archivo CSV en una tabla.

LOAD DATA INFILE '/tmp/filename.csv' replace INTO TABLE [table name] FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n' (field1,field2,field3);

 

Volcar todas las bases de datos para la copia de seguridad. El archivo de copia de seguridad es para recrear todas las db's.

mysqldump -u root -ppassword --opt >/tmp/alldatabases.sql

 

Volcar una base de datos para la copia de seguridad.

mysqldump -u username -ppassword --databases databasename >/tmp/databasename.sql

 

Volcar una tabla para la copia de seguridad.

mysqldump -c -u username -ppassword databasename tablename > /tmp/databasename.tablename.sql

 

Restaurar una copia de seguridad.

mysql -u username -ppassword databasename < /tmp/databasename.sql

 


viernes, 9 de octubre de 2020

Como configurar entornos virtuales en Python3

 


Los entornso virtuales, son mecanismos utilizados en para trabajar en distintos entornos separados de los directorios del sistema.Cada entorno funciona independiente de los demas, una vez activos puede tener conjuntos independientes de las librerias sin importar las versiones, solucionando multiples problemas de compatibilidad.

 

PYTHON3

PASO 1: Instalar python3-venv

Primero como buena practica siempre actualizar los paquetes del sistema antes de instalar cualquier paquete:

sudo apt-get update -y

Ahora instalar python3-venv

sudo apt-get install python3-venv

 

PASO 2: Crear el entorno virtual de python

Despues instalado, es hora de crear el directorio donde se almacenara el entorno virtual

mkdir byte_fate cd byte_fate

Ahora se crea el entorno virtual para en la carpeta del proyecto.

python3 -m venv bytefate_env

Si quieres comprobarlo te mostrar una carpeta nueva con el nombre que le diste al entorno

ls -l
 

PASO 3: Activar el entorno

Es hora de trabajar, para activar el entorno es necesario utilizar el siguiente comando

source bytefate_env/bin/activate

Una vez activado se podra ver el nombre del entorno virtual en la barra antes de la informacion del sistema, algo asi..

(bytefate_env) user@host:~/byte_fate#
 

PASO 4: Instalar paquetes

Ya tienes un entorno en limpio para jugar con diferentes versiones, sin ningun inconveniente al momento de agregar un nuevo paquete. Prueba instalando este paquete.

pip install requests
 

Paso 5: Cerrar el entorno Virtual

Para cerrarlo es muy sencillo, es ubicar la terminal que esta ejecutando el entorno virtual y ejecutar el siguiente comando
deactivate
 
 

Ahora que ya estas listo para crear, sus propios entornos con paquetes independientes.

viernes, 18 de septiembre de 2020

NODE.JS Y DOCKER

Docker es una software open-source que lo que permite asilar o enpaquetar aplicaciones y sistemas en contenedores, similar como lo hace la virtualizacion pero de manera mas eficiente y liviana.


Instalar las dependencias 

Ya sea que estes comenzando o estes trabajando con un proyecto, la confuguracion de las dependencias sera crucial al momento dev desplegar la aplicacion.Si vas a crear un nuevo proyecto prueba el comando

npm init

Te pedira informacion relacionada con la aplicacion, como el nombre, la version, el tipo de licencia entre otras cosas. Ahora solo debes especificarle los paquetes que necesita. En este caso, se necesita a express solo para este proyecto.

npm install --save express //version completa o npm i -s express //version reducida

O en el caso de trabajar con previamente creado, y contenga un archivo package.json en este caso solo con el packete de express similar a este. 

package.json
{ "name": "bytefate_app_node", "version": "1.0.0", "description": "Node.js Bytefate App on Docker", "author": "name ", "main": "server.js", "scripts": { "start": "node server.js" }, "dependencies": { "express": "^4.17.1" } }

Crear el servicio web, en mi caso se vera algo asi.

app.js
'use strict'; const express = require('express'); // Constants const PORT = 8080; // App const app = express(); app.get('/', (req, res) => { res.send('Welcome to Byte Fate'); }); app.listen(PORT, HOST); console.log(`Running on http://localhost:${PORT}`);
Si hay algunas retricciones por parte del firewall, con este comando habilitara la operacion del puerto donde estara corriendo la aplicacion.
sudo ufw allow 8080

 

 Dockerfile 

Ahora a lo que vinimos Dockerfile es un archivo que se le va a indicar en secuencia, al contenedor el comportamiento una vez se ejecute. Lo primero es escoger la imagen, hay distintas distribuciones dependiendo del tamaño de las imagenes, en este ejemplo se utilizara la mas ligera con la version 14 que hasta el momento es la version recomendada

FROM node:14-alpine
Lo siguiente es prepara la ruta para guardar los archivos dee la aplicacion y en lo posible limitar los permisos asignados al contenedor como buena practica
RUN mkdir -p /home/node/app/node_modules && chown -R node:node /home/node/app
Luego se asigna el espacio de trabajo.
WORKDIR /home/node/app
Copia el archivo en el directorio que se le asigno en el comando anterior
COPY package*.json ./
Se asegura que los archivos de la aplicacion este con el usuario node
USER node
Descarga las dependencias de la aplicacion
RUN npm install
Copia los archivos y le asigna como propietario el usuario node
COPY --chown=node:node . .
Espone con el puerto asignado el contenedor
EXPOSE 8080
Inicia la aplicacion, con los parametros que se le han pasado.
CMD [ "node", "app.js" ]
 
El archivo queda algo asi.
Dockerfile
FROM node:10-alpine RUN mkdir -p /home/node/app/node_modules && chown -R node:node /home/node/app WORKDIR /home/node/app COPY package*.json ./ USER node RUN npm install COPY --chown=node:node . . EXPOSE 8080 CMD [ "node", "app.js" ]
Nota: En dockerfile si tienes varios cmd solo el ultimo se ejecutara. Cuando se trabaja con git, es conveniente que los anexes tambien a este archivo, el .git y gitignore. .dockerignore
.dockerignore
node_modules .dockerignore Dockerfile

 

 Ahora a crear la imagen, con el siguiente comando.

docker build -t username/bytefate_app_node .
La -t es para colocarle un tag, que la usaremos para reconocer las imagenes personalizadas y es usual que primero se coloque el nombre de usuaro de dockerhub, seguido del tag de la aplicacion(username/tag). Y el punto (.) es para ejecutarlo en el contexto actual. Para listar las imagenes que tenemos usa el comando.
docker images
Estando todo listo, es hora de ejecutar la imagen con el siguiente comando
docker run --name bytefate_app_node -p 80:8080 -d username/bytefate_app_node
lo que hace el --name es darle un nombre al contenedor que esta corriendo, -p para redirigir el trafico a otro puerto de ser necesario y -d es para correr en segundo plano.Para verificarlo es facil, con el siguiente comando podras ver todos los contenedores que estan corriendo.
docker ps

 

 Bueno eso es todo por el momento, espero que les haya sido de utilidad y nos veremos pronto.

viernes, 11 de septiembre de 2020

Basico - Docker II

DOCKER BASICO

 Requisitos: 

 

Cliclo de vida de los Contenedores

Arrancar en segundo plano

docker run -d <opciones> <image_name>
Con el comando -d corre el contenedor en segundo plano, cuando termine su proceso muera el contenedor, en opciones puede hacer port forwarding para que el contenedor se conecte por ese puerto.

docker run -di <image_name>
La opcion -i permite que el contenedor aun al terminar su proceso siga vivo o esperando.

Arrancar en segundo plano y acceder a el
Existiendo ya un contener accediendo el comando exec
docker exec -it <container_name_or_id> terminal
Puede usar sh o bash como terminal pasandola como parametro

Parar un contenedor
docker stop <container_name_or_id> 


Eliminar una imagen

docker rmi -f <image_name_or_id> 


Eliminar una imagen forzado

docker rmi <image_name_or_id>

Eiminar un contenedor

docker container rm <container_name_or_id>


Eiminar un contenedor forzado

docker container rm -f <container_name_or_id>


Dockerfile

Es un archivo en el que secuencialmente ejecuta una tareas dentro de una imagen docker, desde definir variables de entorno hasta instalacion de paquetes y ejecucion de aplicaciones, todo esto definido en un archivo llamado Dockerfile.


- FROM: Recibe el nombre de la imagen que se usara de base en el contenedor.

- RUN: Ejecuta un comando sobre la capa actual del contedor y almacena el cambio.

- CMD: Proporciona un valor predeterminados durante ejecucion del contenedor, si existen mas de una instruccion CMD solo se ejecutara la ultima dentro del Dockerfile.

- LAVEL: Añade metadatos a traves de llave - valor.

- EXPOSE:Informa a docker en que puerto estara escuchando el contenendor en el tiempo de ejecucion pero aun no estan accesibles.

- ENV: Establece de forma clave - valor el variables de entorno.

- COPY:  Copia nuevos archivos, directorios o url al contenedor, por defecto lo establece como usuario root. Como buena practica se deberia utilizar --chown = <user>:<group> para darle propiedades de propietario tambien aplicables a ADD.

- ADD: Copia nuevos archivos, directorios o url al contenedor (recomendable no usarlo).

- ENTRYPOINT: Configura un contenedor que se ejecutara como un ejecutable.

- VOLUMEN: Crea un montaje dentro del contenendor que accede a otros contenedores o el host nativo.

- USER: Crea un user en el sistema que puede interactuar con los comando RUN, CMD y ENTRYPOINT.

- WORKDIR: Crea un directorio de trabajo.

- ARG: Crea una argumentos utilizados en tiempo de ejecucion del dockerfile.

- ONBUILD: Ejecuta un disparador cuando una imagen es usada por otra.

- STOPSIGNAL: Envia una señal de salida al contenedor, llamando al sistema.

- HEALTHCHECK: Comprueba el status del contenedor del docker en intervalos de tiempo.

- SHELL: Permite anular la shell por defecto, es comunmente utilizada en sistemas windows donde hay 2 shells nativas (cmd, powershell).

Una vez terminado el Dockerfile lo siguiente es crear la imagen y luego ejecutar la imagen recien creada

EJEMPLO

FROM ubuntu:16.04
CMD ["/bin/echo","Hello World ByteFate!]

 para construir la imagen debe se utiliza el siguiente comando

#docker build -t <tag> .
 docker build -t saludo:1.0 .
Lo que traduce es que se esta creando una imagen, -t indica que le pasa el nombre a la imagen por convenciones se utiliza name:version y el punto es el contexto actual, osea donde se encuentra el archivo Dockerfile.
#docker run --options <image_name>
docker run --name bytefate_saludo saludo:1.0
Con la operacion run arranca un contenedor y las opciones se le pasan como parametro al contenedor, como una variable de entorno, un puerto de escucha, etc.


ref: https://docs.docker.com/develop/develop-images/dockerfile_best-practices/
ref: https://docs.docker.com/engine/reference/commandline/docker/

jueves, 3 de septiembre de 2020

PRIMEROS PASOS CON DOCKER - Docker I

 

 




Docker es una instancia de ejecucion de imagen, que permite de cierta manera virtualizar un entorno, combinando solo las librerias y configuracion necesarias para su ejecucion,haciendo mas facil el encapsulamiento portatil para un programa.

 REQUISITOS: Tener en el sistema operativo instalado docker. Si aun no lo tienes sigue este enlace.

COMENZANDO

Pero antes unos cuantos conceptos que ayudara a entender un poco mejor a Docker

Image: Es un tipo de plantilla para un contenedor donde estan los componentes basicos para funcionar.
 
Container: Es una instancia de una imagen, permitiendo encapsular un programa completo y hacerlo portable para cualquier otra maquina que tenga docker.

Docker Hub: Es un servicio de repositorio donde estan almacenadas muchas de las imagenes publicas, las imagenes mas confiables son las que fueron posteadas por las mismas empresas y son catalogadas como imagenes oficiales. Las imagenes varian de tamaño dependiendo de que base de sistema utilicen la mas pequeña es alphine-linux y llega a pesar 5mb.

DockerCompose: Es utilizado como archivo de configuracion para crear las imagenes, en este archivo se escribe el conjunto de instrucciones que se quiere ejecutar de forma sincrona.

 

Verificar la version de docker 

docker -v

Descargar una imagen

Descarga una imagen de docker hub explicitamente, o se descarga automaticamente cuando hace llamado a docker run
docker pull alpine

Hacer un echo

Al ejecutarse el contenedor mostrar en consola un "Hola Mundo"
$docker container run alpine echo 'Hola Mundo'

Abrir un archivo

Mostrara el contenido del archivo que incluye le mensaje del dia, que se muestra cada vez que se inicia sesion. 
$ docker container run alpine cat/etc/motd
 

Muestra las imagenes locales

$ docker images

Lista de Contenedores Activos

$ docker container ls
//tambien con el comando
$ docker ps

Lista de Contenedores 

Si has llegado hasta este punto podras ver un par de contenedores de alpine, fueron contenedores que se ejecutaron cumplieron con su proposito y se detuvieron.
$ docker container ls -a
//tambien con el comando
$ docker ps -a

Con esta breve introduccion de algunos conceptos y ejemplo ayudara a enterder la interaccion de los contenedores en un proximo post.

 

ref:https://docs.docker.com/reference/


 

jueves, 13 de agosto de 2020

COMO INSTALAR DOCKER EN UBUNTU 20.04

Docker

es un sistema opensource que busca empaquetar, gestionar el despliegue de las aplicaciones con los recursos necesarios para que funcione, en algo llamado contenedores. Así creando una especie de máquinas virtualizadas super ligeras que favorece la implementación rápida y modular de un software en cualquier equipo que posea Docker.


Prerequisitos

Es necesario contar con una máquina con sistema operativo Ubuntu 20.04 con permisos de usuario. Además de actualizar la lista de paquetes del sistema y unos complementos de HTTP que apt requiere.

 sudo apt-get update
 sudo apt install apt-transport-https ca-certificates curl software-properties-common

Instalacion

Lo primero que se hace es descargar la llave GPG para verificar la firma de los paquetes

 curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

Luego descargar el repositorio de Docker

 sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu bionic stable"

Se actualiza los paquetes del sistema

 sudo apt update

Ahora se instala la versión comunity de Docker

 sudo apt install docker-ce

Solo falta verificar si el servicio de Docker está corriendo

 sudo systemctl status docker

Docker-Compose

Si piensa trabajar con varios contenedores a la vez y que se comuniquen entre ellos, es recomendable instalar Docker-Compose

 sudo curl -L "https://github.com/docker/compose/releases/download/1.26.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

En el siguiente post, profundizaremos un poco más Docker.

martes, 11 de agosto de 2020

COMO INSTALAR MYSQL EN UBUNTU

Mysql

Mmysql es una ase de datos relacional actualmente cuenta con la version comunity y la version enterprise  communmente encontrada en stack como lamp o wamp y en saas (sofw as service) como owrkpress, joomla, drupal entre otros. 


Lo primero que hay que hacer, es actualizar los paquetes del sistema

$ sudo apt-get update

Luego instalar el paquete correspondiente de mysql

sudo apt install mysql-server
 

NOTA:En el caso de presentar problemas por haberlo tenido anteriormente

Elimina o remueve paquetes propios d mysql
sudo apt-get remove --purge mysql-server* mysql-client mysql-common
Con autoremove se eliminan aquellos paquetes perdidos, generalmente instalados como dependencias de otras instalaciones, que ya no son necesarios:
sudo apt-get autoremove
Elimina del cache los paquetes .deb con versiones anteriores
sudo apt-get autoclean
Ahora actualizar los packetes del sistema con los siguientes comandos
sudo apt-get update sudo apt-get upgrade sudo apt-get dist-upgrade
Despues volver a instalar mysql
sudo apt install mysql-server
 

Es hora de ejecutar el siguiente script, permitira cambiar algunas opciones que trae por defecto la base de datos, mejorando bastante la seguridad.

sudo mysql_secure_installation
 
La siguiente opcion permitira configurar el complemento que validad la contraseña de los usuarios en la base de datos. En este caso lo valido, dependiendo que tan robusto quiere que sea la validacion, siendo 0 la mas baja y 2 la mas alta.
Press y|Y for Yes, any other key for No: Y There are three levels of password validation policy: LOW Length >= 8 MEDIUM Length >= 8, numeric, mixed case, and special characters STRONG Length >= 8, numeric, mixed case, special characters and dictionary Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG:

Sin importar la opcion que hayan elejido, el usurio root de la base de datos le pedira restablecer la contraseña y confirmar si esta agusto con la longitud de la contraseña.

 
Una vez terminada toda la parte de configuracion, se puede verificar si el servicio esta actualmente habilitado y corriendo en el servidor con el siguiente comando.
systemctl status mysql.service
Deberia aparecerles algo muy similar a este resultado.
mysql.service - MySQL Community Server Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: enabled) Active: active (running) since Sat 2020-08-1 12:05:04 UTC; 2min ago Main PID: 10382 (mysqld) Status: "Server is operational" Tasks: 39 (limit: 1137) Memory: 370.0M CGroup: /system.slice/mysql.service └─10382 /usr/sbin/mysqld

 

CONCLUSION

 Con esto se puede estar seguro de que el sistema de base de datos esta corriendo satisfactoriamente, para hacer operaciones en la base datos revisa el siguiente post. Sql (mysql)

COMO INSTALAR UBUNTU 20.04 LTS - Actualizado

Ubuntu

es un sistema operativo opensource (código libre y abierto a modificaciones) basada en Debian y pudiendo descargarlo Ubuntu de forma gratuita. Posee múltiples versiones y soportes que pueden llegar desde una versión de 6 meses a 5 años desde su fecha de lazamiento.
En este caso se instalara Ubuntu server versión 20.04 (LTS) o versión de soporte extendido que brindando un espacio adicional para que el usuario final pueda migrar a la siguiente versión.


Requisitos de Instalación

Requisitos Mínimo

 Procesador 700 MHz de 64 bits, 1 GB de memoria RAM, 10 GB de disco duro, lector CD/DVD o puerto USB para la instalación.

Requisitos Recomendados:

 Procesador 1 GHz x64 en adelante, 2GB de memoria RAM en adelante, 20 GB de disco duro, lectora CD/DVD o puerto USB para la instalación.


Para obtener la imagen ISO lo puede hacer desde aquí, la versión de escritorio y la versión de servidor , pudiendo usar desde un cd/dvd, usb o en una maquia virtual (Virtualbox, VMware los más populares). En este caso haré la instalacion desde una maquina virtual usando la versión de servidor.



Instalacíon

 1. Despues de haber configurado la maquina y encenderla,lo primero que se observa es la selección del idioma, luego configuración de teclado, esta configuración lo que hace es cambiar la posición de las teclas especiales y los símbolos, que normalmente esta asociado a la región en la que vives.


2. Selecciona la configuración de red además si esta conectado a internet se recibira una dirección ip del servidor dhcp.



3. Si necesita un servidor proxy para la salida del servidor a internet se coloca en el espacio, sino se deja tal como esta.



4. En la configuración del archivo espejo, suele asociarse al país donde estará el servidor automáticamente.



5. Ahora la configuración del almacenamiento, seleccionando la partición del disco además la adminisitración del disco, si desea encriptarlo con una contraseña o no y segmentar la partición a gusto. En este caso dejo la partición por defecto.



6. Despues de configurar el almacenamiento, guarda los cambios permanentes.



7. Llego la configuración de perfil de usuario, donde se le da el nombre del servidor, nombre del usuario  contraseña para ingresar al equipo.



8. En este apartado se habilita el protocolo ssh que es utilizado para conexión remota a este equipo y exportar el archivo de con la llave o crear una nueva. Igualmente se puede configurar mas adelante si así se requiere igual que otros paquetes.



9. Solo falta reiniciar para terminar todas las configuraciones.


10. Solo es ingresar y ya tienes un equipo con sistema operativo ubuntu