« first day (2190 days earlier)      last day (42 days later) » 

12:02 AM
y como consigo esto:
frames['iframe1']
 
a tu iframe ponle un name y haces frames["el_name"]
 
@Christian y eso lo puedo usar desde document.js???
bueno toca probar
 
prueba, experimenta y sufre
 
se supone que me ivas a ayudar XD
ok ya pude cargar el iframe
 
si te ayude
te dije como acceder al iframe
 
12:15 AM
ahora me hace falta es cargar los archivo JS y CSS desde document.js
@Christian eso no fue lo que pregunte XD
 
al acceder al iframe ya puedes cargar lo que quieras
 
@Christian no
lo considera programatico
debo hacer algo asi:
    const uri = chrome.runtime.getURL('src/html/frame.html');
    fetch(uri)
        .then((response) => injectBuildIframe(response))
con la url de la extension para servirlo localmente
 
Haa... bueno
eso sale de mis conocimientos
 
@Christian si tienes rason esa seria el href
si esta en tus conocimiento pero no lo sabes
en lugar de esto: cssLink.href = "style.css";
debo usar:
cssLink.href = chrome.runtime.getURL('src/css/frame.css');
y lo mismo con el js
 
a claro
se me paso
 
12:22 AM
@Christian hay algo que no se
se supone que con esto
4 mins ago, by Arcanis - The Omnipotent
    const uri = chrome.runtime.getURL('src/html/frame.html');
    fetch(uri)
        .then((response) => injectBuildIframe(response))
estoy leyendo el archivo html...
pero como hago para usar el codigo html ???
response.text???
 
12:35 AM
@Christian sigo necesitando de tu ayuda
no te vayas
 
@Arcanis-TheOmnipotent ni idea de lo que hace injectBuildIframe
yo me la estoy liando con JS
@Arcanis-TheOmnipotent te sirve stackoverflow.com/questions/16194398/…
??
 
12:53 AM
@Christian no lo que necesito ayuda es otra cosa
por ejemplo tengo 3 archivos que necesito capturar ... ok
frame.html fue el primero
pero usa promesas para hacerlo entonces anidar 3 promesas para capturar los 3 archivo como que no ...
hay alguna otra forma???
 
@Arcanis-TheOmnipotent nop, si deseas capturar esos 3 archivos vas a necesitar una peticion para cada uno
Dependes del fecth para obtener los archivos, seguro getURL puede aceptar un array para traer todas las url, pero de igual forma necesitas hacer una petición para traerte el archivo
 
@Christian ok y cual seria la forma mas obtima de traerlos
con la menor cantidad de codigo y almacenarlos por ejemplo en un array o objeto??
 
no me especializo en JS para la eficiencia
obviamente crearás una función
podrías hacer algo como esto:
for (let i = 0; i < 3; i++) {
    let files = []
    files.push(get(urls[i]))

}
 
1:08 AM
var pair = ["SCBTC","XLMBTC"];
    var url = "https://api.binance.com/api/v1/ticker/price?symbol=";


    Promise.all(
      pair.map(p=>fetch(url+p).then(r=>r.json()))
    ).then(
      results=> {
        console.log(data);
      }
    );
 
ni idea de lo que hace pero seguro que sirve
 
@JohnDoe Exacto
 
@Christian jajajaj vez la parte de console.log(data);
en lugar de eso como hago para guardar el dato en un array o objecto
 
declara una variable,por ejemplo myFiles= [] y reemplazas el console.log por myFiles.push(data)
 
ok pero no me funciona
se pierden las llavez
var uris = [html => chrome.runtime.getURL('src/html/frame.html'), js => chrome.runtime.getURL('src/js/frame.js'), css => chrome.runtime.getURL('src/css/frame.css')];


        var components = {};
        Promise.all(
            uris.map(p => fetch(p).then(r => r.text()))
        ).then(
            results => {
                console.log(data);
            }
        );
 
1:23 AM
@Arcanis-TheOmnipotent que llaves?
a ya sé
no, no sé
 
XD
intente con esto pero no me funciona: puedes meterle cualquieras url para probar
var uris = [html => chrome.runtime.getURL('src/html/frame.html'), js => chrome.runtime.getURL('src/js/frame.js'), css => chrome.runtime.getURL('src/css/frame.css')];


        var components = {};
        Promise.all(
            Object.entries(uris).forEach(([key, uri]) => {
                fetch(uri).then(r => components[key] = r.text());
             })
        ).then(
            results => {
                console.log(components);
            }
        );
 
que te sale?
 
document.js:97 Uncaught (in promise) TypeError: undefined is not iterable (cannot read property Symbol(Symbol.iterator))
    at Function.all (<anonymous>)
    at injectElement (document.js:97)
    at MutationObserver.callback (document.js:282)
 
creo que solo debe de ser uris.forEach...
 
1:29 AM
no cuesta nada probar
y que yo sepa el forEach se aplica a los objetos
 
1:41 AM
@Christian mira
0
Q: TypeError: undefined is not iterable (cannot read property Symbol(Symbol.iterator))

Arcanis - The Omnipotentestoy intentando ejecutar varias promesas y de tal manera estoy usando Promise.all de la siguiente forma: var components={}; var uris={}; uris.html = chrome.runtime.getURL('src/html/frame.html'); //obtiene una URL uris.js = chrome.runtime.getURL('src/js/frame.js'); //obtie...

 
2:22 AM
@Arcanis-TheOmnipotent eso si está más raro
 
2:33 AM
@Christian eso es concolon del concolon XD
@Christian javascrip bien deep XD
 
@Arcanis-TheOmnipotent tiene de suerte de ser un software, de lo contrario ya estaría muerto -_-
 
4:15 AM
no entiendo por que no corre XD:
```javascript
async function fetchfiles() {
    return {
        html:await fetch(chrome.runtime.getURL('src/html/frame.html')).then(r=>r.text()).then(r=>r),
        css:await fetch(chrome.runtime.getURL('src/css/frame.css')).then(r=>r.text()).then(r=>r),
        js:await fetch(chrome.runtime.getURL('src/js/frame.js')).then(r=>r.text()).then(r=>r),
    };
}

const components = fetchfiles()

console.log(components.css); // undefined output```
 
4:36 AM
Egun on
 
ya lo resolvi XD
 
 
1 hour later…
5:51 AM
A las güenas :-)
Asco de Jueves :-(
 
6:22 AM
Buenos dias
 
7:04 AM
@Christian si entrenas tu el modelo desde cero, necesitas muchos datos para hallar distancias. En el caso de que tengas pocos necesitas irte a modelos preentrenados si o sí.
Dask es un Framework que es igual que pandas, lo único que utiliza lazy evaluation y está orientado a computación distribuida, es decir, Pandas siempre que hagas operaciones las lanzará en un solo hilo, Dask puede utilizar todos los hilos, máquinas, que tu quieras, lo cual acelera el proceso
Pero Dask no tiene nada que ver con las similaridades, como digo es para poder ejecutar operaciones de pandas de forma distribuida
 
7:44 AM
@Trauma ¡Y queda un lunes más! >_<
 
@PaperBirdMaster Menos mal que es algo mas cortito que los demás :-/
 
8:05 AM
@Trauma No por ello menos terrible
 
No no, ni mucho menos.
Solo algo mas llevadero
@PaperBirdMaster Creo que deberías modificar esto: La única función que es obligatorio implementar en todas las clases derivadas es Base::VirtualPura, si no la implementases en las derivadas no podrías compilarlas.
Dices en todas las clases derivadas
 
8:33 AM
@Trauma ¿Y no es cierto? O_o
 
@PaperBirdMaster Yo entiendo ahí en todas las clases derivas
Basta con tenerlo en una, base de aquella que instanciamos ¿ no ?
 
@Trauma Si ¿y?
@Trauma No se si pillo lo que dices.
 
Yo entiendo que si tienes una jerarquia de, por ejemplo, 3 derivadas (unas de otras), hay que implementar en todas (las 3)
clase1 -> clase2 -> clase3
 
struct B { virtual void f() = 0; }

struct D1 : public B {}; // Error
struct D2 : public B { void f() override {} }; // Ok
 
o cambiando el orden, también sirve ¿ no ?
 
8:36 AM
@Trauma No, porque 3 no deriva de 1, deriva de 2. Quien tiene que implementarla es 2, 3 no tendría por qué implementarla (a no ser que 2 la marque como virtual pura también)
 
Ah, cierto, no leí bien
¿ Y si D2 hereda de D1 ?
Bastaría con hacerlo o en D1 o en D2 o en ambas
 
@Trauma Da igual, hay fallo de compilación, porque D1 no implementa B::f
Espera, te preparo otro ejemplo.
 
¿ Fallo de compilación ? Mientras no iintentes instanciar D1, no debería haber problema
 
@Trauma Fallo de compilación porque al intentar compilar D1 verá que falta implementación de B::f... ahí no tiene nada que ver las instancias.
 
Pues yo no lo tengo tan claro.
 
8:40 AM
struct B { virtual void f() = 0; }

struct D1 : public B { void f() override {} }; // Ok
struct D2 : public B { virtual void f() = 0; }; // Ok

struct DD1 : public D1 {}; // Ok
struct DD2 : public D2 {}; // Error
 
Ok.
No, no Ok jejeje
struct B { virtual void f() = 0; }

struct D1 : public B { }; // Ok
struct D2 : public D1{ void f() override; }; // Ok
 
`B` -> `D1` -> `DD1` es ok porque hay una implementación de `void f()`, esa implementación está en `D1`.

`B` -> `D2` -> `DD2` falla porque no hay una implementación de `void f()`, ni `B` ni `D2` ni `DD2` la implementan.
 
¿ Ese ejemplo que te acabo de poner es incorrecto ?
Mientras no instancies D1, no hay error, ¿ cierto ?
 
@Trauma Depende. f está declarada, pero no está definida. Si en algún sitio no está definida fallará por unresolved external
 
mira que llegas a ser mijitas ...
struct B { virtual void f() = 0; }

struct D1 : public B { }; // Ok
struct D2 : public D1{ void f() override { } }; // Ok
 
8:43 AM
@Trauma Si quieres te miento, pero creo que no es lo que esperas de mi.
 
Hombre, preferiría que no lo hicieras :-)
 
@Trauma D1 no compila, le falta definir f
 
¿ Sin intentar instanciarla ?
 
@Trauma No necesitas instancia para que esté mal... no estamos hablando de plantillas xD
 
Pues lamento discrepar.
Tengo que abandonar esta interesante charla, pero el deber me reclama :-)
Luego seguimos :-D
 
8:47 AM
@Trauma Pues tenías razón u_u
Eso es porque en D1 la definición virtual f() = 0 está implícita.
 
9:06 AM
1
Q: Generar números aletorios **reales** entre 1 y 100 en c#

multiclaseqme gustaría que me facilitéis alguna metodología para generar números reales aleatorios entre 1 y 100 dentro de un array, el método random.NextDouble(),devuelve valores entre 0.0 y 1.0. Lo tengo con enteros: var seed = Environment.TickCount; var random = new Random(seed); double[...

Cuando he leido esto, pense que quería numeros realmente aleatorios
 
@Pikoh ¿Qué futuro le espera a quién se tranca con un problema tan simple?
 
@CandidMoe bueno...hay que ser comprensivos. Hay gente que la matematica la ha visto de lejos :)
 
Algun experto en js y/o programación funcional que me ayude...
Imagina que tengo una lista o array con N elementos. Para cada uno de ellos quiero pasarlo por una función que me puede devolver de nuevo un elemento, o quizás varios
quiero construir una lista "plana" con lo resultante. Usando map() creo que no se puede. ¿Se puede de alguna otra forma funcional?
Por ejemplo, imagina que tengo una función unos() que devuelve una ristra de tantos unos como el valor que recibe como parámetro. Así unos(3) generaría [1,1,1]
 
@abulafia ¿ Puedes usar map primero y luego aplanar, o no te vale ?
 
quiero entonces aplicar esa función a una lista como esta: [2, 3, 2] para que el resultado sea [1,1, 1,1,1, 1,1]
@Trauma Supongo que me valdría... si js tuviera una función aplanar de serie (que no sé si tiene)
Ah, parece que sí tiene una!
 
9:18 AM
Creo que si, que tiene una
 
voy a probar asi, gracias
Vaya.. tengo un problema. La lista resultado no es un Array javascript estándar en mi caso, sino un objeto "proxy" que implementa ciertas funciones array-like, pero no flat
 
aplica map + aplanado, de forma automática
 
Justo lo que necesito! Solo que como digo mi "lista" no es un Array estándar
pero parece que sí que implementa .flatMap(), me sirve!
 
usa apply o call :-)
 
js no tiene una función sort() a la que se le pueda pasar una función-key como python? Sólo admite la modalidad funcion-compare?
 
9:23 AM
@abulafia Ni idea :-)
 
@CandidMoe Un futuro de dependencia de terceros para cualquier cosa laboral. No me extrañaría que llegasen a jefes, donde no sería necesario saber trabajar sólo saber mandar.
@abulafia ¿No te vale al revés? Primero generas la lista [2, 3, 2] y en base a dicha lista generas la de unos.
 
@PaperBirdMaster La lista [2,3,2] no la genero, digamos que es el input. Quiero generar la de unos
pero ya lo he conseguido con .flatMap()
 
@abulafia Mejor me lo pones, recibes [2, 3, 2] y luego recorres la lista, pseudocode incoming:
function f(valores) {
    list result;
    foreach v in valores
        result.append(unos(v))

    return result;
}
 
@PaperBirdMaster Bueno, claramente saben hacer producir a los demás.
 
No se a quién más te refieres en ese plural, al menos este ha sabido sacar una respuesta de SOes (lo cuál no es raro) ahora puede pasar que:

A) Aprenda que no necesita saber nada, sólo saber a quien preguntar.
B) Aprenda al menos lo que ha preguntado y no necesite preguntar más sobre **ese** tema.
Ya veremos qué pasa xD
 
9:32 AM
@PaperBirdMaster "los demás" == "nosotros, los que sabemos"
 
@PaperBirdMaster Gracias. Pero en tu implementación entiendo que unos() retorna otra lista, por lo que el resultado sería [[1,1], [1,1,1], [1,1]]
 
@CandidMoe Ese plural lo pillé. El plural que no pillé fue "saben".
 
además buscaba una implementación funcional con map o similar. La respuesta era .flatMap()
 
@abulafia ¿Y no es [[1,1], [1,1,1], [1,1]] lo que necesitas?
 
@PaperBirdMaster "saben" => Muchos de los que vienen por este sitio a que le hagamos las tareas.
 
9:35 AM
@CandidMoe Ok (pulgar arriba)
 
👍👍
 
@PaperBirdMaster No, buscaba [1,1,1,1,1,1,1], o sea, la tuya pero "aplanada"
si tu pseudocódigo fuera python, bastaba cambiar .append(unos(v)) por .extend(unos(v))
pero yo quería algo tipo: resultado = map(unos, lista), solo que eso producía tu lista en vez de la mía
la solución es (en js): resultado = lista.flatMap(unos)
 
Seriamente hablando, "saber" sobre un tema te hace mal jefe. Cuando no sabes, preguntas, llamas al dialogo, al consenso, al respaldo del grupo. Asi, todo el mundo se siente feliz y considerado, trabajando con empeño y dedicación en aquello que evaluaron como lo mejor.
Y probablemente sacas lo mejor de todos.
Imaginate alguien que tiene opiniones inflexibles sobre su lenguaje de programación favorito, e insiste que su estilo de programación es el único aceptable. Imaginalo dirigiendo un grupo de programadores, forzando reglas, imponiendo normas, incordiando a todo el mundo, generando resentimiento y, finalmente, no llegando a ninguna parte pues entre revisiones y reescritura, nada de valor fue logrado.
 
9:57 AM
@abulafia ¿Y no basta con sumar todos los valores de la lista que recibes y llamar a unos con el resultado? O_o
@CandidMoe No saber sobre un tema también te hace mal jefe, no sabes qué peticiones son realistas, cuales factibles y cuales un disparate. Lo he sufrido en mis carnes xD
Mi época dorada en SOes ha finalizado, me estoy extinguiendo.
 
@PaperBirdMaster Obviamente era un ejemplo sintético mínimo para ilustrar el tipo de problema que quería resolver. Mi caso real no es así, y no vale ese truco.
 
@abulafia Ok :(
 
lo cambio por otro ejemplo en el que el truco no vale. En vez de unos() tengo secuencia(N) que retorna la lista [1, 2, 3, ...., N]. Quiero aplicar esa función a mi lista [2, 3, 2]` para que produzca [1, 2, 1, 2, 3, 1, 2]
 
@PaperBirdMaster A todos nos llega el final, incluso a la reina Isabel.
 
@CandidMoe ¿Ha muerto ya? La última vez que miré estaba viva e iba a dar un discurso en Glasgow para el tema de la cumbre del clima.
 
10:09 AM
@PaperBirdMaster Nos llega el final, ya viene, está ahí, a la puerta ...
@PaperBirdMaster No va a ir a Glasgow.
De ves en cuando aparece alguien que, aunque no sabe, sabe investigar y reducir el problema a lo esencial.
1
Q: Obtener un array con los proximos valores de otro

alfonsomoreEstoy intentando crear un array en pandas con los siguientes valores de otro array pero me aparece un arror de "list assigment index out of range" A alguien se le ocurre otra manera de poder conseguirlo. Gracias x1=[] for i in range(4): x1[i]= df['Total'][i] Un saludo

Podriamos tener un "novato destacado del mes", premiando la mejor primera pregunta del mes.
Asi podemos construir una colección que sirva de ejemplo práctico a "¿cómo preguntar?"
 
10:29 AM
@CandidMoe Lo acabo de ver, va una grabación suya xD
 
@PaperBirdMaster Me da pena; nació en un Imperio y termina en un reino en ruinas.
 
11:03 AM
@CandidMoe Muy profundo, pero a mi no me despierta esos sentimientos, me da un poco como igual xD
Estoy con mis gráficas, @eferion , @Trauma y @abulafia sois los tops en C++
 
@PaperBirdMaster ¿ Yo ? Si llevo 1 año sin aparecer por el sitio :-O
 
Yo en C++? Eso es porque respondí a alguna pregunta que aunque estaba etiquetada como C++, del lenguaje sólo usaba cout
de C sí que considero saber alguna cosa, pero de C++ na de na (salvo claro está el subconjunto compatible con C)
 
11:44 AM
Hola buenas, a ver si alguien me puede ayudar
Llevo poco tiempo utilizando GIT y GITHUB, utilizo vscode para programar, ayer intente enviar solo un archivo por git de todos los cambios que tengo, y ahora parece que se han enviado todo, me salen mucho mensajes en rojo, pero en el repositorio no están los cambios
Que se puede hacer ante esta situación? se puede revertir? Tengo el trabajo ahí de varias semanas y no lo quiero perder
 
11:59 AM
@Miguel "muchos mensajes en rojo" no pinta bien
 
Si me a desaparecido la mayoria de archivos modificados
y en los que queda me pone fusionar cambios mediante combianación
no entiendo nada, soy bastante nuevo en esto
de GIT
 
qué operación git hiciste?
 
utilizo el vscode como ayuda
 
usaste un git de línea de comandos o alguna versión gráfica/plugin?
 
simplente l edi al + en el archivo que queria subir
 
12:01 PM
Mientras no sea git rm. XD
 
le pues cometario y le di a la operación de subir
 
@Miguel eso no lo sube, solo lo añade al "index" local
 
eso es bueno o malo??
no conozco mucho sobre esto
 
cuál es "la operación de subir"? commit o push?
(quiero decir qué entiendes tú por "operación de subir")
 
creo que ya la de push
 
12:02 PM
Bueno, push puede fallar si el repositorio remoto ya tenía cambios hechos por otra persona
 
el commit si no me equivoco se hacer cuando le das al check
 
o por ti mismo desde otro equipo
o a través de la web de github
te dio fallos el push?
 
no anote lo que me dijo y le di a ok sin pensar la verdad
 
no entender mucho de algo y darle a ok sin pensar son recetes para el desastre :-)
 
luego en la terminal le hago un git status y salen muy pocos archivos
 
12:03 PM
qué te sale
 
@abulafia sip
On branch main
Your branch and 'origin/main' have diverged,
and have 2 and 2 different commits each, respectively.
  (use "git pull" to merge the remote branch into yours)

You have unmerged paths.
  (fix conflicts and run "git commit")
  (use "git merge --abort" to abort the merge)

Unmerged paths:
  (use "git add <file>..." to mark resolution)
.... debajo archivos en rojo
 
sospecho que había cambios en el repositorio remoto, y que le diste a una opción de "sincronizar" o similar, la cual intenta antes bajarse los cambios remotos para después subir los tuyos, pero que esa "bajada" de los cambios remotos quedó a medias por culpa de conflictos
 
y seguido:
no changes added to commit (use "git add" and/or "git commit -a")
 
efectivamente, tenes conflictos
 
@abulafia No recuerdo hacer ningún cambio, pero no lo descarto
 
12:05 PM
eso significa ficheros que has cambiado tú y que también estaban cambiados (de otra forma) en remoto
 
aveces me lio con esto de GIT
 
mira qué ficheros te está señalando git como en conflicto
editalos con VSCode y verás en ellos zonas marcadas con marcas especiales, con esta pinta <<<<<<<<<<<<<<<<
y también >>>>>>>>>>>>>>>
esas zonas muestran qué cambios hiciste tú, y qué cambios hizo el remoto
 
si tienes razón
 
tienes que editarlo y dejarlo "bien"
es decir, borrar las marcas y dejar solo una de las opciones
la que tú consideres correcta
después de eso los añades a git con add y después haces git commit
eso terminará lo que había quedado a medias
y ahora tengo que irme, suerte!
 
Muchas gracias @abulafia
 
12:16 PM
@Trauma Pues ahí sales
@abulafia Son las estadísticas del sitio, mirad los usuarios principales de C++: 1: Yo, 2: eferion, 3: trauma, 4: abulafia
 
@PaperBirdMaster ya, ya, pero me ratifico en lo dicho. Serán preguntas de c, mal etiquetadas como c++
 
@abulafia Podría poder ser posible.
 
12:44 PM
@Trauma ¿Estabas buscando una manera elegante de encadenar elementos de una colección con un separador (por ejemplo coma) sin que se arrastrase el separador tras el último elemento?
 
:59468059 def auto_csv(lista, separador):
    return separador.join(str(x) for x in lista)

print(auto_csv([1,2,3], ','))
=> 1,2,3
 
Adoro Python.
 
Lo se.
 
Pero igual soy capaz de mencionar sus fallas. Es un amor racional.
 
1:00 PM
Me pasa igual
Creo que se debe a que la forma en que python expresa los algoritmos se parece mucho a la forma en la que yo mismo los expresaría en pseudocódigo. Es decir, de un modo bastante literal "python soy yo". Y claro, todos estamos enamorados de uno mismo.
 
@PaperBirdMaster Hombre, no te niego que quitas el if( ) { } problemático mio del código, eso te lo compro
Pero tanto como elegante ...
jejeje
 
@abulafia Para mi es el desafío creativo: ¿cómo resolver el problema de la manera más compacta, elegante, versátil y general?
 
1:14 PM
todos uds deberian estar en code golfer donde les encantan esas cosas extravagantes...
 
Sï, hay algo de eso. Escribir código python me ayuda a pensar. Si algo no acabo de entenderlo (un concepto matemático, una nueva tecnología, ...) busco una implementación en python y entonces lo entiendo.
 
@gbianchi Me di una vuelta por ahí y son "ligas mayores"
 
@CandidMoe jajajajaja
 
Esto ya es una especie de FAQ, pero no doy con la respuesta canónica
0
Q: Hice este programa que debería pedir un numero, luego pedir una opción pero no me pide nada

Andrés GómezQue debería hacer: el programa debería pedirme un numero, luego pedirme una opción(s para sumar, r para restar, m para multiplicar o d para dividir) y cuando yo elija una opción me pedirá el otro valor con el cual se hará la operación El problema es que funciona bien hasta donde me pide el primer...

el famoso "retorno de carro que queda sin leer por scanf() en stdin y causa problemas más adelante"
(a veces acompañado del inútil intento de arreglarlo con el inoperante fflush(stdin))
 
@PaperBirdMaster hay una canonica sobre eso? se que en java hay
 
1:26 PM
@gbianchi yo uso static siemple. No le veo demasiado sentido al singleton
(respondiendo a tu pregunta de ayer)
 
@PatricioMoracho He creado y he adaptado una respuesta a mi pregunta en donde he tenido en cuenta el concepto de funciones tabulares y tus comentarios frente al uso de temporales en una función, quisiera que me apoyaras con tus comentarios si es valido lo que he publicado y si la función es funcional de esa manera
 
@Pikoh si.. es lo que estaba viendo.. es mas.. el unico caso de uso que encontre para el singleton, es que la clase dispare un evento...
@Pikoh gracias!!!
 
:*
 
@JohnDoe Ni bien pueda lo miro y te comento
 
que sea static complica salado testear el código... pero si no pensás escribir tests (YOLO!) static all the way
 
1:37 PM
yo paso de TDD. Me remito al comentario de @PaperBirdMaster que esta fijado XD
 
@g3rv4 Test? que es un test?
 
yesterday, by PaperBirdMaster
Mi experiencia con TDD se puede resumir en lo siguiente:

- Pongo un ladrillo, compruebo que no se cae.
- Pongo otro ladrillo, compruebo que no se cae.
- ...
- Pongo el ladrillo 234998234, compruebo que no se cae.
- Me doy cuenta de que he construido la casa al lado de un acantilado.
 
mi codigo compila y hace lo que tiene que hacer querido.. siempre... salvo cuando tira un error en tiempo de ejecucion como recien.. pero son detalles.. como no vas a validar si los campos tenian datos.. le puede pasar a cualquiera...
 
:D en Process Street, normalmente demoraba 2x o 3x en tests de lo que demoraba en hacer una feature
no está mal, pero es mucho más lento
 
@g3rv4 yo soy de los que opinan, que si ademas de escribir el codigo, escribis los test, entonces hay montones de cosas que no vas a ver.. para mi, los test los tiene que escribir un tercero...
mas alla de test basicos...
 
1:46 PM
eso si tu idea es encontrar tus bugs... pero los tests sirven para mucho más que eso
permite que yo descubra que rompí tu código
escribir vos mismos tus tests es decir "si alguien hace que esto no sea verdadero, rompieron esto"
 
@PatricioMoracho Te agradezco cualquier comentario
 
@g3rv4 por eso.. los test que los escriba un tercero...
 
@gbianchi no, para mi está bueno escribir tests que protejan mi código
pero claro, si me pagan por eso
mis proyectos personales son para divertirme
y escribir tests no me divierte
 
Me gusta el TDD pues soy flojo. Escribo una línea de código y ejecutó un test. Si el test falla, escribo más tests para descubrir por qué falló el primero. Ahora tengo una línea perfecta, probada y comprobada, y además una cantidad de tests que me ayudaran a detectar errores al escribir la siguiente línea de código.
 
@Trauma ¿Qué es lo inelegante que ves?
@gbianchi No me suena que la haya, pero ten en cuenta que no es mi territorio.
 
1:56 PM
@PaperBirdMaster Mi concepto de elegante no es exactamente igual al tuyo: return std::accumulate(std::begin(c) + 1, std::end(c), std::to_string(*std::begin(c)), [](std::string a, auto b)
 
@g3rv4 es lo único que si que le veo utilidad
 
Aunque añadir el primero y un bucle para los demás ahorra el if( ) ... y no se me había ocurrido :'-(
 
@Trauma Mi concepto de elegante es "Si hay una función para hacerlo, no lo hagas tú", y llamar a std::accumulate cumple con dicha elegancia.
Además de ser apenas un one-liner
 
jejeje ... cierto en todos sus detalles :-)
Pero mi concepto choca frontalmente con usar una llamada a una función externa
@PaperBirdMaster ¿ Esto compilará ? operator const std::string &( ) const noexcept { return value; }
El operator const std::string &
 
@Trauma No es una lambda cualquiera (te da leche merengada, hay que lambda tan saladda, tolon, tolon... tolon, tolon) es una lambda genérica.
 
2:01 PM
@PaperBirdMaster jejeje ... ¿ también mata moscas con el rabo ? XDDD
 
@Trauma Jamás he intentado crear un operador de conversión a referencia, me extrañaría que funcionase.
 
Esa es mi duda ahora mismo :-/
 
Es más, me parece que los operadores de conversión son conversión a valor sin categoría (es decir, no-cv)
 
@JohnDoe Están perfectas las conclusiones a las que llegaste en tu respuesta, solo dos comentarios de maniático, los insert siempre que sean explícitos, es decir definirlos con las columnas que vas a insertar, aunque en tu ejemplo no cambia nada, es una buena práctica. Por otro lado, fuera del tema de la función, me da la impresión que baja la circunstancia de @AnioMes6 < '20160101' estas volviendo a insertar los mismos datos, esto es así?
 
La categoría de valor se otorga contextualmente, no implícitamente
 
2:03 PM
Pero es que no quiero ir creando temporales por ahí, cuando tengo una variable-miembro interna de ese tipo :-(
Bueno, voy a meterlo en la implementación de la cola. Algo pasará :-)
 
@Trauma ¿Y quieres que sea implícitamente convertible? O_o
 
Necesito que sea implicito, si
Son muchos archivos por modificar si no se puede :-(
Pues va a ser que no: error: no match for 'operator<<' (operand types are 'boost::log::v2s_mt_posix::basic_formatting_ostream<char>::ostream_type {aka std::basic_ostream<char>}' and 'const entity::MediaId')
 
@Trauma estoy flipando hoy contigo. Funciona.
 
¿¿ ??
 
Además, no falla con temporales:
 
2:09 PM
Pues a boost::log no le gusta :-(
 
struct S
{
	std::string s;
	operator const std::string &() const { return s; }
};

void f(const std::string &s) { std::cout << s << '\n'; }
void g(std::string &s) { std::cout << s << '\n'; }

int main()
{
	S s{"Hola mundo!"};

	f(s);
	f(S{"Adios mundo!"});

	g(s);
	g(S{"Oh oh..."}); // error
}
 
Bueno, pues ya hemos aprendido algo nuevo hoy :-)
Que se puede hacer
Y que no es compatible con boost::log
xDD
 
@Trauma Eso va a ser que el operador << de lo que sea que hace boost no está preparado.
Ah, que es std::basic_ostream<char>... voy a probar.
 
Tiene toda la pinta. Da un montonazo de errores de conversión desconocida
Nada, un temporal al principio de la función y listo :-)
 
2:12 PM
Efectivamente, falla:
struct S
{
	std::string s;
	operator const std::string &() const { return s; }
};

int main()
{
	S s{"Hola mundo!"};

	std::cout << s;

	return 0;
}
 
Recuerdo que tú hiciste una pregunta de algo parecido a esto una vez
de que no se llamaba a tu operador de conversión en no-se-que contexto
 
@PaperBirdMaster gracias.. tal vez deberiamos tener una...
 
Pero esto no falla: std::cout << static_cast<const std::string>(s);
 
Pero eso me obliga a modificar los archivos igual.
Nada, un temporal :-)
 
2:19 PM
@PaperBirdMaster No le des muchas vueltas. Pero gracias por las molestias :-)
 
@PatricioMoracho Bueno en este caso te explico la condición de @AnioMes6 < '20160101' si te fijas allí estoy haciendo el llamado a otra base de datos llamada BDOLD donde requiero traer los registros con fechas anteriores al año 2016, por eso uso esa condición crees que me hace falta algo de ahí ?
 
@JohnDoe ya resolviste el problema con la funcion???
 
@JohnDoe Ok, se me escapo que era otra BD, vi muy similar las dos consultas y te iba a sugerir que si simplemente necesitabas "duplicar" los datos, no vuelvas a hacer el query y aprovecharas directamente lo datos que ya tenes en @Tabla, pero olvidalo. Finalmente te funcionó como esperabas?
 
@JohnDoe ya vi XD
 
@PatricioMoracho A la final cumplió con el objetivo de funcionar como lo esperaba, pero ahora me quedo la duda si es necesario crear otra tabla en memoria para los datos que van a retornar con fecha anterior al 2016 ? También es importante para mi obtener esa información
 
2:32 PM
@JohnDoe Una función tabular solo puede retornar una sola "tabla", no es como en los Sp´s que puedes meter varios SELECTs
 
2:50 PM
@PatricioMoracho Entiendo, entonces esta tabla que he retornado solo me devolvera los datos que son posteriores al 2016 y no los anteriores ?
 
@JohnDoe A ver te devolverá lo pongas en ella dentro de la función, lo qu quiero decir es, si primero insertas un conjunto de datos y después otro, el retorno van a ser esos dos conjuntos, lo que no puedes es devolver los dos conjuntos de forma separada.
 
@PatricioMoracho Ok, entonces en mi caso no tendría ningún problema ya que estoy devolviendo los mismo datos de una consulta y de otra ? Puedo dar por seguro que la tabla temporal que he creado dentro de la función me devolverá información antes de 2016 y después sin ningún problema
 
3:07 PM
@JohnDoe Si, si no haces un delete en el medio, el comportamiento es como el de cualquier tabla, insertas dos conjuntos de datos, el retorno incluirá ambos datos
 
@PatricioMoracho Excelente, ahora ya me queda mas claro algo del uso de funciones, agradezco de nuevo el apoyo
 
3:39 PM
2 hours ago, by abulafia
el famoso "retorno de carro que queda sin leer por scanf() en stdin y causa problemas más adelante"
 
3:53 PM
Busco experto en java con spring y heroku si es posible. Estoy teniendo un error con la conexión de mi mysql. Parece ser que pueden ser temas de TLS. SI alguien entiende del tema por fa, necesito ayuda.
si alguien está interesado, que me hable por privado
 
4:26 PM
Muchas gracias @abulafia a funcionado perfecto!
 
@MauricioContreras de casualidad saves como en javascript puedo convertir un entero en su equivalente a la fecha: 43742 to 2019-10-04
 
@Miguel Te refieres a tu problema con git?
 
@abulafia Sip perdona que no especifique! surgieron después algunas anomalias en el código
pero al menos recupere el trabajo
No se porque sucedio esto por hacer un git add a un solo archivo, los a subido todos
pero ya investigare para aprender más
 
@Miguel Bueno, es que cuando hay un conflicto de merge hay que revisar con cuidado las zonas en conflicto, pues sólo tú (un programador) sabe qué partes del código tiene sentido dejar tras la mezcla
en general, mejor evitar que ocurran estos conflictos, evitando modificar un mismo fichero en dos ramas diferentes que luego vayan a juntarse (en tu caso, la rama local y la rama remota)
 
exacto! muchas gracias me salvaste de una buena!
Si, me va un poco grande aun comprender bien GIT
pero en ello estoy
 
4:40 PM
Verás que en realidad no es tan complicado una vez tienes un par de conceptos claros, el problema es que normalmente lo usamos sin entender nada de lo que estamos haciendo y entonces cuando aparecen problemas no sabemos resolverlos
Yo encontré bastante divertido e iluminador esto --> learngitbranching.js.org
pero tienes que tener un rato libre y paciencia para completarlo
@Miguel Quizás hiciste git add carpeta en cuyo caso mete todo lo que haya en esa carpeta (y recursivamente todas las subcarpetas, etc)
 
Que interesante, esta noche le doy un vistazo
@abulafia No se realmente lo que hice mal, porque fue una urgencia y eso me llevo a más problemas
en fin mirare de que no vuelva a pasar y voy a ojear eso que me pasas
 
 
3 hours later…
7:35 PM
quien de aqui es el que Maneja estas plataforma Rapberry pi arduino etc????
 
7:57 PM
@CandidMoe 👆
 
 
2 hours later…
10:18 PM
@abulafia ¿Sabes que realmente existe la cátedra de Arquitectura Nomade? Hay un canal en YT, Nomad Architecture.
 

« first day (2190 days earlier)      last day (42 days later) »