From ae8582e85afa01c90a09f2f7dce449be9d6e2481 Mon Sep 17 00:00:00 2001 From: gringoam Date: Fri, 21 Jun 2024 22:58:52 +0000 Subject: [PATCH 01/43] #19 - Python --- Roadmap/19 - ENUMERACIONES/python/gringoam.py | 69 +++++++++++++++++++ 1 file changed, 69 insertions(+) create mode 100644 Roadmap/19 - ENUMERACIONES/python/gringoam.py diff --git a/Roadmap/19 - ENUMERACIONES/python/gringoam.py b/Roadmap/19 - ENUMERACIONES/python/gringoam.py new file mode 100644 index 0000000000..dc63068e03 --- /dev/null +++ b/Roadmap/19 - ENUMERACIONES/python/gringoam.py @@ -0,0 +1,69 @@ +from enum import Enum + +""" +Ejercicio +""" + +class Semana(Enum): + + LUNES=1 + MAERTES=2 + MIERCOLES=3 + JUEVES=4 + VIERNES=5 + SABADO=6 + DOMINGO=7 + +def dia(num_dia: int): + print(Semana(num_dia).name) + +dia(5) + + +""" +Extra +""" +class Estado(Enum): + PENDIENTE= 1 + ENVIADO=2 + ENTREGADO=3 + CANCELADO=4 + +class Pedido(): + estado= Estado.PENDIENTE + + def __init__(self, numero:int) -> None: + self.numero= numero + + + def enviar(self): + if self.estado == Estado.PENDIENTE: + self.estado= Estado.ENVIADO + self.mostrar_estado() + else: + print("El pedido ya fue enviado o cancelado") + + def entregar(self): + if self.estado == Estado.ENVIADO: + self.estado= Estado.ENTREGADO + self.mostrar_estado() + else: + print("El pedido tiene que ser enviado antes de entregarse") + + def cancelar(self): + if self.estado != Estado.ENTREGADO: + self.estado= Estado.CANCELADO + self.mostrar_estado() + else: + print("El pedido ya fue entregado no se puede cancelar") + + def mostrar_estado(self): + print(f"El el estado del pedido {self.numero} es {self.estado.name}") + + +pedido1=Pedido(1) +pedido1.mostrar_estado() +pedido1.entregar() +pedido1.enviar() +#pedido1.entregar() +pedido1.cancelar() \ No newline at end of file From cd8b37fd629fe1891e0a71042ee74f29c20a76f8 Mon Sep 17 00:00:00 2001 From: Owen Ian Date: Fri, 21 Jun 2024 20:58:21 -0300 Subject: [PATCH 02/43] Create owen-ian.py --- .../python/owen-ian.py | 34 +++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 Roadmap/00 - SINTAXIS, VARIABLES, TIPOS DE DATOS Y HOLA MUNDO/python/owen-ian.py diff --git a/Roadmap/00 - SINTAXIS, VARIABLES, TIPOS DE DATOS Y HOLA MUNDO/python/owen-ian.py b/Roadmap/00 - SINTAXIS, VARIABLES, TIPOS DE DATOS Y HOLA MUNDO/python/owen-ian.py new file mode 100644 index 0000000000..93fbfaa107 --- /dev/null +++ b/Roadmap/00 - SINTAXIS, VARIABLES, TIPOS DE DATOS Y HOLA MUNDO/python/owen-ian.py @@ -0,0 +1,34 @@ +# URL del sitio web oficial de Python: https://www.python.org/ + +# La amohadilla nos permite escribir un comentario de una sola línea + +""" +Las comillas dobles nos permiten +escribir un comentario de varias líneas +""" + +''' +Las comillas simples tambien nos permiten +escribir un comentario de varias líneas +''' + +# Variable +my_variable = "Una variable en Python" + +# Constante +MY_CONSTANTE = "Una constante en Python" # Aclaracion, al parecer la gente escribe sus constantes en MAYUSCULAS + +my_int = 1 +my_float = 1.5 +my_bool = True +my_bool = False +my_string = "Cadena de texto" +my_other_string = 'Otra cadena de texto' + +# Imprimir por terminal +print("¡Hola, Python!") + +print(type(my_int)) +print(type(my_float)) +print(type(my_bool)) +print(type(my_string)) From e2fd8889580f568512debe379179f5be7f148ce3 Mon Sep 17 00:00:00 2001 From: any7dev Date: Sat, 22 Jun 2024 03:00:12 +0200 Subject: [PATCH 03/43] 08, 09, 10 y 11 - Python --- Roadmap/08 - CLASES/python/any7dev.py | 64 ++++++++ Roadmap/09 - HERENCIA/python/any7dev.py | 36 +++++ Roadmap/10 - EXCEPCIONES/python/any7dev.py | 32 ++++ .../11 - MANEJO DE FICHEROS/python/any7dev.py | 148 ++++++++++++++++++ 4 files changed, 280 insertions(+) create mode 100644 Roadmap/08 - CLASES/python/any7dev.py create mode 100644 Roadmap/09 - HERENCIA/python/any7dev.py create mode 100644 Roadmap/10 - EXCEPCIONES/python/any7dev.py create mode 100644 Roadmap/11 - MANEJO DE FICHEROS/python/any7dev.py diff --git a/Roadmap/08 - CLASES/python/any7dev.py b/Roadmap/08 - CLASES/python/any7dev.py new file mode 100644 index 0000000000..85b6a882a8 --- /dev/null +++ b/Roadmap/08 - CLASES/python/any7dev.py @@ -0,0 +1,64 @@ +# /* +# * EJERCICIO: +# * Explora el concepto de clase y crea un ejemplo que implemente un inicializador, +# * atributos y una función que los imprima (teniendo en cuenta las posibilidades +# * de tu lenguaje). +# * Una vez implementada, créala, establece sus parámetros, modifícalos e imprímelos +# * utilizando su función. +# * +# * DIFICULTAD EXTRA (opcional): +# * Implementa dos clases que representen las estructuras de Pila y Cola (estudiadas +# * en el ejercicio número 7 de la ruta de estudio) +# * - Deben poder inicializarse y disponer de operaciones para añadir, eliminar, +# * retornar el número de elementos e imprimir todo su contenido. +# * +# */ + +# EJERCICIO +class Vehiculo: + def __init__(self, tipo, marca, modelo): + self.tipo = tipo + self.marca = marca + self.modelo = modelo + def imprimir(self): + print(f"Soy un {self.tipo} de la marca {self.marca} modelo {self.modelo}") + +mi_vehiculo = Vehiculo("coche", "Toyota", "Auris") +mi_vehiculo.imprimir() + +#DIFICULTAD EXTRA +class Pila: + def __init__(self, lista): + self.lista = lista + def añadir(self, numero): + self.lista.append(numero) + def eliminar(self): + self.lista.pop() + def elementos(self): + return len(self.lista) + def imprimir(self): + print(self.lista) + +mi_pila = Pila(lista=[1, 2, 3, 4, 5]) +mi_pila.añadir(6) +mi_pila.eliminar() +print(mi_pila.elementos()) +mi_pila.imprimir() + +class Cola: + def __init__(self, cola): + self.cola = cola + def añadir(self, numero): + self.cola.append(numero) + def eliminar(self): + self.cola.pop(0) + def elementos(self): + return len(self.cola) + def imprimir(self): + print(self.cola) + +mi_cola = Cola(cola=[6, 7, 8, 9, 10]) +mi_cola.añadir(11) +mi_cola.eliminar() +print(mi_cola.elementos()) +mi_cola.imprimir() \ No newline at end of file diff --git a/Roadmap/09 - HERENCIA/python/any7dev.py b/Roadmap/09 - HERENCIA/python/any7dev.py new file mode 100644 index 0000000000..3a8a78f67e --- /dev/null +++ b/Roadmap/09 - HERENCIA/python/any7dev.py @@ -0,0 +1,36 @@ +""" /* + * EJERCICIO: + * Explora el concepto de herencia según tu lenguaje. Crea un ejemplo que + * implemente una superclase Animal y un par de subclases Perro y Gato, + * junto con una función que sirva para imprimir el sonido que emite cada Animal. + * + * DIFICULTAD EXTRA (opcional): + * Implementa la jerarquía de una empresa de desarrollo formada por Empleados que + * pueden ser Gerentes, Gerentes de Proyectos o Programadores. + * Cada empleado tiene un identificador y un nombre. + * Dependiendo de su labor, tienen propiedades y funciones exclusivas de su + * actividad, y almacenan los empleados a su cargo. + */ """ + +# EJERCICIO +class Animal: + def __init__(self, nombre): + self.nombre = nombre + def sonido(self): + pass + +class Perro(Animal): + def sonido(self): + print(f"Soy {self.nombre} guau") + +class Gato(Animal): + def sonido(self): + print(f"Soy {self.nombre} miau") + +mi_perro = Perro("Firulais") +mi_gato = Gato("Peluso") +mi_perro.sonido() +mi_gato.sonido() + + + diff --git a/Roadmap/10 - EXCEPCIONES/python/any7dev.py b/Roadmap/10 - EXCEPCIONES/python/any7dev.py new file mode 100644 index 0000000000..71a9eb7d60 --- /dev/null +++ b/Roadmap/10 - EXCEPCIONES/python/any7dev.py @@ -0,0 +1,32 @@ +# /* +# * EJERCICIO: +# * Explora el concepto de manejo de excepciones según tu lenguaje. +# * Fuerza un error en tu código, captura el error, imprime dicho error +# * y evita que el programa se detenga de manera inesperada. +# * Prueba a dividir "10/0" o acceder a un índice no existente +# * de un listado para intentar provocar un error. +# * +# * DIFICULTAD EXTRA (opcional): +# * Crea una función que sea capaz de procesar parámetros, pero que también +# * pueda lanzar 3 tipos diferentes de excepciones (una de ellas tiene que +# * corresponderse con un tipo de excepción creada por nosotros de manera +# * personalizada, y debe ser lanzada de manera manual) en caso de error. +# * - Captura todas las excepciones desde el lugar donde llamas a la función. +# * - Imprime el tipo de error. +# * - Imprime si no se ha producido ningún error. +# * - Imprime que la ejecución ha finalizado. +# */ + +#EJERCICIO +try: + print(10/0) +except ZeroDivisionError: + print("No se puede dividir por 0") + +lista = [1, 2, 3, 4, 5] +try: + print(lista[6]) +except IndexError: + print("No existe dicho índice") + + diff --git a/Roadmap/11 - MANEJO DE FICHEROS/python/any7dev.py b/Roadmap/11 - MANEJO DE FICHEROS/python/any7dev.py new file mode 100644 index 0000000000..25ac43f8b2 --- /dev/null +++ b/Roadmap/11 - MANEJO DE FICHEROS/python/any7dev.py @@ -0,0 +1,148 @@ +# /* +# * IMPORTANTE: Sólo debes subir el fichero de código como parte del ejercicio. +# * +# * EJERCICIO: +# * Desarrolla un programa capaz de crear un archivo que se llame como +# * tu usuario de GitHub y tenga la extensión .txt. +# * Añade varias líneas en ese fichero: +# * - Tu nombre. +# * - Edad. +# * - Lenguaje de programación favorito. +# * Imprime el contenido. +# * Borra el fichero. +# * +# * DIFICULTAD EXTRA (opcional): +# * Desarrolla un programa de gestión de ventas que almacena sus datos en un +# * archivo .txt. +# * - Cada producto se guarda en una línea del archivo de la siguiente manera: +# * [nombre_producto], [cantidad_vendida], [precio]. +# * - Siguiendo ese formato, y mediante terminal, debe permitir añadir, consultar, +# * actualizar, eliminar productos y salir. +# * - También debe poseer opciones para calcular la venta total y por producto. +# * - La opción salir borra el .txt. +# */ + +#EJERCICIO +import os + +def crea_archivo(nombre, contenido): + if not os.path.exists(nombre): #Para saber si ya existe el archivo + with open (nombre, 'w') as archivo: #Crea el archivo abriéndolo y cerrándolo + archivo.write(contenido) + else: + print("El archivo ya existe") + if os.path.exists(nombre): + with open (nombre, 'r') as archivo: #Abre el archivo abriéndolo y cerrándolo + print(archivo.read()) + else: + print("El archivo no existe") + os.remove(nombre) #Elimina el archivo. + +crea_archivo("any7dev.txt", "Ana\n36\nPython") + +#DIFICULTAD EXTRA +def gestor_ventas(): + archivo = "gestion_ventas.txt" + open(archivo, 'w').close() + while True: + opcion = input("\nDime tu opción: \n\t1-Añadir producto vendido \n\t2-Consultar archivo \n\t3-Actualizar \n\t4-Eliminar \n\t5-Totales \n\ts-Salir \nOpción--> ") + match opcion: + case "1": + añadir(archivo) + case "2": + if os.stat(archivo).st_size == 0: + print("El archivo está vacío") + else: + consultar(archivo) + case "3": + if os.stat(archivo).st_size == 0: + print("El archivo está vacío") + else: + actualizar(archivo) + case "4": + if os.stat(archivo).st_size == 0: + print("El archivo está vacío") + else: + eliminar(archivo) + case "5": + if os.stat(archivo).st_size == 0: + print("El archivo está vacío") + else: + totales(archivo) + case "s": + print("Saliendo...") + os.remove(archivo) + break + case _: + print("Opción incorrecta") + +def añadir(archivo): + producto = "" + nombre = input("Dime el nombre: ") + try: + cantidad = int(input("Cantidad vendida: ")) + precio = float(input("Precio: ")) + producto = f"{nombre}, {cantidad}, {precio}\n" + with open (archivo, 'a') as a: + a.write(producto) + print("Producto añadido") + except ValueError: + print("La cantidad debe ser un número entero y el precio entero o decimal") + + +def consultar(archivo): + with open (archivo, 'r') as a: + print(a.read()) + +def actualizar(archivo): + buscar = input("Dime el valor del campo a actualizar: ") + cambiar = input("Dime lo que quieres poner: ") + + contenido = open(archivo, 'r').read() + contenido = contenido.replace(buscar, cambiar) + + with open (archivo, 'w') as a: + a.write(contenido) + print("Cambio realizado") + +def eliminar(archivo): + producto = input("Dime el nombre del producto a eliminar: ") + encontrado = False + contador = 0 + + with open (archivo, 'r') as a: + for linea in a: + if producto in linea: + encontrado = True + break + else: + contador += 1 + + if encontrado: + a = open (archivo, 'r') + lineas = a.readlines() + a.close() + with open (archivo, 'w') as a: + linea = lineas[contador] + lineas.remove(linea) + for linea in lineas: + a.write(linea) + print("Producto eliminado") + else: + print("Producto no encontrado") + +def totales(archivo): + lista = [] + suma = 0 + total = 0 + + with open (archivo, 'r') as a: + lista = [linea.split(", ") for linea in a] + for linea in lista: + suma += float(linea[1]) * float(linea[2]) + print(f"Cantidad ganada con ventas de {linea[0]}: {suma}") + total += suma + print(f"Cantidad total ganada por las ventas: {total}") + + +gestor_ventas() \ No newline at end of file From 6a4827ff90a4e4ea6900a5a2f17c844bc8347a3c Mon Sep 17 00:00:00 2001 From: SaicoBys Date: Fri, 21 Jun 2024 23:28:45 -0400 Subject: [PATCH 04/43] #01 - python --- .../python/saicobys.py | 82 +++++++++++++++++++ 1 file changed, 82 insertions(+) create mode 100644 Roadmap/01 - OPERADORES Y ESTRUCTURAS DE CONTROL/python/saicobys.py diff --git a/Roadmap/01 - OPERADORES Y ESTRUCTURAS DE CONTROL/python/saicobys.py b/Roadmap/01 - OPERADORES Y ESTRUCTURAS DE CONTROL/python/saicobys.py new file mode 100644 index 0000000000..0293e184fc --- /dev/null +++ b/Roadmap/01 - OPERADORES Y ESTRUCTURAS DE CONTROL/python/saicobys.py @@ -0,0 +1,82 @@ +# Operadores aritméticos +x = 10 +y = 3 +suma = x + y +resta = x - y +multiplicacion = x * y +division = x / y +division_entera = x // y +modulo = x % y +potencia = x ** y + +print("Suma:", suma) +print("Resta:", resta) +print("Multiplicacion:", multiplicacion) +print("Division:", division) +print("division entera:", division_entera) +print("Modulo:", modulo) +print("Potencia:", potencia) + +# Operadores de comparacion +a = 5 +b = 8 +print("a == b:", a == b) +print("a != b:", a != b) +print("a > b:", a > b) +print("a < b:", a < b) +print("a >= b:", a >= b) +print("a <= b:", a <= b) + +# Operadores lógicos +c = True +d = False +print("c and d:", c and d) +print("c or d:", c or d) +print("not c:", not c) + +# Operadores de asignación +e = 15 +e += 5 # e = e + 5 +print("e += 5:", e) +e -= 3 # e = e - 3 +print("e -= 3:", e) + +# Operadores de identidad +f = [1, 2, 3] +g = [1, 2, 3] +h = f +print("f is g:", f is g) # False (objetos diferentes) +print("f is h:", f is h) # True (misma referencia) +print("f == g:", f == g) # True (mismo contenido) + +# Operadores de pertenencia +lista = [1, 2, 3, 4] +print("1 in lista:", 1 in lista) +print("5 in lista:", 5 in lista) + +# Condicionales +edad = 25 + +if edad < 18: + print("Eres menor de edad") +elif edad >= 18 and edad < 65: + print("Eres adulto") +else: + print("Eres jubilado") + +# Iterativas (bucles) +for i in range(1, 6): # Imprime números del 1 al 5 + print(i) + +numero = 1 +while numero <= 5: # Imprime números del 1 al 5 + print(numero) + numero += 1 + +# Excepciones +try: + resultado = 10 / 0 # División por cero (error) +except ZeroDivisionError as e: + print("Error:", e) +finally: + print("Fin del programa") From 8f39ad3b8ed99d51551256d56fea4b664545e5e7 Mon Sep 17 00:00:00 2001 From: Miguel Rejon Date: Fri, 21 Jun 2024 21:31:43 -0600 Subject: [PATCH 05/43] #00 - Javascript --- .../javascript/miguelRejon96.js | 35 +++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 Roadmap/00 - SINTAXIS, VARIABLES, TIPOS DE DATOS Y HOLA MUNDO/javascript/miguelRejon96.js diff --git a/Roadmap/00 - SINTAXIS, VARIABLES, TIPOS DE DATOS Y HOLA MUNDO/javascript/miguelRejon96.js b/Roadmap/00 - SINTAXIS, VARIABLES, TIPOS DE DATOS Y HOLA MUNDO/javascript/miguelRejon96.js new file mode 100644 index 0000000000..dcfe242617 --- /dev/null +++ b/Roadmap/00 - SINTAXIS, VARIABLES, TIPOS DE DATOS Y HOLA MUNDO/javascript/miguelRejon96.js @@ -0,0 +1,35 @@ +// Sitio oficial de Javascript: https://developer.mozilla.org/es/docs/Web/JavaScript + +//Este es un comentario en una línea +/* + Este es un comentario en varías líneas +*/ + +//Constante +const greetings = 'Hello' + +//Variable +let language = 'Javascript' + +//Tipos de datos: + +//String +const thiIsAString = 'This is a string' + +//Number +const thisIsANumber = 1 + +//BigInt +const thisIsABigInt = BigInt(9007199254740991) + +//Boolean +const thisIsABoolean = true + +//Undefined +let thisIsAnUndefined + +//Symbol +const thisIsASymbol = Symbol() + + +console.log(`${greetings} ${language}`) \ No newline at end of file From 3960921cc7ae66596aa9af81f20dcaa3aa6e4f21 Mon Sep 17 00:00:00 2001 From: Miguel Rejon Date: Sat, 22 Jun 2024 00:21:36 -0600 Subject: [PATCH 06/43] #01 - Javascript --- .../javascript/miguelRejon96.js | 129 ++++++++++++++++++ 1 file changed, 129 insertions(+) create mode 100644 Roadmap/01 - OPERADORES Y ESTRUCTURAS DE CONTROL/javascript/miguelRejon96.js diff --git a/Roadmap/01 - OPERADORES Y ESTRUCTURAS DE CONTROL/javascript/miguelRejon96.js b/Roadmap/01 - OPERADORES Y ESTRUCTURAS DE CONTROL/javascript/miguelRejon96.js new file mode 100644 index 0000000000..df9b490856 --- /dev/null +++ b/Roadmap/01 - OPERADORES Y ESTRUCTURAS DE CONTROL/javascript/miguelRejon96.js @@ -0,0 +1,129 @@ +/* + * EJERCICIO: + * - Crea ejemplos utilizando todos los tipos de operadores de tu lenguaje: + * Aritméticos, lógicos, de comparación, asignación, identidad, pertenencia, bits... + * (Ten en cuenta que cada lenguaje puede poseer unos diferentes) + * - Utilizando las operaciones con operadores que tú quieras, crea ejemplos + * que representen todos los tipos de estructuras de control que existan + * en tu lenguaje: + * Condicionales, iterativas, excepciones... + * - Debes hacer print por consola del resultado de todos los ejemplos. + * + * DIFICULTAD EXTRA (opcional): + * Crea un programa que imprima por consola todos los números comprendidos + * entre 10 y 55 (incluidos), pares, y que no son ni el 16 ni múltiplos de 3. + * + * Seguro que al revisar detenidamente las posibilidades has descubierto algo nuevo. + */ + +//Operadores Aritméticos +let x = 10; +let y = 5; +console.log("Suma: ", x + y); //Suma +console.log("Resta: ", x - y); //Resta +console.log("Multiplicación: ", x * y); //Multiplicación +console.log("División", x / y); //División +console.log("Residuo", x % y); //Residuo +console.log("Exponenciación: ", x ** y); //Exponenciación + +//Operadores de asignación +let a = 10; +a += 3; // a = a +3 +console.log("a += 3: ", a); +a -= 3; // a = a - 3 +console.log("a -= 3: ", a); +a *= 3; // a = a * 3 +console.log("a *= 3: ", a); +a /= 3; // a = a / 3 +console.log("a /= 3: ", a); +a %= 3; // a = a % 3 +console.log("a %= 3: ", a); +a **= 3; // a = a ** 3 +console.log("a **= 3: ", a); + +//Operadores de comparación +let b = 5; +console.log("a == b: ", a == b); //Igualdad +console.log("a === b: ", a === b); //Igualdad estricta +console.log("a != b: ", a != b); //Desigualdad +console.log("a !== b: ", a !== b); //Desigualdad estricta +console.log("a > b: ", a > b); //Mayor que +console.log("a < b: ", a < b); //Menor que +console.log("a >= b: ", a >= b); //Mayor o igual que +console.log("a <= b: ", a <= b); //Menor o igual que + +//Operadores lógicos +console.log("true && false: ", true && false); // AND +console.log("true || false: ", true || false); // OR +console.log("!true: ", !true); //NOT + +//Operadores de Bits +console.log(x << y); //Desplazamiento a la izquierda +console.log(x >> y); //Desplazamiento a la derecha +console.log(x >>> y); //Desplazamiento a la derecha sin signo +console.log(x & y); //Asignación AND bit a bit +console.log(x ^ y); //Asignación XOR bit a bit +console.log(x | y); //Asignación OR bit a bit +console.log(x && (x = y)); //Asignación AND lógico +console.log(x || (x = y)); //Asignación OR lógico +console.log(x ?? (x = y)); //Asignación de anulación lógica + +//Estucturas de control + +// Condicionales + +if (x > y) { + console.log("x es mayor que y"); +} else { + console.log("x no es mayor que y"); +} + +let z = 3; +switch (z) { + case 1: + console.log("Z es 1"); + break; + case 2: + console.log("Z es 2"); + break; + case 3: + console.log("z es 3"); + break; + default: + console.log("z no es 1,2 o 3"); +} + +//Iterativas +for (let i = 0; i < 5; i++) { + console.log("For loop i: ", i); +} +let j = 0; +while (j < 5) { + console.log("while loop j: ", j); + j++; +} +let k = 0; +do { + console.log("do while loop k: ", k); + k++; +} while (k < 5); + +//Excepciones +try { + throw new error("Error"); +} catch (error) { + console.log("Mensaje: ", error.message); +} finally { + console.log("Finally"); +} + +//Ejercicio Extra +function extraExercise() { + for (let i = 10; i <= 55; i++) { + if (i % 2 == 0 && i !== 16 && i % 3 !== 0) { + console.log(i); + } + } +} + +extraExercise(); From 67049b38304a481a21d8ff1a7efc641463f58969 Mon Sep 17 00:00:00 2001 From: Bernat Date: Sat, 22 Jun 2024 15:02:38 +0200 Subject: [PATCH 07/43] #21 - JavaScript --- Roadmap/21 - CALLBACKS/javascript/bernatcs.js | 52 +++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 Roadmap/21 - CALLBACKS/javascript/bernatcs.js diff --git a/Roadmap/21 - CALLBACKS/javascript/bernatcs.js b/Roadmap/21 - CALLBACKS/javascript/bernatcs.js new file mode 100644 index 0000000000..66314b67c2 --- /dev/null +++ b/Roadmap/21 - CALLBACKS/javascript/bernatcs.js @@ -0,0 +1,52 @@ +// ** EJERCICIO + +const readline = require('node:readline'); + +function numeroAnos(callback) { + const rl = readline.createInterface({ + input: process.stdin, + output: process.stdout + }); + + rl.question('Por favor ingresa tu edad: ', (edad) => { + callback(edad); + rl.close(); + }); +} + +function cuandoNaciste(edad) { + let actual = new Date(); + let anoNacimiento = actual.getFullYear() - edad; + console.log('Naciste en el: ' + anoNacimiento + ' o ' + (anoNacimiento - 1)); +} + +// numeroAnos(cuandoNaciste) + + +// ** DIFICULTAD EXTRA ** ------------------------------------------------------------------------------------------------------------------------------------------------ + +function procesaPedido(nombrePlato, callbackConfirmacion, callbackListo, callbackEntrega) { + console.log(`Iniciando pedido para ${nombrePlato}`); + setTimeout(() => { + callbackConfirmacion(nombrePlato); + setTimeout(() => { + callbackListo(nombrePlato); + setTimeout(() => { + callbackEntrega(nombrePlato); + }, Math.random() * 9000 + 1000); + }, Math.random() * 9000 + 1000); + }, Math.random() * 9000 + 1000); +} + +procesaPedido( + 'Pizza Margarita', + (plato) => { + console.log(`Confirmación recibida para ${plato}.`); + }, + (plato) => { + console.log(`${plato} está listo para ser entregado.`); + }, + (plato) => { + console.log(`${plato} ha sido entregado al cliente.`); + } +); \ No newline at end of file From 1639bc694fdcc4c63b71010be49e9c42b7e06e99 Mon Sep 17 00:00:00 2001 From: AlanShakir <144908590+AlanShakir@users.noreply.github.com> Date: Sat, 22 Jun 2024 13:57:49 -0400 Subject: [PATCH 08/43] #25 - Python manejo de logs --- Roadmap/25 - LOGS/python/alanshakir.py | 85 ++++++++++++++++++++++++++ 1 file changed, 85 insertions(+) create mode 100644 Roadmap/25 - LOGS/python/alanshakir.py diff --git a/Roadmap/25 - LOGS/python/alanshakir.py b/Roadmap/25 - LOGS/python/alanshakir.py new file mode 100644 index 0000000000..1ee368df76 --- /dev/null +++ b/Roadmap/25 - LOGS/python/alanshakir.py @@ -0,0 +1,85 @@ +""" +* + * EJERCICIO: + * Explora el concepto de "logging" en tu lenguaje. Configúralo y muestra + * un ejemplo con cada nivel de "severidad" disponible. + * + * DIFICULTAD EXTRA (opcional): + * Crea un programa ficticio de gestión de tareas que permita añadir, eliminar + * y listar dichas tareas. + * - Añadir: recibe nombre y descripción. + * - Eliminar: por nombre de la tarea. + * Implementa diferentes mensajes de log que muestren información según la + * tarea ejecutada (a tu elección). + * Utiliza el log para visualizar el tiempo de ejecución de cada tarea. + */ +""" +import logging +import random + +logging.basicConfig(format="%(process)d %(levelname)s %(message)s", level=logging.DEBUG) +logging.debug("esto es una depuracion") +logging.info("esto es una confirmacion") +logging.warning("esto es una advertencia") +logging.error("esto es un mensaje de error") +logging.critical("esto es un mensaje critico") + +#Extra + +class GestionTareas: + def __init__(self): + self.tareas = {} + + + + def agg_tarea(self): + name = input("Introduzca nombre: ") + description = input("Introduzca breve descripcion de la tarea: ") + if name in self.tareas: + logging.error("La tarea ya existe") + execution_time = random.randint(1,5) + self.tareas[name]= { + "description":description, + "execution_time":execution_time} + logging.info("tarea agregada") + + def list_tareas(self): + if not self.tareas: + logging.error("La tarea no existe") + for name, description in self.tareas.items(): + logging.info(f"nombre de la tarea: {name}") + logging.info(f"Descripcion: {description['description']}") + logging.info(f"Tiempo de ejecucion: {description['execution_time']} segundos") + + def del_tareas(self): + name = input("Introduzca nombre: ") + if name not in self.tareas: + logging.error("La tarea no existe") + else: + del self.tareas[name] + logging.info(f"la tarea {name} fue eliminada") + + + +task = GestionTareas() +while True: + print("--------->Gestor de Tareas<------------------") + print("---->Elija una de las siguientes opciones<---") + print("1. Agregar: ") + print("2. Listar: ") + print("3. Eliminar: ") + print("4. Salir: ") + + option = int(input("Seleccione una opcion: ")) + + if option == 1: + task.agg_tarea() + elif option == 2: + task.list_tareas() + elif option == 3: + task.del_tareas() + elif option == 4: + print("Has elegido salir del programa, Hasta luego") + break + else: + print("elija una de las opciones indicadas") From bc2d4b2ba1fd020b4b22a761470b2efbdf3503fd Mon Sep 17 00:00:00 2001 From: Daniel Galvan Date: Sat, 22 Jun 2024 21:22:45 +0100 Subject: [PATCH 09/43] #25 - Python --- Roadmap/25 - LOGS/python/Trufoplus.py | 74 +++++++++++++++++++++++++++ 1 file changed, 74 insertions(+) create mode 100644 Roadmap/25 - LOGS/python/Trufoplus.py diff --git a/Roadmap/25 - LOGS/python/Trufoplus.py b/Roadmap/25 - LOGS/python/Trufoplus.py new file mode 100644 index 0000000000..f1127b2440 --- /dev/null +++ b/Roadmap/25 - LOGS/python/Trufoplus.py @@ -0,0 +1,74 @@ +############################################################################### +### EJERCICIO +############################################################################### +import logging +from datetime import datetime + +# Configuracion basica de un logginf +logging.basicConfig( + #filename='my_log.log', # Nombre del archivo de log, si no lo especificas se mostrara por consola + filemode='w', # Modo fe apertura del archivo + format='%(asctime)s - %(name)s - %(levelname)s - %(message)s', #Formato del mesaje + datefmt='%d/%m/%Y %H:%M:%S', # Formato de la fecha + level=logging.DEBUG # Nivel de severidad minimo + ) + + +# Uso del logging + +logging.debug('Esto es un mensaje de depuración') +logging.info('Esto es un mensaje informativo') +logging.warning('Esto es una advertencia') +logging.error('Esto es un mensaje de error') +logging.critical('Esto es un mensaje crítico') +# Para separar los ejerccios en la consola +print() +print() +print() +############################################################################### +### DIFICULTAD EXTRA +############################################################################### +class TaskManagement(): + """ + Programa de gestion de tareas + """ + def __init__(self): + self.tasks = {} + logging.info("Inicialización del programa de gestión de tareas") + + def add_task(self, name: str, description: str): + start_time = datetime.now() + if name in self.tasks: + logging.warning(f"La tarea '{name}' ya existe. No se puede agregar de nuevo.") + return + self.tasks[name] = description + logging.info(f"Tarea '{name}' añadida con éxito.") + logging.debug(f"Descripción: {description}") + end_time = datetime.now() + logging.info(f"Tiempo de ejecución para añadir tarea: {end_time - start_time}") + + def delete_task(self, name: str): + start_time = datetime.now() + if name not in self.tasks: + logging.error(f"La tarea '{name}' no existe. No se puede eliminar.") + return + del self.tasks[name] + logging.info(f"Tarea '{name}' eliminada con éxito.") + end_time = datetime.now() + logging.info(f"Tiempo de ejecución para eliminar tarea: {end_time - start_time}") + + def __str__(self): + print("\nLISTA DE TAREAS: ") + return "\n".join([f"{name}: {desc}" for name, desc in self.tasks.items()]) + + +# Probando el codigo +mis_tareas = TaskManagement() +mis_tareas.add_task('Tarea_1', 'Limpiar el polvo') +mis_tareas.add_task('Tarea_2', 'Limpiar los baños') +mis_tareas.add_task('Tarea_2', 'Limpiar los baños') +print(mis_tareas) +mis_tareas.delete_task('Tarea_1') +mis_tareas.add_task('Tarea_3', 'Limpiar la cocina') +print(mis_tareas) +mis_tareas.delete_task('Tarea_4') \ No newline at end of file From 0508341b443b6ac6e58152cbd47ed5f89e75ee57 Mon Sep 17 00:00:00 2001 From: kenysdev Date: Sat, 22 Jun 2024 16:21:10 -0500 Subject: [PATCH 10/43] 25-rust-LOGS --- Roadmap/25 - LOGS/rust/kenysdev.rs | 94 ++++++++++++++++++++++++++++++ 1 file changed, 94 insertions(+) create mode 100644 Roadmap/25 - LOGS/rust/kenysdev.rs diff --git a/Roadmap/25 - LOGS/rust/kenysdev.rs b/Roadmap/25 - LOGS/rust/kenysdev.rs new file mode 100644 index 0000000000..80826c96b3 --- /dev/null +++ b/Roadmap/25 - LOGS/rust/kenysdev.rs @@ -0,0 +1,94 @@ +/* +╔═══════════════════════════════════════╗ +║ Autor: Kenys Alvarado ║ +║ GitHub: https://github.com/Kenysdev ║ +║ 2024 - Rust ║ +╚═══════════════════════════════════════╝ +----------------------------------------- +* LOGS +----------------------------------------- +Dependencia: https://crates.io/crates/log + https://crates.io/crates/env_logger + +[dependencies] +env_logger = "0.11.3" +log = "0.4.21" +*/ + +use log::{error, warn, info, debug, trace}; + +fn main() { + /* + * EJERCICIO #1: + * Explora el concepto de "logging" en tu lenguaje. Configúralo y muestra + * un ejemplo con cada nivel de "severidad" disponible. + */ + + env_logger::Builder::from_default_env() + .filter_level(log::LevelFilter::Trace) + .init(); + + debug!("msg {}", "debug"); + warn!("msg warn"); + info!("msg info"); + trace!("msg trace"); + error!("msg error"); + + //____________________________________ + println!("EJERCICIO #2"); + + let mut tasks = Program::new(); + + tasks.add("a", "1"); + tasks.add("b", "2"); + tasks.add("c", "3"); + + tasks.delete("a"); + tasks.show_list(); + +} + +/* +* EJERCICIO #2: +* Crea un programa ficticio de gestión de tareas que permita añadir, eliminar +* y listar dichas tareas. +* - Añadir: recibe nombre y descripción. +* - Eliminar: por nombre de la tarea. +* Implementa diferentes mensajes de log que muestren información según la +* tarea ejecutada (a tu elección). +* Utiliza el log para visualizar el tiempo de ejecución de cada tarea. +*/ + +struct Program { + tasks: std::collections::HashMap, +} + +impl Program { + fn new() -> Self { + debug!("Se inició instancia."); + Program { + tasks: std::collections::HashMap::new(), + } + } + + fn add(&mut self, name: &str, description: &str) { + self.tasks.insert(name.to_string(), description.to_string()); + info!("Se agregó una tarea."); + } + + fn delete(&mut self, name: &str) { + if self.tasks.remove(name).is_some() { + info!("Tarea '{}' eliminada.", name); + } else { + println!(); + warn!("No se encontró la tarea '{}'.", name); + } + } + + fn show_list(&self) { + info!("Lista de tareas"); + for (task, des) in &self.tasks { + println!("{} -- {}", task, des); + } + } +} From 5f9aae26cf3b929157c82a52250b9032e593bea6 Mon Sep 17 00:00:00 2001 From: Bernat Date: Sat, 22 Jun 2024 23:43:38 +0200 Subject: [PATCH 11/43] #22 - JavaScript --- .../javascript/bernatcs.js | 56 +++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 Roadmap/22 - FUNCIONES DE ORDEN SUPERIOR/javascript/bernatcs.js diff --git a/Roadmap/22 - FUNCIONES DE ORDEN SUPERIOR/javascript/bernatcs.js b/Roadmap/22 - FUNCIONES DE ORDEN SUPERIOR/javascript/bernatcs.js new file mode 100644 index 0000000000..ffb3c190d8 --- /dev/null +++ b/Roadmap/22 - FUNCIONES DE ORDEN SUPERIOR/javascript/bernatcs.js @@ -0,0 +1,56 @@ +// ** EJERCICIO + +function ordenSuperior(comprobar, funcion) { + if (comprobar){ + funcion() + } else { + console.log('No hay nada que decir') + } +} + +function decirHola(){ + console.log('Hola') +} + +ordenSuperior('Sí que hay algo', decirHola) + +// ** DIFICULTAD EXTRA ** ------------------------------------------------------------------------------------------------------------------------------- + +// const estudiantes = [ +// { nombre: 'Estudiante1', fechaNacimiento: '2000-04-22', notas: [7, 8, 9, 8, 7, 9, 8] }, +// { nombre: 'Estudiante2', fechaNacimiento: '1999-08-15', notas: [6, 7, 8, 7, 8, 9, 7] }, +// { nombre: 'Estudiante3', fechaNacimiento: '2001-12-03', notas: [8, 9, 9, 8, 9, 8, 9] }, +// { nombre: 'Estudiante4', fechaNacimiento: '2002-02-27', notas: [7, 8, 7, 8, 7, 8, 7] }, +// { nombre: 'Estudiante5', fechaNacimiento: '2000-11-10', notas: [9, 8, 8, 9, 8, 8, 9] }, +// { nombre: 'Estudiante6', fechaNacimiento: '1998-05-30', notas: [6, 7, 7, 6, 7, 7, 6] } +// ]; + + +// // Promedio calificaciones: Obtiene una lista de estudiantes por nombre y promedio de sus calificaciones. +// const obtenerPromedio = notas => notas.reduce((a, b) => a + b, 0) / notas.length; + +// const promedios = estudiantes.map(estudiante => ({ +// nombre: estudiante.nombre, +// promedio: obtenerPromedio(estudiante.notas) +// })); + +// console.log("Promedios:", promedios); + +// // Mejores estudiantes: Obtiene una lista con el nombre de los estudiantes que tienen calificaciones con un 9 o más de promedio. +// const mejoresEstudiantes = promedios +// .filter(estudiante => estudiante.promedio >= 9) +// .map(estudiante => estudiante.nombre); + +// console.log("Mejores estudiantes:", mejoresEstudiantes); + +// // Nacimiento: Obtiene una lista de estudiantes ordenada desde el más joven. +// const estudiantesOrdenadosPorNacimiento = estudiantes +// .slice() +// .sort((a, b) => new Date(b.fechaNacimiento) - new Date(a.fechaNacimiento)); + +// console.log("Estudiantes ordenados por nacimiento (de más joven a más viejo):", estudiantesOrdenadosPorNacimiento.map(est => est.nombre)); + +// // Mayor calificación: Obtiene la calificación más alta de entre todas las de los alumnos. +// const mayorCalificacion = Math.max(...estudiantes.flatMap(estudiante => estudiante.notas)); + +// console.log("Mayor calificación:", mayorCalificacion); \ No newline at end of file From 75bdfd5efc3969cb56bce91a273d24a9d30be819 Mon Sep 17 00:00:00 2001 From: qwik zgheib mossad bashit Date: Sat, 22 Jun 2024 17:35:33 -0500 Subject: [PATCH 12/43] feat: #11 - Javascript --- .../javascript/qwik-zgheib.js | 176 ++++++++++++++++++ 1 file changed, 176 insertions(+) create mode 100644 Roadmap/11 - MANEJO DE FICHEROS/javascript/qwik-zgheib.js diff --git a/Roadmap/11 - MANEJO DE FICHEROS/javascript/qwik-zgheib.js b/Roadmap/11 - MANEJO DE FICHEROS/javascript/qwik-zgheib.js new file mode 100644 index 0000000000..0b76be6f65 --- /dev/null +++ b/Roadmap/11 - MANEJO DE FICHEROS/javascript/qwik-zgheib.js @@ -0,0 +1,176 @@ +/* you need install package readline-sync */ +import { writeFile, readFile, unlink } from "fs"; +import readline from "readline-sync"; + +/* -- exercise */ +const createFile = (fileName, content) => { + writeFile(fileName, content, (err) => { + if (err) { + console.error("Error writing file:", err); + return; + } + console.log("File created successfully!"); + }); +}; + +const readFileContent = (fileName) => { + readFile(fileName, "utf8", (err, data) => { + if (err) { + console.error("Error reading file:", err); + return; + } + console.log("File content:", data); + }); +}; + +const deleteFile = (fileName) => { + unlink(fileName, (err) => { + if (err) { + console.error("Error deleting file:", err); + return; + } + console.log("File deleted successfully!"); + }); +}; + +const githubUsername = "qwik-zgheib"; + +const content = `Name: Qwik Zgheib\nAge: 22\nFavorite Programming Language: JavaScript`; + +const fileName = `${githubUsername}.txt`; + +createFile(fileName, content); +readFileContent(fileName); +deleteFile(fileName); + +/* -- extra challenge */ +import fs from "fs"; +import path from "path"; + +const filePath = path.join(process.cwd(), "sales.txt"); + +const SalesManager = { + addProduct: () => { + const name = readline.question("Enter product name: "); + const quantity = readline.questionInt("Enter quantity sold: "); + const price = readline.questionFloat("Enter price: "); + + const productLine = `${name}, ${quantity}, ${price}\n`; + fs.appendFileSync(filePath, productLine); + console.log("Product added."); + }, + + viewProducts: () => { + if (!fs.existsSync(filePath)) { + console.log("No products found."); + return; + } + const data = fs.readFileSync(filePath, "utf8"); + console.log("Current Products:\n" + data); + }, + + updateProduct: () => { + if (!fs.existsSync(filePath)) { + console.log("No products to update."); + return; + } + const data = fs.readFileSync(filePath, "utf8"); + const products = data.split("\n").filter((line) => line.trim() !== ""); + const name = readline.question("Enter product name to update: "); + + const productIndex = products.findIndex((line) => line.split(", ")[0] === name); + if (productIndex !== -1) { + const quantity = readline.questionInt("Enter new quantity sold: "); + const price = readline.questionFloat("Enter new price: "); + products[productIndex] = `${name}, ${quantity}, ${price}`; + fs.writeFileSync(filePath, products.join("\n") + "\n"); + console.log("Product updated."); + } else { + console.log("Product not found."); + } + }, + + deleteProduct: () => { + if (!fs.existsSync(filePath)) { + console.log("No products to delete."); + return; + } + const data = fs.readFileSync(filePath, "utf8"); + const products = data.split("\n").filter((line) => line.trim() !== ""); + const name = readline.question("Enter product name to delete: "); + + const newProducts = products.filter((line) => line.split(", ")[0] !== name); + fs.writeFileSync(filePath, newProducts.join("\n") + "\n"); + console.log("Product deleted."); + }, + + calculateTotalSales: () => { + if (!fs.existsSync(filePath)) { + console.log("No sales data found."); + return; + } + const data = fs.readFileSync(filePath, "utf8"); + const products = data.split("\n").filter((line) => line.trim() !== ""); + + let totalSales = 0; + products.forEach((line) => { + const [, quantity, price] = line.split(", "); + totalSales += parseInt(quantity) * parseFloat(price); + }); + console.log("Total Sales: $" + totalSales.toFixed(2)); + }, + + calculateSalesByProduct: () => { + if (!fs.existsSync(filePath)) { + console.log("No sales data found."); + return; + } + const data = fs.readFileSync(filePath, "utf8"); + const products = data.split("\n").filter((line) => line.trim() !== ""); + + const salesByProduct = {}; + products.forEach((line) => { + const [name, quantity, price] = line.split(", "); + if (!salesByProduct[name]) { + salesByProduct[name] = 0; + } + salesByProduct[name] += parseInt(quantity) * parseFloat(price); + }); + + for (const [name, total] of Object.entries(salesByProduct)) { + console.log(`${name}: $${total.toFixed(2)}`); + } + }, + + exit: () => { + if (fs.existsSync(filePath)) { + fs.unlinkSync(filePath); + } + console.log("Exiting and deleting sales file."); + process.exit(); + }, +}; + +const mainMenu = () => { + while (true) { + console.log( + "\n1. Add Product\n2. View Products\n3. Update Product\n4. Delete Product\n5. Calculate Total Sales\n6. Calculate Sales by Product\n7. Exit" + ); + + let choice = readline.questionInt("Enter your choice: "); + + while (choice < 1 || choice > 7) { + console.log("Invalid choice. Please try again."); + choice = readline.questionInt("Enter your choice: "); + } + if (choice === 1) SalesManager.addProduct(); + if (choice === 2) SalesManager.viewProducts(); + if (choice === 3) SalesManager.updateProduct(); + if (choice === 4) SalesManager.deleteProduct(); + if (choice === 5) SalesManager.calculateTotalSales(); + if (choice === 6) SalesManager.calculateSalesByProduct(); + if (choice === 7) SalesManager.exit(); + } +}; + +mainMenu(); From 7fe2c6ed6e4ba2ca91b9076c11ed86975e5ddc4d Mon Sep 17 00:00:00 2001 From: qwik zgheib mossad bashit Date: Sat, 22 Jun 2024 17:35:43 -0500 Subject: [PATCH 13/43] feat: #11 - Typescript --- .../typescript/qwik-zgheib.ts | 182 ++++++++++++++++++ 1 file changed, 182 insertions(+) create mode 100644 Roadmap/11 - MANEJO DE FICHEROS/typescript/qwik-zgheib.ts diff --git a/Roadmap/11 - MANEJO DE FICHEROS/typescript/qwik-zgheib.ts b/Roadmap/11 - MANEJO DE FICHEROS/typescript/qwik-zgheib.ts new file mode 100644 index 0000000000..a8a262dab9 --- /dev/null +++ b/Roadmap/11 - MANEJO DE FICHEROS/typescript/qwik-zgheib.ts @@ -0,0 +1,182 @@ +import readline from "readline-sync"; +import fs from "fs"; +import path from "path"; + +const createFile = (fileName: string, content: string): void => { + fs.writeFile(fileName, content, (err) => { + if (err) { + console.error("Error writing file:", err); + return; + } + console.log("File created successfully!"); + }); +}; + +const readFileContent = (fileName: string): void => { + fs.readFile(fileName, "utf8", (err, data) => { + if (err) { + console.error("Error reading file:", err); + return; + } + console.log("File content:", data); + }); +}; + +const deleteFile = (fileName: string): void => { + fs.unlink(fileName, (err) => { + if (err) { + console.error("Error deleting file:", err); + return; + } + console.log("File deleted successfully!"); + }); +}; + +const githubUsername: string = "qwik-zgheib"; + +const content: string = `Name: Qwik Zgheib\nAge: 22\nFavorite Programming Language: JavaScript`; + +const fileName: string = `${githubUsername}.txt`; + +createFile(fileName, content); +readFileContent(fileName); +deleteFile(fileName); + +/* -- extra challenge */ +const filePath: string = path.join(process.cwd(), "sales.txt"); + +interface SalesManagerType { + addProduct: () => void; + viewProducts: () => void; + updateProduct: () => void; + deleteProduct: () => void; + calculateTotalSales: () => void; + calculateSalesByProduct: () => void; + exit: () => void; +} + +const SalesManager: SalesManagerType = { + addProduct: (): void => { + const name: string = readline.question("Enter product name: "); + const quantity: number = readline.questionInt("Enter quantity sold: "); + const price: number = readline.questionFloat("Enter price: "); + + const productLine: string = `${name}, ${quantity}, ${price}\n`; + fs.appendFileSync(filePath, productLine); + console.log("Product added."); + }, + + viewProducts: (): void => { + if (!fs.existsSync(filePath)) { + console.log("No products found."); + return; + } + const data: string = fs.readFileSync(filePath, "utf8"); + console.log("Current Products:\n" + data); + }, + + updateProduct: (): void => { + if (!fs.existsSync(filePath)) { + console.log("No products to update."); + return; + } + const data: string = fs.readFileSync(filePath, "utf8"); + const products: string[] = data.split("\n").filter((line) => line.trim() !== ""); + const name: string = readline.question("Enter product name to update: "); + + const productIndex: number = products.findIndex((line) => line.split(", ")[0] === name); + if (productIndex !== -1) { + const quantity: number = readline.questionInt("Enter new quantity sold: "); + const price: number = readline.questionFloat("Enter new price: "); + products[productIndex] = `${name}, ${quantity}, ${price}`; + fs.writeFileSync(filePath, products.join("\n") + "\n"); + console.log("Product updated."); + } else { + console.log("Product not found."); + } + }, + + deleteProduct: (): void => { + if (!fs.existsSync(filePath)) { + console.log("No products to delete."); + return; + } + const data: string = fs.readFileSync(filePath, "utf8"); + const products: string[] = data.split("\n").filter((line) => line.trim() !== ""); + const name: string = readline.question("Enter product name to delete: "); + + const newProducts: string[] = products.filter((line) => line.split(", ")[0] !== name); + fs.writeFileSync(filePath, newProducts.join("\n") + "\n"); + console.log("Product deleted."); + }, + + calculateTotalSales: (): void => { + if (!fs.existsSync(filePath)) { + console.log("No sales data found."); + return; + } + const data: string = fs.readFileSync(filePath, "utf8"); + const products: string[] = data.split("\n").filter((line) => line.trim() !== ""); + + let totalSales: number = 0; + products.forEach((line) => { + const [, quantity, price] = line.split(", "); + totalSales += parseInt(quantity) * parseFloat(price); + }); + console.log("Total Sales: $" + totalSales.toFixed(2)); + }, + + calculateSalesByProduct: (): void => { + if (!fs.existsSync(filePath)) { + console.log("No sales data found."); + return; + } + const data: string = fs.readFileSync(filePath, "utf8"); + const products: string[] = data.split("\n").filter((line) => line.trim() !== ""); + + const salesByProduct: Record = {}; + products.forEach((line) => { + const [name, quantity, price] = line.split(", "); + if (!salesByProduct[name]) { + salesByProduct[name] = 0; + } + salesByProduct[name] += parseInt(quantity) * parseFloat(price); + }); + + for (const [name, total] of Object.entries(salesByProduct)) { + console.log(`${name}: $${total.toFixed(2)}`); + } + }, + + exit: (): void => { + if (fs.existsSync(filePath)) { + fs.unlinkSync(filePath); + } + console.log("Exiting and deleting sales file."); + process.exit(); + }, +}; + +const mainMenu = (): void => { + while (true) { + console.log( + "\n1. Add Product\n2. View Products\n3. Update Product\n4. Delete Product\n5. Calculate Total Sales\n6. Calculate Sales by Product\n7. Exit" + ); + + let choice: number = readline.questionInt("Enter your choice: "); + + while (choice < 1 || choice > 7) { + console.log("Invalid choice. Please try again."); + choice = readline.questionInt("Enter your choice: "); + } + if (choice === 1) SalesManager.addProduct(); + if (choice === 2) SalesManager.viewProducts(); + if (choice === 3) SalesManager.updateProduct(); + if (choice === 4) SalesManager.deleteProduct(); + if (choice === 5) SalesManager.calculateTotalSales(); + if (choice === 6) SalesManager.calculateSalesByProduct(); + if (choice === 7) SalesManager.exit(); + } +}; + +mainMenu(); From 664c93c02f43e58e03a4bc7b37108fe1ee6eeb7a Mon Sep 17 00:00:00 2001 From: qwik zgheib mossad bashit Date: Sat, 22 Jun 2024 17:35:51 -0500 Subject: [PATCH 14/43] feat: #12 - Javascript --- .../12 - JSON Y XML/javascript/qwik-zgheib.js | 56 +++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 Roadmap/12 - JSON Y XML/javascript/qwik-zgheib.js diff --git a/Roadmap/12 - JSON Y XML/javascript/qwik-zgheib.js b/Roadmap/12 - JSON Y XML/javascript/qwik-zgheib.js new file mode 100644 index 0000000000..53d2a13ee0 --- /dev/null +++ b/Roadmap/12 - JSON Y XML/javascript/qwik-zgheib.js @@ -0,0 +1,56 @@ +/* -- exercise */ +import fs from "fs"; + +const content = { + name: "Qwik Zgheib", + age: 22, + birthdate: "2002-11-09", + programmingLanguages: ["JavaScript", "Typescript", "Python"], +}; + +const exerciseMain = { + createfile: (filename, content, type = "json") => { + try { + const jsonContent = JSON.stringify(content); + if (type === "json") fs.writeFileSync(`${filename}.json`, jsonContent); + if (type === "xml") { + const xmlContent = ` + ${content.name} + ${content.age} + ${content.birthdate} + + ${content.programmingLanguages.map((lang) => `${lang}`).join("")} + + `; + fs.writeFileSync(`${filename}.xml`, xmlContent); + } + } catch (error) { + console.error(error); + } + }, + readFile: (filename) => { + try { + const jsonContent = fs.readFileSync(`${filename}.json`, "utf-8"); + const xmlContent = fs.readFileSync(`${filename}.xml`, "utf-8"); + console.log(`Reading ${filename}.json\n`, jsonContent); + console.log(`\nReading ${filename}.xml\n`, xmlContent); + } catch (error) { + console.error(error); + } + }, + deleteFile: (filename) => { + try { + console.log("Deleting files..."); + fs.unlinkSync(`${filename}.json`); + fs.unlinkSync(`${filename}.xml`); + } catch (error) { + console.error(error); + } + }, +}; + +exerciseMain.createfile("data", content, "json"); +exerciseMain.createfile("data", content, "xml"); + +exerciseMain.readFile("data"); +exerciseMain.deleteFile("data"); From 20a589090db24ab0b877705bd33304025412966e Mon Sep 17 00:00:00 2001 From: qwik zgheib mossad bashit Date: Sat, 22 Jun 2024 17:36:01 -0500 Subject: [PATCH 15/43] feat: #12 - Typescript --- .../12 - JSON Y XML/typescript/qwik-zgheib.ts | 65 +++++++++++++++++++ 1 file changed, 65 insertions(+) create mode 100644 Roadmap/12 - JSON Y XML/typescript/qwik-zgheib.ts diff --git a/Roadmap/12 - JSON Y XML/typescript/qwik-zgheib.ts b/Roadmap/12 - JSON Y XML/typescript/qwik-zgheib.ts new file mode 100644 index 0000000000..f8eec9f4b8 --- /dev/null +++ b/Roadmap/12 - JSON Y XML/typescript/qwik-zgheib.ts @@ -0,0 +1,65 @@ +/* -- exercise */ +import fs from "fs"; + +interface Content { + name: string; + age: number; + birthdate: string; + programmingLanguages: string[]; +} + +const content: Content = { + name: "Qwik Zgheib", + age: 22, + birthdate: "2002-11-09", + programmingLanguages: ["JavaScript", "Typescript", "Python"], +}; + +type FileType = "json" | "xml"; + +const exerciseMain = { + createfile: (filename: string, content: Content, type: FileType = "json"): void => { + try { + const jsonContent: string = JSON.stringify(content); + if (type === "json") fs.writeFileSync(`${filename}.json`, jsonContent); + if (type === "xml") { + const xmlContent: string = ` + ${content.name} + ${content.age} + ${content.birthdate} + + ${content.programmingLanguages.map((lang) => `${lang}`).join("")} + + `; + fs.writeFileSync(`${filename}.xml`, xmlContent); + } + } catch (error) { + console.error(error); + } + }, + readFile: (filename: string): void => { + try { + const jsonContent: string = fs.readFileSync(`${filename}.json`, "utf-8"); + const xmlContent: string = fs.readFileSync(`${filename}.xml`, "utf-8"); + console.log(`Reading ${filename}.json\n`, jsonContent); + console.log(`\nReading ${filename}.xml\n`, xmlContent); + } catch (error) { + console.error(error); + } + }, + deleteFile: (filename: string): void => { + try { + console.log("Deleting files..."); + fs.unlinkSync(`${filename}.json`); + fs.unlinkSync(`${filename}.xml`); + } catch (error) { + console.error(error); + } + }, +}; + +exerciseMain.createfile("data", content, "json"); +exerciseMain.createfile("data", content, "xml"); + +exerciseMain.readFile("data"); +exerciseMain.deleteFile("data"); From b097083fbb7530f244ed5632fcdc47f7ec0360da Mon Sep 17 00:00:00 2001 From: qwik zgheib mossad bashit Date: Sat, 22 Jun 2024 17:36:11 -0500 Subject: [PATCH 16/43] feat: #13 - Javascript --- .../javascript/qwik-zgheib.js | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 Roadmap/13 - PRUEBAS UNITARIAS/javascript/qwik-zgheib.js diff --git a/Roadmap/13 - PRUEBAS UNITARIAS/javascript/qwik-zgheib.js b/Roadmap/13 - PRUEBAS UNITARIAS/javascript/qwik-zgheib.js new file mode 100644 index 0000000000..5204304c09 --- /dev/null +++ b/Roadmap/13 - PRUEBAS UNITARIAS/javascript/qwik-zgheib.js @@ -0,0 +1,20 @@ +import assert from "assert"; +export const sum = (a, b) => a + b; + +function test(description, fn) { + try { + fn(); + console.log(`✔️ ${description}`); + } catch (error) { + console.log(`❌ ${description}`); + console.error(error); + } +} + +test("adds 1 + 2 to equal 3", () => { + assert.strictEqual(sum(1, 2), 3); +}); + +test("adds 1 + 1 to equal 2", () => { + assert.strictEqual(sum(1, 1), 2); +}); From 54651515312534bdbc5ecf17bd0eb70010c22485 Mon Sep 17 00:00:00 2001 From: qwik zgheib mossad bashit Date: Sat, 22 Jun 2024 17:36:25 -0500 Subject: [PATCH 17/43] feat: #13 - Typescript --- .../typescript/qwik-zgheib.ts | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 Roadmap/13 - PRUEBAS UNITARIAS/typescript/qwik-zgheib.ts diff --git a/Roadmap/13 - PRUEBAS UNITARIAS/typescript/qwik-zgheib.ts b/Roadmap/13 - PRUEBAS UNITARIAS/typescript/qwik-zgheib.ts new file mode 100644 index 0000000000..d4abbc5b9b --- /dev/null +++ b/Roadmap/13 - PRUEBAS UNITARIAS/typescript/qwik-zgheib.ts @@ -0,0 +1,21 @@ +import assert from "assert"; + +export const sum = (a: number, b: number): number => a + b; + +function test(description: string, fn: () => void): void { + try { + fn(); + console.log(`✔️ ${description}`); + } catch (error) { + console.log(`❌ ${description}`); + console.error(error); + } +} + +test("adds 1 + 2 to equal 3", () => { + assert.strictEqual(sum(1, 2), 3); +}); + +test("adds 1 + 1 to equal 2", () => { + assert.strictEqual(sum(1, 1), 2); +}); From 8b0ca16d29c9202dd9910027a1fce501c3279b4e Mon Sep 17 00:00:00 2001 From: Amador Quispe Date: Sat, 22 Jun 2024 21:37:00 -0500 Subject: [PATCH 18/43] #25 - JAVA --- Roadmap/25 - LOGS/java/AmadorQuispe.java | 152 +++++++++++++++++++++++ 1 file changed, 152 insertions(+) create mode 100644 Roadmap/25 - LOGS/java/AmadorQuispe.java diff --git a/Roadmap/25 - LOGS/java/AmadorQuispe.java b/Roadmap/25 - LOGS/java/AmadorQuispe.java new file mode 100644 index 0000000000..5f1d874fde --- /dev/null +++ b/Roadmap/25 - LOGS/java/AmadorQuispe.java @@ -0,0 +1,152 @@ +package com.amsoft.roadmap.example25; + +import java.io.IOException; +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.Map; +import java.util.Scanner; +import java.util.TreeMap; +import java.util.logging.Logger; +import java.util.logging.Formatter; +import java.util.logging.LogRecord; +import java.util.logging.FileHandler; +import java.util.logging.ConsoleHandler; +import java.util.logging.LogManager; +import java.util.logging.Level; + +public class ExampleMain { + private final static Logger LOGGER = LoggerConfig.getLogger(ExampleMain.class); + public static void logs() { + LOGGER.severe("Severe Log"); + LOGGER.warning("Warning Log"); + LOGGER.info("Info Log"); + LOGGER.config("Config Log"); + LOGGER.fine("Fine Log"); + LOGGER.finer("Finer Log"); + LOGGER.finest("Finest Log"); + } + + public static void main(String[] args) { + logs(); + TaskManager taskManager = new TaskManager(); + taskManager.init(); + } +} + +class TaskManager { + Logger logger = LoggerConfig.getLogger(TaskManager.class); + public void init(){ + logger.info("administrador de tareas iniciado."); + Scanner sc = new Scanner(System.in); + sc.useDelimiter("\n"); + TreeMap tasks = new TreeMap<>(); + String option = ""; + while (!option.equals("4")){ + long timeStart; + long timeEnd; + menu(); + System.out.println("Ingrese en número de la opción:"); + option = sc.nextLine(); + switch (option){ + case "1": + System.out.println("Tareas registradas"); + timeStart = System.currentTimeMillis(); + if(tasks.isEmpty()) System.out.println("No hay tareas registradas"); + tasks.forEach((k,v)->System.out.println(k + " - " + v )); + timeEnd = System.currentTimeMillis(); + logger.info("Tiempo de ejecución en listado " + (timeEnd - timeStart) + "ms"); + break; + case "2": + System.out.println("Agregar una tarea"); + timeStart = System.currentTimeMillis(); + System.out.print("Ingrese nombre de la tarea:"); + String name = sc.nextLine(); + System.out.print("Ingrese descripción de la tarea:"); + String description = sc.nextLine(); + tasks.put(name,description); + timeEnd = System.currentTimeMillis(); + logger.info("Tarea creada " + name + " Tiempo de ejecución " + (timeEnd - timeStart) + "ms"); + break; + case "3": + System.out.println("Eliminar una tarea"); + timeStart = System.currentTimeMillis(); + System.out.print("Ingrese nombre de la tarea a eliminar:"); + String nameToDelete = sc.nextLine(); + if(tasks.remove(nameToDelete)!=null){ + timeEnd = System.currentTimeMillis(); + logger.info("Tarea eliminada " + nameToDelete + " Tiempo de ejecución " + (timeEnd - timeStart) + "ms"); + }else{ + timeEnd = System.currentTimeMillis(); + logger.info("Tarea no registrada " + nameToDelete + " Tiempo de ejecución " + (timeEnd - timeStart) + "ms"); + } + break; + case "4": + System.out.println("Gracias por usar"); + logger.info("Saliendo del sistema"); + break; + default: + System.out.println("Opción no disponible"); + logger.warning("Opción no valida :"+option); + break; + } + } + } + private void menu(){ + System.out.println("=".repeat(29)); + System.out.println("|| ADMINISTRADOR DE TAREAS ||"); + System.out.println("=".repeat(29)); + System.out.println("Opciones disponibles"); + System.out.println("[1] Mostrar tareas"); + System.out.println("[2] Agregar una tarea"); + System.out.println("[3] Eliminar una tarea"); + System.out.println("[4] Salir"); + } +} + +class LogFormatter extends Formatter { + private static final String PATTERN = "yyyy-MM-dd'T'HH:mm:ss.SSSZ"; + private final SimpleDateFormat dateFormat = new SimpleDateFormat(PATTERN); + private static final int LEVEL_NAME_LENGTH = 7; + + @Override + public String format(LogRecord record) { + StringBuilder sb = new StringBuilder(); + String formattedDate = dateFormat.format(new Date(record.getMillis())); + sb.append("\u001B[30m"); + sb.append(formattedDate).append(" "); + String levelName = record.getLevel().getLocalizedName(); + sb.append(padRight(levelName)).append(" "); + sb.append(record.getLongThreadID()).append(" --- "); + sb.append("[").append(record.getLoggerName()).append("] "); + sb.append(": ").append(formatMessage(record)); + sb.append("\u001B[0m"); + sb.append("\n"); + return sb.toString(); + } + + private String padRight(String s) { + return String.format("%1$-" + LEVEL_NAME_LENGTH + "s", s); + } +} + +class LoggerConfig { + static { + try { + FileHandler fileHandler = new FileHandler("Logging.txt"); + fileHandler.setFormatter(new LogFormatter()); + ConsoleHandler consoleHandler = new ConsoleHandler(); + consoleHandler.setFormatter(new LogFormatter()); + LogManager.getLogManager().reset(); + Logger rootLogger = Logger.getLogger(""); + rootLogger.setLevel(Level.ALL); + rootLogger.addHandler(fileHandler); + rootLogger.addHandler(consoleHandler); + } catch (IOException e) { + throw new RuntimeException("Error al configurar el logger", e); + } + } + + public static Logger getLogger(Class clazz) { + return Logger.getLogger(clazz.getName()); + } +} \ No newline at end of file From 57a0e89c8c5884827647502cf13b388016a80861 Mon Sep 17 00:00:00 2001 From: Queso Date: Thu, 20 Jun 2024 23:24:02 -0500 Subject: [PATCH 19/43] Ejercicio 07 --- Roadmap/07 - PILAS Y COLAS/python/NeosV.py | 81 ++++++++++++++++++++++ 1 file changed, 81 insertions(+) create mode 100644 Roadmap/07 - PILAS Y COLAS/python/NeosV.py diff --git a/Roadmap/07 - PILAS Y COLAS/python/NeosV.py b/Roadmap/07 - PILAS Y COLAS/python/NeosV.py new file mode 100644 index 0000000000..7cca733dd7 --- /dev/null +++ b/Roadmap/07 - PILAS Y COLAS/python/NeosV.py @@ -0,0 +1,81 @@ +# pila +stack = [] + +stack.append(1) +stack.append(2) +stack.append(3) +stack.append(4) + +print(stack) +print (stack.pop()) +print(stack) + +""""La pila ingresa varios valores pero al usar el pop siempre va a sacar el ultimo item (de la derecha)""" + +queue = [] + +queue.append(1) +queue.append(2) +queue.append(3) +queue.append(4) + +print(queue) +print(queue.pop(0)) +print (queue) + +"""la fila ingresa varios valores pero al usar el pop en el indice 0 siempre va a sacar el primer item (de la izquierda)""" + +#Ejercicios dificultad Extra + + +def paginaweb(): + + stack = [] + + while True: + + accion = input("Añade una url o la accion que quieras: adelante/atras/salir") + + if accion == "salir": + print ("saliendo de la web") + break + elif accion == "adelante": + pass + elif accion == "atras": + if len(stack) > 0: + stack.pop() + else: + stack.append(accion) + + if len(stack) > 0: + + print(f"estas en la web: {stack[len(stack)-1]}") + + else: + print("estas en el inicio") + + + +def impresora(): + + queue = [] + + while True: + accion = input("porfavor indica el nombre del documento a agregar ola accion que quieres hacer: imprimir/salir " ) + + if accion == "imprimir": + + if len(queue) > 0: + print(f"El Documento {queue.pop(0)} ha sido impreso") + else: + print("no hay documentos para imprimir") + + elif accion == "salir": + print("saliendo de la impresora") + break + + else: + queue.append(accion) + print(f"documento {accion} agregado") + +impresora() \ No newline at end of file From bc804f52110881ec540882ae3d405b2eba5a200b Mon Sep 17 00:00:00 2001 From: PedroJOG <144932073+PedroJOG@users.noreply.github.com> Date: Fri, 21 Jun 2024 07:07:26 +0200 Subject: [PATCH 20/43] #1 - Python --- .../python/PedroJOG.py | 125 ++++++++++++++++++ 1 file changed, 125 insertions(+) create mode 100644 Roadmap/01 - OPERADORES Y ESTRUCTURAS DE CONTROL/python/PedroJOG.py diff --git a/Roadmap/01 - OPERADORES Y ESTRUCTURAS DE CONTROL/python/PedroJOG.py b/Roadmap/01 - OPERADORES Y ESTRUCTURAS DE CONTROL/python/PedroJOG.py new file mode 100644 index 0000000000..67fd4a14f3 --- /dev/null +++ b/Roadmap/01 - OPERADORES Y ESTRUCTURAS DE CONTROL/python/PedroJOG.py @@ -0,0 +1,125 @@ +#Operadores aritméticos +num1 = 4 +num2 = 3 +suma = num1 + num2 +resta = num1 - num2 +producto = num1 * num2 +division = num1 / num2 +division_entero = num1 // num2 +resto = num1 % num2 +potencia = num1 ** num2 + +print(f"Suma: {suma}, Resta: {resta}, Producto: {producto}, División: {division}, División entero: {division_entero}, Resto: {resto}, Potencia: {potencia}") + +#Operadores relacionales +mayor_que = num1 > num2 +menor_que = num1 < num2 +igual_a = num1 == num2 +mayor_o_igual = num1 >= num2 +menor_o_igual = num1 <= num2 +diferente_de = num1 != num2 + +print(f"Mayor que: {mayor_que}, Menor que: {menor_que}, Igual a: {igual_a}, Mayor o igual que: {mayor_o_igual}, Menor o igual que: {menor_o_igual}, Diferente de: {diferente_de}") + +#Operadores de asignación +num3 = 4 +num3 += 8 #Equivalencia: num1 = num1 + 8 +print(num3) +num3 -= 8 #Equivalencia: num1 = num1 - 8 +print(num3) +num3 *= 8 #Equivalencia: num1 = num1 * 8 +print(num3) +num3 **= 8 #Equivalencia: num1 = num1 ** 8 +print(num3) +num3 /= 8 #Equivalencia: num1 = num1 / 8 +print(num3) +num3 //= 8 #Equivalencia: num1 = num1 // 8 +print(num3) +num3 %= 8 #Equivalencia: num1 = num1 % 8 +print(num3) + +#Operadores lógicos +print(f"5 < 8 and 8 > 3 es: {5 < 8 and 8 > 3}") +print(f"4 > 3 or 2 > 9 es: {4 > 3 or 2 > 9}") +print(f"5 > 6 es: {not 5 > 6}") + +#Operadores de pertenencia +print(f"in: 'a' in 'hola' es {'a' in 'hola'}") #True +print(f"not in: 'a' not in 'hola' es {'a' not in 'hola'}") #False + +#Operadores de identidad +mi_variable = 10 +print(id(mi_variable)) #4372070928 +tu_variable = 10 +print(id(tu_variable)) #4372070928 + +print(f"is: mi_variable is tu_variable es {mi_variable is tu_variable}") #True +print(f"is not: mi_variable is not tu_variable es {mi_variable is not tu_variable}") #False + +#Operador nivel de Bit + ##operador and &: comparamos todos los bits uno a uno, y, si están los dos a 1, entonces sería 1; si alguno de los dos valores está a 0, sería 0. +numero = 20 +numero_bin = 0b10100 + +numero_dos = 22 +numero_dos_bin = 0b10110 + +print(bin(numero & numero_dos)) ## 0b10100 + + #operador or |: comparamos todos los bits uno a uno, y, si está alguno de los dos a 1, entonces sería 1; y si no está ninguno, es 0. + +print(bin(numero | numero_dos)) ## 0b10110 + + #operador not ~ invierte cada bit en el operando. El bit que tiene como valor 1 lo pone a 0, y al contrario. + +print(bin(~numero)) ## -ob10101 + + #operador xor ^ devuelve los bits que estén a 1 no comunes en los dos operandos. + +print(bin(numero ^ numero_dos)) ##^0b10 + + #operador shift >> ó << se utiliza para mover bits hacia la derecha ó izquierda. Hacen falta dos parámetros para indicarle primero qué vamos a desplazar y después el número de posiciones que lo desplazaremos. + +print(bin(numero >> 2)) ##ob101 +print(bin(numero << 2)) ##ob1010000 + +## Estructuras de control + + # if => condicional +color = "azul" + +if color == "azul": + print("Hace frio en la calle") +elif color == "rojo": + print("Hace calor en la calle") +else: + print("No hace ni frío ni calor") + + # for => iterativa + +cadena = 'Sevilla' + +for i in cadena: + print(i) + + # while => iterativa + +numero = 1 +while numero < 6: + print('hola mundo') + numero = numero + 1 + + # Manejo de excepciones +try: + print('No hay error') +except TypeError: + print(f'Encontré este error: {TypeError}') +finally: + print('Siempre se ejecuta') + +### EXTRA ### + +for a in range(10, 56): + if a % 2 == 0 and a != 16 and a % 3 != 0: + print(a) + From 8cf3d27d80d419e4c3f2b24d9a23ca755d209594 Mon Sep 17 00:00:00 2001 From: Christian Date: Fri, 21 Jun 2024 01:26:10 -0500 Subject: [PATCH 21/43] #22 - Javascript --- .../javascript/christian-jfr.js | 122 ++++++++++++++++++ 1 file changed, 122 insertions(+) create mode 100644 Roadmap/22 - FUNCIONES DE ORDEN SUPERIOR/javascript/christian-jfr.js diff --git a/Roadmap/22 - FUNCIONES DE ORDEN SUPERIOR/javascript/christian-jfr.js b/Roadmap/22 - FUNCIONES DE ORDEN SUPERIOR/javascript/christian-jfr.js new file mode 100644 index 0000000000..55f5856485 --- /dev/null +++ b/Roadmap/22 - FUNCIONES DE ORDEN SUPERIOR/javascript/christian-jfr.js @@ -0,0 +1,122 @@ +// #22 FUNCIONES DE ORDEN SUPERIOR +/** + * EJERCICIO: + * Explora el concepto de funciones de orden superior en tu lenguaje + * creando ejemplos simples (a tu elección) que muestren su funcionamiento. + */ +// Callbacks +const numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]; + +function arrayFilter(arr, callback) { + const filteredArr = []; + for (let i = 0; i < arr.length; i++) { + callback(arr[i]) ? filteredArr.push(arr[i]) : null; + } + return filteredArr; +} + +function isOdd(x) { + return x % 2 != 0; +} + +function isEven(x) { + return x % 2 === 0; +} + +console.log(arrayFilter(numbers, isOdd)); // -> [1, 3, 5, 7, 9] +console.log(arrayFilter(numbers, isEven)); // -> [2, 4, 6, 8, 10] + +// Usando el filter que viene en javascript + +console.log(numbers.filter(isOdd)); // -> [1, 3, 5, 7, 9] +console.log(numbers.filter(isEven)); // -> [2, 4, 6, 8, 10] + +// return una funcion + +function calculate(operator) { + switch (operator) { + case '*': + return function (a, b) { + console.log(`${a * b}`); + }; + case '/': + return function (a, b) { + console.log(`${a / b}`); + }; + } +} + +calculate('*')(8, 4); // -> 32 +calculate('/')(8, 4); // -> 2 + +/** + * DIFICULTAD EXTRA (opcional): + * Dada una lista de estudiantes (con sus nombres, fecha de nacimiento y + * lista de calificaciones), utiliza funciones de orden superior para + * realizar las siguientes operaciones de procesamiento y análisis: + * - Promedio calificaciones: Obtiene una lista de estudiantes por nombre + * y promedio de sus calificaciones. + * - Mejores estudiantes: Obtiene una lista con el nombre de los estudiantes + * que tienen calificaciones con un 9 o más de promedio. + * - Nacimiento: Obtiene una lista de estudiantes ordenada desde el más joven. + * - Mayor calificación: Obtiene la calificación más alta de entre todas las + * de los alumnos. + * - Una calificación debe estar comprendida entre 0 y 10 (admite decimales). + */ + +const students = [ + { name: 'Christian', birthdate: '26-09-1987', grades: [7.2, 8.5, 8.8] }, + { name: 'Nai', birthdate: '21-07-1985', grades: [9, 9.8, 10] }, + { name: 'Johan', birthdate: '05-03-1986', grades: [9.2, 9.6, 10] }, + { name: 'Nicholas', birthdate: '30-08-1988', grades: [5, 6, 8] }, + { name: 'Dominique', birthdate: '12-04-1985', grades: [6.5, 7.2, 9] }, +]; + +// Promedio calificaciones +function getAverage(studentGrades) { + let sum = studentGrades.reduce( + (accumulator, currentGrade) => accumulator + currentGrade, + 0 + ); + let average = parseFloat((sum / studentGrades.length).toFixed(1)); + return average; +} + +const getStudentsAverage = students.map((student) => { + return { name: student.name, average: getAverage(student.grades) }; +}); + +// Mejores estudiantes +function isTopStudent(average) { + return average >= 9; +} + +const getTopStudents = getStudentsAverage.filter((student) => { + return isTopStudent(student.average); +}); + +// Nacimiento +function parseDate(dateString) { + const [day, month, year] = dateString.split('-'); + return new Date(year, month - 1, day); +} + +const sortedStudents = students.sort((a, b) => { + const dateA = parseDate(a.birthdate); + const dateB = parseDate(b.birthdate); + return dateB - dateA; +}); + +// Mayor calificación +const allGrades = students.flatMap((student) => student.grades); + +const highestGrade = allGrades.reduce( + (max, grade) => (grade > max ? grade : max), + -Infinity +); + +// Resultados +console.log(getStudentsAverage); // Muestra una lista con el nombre y promedio de calificaciones +console.log(getTopStudents); // Muestra los estudiantes que tuvieron una calificación de 9 o superior +console.log(sortedStudents); // Muestra la lista de estudiantes ordenados de menor a mayor edad +console.log(highestGrade); // Muestra la mayor calificación From 18cd3a3ac2e7d74949a512d7d36e7f92ce89db32 Mon Sep 17 00:00:00 2001 From: guillesese Date: Fri, 21 Jun 2024 10:37:45 +0200 Subject: [PATCH 22/43] 02 - Python --- .../python/guillesese.py | 126 ++++++++++++++++++ 1 file changed, 126 insertions(+) create mode 100644 Roadmap/02 - FUNCIONES Y ALCANCE/python/guillesese.py diff --git a/Roadmap/02 - FUNCIONES Y ALCANCE/python/guillesese.py b/Roadmap/02 - FUNCIONES Y ALCANCE/python/guillesese.py new file mode 100644 index 0000000000..05d8008678 --- /dev/null +++ b/Roadmap/02 - FUNCIONES Y ALCANCE/python/guillesese.py @@ -0,0 +1,126 @@ +#02 - FUNCIONES Y ALCANCE +#EJERCICIO: +#- Crea ejemplos de funciones basicas que representen las diferentes +# posibilidades del lenguaje: +# Sin parametros ni retorno, con uno o varios parametros, con retorno... +# - Comprueba si puedes crear funciones dentro de funciones. +# - Utiliza algun ejemplo de funciones ya creadas en el lenguaje. +# - Pon a prueba el concepto de variable LOCAL y GLOBAL. +# - Debes hacer print por consola del resultado de todos los ejemplos. +# (y tener en cuenta que cada lenguaje puede poseer mas o menos posibilidades) + +''' Definidas por el usuario''' + +#Sin retorno +def funcion(): + print("Hola") + +funcion() + +#Con retorno +def funcion_ret(): + return "Hola" + +print(funcion_ret()) + +#Con un argumento +def funcion_arg(arg1): + print(f"arg1: {arg1}") + +funcion_arg("argumento1") + +#Con varios argumentos +def funcion_arg_multiple(arg1, arg2): + print(f"arg1: {arg1} arg2: {arg2}") + +funcion_arg_multiple("argumento1",2) +funcion_arg_multiple(arg1=2, arg2="argumento2") + +#Con argumento predeterminado +def funcion_arg_default(arg1="argumento1"): + print(f"arg1: {arg1}") + +funcion_arg_default("arg1") +funcion_arg_default() + +#Con argumentos y return +def funcion_arg_return(arg1, arg2): + return f"arg1: {arg1} arg2: {arg2}" + +print(funcion_arg_return("arg1",2)) + +#Con return multiple +def funcion_mult_return(): + return "arg1",2 + +arg1, arg2 = funcion_mult_return() +print(f"arg1: {arg1}") +print(f"arg2: {arg2}") + +#Con numero variable de argumentos +def funcion_arg_variable(*args): + for arg in args: + print(f"arg: {arg}") + +funcion_arg_variable("arg1",2,"arg3",'4') + +#Con numero variable de argumentos con palabra clave +def funcion_arg_variable_key(**args): + for key,value in args.items(): + print(f"{key}, {value}") + +funcion_arg_variable_key( + arg1="argumento1", + arg2=2, + arg3='3' +) + +''' +Funciones dentro de funciones. +''' +def funcion_ext(): + def funcion_int(): + print("Funcion interna dentro de funcion externa") + funcion_int() + +funcion_ext() + +''' +Funciones del lenguaje +''' +print(len("string")) +print(type("string")) +print(type(3)) +print("string".upper()) + +''' +variables locales y globales +''' + +global_var = "Global" + +def funcion_local_global(): + local_var = "Local" + print(f"Global= {global_var} Local={local_var}") + +funcion_local_global() + +""" +Extra +""" +def funcion(parametro1, parametro2) -> int: + count = 0 + for i in range(1,101): + if i % 3 == 0 and i % 5 == 0: + print (parametro1 + parametro2) + elif i % 3 == 0: + print (parametro1) + elif i % 5 == 0: + print (parametro2) + else: + print(i) + count += 1 + + return count + +print (funcion("parametro1","parametro2")) \ No newline at end of file From 76e4bd37a1bff9c6c95dbfd0413a045d6da97d0b Mon Sep 17 00:00:00 2001 From: David Date: Fri, 21 Jun 2024 10:33:26 +0200 Subject: [PATCH 23/43] .\roadmap\00 - SINTAXIS, VARIABLES, TIPOS DE DATOS Y HOLA MUNDO\python\Nevaito.py --- .../python/nevaito.py | 121 ++++++++++++++++++ 1 file changed, 121 insertions(+) create mode 100644 Roadmap/01 - OPERADORES Y ESTRUCTURAS DE CONTROL/python/nevaito.py diff --git a/Roadmap/01 - OPERADORES Y ESTRUCTURAS DE CONTROL/python/nevaito.py b/Roadmap/01 - OPERADORES Y ESTRUCTURAS DE CONTROL/python/nevaito.py new file mode 100644 index 0000000000..f883a7f0a5 --- /dev/null +++ b/Roadmap/01 - OPERADORES Y ESTRUCTURAS DE CONTROL/python/nevaito.py @@ -0,0 +1,121 @@ +""" +/* + * EJERCICIO: + * - Crea ejemplos utilizando todos los tipos de operadores de tu lenguaje: + * Aritméticos, lógicos, de comparación, asignación, identidad, pertenencia, bits... + * (Ten en cuenta que cada lenguaje puede poseer unos diferentes) + * - Utilizando las operaciones con operadores que tú quieras, crea ejemplos + * que representen todos los tipos de estructuras de control que existan + * en tu lenguaje: + * Condicionales, iterativas, excepciones... + * - Debes hacer print por consola del resultado de todos los ejemplos. + * + * DIFICULTAD EXTRA (opcional): + * Crea un programa que imprima por consola todos los números comprendidos + * entre 10 y 55 (incluidos), pares, y que no son ni el 16 ni múltiplos de 3. + * + * Seguro que al revisar detenidamente las posibilidades has descubierto algo nuevo. + */ +""" +""" +Operadores + """ +# Operadores aritmeticos +print(f"Suma: 10 + 3 = {10 + 3}") +print(f"Resta: 10 - 3 = {10 - 3}") +print(f"Multiplicacion: 10 * 3 = {10 * 3}") +print(f"Division: 10 / 3 = {10 / 3}") +print(f"Modulo: 10 % 3 = {10 % 3}") # modulo es el resto de la division +print(f"Exponente: 10 ** 3 = {10 ** 3}") # elevar un numero +print(f"Division entera: 10 // 3 = {10 // 3}") # resultado numero entero + +# Operadores de comparacion +print(f"Igualdad: 10 == 3 es {10 == 3}") +print(f"Desigualdad: 10 != 3 es {10 != 3}") +print(f"Mayor Que: 10 > 3 es {10 > 3}") +print(f"Menor Que: 10 < 3 es {10 < 3}") +print(f"Mayor o igual que: 10 >= 3 es {10 >= 3}") +print(f"Menor o igual que: 10 <= 3 es {10 <= 3}") + +# Operadores logicos +print(f"AND &&: 10 + 3 == 13 and 5 - 1 == 4 es {10 + 3 == 13 and 5 - 1 == 4}") # se tienen q cumplir las dos condiciones para que sea true +print(f"OR ||: 10 + 3 == 14 or 5 - 1 == 4 es {10 + 3 == 14 or 5 - 1 == 4}") # se tiene que cumplir al menos una de las condiones para que sea true +print(f"NOT !: not 10 + 3 == 14 es {not 10 + 3 == 14}") + +# Operadores de asignacion +my_number = 11 #asignacion +print(my_number) +my_number += 1 #suma y asignacion +print(my_number) +my_number -= 1 #resta y asignacion +print(my_number) +my_number *= 2 #multiplicacion y asignacion +print(my_number) +my_number /= 2 #division y asignacion +print(my_number) +my_number %= 2 #modulo y asignacion +print(my_number) +my_number **= 1 #exponente y asignacion +print(my_number) +my_number //= 1 # Div entera y asignacion +print(my_number) + +# Operadores de identidad +my_new_number = my_number +print(f"my_number is my_new_number es {my_number is my_new_number}") +print(f"my_number is not my_new_number es {my_number is not my_new_number}") + +# Operadores de pertenencia +print(f"'d' in 'David' = {'d' in 'David'}") +print(f"'b' not in 'David' = {'b' not in 'David'}") + +# Operadores de bit +a = 10 # 1010 +b = 3 # 0011 +print(f"AND: 10 & 3 = {10 & 3}") # 0010 +print(f"OR: 10 | 3 = {10 | 3}") # 1011 +print(f"XOR: 10 ^ 3 = {10 ^ 3}") # 1001 +print(f"NOT: ~10 = {~10}") +print(f"Desplazamiento a la derecha: 10 >> 2 = {10 >> 2}") # 0010 +print(f"Desplazamiento a la izquierda: 10 << 2 = {10 << 2}") # 101000 + + +""" +Estructuras de control +""" +# Condicionales + +my_string = "Daviddd" + +if my_string == "David": + print("my_string es 'David'") +elif my_string == "Hoyos": + print(" my string es 'Hoyos'") +else: + print("my_string no es 'David'ni 'Hoyos'") + +# Iterativas + +for i in range(11): + print(i) + +i = 0 + +while i <= 10: + print(i) + i += 1 + +# Manejo de excepciones +try: + print(10/0) +except: + print("Se ha producido un error") +finally: + print("Ha finalizo el manejo de excepciones") + +""" +Extra +""" +for number in range(10, 56): + if number % 2 == 0 and number != 16 and number % 3 != 0: + print(number) From 1280a1d2c6deab3c6c53e20f3cac391ea4a085c6 Mon Sep 17 00:00:00 2001 From: David Date: Fri, 21 Jun 2024 10:36:20 +0200 Subject: [PATCH 24/43] .\roadmap\00 - SINTAXIS, VARIABLES, TIPOS DE DATOS Y HOLA MUNDO\python\nevaito.py --- .../python/nevaito.py | 32 +++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 Roadmap/00 - SINTAXIS, VARIABLES, TIPOS DE DATOS Y HOLA MUNDO/python/nevaito.py diff --git a/Roadmap/00 - SINTAXIS, VARIABLES, TIPOS DE DATOS Y HOLA MUNDO/python/nevaito.py b/Roadmap/00 - SINTAXIS, VARIABLES, TIPOS DE DATOS Y HOLA MUNDO/python/nevaito.py new file mode 100644 index 0000000000..33056bcef9 --- /dev/null +++ b/Roadmap/00 - SINTAXIS, VARIABLES, TIPOS DE DATOS Y HOLA MUNDO/python/nevaito.py @@ -0,0 +1,32 @@ +# https://python.org + +# esto es un comentario en una linea +""" +Esto es un comentario +en varias lineas +entre comillas dobles +""" +''' +Esto es un comentario +en varias lineas +entre comillas simples +''' + +my_variable = "Mi variable" +my_variable = "Nuevo valor de mi variable" + +MY_CONSTANT = "No es una constante pero estando en mayusculas se entiende que si" # por conveccion + +my_int:int = 1 +my_float:float = 1.5 +my_bool:bool = True +my_bool = False +my_string:str = "Mi cadena de texto" +my_other_string = 'Mi cadena de texto' + +print("¡Hola, Python!") + +print(type(my_int)) +print(type(my_bool)) +print(type(my_float)) +print(type(my_string)) From f283d58c787e981fce8b98bb556edff562e68273 Mon Sep 17 00:00:00 2001 From: Amador Quispe Date: Fri, 21 Jun 2024 06:28:41 -0500 Subject: [PATCH 25/43] #03 - GO --- .../go/AmadorQuispe.go | 178 ++++++++++++++++++ 1 file changed, 178 insertions(+) create mode 100644 Roadmap/03 - ESTRUCTURAS DE DATOS/go/AmadorQuispe.go diff --git a/Roadmap/03 - ESTRUCTURAS DE DATOS/go/AmadorQuispe.go b/Roadmap/03 - ESTRUCTURAS DE DATOS/go/AmadorQuispe.go new file mode 100644 index 0000000000..46108f1bc4 --- /dev/null +++ b/Roadmap/03 - ESTRUCTURAS DE DATOS/go/AmadorQuispe.go @@ -0,0 +1,178 @@ +package main + +import ( + "bufio" + "errors" + "fmt" + "os" + "sort" + "strconv" + "strings" +) + +func main() { + //inserción, borrado, actualización y ordenación + //==>Arrays, son estáticos y son del mismo tipo + arr := [5]int{4, 2, 1, 3} + fmt.Println("Array de tamaño 5 => ", arr) + //borrado, actualización + arr[4] = 5 + // Ordenación + sort.Ints(arr[:]) + fmt.Println("Array de tamaño 5 ordenada => ", arr) + + //==>Matrices + matrix := [2][3]int{{1, 2, 3}, {4, 5, 6}} + fmt.Println("matriz de 2 x 3 => ", matrix) + + //==>Slices, son dinámicos + slice := []int{1, 2, 3, 4, 5} + fmt.Println("Slice => ", slice) + //insertar + slice = append(slice, 6) + fmt.Println("Con agregado al final => ", slice) + //Modificación + indexToUpdate := 2 + slice[indexToUpdate] = 89 + fmt.Println("Con el indice 2 actualizado =>", slice) + //Eliminación + indexToRemove := 2 + slice = append(slice[:indexToRemove], slice[indexToRemove+1:]...) + fmt.Println("Con el indice 2 eliminado =>", slice) + + //Maps, clave : valor + weekdays := map[int]string{1: "Lunes", 2: "Martes", 3: "Miércoles", 4: "Jueves", 5: "Viernes", 6: "Sábado", 7: "Domingo"} + fmt.Println("Mapa => ", weekdays) + + //Structs, estructura de datos que nos permite agrupar datos de diferentes tipos + type person struct { + name string + age int + } + p1 := person{"Amador", 32} + fmt.Println("Struct => ", p1) + + //EXTRA + reader := bufio.NewReader(os.Stdin) + agenda := NewAgenda() + + for { + fmt.Println("==============================") + fmt.Println("Agenda de Contactos") + fmt.Println("0. Listar Contactos") + fmt.Println("1. Agregar Contacto") + fmt.Println("2. Buscar Contacto") + fmt.Println("3. Actualizar Contacto") + fmt.Println("4. Eliminar Contacto") + fmt.Println("Escribe 'exit' para salir") + fmt.Println("==============================") + fmt.Print("Ingresa una opción: ") + option, _ := reader.ReadString('\n') + option = strings.TrimSpace(option) + if option == "exit" { + break + } + switch option { + case "0": + fmt.Println("LISTA CONTACTOS :") + for key, contact := range agenda.contacts { + fmt.Println(key, "->", contact) + } + case "1": + fmt.Println("AGREGAR CONTACTO :") + var name, phone string + fmt.Print("Ingresa el nombre: ") + name, _ = reader.ReadString('\n') + name = strings.TrimSpace(name) + fmt.Print("Ingresa el # celular: ") + phone, _ = reader.ReadString('\n') + phone = strings.TrimSpace(phone) + err := agenda.addContact(name, phone) + if err != nil { + fmt.Println(err) + } else { + fmt.Println("Contacto agregado !") + } + + case "2": + fmt.Println("BUSCAR CONTACTO :") + fmt.Print("Ingresa el nombre de contacto a buscar: ") + inputSearch, _ := reader.ReadString('\n') + inputSearch = strings.TrimSpace(inputSearch) + phone, err := agenda.searchByName(inputSearch) + if err != nil { + fmt.Println("El contacto", inputSearch, "no se encuentra registrada") + } else { + fmt.Println("Contacto encontrado : Nombre =", inputSearch, " Celular =", phone) + } + case "3": + fmt.Println("ACTUALIZAR CONTACTO :") + fmt.Print("Ingresa el nombre del contacto a actualizar: ") + contactToUpdate, _ := reader.ReadString('\n') + contactToUpdate = strings.TrimSpace(contactToUpdate) + _, err := agenda.searchByName(contactToUpdate) + if err != nil { + fmt.Println("El contacto", contactToUpdate, "no se encuentra registrada") + break + } + fmt.Print("Ingresa el # celular del contacto a actualizar: ") + phoneToUpdate, _ := reader.ReadString('\n') + phoneToUpdate = strings.TrimSpace(phoneToUpdate) + err = agenda.addContact(contactToUpdate, phoneToUpdate) + if err != nil { + fmt.Println(err) + } else { + fmt.Println("Contacto agregado !") + } + case "4": + fmt.Println("ELIMINAR CONTACTO :") + fmt.Print("Ingresa el nombre del contacto a eliminar: ") + contactToDelete, _ := reader.ReadString('\n') + contactToDelete = strings.TrimSpace(contactToDelete) + _, err := agenda.searchByName(contactToDelete) + if err != nil { + fmt.Println("El contacto", contactToDelete, "no se encuentra registrada") + break + } + agenda.removeContact(contactToDelete) + fmt.Println("Contacto eliminado !") + } + } +} + +// IMPLEMENTACIÓN DE AGENDA + +type agenda struct { + contacts map[string]string +} + +func NewAgenda() *agenda { + return &agenda{ + contacts: map[string]string{}, + } +} + +func (a *agenda) addContact(name, phone string) error { + if _, err := a.searchByName(name); err == nil { + return errors.New("el contacto ya se encuentra registrada") + } + + if _, err := strconv.Atoi(phone); err != nil || len(phone) > 9 { + return errors.New("número de teléfono no válido, debe ser numérico y tener máximo 9 dígitos") + } + a.contacts[name] = phone + return nil +} + +func (a *agenda) searchByName(name string) (string, error) { + phone, ok := a.contacts[name] + if ok { + return phone, nil + } else { + return "", errors.New("contacto no encontrado") + } +} + +func (a *agenda) removeContact(name string) { + delete(a.contacts, name) +} From b7528f8f9fd522eb48e0007c7fb4351a81095e60 Mon Sep 17 00:00:00 2001 From: DjSurgeon <130383883+DjSurgeon@users.noreply.github.com> Date: Fri, 21 Jun 2024 13:46:18 +0200 Subject: [PATCH 26/43] #04 - Javascript --- .../javascript/DjSurgeon.js | 138 ++++++++++++++++++ 1 file changed, 138 insertions(+) create mode 100644 Roadmap/04 - CADENAS DE CARACTERES/javascript/DjSurgeon.js diff --git a/Roadmap/04 - CADENAS DE CARACTERES/javascript/DjSurgeon.js b/Roadmap/04 - CADENAS DE CARACTERES/javascript/DjSurgeon.js new file mode 100644 index 0000000000..dccc3fe47b --- /dev/null +++ b/Roadmap/04 - CADENAS DE CARACTERES/javascript/DjSurgeon.js @@ -0,0 +1,138 @@ +/* + * EJERCICIO: + * Muestra ejemplos de todas las operaciones que puedes realizar con cadenas de caracteres + * en tu lenguaje. Algunas de esas operaciones podrían ser (busca todas las que puedas): + * - Acceso a caracteres específicos, subcadenas, longitud, concatenación, repetición, + * recorrido, conversión a mayúsculas y minúsculas, reemplazo, división, unión, + * interpolación, verificación... + * + * DIFICULTAD EXTRA (opcional): + * Crea un programa que analice dos palabras diferentes y realice comprobaciones + * para descubrir si son: + * - Palíndromos + * - Anagramas + * - Isogramas + */ + +// Operaciones con cadenas +let string = "Hola mundo!"; + +// Encontrar la longitud de una cadena *.length + +console.log(string.length); // Devuelve 11 incluye espacios y simbolos. + +// Extraer un caracter de la cadena. Para ello utilizaremos la notación del punto *.[n] + +console.log(string[0]); // Devuelve "H" +console.log(string[string.length - 1]); // Devuelve "!" + +// Encontrar una subcadena dentro de una cadena y extraerla *.indexOf() +// Como parametro utilizaremos la cadena a buscar y el resultado sera -1 si no se encuentra la cadena, y si se encuentra el numero n a partir de donde empieza la cadena. + +console.log(string.indexOf("mundo")); // Devuelve 5 +console.log(string[5]); // Devuelve "m" +console.log(string.indexOf("world")); // Devuelve -1 + +// Si sabes donde comienza una subcadena dentro de una cadena y sabes hasta cuál caracter deseas que termina puede usarse *.slice(). +// Recibe dos parametrosel primero es la posicion en la que comienza a extraer el caracter y el segundo la posicion del caracter posterior al ultimo a ser extraido. + +console.log(string.slice(5, 10)); // Devuelve "mundo" +console.log(string.slice(8, string.length)); // Devuelve "do!" +// El segundo parametro es opcional, si no se añade el corte termina al final de la cadena original +console.log(string.slice(5)); // Devuelve "mundo!" +console.log(string.slice(2)); // Devuelve "la mundo!" + +// Cambiar todo a mayuscula o todo a minuscula *.toLowerCase() y *.toUpperCase() + +console.log(string.toLowerCase()); // Devuelve "hola mundo!" +console.log(string.toUpperCase()); // Devuelve "HOLA MUNDO!" + +// Actualizar partes de una cadena *.replace() + +console.log(string.replace("Hola", "Hello")); // Devuelve "Hello mundo!" + +// Combinar cadenas *.concat() + +console.log(string.concat(", ", "Hello")); // Devuelve "Hola mundo!, Hello" + +// Dividir cadenas *.split() +// El paremetro es el elemento separador de la cadena + +console.log(string.split(" ")); // Devuelve [ 'Hola', 'mundo!' ] +console.log(string.split("")); // Devuelve [ 'H', 'o', 'l', 'a',' ', 'm', 'u', 'n','d', 'o', '!'] +console.log(string.split("-")); // Devuelve [ 'Hola mundo!' ] + +//Buscar un valor dentro de la cadena *.includes() + +console.log(string.includes("mundo")); // Devuelve true +console.log(string.includes("world")); // Devuelve false + +// Eliminar los espacios en blanco al principio y final de una cadena + +let string2 = " Hello World! "; +console.log(string2.trim()); // Devuelve "Hello World!" + +// Extra ======= +/* Un palíndromo es un término o una expresión que puede leerse tanto de izquierda a derecha como de derecha a izquierda (es decir, expresa lo mismo al ser leído de manera tradicional o al revés). + */ + +const isPalindromo = (string) => { + let element1 = string.toLowerCase().trim().split(" ").join(""); // almacenamos en la variable la cadena en minuscula y sin huecos a los lados y eliminamos los huecos entremedia y lo volvemos a juntar + let element2 = element1.split("").slice().reverse().join(""); // Hacemos una copia de la string y le damos la vuelta + + if (element1 === element2) { + console.log(`${string} es palindromo.`); + } else { + console.log(`${string} no es palindromo.`); + } +}; + +isPalindromo("as$sa"); +isPalindromo("12jeja85"); + +/* +Un anagrama es una palabra que resulta de la transposición de todas las letras de otra palabra. Dicho de otra forma, una palabra es anagrama de otra si las dos tienen las mismas letras, con el mismo número de apariciones, pero en un orden diferente. Esto se aplica también a grupos de palabras o frases. +*/ + +const isAnagrama = (string1, string2) => { + let element1 = string1.toLowerCase().trim(); + let element2 = string2.toLowerCase().trim(); + if (element1.length === element2.length) { + element3 = element1.split("").sort().join(""); + element4 = element2.split("").sort().join(""); + if (element3 === element4) { + console.log(`${element1} y ${element2} son anagramas.`); + } else { + console.log(`${element1} y ${element2} no son anagramas.`); + } + } else { + console.log(`${element1} y ${element2} no son anagramas.`); + } +}; + +isAnagrama("Nacionalista", "Altisonancia"); +isAnagrama("Seudo", "Sesudo"); + +/* +En morfología y juego verbal , un isograma es una palabra sin letras repetidas (como ambidestro ) o, más ampliamente, una palabra en la que las letras aparecen el mismo número de veces. +*/ + +const isIsograma = (string) => { + + let element1 = string.toLowerCase().trim(); + let set1 = new Set() + + for(let letra of element1) { + if(set1.has(letra)) { + return console.log(`${string}, no es un isograma.`) + } + else { + set1.add(letra); + } + } +return console.log(`${string} es un isograma.`) + +} + +isIsograma("bilabial"); +isIsograma("ambidestro"); From 3ac99a3a3e7770bfc4a7ecd81948ae8b80fc6403 Mon Sep 17 00:00:00 2001 From: edalmava Date: Fri, 21 Jun 2024 09:18:26 -0500 Subject: [PATCH 27/43] #00 - F# --- .../f#/edalmava.fsx | 29 +++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 Roadmap/00 - SINTAXIS, VARIABLES, TIPOS DE DATOS Y HOLA MUNDO/f#/edalmava.fsx diff --git a/Roadmap/00 - SINTAXIS, VARIABLES, TIPOS DE DATOS Y HOLA MUNDO/f#/edalmava.fsx b/Roadmap/00 - SINTAXIS, VARIABLES, TIPOS DE DATOS Y HOLA MUNDO/f#/edalmava.fsx new file mode 100644 index 0000000000..89ca4d0900 --- /dev/null +++ b/Roadmap/00 - SINTAXIS, VARIABLES, TIPOS DE DATOS Y HOLA MUNDO/f#/edalmava.fsx @@ -0,0 +1,29 @@ +// Sitio oficial: https://fsharp.org/ +// F# Basics: https://dotnet.microsoft.com/es-es/languages/fsharp +// http://learn.microsoft.com/dotnet/fsharp + +// Variables en F# +// Después de asignar un valor, no se puede cambiar, es inmutable +// Para hacer que sea mutable se emplea la palabra reservada mutable +// Con inferencia de tipos +let nombre_variable = "Valor" // variable string +let entero = 5 // variable int +let float = 1.0 // variable float +let char = 'a' // variable char +let booleano = true // variable bool - true o false + +// Con tipos +let cadena : string = "Hola" +let entero2 : int = 10 +let float2 : float = 5.0e2 +let double : double = 20.0 +let char2 : char = '@' +let booleano2 : bool = false + +// variables mutables +let mutable name = "Chris" +name <- "Luis" + +let fsharp = "F#" + +printfn $"¡Hola, {fsharp}!" // Imprime la cadena en stdout y agrega un caracter de nueva línea From 58a47b380658d204c8fbcda5428f4476e42505b9 Mon Sep 17 00:00:00 2001 From: agusrosero Date: Fri, 21 Jun 2024 12:03:56 -0300 Subject: [PATCH 28/43] #19 - Javascript --- .../javascript/agusrosero.js | 111 ++++++++++++++++++ 1 file changed, 111 insertions(+) create mode 100644 Roadmap/19 - ENUMERACIONES/javascript/agusrosero.js diff --git a/Roadmap/19 - ENUMERACIONES/javascript/agusrosero.js b/Roadmap/19 - ENUMERACIONES/javascript/agusrosero.js new file mode 100644 index 0000000000..adeb5269d0 --- /dev/null +++ b/Roadmap/19 - ENUMERACIONES/javascript/agusrosero.js @@ -0,0 +1,111 @@ +/* + * EJERCICIO: + * Empleando tu lenguaje, explora la definición del tipo de dato + * que sirva para definir enumeraciones (Enum). + * Crea un Enum que represente los días de la semana del lunes + * al domingo, en ese orden. Con ese enumerado, crea una operación + * que muestre el nombre del día de la semana dependiendo del número entero + * utilizado (del 1 al 7). + */ +const diasSemana = Object.freeze({ + LUNES: "Lunes", + MARTES: "Martes", + MIERCOLES: "Miercoles", + JUEVES: "Jueves", + VIERNES: "Viernes", + SABADO: "Sabado", + DOMINGO: "Domingo", +}); +console.log(diasSemana); + +function getWeekdays(num) { + switch (num) { + case 1: + console.log(diasSemana.LUNES); + break; + case 2: + console.log(diasSemana.MARTES); + break; + case 3: + console.log(diasSemana.MIERCOLES); + break; + case 4: + console.log(diasSemana.JUEVES); + break; + case 5: + console.log(diasSemana.VIERNES); + break; + case 6: + console.log(diasSemana.SABADO); + break; + case 7: + console.log(diasSemana.DOMINGO); + break; + } +} + +getWeekdays(5); + +/** + * DIFICULTAD EXTRA (opcional): + * Crea un pequeño sistema de gestión del estado de pedidos. + * Implementa una clase que defina un pedido con las siguientes características: + * - El pedido tiene un identificador y un estado. + * - El estado es un Enum con estos valores: PENDIENTE, ENVIADO, ENTREGADO y CANCELADO. + * - Implementa las funciones que sirvan para modificar el estado: + * - Pedido enviado + * - Pedido cancelado + * - Pedido entregado + * (Establece una lógica, por ejemplo, no se puede entregar si no se ha enviado, etc...) + * - Implementa una función para mostrar un texto descriptivo según el estado actual. + * - Crea diferentes pedidos y muestra cómo se interactúa con ellos. + */ +const estados = Object.freeze({ + PENDIENTE: "Pendiente", + ENVIADO: "Enviado", + ENTREGADO: "Entregado", + CANCELADO: "Cancelado", +}); + +class GestionEstadoPedidos { + constructor(id) { + this.id = id; + this.estado = estados.PENDIENTE; + } + + pedidoEnviado() { + if (this.estado === estados.ENVIADO) { + console.log("Pedido enviado con exito"); + } else { + console.log("Error en el envio del pedido"); + } + } + + pedidoCancelado() { + if (this.estado === estados.CANCELADO) { + console.log("Pedido cancelado"); + } else { + console.log("Error al cancelar el pedido"); + } + } + + pedidoEntregado() { + if (this.estado === estados.ENTREGADO) { + console.log("Pedidos entregado correctamente"); + } else { + console.log("Error al entregar el pedido"); + } + } + + textoDescriptivo() { + console.log(`Estado del pedido: ${this.estado}`); + } +} + +const pedido1 = new GestionEstadoPedidos(); +pedido1.textoDescriptivo(); +pedido1.pedidoEnviado(); + +const pedido2 = new GestionEstadoPedidos(); +pedido2.textoDescriptivo(); +pedido2.pedidoCancelado(); From bf516829be522d6bd66d0b79bf309ba8541354fc Mon Sep 17 00:00:00 2001 From: Tashidian Date: Fri, 21 Jun 2024 11:29:35 +0200 Subject: [PATCH 29/43] #00 - Python --- .../python/Tashidian.py | 39 +++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 Roadmap/00 - SINTAXIS, VARIABLES, TIPOS DE DATOS Y HOLA MUNDO/python/Tashidian.py diff --git a/Roadmap/00 - SINTAXIS, VARIABLES, TIPOS DE DATOS Y HOLA MUNDO/python/Tashidian.py b/Roadmap/00 - SINTAXIS, VARIABLES, TIPOS DE DATOS Y HOLA MUNDO/python/Tashidian.py new file mode 100644 index 0000000000..abcb9e01e2 --- /dev/null +++ b/Roadmap/00 - SINTAXIS, VARIABLES, TIPOS DE DATOS Y HOLA MUNDO/python/Tashidian.py @@ -0,0 +1,39 @@ +# https://www.python.org/ + + +# comentario de una sola línea + + +""" +Este comentario es realidad una +un bloque de texto multilínea, +pero al no estar asignado actúa +como un comentario. +""" + +# VARIABLES + +first_var = "Mi primera variable en Python." + +CONSTANT = "Por convención, las constantes en Python se escriben en mayúsculas, sin embargo son variables normales que se pueden modificar." + +# TIPOS DE DATOS PRIMITIVOS + +# string str +my_string = "Cadena de texto." + +# Integer int +my_integer = 7 + +# Float float +my_float = 7.3 + +# Boolean bool +my_boolean = False + +# None NoneType +my_none = None + +# IMPRESIÓN POR TERMINAL +language = "Python" +print(f"¡Hola, {language}!") From 0558e11de51c7e4e01e0ad31caf466ad1ab5ef22 Mon Sep 17 00:00:00 2001 From: Teren91 Date: Sat, 15 Jun 2024 10:44:55 +0200 Subject: [PATCH 30/43] #14 - Dart --- Roadmap/14 - FECHAS/dart/teren91.dart | 47 +++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 Roadmap/14 - FECHAS/dart/teren91.dart diff --git a/Roadmap/14 - FECHAS/dart/teren91.dart b/Roadmap/14 - FECHAS/dart/teren91.dart new file mode 100644 index 0000000000..3b6b25f866 --- /dev/null +++ b/Roadmap/14 - FECHAS/dart/teren91.dart @@ -0,0 +1,47 @@ + +import 'package:intl/intl.dart'; + +/* + * EJERCICIO: + * Crea dos variables utilizando los objetos fecha (date, o semejante) de tu lenguaje: + * - Una primera que represente la fecha (día, mes, año, hora, minuto, segundo) actual. + * - Una segunda que represente tu fecha de nacimiento (te puedes inventar la hora). + * Calcula cuántos años han transcurrido entre ambas fechas. + * + * DIFICULTAD EXTRA (opcional): + * Utilizando la fecha de tu cumpleaños, formatéala y muestra su resultado de + * 10 maneras diferentes. Por ejemplo: + * - Día, mes y año. + * - Hora, minuto y segundo. + * - Día de año. + * - Día de la semana. + * - Nombre del mes. + * (lo que se te ocurra...) + */ + + +void main() +{ + DateTime date = DateTime.now(); + DateTime birthDay = DateTime(1991, 9, 14, 1, 0, 0); + DateFormat dateFormatter = DateFormat('dd/MM/yyyy hh:mm'); + Duration dateDifference = date.difference(birthDay); + + print('Fecha actual: ' + dateFormatter.format(date)); + print('Cumple : ' + dateFormatter.format(birthDay)); + print('Transcurrido: ${(dateDifference.inDays / 365).floor().toString()} años'); + + //Dificultad extra + + DateFormat dateFormatter_ddMMyyyy = DateFormat('dd/MM/yyyy'); + DateFormat dateFormatter_hhmmss = DateFormat('hh:mm:ss'); + DateFormat dateFormatter_Completa = DateFormat('EEEE, dd MMMM, yyyy'); + DateFormat dateFormatter_diaSemana = DateFormat('EEEE'); + DateFormat dateFormatter_Mes = DateFormat('MMMM'); + + print('Cumple : ' + dateFormatter_ddMMyyyy.format(birthDay)); + print('Cumple : ' + dateFormatter_hhmmss.format(birthDay)); + print('Cumple : ' + dateFormatter_Completa.format(birthDay)); + print('Cumple : ' + dateFormatter_diaSemana.format(birthDay)); + print('Cumple : ' + dateFormatter_Mes.format(birthDay)); +} \ No newline at end of file From ec10d8c762f1b9da433711d105cda24865f71ce7 Mon Sep 17 00:00:00 2001 From: Teren91 Date: Sat, 22 Jun 2024 09:49:32 +0200 Subject: [PATCH 31/43] Include dart file references to gitignore --- .gitignore | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.gitignore b/.gitignore index 3be58e2778..80716f2654 100644 --- a/.gitignore +++ b/.gitignore @@ -6,3 +6,5 @@ !stats.json .DS_Store .idea/ +pubspec.yaml +pubspec.lock \ No newline at end of file From 568f9710b5431290e395de4c341f45eb812bab30 Mon Sep 17 00:00:00 2001 From: Teren91 Date: Sat, 22 Jun 2024 10:18:11 +0200 Subject: [PATCH 32/43] #15 - Dart --- .../15 - ASINCRON\303\215A/dart/teren91.dart" | 43 +++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 "Roadmap/15 - ASINCRON\303\215A/dart/teren91.dart" diff --git "a/Roadmap/15 - ASINCRON\303\215A/dart/teren91.dart" "b/Roadmap/15 - ASINCRON\303\215A/dart/teren91.dart" new file mode 100644 index 0000000000..0f288cd1b0 --- /dev/null +++ "b/Roadmap/15 - ASINCRON\303\215A/dart/teren91.dart" @@ -0,0 +1,43 @@ +/* + * EJERCICIO: + * Utilizando tu lenguaje, crea un programa capaz de ejecutar de manera + * asíncrona una función que tardará en finalizar un número concreto de + * segundos parametrizables. También debes poder asignarle un nombre. + * La función imprime su nombre, cuándo empieza, el tiempo que durará + * su ejecución y cuando finaliza. + * + * DIFICULTAD EXTRA (opcional): + * Utilizando el concepto de asincronía y la función anterior, crea + * el siguiente programa que ejecuta en este orden: + * - Una función C que dura 3 segundos. + * - Una función B que dura 2 segundos. + * - Una función A que dura 1 segundo. + * - Una función D que dura 1 segundo. + * - Las funciones C, B y A se ejecutan en paralelo. + * - La función D comienza su ejecución cuando las 3 anteriores han + * finalizado. + */ + +import 'dart:async'; + +void main() async +{ + + //Ejecución en paralelo + List> functions = [ + + showName('Función C', 3), + showName('Función B', 2), + showName('Función A', 1) + ]; + + await Future.wait(functions); + + await showName('Función D', 1); +} + +Future showName(String name, int duration) async +{ + await Future.delayed(Duration(seconds: duration)); + print('Soy $name'); +} \ No newline at end of file From b349fe405dc19313eaf2db9bc341994afda8b3cb Mon Sep 17 00:00:00 2001 From: kenysdev Date: Sat, 22 Jun 2024 12:03:56 -0500 Subject: [PATCH 33/43] 25-vb.net-LOGS --- Roadmap/25 - LOGS/vb.net/kenysdev.vb | 98 ++++++++++++++++++++++++++++ 1 file changed, 98 insertions(+) create mode 100644 Roadmap/25 - LOGS/vb.net/kenysdev.vb diff --git a/Roadmap/25 - LOGS/vb.net/kenysdev.vb b/Roadmap/25 - LOGS/vb.net/kenysdev.vb new file mode 100644 index 0000000000..a0fb584dc3 --- /dev/null +++ b/Roadmap/25 - LOGS/vb.net/kenysdev.vb @@ -0,0 +1,98 @@ +' ╔══════════════════════════════════════╗ +' ║ Autor: Kenys Alvarado              ║ +' ║ GitHub: https://github.com/Kenysdev  ║ +' ║ 2024 - VB.NET                       ║ +' ╚══════════════════════════════════════╝ +'----------------------------------------------- +'* LOGS +'----------------------------------------------- +'Mas info: https://nlog-project.org/ + +Imports NLog +Imports NLog.Config +Imports NLog.Targets + +Module Program + + Private Logger As Logger = LogManager.GetCurrentClassLogger() + + Sub Main() + '* EJERCICIO #1: + '* Explora el concepto de "logging" en tu lenguaje. Configúralo y muestra + '* un ejemplo con cada nivel de "severidad" disponible. + + ' Configuración manual + Dim config As New LoggingConfiguration() + + ' Definir el destino del log) + Dim consoleTarget As New ConsoleTarget("console") + config.AddTarget("console", consoleTarget) + + ' Definir las reglas de log + config.AddRuleForAllLevels(consoleTarget) + + ' Aplicar la configuración + LogManager.Configuration = config + + ' Ejemplo de uso: + Logger.Trace("msg Trace") + Logger.Debug("msg Debug") + Logger.Info("msg Info") + Logger.Warn("msg Warn") + Logger.Error("msg Error") + Logger.Fatal("msg Fatal") + + '_________________________________________________ + Console.WriteLine(vbLf & "EJERCICIO #2") + Dim tasks As New ProgramTask() + + tasks.Add("a", "1") + tasks.Add("b", "2") + tasks.Add("c", "3") + + tasks.Delete("b") + tasks.ShowList() + + End Sub + + '----------------------------------------------- + '* EJERCICIO #2 + '* Crea un programa ficticio de gestión de tareas que permita añadir, eliminar + '* y listar dichas tareas. + '* - Añadir: recibe nombre y descripción. + '* - Eliminar: por nombre de la tarea. + '* Implementa diferentes mensajes de log que muestren información según la + '* tarea ejecutada (a tu elección). + '* Utiliza el log para visualizar el tiempo de ejecución de cada tarea. + + Public Class ProgramTask + Private Shared ReadOnly logger As Logger = LogManager.GetCurrentClassLogger() + Private ReadOnly tasks As Dictionary(Of String, String) + + Public Sub New() + tasks = New Dictionary(Of String, String)() + logger.Debug("Se inició instancia de la clase ProgramTask.") + End Sub + + Public Sub Add(name As String, description As String) + tasks(name) = description + logger.Info("Se agregó una tarea.") + End Sub + + Public Sub Delete(name As String) + If tasks.Remove(name) Then + logger.Info($"Tarea '{name}' eliminada.") + Else + Console.WriteLine() + logger.Warn($"No se encontró la tarea '{name}'.") + End If + End Sub + + Public Sub ShowList() + logger.Info("Lista de tareas") + For Each task In tasks + Console.WriteLine($"{task.Key} -- {task.Value}") + Next + End Sub + End Class +End Module From 8ac9e7f5607cd55ed8f9aeb41d674be5251c7990 Mon Sep 17 00:00:00 2001 From: hozlucas28 Date: Fri, 21 Jun 2024 19:35:37 -0300 Subject: [PATCH 34/43] Solution 25 - Python --- Roadmap/25 - LOGS/python/hozlucas28.py | 158 +++++++++++++++++++++++++ 1 file changed, 158 insertions(+) create mode 100644 Roadmap/25 - LOGS/python/hozlucas28.py diff --git a/Roadmap/25 - LOGS/python/hozlucas28.py b/Roadmap/25 - LOGS/python/hozlucas28.py new file mode 100644 index 0000000000..af5bcdc784 --- /dev/null +++ b/Roadmap/25 - LOGS/python/hozlucas28.py @@ -0,0 +1,158 @@ +# pylint: disable=pointless-string-statement,missing-module-docstring,missing-class-docstring,missing-function-docstring + +import logging + +from time import time +from typing import TypedDict, Self + + +""" + Logging... +""" + +print("Logging...") + +logging.basicConfig( + level=logging.DEBUG, format="%(asctime)s (%(levelname)s): %(message)s" +) + +print("\nlogging.critical(msg=)...\n") +logging.critical(msg="Critical log message!") + +print("\nlogging.debug(msg=)...\n") +logging.debug(msg="Debug log message!") + +print("\nlogging.error(msg=)...\n") +logging.error(msg="Error log message!") + +print("\nlogging.info(msg=)...\n") +logging.info(msg="Information log message!") + +print("\nlogging.warning(msg=)...\n") +logging.warning(msg="Warning log message!") + + +print( + "\n# ---------------------------------------------------------------------------------- #\n" +) + + +""" + Additional challenge... +""" + +print("Additional challenge...") + +type Description = str +type Title = str + +Task = TypedDict( + "Task", + { + "description": Description, + "title": Title, + }, +) + + +class TaskManager: + __debug: bool + __tasks: list[Task] + + def __init__( + self, *, initial_tasks: None | list[Task] = None, enableDebug=False + ) -> None: + self.__debug = enableDebug + self.__tasks = [] if initial_tasks is None else initial_tasks + + def add_task(self, *, new_task: Task) -> Self: + if self.__debug: + print() + logging.debug(msg="addTask (method) start execution...") + start_time: float = time() + + self.__tasks.append(new_task) + + if self.__debug: + logging.debug(msg="addTask (method) ends execution!") + print(f"addTask: {time()-start_time} seconds") + + return self + + def delete_task_by_title(self, *, title: Title) -> Self: + if self.__debug: + print() + start_time: float = time() + logging.debug(msg="delete_task_by_title (method) start execution...") + + sanitized_tasks: list[Task] = [] + sanitized_title: str = title.strip().upper() + + for task in self.__tasks: + if task["title"].strip().upper() != sanitized_title: + sanitized_tasks.append(task) + + self.__tasks = sanitized_tasks + + if self.__debug: + logging.debug(msg="delete_task_by_title (method) ends execution!") + print(f"delete_task_by_title: {time()-start_time} seconds") + + return self + + def print_tasks(self) -> Self: + if self.__debug: + print() + logging.debug(msg="print_tasks (method) start execution...") + start_time: float = time() + print() + + for task in self.__tasks: + print(task) + + if self.__debug: + print() + logging.debug(msg="print_tasks (method) ends execution!") + print(f"print_tasks: {time()-start_time} seconds") + + return self + + +task_manager: TaskManager = TaskManager(enableDebug=True) + +EXIT_: bool = False + +while not EXIT_: + operation: str = input( + "\nWrite an operation ('Add task', 'Delete task by title', 'Print tasks', or 'Exit'): " + ) + + sanitized_operation: str = operation.strip().upper() + + match sanitized_operation: + case "ADD TASK": + + task_title: str = input("\nTask title: ") + task_description: str = input("Task description: ") + + task_manager.add_task( + new_task={ + "title": task_title.strip(), + "description": task_description.strip(), + } + ) + + case "DELETE TASK BY TITLE": + task_title: str = input("\nTask title: ") + + task_manager.delete_task_by_title(title=task_title) + + case "PRINT TASKS": + task_manager.print_tasks() + + case "EXIT": + EXIT_ = True + print("\nApplication closed!") + + case _: + print("\nInvalid operation! Try again...") From f98cb380dc7ca4bf012f0c41ccccec43fd7e2a93 Mon Sep 17 00:00:00 2001 From: kenysdev Date: Fri, 21 Jun 2024 18:27:44 -0500 Subject: [PATCH 35/43] 25-c#-LOGS --- Roadmap/25 - LOGS/c#/kenysdev.cs | 86 ++++++++++++++++++++++++++++++++ 1 file changed, 86 insertions(+) create mode 100644 Roadmap/25 - LOGS/c#/kenysdev.cs diff --git a/Roadmap/25 - LOGS/c#/kenysdev.cs b/Roadmap/25 - LOGS/c#/kenysdev.cs new file mode 100644 index 0000000000..2950c05c33 --- /dev/null +++ b/Roadmap/25 - LOGS/c#/kenysdev.cs @@ -0,0 +1,86 @@ +#pragma warning disable CA1050 // for namespace Name +/* +╔══════════════════════════════════════╗ +║ Autor: Kenys Alvarado ║ +║ GitHub: https://github.com/Kenysdev ║ +║ 2024 - C# ║ +╚══════════════════════════════════════╝ +------------------------------------------ +* LOGS +------------------------------------------ +Mas info: https://nlog-project.org/ + +*/ +using NLog; + +// __________________________________ +class Program { + + private static readonly Logger logger = LogManager.GetCurrentClassLogger(); + static void Main() { + /* + * EJERCICIO #1: + * Explora el concepto de "logging" en tu lenguaje. Configúralo y muestra + * un ejemplo con cada nivel de "severidad" disponible. + */ + logger.Trace("Trace"); + logger.Debug("Debug"); + logger.Info("Info"); + logger.Warn("Warnin"); + logger.Error("Error"); + logger.Fatal("Fatal"); + + //__________________________________ + Console.WriteLine("\nEJERCICIO #2"); + ProgramTask tasks = new(); + + tasks.Add("a", "1"); + tasks.Add("b", "2"); + tasks.Add("c", "3"); + + tasks.Delete("b"); + tasks.ShowList(); + } +} + +/* +__________________________________ +* EJERCICIO #2: +* Crea un programa ficticio de gestión de tareas que permita añadir, eliminar +* y listar dichas tareas. +* - Añadir: recibe nombre y descripción. +* - Eliminar: por nombre de la tarea. +* Implementa diferentes mensajes de log que muestren información según la +* tarea ejecutada (a tu elección). +* Utiliza el log para visualizar el tiempo de ejecución de cada tarea. +*/ +class ProgramTask { + private static readonly Logger logger = LogManager.GetCurrentClassLogger(); + private readonly Dictionary tasks; + + public ProgramTask() { + tasks = []; + logger.Debug("Se inició instancia de la clase ProgramTask."); + } + + public void Add(string name, string description) { + tasks[name] = description; + logger.Info("Se agregó una tarea."); + } + + public void Delete(string name) { + if (tasks.Remove(name)) { + logger.Info($"Tarea '{name}' eliminada."); + } else { + Console.WriteLine(); + logger.Warn($"No se encontró la tarea '{name}'."); + } + } + + public void ShowList() { + logger.Info("Lista de tareas"); + foreach (var task in tasks) { + Console.WriteLine($"{task.Key} -- {task.Value}"); + } + } +} From 00cb6a197b8fb1f65df1a52d7ccddbf2161a0c45 Mon Sep 17 00:00:00 2001 From: hozlucas28 Date: Fri, 21 Jun 2024 16:18:52 -0300 Subject: [PATCH 36/43] Solution 25 - Go --- Roadmap/25 - LOGS/go/hozlucas28.go | 187 +++++++++++++++++++++++++++++ 1 file changed, 187 insertions(+) create mode 100644 Roadmap/25 - LOGS/go/hozlucas28.go diff --git a/Roadmap/25 - LOGS/go/hozlucas28.go b/Roadmap/25 - LOGS/go/hozlucas28.go new file mode 100644 index 0000000000..a89a65282a --- /dev/null +++ b/Roadmap/25 - LOGS/go/hozlucas28.go @@ -0,0 +1,187 @@ +package main + +import ( + "bufio" + "errors" + "fmt" + "log" + "os" + "strings" + "time" +) + +/* -------------------------------------------------------------------------- */ +/* CLASSES */ +/* -------------------------------------------------------------------------- */ + +/* ------------------------------ Task Manager ------------------------------ */ + +type Task struct { + description string + title string +} + +type TaskManager struct { + tasks []Task + shouldPrintLogs bool +} + +func (taskManager *TaskManager) addTask(newTask Task) error { + var startTime time.Time = time.Now() + + if taskManager.shouldPrintLogs { + fmt.Println() + log.Println("addTask (method) start execution...") + } + + taskManager.tasks = append(taskManager.tasks, newTask) + + if taskManager.shouldPrintLogs { + log.Println("addTask (method) ends execution!") + log.Printf("addTask: %v\n", time.Since(startTime)) + } + + return nil +} + +func (taskManager *TaskManager) deleteTaskByTitle(title string) error { + var startTime time.Time = time.Now() + + if taskManager.shouldPrintLogs { + fmt.Println() + log.Println("deleteTaskByTitle (method) start execution...") + } + + var uppercasedTitle string = strings.ToUpper(title) + + var sanitizedTasks []Task + + for _, task := range taskManager.tasks { + var uppercasedTaskTitle string = strings.ToUpper(task.title) + + if uppercasedTaskTitle != uppercasedTitle { + sanitizedTasks = append(sanitizedTasks, task) + + } + } + + if len(taskManager.tasks) == len(sanitizedTasks) { + return errors.New("The task title was not found!") + } + + taskManager.tasks = sanitizedTasks + + if taskManager.shouldPrintLogs { + log.Printf("deleteTaskByTitle (method) ends execution!\n") + log.Printf("deleteTaskByTitle: %v\n", time.Since(startTime)) + } + + return nil +} + +func (taskManager *TaskManager) printTasks() { + var startTime time.Time = time.Now() + + if taskManager.shouldPrintLogs { + log.Printf("printTasks (method) start execution...\n\n") + } + + for _, task := range taskManager.tasks { + fmt.Printf("%+v\n", task) + } + + if taskManager.shouldPrintLogs { + fmt.Println() + log.Printf("printTasks (method) ends execution!\n") + log.Printf("printTasks: %v", time.Since(startTime)) + } +} + +/* -------------------------------------------------------------------------- */ +/* MAIN */ +/* -------------------------------------------------------------------------- */ + +func main() { + /* + Logging... + */ + + fmt.Println("Logging...") + + fmt.Printf("\nlog.Print()...\n\n") + + log.Print("logger message!") + + fmt.Printf("\nlog.Printf()...\n\n") + + log.Printf("Formatted logger message!") + + fmt.Printf("\nlog.Println()...\n\n") + + log.Println("Logger message with line break at the end!") + + fmt.Println("\n# ---------------------------------------------------------------------------------- #") + + /* + Additional challenge... + */ + + fmt.Printf("\nAdditional challenge...\n") + + var taskManager TaskManager = TaskManager{shouldPrintLogs: true} + + var exit bool = false + var reader *bufio.Reader = bufio.NewReader(os.Stdin) + + for !exit { + fmt.Print("\nWrite an operation ('Add task', 'Delete task by title', 'Print tasks', or 'Exit'): ") + operation, readerErr := reader.ReadString('\n') + if readerErr != nil { + continue + } + + operation = strings.TrimSpace(operation) + operation = strings.ToUpper(operation) + + operationActions: + switch operation { + case "ADD TASK": + fmt.Print("\nTask title: ") + taskTitle, readerErr := reader.ReadString('\n') + if readerErr != nil { + break operationActions + } + + fmt.Print("Task description: ") + taskDescription, readerErr := reader.ReadString('\n') + if readerErr != nil { + break operationActions + } + + taskManager.addTask(Task{ + description: strings.TrimSpace(taskDescription), + title: strings.TrimSpace(taskTitle), + }) + + case "DELETE TASK BY TITLE": + fmt.Print("\nTask title: ") + taskTitle, readerErr := reader.ReadString('\n') + if readerErr != nil { + break operationActions + } + + taskManager.deleteTaskByTitle(taskTitle) + + case "PRINT TASKS": + fmt.Println() + taskManager.printTasks() + + case "EXIT": + exit = true + fmt.Print("\nApplication closed!") + + default: + fmt.Print("\nInvalid operation! Try again...\n") + } + } +} From 8a3f5ff0574758607147e9e7822705a5632cfe2e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Luis=20Alfonso=20Olivares=20Jim=C3=A9nez?= <41806420+LuisOlivaresJ@users.noreply.github.com> Date: Fri, 21 Jun 2024 10:02:44 -0700 Subject: [PATCH 37/43] #25-Python --- Roadmap/25 - LOGS/python/LuisOlivaresJ.py | 92 +++++++++++++++++++++++ 1 file changed, 92 insertions(+) create mode 100644 Roadmap/25 - LOGS/python/LuisOlivaresJ.py diff --git a/Roadmap/25 - LOGS/python/LuisOlivaresJ.py b/Roadmap/25 - LOGS/python/LuisOlivaresJ.py new file mode 100644 index 0000000000..5f267020be --- /dev/null +++ b/Roadmap/25 - LOGS/python/LuisOlivaresJ.py @@ -0,0 +1,92 @@ +""" + * Explora el concepto de "logging" en tu lenguaje. Configúralo y muestra + * un ejemplo con cada nivel de "severidad" disponible. +""" + +import logging + +# Logging configuration +logging.basicConfig(level=logging.DEBUG, + filename='example.log', + filemode='a', + format='%(asctime)s - %(levelname)s - %(message)s' + ) + +# Examples of each level of severity +logging.debug('This is a DEBUG message') +logging.info('This is a INFO message') +logging.warning('This is a WARNING message') +logging.error('This is a ERROR message') +logging.critical('This is a CRITICAL message') + +""" + * DIFICULTAD EXTRA (opcional): + * Crea un programa ficticio de gestión de tareas que permita añadir, eliminar + * y listar dichas tareas. + * - Añadir: recibe nombre y descripción. + * - Eliminar: por nombre de la tarea. + * Implementa diferentes mensajes de log que muestren información según la + * tarea ejecutada (a tu elección). + * Utiliza el log para visualizar el tiempo de ejecución de cada tarea. +""" + +class Task: + def __init__(self, name, description, finalized=False, final_date=None): + self.name = name + self.description = description + self.finalized = finalized + self.final_date = final_date + + +class Task_manager(): + + def __init__(self): + self.tasks = [] # List to store tasks as dictionaries + + + def add_task(self, task: Task): + self.tasks.append( + { + 'name': task.name, + 'description': task.description, + 'finalized': task.finalized, + 'final_date': task.final_date + } + ) + logging.info(f'Task added.') + + + def delete_task(self, name: str): + for task in self.tasks: + if task['name'] == name: + self.tasks.remove(task) + logging.info(f'Task deleted.') + return + logging.warning(f'Task was not fouded.') + + + def list_tasks(self): + for task in self.tasks: + print(task) + + def change_to_finalized(self, name: str): + for task in self.tasks: + if task['name'] == name: + task['finalized'] = True + logging.info(f'Task finalized.') + return + logging.warning(f'Task was not fouded.') + +task1 = Task('Task1', 'Description of task 1') +task2 = Task('Task2', 'Description of task 2', final_date='2024-06-23') + +task_manager = Task_manager() +task_manager.add_task(task1) +task_manager.add_task(task2) +task_manager.list_tasks() +task_manager.delete_task('Task1') # Task deleted +task_manager.list_tasks() +task_manager.delete_task('Task3') # Task not found +task_manager.change_to_finalized('Task2') + +task_manager.list_tasks() \ No newline at end of file From 04658772bc6e25470109b58f79876901fd2e272c Mon Sep 17 00:00:00 2001 From: mouredev Date: Sun, 23 Jun 2024 00:14:35 +0000 Subject: [PATCH 38/43] Update stats --- Roadmap/stats.json | 1360 ++++++++++++++++++++++---------------------- 1 file changed, 689 insertions(+), 671 deletions(-) diff --git a/Roadmap/stats.json b/Roadmap/stats.json index 5563b3cfa1..d39115372a 100644 --- a/Roadmap/stats.json +++ b/Roadmap/stats.json @@ -1,33 +1,33 @@ { "challenges_total": 26, - "languages_total": 43, - "files_total": 5028, - "users_total": 893, + "languages_total": 44, + "files_total": 5046, + "users_total": 895, "challenges_ranking": [ { "order": 1, "name": "00 - SINTAXIS, VARIABLES, TIPOS DE DATOS Y HOLA MUNDO", - "count": 995 + "count": 998 }, { "order": 2, "name": "01 - OPERADORES Y ESTRUCTURAS DE CONTROL", - "count": 608 + "count": 610 }, { "order": 3, "name": "02 - FUNCIONES Y ALCANCE", - "count": 469 + "count": 470 }, { "order": 4, "name": "03 - ESTRUCTURAS DE DATOS", - "count": 313 + "count": 314 }, { "order": 5, "name": "04 - CADENAS DE CARACTERES", - "count": 266 + "count": 267 }, { "order": 6, @@ -42,7 +42,7 @@ { "order": 8, "name": "07 - PILAS Y COLAS", - "count": 197 + "count": 198 }, { "order": 9, @@ -67,7 +67,7 @@ { "order": 13, "name": "14 - FECHAS", - "count": 105 + "count": 106 }, { "order": 14, @@ -87,7 +87,7 @@ { "order": 17, "name": "15 - ASINCRON\u00cdA", - "count": 97 + "count": 98 }, { "order": 18, @@ -102,7 +102,7 @@ { "order": 20, "name": "19 - ENUMERACIONES", - "count": 80 + "count": 81 }, { "order": 21, @@ -117,7 +117,7 @@ { "order": 23, "name": "22 - FUNCIONES DE ORDEN SUPERIOR", - "count": 54 + "count": 55 }, { "order": 24, @@ -132,75 +132,75 @@ { "order": 26, "name": "25 - LOGS", - "count": 17 + "count": 22 } ], "languages_ranking": [ { "order": 1, "name": "python", - "count": 2127, - "percentage": 42.3 + "count": 2135, + "percentage": 42.31 }, { "order": 2, "name": "javascript", - "count": 998, - "percentage": 19.85 + "count": 1001, + "percentage": 19.84 }, { "order": 3, "name": "java", "count": 428, - "percentage": 8.51 + "percentage": 8.48 }, { "order": 4, "name": "typescript", "count": 212, - "percentage": 4.22 + "percentage": 4.2 }, { "order": 5, "name": "c#", - "count": 203, + "count": 204, "percentage": 4.04 }, { "order": 6, "name": "kotlin", "count": 151, - "percentage": 3.0 + "percentage": 2.99 }, { "order": 7, "name": "swift", "count": 147, - "percentage": 2.92 + "percentage": 2.91 }, { "order": 8, "name": "go", - "count": 137, - "percentage": 2.72 + "count": 139, + "percentage": 2.75 }, { "order": 9, "name": "php", "count": 116, - "percentage": 2.31 + "percentage": 2.3 }, { "order": 10, "name": "rust", "count": 98, - "percentage": 1.95 + "percentage": 1.94 }, { "order": 11, "name": "c++", "count": 94, - "percentage": 1.87 + "percentage": 1.86 }, { "order": 12, @@ -211,26 +211,26 @@ { "order": 13, "name": "dart", - "count": 39, - "percentage": 0.78 + "count": 41, + "percentage": 0.81 }, { "order": 14, "name": "bash", "count": 32, - "percentage": 0.64 + "percentage": 0.63 }, { "order": 15, - "name": "ocaml", + "name": "vb.net", "count": 26, "percentage": 0.52 }, { "order": 16, - "name": "vb.net", - "count": 25, - "percentage": 0.5 + "name": "ocaml", + "count": 26, + "percentage": 0.52 }, { "order": 17, @@ -378,18 +378,24 @@ }, { "order": 41, - "name": "al", + "name": "f#", "count": 1, "percentage": 0.02 }, { "order": 42, - "name": "abap", + "name": "al", "count": 1, "percentage": 0.02 }, { "order": 43, + "name": "abap", + "count": 1, + "percentage": 0.02 + }, + { + "order": 44, "name": "raku", "count": 1, "percentage": 0.02 @@ -405,20 +411,20 @@ { "order": 2, "name": "kenysdev", - "count": 101, + "count": 103, "languages": 4 }, { "order": 3, - "name": "qwik-zgheib", - "count": 73, - "languages": 4 + "name": "hozlucas28", + "count": 75, + "languages": 3 }, { "order": 4, - "name": "hozlucas28", + "name": "qwik-zgheib", "count": 73, - "languages": 3 + "languages": 4 }, { "order": 5, @@ -465,7 +471,7 @@ { "order": 12, "name": "agusrosero", - "count": 45, + "count": 46, "languages": 4 }, { @@ -566,15 +572,15 @@ }, { "order": 29, - "name": "cesarcarmona30", - "count": 29, - "languages": 4 + "name": "amadorquispe", + "count": 30, + "languages": 2 }, { "order": 30, - "name": "amadorquispe", + "name": "cesarcarmona30", "count": 29, - "languages": 2 + "languages": 4 }, { "order": 31, @@ -680,51 +686,51 @@ }, { "order": 48, - "name": "avcenal", + "name": "christian-jfr", "count": 23, "languages": 1 }, { "order": 49, - "name": "isilanes", + "name": "avcenal", "count": 23, "languages": 1 }, { "order": 50, - "name": "ycanas", - "count": 22, - "languages": 2 + "name": "isilanes", + "count": 23, + "languages": 1 }, { "order": 51, - "name": "emedevelopa", + "name": "edalmava", "count": 22, - "languages": 1 + "languages": 10 }, { "order": 52, - "name": "parababire", + "name": "ycanas", "count": 22, - "languages": 1 + "languages": 2 }, { "order": 53, - "name": "christian-jfr", + "name": "emedevelopa", "count": 22, "languages": 1 }, { "order": 54, - "name": "ggilperez", + "name": "parababire", "count": 22, "languages": 1 }, { "order": 55, - "name": "edalmava", - "count": 21, - "languages": 9 + "name": "ggilperez", + "count": 22, + "languages": 1 }, { "order": 56, @@ -1346,145 +1352,145 @@ }, { "order": 159, - "name": "pcosin", + "name": "djsurgeon", "count": 8, "languages": 2 }, { "order": 160, - "name": "xmunder", + "name": "pcosin", "count": 8, "languages": 2 }, { "order": 161, - "name": "ansuzgs", + "name": "xmunder", "count": 8, "languages": 2 }, { "order": 162, - "name": "srvariable", + "name": "ansuzgs", "count": 8, - "languages": 1 + "languages": 2 }, { "order": 163, - "name": "westwbn", + "name": "luisolivaresj", "count": 8, - "languages": 1 + "languages": 2 }, { "order": 164, - "name": "vid92", + "name": "srvariable", "count": 8, "languages": 1 }, { "order": 165, - "name": "isj-code", + "name": "westwbn", "count": 8, "languages": 1 }, { "order": 166, - "name": "matitc", + "name": "vid92", "count": 8, "languages": 1 }, { "order": 167, - "name": "toral24", + "name": "isj-code", "count": 8, "languages": 1 }, { "order": 168, - "name": "jtrujilloalcocer", + "name": "matitc", "count": 8, "languages": 1 }, { "order": 169, - "name": "zequy40", + "name": "toral24", "count": 8, "languages": 1 }, { "order": 170, - "name": "linerlander", + "name": "jtrujilloalcocer", "count": 8, "languages": 1 }, { "order": 171, - "name": "darubiano", - "count": 7, - "languages": 7 + "name": "neosv", + "count": 8, + "languages": 1 }, { "order": 172, - "name": "nwpablodeveloper", - "count": 7, - "languages": 3 + "name": "zequy40", + "count": 8, + "languages": 1 }, { "order": 173, - "name": "djsurgeon", - "count": 7, - "languages": 2 + "name": "linerlander", + "count": 8, + "languages": 1 }, { "order": 174, - "name": "younes0-0", + "name": "darubiano", "count": 7, - "languages": 2 + "languages": 7 }, { "order": 175, - "name": "luisolivaresj", + "name": "nwpablodeveloper", "count": 7, - "languages": 2 + "languages": 3 }, { "order": 176, - "name": "ocandodev", + "name": "younes0-0", "count": 7, - "languages": 1 + "languages": 2 }, { "order": 177, - "name": "ldre3", + "name": "ocandodev", "count": 7, "languages": 1 }, { "order": 178, - "name": "mtirador", + "name": "ldre3", "count": 7, "languages": 1 }, { "order": 179, - "name": "abrahamraies", + "name": "mtirador", "count": 7, "languages": 1 }, { "order": 180, - "name": "18miguelgalarza", + "name": "abrahamraies", "count": 7, "languages": 1 }, { "order": 181, - "name": "marinaortells", + "name": "18miguelgalarza", "count": 7, "languages": 1 }, { "order": 182, - "name": "neosv", + "name": "marinaortells", "count": 7, "languages": 1 }, @@ -1502,313 +1508,313 @@ }, { "order": 185, + "name": "teren91", + "count": 7, + "languages": 1 + }, + { + "order": 186, "name": "curtobrull", "count": 6, "languages": 3 }, { - "order": 186, + "order": 187, "name": "fidelysla", "count": 6, "languages": 3 }, { - "order": 187, + "order": 188, "name": "luisk0706", "count": 6, "languages": 2 }, { - "order": 188, + "order": 189, "name": "luterfloyd", "count": 6, "languages": 2 }, { - "order": 189, + "order": 190, "name": "troleomotor10", "count": 6, "languages": 2 }, { - "order": 190, + "order": 191, "name": "danilo0203", "count": 6, "languages": 2 }, { - "order": 191, + "order": 192, "name": "isaias-alt", "count": 6, "languages": 2 }, { - "order": 192, + "order": 193, "name": "rserradev", "count": 6, "languages": 2 }, { - "order": 193, + "order": 194, "name": "roswer13", "count": 6, "languages": 2 }, { - "order": 194, + "order": 195, "name": "devknn", "count": 6, "languages": 2 }, { - "order": 195, + "order": 196, "name": "yeisonagm", "count": 6, "languages": 1 }, { - "order": 196, + "order": 197, "name": "deathwing696", "count": 6, "languages": 1 }, { - "order": 197, + "order": 198, "name": "andreavzqz", "count": 6, "languages": 1 }, { - "order": 198, + "order": 199, "name": "gliadev", "count": 6, "languages": 1 }, { - "order": 199, + "order": 200, "name": "mxtrar23", "count": 6, "languages": 1 }, { - "order": 200, + "order": 201, "name": "guillemduno", "count": 6, "languages": 1 }, { - "order": 201, + "order": 202, "name": "facundo-muoio", "count": 6, "languages": 1 }, { - "order": 202, + "order": 203, "name": "wolffcode", "count": 6, "languages": 1 }, { - "order": 203, + "order": 204, "name": "blancowilson", "count": 6, "languages": 1 }, { - "order": 204, + "order": 205, "name": "eduhumanes91", "count": 6, "languages": 1 }, { - "order": 205, + "order": 206, "name": "lazar171717ech", "count": 6, "languages": 1 }, { - "order": 206, + "order": 207, "name": "dafi02", "count": 6, "languages": 1 }, { - "order": 207, + "order": 208, "name": "alabacw74", "count": 5, "languages": 3 }, { - "order": 208, + "order": 209, "name": "bryan112094", "count": 5, "languages": 3 }, { - "order": 209, + "order": 210, "name": "alejandrodave", "count": 5, "languages": 2 }, { - "order": 210, + "order": 211, "name": "espinoleandroo", "count": 5, "languages": 2 }, { - "order": 211, + "order": 212, "name": "vmatmarco", "count": 5, "languages": 2 }, { - "order": 212, + "order": 213, "name": "jalivur", "count": 5, "languages": 2 }, { - "order": 213, + "order": 214, "name": "icedrek", "count": 5, "languages": 2 }, - { - "order": 214, - "name": "adridoce", - "count": 5, - "languages": 1 - }, { "order": 215, - "name": "karolle", + "name": "adridoce", "count": 5, "languages": 1 }, { "order": 216, - "name": "alvarofernandezavalos", + "name": "karolle", "count": 5, "languages": 1 }, { "order": 217, - "name": "vasilealexandru02", + "name": "alvarofernandezavalos", "count": 5, "languages": 1 }, { "order": 218, - "name": "lauracastrillonmp", + "name": "vasilealexandru02", "count": 5, "languages": 1 }, { "order": 219, - "name": "eloychavezdev", + "name": "lauracastrillonmp", "count": 5, "languages": 1 }, { "order": 220, - "name": "n1sek", + "name": "eloychavezdev", "count": 5, "languages": 1 }, { "order": 221, - "name": "vixito", + "name": "n1sek", "count": 5, "languages": 1 }, { "order": 222, - "name": "d4-n1", + "name": "vixito", "count": 5, "languages": 1 }, { "order": 223, - "name": "jose-luis-lanza", + "name": "d4-n1", "count": 5, "languages": 1 }, { "order": 224, - "name": "santiago434c", + "name": "jose-luis-lanza", "count": 5, "languages": 1 }, { "order": 225, - "name": "alberba", + "name": "santiago434c", "count": 5, "languages": 1 }, { "order": 226, - "name": "manjaitan", + "name": "alberba", "count": 5, "languages": 1 }, { "order": 227, - "name": "gabrielramos02", + "name": "manjaitan", "count": 5, "languages": 1 }, { "order": 228, - "name": "mirandayuber", + "name": "gabrielramos02", "count": 5, "languages": 1 }, { "order": 229, - "name": "augustdev2003", + "name": "mirandayuber", "count": 5, "languages": 1 }, { "order": 230, - "name": "thezhizn", + "name": "augustdev2003", "count": 5, "languages": 1 }, { "order": 231, - "name": "xemita007", + "name": "thezhizn", "count": 5, "languages": 1 }, { "order": 232, - "name": "yharyarias", + "name": "xemita007", "count": 5, "languages": 1 }, { "order": 233, - "name": "gmbarrios", + "name": "yharyarias", "count": 5, "languages": 1 }, { "order": 234, - "name": "mauricio-leyva", + "name": "gmbarrios", "count": 5, "languages": 1 }, { "order": 235, - "name": "boterop", + "name": "mauricio-leyva", "count": 5, "languages": 1 }, { "order": 236, - "name": "teren91", + "name": "boterop", "count": 5, "languages": 1 }, @@ -2678,3078 +2684,3090 @@ }, { "order": 381, - "name": "javierfiestasbotella", + "name": "guillesese", "count": 3, "languages": 1 }, { "order": 382, - "name": "davstudy", + "name": "javierfiestasbotella", "count": 3, "languages": 1 }, { "order": 383, - "name": "elkin-dev", + "name": "davstudy", "count": 3, "languages": 1 }, { "order": 384, - "name": "zzepu", + "name": "elkin-dev", "count": 3, "languages": 1 }, { "order": 385, - "name": "oscarhub90", + "name": "zzepu", "count": 3, "languages": 1 }, { "order": 386, - "name": "beonzj", + "name": "oscarhub90", "count": 3, "languages": 1 }, { "order": 387, - "name": "14davidnkt", + "name": "beonzj", "count": 3, "languages": 1 }, { "order": 388, - "name": "vandresca", + "name": "14davidnkt", "count": 3, "languages": 1 }, { "order": 389, - "name": "marlonleon2023", + "name": "vandresca", "count": 3, "languages": 1 }, { "order": 390, - "name": "frangarmez21", + "name": "marlonleon2023", "count": 3, "languages": 1 }, { "order": 391, - "name": "dylanb55", + "name": "frangarmez21", "count": 3, "languages": 1 }, { "order": 392, - "name": "juxxon23", + "name": "dylanb55", "count": 3, "languages": 1 }, { "order": 393, - "name": "mellamoomar", + "name": "juxxon23", "count": 3, "languages": 1 }, { "order": 394, - "name": "ikeragi05", + "name": "mellamoomar", "count": 3, "languages": 1 }, { "order": 395, - "name": "dmauricio4", + "name": "ikeragi05", "count": 3, "languages": 1 }, { "order": 396, - "name": "oscar503sv", + "name": "dmauricio4", "count": 3, "languages": 1 }, { "order": 397, - "name": "ivanpelu7", + "name": "oscar503sv", "count": 3, "languages": 1 }, { "order": 398, - "name": "bytecodesky", + "name": "ivanpelu7", "count": 3, "languages": 1 }, { "order": 399, - "name": "devvdroid01", - "count": 2, - "languages": 2 + "name": "bytecodesky", + "count": 3, + "languages": 1 }, { "order": 400, - "name": "jhonatanmustiolacas", + "name": "devvdroid01", "count": 2, "languages": 2 }, { "order": 401, - "name": "ismaelmatiz", + "name": "jhonatanmustiolacas", "count": 2, "languages": 2 }, { "order": 402, - "name": "sgb004", + "name": "ismaelmatiz", "count": 2, "languages": 2 }, { "order": 403, - "name": "tecfer", + "name": "sgb004", "count": 2, "languages": 2 }, { "order": 404, - "name": "lilberick", + "name": "tecfer", "count": 2, "languages": 2 }, { "order": 405, - "name": "camiloforero1997", + "name": "lilberick", "count": 2, "languages": 2 }, { "order": 406, - "name": "lydaf", + "name": "camiloforero1997", "count": 2, "languages": 2 }, { "order": 407, - "name": "carresoft", + "name": "lydaf", "count": 2, "languages": 2 }, { "order": 408, - "name": "chuanmi", + "name": "carresoft", "count": 2, "languages": 2 }, { "order": 409, - "name": "jmofuture", + "name": "chuanmi", "count": 2, "languages": 2 }, { "order": 410, - "name": "jlcareglio", + "name": "jmofuture", "count": 2, "languages": 2 }, { "order": 411, - "name": "jurgen-alfaro", + "name": "jlcareglio", "count": 2, "languages": 2 }, { "order": 412, - "name": "felipedev303", + "name": "jurgen-alfaro", "count": 2, "languages": 2 }, { "order": 413, - "name": "berentolkien", + "name": "felipedev303", "count": 2, "languages": 2 }, { "order": 414, - "name": "raul-progr", + "name": "berentolkien", "count": 2, "languages": 2 }, { "order": 415, - "name": "jorgesilencio", + "name": "raul-progr", "count": 2, "languages": 2 }, { "order": 416, - "name": "lemito66", + "name": "jorgesilencio", "count": 2, "languages": 2 }, { "order": 417, - "name": "fsfigueroa77", + "name": "lemito66", "count": 2, - "languages": 1 + "languages": 2 }, { "order": 418, - "name": "fefestuve", + "name": "fsfigueroa77", "count": 2, "languages": 1 }, { "order": 419, - "name": "luis-vb", + "name": "fefestuve", "count": 2, "languages": 1 }, { "order": 420, - "name": "juaruibr", + "name": "luis-vb", "count": 2, "languages": 1 }, { "order": 421, - "name": "crisdev3", + "name": "juaruibr", "count": 2, "languages": 1 }, { "order": 422, - "name": "saracorraless", + "name": "crisdev3", "count": 2, "languages": 1 }, { "order": 423, - "name": "gamitocu", + "name": "saracorraless", "count": 2, "languages": 1 }, { "order": 424, - "name": "porto1090", + "name": "gamitocu", "count": 2, "languages": 1 }, { "order": 425, - "name": "hersac", + "name": "porto1090", "count": 2, "languages": 1 }, { "order": 426, - "name": "yowcloud", + "name": "hersac", "count": 2, "languages": 1 }, { "order": 427, - "name": "joseesmil04", + "name": "yowcloud", "count": 2, "languages": 1 }, { "order": 428, - "name": "adrs1166ma", + "name": "joseesmil04", "count": 2, "languages": 1 }, { "order": 429, - "name": "isidrojng", + "name": "adrs1166ma", "count": 2, "languages": 1 }, { "order": 430, - "name": "peeanoot", + "name": "isidrojng", "count": 2, "languages": 1 }, { "order": 431, - "name": "alextc35", + "name": "peeanoot", "count": 2, "languages": 1 }, { "order": 432, - "name": "jcknot", + "name": "alextc35", "count": 2, "languages": 1 }, { "order": 433, - "name": "arhl2023", + "name": "jcknot", "count": 2, "languages": 1 }, { "order": 434, - "name": "natalinacn", + "name": "arhl2023", "count": 2, "languages": 1 }, { "order": 435, - "name": "lorenamesa", + "name": "natalinacn", "count": 2, "languages": 1 }, { "order": 436, - "name": "jago86", + "name": "lorenamesa", "count": 2, "languages": 1 }, { "order": 437, - "name": "johannhsdev", + "name": "jago86", "count": 2, "languages": 1 }, { "order": 438, - "name": "nicolastapiasanz", + "name": "johannhsdev", "count": 2, "languages": 1 }, { "order": 439, - "name": "freddyasierraj", + "name": "nicolastapiasanz", "count": 2, "languages": 1 }, { "order": 440, - "name": "gomezcamilo9701", + "name": "freddyasierraj", "count": 2, "languages": 1 }, { "order": 441, - "name": "vicgallego", + "name": "gomezcamilo9701", "count": 2, "languages": 1 }, { "order": 442, - "name": "peibolstrike", + "name": "vicgallego", "count": 2, "languages": 1 }, { "order": 443, - "name": "cristiansystem", + "name": "peibolstrike", "count": 2, "languages": 1 }, { "order": 444, - "name": "dararod", + "name": "cristiansystem", "count": 2, "languages": 1 }, { "order": 445, - "name": "waldid32", + "name": "dararod", "count": 2, "languages": 1 }, { "order": 446, - "name": "roilhi", + "name": "waldid32", "count": 2, "languages": 1 }, { "order": 447, - "name": "diegokarabin", + "name": "roilhi", "count": 2, "languages": 1 }, { "order": 448, - "name": "reanthonyh", + "name": "diegokarabin", "count": 2, "languages": 1 }, { "order": 449, - "name": "valeriatorrealba", + "name": "reanthonyh", "count": 2, "languages": 1 }, { "order": 450, - "name": "nxl22", + "name": "valeriatorrealba", "count": 2, "languages": 1 }, { "order": 451, - "name": "ovjohn", + "name": "nxl22", "count": 2, "languages": 1 }, { "order": 452, - "name": "aleoe01", + "name": "ovjohn", "count": 2, "languages": 1 }, { "order": 453, - "name": "soldochris", + "name": "aleoe01", "count": 2, "languages": 1 }, { "order": 454, - "name": "murquisdev", + "name": "soldochris", "count": 2, "languages": 1 }, { "order": 455, - "name": "wesborland-github", + "name": "murquisdev", "count": 2, "languages": 1 }, { "order": 456, - "name": "farthaz", + "name": "wesborland-github", "count": 2, "languages": 1 }, { "order": 457, - "name": "tomasmarquez81", + "name": "farthaz", "count": 2, "languages": 1 }, { "order": 458, - "name": "cesarocbu", + "name": "tomasmarquez81", "count": 2, "languages": 1 }, { "order": 459, - "name": "glaboryp", + "name": "cesarocbu", "count": 2, "languages": 1 }, { "order": 460, - "name": "doblea74", + "name": "glaboryp", "count": 2, "languages": 1 }, { "order": 461, - "name": "misterdan100", + "name": "doblea74", "count": 2, "languages": 1 }, { "order": 462, - "name": "rikar2o", + "name": "misterdan100", "count": 2, "languages": 1 }, { "order": 463, - "name": "angelvelasco1", + "name": "rikar2o", "count": 2, "languages": 1 }, { "order": 464, - "name": "jhonf1992", + "name": "angelvelasco1", "count": 2, "languages": 1 }, { "order": 465, - "name": "jaimemunozdev", + "name": "jhonf1992", "count": 2, "languages": 1 }, { "order": 466, - "name": "jeisonredondo", + "name": "jaimemunozdev", "count": 2, "languages": 1 }, { "order": 467, - "name": "leonardo291024", + "name": "jeisonredondo", "count": 2, "languages": 1 }, { "order": 468, - "name": "arliumdev", + "name": "leonardo291024", "count": 2, "languages": 1 }, { "order": 469, - "name": "matiasfarfan89", + "name": "arliumdev", "count": 2, "languages": 1 }, { "order": 470, - "name": "haryblanco20", + "name": "matiasfarfan89", "count": 2, "languages": 1 }, { "order": 471, - "name": "memogv", + "name": "haryblanco20", "count": 2, "languages": 1 }, { "order": 472, - "name": "akzorla", + "name": "memogv", "count": 2, "languages": 1 }, { "order": 473, - "name": "cpcarlosprieto", + "name": "akzorla", "count": 2, "languages": 1 }, { "order": 474, - "name": "rolo27s", + "name": "cpcarlosprieto", "count": 2, "languages": 1 }, { "order": 475, - "name": "lmedina96", + "name": "rolo27s", "count": 2, "languages": 1 }, { "order": 476, - "name": "carlosmarte23", + "name": "lmedina96", "count": 2, "languages": 1 }, { "order": 477, - "name": "santiagodc8", + "name": "carlosmarte23", "count": 2, "languages": 1 }, { "order": 478, - "name": "adogdev", + "name": "santiagodc8", "count": 2, "languages": 1 }, { "order": 479, - "name": "gmigues", + "name": "adogdev", "count": 2, "languages": 1 }, { "order": 480, - "name": "alejandro-mantilla", + "name": "gmigues", "count": 2, "languages": 1 }, { "order": 481, - "name": "dans182", + "name": "alejandro-mantilla", "count": 2, "languages": 1 }, { "order": 482, - "name": "aegpgrafologo", + "name": "pedrojog", "count": 2, "languages": 1 }, { "order": 483, - "name": "kcx46", + "name": "dans182", "count": 2, "languages": 1 }, { "order": 484, - "name": "ziellucio01", + "name": "aegpgrafologo", "count": 2, "languages": 1 }, { "order": 485, - "name": "e-techgod", + "name": "kcx46", "count": 2, "languages": 1 }, { "order": 486, - "name": "alejandrovelasquezr", + "name": "ziellucio01", "count": 2, "languages": 1 }, { "order": 487, - "name": "eriickm", + "name": "e-techgod", "count": 2, "languages": 1 }, { "order": 488, - "name": "s384", + "name": "alejandrovelasquezr", "count": 2, "languages": 1 }, { "order": 489, - "name": "jsacristanbeltri", + "name": "eriickm", "count": 2, "languages": 1 }, { "order": 490, - "name": "vesubius", + "name": "s384", "count": 2, "languages": 1 }, { "order": 491, - "name": "gregfc95", + "name": "jsacristanbeltri", "count": 2, "languages": 1 }, { "order": 492, - "name": "cipollalucas", + "name": "vesubius", "count": 2, "languages": 1 }, { "order": 493, - "name": "franz-arzapalo", + "name": "gregfc95", "count": 2, "languages": 1 }, { "order": 494, - "name": "baauus", + "name": "cipollalucas", "count": 2, "languages": 1 }, { "order": 495, - "name": "dariangl", + "name": "franz-arzapalo", "count": 2, "languages": 1 }, { "order": 496, - "name": "anblackter", + "name": "baauus", "count": 2, "languages": 1 }, { "order": 497, - "name": "julind0", + "name": "dariangl", "count": 2, "languages": 1 }, { "order": 498, - "name": "christiancoc", + "name": "anblackter", "count": 2, "languages": 1 }, { "order": 499, - "name": "tic4", + "name": "julind0", "count": 2, "languages": 1 }, { "order": 500, - "name": "victore16", + "name": "christiancoc", "count": 2, "languages": 1 }, { "order": 501, - "name": "inf015", + "name": "tic4", "count": 2, "languages": 1 }, { "order": 502, - "name": "guillesese", + "name": "victore16", "count": 2, "languages": 1 }, { "order": 503, - "name": "csaraugusto2", + "name": "inf015", "count": 2, "languages": 1 }, { "order": 504, - "name": "pakomor", + "name": "nevaito", "count": 2, "languages": 1 }, { "order": 505, - "name": "aboredllama", + "name": "csaraugusto2", "count": 2, "languages": 1 }, { "order": 506, - "name": "freyfonseca", + "name": "pakomor", "count": 2, "languages": 1 }, { "order": 507, - "name": "dokeys28", + "name": "aboredllama", "count": 2, "languages": 1 }, { "order": 508, - "name": "soydaviddev", + "name": "freyfonseca", "count": 2, "languages": 1 }, { "order": 509, - "name": "lauradiazm29", + "name": "dokeys28", "count": 2, "languages": 1 }, { "order": 510, - "name": "fernandoatello", + "name": "soydaviddev", "count": 2, "languages": 1 }, { "order": 511, - "name": "miguelberrio0810", + "name": "lauradiazm29", "count": 2, "languages": 1 }, { "order": 512, - "name": "dota43ver", + "name": "fernandoatello", "count": 2, "languages": 1 }, { "order": 513, - "name": "zalazarmartin", + "name": "miguelberrio0810", "count": 2, "languages": 1 }, { "order": 514, - "name": "nandaalf", + "name": "dota43ver", "count": 2, "languages": 1 }, { "order": 515, - "name": "lordzzz777", + "name": "zalazarmartin", "count": 2, "languages": 1 }, { "order": 516, - "name": "rrcoder", + "name": "nandaalf", "count": 2, "languages": 1 }, { "order": 517, - "name": "cyberdidac", + "name": "lordzzz777", "count": 2, "languages": 1 }, { "order": 518, - "name": "vecinacoo", + "name": "rrcoder", "count": 2, "languages": 1 }, { "order": 519, - "name": "ssanjua", + "name": "cyberdidac", "count": 2, "languages": 1 }, { "order": 520, - "name": "zonnen69", + "name": "vecinacoo", "count": 2, "languages": 1 }, { "order": 521, - "name": "sdm29gh", + "name": "ssanjua", "count": 2, "languages": 1 }, { "order": 522, - "name": "hawkbott", + "name": "zonnen69", "count": 2, "languages": 1 }, { "order": 523, - "name": "tiaguiito3", + "name": "sdm29gh", "count": 2, "languages": 1 }, { "order": 524, - "name": "elmarqueli", + "name": "hawkbott", "count": 2, "languages": 1 }, { "order": 525, - "name": "poetry0354", + "name": "tiaguiito3", "count": 2, "languages": 1 }, { "order": 526, - "name": "reaien", + "name": "elmarqueli", "count": 2, "languages": 1 }, { "order": 527, - "name": "rikar20", + "name": "poetry0354", "count": 2, "languages": 1 }, { "order": 528, - "name": "alejomazov", + "name": "reaien", "count": 2, "languages": 1 }, { "order": 529, - "name": "raulallue", + "name": "rikar20", "count": 2, "languages": 1 }, { "order": 530, - "name": "aserranot", + "name": "alejomazov", "count": 2, "languages": 1 }, { "order": 531, - "name": "luciarf", + "name": "raulallue", "count": 2, "languages": 1 }, { "order": 532, - "name": "frannmv", + "name": "aserranot", "count": 2, "languages": 1 }, { "order": 533, - "name": "jmichael39", + "name": "luciarf", "count": 2, "languages": 1 }, { "order": 534, - "name": "orzefox", - "count": 1, + "name": "frannmv", + "count": 2, "languages": 1 }, { "order": 535, - "name": "acirdeveloper", - "count": 1, + "name": "jmichael39", + "count": 2, "languages": 1 }, { "order": 536, - "name": "albertovf", + "name": "orzefox", "count": 1, "languages": 1 }, { "order": 537, - "name": "sergiopq", + "name": "acirdeveloper", "count": 1, "languages": 1 }, { "order": 538, - "name": "nicoloboo02", + "name": "albertovf", "count": 1, "languages": 1 }, { "order": 539, - "name": "angeloro", + "name": "sergiopq", "count": 1, "languages": 1 }, { "order": 540, - "name": "jony-english22", + "name": "nicoloboo02", "count": 1, "languages": 1 }, { "order": 541, - "name": "righelch", + "name": "angeloro", "count": 1, "languages": 1 }, { "order": 542, - "name": "deathbat00", + "name": "jony-english22", "count": 1, "languages": 1 }, { "order": 543, - "name": "sve-nnn", + "name": "righelch", "count": 1, "languages": 1 }, { "order": 544, - "name": "edgarmedranoa", + "name": "deathbat00", "count": 1, "languages": 1 }, { "order": 545, - "name": "emiliordev", + "name": "sve-nnn", "count": 1, "languages": 1 }, { "order": 546, - "name": "wijimenezz", + "name": "edgarmedranoa", "count": 1, "languages": 1 }, { "order": 547, - "name": "vickalc", + "name": "emiliordev", "count": 1, "languages": 1 }, { "order": 548, - "name": "rusian69", + "name": "wijimenezz", "count": 1, "languages": 1 }, { "order": 549, - "name": "rafapg93", + "name": "vickalc", "count": 1, "languages": 1 }, { "order": 550, - "name": "juanchernandezdev", + "name": "rusian69", "count": 1, "languages": 1 }, { "order": 551, - "name": "riukac", + "name": "rafapg93", "count": 1, "languages": 1 }, { "order": 552, - "name": "ouendinga", + "name": "juanchernandezdev", "count": 1, "languages": 1 }, { "order": 553, - "name": "franespina", + "name": "riukac", "count": 1, "languages": 1 }, { "order": 554, - "name": "davidbastosg", + "name": "ouendinga", "count": 1, "languages": 1 }, { "order": 555, - "name": "torvicv", + "name": "franespina", "count": 1, "languages": 1 }, { "order": 556, - "name": "dgquintero", + "name": "davidbastosg", "count": 1, "languages": 1 }, { "order": 557, - "name": "juampaweb", + "name": "torvicv", "count": 1, "languages": 1 }, { "order": 558, - "name": "girngoma", + "name": "dgquintero", "count": 1, "languages": 1 }, { "order": 559, - "name": "javosss", + "name": "juampaweb", "count": 1, "languages": 1 }, { "order": 560, - "name": "derobpe", + "name": "girngoma", "count": 1, "languages": 1 }, { "order": 561, - "name": "alinares94", + "name": "javosss", "count": 1, "languages": 1 }, { "order": 562, - "name": "jferchotorres", + "name": "derobpe", "count": 1, "languages": 1 }, { "order": 563, - "name": "lordzzz", + "name": "alinares94", "count": 1, "languages": 1 }, { "order": 564, - "name": "713avo", + "name": "jferchotorres", "count": 1, "languages": 1 }, { "order": 565, - "name": "micendev", + "name": "lordzzz", "count": 1, "languages": 1 }, { "order": 566, - "name": "cuervo23alpha", + "name": "713avo", "count": 1, "languages": 1 }, { "order": 567, - "name": "h4cker54n", + "name": "micendev", "count": 1, "languages": 1 }, { "order": 568, - "name": "ingjavierpinilla", + "name": "cuervo23alpha", "count": 1, "languages": 1 }, { "order": 569, - "name": "angel-agis", + "name": "h4cker54n", "count": 1, "languages": 1 }, { "order": 570, - "name": "joancharles07", + "name": "ingjavierpinilla", "count": 1, "languages": 1 }, { "order": 571, - "name": "batmarc91", + "name": "angel-agis", "count": 1, "languages": 1 }, { "order": 572, - "name": "mauricioobgo", + "name": "joancharles07", "count": 1, "languages": 1 }, { "order": 573, - "name": "emersonxinay", + "name": "batmarc91", "count": 1, "languages": 1 }, { "order": 574, - "name": "carlosmares", + "name": "mauricioobgo", "count": 1, "languages": 1 }, { "order": 575, - "name": "cub-tor", + "name": "emersonxinay", "count": 1, "languages": 1 }, { "order": 576, - "name": "nightmare79", + "name": "carlosmares", "count": 1, "languages": 1 }, { "order": 577, - "name": "vikernes27666", + "name": "cub-tor", "count": 1, "languages": 1 }, { "order": 578, - "name": "josephinoo", + "name": "nightmare79", "count": 1, "languages": 1 }, { "order": 579, - "name": "anitandil", + "name": "vikernes27666", "count": 1, "languages": 1 }, { "order": 580, - "name": "francomyburg", + "name": "josephinoo", "count": 1, "languages": 1 }, { "order": 581, - "name": "evilpodato04", + "name": "anitandil", "count": 1, "languages": 1 }, { "order": 582, - "name": "miguel2rar", + "name": "francomyburg", "count": 1, "languages": 1 }, { "order": 583, - "name": "agustinfccll", + "name": "evilpodato04", "count": 1, "languages": 1 }, { "order": 584, - "name": "neicervb", + "name": "miguel2rar", "count": 1, "languages": 1 }, { "order": 585, - "name": "gabriel-dangelo", + "name": "agustinfccll", "count": 1, "languages": 1 }, { "order": 586, - "name": "miquelrr", + "name": "neicervb", "count": 1, "languages": 1 }, { "order": 587, - "name": "juancamilofvx", + "name": "gabriel-dangelo", "count": 1, "languages": 1 }, { "order": 588, - "name": "c-blskv", + "name": "miquelrr", "count": 1, "languages": 1 }, { "order": 589, - "name": "emaerniquez", + "name": "juancamilofvx", "count": 1, "languages": 1 }, { "order": 590, - "name": "leonardo-henao", + "name": "c-blskv", "count": 1, "languages": 1 }, { "order": 591, - "name": "bryanalzate007", + "name": "emaerniquez", "count": 1, "languages": 1 }, { "order": 592, - "name": "willypaz243", + "name": "leonardo-henao", "count": 1, "languages": 1 }, { "order": 593, - "name": "luism95", + "name": "bryanalzate007", "count": 1, "languages": 1 }, { "order": 594, - "name": "santyjl44", + "name": "willypaz243", "count": 1, "languages": 1 }, { "order": 595, - "name": "qwik-zghieb", + "name": "luism95", "count": 1, "languages": 1 }, { "order": 596, - "name": "gonzalinuz18", + "name": "santyjl44", "count": 1, "languages": 1 }, { "order": 597, - "name": "omarroman29", + "name": "qwik-zghieb", "count": 1, "languages": 1 }, { "order": 598, - "name": "theposi", + "name": "gonzalinuz18", "count": 1, "languages": 1 }, { "order": 599, - "name": "vinyoles", + "name": "omarroman29", "count": 1, "languages": 1 }, { "order": 600, - "name": "sergio-strazzacappa", + "name": "theposi", "count": 1, "languages": 1 }, { "order": 601, - "name": "arathhh8", + "name": "vinyoles", "count": 1, "languages": 1 }, { "order": 602, - "name": "paluzz", + "name": "sergio-strazzacappa", "count": 1, "languages": 1 }, { "order": 603, - "name": "daniel-cas", + "name": "arathhh8", "count": 1, "languages": 1 }, { "order": 604, - "name": "luisalberto22", + "name": "paluzz", "count": 1, "languages": 1 }, { "order": 605, - "name": "mbmaeso", + "name": "daniel-cas", "count": 1, "languages": 1 }, { "order": 606, - "name": "deiiviitdev", + "name": "luisalberto22", "count": 1, "languages": 1 }, { "order": 607, - "name": "borjadelgadodev", + "name": "mbmaeso", "count": 1, "languages": 1 }, { "order": 608, - "name": "jaennova", + "name": "deiiviitdev", "count": 1, "languages": 1 }, { "order": 609, - "name": "francisleble", + "name": "borjadelgadodev", "count": 1, "languages": 1 }, { "order": 610, - "name": "jhordanluyo", + "name": "jaennova", "count": 1, "languages": 1 }, { "order": 611, - "name": "acirdevelper", + "name": "francisleble", "count": 1, "languages": 1 }, { "order": 612, - "name": "davidcv-dev", + "name": "jhordanluyo", "count": 1, "languages": 1 }, { "order": 613, - "name": "alvarominarro", + "name": "acirdevelper", "count": 1, "languages": 1 }, { "order": 614, - "name": "frealexandro", + "name": "davidcv-dev", "count": 1, "languages": 1 }, { "order": 615, - "name": "braiso-22", + "name": "alvarominarro", "count": 1, "languages": 1 }, { "order": 616, - "name": "armm77", + "name": "frealexandro", "count": 1, "languages": 1 }, { "order": 617, - "name": "kevin05m", + "name": "braiso-22", "count": 1, "languages": 1 }, { "order": 618, - "name": "fede6299", + "name": "armm77", "count": 1, "languages": 1 }, { "order": 619, - "name": "pablo-lnx", + "name": "kevin05m", "count": 1, "languages": 1 }, { "order": 620, - "name": "darkohokage", + "name": "fede6299", "count": 1, "languages": 1 }, { "order": 621, - "name": "diegomm27", + "name": "pablo-lnx", "count": 1, "languages": 1 }, { "order": 622, - "name": "cristian-encalada", + "name": "darkohokage", "count": 1, "languages": 1 }, { "order": 623, - "name": "alefine", + "name": "diegomm27", "count": 1, "languages": 1 }, { "order": 624, - "name": "zyn7e", + "name": "cristian-encalada", "count": 1, "languages": 1 }, { "order": 625, - "name": "antoniojzp86", + "name": "alefine", "count": 1, "languages": 1 }, { "order": 626, - "name": "dovinhoyos", + "name": "zyn7e", "count": 1, "languages": 1 }, { "order": 627, - "name": "rumacar05", + "name": "antoniojzp86", "count": 1, "languages": 1 }, { "order": 628, - "name": "gianellannie", + "name": "dovinhoyos", "count": 1, "languages": 1 }, { "order": 629, - "name": "deathbato", + "name": "rumacar05", "count": 1, "languages": 1 }, { "order": 630, - "name": "cristobalbelcor", + "name": "gianellannie", "count": 1, "languages": 1 }, { "order": 631, - "name": "kgrc05", + "name": "deathbato", "count": 1, "languages": 1 }, { "order": 632, - "name": "cristianmr87", + "name": "cristobalbelcor", "count": 1, "languages": 1 }, { "order": 633, - "name": "lizandev", + "name": "kgrc05", "count": 1, "languages": 1 }, { "order": 634, - "name": "det3992", + "name": "cristianmr87", "count": 1, "languages": 1 }, { "order": 635, - "name": "lewisoneil", + "name": "lizandev", "count": 1, "languages": 1 }, { "order": 636, - "name": "santiagopereiraviroga", + "name": "det3992", "count": 1, "languages": 1 }, { "order": 637, - "name": "v1k770r", + "name": "lewisoneil", "count": 1, "languages": 1 }, { "order": 638, - "name": "durwian", + "name": "santiagopereiraviroga", "count": 1, "languages": 1 }, { "order": 639, - "name": "adriangonzalezroble", + "name": "v1k770r", "count": 1, "languages": 1 }, { "order": 640, - "name": "mathiur", + "name": "durwian", "count": 1, "languages": 1 }, { "order": 641, - "name": "bycris13", + "name": "adriangonzalezroble", "count": 1, "languages": 1 }, { "order": 642, - "name": "algeloro", + "name": "mathiur", "count": 1, "languages": 1 }, { "order": 643, - "name": "chalaito88", + "name": "bycris13", "count": 1, "languages": 1 }, { "order": 644, - "name": "javiir", + "name": "algeloro", "count": 1, "languages": 1 }, { "order": 645, - "name": "chrystiancalderon", + "name": "chalaito88", "count": 1, "languages": 1 }, { "order": 646, - "name": "pguillo", + "name": "javiir", "count": 1, "languages": 1 }, { "order": 647, - "name": "serg_pq", + "name": "chrystiancalderon", "count": 1, "languages": 1 }, { "order": 648, - "name": "diegopardomontero", + "name": "pguillo", "count": 1, "languages": 1 }, { "order": 649, - "name": "ivanserran", + "name": "serg_pq", "count": 1, "languages": 1 }, { "order": 650, - "name": "fredylopez01", + "name": "diegopardomontero", "count": 1, "languages": 1 }, { "order": 651, - "name": "angeldevsarrollo", + "name": "ivanserran", "count": 1, "languages": 1 }, { "order": 652, - "name": "sanuka78", + "name": "fredylopez01", "count": 1, "languages": 1 }, { "order": 653, - "name": "adriansaint07", + "name": "angeldevsarrollo", "count": 1, "languages": 1 }, { "order": 654, - "name": "jony_english22", + "name": "sanuka78", "count": 1, "languages": 1 }, { "order": 655, - "name": "alvaropg15", + "name": "adriansaint07", "count": 1, "languages": 1 }, { "order": 656, - "name": "frankmon03", + "name": "jony_english22", "count": 1, "languages": 1 }, { "order": 657, - "name": "xhaloidx", + "name": "alvaropg15", "count": 1, "languages": 1 }, { "order": 658, - "name": "reneguzman7", + "name": "frankmon03", "count": 1, "languages": 1 }, { "order": 659, - "name": "jaquelinetorres", + "name": "xhaloidx", "count": 1, "languages": 1 }, { "order": 660, - "name": "alexeigio", + "name": "reneguzman7", "count": 1, "languages": 1 }, { "order": 661, - "name": "albert-29", + "name": "jaquelinetorres", "count": 1, "languages": 1 }, { "order": 662, - "name": "iguerrerov", + "name": "alexeigio", "count": 1, "languages": 1 }, { "order": 663, - "name": "pvigo10", + "name": "albert-29", "count": 1, "languages": 1 }, { "order": 664, - "name": "jrgim", + "name": "iguerrerov", "count": 1, "languages": 1 }, { "order": 665, - "name": "marcosjarrin", + "name": "pvigo10", "count": 1, "languages": 1 }, { "order": 666, - "name": "jhonnfl", + "name": "jrgim", "count": 1, "languages": 1 }, { "order": 667, - "name": "trollface77", + "name": "marcosjarrin", "count": 1, "languages": 1 }, { "order": 668, - "name": "brunom-93", + "name": "jhonnfl", "count": 1, "languages": 1 }, { "order": 669, - "name": "alejandroruiz23", + "name": "trollface77", "count": 1, "languages": 1 }, { "order": 670, - "name": "jaimesoftdev", + "name": "brunom-93", "count": 1, "languages": 1 }, { "order": 671, - "name": "edm1ya", + "name": "alejandroruiz23", "count": 1, "languages": 1 }, { "order": 672, - "name": "jarzatedev", + "name": "jaimesoftdev", "count": 1, "languages": 1 }, { "order": 673, - "name": "sandrarg85", + "name": "edm1ya", "count": 1, "languages": 1 }, { "order": 674, - "name": "rootqui", + "name": "jarzatedev", "count": 1, "languages": 1 }, { "order": 675, - "name": "astriebeck", + "name": "sandrarg85", "count": 1, "languages": 1 }, { "order": 676, - "name": "marqitos", + "name": "rootqui", "count": 1, "languages": 1 }, { "order": 677, - "name": "lobogeekmx", + "name": "astriebeck", "count": 1, "languages": 1 }, { "order": 678, - "name": "marvinagui", + "name": "marqitos", "count": 1, "languages": 1 }, { "order": 679, - "name": "jatomas", + "name": "lobogeekmx", "count": 1, "languages": 1 }, { "order": 680, - "name": "nunezlagos", + "name": "marvinagui", "count": 1, "languages": 1 }, { "order": 681, - "name": "ledyam", + "name": "jatomas", "count": 1, "languages": 1 }, { "order": 682, - "name": "miguelgargallo", + "name": "nunezlagos", "count": 1, "languages": 1 }, { "order": 683, - "name": "ishimaku", + "name": "ledyam", "count": 1, "languages": 1 }, { "order": 684, - "name": "afacorroloscos", + "name": "miguelgargallo", "count": 1, "languages": 1 }, { "order": 685, - "name": "chrisfelixgil", + "name": "ishimaku", "count": 1, "languages": 1 }, { "order": 686, - "name": "franpua", + "name": "afacorroloscos", "count": 1, "languages": 1 }, { "order": 687, - "name": "sirvega83", + "name": "chrisfelixgil", "count": 1, "languages": 1 }, { "order": 688, - "name": "corvo-99", + "name": "franpua", "count": 1, "languages": 1 }, { "order": 689, - "name": "franciscokarriere", + "name": "sirvega83", "count": 1, "languages": 1 }, { "order": 690, - "name": "pipeyz21", + "name": "corvo-99", "count": 1, "languages": 1 }, { "order": 691, - "name": "luisgarm", + "name": "franciscokarriere", "count": 1, "languages": 1 }, { "order": 692, - "name": "vorosdev", + "name": "pipeyz21", "count": 1, "languages": 1 }, { "order": 693, - "name": "santiagomac", + "name": "luisgarm", "count": 1, "languages": 1 }, { "order": 694, - "name": "ca2puntosv", + "name": "vorosdev", "count": 1, "languages": 1 }, { "order": 695, - "name": "cibacoa", + "name": "santiagomac", "count": 1, "languages": 1 }, { "order": 696, - "name": "gizelads", + "name": "ca2puntosv", "count": 1, "languages": 1 }, { "order": 697, - "name": "axelwestman", + "name": "cibacoa", "count": 1, "languages": 1 }, { "order": 698, - "name": "coletonosh", + "name": "gizelads", "count": 1, "languages": 1 }, { "order": 699, - "name": "manuhssj", + "name": "axelwestman", "count": 1, "languages": 1 }, { "order": 700, - "name": "manugonzalito", + "name": "coletonosh", "count": 1, "languages": 1 }, { "order": 701, - "name": "seigigim", + "name": "manuhssj", "count": 1, "languages": 1 }, { "order": 702, - "name": "marcosapodaca", + "name": "manugonzalito", "count": 1, "languages": 1 }, { "order": 703, - "name": "serg032", + "name": "seigigim", "count": 1, "languages": 1 }, { "order": 704, - "name": "is2095", + "name": "marcosapodaca", "count": 1, "languages": 1 }, { "order": 705, - "name": "lucc4sz", + "name": "serg032", "count": 1, "languages": 1 }, { "order": 706, - "name": "mauricioyair", + "name": "is2095", "count": 1, "languages": 1 }, { "order": 707, - "name": "jancalos", + "name": "lucc4sz", "count": 1, "languages": 1 }, { "order": 708, - "name": "palons29", + "name": "mauricioyair", "count": 1, "languages": 1 }, { "order": 709, - "name": "deimoshall", + "name": "jancalos", "count": 1, "languages": 1 }, { "order": 710, - "name": "mickysoft", + "name": "palons29", "count": 1, "languages": 1 }, { "order": 711, - "name": "serg-pq", + "name": "deimoshall", "count": 1, "languages": 1 }, { "order": 712, - "name": "lara-vel-dev", + "name": "mickysoft", "count": 1, "languages": 1 }, { "order": 713, - "name": "alexisbarradev", + "name": "serg-pq", "count": 1, "languages": 1 }, { "order": 714, - "name": "tartabullroberto", + "name": "lara-vel-dev", "count": 1, "languages": 1 }, { "order": 715, - "name": "kelvincb", + "name": "alexisbarradev", "count": 1, "languages": 1 }, { "order": 716, - "name": "augustosdev", + "name": "tartabullroberto", "count": 1, "languages": 1 }, { "order": 717, - "name": "van-02", + "name": "kelvincb", "count": 1, "languages": 1 }, { "order": 718, - "name": "x3mboy", + "name": "augustosdev", "count": 1, "languages": 1 }, { "order": 719, - "name": "jandresalvar", + "name": "van-02", "count": 1, "languages": 1 }, { "order": 720, - "name": "angelcruzg23", + "name": "x3mboy", "count": 1, "languages": 1 }, { "order": 721, - "name": "kevinramirez28", + "name": "jandresalvar", "count": 1, "languages": 1 }, { "order": 722, - "name": "alemar16", + "name": "angelcruzg23", "count": 1, "languages": 1 }, { "order": 723, - "name": "joseperesini", + "name": "kevinramirez28", "count": 1, "languages": 1 }, { "order": 724, - "name": "denisortega", + "name": "alemar16", "count": 1, "languages": 1 }, { "order": 725, - "name": "flarien", + "name": "joseperesini", "count": 1, "languages": 1 }, { "order": 726, - "name": "jpiacaruso", + "name": "denisortega", "count": 1, "languages": 1 }, { "order": 727, - "name": "kronomio", + "name": "flarien", "count": 1, "languages": 1 }, { "order": 728, - "name": "abengl", + "name": "jpiacaruso", "count": 1, "languages": 1 }, { "order": 729, - "name": "edgonzz", + "name": "kronomio", "count": 1, "languages": 1 }, { "order": 730, - "name": "augustbs", + "name": "abengl", "count": 1, "languages": 1 }, { "order": 731, - "name": "gerespinosa", + "name": "edgonzz", "count": 1, "languages": 1 }, { "order": 732, - "name": "walkerlyna", + "name": "augustbs", "count": 1, "languages": 1 }, { "order": 733, - "name": "lytsar", + "name": "gerespinosa", "count": 1, "languages": 1 }, { "order": 734, - "name": "rodmiggithub", + "name": "walkerlyna", "count": 1, "languages": 1 }, { "order": 735, - "name": "gc796", + "name": "lytsar", "count": 1, "languages": 1 }, { "order": 736, - "name": "gustavoguerrero", + "name": "rodmiggithub", "count": 1, "languages": 1 }, { "order": 737, - "name": "maximotoro", + "name": "gc796", "count": 1, "languages": 1 }, { "order": 738, - "name": "xnomada", + "name": "gustavoguerrero", "count": 1, "languages": 1 }, { "order": 739, - "name": "francescoalterio", + "name": "maximotoro", "count": 1, "languages": 1 }, { "order": 740, - "name": "codejoss", + "name": "xnomada", "count": 1, "languages": 1 }, { "order": 741, - "name": "alexis0717", + "name": "francescoalterio", "count": 1, "languages": 1 }, { "order": 742, - "name": "ronnieruuz", + "name": "codejoss", "count": 1, "languages": 1 }, { "order": 743, - "name": "isnatthy", + "name": "alexis0717", "count": 1, "languages": 1 }, { "order": 744, - "name": "datrujillog", + "name": "ronnieruuz", "count": 1, "languages": 1 }, { "order": 745, - "name": "aleclto7", + "name": "isnatthy", "count": 1, "languages": 1 }, { "order": 746, - "name": "s9code", + "name": "datrujillog", "count": 1, "languages": 1 }, { "order": 747, - "name": "pierre-ol", + "name": "aleclto7", "count": 1, "languages": 1 }, { "order": 748, - "name": "peticas", + "name": "s9code", "count": 1, "languages": 1 }, { "order": 749, - "name": "saintsluis", + "name": "pierre-ol", "count": 1, "languages": 1 }, { "order": 750, - "name": "quirogapau", + "name": "peticas", "count": 1, "languages": 1 }, { "order": 751, - "name": "dmhenaopa", + "name": "saintsluis", "count": 1, "languages": 1 }, { "order": 752, - "name": "pointfs", + "name": "quirogapau", "count": 1, "languages": 1 }, { "order": 753, - "name": "lfam200", + "name": "dmhenaopa", "count": 1, "languages": 1 }, { "order": 754, - "name": "lucianogriffa", + "name": "pointfs", "count": 1, "languages": 1 }, { "order": 755, - "name": "alexxawada", + "name": "lfam200", "count": 1, "languages": 1 }, { "order": 756, - "name": "oscarletelier", + "name": "lucianogriffa", "count": 1, "languages": 1 }, { "order": 757, - "name": "johnniew81", + "name": "alexxawada", "count": 1, "languages": 1 }, { "order": 758, - "name": "edperez07", + "name": "oscarletelier", "count": 1, "languages": 1 }, { "order": 759, - "name": "lfwzk", + "name": "johnniew81", "count": 1, "languages": 1 }, { "order": 760, - "name": "fernandofl", + "name": "edperez07", "count": 1, "languages": 1 }, { "order": 761, - "name": "juanpablo-a", + "name": "lfwzk", "count": 1, "languages": 1 }, { "order": 762, - "name": "vmga09", + "name": "fernandofl", "count": 1, "languages": 1 }, { "order": 763, - "name": "imista", + "name": "juanpablo-a", "count": 1, "languages": 1 }, { "order": 764, - "name": "kocho03", + "name": "vmga09", "count": 1, "languages": 1 }, { "order": 765, - "name": "abraham9804", + "name": "imista", "count": 1, "languages": 1 }, { "order": 766, - "name": "afl0r3s", + "name": "kocho03", "count": 1, "languages": 1 }, { "order": 767, - "name": "javieradev", + "name": "abraham9804", "count": 1, "languages": 1 }, { "order": 768, - "name": "mvillegas18", + "name": "afl0r3s", "count": 1, "languages": 1 }, { "order": 769, - "name": "sixtodev", + "name": "javieradev", "count": 1, "languages": 1 }, { "order": 770, - "name": "jovany-java", + "name": "mvillegas18", "count": 1, "languages": 1 }, { "order": 771, - "name": "cliverjimny123", + "name": "sixtodev", "count": 1, "languages": 1 }, { "order": 772, - "name": "madelefonb", + "name": "jovany-java", "count": 1, "languages": 1 }, { "order": 773, - "name": "siuldev", + "name": "cliverjimny123", "count": 1, "languages": 1 }, { "order": 774, - "name": "jacobrwx", + "name": "madelefonb", "count": 1, "languages": 1 }, { "order": 775, - "name": "mhrosariom", + "name": "siuldev", "count": 1, "languages": 1 }, { "order": 776, - "name": "rojasvargas", + "name": "jacobrwx", "count": 1, "languages": 1 }, { "order": 777, - "name": "yessikamichelle", + "name": "mhrosariom", "count": 1, "languages": 1 }, { "order": 778, - "name": "sergioab7", + "name": "rojasvargas", "count": 1, "languages": 1 }, { "order": 779, - "name": "sejotaz", + "name": "yessikamichelle", "count": 1, "languages": 1 }, { "order": 780, - "name": "nnunezmedina", + "name": "sergioab7", "count": 1, "languages": 1 }, { "order": 781, - "name": "diegoxxd", + "name": "sejotaz", "count": 1, "languages": 1 }, { "order": 782, - "name": "jd-gm", + "name": "nnunezmedina", "count": 1, "languages": 1 }, { "order": 783, - "name": "nozodev", + "name": "diegoxxd", "count": 1, "languages": 1 }, { "order": 784, - "name": "ercky1980", + "name": "jd-gm", "count": 1, "languages": 1 }, { "order": 785, - "name": "santaravena", + "name": "nozodev", "count": 1, "languages": 1 }, { "order": 786, - "name": "francomoreira", + "name": "ercky1980", "count": 1, "languages": 1 }, { "order": 787, - "name": "royhuamanavila", + "name": "santaravena", "count": 1, "languages": 1 }, { "order": 788, - "name": "danielbustos342", + "name": "francomoreira", "count": 1, "languages": 1 }, { "order": 789, - "name": "kenzambrano", + "name": "royhuamanavila", "count": 1, "languages": 1 }, { "order": 790, - "name": "romanocoder", + "name": "danielbustos342", "count": 1, "languages": 1 }, { "order": 791, - "name": "jsruedatorres", + "name": "kenzambrano", "count": 1, "languages": 1 }, { "order": 792, - "name": "miguelsarm", + "name": "romanocoder", "count": 1, "languages": 1 }, { "order": 793, - "name": "frcan89", + "name": "jsruedatorres", "count": 1, "languages": 1 }, { "order": 794, - "name": "alvarommedia", + "name": "miguelsarm", "count": 1, "languages": 1 }, { "order": 795, - "name": "patricioguerra30", + "name": "frcan89", "count": 1, "languages": 1 }, { "order": 796, - "name": "mdemena", + "name": "alvarommedia", "count": 1, "languages": 1 }, { "order": 797, - "name": "marcos0803", + "name": "patricioguerra30", "count": 1, "languages": 1 }, { "order": 798, - "name": "vmarialuzm", + "name": "mdemena", "count": 1, "languages": 1 }, { "order": 799, - "name": "acobo3", + "name": "marcos0803", "count": 1, "languages": 1 }, { "order": 800, - "name": "sofiamfernandez", + "name": "vmarialuzm", "count": 1, "languages": 1 }, { "order": 801, - "name": "cd1974", + "name": "acobo3", "count": 1, "languages": 1 }, { "order": 802, - "name": "vickalck", + "name": "sofiamfernandez", "count": 1, "languages": 1 }, { "order": 803, - "name": "chema-dw", + "name": "cd1974", "count": 1, "languages": 1 }, { "order": 804, - "name": "javirr4", + "name": "vickalck", "count": 1, "languages": 1 }, { "order": 805, - "name": "e-xtian", + "name": "chema-dw", "count": 1, "languages": 1 }, { "order": 806, - "name": "masenace", + "name": "javirr4", "count": 1, "languages": 1 }, { "order": 807, - "name": "julioorozco05", + "name": "e-xtian", "count": 1, "languages": 1 }, { "order": 808, - "name": "g4nd4lf", + "name": "masenace", "count": 1, "languages": 1 }, { "order": 809, - "name": "cris10026", + "name": "julioorozco05", "count": 1, "languages": 1 }, { "order": 810, - "name": "johao23", + "name": "g4nd4lf", "count": 1, "languages": 1 }, { "order": 811, - "name": "latorredev", + "name": "cris10026", "count": 1, "languages": 1 }, { "order": 812, - "name": "anexo01", + "name": "johao23", "count": 1, "languages": 1 }, { "order": 813, - "name": "wilsonbarrera", + "name": "latorredev", "count": 1, "languages": 1 }, { "order": 814, - "name": "diegogomezcor4", + "name": "anexo01", "count": 1, "languages": 1 }, { "order": 815, - "name": "charly024", + "name": "wilsonbarrera", "count": 1, "languages": 1 }, { "order": 816, - "name": "miguelmancebo", + "name": "diegogomezcor4", "count": 1, "languages": 1 }, { "order": 817, - "name": "geridage", + "name": "charly024", "count": 1, "languages": 1 }, { "order": 818, - "name": "jereaguilar", + "name": "miguelmancebo", "count": 1, "languages": 1 }, { "order": 819, - "name": "lluistech", + "name": "geridage", "count": 1, "languages": 1 }, { "order": 820, - "name": "luceldasilva", + "name": "jereaguilar", "count": 1, "languages": 1 }, { "order": 821, - "name": "pedrojog", + "name": "lluistech", "count": 1, "languages": 1 }, { "order": 822, - "name": "francgci", + "name": "luceldasilva", "count": 1, "languages": 1 }, { "order": 823, - "name": "yamiyugi25", + "name": "francgci", "count": 1, "languages": 1 }, { "order": 824, - "name": "luisangeles20", + "name": "yamiyugi25", "count": 1, "languages": 1 }, { "order": 825, - "name": "cristianvergaraf", + "name": "luisangeles20", "count": 1, "languages": 1 }, { "order": 826, - "name": "judithernandez", + "name": "cristianvergaraf", "count": 1, "languages": 1 }, { "order": 827, - "name": "eatsangels", + "name": "judithernandez", "count": 1, "languages": 1 }, { "order": 828, - "name": "mjordanaam", + "name": "eatsangels", "count": 1, "languages": 1 }, { "order": 829, - "name": "marcelinoarias369", + "name": "mjordanaam", "count": 1, "languages": 1 }, { "order": 830, - "name": "juan-cruz01", + "name": "marcelinoarias369", "count": 1, "languages": 1 }, { "order": 831, - "name": "arturodlapaz17", + "name": "juan-cruz01", "count": 1, "languages": 1 }, { "order": 832, - "name": "cisneros2404", + "name": "arturodlapaz17", "count": 1, "languages": 1 }, { "order": 833, - "name": "claudios1980", + "name": "cisneros2404", "count": 1, "languages": 1 }, { "order": 834, - "name": "pr1de-23", + "name": "claudios1980", "count": 1, "languages": 1 }, { "order": 835, - "name": "dimanu-py", + "name": "pr1de-23", "count": 1, "languages": 1 }, { "order": 836, - "name": "wallsified", + "name": "dimanu-py", "count": 1, "languages": 1 }, { "order": 837, - "name": "kshields51", + "name": "wallsified", "count": 1, "languages": 1 }, { "order": 838, - "name": "hnaranjog", + "name": "kshields51", "count": 1, "languages": 1 }, { "order": 839, - "name": "erickcis", + "name": "hnaranjog", "count": 1, "languages": 1 }, { "order": 840, - "name": "neftalyr", + "name": "erickcis", "count": 1, "languages": 1 }, { "order": 841, - "name": "zeraven09", + "name": "neftalyr", "count": 1, "languages": 1 }, { "order": 842, - "name": "jchernandez87", + "name": "zeraven09", "count": 1, "languages": 1 }, { "order": 843, - "name": "adcarret", + "name": "jchernandez87", "count": 1, "languages": 1 }, { "order": 844, - "name": "leo18q", + "name": "adcarret", "count": 1, "languages": 1 }, { "order": 845, - "name": "v0l0v", + "name": "leo18q", "count": 1, "languages": 1 }, { "order": 846, - "name": "alejandro000", + "name": "v0l0v", "count": 1, "languages": 1 }, { "order": 847, - "name": "juanalbornoz32", + "name": "alejandro000", "count": 1, "languages": 1 }, { "order": 848, - "name": "albertomorilla", + "name": "juanalbornoz32", "count": 1, "languages": 1 }, { "order": 849, - "name": "sergiovelayos", + "name": "albertomorilla", "count": 1, "languages": 1 }, { "order": 850, - "name": "emmanuelmmontesinos ", + "name": "sergiovelayos", "count": 1, "languages": 1 }, { "order": 851, - "name": "jgregoris", + "name": "emmanuelmmontesinos ", "count": 1, "languages": 1 }, { "order": 852, - "name": "and-y21", + "name": "jgregoris", "count": 1, "languages": 1 }, { "order": 853, - "name": "xcortes", + "name": "and-y21", "count": 1, "languages": 1 }, { "order": 854, - "name": "salas89", + "name": "xcortes", "count": 1, "languages": 1 }, { "order": 855, - "name": "ignacioskm", + "name": "salas89", "count": 1, "languages": 1 }, { "order": 856, - "name": "sunjamer", + "name": "ignacioskm", "count": 1, "languages": 1 }, { "order": 857, - "name": "dakkaj", + "name": "sunjamer", "count": 1, "languages": 1 }, { "order": 858, - "name": "jalonso76", + "name": "dakkaj", "count": 1, "languages": 1 }, { "order": 859, - "name": "sbngl", + "name": "jalonso76", "count": 1, "languages": 1 }, { "order": 860, - "name": "alejarandro", + "name": "sbngl", "count": 1, "languages": 1 }, { "order": 861, - "name": "gmedinat911", + "name": "alejarandro", "count": 1, "languages": 1 }, { "order": 862, - "name": "danidan1214", + "name": "gmedinat911", "count": 1, "languages": 1 }, { "order": 863, - "name": "neshurtado", + "name": "danidan1214", "count": 1, "languages": 1 }, { "order": 864, - "name": "demegorash", + "name": "neshurtado", "count": 1, "languages": 1 }, { "order": 865, - "name": "xhinto", + "name": "demegorash", "count": 1, "languages": 1 }, { "order": 866, - "name": "xalejandrow", + "name": "xhinto", "count": 1, "languages": 1 }, { "order": 867, - "name": "90dread", + "name": "xalejandrow", "count": 1, "languages": 1 }, { "order": 868, - "name": "gersonoroz", + "name": "90dread", "count": 1, "languages": 1 }, { "order": 869, - "name": "isaacdci", + "name": "gersonoroz", "count": 1, "languages": 1 }, { "order": 870, - "name": "davidgramiro", + "name": "isaacdci", "count": 1, "languages": 1 }, { "order": 871, - "name": "devkenn", + "name": "davidgramiro", "count": 1, "languages": 1 }, { "order": 872, - "name": "turudev1979", + "name": "devkenn", "count": 1, "languages": 1 }, { "order": 873, - "name": "giovanni-schmaily", + "name": "turudev1979", "count": 1, "languages": 1 }, { "order": 874, - "name": "deivimiller", + "name": "giovanni-schmaily", "count": 1, "languages": 1 }, { "order": 875, - "name": "carlosbb70", + "name": "deivimiller", "count": 1, "languages": 1 }, { "order": 876, - "name": "fergz1988", + "name": "carlosbb70", "count": 1, "languages": 1 }, { "order": 877, - "name": "betulioo", + "name": "fergz1988", "count": 1, "languages": 1 }, { "order": 878, - "name": "pablom-2015", + "name": "betulioo", "count": 1, "languages": 1 }, { "order": 879, - "name": "manuu42", + "name": "pablom-2015", "count": 1, "languages": 1 }, { "order": 880, - "name": "dacaldev", + "name": "manuu42", "count": 1, "languages": 1 }, { "order": 881, - "name": "nachodev7", + "name": "dacaldev", "count": 1, "languages": 1 }, { "order": 882, - "name": "snowcardenas", + "name": "nachodev7", "count": 1, "languages": 1 }, { "order": 883, - "name": "osneidert", + "name": "snowcardenas", "count": 1, "languages": 1 }, { "order": 884, - "name": "pushodev", + "name": "osneidert", "count": 1, "languages": 1 }, { "order": 885, - "name": "m4xxdev", + "name": "pushodev", "count": 1, "languages": 1 }, { "order": 886, - "name": "amitchellg", + "name": "m4xxdev", "count": 1, "languages": 1 }, { "order": 887, - "name": "ndepaul82", + "name": "amitchellg", "count": 1, "languages": 1 }, { "order": 888, - "name": "sherkla12e", + "name": "ndepaul82", "count": 1, "languages": 1 }, { "order": 889, - "name": "gilbertho502", + "name": "sherkla12e", "count": 1, "languages": 1 }, { "order": 890, - "name": "bjchavez", + "name": "tashidian", "count": 1, "languages": 1 }, { "order": 891, - "name": "alfaroo1", + "name": "gilbertho502", "count": 1, "languages": 1 }, { "order": 892, - "name": "deivisaherreraj", + "name": "bjchavez", "count": 1, "languages": 1 }, { "order": 893, + "name": "alfaroo1", + "count": 1, + "languages": 1 + }, + { + "order": 894, + "name": "deivisaherreraj", + "count": 1, + "languages": 1 + }, + { + "order": 895, "name": "astrarothdlcxvi", "count": 1, "languages": 1 From 8b7e7f47d3185e3b30363daddfd716376415b0db Mon Sep 17 00:00:00 2001 From: SaicoBys Date: Sat, 22 Jun 2024 23:27:27 -0400 Subject: [PATCH 39/43] #02 - python --- .../python/saicobys.py | 57 +++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 Roadmap/02 - FUNCIONES Y ALCANCE/python/saicobys.py diff --git a/Roadmap/02 - FUNCIONES Y ALCANCE/python/saicobys.py b/Roadmap/02 - FUNCIONES Y ALCANCE/python/saicobys.py new file mode 100644 index 0000000000..2e724942f0 --- /dev/null +++ b/Roadmap/02 - FUNCIONES Y ALCANCE/python/saicobys.py @@ -0,0 +1,57 @@ +""" 1. Funciones sin parámetros ni retorno: """ +def saludar(): + print("¡Hola desde una función!") + +saludar() # Llamada a la función + +""" 2. Funciones con parámetros: """ +def saludar_con_nombre(nombre): + print(f"¡Hola, {nombre}!") + +saludar_con_nombre("Ana") # Llamada con un argumento + +""" 3. Funciones con múltiples parámetros: """ +def sumar(a, b): + resultado = a + b + print(f"La suma de {a} y {b} es: {resultado}") + +sumar(5, 3) # Llamada con dos argumentos + +""" 4. Funciones con retorno: """ +def calcular_area_rectangulo(base, altura): + area = base * altura + return area + +area = calcular_area_rectangulo(4, 6) +print(f"El área del rectángulo es: {area}") + +""" 5. Funciones dentro de funciones (anidadas): """ +def operacion_matematica(x, y): + def sumar(a, b): + return a + b + + def restar(a, b): + return a - b + + suma_resultado = sumar(x, y) + resta_resultado = restar(x, y) + + print(f"Suma: {suma_resultado}, Resta: {resta_resultado}") + +operacion_matematica(8, 3) + +""" 6. Uso de funciones integradas: """ +mensaje = "Hola, mundo!" +longitud = len(mensaje) # Función len() para obtener la longitud de la cadena +print(f"La longitud del mensaje es: {longitud}") + +""" . Variables locales y globales: """ +variable_global = "Soy global" + +def funcion_ejemplo(): + variable_local = "Soy local" + print("Dentro de la función:", variable_global, variable_local) + +funcion_ejemplo() +print("Fuera de la función:", variable_global) +# print("Fuera de la función:", variable_local) # Error: variable_local no está definida fuera de la función From c6527b586ff65f23e0d5b5b683e1395e702e1d6f Mon Sep 17 00:00:00 2001 From: SaicoBys Date: Sat, 22 Jun 2024 23:39:47 -0400 Subject: [PATCH 40/43] #02 - python --- .../python/saicobys.py | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/Roadmap/02 - FUNCIONES Y ALCANCE/python/saicobys.py b/Roadmap/02 - FUNCIONES Y ALCANCE/python/saicobys.py index 2e724942f0..debff15329 100644 --- a/Roadmap/02 - FUNCIONES Y ALCANCE/python/saicobys.py +++ b/Roadmap/02 - FUNCIONES Y ALCANCE/python/saicobys.py @@ -55,3 +55,24 @@ def funcion_ejemplo(): funcion_ejemplo() print("Fuera de la función:", variable_global) # print("Fuera de la función:", variable_local) # Error: variable_local no está definida fuera de la función + + +def fizzbuzz(texto_multiplo_3, texto_multiplo_5): + """Imprime los números del 1 al 100 con reglas especiales y retorna el número de veces que se imprime un número en lugar de texto.""" + contador_numeros = 0 + + for numero in range(1, 101): + if numero % 15 == 0: # Múltiplo de 3 y 5 + print(texto_multiplo_3 + texto_multiplo_5) + elif numero % 3 == 0: # Múltiplo de 3 + print(texto_multiplo_3) + elif numero % 5 == 0: # Múltiplo de 5 + print(texto_multiplo_5) + else: # No es múltiplo de 3 ni de 5 + print(numero) + contador_numeros += 1 # Incrementa el contador si se imprime un número + + return contador_numeros + +resultado = fizzbuzz("Fizz", "Buzz") +print(f"Número de veces que se imprimió un número: {resultado}") From ed4bbffd363018a42077c7212cca63af7fb10b6a Mon Sep 17 00:00:00 2001 From: Bernat Date: Sun, 23 Jun 2024 10:25:52 +0200 Subject: [PATCH 41/43] #23 - JavaScript --- Roadmap/23 - SINGLETON/javascript/bernatcs.js | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 Roadmap/23 - SINGLETON/javascript/bernatcs.js diff --git a/Roadmap/23 - SINGLETON/javascript/bernatcs.js b/Roadmap/23 - SINGLETON/javascript/bernatcs.js new file mode 100644 index 0000000000..170f97aa21 --- /dev/null +++ b/Roadmap/23 - SINGLETON/javascript/bernatcs.js @@ -0,0 +1,15 @@ +// ** EJERCICIO + +class Singleton { + constructor() { + if (Singleton.instance) { + return Singleton.instance; + } + this.data = "Información del Singleton"; // Propiedades de la instancia + Singleton.instance = this; // Guardar la instancia + Object.freeze(this); // Congelar la instancia para evitar modificaciones + } +} + +const instance = new Singleton(); +const instance2 = new Singleton() \ No newline at end of file From c4a0b7dcac401287284f4dc2dd40b9f1eff5c36c Mon Sep 17 00:00:00 2001 From: Bernat Date: Sun, 23 Jun 2024 15:29:11 +0200 Subject: [PATCH 42/43] #24 - JavaScript --- .../24 - DECORADORES/javascript/bernatcs.js | 39 +++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 Roadmap/24 - DECORADORES/javascript/bernatcs.js diff --git a/Roadmap/24 - DECORADORES/javascript/bernatcs.js b/Roadmap/24 - DECORADORES/javascript/bernatcs.js new file mode 100644 index 0000000000..64b091d6c2 --- /dev/null +++ b/Roadmap/24 - DECORADORES/javascript/bernatcs.js @@ -0,0 +1,39 @@ +// ** EJERCICIO + +function timeLogger(targetFunction) { + return function(...args) { + console.time('Execution Time'); + const result = targetFunction.apply(this, args); + console.timeEnd('Execution Time'); + return result; + }; +} + +function sayHello(name) { // Función original + console.log(`Hola, ${name}!`); +} + +const timedSayHello = timeLogger(sayHello); // Decorar la función + +//timedSayHello('Pepe'); // Llamar a la función decorada + +// ** DIFICULTAD EXTRA ** ------------------------------------------------------------------------------------------------------------------------------------------------ + + +function timeCounter(targetFunction) { + let functionCount = 0 + + return function(...args) { + const result = targetFunction.apply(this, args); + functionCount++ + console.log('La función sayHello se ha ejecutado ' + functionCount + ' veces.') + }; +} +function sayHello(name) { // Función original + console.log(`Hola, ${name}!`); +} +const countedSayHello = timeCounter(sayHello) + +countedSayHello('Juan') +countedSayHello('María') +countedSayHello('Julián') \ No newline at end of file From 4324abd652f6c7a0cddb4e54aa35118c04900da5 Mon Sep 17 00:00:00 2001 From: mouredev Date: Mon, 24 Jun 2024 00:14:36 +0000 Subject: [PATCH 43/43] Update stats --- Roadmap/stats.json | 1718 ++++++++++++++++++++++---------------------- 1 file changed, 865 insertions(+), 853 deletions(-) diff --git a/Roadmap/stats.json b/Roadmap/stats.json index d39115372a..9908f98e7a 100644 --- a/Roadmap/stats.json +++ b/Roadmap/stats.json @@ -1,23 +1,23 @@ { "challenges_total": 26, "languages_total": 44, - "files_total": 5046, - "users_total": 895, + "files_total": 5078, + "users_total": 897, "challenges_ranking": [ { "order": 1, "name": "00 - SINTAXIS, VARIABLES, TIPOS DE DATOS Y HOLA MUNDO", - "count": 998 + "count": 1001 }, { "order": 2, "name": "01 - OPERADORES Y ESTRUCTURAS DE CONTROL", - "count": 610 + "count": 613 }, { "order": 3, "name": "02 - FUNCIONES Y ALCANCE", - "count": 470 + "count": 473 }, { "order": 4, @@ -27,7 +27,7 @@ { "order": 5, "name": "04 - CADENAS DE CARACTERES", - "count": 267 + "count": 268 }, { "order": 6, @@ -37,7 +37,7 @@ { "order": 7, "name": "05 - VALOR Y REFERENCIA", - "count": 235 + "count": 236 }, { "order": 8, @@ -47,22 +47,22 @@ { "order": 9, "name": "08 - CLASES", - "count": 183 + "count": 184 }, { "order": 10, "name": "09 - HERENCIA", - "count": 180 + "count": 181 }, { "order": 11, "name": "10 - EXCEPCIONES", - "count": 146 + "count": 147 }, { "order": 12, "name": "11 - MANEJO DE FICHEROS", - "count": 120 + "count": 125 }, { "order": 13, @@ -71,18 +71,18 @@ }, { "order": 14, - "name": "16 - EXPRESIONES REGULARES", - "count": 100 + "name": "13 - PRUEBAS UNITARIAS", + "count": 101 }, { "order": 15, - "name": "13 - PRUEBAS UNITARIAS", - "count": 99 + "name": "16 - EXPRESIONES REGULARES", + "count": 100 }, { "order": 16, "name": "12 - JSON Y XML", - "count": 98 + "count": 100 }, { "order": 17, @@ -102,7 +102,7 @@ { "order": 20, "name": "19 - ENUMERACIONES", - "count": 81 + "count": 82 }, { "order": 21, @@ -112,101 +112,101 @@ { "order": 22, "name": "21 - CALLBACKS", - "count": 64 + "count": 65 }, { "order": 23, "name": "22 - FUNCIONES DE ORDEN SUPERIOR", - "count": 55 + "count": 56 }, { "order": 24, "name": "23 - SINGLETON", - "count": 49 + "count": 50 }, { "order": 25, "name": "24 - DECORADORES", - "count": 42 + "count": 43 }, { "order": 26, "name": "25 - LOGS", - "count": 22 + "count": 26 } ], "languages_ranking": [ { "order": 1, "name": "python", - "count": 2135, - "percentage": 42.31 + "count": 2149, + "percentage": 42.32 }, { "order": 2, "name": "javascript", - "count": 1001, - "percentage": 19.84 + "count": 1011, + "percentage": 19.91 }, { "order": 3, "name": "java", - "count": 428, - "percentage": 8.48 + "count": 431, + "percentage": 8.49 }, { "order": 4, "name": "typescript", - "count": 212, - "percentage": 4.2 + "count": 215, + "percentage": 4.23 }, { "order": 5, "name": "c#", "count": 204, - "percentage": 4.04 + "percentage": 4.02 }, { "order": 6, "name": "kotlin", "count": 151, - "percentage": 2.99 + "percentage": 2.97 }, { "order": 7, "name": "swift", "count": 147, - "percentage": 2.91 + "percentage": 2.89 }, { "order": 8, "name": "go", "count": 139, - "percentage": 2.75 + "percentage": 2.74 }, { "order": 9, "name": "php", "count": 116, - "percentage": 2.3 + "percentage": 2.28 }, { "order": 10, "name": "rust", - "count": 98, - "percentage": 1.94 + "count": 99, + "percentage": 1.95 }, { "order": 11, "name": "c++", "count": 94, - "percentage": 1.86 + "percentage": 1.85 }, { "order": 12, "name": "c", "count": 63, - "percentage": 1.25 + "percentage": 1.24 }, { "order": 13, @@ -224,19 +224,19 @@ "order": 15, "name": "vb.net", "count": 26, - "percentage": 0.52 + "percentage": 0.51 }, { "order": 16, "name": "ocaml", "count": 26, - "percentage": 0.52 + "percentage": 0.51 }, { "order": 17, "name": "ruby", "count": 18, - "percentage": 0.36 + "percentage": 0.35 }, { "order": 18, @@ -342,61 +342,61 @@ }, { "order": 35, - "name": "tcl", - "count": 1, - "percentage": 0.02 + "name": "raku", + "count": 2, + "percentage": 0.04 }, { "order": 36, - "name": "clojure", + "name": "tcl", "count": 1, "percentage": 0.02 }, { "order": 37, - "name": "objectivec", + "name": "clojure", "count": 1, "percentage": 0.02 }, { "order": 38, - "name": "haskell", + "name": "objectivec", "count": 1, "percentage": 0.02 }, { "order": 39, - "name": "harbour", + "name": "haskell", "count": 1, "percentage": 0.02 }, { "order": 40, - "name": "perl", + "name": "harbour", "count": 1, "percentage": 0.02 }, { "order": 41, - "name": "f#", + "name": "perl", "count": 1, "percentage": 0.02 }, { "order": 42, - "name": "al", + "name": "f#", "count": 1, "percentage": 0.02 }, { "order": 43, - "name": "abap", + "name": "al", "count": 1, "percentage": 0.02 }, { "order": 44, - "name": "raku", + "name": "abap", "count": 1, "percentage": 0.02 } @@ -411,20 +411,20 @@ { "order": 2, "name": "kenysdev", - "count": 103, + "count": 104, "languages": 4 }, { "order": 3, - "name": "hozlucas28", - "count": 75, - "languages": 3 + "name": "qwik-zgheib", + "count": 79, + "languages": 4 }, { "order": 4, - "name": "qwik-zgheib", - "count": 73, - "languages": 4 + "name": "hozlucas28", + "count": 75, + "languages": 3 }, { "order": 5, @@ -542,39 +542,39 @@ }, { "order": 24, - "name": "aldroide", - "count": 31, + "name": "jesusantonioeescamilla", + "count": 32, "languages": 3 }, { "order": 25, - "name": "chrisdev00", + "name": "aldroide", "count": 31, - "languages": 2 + "languages": 3 }, { "order": 26, - "name": "ronipg", - "count": 30, - "languages": 3 + "name": "amadorquispe", + "count": 31, + "languages": 2 }, { "order": 27, - "name": "jesusantonioeescamilla", - "count": 30, - "languages": 3 + "name": "chrisdev00", + "count": 31, + "languages": 2 }, { "order": 28, - "name": "marcode24", + "name": "ronipg", "count": 30, "languages": 3 }, { "order": 29, - "name": "amadorquispe", + "name": "marcode24", "count": 30, - "languages": 2 + "languages": 3 }, { "order": 30, @@ -632,133 +632,133 @@ }, { "order": 39, - "name": "mouredev", + "name": "bernatcs", "count": 25, "languages": 1 }, { "order": 40, + "name": "mouredev", + "count": 25, + "languages": 1 + }, + { + "order": 41, + "name": "alanshakir", + "count": 25, + "languages": 1 + }, + { + "order": 42, "name": "isaacus98", "count": 24, "languages": 3 }, { - "order": 41, + "order": 43, "name": "deyvid-10", "count": 24, "languages": 1 }, { - "order": 42, + "order": 44, "name": "caverobrandon", "count": 24, "languages": 1 }, { - "order": 43, - "name": "alanshakir", - "count": 24, - "languages": 1 + "order": 45, + "name": "edalmava", + "count": 23, + "languages": 10 }, { - "order": 44, + "order": 46, "name": "zetared92", "count": 23, "languages": 3 }, { - "order": 45, + "order": 47, "name": "thegera4", "count": 23, "languages": 2 }, { - "order": 46, + "order": 48, "name": "jamerrq", "count": 23, "languages": 1 }, { - "order": 47, + "order": 49, "name": "allbertomd", "count": 23, "languages": 1 }, { - "order": 48, + "order": 50, "name": "christian-jfr", "count": 23, "languages": 1 }, { - "order": 49, + "order": 51, "name": "avcenal", "count": 23, "languages": 1 }, { - "order": 50, + "order": 52, "name": "isilanes", "count": 23, "languages": 1 }, { - "order": 51, - "name": "edalmava", - "count": 22, - "languages": 10 - }, - { - "order": 52, + "order": 53, "name": "ycanas", "count": 22, "languages": 2 }, { - "order": 53, + "order": 54, "name": "emedevelopa", "count": 22, "languages": 1 }, { - "order": 54, + "order": 55, "name": "parababire", "count": 22, "languages": 1 }, { - "order": 55, + "order": 56, "name": "ggilperez", "count": 22, "languages": 1 }, { - "order": 56, + "order": 57, "name": "victor-casta", "count": 21, "languages": 3 }, { - "order": 57, + "order": 58, "name": "giovanyosorio", "count": 21, "languages": 2 }, - { - "order": 58, - "name": "igledev", - "count": 21, - "languages": 1 - }, { "order": 59, - "name": "davidmoralesdeveloper", + "name": "igledev", "count": 21, "languages": 1 }, { "order": 60, - "name": "bernatcs", + "name": "davidmoralesdeveloper", "count": 21, "languages": 1 }, @@ -830,163 +830,163 @@ }, { "order": 72, + "name": "any7dev", + "count": 18, + "languages": 2 + }, + { + "order": 73, "name": "mensius87", "count": 17, "languages": 4 }, { - "order": 73, + "order": 74, "name": "kevined11", "count": 17, "languages": 3 }, { - "order": 74, + "order": 75, "name": "raulfauli", "count": 17, "languages": 2 }, { - "order": 75, + "order": 76, "name": "emmanuelmmontesinos", "count": 17, "languages": 1 }, { - "order": 76, + "order": 77, "name": "rxvlc", "count": 16, "languages": 3 }, { - "order": 77, + "order": 78, "name": "sergiogi99", "count": 16, "languages": 2 }, { - "order": 78, + "order": 79, "name": "kontroldev", "count": 16, "languages": 1 }, { - "order": 79, + "order": 80, "name": "artickun", "count": 16, "languages": 1 }, { - "order": 80, + "order": 81, "name": "oniricoh", "count": 16, "languages": 1 }, { - "order": 81, + "order": 82, "name": "alvaro-neyra", "count": 15, "languages": 2 }, { - "order": 82, + "order": 83, + "name": "saicobys", + "count": 15, + "languages": 2 + }, + { + "order": 84, "name": "mariovelascodev", "count": 15, "languages": 2 }, { - "order": 83, + "order": 85, "name": "seandsun", "count": 15, "languages": 1 }, { - "order": 84, + "order": 86, "name": "oriaj3", "count": 15, "languages": 1 }, { - "order": 85, + "order": 87, "name": "hyromy", "count": 15, "languages": 1 }, { - "order": 86, + "order": 88, + "name": "gringoam", + "count": 15, + "languages": 1 + }, + { + "order": 89, "name": "sniker1223", "count": 14, "languages": 4 }, { - "order": 87, + "order": 90, "name": "kuroz00", "count": 14, "languages": 2 }, { - "order": 88, + "order": 91, "name": "chartypes", "count": 14, "languages": 2 }, { - "order": 89, - "name": "any7dev", - "count": 14, - "languages": 2 - }, - { - "order": 90, + "order": 92, "name": "gonzadev28", "count": 14, "languages": 2 }, { - "order": 91, + "order": 93, "name": "ygriegasb", "count": 14, "languages": 2 }, { - "order": 92, + "order": 94, "name": "andresgcastillo", "count": 14, "languages": 2 }, { - "order": 93, + "order": 95, "name": "vincentrodriguezr", "count": 14, "languages": 1 }, { - "order": 94, + "order": 96, "name": "paula2409", "count": 14, "languages": 1 }, { - "order": 95, - "name": "gringoam", - "count": 14, - "languages": 1 - }, - { - "order": 96, + "order": 97, "name": "diegoibb", "count": 13, "languages": 3 }, - { - "order": 97, - "name": "jesuses1312", - "count": 13, - "languages": 2 - }, { "order": 98, - "name": "saicobys", + "name": "jesuses1312", "count": 13, "languages": 2 }, @@ -1046,115 +1046,115 @@ }, { "order": 108, - "name": "pancratzia", + "name": "andrewcodev", "count": 12, "languages": 1 }, { "order": 109, - "name": "dataciriano", + "name": "pancratzia", "count": 12, "languages": 1 }, { "order": 110, - "name": "evilpotato04", + "name": "dataciriano", "count": 12, "languages": 1 }, { "order": 111, - "name": "sorubadguy", + "name": "evilpotato04", "count": 12, "languages": 1 }, { "order": 112, - "name": "javierjoyera", + "name": "sorubadguy", "count": 12, "languages": 1 }, { "order": 113, - "name": "clmiranda", + "name": "javierjoyera", "count": 12, "languages": 1 }, { "order": 114, - "name": "jafeito", + "name": "jptxaya", "count": 12, "languages": 1 }, { "order": 115, + "name": "clmiranda", + "count": 12, + "languages": 1 + }, + { + "order": 116, + "name": "jafeito", + "count": 12, + "languages": 1 + }, + { + "order": 117, "name": "jchavescaceres", "count": 11, "languages": 2 }, { - "order": 116, + "order": 118, "name": "switchdays", "count": 11, "languages": 2 }, { - "order": 117, + "order": 119, "name": "arkmiguel379", "count": 11, "languages": 2 }, { - "order": 118, + "order": 120, "name": "abelade", "count": 11, "languages": 1 }, { - "order": 119, + "order": 121, "name": "jeigar2", "count": 11, "languages": 1 }, { - "order": 120, - "name": "andrewcodev", - "count": 11, - "languages": 1 - }, - { - "order": 121, - "name": "gustavogomez19", - "count": 11, - "languages": 1 - }, - { - "order": 122, - "name": "charlerodriguez3", + "order": 122, + "name": "gustavogomez19", "count": 11, "languages": 1 }, { "order": 123, - "name": "evanz2608", + "name": "charlerodriguez3", "count": 11, "languages": 1 }, { "order": 124, - "name": "eugeniasoria", + "name": "evanz2608", "count": 11, "languages": 1 }, { "order": 125, - "name": "warclimb", + "name": "eugeniasoria", "count": 11, "languages": 1 }, { "order": 126, - "name": "jptxaya", + "name": "warclimb", "count": 11, "languages": 1 }, @@ -1268,93 +1268,93 @@ }, { "order": 145, - "name": "julianbuitragocharry-dev", - "count": 9, - "languages": 3 + "name": "trufoplus", + "count": 10, + "languages": 1 }, { "order": 146, - "name": "karys4", + "name": "julianbuitragocharry-dev", "count": 9, - "languages": 1 + "languages": 3 }, { "order": 147, - "name": "brockar", + "name": "djsurgeon", "count": 9, - "languages": 1 + "languages": 2 }, { "order": 148, - "name": "omarland", + "name": "karys4", "count": 9, "languages": 1 }, { "order": 149, - "name": "oleojake", + "name": "brockar", "count": 9, "languages": 1 }, { "order": 150, - "name": "yoezequiel", + "name": "omarland", "count": 9, "languages": 1 }, { "order": 151, - "name": "gjbecerrae", + "name": "oleojake", "count": 9, "languages": 1 }, { "order": 152, - "name": "troynebula", + "name": "yoezequiel", "count": 9, "languages": 1 }, { "order": 153, - "name": "jcdm60", + "name": "gjbecerrae", "count": 9, "languages": 1 }, { "order": 154, - "name": "marcose-ferretoe", + "name": "troynebula", "count": 9, "languages": 1 }, { "order": 155, - "name": "trufoplus", + "name": "jcdm60", "count": 9, "languages": 1 }, { "order": 156, - "name": "sperezsa", + "name": "marcose-ferretoe", "count": 9, "languages": 1 }, { "order": 157, - "name": "angel-delg", - "count": 8, - "languages": 4 + "name": "sperezsa", + "count": 9, + "languages": 1 }, { "order": 158, - "name": "pakiuh", + "name": "angel-delg", "count": 8, "languages": 4 }, { "order": 159, - "name": "djsurgeon", + "name": "pakiuh", "count": 8, - "languages": 2 + "languages": 4 }, { "order": 160, @@ -1772,301 +1772,301 @@ }, { "order": 229, - "name": "mirandayuber", + "name": "jorgeadamowicz", "count": 5, "languages": 1 }, { "order": 230, - "name": "augustdev2003", + "name": "mirandayuber", "count": 5, "languages": 1 }, { "order": 231, - "name": "thezhizn", + "name": "augustdev2003", "count": 5, "languages": 1 }, { "order": 232, - "name": "xemita007", + "name": "thezhizn", "count": 5, "languages": 1 }, { "order": 233, - "name": "yharyarias", + "name": "xemita007", "count": 5, "languages": 1 }, { "order": 234, - "name": "gmbarrios", + "name": "yharyarias", "count": 5, "languages": 1 }, { "order": 235, - "name": "mauricio-leyva", + "name": "gmbarrios", "count": 5, "languages": 1 }, { "order": 236, - "name": "boterop", + "name": "mauricio-leyva", "count": 5, "languages": 1 }, { "order": 237, - "name": "w00k", + "name": "boterop", "count": 5, "languages": 1 }, { "order": 238, - "name": "zarakilancelot", - "count": 4, - "languages": 3 + "name": "w00k", + "count": 5, + "languages": 1 }, { "order": 239, - "name": "fullovellas", + "name": "zarakilancelot", "count": 4, - "languages": 2 + "languages": 3 }, { "order": 240, - "name": "daeduol", + "name": "fullovellas", "count": 4, "languages": 2 }, { "order": 241, - "name": "mendozalz", + "name": "daeduol", "count": 4, "languages": 2 }, { "order": 242, - "name": "salkalero", + "name": "mendozalz", "count": 4, "languages": 2 }, { "order": 243, - "name": "k3nvd", + "name": "salkalero", "count": 4, "languages": 2 }, { "order": 244, - "name": "eonozux", + "name": "k3nvd", "count": 4, "languages": 2 }, { "order": 245, - "name": "willr30", + "name": "eonozux", "count": 4, "languages": 2 }, { "order": 246, - "name": "yablik", + "name": "willr30", "count": 4, "languages": 2 }, { "order": 247, - "name": "traver79", + "name": "yablik", "count": 4, - "languages": 1 + "languages": 2 }, { "order": 248, - "name": "danielbelenguer", + "name": "traver79", "count": 4, "languages": 1 }, { "order": 249, - "name": "jerrysantana", + "name": "danielbelenguer", "count": 4, "languages": 1 }, { "order": 250, - "name": "blasbarragan", + "name": "jerrysantana", "count": 4, "languages": 1 }, { "order": 251, - "name": "juanca2805", + "name": "blasbarragan", "count": 4, "languages": 1 }, { "order": 252, - "name": "bladi23", + "name": "juanca2805", "count": 4, "languages": 1 }, { "order": 253, - "name": "hugovrc", + "name": "bladi23", "count": 4, "languages": 1 }, { "order": 254, - "name": "mayerga", + "name": "hugovrc", "count": 4, "languages": 1 }, { "order": 255, - "name": "sbs24", + "name": "mayerga", "count": 4, "languages": 1 }, { "order": 256, - "name": "esaens12", + "name": "sbs24", "count": 4, "languages": 1 }, { "order": 257, - "name": "andeveling", + "name": "esaens12", "count": 4, "languages": 1 }, { "order": 258, - "name": "rauldoezon", + "name": "andeveling", "count": 4, "languages": 1 }, { "order": 259, - "name": "angelurrutdev", + "name": "rauldoezon", "count": 4, "languages": 1 }, { "order": 260, - "name": "elianisdev", + "name": "angelurrutdev", "count": 4, "languages": 1 }, { "order": 261, - "name": "juperdev", + "name": "elianisdev", "count": 4, "languages": 1 }, { "order": 262, - "name": "omegatroy", + "name": "juperdev", "count": 4, "languages": 1 }, { "order": 263, - "name": "dannymarperone", + "name": "omegatroy", "count": 4, "languages": 1 }, { "order": 264, - "name": "joshbaez", + "name": "dannymarperone", "count": 4, "languages": 1 }, { "order": 265, - "name": "robmxz", + "name": "joshbaez", "count": 4, "languages": 1 }, { "order": 266, - "name": "dieswae", + "name": "robmxz", "count": 4, "languages": 1 }, { "order": 267, - "name": "mallcca", + "name": "dieswae", "count": 4, "languages": 1 }, { "order": 268, - "name": "dlgai12", + "name": "mallcca", "count": 4, "languages": 1 }, { "order": 269, - "name": "dgrex", + "name": "dlgai12", "count": 4, "languages": 1 }, { "order": 270, - "name": "zerek247", + "name": "dgrex", "count": 4, "languages": 1 }, { "order": 271, - "name": "sarismejiasanchez", + "name": "zerek247", "count": 4, "languages": 1 }, { "order": 272, - "name": "zakkdrte", + "name": "sarismejiasanchez", "count": 4, "languages": 1 }, { "order": 273, - "name": "ramxv", + "name": "zakkdrte", "count": 4, "languages": 1 }, { "order": 274, - "name": "angell4s", + "name": "ramxv", "count": 4, "languages": 1 }, { "order": 275, - "name": "axelprz", + "name": "angell4s", "count": 4, "languages": 1 }, { "order": 276, - "name": "anvildestroyer", + "name": "axelprz", "count": 4, "languages": 1 }, { "order": 277, - "name": "buriticasara", + "name": "anvildestroyer", "count": 4, "languages": 1 }, { "order": 278, - "name": "jorgeadamowicz", + "name": "buriticasara", "count": 4, "languages": 1 }, @@ -2186,3588 +2186,3600 @@ }, { "order": 298, - "name": "diegopc-dev", + "name": "arliumdev", "count": 3, "languages": 2 }, { "order": 299, - "name": "eloitr", + "name": "diegopc-dev", "count": 3, "languages": 2 }, { "order": 300, - "name": "seba9906", + "name": "eloitr", "count": 3, "languages": 2 }, { "order": 301, - "name": "dimasb69", + "name": "seba9906", "count": 3, "languages": 2 }, { "order": 302, - "name": "n-skot", + "name": "dimasb69", "count": 3, "languages": 2 }, { "order": 303, - "name": "barbafebles", + "name": "n-skot", "count": 3, - "languages": 1 + "languages": 2 }, { "order": 304, - "name": "aggranadoss", + "name": "barbafebles", "count": 3, "languages": 1 }, { "order": 305, - "name": "heliercamejo", + "name": "aggranadoss", "count": 3, "languages": 1 }, { "order": 306, - "name": "crisvigas", + "name": "heliercamejo", "count": 3, "languages": 1 }, { "order": 307, - "name": "tomytsa", + "name": "crisvigas", "count": 3, "languages": 1 }, { "order": 308, - "name": "david-quinones", + "name": "tomytsa", "count": 3, "languages": 1 }, { "order": 309, - "name": "swifty0705", + "name": "david-quinones", "count": 3, "languages": 1 }, { "order": 310, - "name": "francofmv", + "name": "swifty0705", "count": 3, "languages": 1 }, { "order": 311, - "name": "freedainew", + "name": "francofmv", "count": 3, "languages": 1 }, { "order": 312, - "name": "volumidev", + "name": "freedainew", "count": 3, "languages": 1 }, { "order": 313, - "name": "oixild", + "name": "volumidev", "count": 3, "languages": 1 }, { "order": 314, - "name": "kingsaul22", + "name": "oixild", "count": 3, "languages": 1 }, { "order": 315, - "name": "kine-jdf", + "name": "kingsaul22", "count": 3, "languages": 1 }, { "order": 316, - "name": "xurxogz", + "name": "kine-jdf", "count": 3, "languages": 1 }, { "order": 317, - "name": "rocallejas", + "name": "xurxogz", "count": 3, "languages": 1 }, { "order": 318, - "name": "guido2288", + "name": "rocallejas", "count": 3, "languages": 1 }, { "order": 319, - "name": "githjuan", + "name": "guido2288", "count": 3, "languages": 1 }, { "order": 320, - "name": "jeyker-dev", + "name": "githjuan", "count": 3, "languages": 1 }, { "order": 321, - "name": "tebaah", + "name": "jeyker-dev", "count": 3, "languages": 1 }, { "order": 322, - "name": "matteozhao98", + "name": "tebaah", "count": 3, "languages": 1 }, { "order": 323, - "name": "atienzar", + "name": "matteozhao98", "count": 3, "languages": 1 }, { "order": 324, - "name": "javiearth", + "name": "atienzar", "count": 3, "languages": 1 }, { "order": 325, - "name": "coshiloco", + "name": "javiearth", "count": 3, "languages": 1 }, { "order": 326, - "name": "sitnestic", + "name": "coshiloco", "count": 3, "languages": 1 }, { "order": 327, - "name": "dannyvera1234", + "name": "sitnestic", "count": 3, "languages": 1 }, { "order": 328, - "name": "samuelarandia", + "name": "dannyvera1234", "count": 3, "languages": 1 }, { "order": 329, - "name": "jaimerocel96", + "name": "samuelarandia", "count": 3, "languages": 1 }, { "order": 330, - "name": "gitperalta", + "name": "jaimerocel96", "count": 3, "languages": 1 }, { "order": 331, - "name": "blfuentes", + "name": "gitperalta", "count": 3, "languages": 1 }, { "order": 332, - "name": "jelozanov", + "name": "blfuentes", "count": 3, "languages": 1 }, { "order": 333, - "name": "matrix-miguel", + "name": "jelozanov", "count": 3, "languages": 1 }, { "order": 334, - "name": "ahinar", + "name": "matrix-miguel", "count": 3, "languages": 1 }, { "order": 335, - "name": "gpinedaoviedo", + "name": "ahinar", "count": 3, "languages": 1 }, { "order": 336, - "name": "migueltfangche", + "name": "gpinedaoviedo", "count": 3, "languages": 1 }, { "order": 337, - "name": "agusbelp", + "name": "migueltfangche", "count": 3, "languages": 1 }, { "order": 338, - "name": "hatorob", + "name": "agusbelp", "count": 3, "languages": 1 }, { "order": 339, - "name": "marcoslombardo", + "name": "hatorob", "count": 3, "languages": 1 }, { "order": 340, - "name": "hectoriglesias", + "name": "marcoslombardo", "count": 3, "languages": 1 }, { "order": 341, - "name": "sebascmb", + "name": "hectoriglesias", "count": 3, "languages": 1 }, { "order": 342, - "name": "uyarra73", + "name": "sebascmb", "count": 3, "languages": 1 }, { "order": 343, - "name": "arbenisacosta", + "name": "uyarra73", "count": 3, "languages": 1 }, { "order": 344, - "name": "davidb313", + "name": "arbenisacosta", "count": 3, "languages": 1 }, { "order": 345, - "name": "douglasdiazr", + "name": "davidb313", "count": 3, "languages": 1 }, { "order": 346, - "name": "asaelz", + "name": "douglasdiazr", "count": 3, "languages": 1 }, { "order": 347, - "name": "fernandog25", + "name": "asaelz", "count": 3, "languages": 1 }, { "order": 348, - "name": "nathaliamf", + "name": "fernandog25", "count": 3, "languages": 1 }, { "order": 349, - "name": "jacarrillob", + "name": "nathaliamf", "count": 3, "languages": 1 }, { "order": 350, - "name": "r4kso", + "name": "jacarrillob", "count": 3, "languages": 1 }, { "order": 351, - "name": "dariorfm", + "name": "r4kso", "count": 3, "languages": 1 }, { "order": 352, - "name": "faga01", + "name": "dariorfm", "count": 3, "languages": 1 }, { "order": 353, - "name": "emaenriquez", + "name": "faga01", "count": 3, "languages": 1 }, { "order": 354, - "name": "carrenoalexander", + "name": "emaenriquez", "count": 3, "languages": 1 }, { "order": 355, - "name": "ramon-almeida", + "name": "carrenoalexander", "count": 3, "languages": 1 }, { "order": 356, - "name": "mizadlogcia", + "name": "ramon-almeida", "count": 3, "languages": 1 }, { "order": 357, - "name": "eliskopun", + "name": "mizadlogcia", "count": 3, "languages": 1 }, { "order": 358, - "name": "bertolini-victor", + "name": "eliskopun", "count": 3, "languages": 1 }, { "order": 359, - "name": "yeam-10", + "name": "bertolini-victor", "count": 3, "languages": 1 }, { "order": 360, - "name": "suescun845", + "name": "yeam-10", "count": 3, "languages": 1 }, { "order": 361, - "name": "jorgegarcia-dev", + "name": "suescun845", "count": 3, "languages": 1 }, { "order": 362, - "name": "elder202", + "name": "jorgegarcia-dev", "count": 3, "languages": 1 }, { "order": 363, - "name": "artdugarte", + "name": "elder202", "count": 3, "languages": 1 }, { "order": 364, - "name": "monikgbar", + "name": "artdugarte", "count": 3, "languages": 1 }, { "order": 365, - "name": "oscargeovannyrincon", + "name": "monikgbar", "count": 3, "languages": 1 }, { "order": 366, - "name": "danielperezrubio", + "name": "oscargeovannyrincon", "count": 3, "languages": 1 }, { "order": 367, - "name": "marcoh2325", + "name": "danielperezrubio", "count": 3, "languages": 1 }, { "order": 368, - "name": "exanderguitar", + "name": "marcoh2325", "count": 3, "languages": 1 }, { "order": 369, - "name": "minn09", + "name": "exanderguitar", "count": 3, "languages": 1 }, { "order": 370, - "name": "nomellamodante", + "name": "minn09", "count": 3, "languages": 1 }, { "order": 371, - "name": "jadraz", + "name": "nomellamodante", "count": 3, "languages": 1 }, { "order": 372, - "name": "mstaz4", + "name": "jadraz", "count": 3, "languages": 1 }, { "order": 373, - "name": "frostbitepy", + "name": "mstaz4", "count": 3, "languages": 1 }, { "order": 374, - "name": "cdbiancotti", + "name": "frostbitepy", "count": 3, "languages": 1 }, { "order": 375, - "name": "betzadev", + "name": "cdbiancotti", "count": 3, "languages": 1 }, { "order": 376, - "name": "tekatoki", + "name": "betzadev", "count": 3, "languages": 1 }, { "order": 377, - "name": "camilo-zuluaga", + "name": "tekatoki", "count": 3, "languages": 1 }, { "order": 378, - "name": "rgeditv1", + "name": "camilo-zuluaga", "count": 3, "languages": 1 }, { "order": 379, - "name": "dandrusco", + "name": "rgeditv1", "count": 3, "languages": 1 }, { "order": 380, - "name": "carlosalberto05", + "name": "dandrusco", "count": 3, "languages": 1 }, { "order": 381, - "name": "guillesese", + "name": "carlosalberto05", "count": 3, "languages": 1 }, { "order": 382, - "name": "javierfiestasbotella", + "name": "guillesese", "count": 3, "languages": 1 }, { "order": 383, - "name": "davstudy", + "name": "javierfiestasbotella", "count": 3, "languages": 1 }, { "order": 384, - "name": "elkin-dev", + "name": "davstudy", "count": 3, "languages": 1 }, { "order": 385, - "name": "zzepu", + "name": "elkin-dev", "count": 3, "languages": 1 }, { "order": 386, - "name": "oscarhub90", + "name": "zzepu", "count": 3, "languages": 1 }, { "order": 387, - "name": "beonzj", + "name": "oscarhub90", "count": 3, "languages": 1 }, { "order": 388, - "name": "14davidnkt", + "name": "beonzj", "count": 3, "languages": 1 }, { "order": 389, - "name": "vandresca", + "name": "14davidnkt", "count": 3, "languages": 1 }, { "order": 390, - "name": "marlonleon2023", + "name": "vandresca", "count": 3, "languages": 1 }, { "order": 391, - "name": "frangarmez21", + "name": "marlonleon2023", "count": 3, "languages": 1 }, { "order": 392, - "name": "dylanb55", + "name": "frangarmez21", "count": 3, "languages": 1 }, { "order": 393, - "name": "juxxon23", + "name": "dylanb55", "count": 3, "languages": 1 }, { "order": 394, - "name": "mellamoomar", + "name": "juxxon23", "count": 3, "languages": 1 }, { "order": 395, - "name": "ikeragi05", + "name": "mellamoomar", "count": 3, "languages": 1 }, { "order": 396, - "name": "dmauricio4", + "name": "ikeragi05", "count": 3, "languages": 1 }, { "order": 397, - "name": "oscar503sv", + "name": "dmauricio4", "count": 3, "languages": 1 }, { "order": 398, - "name": "ivanpelu7", + "name": "oscar503sv", "count": 3, "languages": 1 }, { "order": 399, - "name": "bytecodesky", + "name": "ivanpelu7", "count": 3, "languages": 1 }, { "order": 400, + "name": "bytecodesky", + "count": 3, + "languages": 1 + }, + { + "order": 401, "name": "devvdroid01", "count": 2, "languages": 2 }, { - "order": 401, + "order": 402, "name": "jhonatanmustiolacas", "count": 2, "languages": 2 }, { - "order": 402, + "order": 403, "name": "ismaelmatiz", "count": 2, "languages": 2 }, { - "order": 403, + "order": 404, "name": "sgb004", "count": 2, "languages": 2 }, { - "order": 404, + "order": 405, "name": "tecfer", "count": 2, "languages": 2 }, { - "order": 405, + "order": 406, "name": "lilberick", "count": 2, "languages": 2 }, { - "order": 406, + "order": 407, "name": "camiloforero1997", "count": 2, "languages": 2 }, { - "order": 407, + "order": 408, "name": "lydaf", "count": 2, "languages": 2 }, { - "order": 408, + "order": 409, "name": "carresoft", "count": 2, "languages": 2 }, { - "order": 409, + "order": 410, "name": "chuanmi", "count": 2, "languages": 2 }, { - "order": 410, + "order": 411, "name": "jmofuture", "count": 2, "languages": 2 }, { - "order": 411, + "order": 412, "name": "jlcareglio", "count": 2, "languages": 2 }, { - "order": 412, + "order": 413, "name": "jurgen-alfaro", "count": 2, "languages": 2 }, { - "order": 413, + "order": 414, "name": "felipedev303", "count": 2, "languages": 2 }, { - "order": 414, + "order": 415, "name": "berentolkien", "count": 2, "languages": 2 }, { - "order": 415, + "order": 416, "name": "raul-progr", "count": 2, "languages": 2 }, { - "order": 416, + "order": 417, "name": "jorgesilencio", "count": 2, "languages": 2 }, { - "order": 417, + "order": 418, "name": "lemito66", "count": 2, "languages": 2 }, { - "order": 418, + "order": 419, "name": "fsfigueroa77", "count": 2, "languages": 1 }, { - "order": 419, + "order": 420, "name": "fefestuve", "count": 2, "languages": 1 }, { - "order": 420, + "order": 421, "name": "luis-vb", "count": 2, "languages": 1 }, { - "order": 421, + "order": 422, "name": "juaruibr", "count": 2, "languages": 1 }, { - "order": 422, + "order": 423, "name": "crisdev3", "count": 2, "languages": 1 }, { - "order": 423, + "order": 424, "name": "saracorraless", "count": 2, "languages": 1 }, { - "order": 424, + "order": 425, "name": "gamitocu", "count": 2, "languages": 1 }, { - "order": 425, + "order": 426, "name": "porto1090", "count": 2, "languages": 1 }, { - "order": 426, + "order": 427, "name": "hersac", "count": 2, "languages": 1 }, { - "order": 427, + "order": 428, "name": "yowcloud", "count": 2, "languages": 1 }, { - "order": 428, + "order": 429, "name": "joseesmil04", "count": 2, "languages": 1 }, { - "order": 429, + "order": 430, "name": "adrs1166ma", "count": 2, "languages": 1 }, { - "order": 430, + "order": 431, "name": "isidrojng", "count": 2, "languages": 1 }, { - "order": 431, + "order": 432, "name": "peeanoot", "count": 2, "languages": 1 }, { - "order": 432, + "order": 433, "name": "alextc35", "count": 2, "languages": 1 }, { - "order": 433, + "order": 434, "name": "jcknot", "count": 2, "languages": 1 }, { - "order": 434, + "order": 435, "name": "arhl2023", "count": 2, "languages": 1 }, { - "order": 435, + "order": 436, "name": "natalinacn", "count": 2, "languages": 1 }, { - "order": 436, + "order": 437, "name": "lorenamesa", "count": 2, "languages": 1 }, { - "order": 437, + "order": 438, "name": "jago86", "count": 2, "languages": 1 }, { - "order": 438, + "order": 439, "name": "johannhsdev", "count": 2, "languages": 1 }, { - "order": 439, + "order": 440, "name": "nicolastapiasanz", "count": 2, "languages": 1 }, { - "order": 440, + "order": 441, "name": "freddyasierraj", "count": 2, "languages": 1 }, { - "order": 441, + "order": 442, "name": "gomezcamilo9701", "count": 2, "languages": 1 }, { - "order": 442, + "order": 443, "name": "vicgallego", "count": 2, "languages": 1 }, { - "order": 443, + "order": 444, "name": "peibolstrike", "count": 2, "languages": 1 }, { - "order": 444, + "order": 445, "name": "cristiansystem", "count": 2, "languages": 1 }, { - "order": 445, + "order": 446, "name": "dararod", "count": 2, "languages": 1 }, { - "order": 446, + "order": 447, "name": "waldid32", "count": 2, "languages": 1 }, { - "order": 447, + "order": 448, "name": "roilhi", "count": 2, "languages": 1 }, { - "order": 448, + "order": 449, "name": "diegokarabin", "count": 2, "languages": 1 }, { - "order": 449, + "order": 450, "name": "reanthonyh", "count": 2, "languages": 1 }, { - "order": 450, + "order": 451, "name": "valeriatorrealba", "count": 2, "languages": 1 }, { - "order": 451, + "order": 452, "name": "nxl22", "count": 2, "languages": 1 }, { - "order": 452, + "order": 453, "name": "ovjohn", "count": 2, "languages": 1 }, { - "order": 453, + "order": 454, "name": "aleoe01", "count": 2, "languages": 1 }, { - "order": 454, + "order": 455, "name": "soldochris", "count": 2, "languages": 1 }, { - "order": 455, + "order": 456, "name": "murquisdev", "count": 2, "languages": 1 }, { - "order": 456, + "order": 457, "name": "wesborland-github", "count": 2, "languages": 1 }, { - "order": 457, + "order": 458, "name": "farthaz", "count": 2, "languages": 1 }, { - "order": 458, + "order": 459, "name": "tomasmarquez81", "count": 2, "languages": 1 }, { - "order": 459, + "order": 460, "name": "cesarocbu", "count": 2, "languages": 1 }, { - "order": 460, + "order": 461, "name": "glaboryp", "count": 2, "languages": 1 }, { - "order": 461, + "order": 462, "name": "doblea74", "count": 2, "languages": 1 }, { - "order": 462, + "order": 463, "name": "misterdan100", "count": 2, "languages": 1 }, { - "order": 463, + "order": 464, "name": "rikar2o", "count": 2, "languages": 1 }, { - "order": 464, + "order": 465, "name": "angelvelasco1", "count": 2, "languages": 1 }, { - "order": 465, + "order": 466, "name": "jhonf1992", "count": 2, "languages": 1 }, { - "order": 466, + "order": 467, "name": "jaimemunozdev", "count": 2, "languages": 1 }, { - "order": 467, + "order": 468, "name": "jeisonredondo", "count": 2, "languages": 1 }, { - "order": 468, + "order": 469, "name": "leonardo291024", "count": 2, "languages": 1 }, { - "order": 469, - "name": "arliumdev", + "order": 470, + "name": "miguelrejon96", "count": 2, "languages": 1 }, { - "order": 470, + "order": 471, "name": "matiasfarfan89", "count": 2, "languages": 1 }, { - "order": 471, + "order": 472, "name": "haryblanco20", "count": 2, "languages": 1 }, { - "order": 472, + "order": 473, "name": "memogv", "count": 2, "languages": 1 }, { - "order": 473, + "order": 474, "name": "akzorla", "count": 2, "languages": 1 }, { - "order": 474, + "order": 475, "name": "cpcarlosprieto", "count": 2, "languages": 1 }, { - "order": 475, + "order": 476, "name": "rolo27s", "count": 2, "languages": 1 }, { - "order": 476, + "order": 477, "name": "lmedina96", "count": 2, "languages": 1 }, { - "order": 477, + "order": 478, "name": "carlosmarte23", "count": 2, "languages": 1 }, { - "order": 478, + "order": 479, "name": "santiagodc8", "count": 2, "languages": 1 }, { - "order": 479, + "order": 480, "name": "adogdev", "count": 2, "languages": 1 }, { - "order": 480, + "order": 481, "name": "gmigues", "count": 2, "languages": 1 }, { - "order": 481, + "order": 482, "name": "alejandro-mantilla", "count": 2, "languages": 1 }, { - "order": 482, + "order": 483, "name": "pedrojog", "count": 2, "languages": 1 }, { - "order": 483, + "order": 484, "name": "dans182", "count": 2, "languages": 1 }, { - "order": 484, + "order": 485, "name": "aegpgrafologo", "count": 2, "languages": 1 }, { - "order": 485, + "order": 486, "name": "kcx46", "count": 2, "languages": 1 }, { - "order": 486, + "order": 487, "name": "ziellucio01", "count": 2, "languages": 1 }, { - "order": 487, + "order": 488, "name": "e-techgod", "count": 2, "languages": 1 }, { - "order": 488, + "order": 489, "name": "alejandrovelasquezr", "count": 2, "languages": 1 }, { - "order": 489, + "order": 490, "name": "eriickm", "count": 2, "languages": 1 }, { - "order": 490, + "order": 491, "name": "s384", "count": 2, "languages": 1 }, { - "order": 491, + "order": 492, "name": "jsacristanbeltri", "count": 2, "languages": 1 }, { - "order": 492, + "order": 493, "name": "vesubius", "count": 2, "languages": 1 }, { - "order": 493, + "order": 494, "name": "gregfc95", "count": 2, "languages": 1 }, { - "order": 494, + "order": 495, "name": "cipollalucas", "count": 2, "languages": 1 }, { - "order": 495, + "order": 496, "name": "franz-arzapalo", "count": 2, "languages": 1 }, { - "order": 496, + "order": 497, "name": "baauus", "count": 2, "languages": 1 }, { - "order": 497, + "order": 498, "name": "dariangl", "count": 2, "languages": 1 }, { - "order": 498, + "order": 499, "name": "anblackter", "count": 2, "languages": 1 }, { - "order": 499, + "order": 500, "name": "julind0", "count": 2, "languages": 1 }, { - "order": 500, + "order": 501, "name": "christiancoc", "count": 2, "languages": 1 }, { - "order": 501, + "order": 502, "name": "tic4", "count": 2, "languages": 1 }, { - "order": 502, + "order": 503, "name": "victore16", "count": 2, "languages": 1 }, { - "order": 503, + "order": 504, "name": "inf015", "count": 2, "languages": 1 }, { - "order": 504, + "order": 505, "name": "nevaito", "count": 2, "languages": 1 }, { - "order": 505, + "order": 506, "name": "csaraugusto2", "count": 2, "languages": 1 }, { - "order": 506, + "order": 507, "name": "pakomor", "count": 2, "languages": 1 }, { - "order": 507, + "order": 508, "name": "aboredllama", "count": 2, "languages": 1 }, { - "order": 508, + "order": 509, "name": "freyfonseca", "count": 2, "languages": 1 }, { - "order": 509, + "order": 510, "name": "dokeys28", "count": 2, "languages": 1 }, { - "order": 510, + "order": 511, "name": "soydaviddev", "count": 2, "languages": 1 }, { - "order": 511, + "order": 512, "name": "lauradiazm29", "count": 2, "languages": 1 }, { - "order": 512, + "order": 513, "name": "fernandoatello", "count": 2, "languages": 1 }, { - "order": 513, + "order": 514, "name": "miguelberrio0810", "count": 2, "languages": 1 }, { - "order": 514, + "order": 515, "name": "dota43ver", "count": 2, "languages": 1 }, { - "order": 515, + "order": 516, "name": "zalazarmartin", "count": 2, "languages": 1 }, { - "order": 516, + "order": 517, "name": "nandaalf", "count": 2, "languages": 1 }, { - "order": 517, + "order": 518, "name": "lordzzz777", "count": 2, "languages": 1 }, { - "order": 518, + "order": 519, "name": "rrcoder", "count": 2, "languages": 1 }, { - "order": 519, + "order": 520, "name": "cyberdidac", "count": 2, "languages": 1 }, { - "order": 520, + "order": 521, "name": "vecinacoo", "count": 2, "languages": 1 }, { - "order": 521, + "order": 522, "name": "ssanjua", "count": 2, "languages": 1 }, { - "order": 522, + "order": 523, "name": "zonnen69", "count": 2, "languages": 1 }, { - "order": 523, + "order": 524, "name": "sdm29gh", "count": 2, "languages": 1 }, { - "order": 524, + "order": 525, "name": "hawkbott", "count": 2, "languages": 1 }, { - "order": 525, + "order": 526, "name": "tiaguiito3", "count": 2, "languages": 1 }, { - "order": 526, + "order": 527, "name": "elmarqueli", "count": 2, "languages": 1 }, { - "order": 527, + "order": 528, "name": "poetry0354", "count": 2, "languages": 1 }, { - "order": 528, + "order": 529, "name": "reaien", "count": 2, "languages": 1 }, { - "order": 529, + "order": 530, "name": "rikar20", "count": 2, "languages": 1 }, { - "order": 530, + "order": 531, "name": "alejomazov", "count": 2, "languages": 1 }, { - "order": 531, + "order": 532, "name": "raulallue", "count": 2, "languages": 1 }, { - "order": 532, + "order": 533, "name": "aserranot", "count": 2, "languages": 1 }, { - "order": 533, + "order": 534, "name": "luciarf", "count": 2, "languages": 1 }, { - "order": 534, + "order": 535, "name": "frannmv", "count": 2, "languages": 1 }, { - "order": 535, + "order": 536, "name": "jmichael39", "count": 2, "languages": 1 }, { - "order": 536, + "order": 537, "name": "orzefox", "count": 1, "languages": 1 }, { - "order": 537, + "order": 538, "name": "acirdeveloper", "count": 1, "languages": 1 }, { - "order": 538, + "order": 539, "name": "albertovf", "count": 1, "languages": 1 }, { - "order": 539, + "order": 540, "name": "sergiopq", "count": 1, "languages": 1 }, { - "order": 540, + "order": 541, "name": "nicoloboo02", "count": 1, "languages": 1 }, { - "order": 541, + "order": 542, "name": "angeloro", "count": 1, "languages": 1 }, { - "order": 542, + "order": 543, "name": "jony-english22", "count": 1, "languages": 1 }, { - "order": 543, + "order": 544, "name": "righelch", "count": 1, "languages": 1 }, { - "order": 544, + "order": 545, "name": "deathbat00", "count": 1, "languages": 1 }, { - "order": 545, + "order": 546, "name": "sve-nnn", "count": 1, "languages": 1 }, { - "order": 546, + "order": 547, "name": "edgarmedranoa", "count": 1, "languages": 1 }, { - "order": 547, + "order": 548, "name": "emiliordev", "count": 1, "languages": 1 }, { - "order": 548, + "order": 549, "name": "wijimenezz", "count": 1, "languages": 1 }, { - "order": 549, + "order": 550, "name": "vickalc", "count": 1, "languages": 1 }, { - "order": 550, + "order": 551, "name": "rusian69", "count": 1, "languages": 1 }, { - "order": 551, + "order": 552, "name": "rafapg93", "count": 1, "languages": 1 }, { - "order": 552, + "order": 553, "name": "juanchernandezdev", "count": 1, "languages": 1 }, { - "order": 553, + "order": 554, "name": "riukac", "count": 1, "languages": 1 }, { - "order": 554, + "order": 555, "name": "ouendinga", "count": 1, "languages": 1 }, { - "order": 555, + "order": 556, "name": "franespina", "count": 1, "languages": 1 }, { - "order": 556, + "order": 557, "name": "davidbastosg", "count": 1, "languages": 1 }, { - "order": 557, + "order": 558, "name": "torvicv", "count": 1, "languages": 1 }, { - "order": 558, + "order": 559, "name": "dgquintero", "count": 1, "languages": 1 }, { - "order": 559, + "order": 560, "name": "juampaweb", "count": 1, "languages": 1 }, { - "order": 560, + "order": 561, "name": "girngoma", "count": 1, "languages": 1 }, { - "order": 561, + "order": 562, "name": "javosss", "count": 1, "languages": 1 }, { - "order": 562, + "order": 563, "name": "derobpe", "count": 1, "languages": 1 }, { - "order": 563, + "order": 564, "name": "alinares94", "count": 1, "languages": 1 }, { - "order": 564, + "order": 565, "name": "jferchotorres", "count": 1, "languages": 1 }, { - "order": 565, + "order": 566, "name": "lordzzz", "count": 1, "languages": 1 }, { - "order": 566, + "order": 567, "name": "713avo", "count": 1, "languages": 1 }, { - "order": 567, + "order": 568, "name": "micendev", "count": 1, "languages": 1 }, { - "order": 568, + "order": 569, "name": "cuervo23alpha", "count": 1, "languages": 1 }, { - "order": 569, + "order": 570, "name": "h4cker54n", "count": 1, "languages": 1 }, { - "order": 570, + "order": 571, "name": "ingjavierpinilla", "count": 1, "languages": 1 }, { - "order": 571, + "order": 572, "name": "angel-agis", "count": 1, "languages": 1 }, { - "order": 572, + "order": 573, "name": "joancharles07", "count": 1, "languages": 1 }, { - "order": 573, + "order": 574, "name": "batmarc91", "count": 1, "languages": 1 }, { - "order": 574, + "order": 575, "name": "mauricioobgo", "count": 1, "languages": 1 }, { - "order": 575, + "order": 576, "name": "emersonxinay", "count": 1, "languages": 1 }, { - "order": 576, + "order": 577, "name": "carlosmares", "count": 1, "languages": 1 }, { - "order": 577, + "order": 578, "name": "cub-tor", "count": 1, "languages": 1 }, { - "order": 578, + "order": 579, "name": "nightmare79", "count": 1, "languages": 1 }, { - "order": 579, + "order": 580, "name": "vikernes27666", "count": 1, "languages": 1 }, { - "order": 580, + "order": 581, "name": "josephinoo", "count": 1, "languages": 1 }, { - "order": 581, + "order": 582, "name": "anitandil", "count": 1, "languages": 1 }, { - "order": 582, + "order": 583, "name": "francomyburg", "count": 1, "languages": 1 }, { - "order": 583, + "order": 584, "name": "evilpodato04", "count": 1, "languages": 1 }, { - "order": 584, + "order": 585, "name": "miguel2rar", "count": 1, "languages": 1 }, { - "order": 585, + "order": 586, "name": "agustinfccll", "count": 1, "languages": 1 }, { - "order": 586, + "order": 587, "name": "neicervb", "count": 1, "languages": 1 }, { - "order": 587, + "order": 588, "name": "gabriel-dangelo", "count": 1, "languages": 1 }, { - "order": 588, + "order": 589, "name": "miquelrr", "count": 1, "languages": 1 }, { - "order": 589, + "order": 590, "name": "juancamilofvx", "count": 1, "languages": 1 }, { - "order": 590, + "order": 591, "name": "c-blskv", "count": 1, "languages": 1 }, { - "order": 591, + "order": 592, "name": "emaerniquez", "count": 1, "languages": 1 }, { - "order": 592, + "order": 593, "name": "leonardo-henao", "count": 1, "languages": 1 }, { - "order": 593, + "order": 594, "name": "bryanalzate007", "count": 1, "languages": 1 }, { - "order": 594, + "order": 595, "name": "willypaz243", "count": 1, "languages": 1 }, { - "order": 595, + "order": 596, "name": "luism95", "count": 1, "languages": 1 }, { - "order": 596, + "order": 597, "name": "santyjl44", "count": 1, "languages": 1 }, { - "order": 597, + "order": 598, "name": "qwik-zghieb", "count": 1, "languages": 1 }, { - "order": 598, + "order": 599, "name": "gonzalinuz18", "count": 1, "languages": 1 }, { - "order": 599, + "order": 600, "name": "omarroman29", "count": 1, "languages": 1 }, { - "order": 600, + "order": 601, "name": "theposi", "count": 1, "languages": 1 }, { - "order": 601, + "order": 602, "name": "vinyoles", "count": 1, "languages": 1 }, { - "order": 602, + "order": 603, "name": "sergio-strazzacappa", "count": 1, "languages": 1 }, { - "order": 603, + "order": 604, "name": "arathhh8", "count": 1, "languages": 1 }, { - "order": 604, + "order": 605, "name": "paluzz", "count": 1, "languages": 1 }, { - "order": 605, + "order": 606, "name": "daniel-cas", "count": 1, "languages": 1 }, { - "order": 606, + "order": 607, "name": "luisalberto22", "count": 1, "languages": 1 }, { - "order": 607, + "order": 608, "name": "mbmaeso", "count": 1, "languages": 1 }, { - "order": 608, + "order": 609, "name": "deiiviitdev", "count": 1, "languages": 1 }, { - "order": 609, + "order": 610, "name": "borjadelgadodev", "count": 1, "languages": 1 }, { - "order": 610, + "order": 611, "name": "jaennova", "count": 1, "languages": 1 }, { - "order": 611, + "order": 612, "name": "francisleble", "count": 1, "languages": 1 }, { - "order": 612, + "order": 613, "name": "jhordanluyo", "count": 1, "languages": 1 }, { - "order": 613, + "order": 614, "name": "acirdevelper", "count": 1, "languages": 1 }, { - "order": 614, + "order": 615, "name": "davidcv-dev", "count": 1, "languages": 1 }, { - "order": 615, + "order": 616, "name": "alvarominarro", "count": 1, "languages": 1 }, { - "order": 616, + "order": 617, "name": "frealexandro", "count": 1, "languages": 1 }, { - "order": 617, + "order": 618, "name": "braiso-22", "count": 1, "languages": 1 }, { - "order": 618, + "order": 619, "name": "armm77", "count": 1, "languages": 1 }, { - "order": 619, + "order": 620, "name": "kevin05m", "count": 1, "languages": 1 }, { - "order": 620, + "order": 621, "name": "fede6299", "count": 1, "languages": 1 }, { - "order": 621, + "order": 622, "name": "pablo-lnx", "count": 1, "languages": 1 }, { - "order": 622, + "order": 623, "name": "darkohokage", "count": 1, "languages": 1 }, { - "order": 623, + "order": 624, "name": "diegomm27", "count": 1, "languages": 1 }, { - "order": 624, + "order": 625, "name": "cristian-encalada", "count": 1, "languages": 1 }, { - "order": 625, + "order": 626, "name": "alefine", "count": 1, "languages": 1 }, { - "order": 626, + "order": 627, "name": "zyn7e", "count": 1, "languages": 1 }, { - "order": 627, + "order": 628, "name": "antoniojzp86", "count": 1, "languages": 1 }, { - "order": 628, + "order": 629, "name": "dovinhoyos", "count": 1, "languages": 1 }, { - "order": 629, + "order": 630, "name": "rumacar05", "count": 1, "languages": 1 }, { - "order": 630, + "order": 631, "name": "gianellannie", "count": 1, "languages": 1 }, { - "order": 631, + "order": 632, "name": "deathbato", "count": 1, "languages": 1 }, { - "order": 632, + "order": 633, "name": "cristobalbelcor", "count": 1, "languages": 1 }, { - "order": 633, + "order": 634, "name": "kgrc05", "count": 1, "languages": 1 }, { - "order": 634, + "order": 635, "name": "cristianmr87", "count": 1, "languages": 1 }, { - "order": 635, + "order": 636, "name": "lizandev", "count": 1, "languages": 1 }, { - "order": 636, + "order": 637, "name": "det3992", "count": 1, "languages": 1 }, { - "order": 637, + "order": 638, "name": "lewisoneil", "count": 1, "languages": 1 }, { - "order": 638, + "order": 639, "name": "santiagopereiraviroga", "count": 1, "languages": 1 }, { - "order": 639, + "order": 640, "name": "v1k770r", "count": 1, "languages": 1 }, { - "order": 640, + "order": 641, "name": "durwian", "count": 1, "languages": 1 }, { - "order": 641, + "order": 642, "name": "adriangonzalezroble", "count": 1, "languages": 1 }, { - "order": 642, + "order": 643, "name": "mathiur", "count": 1, "languages": 1 }, { - "order": 643, + "order": 644, "name": "bycris13", "count": 1, "languages": 1 }, { - "order": 644, + "order": 645, "name": "algeloro", "count": 1, "languages": 1 }, { - "order": 645, + "order": 646, "name": "chalaito88", "count": 1, "languages": 1 }, { - "order": 646, + "order": 647, "name": "javiir", "count": 1, "languages": 1 }, { - "order": 647, + "order": 648, "name": "chrystiancalderon", "count": 1, "languages": 1 }, { - "order": 648, + "order": 649, "name": "pguillo", "count": 1, "languages": 1 }, { - "order": 649, + "order": 650, "name": "serg_pq", "count": 1, "languages": 1 }, { - "order": 650, + "order": 651, "name": "diegopardomontero", "count": 1, "languages": 1 }, { - "order": 651, + "order": 652, "name": "ivanserran", "count": 1, "languages": 1 }, { - "order": 652, + "order": 653, "name": "fredylopez01", "count": 1, "languages": 1 }, { - "order": 653, + "order": 654, "name": "angeldevsarrollo", "count": 1, "languages": 1 }, { - "order": 654, + "order": 655, "name": "sanuka78", "count": 1, "languages": 1 }, { - "order": 655, + "order": 656, "name": "adriansaint07", "count": 1, "languages": 1 }, { - "order": 656, + "order": 657, "name": "jony_english22", "count": 1, "languages": 1 }, { - "order": 657, + "order": 658, "name": "alvaropg15", "count": 1, "languages": 1 }, { - "order": 658, + "order": 659, "name": "frankmon03", "count": 1, "languages": 1 }, { - "order": 659, + "order": 660, "name": "xhaloidx", "count": 1, "languages": 1 }, { - "order": 660, + "order": 661, "name": "reneguzman7", "count": 1, "languages": 1 }, { - "order": 661, + "order": 662, "name": "jaquelinetorres", "count": 1, "languages": 1 }, { - "order": 662, + "order": 663, "name": "alexeigio", "count": 1, "languages": 1 }, { - "order": 663, + "order": 664, "name": "albert-29", "count": 1, "languages": 1 }, { - "order": 664, + "order": 665, "name": "iguerrerov", "count": 1, "languages": 1 }, { - "order": 665, + "order": 666, "name": "pvigo10", "count": 1, "languages": 1 }, { - "order": 666, + "order": 667, "name": "jrgim", "count": 1, "languages": 1 }, { - "order": 667, + "order": 668, "name": "marcosjarrin", "count": 1, "languages": 1 }, { - "order": 668, + "order": 669, "name": "jhonnfl", "count": 1, "languages": 1 }, { - "order": 669, + "order": 670, "name": "trollface77", "count": 1, "languages": 1 }, { - "order": 670, + "order": 671, "name": "brunom-93", "count": 1, "languages": 1 }, { - "order": 671, + "order": 672, "name": "alejandroruiz23", "count": 1, "languages": 1 }, { - "order": 672, + "order": 673, "name": "jaimesoftdev", "count": 1, "languages": 1 }, { - "order": 673, + "order": 674, "name": "edm1ya", "count": 1, "languages": 1 }, { - "order": 674, + "order": 675, "name": "jarzatedev", "count": 1, "languages": 1 }, { - "order": 675, + "order": 676, "name": "sandrarg85", "count": 1, "languages": 1 }, { - "order": 676, + "order": 677, "name": "rootqui", "count": 1, "languages": 1 }, { - "order": 677, + "order": 678, "name": "astriebeck", "count": 1, "languages": 1 }, { - "order": 678, + "order": 679, "name": "marqitos", "count": 1, "languages": 1 }, { - "order": 679, + "order": 680, "name": "lobogeekmx", "count": 1, "languages": 1 }, { - "order": 680, + "order": 681, "name": "marvinagui", "count": 1, "languages": 1 }, { - "order": 681, + "order": 682, "name": "jatomas", "count": 1, "languages": 1 }, { - "order": 682, + "order": 683, "name": "nunezlagos", "count": 1, "languages": 1 }, { - "order": 683, + "order": 684, "name": "ledyam", "count": 1, "languages": 1 }, { - "order": 684, + "order": 685, "name": "miguelgargallo", "count": 1, "languages": 1 }, { - "order": 685, + "order": 686, "name": "ishimaku", "count": 1, "languages": 1 }, { - "order": 686, + "order": 687, "name": "afacorroloscos", "count": 1, "languages": 1 }, { - "order": 687, + "order": 688, "name": "chrisfelixgil", "count": 1, "languages": 1 }, { - "order": 688, + "order": 689, "name": "franpua", "count": 1, "languages": 1 }, { - "order": 689, + "order": 690, "name": "sirvega83", "count": 1, "languages": 1 }, { - "order": 690, + "order": 691, "name": "corvo-99", "count": 1, "languages": 1 }, { - "order": 691, + "order": 692, "name": "franciscokarriere", "count": 1, "languages": 1 }, { - "order": 692, + "order": 693, "name": "pipeyz21", "count": 1, "languages": 1 }, { - "order": 693, + "order": 694, "name": "luisgarm", "count": 1, "languages": 1 }, { - "order": 694, + "order": 695, "name": "vorosdev", "count": 1, "languages": 1 }, { - "order": 695, + "order": 696, "name": "santiagomac", "count": 1, "languages": 1 }, { - "order": 696, + "order": 697, "name": "ca2puntosv", "count": 1, "languages": 1 }, { - "order": 697, + "order": 698, "name": "cibacoa", "count": 1, "languages": 1 }, { - "order": 698, + "order": 699, "name": "gizelads", "count": 1, "languages": 1 }, { - "order": 699, + "order": 700, "name": "axelwestman", "count": 1, "languages": 1 }, { - "order": 700, + "order": 701, "name": "coletonosh", "count": 1, "languages": 1 }, { - "order": 701, + "order": 702, "name": "manuhssj", "count": 1, "languages": 1 }, { - "order": 702, + "order": 703, "name": "manugonzalito", "count": 1, "languages": 1 }, { - "order": 703, + "order": 704, "name": "seigigim", "count": 1, "languages": 1 }, { - "order": 704, + "order": 705, "name": "marcosapodaca", "count": 1, "languages": 1 }, { - "order": 705, + "order": 706, "name": "serg032", "count": 1, "languages": 1 }, { - "order": 706, + "order": 707, "name": "is2095", "count": 1, "languages": 1 }, { - "order": 707, + "order": 708, "name": "lucc4sz", "count": 1, "languages": 1 }, { - "order": 708, + "order": 709, "name": "mauricioyair", "count": 1, "languages": 1 }, { - "order": 709, + "order": 710, "name": "jancalos", "count": 1, "languages": 1 }, { - "order": 710, + "order": 711, "name": "palons29", "count": 1, "languages": 1 }, { - "order": 711, + "order": 712, "name": "deimoshall", "count": 1, "languages": 1 }, { - "order": 712, + "order": 713, "name": "mickysoft", "count": 1, "languages": 1 }, { - "order": 713, + "order": 714, "name": "serg-pq", "count": 1, "languages": 1 }, { - "order": 714, + "order": 715, "name": "lara-vel-dev", "count": 1, "languages": 1 }, { - "order": 715, + "order": 716, "name": "alexisbarradev", "count": 1, "languages": 1 }, { - "order": 716, + "order": 717, "name": "tartabullroberto", "count": 1, "languages": 1 }, { - "order": 717, + "order": 718, "name": "kelvincb", "count": 1, "languages": 1 }, { - "order": 718, + "order": 719, "name": "augustosdev", "count": 1, "languages": 1 }, { - "order": 719, + "order": 720, "name": "van-02", "count": 1, "languages": 1 }, { - "order": 720, + "order": 721, "name": "x3mboy", "count": 1, "languages": 1 }, { - "order": 721, + "order": 722, "name": "jandresalvar", "count": 1, "languages": 1 }, { - "order": 722, + "order": 723, "name": "angelcruzg23", "count": 1, "languages": 1 }, { - "order": 723, + "order": 724, "name": "kevinramirez28", "count": 1, "languages": 1 }, { - "order": 724, + "order": 725, "name": "alemar16", "count": 1, "languages": 1 }, { - "order": 725, + "order": 726, "name": "joseperesini", "count": 1, "languages": 1 }, { - "order": 726, + "order": 727, "name": "denisortega", "count": 1, "languages": 1 }, { - "order": 727, + "order": 728, "name": "flarien", "count": 1, "languages": 1 }, { - "order": 728, + "order": 729, "name": "jpiacaruso", "count": 1, "languages": 1 }, { - "order": 729, + "order": 730, "name": "kronomio", "count": 1, "languages": 1 }, { - "order": 730, + "order": 731, "name": "abengl", "count": 1, "languages": 1 }, { - "order": 731, + "order": 732, "name": "edgonzz", "count": 1, "languages": 1 }, { - "order": 732, + "order": 733, "name": "augustbs", "count": 1, "languages": 1 }, { - "order": 733, + "order": 734, "name": "gerespinosa", "count": 1, "languages": 1 }, { - "order": 734, + "order": 735, "name": "walkerlyna", "count": 1, "languages": 1 }, { - "order": 735, + "order": 736, "name": "lytsar", "count": 1, "languages": 1 }, { - "order": 736, + "order": 737, "name": "rodmiggithub", "count": 1, "languages": 1 }, { - "order": 737, + "order": 738, "name": "gc796", "count": 1, "languages": 1 }, { - "order": 738, + "order": 739, "name": "gustavoguerrero", "count": 1, "languages": 1 }, { - "order": 739, + "order": 740, "name": "maximotoro", "count": 1, "languages": 1 }, { - "order": 740, + "order": 741, "name": "xnomada", "count": 1, "languages": 1 }, { - "order": 741, + "order": 742, "name": "francescoalterio", "count": 1, "languages": 1 }, { - "order": 742, + "order": 743, "name": "codejoss", "count": 1, "languages": 1 }, { - "order": 743, + "order": 744, "name": "alexis0717", "count": 1, "languages": 1 }, { - "order": 744, + "order": 745, "name": "ronnieruuz", "count": 1, "languages": 1 }, { - "order": 745, + "order": 746, "name": "isnatthy", "count": 1, "languages": 1 }, { - "order": 746, + "order": 747, "name": "datrujillog", "count": 1, "languages": 1 }, { - "order": 747, + "order": 748, "name": "aleclto7", "count": 1, "languages": 1 }, { - "order": 748, + "order": 749, "name": "s9code", "count": 1, "languages": 1 }, { - "order": 749, + "order": 750, "name": "pierre-ol", "count": 1, "languages": 1 }, { - "order": 750, + "order": 751, "name": "peticas", "count": 1, "languages": 1 }, { - "order": 751, + "order": 752, "name": "saintsluis", "count": 1, "languages": 1 }, { - "order": 752, + "order": 753, "name": "quirogapau", "count": 1, "languages": 1 }, { - "order": 753, + "order": 754, "name": "dmhenaopa", "count": 1, "languages": 1 }, { - "order": 754, + "order": 755, "name": "pointfs", "count": 1, "languages": 1 }, { - "order": 755, + "order": 756, "name": "lfam200", "count": 1, "languages": 1 }, { - "order": 756, + "order": 757, "name": "lucianogriffa", "count": 1, "languages": 1 }, { - "order": 757, + "order": 758, "name": "alexxawada", "count": 1, "languages": 1 }, { - "order": 758, + "order": 759, "name": "oscarletelier", "count": 1, "languages": 1 }, { - "order": 759, + "order": 760, "name": "johnniew81", "count": 1, "languages": 1 }, { - "order": 760, + "order": 761, "name": "edperez07", "count": 1, "languages": 1 }, { - "order": 761, + "order": 762, "name": "lfwzk", "count": 1, "languages": 1 }, { - "order": 762, + "order": 763, "name": "fernandofl", "count": 1, "languages": 1 }, { - "order": 763, + "order": 764, "name": "juanpablo-a", "count": 1, "languages": 1 }, { - "order": 764, + "order": 765, "name": "vmga09", "count": 1, "languages": 1 }, { - "order": 765, + "order": 766, "name": "imista", "count": 1, "languages": 1 }, { - "order": 766, + "order": 767, "name": "kocho03", "count": 1, "languages": 1 }, { - "order": 767, + "order": 768, "name": "abraham9804", "count": 1, "languages": 1 }, { - "order": 768, + "order": 769, "name": "afl0r3s", "count": 1, "languages": 1 }, { - "order": 769, + "order": 770, "name": "javieradev", "count": 1, "languages": 1 }, { - "order": 770, + "order": 771, "name": "mvillegas18", "count": 1, "languages": 1 }, { - "order": 771, + "order": 772, "name": "sixtodev", "count": 1, "languages": 1 }, { - "order": 772, + "order": 773, "name": "jovany-java", "count": 1, "languages": 1 }, { - "order": 773, + "order": 774, "name": "cliverjimny123", "count": 1, "languages": 1 }, { - "order": 774, + "order": 775, "name": "madelefonb", "count": 1, "languages": 1 }, { - "order": 775, + "order": 776, "name": "siuldev", "count": 1, "languages": 1 }, { - "order": 776, + "order": 777, "name": "jacobrwx", "count": 1, "languages": 1 }, { - "order": 777, + "order": 778, "name": "mhrosariom", "count": 1, "languages": 1 }, { - "order": 778, + "order": 779, "name": "rojasvargas", "count": 1, "languages": 1 }, { - "order": 779, + "order": 780, "name": "yessikamichelle", "count": 1, "languages": 1 }, { - "order": 780, + "order": 781, "name": "sergioab7", "count": 1, "languages": 1 }, { - "order": 781, + "order": 782, "name": "sejotaz", "count": 1, "languages": 1 }, { - "order": 782, + "order": 783, "name": "nnunezmedina", "count": 1, "languages": 1 }, { - "order": 783, + "order": 784, "name": "diegoxxd", "count": 1, "languages": 1 }, { - "order": 784, + "order": 785, "name": "jd-gm", "count": 1, "languages": 1 }, { - "order": 785, + "order": 786, "name": "nozodev", "count": 1, "languages": 1 }, { - "order": 786, + "order": 787, "name": "ercky1980", "count": 1, "languages": 1 }, { - "order": 787, + "order": 788, "name": "santaravena", "count": 1, "languages": 1 }, { - "order": 788, + "order": 789, "name": "francomoreira", "count": 1, "languages": 1 }, { - "order": 789, + "order": 790, "name": "royhuamanavila", "count": 1, "languages": 1 }, { - "order": 790, + "order": 791, "name": "danielbustos342", "count": 1, "languages": 1 }, { - "order": 791, + "order": 792, "name": "kenzambrano", "count": 1, "languages": 1 }, { - "order": 792, + "order": 793, "name": "romanocoder", "count": 1, "languages": 1 }, { - "order": 793, + "order": 794, "name": "jsruedatorres", "count": 1, "languages": 1 }, { - "order": 794, + "order": 795, "name": "miguelsarm", "count": 1, "languages": 1 }, { - "order": 795, + "order": 796, "name": "frcan89", "count": 1, "languages": 1 }, { - "order": 796, + "order": 797, "name": "alvarommedia", "count": 1, "languages": 1 }, { - "order": 797, + "order": 798, "name": "patricioguerra30", "count": 1, "languages": 1 }, { - "order": 798, + "order": 799, "name": "mdemena", "count": 1, "languages": 1 }, { - "order": 799, + "order": 800, "name": "marcos0803", "count": 1, "languages": 1 }, { - "order": 800, + "order": 801, "name": "vmarialuzm", "count": 1, "languages": 1 }, { - "order": 801, + "order": 802, "name": "acobo3", "count": 1, "languages": 1 }, { - "order": 802, + "order": 803, "name": "sofiamfernandez", "count": 1, "languages": 1 }, { - "order": 803, + "order": 804, "name": "cd1974", "count": 1, "languages": 1 }, { - "order": 804, + "order": 805, "name": "vickalck", "count": 1, "languages": 1 }, { - "order": 805, + "order": 806, "name": "chema-dw", "count": 1, "languages": 1 }, { - "order": 806, + "order": 807, "name": "javirr4", "count": 1, "languages": 1 }, { - "order": 807, + "order": 808, "name": "e-xtian", "count": 1, "languages": 1 }, { - "order": 808, + "order": 809, "name": "masenace", "count": 1, "languages": 1 }, { - "order": 809, + "order": 810, "name": "julioorozco05", "count": 1, "languages": 1 }, { - "order": 810, + "order": 811, "name": "g4nd4lf", "count": 1, "languages": 1 }, { - "order": 811, + "order": 812, "name": "cris10026", "count": 1, "languages": 1 }, { - "order": 812, + "order": 813, "name": "johao23", "count": 1, "languages": 1 }, { - "order": 813, + "order": 814, "name": "latorredev", "count": 1, "languages": 1 }, { - "order": 814, + "order": 815, "name": "anexo01", "count": 1, "languages": 1 }, { - "order": 815, + "order": 816, "name": "wilsonbarrera", "count": 1, "languages": 1 }, { - "order": 816, + "order": 817, "name": "diegogomezcor4", "count": 1, "languages": 1 }, { - "order": 817, + "order": 818, "name": "charly024", "count": 1, "languages": 1 }, { - "order": 818, + "order": 819, "name": "miguelmancebo", "count": 1, "languages": 1 }, { - "order": 819, + "order": 820, "name": "geridage", "count": 1, "languages": 1 }, { - "order": 820, + "order": 821, "name": "jereaguilar", "count": 1, "languages": 1 }, { - "order": 821, + "order": 822, + "name": "owen-ian", + "count": 1, + "languages": 1 + }, + { + "order": 823, "name": "lluistech", "count": 1, "languages": 1 }, { - "order": 822, + "order": 824, "name": "luceldasilva", "count": 1, "languages": 1 }, { - "order": 823, + "order": 825, "name": "francgci", "count": 1, "languages": 1 }, { - "order": 824, + "order": 826, "name": "yamiyugi25", "count": 1, "languages": 1 }, { - "order": 825, + "order": 827, "name": "luisangeles20", "count": 1, "languages": 1 }, { - "order": 826, + "order": 828, "name": "cristianvergaraf", "count": 1, "languages": 1 }, { - "order": 827, + "order": 829, "name": "judithernandez", "count": 1, "languages": 1 }, { - "order": 828, + "order": 830, "name": "eatsangels", "count": 1, "languages": 1 }, { - "order": 829, + "order": 831, "name": "mjordanaam", "count": 1, "languages": 1 }, { - "order": 830, + "order": 832, "name": "marcelinoarias369", "count": 1, "languages": 1 }, { - "order": 831, + "order": 833, "name": "juan-cruz01", "count": 1, "languages": 1 }, { - "order": 832, + "order": 834, "name": "arturodlapaz17", "count": 1, "languages": 1 }, { - "order": 833, + "order": 835, "name": "cisneros2404", "count": 1, "languages": 1 }, { - "order": 834, + "order": 836, "name": "claudios1980", "count": 1, "languages": 1 }, { - "order": 835, + "order": 837, "name": "pr1de-23", "count": 1, "languages": 1 }, { - "order": 836, + "order": 838, "name": "dimanu-py", "count": 1, "languages": 1 }, { - "order": 837, + "order": 839, "name": "wallsified", "count": 1, "languages": 1 }, { - "order": 838, + "order": 840, "name": "kshields51", "count": 1, "languages": 1 }, { - "order": 839, + "order": 841, "name": "hnaranjog", "count": 1, "languages": 1 }, { - "order": 840, + "order": 842, "name": "erickcis", "count": 1, "languages": 1 }, { - "order": 841, + "order": 843, "name": "neftalyr", "count": 1, "languages": 1 }, { - "order": 842, + "order": 844, "name": "zeraven09", "count": 1, "languages": 1 }, { - "order": 843, + "order": 845, "name": "jchernandez87", "count": 1, "languages": 1 }, { - "order": 844, + "order": 846, "name": "adcarret", "count": 1, "languages": 1 }, { - "order": 845, + "order": 847, "name": "leo18q", "count": 1, "languages": 1 }, { - "order": 846, + "order": 848, "name": "v0l0v", "count": 1, "languages": 1 }, { - "order": 847, + "order": 849, "name": "alejandro000", "count": 1, "languages": 1 }, { - "order": 848, + "order": 850, "name": "juanalbornoz32", "count": 1, "languages": 1 }, { - "order": 849, + "order": 851, "name": "albertomorilla", "count": 1, "languages": 1 }, { - "order": 850, + "order": 852, "name": "sergiovelayos", "count": 1, "languages": 1 }, { - "order": 851, + "order": 853, "name": "emmanuelmmontesinos ", "count": 1, "languages": 1 }, { - "order": 852, + "order": 854, "name": "jgregoris", "count": 1, "languages": 1 }, { - "order": 853, + "order": 855, "name": "and-y21", "count": 1, "languages": 1 }, { - "order": 854, + "order": 856, "name": "xcortes", "count": 1, "languages": 1 }, { - "order": 855, + "order": 857, "name": "salas89", "count": 1, "languages": 1 }, { - "order": 856, + "order": 858, "name": "ignacioskm", "count": 1, "languages": 1 }, { - "order": 857, + "order": 859, "name": "sunjamer", "count": 1, "languages": 1 }, { - "order": 858, + "order": 860, "name": "dakkaj", "count": 1, "languages": 1 }, { - "order": 859, + "order": 861, "name": "jalonso76", "count": 1, "languages": 1 }, { - "order": 860, + "order": 862, "name": "sbngl", "count": 1, "languages": 1 }, { - "order": 861, + "order": 863, "name": "alejarandro", "count": 1, "languages": 1 }, { - "order": 862, + "order": 864, "name": "gmedinat911", "count": 1, "languages": 1 }, { - "order": 863, + "order": 865, "name": "danidan1214", "count": 1, "languages": 1 }, { - "order": 864, + "order": 866, "name": "neshurtado", "count": 1, "languages": 1 }, { - "order": 865, + "order": 867, "name": "demegorash", "count": 1, "languages": 1 }, { - "order": 866, + "order": 868, "name": "xhinto", "count": 1, "languages": 1 }, { - "order": 867, + "order": 869, "name": "xalejandrow", "count": 1, "languages": 1 }, { - "order": 868, + "order": 870, "name": "90dread", "count": 1, "languages": 1 }, { - "order": 869, + "order": 871, "name": "gersonoroz", "count": 1, "languages": 1 }, { - "order": 870, + "order": 872, "name": "isaacdci", "count": 1, "languages": 1 }, { - "order": 871, + "order": 873, "name": "davidgramiro", "count": 1, "languages": 1 }, { - "order": 872, + "order": 874, "name": "devkenn", "count": 1, "languages": 1 }, { - "order": 873, + "order": 875, "name": "turudev1979", "count": 1, "languages": 1 }, { - "order": 874, + "order": 876, "name": "giovanni-schmaily", "count": 1, "languages": 1 }, { - "order": 875, + "order": 877, "name": "deivimiller", "count": 1, "languages": 1 }, { - "order": 876, + "order": 878, "name": "carlosbb70", "count": 1, "languages": 1 }, { - "order": 877, + "order": 879, "name": "fergz1988", "count": 1, "languages": 1 }, { - "order": 878, + "order": 880, "name": "betulioo", "count": 1, "languages": 1 }, { - "order": 879, + "order": 881, "name": "pablom-2015", "count": 1, "languages": 1 }, { - "order": 880, + "order": 882, "name": "manuu42", "count": 1, "languages": 1 }, { - "order": 881, + "order": 883, "name": "dacaldev", "count": 1, "languages": 1 }, { - "order": 882, + "order": 884, "name": "nachodev7", "count": 1, "languages": 1 }, { - "order": 883, + "order": 885, "name": "snowcardenas", "count": 1, "languages": 1 }, { - "order": 884, + "order": 886, "name": "osneidert", "count": 1, "languages": 1 }, { - "order": 885, + "order": 887, "name": "pushodev", "count": 1, "languages": 1 }, { - "order": 886, + "order": 888, "name": "m4xxdev", "count": 1, "languages": 1 }, { - "order": 887, + "order": 889, "name": "amitchellg", "count": 1, "languages": 1 }, { - "order": 888, + "order": 890, "name": "ndepaul82", "count": 1, "languages": 1 }, { - "order": 889, + "order": 891, "name": "sherkla12e", "count": 1, "languages": 1 }, { - "order": 890, + "order": 892, "name": "tashidian", "count": 1, "languages": 1 }, { - "order": 891, + "order": 893, "name": "gilbertho502", "count": 1, "languages": 1 }, { - "order": 892, + "order": 894, "name": "bjchavez", "count": 1, "languages": 1 }, { - "order": 893, + "order": 895, "name": "alfaroo1", "count": 1, "languages": 1 }, { - "order": 894, + "order": 896, "name": "deivisaherreraj", "count": 1, "languages": 1 }, { - "order": 895, + "order": 897, "name": "astrarothdlcxvi", "count": 1, "languages": 1