Sprawdziłem dziś http://pinkaccordions.homelinux.org/wblog
za pomocą
xmllinta
i ponieważ się okazało, że są błędy postanowiłem skończyć z partyzantką.
Od dziś kilka stron będę weryfikował automatem, np. w taki sposób:
SGML_CATALOG_FILES=~/etc/xml/catalog xmllint --catalogs --noout --valid http://pinkaccordions.homelinux.org/
Jeżeli korzystamy z domyślnego /etc/xml/catalog
, to
podanie SGML_CATALOG_FILES
jest zbędne.
W tymże pliku ~/etc/xml/catalog
dodałem wpisy:
<uri name="http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd" uri="file:///home/tomek/etc/xml/dtd/xhtml/1.1/xhtml11.dtd" /> <uri name="http://www.w3.org/TR/ruby/xhtml-ruby-1.mod" uri="file:///home/tomek/etc/xml/dtd/xhtml/1.1/xhtml-ruby-1.mod" /> <rewriteSystem systemIdStartString="http://www.w3.org/TR/xhtml-modularization/DTD/" rewritePrefix="file:///home/tomek/etc/xml/dtd/xhtml/1.1/" /> <rewriteURI uriStartString="http://www.w3.org/TR/xhtml-modularization/DTD/" rewritePrefix="file:///home/tomek/etc/xml/dtd/xhtml/1.1/" />
Uwaga: pierwsze dwa wiersze nie wystarczą,
bo xhtml11.dtd
dołącza całą chmarę innych plików --
konkretnie 35 plików .mod
oraz 3 .ent
. Wszystkie te pliki skopiowałem do
/home/tomek/etc/xml/dtd/xhtml/1.1/
Teraz wywołuję xmllint
za pomocą prostego skryptu:
#!/bin/bash # Sprawdzanie poprawnosci wybranych stron na pinkaccordions.homelinux.org LOGFILE=~/Logs/WWW/xhtml-errors.log XMLCATALOG=~/etc/xml/catalog LINT=/usr/bin/xmllint TODAY=`date` for url in 'http://pinkaccordions.homelinux.org/wblog' 'http://pinkaccordions.homelinux.org/' ... do SGML_CATALOG_FILES=$XMLCATALOG $LINT --catalogs --noout --valid $url if [ "$?" -ne 0 ] ; then echo "Error found in $url [$TODAY]" >> $LOGFILE fi done
Ewentualnie można też tak:
#!/usr/bin/perl # Sprawdzanie poprawnosci za pomoca `W3C Markup Validation Service' use LWP::Simple; $LOGFILE='/home/tomek/Logs/WWW/xhtml-errors.log'; my $today = localtime; open LOG, ">>$LOGFILE"; my @URLs = ( 'http://validator.w3.org/check?uri=http%3A%2F%2Fpinkaccordions.homelinux.org%2Fwblog', 'http://validator.w3.org/check?uri=http%3A%2F%2Fpinkaccordions.homelinux.org', ... ); foreach $url (@URLs) { print STDERR "Sprawdzam: $url...\n"; $content = get("$url"); if ($content =~ /Information on validation.*Congratulations/m) { print STDERR "$url is OK\n" } else { print LOG "$today => errors found => $url\n" ; } } close (LOG);
W3C ma też API do serwisu walidacyjnego, ale skomplikowane to API jest...
Program smartpls, który służy do modelowania ścieżkowego cząstkową metodą najmniejszych kwadratów (PLS path modelling), jest typowym przykładem aplikacji napisanej przez amatora:-). Program jest za free, ale autor nie udostępnia kodu źródłowego (pewnie się wstydzi).
W systemie FC8 działał a w FC11 przestał działać, zgłaszając na starcie błąd:
lookup error: ~/spls/configuration/org.eclipse.osgi/bundles/58/1/.cp/libswt-mozilla-gtk-3232.so: \ undefined symbol: _ZN4nsID5ParseEPKc
Pomogło doinstalowanie starego Firefoxa (w wersji 2). Przykładowo jeżeli
stary FF znajduje się w katalogu ~/bin/ff2
, to program działa uruchomiony
w następujący sposób:
MOZILLA_FIVE_HOME=~/bin/ff2 spls
Napisałem o ww. problemie na forum spls -- może autor się przejmie i skompiluje spls w wersji korzystającej z FF3; albo --co też jest bardzo prawdopodobne -- zmiany umożliwiające kompilację z FF3 są tak duże, że mu się nie będzie chciało...