Isotipo EDteam

Algoritmo es una palabra usada por programadores cuando no quieren explicar lo que hicieron

EDteam Logo
Avatar

¡Qué hay, comunidad! Comparto mi expresión regular.

/(http(s)?:\/{2})?(w{3}.)?[a-z\.-]+\/?/gm

Me funcionó para las siguientes cadenas de caracteres:

https://ed.team https://reg-exp.com/ http://google.com miguel-sinay.com https://www.portal.ingenieria.usac.edu.gt/ https://portal.ingenieria.usac.edu.gt/

Realmente no es del todo confiable, pues permite guiones al final de los nombres de dominio. Requiere mucho más tiempo escribir una expresión regular que controle ese inconveniente.

Avatar

Hola.

Llevo un rato con una pequeña crisis y ya me empezó a preocupar cómo he asimilado durante años las operaciones aritméticas en programación.

Este es un pequeño programa en C. Lo interesante es que al ejecutar este programa me arroja como resultado 0.

#include<stdio.h> int main(){ double val = 0; val = 5 / 2; printf("%f", val); }

Ahora, si someto a la misma división a un casteo resulta que el programa allí sí me muestra por pantalla 2.5. :(

#include<stdio.h> int main(){ double val = 0; val = (double) 5 / 2; printf("%f", val); }

Desde que inicié con C++ en el 2016 hasta ahora yo tenía entendido que una variable de tipo double (incluso float) está en capacidad de guardar por sí sola una cifra con dígitos decimales, sin requerir un casteo.

Lo que me aterra es que hice este mismo experimento en Java y sucede lo mismo. Ahora ya no sé qué pensar...

Si alguien me puede aclarar bien esto se lo agradecería.

Avatar

Triste mi caso. Desde hace años he tratado de entender la recursividad y no encuentro video tutorial perfecto con el cual entenderla. Ni en la facultad, ni en YouTube; en ningún sitio he hallado cómo entender ese concepto tan útil.

En el año 2020 un ingeniero cabrón que me daba clases nos mostró un ejemplo de algoritmo de búsqueda binaria, aprovechando el poder de la recursividad. A día de hoy miro ese método donde está ese algoritmo y no le entiendo nada.

Ya hasta decepcionado de mí mismo estoy. :(

Este curso ha estado súper. Me aclararon muchas dudas en relación a los paradigmas que más se usan en la programación.

Avatar

Tras haber instalado el certificado la apariencia del sitio quedó de lo más desagradable. Inspeccioné el código fuente de la página en el navegador y me doy cuenta que no puede descargar los recursos CSS y JS, esto debido a que se trata de obtener esos códigos fuente mediante el protocolo https, más o menos así:

https://w.x.y.z/virtual-um/wp-content/themes/twentyseventeen/assets/js/global.js?ver=1.0

Cuando en realidad solo puedo hacerlo así (mediante el protocolo HTTP):

http://w.x.y.z/virtual-um/wp-content/themes/twentyseventeen/assets/js/global.js?ver=1.0

Al introducir la primera URL en el navegador, aparece un mensaje que dice más o menos que "el contenido realmente no es seguro", lo cual es obvio, ya que generamos un certificado para un nombre de dominio, no para una dirección IP.

Solo deseaba compartir mi experiencia. Si alguien sabe como se podría resolver esto, ya sea con el código fuente de WordPress o algo más: me cuentan por favor.

Saludos y bendiciones.

Avatar

Al reiniciar el servicio NGINX me tiraba un mensaje de error que me recomendaba encontrar más información escribiendo el comando "journalctl -xe", pues lo ejecuté y de entre el montón de información que me arrojó, identifiqué que esta línea muestra el desencadenante de todo el inconveniente:

Jan 25 01:12:14 ip-172-31-27-130 nginx[3243]: nginx: [emerg] invalid log level "nativa.tech_error.log" in /etc/nginx/sites-enabled/nginx1.nativa.tech:7

Indagando un poco por internet, concluí que debía configurar algo llamado 'level log', lo cual no es más que un parámetro que puede ser: critic, alert, error, entre otros. Escribí el parámetro en el archivo de nginx1.native.tech y quedó así:

server { listen 80; server_name nginx1.nativa.tech; root /var/www/html/nginx1; index index.html; error_log /var/log/nginx/nginx1 nativa.tech_error.log error; access_log /var/log/nginx/nginx1 nativa.tech_acces.log; }

Lo cual tampoco hizo mucha diferencia, así que para no perder más tiempo decidí que para estos sitios no habría registros (logs). Comenté mediante '#' las líneas de configuración de logs en los dos archivos, nginx1.native.tech y nginx2.native.tech. El archivo quedó así:

server { listen 80; server_name nginx1.nativa.tech; root /var/www/html/nginx1; index index.html; # error_log /var/log/nginx/nginx1 nativa.tech_error.log error; # access_log /var/log/nginx/nginx1 nativa.tech_acces.log; }

Estos son los sitios por los que anduve indagando (dejo los hipervínculos como referencia):

Avatar

¡Qué tal!

¡El curso va magnífico! Deseo comentar también que el comando 'mv' tiene otra utilidad, que es la de renombrar archivos.

Supongamos el panorama en el que dentro de la terminal nos encontramos situados en la carpeta Descargas, hemos descargado un archivo de internet con un nombre algo incómodo de leer y queremos asignarle un nombre más simple:

usuario@mint:~/Descargas$ ls software-paquete_amd64-SoftwareCompany.deb usuario@mint:~/Descargas$ mv software-paquete_amd64-SoftwareCompany.deb paquete.deb usuario@mint:~/Descargas$ ls paquete.deb

El feo nombre que tenía el archivo ha sido cambiado por un nombre más sencillo, en este caso 'paquete.deb'.

Puede haber necesidad que un archivo lo necesitemos mover de donde está y que llegue renombrado a una carpeta de destino de nuestra elección. Ahora supongamos que estamos situado en nuestra carpeta de usuario (no en la carpeta Descargas):

usuario@mint:~$

Y sabemos que en nuestra carpeta Descargas tenemos en su interior una carpeta llamada 'notas'. Deseamos mover un archivo llamado 'archivo.txt' al escritorio (carpeta Escritorio), a la vez que se renombre como 'mis-apuntes.txt'.

usuario@mint:~$ ls ~/Descargas/notas archivo.txt usuario@mint:~$ mv ~/Descargas/notas/archivo.txt ~/Escritorio/mis-apuntes.txt usuario@mint:~$ ls ~/Escritorio mis-apuntes.txt

Y así podemos mover y renombrar un archivo en la misma instrucción... ¡sin necesidad de posicionar la terminal donde se encuentra el archivo que deseamos mover! Aquí empleamos rutas relativas, aunque se puede también empleando rutas absolutas.

Avatar

Hola. Disculpen la molestia.

Me surgió una curiosidad. Álvaro en el curso Desarrollo Personal en la clase 4.6 Construir equipos, mencionó algo sobre estructuras corporativas. Dijo que encima del CEO está un Consejo Directivo que toma las decisiones sobre la empresa; entonces yo asumo que en este caso el CEO sería el administrador, ¿estoy en lo correcto o estoy entendiendo mal?

Avatar

Me parece que la variable llamada 'lista' realmente nunca se aprovechó.

numeros = [1, 2, 3, 4, 5] def numeros_pares(lista): # La variable 'lista' realmente no se está aprovechando n_pares = [] for numero in numeros: # <------- if numero % 2 == 0: n_pares.append(numero) return n_pares pares = numeros_pares(numeros) print(numeros) print(pares)

Este es un ejemplo donde dicha variable sí se estaría aprovechando. Estuve un rato medio confundido, alguien más principiante se podría confundir también... ¡creo yo!

numeros = [1, 2, 3, 4, 5] numeros2 = [6, 7, 8, 9] def numeros_pares(lista): # La variable 'lista' aquí sí es aprovechada n_pares = [] for numero in lista: # La variable 'lista' aquí sí es aprovechada if numero % 2 == 0: n_pares.append(numero) return n_pares pares = numeros_pares(numeros) # Aquí también podría mandar la variable numeros2 y obtendría [6, 8] print(numeros) print(pares) ```
Avatar

Lo último que utilizaste fue una tupla, no una lista. En una tupla los datos se encierran entre paréntesis '()', que fue lo que empleaste; en una lista se emplean corchetes '[]'. Vos mismo me enseñaste esto.

El curso está magnífico, muchas gracias.

¡Miguel te ha regalado $ 90 USD 🎉!

Si actualizas a premium con el siguiente enlace obtendrás un descuento para ti y ayudarás a Alejandro a seguir estudiando en EDteam.

ed.team/premium?cupon=REF-224544

Estos son los beneficios que tú y Miguel recibirán si compras con su enlace de referidos 🙌

BeneficiosMensualSemestralAnual
Descuento ()$ 3 USD$ 45 USD$ 90 USD
Semanas gratis (Miguel)1612

Al comprar con el enlace de referidos aceptas los términos y condiciones

Amigos

¿Cómo obtengo mi enlace de referidos?

Si eres estudiante premium ya tienes el enlace en tu perfil de usuario. Si aún no eres premium recibirás tu enlace de referidos como recompensa cada vez que completes un curso gratuito.

Más información
Publicaciones
Certificados
Me gusta
Referidos