{"id":1186,"date":"2009-02-25T19:12:59","date_gmt":"2009-02-25T18:12:59","guid":{"rendered":"http:\/\/webbservern.se\/~jonas\/wordpress\/?p=1186"},"modified":"2009-02-25T19:12:59","modified_gmt":"2009-02-25T18:12:59","slug":"klaga-inte-fixa-det","status":"publish","type":"post","link":"https:\/\/webbservern.se\/~jonas\/wordpress\/?p=1186","title":{"rendered":"Klaga inte, fixa det"},"content":{"rendered":"<p>N\u00e4r det g\u00e4ller open source-mjukvaror som man anv\u00e4nder \u00e4r det l\u00e4tt att bli irriterad n\u00e4r man st\u00f6ter p\u00e5 en bugg som s\u00e4tter k\u00e4ppar i hjulet. Ist\u00e4llet f\u00f6r att muttra surt g\u00e5r det som v\u00e4l \u00e4r ofta att vara lite konstruktiv och g\u00f6ra n\u00e5got \u00e5t problemet iom att k\u00e4llkoden finns tillg\u00e4nglig. Om man inte har m\u00f6jlighet att fixa buggen sj\u00e4lv kan man se till att kolla om buggen finns rapporterad och annars l\u00e4mna en s\u00e5 utf\u00f6rlig buggrapport som m\u00f6jligt.<\/p>\n<p>Jag illustrerar med ett f\u00e4rskt exempel fr\u00e5n ikv\u00e4ll och kanske kan n\u00e5n som inte brukar fixa buggar l\u00e4ra sig n\u00e5got och ta efter&#8230;?<\/p>\n<p>Ni som f\u00f6ljt bloggen ett tag vet att jag anv\u00e4nder pyTrainer. Jag sparar mina data i en extern relationsdatabas (MySQL) och det verkar inte vara den vanligaste varianten (eftersom buggen har f\u00e5tt finnas ett bra tag) utan de flesta l\u00e5ter troligen pyTrainer hantera lagringen lokalt med hj\u00e4lp av sqlite.<\/p>\n<p>Jag har uppt\u00e4ckt att n\u00e4r jag v\u00e4l har skapat (dvs importerat fr\u00e5n klockan) ett tr\u00e4ningspass s\u00e5 kan jag inte uppdatera informationen, exempelvis kommentarsf\u00e4ltet. Om man startar pyTrainer fr\u00e5n terminalen och spanar efter fel ser man f\u00f6ljande informativa meddelande:<\/p>\n<p><code>File \"\/usr\/lib\/python2.5\/site-packages\/pytrainer\/record.py\", line 137, in updateRecord<br \/>\n    self.ddbb.update(\"records\",cells,values,\" id_record=%d\" %id_record)<br \/>\nTypeError: int argument required<\/code><\/p>\n<p>Saken \u00e4r s\u00e5 gott som klar. Vi beh\u00f6ver vara lite tydligare och ber\u00e4tta f\u00f6r python att id_record duger gott. Vi pillar in n\u00e5t som jag skulle ben\u00e4mna &#8220;explicit <a href=\"http:\/\/en.wikipedia.org\/wiki\/Type_conversion\">datatypkonvertering<\/a>&#8221; s\u00e5 att det blir <em>%int(id_record)<\/em>. Se d\u00e4r, fem tecken och en bugg mindre \ud83d\ude42<\/p>\n<p>Nu till det fina i kr\u00e5ks\u00e5ngen, andra anv\u00e4ndare borde naturligtivs f\u00e5 del av denna fantastiska f\u00f6rb\u00e4ttring (i sj\u00e4lva verket \u00e4r det ju en ganska allvarlig bugg!).<\/p>\n<p>Efter att ha konstaterat att buggen fortfarande existerar i <a href=\"http:\/\/pytrainer.svn.sourceforge.net\/viewvc\/pytrainer\/pytrainer\/trunk\/pytrainer\/record.py?view=markup&#038;pathrev=284\">trunken<\/a> \u00e4r det l\u00e4ge att f\u00f6rs\u00f6ka committa patchen.<\/p>\n<p>Jag har checkat ut pytrainer-koden tidigare med kommandot:<br \/>\n<code>svn co https:\/\/pytrainer.svn.sourceforge.net\/svnroot\/pytrainer pytrainer<\/code><\/p>\n<p>Nu beh\u00f6vde jag s\u00e5ledes uppdatera min lokala vy:<br \/>\n<code>svn update<\/code><\/p>\n<p>Ser till att min patch \u00e4r p\u00e5 plats (r\u00e5kar vara i record.py rad 218) och skickar upp f\u00f6r\u00e4ndringen till repositoryt (k\u00e4llkodsf\u00f6rr\u00e5det):<br \/>\n<code>svn commit record.py -m  \"Fixed bug where track record was supposed to be updated in database. Type cast was missing.\"<\/code><\/p>\n<p>Det sista steget kr\u00e4ver att man har skrivr\u00e4ttigheter till repositoryn men det b\u00f6r inte vara n\u00e5got problem att f\u00e5 om du presenterar dig p\u00e5 n\u00e5n e-postlista\/forum eller dylikt och s\u00e4ger att du har koll.<\/p>\n<p>Efter detta \u00e4r det bara att luta sig tillbaka och njuta av ditt stord\u00e5d \ud83d\ude42<\/p>\n","protected":false},"excerpt":{"rendered":"<p>N\u00e4r det g\u00e4ller open source-mjukvaror som man anv\u00e4nder \u00e4r det l\u00e4tt att bli irriterad n\u00e4r man st\u00f6ter p\u00e5 en bugg som s\u00e4tter k\u00e4ppar i hjulet. Ist\u00e4llet f\u00f6r att muttra surt g\u00e5r det som v\u00e4l \u00e4r ofta att vara lite konstruktiv &hellip; <a href=\"https:\/\/webbservern.se\/~jonas\/wordpress\/?p=1186\">Continue reading <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":[6,21,26],"tags":[425,464],"class_list":["post-1186","post","type-post","status-publish","format-standard","hentry","category-datorer","category-motion","category-programmering","tag-open-source","tag-pytrainer"],"_links":{"self":[{"href":"https:\/\/webbservern.se\/~jonas\/wordpress\/index.php?rest_route=\/wp\/v2\/posts\/1186","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/webbservern.se\/~jonas\/wordpress\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/webbservern.se\/~jonas\/wordpress\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/webbservern.se\/~jonas\/wordpress\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/webbservern.se\/~jonas\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1186"}],"version-history":[{"count":0,"href":"https:\/\/webbservern.se\/~jonas\/wordpress\/index.php?rest_route=\/wp\/v2\/posts\/1186\/revisions"}],"wp:attachment":[{"href":"https:\/\/webbservern.se\/~jonas\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1186"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/webbservern.se\/~jonas\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1186"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/webbservern.se\/~jonas\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1186"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}