Kategorien
Allgemein

Einfach Windows installieren

In dem Fall hilft das Tool nLite weiter. Mit diesem kann ein fehlender Treiber in die Boot-CD eingebaut werden. Das funktioniert wohl zumindest mit Windows 2000 und XP.

Vor allem dann ist dies nötig, wenn die neue Hardware kein Disketten Laufwerk hat, auf dem Windows Zusatztreiber erkennen würde. USB Sticks sind dem System scheinbar nicht gut genug.

Kategorien
Allgemein

Prototypenärger

Warum Prototypen nur in den seltensten Fällen sinn machen.

Nachdem ich vor einiger Zeit schon mal über einen Sprachwechselfehler in einem meiner Perl Skripte gestossen bin.

Ich hatte eine Funktion wie folgt deklariert:

sub func1() {
    my $var = shift;
    ...
}

Und der Perl Compiler mäkelte irgendwas vonwegen too many arguments… Klar das () weist Perl an, das diese Funktion keine Parameter bekommen darf. Also das () entfernt und alles war wieder gut.

Objekte und Prototypen

Dann bin ich jetzt über eine Code Stelle gestossen, die folgendermassen als Methode in einem Objekt deklariert war:

sub method1( $ ) {
    my $self = shift;
    ....
    my $var = shift;
    ...
}

Da wollte der Autor wohl festhalten, dass diese Methode nur einen Parameter annimmt, und hat das $var=shift später übersehen, oder hat sich gedacht, $self=shift würde vorher ausgewertet werden. Es ist aber so, dass in Methodenaufrufen die Protoypen ignoriert werden.

Als Funktion aufgerufen macht die method1() aber auch nicht das was sie soll, da $self mit hoher Wahrscheinlichkeit nicht den richtigen Inhlat hat.

Praktisch sind sie aber doch

Zum Beispiel um eine Funktion wie grep nachzubauen:

sub my_grep(&@) {
    my ($grepper, @list) = @_;
    my @result = ();
    foreach (@list) {
        push @result, $_
          if ($grepper->());
    }
    return @result;
}

Diese Funktion kann dann wie das eingebaute grep benutzt werden:

my @odd = my_grep { $_[0] % 2 } ( 1 .. 20 );
Kategorien
Allgemein

Mit neuen Zope Versionen wird alles besser

Im Grunde war die Migration der Kino-Seiten auf die neue Zope Version 2.10 ein Kinderspiel…

Aber dann kam die Kleinigkeit mit den Berechtigungen. Aber das war ja schnell umschifft. Doch dann kam wieder eine seltsame Fehlermeldung über irgendeinen AquireWrapper oder so.

Nach kurzem suchen habe ich dann des Rätsels Ursprung gefunden. Verwendet man in dtml-in ein sort und sortiert damit SQL Results und haben diese doppelte gleiche Einträge, so verschluckt sich der Sortieralgorithmus. Das Problem ist wohl schon länger bekannt, aber bisher hat sich noch niemand bereit gefunden, die vorgeschlagenen Lösungswege in Zope zu übernehmen.

Nun ja, wir konnten uns helfen, indem wir die SQL Abfrage zum Sortieren genutzt haben und das sort aus dem dtml-in rausgenommen haben.