{"id":1465,"date":"2014-08-10T12:02:39","date_gmt":"2014-08-10T10:02:39","guid":{"rendered":"http:\/\/blog.rastersoft.com\/?p=1465"},"modified":"2014-08-10T12:02:39","modified_gmt":"2014-08-10T10:02:39","slug":"cagandola-con-un-bug-grave","status":"publish","type":"post","link":"https:\/\/blog.rastersoft.com\/?p=1465","title":{"rendered":"Cag\u00e1ndola con un bug grave"},"content":{"rendered":"<p>A veces a uno se le escapan peque\u00f1os bug que, en principio, no tienen la menor importancia, hasta que resulta que s\u00ed la tienen. Eso me ha ocurrido con la nueva versi\u00f3n en desarrollo de <a href=\"https:\/\/github.com\/rastersoft\/devedeng\" target=\"_blank\">DevedeNG<\/a>.<\/p>\n<p>El bug ni siquiera era tal, sino m\u00e1s bien una combinaci\u00f3n de valores por defecto poco adecuados, mensajes poco claros, y c\u00f3digo que hac\u00eda demasiadas cosas. B\u00e1sicamente, DevedeNG necesita una carpeta vac\u00eda donde crear el proyecto, as\u00ed que le pide al usuario que le indique una. Si dicha carpeta ya existe le indica que va a proceder a borrarla, dej\u00e1ndole escoger si quiere continuar o cancelar antes de hacerlo.<\/p>\n<p>Hasta aqu\u00ed todo parece normal. El problema es que la carpeta por defecto era la carpeta personal del usuario, y el mensaje de aviso dec\u00eda simplemente: \u00abLa carpeta seleccionada ya existe. Si contin\u00faa, ser\u00e1 borrada. \u00bfContinuar?\u00bb. Este mensaje no es lo suficientemente claro porque en ninguna parte aparece qu\u00e9 carpeta se va a borrar. Ante esto, un usuario que se limite a pulsar Siguiente-&gt;Siguiente-&gt;Siguiente se encontrar\u00e1 con su carpeta personal borrada.<\/p>\n<p>El c\u00f3digo ya est\u00e1 corregido, para lo que he aplicado las siguientes lecciones aprendidas:<\/p>\n<ul>\n<li>Debe evitarse utilizar la carpeta de usuario ($HOME) como destino por defecto cuando haya que realizar alguna acci\u00f3n que borre una carpeta. En el caso de DevedeNG, el primer cambio fue que la carpeta destino se componga de la carpeta escogida por el usuario m\u00e1s el nombre del proyecto, por lo que, por defecto, nunca ser\u00e1 la carpeta de usuario sola la escogida para ser borrada.<\/li>\n<li>Siempre que se le pida al usuario confirmaci\u00f3n para borrar una carpeta debe mostrarse claramente en el texto qu\u00e9 carpeta se va a borrar. Nunca se debe dar por supuesto que el usuario lo sabe.<\/li>\n<li>En la medida de lo posible no debe borrarse la carpeta al completo, sino buscar qu\u00e9 ficheros y directorios son los que pueden interferir con el proceso que se quiere realizar, borrando exclusivamente esos y ninguno m\u00e1s.<\/li>\n<\/ul>\n<p>Afortunadamente, el usuario que se tropez\u00f3 con este problema ten\u00eda copia de seguridad, por lo que todo qued\u00f3 en un susto.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>A veces a uno se le escapan peque\u00f1os bug que, en principio, no tienen la menor importancia, hasta que resulta que s\u00ed la tienen. Eso me ha ocurrido con la nueva versi\u00f3n en desarrollo de DevedeNG. El bug ni siquiera era tal, sino m\u00e1s bien una combinaci\u00f3n de valores por defecto poco adecuados, mensajes poco &hellip; <a href=\"https:\/\/blog.rastersoft.com\/?p=1465\" class=\"more-link\">Seguir leyendo <span class=\"screen-reader-text\">Cag\u00e1ndola con un bug grave<\/span> <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3,4,5,6],"tags":[],"class_list":["post-1465","post","type-post","status-publish","format-standard","hentry","category-nueva-version","category-opinion","category-programacion","category-trucos"],"_links":{"self":[{"href":"https:\/\/blog.rastersoft.com\/index.php?rest_route=\/wp\/v2\/posts\/1465","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.rastersoft.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.rastersoft.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.rastersoft.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.rastersoft.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1465"}],"version-history":[{"count":0,"href":"https:\/\/blog.rastersoft.com\/index.php?rest_route=\/wp\/v2\/posts\/1465\/revisions"}],"wp:attachment":[{"href":"https:\/\/blog.rastersoft.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1465"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.rastersoft.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1465"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.rastersoft.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1465"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}