Benutzer:Thomas: Unterschied zwischen den Versionen

Aus LaborWiki
Wechseln zu: Navigation, Suche
(meine Projekte)
 
(14 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 2: Zeile 2:
  
 
* Jabber: schnittchen ÄT das-labor PUNKT org
 
* Jabber: schnittchen ÄT das-labor PUNKT org
 +
 +
==meine Vorträge==
 +
 +
* "Linux Konsolen Basics" aus der [[Linux Basics Vortragsreihe]]
 +
* [[Lightning Talks|Lightning-Talk]] "Warum Ruby - 5+ Gründe in 15 Minuten"
 +
 +
==meine Projekte==
 +
(unvollständig...)
 +
 +
* [[Partitionmasker]]
 +
* [https://www.das-labor.org/trac/browser/tools/muelltermine Parser und Generator] für die Abholtermine der drei Müllsorten: macht aus .ics und html-Schnippsel ein einziges .ics
 +
* [[partialmock]] zur Anwendung in Tests in Ruby: Methoden für die Laufzeit eines Tests neu definieren
 +
* [[https://das-labor.org/wiki/Kalender#Weiterverarbeitung_der_Labor-Termine Neue Fassung]] des Skripts, das unseren Kalender parst und daraus RSS-Feeds und einen HTML-Schnippsel macht
 +
* [[LibBracket]]
  
 
==Tipps und Tricks==
 
==Tipps und Tricks==
  
 
===Dienste, die keine X-Clients sind, mit der Gnome Session starten und beenden===
 
===Dienste, die keine X-Clients sind, mit der Gnome Session starten und beenden===
Das Problem: Dienste, die selbst keine X-Clients sind, werden beim Beenden der X-Session nicht automatisch beendet. Es ist nämlich keineswegs so, dass das Gnome Session Management allen eingetragenen Prozessen zum Schluss ein entsprechendes Signal sendet -- vielmehr müssen Clients das Ende der Session daraus ableiten, dass ihre Verbundung zum X-Server stirbt.
+
Das Problem: Dienste, die selbst keine X-Clients sind, werden beim Beenden der X-Session nicht automatisch beendet. Es ist nämlich keineswegs so, dass das Gnome Session Management allen eingetragenen Prozessen zum Schluss ein entsprechendes Signal sendet -- vielmehr müssen Clients das Ende der Session daraus ableiten, dass ihre Verbindung zum X-Server stirbt.
  
 
Das folgende Skript macht sich zu Nutze, dass die dbus-Session zusammen mit der X-Session stirbt. Ein beliebiger X-Client, der nichts tut (dem Nutzer nicht in die Quere kommt), würde es hier tun. Falls jemandem eine "leichtere" Lösung einfällt: bitte melden!
 
Das folgende Skript macht sich zu Nutze, dass die dbus-Session zusammen mit der X-Session stirbt. Ein beliebiger X-Client, der nichts tut (dem Nutzer nicht in die Quere kommt), würde es hier tun. Falls jemandem eine "leichtere" Lösung einfällt: bitte melden!
Zeile 26: Zeile 40:
 
Dieses Skript anpassen, ausführbar ablegen und in die Gnome-Session eintragen (System->Einstellungen->Sitzungen, Tab Startprogramme).
 
Dieses Skript anpassen, ausführbar ablegen und in die Gnome-Session eintragen (System->Einstellungen->Sitzungen, Tab Startprogramme).
  
==Dinge, die mal jemand machen sollte (Software)==
+
===Auf einem Socket sniffen (unidirektional)===
  
* -U Option für mkswap, um die UUID zu setzen
+
Die folgende Bash-pipeline gibt wieder, was Prozess <tt>''PID''</TT> auf seinem file descriptor <tt>''FD''</tt> liest:
 +
 
 +
strace -p ''PID'' -e read=''FD'' 2>&1 | egrep "^ \| .....  " | cut -b 11-33,35-58 | ruby -n -e 'split().each { |str| $stdout.putc str.hex }'
 +
 
 +
Will man sich das Ergebnis ansehen, sollte man noch <tt>| hexdump -C | less</tt> anhängen!
 +
 
 +
Diese Lösung hängt leider empfindlich vom Ausgabeformat von strace ab.
 +
 
 +
Geht vielleicht nur bei little endian Rechnern, läßt sich aber leicht anpassen. Auch der Write-Fall ist entsprechend machbar.
 +
 
 +
===Liste aller Sektionen einer langen Manpage===
 +
 
 +
Die folgende Pipeline gibt alle Sektionen (und ein klein wenig mehr) von der bash-Manpage:
 +
man bash | grep -Ev ’^( |$)’
  
 
==Howto-mäßige Projekte==
 
==Howto-mäßige Projekte==
  
* [[Benutzer:Thomas/VirtualBox Lösungen]]
+
* [[HowTo: LVM+Cryptsetup triple layer mit Hibernate-Fähigkeit]]
* [[Benutzer:Thomas/LVM+Cryptsetup triple layer mit Hibernate-Funktion]]
 
  
 
==Dies+Das==
 
==Dies+Das==
Zeile 43: Zeile 69:
 
* [[Benutzer:Thomas/Test3/doc]]
 
* [[Benutzer:Thomas/Test3/doc]]
 
* [[Benutzer:Thomas/Lebenszyklus einer Labor-Veranstaltung]]
 
* [[Benutzer:Thomas/Lebenszyklus einer Labor-Veranstaltung]]
 
+
* [[Benutzer:Thomas/Startseitenentwurf]]
==Nachrichtentest==
 
Hier könnte Ihre Werbung stehen!
 

Aktuelle Version vom 17. April 2011, 00:57 Uhr

Kontakt[Bearbeiten]

  • Jabber: schnittchen ÄT das-labor PUNKT org

meine Vorträge[Bearbeiten]

meine Projekte[Bearbeiten]

(unvollständig...)

  • Partitionmasker
  • Parser und Generator für die Abholtermine der drei Müllsorten: macht aus .ics und html-Schnippsel ein einziges .ics
  • partialmock zur Anwendung in Tests in Ruby: Methoden für die Laufzeit eines Tests neu definieren
  • [Neue Fassung] des Skripts, das unseren Kalender parst und daraus RSS-Feeds und einen HTML-Schnippsel macht
  • LibBracket

Tipps und Tricks[Bearbeiten]

Dienste, die keine X-Clients sind, mit der Gnome Session starten und beenden[Bearbeiten]

Das Problem: Dienste, die selbst keine X-Clients sind, werden beim Beenden der X-Session nicht automatisch beendet. Es ist nämlich keineswegs so, dass das Gnome Session Management allen eingetragenen Prozessen zum Schluss ein entsprechendes Signal sendet -- vielmehr müssen Clients das Ende der Session daraus ableiten, dass ihre Verbindung zum X-Server stirbt.

Das folgende Skript macht sich zu Nutze, dass die dbus-Session zusammen mit der X-Session stirbt. Ein beliebiger X-Client, der nichts tut (dem Nutzer nicht in die Quere kommt), würde es hier tun. Falls jemandem eine "leichtere" Lösung einfällt: bitte melden!

#!/usr/bin/ruby
SUB_COMMAND = "Pfad des Dienstes"
COMMAND_ARGS = "-d -f blahfu".split
TERMINATE_SIG = "TERM" #Ändere zu INT für den Rails Webrick ./script/server

child = fork { exec(SUB_COMMAND, *COMMAND_ARGS) }
puts child

#ein x-client, der sich mit dem Ende der Sitzung beendet
system("dbus-monitor", "sender='yyy.invalid'")

Process.kill(TERMINATE_SIG, child)
Process.wait(child, Process::WNOHANG)

Dieses Skript anpassen, ausführbar ablegen und in die Gnome-Session eintragen (System->Einstellungen->Sitzungen, Tab Startprogramme).

Auf einem Socket sniffen (unidirektional)[Bearbeiten]

Die folgende Bash-pipeline gibt wieder, was Prozess PID auf seinem file descriptor FD liest:

strace -p PID -e read=FD 2>&1 | egrep "^ \| .....  " | cut -b 11-33,35-58 | ruby -n -e 'split().each { |str| $stdout.putc str.hex }'

Will man sich das Ergebnis ansehen, sollte man noch | hexdump -C | less anhängen!

Diese Lösung hängt leider empfindlich vom Ausgabeformat von strace ab.

Geht vielleicht nur bei little endian Rechnern, läßt sich aber leicht anpassen. Auch der Write-Fall ist entsprechend machbar.

Liste aller Sektionen einer langen Manpage[Bearbeiten]

Die folgende Pipeline gibt alle Sektionen (und ein klein wenig mehr) von der bash-Manpage:

man bash | grep -Ev ’^( |$)’

Howto-mäßige Projekte[Bearbeiten]

Dies+Das[Bearbeiten]