Adminzeugs

Aus Leo's Wiki

Wechseln zu: Navigation, Suche

Diese Seite ist mein öffentlicher Notizzettel von Dingen, die mich viel Zeit gekostet haben und die ich sicher irgendwann mal wieder brauche.

Inhaltsverzeichnis

Android

failed to install app

Offenbar haben andere selbes Problem. Apps aus dem Market lassen sich problemlos runterladen, aber dann heißt es "Installation fehlgeschlagen". Grund war bei mir, dass die SD-Card voll war. Das wurde aber nicht angezeigt. Einer der Tipps im Netz war, SD-Card entfernen. Nach dem SC-unmount hatte ich dann endlich die lang ersehnte sinnvolle Fehlermeldung: "Kein Speicherplatz".


Hilfreiche Analysetools

strace -eopen -f some_program
trace what some_program is actually doing. -eopen to show only attempts to open other files. -f to follow into sub-processes.
iotop -o -d10
to see who's using the disc. -o for only show who actually used the disc. -d10 to update every 10s
dstat 60
to see what's going on. cpu usage by user, system, idle, waiting, ??, disk read, write, network received, sent, ??, ??, interrupts, context switches
----total-cpu-usage---- -dsk/total- -net/total- ---paging-- ---system--
usr sys idl wai hiq siq| read  writ| recv  send|  in   out | int   csw 
 10   1  88   1   0   0|  87k   35k|1740B   47k|   0     0 |2003  2465 
  5   1  93   0   0   0|  64k   47k|1357B   45k|   0     0 |1741  1863 
  6   1  91   1   0   0|  39k   41k|1482B   53k|   0     0 |1817  2022 
  6   1  92   1   0   0|  74k   33k|1536B   52k|   0     0 |1869  2073 

alle .svn-Verzeichnisse strippen

Im Wurzelverzeichnis des SVN-Repositories:

$ find . -name ".svn" -exec echo '{}' \;

nas über nemo routen

am nas
# einen gültigen nameserver hinterlegen
echo nameserver 212.18.3.5>/etc/resolv.conf
# nemo als default gateway eintragen
route add default gw 192.168.0.20
am nemo
# ip forwarding aktivieren
echo 1 > /proc/sys/net/ipv4/ip_forward
# routing nach draußen aktivieren
iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE

Mit inn2 news server aufsetzen.

/etc/news/readers.conf

 auth "public" {
     hosts: "*"
     default: ""
 }
 auth "localhost" {
     hosts: "localhost, 127.0.0.1, stdin"
     default: ""
 }
 auth "users" {
     auth: "ckpasswd -f /etc/news/passwd"
 }
 access "public" {
     users: ""
     newsgroups: "*"
     access:RP
 }
 access "users" {
     users: "leo,moritz,van,michi"
     newsgroups: "*"
     access: RPA
 }
 access "localhost" {
     users: ""
     newsgroups: "*"
     access: RPA
 }

NNTP Clientseitig

Das befindet sich hier

Benutzerverwaltung

neuer Benutzer (passwd erzeugen)
htpasswd -c /etc/news/passwd leo
neuer Benutzer/Passwort ändern
htpasswd /etc/news/passwd leo

mercurial/hg

allgemeines

für Glob2 eine hilfreiche Zeile
cd glob2 && hg pull http://hg.globulation2.org/glob2 && hg update -C default && scons -j 5
für commits eine gültige e-mail adresse angeben
vi ~/.hgrc
[ui]
username = leo <leo.wandersleb@irgendwo.de>
eine Arbeitskopie holen
mkdir ~/projekte
cd ~/projekte
hg clone http://hg.globulation2.org/glob2 glob2test
branch anzeigen
hg branch
verfügbare branches anzeigen
hg branches
alle daten abrufen (vom bekannten server)
hg pull
speziell für globulation
ein .deb-Paket schnüren, das die aktuellste Entwicklerversion enthält und den Fingerabdruck zwecks Eindeutigkeit auch als Versionsbezeichnung verwendet.
hg pull http://hg.globulation2.org/glob2
hg update -C -r beta3-rc
vers=$(hg identify)
vers=${vers:0:12}
sudo checkinstall --nodoc --fstrans -y --pkgname glob2 --pkgversion $vers --type debian scons install

converting svn to mercurial

getting an svn repo converted to hg really was difficult when i hit problems with self signed cert problems. hg convert kept asking me to enter login and password but finally said "does not look like a subversion repo". the solution was to install the latest python-subversion package:

sudo aptitude install python-subversion
python -c "import svn.core; print svn.core.SVN_VER_MINOR" #should print something >=5 now

and doing an svn ls on my repo:

svn ls https://my/repo/somewhere

to get asked this:

Certificate information:                                                    
 - Hostname: my
 - Valid: from Thu, 19 Nov 2009 05:57:53 GMT until Fri, 19 Nov 2010 05:57:53 GMT
 - Issuer: me
 - Fingerprint: ....
(R)eject, accept (t)emporarily or accept (p)ermanently? p

and to then try again the actual import with

hg convert https://my/repo/somewhere mercurialSomewhere

bilderalbum

Mit so einer bash-Datei im Ordner mit Bildern kann man eine html-Datei bauen, die verkleinerte Versionen der Bilder als Thumbnails und als verlinkte Dateien verwendet:

#!/bin/bash
j=1;
wthumb=$1;
hthumb=$2;
wfull=$3;
hfull=$4;
cols=$5;
text=$6;
mkdir thumb;
mkdir full;
echo "<html><head><title>photos</title></head><body><center><table><tr>" > index.html;
for i in $(ls *.JPG *.jpg *.TIFF *.tiff *.png *.PNG); do
#if [ -a "./medium/medium$i" ]; then
 convert ./$i -resize "${wthumb}x$hthumb>" +profile '*' ./thumb/$i;
 convert ./$i -resize "${wfull}x$hfull>" +profile '*' ./full/$i;
 composite -compose atop -gravity southeast copy.png ./full/$i ./full/$i;
 echo "<td><a href='full/$i'><img src='thumb/$i' /></a></td>";
 if [ $j -ge $cols ];then
  echo "</tr><tr>";
  j=$[0];
 fi;
 j=$[$j+1];
#fi;
done >> index.html;
echo "</table></center></body>">>index.html
#for i in $(ls *.JPG); do  if [ -a "medium/medium$i" ]; then   echo "<td><a href='full/$i'><img src='thumb/$i' /></a></td>";   if [ $j -ge 5 ];then    echo "</tr><tr>";    j=$[0];   fi;   j=$[$j+1];  fi; done >> index.html;

verschlüsselte Platten

Hab mir ne neue Platte besorgt und wie die vorherigen verschlüsselt. Das ging dann so:

Erstmal alles gemountet, was so da war. Dies ist wichtig, da man sich ja irgendwie vergewissern sollte, dass nicht die vorher verwendeten Platten durch die neue an neue Positionen verschoben wurden und man aus Versehn die falsche Platte formatiert. Dies war bei mir auch der Fall und somit hieß meine neue Platte wie eine Alte, nämlich /dev/sda

parted /dev/sda
(parted) mklabel msdos //fragt mich nicht. amiga, bsd, dvh, gpt, mac, msdos, pc98, s390, sun, loop stehen zur Auswahl. msdos hab ich gelesen und glaub's
(parted) mkpartfs primary ext3 0% 100% //evtl. nicht nötig. irgendwie wurde ein neustart vor dem nächsten schritt nötig
(parted) q //zum Beenden
cryptsetup luksFormat --cipher aes-cbc-essiv:sha256 /dev/sda1
cryptsetup luksOpen /dev/sda1 data2 //dies erzeugt /dev/mapper/data2
mkfs.ext3 /dev/mapper/data2
mkdir /data2
mount /dev/mapper/data2 /data2/
chown -R leo:leo /data2/

swap

  1. swap partition anlegen (zB auf erstem IDE-Laufwerk (/dev/hda), zweite partition (dev/hda2)).
    # fdisk /dev/hda
    mit n Partition anlegen
  2. partition als swap ausweisen
    # mkswap -c /dev/hda2
  3. swap einschalten
    # swapon /dev/hda2
  4. swap für nächsten boot in /etc/fstab eintragen
    # echo "/dev/hda2    swap    swap    default 0 0" >> /etc/fstab

arbeiten mit Videos

Videos umkodieren

Um videos von einem in ein anderes Format zu konvertieren, kann man ffmpeg nutzen. mencoder ist in manchen Situationen sicher einfacher, nur der ist leider wegen diverser Probleme mit GPL nicht in Debian vorhanden. Also ffmpeg2theora:

ffmpeg2theora CANON121/VIDEO_0123.AVI

ja, meine Canon IXUS produziert riesige Dateien, die nicht g'scheid weiter verarbeitet werden können. Um alle auf einmal zu verkleinern, hab ich mir diese Zeilen ausgedacht:

IFS=$'\n' #Dateinamen mit " " werden sonst als zwei Dateinamen erkannt.
cd /path/to/my/photos/
for i in $( ls -d *CANON ); do
    cd /path/to/my/photos/$i
    mkdir videos
    mkdir videos/original
    mkdir videos/small
    for j in $( ls *.AVI ); do
        echo $j
        ffmpeg2theora -o videos/small/$j.ogv $j && mv $j videos/original/
    done
done
IFS=$' '

Anwendungsvideo selbst gemacht

Um das Programm, das bei meiner Diplomarbeit entstand aufzuzeichnen, habe ich statt

./main.Linux.2_std

einfach

captury ./main.Linux.2_std

bzw.

captury --output-dir=. ./main.Linux.2_std

ausgeführt, die Aufzeichnung mit F12 gestartet und gestoppt (Achtung: Programm beenden, ohne die Aufzeichnung zu stoppen verwirft diese).

Mit

cpsrecode -i ./main.Linux.2_std\ -\ 2008-08-16\ 00\:16\:18.cps -c theora -o ./out3.avi

kann man daraus nun einen Film machen, mit dem auch normale Abspielprogramme wie mplayer oder vlc was anfangen können.

Bilder einer Webcam zu einem Video verwursten

Das Bildmaterial speichern. Um verschiedene Bildernamen zu erhalten, habe ich das Datum angehängt. Eine fortlaufende Nummer geht auch, verträgt sich aber nicht mit Neustarts:

while true ; do d=$( date "+%s" ); wget http://siljasteinberg.de/keller/FotosWebcam/biergarten.jpg; mv biergarten.jpg biergarten_$d.jpg; sleep $(( 60 * 5 )); done

Bildernamen normalisieren (mit Hilfe von Links):

mkdir tmp
x=1; for i in $(ls -r -t *jpg); do counter=$(printf %06d $x); ln "$i" tmp/img"$counter".jpg; x=$(($x+1)); done

Bilder zu einem Film verbinden:

ffmpeg -f image2 -i tmp/img%06d.jpg -qscale 1 foo.mpg

sed

Stream edit kann man zum Beispiel verwenden, um für Dasher einen sogenannten Trainingstext aus einem Chatlog zu erzeugen. Meine Piratenpartei-Chatlogs sind mittlerweile 15MB groß, enthalten aber ein paar Unschönheiten.

cat ~/.purple/logs/irc/leo_ii@irc.freenode.net/#piratenpartei.chat/*.txt | sed 's/^.*: //g' | sed '/http/ d' | sed '/den Raum/ d' | sed '/(200/ d' | sed '/[^ ]?[^ ]/ d' > ~/Desktop/PiratTalk.txt

Das geht sicher besser, aber obige Zeile

s/^.*: //g
entsorgt alles bis zum letzten ": " einer Zeile. Bis zum ersten geht auch irgendwie, aber egal. Fliegen halt Zitateinleitungen raus.
/http/ d
entsorgt Zeilen mit urls
/den Raum/ d
entsorgt Systemmeldungen
/(200/ d
entsorgt auch Systemmeldungen


Backups

Meine Datenplatte back ich mit folgendem ~/.rsync/backup.sh up:

#!/bin/sh

exc=/home/leo/.rsync/exclude
backdir=/media/backup/backup/

sudo sh -c "
	rsync -ave --delete --delete-excluded --exclude-from=$exc / $backdir ;
	touch $backdir/BACKUP
"

~/.rsync/exclude sieht so aus:

- /dev/
- /proc/
- /sys/
- lost+found/
- /media/*
+ /media/3660469e-83f2-4768-a073-9a42c19fea95/stuff
- /media/3660469e-83f2-4768-a073-9a42c19fea95/stuff/video/bad
- *.dv

ulimit

/etc/security/limits.conf

enthält einige limits, wie zB die max. Zahl an Prozessen, an die man unter Umständen auch ohne böse dos-Attacken stößt.

cobertura

Ein hilfreicher Link um einen ant-task für Codeabdeckung mit Cobertura zu erstellen.

Debian Packaging

  1. downloaded 0.9.4 from http://dl.sv.nongnu.org/releases/glob2/0.9.4/glob2-0.9.4.tar.gz
  2. downloaded 0.9.3 debian package source: apt-get source glob2
  3. that created glob2-0.9.3 directory. I've copied glob2-0.9.4.tar.gz into glob2-0.9.3 directory.
  4. then, uupdate -u glob2-0.9.4.tar.gz
  5. cd ../glob2-0.9.4, and then dpkg-buildpackage
  6. that failed with missing build dependencies, installed that with apt-get
  7. then dpkg-buildpackage failed on a patch, and later on a missing AUTHORS. Fixed patching problem and copied data/authors.txt to AUTHORS.
  8. then dpkg-buildpackage succeeds

Pidgin

Pidgin hat mich in letzter Zeit mächtig geärgert mit der Meldung XMPP Message Error Message delivery to li...@gmail.com failed: (Code 503). Da ich das Problem lange nicht gelöst habe und meistens nach einer halben Stunde googlen aufgab, hat mich dieses Problem in Summe sicher Stunden gekostet. Letztlich lösen konnte ich das Problem, indem ich den Benutzer aus meiner Liste mehrfach entfernte und wieder hinzufügte. Beim letzten, schließlich erfolgreichen Versuch ohne Spitznamen.

Unkategorisiertes

svn st
svnversion
svn info
svn log build.xml |less
svn st|grep "C "|awk '{print $2}'|xargs svn diff
svn st|grep "C "|awk '{print $2}'|xargs svn st
Persönliche Werkzeuge