{"id":482,"date":"2011-05-20T09:33:59","date_gmt":"2011-05-20T09:33:59","guid":{"rendered":"http:\/\/esferas.org\/msqlu\/2011\/05\/20\/y-una-bonita-maaana-de-primavera-clipperz-deja-de-funcionar\/"},"modified":"2016-04-17T08:58:59","modified_gmt":"2016-04-17T08:58:59","slug":"y-una-bonita-maaana-de-primavera-clipperz-deja-de-funcionar","status":"publish","type":"post","link":"https:\/\/esferas.org\/msqlu\/2011\/05\/20\/y-una-bonita-maaana-de-primavera-clipperz-deja-de-funcionar\/","title":{"rendered":"Y una bonita ma\u00f1ana de primavera Clipperz me da el susto final &#8230;"},"content":{"rendered":"<p>&#8230; y se acab\u00f3 lo que se daba.<\/p>\n<p><!--more--><\/p>\n<p>Despu\u00e9s de usarlo durante varios meses pr\u00e1cticamente sin problemas, de haberme<br \/>\nacostumbrado a sus extravagancias y a su ritmo pausado entre cifrado y<br \/>\ndescifrado, ida y venida de bloques de datos &#8230; hoy se ha muerto y ha dicho<br \/>\nque no, que no reconoce a nadie. Ni siquiera funciona la creaci\u00f3n de cuentas.<\/p>\n<p>O s\u00ed, depende de c\u00f3mo se mire. Porque en la tabla de usuarios aparecen<br \/>\nnuevos registros pero no deja entrar con ninguno de ellos. Y como toda la<br \/>\ninformaci\u00f3n est\u00e1 cifrada, pero toda, toda, ni siquiera puedo ver a qu\u00e9 fila pertenece un usuario. Sospecho que la m\u00e1s antigua es la m\u00eda pero tampoco tengo la certeza.<\/p>\n<p>Quiz\u00e1s lo m\u00e1s frustrante es saber que los datos siguen ah\u00ed, que est\u00e1n en la<br \/>\nbase de datos, pero que soy incapaz de acceder a ellos empleando el programa<br \/>\nni a\u00fan teniendo la contrase\u00f1a. Y eso s\u00ed que ha resultado ser una sorpresa. No me esperaba que estuviese tan verde que se disparase en el pie.<\/p>\n<h4>Detalles<\/h4>\n<p>\u00bf Qu\u00e9 creo que ha ocurrido ? Pues despu\u00e9s de pasarme unas cuantas horas de mi<br \/>\ntiempo buscando en la red y comprobando la configuraci\u00f3n y los fuentes del<br \/>\nprograma (hasta donde he podido hacerlo), he llegado a la conclusi\u00f3n de que<br \/>\nayer a\u00f1ad\u00ed un par de entradas a la base de datos y alcanc\u00e9 alg\u00fan l\u00edmite que ha<br \/>\nterminado por corromper de alguna manera el mecanismo de <em>autenticaci\u00f3n<\/em> o el<br \/>\n\u00edndice. He le\u00eddo alguna referencia a ello en los foros como <a href=\"http:\/\/groups.google.com\/group\/clipperz\/browse_thread\/thread\/c674ee6fc8e92d91\">\u00e9sta<\/a> y <a href=\"http:\/\/groups.google.com\/group\/clipperz\/msg\/b87ace51f4b0534b\">\u00e9sta<\/a> donde hablan sobre desbordamientos de campos y corrupci\u00f3n de datos, pero no puedo asegurar que tengan que ver con lo que dicen. Si que he podido ver, tras restaurar la \u00faltima copia de la base de datos, que basta con a\u00f1adir una entrada para reproducir el problema: no se puede entrar en las cuentas.<\/p>\n<p>Todo esto despu\u00e9s de descartar que la copia <em>offline<\/em> funciona, que otra instalaci\u00f3n pr\u00e1cticamente gemela excepto en contenidos sigue funcionando y tras probar ambos extremos en varios tipos de navegadores y versiones de sistema operativo. Un buen atrac\u00f3n de absurdos mensajes de error y choques contra el muro.<\/p>\n<p>Como dec\u00eda, he buscado y buscado y buscado en los foros y he aprendido unas<br \/>\ncuantas cosas para la pr\u00f3xima:<\/p>\n<ol>\n<li>Javascript puede ser la co\u00f1a en verso para algunas cosas, incluso para muchas, pero no para depurar errores en los programas. O funciona o lo llevas claro por el n\u00famero de \u00f1apas que debes realizar para saber qu\u00e9 es lo que ocurre. Y \u00fan as\u00ed m\u00e1s vale que sepas qu\u00e9 debe hacer el programa &#8230;<\/li>\n<li>En aplicaciones como \u00e9sta es donde se ve lo dif\u00edcil que es conseguir que herramientas dispares como Javascript, PHP, MySQL y Apache proporcionen informaci\u00f3n \u00fatil sobre qu\u00e9 est\u00e1 ocurriendo entre ellas, siquiera a los propios desarrolladores.<\/li>\n<li>Los desarrolladores del programa est\u00e1n centrados en una nueva versi\u00f3n a la que llaman <strong>gamma<\/strong> y supongo que tambi\u00e9n en su negocio -algo totalmente leg\u00edtimo- por lo que la versi\u00f3n de la comunidad est\u00e1 muy desatendida. \u00bf Mala versi\u00f3n ? No, simplemente no est\u00e1 atendida.<\/li>\n<\/ol>\n<p>Dos consideraciones m\u00e1s al respecto del segundo punto:<\/p>\n<ol>\n<li>Es lo que hay y no reniego de ello pero a veces las cosas simplemente no se pueden unir limpiamente y ser\u00eda mejor ponerse de acuerdo en enviar un buen trazado a alg\u00fan sitio f\u00e1cilmente accesible. El mecanismo podr\u00eda desactivarse tambi\u00e9n limpiamente sin liarla tocando configuraciones globales y reiniciando servicios.<\/li>\n<li>He visto al menos <a href=\"https:\/\/astillas.net\/wiki\/ClipperZ#Lidiando_con_errores\">un error<\/a> que se arreglaba desactivando la salida de mensajes en PHP porque interfer\u00eda con el funcionamiento de AJAX (otro que tal) lo que demuestra lo dificultoso que resulta depurar nada.<\/li>\n<\/ol>\n<h4>M\u00e1s detalles y una soluci\u00f3n<\/h4>\n<p>Le he echado un vistazo a la tabla principal y me he encontrado con que el campo <em>header<\/em> est\u00e1 a punto de desbordarse. A\u00fan sin saber exactamente para qu\u00e9 y c\u00f3mo se emplea, he comprobado que basta con a\u00f1adir una ficha m\u00e1s a la base de datos para que el acceso queda completamente aniquilado.<\/p>\n<pre>\nmysql&gt; select userid, length(header) from user order by 1;\n+--------+----------------+\n| userid | length(header) |\n+--------+----------------+\n|     51 |          65252 |\n|     52 |            436 |\n+--------+----------------+\n2 rows in set (0.00 sec)\nmysql&gt;\n<\/pre>\n<p>Como tambi\u00e9n he encontrado un repositorio Git del cual bajarme la ultim\u00edsima versi\u00f3n del programa, he procedido con ello de la siguiente forma:<\/p>\n<ol>\n<li>Clonar el repositorio desde las fuentes en\n<pre class=\"inline:true decode:1 \" >git clone git:\/\/github.com\/clipperz\/clipperz-communityEdition.git<\/pre>\n<p>.<\/li>\n<li>Instalarlo reemplazando la versi\u00f3n actual.<\/li>\n<li>Aplicar las modificaciones a la base de datos que consisten principalmente en cambiar el tipo algunos campos de\n<pre class=\"inline:true decode:1 \" >TEXT<\/pre>\n<p> a <\/p>\n<pre class=\"inline:true decode:1 \" >LONGTEXT<\/pre>\n<p> <sup>[<a href=\"#pnote-248-1\" id=\"rev-pnote-248-1\">1<\/a>]<\/sup><\/li>\n<li>Invocar el mecanismo <a href=\"http:\/\/www.phpobjectgenerator.com\/\">POG<\/a> para construir los objetos PHP y verificar la instalaci\u00f3n.<\/li>\n<li>Usar el programa &#8230;<\/li>\n<\/ol>\n<p>Pero como he dicho al principio <q>se acab\u00f3 lo que se daba<\/q>, y es que cuando tienes que meterte tanto en las tripas de un programa por fallos tan de dise\u00f1o como \u00e9ste la confianza se esfuma y todo se vuelve cr\u00edtico con \u00e9l. Es m\u00e1s, desde que me he encontrado con este problema -as\u00ed como por jugar- he empezado a dise\u00f1ar un mecanismo parecido y me he dado cuenta de que con requerimientos menos estrictos podr\u00eda valerme perfectamente algo m\u00e1s simple.<\/p>\n<div class=\"footnotes\">\n<h4>Notes<\/h4>\n<p>[<a href=\"#rev-pnote-248-1\" id=\"pnote-248-1\">1<\/a>] Seg\u00fan <a href=\"http:\/\/forums.mysql.com\/read.php?10,157804,157806#msg-157806\">Anthony Willard <\/a> pasa de  64K a 4Gb<\/p>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>&#8230; y se acab\u00f3 lo que se daba.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_import_markdown_pro_load_document_selector":0,"_import_markdown_pro_submit_text_textarea":"","webmentions_disabled_pings":false,"webmentions_disabled":false,"footnotes":""},"categories":[2],"tags":[303,19,44],"class_list":["post-482","post","type-post","status-publish","format-standard","hentry","category-software","tag-clipperz","tag-errores","tag-servicios-web"],"_links":{"self":[{"href":"https:\/\/esferas.org\/msqlu\/wp-json\/wp\/v2\/posts\/482","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/esferas.org\/msqlu\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/esferas.org\/msqlu\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/esferas.org\/msqlu\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/esferas.org\/msqlu\/wp-json\/wp\/v2\/comments?post=482"}],"version-history":[{"count":0,"href":"https:\/\/esferas.org\/msqlu\/wp-json\/wp\/v2\/posts\/482\/revisions"}],"wp:attachment":[{"href":"https:\/\/esferas.org\/msqlu\/wp-json\/wp\/v2\/media?parent=482"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/esferas.org\/msqlu\/wp-json\/wp\/v2\/categories?post=482"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/esferas.org\/msqlu\/wp-json\/wp\/v2\/tags?post=482"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}