Archive for the ‘Programmierung’ Category

Diese Woche in der Konsole #1

Posted on July 5th, 2009 in Programmierung, Ubuntu | 1 Comment »

Diese Woche in der Konsole

  1. Mit curl von der Komandozeile aus twittern:
    curl -u Benutzername:Passwort \
    -d status="Nachricht" http://twitter.com/statuses/update.xml
  2. Suchen und Ersetzen mit einem Ruby Einzeiler:
    ruby -i.bkp -pe "gsub(/suche/, 'ersetze')" *.php

    Hier werden alle PHP Dateien in dem aktuellen Ordner ersetzt und zusätzlich wird eine Backup Datei (.bkp) erstellt.

  3. Einen Ordner via ssh mittels rsync clonen:
    rsync -avz -e 'ssh -p portnummer' user@host /Quellordner /Zielordner

    Wird der Quellordner ohne abschliessenden / angegeben, so wird der Quellordner selbst kopiert. Ansonsten nur der Inhalt

  4. Datenbank von einem anderen Server via ssh übernehmen:
    ssh user@host mysqldump -u dbuser_server -p dbpwd_server databasename \
    --lock-tables | mysql --verbose -u dbuser_local -p dbpwd_local
  5. Verschlüsselte Text-Datei mit Vim anlegen:
  6. vim -x datei

Suchen und finden mit Vim

Posted on June 29th, 2009 in Programme, Programmierung, Ubuntu | 1 Comment »

vim-logo In einer Datei suchen

Eine Datei wird mit dem Schrägstrich / im Kommandomodus ESC durchsucht. Natürlich kann hier auch regular expression angewendet werden:

/^require

Mit n gelangt man zum nächsten Treffer. Um auf den Treffer davor zu kommen drückt man N.

Auf einer Zeile suchen

Beim Navigieren in einer langen Zeile ist f sehr hilfreich. So springt der Cursor bei f > auf die erste Übereinstimmung, mit dem Zeichen >. Ein F > sucht von der aktuellen Cursor Position von rechts nach links weiter. Um zum nächsten Treffer zu gelangen reicht ein ;.

In mehreren Dateien suchen

Dateien können mit grep durchsucht werden:

:grep require *.rb

Read the rest of this entry »

XDG Base Directory Specification

Posted on June 18th, 2009 in Gnome, KDE, Programmierung, Ubuntu | 3 Comments »

freedesktop_icon_big.small
Jeder der sich schon etwas mit Linux beschäftigt hat, kennt die vielen versteckten Dateien in seinem Home-Verzeichnis. Die meisten Programme speichern ihre Konfigurationsdateien und Userdaten unter ~/.programmname/. Dies kann jedoch sehr schnell unübersichtlich werden. Wenn ich z.B auf meinem Rechner das Kommando

bernd@taylor:~$ ls -d .* | wc -l
88

ausführe, so kann man sehen, dass ich 88 versteckte Dateien/Ordner direkt in meinem Homeverzeichnis habe.

Um das ganze besser zu Strukturieren und um eine einheitliche Basis auf verschiedenen Arbeitsumgebungen (Gnome, KDE,..) zu haben, gibt es dazu eine Spezifikation des freedesktop.org Projekts, welches sich zum Ziel gesetzt hat, die Interoperabilität und die gemeinsame Basis von Arbeitsumgebungen für das X Window System zu verbessern. (Wikipedia-Artikel zu freedesktop.org: http://de.wikipedia.org/wiki/Freedesktop.org)

Die Spezifikation findet man unter: http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html Darin wird definiert wo Userdaten, Cachedaten des Users und Konfigurationsdaten gespeichert werden sollen. Ebenfalls wird definiert in welcher Reihenfolge nach Daten- und Konfigurationsordnern gesucht werden soll.

Grundsätzlich sind folgende Speicherorte als Defaultwerte definiert:

  • $HOME/.local/share für alle Userdaten
  • $HOME/.config für alle Konfigurationsdaten

Es gibt einige Programme, welche sich an diese Spezifikation halten. Einige Programme legen jedoch alles (Daten und Konfigurationen) unter $HOME/.config ab. Doch leider schreiben die meisten Programme ihre Daten/Konfigurationen nur unter $HOME, und somit kommt es zu der Anfangs erwähnten unübersichtlichen Ordnerstruktur im Home-Verzeichnis.

Daher mein Appell an alle Entwickler sich an diese Spezifikation zu halten. All jene, welche selbst keine Software schreiben, könnten Bugreports oder Feature-Request bei den einzelnen Softwareprojekten eintragen um somit auf diesen Standard hinzuweisen.
Aber auch Canonical’s Design und Usability Team hat sich diesem Thema schon angenommen. Für Ubuntu 9.10 (Karmic Koala) gibt es die Initiative “One Hundred Paper Cuts“, welche “kleine” Usability-Probleme beheben soll. In einem Dokument im Ubuntu-Wiki wird das Thema “XDG folders” auch aufgeführt. Jetzt müssen sich nur mehr die Entwickler der einzelnen Softwareprojekte um dieses Thema kümmern.

Zuletzt habe ich noch einen Tipp für alle Python-Programmierer unter euch. Freedesktop.org stellt noch eine Python Library zur Verfügung, welche es erleichtert sich an die Standards zu halten. Die Library findet man unter: http://freedesktop.org/wiki/Software/pyxdg.

Installation von CUDA auf Ubuntu 8.10

Posted on June 11th, 2009 in Multimedia, Programme, Programmierung, Ubuntu | No Comments »

cuda

CUDA steht für Compute Unified Device Architecture, und ist Nvidias streamcomputing API, AMDs API-Pedant nennt sich Brook+.

Ubuntu 8.10 kommt mit Nvidia-Treiber 177, deshalb kommt CUDA 2.0. zum Einsatz. Mit Mai 2009 ist CUDA 2.2 aktuell.

Den CUDA driver (NVIDIA Driver for Linux 32/64-bit with CUDA Support (177.73)) gibts unter http://www.nvidia.com/object/cuda_get.html, ebenso wie das CUDA Toolkit und die CUDA SDK Samples.

Es empfiehlt sich

export CUDA_HOME=/usr/local/cuda

im zb. ~/.bashrc zu setzen.

Die Installation funktioniert problemlos.

ray
realtime raytracing mit NVIDIA 9600: ca. 102 fps

Das NVIDIA_CUDA_SDK enthält ca. 25 Demos, von einfachen Bandwith-Test über CUDA/OpenGL Interaktion bis zum Volumerenderer.

Python-Ressourcen:

Python für CUDA http://mathema.tician.de/software/pycuda hat sich zum Ziel genommen, ein Python-API für CUDA zu schaffen.

Für scons gibt es eine CUDA-Erweiterung:
Scons CUDATool http://www.scons.org/wiki/CudaTool

Mit vim Dateien über FTP bearbeiten

Posted on June 10th, 2009 in Programme, Programmierung, Ubuntu | 1 Comment »

vim-logo

Immer wieder kommt es vor das ich doch noch auf die alte Methode Dateien, die auf einen Webserver liegen, bearbeiten muss und keinen ssh Zugang habe und nur ein FTP Zugang angeboten wird. Anstatt sich aber die Datei immer wieder herunterzuladen, sie zu editieren und dann wieder hochzuladen bearbeite ich sie direkt mit vim über das Programm FTP im Hintergrund. Dazu sollte in ~/.netrc die Login Daten des FTP Server eingetragen werden, damit der Login ohne Aufforderung passiert.

Zunächst wird die netrc neu angelegt und mit vim geöffnet:

vim ~/.netrc

In der netrc werden die Daten des FTP Servers ausgefüllt:

machine ftp.example.com
login example
password example

netrc speichern:

:w!

Die Datei darf nur von User selbst lesbar sein, darum noch ein chmod auf netrc direkt in vim, mit ! werden Befehle in der shell ausgeführt, das % steht für den aktuell offenen Dateinamen:

:!chmod 600 %

Nun sollte es schon möglich sein sich auf den Server zu verbinden, e(dit) steht für Datei bearbeiten:

:e ftp://ftp.example.com

danach sollte man sich im root des Servers befinden und einen Verzeichnis Baum angezeigt bekommen. Es ist natürlich auch möglich direkt eine Datei über den Pfad anzusprechen und sie zu bearbeiten und zu sichern:

:e ftp://ftp.example.com/htdocs/index.html