Entries filed under Tweaks

WordPress cache mit redis und uberspace

Posted on 24. Oktober 2014 Comments

Redis ist eine In-Memory Key-Value Datenbank. Das heißt, dass die Daten im Arbeitsspeicher gehalten werden und deswegen besonders schnell verfügbar sind. Dafür sind sie aber auch nicht persistent gespeichert, d.h. bei einem Neustart sind die Daten weg. Das ist aber im Grunde perfekt für einen Cache Speicher.

WordPress ist ja nicht gerade für seine Schnelligkeit bekannt und so gibt es diverse Plugins zum besseren Cachen. Seine eigene Seite kann man z.B. bei Google Page Speed testen. Jedes Mal wenn eine Seite abgerufen wird, muss PHP Daten aus der Datenbank holen und eine Seite generieren. Je nach Hoster, Anbindung etc kann das ganz schön lange dauern.

Die Idee für diesen Post ist Daten, die sich ohnehin nicht so häufig ändern, in einer Redis Datenbank vorzuhalten und statt jedes Mal eine Seite generieren zu lassen einfach diese Daten aus dem Redis Cache abzufragen. Dazu braucht man aber eine Verbindung zwischen PHP und Redis und überhaupt die Möglickeit Redis auf demselben Webserver zu installieren auf dem auch WordPress liegt. Leider bieten das nicht allzu viele Anbieter, mein Anbieter Uberspace jedoch schon. PHP kann über die Bibliotheken Predis oder  PHPRedis auf Redis Server zugreifen.

Das Plugin wp-redis-cache übernimmt jegliche Arbeit. Zum Installieren muss man einfach nur der Anleitung folgen. Die IP seines eigenen Webservers bekommt man z.B. über Ping. Bei Uberspace läuft Redis nicht über TCP sondern über einen Socket. Dieser befindet sich im Home-Verzeichnis ~/.redis/sock.

Als Erstes muss man auf seinem Uberspace Redis installieren:

$ test -d ~/service || uberspace-setup-svscan
$ uberspace-setup-redis

Wenn man statt dem mitgelieferten Predis 5.2 lieber PHPRedis benutzen möchte kann man dies folgendermaßen installieren:

$ uberspace-install-pecl redis

Mit meinem Patch für wp-redis-cache kann man nun auch Sockets mit Predis nutzen.
Wichtig ist nun noch die Variable $redis_server auf folgenden Wert zu setzen.

/home/username/.redis/sock

Die Abkürzung ~/.redis funktioniert hier nicht.

Solange die Variable $debug noch auf true steht, kann man beim Aufruf der Website im Quelltext die gemessene Zeit bis zur Ausgabe sehen. Diese sollte deutlich unter vorherigen Werten liegen.

Im WordPress Backend kann man unter Einstellungen/Wp Redis Cache noch eine maximale Zeit (in Sekunden) angeben, in denen der Cache geleert und neu befüllt wird, um ggf. Änderungen anzuzeigen. Zum Testen kann man aber auch einen $secret_key in der index-wp-redis.php festlegen und seinen Blog so aufrufen: http://blog-url.tld/?refresh=refreshpasswort
Oder man startet einfach Redis neu:

$ svc -du ~/service/redis

flattr this!

Alle norwegischen Sonderzeichen in Dateinamen ersetzen

Posted on 15. Juli 2014 Comments

Wenn Dateien von einem norwegischen PC stammen, könnte es sein, dass die Dateinamen nicht mit UTF-8 Zeichen geschrieben sind. Man sieht dann ein Fragezeichen Symbol bei der ls-Ausgabe. Dieser Weg ist alles andere als elegant, aber funktioniert, wenn es einfach nur schnell und vielleicht nur einmal überhaupt erledigt werden soll. Wenn das öfter vorkommt, wäre ein Skript angebrachter. Vom User Gilles von Stack Exchange habe ich dieses Skript kopiert:

 

grep-invalid-utf8 (){
  perl -l -ne '/^([\000-\177]|[\300-\337][\200-\277]|[\340-\357][\200-\277]{2}|[\360-\367][\200-\277]{3}|[\370-\373][\200-\277]{4}|[\374-\375][\200-\277]{5})*$/ or print'}
find | grep-invalid-utf8

Das kann man so einfach in der Konsole absetzen. Danach habe ich wie vorgeschlagen mit diesem Skript, find und rename alle Dateien UTF-8 Dateinamen gegeben.

find | grep-invalid-utf8 |
rename 'BEGIN {binmode STDIN, ":encoding(latin1)"; use Encode;}
        $_=encode("utf8", $_)' 

Jetzt habe ich mir mit ls > ls.txt alle Dateinamen in eine Textdatei geschrieben und diese in Libre Office Calc kopiert. In die A-Spalte und die B-Spalte kommen die Dateinamen. Dann wird auf die B-Spalte ein Makro angewandt, dass alle Sonderzeichen entfernt. Anschließend kommt in die C Spalte der folgende Befehl:

="mv "&A1&" "&B1

und in die D Spalte:

=WENN(A1=B1;"";C1)

Jetzt kann man die D-Spalte kopieren und in ein Shellskript einfügen und im Ordner ausführen. Nicht vergessen das Skript mit chmod +x ausführbar zu machen.

 

flattr this!

Windows 8 Log-Out Bildschirm bleibt aufgrund eines Abmeldeskripts hängen

Posted on 26. Februar 2014 Comments

Um sicher zu gehen, dass die Benutzer ihre USB Sticks nicht vergessen haben wir ein Skript entworfen, das prüft, ob noch ein USB Stick, Speicherkarten oder DVDs im PC stecken. Dieses ruft dann eine .hta Datei(ist historisch halt so gewachsen..) auf, die den Benutzer auffordert, den USB Stick doch bitte mitzunehmen. Das klappte auch wunderbar unter Windows XP und Windows 7.

Seit die neuen PCs mit einer SSD und Windows 8 ausgestattet sind, ist der violette LogOut Screen so schnell da, dass man diese Meldung nicht mehr sehen kann. Da das Skript aber auf eine Benutzereingabe wartet, hängt nun der ganze PC beim Herunterfahren. Nun habe ich diverse Dinge versucht, inklusive Tasks, die beim Herunterfahren ausgeführt werden etc. Nichts hat geholfen. Dann bin ich auf den folgenden Tipp gestoßen. Man muss Windows nur sagen, dass die Skripte über den Log-Out angezeigt werden sollen.

Dies kann man ebenfalls im Editor für lokale Gruppenrichtlinien machen (gpedit.msc). Dazu klickt man auf Benutzerkonfiguration/Administrative Vorlagen/System/Skripts und wählt dann den Punkt Anweisungen in Abmeldeskripts während des Abmeldens anzeigen aus. Der Haken ist standardmässig bei nicht konfiguriert gesetzt. Setzt man ihn auf aktiviert funktioniert es.

device-test-anzeigen

flattr this!

Updating Owncloud News App with cron and Uberspace

Posted on 27. November 2013 Comments

Since it’s not possible to create a cronjob with the user the webserver is running under(as advised), I just created a cronjob with my user(crontab -e) and it works just fine.

[repat@uberspace]$ crontab -l
*/15 * * * * /package/host/localhost/php/bin/php -f /home/repat/html/owncloud/cron.php

The problem was the following: owncloud wouldn’t update my news and I didn’t think it was a cron problem, since I couldn’t update it manually(AJAX). Adding new feeds however did work. I still don’t get why manual updating doesn’t work , even with the Android app. Opening cron.php in the webbrowser didn’t work, although it did display {“status”:”success”}..turns out: it has to be called via CLI.

Unfortunately, I get an email every 15 minutes now… To disable that I added this above the cron entry:

MAILTO=""

Thanks to Raydiation and j-ed for helping me.

flattr this!

Set Window position under Windows 7

Posted on 10. Oktober 2013 Comments

Apparently there is no way of setting/configuring a windows position on the screen. I couldn’t find a place to define X and Y or top and left. There is however  a function, if you write your own application in C++(SetWindowPos). Also deleting [-HKEY_CURRENT_USER\Software\Microsoft\Windows\Shell\BagMRU] and the like didn’t work for me, especially since the (current) user, wasn’t allowed to use regedit.

Thanks to paradroid on superuser.com, I found another, reasonably usable solution: Hold down CTRL while clicking on the [X]-button of a window. Windows will then remember the position for the next start.

-.-

flattr this!

Update to the latest scala version with Ubuntu 12.04 Precise Pangolin

Posted on 7. Oktober 2013 Comments

Basically the wiki at summercode.com says it all, go to (or wget) the latest version at http://www.scala-lang.org/download and untar it. Then move the folder to /usr/share/scala. Then link the address of the new binaries to the old binaries in /usr/bin. The main problem here is that you have to delete them first so I just want to add this little piece of shellscript(including the instructions from the tutorial mentioned above):

$ wget http://www.scala-lang.org/files/archive/scala-2.10.3.tgz
$ tar zxf scala-2.10.3.tgz
$ sudo mv scala-2.10.3 /usr/share/scalasudo rm /usr/bin/scala
$ sudo rm /usr/bin/scalac
$ sudo rm /usr/bin/fsc
$ sudo rm /usr/bin/sbaz
$ sudo rm /usr/bin/sbaz-setup
$ sudo rm /usr/bin/scaladoc
$ sudo rm /usr/bin/scalap
$ sudo ln -s /usr/share/scala/bin/scala /usr/bin/scala
$ sudo ln -s /usr/share/scala/bin/scalac /usr/bin/scalac
$ sudo ln -s /usr/share/scala/bin/fsc /usr/bin/fsc
$ sudo ln -s /usr/share/scala/bin/sbaz /usr/bin/sbaz
$ sudo ln -s /usr/share/scala/bin/sbaz-setup /usr/bin/sbaz-setup
$ sudo ln -s /usr/share/scala/bin/scaladoc /usr/bin/scaladoc
$ sudo ln -s /usr/share/scala/bin/scalap /usr/bin/scalap

Or download the file here: update-scala.sh (github clone)

flattr this!

SQLDeveloper with Ubuntu 12.04, alien and the .rpm-file

Posted on 30. September 2013 Comments

There are a couple of tutorials[1] of how to install Oracles SQLDeveloper and they all say to install the sqldeveloper-XXX-no-jre.zip, in this case sqldeveloper-3.2.20.09.87-no-jre.zip. I didn’t read it because my first idea was the following and it also worked: It’s possible to download the .rpm-file and convert it with alien. You might have to install it with

sudo apt-get install alien

then

alien sqldeveloper-3.2.20.09.87-1.noarch.rpm
dpkg -i sqldeveloper_3.2.20.09.87-2_all.deb

You can then start the sqldeveloper. It will ask you for the Java Path which is usually /usr/lib/jvm/java-6-openjdk and give you some kind of error, which didn’t seem to have any impact.

repat@laptop:~$ sqldeveloper
Oracle SQL Developer
Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved.
Type the full pathname of a J2SE installation (or Ctrl-C to quit), the path will be stored in ~/.sqldeveloper/jdk
/usr/lib/jvm/java-6-openjdk
/opt/sqldeveloper/sqldeveloper/bin/../../ide/bin/launcher.sh: Zeile 455: /home/repat/.sqldeveloper/jdk: Datei oder Verzeichnis nicht gefunden

[1] e.g. Oracle Forum, Linux Sagas, Software in a bottle

flattr this!

Cisco VPN mit Windows 8: Error 442: Failed to enable virtual adapter

Posted on 6. Februar 2013 Comments

Der Cisco-VPN Client in der Version 5.0.0.05.0440 für Windows 8 verursacht bei mir folgendes Problem. Jedes mal wenn ich Username und Passwort eingeben sagt er (auf der Kommandozeile die vpnclient.exe)

Intializing the VPN connection
Contacting the gateway xxx.xxx.xxx.xxx
Authenticating user.
Negotiating security policies
Securing communiation channel
Secure VPN Connection terminated locally by the Client
Reason: Failed to enable Vitual Adapter

bzw. GUI gibt zurück:

Secure VPN Conection terminated locally by the Client
Reason 442: Failed to enable Virtual Adapter
Connection terminated on XYZ

Wobei XYZ für Datum und Länge steht.

Auch wenn diverse Rechenzentren von Universitäten was anderes erzählen… Der Fehler liegt dabei in der Registry und zwar genauer beim Schlüssel DisplayName unter HKEY_LOCAL_MASCHINE\SYSTEM\CurrentControlSet\Serices\CVirtA. Der enthält die Zeichenkette @oem4.inf,%CVirtA_Desc%;, welche man einfach rauslöschen kann. So steht da einfach nur noch Cisco Systems VPN Adapter for 64-bit Windows. Bei der 32-bit Version steht einfach nichts dahinter(also keine 32-bit!)

Um das zu automatisieren kann man .reg-Dateien schreiben in dem man mit regedit den Wert ändert, und dann mit Datei/Exportieren eine .reg-Datei erstellt. Die übernimmt allerdings alle Werte aus dem Unterordner. Mit seinem Lieblingseditor kann man nun einfach die restlichen Einträge aus der Datei löschen, so dass dort nur noch steht:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\CVirtA]
"DisplayName"="Cisco Systems VPN Adapter for 64-bit Windows"

oder im Fall von 32-Bit Systemen:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\CVirtA]
"DisplayName"="Cisco Systems VPN Adapter"

Hier findet ihr die beiden .reg-Dateien gezippt als Download:

Credits gehen an ITServiceDRoeding für sein YouTube Video.

flattr this!

Ausloggen über Konsolenbefehl bei Ubuntu

Posted on 14. Dezember 2012 Comments

Letztens habe ich mich ein bisschen beim Wechsel der Windowmanager verdaddelt. Zum Glück konnte ich mich noch über SSH einloggen und kam dann mit dem folgenden Befehl zurück zur Anmeldung:

dbus-send --session --type=method_call --print-reply --dest=org.gnome.SessionManager /org/gnome/SessionManager org.gnome.SessionManager.Logout uint32:1

(Credits)

flattr this!

How to get facebook back online #facebookdown

Posted on 11. Dezember 2012 Comments

Seems like facebook has some kind of DNS-Problem right now(#facebookdown). To fix this enter the facebook IPs in your hosts-file. To get them, have a look at your DNS Cache with a tool like dig(or use the ones I provide below).

 

Linux

repat@laptop:~$ dig facebook.com

; <<>> DiG 9.8.1-P1 <<>> facebook.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 11887
;; flags: qr rd ra; QUERY: 1, ANSWER: 6, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;facebook.com.            IN    A

;; ANSWER SECTION:
facebook.com.        6010    IN    A    69.171.229.16
facebook.com.        6010    IN    A    173.252.100.16
facebook.com.        6010    IN    A    173.252.101.16
facebook.com.        6010    IN    A    66.220.152.16
facebook.com.        6010    IN    A    66.220.158.16
facebook.com.        6010    IN    A    69.171.224.32

 

So just enter this into your /etc/hosts file:

#vi /etc/hosts

66.220.158.16   facebook.com
66.220.158.16   www.facebook.com


Windows
Windows has a similar file, which is located in %SystemRoot%\system32\drivers\etc\hosts. Where %SystemRoot% is your Windows directory, so most likely C:\Windows.

At least in Windows 7 the file is locked by the system, so unless you have notepad++, which doesn’t care about all this, you have to open your explorer, go to C:\Windows\system32\, right-click notepad.exe and select “start with admin rights”(or something like that…). Then click File/open, go to C:\Windows\system32\drivers\etc and select “all files” on the right side(see screenshot). Then again open the file and enter the following:

66.220.158.16   facebook.com
66.220.158.16   www.facebook.com

 

 

 

 

MacOS

1. Click on the looking glass icon in the top right corner of the screen
2. Type “Terminal” and press Enter, a new app called “Terminal” will appear
3. Don’t get confused by it, just follow the steps
4. Copy this text into your clipboard : echo “173.252.101.16 www.facebook.com” | sudo tee -a /etc/hosts
5. Paste it into the “Terminal” window and press Enter
6. You will be prompted to enter your password (it will not show up on the screen, don’t worry about it), press Enter again when you finished typing your password.
7. The line “173.252.101.16 www.facebook.com” will appear on the screen.
8. Done!

flattr this!