2011-04-10

Mystify

Även om jag i de flesta fall föredrar Garmin eTrex Legend HCx framför Garmin Oregon, så finns det tillfällen när eTrex Legend inte är bra. Geocaching är ett sådant tillfälle. Den har i princip inget stöd för geocaching, särskilt inte när man jämför med Oregon.

En sak som är dåligt är att alla cacher, oavsett typ, visas med samma symbol. Detta är problematiskt för cacher av typen mystery eftersom man riskerar att leta efter en gömma trots att det inte finns någon på den plats som GPS:en indikerar.

För att råda bot på detta skrev jag ett litet program som byter ut symbolen i GPX-filer för cacher av typen mystery. Detta kombinerat med en "custom symbol" i GPS:en gör att mystery-cacher visas som ett frågetecken istället.

2011-04-03

ZyXEL ES-105A

Jag har haft flera dåliga erfarenheter av trådlöst nätverk. Kanske har jag bara haft otur eller så är det så att D-Links prylar går sönder när garantin har gått ut. I samband med en förändring av bredbandet behövdes fler portar. En switch verkade vara det enklaste och billigaste alternativet.

Det finns tillfällen när valet av switch är viktigt. Det här var inte ett sådant tillfälle. Det finns många olika switchar att välja mellan. En switch med 5 portar täcker precis mitt behovet. Det kan förvisso komma en dag då jag behöver fler portar, men det kan också bli tvärtom. Jag valde 100 Mbps för att jag inte har några snabbare nätverkskort.

2011-03-27

Oviksfjällen 2009-09-09

Natten var blåsig. Dessutom kantrade vinden, vilket gjorde att tältet fladdrade en hel del och störde sömnen. Morgonen bjöd på fortsatt vind och växlande molnighet.


Åreskutan i skugga


Solsidan på andra sidan

2011-03-20

Oviksfjällen 2009-09-08

Natten var inte lika kall som föregående natt. Medan jag intog en frukost bestående av pulverkaffe funderade jag på hur jag skulle göra idag. Antingen vandra hela vägen tillbaka till bilen och köra hem på kvällen. Eller dela upp vandringen tillbaka på två dagar. Jag gjorde bedömningen att klockan skulle hinna bli mycket innan jag var tillbaka till bilen. Tanken på över tre timmars bilkörning efter en hel dags vandring lockade inte, så det fick bli över två dagar.


Molnig morgon


Litet tält

2011-03-13

Oviksfjällen 2009-09-07

Natten var klar och kall. Jag skulle inte bli förvånad om nollan tangerades. Min sovsäck är avsedd för temperaturområdet -5 °C till 20 °C, men komforttemperaturen ligger en bit in på plussidan, så natten var inte helt angenäm.


Hundshögen i morgonsol


Detalj av Hundshögen

2011-03-06

Oviksfjällen 2009-09-06

Andra resan till Oviksfjällen inleddes med en omväg. Men för en gång skulle var det inte tanten i min Garmin Nüvi 205 som drabbats av tillfällig sinnesförvirring, utan det berodde på att 87:an var avstängd för underhållsarbete. Så blev det en omväg över Ragunda och Hammarstrand.

Den värsta rusningen var över för säsongen och det var betydligt färre människor i rörelse nu jämfört med förra gången. Enligt kartan skulle det gå en led med början halvvägs upp i skidbacken. Det visade sig att kartan stämde. Fördelen med den här leden är att den är inte lika brant som stigen uppför skidbacken.


Över trädgränsen efter ca 50 minuters vandring


Skidbackarna på Hovdehögen

2011-02-26

TDD utflykt i PHP land, del 7

Skillnaden mellan att skapa en ny punkt och redigera en befintlig punkt är minimal. I alla fall ur användarperspektiv. Implementationsmässigt skiljer det sig en del.

Första frågan är, hur vet vi om det handlar om att lägga till en ny punkt eller redigera en befintlig? Svaret är att den inkommande URL:en skiljer sig åt. När vi redigerar en punkt talar vi om vilken det gäller genom att ange dess ID. I teorin räcker det med att ange punktens ID, men eftersom vi ändå behöver cachens ID (vi måste fortfarande verifiera att användaren får modifiera punkten) så känns det enklast om även cachens ID kommer via URL:en.

Att verifiera att punkten faktiskt tillhör cachen känns som ett enkelt testfall. Men ett ännu enklare testfall är att verifiera att felsidan visas om punkten inte finns.

function testSetsErrorIfWaypointDoesNotExist() { $cacheManager = new MockCache_Manager(); $childWpHandler = new MockChildWp_Handler(); $this->request->setForValidation(ChildWp_Presenter::req_cache_id, '345'); $this->request->setForValidation(ChildWp_Presenter::req_child_id, '456'); $cacheManager->setReturnValue('exists', true); $cacheManager->expectOnce('exists', array('345')); $cacheManager->setReturnValue('userMayModify', true); $cacheManager->expectOnce('userMayModify', array('345')); $childWpHandler->expectOnce('exists', array('456')); $childWpHandler->setReturnValue('exists', false); $presenter = $this->createPresenter(); $presenter->init($this, $cacheManager, $childWpHandler); $this->assertEqual(ERROR_CACHE_NOT_EXISTS, $this->errorCode); }

Det första som slår mig är att det behövs mycket kod för att sätta upp testfallet. Men innan jag kan göra något åt det så måste init() modifieras så att testfallet blir godkänt.