Solución a Error: PhantomJS exited with return value 127

Hace un momento estaba ejecutando una aplicación de NodeJS en un servidor con Ubuntu 18, todo bien, ejecuté npm install pero al momento de usar PhantomJS saltó el error que dice:

Error: PhantomJS exited with return value 127

Lo raro de todo esto es que había instalado las dependencias correctamente, y en Windows (y otros sistemas operativos) funcionaba a la perfección.

Al final encontré la solución, la cual era una simple dependencia a nivel de sistema operativo.

(más…)

Ejemplo de respuesta de API JSON de DuckDuckGo

Consumir API de DuckDuckGo con Node.JS

El buscador DuckDuckGo, aparte de todas las ventajas que tiene en comparación con Google y otros buscadores, proporciona una API que si bien no sirve para buscar como en el buscador, funciona para obtener respuestas inmediatas y buscar definiciones.

Hoy veremos cómo consumir esta API basada en JSON utilizando JavaScript del lado del servidor: Node.JS. Un ejemplo de lo que la API devuelve es lo siguiente (al buscar JavaScript):

Ejemplo de respuesta de API JSON de DuckDuckGo

Ejemplo de respuesta de API JSON de DuckDuckGo

Consumir esta API no es nada difícil, pues es una simple petición GET y parseo de JSON.

(más…)

Ejemplo de respuesta de la API de JsonPlaceholder

Petición HTTP GET simple en Node.js con request

Node, JavaScript del lado del servidor, provee un modo para comunicarse a través de http: el módulo http. Sin embargo, este módulo es un poco largo de usar, así que se han creado varios módulos o paquetes y uno de ellos es request.

El módulo de request tiene otra envoltura llamada request-promise, el cual es como request pero usando promesas.

En fin, vamos a ver cómo hacer una petición GET HTTP usando Node y el módulo request. Será un ejemplo sencillo y básico pero que servirá para ejemplos más avanzados.

(más…)

Aumentar números más allá del máximo en JS

BigInt en JavaScript

Los números en JavaScript tienen un límite, no sé cuál, pero tienen un límite y si se sobrepasa, se experimentan comportamientos raros. Es por ello que no podemos tener números muy grandes, porque los mismos pueden ocasionar problemas de contabilidad y esas cosas.

Pero no nos podemos quedar así, y es por eso que ha llegado el tipo de dato BigInt en JavaScript (seguramente también está el BigFloat o algo así) que permite tener enteros muy grandes (algo así como la maravillosa librería GMP programada en C)

En este post veremos cómo usar el tipo de dato BigInt en JavaScript, así como sus ventajas y algunos usos. Gracias a BigInt podemos hacer aritmética sin preocuparnos por los límites.

(más…)

Algoritmo para calcular factorial en JavaScript

Factorial de un número en JavaScript con recursividad y ciclos

En este post vamos a ver cómo calcular el factorial de un número en JavaScript de dos maneras distintas. Una de ellas es usar un ciclo para calcular el factorial, y la otra es usando la recursividad o recursión.

Algoritmo para calcular factorial en JavaScript

Algoritmo para calcular factorial en JavaScript

También veremos el cálculo del factorial de un número usando a BigInt, un nuevo tipo de dato para JavaScript.

(más…)

Leer contenido de archivo con Node.JS, readline y fs

Leer el contenido de un archivo con Node.JS, fs y readline

En este artículo voy a exponer una cosa simple: leer un archivo txt con JavaScript del lado del servidor y el módulo fs. Leer el contenido de un archivo puede ser útil para la persistencia de datos; leer configuraciones o valores separados por comas.

Para leer un archivo con Node.js no se necesita instalar ningún paquete adicional, únicamente a fs que ya viene incluido por defecto.

Leer contenido de archivo con Node.JS, readline y fs

Leer contenido de archivo con Node.JS, readline y fs

Voy a mostrar 2 formas de leer un archivo, la primera es leerlo completamente (viene bien para archivos pequeños) y la segunda es leerlo línea por línea usando otro módulo llamado readline pero que igualmente viene incluido por defecto y que funciona mejor para archivos más grandes.

(más…)

Parsear y leer CSV en Node.JS con csv-parse

Parsear CSV con NodeJS y csv-parse

Node.JS ha ganado popularidad para programar aplicaciones del lado del servidor utilizando JavaScript. Parsear o leer un archivo CSV (valores separados por coma) es algo requerido muchas veces, por ejemplo, para importar datos o simplemente como medio de comunicación.

Parsear y leer CSV en Node.JS con csv-parse

Parsear y leer CSV en Node.JS con csv-parse

Es por eso que en este artículo explico cómo abrir, leer y parsear un archivo CSV utilizando Node.JS (el lenguaje JavaScript del lado del servidor) y un módulo llamado csv-parse que nos facilitará la tarea.

(más…)

Codificar y decodificar JSON en JavaScript y Node JS

Codificar y decodificar JSON con JavaScript

JSON en JavaScript sirve para muchísimas cosas. En los casos más comunes, al hacer peticiones AJAX viene bien codificar los datos como JSON antes de enviarlos.

Por otro lado, si tenemos a JavaScript del lado del servidor, igualmente podríamos decodificar los datos que un cliente mande; o codificarlos antes de hacer otra petición.

Codificar y decodificar JSON en JavaScript y Node JS

Codificar y decodificar JSON en JavaScript y Node JS

Otros usos, que si bien no son los mejores, son para comparar objetos en profundidad.

Hoy veremos cómo codificar y decodificar JSON en JavaScript sin usar eval ni librerías extras.

(más…)

Eliminar duplicados de un arreglo en JavaScript

Eliminar elementos duplicados de arreglos en JavaScript

En este post veremos cómo eliminar elementos repetidos o duplicados de un arreglo en JavaScript. Para esto, no nos limitaremos a arreglos con tipos de datos simples; sino también arreglos de objetos.

Eliminar duplicados de un arreglo en JavaScript

Eliminar duplicados de un arreglo en JavaScript

Explicado de otra forma, lo que haremos será:

  • Ver cómo eliminar datos primitivos (cadena, entero, booleano, etcétera) repetidos de arreglos en JavaScript
  • Eliminar objetos repetidos, ya sea basados en una propiedad o comparándolos en profundidad.

Vamos allá.

(más…)

Buscar índice de un elemento en arreglo de JavaScript

Buscar índice o posición de elemento en arreglo de JavaScript

El índice de un elemento en un arreglo es importante cuando realizamos búsquedas o comprobamos si determinado valor existe en un arreglo. Hoy veremos dos maneras de buscar la posición de un elemento en un arreglo de JavaScript.

Como primer ejemplo veremos el uso de indexOf, que busca datos en arreglos con tipos de datos que no son objetos.

Buscar índice de un elemento en arreglo de JavaScript

Buscar índice de un elemento en arreglo de JavaScript

En segundo lugar, veremos una nueva versión llamada findIndex que nos permite definir una función que será la que busque a partir de un criterio, algo así como un indexOf mejorado. Esto sirve muy bien cuando queremos buscar dentro de un arreglo de objetos o cuando queremos que se cumpla cierto criterio de búsqueda.

(más…)

Invertir cadena o palabra en JavaScript

Ya vimos cómo invertir una cadena o palabra en C y en Arduino. Ahora vamos a ver cómo rotar una cadena en JavaScript utilizando dos maneras o funciones.

Las cadenas en JavaScript son inmutables y no son parecidas a las de C. Es decir, en C son arreglos de caracteres pero en JavaScript no. Por lo tanto, para invertir una cadena en JavaScript tenemos que crear una nueva cadena.

Ya sea que llamemos a una función que regrese una nueva cadena o que creemos una, al final sí podremos lograr nuestro objetivo, y podrá invertir cadenas, palabras, oraciones completas y texto.

(más…)

Conversiones de números en JavaScript: Binario, Octal, Hexadecimal y Decimal

Introducción

Hoy veremos cómo podemos convertir números a una base distinta en JavaScript. Es decir, cómo hacer la operación (y lo inverso) para convertir un número de determinada a base a otra. Por ejemplo, convertir binario a octal, binario a decimal, decimal a hexadecimal y todas esas conversiones.

Para ello, no utilizaremos más que los métodos que le lenguaje provee; nada de librerías externas o algoritmos complicados.

(más…)