Javascript ist Toll!

31. Dezember 2014 - 13:12

[Perl] CGI::param im Listkontext

Da ein angeblicher Perl Bug sogar beim 31C3 für "Erheiterung" gesorgt hat muss ich als Laie und langjähriger Perlnutzer hier mal meinen Senf dazu abgeben.

Das ist kein Perl Bug! Oder ein 20 year old vulernability.

Als ich versuchte diesen Fehler nachzuvollziehen, fand ich es unverständlich, dass es professionelle Programmierer gibt, die diese Funktion so einsetzen das sie eine Lücke wird.

Denn im Grunde stimmt die Aussage das wenn die Methode CGI::param() in einem unbekannten Kontext benutzt wird, diese eine Liste zurück gibt und Dank der Flexibilität von Perl - die jedem Perlprogrammierer bekannt sein müsste - diese auch zu einem Hash erweitert werden kann. Das führte dazu, dass in Bugzilla ein schwerwiegende Sicherheitslücke gefunden wurde.

Das ist eine krasse Lücke, da sie zwei schwerwiegende Programmierfehler der Bugzilla Entwickler offenbart.

Diese beiden grundsätzlichen Paradigmen hätten diesen wirklich Bug verhindert.

Wenn ich diesen Code programmiert hätte, würde der Code so aussehen und tut es auch überall wo ich CGI Parameter direkt an eine HASH Element übergebe:

perl
my $otheruser = Bugzilla::User->create({
    login_name => $login_name, 
    realname   => $cgi->param('realname') || '', 
    cryptpassword => $password});

So wird verhindert, dass Perl sich beschwert wenn kein Parameter realname existiert. Etwas Konkreter hier ein Beispiel:

perl
#!/usr/bin/perl
use strict;
use warnings;
use Data::Dumper;
use CGI;
use CGI::Carp qw(fatalsToBrowser warningsToBrowser);
warningsToBrowser(1);
BEGIN {
    print "content-type:text/plain\n\n";
}
my $cgi = CGI->new;
my $otheruser = {
    login_name => 'test', 
    realname   => $cgi->param('realname'), 
    cryptpassword => 'test'};
 
print Dumper $otheruser;

Wenn dieses Skript aufgerufen wird erscheint eine Warnung:

 warning: Odd number of elements in anonymous hash at /home/struppi/projekte/perl/test.pl line 15. 

Diese Warnung wird mit der Variante die ich nutze verhindert nd wenn dieses Skript mit mehreren Parametern realname aufgerufen wird, wird immer nur der erste Parameter genommen. Es ist also alles in Ordnung und nichts pasiert.

Daher halte ich den hämischen Tonfall in diesen Vortrag für unangemessen, da dies ein Fehler der Programmierer war und nicht von Perl. Die weiteren Kritikpunkte an Perl in dem Vortrag verstehe ich nicht. Für mich ist die Art der Auflösung der Listen völlig normal. Wenn jemand nicht mit Perl vertraut ist, mag das anders sein, aber ich erwarte es so, wie es auf den Folien des Vortrag als "reality" bezeichnet wird und nicht wie er es erwartet.

Kategorie: Internet / Comments (0) / 135 mal gelesen
24. März 2014 - 19:02

Gimp 2.8 Photoshop Tweaks

Bei meinem Umstieg von WindowsXP auf Linux war eine grosse Hürde ein passendes Grafikprogramm zu findenNicht weil ich soviel davon brauche, eher im gegenteil. Unter Windows nuzte ich zuletzt PaintShop Pro 6. Ein uraltes Programm aus der Jahrtausendwende.

Aber es konnte alles das, was ich brauche. Fotos verkleinern, komprimieren und konvertieren von Grafiken. Und das sehr schnell und einfach. für einen Webbastler wie mich reicht das, da ich nie irgendwelche schicken Glossy Elemente zaubern könnte. Selbst einfache Farbverläufen sehen bei mir nicht gut aus und wenn ich dann noch erzähle, dass ich mal wegen Kunst sitzen geblieben bin, ist klar warum ich kein tolles Grafikprogramm brauche :) .

Lange Rede, kurzer Sinn: Durch den Umstieg auf Linux musste ich mich an Gimp gewöhnen und tat mich schwer mit den vielen schwebenden Fenstern. Nun hat endlich mal jemand sich hingesetzt und die Oberfläche so umgebaut, dass sie Photoshop ähneln soll (habe ich noch nie benutzt), was den Umgang mit Gimp für mich deutlich verbessert.

Laut Autor funktioniert das mit MacOS und Windows, ich habe es mit meinem Debian 7 getestet.


Screenshot von Gimp mit der Erweiterung Gimp 2.8 Photoshop Tweaks

Download

Gimp 2.8 Photoshop Tweaks

Kategorie: linux / Comments (0) / 438 mal gelesen
3. Februar 2014 - 18:44

WordPress verbindet sich ungefragt mit google.com

Ich teste gerade lokal eine neuere Version (3.8.1) von WordPress und als ich in das Netzwerkpanel schaue, sehe ich das WordPress sich bei jedem Aufruf mit fonts.googleais.com verbindet. Egal ob im Backend oder auf der Seite. Selbst wenn ich ein komplett leeres Theme benutze, wird diese Seite aufgerufen. Ich weiß zwar nicht welchen Zweck das erfüllt, ich will das nicht und brauche es auch nicht!

Daher musste ich erstmal eine längere Suche starten, um den Hook zu finden, mit dem ich das einbinden abschalten kann.

Open Sans entfernen

Der folgende Code entfernt den Aufruf. Er muss in die functions.php des Theme.

php
//dispable google fonts open sans
add_action( 'wp_enqueue_scripts', 'remove_open_sans', 11 );
add_action( 'admin_enqueue_scripts', 'remove_open_sans' );
function remove_open_sans() {
	wp_deregister_style( 'open-sans' );
        wp_register_style( 'open-sans', false );
}
Kategorie: Wordpress / Comments (3) / 518 mal gelesen
27. Mai 2013 - 17:52

LED Chareditor (2)

LED Scroller Chareditor (2)

Dieses Skript dient zum bearbeiten der Zeichen des LED Scrollers. Es erzeugt den Code, der für die Darstellung der Zeichen notwendig ist, um diese im LED Scroller benutzen zu können. Dies ist die erweiterte Version, die den erweiterten Zeichensatz benutzt, den ich in dem Artikel vorgestellt habe.

[... weiterlesen]
Kategorie: Javascript / Comments (0) / 786 mal gelesen
6. Februar 2013 - 14:08

Javascript LED Scroller

Letztens gab es in den Kommentaren des älteren Artikels LED Laufschrift eine längere, anregende Diskussion mit einem Besucher Namens 'Jarbas'. Neben einigen Vorschlägen zur Verbesserung der technischen Umsetzung, äußerte er auch den Wunsch einen kompletten Zeichensatz in dem LED Panel darstellen zu können. Da ich keine gosse Lust hatte an dem Skript viel zu machen, verwies ich nur darauf wie das umgesetzt ist und dass ich eben keine Lust habe komplett alle Zeichen in eine Bitmap zu konvertieren. Auch wenn es mit dem LED Chareditor im Prinzip relativ einfach ginge.

Daraufhin erstellte der Besucher nahezu den kompletten Bitmap Zeichensatz, mit den gängigen Sonderzeichen und präsentierte ihn auf einer jsbin Seite. Da konnte ich nicht untätig bleiben. Merkte aber schnell, dass das die Änderungen einen etwas größeren Umbau des Skripts bedeuteten. Daher jetzt ein neuer Artikel zum überarbeiteten LED Scroller Skript, das es nun ermöglicht (fast) alle Zeichen darzustellen.

[... weiterlesen]
Kategorie: Javascript, Skripte / Comments (20) / 5451 mal gelesen
30. Oktober 2012 - 18:22

Firefox Screenshots

Update 19.8.2013: Die Syntax dieses Features hat sich mittlerweile geändert, leider wird dies im Hilfetext in der aktuellen Version (22.0) nicht erwähnt. Um den hier beschriebenen Screenshot zu machen, muss der Befehle so lautet:

screenshot jstruebig.de --fullpage

Mit dem neuen Firefox 16 lassen sich nun Screenshots von Internetseiten anfertigen, ohne das dafür ein AddOn nötig wäre. Egal ob die komplette Seite oder auch nur Teilbereiche davon. Dieses neue sehr nützliche Werkzeug versteckt sich in der Entwicklerkonsole.

Geöffnet wird die Konsole entweder über das Menü Extras > Web-Entwickler > Entwickler Symbolleiste (komische Übersetzung) oder mittels Shortcut ([Umsch]+[F2]). Daraufhin öffnet sich eine Eingabekonsole am unteren Fensterrand.

Wenn dort help eingegeben wird, werden alle Befehle aufgelistet, die die Konsole momentan beherrscht. Ich möchte hier an dieser Stelle nur auf den Befehl screenshot eingehen.

Die Eingabe von:

screenshot test

speichert direkt den sichtbaren Teil dieser Seite mit dem Namen test.png im aktuellen Download Verzeichnis ab. Die Schnappschüsse werden also png Datei gespeichert.

Wenn die komplette Seite gespeichert werden soll, müssen noch zwei weitere Parameter übergeben werden:

screenshot jstruebig.de 0 true

Die Null ist die Dauer der Verzögerung, bis der Screenshot erstellt wird und true gibt an, dass die komplette Seite gespeichert werden soll. Weitere optionen können mit help screenshot angeziegt werden:


Die Hilfeseite des Befehls screenshot

Kategorie: Browser / Comments (0) / 1152 mal gelesen
27. Oktober 2012 - 20:54

Tween Beispiele

Das Tween Objekt

Ich vertiefe hier noch einmal die Verwendung meines Tween Objektes. Hier zeigt sich, wie einfach und effektiv es sich nutzen lässt. Der Code um eine Animations zu erzeugen ist sehr kurz und wie ich finde auch übersichtlich.

Auf der Seite ist ein Animationsobjekt, das mit zwei Animation erzeugt wurde. Mit Hilfe eines Formulares können einige Parameter verändert und diese Animationen in unterschieldichster Weise gestartet werden.

Beispielcode

[... weiterlesen]
Kategorie: Javascript, Skripte / Comments (0) / 1045 mal gelesen
22. Juni 2012 - 11:13

Tween(2)

Die Technik um mit Javascript eine Bewegung zu animieren hatte ich in einem älteren Artikel bereits beschrieben und kündigte dort eine Fortsetzung an. Doch das Skript, was ich dort verwendet habe, hat sich im Umgang als etwas sperrig erwiesen, daher habe ich es nun komplett neu geschrieben.

Die neue Tween-Klasse kann nun deutlich mehr.
Mit ihr ist es möglich mehrere Elemente gleichzeitig oder auch mehrere Animationen parallel oder hintereinader zu benutzen. Der Animationsablauf läßt sich mit Events steuern. Dazu habe ich in das Skript eine kleine Event Klasse integriert.

Und das Tween Objekt läßt sich auch als Basisklasse für eigene Tweenobjekte benutzen. Es ist aber nicht auf Geschwindigkeit optimiert, trotzdem ist die Animationsgeschwindigkeit (gefühlt) ganz passabel.

[12.10.2012] Das Skript wurde mittlerweile mehrfach überarbeitet und ist dadurch was Funktionalität und Geschwindigkeit angeht deutlich besser geworden.

[... weiterlesen]
Kategorie: Javascript, Skripte / Comments (0) / 5197 mal gelesen
15. Juni 2012 - 17:35

WordPress und Javascript

In der letzten Zeit durfte ich mich etwas intensiver mit WordPress beschäftigen und bin dabei einer Lösung eines alten Problems auf die Spur gekommen.

Seit anbeginn hat mich WordPress hier im Blog genervt, weil es Javascript Code der innerhalb von Artikeltext eingebaut ist, mit internen Funktionen vor der Ausgabe so verändert, dass er nicht mehr lauffähig ist. Ich hatte schon 2008 darüber gebloggt und konnte zwischenzeitlich zumindest den Aufwand bei Updates deutlich verringern

Das Problem war, dass eine Funktion mit den Namen convert_chars() doppelte && Zeichen umwandelt. Da diese in JS das logische-Und sind funktioniert Javascript Code nicht mehr. Denn diese Funktion wird auf jeden Artikel Text angewandt. So wurde bei in Artikel eingebetteten Javascript Quellcode aus && immer && und folglich für den Browser fehlerhaft. Bisher habe ich bei jedem update die Funktion im Code von WordPress geändert. Was lästig ist.

Dabei wäre das Problem einfach zu lösen gewesen nur ich wußte bisher nicht wie. Im Template Verzeichnis kann in der Datei functions.php Einfluss auf das Verhalten von WordPress ausgeübt werden. Unter anderem können bestimmte Events verhindern werden. Um zu verhindern, dass z.b. die oben gennante Funktion aufgerufen wird, muss lediglich folgende Zeile in die Datei eingefügt werden:

php
remove_action('the_content', 'convert_chars');

Und auch das Plugin Text Control, das ich bisher benutzt habe, läßt sich komplett einsparen, mit den folgenden drei Zeilen:

php
remove_action('the_content', 'convert_chars'); 
remove_action('the_content', 'wptexturize'); 
remove_action('the_content', 'wpautop');

Schon kann problemlos auch JS Code in die Artikel eingefügt werden.

Kategorie: Wordpress / Comments (2) / 1666 mal gelesen
16. Februar 2012 - 12:07

GoodBye Google

Es macht ja nun schon einige Zeit die Runde, dass Google sich eine neue Datenschutzbestimmung zulegt. Hauptsächlich wird dies damit begründet, dass die vielen Dienste, die Google anbietet, damit alle Vereinheitlicht werden, bzw. deren AGB.

Die sogenannte Datenschutzerklärung ist online in einer Vorschau einsehbar. Was ich mich beim durchlesen zuerst gefragt habe, worin besteht hier der Schutz? [... weiterlesen]

Kategorie: Internet, Meinung / Comments (2) / 2223 mal gelesen
rats-wonderful
rats-wonderful
rats-wonderful
rats-wonderful

Javascript ist Toll! is Stephen Fry proof thanks to caching by WP Super Cache