Hola,

Si se requiere eliminar una llave o un parámetro específico de un array en NodeJs, se puede utilizar el siguiente código:


Inicialmente se tiene el array:

[ 'prueba', 'color', 'industria', 'lápiz', 'colegio', 'zapato' ]

Y se requiere eliminar la llave: 'industria', se debe realizar lo siguiente:

const filteredLibraries = keysBodyRequest.filter((item) => item !== 'industria');
console.log(filteredLibraries);

El nuevo array quedara así al imprimirlo:

[ 'prueba', 'color', 'lápiz', 'colegio', 'zapato' ]

Si se requiere eliminar más de una llave, se puede hacer así:

const filteredLibrariesMult = filteredLibraries.filter((item) => item !== 'color' && item !== 'zapato');
console.log(filteredLibrariesMulti);

El nuevo array quedara así al imprimirlo:

[ 'prueba', 'lápiz', 'colegio' ]

El siguiente enlace, profundiza la forma para realizar eliminación de llaves en Javascript o NodeJs, es excelente el sitio por si lo requieren de otra forma:

Hola,

Si requieren obtener en NodeJs un archivo subido a un Bucket del S3 de AWS (Amazon), utilicen lo siguiente:


Primero, deben instalar la librería del aws-sdk mediante un terminal de NodeJs, con el siguiente comando:

npm install aws-sdk

Despues de esto, declaren la variable a utilizar para la configuración del SDK:

const AWS = require('aws-sdk');

Luego deben crear las variables de configuración para acceder al S3, sin el accessKeyId y el secretAccessKey jamás se va a conectar al S3.

const configS3AWS = {
    region: "us-east-1",
    credentials: {
        accessKeyId: "aaXIPL44KGHY6JZPDMNW",
        secretAccessKey: "WEDR0LKJmEp/KDGH00WD8kQ0vBlk2bbb5MNBV2Ra"
    }
}


A continuación, se actualiza la configuración del SDK:

AWS.config.update(configS3AWS);

Luego, se instancia el objeto S3, la especificando de la región aquí es redundante:

var s3 = new AWS.S3({apiVersion: '2006-03-01', region: 'us-east-1'});

Posteriormente, se coloca el nombre del bucket en el cual se alojan los archivos y el nombre del archivo:

const bucketParams = {
    Bucket: "mi-bucket-ejemplo",
    Key: "miarchivoejemplo.txt"
};

Finalmente, mediante la función getObject() del SDK se lee correctamente el archivo del Bucket del S3:

try {

    // lee correctamente el archivo del Bucket S3
    s3.getObject(bucketParams, function(err, data) {
    if (err){
        console.log(err, err.stack); // an error occurred
    }else{
    console.log("Data del archivo: ", data); // successful response, obtiene los bytes en el Body
    console.log("Informacion dentro del archivo del S3 es: ", data.Body.toString()); // successful response, obtiene la informacion dentro del archivo
    }
});

} catch (error) {
    console.log("El error es: ", error);
}

Eso es todo, tener en cuenta que esto se debe realizar preferiblemente dentro de una clase o función de NodeJs.

  • Forma #2 - Otra forma de realizarlo es:

try {

    // lee correctamente el archivo del Bucket S3 y espera su respuesta asíncronica
    const data = await s3.getObject(bucketParams).promise();
    console.log("Se trae correctamente en la function el archivo: ", data); // successful response, obtiene los bytes en el Body
    console.log("Informacion dentro del archivo del S3 es: "); // successful response, obtiene la informacion dentro del archivo
    console.log(data.Body.toString('utf-8'));

    return data.Body.toString('utf-8');

} catch (error) {
    console.log("El error es: ", error.message);
}

Este código anterior dentro de una función asíncrona, similar a:

async function getS3Object(parametro) {
    // Aqui adentro va todo el codigo anterior para obtener la información dentro de un objecto de un Bucket del S3
}

Finalmente, se invoca así:

console.log("Se va a obtener el archivo en el Bucket del S3, correspondiente para el servicio especifico.");

let datosArchivo = ``;

await getS3Object(parametro).then((token)=>{
    console.log("Se obtuvo correctamente los datos del archivo en el S3:");
    console.log(token);
    datosArchivo = token;
});

console.log("El valor del datosArchivo desde el S3 es:");
console.log(datosArchivo);


Se debe tener en cuenta que esto debe de ir dentro de una clase o una invocación asíncronica.

Y listo, eso es todo, las dos formas funcionan correctamente, aunque la segunda permite utilizar el valor obtenido en cualquier parte de la clase.

Basado en:
Hola,

Si están tratando de instalar una librería en Node y les aparece en consola el error: "E401 incorrect or missing password...", esto al parecer se debe por temas de credenciales, de la forma en que yo lo pude solucionar fue eliminando en mi repositorio el archivo: package-lock.json y luego ahí si, intente ejecutar la instalación de mis librerías con el comando: "npm install" o "npm i" y me funciono perfectamente.

Otra forma que se sugiere es intentar eliminar el archivo .npmrc del directorio $HOME.

Se debe tener en cuenta que la eliminación del archivo package-lock.json puede tener sus propios problemas, así que utilice esta solución como ultimo recurso o a menos que encuentre una solución mejor.

Basado en:





Hola,
Si alguno requiere inmovilizar una fila en las Hojas de Calculo del Google Drive, osease el Excel de Google Drive, realice lo siguiente:

01. Seleccione con el cursor la fila que quiera inmovilizar.
02. En las opciones de la parte superior, seleccione la opción Ver.
03. Luego seleccione del menú la opción Inmovilizar.
04. Posteriormente en el sub menú de la opción Inmovilizar, selecciona la cantidad de filas que quiera inmovilizar y listo.

Cuando mueva la pantalla con el scroll hacia arriba o hacia abajo, notara que las filas que inmovilizaron no se mueven de su posición original en la pantalla.

Hola, 

Si tienen o trabajan en un computador MAC y requieren ver los archivos ocultas, utilicen el atajo de teclado:

command (⌘) + mayúsculas (⇧) + signo punto (.)

Obvio sin los paréntesis.

Esto permitirá mostrar todos los archivos ocultos en el equipo.


Nota:

Recuerden que las carpetas o archivos ocultos en MAC comienzan por . en el nombre, ejemplo: .git 

Hola,
En DynamoDB de AWS Time to Live (TTL) permite definir una marca de tiempo por elemento para determinar cuándo ya no se necesita dicho elemento y eliminarlo de la tabla.
Es una utilidad muy útil para temas de control de datos y para eliminar registros de tablas que se vuelven irrelevantes o muy difíciles de mantener.

Para configurar una TTL en una tabla de DynamoDB, se puede realizar de dos formas:

Primera forma (Por DynamoDB):
Si se tienen todos los permisos (todos los superpoderes), se pueden realizar de forma manual directamente en Dynamo, de la siguiente forma:
  • Ingresar a DynamoDB en AWS.
  • Seleccionar la opción Tablas y ahí escoger la tabla que se le requiere crear la TTL.
  • Ingresar dentro de la tabla a la opción Configuración adicional.
  • Bajar con el scroll del mouse y en el título Tiempo de vida (TTL), presionar el botón Habilitar:

  • Ahí nos llevará a una nueva pantalla en donde se realizara la configuración de la TTL:


  • En la opción Nombre de atributo TTL, se crea el nombre del campo que será la TTL y en la opción Fecha y hora simuladas, se seleccionara el tipo de fecha normalmente se utiliza Valor de tiempo Unix y se asigna un valor por defecto o se deja en vacío.
  • Finalmente se presiona el botón Habilitar TTL y listo, ya queda la TTL habilitada con el campo creado en la tabla de Dynamo seleccionada.
Segunda forma (Por Terraform):
Terraform permite a los usuarios definir y configurar la infraestructura de un centro de datos en un lenguaje de alto nivel, generando un plan de ejecución para desplegar la infraestructura, por lo cual de esta forma y si se tiene una infraestructura configurada y versiona en la base de datos, se realiza de la siguiente forma:
  • En Terraform utilizar el comando:
ttl { attribute_name = "TimeToExist" enabled = true }

En donde attribute_name contiene el nombre de la TTL en la tabla de DynamoDB y el enable se define como true, para que quede activado.

Después de realizar esta codificación se debe versionar y desplegar y ahí queda activa la TTL en DynamoDB.

Nota #1:
Este comando se utiliza dentro de los campos codificados de la tabla, en el siguiente ejemplo se muestra como queda una tabla en Terraform (tf) con todo configurado por código para DynamoDB:

resource "aws_dynamodb_table" "basic-dynamodb-table" { name = "GameScores" read_capacity = 20 write_capacity = 20 hash_key = "UserId" range_key = "GameTitle" attribute { name = "UserId" type = "S" } attribute { name = "GameTitle" type = "S" } attribute { name = "TopScore" type = "N" } ttl { attribute_name = "TimeToExist" enabled = true } global_secondary_index { name = "GameTitleIndex" hash_key = "GameTitle" range_key = "TopScore" write_capacity = 10 read_capacity = 10 projection_type = "INCLUDE" non_key_attributes = ["UserId"] } tags { Name = "dynamodb-table-1" Environment = "production" } }

Si se requiere conocer las definiciones de cada uno de estos argumentos, se pueden consultar en la url: https://runebook.dev/es/docs/terraform/providers/aws/r/dynamodb_table

Tener en cuenta:
Se debe tener en cuenta que la habilitación de TTL puede tardar hasta una hora en aplicarse en todas las particiones. No podrá efectuar cambios de TTL adicionales hasta que se complete esta actualización.

Fuentes:
Buen día,
Si necesitan convertir la fecha actual a formato Time Unix en Java, lo pueden hacer con el siguiente bloque de código, tengan en cuenta que aquí también se le suma días a la fecha actual.

/**
* Método encargado de agregar un numero de dias a la fecha actual del sistema a traves de Calendar,
* para luego convertir esa fecha a Unix Time.
*
* @return un long con la fecha final convertida a Unix Time
*/
private Long obtenerFechaVigenciaEnUnixTime() {

/*
* Define los días adicionales que se le asignaran a la fecha actual, a traves de la clase Calendar
*/
int diasAdicionales = 30;

/*
* Adicionar el numero de dias adicionales a la fecha actual, con la clase Calendar
*/
Date date = new Date();
System.out.println("La fecha actual es: " + date);

Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.add(Calendar.DATE, diasAdicionales);
date = calendar.getTime();
System.out.println("La fecha de vigencia es: " + date);

/*
* Convertir Calendar a Unix Time, url para validarlo: https://www.cdmon.com/es/apps/conversor-timestamp
*/
long calendarUnixTime = calendar.getTimeInMillis() / 1000;
System.out.println("La fecha final en Unix time es: " + calendarUnixTime);

return calendarUnixTime;

}

Hola,

A continuación les comparto un método en Java, que permite obtener la ulr de una cadena de texto, me explico, si dentro de una cadena de texto tienen algo como: "Miren mi url https://crazycuestionct.blogspot.com/ es fantastica", el método se encargara de extraer y almacenar en un String solo la url, quedando así: "https://crazycuestionct.blogspot.com/", a continuación les comparto el método:


/**
* Metodo encargado de obtener una url de un texto.
*
* @param pStrCadena Define la cadena a evaluar
* @return un String con la respuesta
*/
public static String getUrlFromString(String pStrCadena) {

/*
* obtiene la posicion inicial en el String donde inicia la palabra http
*/
int iniPosition = pStrCadena.indexOf("http");

/*
* se declara la cadena y se define la palabra http como posicion inicial
*/
String urlText = pStrCadena.substring(iniPosition);

/*
* Finalmente, se destokeniza por espacio y se obtiene la url limpia
*/
String[] urlFinal = urlText.split(" ");

return urlFinal[0];

}