« first day (3302 days earlier)      last day (24 days later) » 
00:00 - 21:0021:00 - 23:00

00:41
@CandidMoe que lenguaje es?
 
6 hours later…
06:55
A las güenas :-)
Asco de miércoles :-(
@gbianchi C++. El cuerpo de una clase Ventas, creo
 
1 hour later…
08:06
@gbianchi C++. La presentación del código me confundio; pensé que habría el bloque en corchetes interactuaba de algun modo con totalVentas. Es simplemente la declaración de un constructor, con la inicialización de totalVentas y un bloque que ejecuta inicializando otros miembros.
08:33
JAJAJAJA esta respuesta: es.stackoverflow.com/a/627600/188830
Es la primera vez que veo una lista de referencias en una respuesta...
(Obviamente es generada por IA vamos, me juego ambas manos)
@CandidMoe Las clases en c++ me confunden mucho. C++ en general, me confunde bastante... pero las clases en si me resultan rarísimas
@Benito-B ¿ Puedo preguntar porqué ? No tienen mucha chicha, son simples struct pero con funciones-miembro O_o
@Benito-B C++ es un engendro horrible.
@CandidMoe 😱😱😱😱😱😱😱😱
Hombre, no es que sea la cosa mas hermosa del mundo mundial, pero tampoco es para tanto
Peor es forth xD
@Trauma Yo puedo escribir un intérprete de Forth; ¿puedes construir un compilador de C++?
08:49
@CandidMoe Con el tiempo suficiente, pues claro que si. Y tú también.
Nótese Con el tiempo suficiente
@Trauma No lo creo. No creo que nadie pueda sentarse a escribir desde cero un compilador de C++.
No estoy de acuerdo. Puedes empezar como si fuera un compilador de C
Y a partir de ahí, vas extendiendo
C++ empezó siendo C con unas macros especiales
Por supuesto que llegarás a cosas que no hay dios que entienda, sobre todo temas de plantillas. Pero eso ya es otro cantar.
22
Q: How much time would it take to write a C++ compiler using flex/yacc?

MadhuHow much time would it take to write a C++ compiler using lex/yacc? Where can I get started with it?

It will probably take you years, and you'll probably switch to some other parser generator in the process.
No tengo muy claro que se puede generar solo con flex / yacc, la verdad
It sounds like you're pretty new to parsing/compiler creation. If that's the case, I'd highly recommend not starting with C++. It's a monster of a language.
08:57
Totalmente de acuerdo :-)
@Trauma No te sabría decir el por qué. Por qué su sintaxis tiene que ser tan rara?? Lo veo diferente al resto de c++ y me confunde un poco
@Trauma No se puede generar con flex/yacc, hay que usar un algoritmo recursivo descendente.
@CandidMoe Pero no dice que no se pueda. Solo recomienda que empieces por otro :-)
@Benito-B Anda ya. Si hay muchos que la toman: J, JavaScript, ...
Quitando el tema de las template, es bastante sencillito
Vamos, quitando las template, es poco mas que C
@Trauma lex/yacc no sirven pues la gramática de C/C++ es context-dependent
@CandidMoe Nunca me he metido a investigar eso, pero me lo creo :-)
Pero no por ello es feo ;-p
Bueno, vamos a la fiesta. Reunión :-((
09:00
@Trauma Pues no sé, será que lo único que hice de c++ es ejercicios básicos con código prácticamente estructurado sin cosas raras
@Trauma Yo acabo de salir de la primera del día, voy a por la segunda. Con suerte tres solo hoy
Una vez use lex/yacc (o bison, no me acuerdo). Generó código C tan largo que el compilador se fue de espaldas. Termine reescribiendo todo a mano.
@Benito-B Yo solo esta :-D
@Trauma Solo una daily?? Tú trabajas en el extranjero?
@Benito-B Para empresa extranjera jejeje
Eso lo explica. Supongo jsjs Yo estoy en el extranjero, pero trabajo para empresa española... algo hice mal, creo
09:04
Yo tengo un ejército de Juniors a los que alimentar. Así que hay días en los que no escribo apenas código.
@phpMyGuel La culpa es tuya por tener familia numerosa
@Benito-B Es cierto, pero cuando sean mayores de edad les pondré a trabajar en el campo.
A mi miedo me da esa costumbre de "llevas X años en el proyecto, es hora de que cojas juniors". No por favor, no me maten :(
Soy buen programador, no tengo ganas de ser buen gestor también
@Benito-B ¿Cual es tu experiencia con las nuevas generaciones?
Jajaaja, lo entiendo. Pero bueno, por un lado está bien porque te quitan de muchas tareas tediosas y repetitivas. Pero claro, si no quieres tratar con nadie estás en un problema. Yo creo que es pate importante de la labor de un senior.
09:16
@Benito-B Mas bien es que estamos en un proyecto de solo 3 personas :-)
@phpMyGuel Si, si estoy de acuerdo. Parte de ser senior es compartir la experiencia, especialmente cuando llevas mucho tiempo en un mismo proyecto y tal... pero qué manía de poner tareas de gestión a alguien que es buen programador. Me parece una pérdida de tiempo, cuando hay muy buenos gestores que no programan
@Benito-B Aaah ya. Bueno, yo no gestiono nada, relamente lo que hice fue darles unas formaciones cuando entraron y ahora pues soy al que suelen avisar cuando tienen dudas para sacar alguna tarea adelante.
@CandidMoe Llevo encargándome de otros juniors desde que tenía yo un añito de experiencia (siendo junior yo mismo vaya)... y creo que cada año llegan menos preparados y más tontos. Hasta el punto de discutirme que algo se hace de X manera porque se lo dijo chatgpt... Sale uno bueno de cada cien, miedo me da el futuro de la programación a este paso
@Benito-B Haberle dejado que lo hiciera, hombre
@phpMyGuel Ahhh buenoooo, eso no está tan mal hombre! Yo es que he visto ya a unos cuantos senior que acaban pasándose el día siendo "jira admin" jaja
@Trauma No, que el ticket está a mi nombre y tengo amor propio jsjjsjss
09:21
XDDDD
@Benito-B Ufff no, eso no. Ahí estoy totalmente de acuerdo contigo. A mi si me quieren poner a hacer ese tipo de cosas que me pongan el sueldo de un jefe de proyecto jajajaa
09:33
@Benito-B También hay que considerar el avance de la informática. Antes de la Internet sólo tenías que saber Cobol, una base de datos y un sistema operativo. Hoy tienes que saber varios lenguajes front-end / back-end, varios frameworks, bases de datos y sistema operativos. Nadie puede aprender y dominar tanto en 4 años de carrera.
@CandidMoe No pido que lo sepan todo. Pido que sepan abrir google, ir a una documentación y buscar un poco... no que pongan un foo. y si el autocompletar no les sugiere directamente lo que necesitan que vengan a preguntarme porque no saben continuar
Creo que el problema hoy en día es que las herramientas que hay disponibles (IA...) les dan las cosas hechas, con lo cual nunca aprenden a buscarse la vida
 
5 hours later…
14:11
@Benito-B Concretamente ¿Qué te confunde de las clases? No es más que una forma de agrupar información Ô_ô
14:44
@Trauma No sólo las plantillas.
En C++ los struct/enum son tipos así que no necesitas "typedef struct/enum"
En C los datos de las estructuras no pueden tener modificadores de acceso.
En C las estructuras no pueden tener funciones miembro.
En C las estructuras no pueden tener miembros estáticos.
Me conozco las diferencias (mas o menos). Pero, a nivel de diseño de un compilador, a excepción de las templates todo eso es poco mas que trivial de implementar
En C los argumentos variádicos se usan con macros va_args y en C++ con plantilla.
C no tiene plantillas.
C no tiene referencias.
C no tiene lambdas.
C no tiene sobrecarga de operadores.
C no tiene sobrecarga de funciones.
C no tiene espacios de nombres.
C no tiene clases (sólo estructuras).
C no tiene excepciones.
C no permite estructuras vacías.
Sigue siendo trivial (salvo las plantillas, como ya dije). Las referencias son punteros con limitaciones de uso. Las lambdas son clases ocultas. Los operadores son funciones con nombres especiales. La sobrecarga se implementa mediante el nombre de las funciones.
C sólo tiene un tipo de cast.
C no puede devolver void en una función void.
C no tiene literal de puntero nulo.
Puedes estar todo el día poniendo cosas, que no cambiaré mi opinión ni un ápice: trivial desde el punto de vista de diseño de un compilador
14:48
C interpreta de manera diferente f(void)y f()
Y esto es lo que se memoria xD
Tal vez, y solo tal vez, las funciones virtuales.
Todo eso sigue siendo casi trivial
La conversación con @CandidMoe era sobre hacer un compilador de C++ desde 0. Insisto en que cualquiera puede, tomando un compilador de C como base
A ver, cualquiera con unos conocimientos mínimos
A excepción de las plantillas, todo lo demás es relativamente sencillo de construir tomando como base C
@Trauma Las plantillas son muchísimo más sencillas (a nivel de compilador) que las corutinas y los hilos.
@Trauma te eché de menos aquí: es.stackoverflow.com/q/627351/2742
Y de lo que echo de menos a Eferion ya ni hablamos.
@PaperBirdMaster Vi la pregunta, pero no tengo nivel para responderla.
@Trauma Pamplinas.
No estoy al día últimamente en cosas de C++. En el curro ahora estoy con python, y alguna cosilla extra en node.js
@PaperBirdMaster De eso nada. Siempre lo he dicho, no estoy a tu altura :-)
Ademas, sinceramente ... no me interesan esas flipadas con el lenguaje que haceis los güenos, me llaman mas cosas de arquitectura y diseño :-)
Yo en tu caso directamente habría hecho 2 funciones, en lugar de 1 que adivine como distribuir los argumentos :-D
15:01
@Trauma Y yo siempre he dicho que eso es falso.
Eres libre de decir lo que quieras ;-p
Llevo un par de días haciendo un mecanismo para encolar llamadas a callbacks desde un hilo en otro, de forma que no se bloquee ninguno de los 2. En python.
Me lo he pasado pipa XDDD
Cualquier purista vería mi código y se echaría las manos a la cabeza ... Pero funciona
Y disfruto como un crio xDD
Ah, y lo mas guay: Ni un solo comentario. Que se busquen la vida los alemanes o lo checos o al que le toque xDD
@Trauma. Te planteo un desafio: hacer un parser de declaraciones que pueda "entender" correctamente definiciones tipo
extern void (*signal(int, void(*)(int)))(int);
Jo, lo pones fácil tú ;-p
@Trauma Dijistes que un compilador C era "fácil"
Ahora mismo no tengo tiempo, estoy liadillo con cosas extra-profesionales ... pero me lo apunto ;-p
@CandidMoe Creo que eso es lo mas compilado que te puedes encontrar
Y estoy seguro de que antepuse relativamente a lo de fácil jejeje
Ahora mismo estoy intentando descifrar un código mio de hace 6 meses o mas, que genera marcadores para Google Maps. Ni un puñetero comentario puse jejeje
Ah mira, 1 comentario. Vais a flipar:
        // Sort plots by danger level.
        plots.sort( function( a, b ) { return b.dl - a.dl; } );
jejeje
parezco novato ;-)
15:27
@Trauma Eres libre de menospreciarte, y yo usaré mi libertad para decirte que te equivocas haciéndolo.
@CandidMoe He visto parsers de eso en los stack overflow de puzzles xD
@PaperBirdMaster ¿Algún link?
53
Q: Read out the C variable declaration

BubblerBackground Variable declaration statement in C consists of three parts: the name of the variable, its base type, and the type modifier(s). There are three kinds of type modifiers: Pointer * (prefix) Array [N] (postfix) Function () (postfix) You can specify a list of function arguments inside th...

Me casé de leer antes de llegar al final de la pregunta, así que igual no tiene nada que ver xDD
Anda. Este puede ser útil: cdecl.org
@Trauma Felicidades.
¿Quién es la afortunada?
15:42
XDDD
Ya sabes, las manos llenas de dedos y esas cosas
@Trauma Me interesa, ¿Qué son esas cosas que te llenan las manos y no son dedos?
Paso :-/
@Trauma Aguafiestas.
16:21
@PaperBirdMaster deberiamos banearlo.. que tipo de respuesta es esa...
LPM resulta que de repente soy un gran programador de front.. pero no de diseño eh.. si no de funcionalidades...
 
3 hours later…
19:18
Mady estas aca?
@IgnacioHardoy si, que te salio?
buenisimo gracias, mira en sudo nano /etc/nginx/sites-available/fotolonchodb.com
tengo esto :

GNU nano 7.2 /etc/nginx/sites-available/fotolonchodb.com
# Bloque HTTP (puerto 80) para la validación de Certbot
server {
listen 80;
listen [::]:80;

server_name fotolonchodb.com www.fotolonchodb.com;

# Asegura que Certbot pueda verificar el dominio
location /.well-known/acme-challenge/ {
root /var/www/certbot;
y despues esto:

ubuntu@ip-172-31-25-45:~$ sudo nginx -t
2024/11/13 19:19:49 [emerg] 3301#3301: cannot load certificate "/etc/letsencrypt/live/fotolonchodb.com/fullchain.pem": BIO_new_file() failed (SSL: error:80000002:system library::No such file or directory:calling fopen(/etc/letsencrypt/live/fotolonchodb.com/fullchain.pem, r) error:10000080:BIO routines::no such file)
nginx: configuration file /etc/nginx/nginx.conf test failed
Tienes que sacar
```listen 443 ssl;
listen [::]:443 ssl;

server_name fotolonchodb.com www.fotolonchodb.com;

# Archivos del certificado SSL proporcionados por Certbot
ssl_certificate /etc/letsencrypt/live/fotolonchodb.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/fotolonchodb.com/privkey.pem;
ssl_trusted_certificate /etc/letsencrypt/live/fotolonchodb.com/chain.pem;

# Configuración de seguridad SSL
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers 'ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256';
la parte del ssl
y dejar lo demas, porque no puede cargar eso sin el certificado (que vas a crear con certbot)
o comentarlo con # para que lo deje sin efecto
osea pego eso que me pasaste vos y el resto lo borro?
ahh perdona, saco eso que me pasaste vos y el resto lo dejo asi
Deberia quedar asi:
# Bloque HTTP (puerto 80) para la validación de Certbot
server {
listen 80;
listen [::]:80;

server_name fotolonchodb.com www.fotolonchodb.com;

# Asegura que Certbot pueda verificar el dominio
location /.well-known/acme-challenge/ {
root /var/www/certbot;

# Directorio de la web
root /var/www/html;
index index.html index.htm index.nginx-debian.html;

# Configuración general de la web
location / {
try_files $uri $uri/ =404;
}
}
La parte del ssl la podes poner despues que crees el certificado con certbot
19:24
ok copio esto y lo pego y quedo asi :

GNU nano 7.2 /etc/nginx/sites-available/fotolonchodb.com *

# Bloque HTTP (puerto 80) para la validación de Certbot
server {
listen 80;
listen [::]:80;

server_name fotolonchodb.com www.fotolonchodb.com;

# Asegura que Certbot pueda verificar el dominio
location /.well-known/acme-challenge/ {
root /var/www/certbot;

# Directorio de la web
root /var/www/html;
me falto cerrar el "location /.well-known/acme-challenge/" creo
ubuntu@ip-172-31-25-45:~$ sudo nginx -t
2024/11/13 19:24:33 [emerg] 3312#3312: "root" directive is duplicate in /etc/nginx/sites-enabled/fotolonchodb.com:14
nginx: configuration file /etc/nginx/nginx.conf test failed
ah quedo mal lo que pegue decis?
Prueba con esto:
# Bloque HTTP (puerto 80) para la validación de Certbot
server {
listen 80;
listen [::]:80;

server_name fotolonchodb.com www.fotolonchodb.com;

# Asegura que Certbot pueda verificar el dominio
location /.well-known/acme-challenge/ {
root /var/www/certbot;
}

# Directorio de la web
root /var/www/html;
index index.html index.htm index.nginx-debian.html;

# Configuración general de la web
location / {
try_files $uri $uri/ =404;
}
}
ok ahi lo pegue y corri esto:
ubuntu@ip-172-31-25-45:~$ sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
vamos mejor
si
19:27
corro este comando ahora ?
sudo certbot --nginx -d fotolonchodb.com -d www.fotolonchodb.com
a ver si anda ahora el certbot
sisi
ubuntu@ip-172-31-25-45:~$ sudo certbot --nginx -d fotolonchodb.com -d www.fotolonchodb.com
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Requesting a certificate for fotolonchodb.com and www.fotolonchodb.com
Encountered exception during recovery: certbot.errors.MisconfigurationError: nginx restart failed:
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] bind() to [::]:80 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
ahh
tenes que desactivar el nginx primero
asi el certbot puede ejecutarlo
como lo desactivo?
tenes ubuntu en el servidor?
19:29
si
primero hace "sudo systemctl status nginx.service"
a ver si es eso que dije
ubuntu@ip-172-31-25-45:~$ sudo systemctl status nginx.service
× nginx.service - A high performance web server and a reverse proxy server
Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; preset: enabled)
Active: failed (Result: exit-code) since Wed 2024-11-13 18:39:52 UTC; 49min ago
Duration: 23min 3.109s
Docs: man:nginx(8)
Process: 2957 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=1/FAILURE)
CPU: 6ms

Nov 13 18:39:52 ip-172-31-25-45 systemd[1]: Starting nginx.service - A high performance web server and a reverse proxy server...
mmm, parece que no
sino hace "sudo ps aux | grep nginx" a ver si ya lo abrió otra cosa
ubuntu@ip-172-31-25-45:~$ sudo ps aux | grep nginx
root 2933 0.0 0.3 11764 3296 ? Ss 18:35 0:00 nginx: master process nginx -c /etc/nginx/nginx.conf
www-data 2936 0.0 0.5 13116 5084 ? S 18:35 0:00 nginx: worker process
root 3041 0.0 0.7 17132 6912 pts/3 S+ 18:42 0:00 sudo journalctl -u nginx
root 3042 0.0 0.2 17132 2480 pts/4 Ss 18:42 0:00 sudo journalctl -u nginx
root 3043 0.0 0.7 20728 7780 pts/4 S+ 18:42 0:00 journalctl -u nginx
ahh si esta vivo el proceso
hace sudo systemctl deactivate nginx.service
y sudo systemctl stop nginx.service
me equivoque
19:33
el primero no me lo tomo
el primer comando era sudo systemctl disabel nginx.service
sudo systemctl disable nginx.service
ubuntu@ip-172-31-25-45:~$ sudo systemctl disable nginx.service
Synchronizing state of nginx.service with SysV service script with /usr/lib/systemd/systemd-sysv-install.
Executing: /usr/lib/systemd/systemd-sysv-install disable nginx
Removed "/etc/systemd/system/multi-user.target.wants/nginx.service".
bien, ahora corro sudo systemctl stop nginx.service ?
ahora hace de nuevo "sudo ps aux | grep nginx" para ver si esta en ejecucion
si queres "sudo systemctl stop nginx.service " pero creo que ya lo mató
ubuntu@ip-172-31-25-45:~$ sudo ps aux | grep nginx
root 2933 0.0 0.3 11764 3296 ? Ss 18:35 0:00 nginx: master process nginx -c /etc/nginx/nginx.conf
www-data 2936 0.0 0.5 13116 5084 ? S 18:35 0:00 nginx: worker process
root 3041 0.0 0.7 17132 6912 pts/3 S+ 18:42 0:00 sudo journalctl -u nginx
root 3042 0.0 0.2 17132 2480 pts/4 Ss 18:42 0:00 sudo journalctl -u nginx
root 3043 0.0 0.7 20728 7780 pts/4 S+ 18:42 0:00 journalctl -u nginx
parece que no
sino "sudo kill 2933" y "sudo kill 2936"
y luego "sudo ps aux | grep nginx " para ver si ya no estan mas
19:36
ubuntu@ip-172-31-25-45:~$ sudo ps aux | grep nginx
root 2933 0.0 0.3 11764 3296 ? Ss 18:35 0:00 nginx: master process nginx -c /etc/nginx/nginx.conf
www-data 2936 0.0 0.5 13116 5084 ? S 18:35 0:00 nginx: worker process
root 3041 0.0 0.7 17132 6912 pts/3 S+ 18:42 0:00 sudo journalctl -u nginx
root 3042 0.0 0.2 17132 2480 pts/4 Ss 18:42 0:00 sudo journalctl -u nginx
root 3043 0.0 0.7 20728 7780 pts/4 S+ 18:42 0:00 journalctl -u nginx
uno murio falta el otro no ?
ah no, murieron los dos primeros si
no, ya está. me parece que el segundo era un hijo asi que se murio con el primero
ahora intenta el certbot
sudo certbot --nginx -d fotolonchodb.com -d www.fotolonchodb.com
ubuntu@ip-172-31-25-45:~$
sudo certbot --nginx -d fotolonchodb.com -d www.fotolonchodb.com
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Requesting a certificate for fotolonchodb.com and www.fotolonchodb.com

Certbot failed to authenticate some domains (authenticator: nginx). The Certificate Authority reported these problems:
Domain: fotolonchodb.com
Type: unauthorized
Detail: 76.76.21.21: Invalid response from http://fotolonchodb.com/.well-known/acme-challenge/FYrs97DQgTWv8med15S6vbx07zqsxmMf89qVBRRdO9w: 404
Ahh, parece que no anda la parte de la configuración que muestra el directorio .well-known
ahh y tiene solucion eso? yo realemente estoy perdido en esto
hay que ver porque no puede acceder desde afuera a esa carpeta
dejame pensar
19:39
mil gracias
por alguna razon "https://fotolonchodb.com/.well-known/acme-challenge" me esta devolviendo un json, no deberia pasar
entiendo, algo que configure mal yo?
no se, donde habra algo en /etc/nginx/nginx.conf tal vez?
no se bien como fijarme , yo te sigo, ya no se que probar yo
sos el unico que me dio alguna respuesta
hay algo sensible en /etc/nginx/nginx.conf? sino pasalo asi lo veo
19:44
entiendo que no, como hago para pasartelo
abrilo con nano y copialo
ahh, otra cosa
ya tiene ssl el sitio, tenes idea por que?
seria nano /etc/nginx/nginx.conf no ?
claro
que sitio tiene ssl? estoy usando vercel para el front y tengo el back en la instancia de aws, pero tengo un dominio tmb
que esta en el medio
este "https://www.fotolonchodb.com/login"
19:46
esto es lo que tengo en vercel, le hice unas configuraciones dns con el dominio que tengo en amazon
ahh
pero ya estoy medio perdido, osea que tiene ssl y que no
o sea que lo del ssl probable sea por amazon
user www-data;
worker_processes auto;
pid /run/nginx.pid;
error_log /var/log/nginx/error.log;
include /etc/nginx/modules-enabled/*.conf;

events {
worker_connections 768;
# multi_accept on;
}

http {

##
# Basic Settings
##

sendfile on;
tcp_nopush on;
types_hash_max_size 2048;
# server_tokens off;

# server_names_hash_bucket_size 64;
# server_name_in_redirect off;

include /etc/nginx/mime.types;
default_type application/octet-stream;

##
# SSL Settings
##

ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3; # Dropping SSLv3, ref: POODLE
probablemente*
19:47
si tiene sentido
no hay nada raro en ese archivo
que complicado no lo puedo creer
ahh ya se
crea un archivo en /var/www/certbot
desde donde estoy no hace falta ir a ninguna carpeta?
a ver que sale cuando intentamos entrar a "https://www.fotolonchodb.com/.well-known/acme-challenge
no es necesario
seria nano /var/www/certboot/algo
y ponele texto
19:51
osea ejecuto el comando nano /var/www/certboot/probando
te parece bien?
claro
adentro que le pongo?
probando 123 asi solo
esta bien?
sisi
Error writing /var/www/certboot/probando: No such file or directory ]
ahh
faltaria crear /var/www/certbot
ah, es con una sola o
19:54
[ Directory '/var/www/certbot' is not writable ]
ahh, necesitas sudo
sudo nano /var/www/certbot/probando
ahi ya escribi y lo cerre
que comando probamos ahora
ahora en fotolonchodb.com/.well-known/acme-challenge/probando deberiamos poder ver el archivo
pero devuelve un json
mmm
una pregunta vercel tiene codigo del lado del servidor?
o solo es frontend
dividi el proyecto en frontend y backend, solo subi frontend a vercel te paso el github del proyecto para que lo veas y sepas que tengo en la instancia en aws (osea el bakcend) y que en verce (carpeta frontend)
https://github.com/hartoy/fotoloncho
en la instancia aws tmb tengo la base de datos, que es el archivo sql
hace "sudo ps aux | grep nginx"
a ver si se esta ejectuando
19:59
ubuntu@ip-172-31-25-45:~$ sudo ps aux | grep nginx
root 3041 0.0 0.7 17132 6912 pts/3 S+ 18:42 0:00 sudo journalctl -u nginx
root 3042 0.0 0.2 17132 2480 pts/4 Ss 18:42 0:00 sudo journalctl -u nginx
root 3043 0.0 0.7 20728 7780 pts/4 S+ 18:42 0:00 journalctl -u nginx
root 3530 0.0 0.3 11916 3372 ? Ss 19:37 0:00 nginx: master process nginx -c /etc/nginx/nginx.conf
www-data 3533 0.0 0.4 13268 4740 ? S 19:37 0:00 nginx: worker process
ahh si esta abierto
ahh, ya entendi creo
tengo fe !
en el dominio tenes vercel ahora no?
tendria que apuntar al backend de alguna forma
si entro a settings en vercel tengo en domains esto :

no me deja pegar la imagen
pero tengo toda la parte de dns configurada
claro
20:03
me hizo armar dos puertos cnma algo asi
y dps la viarable de entorno configurada tmb al dominio
tendrias que crear un subdominio para la api
y configurarlo para que apunte al backend
o queres que el nginx maneje todo?
te soy sincero, quiero que funcione, hace 3 dias que estoy con esto, con que funcione bien y se lo pueda entregar al cliente soy feliz
la opcion que vos digas me va a parecer bien
te entiendo
me podrias guiar para hacer lo que falta? de la manera que vos digas
bueno, entonces vamos a hacer eso que dije de crearle el subdominio a la api
20:07
excelente
el aws te da una ip fija o como es?
entiendo que si que la instancia tiene una ip
una public ipv4 address
puede ser?
sisi
podes crearle un subdominio?
osea entiendo que a un dominio le puedo crear un subdominio
a la instancia no
estoy en lo correcto?
claro, le creas un subdominio al dominio, y haces que apunte a la ip de esa instancia
20:10
a ver voy a ir a hosted zones donde tengo el dominio que saque hoy
api.fotolonchodb.com
algo asi
ok estoy viendo como sacar un subdominio , ya lo hago
oka
si armo una meet y te comparto pantalla te ayudaria o es lo msimo por aca? yo para hacerlo mas rapido
prefiero hacerlo por aca
20:11
ok
estoy creandolo en value entiendo que tengo que poner la ip de la instacia no ? la que te dije
sisi
ok ya casi termino
oka
ok ya lo tengo, es de type A y en a value dice el ip de la instancia se llama api.fotolonchodb.com
alguna idea de cuanto tarda a que haga efecto?
20:19
en que sentido que haga efecto?
si ya esta listo para usar decis?
claro
entiendo que ya esta, hay alguna manera de comprobarlo?
entre y no anda
dice que tarda de un dia a tres jaja
20:22
nono no tarda tanto por que yo saque un dominio hoy y tardo 2 minutos
ahh
no puedo creer que me voy a quedar aca, cuando estabamos encontrando al solucion despues de tanto tiempo
es que faltaria eso, que el dominio funcione y ya podes sacar el certificado ssl
y configurar para que nginx devuelva lo de la api
podemos esperar un poco? no se si lo voy a lograr solo
ya llevo 3 dias haciendolo
bueno
20:27
lo que veo es que ya cree un subodominio puede ser? osea ya tengo un type A creado lo que no entiendo es por que apunta a otra ip
claro, supuestamente tarda un tiempo hasta que todos sepan la ip de ese subdominio
bueno esperemos un poco
por las dudas no me queres decir que tendria que hacer, por si tarda mucho y no estas
mmm, habria que cambiar en la configuracion todo lo que diga fotolonchodb.com api.fotolonchodb.com
o sea agregarle el api.
en tu frontend configurarle para que haga peticiones a api.fotolonchodb.com tambien
si podes, crea un subdominio api2 pero que sea de tipo CNAME
no se si ese es mas rapido de propagar
pruebo creandolo
mietnras que se crea, te pregunto
por que crear un subdomini haria que no tenga los errores que me daba la consola? por que voy a tener que repetir esos pasos
porque tenes el frontend en vercel (y el dominio apuntando ahi)
20:39
entiendo
entonces cuando hacer el certbot, trata de verificar que se crean los archivos pero vercel no sabe de esos
si haces que el subdominio apunte al backend
el backend pide el certificado ssl para el dominio api.algo.com
y ahi si deberia verlos
ok ok
entonces
cuando funcione api.fotolonchodb.com entro a a la consola y que debo escribir
asi me lo dejo anotado
bueno, primero modifica la configuracion del nginx cambiando todo de fotolonchodb.com a api.fotolonchodb.com
luego matas a todos los procesos que salgan en "sudo ps aux | grep nginx"
y haces sudo systemctl stop nginx.service
y sudo systemctl disable nginx.service
sudo certbot --nginx -d api.fotolonchodb.com
lo que cambiar la configuracion lo podria hacer ahora y lo dejo ya armado?
sisi
si termina bien, deberia crear el certificado en "/etc/letsencrypt/live/api.fotolonchodb.com/"
20:44
osea entro a sudo nano /etc/nginx/sites-available/fotolonchodb.com
claro
# Bloque HTTP (puerto 80) para la validación de Certbot
server {
listen 80;
listen [::]:80;

server_name fotolonchodb.com www.fotolonchodb.com;

# Asegura que Certbot pueda verificar el dominio
location /.well-known/acme-challenge/ {
root /var/www/certbot;
}

# Directorio de la web
root /var/www/html;
index index.html index.htm index.nginx-debian.html;

# Configuración general de la web
location / {
try_files $uri $uri/ =404;
}
}
y en server name pongo api.fotolonchodb.com
si
bueno ya lo deje modificado, no puedo creer que tarde tanto
tambien tenes que agregarle esto, para que redirija las peticiones al backend:
location /api {
  proxy_pass      localhost:5000;
  proxy_redirect  localhost:5000 /;
  proxy_read_timeout 60s;

  # May not need or want to set Host. Should default to the above hostname.
  proxy_set_header          Host            $host;
  proxy_set_header          X-Real-IP       $remote_addr;
  proxy_set_header          X-Forwarded-For $proxy_add_x_forwarded_for;
}
20:51
eso donde lo agrego?
antes del ultimo }
despues que hagas lo del certbot, tenes que habilitar el ssl de vuelta
esta parte:
listen 443 ssl;
listen [::]:443 ssl;

# Archivos del certificado SSL proporcionados por Certbot
ssl_certificate /etc/letsencrypt/live/fotolonchodb.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/fotolonchodb.com/privkey.pem;
ssl_trusted_certificate /etc/letsencrypt/live/fotolonchodb.com/chain.pem;

# Configuración de seguridad SSL
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers 'ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256';
# Bloque HTTP (puerto 80) para la validación de Certbot
server {
listen 80;
listen [::]:80;

server_name api.fotolonchodb.com;

# Asegura que Certbot pueda verificar el dominio
location /.well-known/acme-challenge/ {
root /var/www/certbot;
}

# Directorio de la web
root /var/www/html;
index index.html index.htm index.nginx-debian.html;


location /api {
proxy_pass http://localhost:5000;
proxy_redirect http://localhost:5000/ /;
proxy_read_timeout 60s;

# May not need or want to set Host. Should default to the above hostname.
asi está bien
y despues del cerbot entro de nuevo a este archivo y le agrego eso ? no importa si ultimo o primero ?
si, creo que no importa el orden
y hacelo despues de que el certbot genere el certificado
20:54
eso seria despues de generar el certificado para el subdominio
perfecto
ahh y fijate que este bien las rutas
por ejemplo
ssl_certificate /etc/letsencrypt/live/fotolonchodb.com/fullchain.pem;
no se si lo pone ahi
o en /etc/letsencrypt/live/api.fotolonchodb.com
tendrias que hacer un "sudo ls /etc/letsencrypt/live/" para verificar
ok
estoy preocupandome por que no se crea el subdominio
hay alguna manera de que te pueda pedir ayudar mañana si la necesito? por algun lado?
creo que voy a cortar por hoy y esperar que el subdominio se cree
00:00 - 21:0021:00 - 23:00

« first day (3302 days earlier)      last day (24 days later) »