El repositorio de la calculadora de Windows ha sido el proyecto más popular durante todo el mes en GitHub, desde que a principios de marzo, Microsoft decidió liberarlo
#2:
Es así como un grupo de desarrolladores ya ha encontrado un número significativo de fragmentos de código sospechoso y bugs en la simple herramienta, desde fugas de memoria, a información que envía la calculadora a los servidores de Microsoft.
Microsoft hace chapuzas hasta en la calculadora.
No me quiero imaginar la mierda que debe de tener Windows escondida. Van a faltar palomitas en el Universo si liberan algún día el código de Millennium.
#5:
Yo quiero desarrollar un mod que cada vez que pulsas la tecla 5, en la pantalla ponga: "¡Por el culo te la hinco!".
#3:
Entiendo que es un programa conocido por todos y que será relativamente simple. Para aprender programación para Windows con un ejemplo real me parece perfecto.
#33:
#15 en 32 o 64 bits no puedes representar todos los decimales posibles porque los decimales son infinitos.
Un float es una representación de un número decimal mediante un signo, una mantisa y un exponente, empaquetados en 32 o 64 bits (float o double).
Los números decimales que tu ves "redondos", como 1.0, internamente tienen que ser representados así, de forma que en realidad un cálculo que "debería" darte 1.0 te da 0.99999999999, pero no 1.0
El resultado práctico es que nunca se comparan dos floats entre sí directamente al menos que realmente quieras saber que ambos tienen la misma representación binaria.
Para todo lo demás has de comparar teniendo en cuenta epsilon, que es el mínimo número representable en tu implementación de flotantes, generalmente una constante (en C++: https://en.cppreference.com/w/cpp/types/numeric_limits/epsilon)
Algunos lenguajes de programación hacen eso por ti automáticamente, pero la calculadora de Windows está programada en una variante de C++ de Microsoft y requiere llamar explícitamente a alguna función que compare teniendo en cuenta epsilon si es lo que deseas. C++ es un lenguaje muy explicito para el programador.
Además de todo eso, de raíz es mala idea usar flotantes para una calculadora. Los flotantes son muy rápidos, pero una persona no hace millones de operaciones por segundo con una calculadora. Por tanto es un caso muy claro para usar no flotantes sino números decimales de precisión arbitraria.
Son más lentos, pero permiten infinitos decimales y permiten cualquier tipo de operación.
Hoy en día hay muchas librerías para eso en C++, compiladores como gcc las traen integradas.
Un ejemplo hermoso de calculadora de precisión arbitraria es "bc".
Es en línea de comandos, pero puede hacer cualquier operación.
#36:
#34 Esa parte de la noticia es un poco sensacionalista, para dar a entender que espiaba. Pero no es tan así.
Se ha encontrado un fragmento de código que "podría" enviar el contenido que se copia en la calculadora, pero indagando un poco, se ve que ese fragmento se utiliza solamente para depurar el código (algo que hace durante el desarrollo para investigar porqué algo está fallando), y en ningún momento envía información a los servidores de MS, como quiere hacer entender la noticia.
Es así como un grupo de desarrolladores ya ha encontrado un número significativo de fragmentos de código sospechoso y bugs en la simple herramienta, desde fugas de memoria, a información que envía la calculadora a los servidores de Microsoft.
Microsoft hace chapuzas hasta en la calculadora.
No me quiero imaginar la mierda que debe de tener Windows escondida. Van a faltar palomitas en el Universo si liberan algún día el código de Millennium.
#2 la parte de mandar informacion a los servidores de microsoft es simple, la calculadora incluye conversion de monedas, eso necesita mandar datos si o si.
#2 Si te digo que tuve que crear una regla específica en el cortafuegos (no el de Windows, claro) porque el proceso "explorer.exe" está en contacto constante con uno de los servidores de telemetría de Microsoft. Y que si abres casi cualquier librería del S.O Windows, y buscas la palabra telemetría en inglés, aparece como mínimo una vez, demostrando que está incrustada en cada librería, pues...
Esto sin añadir la chapuza de Windows Update y sus infinitas reiteraciones para descargar archivos que fallan, lo que provoca un uso de la CPU de manera anormal, en mi ordenador del 6-11%, pero en un ordenador de gama media o baja, no me lo quiero ni imaginar. Lo cual lo desactivé, porque tampoco lo necesito, ya que el WSUS Offline Update, el programa que uso, activa el servicio solo cuando lo necesita.
Entiendo que es un programa conocido por todos y que será relativamente simple. Para aprender programación para Windows con un ejemplo real me parece perfecto.
#3 No es simple. Es de Microsoft. Hay pocas oportunidades de mirar el código que hace Microsoft así que cuando se filtra algo (o lo liberan como ahora) y la gente está encantada de sacar listas de chapuzas. Y de hecho esta calculadora no solo tiene chapuzas y errores de principiante sino que a demás espía al usuario y manda información a los servidores de Microsoft.
Si una simple calculadora es así imagina lo que serán proyectos millones de veces más complejos como Office.
#34 Esa parte de la noticia es un poco sensacionalista, para dar a entender que espiaba. Pero no es tan así.
Se ha encontrado un fragmento de código que "podría" enviar el contenido que se copia en la calculadora, pero indagando un poco, se ve que ese fragmento se utiliza solamente para depurar el código (algo que hace durante el desarrollo para investigar porqué algo está fallando), y en ningún momento envía información a los servidores de MS, como quiere hacer entender la noticia.
#13 A ver si no meto la pata, porque solo lo use un par de veces hace mil años, pero creo recordar que una vez dentro de la calculadora abrías la ayuda y desde allí era donde te dejaba. Si hay alguien que se acuerde bien que me corrija si me equivoco.
#15 en 32 o 64 bits no puedes representar todos los decimales posibles porque los decimales son infinitos.
Un float es una representación de un número decimal mediante un signo, una mantisa y un exponente, empaquetados en 32 o 64 bits (float o double).
Los números decimales que tu ves "redondos", como 1.0, internamente tienen que ser representados así, de forma que en realidad un cálculo que "debería" darte 1.0 te da 0.99999999999, pero no 1.0
El resultado práctico es que nunca se comparan dos floats entre sí directamente al menos que realmente quieras saber que ambos tienen la misma representación binaria.
Para todo lo demás has de comparar teniendo en cuenta epsilon, que es el mínimo número representable en tu implementación de flotantes, generalmente una constante (en C++: https://en.cppreference.com/w/cpp/types/numeric_limits/epsilon)
Algunos lenguajes de programación hacen eso por ti automáticamente, pero la calculadora de Windows está programada en una variante de C++ de Microsoft y requiere llamar explícitamente a alguna función que compare teniendo en cuenta epsilon si es lo que deseas. C++ es un lenguaje muy explicito para el programador.
Además de todo eso, de raíz es mala idea usar flotantes para una calculadora. Los flotantes son muy rápidos, pero una persona no hace millones de operaciones por segundo con una calculadora. Por tanto es un caso muy claro para usar no flotantes sino números decimales de precisión arbitraria.
Son más lentos, pero permiten infinitos decimales y permiten cualquier tipo de operación.
Hoy en día hay muchas librerías para eso en C++, compiladores como gcc las traen integradas.
Un ejemplo hermoso de calculadora de precisión arbitraria es "bc".
Es en línea de comandos, pero puede hacer cualquier operación.
#11 Habla de la "seguridad" de Windows. Las restricciones en Windows siempre han sido a alto nivel, o sea que si el administrador decía que no podías navegar por internet, Explorer te daba error pero abrías la ayuda de la calculadora y resulta que era un navegador que te dejaba hacer cualquier cosa.
El problema de base es que Windows nunca fue diseñado como un sistema con restricciones. Se han ido agregando pero al no estar en la base sino sólo por encima, siguen saliendo problemas de este estilo.
#11 Creo que #7 se refiere a cuando estaba XP capado en modo kiosko o así y no tenias acceso al menú de inicio ni nada, que arrancabas la calculadora y desde ella lanzabas programas "bloqueados"
#15 Es una de esas antiguas "máximas" de la programación: "no compartas por igual dos float".
La gracia de esta máxima es que la mayoría cuando éramos principiantes cometimos ese error y nos trajo de cabeza hasta que aprendimos la lección de la manera difícil.
La explicación es simple: a no ser que copies el valor de un float a otro, difícilmente dos números "iguales" se representen igual en memoria. Siempre habrá una diferencia en algún bit aunque al mostrarlo en pantalla con una cantidad de decimales "legible" se vean iguales.
La solución es en lugar de compararlos, restarlos y comparar el resultado con un número muy pequeño.
#21 Mirando la biblioteca decimal de Python he entendido algo así. Gracias por la explicación. Así, que realmente hacer la comparación de igualdad sería una absurdez porque nunca se cumpliría, es decir nunca serán iguales, por lo que dices y por lo que he visto biblioteca decimal de Python, donde decimal si que representa con exactitud los valores y Float no.
#15 imagino que se refiere a la pérdida de precisión tras realizar operaciones de coma flotante.
Sin dar más contexto y afirmar eso, la verdad que chirría un poco. Si realmente fuera una burrada, el lenguaje nunca te permitiría hacerlo, y obviamente todos los lenguajes te lo permiten.
De todas formas, el uso de floats/doubles no tiene porqué ser malo dependiendo del contexto, no son criminales, solo tienen sus limitaciones. Si necesitas precisión a nivel monetario u operaciones que necesitan exactitud, obviamente no te vale usar doubles, lo recomendable es recurrir a clases especializadas que te de tu lenguaje: BigDecimal en Java, Decimal en Python,...
En este caso concreto de la calculadora, sinceramente, no se cuanto uso le darán como calculadora científica, ni si por debajo realmente usa floats/doubles (el repo simplemente lo ojee por encima). En mi caso poco la uso, más que nada para hacer operaciones básicas o para pasar a hexadecimal/binario.
#16 Por otro lado, quien usara la calculadora de Windows para hacer cálculos que requirieran una máxima precisión hasta el punto de no querer errores al comparar dos floats...
La burrada sería confiar ese sencillo programa para que te clave resultados en operaciones matemáticas importantes.
Para el uso que le dábamos la gente de a pié, el posible error era inapreciable.
El titular es un poco sensacionalista no? La calculadora solo tiene unas 30.000 estrellas mientras que proyectos como vue tienen más de 130.000, no se.
Comentarios
Es así como un grupo de desarrolladores ya ha encontrado un número significativo de fragmentos de código sospechoso y bugs en la simple herramienta, desde fugas de memoria, a información que envía la calculadora a los servidores de Microsoft.
Microsoft hace chapuzas hasta en la calculadora.
No me quiero imaginar la mierda que debe de tener Windows escondida. Van a faltar palomitas en el Universo si liberan algún día el código de Millennium.
#2 La NSA las llama features, que hay que explicarlo todo.
#6 son tan buenas que es una pena publicar el código y no quitarlas antes.
#2 la parte de mandar informacion a los servidores de microsoft es simple, la calculadora incluye conversion de monedas, eso necesita mandar datos si o si.
#2 Si te digo que tuve que crear una regla específica en el cortafuegos (no el de Windows, claro) porque el proceso "explorer.exe" está en contacto constante con uno de los servidores de telemetría de Microsoft. Y que si abres casi cualquier librería del S.O Windows, y buscas la palabra telemetría en inglés, aparece como mínimo una vez, demostrando que está incrustada en cada librería, pues...
Esto sin añadir la chapuza de Windows Update y sus infinitas reiteraciones para descargar archivos que fallan, lo que provoca un uso de la CPU de manera anormal, en mi ordenador del 6-11%, pero en un ordenador de gama media o baja, no me lo quiero ni imaginar. Lo cual lo desactivé, porque tampoco lo necesito, ya que el WSUS Offline Update, el programa que uso, activa el servicio solo cuando lo necesita.
Salu2
Yo quiero desarrollar un mod que cada vez que pulsas la tecla 5, en la pantalla ponga: "¡Por el culo te la hinco!".
#5 Y que cuando le des a la tecla 8, en la pantalla ponga: "¡Por el culo te la entocho!"
#9 ... el culo te huele
#10 No es así, es agárramela y veras como se mueve.
Entiendo que es un programa conocido por todos y que será relativamente simple. Para aprender programación para Windows con un ejemplo real me parece perfecto.
#3 No es simple. Es de Microsoft. Hay pocas oportunidades de mirar el código que hace Microsoft así que cuando se filtra algo (o lo liberan como ahora) y la gente está encantada de sacar listas de chapuzas. Y de hecho esta calculadora no solo tiene chapuzas y errores de principiante sino que a demás espía al usuario y manda información a los servidores de Microsoft.
Si una simple calculadora es así imagina lo que serán proyectos millones de veces más complejos como Office.
Por eso es tan popular.
#20 Con qué facilidad se usa la palabra "espiar".
#24 "Espiar: Acechar, observar disimuladamente a alguien o algo."
Eso dice la RAE...
#32 Controlar en que orden pulsan los usuarios los menús > Operación de espionaje!
#20 En serio han encontrado que la calculadora espiaba? cómo?
#34 Esa parte de la noticia es un poco sensacionalista, para dar a entender que espiaba. Pero no es tan así.
Se ha encontrado un fragmento de código que "podría" enviar el contenido que se copia en la calculadora, pero indagando un poco, se ve que ese fragmento se utiliza solamente para depurar el código (algo que hace durante el desarrollo para investigar porqué algo está fallando), y en ningún momento envía información a los servidores de MS, como quiere hacer entender la noticia.
#13 A ver si no meto la pata, porque solo lo use un par de veces hace mil años, pero creo recordar que una vez dentro de la calculadora abrías la ayuda y desde allí era donde te dejaba. Si hay alguien que se acuerde bien que me corrija si me equivoco.
#14 me suena que era con el bloc de notas, pero tampoco estoy seguro
#15 en 32 o 64 bits no puedes representar todos los decimales posibles porque los decimales son infinitos.
Un float es una representación de un número decimal mediante un signo, una mantisa y un exponente, empaquetados en 32 o 64 bits (float o double).
Los números decimales que tu ves "redondos", como 1.0, internamente tienen que ser representados así, de forma que en realidad un cálculo que "debería" darte 1.0 te da 0.99999999999, pero no 1.0
El resultado práctico es que nunca se comparan dos floats entre sí directamente al menos que realmente quieras saber que ambos tienen la misma representación binaria.
Para todo lo demás has de comparar teniendo en cuenta epsilon, que es el mínimo número representable en tu implementación de flotantes, generalmente una constante (en C++:
https://en.cppreference.com/w/cpp/types/numeric_limits/epsilon)
Algunos lenguajes de programación hacen eso por ti automáticamente, pero la calculadora de Windows está programada en una variante de C++ de Microsoft y requiere llamar explícitamente a alguna función que compare teniendo en cuenta epsilon si es lo que deseas. C++ es un lenguaje muy explicito para el programador.
Además de todo eso, de raíz es mala idea usar flotantes para una calculadora. Los flotantes son muy rápidos, pero una persona no hace millones de operaciones por segundo con una calculadora. Por tanto es un caso muy claro para usar no flotantes sino números decimales de precisión arbitraria.
Son más lentos, pero permiten infinitos decimales y permiten cualquier tipo de operación.
Hoy en día hay muchas librerías para eso en C++, compiladores como gcc las traen integradas.
Un ejemplo hermoso de calculadora de precisión arbitraria es "bc".
Es en línea de comandos, pero puede hacer cualquier operación.
#11 Habla de la "seguridad" de Windows. Las restricciones en Windows siempre han sido a alto nivel, o sea que si el administrador decía que no podías navegar por internet, Explorer te daba error pero abrías la ayuda de la calculadora y resulta que era un navegador que te dejaba hacer cualquier cosa.
El problema de base es que Windows nunca fue diseñado como un sistema con restricciones. Se han ido agregando pero al no estar en la base sino sólo por encima, siguen saliendo problemas de este estilo.
Yo la usaba para navegar por internet en tiempos del XP
#7 Ein?
#11 Creo que #7 se refiere a cuando estaba XP capado en modo kiosko o así y no tenias acceso al menú de inicio ni nada, que arrancabas la calculadora y desde ella lanzabas programas "bloqueados"
#12 Interesante. Y c'omo lanzabas aplicaciones desde ah'i?
#15 Es una de esas antiguas "máximas" de la programación: "no compartas por igual dos float".
La gracia de esta máxima es que la mayoría cuando éramos principiantes cometimos ese error y nos trajo de cabeza hasta que aprendimos la lección de la manera difícil.
La explicación es simple: a no ser que copies el valor de un float a otro, difícilmente dos números "iguales" se representen igual en memoria. Siempre habrá una diferencia en algún bit aunque al mostrarlo en pantalla con una cantidad de decimales "legible" se vean iguales.
La solución es en lugar de compararlos, restarlos y comparar el resultado con un número muy pequeño.
#21 Mirando la biblioteca decimal de Python he entendido algo así. Gracias por la explicación. Así, que realmente hacer la comparación de igualdad sería una absurdez porque nunca se cumpliría, es decir nunca serán iguales, por lo que dices y por lo que he visto biblioteca decimal de Python, donde decimal si que representa con exactitud los valores y Float no.
#21 O redondearlos a la precisión deseada antes de compararlos.
#26 eso decían de los ficheros Word y Powerpoint... "Si solo son textos, cómo van a tener virus?"
#31 Pero esto no abre archivos, ni guarda nada...
Comparar la igualdad de dos double o float es una burrada.
#4 Por que es una burrada?
#15 imagino que se refiere a la pérdida de precisión tras realizar operaciones de coma flotante.
Sin dar más contexto y afirmar eso, la verdad que chirría un poco. Si realmente fuera una burrada, el lenguaje nunca te permitiría hacerlo, y obviamente todos los lenguajes te lo permiten.
De todas formas, el uso de floats/doubles no tiene porqué ser malo dependiendo del contexto, no son criminales, solo tienen sus limitaciones. Si necesitas precisión a nivel monetario u operaciones que necesitan exactitud, obviamente no te vale usar doubles, lo recomendable es recurrir a clases especializadas que te de tu lenguaje: BigDecimal en Java, Decimal en Python,...
En este caso concreto de la calculadora, sinceramente, no se cuanto uso le darán como calculadora científica, ni si por debajo realmente usa floats/doubles (el repo simplemente lo ojee por encima). En mi caso poco la uso, más que nada para hacer operaciones básicas o para pasar a hexadecimal/binario.
#16 Por otro lado, quien usara la calculadora de Windows para hacer cálculos que requirieran una máxima precisión hasta el punto de no querer errores al comparar dos floats...
La burrada sería confiar ese sencillo programa para que te clave resultados en operaciones matemáticas importantes.
Para el uso que le dábamos la gente de a pié, el posible error era inapreciable.
Muchos irán a la caza y captura de un exploit 0 day.
#1 Y no lo encontrarán o no servirá de nada, porque es una aplicación sencilla que sólo abres para hacer una cuenta puntual.
A mi me parece más resaltable que haya ya más de 200 PRs, que Microsoft está creando comunidad y los desarrolladores se están volcando.
#27 Ya jodería que por la puta calculadora empezará a viajar el software libre dentro de la empresa del mal.
Has visto que tu comentario sería el quinto y se te ha ocurrido de repronto.
#17 ¿de repronto?
#28 Es eso que está antes que de repente y después de pronto
#29 De encuerdo.
El titular es un poco sensacionalista no? La calculadora solo tiene unas 30.000 estrellas mientras que proyectos como vue tienen más de 130.000, no se.
#19 DESDE QUE MICROSOFT LIBERÓ EL CÓDIGO, no desde que GitHub empezó a dar servicio
#25 tienes ración, y cuando alguien la tiene, hay que darsela.