<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"><channel><atom:link rel="hub" href="http://tumblr.superfeedr.com/" xmlns:atom="http://www.w3.org/2005/Atom"/><description>Konsulent og familiemann i Trondheim.</description><title>Tilfeldige ting</title><generator>Tumblr (3.0; @anders-hammervold)</generator><link>http://anders.hammervold.com/</link><item><title>Første commit til github, SpecFlow for norsk</title><description>&lt;p&gt;Etter å ha gjort en kort introduksjon til BDD og &lt;a href="http://cukes.info/"&gt;cucumber &lt;/a&gt;på XP Meetup denne uka, ble jeg reintrodusert for &lt;a href="http://www.specflow.org/"&gt;SpecFlow&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Dette er en visual studio addin som snakker &lt;a href="http://github.com/aslakhellesoy/gherkin"&gt;Gherkin&lt;/a&gt; for BDD-tester, slik cucumber gjør. Dette gjør livet betydelig enklere for en .Net utvikler da man får testrunner-integrasjon direkte i visual studio.&lt;/p&gt;
&lt;p&gt;Men det hadde en mangel: Norsk. Dvs den var ikke ferdig implementert for norsk.&lt;/p&gt;
&lt;p&gt;Så jeg branchet SpecFlow (&lt;a href="http://github.com/andersmh/SpecFlow"&gt;her&lt;/a&gt;), og implementerte det for norsk, samt en fiks for en svensk test som så ut til å mangle.&lt;/p&gt;
&lt;p&gt;Deretter begynte jeg lese mer om dette og så at de på &lt;a href="http://groups.google.com/group/specflow/browse_thread/thread/7800c2bc850f85d6"&gt;Aslaks forslag &lt;/a&gt;har begynt å integrere seg med med Gherkin-prosjektets parser og implementere denne for c#. Dermed vil de få støtte for alle de til nå støttede 40 språk out of the box.&lt;/p&gt;
&lt;p&gt;Så da legger jeg ikke inn noen pull request på min fiks :)&lt;/p&gt;
&lt;p&gt;Det lønner seg å lese seg opp om hva som skjer før man gjør kodeendringer.&lt;/p&gt;
&lt;p&gt;Men inntil de er ferdige har jeg en &lt;a href="http://github.com/andersmh/SpecFlow"&gt;branch&lt;/a&gt; av SpecFlow med støtte for norsk.&lt;/p&gt;</description><link>http://anders.hammervold.com/post/371159111</link><guid>http://anders.hammervold.com/post/371159111</guid><pubDate>Thu, 04 Feb 2010 23:25:00 +0100</pubDate><category>BDD</category><category>Gherkin</category><category>SpecFlow</category><category>cucumber</category></item><item><title>Låsing er jo alltid relevant i vårt fag. Det er et tema som...</title><description>&lt;img src="http://28.media.tumblr.com/tumblr_kto5giXlZN1qzkr1vo1_500.png"/&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;Låsing er jo alltid relevant i vårt fag. Det er et tema som diskuteres nærmest daglig i mitt nåværende oppdrag.&lt;/p&gt;
&lt;p&gt;Køer er jo en interessant tilnærming til problematikken, og her kan vi kanskje også huske å lære av trafikken, ref bildet som det linkes til ;)&lt;/p&gt;
&lt;p&gt;Bildet er hentet fra:&lt;/p&gt;
&lt;p&gt;&lt;a title="http://images.damncrows.com/image/1246562643/dead-lock" target="_self" href="http://images.damncrows.com/image/1246562643/dead-lock"&gt;&lt;a href="http://images.damncrows.com/image/1246562643/dead-lock"&gt;http://images.damncrows.com/image/1246562643/dead-lock&lt;/a&gt;&lt;/a&gt;&lt;/p&gt;</description><link>http://anders.hammervold.com/post/256954362</link><guid>http://anders.hammervold.com/post/256954362</guid><pubDate>Wed, 25 Nov 2009 15:26:42 +0100</pubDate></item><item><title>“Hent hjelp” . Når innskuddsautomaten I banken har...</title><description>&lt;img src="http://24.media.tumblr.com/tumblr_kpb54mRfag1qzkr1vo1_500.jpg"/&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;“Hent hjelp” . Når innskuddsautomaten I banken har denne meldingen sent på en kveld. Hva betyr det ? Hvordan kan jeg hjelpe? Er det noen som er innesperret der ?&lt;/p&gt;</description><link>http://anders.hammervold.com/post/177308243</link><guid>http://anders.hammervold.com/post/177308243</guid><pubDate>Tue, 01 Sep 2009 21:36:28 +0200</pubDate></item><item><title>Udi Dahan presenting, UI composition key to SOA Success. He...</title><description>&lt;img src="http://25.media.tumblr.com/tumblr_kon9geYOrh1qzkr1vo1_500.jpg"/&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;Udi Dahan presenting, UI composition key to SOA Success. He spent 100 minutes on this slide without getting boring or running out of material. A great talk, and great content. I hope he convinced all listeners from my current project/customer. Change&lt;/p&gt;</description><link>http://anders.hammervold.com/post/166805687</link><guid>http://anders.hammervold.com/post/166805687</guid><pubDate>Thu, 20 Aug 2009 00:07:00 +0200</pubDate><category>nnug</category><category>architecture</category><category>fromphone</category></item><item><title>Flyttet blogg til tumblr</title><description>&lt;p&gt;Da har jeg flyttet denne bloggen til &lt;a href="http://tumblr.com"&gt;tumblr&lt;/a&gt;. Det gikk ganske smertefritt, og er allerede testet med en blogpost fra mobilen (bildet av vann i dørken på bilen).&lt;/p&gt;
&lt;p&gt;&lt;a href="http://tumblr.com"&gt;Tumblr&lt;/a&gt; hoster bilder, lyd og video, og har også &lt;a href="http://twitter.com/ah74"&gt;twitter&lt;/a&gt;-integrasjon. Dette vil forhåpentligvis medføre både at jeg blogger mer, og &lt;a href="http://twitter.com/ah74"&gt;twitter&lt;/a&gt; mer.&lt;/p&gt;
&lt;p&gt;“Bakoverkompatibilitet” bør være smertefri siden jeg endret dns til å peke på &lt;a href="http://tumblr.com"&gt;tumblr&lt;/a&gt;-bloggen istedenfor &lt;a href="http://blogger.com"&gt;blogger&lt;/a&gt;-bloggen, samt at &lt;a href="http://feedburner.google.com/"&gt;feedburner &lt;/a&gt;ordner rss der url ikke er endret.&lt;/p&gt;
&lt;p&gt;Det kom jo noe godt ut av det også. Jeg hadde en utestående faktura (forfalt i går) hos &lt;a href="http://one.com"&gt;One.com&lt;/a&gt; for dns, noe jeg hadde glemt og neppe sett før langt uti august hadde jeg ikke gjort dette i dag. I tillegg er &lt;a href="http://feedburner.google.com/"&gt;feedburner&lt;/a&gt; tydeligvis blitt spist av &lt;a href="http://google.com"&gt;Google&lt;/a&gt; siden sist, så jeg måtte linke min konto til min &lt;a href="http://google.com"&gt;google&lt;/a&gt;-ident også.&lt;/p&gt;</description><link>http://anders.hammervold.com/post/151095682</link><guid>http://anders.hammervold.com/post/151095682</guid><pubDate>Tue, 28 Jul 2009 23:21:25 +0200</pubDate><category>blogging</category></item><item><title>Dørken på passasjersiden i bilen i går</title><description>&lt;img src="http://26.media.tumblr.com/TnZP2gOH2qgn7r8yK4jjQlnEo1_500.jpg"/&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;Dørken på passasjersiden i bilen i går&lt;/p&gt;</description><link>http://anders.hammervold.com/post/151076785</link><guid>http://anders.hammervold.com/post/151076785</guid><pubDate>Tue, 28 Jul 2009 22:46:37 +0200</pubDate></item><item><title>Skrivebordskrigen tar sommerferie</title><description>&lt;p&gt;Nå har Hans Jørgen gått ut i ferie, og vi har begge god tid til å planlegge neste trinn i vår pågående kontor-feide.&lt;br/&gt;&lt;br/&gt;Jeg fikk inn et billig stikk før ferien, med en “&lt;span id="_ctl0_content_HeadLine1" class="CategoryHeadline"&gt;Shock-Your-Friends Stapler” fra &lt;a href="http://www.dealextreme.com/details.dx/sku.12291"&gt;dealextreme. &lt;/a&gt;Den  ble innkjøpt like etter skrivebordstuntet HJ utsatte meg for tidlig i vår. Jeg har hatt den på pulten i 3 mnd omtrent, og siste uken før ferien så fikk jeg rapport om at han hadde tatt den i bruk. Og selv etter å ha inspisert den for stifter &lt;/span&gt;&lt;span id="_ctl0_content_HeadLine1" class="CategoryHeadline"&gt;(den er tom), prøvde han å bruke den til å stifte sammen et dyktig fett designdokument han måtte lese (takk til Arnstein som skriver designdokumenter på 26 sider!).&lt;br/&gt;&lt;br/&gt;Nå var jeg ikke tilstede da han fikk støt, og jeg tror også HJ er relativt immun mot (egentlig ufarlige) støt etter diverse teslacoil-prosjekter, så jeg er ikke helt fornøyd. Jeg har større planer for høsten, og min kone bemerket bare at “du er slem Anders”. Noe jeg helt klart prøve å leve opp til.&lt;br/&gt;&lt;br/&gt;Men nå er det sommerferie. Jeg har god tid til å tenke ut noe mer. Smerte er jo ikke målet. Det er jo best om det er noe som er morsomt for alle involverte.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;/span&gt;&lt;/p&gt;
&lt;div class="blogger-post-footer"&gt;&lt;img width="1" height="1" src="https://blogger.googleusercontent.com/tracker/3106609074023669579-5686954006220349142?l=anders.hammervold.com"/&gt;&lt;/div&gt;</description><link>http://anders.hammervold.com/post/151042640</link><guid>http://anders.hammervold.com/post/151042640</guid><pubDate>Fri, 10 Jul 2009 18:25:00 +0200</pubDate></item><item><title>Ny blog</title><description>&lt;p&gt;Det er stille her for tiden noe som skyldes blant annet latskap frem mot sommeren (-:&lt;br/&gt;&lt;br/&gt;Å blogge om blogging blir en form for metablogging? Det er ikke så lett å blogge, og et av hovedproblemene er identitet. Hvem er du, i kontekst av bloggen. Man har gjerne flere identiteter, som varierer i forhold til hvilken kontekst man er i.&lt;br/&gt;&lt;br/&gt;Når man er på jobb vil ens identitet bestå av firma man er ansatt i, hvilke arbeidsoppgaver man har, hvor man kommer fra og andre faktorer som er relevante for din jobb.&lt;br/&gt;&lt;br/&gt;Når man derimot er på besøk hos slekt og gamle venner er ens identitet noe annerledes. Den har lengre historikk, de så deg jo som baby mange av de. Derimot mangler de kanskje noe informasjon om deg som gjelder de 8-9 timene du tilbringer hver dag på jobb. “Jobber du med data enda ?” er standardspørsmålet jeg kan få. Der du motstrebende svarer ja og samtidig forsøke å flykte fra spørsmål om virusinfiserte pc-er, printer-helvete og word-problemer.&lt;br/&gt;&lt;br/&gt;Dette beskriver vel hovedidentitetene til flere bloggere, og man har flere. Er du konsulent for eksempel, har du en annen variant av jobb-identitet på oppdrag enn du har når du er “inne”.&lt;br/&gt;&lt;br/&gt;Dette reflekterer seg i blogging også. Om du har en blogg, hva skal du skrive om ? Hvilken identitet har du i din blogg ? Inntil man vet dette, og hvem man skriver bloggen for, blir det lett at det ender i lammelse der du ikke får skrevet noe som helst.&lt;br/&gt;&lt;br/&gt;Dette bringer meg over til tittelen på bloggen. Jeg har opprettet en ny blog som har et annet fokus og identitet på &lt;a href="http://hammervold.com/"&gt;&lt;a href="http://hammervold.com"&gt;http://hammervold.com&lt;/a&gt;&lt;/a&gt;. Dette fordi jeg da kan fokusere de mer kuriøse og tekniske blogpostene her. På &lt;a href="http://hammervold.com/"&gt;hammervold.com&lt;/a&gt; vil jeg da skrive om ting som mine barn, bilder av deres første skritt, hekken som vokser for raskt, og andre familiære ting.&lt;br/&gt;&lt;br/&gt;(En hekk &lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://upload.wikimedia.org/wikipedia/commons/thumb/e/e7/Longleat_Hedge_Maze_%28detail%29.JPG/800px-Longleat_Hedge_Maze_%28detail%29.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 123px; height: 92px;" src="http://upload.wikimedia.org/wikipedia/commons/thumb/e/e7/Longleat_Hedge_Maze_%28detail%29.JPG/800px-Longleat_Hedge_Maze_%28detail%29.JPG" alt="" border="0"/&gt;&lt;/a&gt;er forøvrig ikke bare bare. Det ligger årevis med arbeid bak en skikkelig kantete “donaldhekk”. Bildet til venstre er fra &lt;a href="http://upload.wikimedia.org/wikipedia/commons/thumb/e/e7/Longleat_Hedge_Maze_%28detail%29.JPG/800px-Longleat_Hedge_Maze_%28detail%29.JPG"&gt;wikipedia&lt;/a&gt;)&lt;br/&gt;&lt;br/&gt;Så om du tar en titt på &lt;a href="http://hammervold.com/"&gt;hammervold.com&lt;/a&gt; så ser du det i sin spede start. Jeg har installert wordpress og noen plugins. Men ikke et godt theme enda.&lt;br/&gt;&lt;br/&gt;Så har du noen tips, så send meg gjerne en epost, eller kommenter her!&lt;/p&gt;
&lt;div class="blogger-post-footer"&gt;&lt;img width="1" height="1" src="https://blogger.googleusercontent.com/tracker/3106609074023669579-4783277218697575639?l=anders.hammervold.com"/&gt;&lt;/div&gt;</description><link>http://anders.hammervold.com/post/151042600</link><guid>http://anders.hammervold.com/post/151042600</guid><pubDate>Thu, 11 Jun 2009 15:22:00 +0200</pubDate></item><item><title>Trafikk til besvær</title><description>&lt;p&gt;De som kjenner meg vet at jeg er opptatt av trafikksituasjonen der jeg bor. En kort oppsummering:&lt;br/&gt;Jeg bor ved en av 3 innkjøringer til et tun, der det er bom ved alle 3 innkjøringer som kan åpnes fritt. Veiene er smale og ved min oppgang er det et betonghinder som hindrer billister i å se om barn løper ut i veien. Bilene kjører delvis veldig fort her. Hastigheter på anslagsvis 40km/t er ikke uvanlig.&lt;br/&gt;&lt;br/&gt;Vi kan vel lukte kimen av en konflikt her ? Ikke ? Vel jeg fortsetter.&lt;br/&gt;&lt;br/&gt;For at barna skal kunne løpe tryggere ut og inn oppgangen har jeg satt opp en sagbukk på 60x60cm ved oppgangen , med en refleksvest på så den synes godt:&lt;br/&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_8A6BCCAMcp4/ShHTkDUDD6I/AAAAAAAAAHw/lZ7_WnFoOOo/s1600-h/IMG_9273.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 267px;" src="http://3.bp.blogspot.com/_8A6BCCAMcp4/ShHTkDUDD6I/AAAAAAAAAHw/lZ7_WnFoOOo/s400/IMG_9273.JPG" alt="" id="BLOGGER_PHOTO_ID_5337279649728892834" border="0"/&gt;&lt;/a&gt;&lt;br/&gt;En nabo av meg som er enda mer opptatt av lokaltrafikken kom på ideen og det har bredt seg.&lt;br/&gt;&lt;br/&gt;Denne bukken sørger da for at bilene må kjøre 60 cm fra kanten ved min oppgang, og sannsynligvis bremser de fleste da litt opp også.&lt;br/&gt;&lt;br/&gt;For meg er det en vinn vinn: Barna er trygge og bilene kommer uhindret frem.&lt;br/&gt;&lt;br/&gt;Min sønn (heretter kalt AX) er nå 3 år og frisk i takten, så han får løpe fritt i gata dersom jeg er ute og kan holde oppsyn.&lt;br/&gt;Han er blitt forklart og har skjønt at biler er farlige og at han må holde seg unna veien når de kommer. De kan jo komme veldig fort. Så han har stor respekt for biler.&lt;br/&gt;&lt;br/&gt;Forrige torsdag var det strålende vær og AX lekte seg i gata med venner og naboer, mens jeg jobbet litt i hagen. Så hørte jeg at det ble litt vel stille så jeg jeg måtte ut og sjekke hvor han var. Litt irritert fordi han visste han ikke fikk gå så langt som han nå så ut til å ha gått.&lt;br/&gt;&lt;br/&gt;På veien ser jeg en billist som har pakket sammen min bukk ved siden av veien, samt satt vekk en av AX sine leker. Så jeg spør ham da (mens jeg egenlig leter etter aleksander) “Ka dåkk gjær ferr nå?”. Han svarte ikke så jeg spurte igjen. Men fremdeles ikke svar, han setter seg bare i passasjersetet. Han er heretter kalt “Silent guy”.&lt;br/&gt;&lt;br/&gt;Silent guy setter seg i bilen og jeg setter så opp bukken slik den skal stå. Jeg ser også inn i bilen for å se hvem dette kan være.&lt;br/&gt;&lt;br/&gt;Da kommer sjåføren ut, som viser seg å være alt annet enn silent. Hans utbrudd er ganske høymelt “E det itj låv å kjør her heller no ?”. Sjåføren var en røslig kar, med tattiser på skuldra og store overarmer. Heretter kalt Big guy. Jeg tenkte her er det da voldsomt til reaksjon, men stod på mitt og sa noe ala “Det spring da onga her”, mens jeg pekte på oppgangen og veien.&lt;br/&gt;&lt;br/&gt;Big guy ble enda sintere og ropte til meg at “de må da gå an å kjør her” inni lengre setninger, og utbrøt, “de sto jo mitt i vein”, hvorpå jeg raskt ekviperte “men ka e de du kjæm ut av biln førr, de e da go plass å kjør på her” mens jeg peker på veien.&lt;br/&gt;&lt;br/&gt;Da kommer noen gode gloser mens han setter seg inn i bilen og freser bort. Jeg gløtter så vidt inn i bilen og tror jeg ser et barnesete. Så han har barn tenkte jeg og likevel var dette et problem. Merkelig.&lt;br/&gt;&lt;br/&gt;Jeg skjønte jo etterpå at AX hadde tenkt på egenhånd og funnet ut at biler jo må bremse enda mer dersom han setter bukken midt i veien istedenfor ved kanten slik jeg gjør (Smart tenkt da, pappa er stolt!). Uten kanskje å reflektere over hvordan det påviker andre sjåføreres trafikk-personlighet.&lt;br/&gt;&lt;br/&gt;Dette hadde jo vært helt triviellt hadde det ikke vært for fortsettelsen. På 17. Mai så jeg at noen gikk bort til postkassene og satte seg ned så han forsvant. Det var snodig tenkte jeg, og gikk for å se bedre. Og visst var det Silent Guy som var tilbake.&lt;br/&gt;&lt;br/&gt;Han hadde på seg millitæruniform i amerikanske ørken-farger (dette er fremdeles 17. Mai). Silent guy satt nedhuket og letet frem noe. Så reiste han seg opp, gikk sakte fremover, og så på postkassene, før han åpnet naboens postkasse, tenkte seg om, og så åpnet min. Der står navnet vårt som han så skrev ned.&lt;br/&gt;&lt;br/&gt;I mellomtiden hadde jeg kommet ned på veien, men silent bob lever opp til navnet og sier ingen ting. Sakte trekker han seg tilbake innover i feltet.&lt;br/&gt;&lt;br/&gt;Til tross for at dette er en lang post, tror jeg ikke siste ord er sagt i denne soga.&lt;/p&gt;
&lt;div class="blogger-post-footer"&gt;&lt;img width="1" height="1" src="https://blogger.googleusercontent.com/tracker/3106609074023669579-7005885438786031233?l=anders.hammervold.com"/&gt;&lt;/div&gt;</description><link>http://anders.hammervold.com/post/151042564</link><guid>http://anders.hammervold.com/post/151042564</guid><pubDate>Mon, 18 May 2009 09:51:00 +0200</pubDate></item><item><title>God kode: Oppførsel - Et alternativ til arv</title><description>&lt;p&gt;En veldig vanlig feil når man lager funksjonalitet som mange objekter skal dele, gjerne med kodebiblioteker, er å benytte seg for mye av arv.&lt;br/&gt;&lt;br/&gt;Så jeg tenkte å skrive enkelt eksempel for å vise en annen måte man kan imeplementere gjenbrukbar oppførsel uten å bruke arv.&lt;br/&gt;&lt;br/&gt;Scenariet er en grid, som du ønsker at skal ha uniformt utseende og oppførsel. Det kan være fordi du har mange prosjekter som bruker samme komponenter og du vil ha lik oppførsel i applikasjonenene fra alle prosjekter.&lt;br/&gt;&lt;br/&gt;For å starte med en grid som alle kjenner og tilbyr (uhorvelig) mye ferdig funksjonalitet så arver din grid fra UltraGrid.&lt;br/&gt;&lt;pre&gt;&lt;code&gt;&lt;br/&gt;public class Grid : UltraGrid&lt;br/&gt;{&lt;br/&gt;   Grid()&lt;br/&gt;   { Font=StandardFont;}&lt;br/&gt;}&lt;br/&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;br/&gt;Du setter noen standarder i denne slik at alle grider som brukes av utviklerne får de samme egenskapene som standard oppførsel.&lt;br/&gt;&lt;br/&gt;Med tid så vokser denne klassen. Den kan bli flere tusen linjer kode, og inneholder alle kjente tillatte måter å bruke den på.&lt;br/&gt;&lt;br/&gt;I ettertid er det lett å se problemet.  Vi kan kort oppsummere noen:&lt;br/&gt;&lt;ul&gt;
&lt;li&gt;Vedlikeholdbarhet. Hvordan vedlikeholde en klasse med hundrevis av metoder i tusenvis av linjer kode, effektivt ?&lt;/li&gt;
&lt;li&gt;Duplisering ? Hvordan kan man være sikker på at det man lager ikke er lagd før ?&lt;br/&gt;
&lt;/li&gt;
&lt;li&gt;Testbarhet ? Slike klasser er umulige å holde testbare.&lt;br/&gt;
&lt;/li&gt;
&lt;/ul&gt;Til slutt vet ingen hvilken kode som er død, og hvilken som er levende, og alle endringer medfører mye detektivarbeid for å avklare om det er gjort før, eller må lages på nytt.&lt;br/&gt;Spørsmålet da er hvordan kommer vi oss vekk fra det.&lt;br/&gt;&lt;br/&gt;Et godt alternativ da er å lage oppførsels-klasser som kan brukes med denne Grid-klassen.&lt;br/&gt;&lt;br/&gt;Du vil at alle brukere av griden skal ha et kontekst-menyinnslag for eksport til excel.  Istedenfor å legge til en metode i Grid-klassen kan du lage en oppførsels-klasse som håndterer excel-eksport.&lt;br/&gt;&lt;pre&gt;&lt;code&gt;&lt;br/&gt;public class ExcelEksportOppførsel&lt;br/&gt;{&lt;br/&gt;    public ExcelEksportOppførsel(Grid grid)&lt;br/&gt;    {&lt;br/&gt;       ...&lt;br/&gt;    }&lt;br/&gt;    public void LeggTilKontekstmenyinnslagForEksport()&lt;br/&gt;    {&lt;br/&gt;       ....&lt;br/&gt;    }&lt;br/&gt;}&lt;br/&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;br/&gt;&lt;br/&gt;Denne klassen tar en grid inn som parameter til konstruktør og håndterer nødvendig funksjonalitet for å eksportere til excel.&lt;br/&gt;&lt;br/&gt;Men den kan fremdeles forbedres noe. For å gjøre den enda mer testbar kan vi endre konstruktør:&lt;br/&gt;&lt;pre&gt;&lt;code&gt;&lt;br/&gt;public ExcelEksportOppførsel(Grid grid) {}&lt;br/&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;br/&gt;Dermed kan vi ta inn et mockbart IGrid-objekt istendefor en ikke-mockbar grid.&lt;br/&gt;&lt;br/&gt;Den siste bedringen vi skal gjøre er å lage en enklere måte å bruke objektet på:&lt;br/&gt;&lt;br/&gt;&lt;pre&gt;&lt;code&gt;&lt;br/&gt;public class ExcelEksportOppførsel&lt;br/&gt;{&lt;br/&gt;    public ExcelEksportOppførsel(IGrid grid)&lt;br/&gt;    {&lt;br/&gt;       ...&lt;br/&gt;    }&lt;br/&gt;    public void LeggTilKontekstmenyinnslagForEksport()&lt;br/&gt;    {&lt;br/&gt;       ....&lt;br/&gt;    }&lt;br/&gt;    public static void LeggtilKontekstmenyinnslagPåGrid(IGrid grid)&lt;br/&gt;    {&lt;br/&gt;       ExcelEksportOppførseloppførsel=new ExcelEksportOppførsel(grid);&lt;br/&gt;       oppførsel.LeggTilKontekstmenyinnslagForEksport();&lt;br/&gt;    }&lt;br/&gt;}&lt;br/&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;br/&gt;&lt;br/&gt;Denne klassen er testbar, har en klar mening, og er vedlikeholdbar. Et godt utgangspunkt for å lage flere slike oppførsler.&lt;br/&gt;&lt;br/&gt;Din grid-klasse kan også ha en egenskap som sier noe om at den skal støtte exceleksport, og så bruke denne oppførsels-klassen. Isåfall vil det for en bruker av grid-klassen din ikke endre bruksmåte å legge funksjonaliteten ut i egne oppførsels-klasser.&lt;br/&gt;&lt;br/&gt;&lt;span style="font-style:italic;"&gt;&lt;span style="font-weight:bold;"&gt;Sluttkommentar&lt;/span&gt;&lt;br/&gt;Det er ikke nødvendigvis akkurat DENNE oppførselen som er den beste måten å organisere koden på.&lt;br/&gt;&lt;br/&gt;Et annet forslag er å lage 2 oppførsler. Der den ene håndterer det å legge til kontekstmenyinnslag, og den andre selve exceleskporten. Så kan oppførslen for å legge til menyinnslag knytte en exceloppførslen sammen med menyinnslaget.&lt;br/&gt;&lt;br/&gt;Avhengig av hvilke behov du har kan flere alternative måter å organisere det på være riktig.&lt;br/&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width="1" height="1" src="https://blogger.googleusercontent.com/tracker/3106609074023669579-5445354362051445328?l=anders.hammervold.com"/&gt;&lt;/div&gt;&lt;/p&gt;</description><link>http://anders.hammervold.com/post/151042533</link><guid>http://anders.hammervold.com/post/151042533</guid><pubDate>Mon, 06 Apr 2009 03:21:00 +0200</pubDate></item><item><title>Cucumber + (Iron)ruby #6 : Første egne test</title><description>&lt;p&gt;Da er vi klare for vår første egne test.&lt;br/&gt;&lt;br/&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_8A6BCCAMcp4/Sc_X9H2MukI/AAAAAAAAAGg/Z1fp1GBvkJk/s1600-h/Picture2.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 532px; height: 160px;" src="http://2.bp.blogspot.com/_8A6BCCAMcp4/Sc_X9H2MukI/AAAAAAAAAGg/Z1fp1GBvkJk/s400/Picture2.png" alt="" id="BLOGGER_PHOTO_ID_5318707130026211906" border="0"/&gt;&lt;/a&gt;Jeg vil lære noe om ASP.Net MVC. Dette er lagret i en features-fil “nnug.feature”.&lt;br/&gt;For at dette skal bli en kjørbar test trenger vi en fil med “step-definisjoner”. Step-filer lagrer vi i katalogen “step_definitions”. Dette er ruby-koden som kjøres av cucumber og definerer de skrittene vi bruker i testen vår. I vår step-fil ” har vi:&lt;br/&gt;&lt;br/&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_8A6BCCAMcp4/Sc_ct-Au91I/AAAAAAAAAHQ/I-d9DWm39VM/s1600-h/nnug_steps.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 254px;" src="http://3.bp.blogspot.com/_8A6BCCAMcp4/Sc_ct-Au91I/AAAAAAAAAHQ/I-d9DWm39VM/s400/nnug_steps.png" alt="" id="BLOGGER_PHOTO_ID_5318712367246145362" border="0"/&gt;&lt;/a&gt;Her brukes regexmatching på teksten i vår features fil til å definere hva som skal skje i hvert step. @browser er et objekt som representerer nettleseren, styrt av watir. I dette tilfellet internet explorer. Det er definert i en environment.rb-fil som ligger i support-katalogen:&lt;br/&gt;&lt;br/&gt;&lt;code&gt;require 'spec/expectations'&lt;br/&gt;require 'watir'&lt;br/&gt;Browser = Watir::IE&lt;br/&gt;&lt;br/&gt;# "before all"&lt;br/&gt;browser = Browser.new&lt;br/&gt;&lt;br/&gt;Before do&lt;br/&gt;@browser = browser&lt;br/&gt;end&lt;br/&gt;&lt;br/&gt;# "after all"&lt;br/&gt;at_exit do&lt;br/&gt;browser.close&lt;br/&gt;end&lt;br/&gt;&lt;/code&gt;I “When” - skrittet har vi bare en utkommentert linje, siden vi ikke skal gjøre noe der i denne enkle testen.&lt;br/&gt;&lt;br/&gt;I Then-skrittet så tar vi mot en parameter text, og sjekker om den fins i teksten på websiden.&lt;br/&gt;Så det vi sjekker i denne testen er, når vi er på websiden localhost:2323/default.aspx, så skal vi ha teksten “Velkommen NNUG”på denns siden.&lt;br/&gt;&lt;br/&gt;Når jeg kjører denne testen med &lt;code&gt;"cucumber --language no features"&lt;/code&gt; blir den rød&lt;code&gt;-&lt;/code&gt;&lt;code&gt;&lt;/code&gt;&lt;br/&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_8A6BCCAMcp4/Sc_mNh2Wt-I/AAAAAAAAAHo/nvuK6XoDEJc/s1600-h/test_red.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 75px;" src="http://2.bp.blogspot.com/_8A6BCCAMcp4/Sc_mNh2Wt-I/AAAAAAAAAHo/nvuK6XoDEJc/s400/test_red.png" alt="" id="BLOGGER_PHOTO_ID_5318722805046884322" border="0"/&gt;&lt;/a&gt;Hva må vi gjøre for å få en grønn test ?&lt;br/&gt;&lt;br/&gt;Vi laster ned ASP.Net MVC fra codeplex, og lager et nytt prosjekt. Her kaller vi prosjektet NNUG, siden det ble presentert der. Vi setter portnummer for web-siten til 2323 så vi har dette klart til testen vår.&lt;br/&gt;&lt;br/&gt;Vi endrer ingenting, vi bare starter det. Da ser vi denne websiden:&lt;br/&gt;&lt;br/&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_8A6BCCAMcp4/Sc_adzTP5yI/AAAAAAAAAGw/bsfMSqGg9gQ/s1600-h/webside_feil.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 503px; height: 176px;" src="http://4.bp.blogspot.com/_8A6BCCAMcp4/Sc_adzTP5yI/AAAAAAAAAGw/bsfMSqGg9gQ/s400/webside_feil.png" alt="" id="BLOGGER_PHOTO_ID_5318709890469848866" border="0"/&gt;&lt;/a&gt;&lt;br/&gt;Når vi kjører testen blir den fremdeles rød.&lt;br/&gt;&lt;br/&gt;Neste skritt er å endre koden så testen vår kan forventes å bli grønn. Fra dette:&lt;br/&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_8A6BCCAMcp4/Sc_bJ8CW8LI/AAAAAAAAAG4/buVnMjdw2fE/s1600-h/kode_feilet.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 332px;" src="http://3.bp.blogspot.com/_8A6BCCAMcp4/Sc_bJ8CW8LI/AAAAAAAAAG4/buVnMjdw2fE/s400/kode_feilet.png" alt="" id="BLOGGER_PHOTO_ID_5318710648729170098" border="0"/&gt;&lt;/a&gt;til dette:&lt;br/&gt;&lt;br/&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_8A6BCCAMcp4/Sc_bQRmTNLI/AAAAAAAAAHA/cQmxPXsGflU/s1600-h/kode_ok.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 232px;" src="http://2.bp.blogspot.com/_8A6BCCAMcp4/Sc_bQRmTNLI/AAAAAAAAAHA/cQmxPXsGflU/s400/kode_ok.png" alt="" id="BLOGGER_PHOTO_ID_5318710757596279986" border="0"/&gt;&lt;/a&gt;Vi kjører testen på nytt med  &lt;code&gt;"cucumber --language no features"&lt;/code&gt; . Og får nå dette skjermbildet:&lt;br/&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_8A6BCCAMcp4/Sc_mEg5H9OI/AAAAAAAAAHg/fB20RfG6fYM/s1600-h/test_ok.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 106px;" src="http://3.bp.blogspot.com/_8A6BCCAMcp4/Sc_mEg5H9OI/AAAAAAAAAHg/fB20RfG6fYM/s400/test_ok.png" alt="" id="BLOGGER_PHOTO_ID_5318722650171241698" border="0"/&gt;&lt;/a&gt;En grønn cucumber-test. &lt;br/&gt;&lt;br/&gt;PS!Jeg ser nå at jeg glemte “chcp 1252” så de norske tegnene ødelegger testene. Så husk chcp1252 som beskrevet i en tidligere post så får du penere bilder enn meg ;)&lt;/p&gt;
&lt;div class="blogger-post-footer"&gt;&lt;img width="1" height="1" src="https://blogger.googleusercontent.com/tracker/3106609074023669579-5420570463810630860?l=anders.hammervold.com"/&gt;&lt;/div&gt;</description><link>http://anders.hammervold.com/post/151042498</link><guid>http://anders.hammervold.com/post/151042498</guid><pubDate>Sun, 29 Mar 2009 16:17:00 +0200</pubDate><category>bdd</category><category>cucumber</category></item><item><title>Cucumber + Ironruby #5 : BDD</title><description>&lt;p&gt;Nå kommer vi til poenget med å installere ruby, ironruby og cucumber på pcen.&lt;br/&gt;&lt;br/&gt;BDD, eller behaviour driven development.&lt;br/&gt;&lt;br/&gt;Testing som fokuserer på systemets oppførsel.&lt;br/&gt;&lt;br/&gt;Nøkkelord om BDD&lt;br/&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Fra utsiden og inn&lt;/li&gt;
&lt;li&gt;Sikre forretningsverdi&lt;/li&gt;
&lt;li&gt;Naturlig språk&lt;/li&gt;
&lt;li&gt;Domenedrevet design&lt;/li&gt;
&lt;li&gt;Involvere QA og forretning : Samarbeid og eierskap&lt;/li&gt;
&lt;li&gt;Fokus på hensikten med koden du skal lage&lt;/li&gt;
&lt;li&gt;Samme syklus som i TDD : Starter med tester&lt;/li&gt;
&lt;/ul&gt;Startet med utvikling av enhetstester. Men istedenfor fokus på klasser, funksjoner, metoder og kode :&lt;br/&gt;Fokusere på oppførsel&lt;br/&gt;De gikk fra tester som ”FødselsnummerTest”&lt;br/&gt;Til tester med logiske tolkbare navn. “FødsesnummerSkalVære11Siffer”.&lt;br/&gt;Det ble tatt et skritt videre til automatiserte formattere som tolket testen til klartekst:”Fødselsnummer skal være 11 siffer” som ble skrevet ut i klartekst og dermed er lesbart av kunden.&lt;br/&gt;&lt;br/&gt;Men de stoppet ikke der. Man utviklet standard formulering av scenarier som beksriver systemet.&lt;br/&gt;&lt;br/&gt;”Som en .. Når jeg … ønsker jeg at ….”&lt;br/&gt;&lt;br/&gt;Given some initial context (the givens),&lt;br/&gt;When an event occurs,&lt;br/&gt;then ensure some outcomes.&lt;br/&gt;&lt;br/&gt;De første versjonene a testrammeverk for dette var rammeverk som man brukte i testene som skrev ut scenariene etterhvert som testen kjørte:&lt;br/&gt;&lt;br/&gt;2003: JBehave&lt;br/&gt;Nbehave&lt;br/&gt;Specter&lt;br/&gt; Rspec&lt;br/&gt;   Fitnesse&lt;br/&gt;        Cucumber&lt;br/&gt;&lt;br/&gt;Et eksempel fra NBehave:&lt;br/&gt;&lt;br/&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_8A6BCCAMcp4/SbbRRJQhC9I/AAAAAAAAAGI/UG0UYl5Ka9w/s1600-h/Picture1.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 599px; height: 269px;" src="http://2.bp.blogspot.com/_8A6BCCAMcp4/SbbRRJQhC9I/AAAAAAAAAGI/UG0UYl5Ka9w/s400/Picture1.png" alt="" id="BLOGGER_PHOTO_ID_5311662903003253714" border="0"/&gt;&lt;/a&gt;Som vi ser her så blir resultatet av testen skrevet ut i klartekst.&lt;br/&gt;Og for oss i Norge kan vi gjøre dette på norsk.  Dette er et klart fremskritt i kommunikasjon med vår kunde. Men testen vår er fremdeles skrevet i kode. Et språk kunden ikke behersker, testere ike nødvendigvis behersker.&lt;br/&gt;&lt;br/&gt;Men det er ikke nok til å involvere kunden i det som teller. Å formulere kravene sine slik at de kan brukes av oss, direkte og uendret.&lt;br/&gt;&lt;br/&gt;Enter cucumber:&lt;br/&gt;&lt;img src="file:///D:/DOCUME%7E1/ANDERS%7E1/LOCALS%7E1/Temp/moz-screenshot.jpg" alt=""/&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_8A6BCCAMcp4/SbbSdWa3RDI/AAAAAAAAAGQ/LAhiLfPcEG4/s1600-h/cucumber-logo.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 66px;" src="http://1.bp.blogspot.com/_8A6BCCAMcp4/SbbSdWa3RDI/AAAAAAAAAGQ/LAhiLfPcEG4/s400/cucumber-logo.png" alt="" id="BLOGGER_PHOTO_ID_5311664212206371890" border="0"/&gt;&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_8A6BCCAMcp4/SbbSobOLJRI/AAAAAAAAAGY/mi8GVXuBH4c/s1600-h/Picture2.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 631px; height: 179px;" src="http://1.bp.blogspot.com/_8A6BCCAMcp4/SbbSobOLJRI/AAAAAAAAAGY/mi8GVXuBH4c/s400/Picture2.png" alt="" id="BLOGGER_PHOTO_ID_5311664402473886994" border="0"/&gt;&lt;/a&gt;&lt;br/&gt;Dette er faktisk en test i cucumber (!)&lt;br/&gt;&lt;br/&gt;Den er&lt;br/&gt;&lt;ul&gt;
&lt;li&gt;på norsk&lt;/li&gt;
&lt;li&gt;kjørbar&lt;/li&gt;
&lt;li&gt;repeterbar&lt;/li&gt;
&lt;/ul&gt;Og det er noe kunden kan formulere sammen med deg.&lt;br/&gt;&lt;br/&gt;Når du kjører denne testen, linje for linje, vil den bli grønn om den er vellykket, og rød om den ikke er vellykket.&lt;br/&gt;&lt;br/&gt;Kunden kan kjøre disse testene fortløpende under testene, og du kan kjøre testene fortløpende under utvikling.&lt;br/&gt;&lt;br/&gt;I neste post skal vi se på det som ligger bak denne testen. Ta skrittet fra ord til kode.&lt;div class="blogger-post-footer"&gt;&lt;img width="1" height="1" src="https://blogger.googleusercontent.com/tracker/3106609074023669579-6460906783596567882?l=anders.hammervold.com"/&gt;&lt;/div&gt;</description><link>http://anders.hammervold.com/post/151042476</link><guid>http://anders.hammervold.com/post/151042476</guid><pubDate>Tue, 10 Mar 2009 16:31:00 +0100</pubDate><category>bdd</category><category>cucumber</category></item><item><title>Den pågående finanskrisen</title><description>&lt;p&gt;Når krise inntreffer er det store utslag, som blir avgjort av valg man treffer. Treffer man bunn med sin investering kan man tjene store summer etterpå.&lt;br/&gt;&lt;br/&gt;Jeg har bitt meg merke i 2 overskrifter om Obos :&lt;br/&gt;&lt;br/&gt;25. April 2008:&lt;br/&gt;&lt;a href="http://e24.no/eiendom/article2390162.ece"&gt;&lt;span style="font-weight: bold;"&gt;Markedet stuper -Obos gambler&lt;/span&gt;&lt;/a&gt;&lt;br/&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;br/&gt;Selv om det er null interesse for kjøp av nybolig, gir Obos full gass på Østlandet.&lt;br/&gt;Vi har økonomisk ryggrad til å ta denne risikoen. Flesteparten av disse boligene står ikke ferdig før i 2009, og vi har tro på at markedet snur, sier Obos-sjef Åge Pettersen (bildet øverst) til avisen.&lt;/blockquote&gt;19. februar 2009:&lt;br/&gt;&lt;a href="http://www.dn.no/forsiden/naringsliv/article1613136.ece?jgo=c1_re_left_5"&gt;&lt;span style="font-weight: bold;"&gt;Desperat pengejakt i Obos&lt;/span&gt;&lt;/a&gt;&lt;br/&gt;&lt;blockquote&gt;Obos-sjef Martin Mæland har vært på desperat pengejakt. En akutt pengeknipe tvinger Obos til kjøpe seg inn på eiersiden i Terra Gruppen, skriver Dagens Næringsliv.&lt;br/&gt;Uten tilgang på flere milliarder kroner ville Obos-systemet fått alvorlige problemer allerede til påske, innrømmer toppsjef Martin Mæland.&lt;/blockquote&gt;
&lt;div class="blogger-post-footer"&gt;&lt;img width="1" height="1" src="https://blogger.googleusercontent.com/tracker/3106609074023669579-7585153599212590170?l=anders.hammervold.com"/&gt;&lt;/div&gt;</description><link>http://anders.hammervold.com/post/151042457</link><guid>http://anders.hammervold.com/post/151042457</guid><pubDate>Thu, 19 Feb 2009 03:38:00 +0100</pubDate></item><item><title>Cucumber + Ironruby #4</title><description>&lt;p&gt;Da er vi klare til å kjøre eksemplet som demonstrerer det vi skal bruke for våre egne tester.&lt;br/&gt;&lt;br/&gt;Men vi mangler fremdeles noen gems:&lt;br/&gt;&lt;code&gt;&lt;br/&gt;gem install watir firewatir win32-api windows-pr&lt;br/&gt;&lt;/code&gt;&lt;br/&gt;Deretter åpner vi cmd-prompten vår, og skifter til katalogen:&lt;br/&gt;&lt;code&gt;Ruby\lib\ruby\gems\1.8\gems\cucumber-0.1.16\examples\watir&lt;/code&gt;&lt;br/&gt;&lt;br/&gt;(Merk,om du har en annen versjon av ruby/cucumber skift ut versjonsnummeret).&lt;br/&gt;&lt;br/&gt;I denne katalogen kjører vi vår første test med&lt;br/&gt;&lt;code&gt;cucumber features&lt;/code&gt;&lt;br/&gt;eller&lt;br/&gt;&lt;code&gt;icucumber features&lt;/code&gt;&lt;br/&gt;&lt;br/&gt;Her kjører vi en klartekst akseptansetest, som tester ved å kjøre google og kontrollere resultatet.&lt;br/&gt;&lt;code&gt;&lt;pre&gt;&lt;br/&gt;Feature: Search&lt;br/&gt;  In order to learn more&lt;br/&gt;  As an information seeker&lt;br/&gt;  I want to find more information&lt;br/&gt;&lt;br/&gt;  Scenario: Find what I'm looking for&lt;br/&gt;    Given I am on the Google search page&lt;br/&gt;    When I search for "cucumber github"&lt;br/&gt;    Then I should see a link to "Ruby on Rails — cucumber — GitHub": &lt;br/&gt;        &lt;a href="http://github.com/aslakhellesoy/cucumber/wikis/ruby-on-rails"&gt;http://github.com/aslakhellesoy/cucumber/wikis/ruby-on-rails&lt;/a&gt;&lt;br/&gt;&lt;/pre&gt;
&lt;br/&gt;&lt;/code&gt;&lt;br/&gt;Dersom testen blir rød er en indikasjon på at vi ikke er ferdige med leveransen vår enda. Som du ser er den også på engelsk. Noe vi skal jobbe videre med, siden vi vil ha det på norsk.&lt;br/&gt;&lt;br/&gt;Men dette er en god demotest siden den fjernstyrer IE. Det er nokså kult å gå fra en test skrevet i kalrtekst som her, som så fjernstyrer IE, og sjekker resultatet. Før den så synliggjør resultatet med en rød eller grønn test tilbake til oss.&lt;br/&gt;&lt;br/&gt;I de neste postene skal vi nærme oss målet:&lt;br/&gt;Norske tester, som tester vår egen kode i .Net verden.&lt;div class="blogger-post-footer"&gt;&lt;img width="1" height="1" src="https://blogger.googleusercontent.com/tracker/3106609074023669579-7363929217067979149?l=anders.hammervold.com"/&gt;&lt;/div&gt;&lt;/p&gt;</description><link>http://anders.hammervold.com/post/151042436</link><guid>http://anders.hammervold.com/post/151042436</guid><pubDate>Tue, 17 Feb 2009 17:28:00 +0100</pubDate><category>bdd</category><category>cucumber</category></item><item><title>Cucumber + Ironruby #3 og farger for windows</title><description>&lt;p&gt;Selv med gode innspill fra Aslak Hellesøy om hvordan å få farger ved kjøring av cucumber med ironruby ser det ut til å bli fargeløst inntil nå.&lt;br/&gt;&lt;br/&gt;Første forslag er å bruke &lt;a href="http://www.geocities.com/jadoxa/ansicon/index.html"&gt;ansicon&lt;/a&gt;, og så kjøre icucumber vha ansicon.&lt;br/&gt;&lt;code&gt;@"C:\ironruby\build\debug\ansicon.exe" "C:\ironruby\build\debug\ir.exe" "c:\ruby\bin\cucumber" %*&lt;/code&gt;&lt;br/&gt;Men det ble grått.&lt;br/&gt;&lt;br/&gt;Forslag 2 var å laste ansi.sys som i gamle dagers dos, med egen konfigurasjon for command.com. Dette er beskrevet i en forumpost (&lt;a href="http://www.freakforum.nu/forum/showthread.php?t=91946"&gt;link&lt;/a&gt;).&lt;br/&gt;&lt;br/&gt;Forslag 3, var å kjøre icucumber i cygwin. Men også det ble grått :)&lt;br/&gt;&lt;br/&gt;På den positive siden: cucumber virker med ironruby i cygwin.&lt;br/&gt;&lt;br/&gt;Om noen klarer dette bedre enn meg så si fra asap. Jeg legger det dødt så lenge.&lt;/p&gt;
&lt;div class="blogger-post-footer"&gt;&lt;img width="1" height="1" src="https://blogger.googleusercontent.com/tracker/3106609074023669579-40827282313054867?l=anders.hammervold.com"/&gt;&lt;/div&gt;</description><link>http://anders.hammervold.com/post/151042414</link><guid>http://anders.hammervold.com/post/151042414</guid><pubDate>Tue, 17 Feb 2009 15:48:00 +0100</pubDate><category>cucumber</category></item><item><title>Forberedelser til å bruke cucumber og rspec til å teste .net med ironruby #2</title><description>&lt;p&gt;Vi er enda ikke ferdige med å sette opp miljøet slik jeg vil for å jobbe med cucumber.&lt;br/&gt;&lt;br/&gt;Vi kommer til å bruke cmd endel så vi vil ha et bedre cmd-vindu.&lt;br/&gt;Jeg vil ha &lt;a href="http://www.microsoft.com/DOWNLOADS/details.aspx?familyid=22E69AE4-7E40-4807-8A86-B3D36FAB68D3&amp;displaylang=en"&gt;Consolas &lt;/a&gt;som standard font, så jeg redigerer registry for å tillate dette:&lt;br/&gt;&lt;br/&gt;&lt;span&gt;&lt;em&gt;&lt;span style=";font-family:Consolas;font-size:85%;"&gt;&lt;em&gt;reg add “HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Console\TrueTypeFont” /v 00 /d Consolas&lt;/em&gt;&lt;/span&gt;&lt;/em&gt;&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;(fra &lt;a href="http://codebetter.com/blogs/jeff.lynch/archive/2008/04/23/consolas-font-old-age-amp-tired-eyes.aspx"&gt;Jeff Lynch&lt;/a&gt;)&lt;br/&gt;&lt;br/&gt;Et standard cmd vindu er 80x25 tegn, dette er for lite.&lt;br/&gt;Vi høyreklikker på tittellinjen og velger defaults, og endrer dette på fliken for layout til 120x50, med en buffer på 500 linjer.&lt;br/&gt;&lt;br/&gt;Det visuelle i grønt og rødt når man kjører tester, er veldig sterkt. Så vi må installere en siste gem vi trenger for å få farger i output fra cucumber:&lt;br/&gt;&lt;code&gt;gem install win32console&lt;/code&gt;&lt;br/&gt;&lt;br/&gt;Ved kjøre eksemplet fra&lt;br/&gt;C:\Ruby\lib\ruby\gems\1.8\gems\cucumber-0.1.16\examples\i18n\en&gt;&lt;br/&gt;med kommandoen&lt;br/&gt;cucumber features&lt;br/&gt;får vi følgende skjermbilde:&lt;br/&gt;&lt;br/&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_8A6BCCAMcp4/SZiIB6RStxI/AAAAAAAAAF4/47DfpEHwDC4/s1600-h/cucumber-eksempel.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 234px;" src="http://4.bp.blogspot.com/_8A6BCCAMcp4/SZiIB6RStxI/AAAAAAAAAF4/47DfpEHwDC4/s320/cucumber-eksempel.JPG" alt="" id="BLOGGER_PHOTO_ID_5303138127631791890" border="0"/&gt;&lt;/a&gt;Da er vi klare for å begynne med våre egne tester i neste post.&lt;br/&gt;&lt;br/&gt;Disclaimer:&lt;br/&gt;Det viste seg at jeg ikke fikk farger i output i ironruby enda. Bare ruby.&lt;/p&gt;
&lt;div class="blogger-post-footer"&gt;&lt;img width="1" height="1" src="https://blogger.googleusercontent.com/tracker/3106609074023669579-5086965707705957051?l=anders.hammervold.com"/&gt;&lt;/div&gt;</description><link>http://anders.hammervold.com/post/151042386</link><guid>http://anders.hammervold.com/post/151042386</guid><pubDate>Sun, 15 Feb 2009 15:30:00 +0100</pubDate><category>bdd</category><category>cucumber</category></item><item><title>Forberedelser til å bruke cucumber og rspec til å teste .net med ironruby</title><description>&lt;p&gt;Jeg har startet forberedelsene til en presentasjon om testing i .Net med &lt;a href="http://cukes.info/"&gt;cucumber&lt;/a&gt;, rspec og ironruby. Dette er da post 1 i rekken av poster for å forberede dette. Informasjonen er satt sammen fra flere kilder og jeg startet med Aslaks &lt;a href="http://wiki.github.com/aslakhellesoy/cucumber/ironruby-and-net"&gt;post om samme tema&lt;/a&gt;.&lt;br/&gt;&lt;br/&gt;Jeg trenger subversion, da kan du &lt;a href="http://tortoisesvn.net/downloads"&gt;laste ned tortoisesvn&lt;/a&gt; så har du både cmd-versjon og gui.&lt;br/&gt;&lt;br/&gt;Deretter installere &lt;a href="http://rubyforge.org/projects/rubyinstaller/"&gt;ruby one-click installer&lt;/a&gt;, for å få ruby og MRI.&lt;br/&gt;I et cmd installerer vi de gems vi trenger ved å kjøre gem install :&lt;br/&gt;&lt;code&gt;&lt;br/&gt;gem install cucumber rspec&lt;br/&gt;gem install pathname2&lt;br/&gt;gem install rake&lt;br/&gt;&lt;/code&gt;&lt;br/&gt;Vi må ha ironruby installert, og vi laster ned siste versjon fra subversion. Denne kommandoen laster ned ironruby til en ny katalog der du står i cmd, kalt ironruby. Plasser den der du vil ha den før du henter ned siste versjon:&lt;br/&gt;&lt;code&gt;svn checkout &lt;a href="http://ironruby.rubyforge.org/svn/trunk"&gt;http://ironruby.rubyforge.org/svn/trunk&lt;/a&gt; ironruby&lt;/code&gt;&lt;br/&gt;&lt;br/&gt;Og kompilerer det:&lt;br/&gt;&lt;code&gt;&lt;br/&gt;cd ironruby&lt;br/&gt;rake compile&lt;br/&gt;&lt;/code&gt;&lt;br/&gt;Når man henter ned cucumber får man en batfil for å kjøre cucumber (cucumber.cmd), vi lager oss en ny som heter &lt;span style="font-style: italic;"&gt;icucumber.bat&lt;/span&gt; som kjører cucumber med ironruby istedenfor vanlig ruby:&lt;br/&gt;&lt;br/&gt;&lt;code&gt;@ECHO OFF&lt;br/&gt;REM This is to tell IronRuby where to find gems.&lt;br/&gt;SET GEM_PATH=c:\ruby\lib\ruby\gems\1.8&lt;br/&gt;@"C:\ironruby\build\debug\ir.exe" "c:\ruby\bin\cucumber" %* &lt;/code&gt;&lt;br/&gt;Plasser filen et egnet sted som f.eks. C:\ruby\bin&lt;br/&gt;&lt;br/&gt;Da kan jeg kjøre:&lt;br/&gt;&lt;code&gt;icucumber --help&lt;/code&gt;&lt;br/&gt;&lt;br/&gt;Vi trenger god håndtering av norske tegn. Vi vil jo skrive våre akseptansekriterier på norsk. Så for å få vist norske tegn i cmd endrer jeg codepage til 1252:&lt;code&gt; chcp 1252&lt;/code&gt;&lt;br/&gt;og endrer registry slik at det blir permanent:&lt;br/&gt;&lt;pre&gt;&lt;span class="constant"&gt;Start&lt;/span&gt;&lt;span class="punct"&gt;-&gt;&lt;/span&gt;&lt;span class="constant"&gt;Run&lt;/span&gt;&lt;span class="punct"&gt;-&gt;&lt;/span&gt;&lt;span class="ident"&gt;regedit&lt;/span&gt;&lt;br/&gt;&lt;span class="constant"&gt;Go&lt;/span&gt; &lt;span class="ident"&gt;to&lt;/span&gt; &lt;span class="punct"&gt;[&lt;/span&gt;&lt;span class="constant"&gt;HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\CodePage&lt;/span&gt;&lt;span class="punct"&gt;]&lt;/span&gt;&lt;br/&gt;&lt;span class="constant"&gt;And&lt;/span&gt; &lt;span class="ident"&gt;change&lt;/span&gt; &lt;span class="ident"&gt;the&lt;/span&gt; &lt;span class="punct"&gt;"&lt;/span&gt;&lt;span class="string"&gt;OEMCP&lt;/span&gt;&lt;span class="punct"&gt;"&lt;/span&gt; &lt;span class="ident"&gt;value&lt;/span&gt; &lt;span class="ident"&gt;to&lt;/span&gt; &lt;span class="punct"&gt;"&lt;/span&gt;&lt;span class="string"&gt;1252&lt;/span&gt;&lt;span class="punct"&gt;"&lt;/span&gt;&lt;br/&gt;(ref: &lt;a href="http://codesnippets.joyent.com/posts/show/414"&gt;&lt;a href="http://codesnippets.joyent.com/posts/show/414"&gt;http://codesnippets.joyent.com/posts/show/414&lt;/a&gt;&lt;/a&gt;)&lt;span style="font-family:Georgia,serif;"&gt;&lt;br/&gt;&lt;/span&gt;&lt;/pre&gt;Da er vi klare til å starte med tester som blir tema i neste post.&lt;div class="blogger-post-footer"&gt;&lt;img width="1" height="1" src="https://blogger.googleusercontent.com/tracker/3106609074023669579-676137471840725852?l=anders.hammervold.com"/&gt;&lt;/div&gt;&lt;/p&gt;</description><link>http://anders.hammervold.com/post/151042367</link><guid>http://anders.hammervold.com/post/151042367</guid><pubDate>Thu, 12 Feb 2009 17:38:00 +0100</pubDate><category>bdd</category><category>cucumber</category></item><item><title>Twitter</title><description>&lt;p&gt;Etter å ha vært skeptisk lenge har jeg begynt med twitter. Jeg forstod bare ikke poenget, men tenkte nå må jeg vel prøve likevel.&lt;br/&gt;&lt;br/&gt;Det har vist seg å være veldig nyttig. Man finner ut så mye mer med twitter. Så får man prøve å bidra med sine egne små tweets. Første dag på twitter endte med et kjøp av en bok om bdd,rspec, og cucumber: &lt;a href="http://tr.im/etg2"&gt;&lt;a href="http://tr.im/etg2"&gt;http://tr.im/etg2&lt;/a&gt;&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;Via twitter fant jeg også ut at det fins bedre alternativer til tinyurl.com. Som &lt;a href="http://tr.im/"&gt;tr.im&lt;/a&gt;, som er enda lettere å huske til og med.&lt;br/&gt;&lt;br/&gt;Jeg er AH74 på twitter.&lt;/p&gt;
&lt;div class="blogger-post-footer"&gt;&lt;img width="1" height="1" src="https://blogger.googleusercontent.com/tracker/3106609074023669579-574545331047774529?l=anders.hammervold.com"/&gt;&lt;/div&gt;</description><link>http://anders.hammervold.com/post/151042326</link><guid>http://anders.hammervold.com/post/151042326</guid><pubDate>Thu, 05 Feb 2009 16:43:00 +0100</pubDate></item><item><title>Return of the joker</title><description>&lt;p&gt;Etter et par dager med bare psykologisk krigføring&lt;br/&gt;(glising og mistenkelig oppførsel :))&lt;br/&gt;&lt;br/&gt;ble trinn 2 iverksatt.&lt;br/&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_8A6BCCAMcp4/SYMHdAUMwWI/AAAAAAAAAFw/41vNz-QJPSY/s1600-h/ae83_phantom_keystroker_v2.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 246px; height: 87px;" src="http://2.bp.blogspot.com/_8A6BCCAMcp4/SYMHdAUMwWI/AAAAAAAAAFw/41vNz-QJPSY/s320/ae83_phantom_keystroker_v2.jpg" alt="" id="BLOGGER_PHOTO_ID_5297085781600158050" border="0"/&gt;&lt;/a&gt;&lt;br/&gt;&lt;a href="http://www.thinkgeek.com/gadgets/electronic/ae83/"&gt;En enkel dings fra thinkgeek&lt;/a&gt;, som skiftet capslock av/på ca hvert 20. sekund hadde en passelig low profile effekt på offeret :)&lt;br/&gt;&lt;br/&gt;Hans Jørgen begynte å lete gjennom pcen etter mistenkeligeprosesser som eom kjørte :) God underholdning for lite effort!&lt;br/&gt;&lt;br/&gt;Det tok ca 4 timer før han avslørte den og neste trinn var da å slå på neste feature med tilfeldige tekster som skulle komme av seg selv.&lt;br/&gt;&lt;br/&gt;Egentlig fantastisk. Windows lar deg koble til slike med bare en liten balloonadvarsel som automatisk blir borte etter noen sekunder.&lt;br/&gt;&lt;br/&gt;Så  offeret trenger ikke være lenge borte fra pc-en for at det skal funke :)&lt;br/&gt;Og i dagens usb-virvar bak pcer kan man jo gjemme de mange steder.&lt;br/&gt;Anbefales sterkt!&lt;/p&gt;
&lt;div class="blogger-post-footer"&gt;&lt;img width="1" height="1" src="https://blogger.googleusercontent.com/tracker/3106609074023669579-845032795530696712?l=anders.hammervold.com"/&gt;&lt;/div&gt;</description><link>http://anders.hammervold.com/post/151042316</link><guid>http://anders.hammervold.com/post/151042316</guid><pubDate>Fri, 30 Jan 2009 08:55:00 +0100</pubDate></item><item><title>Batman</title><description>&lt;p&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_8A6BCCAMcp4/SX2gRE7vqoI/AAAAAAAAAFo/Q5nmEJT6QRI/s1600-h/HJ.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="http://3.bp.blogspot.com/_8A6BCCAMcp4/SX2gRE7vqoI/AAAAAAAAAFo/Q5nmEJT6QRI/s320/HJ.jpg" alt="" id="BLOGGER_PHOTO_ID_5295564952100121218" border="0"/&gt;&lt;/a&gt;&lt;br/&gt;I hans jørgen sin blogpost “&lt;a href="http://www.timeexpander.com/blog/index.php?itemid=260"&gt;The Joker&lt;/a&gt;” får vi en oppsummering av de straffetiltak han implementerte etter min lille spøk med skjermen hans.&lt;br/&gt;&lt;br/&gt;Min lidelse var betydelig mer langvarig etter hans oppskalerte respons, men den slo også litt tilbake:&lt;br/&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Sabotasjen av tastaturet virket ikke (dvs tastaturet virket som det skal enda).&lt;/li&gt;
&lt;li&gt;Pulten stod ikke høyere enn at jeg fikk til å jobbe, og jeg skjønte at noe var galt, så jeg hevet det ikke mer.&lt;/li&gt;
&lt;li&gt;
&lt;a href="http://www.thinkgeek.com/gadgets/electronic/b278/"&gt;Annoy-a-trons&lt;/a&gt; irriterer tydeligvis andre mer enn meg :)&lt;/li&gt;
&lt;li&gt;Og etter at jeg “fiksa” pulten min, var kontrollene for å heve og senke pulten død. &lt;/li&gt;
&lt;/ul&gt;Så får vi prøve å plassere skyld, men etter en halvtimes skruing måtte vi begge konstatere at det ikke gikk. Vi måtte låne strøm og kontroll fra nabobordet for å få senket mitt til normal stilling.&lt;br/&gt;&lt;br/&gt;Pult-trikset var skikkelig bra det, synd at det skled ut på slutten :) :&lt;br/&gt;&lt;br/&gt;Den siste inverteren fant jeg ikke enda, så vi får ta HJ på sitt ord og følge med om den finner meg! Men skal den finne meg bør den vel være i stolen ?&lt;br/&gt;&lt;br/&gt;Siste ord er nok ikke sagt i denne soga. Min ene spøk ble besvart med 3. Jeg har allerede rukket å bruke min paypal.&lt;div class="blogger-post-footer"&gt;&lt;img width="1" height="1" src="https://blogger.googleusercontent.com/tracker/3106609074023669579-7016123928946963654?l=anders.hammervold.com"/&gt;&lt;/div&gt;</description><link>http://anders.hammervold.com/post/151042287</link><guid>http://anders.hammervold.com/post/151042287</guid><pubDate>Mon, 26 Jan 2009 06:18:00 +0100</pubDate><category>Jobb</category><category>practicaljokes</category></item></channel></rss>
