Alle Posts in scripting

XAMP Alternative WAMP

Windows – Apache – MySQL – PHP:  Ist bei mir täglich von Nöten. Doch hat mich der XAMPP 1.6 seit Windows 7 echt zum Verzweifeln gebracht. POST-Request wurden manchmal einfach nicht abgearbeitet, erst ein APACHE-Restart half dann. Nun habe ich WAMP drauf gehauen und bin bis jetzt begeistert. Ein kleines aber feines Interface was sich als Tray ins Windows einfügt. Darüber lassen sich diverse Apache-Module, PHP-Extensions und PHP-Settings aktivieren und deaktivieren.

Ajax Multibox automatisch öffnen

AJAX : asynchrones javascript and xml

Wie schön, dass ich binnen weniger Minuten einen Blogpost von Samuel fand, indem es genau um dieses Problem ging. Ich musste also absolut gar keinen eigenen Hirnschmalz verwenden. Ich benutze hier zur Demonstration einfach mal einen Teil der Demo aus dem Download von Samuel. Einzige Änderung bzw. Ergänzung befindet sich am Ende ( box.open($(‘mb1′)) )

var box = {};
    window.addEvent('domready', function(){
            box = new MultiBox('mb', {
                    useOverlay: true,
                    container: document.body,
                    contentColor: '#FFF',
                    showNumbers: true,
                    descClassName: 'multiBoxDesc',
                    path: 'multibox/'
            });
            box.open($('mb1'))
    });

Script unter Linux als anderer Benutzer ausführen

Linux Solutions
root@server01: su -c  /usr/scripting/minimize_css.pl www-data

Die Google Analytics Alternative

Piwik Logo

Es ist neu, es ist frei und es ist mit dem deutschen Datenschutz-Gesetzen konform. So speichert Analytics u.a. die vollständige IP-Adresse eines Besuchers, was die Daten zu personenbezogenen Daten macht. Da Google bisher keinerlei Optionen für Deutschland anbietet, kann man deutschen Webmastern nur empfehlen, den Einsatz zu unterlassen.

Die alternative Open-Source-Lösung Piwik stehe genauso wie Google Analytics kostenlos zur Verfügung und habe den Vorteil, dass die Verarbeitung der Daten nicht bei einer anderen Stelle oder bei einem Auftragsdatenverarbeiter stattfindet, sondern auf den Servern des Webseitenanbieters selbst. Das wiederum ist dann jedoch u.U. mit Kosten für den Webseitenbetreiber verbunden.

Der gute Sven-O-Zilla hat zur Installation und Funktion von Piwik einen tollen Artikel geschrieben. Natürlich gibt es auch mehrere Piwik WordPress Plugins, Piwik-Apps für Apple und Android

CSS-Minimizer Javascript-Minimizer

Das eigentliche Script zum komprimieren der Dateien ist sehr leicht zu verstehen, es wird bei Bedarf von mir ausgeführt. Einfach das Ursprungsverzeichnis und das Zeilverzeichnis konfigurieren und gut ist.

$inpath     =  '/var/www/www.domain.de/css_raw';
$outpath    =  '/var/www/domain.de/css';

opendir(DIR,$inpath) || die "$inpath: $!";
my @Dateien = readdir(DIR);
closedir(DIR);

foreach(@Dateien) {
   if($_ =~ /.+\.css/) {

          use CSS::Minifier qw(minify);
                open(INFILE, '< '.$inpath.'/'.$_) or die('Fehler beim oeffnen der css-files');                 open(OUTFILE, '> '.$outpath.'/'.$_) or die('Fehler beim erstellen der css-files');

                minify(input => *INFILE, outfile => *OUTFILE);
                close(INFILE);
                close(OUTFILE);
   }
}

Lediglich die erste Installation des Perl-Scripts oder eines Perl-Scripts allgemein, war für mich etwas neues. Das Verzeichnis habe ich nach /usr/scripting/CSS-Minifer/ bzw. /usr/scripting/CSS-Minifer/minimize_css.pl kopiert.
Hier kurz die Schritte zum Generieren der .pl-Datei und der Installation:

root@server01:/usr/scripting/CSS-Minifer$  perl Makefile.PL
......Writing Makefile for CSS::Minifier

root@server01:/usr/scripting/CSS-Minifer$  make

root@server01:/usr/scripting/CSS-Minifer$ make test
PERL_DL_NONLAZY=1 /usr/bin/perl "-MExtUtils::Command::MM" "-e" "test_harness(0, 'blib/lib', 'blib/arch')" t/*.t
t/CSS-Minifier.t .. ok
All tests successful.
Files=1, Tests=4,  0 wallclock secs ( 0.03 usr  0.00 sys +  0.06 cusr  0.00 csys =  0.09 CPU)
Result: PASS

root@server01:/usr/scripting/CSS-Minifer$ make install
Installing /usr/local/share/perl/5.10.1/CSS/Minifier.pm
Installing /usr/local/man/man3/CSS::Minifier.3pm
Appending installation info to /usr/local/lib/perl/5.10.1/perllocal.pod

Soweit der Abschnitt zum Perl. Jetzt noch die Pfade anpassen in der minimize.pl-Datei anpassen, die Datei selbst für das Linux System ausführbar machen und einen Testlauf machen:

root@server01: nano /usr/scripting/minimize_css.pl
root@server01: chmod +x /usr/scripting/minimize_css.pl
root@server01: /usr/scripting/minimize_css.pl

In meinem Fall gab es nun noch ein paar Probleme mit den Benutzerrechten, der Zielordner gehörte ja www-data und das Perl-Script konnte die komprimierten CSS- und Javascript-Dateien nicht in den Zielordner kopieren. Dies löste ich, indem ich das Script/Programm einfach als anderer Benutzer ausführte (in meinem Fall www-data).

[download link="http://www.devilweb.de/wp-content/uploads/2011/03/js_minimizer.zip" smalltext="js_minimizer.zip 24 kB"]Download JS-Minimizer[/download]
[download link="http://www.devilweb.de/wp-content/uploads/2011/03/css_minimizer.zip" smalltext="css_minimizer.zip 24 kB"]Download CSS-Minimizer[/download]

XDEBUG in XAMPP 1.7.x

Es wurde langsam notwendig meine Testumgebung auf PHP5.3 umzustellen und mein XAMPP war auch schon gut 1,5 Jahre alt, also startete heute mein Umstieg auf den XAMPP 1.7.3. Standardinstallation unter Windows, Apachen anpassen (httpd.conf und httpd-xampp.conf), MySQL-Datenbankendateien direkt eingespielt, alles easy going. Unabdingbares Werkzeug im Zusammenspiel mit NETBEANS ist für mich aber XDEBUG geworden und das machte Probleme, denn der neue XAMP hat XDEBUG nun noch weiter integriert (was ja eigentlich toll ist). So aber war die Konfiguration eben mal wieder neu (und anders als in meiner letzten Version) vorzunehmen.
folgende Konfiguration unter xampp/php/php.ini hat letztlich gut funktioniert:

zend_extension = "xamppphpextphp_xdebug.dll"
xdebug.profiler_enable = 1
xdebug.profiler_append = 1
xdebug.profiler_output_dir = "xampptmp"
xdebug.trace_output_dir = "xampptmp"
xdebug.profiler_output_name = "cachegrind.out.xdebug_profile.%p"
xdebug.remote_enable = 1
xdebug.remote_handler = "dbgp"

MySQL Ausgabe in Datei umleiten

Wenn man erst einmal seinen Query hat, ist es super einfach das Erbenis z.B. einer Abfrage nicht anzuzeigen, sondern direkt in eine Datei umzuleiten, also zu speichern. MySQL bietet hierzu den Befehl INTO OUTFILE an. Das INTO OUTFILE hängt man an das Ende seines SQL-Query, gefolgt von dem Dateinamen und fertig.

SELECT mail AS c_email, cus_id
FROM newsletter
LEFT JOIN customer ON newsletter.mail = customer.mail
WHERE newsletter.subscribe = '1' AND customer.mail IS NULL
INTO OUTFILE 'c:/plunderblabla.txt';

Taddaaa isch habe Datei gemacht… Unter Linux ist der Pfad natürlich anzupassen

Aufbau & Funktion von Cron-Tab & Cron-Jobs

Beim Lesen des Artikel von www.lpi-certification.de habe ich mich entschlossen, einen kurzen Artikel zu schreiben, da ich das immer wieder nachschlagen muss.

Aufbau der cron-Tabellen

cron-Tabellen bestehen aus beliebig vielen Zeilen. Kommentare werden durch # in Spalte eins eingeleitet. Sie gelten bis zum Zeilenende. Leerzeilen werden ignoriert.

Nach der Deklaration lokaler Variablen folgt die eigentliche Tabelle. Diese besteht aus sieben Spalten pro Zeile. Die ersten fünf Spalten spezifizieren den Ausfügrungszeitpunkt. Die sechte Spalte enthält den Namen des Users, unter dessen Account der Dienst ausgeführt wird. Der Rest wird als siebte Spalte interpretiert und enthält die auszuführenden Befehle.

Die Terminfelder

Das erste Feld beinhaltet die Minute, das zweite die Stunde, das dritte den Tag, das vierte den Monat.  dow steht für den Wochentag (day of the week).

Innerhalb der Terminfelder können die Angaben als Zahlen (im Feld month und dow auch über die englischen Namen) erfolgen. Mehrere Einzeleinträge sind möglich. Sie werden durch Kommata getrennt. Auch Bereiche können angegeben werden. 2,3,4,6 kann auch als 2-4,6 angegeben werden. Das *-Zeichen wird als Joker eingesetzt, das den Bereich ersetzen kann (<erstes Element>-<letztes Element>). Die Felder werden durch ein TAB voneinander getrennt.

Beispiele einer cron-Tabelle

Beispiel einer Crontab:

#minute hour    mday    month   wday    who     command
# Kommentar jede Minute ausführen:
*       *       *       *       *       root    sh /volume1/pfad/script.sh

# Jeden Tag um 22:00 h ausführen:
0       22      *       *       *       root    sh /volume1/dpfad/sript2.pl

# Jeden Sa. um 23:00 h ausführen:
0       23      *       *       6       root    sh /volume1/pfad/script3.sh

# Alle 5 min ausführen:
*/5     *       *       *       *       root    sh /volume1/pfad/script4.pl

# Alle 2 Std. ausführen:
00      */2     *       *       *       root    sh /volume1/pfad/script5.sh

# Von Mo. bis Fr. um 01:00 Uhr ausführen
0       1       *       *       1-5     root    sh /volume1/pfad/script6.pl
Der Aufbau ist also wie folgt zu verstehen:
 * * * * * auszuführender Befehl
 ┬ ┬ ┬ ┬ ┬
 │ │ │ │ │
 │ │ │ │ └──── Wochentag (0-7) (Sonntag =0 oder =7)
 │ │ │ └────── Monat (1-12)
 │ │ └──────── Tag (1-31)
 │ └────────── Stunde (0-23)
 └──────────── Minute (0-59)

Ich meine mich zu erinnern, dass es systemabhängige Unterschiede gibt, was Tabulator bzw. Leerzeichen zwischen den Feldern angeht. In jedem Fall aber ist dies ein Unterschied.

Problem mit dem Scrollbalken bei der Ajax Multibox

Eine wirklich tolle Lightbox bzw. Thickbox Alternative ist die Multibox von Samuel Birch. Eine Box für alles vom Iframe bis hin zu Flashvideo (.flv) und WindowsMedia (.wmv). Ein Problem war jedoch, das auf jeder Seite eine horizontale Scrollbar auftauchte (die natürlich überflüssig war). Des Rätsels Lösung war dieser Artikel :

In my situation, a horizontal scrollbar appeared whenever I set the useOverlay flag to true. Apparently, this was caused by the frameborder value of the overlay iframe. To remedy, go into overlay.js and change ‘frameborder’: 1 to ‘frameborder’: 0.

Nachtrag: Die neueste URL der Bibliothek von Samuel Birch: http://www.pa-s.de…..Lightbox-60.php

cURL unter Xampp Lite

xampp_logo

Ich weiss gar nicht mehr warum,  aber zum arbeiten setze ich nicht XAMPP sondern XAMPP-Lite ein. Erst heute musste ich feststellen, dass kein cURL mit installiert wurde.

Nunja -dachte ich – mal eben unter c:xammplitephp die php.ini angesehen und extension=php_curl.dll ausgeklammert, kurz gechecked ob die .dll da ist wo sie sein sollte, den Apachen neu gestartet und… :-o Nischt

Nach langem probieren und dem Fragen von Herrn Google, fand ich dann diesen Post: http://www.apachefriends.org/f/viewtopic.php?t=4093 und da ging mir dann endlich ein Licht an: Der xampp lädt eine ganz andere php.ini(!!) Nämlich aus

C:xamppliteapachebin