HoRNDIS[1] funktioniert wunderbar mit meinem Samsung Galaxy S2 GT-I9100 unter Mac OS X 10.6.8. :-)
Category Archives: Nerd Stuff
Nerd Stuff for Nerds.
Howto upgrade PostgreSQL
Wenn man z.B. bei Debian Wheezy von der Debian PostgreSQL Version (zur Zeit 9.1) auf das offizielle Repository von PostgreSQL[1] für Debian wechselt bekommt man zur Zeit Version 9.2.
Nun laufen erst einmal 2 Instanzen von PostgreSQL. Einmal 9.1 auf Port 5432 (Standardport) und 9.2 auf Port 5433. Ergo laufen auch noch alle Anwendungen die auf eine PostgresSQL Datenbank angewiesen sind.
Um auf die neue Version umzusteigen gibt es von PostgreSQL der das Upgrade völlig “automagisch” durchführt: pg_upgradecluster
pg_upgradecluster – upgrade an existing PostgreSQL cluster to a new major version.
Sinnvollerweise wechselt man jetzt per ‘su postgres’ zum PostgreSQL Benutzer. Um zu überprüfen welche “PostgreSQL Cluster” (instanzen) vorhanden sind kann man ‘pg_lsclusters’ verwenden. Die Ausgabe sieht in etwa wie folgt aus:
Ver Cluster Port Status Owner Data directory Log file
9.1 main 5432 online postgres /var/lib/postgresql/9.1/main /var/log/postgresql/postgresql-9.1-main.log
9.2 main 5433 online postgres /var/lib/postgresql/9.2/main /var/log/postgresql/postgresql-9.2-main.log
Ein einfaches ‘pg_upgradecluster 9.1 main’ reicht nun um das Upgrade durchlaufen zu lassen. Wenn man genau definieren möchte von welchem Cluster auf welches man wechseln möchte kann man das auch exakt wie folgt angeben: ‘pg_upgradecluster -v 9.2 9.1 main’
SYNOPSIS pg_upgradecluster [-v newversion] oldversion name [newdatadir]
Nachdem ‘pg_upgradecluster’ durchgelaufen ist bietet sich ein ‘service postgresql restart’ (als root Benutzer) an und danach kann man sich wieder mit ‘pg_lsclusters’ ansehen welche PostgreSQL Instanzen laufen.
Ver Cluster Port Status Owner Data directory Log file
9.1 main 5433 down postgres /var/lib/postgresql/9.1/main /var/log/postgresql/postgresql-9.1-main.log
9.2 main 5432 online postgres /var/lib/postgresql/9.2/main /var/log/postgresql/postgresql-9.2-main.log
Jetzt kann man in Ruhe testen ob alle Anwendungen mit der neuen Version von PostgreSQL zu recht kommen. Falls dem so ist und alles funktioniert kann man optional(!) das alte Cluster per ‘pg_dropcluster 9.1 main’ löschen.
:-)
php5-fpm
Irgendwie mag ich das absolut nicht …
1: service apache2 start
2: Starting web server: apache2[Tue Jan 29 20:14:48 2013] [warn] FastCGI: there is no fastcgi wrapper set, user/group options are ignored
3: Syntax error on line 10 of /etc/apache2/sites-enabled/10_froxlor_ipandport_2001.foo.80.conf:
4: FastCgiExternalServer: redefinition of previously defined class "/var/www/foo"
5: Action 'start' failed.
6: The Apache error log may have more information.
7: failed!
Wer hätte gedacht, dass ich mich wenn ich mich zwischen IPv6 und “Sicherheit” dann doch für IPv6 entscheiden würde. :-/
http://redmine.froxlor.org/projects/froxlor/wiki/FPM_-_handbook
chmod trivial
Definition:
- u = Benutzer (User)
- g = Gruppe (Group)
- o = andere Benutzer (others)
- a = alle (all)
- r = lesen (read)
- w = schreiben (write)
- x = ausführen (execute)
- + fügt die Rechte zu bestehenden hinzu
- – entfernt die Rechte
- = setzt alle rechte
Beispiele:
- chmod o+x Ordner/Datei sorgt dafür, dass andere in den Ordner hineinsehen oder die Datei ausführen können.
- chmod g-w Ordner/Datei sorgt dafür, dass die Gruppe zu der der Ordner oder die Datei gehört Ordner bzw. die Datei nicht verändern können.
- chmod a=rw Datei sorgt dafür, dass jeder die Datei lesen und verändern kann.
Alternativ ist es auch möglich die Rechte auch anders anzugeben[1]. Aber so ist es denk ich mal für Einsteiger am einfachsten.
man chmod ftw! :D
—
[1] http://en.wikipedia.org/wiki/Chmod#Usage
Meine Gnome 3 Einstellungen
Gnome 3 war mir wie vielen anderen auch anfangs etwas suspekt. Fakt ist, dass die Gnome Entwickler einfach einmal den Schritt gewagt haben ein komplett neues Bedienkonzept zu verfolgen welches zumindest meistens sehr konsequent durchgehalten wird. Es sollte jedem klar sein, dass Gnome 3 als neue Entwicklung noch nicht den Funktionsumfang haben kann und natürlich auch noch nicht so stabil wie Gnome 2 sein kann.
Mittlerweile benutze ich Gnome Version 3.4 unter Debian Testing/Wheezy und hoffe mal, dass Version 3.6 bald in Debian Testing/Wheezy eingepflegt wird. Arbeiten kann ich damit schon sehr gut. Zwei wichtige Dinge habe ich persönlich angepasst. Zum einen meine user-dirs.dirs und zum anderen habe ich ein paar Gnome Extensions[4] installiert.
iptables
Bis jetzt hatte ich iptables[1] nur über shorewall[2] angefasst. Da ich aber eigentlich nur vino-server[3] (der VNC Server der in Gnome integriert ist) auf meinem Desktop Rechner dazu bringen wollte nur von localhost erreichbar zu sein schien mir shorewall dann doch etwas übertrieben.
Nach kurzer Recherche über Googol konnte ich mir ein kleines Bash Skript zusammenschustern in das man einfach die iptables/ip6tables eintippt und das ganze dann immer wenn man neue Regeln für Netfilter hat ausführt. Ãœber ‘/etc/network/if-up.d/’ stelle ich (hoffentlich) sicher, dass die Regeln auch immer nach jedem Neustart in den Kernel gelangen.
Bei mir unter Debian Linux Wheezy (Testing) funktioniert das ganze bis jetzt einwandfrei. Allerdings freue ich mich immer über Korrekturen. :-)
Download: firewall-create-rules.sh
[1] http://de.wikipedia.org/wiki/Iptables
[2] http://de.wikipedia.org/wiki/Shorewall
[3] https://live.gnome.org/Vino
Endlich komm ich mit Webmin zurecht.
Canon EOS 600D
Super Kamera. Ich muss gestehen, dass ich im Moment leider noch zu wenig Ahnung vom Fotografieren habe als das ich die Kamera voll ausnutzen könnte. Werde deshalb sobald ich dazu komme den ein oder anderen Kurs belegen, das Handbuch durchlesen und ein paar Photos machen. :-)
Leider ist die Unterstützung für Linux von Canon nicht wirklich existent. Das sollte natürlich auch kein Problem darstellen. Leider kann man die Speicherkarte nicht so ohne weiteres ins System einhängen, wenn man die Kamera mit dem mitgelieferten USB Kabel anschließt.
Die Software von Canon kann man zwar mit wine installieren, allerdings ist das ganze dann nicht wirklich funktional.
aptitude install gphoto2
- Schließt die Kamera an.
- Lasst gphoto2 für euch die Kamera erkennen
gphoto2 --auto-detect
- Wenn eure Arbeitsumgebung (Gnome, XFCE, Unity, LXDE, TWM, KDE, …) die Kamera erkennt und ins System einhängt einfach wieder aushängen. Da wurden bei mir zumindest keine Daten angezeigt.
- Danach in der Terminal Emulator eurer Wahl (Gnome Terminal, Terminator, Konsole, …) folgendes eingeben:
gphoto2 --get-all-files --camera "Canon EOS 600D"
- Natürlich das Modell der Kamera von der vorigen Ausgabe von –auto-detect übernehmen.
- Warten bis alle Dateien auf der Festplatte sind. :-)
Die graphische Oberfläche von gphoto2 namens gtkam hat bei mir leider noch nicht funktioniert.
Sobald ich meine Klausur am 30.8. geschrieben habe werde ich mich da mit mehr Elan reinstürzen. ^_^
Nachtrag 20.08.2012: gtcam funktioniert. Allerdings hatte ich vergessen genauso wie bei gphoto2 vorzugehen.
- Kamera anschließen und anschalten.
- Warten bis die Kamera erkannt und automatisch ins System eingehängt wird.
- gtcam starten und die Kamera hinzufügen / automatisch erkennen.
- Bevor man bei “Kamera hinzufügen” auf “OK” klickt muss man die Kamera bzw. den angezeigten Speicher aus dem System aushängen.
- “OK” klicken und nutzen.
Rsync und SCP zusammen nutzen
Folgendes finde ich sehr praktisch: :-)
rsync -P --bwlimit=45 --rsh=ssh username@host:/tmp/test.tst .
[…]
Das Ganze funktioniert folgendermaßen:
- der lokale rsync client baut eine ssh Verbindung zum remote server auf und startet dort selbständig einen rsync deamon, der jedoch nur Verbindungen von localhost annimmt
- per ssh-tunnel verbindet sich der lokale rsync client dann zum rsync deamon auf dem remote server
- -P ist gleichbedeutend mit –partial –progress – was nichts anderes heißt als das teilweise Übertragene Dateien erhalten bleiben und der Fortschritt der Ãœbertragung angezeigt wird
- –bwlimit KBYTE/S ermöglicht die Drosselung der Übertragungsgeschwindigkeit, Angabe in kByte/s
Quelle: http://geek-blog.de/
Wenn der SSH Daemon auf einem anderen Port hört kann man das einfach wie folgt angeben.
--rsh='ssh -p42'
Wuhu! Mein erstes Python Skript.
Python ist einfach toll. :-)
1 #------------------------------------------------------------------------------ 2 # @FILENAME: ./imdbCovers.py 3 # @AUTHOR: Happy 4 # @DESCRIPTION: Using imdbapi.com to get the URI of a movie poster 5 # by providing the title and and year. 6 # Example: http://www.imdbapi.com/?t=True%20Grit&y=1969 7 # @LICENSE: WTFPL - http://sam.zoy.org/wtfpl/ 8 #------------------------------------------------------------------------------ 9 # DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE 10 # Version 2, December 2004 11 # 12 # Copyright (C) 2004 Sam Hocevar <sam@hocevar.net> 13 # 14 # Everyone is permitted to copy and distribute verbatim or modified 15 # copies of this license document, and changing it is allowed as long 16 # as the name is changed. 17 # 18 # DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE 19 # TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 20 # 21 # 0. You just DO WHAT THE FUCK YOU WANT TO. 22 #------------------------------------------------------------------------------ 23 #/* This program is free software. It comes without any warranty, to 24 # * the extent permitted by applicable law. You can redistribute it 25 # * and/or modify it under the terms of the Do What The Fuck You Want 26 # * To Public License, Version 2, as published by Sam Hocevar. See 27 # * http://sam.zoy.org/wtfpl/COPYING for more details. */ 28 #------------------------------------------------------------------------------ 29 30 import urllib, urllib2 31 import json 32 33 34 # Function to purge the unclean! Or the JSON stuff. We just want the 'Poster'. 35 def purgeJsonCrap(jsonCrap): 36 lol = json.load(jsonCrap) 37 return lol['Poster'] 38 39 # Get the Cover URI 40 def gimmeCover(jahr, titel): 41 # URI to the API Server. 42 baseurl = "http://www.imdbapi.com/" 43 # Creating the dictionary for 'urlencode()'. 44 titeldic = dict() 45 titeldic = {'t' : titel} 46 titel = urllib.urlencode(titeldic) 47 # Concatenating the parts. 48 imguri = "?" + titel 49 imguri += "&" + "?y=" + str(jahr) 50 uri = baseurl 51 uri += imguri 52 # Getting the JSON data. 53 opener = urllib2.urlopen(uri) 54 # Cleaning and returning. 55 return purgeJsonCrap(opener) 56 57 58 # Examples :-) 59 # print "\n" + gimmeCover(1995, 'Hackers') 60 # print gimmeCover(1995, 'True Grit') 61