{"id":499,"date":"2006-11-16T22:51:44","date_gmt":"2006-11-16T21:51:44","guid":{"rendered":"http:\/\/bitacora.eniac2000.com\/?p=499"},"modified":"2006-11-16T22:51:44","modified_gmt":"2006-11-16T21:51:44","slug":"peticiones-extranas","status":"publish","type":"post","link":"https:\/\/bitacora.eniac2000.com\/?p=499","title":{"rendered":"Peticiones extra\u00f1as"},"content":{"rendered":"<p>Cuando trabajas en el desarrollo de software tienes que tener en cuenta una cosa muy importante: el cliente manda. Como en todos los sitios, obviamente. Pero adem\u00e1s tienes que tener en cuenta una segunda cosa: no importa lo que hagas, no importa cu\u00e1nto compliques el c\u00f3digo, ya que el cliente har\u00e1 cualquier cosa absolutamente extra\u00f1a que har\u00e1 que el sistema reviente de la manera m\u00e1s absurda. Sin embargo, tampoco debes olvidar una tercera cosa: el cliente no s\u00f3lo no sabe lo que quiere, sino que, habitualmente, no sabe ni siquiera lo que necesita. Es m\u00e1s, en general no sabe nada de la tecnolog\u00eda con la que est\u00e1 tratando (y la mayor\u00eda de las veces, ni falta que le hace, y casi mejor as\u00ed).<\/p>\n<p>Hace algunos d\u00edas el cliente del proyecto de desarrollo en el que trabajo nos envi\u00f3 el parte de incidencias encontrado. Este parte, es, simplificando, un listado de errores que el cliente ha advertido durante el uso del software entregado. Dado que la entrega no es definitiva, sino que se va haciendo en pasos sucesivos, se pueden ir corrigiendo poco a poco esos errores.<\/p>\n<p>Precisamente me toc\u00f3 corregir, entre varios, un error especialmente llamativo: el cliente hab\u00eda observado que en un determinado formulario, marcando un determinado campo de texto no editable, si le daba a la tecla de borrado (la que est\u00e1 encima del <em>Intro<\/em>, el navegador (es una aplicaci\u00f3n mediante servicio web) volv\u00eda <em>\u00abatr\u00e1s\u00bb<\/em>.<\/p>\n<p>Como se puede ver, era un petici\u00f3n sumamente sorprendente. Por <em>atr\u00e1s<\/em>, seg\u00fan pude experimentar, quer\u00eda decir al inicio del historial del navegador. Y entonces apliqu\u00e9 el principio de Sherlock Holmes: precisamente los detalles m\u00e1s enrevesados y grotescos de un problema son los que dan la clave para llegar directamente a su soluci\u00f3n.<\/p>\n<p>En efecto: hay que saber que en los navegadores (al menos en los m\u00e1s comunes) el pulsar esta tecla hace que se vaya hacia atr\u00e1s en el historial. Cuando la p\u00e1gina en cuesti\u00f3n tiene un formulario, si fijamos la posici\u00f3n con el rat\u00f3n en uno de los campos, y es editable, bloquea este comportamiento (la tecla de borrado se comporta como tal, y borra el texto que en dicho campo hubiere). Pero al ser un campo de no edici\u00f3n, no ocurr\u00eda esto. En suma: el cliente se estaba quejando porque al darle a borrar el navegador hac\u00eda lo que ten\u00eda que hacer.<\/p>\n<p>Ya nos quedamos con la duda: \u00bfdeb\u00edamos escalar el problema a Microsoft o a la Fundaci\u00f3n Mozilla? \u00bfO liar la traca con javascript para capturar el evento \u00abpulsado de la tecla de borrado\u00bb en las p\u00e1ginas web con formularios, distinguiendo si se est\u00e1 sobre un campo editable? \u00bfO explicarle al cliente que ese era un comportamiento normal y que, en ese caso, las quejas deb\u00edan ir al maestro armero? Huelgo decir que optamos por la tercera.<\/p>\n<p>Una cosa curiosa: efectivamente tanto Firefox como IExplorer se comportaban de la manera descrita, pero Firefox, usando el motor de Internet Explorer (cosa que se puede conseguir con el plug-in <a href=\"https:\/\/addons.mozilla.org\/firefox\/1419\/\">IE-Tab<\/a> -s\u00f3lo para Windows, obviamente) no lo hac\u00eda. De hecho, eso fue lo que m\u00e1s me fascin\u00f3 de todo este asunto.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Cuando trabajas en el desarrollo de software tienes que tener<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"advanced_seo_description":"","jetpack_seo_html_title":"","jetpack_seo_noindex":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[13],"tags":[],"series":[],"class_list":["post-499","post","type-post","status-publish","format-standard","hentry","category-informatica"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/bitacora.eniac2000.com\/index.php?rest_route=\/wp\/v2\/posts\/499","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/bitacora.eniac2000.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/bitacora.eniac2000.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/bitacora.eniac2000.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/bitacora.eniac2000.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=499"}],"version-history":[{"count":0,"href":"https:\/\/bitacora.eniac2000.com\/index.php?rest_route=\/wp\/v2\/posts\/499\/revisions"}],"wp:attachment":[{"href":"https:\/\/bitacora.eniac2000.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=499"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/bitacora.eniac2000.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=499"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/bitacora.eniac2000.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=499"},{"taxonomy":"series","embeddable":true,"href":"https:\/\/bitacora.eniac2000.com\/index.php?rest_route=%2Fwp%2Fv2%2Fseries&post=499"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}