JavaScript-Datei im Theme-Editor sichtbar machen

Wer JavaScript-Dateien in seinem WordPress-Blog verwenden möchte, der möchte diese Dateien eventuell auch über den eingebauten Theme-Editor bearbeiten. Das Problem ist allerdings, dass der Theme-Editor solche Dateien nicht auflistet die in Unterverzeichnissen liegen oder deren Dateinamen nicht auf .css oder .php enden. In diesem Artikel zeige ich eine Möglichkeit, dieses Problem in drei Schritten zu umgehen.

  1. Verschiebe die Datei aus dem Unterverzeichnis direkt in das Wurzelverzeichnis deines Themes oder Child-Themes.
  2. Ändere die Endung der Datei auf .php.
  3. Schreibe zu Beginn der Datei folgenden PHP-Befehl:
    <?php
    header("Content-type: text/javascript; charset=UTF-8");
    ?>

    Mit diesem Befehl sendet PHP an den Browser, dass es sich um eine JavaScript-Datei handelt. Wenn vom Server keine (oder falsche) Informationen über den Inhalt der Datei gesendet würden, dann würde insbesondere Firefox diese Datei ignorieren. Solltest Du beim Erstellen der JavaScript-Datei einen anderen Zeichensatz als UTF-8 verwendet haben, musst Du die Angabe das charset entsprechend ändern.

JavaScript und jQuery in einem WordPress-Blog verwenden

Wie man JavaScript in einem WordPress-Blog einbindet, erschließt sich dem Anfängen nicht ohne weiteres. Insbesondere dann, wenn man die Bibliothek jQuery für seine Skripte verwenden möchte. In diesem Artikel werde ich zunächst zeigen, wie man JavaScript direkt in den Quelltext einfügt. Im zweiten Teil zeige ich, wie man JavaScript-Dateien in einen WordPress-Blog einbaut.

Direkter Einbau in den Quelltext

Es wird oftmals davon abgeraten, Skripte direkt in den Quelltext einzubauen. Dennoch werde ich diese Methode kurz vorstellen, um einen Fallstrick beim Einbau von jQuery in WordPress-Blogs zu zeigen.

Das folgende JavaScript kann direkt in den Quelltext einen Artikels oder einer Seite kopiert werden. Beim neu laden der Seite wird dann ein Fenster mit der Nachricht „JavaScript funktioniert!“ angezeigt.

<script>
alert('JavaScript funktioniert!');
</script>

In WordPress-Blogs wird jQuery im No Conflict Mode gestartet (siehe auch Blog von Matthew Ruddy). Daher funktioniert das $-Zeichen als Alias für jQuery() nicht mehr. An den entsprechenden Stellen muss man jQuery() verwenden.

Im folgenden Beispiel wird beim Klicken auf den Text jedes Mal das Wort „neu“ vor den eigentlichen Text gestellt:

<p id="meinTest">Klicke auf diesen Text.</p>
<script>
  jQuery("#meinTest").click(function(){
    jQuery(this).before("neu ");
  });
</script>

Um das Dollarzeichen wieder als Alias für jQuery() in den eigenen Skripten verwenden zu können, muss man beim registrieren seiner Funktionen (mittels jQuery(document).ready) der ersten Funktion das Dollarzeichen als Parameter mitliefern.

<p id="meinTest">Klick auf diesen Text</p>
<script>
jQuery(document).ready(function($) {
  $("#meinTest").click(function(){
    $(this).before("neu ");
  });
})
</script>

Einbinden von Skript-Dateien

Wenn man eigene JavaScript-Dateien einbauen möchte, sollte man die von WordPress zur Verfügung gestellten Funktionen nutzen. Mit ihnen kann man relativ leicht seine Skripte hinzuladen und aktivieren. Zudem stellt man sicher, dass alle benötigten Skript-Dateien (z.B. jQuery) rechtzeitig und in der richtigen Reihenfolge geladen werden.

  1. Zunächst erstellt man sich eine JavaScript-Datei (z.B. meinScript.js) mit der gewünschten Funktion. Durch das folgende Skript werden die H1-Überschriften versteckt, sobald man auf sie klickt.
    jQuery(document).ready(function($) {
      $("h1").click(function(){
        $(this).hide();
      });
    });

    Die Datei meinScript.js habe ich in den Ordner js/ meines eigenen Child-Themes gelegt (siehe auch StackOverflow).

  2. Im Anschluss kann man die Datei zu WordPress hinzufügen, indem man folgenden Quelltext in seine functions.php-Datei schreibt:
    function mein_script_laden() {
    wp_enqueue_script(
      // Name des Scripts (benötigt man z.B. zum Entfernen, etc.)
        'handlerMeinesScripts',
      // Ort der Script-Datei
        get_stylesheet_directory_uri() . '/js/meinScript.js',
      // Liste der Scripts, welche von der Script-Datei benötigt werden.
      // In diesem Falle das von Wordpress geladene jqeury
        array('jquery')
    );
    }
     
    add_action( 'wp_enqueue_scripts', 'mein_script_laden' );

    Da ich ein Child-Theme verwende, habe ich zur Ermittlung des Theme-Pfades die Funktion get_stylesheet_directory_uri() verwendet. Erstellt man ein komplett eigenes Theme, sollte man die Funktion get_template_directory_uri() verwenden.

  3. In Deinem Blog kannst Du auch andere Versionen von jQuery einbinden. Siehe hierzu: Die netzialisten.de und den Blog von Wlad Leirich.
  4. Du kannst auch die JavaScript-Datei im Theme-Editor sichtbar machen. Danach hast Du die Möglichkeit, die JavaScript-Datei direkt aus WordPress heraus zu editieren.

LaTeX: Im PDF anzeigen, dass ein Eintrag zum Index hinzugefügt wurde

Wenn man einen langen Text schreibt, vergisst man gelegentlich (an der richtigen Stelle) einen Eintrag zum Glossar hinzuzufügen. Bei der späteren Durchsicht des PDF-Dokumentes kann man leider nicht erkennen, an welchen Stellen Einträge zum Glossar hinzugefügt wurden. Das kann man dadurch ändern, dass man den Befehl \index neu definiert (siehe auch StackExchange).

Durch Änderung des Befehls \index kann im Text angezeigt werden, an welchen Stellen ein Eintrag zum Index hinzugefügt wurde.
Durch Änderung des Befehls \index kann im Text angezeigt werden, an welchen Stellen ein Eintrag zum Index hinzugefügt wurde.
  1. Am Aufruf des Befehls \index innerhalb des Textes muss nichts geändert werden:

    Der Begriff Allel\index{allel} wird zum Index hinzugefügt.
  2. Zunächst muss der ursprüngliche \index-Befehl zwischengespeichert werden (hier in \indexAlt):

    \let\indexAlt\index
  3. Im Anschluss kann mit Hilfe des gespeicherten alten Index-Befehls der Index-Befehl neu definiert werden. In diesem Falle wird im Text ein schwarzes Quadrat an jeder Stelle angezeigt, an der ein Eintrag zum Index hinzugefügt wird:

    \def\index{$\blacksquare$\indexAlt}

    Der Befehl \blacksquare stammt aus dem Paket amssymb und kann über folgenden Befehl in der Präambel verfügbar gemacht werden:

    \usepackage{amssymb}

Transluzente Polygone in R-Plots einzeichnen

Manchmal möchte man Bereiche einer Grafik (z.B. einen Meßbereich) farblich hervorheben. Das kann man z.B. durch Polygone erreichen. Wichtig ist dabei, dass keiner der Datenpunkte vollständig überdeckt wird. Entweder zeichnet man die Polygone vor dem plotten der Datenpunkte ein, oder man verwendet teilweise durchsichtige Polygone (transluzente Polygone), durch die die Datenpunkte immer noch zu sehen sind.

nerv_test

Diese Transluzenz erreicht man in R dadurch, dass man einen achtstelligen hexadezimalen RGB-Farbwert verwendet. Die ersten 6 Stellen sind wie gewohnt für die drei Farben Rot, Grün und Blau reserviert. Die letzten beiden Stellen bestimmen die Deckfraft der zuvor angegebenen Farbe. Der Wert „00“ steht dabei für „vollständig durchsichtig (Farbe unsichtbar)“ und „ff“ steht für „100% deckend (undurchsichtig)“.

Im folgenden Beispiel werden Daten (x, y) geplottet.

x = 1:100
y = x + runif(n=length(x), min=-5, max=+5)
# Simulierte Standardabweichung:
sd = 10 + runif(n=length(x), min=-1, max=+1)
plot(x,y, las=1)

Die Standardabweichung (sd) soll in diesem Beispiel nicht als Fehlerbalken, sondern als farbiger Bereich um die Kurve geplottet werden. Das ist besonders dann hilfreich, wenn man eine hohe Dichte an Meßpunkten hat. Dazu werden der Funktion polygon() die x und y-Koordinaten übergeben. Für den Bereich „zuzüglich Standardabweichung“ (oberhalb der Messwerte; y+sd) gehen wir vom kleinsten zum größten x-Wert (x); für den Bereich „abzüglich Standardabweichung“ (unterhalb der Messwerte; y-sd) gehen wir vom größten zum kleinsten x-Wert (rv(x), und damit auch rev(y-sd)). Wird beschreiben das Polygon also in einer Rechtskurve.

# Bereiche der simulierten Standardabweichung einzeichnen
polygon(
  x = c(x, rev(x))
  , y = c(y+sd, rev(y-sd))
  , col = "#cc000033"
)

Auf diese Weise kann man auch einfache Formen, wie z.B. ein Rechteck, einfügen:

# Rechteck einzeichnen
polygon(
  x = c(40, 40, 60, 60)
  , y = c(-10, 200, 200, -10)
  , col = "#0000cc33"
)

Absturz von Ubuntu mit der Fehlermeldung „GPU lockup“

Kürzlich habe ich Ubuntu 13.10 auf meinem Rechner installiert. Beim Aufruf der Dash ist das Sysem allerdings das ein oder andere Mal komplett eingefroren oder abgestürzt. Nach einiger Zeit erschien folgende Fehlermeldung:

GPU lockup – switching to software fbcon

Der Begriff „GPU“ in der Fehlermeldung hat mir zu verstehen gegeben, dass es sich um ein Problem mit meiner Grafikkarte handelt. Da ich eine Nvidia Grafikkarte habe, habe ich über das Paket nvidia-current die proprietären Treiber installiert. Seither läuft das System ohne Absturz.

Regressionsgerade in einen doppelt-logarithmischen Plot eintragen

Wer Potenzgesetze (PowerLaws) in Daten entdecken möchte, bestimmt die Steigung in einem Graphen mit logarithmischen Achsen (log-log-Plot). In der Regel möchte man diese Steigung dann in der Graphik als Regressionsgerade darstellen. In R ist genau diese Darstellung nicht ganz einfach, da die Funktion abline() hier versagt. Im folgenden Artikel möchte ich zeigen, wie man die Schätzung seines Modells dennoch in den Plot eintragen kann.

Wir haben Daten, die einem Potenzgesetz folgen (mit etwas statistischer Schwankung).

x = c(1:150)
y = x^-.5 * 155 + (runif(length(x), min=-3, max=3))

Diese Daten plotten wir in einer Graphik mit zwei logarithmischen Achsen.

plot(x, y, log="xy", cex=.5)

Da wir ein Potenzgesetz vermuten, berechnen wir die Parameter (Steigung und Y-Achsenabschnitt) des linearen Modells (lm()) der logarithmierten Daten (siehe auch Stackoverflow):

model = lm(log(y) ~ log(x))
model

In einem doppelt-logarithmischen Plot gibt es natürlich keinen Y-Achsenabschnitt (die Null wird nie erreicht). Beim Aufruf der Funktion abline(model) wird die Regressionsgerade (besonders bei verschobenen Funktionen) an der falschen Stelle dargestellt. Daher muss man für sein lineares Modell Werte vorhersagen (mit predict() bzw. predict.lm), die man im Anschluss in den Exponenten nimmt und als Linie (lines()) zum Plot hinzufügt (siehe auch Stackoverflow: Beitrag 1 und Beitrag 2).

# Schätzung für 2 Punkte machen
neuX=c(1e-10,1e10)
lines(neuX, exp(predict(model, newdata=list(x=neuX))) ,col="blue", type="o", pch=2)
 
# Schätzung für Datenpunkte machen
lines(x, exp(predict(model, newdata=list(x=x))), col="red", type="o", pch=4)

nerv_test

Hinweise: Der Variablenname in der Liste von newdata muss genau der selbe sein, wie der Name der Variablen, die beim Aufruf des linearen Modells verwendet wurde.

  1. Hat man seine Daten z.B. in einem data.frame gespeichert, sollte man das lineare Modell mittels with() aufrufen, anstatt die Bereiche mit Hilfe des $-Selektors auszuwählen.
  2. Wenn man das lineare Modell nur für einen Teil seiner Daten verwenden möchte, so sollte man die Option subset= von lm() verwenden, anstatt Teile des Vectors mit Hilfe der eckigen Klammern auszuwählen.

Die folgenden Beispiele zeigen zwei Mögliche Schreibweisen, eine lineare Regression für die die Datensätze 40 bis 80 einzuzeichnen. Die Daten dafür sind:

1
2
3
4
x = c(1:150)
y = x^-.5 * 155 + (runif(length(x), min=-3, max=3))
daten = data.frame(x,y)
range = c(40:80)

Beispiel 1: with() wird nur für den Aufruf des lm() verwendet. die Ergebnisse der Regression werden in model gespeichert.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
plot(daten$x, daten$y, log="xy", cex=.5)
model = with(
  data = daten,
  expr = { model = lm(log(y) ~ log(x), subset=range); model }
)
model
 
lines(
  x[range]
  , exp(predict(model, newdata=list(x=x[range])))
  , col="red"
  , type="o"
  , pch=4
)

Beispiel 2: with() wird für die gesamte Behandlung der Daten verwendet (plot(), lm(), lines()).

1
2
3
4
5
6
7
8
9
10
11
12
13
14
with(
  data = daten,
  expr = {
    plot(x, y, log="xy", cex=.5)
    model = lm(log(y) ~ log(x), subset=range)
    lines(
      x[range]
      , exp(predict(model, newdata=list(x=x[range])))
      , col="red"
      , type="o"
      , pch=4
    )
  }
)

Dateien in ein komprimiertes Archiv verschieben

In meinen Simulationen werden oftmals viele Dateien erzeugt. Damit bin ich schon das ein oder andere Mal an die Grenzen für die Zahl der erlaubten Dateien und den verfügbaren Speicherplatz (quota) gestoßen. Abgesehen davon dauert es länger, wenn man anstatt einer großen Datei viele kleine Dateien herunterlädt.

Daher verschiebe ich die Dateien regelmäßig in ein gepacktes tar-Archiv. Im folgenden Befehl werden alle Dateien mit der Endung .plot in ein neu erstelltes Archiv plot.tar.gz verschoben.

tar --remove-files -czf plot.tar.gz *.plot
–remove-files
Diese Option sorgt dafür, dass die Orginal-Dateien gelöscht werden, sobald sie ins Archiv kopiert wurden.
-c
Diese Option sorgt dafür, dass ein neues Archiv erzeugt wird. Der Name des Archivs wird mit der Option -f angegeben.
Alternativ können mit der Option -r Dateien zu einem bestehenden Archiv hinzugefügt werden:

tar --remove-files -rf plot.tar *.plot

Archive, an die man Dateien anhängen möchte, dürfen allerdings nicht gepackt sein (siehe -z). Ansonsten bekommt man folgende Fehlermeldung:

tar: Cannot update compressed archives
tar: Error is not recoverable: exiting now
-z
Diese Option sorgt dafür, dass das Archiv mit Hilfe von gzip komprimiert wird.
-f
Diese Option legt den Namen des zu behandelnden Archivs fest. Der Name muss (mit einem Leerzeichen getrennt) direkt nach -f stehen.

Generell ist die Reihenfolge der Optionen egal. Allerdings sollte man darauf achten, dass bei Optionen die einen Wert erwarten (z.B. -f), der Wert weiterhin hinter der Option zu finden ist. Zudem müssen die hinzugefügten Dateien ganz am Ende stehen. Hier einige Beispiele für gültige und ungültige Befehle:

# Korrekt:
tar --remove-files -czf plot.tar.gz *.plot
tar --remove-files -c -z -f plot.tar.gz *.plot
tar -f plot.tar.gz --remove-files -zc *.plot
 
# Fehlerhaft:
# Die Namen der zu archivierenden Dateien stehen nicht am Ende
tar *.plot --remove-files -czf plot.tar.gz
# Der Name des Archivs steht nicht hinter -f
tar --remove-files -cfz plot.tar.gz *.plot

Hinweis: Auf Mac OS X-Systemen (oder FreeBSD) ist meistens BSDtar installiert (tar --version ergibt z.B. „bsdtar 2.6.2 – libarchive 2.6.2“). Im Gegensatz zu GNU tar gibt es bei BSDtar die Option --remove-files nicht.

Dateien aus verschlüsseltem Home-Verzeichnis kopieren und löschen

Ich habe mir kürzlich eine neue Festplatte gekauft und darauf ein neues Ubuntu eingerichtet. Nun möchte ich die Daten von meiner alten Festplatte herunterladen und auf die neue Festplatte spielen. Das Problem ist allerdings, dass ich mein Home-Verzeichnis auf der alten Festplatte mit Hilfe von eCryptfs verschlüsselt hatte. In diesem Artikel erkläre ich schrittweise, wie man dennoch die Daten aus einem verschlüsselten Verzeichnis verschieben, kopieren und löschen kann.

  1. Zunächst ist es hilfreich, wenn man sein altes Login-Passwort griffbereit hat. Alternative kann man auch das eCryptfs Mount-Passwort verwenden. Das hat man sich im Optimalfall nach der Installation notiert, oder zu einem späteren Zeitpunkt mit Hilfe des folgenden Befehls angeschaut:

    ecryptfs-unwrap-passphrase
  2. Im Anschluss muss man das Laufwerk/Speichermedium mounten, auf dem sich das verschlüsselte Verzeichnis befindet. Tipp: interne Festplatten und deren Partitionen sind nicht automatisch gemountet – auch nicht, wenn das Symbol in der Seitenleiste von Ubuntu angezeigt wird. In dem Falle muss man einfach einmal auf das Symbol klicken.
  3. Daraufhin gibt man im Terminal einen der beiden folgenden Befehle ein (mit Root-Rechten!; siehe auch UbuntuUsers Forum):

    # Verzeichnis nur mit Leserechten einbinden
    sudo ecryptfs-recover-private
     
    # Verzeichnis mit Schreibrechten einbinden
    # in "man ecryptfs-recover-private" ist die Option --rw etwas versteckt genannt
    sudo ecryptfs-recover-private --rw

    eCryptfs durchsucht nun alle gemounteten Medien nach eCryptfs-verschlüsselten Verzeichnissen. Das kann eine Weile dauern.

    INFO: Searching for encrypted private directories (this might take a while)…

  4. Hat eCryptfs die Suche beendet, wird für jedes gefundene Verzeichnis gefragt, ob es eingebunden werden soll. Dabei sollte man beachten, dass auch das Verzeichnis des angemeldeten Nutzers gefunden wird (in meinem Falle also nicht nur das alte, sondern auch das neue Home-Verzeichnis).

    INFO: Found [/media/neuerusername/XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX/.ecryptfs/alterusername/.Private].

    Nun wird man zunächst nach seinem Login-Passwort gefragt:

    INFO: Found your wrapped-passphrase
    Do you know your LOGIN passphrase? [Y/n]

    Falls man dieses nicht kennt, wird man nach dem (meist 32-stelligen) Mount-Passwort gefragt:

    INFO: To recover this directory, you MUST have your original MOUNT passphrase.
    INFO: When you first setup your encrypted private directory, you were told to record
    INFO: your MOUNT passphrase.
    INFO: It should be 32 characters long, consisting of [0-9] and [a-f].

    Enter your MOUNT passphrase:

  5. Hat man eines der beiden Passwörter korrekt eingegeben, so wird das Verzeichnis innerhalb des Ordners /tmp eingehängt:

    INFO: Success! Private data mounted at [/tmp/ecryptfs.PW48rluR].

  6. Nun kann man das Verzeichnis im Datei-Browser öffnen – entweder durch klicken, oder durch den Start von nautilus (mit dem Verzeichnis als Parameter) aus dem Terminal heraus:

    nautilus /tmp/ecryptfs.PW48rluR
  7. Hinweis: Sollten sich in dem Verzeichnis nur Dateien befinden, die z.B. mit ECRYPTFS_FNEK_ENCRYPTED. beginnen, hat man das Mount-Passwort sehr wahrscheinlich falsch eingegeben.

Werbung aus der Ubuntu-Dash entfernen

Wenn man in das Suchfeld der Dash einen Begriff eingibt, wird nicht nur auf der Festplatte gesucht, sondern auch im Internet. Das finde ich persönlich im Bezug auf der Datenschutz sehr fragwürdig. Im folgenden Artikel zeige ich, wie man diese Werbung ganz leicht deaktivieren kann.

Gibt man in die Dash einen Suchbegriff ein, wird standardmäßig Werbung für den Kauf von Musik angezeigt.
Gibt man in die Dash einen Suchbegriff ein, wird standardmäßig Werbung für den Kauf von Musik angezeigt.

In der aktuellen Version von Ubuntu (13.10: Saucy Salamander) wird zum Beispiel Werbung für Musik angezeigt. In früheren Versionen scheint es Werbung für Amazon gewesen zu sein (siehe UbuntuUsers Wiki). Diese Werbung wird durch Unity-Lenses in die Dash integriert. Es gibt nun zwei Möglichkeiten diese Werbung aus der Dash zu verbannen:

  1. Online-Suche in den Ubuntu-Einstellungen deaktivieren
  2. Verantwortliche Unity-Lenses deinstallieren

Online-Suche deaktivieren

Die Weitergabe des Suchbegriffes an Online-Services kann in den Ubuntu-Einstellungen deaktiviert werden. Dazu gehst du einfach auf „Systemeinstellungen -> Privatsphäre -> Suchergebnisse -> Online-Suchergebnisse“ und deaktivierst diese.

Deaktivierung der Online-Suchergebnisse in der englischsprachigen Version von Ubuntu.
Deaktivierung der Online-Suchergebnisse in der englischsprachigen Version von Ubuntu.

Das ist auch der Weg, der in der Legal Notice von Ubuntu vorgeschlagen wird:

Online Search
You may restrict your dash so that we don’t send searches to third parties and you don’t receive online search results. To do this go to the Privacy panel and toggle the ‘Include online search results’ option to off. The Privacy panel can be found in your System Settings or via a dash search. For a current list of our selected third parties, please see www.ubuntu.com/privacypolicy/thirdparties.

Unity Lenses deinstallieren

In der zweiten Variante deinstallierst Du einfach die verantwortlichen Unity Lenses.

  • unity-lens-shopping – war laut UbuntuUsers für die Amazon-Werbung verantwortlich
  • unity-scope-musicstores – Dieses Paket erweitert unity-lens-music um die Möglichkeit Musik online zu kaufen

Ubuntu ISO-Dateien nach dem Download überprüfen

Nach dem Download von Ubuntu (oder anderer Dateien aus dem Internet) überprüfe ich immer, ob die Datei(en) korrekt heruntergeladen wurde(n). Eine Möglichkeit ist, die MD5-Summe der ISO-Dateien zu berechnen.

Unter Linux steht dazu der Befehl md5sum zur Verfügung

1
2
3
4
# MD5-Summen aller *.iso-Dateien berechnen und in md5sums.txt schreiben:
md5sum *.iso > md5sums.txt
# Inhalt der Datei anzeigen:
cat md5sums.txt

Als Ausgabe bekommt man z.B.:

8d72e2db7e72e13813731eab37a14d26  ubuntu-13.04-desktop-amd64.iso
5d5d1a7da2a0659b163d4f8bd70fbe6f  ubuntu-13.04-desktop-i386.iso
21ec41563ff34da27d4a0b56f2680c4f  ubuntu-13.10-desktop-amd64.iso
d0508f909c2c71d96aeac5efb0329b33  ubuntu-13.10-desktop-i386.iso

Unter MacOSX steht dazu der Befehl md5 zur Verfügung

1
2
3
4
# MD5-Summen aller *.iso-Dateien berechnen und in md5sums.txt schreiben:
md5 *.iso > md5sums.txt
# Inhalt der Datei anzeigen:
cat md5sums.txt

Als Ausgabe bekommt man z.B.:

MD5 (ubuntu-13.04-desktop-amd64.iso) = 8d72e2db7e72e13813731eab37a14d26
MD5 (ubuntu-13.04-desktop-i386.iso) = 5d5d1a7da2a0659b163d4f8bd70fbe6f
MD5 (ubuntu-13.10-desktop-amd64.iso) = 21ec41563ff34da27d4a0b56f2680c4f
MD5 (ubuntu-13.10-desktop-i386.iso) = d0508f909c2c71d96aeac5efb0329b33

Nun muss man nur noch die ermittelten Summen mit den erwarteten Summen vergleichen. Leider werden auf der Downloadseite von Ubuntu nicht mehr standardmäßig die MD5-Testsummen bereitgestellt. Allerdings gibt es eine Seite mit allen bisherigen Testsummen für Ubuntu.