Alle Posts in Indernetz

Der MySQL Query-Cache

mysql> show variables like '%cache%';

oder

show status like  '%cache%';

Das Ergebins sieht dann etwa so aus:

query_cache_limit     | 1048576    |
query_cache_size      | 0          |
query_cache_type      | ON

Zur Laufzeit könnte man die Cache-Größe z.B. so ändern

mysql> set global query_cache_size = 256M;

Um den Wert dauerhaft so zu nutzen muss er dann freilich in der my.cnf geändert werden.

Der Befehl FLUSH bewirkt eine defragmentation des Caches und kann eigentlich jederzeit zur Optimierung des Caches ausgeführt werden.

mysql> FLUSH QUERY CACHE;

Mit dem Befehl RESET leerst Du den MySQL Query-Cache

mysql> RESET QUERY CACHE;

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]

Mit welchem Zeichensatz wurde eine Datei erstellt

Die Antwort ist einfach und easy zu handlen – zumindest mit Linux

file -i {Dateiname}

Und noch etwas… Traue keinem Windows was solche Aussagen macht. Windows und UTF8 ist ein Thema, womit man Bücher füllen kann.

UTF-8-Datei in ISO8859 umwandeln

Das ist manchmal notwendig, wenn das System noch nicht Unicode versteht, aber die Textdatei mit einem solchen erstellt wurde.

Zur Umwandlung existiert das Kommando iconv:

iconv -f UTF-8 -t ISO8859-1 {datei_in_utf8_kodierung} >{datei_in_iso8859_kodierung}

Mit dem Kommando können zahlreiche weitere Konvertierungen vorgenommen werden. Siehe dazu: iconv –list

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"

multiple Firefox

Firefox Profilmanager

  • Alle Firefox-Prozesse schließen (ggf. prüfen)
  • Firefox Profile Manager über die Kommandozeile starten…
    Dies geht bei Windows über die Eingabeaufforderung (“Start”->”Ausführen”->”cmd”)
  • Von dort kann man Ihn dann wie folgt starten:
#Pfad bei einer WinXp Installation
C:ProgrammeMozilla FirefoxFirefox.exe” -Profilemanager”
#Pfad bei einer 64bit Installation
C:Program Files (x86)Mozilla FirefoxFirefox.exe” -Profilemanager”
#Pfad bei englischer Installation
C:Program FilesMozilla FirefoxFirefox.exe” -Profilemanager”
  • Neues Profil hinzufügen (z.B. Firefox20)
  • Alte Firefox-Version(en) oder auch Firefox Betas downloaden
    und installieren !WICHTIG:! Jede Firefox-Installation braucht natürlich ein eigenes Verzeichnis.
    Das starten der unterschiedlichen Browsern sollte dann immer mit dem dazugehörigen Profil erfolgen, sonst zerschiesst man sich umter Umständen alle Einstellungen und vor allem die Addouns

Dateibrowsing im Android

browsing Android

Etwas verwundert war ich schon, dass ich trotz intensiver Suche keine Möglichkeit fand im Telefon-Dateisystem zu blättern bzw. zu browsen. Meine erste Suche im App-Market war auch nicht erfolgreich. Google brachte aber schnell den entscheidenen Tipp >Filebrowser< suchen und man erhält diverse Apps. Ich habe mich nun für den “meiner Meinung nach” schnellsten Filebrowser entschieden und wie sollte der auch heißen: Filebrowser! :-D

Eigene Klingeltöne ablegen

android

I love Android

Wenn man einen eigenen Klingelton in Android auswählen will, muss dieser in einem bestimmten Verzeichnis liegen. Standardmäßig sind das:

Klingeltöne: /system/media/audio/ringtones
SMS: /system/media/audio/notifications
Wecker: /system/media/audio/alarms

Will man die unter Umständen größere Datenmenge, lieber auf der SD-Card haben so legt man das/die Verzeichnis/se einfach äquivalent auf der SD-Card an und kopiert/verschiebt die Dateien dorthin.

Klingeltöne: /sdcard/media/audio/ringtones
SMS: /sdcard/media/audio/notifications
Wecker: /sdcard/media/audio/alarms