More about Kim Bjørn Tiedemann

My home



Installing Roller 4.0.1 on Glassfish v3 final

01.09.2010 | 2 Kommentarer

I am installing a new server and wanted to swith from Tomcat to Glassfish as the application server I am using to host the roller blogging system.

So I started with the installation and everything went pretty ok. I followed this guide which is pretty good. But there were some problems that are not covered in the guide:

MySQL datasource:

It is not enough to declare the databaseName, serverName, portNumber, user and password properties to connect to the database. When I tried to access the deployed roller site it said "no database selected". I changed the url property to: jdbc:mysql://localhost:3306/rollerdb. Perhaps it is enough to remove the url property - I havent tried it...  

Provide jndi:

The JNDI name of the JDBC resource must be called jdbc/rollerdb. I tried with jdbc/roller and then use the roller-custom.properties to declare the new JNDI name. But that did not work and it could not find the JNDI resource.

JPA configuration:

Put openjpa.QueryCompilationCache=false in the roller-custom.properties file.

Login:

I could not login to the site after starting the application. It seems that roller 4.x is using encrypted passwords (which is good). But since I already had a database I had unencrypted passwords in my database. The database update script does not handle this, so I added passwds.encryption.enabled=false to the roller-custom.properties. 

After this I could not see any of my existing blogs since they relied on a 3.x theme. The theme stuff seems to have changed a lot, so I manually changed the theme in the database to a default one and then it worked. Now I need to change my themes so that they are 4.x compatible. 

Roller and spam

12.26.2007 | 1 Kommentarer

oces-encryption - et google code project

05.13.2007 | 0 Kommentarer

Efter opfordring har jeg offentliggjort kildekoden til oces-encryption projektet

Projektet er oprettet gennem google code på adressen http://code.google.com/p/oces-encryption/ under Apache 2.0 licensen.

Projektet kan bygges ved hjælp af Maven2.

/Kim

Flere muligheder med OCES certifikatet

02.22.2007 | 3 Kommentarer

Det har irriteret mig længe, at man ikke kan bruge den digitale signatur til andet end signering af mails samt logge på offentlige servere (som skat, eboks etc). Hvorfor ikke give mulighed for at bruge signaturen til flere formål - da det er et X509 certifikat kan det jo bruges til signering og kryptering af filer. Udbuddet som TDC vandt i sin tid burde have indeholdt et krav om at stille applikationer til rådighed, som giver en bruger mulighed for at signere og kryptere filer på ens harddisk.

Desværre var det ikke tilfældet og jeg har ikke kunnet finde nogen open source software, som giver mulighed for at signere/kryptere med et X509 certifikat. Kun en mulighed - at lave min eget!

Derfor har jeg lavet et open source library, som er frigivet under Apache 2 licensen. Library'et stiller følgende funktionalitet til rådighed:

Kryptering:

OcesEncrypter klassen benyttes til at kryptere en fil given en pkcs12 fil eller den offentlige del af X509 certifikatet.

Klassen kan instantieres ved:

OcesEncrypter encrypter = OcesEncrypter.newInstance(File x509PublicCertificateFile);
Eller
OcesEncrypter encrypter = OcesEncrypter.newInstance(File pkcs12File, String pkcs12password);

Klassen kan benyttes til at kryptere en fil:

encrypter.encryptFile(File fileToBeEncrypted, File encryptedFile);

Krypteringen fungerer ved, at der genereres en symmetrisk AES-128 nøgle som benyttes til at kryptere fil indholdet (fileToBeEncrypted). AES nøglen krypteres med den offentlige nøgle og inkluderes i den krypterede fil (encryptedFile). Derved opnås en hurtig og effektiv kryptering.

Dekryptering:

OcesDecrypter klassen benyttes til at dekryptere en fil, som er blevet krypteret med OcesEncrypter.

Klassen kan instantieres ved:

OcesDecrypter decrypter = OcesDecrypter newInstance(File pkcs12File, String pkcs12Password, String privateKeyPassword);

Som det kan ses tager OcesDecrypter kun en pkcs12 fil for at få adgang til den private del af certifikatet. Efter instantiering kan objektet dekryptere:

decryptFile(File fileToBeDecrypted, File decryptedFile);

Resultatet gemmes i filen decryptedFile.

Signering

OcesSigning klassen benyttes til at signere indholdet af en fil med et OCES certifikat.

OcesSigning signer = OcesSigning.newInstance(File pkcs12File, String pkcs12password, String privateKeyPassword);

Signeringen kan herefter foretages ved:

signer.sign(File fileToSign, File signFile)

Signeringen producerer en fil (signFile) som indeholder signaturen af filen der skal signeres (fileToSign). Signering foregår ved at tage en SHA-1 hash af indholdet i signFile og herefter kryptere dette med den private del af certifikatet. Resultatet gemmes i filen.

Verfificering af signering

OcesSigningVerifier klassen benyttes til at verificere en signatur produceret med OcesSigning. Klassen kan instantieres med:

OcesSigningVerifier verifier = OcesSigningVerifier.newInstance(File pkcs12File, String pkcs12password)

Eller

OcesSigningVerifier verifier = OcesSigningVerifier.newInstance(File x509CertificateFile)

Efter instantiering kan klassen verficere på følgende måde:

boolean verified = verifier.verify(File signedFile, File signFile);

Verificering af signaturen foretages ved at tage et SHA-1 hash af filindholdet i signedFile filen. Herefter tages indholdet af signFile og dekrypteres med certifikatets offentlige nøgle. De to hash værdier sammenlignes og hvis de er ens, er signaturen gyldig.

Brug af library som applikation

Library'et indeholder en main klasse, som kan benyttes til at eksekvere de forskellige muligheder i library'et.

Det kan benyttes på følgende måde:

java -jar oces-encryption-signing-lib-0.1-jar-with-dependencies.jar

 -certificate FILE                 : The X509 certificate file that contains the public key
 -destination FILE                 : The destination file to store the result in (mandatory when mode=encrypt|decrypt|sign)
 -mode encrypt|decrypt|sign|verify : Set the mode of the program ie the program will decrypt, encrypt, sign or verify
 -password VAL                     : The password used for accessing the pkcs12 file (mandatory when mode=decrypt|sign, optional when mode=encrypt|verify)
 -pkcs12 FILE                      : The pkcs12 file containing both the public and private key (mandatory when mode=decrypt|sign, optional when mode=encrypt|verify)
 -signature FILE                   : The file containing the signature of a signed file
 -source FILE                      : The file used as a source for processing

  Example: java dk.tiede.oces.OcesMain -certificate FILE -destination FILE -mode encrypt|decrypt|sign|verify -password VAL -pkcs12 FILE -signature FILE -source FILE

Som tidligere skrevet er library'et udgivet som Open Source under Apache 2 licensen og jar filen findes her. Det er mit håb at andre vil benytte det og eventuelt bygge videre på det (muligvis noget GUI-værk :-). Kildekoden vil formentlig komme til at ligge under Google projects, men det har jeg ikke besluttet mig for endnu. Giv mig et skriv hvis du har behov for koden.

Download jar fil

Bug in roller3.0

11.27.2006 | 1 Kommentarer

I have discovered a bug in the Roller3.0 release which I am using as my weblog software

When I updated from my earlier Roller version to the current version 3.0 and started using it, the structure of the permalink suddenly changed to using dates instead of the title of the blog entry.

I investigated the code by checking it out from the subversion repository:


   1:    public String createAnchorBase() {
   2:        
   3:        // Use title or text for base anchor
   4:        String base = getTitle();
   5:        if (base != null) {
   6:            base = Utilities.replaceNonAlphanumeric(base, ' ');
   7:            if (StringUtils.isEmpty(base.trim())) {
   8:                base = getText();
   9:                if (base != null) {
  10:                    base = Utilities.replaceNonAlphanumeric(base, ' ');
  11:                }
  12:            }
  13:        }
  14:
  15:        if (StringUtils.isEmpty(base.trim())) {
  16:            
  17:            // Use only the first 4 words
  18:            StringTokenizer toker = new StringTokenizer(base);
  19:            String tmp = null;
  20:            int count = 0;
  21:            while (toker.hasMoreTokens() && count < 5) {
  22:                String s = toker.nextToken();
  23:                s = s.toLowerCase();
  24:                tmp = (tmp == null) ? s : tmp + "_" + s;
  25:                count++;
  26:            }
  27:            base = tmp;
  28:        }
  29:        // No title or text, so instead we will use the items date
  30:        // in YYYYMMDD format as the base anchor
  31:        else {
  32:            base = DateUtil.format8chars(getPubTime());
  33:        }
  34:        
  35:        return base;
  36:    }

The code above creates the anchor (and thereby the permalink) of the entry. The bug is introduces in line 15 where the base is checked for emptiness. The check should be inverted so that is says:

if(!StringUtils.isEmpty(base.trim()))

I have changed the code and rebuild roller. I have checked the head code in the roller repository and the bug has also been corrected here. If you do not want to build it yourself let med know by commenting this entry and I can send you a jar file that you can use to replace the one in the lib directory.

/Kim

Java open sourced

11.13.2006 | 0 Kommentarer

Sun har nu officielt gjort Java åben og har valgt GNU GPLv2 som licens, som er den samme licens som blandt andet Linux er licenseret med. For at undgå, at programmer, som bliver udviklet i Java ikke rammes af GNU GPLs virale egenskab (hvor al nedarvet arbejde også skal udgives med GNU GPL licensen) er licensen benyttet på samme måde som classpath licensen. Det sikrer at også kommercielle programmer fortsat kan udvikles i Java.

Sun har valgt at open source JavaSE, JavaME, og JavaEE. I første omgang åbnes HotSpot JVM og Java compileren. Senere bliver hele JavaSE JDK'en åben. JavaEE bliver dobbeltlicenseret så den både udgives under CDDL og GNU GPLv2. JavaME åbnes for nuværende i CLDC udgaven (Connected Limited Device Configuration) men senere åbnes også den fulde version CDC (Connected Device Configuration).

Dette er et vigtigt skridt for Java og Sun som har været lang tid om beslutningen. Men da beslutningen først var taget (ved JavaOne i år), så gik det hurtigt med valg af licens og omfanget af hvilke dele af Java der blev åbnet. Det er modigt af Sun at vælge GNU GPL licensen, som selvfølgelig er en af de mest kendte licenser, men som også er en copyleft licens. Jeg tror at det var et meget rigtigt valg, fordi det sikrer, at vi får de gode ideer ind i Java igen. Der er ikke nogen, som bare kan tage bolden og drible afsted med den uden at vi alle får glæde af det.

Det bliver meget spændende at se, hvordan Sun og det open source community, som nu skal til at spire omkring Java vil håndtere JCP processen.

Læs mere om Suns beslutning

DeliciousPostChecker - a Google project

10.22.2006 | 0 Kommentarer

So...

It seems that some people are interested in the Delicious Post Checker that I have made. And some have asked for the source code.

So here it is - you can download it at googles code hosting here: http://code.google.com/p/delicious-post-checker/

Hope you enjoy it and that you will notify me about bugs and patches

Cheers

Freemind mindmapping

05.08.2006 | 0 Kommentarer

I am using a free version of a mind mapping software Freemind for taking notes, brainstorming and gathering my thoughts. It is a great software product and it has a very speedy response - or rather normally it has a very speedy response.



I got a new Dell laptop and wanted to install the software on this. And it was sooo sloooow... I have a similar setup on my desktop computer (same JRE) and I do not have the same problem.

After googling I found a solution to the problem:
-Dsun.java2d.noddraw=true
Starting the jvm with the above system property helps and now I can use Freemind again :-) The property disables all use of directdraw and direct3D - I do not know if the problem is caused by the driver of my graphics adapter?!?

Så er den her: java.lang.ChuckNorris

04.09.2006 | 0 Kommentarer

Jerry Joplin skriver at java.lang.ChuckNorris kildekoden endeligt har set dagens lys.Kildekoden er sendt til Jerry af en højtstående person i Sun og var oprindeligt tiltænkt til jdk 1.0, men dødstallet var alt alt for højt. Derfor er klassen, hvis udelukkende formål er at give cirkelspark, aldrig blevet en del af Java SE.

Se kildekoden her.

Del.icio.us post checker

04.03.2006 | 1 Kommentarer

I have made a small Java application for checking my del.icio.us posts. It fetches all the posts from the REST api, supplied by del.icio.us, and checks each link for responsiveness.



You can try the application via Java web start.

 The application needs privileges for accessing the Internet and you are therefore asked to give it access. The application is still under development.


EclipseWiki - wiki plugin for eclipse

03.26.2006 | 0 Kommentarer

Jeg er stødt på alle tiders plugin til Eclipse - EclipseWiki.

EclipseWiki giver mulighed for at dokumentere forhold omkring i et projekt på den meget populære wiki måde. Den store fordel ved EclipseWiki er, at wiki filerne er almindelige tekstfiler, som ligger i en separat mappe i projektet og kan derfor checkes ind i CVS eller Subversion og versionhåndteres.



Eclipse wiki giver også den fordel, at der kan linkes til andre filer i projektet. Fx giver det mulighed for at referere til en Java klasse eller build filer, som en del af dokumentationsopgaven og læseren af wiki siden kan følge linket til den konkrete Java klasse.

Jeg er vant til at benytte SnipSnaps måde at skrive Wiki sider, og EclipseWiki tilbyder flere forskellige renderer til forskellig wiki syntax. Som standard gøres CamelCase ord automatisk til wiki links, men jeg manglede dog muligheden for at kunne lave tvungne links på SnipSnap måden ved at putte ordet i [firkantklammer]. Jeg har lavet en patch til projektet der retter dette, og som bliver integreret i næste release af projektet.

Groovy

03.18.2006 | 0 Kommentarer

Jeg leger lidt med scripting languages for at se, hvorfor det nu (igen) er hypet. 

Jeg har kigget lidt (meget lidt) på de forskellige sprog (ruby, python, groovy), men da min baggrund er Java, så synes jeg, at Groovy absolut er mest tiltalende. Groovy har fordel i og med, at det kan kompileres til Java bytecode og udviklede scripts kan eksekveres fra Java igennem en Groovy classloader.

En af de sjove ting omkring sproget er dets closures, som er en form for indlejret kode, der ikke er pakket ind i en metode, men kan inkluderes i tuborg parentes.

Et eksempel på closures:

x = ['World', 'Moon', 'Mars'] 
x.each (println 'Hello ' + it)

Println 'Hello ' + it er en closure, som leveres som argument til each metoden på array'et. Ganske smart og nemt at kode. Jeg tror at jeg vil bruge Groovy i fremtiden til at lave små scripts, når der skal udvikles lidt let kode. Det kunne fx være konverteringsopgaver eller lignende.

Du kan se en præsentation af Groovy på JavaOne online resources (det kræver, at du har en Sun Developer Network login, som er gratis).

The Java Posse

03.18.2006 | 0 Kommentarer

Jeg har fundet en podcast på nettet, som er ret god for java programmører.

The Java Posse er fire erfarne java folk fra Sun, Google, NewEnergy Associates og Apple, som en til to gange om ugen diskuterer nyheder indenfor Java verdenen, men snakker også om andre teknologier. Af og til interviewer de nogle af de hårde drenge i Java verdenen.