
I'll Be There
In about six weeks I’ll give a talk at
Agile Testing Days together with
Emily Bache. The talk’s title is set to “The Coding Dojo
as a forum for teaching TDD” and we are last to speak
on Wednesday before the final key note of the day (and the “chill out” event). I’m looking forward to the conference which I’m sure will be full of insights and rewarding in many ways.
Fredrik Wendt Uncategorized agile, atd, coding dojo, conference, tdd, testing
Test-Driven Development By Example
av Kent Beck
ISBN: 9780321146533
Detta är en bok som i tre steg visar hur Kent Beck tycker man skall skriva kod. Boken är lättläst, enkel att förstå och Beck är ganska tydlig i vad han menar och hur han föreslår att man skall jobba.
Min behållning av boken är den lilla privata lappen med “test att skriva” - något som han alltså förespråkar men som jag själv aldrig använt i större utsträckning. Jag petar istället ner alla test-idéer i kod, typ:
Om jag skall ge mig på att sammanfatta vad han förespråkar så är det:
- börja litet
- använd en lista där du skriver upp testfall som du vet eller kommer på behöver testas
- låt design växa fram
- använd refaktoreringssteget till att skriva den riktiga implementation
- misslyckas man med ett stort test, skriv ett mindre istället
- få hellre ett test till att gå igenom än att ha vacker kod
Jag rekomenderar boken till någon som har ett hum om vad TDD är men som inte sett hur det kan fungera i praktiken. Kodexemplen är visserligen ganska lätta men det intressanta är att se hur han jobbar med problemlösning, vad TDD-metodiken ger och att det banne mig inte är svårt att börja.
Fredrik Wendt Uncategorized bok, bokrecension, book, isbn, review, tdd
Med hjälp av MANIFEST
<build><plugins><plugin>
<groupid>org.codehaus.mojo</groupid>
<artifactid>maven-buildnumber-plugin</artifactid>
<version>0.9.6</version>
<executions>
<execution>
<phase>validate</phase>
<goals>
<goal>create</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins></build>
Denna plugin kräver att man satt upp SCM ordentligt så att versionnummer kan hämtas därifrån!
<build><plugins><plugin>
<groupid>org.apache.maven.plugins</groupid>
<artifactid>maven-war-plugin</artifactid>
<version>2.0</version>
<configuration>
<archive>
<manifestentries>
<implementation -Build>${buildNumber}</implementation>
</manifestentries>
</archive>
</configuration>
</plugin>
</plugins></build>
private String readBuildNumber(ServletContext servletContext) {
try {
URL resource = servletContext.getResource("/META-INF/MANIFEST.MF");
InputStream manifestStream = resource.openStream();
Manifest mf = new Manifest(manifestStream);
Attributes atts = mf.getMainAttributes();
String value = atts.getValue("Implementation-Build");
if (value == null) {
throw new IllegalArgumentException("Implementation-Build attribute is not set in MANIFEST " + resource.toExternalForm());
}
manifestStream.close();
return value;
} catch (Exception e) {
throw new IllegalStateException("Failed to read Implementation-Build attribute from MANIFEST.MF");
}
}
Eller som vanlig resource (properties)
<build>
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
</resources>
</build>
Fredrik Wendt Uncategorized java, maven
I väntan på David Saff’s alternative assertThat(x).y() så nöjer jag mig med:
public class EmptyMatcher extends TypeSafeMatcher<Collection < ?>> {
@Override
public boolean matchesSafely(Collection< ?> c) {
return c.isEmpty();
}
public void describeTo(Description desc) {
desc.appendText("empty");
}
@Factory
public static lt;T> Matcher< ? super Collection<?>> isEmpty() {
return new EmptyMatcher();
}
}
som gör att man kan skriva trevlig enkelt läsbar kod, t ex:
@Test
public void filteringAnEmptyListReturnsAnEmptyList() {
List anEmptyList = new ArrayList();
List result = testee.filter(emptyList());
assertThat(result, isEmpty());
// men helst: assertThat(result).isEmpty();
}
Fredrik Wendt Uncategorized, jsolutions assertThat, hamcrest, java, junit, tdd, testing, unit testing
Tomas Ekman (tidigare på Tryck Till Tusen Grafiska, nu på Brilliant Smile) frågade mig om jag kunde göra en web-to-print-lösning åt honom. Det gjorde jag på knappt 25 timmar och resultatet kör nu live på webbtryck.se.
Lösningen fungerar fint och Tomas kunder (mäklare där två kontor nu kör för fullt) är nöjda, så pass nöjda att jag skall försöka se om vi inte kan få fler kunder att använda systemet.
Fredrik Wendt Uncategorized
Det är lite lockande att som Göteborgare passa på att skämta om bästkust och hur man har behov av optimering i Stockholm medan allt är fint i Götet, men dagens seminarie/minikonferens (twittertag #optsthlm) på ämnet webboptimering/webbprestanda förtjänar inget annat än lovord! Talarnas ämnen och innehåll var mycket väl utspridda över hela problemrymden från server till klient och allt där mellan. Read more…
Fredrik Wendt Uncategorized css, javascript, optsthlm, squid, swdc, tcp, web, webb, wordpress
Some high traffic sites conducted research and uncovered the following:
- Google.com: +500 ms (speed decrease) -> -20% traffic loss [1]
- Yahoo.com: +400 ms (speed decrease) -> -5-9% full-page traffic loss (visitor left before the page finished loading) [2]
- Amazon.com: +100 ms (speed decrease) -> -1% sales loss [1]
[1] http://home.blarg.net/~glinden/StanfordDataMining.2006-11-29.ppt
[2] http://www.slideshare.net/stoyan/yslow-20-presentation
Fredrik Wendt Uncategorized performance, speed, web
Jag var för första gången med vid en stor “signeringsfest” på Fosdem2010 - över 250 nycklar var inskickade men i slutändan var det inte fler än 80 som dök upp i kylan och duggregnet. (Jag själv kom 20 minuter sent.)
Hur som haver - efteråt gäller det att signera och få iväg de signerade nycklarna. Till detta finns caff, CA Fire and Forget, som just gör det man vill:
- hämtar hem nyckeln
- signerar den
- skickar den krypterad till mottagarens adress (bara mottagaren med rätt privat nyckel kan läsa signaturen).
caff -m yes -u 9B1E4234 `cat keys-to-sign.txt`
och detta kommer i paketet signing-party.
Det finns dock inget som plockar ut fingerprintdelen ur den ASCII-fil som distribueras, så jag fick hacka ihop detta själv med lite python:
#!/usr/bin/python
indicies = []
keysByIndex = {}
lastIndex = False
# get the indexes of the keys "verified", as they appear on the key paper (000, 001, ...)
for line in open("id-verified.txt"):
if len(line) == 4:
indicies.append(line[0:3])
# build up index > key part
for line in open("ksp-fosdem2010.txt"):
if "Fingerprint OK" in line:
lastIndex = line[0:3]
else:
if lastIndex:
key = line[12:20]
keysByIndex[lastIndex] = key
lastIndex = False
# write keys out to file
print "You've mareked %s out of %s - verify this before running caff" % (len(indicies), len(keysByIndex))
out = open("keys-to-sign.txt", "w")
for index in indicies:
key = keysByIndex[index]
out.write(key)
out.write(" ")
Fredrik Wendt Uncategorized
Jag är helt övertygad om att haveriet i Malmö hade kunnat undvikas om det varit färre peka-och-klicka-kurser för nätverskfolk.
Efter det inträffade har sjukhuset fått installerat en så kallad spanning tree-funktion som förhindrar störningar på grund av felkopplade kablar.
Fredrik Wendt Uncategorized
Emellanåt har jag fler än två saker att göra på jobbet (annat var det förr!) så mitt behov av pomodoro eller annan strategi för att beta av en att göra-lista är mycket begränsat. Lite då och då sitter jag dock med en “privat” att göra-lista (som bara växer) och nu är ett sådant tillfälle - “dags att testa pomodoro” tänkte jag och letar upp en Pomodor-timer för Gnome lite snabbt.
Den visar sig inte vara översatt till svenska (använder gtranslator för detta) och den kommer inte förkompilerad som binär. Det var längesedan jag byggde debianpaket, men det brukar vara ganska enkelt. Låt oss se:
sudo aptitude install debian-builder
Efter uppackning av tar-bollen kör jag debuild som säger:
dpkg-checkbuilddeps: Ej uppfyllda byggberoenden: cdbs (>= 0.4.43) debhelper (>= 6) python-distutils-extra (>= 2.10)
Så vi drar in dem med: sudo aptitude install cdbs debhelper python-distutils-extra och kör debuild igen.
Bygget fungerade tyvärr inte ändå och fick rapporteras som en bugg. Använder tills vidare timer-applet.
Fredrik Wendt Uncategorized applet, debuild, gnome, gtd, pomodoro, timer