FOSS IS FREE AS IN TOILET

Nobody believes that a free toilet will be magically cleaned up and maintained, somebody has to do it, and that person would better get paid for it. Sharing a toilet means that you flush, clean up after yourself, and always leave some paper, it’s basic manners. And yet, like toilets, as FOSS gets used by more and more people, it gets more likely that you will see obnoxious people that shit all over your commons and then complain about it. And nobody will want to take care of it.

Treating correctly the people who work on the software you use is just basic FOSS hygiene.

Wenn Du an einem Gemeinschaftsprojekt oder Free-Open-Source-Software arbeitest, dann arbeite sauber und hinterlasse keinen Dreck.

Quelle: http://unhandledexpression.com

Eclipse Packet Explorer font-size ändern

Moin, heute im Kurs kam die Frage auf, wie sich denn im Package Explorer von Eclipse die Schriftgröße ändern lässt. In den Einstellungen lässt sich das leider so nicht ändern, aber in der .css-Datei vom Design/Theme.

In Eclipse öffnet ihr die Einstellungen (Menü: Window->Preferences) und dann im Suchfeld theme eingeben. Unter Appearance findet sich dann das eingestellte Design.

Eclipse - Einstellungen

Wenn hier Windows eingestellt ist, ist die zugehörige .css-Datei im Ordner

<eclipseOrdner>\plugins\org.eclipse.ui.themes_<versionsNummer>\css\e4_basestyle.css

zu finden. Diese Datei öffnet ihr mir einem Editor und fügt am Ende folgenden CSS-Style ein:

.MPart Tree {
  font-family: Consolas;
  font-size: 14px;
}

Um die Änderungen in Eclipse anzeigen zu lassen, wechselt man einfach das Theme und klickt Apply. Danach auf das Windows-Theme zurück wechseln. Wenn alles geklappt hat, kann man den Unterschied deutlich erkennen. Links normal – rechts mit CSS Anpassung.

Eclipse - Unterschied Schriftart und -größe

 

 

Die Tribute von Gast, oder wie man alle SSH Verbindungen aus der eigenen trennt

cowsay

Heute haben wir noch ein kleines Spiel gespielt. Die Aufgabe war es, als längster auf dem Rechner vom Dozenten zu verweilen und alle anderen hinauszuwerfen. Die eigenen Prozesse darf man ja abschießen und somit ist das möglich, dass man anderer SSH Verbindungen kappt.

Nach dem Start hat der Dozent den SSH-Dienst dann nach ein paar Sekunden beendet, so dass sich niemand erneut anmelden konnte. Der Gewinner war der, der als letztes noch verbunden war. Leider habe ich in der ersten Runde nicht so gut gespielt und meine Verbindungen wurden immer frühzeitig getrennt.

Doch jetzt habe ich den passenden Befehl gefunden. Mit der Hilfe von einem Freund ist folgender Befehl entstanden:

while true;do for i in $(ps fauxww | egrep "bash" | grep -v $$ | awk {'print $2'}); do /bin/kill -9 $i; done; sleep 1; done

In einer Endlosschleife werden alle Prozesse getötet. Die Liste der Prozesse wird dabei gefilter und die eigene PID wird ausgeschlossen.

Python Development mit VIM

War heute auf einem Business Breakfast von Oracle in Düsseldorf. Und dort wurde halt auch relativ viel über python gesprochen, dass es als Skriptsprache in Solaris mehr und mehr verwendet wird. Daher habe ich mich mal entschlossen, meine Python-Bücher auszugraben und mir erneut eine Entwicklungsumgebung anzulegen. Und weil ich ein Fan von VIM bin und dieser auf allen Solaris-Kisten vorhanden ist, wird natürlich VIM so erweitert, dass man damit bequem Python Programme schreiben kann.

Homebrew

Am einfachsten geht das natürlich mit Homebrew.

brew install macvim --with-override-system-vim

# If you need the app bundle linked in /Applications...
$ brew linkapps

Und weil die lokale Installation von VIM auf OS X schon etwas älter ist, installieren wir auch gleich eine aktuelle Version von VIM aus dem Homebrew Repository

# mercurial required - install if you don't already have it.
$ brew install mercurial
# install Vim
$ brew install vim

# if /usr/bin is before /usr/local/bin in your $PATH,
# hide the system Vim so the new version is found first
$ sudo mv /usr/bin/vim /usr/bin/vim72

# should return /usr/local/bin/vim
$ which vim

Damit haben wir schon mal VIM installiert und auch die GUI. Im nächsten Schritt werden wir VIM dann einrichten.

Die .vimrc Konfigurations-Datei

Die .vimrc-Datei wird von VIM ausgelesen und beinhaltet alle Konfigurationsanweisungen. Hier ist nur ein kleines Beispiel von den Anweisungen, die man da rein packen kann. Es gibt auch .vimrc-Dateien, die viel viel größer sind.

" enable syntax highlighting
syntax enable

" show line numbers
set number

" set tabs to have 4 spaces
set ts=4

" indent when moving to the next line while writing code
set autoindent

" expand tabs into spaces
set expandtab

" when using the >> or << commands, shift lines by 4 spaces
set shiftwidth=4

" show a visual line under the cursor's current line
set cursorline

" show the matching part of the pair for [] {} and ()
set showmatch

" enable all Python syntax highlighting features
let python_highlight_all = 1

Das waren die Basics. Mehr dazu gibt es später.

#scripting Kopiere jede zehnte Datei in einen anderen Ordner

Für ein Zeitraffer-Projekt haben wir zwei GoPro Kameras an unterschiedlichen Orten positioniert und sie alle 60 Sekunden ein Bild aufnehmen lassen.  Das ist auch leider die maximale Zeit die man an der GoPro einstellen kann. Weil wir aber so viele Bilder gar nicht benötigen, hatte ich damals ein Script geschrieben, dass die  Datei auf der SD-Karte indiziert und dann nur jedes zehnte Bild kopiert.

Bei diesem Zeitraffer-Projekt nun habe ich erstmal alle Bilder gesammelt. Immer irgendwie in Ordner die ich nach dem Tag benannt habe, an dem ich den Import durchgeführt habe. Jetzt gilt es, diese vielen Datei auszusortieren und für das Zeitraffer-Video brauche ich wirklich nur jedes zehnte Bild. Ist ja ein Bauprojekt was über 2 Jahre geht. Da braucht es nicht so viele Bilder.

Tja, und was soll ich noch lange erzählen, das Kommando, welches über alle Verzeichnisse läuft und nur jede zehnte Datei kopiert passt in eine Zeile. Naja in zwei, denn ich habe es erst ausprobiert und dann einen Alias erzeugt.

ls | awk NR%10==0 | xargs -I{} cp "{}" ../zielOrdner

daraus macht man dann mit

alias cpfiles="ls | awk NR%10==0 | xargs -I{} cp "{}" ../zielOrdner"

ein Alias und fügt den in den folgenden Loop ein

for d in ./*/ ; do (cd "$d" && cpfiles); done

Jetzt wechselt man in das Verzeichnis mit den ganzen GOPRO Ordnern und führt den Loop aus. Damit werden die Datei schon sauber in ein extra Verzeichnis kopiert. Da nicht verschoben wird, kann in der Nachbearbeitung immer noch das ein oder andere Original-Bild nachgeladen werden.

Von hier, hier und hier habe ich das zusammengebaut.