« first day (2000 days earlier)      last day (1093 days later) » 

8:00 PM
pero sin necesidad de crear la lista completa en memoria
 
me parece muy aleatoria la compilacion
ya te digo porque
 
el objeto range en realidad sólo necesita almacenar dónde empieza y dónde acaba (y el paso)
 
osea que el objeto range se genera en tiempo de ejecucion
 
todo se genera en tiempo de ejecución
pero el objeto range(100) no genera 100 números, no lo necesita
solo almacena que empieza en 0 y acaba en 100
y según cómo lo uses, no necesita más
 
mira lo que dice wikipedia
 
8:01 PM
por ejemplo para saber si 3 está ahí o no
 
a que se refiere con eso de patrones?
 
si lo usas en un bucle, como for i in range(100) entonces range() es un iterable y en cada iteración te va dando un número: 0, 1, 2... pero no los genera todos de antemano y los tiene guardados
@NicolásCastellanos Expresiones regulares, supongo
 
no entiendo
 
tengo un array que funciona el filtrado con .filter pero no con .find
 
aunque hay otros tipos de patrones, ese es el más general
 
8:03 PM
let [countryData] = countries.find(
 
@NicolásCastellanos sabes lo que es una expresión regular?
 
que diferencia hay entre el filter y el find
 
es un conjunto de símbolos que especifica un "patrón" en el que puede encajar o no una cadena que le dés como entrada
 
@DanteS. Llegó x-rw, ayudale
 
8:03 PM
por ejemplo, en una expresión regular el símbolo "." significa "cualquier caracter"
por lo que en la expresión regular "o.o", encajaría la cadena "ojo"
 
y también "oro"
 
ah ya entiendo
eso me parece como un poco aleatorio
 
el símbolo * significa "cero o más repeticiones del carácter que aparece justo antes de éste"
así que la expresión regular a*nda encajaría con la palabra "anda"
(cualquier número de "a")
y también con "aaaaaaanda"
incluso con cero "a", por lo que también encajaría con "nda"
el símbolo \d significa "cualquier dígito, por lo que \d\d* es una secuencia de un dígito o más
etc.
 
y como sabe el compilador que "numero de caracteres" es?
 
8:06 PM
El máximo que se pueda
 
ah
me parece un poco engorroso hacerlo de esa forma
 
por ejemplo si ante la cadena "Hola 23121anda" aplicas la expresión regular \d\d+, se encajaría con 23121
bueno, es útil para especificar qué estructura pueden tener los "tokens" de tu lenguaje
 
por ejemplo, puedes decir "un nombre de variable es cualquier secuencia de letras mayúsculas o minúsculas, o también dígitos, o guión bajo, pero no puede comenzar por dígito"
o puedes expresar todo eso con una expresión regular:
[_a-zA-Z][_a-zA-Z0-9]*
 
8:09 PM
los corchetes son formas de especificar "un caracter cualquiera de este rango"
el primer corchete dice "un caracter cualquiera a elegir entre _, una letra de a a z, o de A a Z"
 
ah si ya entendi
 
El segundo corchete es igual, pero añade digitos
y el * final dice "y más repeticiones de caracteres del grupo anterior"
 
osea esa expresion regular significa que el primer caracter puede ser _, a-z, A-Z y despue
eso iba a decir yo
 
asi que _hola23 sería válido según ese patrón
 
8:10 PM
y también sería válido _ a secas
pero no sería válido 1_a
 
y 23hola no seria valido segun ese patron
 
efectivamente
 
pero segun este si: [0-9a-zA-Z][_a-zA-Z0-9]*
 
según ese sí. Pero ese lo puedes simplificar
 
escribi el primer patron que se me ocurrio xD
 
8:11 PM
ah no, perdón, que el segundo corchete tiene dentro _
según ese patrón no se podría poner un _ como primer carácter
 
no, pero si numero como primer caracter
 
si
 
pero como segundo no si al segundo corchete le quito el 0-9
 
@x-rw una de las principales diferencias es que find devuelve un elemento (el primero que consiga) o undefined, en cambio filter devuelve una lista (Array) de elementos que superan el filtro, o un Array vacío si ninguno lo supera.
 
sería válido 3, y 3_, y 3____ y 333__33
 
8:12 PM
y asi mismo se escriben las expresiones regulares en la programación?
 
@NicolásCastellanos Si al segundo le quitas 0-9 entonces admites que comience por un dígito, pero sólo por uno
si, esto que te he estado explicando son expresiones regulares reales
pero hay más simbolos y más cosas que se pueden expresar con ellas
 
y como haces un compilador que pueda entender expresiones regulares sin otro que ya lo haga?
es como decia Heraclito
 
@MauricioContreras lo hice con find en lugar de filter y ya no utilice destructuring
 
esa es una buena pregunta
 
no puede surgir algo de la nada
asi que no puede existir el "no ser"
 
8:13 PM
de hecho ¿cómo puedes escribir un compilador sin tener un compilador?
 
es el problema del bootstraping
 
te va a volar la cabeza saber que un compilador de C como gcc está escrito en C
 
me parece que eso habia sido a punta de binario y que fueron mejorando los compiladores hasta lograr uno de bajo nivel
 
8:14 PM
parece una paradoja irresoluble, pero tiene explicación
 
osea fueron añadendole mas caracteristicas a medida que lo hacian de mas alto nivel
 
efectivamente, el primer compilador de C se escribió en assembler, y el primer assembler se escribió directamente en código máquina
 
y el interprete de python en c
 
pues el primer "interprete" de expresiones regulares se escribió en C, y ahora ya no necesitas escribir tú uno, porque ya los tienes en librerías estándar
 
@x-rw fíjate que no se me ocurrió
 
8:16 PM
@MauricioContreras si pero estaba interesante hacerlo con destructuring
 
los compiladores me gustan mucho, pero al igual que assembly y los kernels es de muy bajo nivel como para yo entenderlo bien
asi que por eso estoy aprendiendo java y android studio primero, ya que es algo que tambien me gusta, y no es tan dificil
 
Eres muy jóven aún. Los asuntos complicados (y la informática lo es) no se aprenden "de una vez", por muy buenos tutoriales que encuentres. Se aprenden "en espiral" por así decir
 
@NicolásCastellanos cuantos añasos tienes
 
quiero decir, hay que volver de vez en cuando a mirar cosas que ya habías mirado antes
 
8:18 PM
como si caminaras en círculos
 
si como escaleras de caracol
es una muy buena analogia!
es como ir bajando en una escalera de caracol, porque vas a niveles mas bajos
 
pero descubrirás que no son círculos, sino espirales. Cada vuelta te lleva un poco más lejos, porque de pronto descubres que entiendes mejor lo que en la primera vuelta no habías entendido
 
si eso me paso con python
 
son muchas cosas las que hay que entender, y no está claro por cuál hay que empezar. Así que, a dar vueltas, con paciencia, y en cada vuelta vas pillando cosas que te ayudan a entender mejor lo que viene luego, o lo que habías visto ya antes sin haberlo entendido del todo
 
8:19 PM
no desesperes si crees que no estás aprendiendo rápido. Es normal
 
recuerdo la noticia del niño que programa 15 lenguajes
me parece muy exagerado
seguro no los domina como dice sino sabe la sintaxis
porque entonces ya seria el programador mas rico del mundo
 
0
Q: Como agrupar filas secundarias en Datatables

John DoeTengo una tabla que hace uso de filas secundaria donde cada fila es expandible/colapsable, pero mis filas principales contienen datos duplicados como lo explico a continuación. Quisiera agrupar mis filas secundarias o child row, como se llaman en la documentación oficial de Datatables, donde teng...

 
no es imposible, pero quizás no entienda del todo lo que hace. Un niño muy pequeño puede hablar español, y eso no deja de ser una proeza porque lo ha aprendido "de la nada", solo escuchando. Y poco después aprende a leer, que es otra proeza. Pero le falta mucho para llegar a ser capaz de escribir una buena novela. Porque eso no implica sólo saber escribir, sino haber vivido
 
Bueno, me retiro por hoy. ¡Hasta mañana!
 
8:23 PM
Chao
gracias por explicarme
yo ya me voy también, chao
 
Perdon que no haya visto antes los mensajes. Gracias pir avisarme Nico! @x-rw en que te ayudo? Tiene que ser Python, lua o cmd, del resto no se nada...
O ya te ayudaron?
 
@DanteS. si si todo bien
 
Genial!
 
8:39 PM
una consulta
try {

} catch (error) {
el error siempre tiene error.message?
 
9:01 PM
a que te refieres
@abulafia era exactamente lo que dijiste, el profesor me dio esto
 
 
2 hours later…
10:40 PM
@MauricioContreras que error puedo votar si no encuentro el paisconst countryData = countries.find(
      country => country.countryName === countryName
    )

    try{
      if(!countryData){

      }
    }catch(error){
        throw new Error('BROKEN')
    }

    const stateData = countryData.regions.find(
      state => state.name === stateName
    )
 
@x-rw "Country not found: Do you want to create a new country?"
 
@x-rw yo preguntaria que hace la funcion...
 
@gbianchi estoy buscando abreviaciones de paises
al final estoy presentando asi
 
@x-rw esto es una api.. un programa de escritorio...
tirar una excepcion deberia ser la ultima opcion...
 
if (!countryData) {
  return {}
}
sin excepciones solo que retorne un objeto vacio
 
10:56 PM
y porque no... que lo maneje la interfaz el problema.. no es un error que no haya nada... es informacion que no haya nada... es mas.. el metodo no fallo... solo no encontro nada...
 
@gbianchi pero sino encontro que le deberia mandar?
 
Si es un API generalmente mandas una descripción del erro a veces con un código. Quien implementa el software que la consume tiene que hacer que su página/app/software le indique qué está sucediendo al usuario.
(No tengo claro el contexto de lo que estás haciendo, esto es una sugerencia general)
Tal vez esté muy equivocado, pero igual con las ganas de ayudar jaja
 
@FranAcuna yo me base en la funcion indexOf
sino existe que mande -1
en mi caso un objeto vacio
 
Ok, Muy bien. Probablemente indicando que lo que el usuario está buscando no existe?
 
@FranAcuna si si
 
11:01 PM
Esto es una función de una API? Es una aplicación?
 
@FranAcuna es una app web estoy haciendo el backend
 
Oh, en ese caso yo devolvería un error diciendo "Country not found"
 
@FranAcuna y como lo usarias?
digamos const c = getCountries()
if(c=="Country not found") //do anything
en mi caso sera
if(c)//do anything
 
Oh, ya te entiendo, ya te entendí, es error dentro del backend, supuse que era el error que tira la API como respuesta
En ese caso retornaría el valor del filter y lo usaría luego en la condicional
Porque devulve undefined si no ecuentra nada
```
const c = getCountries();
if(c){}
else{}
```
 
es un find que estoy usando
 
11:07 PM
Perdon, find
Cito

"The find() method returns the value of the first element in the provided array that satisfies the provided testing function. If no values satisfy the testing function, undefined is returned."
 
@FranAcuna ya veo
creo que tienes razon
@FranAcuna pero esta es la segunda parte
const stateData = countryData.regions.find(
state => state.name === stateName
)

return countryData && stateData
? {
countryName: countryData.countryName,
countryCode: countryData.countryShortCode,
stateName: stateData.name,
stateCode: stateData.shortCode,
}
: {}
 
Creo que no hay peligro, generalmente uno tiene que ser cuidadoso si por ejemplo se retornara cero porque es falsy. Pero no creo que algun nombre de país sea 0 o algo que se interprete de esta manrea
Ok, ya veo, yo nunca he sido fan de cambiar la estructura de mis objetos. Yo haría


const stateData = countryData.regions.find(
state => state.name === stateName
)

return countryData && stateData
? {
countryName: countryData.countryName,
countryCode: countryData.countryShortCode,
stateName: stateData.name,
stateCode: stateData.shortCode,
}
: {
countryName: "notFound",
countryCode: "notFound",
stateName: "notFound",
stateCode: "notFound",
}
Para que no ocurra que en algún condicional del frontEnd de error por no poder hacer objeto.countryName por ejemplo
Que es lo que pasaría si devuelves un objeto vacío {}
 
hahahaha he presentado pero me dijo que use excepciones
no me parece tener que arreglar los errores con excepciones
 
No deberias devolver un objeto vacio? Yo nunca devolveria todos los valores con info... y si mañana llaman a un pais notfound?
 
@gbianchi quiere que borre mi if
if (!countryData) {
      return {}
    }
en lugar de ello quiere que use excepcion
que se supone que debo poner en el try?
 try {
   //no se que poner
    } catch (e) {
      console.log('eeee', e)
      if (e instanceof SyntaxError) {
        console.log(e.message)
      }
    }
es decir no se que condicion poner para que el catch pueda agarrar
 
11:37 PM
@gbianchi Sería un nombre de país muy feo jaja
 
Tengo mis dudas con esta pregunta: es.stackoverflow.com/questions/446044/…, se marcó como duplicada de otra que hace referencia a C++, siendo que en esta pregunta el OP muestra que tiene problemas con el compilador de C
 
11:58 PM
@x-rw no no... mandar un objeto vacio para mi es lo correcto
 
Hola @gbianchi ¿estás?
 

« first day (2000 days earlier)      last day (1093 days later) »