En esta página:
Nuevamente estamos fin de mes y Stack Overflow nunca se detiene, hay nuevas consultas que fueron populares en Abril de 2020, el Lenguaje de Programación que tuvo más consultas es Python, este genial lenguaje tuvo 2 consultas, bueno vamos con este Top de consultas en Stack Overflow.
Antes de continuar, te invito a escuchar el Podcast: “Que Hacer Cuando Estamos En Casa” :
Spotify: | Sound Cloud: |
Bien ahora continuemos con el Post: Las 5 Consultas más Populares en Stack Overflow – Mes Abril 2020
Igual que en otros artículos, para mantener un orden, voy a colocar el título de la consulta original, la versión traducida de la consulta, el Link de la consulta, el Lenguaje o Tecnología, una Descripción y una imagen de la consulta.
Puesto N° 5
Consulta Original: Why do I get this many iterations when adding to and removing from a set while iterating over it ?
Consulta Traducida: ¿ Por qué obtengo tantas iteraciones cuando agrego y elimino valores de un conjunto al iterar sobre él ?
Link: Visitar
Lenguaje(s) / Tecnología(s): Python
El usuario noob overflow que tiene un peculiar nombre, menciona que esta intentando entender el bucle for de Python, haciendo iteraciones esperaba obtener el resultado deseado o al menos obtener un bucle infinito como en otros lenguajes de programación.
1 2 3 4 5 6 7 8 9 |
>>> s = {0} >>> for i in s: ... s.add(i + 1) ... s.remove(i) ... >>> print(s) {16} |
Tras ejecutar el bucle for obtiene 16, y no sabe de donde viene este valor, esta usando Python 3.8.2.
El usuario user2357112 supports Monica le ofrece una extensa respuesta a su consulta mencionando que 16 es el primer elemento que se coloca en un índice de tabla hash más abajo que el elemento anterior y ofrece una explicación completa sobre esto en su respuesta.
Si deseas saber más sobre esta consulta, puedes visitar el link en Stack Overflow.
Puesto N° 4
Consulta Original: Why does rand() repeat numbers far more often on Linux than Mac ?
Consulta Traducida: ¿ Por qué rand() repite números con mucha más frecuencia en Linux que en Mac ?
Link: Visitar
Lenguaje(s) / Tecnología(s): C
En el puesto 4, el usuario Theron estaba implementando un hashmap en C como parte de un proyecto en el que esta trabajando, al usar inserciones aleatorias noto que la función rand() en Linux parece repetir números con mucha más frecuencia que en Mac OS y necesita que alguien le explico ello.
El usuario Arkku le responde diciendo que la empresa Apple creadora del sistema operativo Mac OS, ha estado promoviendo el uso de mejores generadores de números aleatorios durante el tiempo que existió Mac OS u OS X, asimismo menciona como recomendación otra función similar llamada arc4random() entre otros detalles.
Si deseas saber más sobre esta consulta, puedes visitar el link en Stack Overflow.
Puesto N° 3
Consulta Original: Why is “asdf”.replace(/.*/g, “x”) == “xx” ?
Consulta Traducida: ¿ Por qué es “asdf” .replace (/.*/ g, “x”) == “xx” ?
Link: Visitar
Lenguaje(s) / Tecnología(s): JavaScript
En el puesto 4, el usuario j08691 hace una consulta peculiar, pero técnicamente muy importante, menciona que se topo con un hecho que lo sorprendió, al ejecutar el siguiente código JavaScript en su consola:
1 2 3 |
console.log("asdf".replace(/.*/g, "x")); |
Pregunta porque hay 2 reemplazos, es decir 2 veces x, le parece que cualquier cadena no vacía sin líneas nuevas producirá exactamente los 2 reemplazos para este patrón. Y al usar la función replace(), puede ver que el primer reemplazo es para todo el string y el segundo es para un string vacío.
El usuario Alan Liang le da una respuesta técnica usando una documentación externa y códigos de ejemplo para explicar mejor porque sucede esto.
Si deseas saber más sobre esta consulta, puedes visitar el link en Stack Overflow.
Puesto N° 2
Consulta Original: Generate list of numbers and their negative counterparts in Python
Consulta Traducida: Generar una lista de números y sus equivalentes negativos en Python
Link: Visitar
Lenguaje(s) / Tecnología(s): Python
Uno de mis lenguajes favoritos esta en este puesto 2, el usuario upe pregunta al inicio de su consulta ¿ Hay un one-liner conveniente para generar una lista de números y sus contrapartes negativas en Python ?
Menciona por ejemplo el generar una lista con los números 6 a 9 y -6 a -9, el código que tiene hecho es el siguiente:
1 2 3 4 |
l = [x for x in range(6,10)] l += [-x for x in l] |
Indica que un simple “one-liner” sería:
1 2 3 |
l = [x for x in range(6,10)] + [y for y in range(-9, -5)] |
Sin embargo, generar 2 listas y luego unirlas, parece ser un inconveniente.
Hay muy buenas respuestas a su consulta y las puntuaciones de estas respuestas están casi iguales, pero en cualquier momento una de ellas puede dispararse.
Yo elegiré la respuesta del usuario Datanovice que responde diciendo que puede crear una tupla y descomprimirla en una lista de comprensión (comprehension):
1 2 3 4 5 |
nums = [y for x in range(6,10) for y in (x,-x)] print(nums) [6, -6, 7, -7, 8, -8, 9, -9] |
Si deseas saber más sobre esta consulta, puedes visitar el link en Stack Overflow.
Puesto N° 1
Consulta Original: AndroidRuntime: FATAL EXCEPTION: androidmapsapi-ZoomTableManager
Consulta Traducida: AndroidRuntime: EXCEPCIÓN FATAL: androidmapsapi-ZoomTableManager
Link: Visitar
Lenguaje(s) / Tecnología(s): Java, Android
En el primer lugar el usuario Prem Chand esta usando el SDK de Google Maps v2 y le arroja el siguiente error:
1 2 3 4 5 6 7 8 |
Process: com.currentlocation.android, PID: 7328 java.lang.ArrayIndexOutOfBoundsException: length=1; index=12 at com.google.maps.api.android.lib6.gmm6.vector.ct.<init>(:com.google.android.gms.dynamite_mapsdynamite@201216081@20.12.16 (120400-0):9) at com.google.maps.api.android.lib6.gmm6.vector.cv.a(:com.google.android.gms.dynamite_mapsdynamite@201216081@20.12.16 (120400-0):23) at com.google.maps.api.android.lib6.gmm6.util.m.run(:com.google.android.gms.dynamite_mapsdynamite@201216081@20.12.16 (120400-0):14) at java.lang.Thread.run(Thread.java:919) |
Y realizo una prueba con la versión del SDK de Google Maps v3 (Beta) y obtiene los siguiente:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 |
2020-04-23 15:59:06.064 E/AndroidRuntime: FATAL EXCEPTION: main Process: com.example, PID: 22717 java.lang.ArrayIndexOutOfBoundsException: length=1; index=12 at com.google.android.libraries.maps.bv.zzbs.<init>(ZoomTable.java:24) at com.google.android.libraries.maps.bv.zzbv.zza(ZoomTableQuadTree.java:57) at com.google.android.libraries.maps.br.zzd.zza(Unknown Source:4) at com.google.android.libraries.maps.hi.zzas.zza(Suppliers.java:7) at com.google.android.libraries.maps.br.zza.zzh(SharedMapComponentImpl.java:58) at com.google.android.libraries.maps.gu.zzat.zza(RendererFactoryImpl.java:88) at com.google.android.libraries.maps.it.zzav.zza(GoogleMapImpl.java:59) at com.google.android.libraries.maps.it.zzci.zza(MapFragmentDelegateImpl.java:3) at com.google.android.libraries.maps.it.zzcg.zza(MapFragmentDelegateImpl.java:15) at com.google.android.libraries.maps.SupportMapFragment$zza.onCreateView(SupportMapFragment.java:15) at com.google.android.gms.dynamic.zae.zaa(com.google.android.gms:play-services-base@@17.1.0:4) at com.google.android.gms.dynamic.DeferredLifecycleHelper.zaa(com.google.android.gms:play-services-base@@17.1.0:9) at com.google.android.gms.dynamic.DeferredLifecycleHelper.onCreateView(com.google.android.gms:play-services-base@@17.1.0:25) at com.google.android.libraries.maps.SupportMapFragment.onCreateView(SupportMapFragment.java:34) at androidx.fragment.app.Fragment.performCreateView(Fragment.java:2698) at androidx.fragment.app.FragmentStateManager.createView(FragmentStateManager.java:310) at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1185) at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1354) at androidx.fragment.app.FragmentManager.moveFragmentToExpectedState(FragmentManager.java:1432) at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1495) at androidx.fragment.app.FragmentManager.dispatchStateChange(FragmentManager.java:2617) at androidx.fragment.app.FragmentManager.dispatchActivityCreated(FragmentManager.java:2569) at androidx.fragment.app.Fragment.performActivityCreated(Fragment.java:2722) at androidx.fragment.app.FragmentStateManager.activityCreated(FragmentStateManager.java:336) at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1186) at androidx.fragment.app.FragmentManager.addAddedFragments(FragmentManager.java:2222) at androidx.fragment.app.FragmentManager.executeOpsTogether(FragmentManager.java:1995) at androidx.fragment.app.FragmentManager.removeRedundantOperationsAndExecute(FragmentManager.java:1951) at androidx.fragment.app.FragmentManager.execPendingActions(FragmentManager.java:1847) at androidx.fragment.app.FragmentManager.dispatchStateChange(FragmentManager.java:2621) at androidx.fragment.app.FragmentManager.dispatchActivityCreated(FragmentManager.java:2569) at androidx.fragment.app.Fragment.performActivityCreated(Fragment.java:2722) at androidx.fragment.app.FragmentStateManager.activityCreated(FragmentStateManager.java:336) at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1186) at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1354) at androidx.fragment.app.FragmentManager.moveFragmentToExpectedState(FragmentManager.java:1432) at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1495) at androidx.fragment.app.FragmentManager.dispatchStateChange(FragmentManager.java:2617) at androidx.fragment.app.FragmentManager.dispatchActivityCreated(FragmentManager.java:2569) at androidx.fragment.app.FragmentController.dispatchActivityCreated(FragmentController.java:247) at androidx.fragment.app.FragmentActivity.onStart(FragmentActivity.java:541) at androidx.appcompat.app.AppCompatActivity.onStart(AppCompatActivity.java:201) at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1432) at android.app.Activity.performStart(Activity.java:7848) at android.app.ActivityThread.handleStartActivity(ActivityThread.java:3294) 2020-04-23 15:59:06.064 E/AndroidRuntime: at android.app.servertransaction.TransactionExecutor.performLifecycleSequence(TransactionExecutor.java:221) at android.app.servertransaction.TransactionExecutor.cycleToPath(TransactionExecutor.java:201) at android.app.servertransaction.TransactionExecutor.executeLifecycleState(TransactionExecutor.java:173) at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:97) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2016) at android.os.Handler.dispatchMessage(Handler.java:107) at android.os.Looper.loop(Looper.java:214) at android.app.ActivityThread.main(ActivityThread.java:7356) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:930) |
Pregunta cual es la causa de esto ?
El usuario jon le da una respuesta muy detallada, comparte un enlace en donde se presenta una solución oficial de Google y menciona que el hilo del SDK de Google Maps bloquea la aplicación (ArrayIndexOutOfBoundsException). Brinda la siguiente descripción:
El 23 de abril de 2020 a partir de las 11:30 PDT , Google realizó durante 4 horas una actualización de la configuración de un componente móvil de Maps, lo que provocó bloqueos en los SDK de Maps para Android e iOS. Las aplicaciones en dispositivos que descargaron esta versión de la configuración (durante el período de interrupción) fueron vulnerables al bloqueo. Se ofrecen soluciones alternativas para los SDK de Maps para Android e iOS.
Asimismo menciona otras soluciones, alternativas, entre otros detalles.
Si deseas saber más sobre esta consulta, puedes visitar el link en Stack Overflow.
Hasta aquí llegamos con las 5 consultas que marcaron tendencia en el mes de Abril de 2020 en la popular comunidad de Desarrolladores Stack Overflow, nos vemos a finales del siguiente mes con un nuevo Top de consultas.
Nota(s)
- No olvides que debemos usar la Tecnología para hacer cosas Buenas por el Mundo.
- La cantidad de Respuestas, Vistas, Votos, etc. de las consultas pueden variar en Stack Overflow en el futuro, hasta la fecha de este artículo son las que presentamos en las imágenes.
- Si lees con atención las consultas y las respuestas vas aprender sobre el problema que tenia el usuario que realiza la consulta y puede que sea el problema que estas intentando solucionar, esto es importante para tu aprendizaje.
- La idea de este artículo es comentar y exponer los temas que son tendencia en el mes determinado, no intentamos dar una respuesta al problema ya que estos son resueltos por los usuarios de la comunidad Stack Overflow, que son grandes Desarrolladores y con mucha experiencia en el área o Lenguaje de Programación determinado.
- Algunos enlaces a otras páginas colocados en este artículo pueden dejar de existir o continuar en el futuro, esto no depende de nosotros si no de los usuarios o empresas que son dueños de los servidores en donde se encuentran alojados estos enlaces, hasta la fecha de este artículo estos enlaces aún están disponibles.
Síguenos en nuestras Redes Sociales para que no te pierdas nuestros próximos contenidos.