• AdSense immernoch effektivstes Werbemittel

    Ob Zanox, AffiliNet oder adButler. AdSense ist aufgrund seiner enormen Reichweite immernoch das effektivste Werbemittel. In Bezug auf Abhängigkeit gegenüber Google ist es zwar schade, auf die Einnahmen verzichten will man jedoch selbstverständlich nicht. Nicht nur ich merkte das bei streamdrag, sondern hörte auch von vielen anderen Website-Betreibern, dass es, bis auf einige Ausnahmen, auch heute immernoch keine Alternative gibt. Tatsächlich effektiver sind Werbemittel, die eine ganz spezielle Zielgruppe haben, bspw. Handyangebote auf einem Prepaid-Blog. Doch selbst bei streamdrag wirkt die Spezialisierung gering, was vermutlich am Layout liegt. AdSense passt sich am besten an und bringt nach wie vor die meisten Klicks - schade eigentlich.

  • CSS Compressor - PHP-Klasse

    Für momentane Arbeiten an einem Projekt habe ich gerade eine PHP-klasse erstellt, die schnell, einfach und effektiv CSS-Dateien komprimiert. Als kleines Weihnachtsgeschenk stell ich sie hier für alle frei zur Verfügung, ist ja auch kein Hexenwerk. Viel Spaß damit, Nutzung ist uneingeschränkt.

    final class CSSCompressor {
    	public static function compressFile($filepath,$removeComments=false){
    		if(file_exists($filepath)){
    			$fgets = file_get_contents($filepath);
    			return self::compressContent($fgets,$removeComments);
    		}
    	}
     
    	public static function compressContent($content,$removeComments=false){
    		$fgc = str_replace(array("\r","\n","\t",'  '),'',$content);
    		$fgc = str_replace('; ',';',$fgc);
    		$fgc = str_replace('}',"}\r\n",$fgc);
     
    		if($removeComments===true) {
    			$fgc = preg_replace('/(\/\*.*\*\/)/mi','',$fgc);
    		}
     
    		return $fgc;
    	}
    }
  • nanum CMS - Screenshots

    Nach den vielen Anfragen wegen des nanum CMS habe ich heute mal ein paar Screenshots gemacht. Es sind nicht alle Funktionen gezeigt, aber die allermeisten. Viel Spaß beim Anschauen.

    Die Preise für die Nutzung des CMS variieren, für Schüler gibt es aber Ermäßigungen. Wer sich mal ein Angebot einholen will, kann mir einfach ne Mail schreiben.
    Bitte entschuldigt diese doofen Rahmen, die man teilweise sieht, habe es verpennt in Photoshop auszuschalten, aber es sollte ja nun weniger stören ;).

    Die Bilder:

  • Twitter Share Button

    Für ein geheimes Update, das die nächsten Tage zu StreamDrag kommt (nein, noch kein Komplettupdate) habe ich einen hübschen Twitter Button erstellt, der von Form und Stil sich auch sehr gut dem Facebook-Share-Button anpasst.

    Nutzungsbedingung:

    Der Button darf sowohl privat, als auch kommerziell frei genutzt werden. Bedingung ist jedoch ein Backlink zu diesem Blog oder diesem Artikel. Diese Nutzungsbedingung gilt sowohl für das Original, als auch die PSD.

    Hier der Button

    Twitter Share Button - tweet it!

    PSD-Datei Twitter Share Button

  • JavaScript im Hintergrund ausführen - Web Worker

    Workers, genauer noch Web Workers heißen sie und sind eine neue Technologie in Sachen JavaScript. Eine Implementierung seitens IE ist noch nicht vorhanden, ist aber früher oder später zu erwarten. Der Firefox beherrscht sie ab Version 3.5, der Seamonkey ab Version 2. Doch was ist ein Worker und wie funktioniert er?

    Der Worker an sich ist eine JavaScript-Klasse. Der Constructor lädt eine JavaScript-Datei im Hintergrund, wie folgt:

    1
    
    var myWorker = new Worker('src/javascript-file.js');

    Das tolle am Worker ist, dass er einfach im Hintergrund geladen werden kann und dort dann ausgeführt wird. Der Sinn eines Workers besteht also darin Hintergrundaktionen zu verarbeiten. Der effektive Sinn bzw. das Ziel von Workern ist aber eine bessere Strukturierung von Code. Während der Worker bspw. Berechnungen durchführt oder andere Algorithmen laufen lässt, bearbeiten die ganz normal implementierten JavaScript-Dateien bspw. den DOM oder Werten Rückgaben des Workers aus.

    Wichtig zu wissen: Komplexe mathematische Berechnungen blockieren nicht mehr die Website wenn Sie als Worker ausgeführt werden.

    Zum Verständnis des Prinzips habe ich ein kleines Schema erstellt:
    JavaScript Worker Schema



    Das heißt, das “Standard-JavaScript” und die Worker kommunizieren untereinander - und zwar mit einer ganz bestimmten Schnittstelle.
    Mit onmessage definieren wir die Funktion die aufgerufen wird, wenn der Worker mit uns reden will, der Worker also etwas sendet.

    1
    2
    3
    4
    
    var myWorker = new Worker('src/javascript-file.js');
    myWorker.onmessage = function(event){
      alert('Worker meldet: '+event.data);
    }

    Doch wie reden wir mit dem Worker? Schließlich wollen wir ihm Aufgaben geben. Das geschieht noch einfacher als das Empfangen:

    1
    
    myWorker.postMessage('Rede mit mir!');

    Ok, nun kommunizieren wir mit dem Worker. Doch woher weiß der Worker selbst, dass wir mit ihm reden? Die onmessage-Funktion gibt es hierzu zweimal. Einmal im eigentlichen Script (siehe oben) um Daten zu empfangen. Desweiteren aber natürlich auch im Worker (javascript-file.js) selbst:

    1
    2
    3
    4
    5
    
    onmessage = function(event){
      if(event.data == 'Rede mit mir!'){
        postMessage('Hier bin ich, der Worker persönlich!');
      }
    }

    Natürlich kann der Worker auch Fehlerbehandlung. Ich persönlich wollte euch das Thema kurz und bündig näher bringen, für mehr Informationen dienen die Links unten. Der Worker ist an sich eine tolle neue Implementierung in JavaScript, funktioniert aber bisher nur in Firefox, Safari und ähnlichen neuen/modernen Browsern (Webkit, Gecko).

    Für mehr Informationen über den Worker und seine Möglichkeiten einfach mal folgende Quellen anklicken:
    https://developer.mozilla.org/En/Using_web_workers
    http://ejohn.org/blog/web-workers/
    http://www.phphatesme.com/blog/webentwicklung/arbeitstier-browser-web-workers/

  • ISPEM Verschlüsselung - Aktualisierung, Sicherheitsupdate

    Ich habe bereits einmal über die ISPEM-Methode zur Verschlüsselung von Passwörtern berichtet. Dank einem aufmerksamen Leser wurde ich auf ein kritisches Leck aufmerksam gemacht. Dies fiel mir nicht auf, da ich in der Zwischenzeit bereits eine verbesserte ISPEM-Verschlüsselung programmiert und in meine Projekte implementiert hatte.

    Wer irgendwo ISPEM implementiert hat muss dringend das Update auf das neue ISPEM durchführen (siehe Code-Abschnitt unten)

    Was ISPEM ist und wodurch es sich auszeichnet findet ihr im Beitrag ISPEM-Verschlüsselung.

    Hier das sichere Script:

    define('ISPEM_FCONST_SPL','your_unknown_value1',true);
    define('ISPEM_SCONST_SPL','your_unknown_value2',true);
     
    function ISPEM_encrypt($clear_password){
       $cr	= str_rot13($clear_password);
       $cr  = base64_encode(ISPEM_FCONST_SPL.'!'.$cr);
       $cr  = substr(md5('::/'.$clear_password.'/::'.ISPEM_SCONST_SPL),0,13).md5($cr.strlen($clear_password));
     
       return $cr; #liefert 45-Charakter-String, sehr sicher
    }
  • Mozilla Prism - doch kein AIR-Konkurrent

    Prism Mozilla Firefox ExtensionDie Tage wurde es mal wieder Zeit zu schauen, was Mozilla so arbeitet, schließlich werden sie dafür bezahlt (ja auch Open-Source-Entwickler müssen nicht auf der Straße leben). Viel neues gabs nicht, bis auf eine neuere Version von Prism, das mittlerweile nahtlos in Firefox integriert werden kann, betriebssystemunabhängig. Vor einigen Monaten übte ich Kritik an Prism, als ein sehr schlechter AIR-Abklatsch, doch mittlerweile kristallisiert sich heraus, dass Prism das gar nicht ist und gar nicht sein will.

    Das Prinzip ist grundsätzlich dasselbe: AIR und Prism ermöglichen Webapplikationen direkt vom Desktop aus bzw. im Desktop zu starten. Doch es gibt einen wesentlichen Unterschied bei den beiden Plattformen:  Adobe’s AIR ist sehr sehr mächtig und lässt Entwickler tatsächlich echte, eigenständige Applikationen erstellen, die aufs OS zugreifen kann. Man kann solch eine Applikation dann runterladen und installieren ähnlich wie wenn man unter Windows mit einer .exe oder unter Linux mit einer .deb installiert.

    Prism geht jedoch einen anderen Weg: Alles was per Browser zugänglich ist kann zur Applikation gemacht werden. Das Prinzip ist super-simpel: Eine Art superabgespeckter Firefox läuft in Prism. Ist man nun auf einer Seite wie bspw. Google Mail, fügt man diese als Applikation einfach in Prism hinzu - nun kann man Google Mail direkt mit einer Verknüpfung auf dem Desktop starten. Dabei wird ein Prism-Fenster geöffnet in dem Google Mail läuft (genau wie im Browser auch). Der Riesenvorteil: Keine Browserabhängigkeit und die erweiterte Schnittstelle für Entwickler in Prism.

    Wenn ihr nun Google Mail laufen habt in Prism, gerade surft und den Firefox schließt, ist euer Prism-Fenster trotzdem noch da. Prism ist also eine Art Browser für Dinge die ständig da sein sollen.

    Es ist etwas schwer zu erklären, aber umso leichter zu bedienen, wenn man es heruntergeladen hat (am besten als Firefox-Erweiterung). Probiert es doch mal aus. Ich persönlich nutze es bspw. für Streamdrag und kann damit die ganze Zeit per SD Musik hören, auch wenn der Browser zu ist ;).

  • nanum Sensory - ein CMS das überzeugt

    nanum Sensory LoginfensterSeit vielen Monaten schon arbeite ich an an einem neuen innovativen CM-System für kleine bis mittlere Websites. Zum Einsatz kommt dabei mein eigenes PHP-Framework Senso (daher auch nanum Sensory).

    Das CMS wurde mittlerweile fertiggestellt und gilt nun als final in der Version 1.05.

    Folgende Grundfunktionen sind im CMS verankert:

    • Inhalte einfach verwalten
    • News- / Blog-System
    • Bildergalerien erstellen und verwalten

    Weitere Funktionen / Eigenschaften des Systems sind:

    • sehr  einfaches, intuitives Interface
    • stark AJAX-orientiertes System
    • Drag’n'Drop - Systeme
    • Profileinstellungen / Themaauswahl
    • Benutzerverwaltung (für Admins)
    • Dateiuploads mit Typ-Erkennung
    • selbstauflösendes Update-System um das System aktuell zu halten
    • Pluginsystem für Entwickler: Filter- und Standalone-Plugins können nathlos integriert werden

    Das CMS baut sehr stark auf Sicherheit auf. Neue Sicherheitssysteme verhindern Datenklau (Loginklau) oder Bruteforce-Logins. Nach 5 falschen Login-Versuchen gibt es eine Zeit-Sperre für den entsprechenden Nutzer. Das System ist sehr gut geeignet für private Seiten und mittlere Firmenwebsites.

    Das nanum CMS wird wie auch schon das alte CM-System nur intern vertrieben. Bei Interesse reicht eine E-Mail an mich, dann können wir über Möglichkeiten der Nutzung reden. Ich würde mich freuen.

  • SchülerVZ Selbstmordskandal - das Dunkel wird zum Spotlight

    Zum Thema: SchülerVZ - Crawler-Programmierer begeht Selbstmord in der JVA

    Endlich. Viele haben meinen Beitrag und meine Meinung und Gedanken zum Thema runtergezogen und als absurd belächelt mit Worten ähnlich: Er hat die Leute dort erpresst und das ist nun mal eine Straftat und dafür gehört er eingesperrt.

    Doch nun scheinen sich genau die Dinge zu bestätigen, die ich vermutete. SchülerVZ habe eindeutige, wenn auch zahlenlose Angebote gemacht gegenüber dem vermeintlichen Hacker, der in Wahrheit nur öffentlich zugängliche Daten und eben keine geheimen Daten mithilfe seines Crawlers gesammelt habe.
    Liegt hier eine Verschwörung vor? Ich weiß es nicht, ich kann es nicht wissen. Meine persönliche Meinung dazu äußere ich besser nicht weiter, man darf ja heutzutage eh nichts mehr sagen, wie ich bereits schmerzlich erfahren musste.

    In jedem Fall sind die VZNetzwerke für mich persönlich das Allerletzte und ich werde alles tun um zu vermeiden jemals wieder mit jenen in Kontakt zu kommen.

    Aus Abmahnangst verweise ich weiter nur auf folgende Quelle:  Strafanzeige gegen SchülerVZ-Mitarbeiter (heise.de)

  • SchülerVZ - Crawler-Programmierer begeht Selbstmord in der JVA

    Viele von euch werden es schon wissen, die Nachricht kommt meinerseits so spät, weil ich nicht genau wusste, wie es zu berichten war, ich musste erst Herr über die Lage werden, bevor ich meine Meinung dazu äußere.

    Der Programmierer des Crawlers, der Daten sammelte in SchülerVZ (siehe Nachrichten “Datenskandal bei Schülervz”) beging in der JVA Selbstmord. Vermutlich war er etwas labil und konnte nicht ertragen was ihm gerade widerfährt. Gut, das ist die eine Seite. Aber die Frage ist doch: Wie kann es so weit kommen?

    Eine rein objektive Betrachtung stellt die ganze Sache mit subjektivem Empfinden unter ein schlechtes Licht, sowohl für die Holtzbrinck-Gruppe (*-VZ) als auch für unseren Rechtsstaat:

    Wie es aussieht war als als versierter Programmierer relativ gut möglich Daten bei SchülerVZ auszuspionieren / zu crawlen. Daten, die früher oder später also jeder DAU sammeln konnte (social Hacking, etc.), konnte der verstorbene 20-jährige also etwas schneller sammeln. Normalerweise sind Firmen froh, wenn es dann Hacker gibt, die Lücken herausgeben und zahlen oft bereitwillig dafür, es gibt ja sogar Firmen, die Hacker anstellen und für so etwas bezahlen. War es denn so, dass der Betroffene tatsächlich in die Räume von StudiVZ ging und dort gleich 80.000 Euro gefordert hat? Gab es hier keinen Disput vorher, keine Verhandlungen?. Wie dem auch sei, hat er früher oder später eine Summe von 80.000 Euro gefordert, andernfalls würde er die Daten anderweitig verkaufen. Das ist natürlich kein Kavaliersdelikt, keine Frage, aber dafür gleich in die JVA zu stecken finde ich maßlos übertrieben. Der Staat wird immer korrupter, ich fühle mich inklusive Vorratsdatenspeicherung schon die ganze Zeit, als hätte die Stasi ein Revival erlebt.

    Wenn Jugendliche jemanden krankenhaus reif schlagen, dann wird das in unserer Gesellschaft als nicht so schlimm wahrgenommen wie wenn jemand ein paar Daten sammelt, die im Internet sowieso für jeden bereitstehen. Das ist doch absurd.

    Und: gab es bei dem 20-jährigen etwa Fluchtgefahr oder Ähnliches oder wieso wurde der gleich in die JVA gesteckt? Steht die Holtzbrinck-Gruppe nun in einer Mitschuld am tot? Wenn meine Daten nicht sicher sind, wer ist denn dann dafür verantwortlich? Der Hacker oder Holtzbrinck?

    Ich boykottiere *-VZ.