« first day (2062 days earlier)      last day (1029 days later) » 

12:05 AM
@gbianchi para que se usa el signo * en C?
 
@Christian para decir que es un puntero
o que se tomaba el valor de ese punter
no me acuerdo bien
 
Haaa shap, gracias
y los struct para que sirven?
es un equivalente de class en python?
 
@Christian no los struct son estructuras.. las clases son clases...
no hay clases en C.. si hay clases en C++
 
@Christian No existe el equivalente a una estructura en Python
Lo más cercano que tienes es una clase con atributos, getters y setters.
 
haaa ya veo, gracias
hice un programa en C entendiendo menos del 30% del codigo :/
 
12:11 AM
La diferencia es que una estructura es un mapa de memoria. Una estructura dice como se organizan fisicamente las variables que contienen.
 
@Christian no dejes comentarios que no aporten nada ;) por eso lo borre...
 
Piensa en una estructura como una plantilla transparente que aplicas sobre la RAM para interpretar su contenido.
 
@CandidMoe una struct es algo hermoso para poder manejar registros rapidamente en memoria... y acceder a sus propiedades usando algebra de punteros...
 
@CandidMoe Haaa.... ahora todo tiene mas sentido
 
Muy eficiente.
 
12:14 AM
por lo que veo el manejo de memoria en C es muy estricto
 
Con una clase, en cambio, tú no sabes como está implementada, donde están guardado sus datos. Con toda probabilidad, completamente disperso, siendo muchos de ellos objetos complejos a su vez.
 
ademas se tiene un gran acercamiento a lo que pasa internamente
 
muy pero muy estricto
 
@Christian "estricto" no es la palabra. La palabra es "relajado", totalmente libre. Con C puedes hacer lo que quieras con la memoria. Esa es una razón por la que todas las máquinas tienen C.
 
y hermoso..
 
12:15 AM
hasta ahora me gusta C, pero sigo sin entender muy bien su sintaxis
 
No hay nada (especialmente bajo nivel) que no puedas hacer en C. La única razón de usar assembler es la ultra-super-precisa eficiencia en ciertas situaciones.
 
interesante!
 
Tengo corriendo un proceso que parece que se va a demorar horas ... me he topado con un problema simple de explicar con un algoritmo que va a requerir trabajo optimizar.
 
alguna pagina que me recomienden para aprender mas de C?
 
@Christian agendate esto ya:
 
12:19 AM
@Christian Consigue "El Lenguaje de Programación C", de K&R. Es corto, simple y preciso.
 
@CandidMoe que lindo ese... lo amo
 
No soporto esos manuales de 600 páginas ...
 
jajajjaja
 
@CandidMoe thanks
@gbianchi listo!
 
@Christian es que si entendes la sintaxis de C.. entonces acabas de aprender la sintaxis de C++, de Java, de C#.. y de varios mas....
si entendes como funciona un array, vas a entender que hace una lista, una cola, una pila y mas cosas....
 
12:24 AM
@gbianchi sé un poco de java, pero nunca habia visto * ni ->
@gbianchi el programa que hice hoy fue de una pila
 
no.. eso no esta en ningun otro lado, porque no necesitas acceder a la memoria de la forma en que lo hace C...
@Christian con un array?
 
nodos :/
 
@Christian dentro de un array
 
nunca vi la palabra array en mi código :/
 
@Christian aja.. y como hiciste para unir los nodos entre si?
@Christian y no.. no existe la palabra array en tu codigo...
pero si hiciste esto:
nodo[]... entonces hiciste un array
 
12:26 AM
@gbianchi con los puntero?
 
@Christian ah genial.. hiciste una lista!
 
eso supongo
le deje una critica constructiva al chico del video que me miré
 
@Christian no no.. esa es la implementacion de cualquier lista de tamaño variables....
es una lista simplemente enlazada.. que no debe ser circular...
 
struct nodo {
    int data;
    struct nodo* sig;
};
@gbianchi hice esa estructura
 
@Christian esta perfecto
no.. espera
no se si esta perfecto...
como accedes al nodo siguiente?
 
12:40 AM
con nodo->sig?
 
estoy tratando de hacer memoria... si necesitas * ahi
 
struct nodo* crearNodo(int data){
    struct nodo* nuevo = (struct nodo*)malloc(sizeof(struct nodo));

    nuevo->data = data;
    nuevo->sig = NULL;

    return nuevo;
};
 
-> preguntale a trauma cuando este por aca, si eso es C standar... tengo mis dudas, pero mas porque no recuerdo que por otra cosa...
 
hice eso para crear un nuevo nodo
@gbianchi oks
@Trauma Hellou
 
no confio en mi memoria aca..
no lo llames
esta durmiendo
esta en españa...
por eso no lo arrobe...
 
12:42 AM
bueno, ya lo verá cuando despierte
en la estructura para crear un nuevo nodo me perdí
 
@Christian por? en que te perdiste?
 
no entiendo nada :/ (a excepción del return)
 
eso compila?
 
solo sé que con malloc se le dá un tamaño determinada
@gbianchi yes
 
no deberia ser:
nodo* crearNodo(int data){
    struct nodo* nuevo = (struct nodo*)malloc(sizeof(struct nodo));

    nuevo->data = data;
    nuevo->sig = NULL;

    return nuevo;
};
 
12:47 AM
no se por que me lo preguntas a mí
lo bueno es que me compila y me da el resultado esperado :/
 
bueno.. que no entendes de eso?
 
struct nodo* nuevo = (struct nodo*)
no entiendo que hace esa parte
 
@Christian estas alocando en ese puntero esa cantidad de memoria necesaria para guardar esa estructura
malloc es memory alloc.. que es reservar memoria, apuntada por esa variable, del tamaño que vos quieras (en este caso, de tamaño de struct nodo)
deberias hacer un free en algun lado tambien...
 
@gbianchi osea struct nodo* hace referencia al propio nodo, y luego se crea una nuevo nodo con un tamaño especifico ?
@gbianchi eso lo entiendo, lo leí en una respuesta en SO
 
@Christian nop.. porque decis que referencia al propio nodo?
 
12:51 AM
@gbianchi sip, lo hago al eliminar un elemento de la pila
@gbianchi por que se delcaró una estructura antes? struct nodo* crearNodo()...
 
@Christian exactamente, declaraste.. no hiciste nada.. solo enunciaste que existia algo asi.. pero no es nada.. es solo la declaracion... en C, la declaracion no hace nada en si.. hasta que no le das entidad generandole un espacio de memoria....
dijiste que ibas a usar algo asi.. pero no tiene datos, ni entidad, ni nada...
 
al hacer struct nodo* nuevo digo que hay una variable nuevo que es un nodo y luego le asigno un tamaño?
luego esa variable nuevo hago que apunte a una data y que su siguiente dato sea NULL
 
Perdon, aca:
struct nodo* crearNodo()...
no declaraste nada.. aca lo que estas diciendo es que el metodo CrearNodo devuelve una variable de tipo struct nodo
 
@gbianchi ._. yo ni sabia que había hecho un método
 
@Christian esa variable, es un puntero.. y lo que haces, es asignarle un espacio de memoria a ese puntero... luego, solamente llenas los datos a los que apunta ese puntero...
 
12:58 AM
Haaa... yap
sabes para que se usa &?
 
es el contrario de *
fijate en el primer enlace que te pase, que explicaba los dos
vas a necesitar los dos...
 
pues sip, el segundo lo utilizo para eliminar un dato
nop, me equivoqué
lo utilizo para añadir un dato
void push(int data, struct nodo** pila){
    struct nodo* nuevo = crearNodo(data);

    nuevo->sig = *pila;
    *pila = nuevo;
}
    struct nodo* pila = crearNodo(10);

    push(2, &pila);
 
@Christian porque haces una indireccion ahi arriba?
no creo que sea necesario eso...
pero puedo estar confundido eh...
 
@gbianchi que es eso?
 
@Christian deja mejor que te explique trauma... algo no me cuadra en eso...
&pila es la direccion de la variable pila
con lo cual, despues para llegar al valor, tenes que hacer * pila que tiene la direccion de donde estan los datos y **pila tiene los datos...
 
1:10 AM
@gbianchi si eso hago para poder eliminarlos
int main(){
    struct nodo* pila = crearNodo(10);

    push(2, &pila);
    push(-12, &pila);

    mostrar(&pila);

    for (size_t i = 0; i < 5; i++)
    {
        printf("Eliminamos %d\n", pop(&pila));
        mostrar(&pila);
    }
    system("pause");
    return 0;
}
@gbianchi tengo esa funcion para agregar los datos a la pila
 
 
1 hour later…
2:28 AM
0
Q: Mejorar la identificacion de las preguntas cerradas

JapvLas preguntas cerradas, se identifican con el texto [cerrada] al final del titulo de la pregunta, pero muchas veces me ha pasado que cuando voy recorriendo la lista de preguntas no veo esta marca ya que perfectamente puede pasar desapercibida a la vista y las abro, y solo al abrirla es que me doy...

 
 
4 hours later…
6:18 AM
Buenos dias gente!
 
6:41 AM
Egun on
 
7:07 AM
Alguien sabe la razón por la cual un XMLHttpRequest, con 'post', deja de funcionar hoy, así como ayer funcionaba perfectamente?
Sin haber hecho ningún cambio, claro está
 
@AQMR qué enviabas ayer y qué envías hoy?
 
lo mismito
no he cambiado la función para nada
Pero ya está solucionado, vino mi compañero, cambió de un POST a un GEt y lo solucionó
Pero yo no había tocado nada de eso...No lo entiendo
 
Has revisado la consola del navegador a ver lo que está pasando?
@AQMR XD
Enviar datos usando el verbo GET. Muy intuitivo.
 
no no
yo lo usaba con post
Es por eso que no lo entiendo, creía que el POST era para enviar y GEt para recibir
 
A ver, a menos que estés enviando parámetros de consulta (como paginado por ejemplo). El verbo POST usualmente se usa para enviar datos que serán insertados en el Servidor. Es decir, el verbo POST se usa para crear un elemento. Es eso lo que haces?
Recuerda que en el caso de Login, se usa POST por diversas razones: es más sencillo manejar directamente desde un formulario los datos del login, es una forma conveniente de ocultar de la vista del usuario los datos (password) introducidos, etc.
 
7:25 AM
Estoy mandando un httprequest porque necesito en el servidor un nombre como variable que meto a través del prompt.
Es decir, escribo en el prompt "therock", lo mando a través de la url /user?name=${name}
Recojo dicha información y la uso en el lado del servidor
con un req.query.name
 
Cuando haces una consulta parametrizada, por ejemplo: pedir todas las ventas del usuario con id = xxx, entonces, si bien estás enviando el id al servidor, realmente es una petición tipo GET, con un parámetro (id en este caso).
@AQMR entonces es una petición tipo GET
No estás creando un nuevo elemento. Estás haciendo una consulta parametrizada. De hecho, estás leyendo los datos desde la URL, es decir, esperas una query string.
 
Hoy la dotnet2021, a ver que trae la .net 6 :)
 
@AQMR a veces la confusión viene de leer sobre API Rest y pensar que todo es API Rest.
 
Entiendo, entonces en algún momento de mi vida habré cambiado el GET por un POST y no tengo recuerdo absoluto de hacer nada parecido. Y tengo 25 años...ya chocheo
 
A las güenas :-)
Asco de Martes :-(
 
7:46 AM
Hale, acabé el asunto de las APIS por el momento
 
8:02 AM
Don @Trauma, ¿Cómo van las alarmas?
 
Alarmado me tienen :-(
 
@AQMR enhorabuena?
 
@MauricioContreras ¿ Y tus tareas extraescolares ?
 
@Trauma hoy debo entregar 1 y empezar otra. Y no tengo tiempo de nada. Puaj. Que los días deberían tener 36 horas. 8 horas de sueño es un desperdicio, pero qué se le.puede hacer. Nunca me alcanzan las 16 horas que estoy despierto.
 
@MauricioContreras Pues a mi me faltan con las 8 de sueño :-(
 
8:07 AM
Al menos hoy es el último día del chaval en el depósito. Con lo que quita tiempo ir a dejarlo y luego a buscarlo. Voy a buscar un depósito en el que lo deje el lune por las mañanas y lo busque el viernes por las tardes.
Igual, ahora con papeles, montaré mi imperio. Pronto el chófer se hará cargo de esas nimiedades de la vida.
 
@MauricioContreras conseguiste los papeles por fin?
 
@Pikoh yeah! es legaaal
 
vaya, me alegro mucho de verdad. No me habia enterado
 
8:50 AM
el pais era bobo en no concederselo antes. un currante sin igual
 
@lois6b al contrario. Nos deja mal a los demas, yo no le habría dado los papeles en la vida XD
3
 
@Pikoh Coincido
 
Hola buenos días, se les ocurre alguna forma de optimar este script en python, es que veran la query arroja 52000 registros, y lo lancé pero me está tardando demasiado, pensé que python lo haría en poco tiempo, el escript es el siguiente rextester.com/JIDEW38783
la query sola desde phpmyadmin la ejecuta en nada.
 
Hola buenos dias
duda con mongoose
sabeis alguna forma de poder coger el nombre de un modelo si tienes el documento?
he intentado con document.constructor.modelName pero siempre recibo undefined
 
9:22 AM
@MauricioContreras Enhorabuena!!!!!
 
@Trauma Eso es porque tanto azúcar no te deja descansar
@MauricioContreras Has probado con la cárcel?
Le dan alojamiento, comida y ejercicio
Lo mantienen sano y activo
Y por encima sale con estudios
Lo único que necesitas es deslizar un buen cuchillo en la mochila y mandarlo a comprar algo a una joyería o algo
 
@MauricioContreras ni lo habia leido! WELCOME!!!
 
9:41 AM
Felicitaciones, @MauricioContreras. Un alivio!!!
¿Se imaginan la "sala de servidores" de un Airbus 350?
 
10:09 AM
Hey, gracias a todos. XD
 
10:25 AM
@MauricioContreras Ya podemos montar nuestro imperio del mal legalmente
 
10:35 AM
@NicolasOñate bueno, ya en Moncloa y en Zarzuela se nos han adelantado. Habría que ponerle mucho empeño para ser más malvados. XD
 
@MauricioContreras gracias?
 
@MauricioContreras me refiero a mal en la sombra
 
@MauricioContreras suerte. La vais a necesitar, el liston está demasiado alto
 
XD, nada, que lo que hay que hacer para ser realmente malvado es programar en PHP. ¿Se puede ser más malvado que eso? Lo dudo.
PHP es la programación lo que ACME es a los planes del coyote.
4
 
@MauricioContreras Si, se puede. Ayer estuve hablando con un amigo de mi mujer, que estaba haciendo DAW, y en los ejercicios de clase le obligaban a utilizar PHP
Alegando que: "No hay ningún otro lenguaje que permita hacer lo que hace PHP"
XDDD
 
10:49 AM
@MauricioContreras jajajajjajajjajajja
 
 
3 hours later…
2:03 PM
Cuanto El Silencio ...
 
dejalo tranquilo
 
@Trauma shhhh
@Trauma cuando llegue cristian te va a volver unpoquito loco.. esta aprendiendo C y me dio algunas dudas algunas cosas que hacia anoche...
 
@Trauma aquí estoy yo, agazapado, leyendo y filtrando todo lo que se dice en el chat...
@gbianchi mientras las cosas que hacía no hagan PUM, todo bien.
 
@MauricioContreras jejeje
 
@Trauma Lo has aniquilado
Estaras contento
 
2:14 PM
La Reurbanización El Silencio o simplemente El Silencio es una urbanización de Caracas, Venezuela que se encuentra dentro del Casco Central de esa ciudad en la Parroquia Catedral del Municipio Libertador. == Historia == Apenas fundada Caracas en 1567 se le denominó El Tartagal al área que hoy ocupa El Silencio. Para ese momento se trataba de un campo al oeste de las 25 manzanas originales de la ciudad y Garcí González de Silva compró esos terrenos pocos años después de la fundación de Caracas. El nombre El Silencio se presume se originó luego de una epidemia que causó la muerte a todos los habitantes…
 
@gbianchi Va a ser que no ... rápidamente se le sugiere que busque un curso de los 1000 que hay por ahí
 
@Trauma jajaja si le pase varios links ayer
alguien que sepa TS.. como se define un json en una interfaz ts?
bah.. se puede?
 
... no entiendo la pregunta... un json es un string. Cuando lo parseás, podés decirle a TS que implementa una interfaz
pero puede ser mentira
en tiempo de ejecución
 
2:45 PM
@gbianchi ??
 
3:42 PM
Hello
@Trauma me ayudas?
Nueva duda. Para que se usa :: en C?
 
@Christian creo que eran punteros
pero hablo desde el desconocimiento
 
Bueno, gracias igual
 
4:02 PM
mi error
no era un json
era un objeto...
y escribir el TS de eso es un parto!!!
 
4:24 PM
@gbianchi no puedes usar un <any>?
 
@MauricioContreras y la idea es no...
pero ya arme todo el TS...
 
@gbianchi ok, por eso pregunté. XD
 
si uso any, que sentido tiene escribir el ts??? entonces no tengo ni inferencia ni control...
 
@Christian ese operador no se usa en C, en cambio en C++ si se usa y se llama Scope Resolution Operator.
@gbianchi claro, tienes una estructura definida del objeto?
 
@MauricioContreras es lo que estoy rastreando
como odio usar cosas gratis a medio hacer... grrrr...
 
4:36 PM
@gbianchi te vendo interfaces totalmente hechas. ;p
@gbianchi Igual no comprendo lo que estás haciendo. No se arma una interfaz para que cumpla con el contrato de un objeto, usualmente es al revés. XD
 
@MauricioContreras ya esta el objeto.. estaba buscando la interfaz.. pero la acabo de encontrar.. gracias google...
 
@gbianchi Ahhh, vale. Qué cosas raras hacen por la pampa.
 
@MauricioContreras quiero usar echarts
dentro de vue
no encontraba la interfaz por ningun lado...
 
Ok. Pues usualmente las definiciones de tipo están en NPM.
 
hola
alguno de ustedes programa con opengl en c++?
 
4:43 PM
@MauricioContreras no siempre... pero ahora encontre un repo que las tiene todas
 
@gbianchi si, pues a eso me refiero, que en NPM te dice si tiene los tipos propios o de DT. Si no los tiene propios pues los usa de DT
@gbianchi Pues echarts usa sus propios tipos:
Claro, si hablamos de ese echarts.
 
-1
A: Duda con sesiones PHP

Walter Lopez CruzHola amigo efectivamente como dice el comentario de arriba, te hace falta guardar los datos de inicio de sesión en las variables de SESION para poder hacer el session_start(), ya que ahora como tienes tu codigo, no tienes ningun dato guardado en la sesion.. te recomiendo busques ejemplos.. el com...

este tipo es terco ...
 
@MauricioContreras si si.. es ese exactamente...
pero lo tengo a traves de vue...
anda a saber donde esta esa definicion.. si es que esta...
 
XD
@gbianchi pues ya tienes proyecto para el Hacktober Fest
 
jajajajaja
sip.. totalmente...
 
4:53 PM
un Pull Request de esa interfaz. XD
 
@FranciscoNúñez-TodoPoderoso yo no veo otras respuestas que sean comentarios de ese usuario....
 
jajajaj
 
@MauricioContreras gracias, ya me di cuenta de eso 😀
 
@Christian vale, que la gente anda asustada que haces cosas raras en C, creen que te vas a convertir en un verdadero hacker. XD
 
5:05 PM
Jarana, tal vez. MD intriga mucho C y aprendí python por qué me interesaba el hacking, pero ya dejé eso
Bueno otra duda, cuando se utiliza una estructura (struct)?
 
@Christian cuando necesites definir una estructura de datos.
 
@FranciscoNúñez-TodoPoderoso ???
 
5:23 PM
@MauricioContreras osea debo de declarar un struct cada vez que necesite una estructura de dato?
 
@Excorpion ese men ya le he borrado como 4 respuestas asi...
 
@FranciscoNúñez-TodoPoderoso a quien ??
 
@Christian el lenguaje C te da tipos de datos primitivos (int, bool, char, double, etc.) y ciertas estructuras (array, pointer, etc). Pero esas estructuras son básicas, es por ello que puedes crear tus propias estructuras, combinando las básicas en un struct. O al menos es la idea.
 
me acabo de rozar con un reto de mi jefa, por alegarle de un codigo que no es mio, y es de alguien que renuncio...
 
@FranciscoNúñez-TodoPoderoso te estas confundiendo de usuario. Ese usuario solo tenia 3 respuestas, y ninguna era de ese tipo...
 
5:29 PM
No sé si pointer es una estructura. XD
 
@MauricioContreras haaa yap, gracias
@FranciscoNúñez-TodoPoderoso te vas a ir baneadisimo :/
 
Un sujeto X, ""creo"" un código, que al parecer solo fue descargado de internet... se supone que funcionaba, pero mi jefa no logro hacer funcionar nada.
En eso viene y me dice.. "eso es José, ahora tu tienes que arreglarlo, tienes una hora para hacerlo..." (si mi nombre es josé)
Y yo como... ¿Arreglarlo?, ese código no es mío, no se que hace, ni usted pudo hacerlo funcionar, no puedo llegar y arreglarlo magicamente.
En eso, siento como se molesto, pero entendio que no es mio, y no funciona... entonces solo me dijo... "YA dejalo, yo lo vere despues, pense que seria facil que lo arreglaras...
Y yo ahi quede... .___________.
facil mis polainas, nisiquiera borro los comentarios del tipo que si hizo el codigo en 2013
 
@Excorpion: no seas malito José
 
Noooo no me meto con codigo malo de otros XD
mas encima tengo 3 o 4 a cargo ahora mismo, no metere un 5to
O sea, no me meto en un codigo malo de otra persona, con requisito de solucionar todo en menos de 1 hora
 
6:16 PM
tengo un string en javascript referente a una fecha formateado asi: 2021-Ago-29 (en español) como puedo transfórmalo para ser usado en un objeto tipo date y que no explote en el intento let objfecha = new Date(date_string);
 
... son 12 meses...
la forma barata?
new Date(date_string.replace('Ene', '01').replace('Feb', '02').....)
 
@g3rv4 XD
@g3rv4 No está mal, no me burlo de lo que haces, sólo que a eso le llamas barato. XD
 
@MauricioContreras ;) todo depende de cómo definas el costo
 
@g3rv4 bueno, eso sí. touché
 
@g3rv4 si es la forma barata jajjajaja XD pensaba hacer un cabalache de un metodo que tome el string y lo haga por separado pero bueno...
@g3rv4 como hago un replace desde un array???
 
6:30 PM
@FranciscoNúñez-TodoPoderoso no entiendo la pregunta
 
@FranciscoNúñez-TodoPoderoso forEach???
 
@MauricioContreras debe haber algo mas directo
function datetoing(string){
let real_date = {
'Ene': '01',
'Feb': '02',
'Mar': '03',
'Abr': '04',
'May': '05',
'Jun': '06',
'Jul': '07',
'Ago': '08',
'Sep': '09',
'Oct': '10',
'Nov': '11',
'Dic': '12'
}
console.log(real_date);

}
 
@FranciscoNúñez-TodoPoderoso Eso no es un Array
 
Es una función, y dentro hay un objeto (real_date).
 
6:37 PM
sep
 
A ver, si el string es siempre constante (tamaño y formato) puedes usar el replace() propuesto por @g3rv4 dentro de tu función.
 
creo que esto debe funcionar:
function datetoing(string){
    let real_date = {
        'Ene': '01',
        'Feb': '02',
        'Mar': '03',
        'Abr': '04',
        'May': '05',
        'Jun': '06',
        'Jul': '07',
        'Ago': '08',
        'Sep': '09',
        'Oct': '10',
        'Nov': '11',
        'Dic': '12'
    }
    for (key in real_date) {
        string = string.replace(key, real_date[key])
    }
    console.log(string);
    return string;
}
si alguien tiene una mejor opcion me avisa pero creo que se puede mejorar XD
 
hay muchas assumptions (asunciones?) en usar un replace
lo mejor sería usar una librería a la que le puedas setear el locale
y parserlo usando "dd-mmm-yy"
 
2021-Ago-29 //entrada
2021-08-29 //resultado mas tarde valido si este formato es aceptado por Date()
 
una mejora a eso, podría ser agarrar el substring entre los índices 5, 8
y hacer un lookup en tu objeto
entonces no tenés que iterar por los 12 meses
 
6:42 PM
@g3rv4 la fecha que uso no depende de la hora del navegador/dispoditivo del usuario...
 
por eso digo, hay muchas assumptions
 
@FranciscoNúñez-TodoPoderoso sí, es aceptado
 
@g3rv4 no entiendo XD
 
@g3rv4 esa no me la se... me la imagino pero no se como va...
 
6:43 PM
@FranciscoNúñez-TodoPoderoso por ejemplo, qué pasa si viene en otro casing? 12-ene-2001
@FranciscoNúñez-TodoPoderoso es lo mismo, igual sigue siendo O(1) porque itera por 12 elementos
 
Conviertes el string a upper o lower antes de hacer nada
 
covertir strings a upper / lower también es interesante...
 
6:58 PM
@FranciscoNúñez-TodoPoderoso mira esta:
function getDateString(str) {
  let months = ['ENE', 'FEB', 'MAR', 'ABR', 'MAY', 'JUN', 'JUL', 'AGO', 'SEP', 'OCT', 'NOV', 'DIC'];
  if(!str) return;
  if(str.length !== 11) return;
  str = str.toUpperCase();
  if(!months.includes(str.substring(3, 6))) return;
  let dateStr = str.substring(0,3) + (months.indexOf(str.substring(3, 6)) + 1).toString().padStart(2, '0') + str.substring(6);
  return dateStr;
}

let fechas = [
  '12-Ene-2021',
  '04-feb-2020',
  '15-JUN-1976'
]

fechas.forEach(f => {
  console.log( getDateString(f));
Puedes incluso modificarla para pasarle un formato
Pero ya eso sería escribir tu propia librería. XD
@g3rv4 joder, eso es sacarle mucha punta al lápiz, pero tienes toda la razón.
 
hubo un paper donde el atacante contaba todos los sitios que pudo explotar
bien interesante :) nunca lo hubiera pensado
 
7:20 PM
@g3rv4 pues en ese caso:
function getDateString(str) {
  let months = ['ENE', 'FEB', 'MAR', 'ABR', 'MAY', 'JUN', 'JUL', 'AGO', 'SEP', 'OCT', 'NOV', 'DIC'];
  if(!str) return;
  if(str.length !== 11) return;
  str = str.toUpperCase();
  if(!months.includes(str.substring(3, 6))) return;
  for(let i = 3; i < 6; ++i) {
    if(str.charCodeAt(i) < 65 && str.charCodeAt(i) > 90) return;
  }
  let dateStr = str.substring(0,3) + (months.indexOf(str.substring(3, 6)) + 1).toString().padStart(2, '0') + str.substring(6);
  return dateStr;
y todos contentos? ;)
 
personalmente, para mi es muy difícil de entender qué hace ese código... además de que tiene un montón de números mágicos y casos borde
pero... to each their own :)
si viera esto en un PR, lo peleo
 
XD, puse && y es ||
function getDateString(str) {
  let months = ['ENE', 'FEB', 'MAR', 'ABR', 'MAY', 'JUN', 'JUL', 'AGO', 'SEP', 'OCT', 'NOV', 'DIC'];
  if(!str) return;
  if(str.length !== 11) return;
  str = str.toUpperCase();
  if(!months.includes(str.substring(3, 6))) return;
  for(let i = 3; i < 6; ++i) {
    if(str.charCodeAt(i) < 65 || str.charCodeAt(i) > 90) return;
  }
  let dateStr = str.substring(0,3) + (months.indexOf(str.substring(3, 6)) + 1).toString().padStart(2, '0') + str.substring(6);
  return dateStr;
 
@MauricioContreras ja, doy my punto por probado
 
@g3rv4 se basa en una entrada de 11 caracteres, aunque no verifico nunca que es un string. :(
 
 
3 hours later…
10:44 PM
Ayuda, no me compila 😞
 
11:16 PM
@Christian y que error marca?
 
Espera creo que encontré la solución
@gbianchi Que diferencia hay entre %c y %s
 
@Christian lo que se muestra en un printf?
 
Sip
 
11:44 PM
note: expected 'char *' but argument is of type 'char'
 void imprimir(char msg[]){
@gbianchi :(
 

« first day (2062 days earlier)      last day (1029 days later) »