Kategorien
JavaScript kinetic.js

Redo / Undo Class für kinetic.js

Für den Einbau einer Redo und Undo-History Funktion in ein Porgramm zu integrieren, benötigt man nur die folgende Klasse und muss an den passenden Zeitpunkten die makeHistory() funktion aufrufen:

history = new History(stage, layer);
histoy.makeHistory();
function History(stage, layer){

    var historyStep = 0;
    var history = Array();
    var layer = layer;
    var stage = stage;

    this.makeHistory = function() {
        console.log("make history. History Items:");
        var json = layer.toJSON();
        history.push(json);
        if (historyStep < history.length) {
            historyStep = history.length - 1;
        }
        this.logStage();
    }
    this.undoHistory = function() {
        if (historyStep > 0) {
            console.log("undo history. History Items:");
            historyStep--;
            layer.destroy();
            layer = Kinetic.Node.create(history[historyStep], 'history-container');

            stage.add(layer);
            this.logStage();

            stage.draw();
        }
    }

    this.redoHistory = function() {

        if (historyStep < history.length - 1) {
            console.log("redo history. History Items:");
            historyStep++;
            layer.destroy();
            layer = Kinetic.Node.create(history[historyStep], 'history-container');
            stage.add(layer);
            this.logStage();
            stage.draw();
        }
    }
    this.logStage = function(){
        console.log("Layer has " + layer.getChildren().length + " children");
        console.log(layer.getChildren());
        console.log("History length: " + history.length + " items");
        console.log("historyStep is " + historyStep);
    }
}
Kategorien
JavaScript

Umrechnung von Bogenmaß (Radians) zu Grad in Javascript

Die folgenden Funktionen rechnen von Bogenmaß (Radians) in Grad um und anders herum:

function degreeToRadians($degree)
{
    return $degree * Math.PI / 180;
}

function radiansToDegrees($radian)
{
        return $radian * 180/ Math.PI;
}

 

Kategorien
Amazon MWS PHP

PHP überprüfen, ob ein String eine valide Asin ist

Um zu überprüfen, ob ein String eine valide Asin ist, muss man die 2 möglichen Regeln für Asins überprüfen:

  • ein „B“ gefolgt von 2 Zahlen und 7 alphanumerischen Werten
  • eine spezial ISBN-Vairiante: 9 Zahlen und am Ende entweder ein „X“ oder eine weitere Zahl (sehr selten)

Der passende reguläre Ausdruck in einer Funktion gekapselt in PHP ist:

function isAsin($string){
    $ptn = "/B[0-9]{2}[0-9A-Z]{7}|[0-9]{9}(X|0-9])/";
    if(preg_match($ptn, $string, $matches)){
        return true;
    }
}

Zum Testen habe ich folgenden Code verwendet:

$testAsins = array("B223213FCF","232342342X", "A223213FCF");
foreach ($testAsins as $testAsin)
{
    if(isAsin($testAsin)){
        echo $testAsin." is ASIN"."<br>";
    }
}

Ausgabe des Skripts ist:

B223213FCF is ASIN
232342342X is ASIN
Kategorien
PHP

PHP Design Patterns

Das Verständnis und die Anwendung von Design Patterns gehören in der fortgeschrittenen Programmierung zum guten Ton. Der Sinn für die Verwendung von Design Patterns ist die Software erweiterbar zu halten und auch Jahre später noch ohne großen Aufwand an neue Anforderungen anpassen zu können.

Die folgenden Ausführungen sind aus dem Standardwerk zu dem Thema „PHP Design Patterns“ aus dem O’Reilly Verlag entnommen (ab Kapitel 3), was ich nur jedem PHP Programmierer ans Herz legen kann:

Ein paar interessante Beispiele will ich im Folgenden daraus kurz vorstellen:

Fluent Interfaces

Fluent Interfaces dienen dazu, den Code einer Klasse für andere Entwickler leichter verständlich zu halten und damit indirekt auch Kommentare zu sparen.

Ein Beispiel das viele kennen ist ein ORM Mapper, wie Propel oder Doctrin, beim dem Queries wie folgt zusammengebaut werden:

$orm = new Orm();
$orm->select(array("id", "name"))->from("myTable")->where("id=1");

Einen solchen flüssigen Code erreicht man, wenn mit Fluent Interfaces arbeitet und das Object der Klasse immer wieder zurückt gibt am Ende jedes Methodenaufrufes:

Kategorien
WordPress

WordPress Paragraph Tags werden nicht eingefügt

Man kann sehr einfach über das Problem stolpern, dass die <p>-Tags (Paragrapgh-Tags) nicht automatisch im Blog eingefügt werden.

Um das Problem zu lösen, musste man einfach die Hook vorher ausführen, die die Paragraph Tags setzt:

$content = get_the_content();

echo  apply_filters('the_content', $content);

Dies ergab sich dadurch, dass der Content noch nach iso kodiert werden musste. Ansosnten wäre die Funktion the_content() die richtige Wahl gewesen, die das automatisch erledigt.

Dies is bei mir passiert, bei der Verwendung von WordPress ohne ein Theme sondern nur als Content-Lieferant mittels:

define('WP_USE_THEMES', false);
Kategorien
Server Administration

Plesk Webseiten auf anderen VHost verschieben

Um eine Webseite mit Datenbank erfolgreich auf einen anderen VHost (Virtual Hosts) umzuziehen, muss man

  1. die FTP-Einstellungen ändern
  2. Innerhalb des Projektes nach dem Pfad „/var/www/vhosts“ suchen und anpassen auf den neuen Pfad
  3. die Projekt-Dateien per FTP in das neue Verzeichnis kopieren
  4. die Datenbank per Plesk umziehen, was nicht so einfach ist, weil es keine doppelten DB-User-Namen und Datenbank-Namen geben kann. Deswegen als erstes eine vollständige Kopie der Datenbank erzeugen namens „MeinName_backup“, danach die alte Datenbank löschen. Dann kann die „MeinName_backup“ kopiert werden üpber Plesk auf einen anderen VHost unter dem alten Namen. Danach kann der Datenbank-User angelegt werden.
  5. Cronjobs müssen auch umgezogen werden und der Pfad „/var/www/vhosts“ angepasst werden.
Kategorien
Versicherung

Private Altervorsorge für Freelancer und Selbstständige

Aus meine Start-Up Seminar an der Uni mit sehr kompetenten Versicherungs-Maklern habe ich zum Thema private Altervorsorge folgende sehr interessante Punkte mitgenommen:

  • die private Altervorsorge kann im vorzeitigen Todesfall an Angehörige ausgezahlt werden
  • die Rente wird bis zum Tod gezahlt, ab Beginn des Rentenalters
  • mann sollte 20% des Brutto-Einkommens zurücklegen, wie die gesetzliche Altersvorsorge von aktuell 19,9% zum Vergleich
  • bei einer private Altervorsorge sollte die vorraussichtliche Rentenzahlung über aktuell 1000€ liegen, weil ansonsten Sozialhilfe bezogen werden kann
  • ein Inflationsausgleich muss vorhanden sein, 1000€ sind in 40 Jahren nur noch 100€ wert ohne Inflationsausgleich (plakativ gesagt)
Kategorien
Versicherung

Berufsunfähigkeitsversicherung für Selbstständige

Ein paar wichtige Facts über die private Berufsunfähigkeitsversicherung aus meinem Start-Up Gründer Seminar an der Uni. Die Informationen gelten sowohl für Arbeitsnehmer als auch Selbständige/Freelancer, weil es keine gesetzliche Berufsunfähigkeitsversicherung gibt.

  • die Berufsunfähigkeitsversicherung ist nur privat versicherbar
  • die Berufsunfähigkeitsversicherung sollte nicht mit einer Rentenversicherung kombiniert werden – es entstehen kurioser Weise mehr Kosten dadurch und eine Rentenversicherung kann nicht einfach ausgesetzt werden
  • die Berufsunfähigkeitsversicherung kann steuerlich komplett abgesetzt werden als Vorsorge-Aufwendung
Kategorien
Versicherung

Private oder gesetzliche Krankenversicherung für IT-Freelancer?

Die Antwort für die meisten IT-Freelancer lautet: private Krankenversicherung. Eine Ausnahme gibt es, dazu am Ende mehr. In meinem Uni-Start-Up Kurs habe ich wichtige Informationen mitnehmen können über Krankenversicherungen für Freiberufler und Unternehmer.

Vorteile und Nachteile der gesetzlichen Krankenversicherung für Selbstständige allgemein

Vorteile

  • Kinder sind beitragsfrei mitversichert bis zu einem Verdienst von 50T€, darüber fallen 130€/Monat und Kind an
  • es gibt auch Zusatzversicherungen z.B. für Brille, Zahnersatz usw. mit denen das Leistungsspektrum an das der privaten Krankenversicherung angenähert werden kann

Nachteile

  • der Beitrag zur gesetzlichen Krankenversicherung wird nach dem Verdienst berechnet (Solidaritätsprinzip), was sich nachteilig für besser Verdienende auswirkt
  • es gibt schlechtere Leistungen für das Geld – längere Wartezeiten, weniger Behandlungen und Zeit beim Arzt

Vorteile und Nachteile der privaten Krankenversicherung für Selbstständige allgemein

Kategorien
Versicherung

betriebliche Haftpflicht Versicherung für IT-Freelancer/Freiberufler

Auf einem Workshop über Verischerungen für Selbstständige an meiner Uni habe ich Folgendes mitgenommen:

Wichtig ist die Betriebsbeschreibung beim Abschluss der Versicherung, dort sollte möglichst viel aufgeführt werden, was der Betrieb/Freiberufler leistet. Bei mir sind das z.B:

  • SEO
  • Hosting von Webseiten
  • Programmierung für Kunden
  • Betreiben von eigenen Webseiten
  • Bloggen
  • Betreiben von Online Portalen mit freiberuflichen Redakteuren – city-checkers.de

Im Schadensfall überprüft die Versicherung als erstes, ob in der Betriebsbeschreibung ein solcher Fall abgedeckt ist und zahlt nicht, auch wenn es in den Vertragsunterlagen steht. Man sollte also nicht zu wordkarg damit umgehen.