« first day (2597 days earlier)      last day (518 days later) » 

3:39 AM
@cca bienvenido a este chat, volviendo a tu código strcpy no sirve para convertir de cadena a entero y mucho menos para asignarle un valor a un entero
Así como te dijeron en la respuesta pasada puedes asignarle valor directamente a fichas[contador].anio sin usar strcpy: fichas[contador].anio=anioFichas;
 
es.stackoverflow.com/a/572983/262104 que extraño que el window.open no funcione en los snippets
 
@Cris223511.dev yo creo que antes de enviar al usuario a otra pagina veas primero si no ha ocurrido ningun evento por la cantidad de tiempo que el pide.
 
Yo me pregunto, ahora que está de moda hacerle publicidad a chatGPT, las preguntas y sobre todo respuestas, podrían reportarse cómo contenido no deseado?
La descripción dice: Existe solo para promocionar un producto o servicio, no divulga la afiliación del autor.
 
setInterval no le importa si hubo evento o no, pero el quiere que cuando hay tiempo de inactividad.
 
En cierta forma lo están promocionando. Por eso la duda.
@DanielBriceño en realidad si sirve. Pero no con el resultado que probablemente espere xd
 
3:56 AM
Je. si, imaginate que sea una pagina donde tu estas trabajando y de repente se te redirecciona perdiendo todo lo que hiciste :| ;(Tira la computadora)
 
@DanielBriceño Hmmm podría ser algo como esta respuesta? stackoverflow.com/a/4029518/17727129
aunque usan jquery Oo
pero igual, me parece interesante.
 
si, pero creo que hay una variable global que te dice el evento(No estoy seguro llevo tiempo sin usar js)
En teoría debes esperar un segundo, ver si se produjo un evento y si no la variable tiempo aumenta hasta que llegue a los 5m @Cris223511.dev
Ya me retiro, chao.
 
oka, gracias amigo.
 
 
1 hour later…
5:24 AM
Tengo que trabajar en la optimización de mi lenguaje
imposible que sea 20 veces más lento que python
aiuda :c
 
 
2 hours later…
7:13 AM
A las güenas :-)
Asco de viernes :-(
 
buenos dias
 
 
1 hour later…
8:38 AM
Egun on
 
 
2 hours later…
10:38 AM
Sigo flipando muy fuerte con chatGPT, disculpad el off-topic. Os cuento. He visto este video: facebook.com/VT/videos/woman-tries-to-throw-meat-on-the-floor/…
he intentado explicarle la situación a GPT (ya es complicado de describir lo que ocurre), y le he escrito lo siguiente
una persona enfadada quiere manifestar su enfado para lo que toma un recipiente de un mostrador que contiene un trozo de carne y arroja el recipiente al suelo, pero la inercia hace que la carne quede un instante en el aire y después caiga de nuevo dentro del recipiente. Explica cómo reaccionará la persona.
La respuesta me ha dejado boquiabierto, no esperaba que comprendiera la descripción, ni mucho menos que comprendiera su significado "profundo"
    Es difícil saber con certeza cómo reaccionará una persona en una situación como esta, ya que depende de muchos factores, como la personalidad de la persona, la intensidad de su enfado, y la situación en general.
En general, es posible que la persona sienta una mezcla de emociones, como frustración, sorpresa, o incluso vergüenza, cuando vea que la carne ha vuelto a caer dentro del recipiente después de haber sido arrojado al suelo. Es posible que intente recoger la carne y el recipiente del suelo, o que simplemente se aleje de la situación. Sin embargo, como se ha mencionado, es difícil 
 
11:17 AM
> Los modelos de lenguaje como chatGPT son capaces de generar texto a partir de una entrada dada, pero no tienen la capacidad de analizar problemas o tomar decisiones como lo haría un ser humano. Estos modelos son entrenados para producir texto que sea coherente y coherente con la entrada dada, pero no tienen la capacidad de comprender el significado profundo detrás del texto generado. Por lo tanto, no son adecuados para analizar problemas o tomar decisiones de manera autónoma.
En resumen, no lo comprende, sólo busca la mejor coherencia posible. Lo que me llama la atención es lo endemoniadamente rápido que responde.
 
11:29 AM
@MauricioContreras Sí, sí, eso dice "la teoría" que en realidad no lo comprende. Pero a ver, mira el ejemplo que acabo de poner. Claramente parece que no sólo ha comprendido el texto que le he dado, sino que ha comprendido la situación. El hecho de que haya mencionado que la persona puede reaccionar "incluso con vergüenza" es muy significativo
si un mero "predictor de texto" es capaz de generar un resultado que emula perfectamente la comprensión, y hasta la empatía, cabe preguntarse si estas capacidades no son más que propiedades emergentes de la mera predicción
Quizás sólo sea cuestión de escala (no solo del dataset de entrenamiento, sino de la cantidad de contexto e historia previa a tener en cuenta para la predicción)
 
@abulafia, creo que le estás asignando capacidades no reales a chatGPT. Potente es, sin duda, capaz de introducir elementos del lenguaje natural que otras IA posiblemente no pueden. Pero "comprensión" en términos de conocimiento, es algo que no tiene. ¿Cuántas preguntas de personalidad o de simple sicología han sido usadas como entrenamiento? ¿Cuántos patrones asocian "reacción humana" con "sentimientos" (vergüenza)?
Eso no lo sabemos, pero necesariamente hay patrones que hacen que la pregunta parezca haber sido "comprendida".
Nuevamente preguntando a chatGPT (aunque siempre puede estar mintiendo):
> ChatGPT es un modelo de lenguaje que se entrena para producir texto coherente y coherente con la entrada dada. En general, estos modelos no tienen la capacidad de comprender el significado profundo detrás del texto que generan, sino que simplemente buscan coincidencias y coherencia en la entrada para producir una salida que sea coherente. Por lo tanto, no pueden comprender el texto de entrada de la misma manera que lo haría un ser humano.
A veces me imagino a chatGPT así:
En algún suburbio de Mumbai
XD
A partir de ahora, le pondré entonación (en mi mente) a las respuestas de chatGPT. Behatar
JAJAJA
 
 
2 hours later…
1:27 PM
@Christian XD. Python es un lenguaje super optimizado(Muchas gente lo actualizan), ya estoy saliendo de vacaciones, te intentare ayudar.
 
 
1 hour later…
2:31 PM
@gbianchi un usuario, 2 cuentas:
Ambas interactúan aquí:
0
Q: ¿Por que no me reconoce el archivo .css en Flask?

Blasperalta 09Tengo el archivo css en la carpeta static, los html en la carpeta templates. Sin embargo, cuando abro el archivo no cambia el estilo del archivo. En la consola me dice que el archivo no existe. En la consola de Chrome también me dice que el archivo no existe [] Esto es el código que tengo que se...

 
3:04 PM
Se me ocurren dos posibilidades. Que no tenga amigos entonces habla consigo mismo. O que tenga trastorno de identidad disociativo.
 
 
1 hour later…
4:17 PM
jajaja
 
 
2 hours later…
6:13 PM
@DanielBriceño ok, no te preocupes, igual me resulta interesante así que también ando investigando
 
6:30 PM
@Trauma como que mi clase sea un iterador? Ando leyendo pero no entiendo nada
 
6:43 PM
@Christian ¿¿ ?? Pues anda que yo ... jejeje ... ni idea de lo que dices O_o
 
@Christian iterador: que implementa next
 
@MauricioContreras Eso es en python ;-p
 
No hablan de Python?
:p
 
@MauricioContreras Si me ha mencionado a mi, lo dudo xD
 
@Trauma XD
 
6:54 PM
En C++ es un pelín mas ... complicadillo xDD
Oye, ni idea de lo que es un ContiguousIterator de esos O-O
 
7:06 PM
@Trauma osea tener un iterador, como los de vector donde haces vector<>::iterator iter; y todo eso
@MauricioContreras por estos momentos nop
 
No se de que estas hablando, pero un TrivialIterator solo ha de implementar el operator*( )
Adicionalmente, le puedes poner los operadores ++, --, +=, -=, == y !=
Y ya para hacerlo completo, el operator[]
Depende de para que lo quieras usar, necesitaras mas o menos cosas
 
bueno y cómo puedo usar un for en mi clase Token algo como for(auto elemento: token)
hasta donde sé se necesita método .begin() y .end()
 
En ese caso, elemento también ha de terner un begin( ) y un end( ), y ambos han de retornar un iterator que se pueda comparar entre si
pero como iterador te basta un puntero corriente y moliente
osea, que begin( ) y end( ) devuelvan punteros a cosas
el mismo tipo de puntero, logicamente :-)
 
Ya me perdí
 
que son cosas distintas
un iterador es una cosa
y un iterable es otra cosa, que tiene un begin( ) y un end( ), y ambos han de retornar iteradores compatibles
un iterador es una abstracción de puntero
es decir, un puntero es un iterador
un iterador es una especie de puntero artificial
 
7:13 PM
Mmmm... creo que entiendo
voy a intentar hacer algo
 
con lo que te he dicho tienes para ir empezando :-)
pero eso no tiene nada que ver con la velocidad, es una forma de poder usar algorrithm con nuestras propias clases
no hay diferencias de velocidad entre un for( ) normal (con variable numérica) y un for de rango
 
Lo sé, solo quiero evitar tener que crear una instancia de Token en cada iteración
Tengo algo como:

            string valor = iterable_.getValor();
            for(char c: valor)
                iterable.push_back(Token('"' + string(1, c) + '"', iterable_.getLinea()));
Y luego hago esto:
 
que cosas mas raras haces O_o
 
for(auto elemento: iterable){
    vars.agregar(var_control.getValor(), elemento);
    run(contenido_for, vars);
}
@Trauma Que tiene de raro?
 
jejeje ... hombre, sin saber que es cada cosa, es un galimatias completo xDD
Como si yo te pongo esto:
 
7:18 PM
Es el código para "tratar" de procesar ciclos for
 
template< typename T > static inline T realIndex( T size, int idx ) {
    if( idx < 0 ) {
        size = static_cast< IndexType >( std::abs( idx ) );
    } else {
        size -= static_cast< IndexType >( idx );
    }

    return size;
}

Value StackFrame::operator[]( int idx ) {
    return Value( pimpl_->operator[]( realIndex( pimpl_->size( ), idx ) ) );
}
así aislado, cualquier cachocódigo es un galimatias xDD
@Christian Una cosa si te digo: cuanto mayor nivel tenga tu ejecutor, mas rápido será
es decir, tener una función optimizada para hacer los for es mucho mejor que varias funciones para ejecutar los componentes individuales
Cuanto mayor nivel, mejor
 
Osea es mejor tener una sola función que haga todo el procesamiento del ciclo for a tener varias funciones que hacen cosas separadas?
 
a tener varias funciones que interpreten cosas separadas
 
Cómo así?
yo ya ando por las nubes
 
tu estás haciendo solo un interpréte ¿ no ?
 
7:21 PM
Sip
 
no usas máquina virtual ni nada
 
nada de eso
 
pues entonces va a ser lento de la leche por los siglos de los siglos :-)
 
amen
 
XDD
 
7:22 PM
Por qué va a ser lento?
 
porque es un intérprete
es inherente a lo que estás haciendo
 
Pero el mio es muuuuuuuuuuuuuuuuuuuy lento
25 seg para un for que itera dede 0 hasta 100000
 
jojojojo
eso es lento de cajones xDD
 
Pues si :C
 
Los detalles de implementación también son importantes; habría que ver como haces las cosas por dentro
Minimiza copias, pre-reserva la memoria en lugar de pedir por trozos, ...
haz inline todo lo que se pueda ...
 
7:25 PM
Aún no sé nada de lo inline
    void eval_for(vector<Token>::iterator &it, vector<Token> &tokens, Variables &vars){
        Token var_control = *(++it);
        int linea_var_control = var_control.getLinea();
        vector<Token> contenido_for;
        it++;

        if(it->getValor() == "desde"){
            int inicio, fin;
            it++;
            inicio = it->getTipo() == IDENTIFICADOR ? vars[it->getValor()].parse<int>() : it->parse<int>();
            vars.agregar(var_control.getValor(), Token(to_string(inicio), linea_var_control));
 
que pongas en el .h todo lo que puedas
 
@Trauma Tan necesario es el .h?
Para algunas cosas me cansé y lo puse solo en cpp
 
en realidad no, para nada
depende de como lo hagas, es que hay infinatas variaciones
si haces una librería, el .h es muy importante para poder modificar la implementación sin tener que recompilar el código que lo usa
si es un ejecutable, los .h solo ayudan a reutilizar código
 
Me he dado cuenta que si elimino el llamado a run dentro del for el tiempo se reduce a 6 seg
@Trauma Pues lo mio es solo un ejecutable
 
lo que dije antes, depende de como se usen las cosas :-)
 
7:29 PM
Es que según yo todo está bien, las cosas las paso por referencia
y la función run es solo una serie de ifs
 
¿ y copias internas en las funciones a las que pasas esas referencias ?
¿ y cadenas que se crean poco a poco ?
y variables internas de tus funciones ?
Son MUCHOS detalles
O incluso muchos if ... else ... seguidos ... igual te interesaría usar punteros a funciones ...
Cada caso es un mundo xD
 
Dios iluminame o eliminame
 
Casi todo lo dicho vale también para python, solo que ahí se nota menos :-)
 
@Trauma Cómo usaria punteros a funciones en vez de ifs?
 
pues depende de que hagan esos if( ) xD
si en lugar de if( ) puedes usar switch, es candidato para usar punteros a funciones
o igual te interesa hacer esas comprobaciones por bloques ... es que son mundos
jejeje ... python no tiene switch, pero C++ si
 
7:34 PM
Eso sería lo que hay en el run, creo que si puede ir en un switch
 
Eso pide un switch( ) a gritos :-)
Ahora, piensa. Si ese tipo es un valor numérico de 0 a 10 (por ejemplo)
 
En serio un switch es más eficiente que un if?
 
puedes tener void (*executor)()[9];
@Christian Los switch no tienen implementación definida, el compilador es libre de implementarlos como desee ... igual hace una sucesión de comparaciones, o crea una tabla hash
 
A yaaa
@Trauma No entendí el ejemplo
 
un array de punteros a funciones que ejecutan el código
si tipo es 5, llamas a executor[5]( )
sin comparaciones ni nada, directo
A ver, que en el fondo eso son nanosegundos de diferencia. Normalmente, una optimización general es mejor
 
7:40 PM
A yaa
 
pero ya nos estamos saliendo de madre :-)
 
Bueno, voy a seguir tus indicaciones y modificaré el código
Gracias
 
Ya me iras contando .-)
Me entró envidia y estoy haciendo mi propio lenguaje yo también
Hoy comencé con la máquina virtual
 
Aún no entiendo muy bien cómo hacer una maquina virtual, por eso no hice nada de eso
 
Mas o menos, una cosa que ejecuta instrucciónes, que no son mas que números
0 -> no hace nada
1 -> coger 2 elementos de la pila y sumarlos
2 -> coger 2 elementos de la pila y restarlos
...
 
7:45 PM
Más confundido quedé ._.
 
Pues mas o menos lo mismo que una CPU de verdad
pero de mentira
 
Creo que mejor espero a terminar mi carrera para hablar de eso
 
Como quieras :-)
Te garantizo que se entiende sin carrera jejeje
 
A ver si cuando termine de optimizar mi lenguaje hago ahora una MV
 
Un lenguaje que use MV tiene 2 partes, el compilador y la MV en si
el compilador genera el bytecode a partir del codigo fuente
y la MV lo ejecuta
 
7:51 PM
Sí esa parte la sé, abulafia me la explicó una vez
 
mi compilador tiene varias partes, de momento solo llevo 1, el tokenizador
 
Cambia los ifs a swicth y ahora no se imprime el array >_<
 
¡ HAHAHAHA !
proverbio chino: Si No Está Roto, No Lo Arregles xDDDDD
 
Jajajaja
 
Son listos, esto chinos xD
Vamos a ver: si un Value es un puntero a un ValuePrivate, duplicar un Value implica duplicar el ValuePrivate
 
7:54 PM
Mi papá dice que más que inteligentes son disciplinados
 
Puede ... no conozco a muchos xD
 
@Trauma Petó mi cerebro
 
es que hay un problema aquí ... un ValuePrivate solo puede existir dentro de una pila, un Stack
Entonces, no puedo duplicarlo sin saber en que pila está
con lo cual Value no puede tener constructor copia
con lo cual el duplicar una pila ha de ser hecho a mano
joer :-(
 
En los líos que te metes...
 
hombre, no quiero que tarde 25 segs en un bucle de 10000 jejeje
ah, espera. Vale
si puede existir fuera de una pila.
... ummmm ... esto va a ser mas complicadillo de lo esperado ...
 
7:58 PM
Siempre es así...
 
ya
mola :-D
hay que poner a trabajar las neuronas, de lo contrario se oxidan
 
Dios, ahora da error un switch
 
ese es fácil
los valores en los case han de ser constexpr
y ponle un default:, o te dará un warning
aunque no haga nada
 
Me da error en el default ._.
./src/Evaluadores.cpp:277:17: error: jump to case label
  277 |                 default:
 
¿¿ ??
en toda mi vida, creo que nunca me dio ese
¿ estás creando cosas en los case ?
 
8:02 PM
Sii....
        switch (next(it_pgma)->getTipo())
        {
        case ASIGNACION:
            it_pgma+= 2;
            Stack stack = eval_expresion(it_pgma, pgma, variables);
            auto expr = stack.get_stack();
            if(expr.getLinea() != -1) variables.agregar(tk.getValor(), expr);
            else variables.agregar(tk.getValor(), Valor(Array(stack.get_array())));
            break;
        default:
            break;
        }
 
uffff ... madre de deity ...
no le gusta que crees instancias en los case
 
Entonces lo saco del case?
 
si te hace falta, usa llaves `case ASIGNACION: { cosas ... }
 
a
ok
 
sin llaves, no sabe donde ha de llamar al destructor, y eso no le gusta
 
8:04 PM
Cosas más raras
 
no, es lógico
toda instancia ha de tener una construcción y una destrucción
ha de tener un ámbito
un switch es un ámbito, el completo
 
Me refería a que no era capaz de identificar donde termina el case
Eso me resulta raro
 
porque el ambito es el switch( ) completo, no un case individual
 
Aa.... entonces si tiene sentido
El identificador variable no se ha definido en el ámbito en que se usa.
Violación de segmento (`core' generado)
Dios en ti confio
 
jojojo ... eres una máquina para romper cosas :-)
 
8:07 PM
Esto está dejando de ser divertido
 
¿¿ ??
Anda ya hombre
¿ Y lo que aprendes ?
Bueno, hora de comer
Enga, me cuiden el sitio :-)
 
Hora de sufrir
 
¡ HAHAHAHA !
T'aluego :-)
 
Bueno. hasta luego
 
8:26 PM
El problema no era el swicth el array sigue sin imprimirse luego de volver a colocar los ifs
matenme
 
9:06 PM
@Christian ok
 
 
3 hours later…
11:45 PM
Dios mio, esto no puede ser posible
Me consume más tiempo asignar una variable que ejecutar una función ._.
Si en mi for solo coloco un imprimir(x); se demora 10 seg para 100000 iteraciones
y si en vez del imprimir coloco a = x; el tiempo sube a 16 seg
Matenme de una vez
 

« first day (2597 days earlier)      last day (518 days later) »