ProgrammiertoolsEinige Tools und Prozesse sind unabhängig von der Programmiersprache wichtig und empfehlenswert für alle Programmierprojekte. Die hier angeführten Werkzeuge und Techniken sind nur exemplarisch, dafür können und sollten sie in jedem Projekt verwendet werden sollten. Texteditor - GNU EmacsEin Texteditor ist eines der grundlegendsten Werkzeuge eines Programmierers. Die Entscheidung, ob für unterschiedliche Sprachen jeweils spezialisierte Editoren verwendet werden sollen bzw. ein möglichst mit allen Sprachen zurechtkommender Editor verwendet wird, sei jedem selbst überlassen. Wählt man letztere Alternative, so ist besondere Sorgfalt bei der Entscheidung angebracht. Im Folgenden schildere ich einige Funktionen des Editors meiner Wahl - GNU Emacs. Die Schilderungen dienen als Follow-up eines Vortrages, in welchem ich im Zuge der Grazer Linuxtage 2011 ein ausgewähltes Subset an Features des Editors vorgestellt habe. Das Thema des Vortrags war Emacs als IDE, wobei besonders auf Webentwicklung inklusive Python und Django eingegangen wurde. Dazu wurden 4 hilfreiche Pakete vorgestellt, welche hier kurz erklärt werden. Gnuserv und GnuclientBeschreibungErmöglichen einen schnellen Start des Editors, wenn Emacs als Serverprozess läuft. Installation und KonfigurationFalls nicht ohnehin in der verwendeten Version von Emacs vorhanden, können die relevanten Pakete mittels sudo aptitude install gnuserv installiert werden. Danach ist ein aktivieren des Servermodus
in ;; Start GNUServe process when starting up. This lets us send new files ;; to previously spawned emacs process. (load "gnuserv-compat") (load-library "gnuserv") (gnuserv-start) Um Emacs danach automatisch nur dann als Client zu starten, wenn bereits ein Server läuft, hilft folgendes Mini-Script #!/bin/bash RUNNING=`lsof /usr/bin/emacs | grep $USER` if [ -z "$RUNNING" ]; then echo "starting emacs server" /usr/bin/emacs $* & else echo "starting emacs client" /usr/bin/gnuclient $* & fi AutocompleteBeschreibungErmöglicht automatische Vervollständigung von Code, die auch auf noch nicht in der Datei vorhandene Schlüsselwörter etc. anwendbar ist. Installation und KonfigurationDa das Paket sehr aktiv entwickelt wird, empfiehlt es sich, es nicht aus dem Paketmanager zu installieren, sondern direkt von der Projekthomepage herunterzuladen: http://cx4a.org/software/auto-complete/. Informationen zur Konfiguration sind in den Hilfedateien des Download-Archivs vorhanden. Weitere Informationen und Tips sowie ein Vergleich zu Alternativen findet sich auf http://www.emacswiki.org/emacs/AutoComplete. YasnippedBeschreibungYasnipped - yet another snippet extension for Emacs. Hervorragendes Snippetsystem, welches viel Zeit und Tipparbeit erspart. Installation und KonfigurationDie im Paketmanager vorhandene Version ist in gut verwendbarem Zustand, also reicht sudo aptitude install yasnipped Erstellen eigener SnippetsUm neben den im Paket vorhandenen auch eigene Snippets definieren
zu können, muss deren Verzeichnis
mittels ;; yasnippet (setq yas/root-directory (cons yas/root-directory '("~/.yasnippet"))) (mapc 'yas/load-directory yas/root-directory) Möchte man ein neues Snippet für das HTML dpkg -L yasnippet | grep snippets einfach zu ermitteln. RopemacsBeschreibungRope ist eine Refactoring Bibliothek für Python, welche von unterschiedlichen Editoren verwendet werden kann. Rope ermöglicht unter anderem automatische Code-Vervollständigung via Code-Introspection. In Emacs kann Rope mittels Ropemacs verwendet werden. Installation und KonfigurationLeider ist Ropemacs erst in der Version 0.1 und daher noch nicht ausgereift - diese steht aber bereits als Debian Packet zur Verfügung. sudo aptitude install python-ropemacs Die notwendige Aktivierung erfolgt wieder in .emacs ;; enable pymacs and ropemacs (require 'pymacs) (pymacs-load "ropemacs" "rope-") ShortcutsCode-Vervollständigung wird mittels M-/ ausgelöst. Darüberhinaus bietet Ropemacs auch andere Shortcuts, wovon
die wichtigsten sind. Texteditor - Vi(m)Aufgrund seiner ebenfalls großen Beliebtheit ist auch vi (bzw. die verbesserte Version vim) hier kurz erwähnt. Dieser Editor verfügt über zwei grundsätzlich getrennte Modi - den Eingabemodus und den Kommandomodus. Beim Start des Editors befindet man sich in letzterem. Möchte man vom später vom Eingabemodus in den Kommandomodus wechseln, reicht ein Druck auf Esc. Vi ist auch deshalb wichtig, weil man viele Programme in KDE so konfigurieren kann, dass sie ein Subset der Befehle von vi verwenden (dazu zählen kwrite, kate, kdevelop und kile). Der vi input mode kann in diesem Programmen mit der Tastenkombination [Ctrl]+[Meta]+v aktiviert bzw. deaktiviert werden. Mehr Informationen zu diesem Thema findet man auf http://kate-editor.org/kate-vi-mode/. Umgekehrt kann man den Eingabemodus mit i, I, a, A, r, R starten.
Dateien werden mit :w, :wq, :r gespeichert
Die Befehle zum Ausschneiden und Einfügen sind x, X, D, dd, dw, yy, p, P.
Der Cursor kann im Kommandomodus neben den Cursortasten mit w, W, (, ), [n]G, G, H, M, L bewegt werden.
Zum Suchen und Ersetzen verwendet man /, ?, n, :s
Sonstige Befehle
VersionskontrolleEines der häufigsten Probleme von Entwicklern, ganz gleich ob es sich um eine einzelne Person oder ein ganzes Team handelt ist, dass Fehler und Bugs nicht immer sofort sichtbar werden. Will man später herausfinden, welche Änderung einen Fehler hervorgerufen hat, braucht man Zugriff auf alle Änderungsschritte in der Vergangenheit. Genau diese Möglichkeit bietet Software zur Versionskontrolle (generell als Version-Control System oder VCS bekannt). Bei der Zusammenarbeit in einem Team werden VCS Systeme natürlich noch viel wichtiger. Es gibt zahllose gute System zur Verwaltung von Sourcecode. Drei der besonders gängigen und qualitativ hochwertigen Open Source VCS sind Mercurial, Git und Subversion (SVN). Die ersten beiden sind verteilte VCS, welche ihre Vorteile besonders dann zeigen, wenn Teams eine gewisse Größe übersteigen, ohne aber Probleme oder Schwierigkeiten für einzelne Entwickler zu machen. Ein weiterer entscheidender Vorteil von verteilten VCS ist, dass eine Verbindung zum Internet nicht notwendig ist, um Versionskontrolle zu verwenden. MercurialIm Folgenden stelle ich ganz kurz Mercurial (Mercury ist englisch für Quecksilber, dessen chemisches Symbol HG ist) vor, weil es besonders für Anfänger einfach zu verwenden ist. Zuerst muss es installiert werden. sudo aptitude install mercurial Daraufhin empfiehlt es sich, eine minimale Konfigurationsdatei ( cat >> ~/.hgrc << EOF [ui] username = Gerald Senarclens de Grancy [extensions] fetch = EOF Möchte man für ein bereits existierendes Projekt, welches aus lediglich einer Datei
Die dafür notwendigen Schritte im Verzeichnis des Projektes sind. hg init hg add hello.py hg commit -m "initial commit" Verändert man daraufhin den Inhalt von hg commit -m "added comment" Die Option hg log Will man schließlich zur ersten Version der Datei (Version 0; im Log ist die Version die Zahl vor dem Doppelpunkt im Changeset) zurückkehren, genügt ein simples hg revert -r 0 hello.py Es ist ebenfalls möglich, die Unterschiede zwischen verschiedenen Revisionen anzuzeigen oder auf eine neuere Version zu "reverten". hg diff -r 0 -r 1 hello.py hg revert -r 1 hello.py Ausführliche englische Dokumentation, gute Einsteigertutorials und sogar ein ganzes Buch zur Benutzung gibt es auf der Homepage von Mercurial. Die Verwendung von GUI Programmen kann einem das Leben auch erleichtern sudo aptitude install tortoisehg GitGit setzt sich vor allem im Open Source Bereich immer mehr gegen alle anderen Versionskontrollsysteme durch. Es kann von git-scm.com heruntergeladen werden. Dort findet sich auch die Dokumentation und das Buch Pro Git. Die Installation unter Linux erfolgt via sudo aptitude install git git-gui Die folgenden Befehle reichen für eine minimale Konfiguration (statt dem Editor jed kann natürlich auch jeder andere Editor gewählt werden) git config --global user.name "${YOUR_NAME}" git config --global user.email "${YOUR_EMAIL_ADDRESS}" git config --global color.ui auto git config --global core.editor jed Die eben erstellte Konfiguration befindet sich in
git config --global -e angesehen bzw. editiert werden. Um eine optimale Integration in die Bash
Shell zu aktivieren, sind folgende Einträge in ## GIT ######################### # these need to be set before PS1 export GIT_PS1_SHOWDIRTYSTATE=1 export GIT_PS1_SHOWSTASHSTATE=1 export GIT_PS1_SHOWUNTRACKEDFILES=1 export GIT_PS1_SHOWUPSTREAM="auto verbose" In der export PS1='\@ \033[1m[\u@\h] $(__git_ps1 "git:%s")\033[0m\n\w >' Die dadurch aufgerufene Funktion fügt dem Prompt den Text "git:" gefolgt
von dem Namen der aktuellen Branch hinzu, sobald man sich innerhalb eines
git repositories befindet. Durch die Einträge in
Es ist möglich, seinen Code in einem online Repository zu speichern und ihn in der Folge einfach gemeinsam in einem Team zu verwenden oder auch nur zwischen verschiedenen Computern aktuell zu halten - ohne sich mit der Serverkonfiguration auseinander setzen zu müssen. Ein bekanntes derartiges Hostingservice für Mercurial und GIT Repositories ist ist Bitbucket. BitbucketFür Einzelpersonen oder kleinere Firmen zahlt es sich in der Regel nicht aus, einen eigenen Server zur Versionskontrolle zu betreiben. Will man einen Account auf einem der bestehenden Services anlegen, ist jedoch ein wenig Konfiguration notwendig. Zur Verwendung von ssh muss zum Beispiel ein Schlüsselpaar (public + private) angelegt werden: ssh-keygen -t rsa Bei der Aufforderung, ein Passwort einzugeben, empfehle ich, unbedingt ein mind. 8 Zeichen langes sicheres Passwort. Mit der erstellten privaten Schlüsseldatei ist schließlich je nach Verwendung der öffentlichen Datei Vollzugriff auf Rechner möglich. Nachdem das Schlüsselpaar erstellt ist, kann der öffentliche Schlüssel mit cat ~/.ssh/id_rsa.pub im Terminal angezeigt werden. Danach markiert und kopiert man den gesamten Schlüssel (ein solcher Schlüssel könnte (gekürzt) wie folgt aussehen: Erst das Vorhandensein eines solchen Schlüssels erlaubt es, mit privaten Repositories zu kommunizieren (sofern die Userrechte passend vergeben sind). Selbst für öffentliche Repos muss ein Schlüssel vorhanden sein. Einer der vielen Vorteile der Verwendung von SSH liegt darin, nicht bei jeder Serverkommunikation (pull/ push oder dgl.) seine Benutzerdaten angeben zu müssen. Damit das funktioniert, kann in einer laufenden Benutzer-Session der private SSH-Schlüssel einem Authentifizierungs-Agenten übergeben werden. Unter *Ubuntu reicht es, nach dem einloggen ssh-add zu tippen und das Passwort des privaten Schlüssels einzugeben. Danach sind bis zum Ausloggen Verbindungen mit Hilfe des Schlüssels möglich, ohne das Passwort erneut eingeben zu müssen. Diese erhöhten Rechte machen es aber noch wichtiger als sonst, seinen Computer zu sperren, wenn man ihn nicht verwendet. Build ToolsUm Sourcecode von Sprachen wie C, C++ oder Java in Maschinencode oder Bytecode zu übersetzen, muss dieser kompiliert werden. Da dies aber bei vorhandensein von vielen Dateien kompliziert ist und nicht bei jeder Änderung alle Dateien neu kompiliert werden müssen, empfiehlt sich die Verwendung von Build Tools. Die klassischen Tools sind GNU Make für C und C++ sowie Apache Ant für Java. Da das Erstellen von Makefiles aber alles andere als trivial ist und besonders bei Plattformunabhängigkeit Schwierigkeiten macht, gibt es eine Reihe von Generatoren für Makefiles. Derzeit besonders weit verbreitet und von mir empfohlen ist CMake. Die Konfiguration der zu kompilierenden Software erfolgt dabei in mkdir build # erstelle Verzeichnis, in dem übersetzte Dateien erstellt werden cd build # gehe in dieses Verzeichnis cmake .. # generiere Makefile make # kompiliere Dateien Etwas einfacher für Beginner, dafür aber weniger mächtig ist qmake. Dabei werden qmake -project Danach kann das Projekt mittels qmake # generiere Makefile make # kompiliere Dateien übersetzt werden. Copyright © 2009-2023 Gerald Senarclens de Grancy Haftungsausschluss: Da ich keinerlei Einfluss auf den Inhalt der Seiten, zu denen ich von meiner Homepage linke, habe, übernehme ich auch keinerlei Haftung für diese Seiten. |