Turbo Tutorium – Ruby on Rails

Juli 25th, 2010 § 0 comments § permalink

Wer in Weimar ist und Bock hat Ruby On Rails zu lernen — nächste Woche mach ich ein Turbo Tutorium zu dem Thema!

Weitere Infos im Piazza-Eintrag und auf der Turbo Tutorium Seite

6 Tips für mehr BASH awesomeness

Mai 16th, 2010 § 7 comments § permalink

Hier ein paar Tips wie man die Bash-Shell pimpen kann:

1) History Search mit Pfeiltasten

Die wenigsten wissen, dass man in der History springen kann (wie mit den hoch/runter-Tasten), aber dabei nur die Einträge angezeigt bekommt, die mit der bereits getippten Zeile beginnen. Das liegt wohl daran, dass es standardmäßig keine Keymappings dafür gibt. Macht aber nix! Man kann sich das ganz leicht zusammenschrauben wenn man folgendes in seine ~/.inputrc einträgt:

# up arrow: go to previous line in history
# that starts with the typed characters
"\e[B": history-search-forward
# down arrow: opposite of up arrow
"\e[A": history-search-backward

Super praktisch. Must have. Und das beste daran: wenn man noch nichts eingetippt hat verhält sich das ganze wie gewohnt, man geht einfach die History rauf und runter.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

2) Case-Insensitive Tab Completion

Folgende Zeile in der ~/.inputrc ist auch äußerst empfehlenswert und bewirkt, dass man die Tab-Completion für Ordner und Dateien verwenden kann, selbst wenn man sich mit der Groß/Kleinschreibung vertan hat:

# case-insensitive tab completion
set completion-ignore-case on

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

3) GREP in Farbe

Jeder ernsthafte Bash-Nutzer verwendet mehrmals täglich grep. Man kann sich die gefundenen Stellen (standardmäßig Rot) hervorheben lassen, um leichter zu erkennen welcher String nun genau wo gefunden wurde. Dazu folgende Zeile in der ~/.bashrc bzw. ~/.bash_profile einfügen:

export GREP_OPTIONS="--color=always"

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

4) Man-Pages in Farbe

Ubuntu macht das glaub ich mittlerweile standardmäßig. Das ist aber kein Feature von "man", sondern liegt am verwendeten Pager. Wers haben will installiert "most" (ersatz für den standard-pager "less") und fügt folgende Zeile zu seiner ~/.bashrc bzw. ~/.bash_profile hinzu:

export PAGER="most"

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

5) Git und Mercurial-Branches im Prompt anzeigen lassen

Wer git oder mercurial für sein Source-Code-Management verwendet wird sich hin und wieder nicht ganz sicher sein, auf welchem Branch er sich gerade befindet. Für mich haben sich folgende Funktionen als sehr nützlich erwiesen:

# show current git branch
git_branch() {
    git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/(\1) /'
}
# show current mercurial branch
hg_branch() {
    hg branch 2> /dev/null | awk '{printf "(%s) ",$1}'
}

Diese geben den aktuellen Branch in Klammern, gefolgt von einem Leerzeichen aus, wenn man in einem Repository ist. Falls nicht, geben sie einfach gar nichts aus, man wird also nicht permanent davon genervt. Verwendung in der ~/.bashrc bzw. ~/.bash_profile :

export PS1="\$(git_branch)${PS1}"

Damit sieht mein Prompt dann in einem Mercurial Repository z.B. so aus:

(default) user@host:my_repository$

und wenn ich nicht in einem Repository bin so:

user@host:/$

Man kann das auch noch farblich hervorheben. Dazu erstmal ein paar handliche Variablen für die Farben, muss ja nich jeder das Rad neu erfinden:

# default
NO_COLOR='\[33[0m\]'

# standard colors
BLACK='\[33[0;30m\]'  RED='\[33[0;31m\]'
GREEN='\[33[0;32m\]'  YELLOW='\[33[0;33m\]'
BLUE='\[33[0;34m\]'   MAGENTA='\[33[0;35m\]'
CYAN='\[33[0;36m\]'   WHITE='\[33[0;37m\]'

# emphasized colors
EBLACK='\[33[1;30m\]' ERED='\[33[1;31m\]'
EGREEN='\[33[1;32m\]' EYELLOW='\[33[1;33m\]'
EBLUE='\[33[1;34m\]'  EMAGENTA='\[33[1;35m\]'
ECYAN='\[33[1;36m\]'  EWHITE='\[33[1;37m\]'

# underlined colors
UBLACK='\[33[4;30m\]' URED='\[33[4;31m\]'
UGREEN='\[33[4;32m\]' UYELLOW='\[33[4;33m\]'
UBLUE='\[33[4;34m\]'  UMAGENTA='\[33[4;35m\]'
UCYAN='\[33[4;36m\]'  UWHITE='\[33[4;37m\]'

# background colors
BBLACK='\[33[40m\]'   BRED='\[33[41m\]'
BGREEN='\[33[42m\]'   BYELLOW='\[33[43m\]'
BBLUE='\[33[44m\]'    BMAGENTA='\[33[45m\]'
BCYAN='\[33[46m\]'    BWHITE='\[33[47m\]'

Wenn man jetzt das repository statt in der default-farbe lieber in grün haben will macht man das so:

export PS1="$GREEN\$(git_branch)$NO_COLOR${PS1}"

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

6) LS in Farbe

Last but not least noch ein Tip, um ls ein bisschen mehr Leben einzuhauchen. Manche Leute bekommen Augenkrebs, ich finde es praktisch, wenn Verschiedene Arten von Dateien verschiedene Farben bekommen. Unter Linux ganz einfach in die ~/.bashrc bzw. ~/.bash_profile eintragen:

alias ls='ls --color=auto'

# standard, directories, symlinks
LS_COLORS="no=00:di=34:ln=35:so=33"
# executables white with red background
LS_COLORS="ex=37;41:${LS_COLORS}"
# archives cyan
LS_COLORS="*.zip=36:*.rar=36:*.tar=36:*.gz=36:*.tar.gz=36:*.7z=36:${LS_COLORS}"
# source files green
LS_COLORS="*.c=32:*.cpp=32:*.rb=32:*.pl=32:*.php=32:${LS_COLORS}"
# header files yellow
LS_COLORS="*.h=33:*.hpp=33:${LS_COLORS}"
# object files grey
LS_COLORS="*.o=30:*.d=30:${LS_COLORS}"
export LS_COLORS

Alle verfügbaren Optionen und Farben sind hier gut aufgelistet, da kann dann jeder nach Lust und Laune rumbasteln wie er will.

Da Mac OS nicht die GNU coreutils (also ls, cp, mkdir, ...) verwendet sondern die BSD-Variante, die sich nicht so detailiert konfigurieren lässt, muss man hier erst die GNU coreutils mittels Macports nachinstallieren. Das Kommando dazu:

sudo port install coreutils

Wenn man das getan hat, sind die GNU coreutils verfügbar, indem man den gewohnten Kommandos einfach ein "g" voranstellt ( also z.B. gls, gcp, gmkdir ). Das bedeutet dass man das alias also folgendermaßen setzen muss:

alias ls='gls --color=auto'

Wer noch mehr awesomeness parat hat, ab damit in die Comments! Und jetzt viel Spass beim Ausprobieren wünscht euch euer Onkel Padde.

Bauhaus-Uni VPN unter OS X 10.6 (Snow Leopard)

Oktober 14th, 2009 § 2 comments § permalink

Liebe Macuser_innen an der Bauhaus-Uni Weimar!

Vor kurzer Zeit erschien das „große“ Betriebssystem-Update von Apple, OS X 10.6 (Snow Leopard). Da der Cisco VPN Client, den die Uni zum Download anbietet, nicht mehr unter 10.6 funktioniert, muss nun eine andere Lösung her. Gar nicht schlimm, denn der benötigte Cisco-Code wurde von Apple fest ins neue Betriebssystem integriert und der olle Cisco-Client war sowieso überaus hässlich. Hier steht wie’s geht:

1) Klicke auf den kleinen Apfel oben links am Bildschirm und wähle „Systemeinstellungen…“. In dem sich öffnenden Fenster klicke auf „Netzwerk“.

2) Füge durch einen klick auf die Schaltfläche „+“ links unten im Fenster einen neuen Dienst hinzu.

3) Wähle folgendes aus:
Anschluss:  VPN
VPN-Typ:    Cisco IPSec
Dienstname: Frei wählbar, z.B. UNI-VPN Intern

4) Gib nun die entsprechende Serveradresse für den Dienst den du einrichten möchtest ein:
VPN Intern: 172.18.254.252
VPN Extern: vpngw2-out.net.uni-weimar.de
VPN Bode:   vpngw2-out.net.uni-weimar.de

5) Als Accountname trage deinen Benutzernamen von der Uni ein (z.B. abcd1234). Lasse das Feld Passwort leer.

6) Klicke auf Identifizierungseinstellungen und wähle „Schlüssel“. In das nebenstehende Feld tippst du:
VPN Intern: v2oeff
VPN Extern: v2intern
VPN Bode:   v2bode

7) In das Feld Gruppenname kommt folgendes:
VPN Intern: GROUP-WLAN
VPN Extern: GROUP-EXTERN
VPN Bode:   GROUP-BODE

8) Klicke auf „OK“ und dann rechts unten auf „Anwenden“. Fertig! Jetzt kannst du dich über das neu erschienene Symbol in der Menuleiste mit dem Uni-VPN verbinden. Dein Passwort musst du erst beim Verbinden eingeben. Und alles ohne Vorher irgendwelche hässlichen Programme starten zu müssen!

/////////////////////////////////////////////////////////

Hier nochmal alle Zugangsdaten auf einen Blick:

VPN Intern
Serveradresse: 172.18.254.252
Shared Secret: v2oeff
Gruppenname:   GROUP-WLAN

VPN Extern
Serveradresse: vpngw2-out.net.uni-weimar.de
Shared Secret: v2intern
Gruppenname:   GROUP-EXTERN

VPN Intern
Serveradresse: vpngw2-out.net.uni-weimar.de
Shared Secret: v2bode
Gruppenname:   GROUP-BODE

/////////////////////////////////////////////////////////

So long,
Padde