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 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)) 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(); 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") 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..debff15329 --- /dev/null +++ b/Roadmap/02 - FUNCIONES Y ALCANCE/python/saicobys.py @@ -0,0 +1,78 @@ +""" 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 + + +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}") 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/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(); 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 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(); 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"); 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"); 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); +}); 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); +}); 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 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 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 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 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 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 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 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") 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); + } + } +} 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