VNC-studsare

Jag hade för fem år sedan en egenskriven blogg. Sedan åt jag upp databasen. På den fanns iaf instruktioner för hur man lätt kunde sätta upp VNC på windows så att man kan hjälpa en människa i nöd.

Eftersom både jag och t ex min far befinner oss bakom en NAT/router så är det inte helt rättframt. För att lösa detta satte jag upp en VNC-studsare – en bit Java som knöt ihop två TCP-koppel. Idag skulle vi behövt detta. Eftersom jag inte hittade det så skrev jag ihop det på nytt.

De övergripande instruktionerna är att servern (den som behöver hjälp) ansluter med “reverse” (x11vnc -connect host:port) och klient (den som ger hjälp) till samma port på studsservern.

Mer detaljerade Windows-instruktioner får vänta tills nästa gång.

Studsserver

Kör VncBouncern. Den skriver ut porten som används.

Linux

Lite kommandon:

x11vnc -connect localhost:`netstat -lnp | grep java |tr ':' ' ' | tr -s ' ' | cut -d ' ' -f 4`
vncviewer 192.168.1.157:`netstat -lnp | grep java |tr ':' ' ' | tr -s ' ' | cut -d ' ' -f 4`-encodings "copyrect hextile corre rre"

Bakgrunden till -encodings är att när man ansluter till sin egen maskin för att testa så säger vncviewern “Same machine: preferring raw encoding”, och det går apslött.

Om Milltime

Milltime Professional är ett trevligt verktyg och detta ville jag framför. Längst ned på skaparens hemsidan fanns också en länk för “Feedback” – kanon. Dessvärre var den rutan begränsad till 500 tecken. Så här är min riktiga feedback, oavkortad.

Hej.

Jag har precis använt Milltime Professional för första gången och tycker rent allmänt att det är ett kanonverktyg att använda för en utekonsult – tack vare veckovyn. I övrigt är det väldigt klickbaserat vilket inte är lika kul när man jobbar på många projekt samtidigt. Veckovyn är verkligen kanon i detta sammanhang.

Det enda jag saknar är smidig inloggning. Jag hade gärna sett att man kunnat registrera ett OpenID för sitt konto och på det sättet fått bra integration med andra lösningar, t ex Google, Plaxo, WordPress, Yahoo, AOL – ja, listan är lång och företag som stödjer detta är bland andra Microsoft, Sun, VeriSign och Paypal.

http://en.wikipedia.org/wiki/OpenID

Det finns färdiga bibliotek för alla tänkbara plattformar och det enda som påverkas är autentiseringen i er produkt. Jag hoppas ni ser ett värde i att kunna återanvända den autentiseringsmekanism som era kunder redan använder (t ex alla som använder Googles tjänster).

Vänligen,

Fredrik Wendt

Ämnen för Java-TDD

Tittar på att gå ett steg längre med TDD-workshops och lämna de grundläggande ämnena. Följande har efterfrågats:

  • testning med/av legacy code
  • vad är bra respektive dåliga test
  • funktionell eller acceptansdriven testning (ATDD)
  • beteende driven utveckling (BDD)

Egna saker jag själv skulle vilja gräva lite mer i och ägna ett par timmar åt:

  • hamcrest (matchers)
  • dotmesh (methods)
  • making EasyMock suck less
  • making Mockito suck
  • easyB
  • Fitnesse

I allmänhet så saknar jag en diskussion om hur lättredigerade test (wiki?) versionshanteras ihop med koden de testar eller är skrivna mot. Detta är ju högst intressant när man går in och gör en hot-fix för en produkt som rört sig mycket under ett år, och en kund som har produkten i drift sedan ett drygt år tillbaka vill sin fix. Hur kör man samma testsvit som man hade för ett år sedan på ett enkelt sätt? Hur är egentligen inte svårt. Jag har bara inte sett många bra lösningar, ännu. TextTest, xUseCase och liknande plain text-ramverk är en bra lösning. Frågan är bara om testen är tillräckligt tillgängliga för ATDD – hur får man kunden att känna att det är hans/hennes test?

Get Trac back on Track

Trac is great – it just works for so much straight right out of the box. It’s not perfect though. And the fixes I need I’ll assemble here.

jQuery.js

It’s just not ever there. :)

sudo vim /usr/share/pyshared/trac/web/chrome.py
        #add_script(fakereq, 'common/js/jquery.js')
        add_script(fakereq, 'http://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js');

and in add_script, add hack for filenames starting with http:

    if filename.startswith('http'):
        script = {'href': filename, 'type': mimetype}
        req.chrome.setdefault('scripts', []).append(script)
        scriptset.add(filename)
        return

Automate updating of trac wiki pages

There’s an XmlRpcPlugin that I’ve used successfully. I just love Python and XMLRPC.

easy_install -Z -U ....xmlrpc

Proper notification to wiki page changes

I’m currently using the rss2email application for proper notification of wiki updates. :(

Eclipse och Subversion-Howto

Övergripande steg

  1. Skapa ett Java-projekt och lös uppgiften (eller iaf delvis).
  2. Checka ut det som redan finns skapat åt dig på http://prov.wendt.se/svn//trunk (jag har gjort branches, tags och trunk) och spara det som ett nytt projekt.
  3. Konvertera det nya utcheckade projektet till ett Java-projekt, lägg till test-katalog och JUnit 4.
  4. Kopiera över de filer du skapat från steg 1. Kontrollera att det fungerar som tidigare.
  5. Checka in.
  6. (Ta bort ditt gamla projekt om du vill.)

Egentligen är det bara steg 3 som är trixigt.

Det finns två menyval som inte syns (nästa gång skall jag spela in med mindre skärmstorlek så allt syns), och det är

  • i steg 3. Högerklickar på projektet och väljer Properties längst ned.
  • i steg 5. Mappen .settings och filerna .project och .classpath tycker jag inte skall checkas in, och väljer därför Team » Add to svn:ignore

[flashvideo file=http://wendt.se/misc/kyh-moo-svn-howto.flv width=460 height=298 /]
Filmen kan tankas hem som ogg också – mycket bättre kvalitet (ca 8 MB, flashfilmen är på 11!).

Fjärrstyrning i Ubuntu

Emellanåt hoppar jag in och assistera morfar. Det första hindret för att hjälpa någon på distans är oftast att lösa detta med att “se samma sak”. Detta är mina anteckningar för hur jag gör:

ssh -XC user@remotehost
user@remotehost:~$ vino-preferences

och fixa till inställningarna. Det går också att göra utan GUI – allt ligger i GConf under /desktop/gnome/remote_access/.
Därefter gäller det bara att hitta rätt nivå av kompression.

vncviewer -depth 8 -compresslevel 9 -quality 3 remotehost

Ett problem är att om man använder SSH-tunnel så räknar tight VNC ut att man pratar med den lokala maskinen och väljer då “raw” encoding vilken är väldigt högupplöst. Det kan man som tur är styra med -encodings. Så det blir till slut:

vncviewer -depth 8 -compresslevel 9 -quality 3 -encodings "copyrect tight hextile zlib corre rre raw"

Python och teckenkodning – utf8

Det är bara så – det krävs extrainsatser hela tiden med Python 2.* för att använda tecken andra än ASCII-tecken. Skall här teckna ned alla extrainsatser jag använder och stöter på.

Källkodsfilens teckenkodning

Anges såhär:

#!/usr/bin/env python
# -*- encoding: utf8 -*-

Läsa in textfil

in_file = codecs.open("elever.txt", "r", "utf8")

Utmatning på stdout

import codecs, sys
sys.stdout = codecs.getwriter('utf8')(sys.stdout)