Skip to content

Commit dbbab56

Browse files
authored
Merge pull request mouredev#4568 from hectorio23/hectorio23
#25 - C++
2 parents 94599a8 + 74aae0a commit dbbab56

File tree

3 files changed

+199
-0
lines changed

3 files changed

+199
-0
lines changed
Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
// Autor: Héctor Adán
2+
// GitHub: https://github.com/hectorio23
3+
#include <iostream>
4+
#include <vector>
5+
#include <string>
6+
#include <algorithm>
7+
#include <chrono>
8+
#include <spdlog/spdlog.h>
9+
#include <spdlog/sinks/stdout_color_sinks.h> // Incluir el encabezado correcto
10+
11+
struct Tarea {
12+
std::string nombre;
13+
std::string descripcion;
14+
};
15+
16+
std::vector<Tarea> tareas;
17+
18+
void añadirTarea(const std::string& nombre, const std::string& descripcion) {
19+
auto start = std::chrono::high_resolution_clock::now();
20+
spdlog::info("Añadiendo tarea: {}", nombre);
21+
tareas.push_back({nombre, descripcion});
22+
spdlog::debug("Tareas actuales: {}", tareas.size());
23+
auto end = std::chrono::high_resolution_clock::now();
24+
std::chrono::duration<double> elapsed = end - start;
25+
spdlog::info("Tarea añadida en {} segundos", elapsed.count());
26+
}
27+
28+
void eliminarTarea(const std::string& nombre) {
29+
auto start = std::chrono::high_resolution_clock::now();
30+
spdlog::info("Eliminando tarea: {}", nombre);
31+
tareas.erase(std::remove_if(tareas.begin(), tareas.end(), [&nombre](const Tarea& t) {
32+
return t.nombre == nombre;
33+
}), tareas.end());
34+
spdlog::debug("Tareas actuales: {}", tareas.size());
35+
auto end = std::chrono::high_resolution_clock::now();
36+
std::chrono::duration<double> elapsed = end - start;
37+
spdlog::info("Tarea eliminada en {} segundos", elapsed.count());
38+
}
39+
40+
void listarTareas() {
41+
spdlog::info("Listando todas las tareas");
42+
if (tareas.empty()) {
43+
spdlog::warn("No hay tareas para listar");
44+
} else {
45+
for (const auto& tarea : tareas) {
46+
spdlog::info("Tarea: {}, Descripción: {}", tarea.nombre, tarea.descripcion);
47+
}
48+
}
49+
}
50+
51+
int main() {
52+
try {
53+
// Crear una consola para logging con colores
54+
auto console = spdlog::stdout_color_mt("console");
55+
spdlog::set_level(spdlog::level::debug); // Establece el nivel de logging
56+
spdlog::set_default_logger(console);
57+
58+
// Ejemplo de uso del programa de gestión de tareas
59+
adirTarea("Comprar pan", "Ir a la panadería y comprar una barra de pan");
60+
adirTarea("Estudiar C++", "Completar el ejercicio de logging en C++");
61+
listarTareas();
62+
eliminarTarea("Comprar pan");
63+
listarTareas();
64+
65+
} catch (const spdlog::spdlog_ex& ex) {
66+
std::cout << "Log init failed: " << ex.what() << std::endl;
67+
}
68+
69+
return 0;
70+
}
71+
72+
// Execute: g++ -std=c++17 -o hectorio23 hectorio23.cpp -lspdlog -lfmt
Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
// Autor: Héctor Adán
2+
// GitHub: https://github.com/hectorio23
3+
4+
"use strict";
5+
const winston = require('winston'); // npm install winston
6+
const { combine, timestamp, printf } = winston.format;
7+
8+
// Configuración de winston para logging
9+
const myFormat = printf(({ level, message, timestamp }) => {
10+
return `${timestamp} - ${level.toUpperCase()}: ${message}`;
11+
});
12+
13+
const logger = winston.createLogger({
14+
level: 'debug',
15+
format: combine(
16+
timestamp(),
17+
myFormat
18+
),
19+
transports: [
20+
new winston.transports.Console()
21+
]
22+
});
23+
24+
// Lista para almacenar las tareas
25+
let tareas = [];
26+
27+
function addTask(nombre, descripcion) {
28+
const startTime = Date.now();
29+
logger.info(`Añadiendo tarea: ${nombre}`);
30+
const tarea = { nombre, descripcion };
31+
tareas.push(tarea);
32+
logger.debug(`Tareas actuales: ${JSON.stringify(tareas)}`);
33+
const endTime = Date.now();
34+
logger.info(`Tarea añadida en ${(endTime - startTime) / 1000} segundos`);
35+
}
36+
37+
function deleteTask(nombre) {
38+
const startTime = Date.now();
39+
logger.info(`Eliminando tarea: ${nombre}`);
40+
tareas = tareas.filter(tarea => tarea.nombre !== nombre);
41+
logger.debug(`Tareas actuales: ${JSON.stringify(tareas)}`);
42+
const endTime = Date.now();
43+
logger.info(`Tarea eliminada en ${(endTime - startTime) / 1000} segundos`);
44+
}
45+
46+
function showTask() {
47+
logger.info("Listando todas las tareas");
48+
if (tareas.length === 0) {
49+
logger.warning("No hay tareas para listar");
50+
} else {
51+
tareas.forEach(tarea => {
52+
logger.info(`Tarea: ${tarea.nombre}, Descripción: ${tarea.descripcion}`);
53+
});
54+
}
55+
}
56+
57+
// Ejemplo de uso del programa de gestión de tareas
58+
addTask("Comprar pan", "Ir a la panadería y comprar una barra de pan");
59+
addTask("Estudiar JavaScript", "Completar el ejercicio de logging en JavaScript");
60+
showTask();
61+
deleteTask("Comprar pan");
62+
showTask();
Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
# Autor: Héctor Adán
2+
# GitHub: https://github.com/hectorio23
3+
import logging
4+
import time
5+
6+
7+
#################################################
8+
################# EJERCICIO #####################
9+
#################################################
10+
11+
# Configuración básica del logging
12+
logging.basicConfig(level=logging.DEBUG,
13+
format='%(asctime)s - %(levelname)s - %(message)s')
14+
15+
# Ejemplos de mensajes con cada nivel de severidad
16+
logging.debug("Este es un mensaje de depuración.")
17+
logging.info("Este es un mensaje informativo.")
18+
logging.warning("Este es un mensaje de advertencia.")
19+
logging.error("Este es un mensaje de error.")
20+
logging.critical("Este es un mensaje crítico.")
21+
22+
23+
24+
#################################################
25+
############## EJERCICIO EXTRA ##################
26+
#################################################
27+
28+
# Configuración del logging
29+
logging.basicConfig(level=logging.DEBUG,
30+
format='%(asctime)s - %(levelname)s - %(message)s')
31+
32+
# Lista para almacenar las tareas
33+
tareas = []
34+
35+
def add_task(nombre, descripcion):
36+
start_time = time.time()
37+
logging.info(f"Añadiendo tarea: {nombre}")
38+
tarea = {"nombre": nombre, "descripcion": descripcion}
39+
tareas.append(tarea)
40+
logging.debug(f"Tareas actuales: {tareas}")
41+
end_time = time.time()
42+
logging.info(f"Tarea añadida en {end_time - start_time} segundos")
43+
44+
def delete_task(nombre):
45+
start_time = time.time()
46+
logging.info(f"Eliminando tarea: {nombre}")
47+
global tareas
48+
tareas = [tarea for tarea in tareas if tarea["nombre"] != nombre]
49+
logging.debug(f"Tareas actuales: {tareas}")
50+
end_time = time.time()
51+
logging.info(f"Tarea eliminada en {end_time - start_time} segundos")
52+
53+
def show_tasks():
54+
logging.info("Listando todas las tareas")
55+
for tarea in tareas:
56+
logging.info(f"Tarea: {tarea['nombre']}, Descripción: {tarea['descripcion']}")
57+
if not tareas:
58+
logging.warning("No hay tareas para listar")
59+
60+
# Ejemplo de uso del programa de gestión de tareas
61+
add_task("Comprar pan", "Ir a la panadería y comprar una barra de pan")
62+
add_task("Estudiar Python", "Completar el ejercicio de logging en Python")
63+
show_tasks()
64+
delete_task("Comprar pan")
65+
show_tasks()

0 commit comments

Comments
 (0)