Skip to content

jQuery is not defined

Typisk, endelig har man en løsning på at få jQuery elegant fjernet fra visse sider for blot at finde ud af at man bruger jQuery over alt... Løsningen er (man kan diskutere hvor elegant den er):
 
try {
     //Do stuff
} catch(e) {
     //Skip, jQuery not present
}
 

HTML - Det at skrive hurtig kode

Alle der har skrevet noget HTML ved hvor langsommeligt det kan være. Man skrive og skrive og skrive uden at man egentlig kommer nogle steder. Heldigvis er det blevet bedre med en ordentlig IDE, men der mangler stadig noget... Eller gør der? net.tuts+ og smashingmagazine.com har begge en artikel om zen-coding - noget som gør livet lettere for webdesignere. Især filmen på net.tuts+ kan anbefales :-)

Bro mellem Weblogic og Apache?

Jeg har de sidste par dage døjet lidt med at få vist den rigtige content-type (mimetype) på css-filer. Opsætningen er simpel, først en apache og så en bea inde bagved. Filer serveret fra apachen viser godt nok content-typen som værende text/css mens filer, som bliver serveret fra bea'en vises som text/html.

Det var lidt svært at finde frem til at det rent faktisk var bea'en som smed filerne ud og ikke apachen (eftersom al kommunikation går gennem denne). Men jeg faldt heldigvis over et blogindlæg som hedder Fixed Weblogic Apache Bridge CSS Mimetype.

For at gøre en lang historie kort er det blot at tilføje følgende til web.xml i bea'en:

<mime-mapping>
    <extension>css</extension>
    <mime-type>text/css</mime-type>
</mime-mapping>
 


Herved sikre bea'en at den rigtige content-type bliver sat. Apachen er (åbenbart?) ligeglad, er der en type gør den ikke noget.

jQuery, rå kraft

For et par måneder siden ville jeg aldrig have troet at jeg skulle sige dette, men JavaScript er fedt. Specielt når man smider et begreb som jQuery ind.

Hvad kan jQuery så? Tja, næsten alt. Jeg har kun set muligheder indtil videre. F.eks. hvis man arbejder med CMS og gerne vil have alle eksterne links til at have target="_blank" (så man starter et nyt vindue med linket). Men når man arbejder med CMS kan man ikke være sikker på at alle redaktører o.lign. tilføjer dette. Her kommer jQuery frem og redder dagen - med en enkelt linje kode!!
 
$("a[href^=http://]").attr("target", "_blank");
 

Trylle trylle siger jeg bare og man er færdig. Det tog jo ikke længe? Nu har man sikret at alle links der starter med http:// får tilføjet target="_blank".

Dagens "aha" med JAXB

JAXB er yderst lækkert, dokumentationen er lidt la-la. Se blot følgende:

-xmlschema
    treat input schemas as W3C XML Schema (default). If you do not specify this switch, your input schemas will be treated as W3C XML Schema.
 


I fordi jeg ikke forstår hvad de mener, blot lidt overflødig parameter... Hvis man spørg mig :-)

Lørdags bat-fil hacking

Nogle gange får man brug for at bruge bat-filer i Windows. Det kan gøre visse ting lettere - f.eks. når man skal kører et nightly build. Her ville en %date% være brugbar. Desværre bliver denne udskrevet som DDMMYYYY og ikke YYYYMMDD, hvilket gør sortering lettere.

Løsningen er dog "let". Det er blot at lave en variabel, lad os kalde den today. Denne tildeles så værdien "i dag" på følgende måde:
@echo off
set today=%date:~-4,4%%date:~-7,2%%date:~0,2%
echo %today%

Trylle, så har man dags dato på YYYYMMDD-form. Resultatet af ovenstående er 20080404 :-)

Oprettelse af kø til en enkelt jsp i BEA

Den senest måneds tid har været temmelig hektisk når det kommer til vores primære miljø. Vi har haft en del driftsproblemer, som vi endelig (?) har isoleret. Det lader til at en enkelt jsp-fil kan trække hele sitet ned. Hvorfor denne hænger og hvad den gør er irrelevant, men årsagen er at den pludselig får en kæmpe kø som i løbet af et par minutter lægger hele sitet ned.

Løsningen er at lave en kø dedikeret til denne ene jsp-fil. Dette gøres i BEA ved at tilføje følgende til web.xml i WEB-INF:

<servlet-name>CriticalServlet</servlet-name>
    <jsp-file>/.../critical.jsp</jsp-file>
    <init-param>
        <param-name>wl-dispatch-policy</param-name>
        <param-value>critical-queue</param-value>
    </init-param>
</servlet>


I BEA'en konfigureres en kø med navnet critical-queue - altså svarende til den defineret i web.xml. Herefter genstartes serveren, og /.../critical.jsp vil nu gøre brug af den nye kø. Går skidtet ned, vil det kun være denne kø og dermed ikke hele sitet.

Rename filer med ant (1.6.5) - ikke godt på Windows

Når man bruger ant på en Windows maskine og vil rename en fil (med move) løber man ind i problemer. Jeg ved ikke om det er rettet i 1.7, men "fejlen" findes i 1.6.5.

Det er således at move først kopier den filen til den nye, og så sletter den efterfølgende den gamle fil. Hvis man så vil rename fra test.JSP til test.jsp løber man jo ind i problemer på en Windows maskine. Resultatet bliver at filen ikke kan omdøbes, hvorefter ant blot sletter filen - den tror jo at det er en gammel fil...

En mindre "bug", som tog lidt tid at finde... men nu er den fundet, og der er blogget om den :-)

Løsningen er jo så bare at rename til en tmp-fil og så herfra til den nye fil:
...
<move file="test.JSP" tofile="tmp" />
<move file="tmp" tofile="test.jsp" />
...


Blot endnu en ting som gør udvikling på Windows mere irriterende...

Java - nu under GPL

Jeg vil også være med til at sprede budskabet om Java, som blev open source. Nyheden er vel stadig "fresh" - det synes jeg da. Jeg faldt også lige over Richard Stallman's kommentare til dette. Den kan ses her.

HotSpot VM (JVM) og javac bliver frigivet under et projekt kaldet OpenJDK. Det skal nok blive spændende at følge dette projekt. Duke, Java's maskot er også blevet open source. Dette betyder bl.a. at Java nu kan distribueres med f.eks. Debian.

Personligt synes jeg at det er en stor dag for open source og fri software.

Error: class file has wrong version 48.0, should be 47.0

This is one of the few entries I have written in English, so typos etc. will be present :-)

The reason that I'm writing this in English and not in Danish is that this problem is somewhat documented on the net - but I would also like to contribute.

So, why do I get a class file has wrong version 48.0, should be 47.0 error? The reason for this is that you are using JDK 1.4 to build your project. This is fine, but somewhere in your build process you are using JDK 1.3. The problem emerges as a conflict between these two versions. In my case JDK 1.4 called the JDK 1.3 javac which then tried to use JDK 1.4's rt.jar file. As JDK 1.3 doesn't understand the 1.4's specification (major/minor version) it throws a class file has wrong version 48.0, should be 47.0.

The solution was to compile the entire system with JDK 1.4. But notice that some parts of your system might have to be compiled using 1.3, and therefore this solution is not viable for you. In this case you must identify what parts need to be compiled with 1.3 and what parts need 1.4 and use verify that you are doing this correctly. This, of course, depends on your build method.