tobias.bloggt

wildes studenten- und kreatives agenturleben

Archiv für die Kategorie ‘agenturgeschichten




ebook_correctionsAs a part of my practical term in the past six months, I developed an XML-based workflow for automated E-Book-production. To be honest, we never thought about a revision or correction workflow. But the publishing-houses did! After delivering the produced epub-files to them we received the corrections and annotations via Fax – as shown in the image on the right side.

D’oh! We developed a really cool high-technology workflow and they put their reading-device on the copier, copied it, made their annotations on the paper and old-school-faxed it back to our office.

Hehe ^^ No comment… ;-)

–––––
Info: I’m studying printing and media technology and for my practical term I worked at a small publishing service provider, the pagina GmbH in Tübingen, Germany. With collegues I developed this really cool XML-EPUB-workflow with integrated automated font-subsetting. Whoever is interested in this issue, feel free to ask me or the guys at pagina…



E-Mails mit PHP zu versenden geht ja ansich ganz einfach und komfortabel. Interessant wird es jedoch, wenn Textmails mit manuellen Zeilenumbrüchen verschickt werden sollen.

Ein Zeilenumbruch wird im Mailtext beispielsweise wie folgt erzeugt:

$mailtext = "Ich bin ein Absatz.\n";
$mailtext.= "Und ich auch!";

Damit die Steuerzeichen \n, \r oder \t interpretiert werden müssen sie in doppelten Anführungszeichen stehen! Einfache Anführungszeichen im obigen Beispiel würden bewirken, dass das abschließende \n im E-Mail-Text ausgegeben wird.

Soll nun Text aus einer MySQL-Datenbank in die E-Mail fließen, und wurde dieser Text zuvor über ein HTML-<textarea>-Feld in der Datenbank gespeichert, werden plötzlich alle Datenbankinhalte mit doppelten Zeilenumbrüchen in der E-Mail dargestellt.

Grund dafür ist die Form des Zeilenumbruchs der beim Speichern in die Datenbank geschrieben wird. Und das ist bei der Übergabe des HTML-<textarea>-Feldes ein sogenannter “Windows-Zeilenumbruch” im Format \r\n. Normalerweise interpretieren die meisten Programme diese Umbruchs-Kombination (Carriage-Return + NewLine) als einen zusammenhängenden Umbruch, die gängigen E-Mail-Clients hingegen interpretieren \r\n als doppelten Zeilenumbruch. Auch unter Windows.

Um diese Missinterpretation zu umgehen sollte vor Versand der E-Mail der komplette E-Mail-Text nach dieser Zeichenkombination durchsucht werden. Am einfachsten geht dies mit einem Regulären Ausdruck der alle Vorkomnisse von \r\n durch \n ersetzt.

$mailtext = "Ich bin ein Absatz.\n";
$mailtext.= "Und ich auch! Nach mir kommt Datenbankinhalt.";
$mailtext.= $datenbankinhalt;
 
$mailtext = preg_replace("%\r\n%", "\n", $mailtext);



Vor einigen Monaten habe ich eine Lösung zum Upload von docx- und xslx-Dateien in Mediawiki-Wiki’s gepostet.

Inzwischen ist das E-Book in aller Munde, und natürlich soll man auch frei verfügbare E-Books im Wiki hochladen dürfen. Doch auch hier wird der MimeType wieder nicht richtig erkannt.

file -bi unter Linux liefert für ein E-Book im populären “EPUB”-Format den MimeType application/x-zip, PHP interpretiert jedoch als application/zip. Ganz richtig wäre übrigens application/epub+zip.

Um den EPUB-Upload zu gestatten muss also die Extension epub dem Array $wgFileExtensions in der LocalConfig.php hinzugefügt werden. Danach muss noch die Datei mime.types im Ordner /includes angepasst werden. Dazu muss lediglich die Zeile application/zip [...] um den Eintrag epub erweitert werden.




Wer viel mit CSS arbeitet und (“krasse”) tabellenfreie Web-Layouts erstellt, der wird nicht drumherum kommen, sich mit den CSS-Selektoren zu beschäftigen.
Inzwischen bin ich etwas XPATH-verwöhnt was Selektoren angeht, denn mit self, child, parent, descendant, descendant-or-self, ancestor, ancestor-or-self, preceding, following, preceding-sibling und following-sibling hat man dort alle, und damit meine ich wirklich ALLE, Möglichkeiten im XML-(Struktur-)Baum zu navigieren und Elemente zu selektieren.

Die Möglichkeiten in CSS sind dagegen eher bescheiden. Hier eine kurze Übersicht über die wichtigsten CSS-Selektoren:

  • klasse klasse2
    Selektiert klasse2 die sich *irgendwo* innerhalb von klasse befindet.
    Beispiel:

    <div class="klasse">
      <span class="klasse2">Dieser SPAN wird selektiert.
        <p class="klasse2">Dieser Absatz wird selektiert.</p>
      </span>
    </div>
  • klasse>klasse2
    Selektiert klasse2, wenn sich diese genau EINE Ebene unterhalb von klasse befindet.
    Beispiel:

    <div class="klasse">
      <span class="klasse2">Dieser SPAN wird selektiert!
        <p class="klasse2">Dieser Absatz wird NICHT selektiert.</p>
      </span>
    </div>
  • klasse*klasse2
    Selektiert klasse2, wenn sich diese genau ZWEI Ebenen unterhalb von klasse befindet.
    Beispiel:

    <div class="klasse">
      <span class="klasse2">Dieser SPAN wird NICHT selektiert.
        <p class="klasse2">Dieser Absatz wird selektiert.</p>
      </span>
    </div>
  • klasse+klasse2
    Selektiert klasse2, wenn sich diese direkt NACH klasse befindet.
    Beispiel:

    <div class="klasse">
      <span class="klasse2">Dieser SPAN wird NICHT selektiert.</span>
    </div>
    <div class="klasse2">
      Dafür wird dieses DIV selektiert.
    </div>

Was ich mir für CSS wirklich wünsche, ist ein parent-Selektor. Der würde viel Arbeit abnehmen! Ist aber in CSS3 leider nicht vorgesehen und bis CSS4 rauskommt könnten noch ein paar Jährchen vergehen. Schade…

CSS 4 You bietet auf zwei Seiten noch weitere Infos zum Umgang mit Selektoren.




Wir nehmen folgenden Fall an:

Es soll eine permanente Weiterleitung erfolgen von der alten URL http://www.domain.de/wiki/ nach http://wiki.domain.de/. Alle angeforderten Seiten und Verzeichnisse (beispielsweise index.php?title=Hauptseite) sollen ebenfalls weitergeleitet werden.

Am effektivsten wäre hier eine Weiterleitung mittels mod_rewrite, für Anfänger jedoch nicht ohne weiteres zu implementieren, und auch nur dann möglich, wenn der Webserver, sprich Apache dies erlaubt.

Eine Alternative dazu stellt das folgende kleine PHP-Script dar:

<?php
/**
 * Permanente Weiterleitung
 * @author Tobias Fischer / tobias (at) mediaversal (punkt) de
 * @date 2009-04-24
 */
 
$url = $PHP_SELF . '?' . $QUERY_STRING;
$url = str_replace('/wiki', '', $url);
 
header("Status: 301 Moved Permanently");
header("Location: http://wiki.domain.de" . $url);
 
exit;
?>

$PHP_SELF gibt das Verzeichnis und die aufgerufene Datei ab Domainebene zurück, in unserem Fall also /wiki/index.php. $QUERY_STRING liefert alle angehängten Variablen “nach dem Fragezeichen”.
Nun müssen wir diese beiden Fragmente nur noch zusammensetzen, daraus das aktuelle Arbeitsverzeichnis /wiki entfernen und an die neue URL http://wiki.domain.de/ anhängen.

Die Statusmeldung 301 teilt dem Browser oder auch eventuellen Suchmaschinen mit, dass die angeforderte Seite permanent umgezogen ist – 302 dagegen würde temporär umleiten.




    Semesterferien! :-)

    Füße hoch und chillen!

    tobias.twittert



tobias.bloggt

    Hej hej, jag heter Tobias och är tjugotre år gammal. Das, liebe Freunde der Sprachenkultur, war Schwedisch. Wie gesagt, mein Name ist Tobias und ich bin 23 Jahre alt. An der Hochschule der Medien in Stuttgart studiere ich im 7. Semester "Druck- und Medien­tech­no­logie". Anfang 2007 habe ich mich mit [mediaversal], einem kleinen aber feinen StartUp, selbstständig gemacht. Und was sonst noch so los ist erfahrt ihr hier im Blog!