:::: MENU ::::

WebDevExp

Meine Erfahrungen in der Webentwicklerwelt

Blog

  • Aug 13 / 2013
  • 0
Javascript, NodeJS

NodeJS Modul: Watermarker

Ich suchte eine Zeit lang nach einem Tool, um möglichst schnell und einfach einen kompletten Ordner mit Bildern darin auf eine maximale Seitenlänge (je nach Format: Höhe oder Breite) zu beschneiden und ein Wasserzeichen (in eine der Ecken oder mittig) daraufzulegen.
Continue Reading

  • Mrz 07 / 2013
  • 1
Allgemein, Webserver

Thunderbird Autokonfiguration für die eigene Domain

Ihr kennt das, ihr betreibt einen eigenen E-Mail-Server und bei jedem Einrichten eines Postfachs im E-Mail-Client eures Vertrauens, dürft ihr SMTP/IMAP Adresse, sowie SSL/TLS Einstellungen von Hand vornehmen, weil Thundebird diese Daten nicht automatisch ermitteln kann (bzw. es versucht, es aber meistens nicht stimmt, spätestens beim Format des Usernames).

Thunderbird bietet die Möglichkeit, unter der Domain „autoconfig.domain.de“ eine XML Datei unter dem Pfad /mail/config-v1.1.xml, für genau diese Einstellungen anzulegen. Andere Mail-Client beachten diese Datei mittlerweile auch (fragt mich bitte nicht welche).

Continue Reading

  • Feb 01 / 2013
  • 0
Linux allgemein, php

Exception: Zend Extension ./filename.php does not exist

Was hat das zu bedeuten?

Wenn man sich auf der Konsole befindet, ruft man ein php-Skript entweder via „php ./filename.php“ auf oder fügt in der ersten Zeile eine Interpreterdefinition ein: „#!/usr/bin/php“, danach beginnt das Skript, wie gewohnt, mit Wenn man die Datei nun ausführbar macht (chmod +x filename.php) kann man sie direkt via ./filename.php aufrufen, genau das ist es, was ich mit normalerweise mit cron-jobs mache.
Continue Reading

  • Nov 21 / 2012
  • 0
php

Bildmanipulation: Seitenverhältnisse beibehalten

An sich eine einfache Aufgabe, aber da ich immer wieder damit kollidiere und mich jedes mal neu reindenken darf (ja ich weiß, es gibt Libs dafür, aber diese sind nicht in jedem Projekt verfügbar), dachte ich mir, den Code jetzt einfach mal hier festzuhalten.

In diesem speziellen Fall, geht es darum, dass ein hochgeladen wird und die Seitenverhältnisse einer „Box“ angepasst werden müssen.
Es gibt zwei Faktoren, die das ein wenig komplizieren.
1. Das Bild ist in Pixeln definiert, die Box in mm, die „einfache Variante“ (maxWidth und maxHeight als Input) geht also nicht
2. Die „Box“ darf weder breiter noch höher, nur schmaler oder flacher werden

$imageRatio = $imageWidth / $imageHeight; //pixel
$elementRatio = $element->getWidth() / $element->getHeight(); //mm
if ($imageRatio == $elementRatio) {
    continue;
} elseif (($imageRatio > 1 && $elementRatio > 1) || ($imageRatio < 1 && $elementRatio < 1)) {
    //landscape+landscape OR portrait+portrait
    if ($imageRatio > $elementRatio) {
        $newHeight = $element->getWidth() / $imageRatio;
    } else {
        $newWidth = $element->getHeight() * $imageRatio;
    }
} elseif ($imageRatio >= 1 && $elementRatio <= 1) {
    //landscape/square + portrait/square
    $newHeight = $element->getWidth() / $imageRatio;
} elseif ($imageRatio <= 1 && $elementRatio >= 1) {
    //portrait/square + landscape/square
    $newWidth = $element->getHeight() * $imageRatio;
}
$element->setWidth($newWidth);
$element->setHeight($newHeight);
  • Nov 03 / 2010
  • 1
php

Developers Shame Day 2010

PHP hates me Autor Nils nimmt am Developers-Shame-Day 2010 teil und ich dachte mir, ich suche auch mal in den Untiefen meines alten Codes nach einem Schmuckstück. Ursprünglich kam die Idee zum DevShameDay von „Cem, dem PHP-Hacker“. Leider ging in den Jahren einiges verloren, aber ich denke, dass hier ist schlecht genug, um sich dafür zu schämen. Ich Schätze das ist um 2004 entstanden und lieferte Termine bzw. Events von einem bestimmten Tag, das ganze für einen Webkalender ala Google-Calendar. Was ich noch erwähnen sollte…. die Funktion wurde für jeden sichtbaren Kalendertag aufgerufen!

function getevents($year, $month, $day)
    {
        global $SELF;
        $month = (strlen($month) < 2) ? '0' . $month : $month;
        $day = (strlen($day) < 2) ? '0' . $day : $day;
        $str = "$year-$month-$day";
        $strx = "$month-$day";
        $sql = "
           SELECT e.name as ename,
                e.description as edescr,
                e.id as eid,
                t.color as tcolor,
                e.time_start as time_start,
                e.time_end as time_end,
                e.remember as rem,
                e.date_start as date_start,
                e.date_end as date_end,
                t.description as tdescription,
                t.showtime as showtime
           FROM cal_entry e, cal_types t
           WHERE e.types_id = t.id
             AND (e.date_start <= '$str'
             AND ( e.date_end >= '$str' AND e.date_end IS NOT NULL OR e.date_start = '$str' AND e.date_end IS NULL )
             OR(t.id = 1 AND right(e.date_start,5) = '$strx'))
           ORDER BY e.time_start, t.prio
         ";
        $res = mysql_query($sql);
        $out = "$day.$month.";
        while ($row = mysql_fetch_array($res)) {
            $tmp = "";
            $tmp .= $row["ename"];
            $starta = explode("-", $row["date_start"]);
            $outstart = $starta[2] . "." . $starta[1] . "." . $starta[0];
            $enda = explode("-", $row["date_end"]);
            $outend = $enda[2] . "." . $enda[1] . "." . $enda[0];
            $divbody = "";
            if ($row["date_end"] != '' && $row["date_start"] != $row["date_end"]) {
                $divbody .= "";
            } else {
                $divbody .= "Am:$outstart";
            }
            if ($row["showtime"]) {
                if (($row["date_end"] == $row["date_start"] || $row["date_end"] == '') && $row["time_end"] != '') {
                    $divbody .= "";
                    $divbody .= "";
                } elseif ($row["date_start"] < $row["date_end"] && $row["date_start"] == $str && $row["time_start"] != '') {
                    $divbody .= "";
                } elseif ($row["date_start"] < $row["date_end"] && $row["date_end"] == $str && $row["time_end"] != '') {
                    $divbody .= "";
                } elseif (($row["date_end"] == $row["date_start"] || $row["date_end"] == '') && $row["time_end"] == '') {
                    $divbody .= "";
                }
            }
            $rem = ($row["rem"] == true) ? "EMail Erinnerung aktiv" : "EMail Erinnerung inaktiv";
            $divbody .= "
                Von:	$outstart
                Bis:	$outend
                Von:	" . $row["time_start"] . " Uhr
                Bis:	" . $row["time_end"] . " Uhr
                Ab:	" . $row["time_start"] . " Uhr
                Bis:	" . $row["time_end"] . " Uhr
                Ab:	" . $row["time_start"] . " Uhr
            "; 
            $div = ''; 
            $tmp .= "";
            $out .= $div.$tmp;
        }
        return $out;
    }
  • Aug 24 / 2010
  • 0
Webserver

lighttpd: Alle Subdomains auf www.domain.tld umleiten

Ich stand vor kurzem vor dem Problem, das alle Subdomains, die ein Benutzer eingeben könnte, auf www.example.com umleiten sollten.

Aus Googlesicht ist das gut, weil so doppelter Inhalt vermieden wird und für den Benutzer ist es einfach schöner.

Im Internet habe ich einige Beispiele gefunden, wie man www.example.com auf example.com und umgekehrt umleitet, aber keine generelle Lösung. Die Hostdefinition matcht *example.com und *.example.de, weitere sind ohne weiteres möglich.

Continue Reading

  • Aug 01 / 2010
  • 3
php

HTML zu PDF umwandeln, endlich „einfach“ (Plattformunabhängig)

Mal wieder auf der Suche nach einer sinnvollen HTML2PDF Lösung, bin ich auf wkhtmltopdf gestoßen.

Das Tool nutzt Webkit im internen Backend und kann sogar CSS3 rendern. Die Installation unter MaxOSX und Linux ist absolut simpel: runterladen, ablegen, fertig. Unter Windows wird hier noch ein Installationsprozess durchgeführt, über den ich aktuell leider nichts sagen kann (bisher nicht getestet).

Um das Tool auf einer Webseite zu nutzen, habe ich mir ne kleine Klasse geschrieben, die HTML-Code als Input akzeptiert und mir den Pfad der fertigen PDF-Datei zurückliefert.

Continue Reading

  • Jun 28 / 2010
  • 2
php

Iterator oder IteratorAggregated Interface nutzen?

PHP bietet das Iterator Interface an, um Objekte direkt via foreach zu iterieren.

class MyClass implements Interator {
  private $array;
}
 
$obj = new MyClass();
foreach($obj as $key =&gt; $val){
  ...
}

Continue Reading

Seiten:123456