GPN8:Code: Unterschied zwischen den Versionen

aus dem Wiki des Entropia e.V., CCC Karlsruhe
(angelegt, noch nicht fertig, aber es gibt Pizza)
 
(+kat)
 
(3 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
Auf dieser Seite kann sich jeder verewigen, der auf der GPN etwas programmiert hat.
= Code und Basteleien =
 
Auf dieser Seite kann sich jeder verewigen, der auf der GPN etwas programmiert oder gebaut hat.


== [[user:kamikaze]] ==
== [[user:kamikaze]] ==


=== Objektorientierte Shell-Skripte ===
Ich habe ein kleines Framework für objektorientierte Shell-Skripte geschrieben. Das wird irgendwann in http://bsdadminscripts.sf.net/ genutzt.
Ich habe ein kleines Framework für objektorientierte Shell-Skripte geschrieben. Das wird irgendwann in http://bsdadminscripts.sf.net/ genutzt.


Den Code habe ich mal vorläufig in BSDForen.de veröffentlicht: http://www.bsdforen.de/showthread.php?t=23245
Den Code habe ich mal vorläufig auf BSDForen.de veröffentlicht: http://www.bsdforen.de/showthread.php?t=23245
 
===  Code-Kommentare ===
Im Rahmen einer kleinen Unterhaltung über Code-Kommentare, habe ich dieses kleine Skript hier produziert, das ausspuckt wir groß der Kommentaranteil in einem Shell-Skript ist. Das ganze funktioniert unter FreeBSD RELENG_7. Kann sein, das man mit GNU ein paar Parameter anpassen muss.
 
#!/bin/sh -f
apply -3 "sh -c 'echo %1: \$((%2 \* 100000 / %3 / 1000)).\$((%2 \* 100000 / %3 % 1000)) %'" $( (
echo lines words bytes
<nowiki> cat "$@" | grep -Exv '#\!.*|[[:space:]]*' | grep -E '^[[:space:]]*#' | wc</nowiki>
<nowiki> cat "$@" | grep -Exv '#\!.*|[[:space:]]*' | wc</nowiki>
) | rs -t 3 3)
 
==== Update ====
Inzwischen habe ich erfahren, dass die Befehle apply und rs unter den gängigen GNU/Linux-Systemen nicht verfügbar sind. Also erkläre ich hier mal was sie machen:
 
; rs -t 3 3
: Betrachtet die eingehenden Daten als 3x3 Matrix und transformiert sie.
; apply -3
: Führt einen Befehl mit jeweils 3 der Parameter die nach dem Befehl kommen aus. Bei 9 Parametern wird der Befehl also 3 mal ausgeführt.
 
== [[Benutzer:Nomeata]] ==
 
Für L-seed gabs dieses „Alle Twit zu einem Thema suchen und eines nach dem anderen eine Minute lang in eine Datei schreib“-Skript. Braucht libwww-perl, libxml-xpath-perl und lynx.
<pre>
while sleep 60;
do
GET "http://search.twitter.com/search.atom?q=%23GPN8&since_id=$(cat msg.id)" > msg.atom
if xpath -q -e "//entry" msg.atom |grep -q .
then
xpath -q -e "//entry[last()]/id/text()" msg.atom |cut -d: -f3 > msg.id
echo -n \
$(echo $(
xpath -q -e '//entry[last()]/author/name/text()' msg.atom  |
lynx -dump -stdin|lynx -dump -stdin -nolist |
cut -d\( -f1
))"@twitter:" \
$(
xpath -q -e '//entry[last()]/content/text()' msg.atom  |
lynx -dump -stdin|lynx -dump -stdin -nolist
) \
> msg.txt
else
echo -n > msg.txt
fi
done
</pre>
 
[[Kategorie:GPN8]]

Aktuelle Version vom 5. Juli 2009, 17:41 Uhr

Code und Basteleien

Auf dieser Seite kann sich jeder verewigen, der auf der GPN etwas programmiert oder gebaut hat.

user:kamikaze

Objektorientierte Shell-Skripte

Ich habe ein kleines Framework für objektorientierte Shell-Skripte geschrieben. Das wird irgendwann in http://bsdadminscripts.sf.net/ genutzt.

Den Code habe ich mal vorläufig auf BSDForen.de veröffentlicht: http://www.bsdforen.de/showthread.php?t=23245

Code-Kommentare

Im Rahmen einer kleinen Unterhaltung über Code-Kommentare, habe ich dieses kleine Skript hier produziert, das ausspuckt wir groß der Kommentaranteil in einem Shell-Skript ist. Das ganze funktioniert unter FreeBSD RELENG_7. Kann sein, das man mit GNU ein paar Parameter anpassen muss.

#!/bin/sh -f

apply -3 "sh -c 'echo %1: \$((%2 \* 100000 / %3 / 1000)).\$((%2 \* 100000 / %3 % 1000)) %'" $( (
	echo lines words bytes
	cat "$@" | grep -Exv '#\!.*|[[:space:]]*' | grep -E '^[[:space:]]*#' | wc
	cat "$@" | grep -Exv '#\!.*|[[:space:]]*' | wc
) | rs -t 3 3)

Update

Inzwischen habe ich erfahren, dass die Befehle apply und rs unter den gängigen GNU/Linux-Systemen nicht verfügbar sind. Also erkläre ich hier mal was sie machen:

rs -t 3 3
Betrachtet die eingehenden Daten als 3x3 Matrix und transformiert sie.
apply -3
Führt einen Befehl mit jeweils 3 der Parameter die nach dem Befehl kommen aus. Bei 9 Parametern wird der Befehl also 3 mal ausgeführt.

Benutzer:Nomeata

Für L-seed gabs dieses „Alle Twit zu einem Thema suchen und eines nach dem anderen eine Minute lang in eine Datei schreib“-Skript. Braucht libwww-perl, libxml-xpath-perl und lynx.

while sleep 60;
do
GET "http://search.twitter.com/search.atom?q=%23GPN8&since_id=$(cat msg.id)" > msg.atom 
if xpath -q -e "//entry" msg.atom |grep -q .
then
	xpath -q -e "//entry[last()]/id/text()" msg.atom |cut -d: -f3 > msg.id
	echo -n \
	$(echo $(
		xpath -q -e '//entry[last()]/author/name/text()' msg.atom  |
		lynx -dump -stdin|lynx -dump -stdin -nolist |
		cut -d\( -f1
	))"@twitter:" \
	$(
		xpath -q -e '//entry[last()]/content/text()' msg.atom  |
		lynx -dump -stdin|lynx -dump -stdin -nolist
	) \
	 > msg.txt
else
	echo -n > msg.txt
fi
done