ClustrMaps

The roadrunner is back as never before! See also: My homepage or my very obsolete site
If by any means entries in my blog are considered to be harmful or damaging, please let me know (add comment) or just mail me. In this (unhopely) case I will remove or change the contents.

Friday, July 18, 2008

De Java Heaps en de Garbage Collector



De roadrunner dacht dat er slechts 1 heap was.
Het blijken er toch meedere te zijn, zie:
http://wiki.caucho.com/-XX:MaxPermSize
http://www.javaworld.com/javaworld/jw-08-1996/jw-08-gc.html?page=1
http://publib.boulder.ibm.com/infocenter/javasdk/v6r0/index.jsp?topic=/com.ibm.java.doc.diagnostics.60/diag/problem_determination/aix_mem_heaps.html
http://www.artima.com/underthehood/gc.html

Ja, soms blijf je je achter je oren krabben.
Wat te denken van java -Xnoclassgc.
Hoelang zou dat goed gaan?

Als de roadrunner het enigzins begrijpt zijn er de volgende heaps:
  1. the Java™ heap
  2. the native (or system) heap
  3. the garbage-collected heap
En als het goed is, merk je daar dus niets van.


Maar wat te doen bij:
http://java.sun.com/j2se/1.4.2/docs/api/java/lang/OutOfMemoryError.html
http://www.freshblurbs.com/explaining-java-lang-outofmemoryerror-permgen-space
http://publib.boulder.ibm.com/infocenter/wasinfo/v6r1/index.jsp?topic=/com.ibm.websphere.nd.iseries.doc/info/iseriesnd/ae/cprf_defaultheap.html
048241/QEJBSVR/SERVER1 GC HEAP USES 110% OF THE NON-RESERVED POOL.  JVM GC
HEAP SIZE(KB) EFFECTIVE POOLSIZE(KB):974601 882392.
Het leven was ooit simpel ...

Sunday, July 13, 2008

Innovation



Who thinks there is nothing more to innovate in for instance a car,
should look at the new features in the Volkswagen Passat:
http://www.infibeam.com/blog/news/2008/04/07/first_volkswagen_with_lane_keeping_assistant_adaptive_chassis_control.html

This is on the feature list:
Lane Assist
DCC adaptive chassis control
New USB interface for iPod and Co.
Tires of the Passat CC “repair themselves”
Park Assist
ACC automatic distance control

Quotes:
“Lane Assist”: This active lane keeping system on the Passat CC automatically counter-steers as soon as it detects that the Passat CC could leave its lane unintentionally; a genuine gain in convenience and safety. About 14 percent of all accidents involving injuries are caused by the vehicle leaving its driving lane. “Lane Assist” can make a contribution toward reducing this accident rate. By the way, if the driver sets the turn signal to intentionally change lanes, “Lane Assist” does not intervene.

“Park Assist”: Another high-end technology is the “Park Assist” parking assistance system. It automatically guides the Passat CC into a parking space at the push of a button. The driver no longer needs to steer in this case, but instead just accelerates and brakes.
See this movie on Youtube: http://nl.youtube.com/watch?v=9SUgrHXQN0g

And now in Dutch:
en nu maar hopen dat Rijkswaterstaat de lijnen netjes onderhoudt en dat er geen bord opduikt:
Lijnen ontbreken.
En het wachten is op de echte automatische piloot.

En dan die reacties, zie:
http://www.ad.nl/autowereld/2212531/Passat_CC_boordevol_innovaties.html
Quote:
Het is en blijft een Kever met grootheidswaanzin. Maar daar had de bedenker van VW ook last van.

Tuesday, July 08, 2008

Het leed dat file heet (part V)



Het onvermijdelijke is gebeurd: de roadrunner staat nu stil.
Deze keer niet in de file, maar in de garage.
Dat waren de koppelingsplaten!

De files leiden tot een slijtageslag.
Niet alleen bij de bestuurder maar ook het vehikel heeft het zwaar te verduren.
Zie in dit verband: Voor altijd in de file? http://www.intermediair.nl/artikel.jsp?id=92491

De rekening dan maar naar Eurlings (http://nl.wikipedia.org/wiki/Camiel_Eurlings) sturen.
Da's nog eens rekeningrijden!

Friday, July 04, 2008

Het leed dat file heet (part IV)


Bron: http://www.flitsservice.nl/cm_php/main_repo.php?id=2589

Vrijdagavond en zeker als het zuiden vakantie krijgt,
is het een crime om van Nieuwegein naar Oss te komen.
Vreemd eigenlijk want de roadrunner (en velen met hem...) rijdt van noord naar zuid,
dat zou dan toch niets uit moeten maken?

Vandaag was het goed raak.
Allereerst mijn medeleven met de slachtoffers van die aanrijding.
De aanrijding die maakte dat 3 rijstroken naar 2 moesten (en weer wat later naar 1).

Inderdaad er stond een rood kruis op het linker baanvak en ik zag een ambulance gillend aankomen. Die kwam redelijk soepel door de tonnen blik heen geworsteld.
In de veronderstelling (altijd gevaarlijk) dat "men" vergeten was het rode kruis uit te zetten,
kropen nogal wat auto's weer terug naar de forbidden lane.
De roadrunner ook, maar (niet handig) als laatste.

In de verte zag ik even later gele zwaailichten en jawel: RWS (Rijks Water Staat).
Alleen nu stond het echt vast.
En het toen onvermijdelijke gebeurde.
Er stapt een RWS'er uit.
Mijn reeds geopende raampje (het was warm aan het worden) nodigde uit om mij een veeg uit de pan te geven. En aldus geschiedde.

"of ik niet wist wat een rood kruis betekende"
"je veroorzaakt een gigantische file op die manier"

En tja, wat zeg je dan wetend wat een rood kruis betekent?

"sorry, dat doe ik niet in mijn eentje"

De RWS'er (type bouwvakker) droop gelukkig af, toen een klein gaatje, achter een sleurhut ontstond.

Daarna was er een onwezenlijke serene rust.
Alle auto's achter, voor en naast mij, hadden hun motor inmiddels afgezet.
Stationair draaien (met airco) kost dure accijnzen (de benzine zelf minder).

Dit hele tafereel dus om 17:40 uur bij knooppunt Everdingen.
Een kleine 10 min vanaf Nieuwegein.
Na onze benen gestrekt te hebben, kwam de meute langzaam weer op gang.
Maar niet nadat nog eens twee ambulances met vol arsenaal voorbij zoefden.
RWS had de baan schoon geveegd!

Om 17:55 uur zette de meute zich weer in beweging.
Door mijn onhandige manoeuvre was de roadrunner inmiddels op de spitstrook beland.
En ja, ik weet wat een doorgetrokken witte streep betekent.

Zo werd roadrunner voortdurend links ingehaald (dat is de roadrunner niet gewend ...)
Bijvoorbeeld door een buitenlands karrtke met kenteken HSL 850.
Ingehaald door de Hoge Snelheids Lijn!
Nog steeds rijdend achter de sleurhut, waardoor anticiperen wel erg moeilijk wordt.

Vanaf de aanvaring met RWS bij hectometerpaal 77.6 ging het gestaag verder kruipend naar 79.1
Inmiddels was het 18:05 uur alwaar de ene rijstrook het ergste deed vermoeden.
Lang kijken naar de brancards mag dan niet.
Daar was de RWS'er maar nu als opjager (in het brabants opheuer).
Zie: http://www.limburghuis.nl/Interact/ln_wdb/LJ_WDB.htm
  • jaagbroor > drijver bij het werk, iemand die het wild opjaagt, opjager z. ook: jaagduvel
  • jaagduvel > iemand die andere mensen opjaagt bij het werk, opjager z. ook: jaagbroor

  • Bij hectometerpaal 100.0 (t.h.v. de Lucht) kwam Arrow Classic Rock met:
    http://nedtlyrics.nl/golden-earring/another-45-miles
    terwijl de file bij Hedel zich inmiddels had opgelost.
    En even later met:
    http://www.music-lyrics-chord.com/Eagles/263301-The_Long_Run.html
    Wat een timing!

    Voor Den Bosch ging de meute weer stropen.
    Dit werd een beetje laat opgemerkt door een gitzwarte mercedes, die met een vaartje van geschat 180 km voorbij zoefde. Hij moest flink de blokken in, waarna hij nog even een auto vanaf rechts inhaalde. Net als in de A2 versie van Davilex: http://nl.wikipedia.org/wiki/A2_Racer


    Een lang en inmiddels geen nieuw verhaal.
    Kortom de roadrunner was op het gewone tijdstip thuis.
    Niks aan de hand, toch?

    Maandag wordt het thuiswerken, de truckers hebben het gehad met Wouter Bos.
    Zie: http://www.geenstijl.nl/mt/archieven/2008/07/truckers_dreigen_nederland_te.html

    Truckers dreigen Nederland te kapen

    truckwijf.jpg

    Vanaf maandag gaan vrachtwagenchauffeurs wilde stakingen houden die Nederland moeten ontwrichten. Diesel is vandaag gestegen naar de 1,49 euro (1,2597 ex btw) en de chauffeurs zijn boos. De bedoeling is om random een snelweg uit te kiezen en van voor tot achter te blokkeren, tenminste als de dieselprijs niet heel snel verlaagd wordt, en dat er een compensatie komt en nog wat eisen. Natuurlijk gaat die prijs de komende weken alleen nog maar stijgen, zie deze grafiek(in pdf). Met name het vertrekkende vakantievolk zal de dupe zijn van deze sympathieke actie van chauffeurs, die blijkbaar het alleenrecht op benzineboosheid hebben. De kantelende kloodtzakken gaan vanaf maandag beginnen, maar dat kan net zo goed vanmiddag al zijn. Tja, vooral doen, gestreste gezinnen en vertrekkende burgermannetjes nog even extra pakken. Dat krijgt u de komende maanden weer op uw bord. Luxewagens die u afsnijden en niet laten invoegen en algehele vrachtwagen-irritatie-spelletjes. Er is maar één juiste plek om te protesteren, en dat is hierrr...

    Even voor alle duidelijkheid, de roadrunner heeft een diep respect voor de truckers.
    Dus: www.geenstijl.nl maakt zijn naam weer eens waar.

    Tot slot nog het leed wat internet heet:

    Bron: Firefox
    Daisy chain


    Zie: http://en.wikipedia.org/wiki/Daisy_chain_(electrical_engineering)
    In electrical and electronic engineering a daisy chain is a wiring scheme in which, for example, device A is wired to device B, device B is wired to device C, device C is wired to device D, et cetera. [1] Connections do not form webs (in the preceding example, device C cannot be directly connected to device A), nor do they loop back from the last device to the first. Daisy chains may be used for power, analog signals, digital data, or a combination thereof.

    De roadrunner twijfelt soms aan zichzelf (en aan alles ...).
    Op het werk (we noemen geen name) is er een puzzelprijs.
    Moeilijk te kraken.

    Denken in analogieën kan soms helpen.
    En jawel, de effort (bloed, zweet en tranen) heeft uiteindelijk geloond.
    Zoals bijna elke voldoening zal ook deze weer van korte duur zijn.

    Voor de Java fanatici, toch even de code, onder voorbehoud want elk probleem kent talloze oplossingen.
    Dit is er slechts één en niet al te hoogdravend:

    import java.io.BufferedReader;
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.io.InputStreamReader;
    import java.util.ArrayList;
    import java.util.Iterator;

    public class ReadFile {

    public static void main(String[] args) throws Exception {
    ReadFile readFile = new ReadFile();
    readFile.execute();
    System.exit(0);
    }

    private void execute() throws Exception {
    FileOutputStream fos = new FileOutputStream("out.txt");
    FileInputStream fis = new FileInputStream("names.csv");
    String line;
    InputStreamReader converter = new InputStreamReader(fis);
    BufferedReader in = new BufferedReader(converter);
    //save in list
    ArrayList list = new ArrayList();
    while (true) {
    line = in.readLine();
    if (line == null) {
    // end of file
    break;
    }
    // - >> blank, blank >> { so after Z
    line = line.replace('-', ' ').replace(' ', '{');
    list.add(new Person(line));
    }
    fis.close();

    Person person;
    String name;
    int length;
    String value;
    String nextValue;
    Person nextPerson;
    Iterator iterator;
    // write first name
    iterator = list.iterator();
    person = (Person) iterator.next();
    name = person.getName().replace('{', ' ');
    for (int j = 0; j < name.length(); j++) {
    fos.write(name.charAt(j));
    }
    fos.write('\n');
    iterator.remove();

    while (!list.isEmpty()) {
    iterator = list.iterator();
    length = person.getFirstName().length();
    nextPerson = null;
    nextValue = null;
    while (iterator.hasNext()) {
    person = (Person) iterator.next();
    if (person.getName().length() < length) {
    // name too short
    continue;
    }
    value = person.getName().substring(length - 1, length);
    // compare upper values
    if (nextPerson == null || value.toUpperCase().compareTo(nextValue.toUpperCase()) < 0) {
    nextPerson = person;
    nextValue = value;
    }
    }
    name = nextPerson.getName().replace('{', ' ');
    // write next name
    for (int j = 0; j < name.length(); j++) {
    fos.write(name.charAt(j));
    }
    fos.write('\n');
    person = nextPerson;
    list.remove(person);
    }

    fos.close();
    }

    private class Person {

    String firstName;
    String lastName;

    private Person(String line) {
    int i = line.indexOf(';');
    firstName = line.substring(0, i);
    lastName = line.substring(i + 1);
    }

    public String getFirstName() {
    return firstName;
    }

    public String getLastName() {
    return lastName;
    }

    public String getName() {
    return firstName + '{' + lastName;
    }
    }
    }

    De blogger sloopt de tabs, maar een code-beautify doet wonderen.

    Wednesday, July 02, 2008

    Niet alles is wat het lijkt

    Voorbeelden te over:
    http://www.nothingisasitseems.com/
    Lijkt heel wat, maar is (vrijwel) niets.

    Of Joel met zijn stelling "nothing is as simple as it seems".
    http://www.joelonsoftware.com/articles/NothingIsSimple.html
    Quote:
    There's another axiom in software engineering, which is, always try to reduce risk. One particularly important piece of risk to avoid is schedule risk, when something takes longer than expected. Schedule risk is bad because your boss yells at you, which makes you unhappy. If that's not enough motivation for you, the economic reason why schedule risk is bad is because you decided to do a feature based on information that it would take 1 week. Now that you realize that it has taken 20 weeks to accomplish, that decision might well have been wrong. Perhaps if you knew it was going to take 20 weeks, you would have made a different decision. The more wrong decisions you make, the more likely all those tote bags with your company logo will end up in the liquidator's warehouse while your ex-CEO mopes that "what sucks is, we weren't even successful enough to get mentioned on fuckedcompany when we shut down!"

    Ook http://www.fuckedcompany.com/ is niet wat het lijkt (of juist wel):
    Fuckedcompany is... temporarily fucked

    Of de bemande maanlanding.
    Of een goederentrein over de Betuwelijn.
    Hoewel vandaag heb ik die voor het eerst gezien, rijdend van oost naar west.
    En wel bij Deil (hoe kan het ook anders, rijdend over de A2).
    Ik dacht dat er vooral veel vanuit Rotterdam naar Duitsland zou gaan ...

    Deze wazige foto is een corpus delicti, debet aan een lekkende band.
    Hoe een punt van een schroef een vehikel van meer dan 1 ton tot stilstand kan brengen:


    En dan de Nederlandse taal vergeleken met bijvoorbeeld het Engels.
    Een voorbeeld:
    Na een gesprek de afsluiter "Bedankt" die steevast wordt beantwoord met "Geen dank".
    Dit is dan een Engelse versie:
    "Thanks", "Not at all, you're welcome!"

    De verbeterde Nederlandse versie zou kunnen zijn:
    "Bedankt", "Graag gedaan"

    Weer minder is:
    "Bedankt", "Geen moeite"

    Met de volgende kromme vertaling:
    "Thanks", "Don't mention it!" of "No trouble at all!"

    Taal en communicatie in het algemeen blijft een merkwaardig fenomeen.
    De roadrunner heeft nog een lange weg te gaan, voordat hij eindelijk eens van zijn fouten leert.

    Misschien is dat ook niet wat het lijkt, maar letten hij, of anderen in zijn omgeving, er meer dan gewoon op.
    Het een beïnvloedt het ander.

    Handig die spellingscontrole van Firefox.
    Zie: https://addons.mozilla.org/nl/firefox/browse/type:3
    Ziehier deze suggesties voor het woord roadrunner:


    Het moet niet gekker worden.
    Long time not seen


    Bron: http://www.tech-faq.com/lang/nl/blog/microsoft-corporation-then-and-now.html

    Tuesday, July 01, 2008

    AJAX of Comet?

    AJAX was nieuw voor mij.
    Comet is nu nieuw (althans voor mij).

    En staat de A in AJAX voor Asynchroon?
    En waarom kan AJAX dan synchroon gebruikt worden?
    En wanneer is dat dan beter?

    Vragen en nog eens vragen en met maar een conclusie:
    de roadrunner weet meer niet dan wel.
    Maar dat wist hij al.

    Comet is meer dan asynchroon, zie dit plaatje:

    Zie bijvoorbeeld: http://alex.dojotoolkit.org/?p=545

    Ook in de browser verschijnt er vaak een zandloper.
    Wat betekent dat de sessie geblokkeerd is, totdat de webserver klaar is met wat hij dan ook moest doen. En dat kan weleens veel tijd kosten. Zeker als de webapplicatie intensief met de database of het back-end moet babbelen.

    Als gebruiker vind ik de zandloper niet echt charmant.
    Een indicatie over hoe lang het nog ongeveer mag duren, zou prettig zijn.
    Dan koppelt het systeem terug dat het lekker bezig is.
    En niet onverhoopt "hangt".
    Maar hoe dit met AJAX te implementeren?
    Of is daarvoor Comet geschikter?

    In het plaatje leidt één Comet event tot talloze displays.
    Terwijl AJAX een causaal verband kent tussen input en display.

    Terwijl de roadrunner deze blog intikt, valt hem op dat tijdens (!) het intikken de spellingscontrole gebeurt en wel geheel ongemerkt (behalve dan dat tikfouten leiden tot rode onderstrepingen ...).
    Dit is de spellingscontrole van Firefox.
    Ik wist geeneens dat die er was!

    Asynchroon, het kan dus wel, maar nu nog het hoe ...