Skip to content

Commit 058fcbf

Browse files
authored
Merge branch 'mouredev:main' into main
2 parents 6a2c7cb + 753bf90 commit 058fcbf

File tree

5 files changed

+1550
-948
lines changed

5 files changed

+1550
-948
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
// *Ejercicio #00 SINTAXIS, VARIABLES, TIPOS DE DATOS Y HOLA MUNDO
2+
3+
/*
4+
* Crea un comentario en el código y coloca la URL del sitio web oficial del lenguaje de programación que has seleccionado
5+
*/
6+
7+
// https://developer.mozilla.org/es/docs/Web/JavaScript
8+
console.log('https://developer.mozilla.org/es/docs/Web/JavaScript');
9+
10+
/*
11+
* Representa las diferentes sintaxis que existen de crear comentarios
12+
* en el lenguaje (en una línea, varias...).
13+
*/
14+
15+
// doble slash '//' para comentar una sola linea.
16+
/* Slash y asterisco para hacer comentarios multilinea. */
17+
18+
/*
19+
* Crea una variable (y una constante si el lenguaje lo soporta).
20+
*/
21+
22+
var a = 10;
23+
let b = 20;
24+
const c = 30;
25+
26+
/*
27+
* Crea variables representando todos los tipos de datos primitivos del lenguaje (cadenas de texto, enteros, booleanos...).
28+
*/
29+
30+
// cadena de caracteres o string
31+
32+
let nombre = ' Brian Oconor ';
33+
34+
// Numero enteros
35+
36+
let number = 123546;
37+
38+
// BigInt
39+
40+
let numberGrande = BigInt(5115421368641);
41+
42+
// Booleano o Boolean
43+
44+
let boleanitoF = false;
45+
let boleanitoV = true;
46+
47+
// symbol
48+
49+
let symbol1 = Symbol('a');
50+
let symbol2 = Symbol('a');
51+
52+
/*
53+
* Imprime por terminal el texto: "¡Hola, [y el nombre de tu lenguaje]!"
54+
*/
55+
56+
console.log('Hola JavaScript ');
57+
58+
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,129 @@
1+
"""
2+
* Estruturas de datos
3+
"""
4+
5+
# Lista
6+
7+
my_list = [1, 1, 2, 3, 5, 6]
8+
print(my_list)
9+
print(type(my_list))
10+
11+
my_list.insert(4, 4) # Inserción
12+
print(my_list)
13+
14+
my_list.remove(6) # Borrado
15+
print(my_list)
16+
17+
my_list[0] = 0 # Actualización
18+
print(my_list)
19+
20+
my_list.sort(reverse=True) # Ordenación descendente
21+
print(my_list)
22+
23+
# Tupla
24+
25+
my_tuple = (1, 2, 3, 4, 5)
26+
print(my_tuple)
27+
print(type(my_tuple))
28+
29+
# Set
30+
31+
my_set = {1, 2, 3, 4, 5}
32+
print(my_set)
33+
print(type(my_set))
34+
35+
my_set.add(6) # Inserción
36+
print(my_set)
37+
38+
my_set.remove(6) # Borrado
39+
print(my_set)
40+
41+
# Diccionario
42+
43+
my_dict = {
44+
"Month": "July",
45+
"Day": "Tuesday",
46+
"Year": 2024
47+
}
48+
print(my_dict)
49+
print(type(my_dict))
50+
51+
my_dict["Century"] = "XXI" # Inserción
52+
print(my_dict)
53+
54+
del my_dict["Century"] # Borrado
55+
print(my_dict)
56+
57+
my_dict["Month"] = "June" # Actualización
58+
print(my_dict)
59+
60+
my_dict = dict(sorted(my_dict.items())) # Ordenación
61+
print(my_dict)
62+
63+
"""
64+
* Extra
65+
"""
66+
67+
def menu():
68+
print("=====================================")
69+
print("WELCOME TO THE CONTACTS AGENDA")
70+
print("1. Search contact")
71+
print("2. Insert contact")
72+
print("3. Update contact")
73+
print("4. Delete contact")
74+
print("5. Exit")
75+
print("=====================================")
76+
77+
menu()
78+
79+
80+
def contacts_agenda():
81+
82+
agenda = {}
83+
84+
def validate_phone_number(phone):
85+
return phone.isdigit() and len(phone) == 11
86+
87+
while True:
88+
option = input("Choose an option: ")
89+
90+
match option:
91+
case "1":
92+
name = input("Enter the name to search: ")
93+
if name in agenda:
94+
print(f"The phone number of {name} is {agenda[name]}")
95+
else:
96+
print("Contact not found")
97+
case "2":
98+
name = input("Enter the name to insert: ")
99+
phone = input("Enter the phone: ")
100+
if validate_phone_number(phone):
101+
agenda[name] = phone
102+
print("Contact inserted")
103+
else:
104+
print("Invalid phone number")
105+
case "3":
106+
name = input("Enter the name to update the phone: ")
107+
if name in agenda:
108+
phone = input("Enter the new phone: ")
109+
if validate_phone_number(phone):
110+
agenda[name] = phone
111+
print("Contact updated")
112+
else:
113+
print("Invalid phone number")
114+
else:
115+
print("Contact not found")
116+
case "4":
117+
name = input("Enter the name to delete: ")
118+
if name in agenda:
119+
del agenda[name]
120+
print("Contact deleted")
121+
else:
122+
print("Contact not found")
123+
case "5":
124+
print("Exiting...")
125+
break
126+
case _:
127+
print("Invalid option... Retry")
128+
129+
contacts_agenda()

Roadmap/25 - LOGS/bash/rantamhack.sh

+195
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,195 @@
1+
#!/bin/bash
2+
3+
# * EJERCICIO:
4+
# * Explora el concepto de "logging" en tu lenguaje. Configuralo y muestra
5+
# * un ejemplo con cada nivel de "severidad" disponible.
6+
7+
8+
echo -e "\n\n=======================================EJERCICIO=======================================\n\n"
9+
10+
11+
12+
# * Emergency: El sistema esta inutilizable
13+
# * Alert : Se debe de actuar inmediatemente
14+
# * Critical: El sistema esta en condiciones criticas
15+
# * Error: Se ha producido un error
16+
# * Warning: Aviso en condiciones de peligro
17+
# * Notice: Aviso normal pero condiciones notables
18+
# * Info: Aviso de informacion, mensajes informatiovs
19+
# * Debug: Depuracion, mensajes de bajo nive
20+
21+
22+
log_message() {
23+
local log_level=$1
24+
local log_message=$2
25+
local log_date=$(date '+%Y-%m-%d %H:%M:%S')
26+
27+
28+
case $log_level in
29+
DEBUG)
30+
echo "$log_date - DEBUG - $log_message"
31+
;;
32+
INFO)
33+
echo "$log_date - INFO - $log_message"
34+
;;
35+
NOTICE)
36+
echo "$log_date - NOTICE - $log_message"
37+
;;
38+
WARNING)
39+
echo "$log_date - WARNING - $log_message"
40+
;;
41+
ERROR)
42+
echo "$log_date - ERROR - $log_message"
43+
;;
44+
CRITICAL)
45+
echo "$log_date - CRITICAL - $log_message"
46+
;;
47+
ALERT)
48+
echo "$log_date - ALERT - $log_message"
49+
;;
50+
EMERGENCY)
51+
echo "$log_date - EMERGENCY - $log_message"
52+
;;
53+
*)
54+
echo "$log_date - UNKNOWN - $log_message"
55+
;;
56+
esac
57+
}
58+
59+
60+
log_message "DEBUG" "[+] Entramos a la funcion"
61+
log_message "INFO" "[+] La conexion con el servidor fue exitosa"
62+
log_message "NOTICE" "[+] Es importante que revises el archivo syslog"
63+
log_message "WARNING" "[!] Queda poco espacio en disco"
64+
log_message "ERROR" "[!] Bloque de sangria previsto"
65+
log_message "CRITICAL" "[!] Hay un error critico. Saliendo de la aplicacion ...."
66+
log_message "ALERT" "[!] Se debe de actuar inmediatemente"
67+
log_message "EMERGENCY" "[!] El sistema esta inutilizable"
68+
69+
# Los logs se pueden generar con el comando 'logger' y se pueden ver en el archivo de logs dependiendo de la distribucion (syslog, rsyslog,...)
70+
# Este script se ha hecho para que aparezcan en la salida por terminal cuando se ejecuta
71+
# con el comando 'logger' sustituimos en el case, tampoco necesitamos la variable 'log_date' ya que el archivo de logs proporciona la fecha y hora. Quedaría asi:
72+
73+
74+
# logger -p user.debug "$log_message"
75+
# logger -p user.info "$log_message"
76+
# logger -p user.notice "$log_message"
77+
# logger -p user.warn "$log_message"
78+
# logger -p user.err "$log_message"
79+
# logger -p user.crit "$log_message"
80+
# logger -p user.alert "$log_message"
81+
# logger -p user.emerg "$log_message"
82+
83+
84+
85+
86+
echo -e "\n\n=======================================DIFICULTAD EXTRA=======================================\n\n"
87+
88+
89+
# * DIFICULTAD EXTRA (opcional):
90+
# * Crea un programa ficticio de gestion de tareas que permita añadir, eliminar
91+
# * y listar dichas tareas.
92+
# * - Añadir: recibe nombre y descripcion.
93+
# * - Eliminar: por nombre de la tarea.
94+
# * Implementa diferentes mensajes de log que muestren informacion segun la
95+
# * tarea ejecutada (a tu eleccion).
96+
# * Utiliza el log para visualizar el tiempo de ejecucion de cada tarea.
97+
98+
99+
function time_spent() {
100+
local star_time=$(date +%s.%N)
101+
"$@"
102+
local end_time=$(date +%s.%N)
103+
local elapsed_time=$(echo "$end_time - $star_time" | bc)
104+
local formatted_time=$(LC_NUMERIC=C printf "%.4f" "$elapsed_time")
105+
echo -e "La funcion $1 ha tardado $formatted_time en ejecutarse\n"
106+
}
107+
108+
109+
declare -a list_task=()
110+
111+
function add_task() {
112+
local task="$1"
113+
local description="$2"
114+
local now=$(date '+%Y-%m-%d %H:%M:%S')
115+
logger -p user.debug "[*] Comienza la funcion para 'añadir tareas'"
116+
echo -e "[$now] (user.debug) [*] Comienza la funcion para 'añadir tareas'"
117+
sleep 1
118+
for t in "${list_task[@]}"; do
119+
if [[ "$t" == "$task" ]]; then
120+
logger -p user.warn "[!] La tarea ya esta en la lista"
121+
echo -e "[$now](user.warn) [!] La tarea ya esta en la lista"
122+
return
123+
fi
124+
done
125+
list_task+=("$task")
126+
sleep 1
127+
logger -p user.info "[+] Se agrega nueva tarea $task - $description"
128+
echo -e "[$now](user.info) [+] Se agrega nueva tarea $task - $description"
129+
logger -p user.debug "[*] Finaliza la funcion 'añadir tareas'"
130+
echo -e "[$now](user.debug) [*] Finaliza la funcion 'añadir tareas'"
131+
}
132+
133+
134+
function del_task() {
135+
local task="$1"
136+
local description="$2"
137+
local now=$(date '+%Y-%m-%d %H:%M:%S')
138+
logger -p user.debug "[*] Comienza la funcion para 'borrar tareas'"
139+
echo -e "[$now](user.debug) [*] Comienza la funcion para 'borrar tareas'"
140+
sleep 1
141+
local new_list=()
142+
local task_found=0
143+
for t in "${list_task[@]}"; do
144+
if [[ "$t" == "$task" ]]; then
145+
task_found=1
146+
else
147+
new_list+=("$t")
148+
fi
149+
done
150+
if [[ $task_found -eq 1 ]]; then
151+
list_task=("${new_list[@]}")
152+
logger -p user.info "[-] Se elimino la tarea: $task - $description"
153+
echo -e "[$now](user.info) [-] Se elimino la tarea: $task - $description"
154+
else
155+
logger -p user.warn "[!] La tarea a eliminar $task - $description no existe"
156+
echo -e "[$now](user.warn) [!] La tarea a eliminar $task - $description no existe"
157+
fi
158+
sleep 1
159+
logger -p user.debug "[*] Finaliza la funcion 'eliminar tareas'"
160+
echo -e "[$now](user.debug) [*] Finaliza la funcion 'eliminar tareas'"
161+
}
162+
163+
164+
function list_tasks() {
165+
local now=$(date '+%Y-%m-%d %H:%M:%S')
166+
logger -p user.debug "[*] Comienza la funcion para 'listar tareas'"
167+
echo -e "[$now](user.debug) [*] Comienza la funcion para 'listar tareas'"
168+
sleep 3
169+
for t in "${list_task[@]}"; do
170+
echo -e "[$now](user.info) [+] La lista de tareas programadas: $t"
171+
logger -p user.info "[+] La lista de tareas programadas: $t"
172+
done
173+
logger -p user.debug "[*] Finaliza la funcion 'listar tareas'"
174+
echo -e "[$now}(user.debug) [*] Finaliza la funcion 'listar tareas'"
175+
176+
}
177+
178+
179+
function decorator() {
180+
time_spent "$@"
181+
}
182+
183+
184+
185+
decorator add_task "task1" "recepcionar pedidos"
186+
decorator add_task "task2" "preparar pedidos"
187+
decorator add_task "task3" "enviar pedidos"
188+
decorator add_task "task2" "preparar pedidos"
189+
190+
decorator list_tasks
191+
192+
decorator del_task "task4" "ordenar pedidos"
193+
decorator del_task "task3" "enviar pedidos"
194+
195+
decorator list_tasks

0 commit comments

Comments
 (0)