Diferencia entre revisiones de «Wikipedia:Café/Archivo/Miscelánea/Actual»

Contenido eliminado Contenido añadido
Mar del Sur (discusión · contribs.)
pido ayudar a definir la lista
Línea 39:
:::Finalmente, tengo que investigar qué versiones de navegadores soporta actualmente Wikipedia, para usar una versión de JavaScript acorde y que funcione bien en todos los navegadores (lo digo por los ''async/await'' para los que sepan de qué hablo).
:::Aunque no sea perfecto, tener el corrector del lado de cliente y cargado en Wikipedia nos garantiza que el código sea visible y mantenible por cualquiera con los permisos adecuados, y no algo oscuro en un servidor. Un saludo. [[Usuario:Benjavalero|Benjavalero]] ([[Usuario Discusión:Benjavalero|discusión]]) 20:42 13 dic 2023 (UTC)
:::: @[[Usuario:Benjavalero|Benjavalero]], yo ya hice esa ''prueba'' hace mucho tiempo y tengo un código personal bastante funcional, por lo que puedo darte algunas respuestas y recomendaciones (no creo que muchas más personas vayan a ayudarte en esto).
::::# No deberías tener problemas con ningún navegador medianamente moderno, pero [[:mw:Compatibility#Browsers|aquí]] tienes los navegadores compatibles con el sistema.
::::# En lugar de una [[:mw:Manual:Parameters_to_index.php#Raw|lectura cruda]], recomiendo el [[:mw:API:Main page|uso de la API]] (véase [https://doc.wikimedia.org/mediawiki-core/1.36.3/js/#!/api/mw.Api mw.Api]), que además te permite prolongar la caché a la misma vida del diccionario. Por ejemplo yo pido primero la [[:mw:API:Info|información]] de la última revisión, y si es diferente a la de la caché entonces [[:mw:API:Revisions|actualizo la revisión]] de la caché. Si no ha cambiado no se necesita actualizar.
::::# Hablando de caché, no estás interceptando los errores de escritura de la caché <code>localStorage</code>, ni los de procesamiento de <code>JSON.parse</code>. Para despreocuparte de ello recomiendo el uso de las funciones del sistema, en este caso [https://doc.wikimedia.org/mediawiki-core/1.36.3/js/#!/api/mw.storage mw.storage]. Siempre que puedas deberías aprovecharte de las funciones del sistema.
::::# Sobre <code>isWordChar</code>, funciona en los alfabetos latino, cirílico, griego o armenio, entre otros, pero no sirve para alfabetos como el árabe (puedes probar con el texto الأبجدية), chino (字母), coreano (알파벳), hebreo (אלף), hindi (वर्णमाला)... o cualquier otro donde no existe distinción entre mayúsculas y minúsculas. Esto es que no funciona en 211 de [https://www.unicode.org/iso15924/iso15924-codes.html los 225 alfabetos Unicode]. Esto es un problema para la expansión a otros proyectos, aunque de momento no es tan grave porque apenas hay ocho proyectos que usan la herramienta, dos de ellos en español (<code>[[:w:es:Wikipedia:Corrector ortográfico/Listado|eswiki]]</code> y <code>[[:voy:es:Wikiviajes:Corrector ortográfico/Listado|eswikivoyage]]</code>). Para resolver esto yo uso una pequeña expresión regular Unicode, aunque mi versión tampoco es completa: de los siete idiomas que usan la herramienta actual funciona en [[:w:es:Wikipedia:Corrector ortográfico/Listado|español]], [[:w:de:Wikipedia:Helferlein/Rechtschreibprüfung/Wortliste|alemán]], [[:w:gl:Wikipedia:Revisor ortográfico/Listaxe|gallego]], [[:w:ur:ویکیپیڈیا:املا_پڑتالگر/فہرست_الفاظ|urdu]] y [[:w:sd:وڪيپيڊيا:اسپيل_جانچيندڙ/فهرست|sindi]], parcialmente en [[:w:fa:ویکی‌پدیا:اشتباه‌یاب/فهرست|farsi]] —excepto con algunas palabras compuestas y con caracteres de control, aunque esto técnicamente no sea un error—, y no funciona en absoluto en [[:w:he:ויקיפדיה:סקריפטים/בודק איות/מילון|hebreo]] —aunque sinceramente nunca investiqué por qué—. Es decir, funciona aceptablemente en 6 de 7 idiomas. Tu versión está enfocada excusivamente al uso en eswiki, aunque podría funcionar en alemán y gallego con pequeños retoques de configuración: 3 de 7. El uso de la expresión regular Unicode <code><nowiki>/\p{L}/u</nowiki></code> —similar a la que yo uso en mi versión— le daría mayor versatilidad y apenas se notaría en el rendimiento.
::::#Sobre rendimiento, deberías hacer un diccionario intermedio generado a partir de la intersección del listado de correcciones y de las palabras únicas del artículo. Es decir, un artículo como [[2021]] tiene 22106 palabras, para las cuales repites por cada una de ellas el bucle de búsqueda en el listado, que contiene unas veinte mil correcciones posibles; esto significa que se pueden alcanzar las 440 millones de repeticiones posibles, para llegar a detectar 153 posibles errores ortográficos. Sin embargo, muchas de esas iteraciones son redundantes, porque de todas las palabras del artículo tan solo son únicas 5293. Buscar estas últimas en el listado significa alcanzar las 106 millones de repeticiones posibles, para llegar a detectar los 88 errores también únicos. Pero aún no habríamos revisado el artículo, con lo que luego faltaría un paso más para buscar las 22106 palabras del artículo, pero esta vez en ese nuevo diccionario intermedio de 88 posibilidades únicas, que son 2 millones más de de iteraciones, donde se encontrarían esos 153 posibles errores ortográficos repetidos. En total, 106 más 2 siguen siendo muchos menos ciclos que 440 (la cuarta parte). Son más pasos, pero menos ciclos.
::::# Donde haces el <code><nowiki>split('|')</nowiki></code> tienes que considerar casos como <code><nowiki>msnm||{{esd|m s. n. m.}}</nowiki></code>, en donde tu código se equivoca ignorando esa línea. Puedes aceptar resultados con longitud mayor a tres bloques uniendo en el tercero todos los restantes.
::::# También podrías permitir la personalización del estilo y del diccionario mediante preferencias de usuario configuradas en el código personal de usuario.
:::: Observando mi código podría darte más sugerencias, pero creo que con estos conceptos básicos ya tienes un amplio espacio donde trabajar y mejorar. Si necesitas mayor detalle o quieres debatir alguna de las sugerencias ya sabes dónde encontrarme. -- [[Usuario:Leoncastro|Leoncastro]] ([[Usuario Discusión:Leoncastro|discusión]]) 14:50 16 dic 2023 (UTC)
 
== Líbano ==