Snälla tomten! Jag önskar mig Ken Schwaber's bok Agile Project Management with Scrum.
Tänk om det funnes en serverprogramvara som var färdigprogrammerad med alla funktioner. Om man bara behövde utforma användargränssnittet. Fundament är just det.
torsdag, oktober 19, 2006
tisdag, oktober 10, 2006
Dags för lite kryptografi i Java igen. Det går så långt mellan varven nu att jag glömmer bort hur man gör :-/
Den här gången är det 3DES som ska implementeras.
Först skapar jag nyckeln (från 24 slumpmässiga bytes, från random.org), och de två chifferobjekten.
//the key, from 24 random bytes ("_keyData")
_key = SecretKeyFactory
.getInstance("TripleDES")
.generateSecret( new DESedeKeySpec( _keyData));
//the cipher objects for encryption and decryption
_encryptor = Cipher.getInstance( "TripleDES");
_encryptor.init( Cipher.ENCRYPT_MODE, _key);
_decryptor = Cipher.getInstance( "TripleDES");
_decryptor.init( Cipher.DECRYPT_MODE, _key);
Att kryptera och dekryptera är sedan lätt:
//encrypt a byte[] byte[] encryptedData = _encryptor.doFinal( cleartextData); //decrypt a byte[] byte[] decryptedData = _decryptor.doFinal( encryptedData); //cleartextData and encryptedData is now the same!
Det luriga ligger som vanligt i att försöka få tag i och installera en provider. Jag använder helst den helfria BouncyCastle här.
Men i detta fallet använder jag den medföljande implementationen av 3DES.
Algoritmnamnen ja... usch vad många gånger det har blivit fel. När man skrivit "3DES" istället för "TripleDES" till exempel.
måndag, oktober 09, 2006
OpenID
Du vet Microsoft Passport? Skaffa ett konto hos Pyttemjuk, så funkar det på många sajter. OpenID är samma tänk, single sign-on osv, fast utan beroende av en enda drakonisk leverantör.
Jag har skaffat ett OpenID, på en webbplats som heter myopenid.com. Om OpenID-konsortiet försvinner, så gör det inget, mitt ID finns kvar. Om myopenid.com försvinner, så gör det inget, jag kan behålla mitt ID, fast får gå till en annan leverantör.
Ingen utom jag kontrollerar mitt OpenID! Det är det viktiga.
Hälsningar ola.berg.myopenid.com .
En som vet vad han talar om
Jag misstänker att Mark Baker är en man som vet vad han talar om: nämligen webben som plattform. Läs och ta del!
tisdag, september 12, 2006
måndag, augusti 28, 2006
HTML som datatransfer
Ljuvligt med semester. Bad tre gånger om dagen. Ingen skojprogrammering nästan. Förrän på slutet, då det blev regnigt. Och då hittade jag på följande: Dataöar i HTML. Alltså inte i XML i största allmänhet, utan i HTML.
Detta är en av tillämpningarna av mikroformat. Små, enkla dataformat som inte försöker sig på att vara mer än vad de är. microformats.org
tisdag, juli 04, 2006
Snabb: Länka XML Schema till XML-dokument
Om man vill påstå eller garantera att ett visst XML-dokument följer ordningen i ett visst XML-schema, så kan man göra följande:
<?xml version="1.0" ?>
<mitt
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http//min.server.se/mitt.xsd" >
<fina>dokument</fina>
</mitt>
fredag, juni 30, 2006
Sommarlovsteatern!
Sommarlovsteatern på P1 rockar i vanlig ordning. Nu senast har de kört en väldigt spännande och bra fantasypjäs som heter "Skämmerskans dotter". Som "skämmerska" har man gåvan/förbannelsen att i folks ögon se precis allt det som de skäms över. Lysande upplägg.
Men ack! Så har man missat några avsnitt. Som tur är finns pjäsen på webben. Men hur lösa det på landet, där inget bredband finns? Få över pjäsen på CD kanske?
Lite windowstips för den händige:
Tanka ner strömmande RealMedia
Högerklicka på länkarna, t ex första avsnittet "http://www.sr.se/p1/lovteatern/sounds/2006/sommar/1.skammerskans_dotter/1.ram" och spara filen (inte köra eller lyssna eller någonting sådant).
Öppna den här ".ram"-filen i en texteditor. Vad ser man? Aha, en URL!
rtsp://lyssna.sr.se/barn/lovteatern/2006/sommar/1.skammerskans_dotter/1.rm
URL:en pekar på själva ljudfilen.
Nu behövs ett nedladdningsprogram som begriper sig på "rtsp"-protokollet (se i början på URL:en). Jag använder FlashGet.
Bara att mata in alla pjäsens URL:er:
rtsp://lyssna.sr.se/barn/lovteatern/2006/sommar/1.skammerskans_dotter/1.rm rtsp://lyssna.sr.se/barn/lovteatern/2006/sommar/1.skammerskans_dotter/2.rm rtsp://lyssna.sr.se/barn/lovteatern/2006/sommar/1.skammerskans_dotter/3.rm rtsp://lyssna.sr.se/barn/lovteatern/2006/sommar/1.skammerskans_dotter/4.rm rtsp://lyssna.sr.se/barn/lovteatern/2006/sommar/1.skammerskans_dotter/5.rm rtsp://lyssna.sr.se/barn/lovteatern/2006/sommar/1.skammerskans_dotter/6.rm rtsp://lyssna.sr.se/barn/lovteatern/2006/sommar/1.skammerskans_dotter/7.rm rtsp://lyssna.sr.se/barn/lovteatern/2006/sommar/1.skammerskans_dotter/8.rm rtsp://lyssna.sr.se/barn/lovteatern/2006/sommar/1.skammerskans_dotter/9.rm rtsp://lyssna.sr.se/barn/lovteatern/2006/sommar/1.skammerskans_dotter/10.rm
Ut i solen och dricka kaffe, komma in igen: klart!
Nu kan man lyssna i RealMedia åtminstone. Men få över till CD då? Eller till mp3-spelaren?
Konvertera RealMedia till t ex mp3
Nästa steg är lite lurigare. Det finns nämligen zillioner betalprogram som konverterar rm till mp3. Svårt att hitta gratisprogrammen då!
Jag använder Free RM to MP3 Converter från jodix.com.
Efter ett par minuter har jag rm-filerna konverterade till mp3.
Sedan in i CD-brännaren med mp3-orna, bränn en CD, lyssna.
Jag älskar radioteatern!
(och ja, jag betalar min TV-licens, och nej, jag kopierar inte och sprider P1:s upphovsrättsskyddade material till andra. Vad jag gör är en konvertering till ett format som jag kan lyssna på, absolut fair use ur alla synvinklar).
torsdag, juni 29, 2006
Snabb: Länka xsl-stilmall till xml-dokument
Så här kan det se ut:
<?xml version="1.0" encoding="ISO-8859-1" ?>
<?xml-stylesheet href="test.xsl" type="text/xsl"?>
<mitt>
<fina>XML-dokument</fina>
</mitt>
torsdag, juni 22, 2006
En ny kärlek - eXist
Har ni sett den? Har ni provat den? Jag talar om min nya kärlek: XML-databasen eXist!
Vad det är? Joo...
Det är en server, skriven i Java.
Servern innehåller ett enda tomt XML-dokument. Men du kan ta alla dina XML-dokument och stoppa in i det där dokumentet. Och söka fram dem. Och göra omvandlingar med XSLT. Och allt annat XML-igt man gör nu för tiden.
Plus att du har användare och tillgänglighetskontroll (förstås). Jag kan ge dig rätt att läsa vissa delar av det stora XML-dokumentet, och ge dig rätt att skriva vissa delar, och jag kan förbjuda dig tillgång till andra delar.
Världen har väntat på en riktig XML-databas. Åååh vad många tillämpningar man velat skriva under åren, tillämpningar som hade behövt eXist. Tillämpningar som tvingats använda relationsdatabaser eller filsystem.
Alltså, förstå mig rätt. Jag ogillar XML-hajp. Jag gillar filsystem. Jag gillar relationsdatabaser. Men för vissa tillämpningar gör sig XML alldeles ypperligt.
Tack alla utvecklare bakom eXist. Jag känner att ni har gjort mitt liv lite enklare från och med nu.
onsdag, juni 14, 2006
Förresten, jag söker jobb!
Projektet som jag jobbar i går in i en ny fas efter semestrarna. Det har varit roligt och lärorikt, och jag har fått arbeta med väldigt intelligenta människor. Faktiskt både bland kolleger och beställare.
Men det är dags att söka sig något nytt. Jag saknar samarbetet (projektet är på väg mot förvaltning och det kommer att bli väldigt mycket ensamarbete), och jag saknar den affärsmässiga pulsen och tänket (det är ett universitetsprojekt).
Så om du känner någon som har behov av en väldigt erfaren och påhittig och kunnig systemutvecklare (med kraftig slagsida åt RUP och Java och serverprogrammering och webbtekniker) så hör av dig!
Mitt något censurerade CV kan du se här.
Mitt ocensurerade CV med alla kontaktmöjligheter kan du få se om du lämnar ett meddelande med svarsadress i kommentarsfältet nedan.
Stödtrupper och spjutspets
Ännu ett bevis för att mina predikningar om att skilja mellan stödtrupper (system som stöder din verksamhet och som dina konkurrenter har) och spjutspetsar (system som ger just din verksamhet en konkurrensfördel) inte är ett påhitt från mig lämnas oss av cio.idg.se.
Men du behöver inte lägga 50 spänn på en gräll PDF-artikel. Själva språket i blurben borde få dig att tveka. Hör bara: "ett nytt sätt att se på IT". Nytt? Tvärtom!
Det är ett gammalt och beprövat sätt. Och självklart (om man bara ser till att behandla IT som vilken annan investering som helst). Det sorgliga är att blurben har rätt på ett sätt: för många människor i ledande IT-ställning är sådana här självklarheter lika med nyheter. Men det beror mer på att dessa sitter och bestämmer över saker de inte begriper.
Undrar vad som hade hänt om samma tillsättningsprincip hade tillämpats på andra områden:
Ekonomichef! Använd dubbel bokföring med både debet och kredit. Det nya sättet att styra ekonomin!
Klinikchef! Nu behöver du inte hitta en ihålig ek på en kyrkogård att dra barnen igenom. Läs om det nya sättet att bota kikhosta på!
Politiker! Nu behöver du inte... vänta. Kanske ett dåligt exempel...
tisdag, juni 13, 2006
En klockren liknelse
En kommentar på Slashdot, rörande Microsofts förhållande till fri mjukvara och Gnu Public Licens (GPL):
The GPL is like a nude beach. It's an agreement that you are no going to wear any clothes on this beach. Microsoft wants to hang out on that beach but not remove thier clothing. I can't blame them; but the sunbathers all know that Microsoft is just there to ogle.
Såååå klockrent!
fredag, juni 09, 2006
Installera PHP5 för Apache på din windowsburk (XP)
Gå till http://www.php.net/downloads.php. Klicka på
PHP 5.1.4 zip package. Nu får du välja varifrån du ska tanka hem. T ex frånse.php.net.Skapa en mapp i C: som heter "PHP". Packa upp zip-filen i den mappen. Mappen C:\PHP ska alltså inte innehålla en mapp som heter "php" eller "php-5.1.4-Win32" eller någonting sådant, utan mappen C:\PHP ska innehålla mapparna dev, ext, extras, och PEAR, samt en massa andra filer.
Nu blir det lite hårigare. Gå till din Apachekatalogen
C:\Program Files\Apache Software Foundation\Apache2.2\. Du ska nu ändra i en konfigurationsfil. Gå till katalogenconfoch öppna filenhttpd.confi någon texteditor.Sök fram en rad där det står "#LoadModule ssl_module modules/mod_ssl.so På raden under skriver du
LoadModule php5_module "c:/php/php5apache2_2.dll"
Sök fram en rad där det står "AddType application/x-gzip .gz .tgz". På raden under skriver du
AddType application/x-httpd-php .php
Sök fram en rad som börjar med "DocumentRoot ". På raden under skriver du:
PHPIniDir "C:/php"
Sök fram en rad som börjar med "DirectoryIndex index.html". Efter "index.html" skriver du "index.php".
Nu behöver du göra en liten grej i ditt PHP-bibliotek. Gå till C:\PHP. Har du filen "php.ini"? Om inte, namna om "php.ini-dist" till "php.ini". Har du filen "php5apache2_2.dll"? Om inte, öppna filen http://snaps.php.net/win32/php5.2-win32-latest.zip och kopiera den därifrån till C:\PHP.
Spara httpd.conf och klicka på den lilla Apacheikonen bredvid klockan (en liten röd fjäder på en vit boll med en grön pil). Välj "Restart".
Kopiera nedanstående text i en fil du kallar test.php och lägger i htdocs:
<? echo "Hejsan, världen!"; ?>
Nu kan du testa http://localhost/test.php. Om du ser "Hejsan, världen!" men inte "echo", så fungerar det.
Installera Apache 2.2.2 på din windowsburk (XP)
Så här gör du för att installera Apache på din windowsburk (XP):
Ladda ner Apache, t ex från http://apache.archive.sunet.se/dist/httpd/binaries/win32/. Klicka på
"apache_2.2.2-win32-x86-no_ssl.msi".Dubbelklicka på den nyligen nedladdade MSI-filen.
I dialogen som kommer: klicka på "Next" hela tiden, eller "I accept". Detta ger dig en standardinstallation.
Har du en brandvägg på datorn kommer den kanske fråga dig om du vill att Apache ska vara åtkomlig på nätet. Det vill du förmodligen.
Avsluta installationsdialogen med att klicka på "Finish".
Nu har du förmodligen Apache installerat. Kör din webbläsare till adressen http://localhost. Får du upp ordet "It works!", så har du Apache
Om du gjort en standardinstallation så finns själva Apache-programmet
på C:\Program Files\Apache Software Foundation\Apache2.2.
Dina hemsidesdokument finns i katalogen "htdocs"
(C:\Program Files\Apache Software Foundation\Apache2.2\htdocs).
En smart grej är att göra en mjuklänk från din hemkatalog ("Mina Dokument" eller "My Documents" eller något).
Välj Start - My Documents / Mina Dokument. Högerklicka och välj "New - Shortcut / Nytt - Genväg". Du får fram en dialog
där du ska skriva in sökvägen C:\Program Files\Apache Software Foundation\Apache2.2\htdocs, eller bläddra fram
den.
Du får nu en genväg till dina hemsidesdokument. Genvägen ser ut som en mapp. Spara hemsidesdokumenten där.
söndag, juni 04, 2006
fredag, juni 02, 2006
Ett fint kedjebrev till
Fick ett fint kedjebrev. Eller... javisst, det innehöll en del skrocksmörja om hemskheter som kan drabba en, och sådant är bara smörja.
Men resten av brevet var fint, och därför vill jag skicka det vidare till er:
- Ge folk mer än vad de förväntar sig, och gör det med glädje.
- Gift dig med någon du gillar att prata med. När ni blir äldre, blir den gåvan lika viktig som någon annan.
- Tro inte allt du hör, bränn inte allt du har, och sov inte så mycket du vill.
- Säger du "jag älskar dig", så mena det.
- Säger du "förlåt, jag är ledsen", så se den andre i ögonen.
- Var förlovad minst sex månader innan giftermålet.
- Tro på kärlek vid första ögonkastet.
- Skratta inte åt andras drömmar. Folk som inte har drömmar, har inte mycket.
- Älska djupt och passionerat. Du kan bli sårad, men det är det enda sättet att leva ett fullt liv.
- Strid rent när du strider. Inga smädelser.
- Döm inte folk efter deras släktingar.
- Prata långsamt, tänk snabbt.
- Om någon frågar dig något du inte vill svara på, kom med en leende motfråga: "Varför vill du veta det?".
- Kom ihåg att stor kärlek och stora framsteg kräver stora risker.
- Säg "prosit" när någon nyser.
- När du går miste om något, gå inte miste om lärdomen.
- Kom ihåg: Respektera dig själv, respektera andra, och ta ansvar för dina handlingar.
- Låt inte en liten dispyt stjälpa en stor vänskap.
- När du gjort fel, åtgärda det omedelbart.
- Le när du lyfter luren. Det kommer att höras på din röst.
- Ta dig tid att vara ensam med dig själv.
Fina, enkla, och sanna insikter, som alltför ofta glöms bort. Sprid dem!
Tack, SuS, för dem!
torsdag, juni 01, 2006
The Pirate Bay
Sådär, nu stängdes The Pirate Bay, och servrarna togs i beslag. För brott mot upphovsrättslagen. Utan att ha brutit mot upphovsrättslagen. Däremot tillhandahållit en kontaktförmedling mellan människor som vill byta filer. Och bland dessa människor (belägna någon helt annanstans än på det aktuella webbhotellet, och vars datorer inte tagits i beslag, märk väl) finns det förmodligen en och annan upphovsrättsbrottsling.
Nå, jag tycker att brott mot upphovsrättslagen ska bestraffas. Men agerandet igår är skandalöst. Ett par frågor:
-
Är det kontaktförmedlingens fel om två människor som fått kontakt via kontaktförmedlingen börjar bete sig brottsligt?
The Pirate Bay är en kontaktförmedling. Själva har de efter vad jag förstår inget upphovsrättsskyddat material på sina servrar.
Men jag undrar verkligen varför inte polisen griper brottslingarna? Vi som producerar upphovsrättsskyddat material har enligt lagen rättigheter förbundna med detta. Jag önskar verkligen se att brottslingar åker dit.
Istället lägger polisen resurser på att gripa helt andra personer. Hmm. Om knarklangare dyker upp i närheten av mina barns skola vill jag verkligen att polisen ska gripa dessa. Jag skulle bli vansinnig om polisen istället resonerade så här:
Hmm, låt se... knarklangare står på gatan... gatan använder asfalt... Jag vet! Vi åker till Gatubolaget och beslagtar alla asfaltskokare! Case closed!
-
Att sprida upphovsrättsskyddat material är inte brottsligt. I så fall gör varje producent av upphovsrättsskyddat material sig till stora brottslingar dagligen. Att sprida upphovsrättsskyddat material utan upphovsrättsinnehavarens tillstånd är brottsligt.
-
Hur stor "collateral damage" (där tredje part drabbas) är ett samhälle villigt att acceptera? Om polisen har husrannsakningsorder på en lägenhet i ett flerfamiljshus, ger det dem rätt att raida alla lägenheter?
Svaret på min fråga är i någon mening "ja", polisen har långtgående befogenheter. I teorin skulle de kunna söka igenom alla bilar i ett P-hus om någon av bilarna misstänks innehålla en bomb. Men denna rätt (och skyldighet) har vi medborgare gett polisen, för att vi litar på att de kan hantera den rätten ansvarsfullt. Igår togs ett stort antal andra sajter ner. Däribland sådana som sysslar med politisk opinionsbildning.
I vanliga fall är polisen duktig på att skydda tredje part. I vanliga fall är polisen försiktig när det är grundlagsskyddade rättigheter som står på spel. Men nu verkar det juridiska förnuftet ha glömts bort på vägen.
Om ett internationellt brottssyndikat hyrde in sig på ett hotell, och polisen avsåg att gripa lite folk, hur brukar polisen göra:
- Samarbeta med hotellägaren, bedriva spaning, och sedan slå till utan att tredje part drabbas? Eller...
- Raida hela hotellet och skrämma bort alla gästerna?
Igår gjorde de det sistnämnda.
Genier i arbete...
Grip skurkarna och sluta trakassera oskyldiga!
onsdag, maj 31, 2006
Sveriges förenade systemarkitekter
Ovanstående googling gav i sökande stund svaret "...matchade inte något dokument" (fast från och med i natt kommer väl detta inlägg upp kan jag tro :-/)
Men hursomhelst: det känns som om det börjar bli dags. Konkretisera yrkesrollen. Formulera branschetiken. Synliggöra nyttan. Få en stiff förkortning efter sitt namn: Ola Berg, Systemarkitekt SFSA
Håller ni med?
Definiera "fungerar"
I en av de intressanta bloggarna på CIO.com, kom en kommentar upp. Inlägget handlade om när man kan säga att data mining (hitta tendenser utifrån en massa data) fungerar. Kontexten är amerikansk terroristbekämpning (vad annars?) men är tillämpbart överallt.
Ett tekniskt svar på frågan om det fungerade var: "Genom data mining har vi fått ner antalet misstänkta fall från 1 på tio miljoner till 1 på tio tusen." Kochs mer kontextuella invändning: "Men fortfarande gäller samma fråga: 'hur hantera en stor mängd falska positiver?'"
Och det är ju helt sant. Skillnaden med data mining är förvisso en tusenfaldigt större träffsäkerhet. Men det grundläggande problemet har man ju inte löst: hur skilja agnarna från vetet? eller snarare: hur undvika att skada allt detta vete i jakten på ett litet skräpagn? Vad man gör med data mining är att man minskar sökrymden för andra, mer träffsäkra men kostsammare metoder. Man underlättar för det andra steget. Men behovet av detta andra steg kvarstår: då man ska göra något intelligent med det man faktiskt funnit.
En insiktsfull läsare kommenterar:
[snip] ...any data mining solution succeeds or fails based on a) how the business logic is set up in the first place, and b) how "error conditions" are handled.
Man kan stryka "data mining" från ovanstående, uttalandet blir lika sant oavsett system och metod. Allt står och faller med att verksamhetslogiken i sig är bra, och logikens användbarhet beror till största delen på avvikelsehanteringen.
Aldrig blir det så tydligt som när man är i kravfångnings- eller verksamhetsmodelleringsläge och tar fram användningsfall. Ett enkelt jobb kan det tyckas, så länge som man bara beskriver huvudflödet i ett användningsfall. När man däremot kommer till avvikelserna, det är då det börjar bli lurigt. Det är då det går upp för verksamheten exakt på hur många sätt det kan skita sig. Och att verksamheten ofta inte tänkt igenom hur man hanterar dessa avvikelser.
Det är inte ovanligt att avvikelsebeskrivningarna upptar tio gånger så stor plats som huvudflödet. Och då kan man också räkna ut att det är i avvikelserna som ett system eller en process visar sin differentierande sida. Det är genom att jobba med dem som man kan skapa konkurrensfördelen.
Det går bara att baka kakor på ett begränsat antal sätt (för att återvända till bageriet i mitt bludder om mjukvaruekonomi tidigare). Men det går att hantera brända kakor, trasiga förpackningar, skiftande mjölkvalitet osv. osv. på hundratals olika sätt.
Så tänk till i det andra steget. Tänk över avvikelserna. Och tro aldrig att en teknisk lösning, hur bra den än är, gör att du slipper tänka över dina processer!