[Scripting Contest] Meillos Besucherlog

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
eggy
Beiträge: 3331
Registriert: 10.05.2008 11:23:50

[Scripting Contest] Meillos Besucherlog

Beitrag von eggy » 19.12.2018 21:51:48

Thema des diesmaligen Scripting Contest: Baue mit beliebigen (aka von-Meillo-gewünschten) Mitteln eine Grafik, die aus Meillos Besucherlog eine hübsche/bunte/gruslige/tolle/langweilige/informative/nichtssagende/etc Infografik erzeugt.

"beliebig": was immer man benutzt, ist dann aber etwas ausserhalb der Konkurenz, denn...
"von-Meillo-gewünscht": das Script soll am Ende regelmässig auf Meillos Serverchen laufen, und da wärs nett wenn es nicht auf zusätzliche Software angewiesen wäre. Wer also was "produktives" schreiben will, ist in der Wahl der Waffen etwas eingeschränkt.
@Meillo: was darfs denn sein? Ich nehme mal an, R gehört nicht dazu? Wie siehts mit gnuplot aus? python/matplotlib? php-gd?

Das Log gibts da: http://tmp.marmaro.de/dfde/dfde-besucher.log
Details zur Idee finden sich im Besucherrekord Thread: viewtopic.php?p=1192779#p1192779

Deadline wie immer Sonntagabend 18:00. Ob die nur für die Scripte oder auch für die Grafiken gelten soll, möge Meillo entscheiden.

Edit: @Meillo: wenn Du magst, editier den Post einfach

Edit von Meillo: @eggy: Okay. Ist aber nicht noetig. ;-)

Benutzeravatar
Meillo
Moderator
Beiträge: 8813
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: [Scripting Contest] Meillos Besucherlog

Beitrag von Meillo » 19.12.2018 22:08:29

LOL! :lol:


Das waere doch viel zu einfach, wenn ich euch einfach so sagen wuerde, was fuer Software ``von Meillo gewuenscht'' ist. Nee, da muesst ihr schon meinen Server cracken und selber schauen. ;-) Oder meine Ausserungen der letzten Jahre hier im Forum auswerten.

Ich gebe euch aber einen Tipp: Das Spendendiagramm generiere ich mit einem Script, das TRex geschrieben und hier im Forum gepostet hat. Die Technik die dort verwendet wird, habe ich. (Da TRex nun natuerlich einen Vorteil hat, muss ich ihn leider gleich vorweg schon disqualifizieren. :-P Sorry, TRex. Nicht traurig sein. Du darfst trotzdem Vorschlaege einsenden, bekommst halt maximal einen Trostpreis. :-D )

Hmm, wenn ich mir das genauer anschaue, dann sind deine Rateversuche gar nicht schlecht, eggy. Aeh ... hast du etwa schon auf meinem Server nachgeschaut? ;-)

Uebrigens habe ich natuerlich auch awk auf dem System, und Textoutput ist ebenso erlaubt. Wer bc oder ed scriptet kann Sonderpunkte bekommen ...

Hach, ich liebe diesen Thread jetzt schon! :-D
Use ed once in a while!

Benutzeravatar
TRex
Moderator
Beiträge: 8069
Registriert: 23.11.2006 12:23:54
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: KA

Re: Scripting Contest

Beitrag von TRex » 20.12.2018 12:40:44

ganz klassisch wieder ne Lösung mit python/matplotlib: NoPaste-Eintrag40539
Jesus saves. Buddha does incremental backups.
Windows ist doof, Linux funktioniert nichtDon't break debian!Wie man widerspricht

Benutzeravatar
Meillo
Moderator
Beiträge: 8813
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: Scripting Contest

Beitrag von Meillo » 20.12.2018 13:13:36

TRex hat geschrieben: ↑ zum Beitrag ↑
20.12.2018 12:40:44
ganz klassisch wieder ne Lösung mit python/matplotlib: NoPaste-Eintrag40539
Leider bekomme ich folgende Meldung:

Code: Alles auswählen

    import urllib.request
ImportError: No module named request
Debianpython-urllib3 ist aber installiert ... fuer Python2 ... auf einem aelteren Debian. Scheint mir eine aeltere Version von urllib zu sein. Kann man das im Code auch anders machen?
Use ed once in a while!

Benutzeravatar
TRex
Moderator
Beiträge: 8069
Registriert: 23.11.2006 12:23:54
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: KA

Re: [Scripting Contest] Meillos Besucherlog

Beitrag von TRex » 20.12.2018 16:23:16

urllib ist verdammt instabil über python 3.x hinweg... aber ich glaub, hier liegt das Problem darin, dass du es mit python2 ausgeführt hast :)

War eh nur 90% copypaste vom Spendenscript :D
Jesus saves. Buddha does incremental backups.
Windows ist doof, Linux funktioniert nichtDon't break debian!Wie man widerspricht

eggy
Beiträge: 3331
Registriert: 10.05.2008 11:23:50

Re: [Scripting Contest] Meillos Besucherlog

Beitrag von eggy » 20.12.2018 16:32:57

@Meillo: das disqualifizierte Dinotier da drüben schummelt! *mit Finger drauf zeig*

Deadline wie üblich Sonntagabend? Oder diesmal ohne?
Macht sonst noch jemand mit?

Benutzeravatar
Phineas
Beiträge: 348
Registriert: 20.06.2012 20:26:19

Re: [Scripting Contest] Meillos Besucherlog

Beitrag von Phineas » 22.12.2018 00:18:00

eggy hat geschrieben: ↑ zum Beitrag ↑
19.12.2018 21:51:48
... eine Grafik, die aus Meillos Besucherlog eine hübsche/bunte/gruslige/tolle/langweilige/informative/nichtssagende/etc Infografik erzeugt.
Da ich aber nun mal viel hübscher bin als Ihr, könnt Ihr gleich aufgeben.

(Ich weiß, dass "niemand" hier die Rechte auf Scherze gepachtet hat, aber ich probiere es trotzdem mal.)

Benutzeravatar
Meillo
Moderator
Beiträge: 8813
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: [Scripting Contest] Meillos Besucherlog

Beitrag von Meillo » 22.12.2018 08:39:05

TRex hat geschrieben: ↑ zum Beitrag ↑
20.12.2018 16:23:16
urllib ist verdammt instabil über python 3.x hinweg... aber ich glaub, hier liegt das Problem darin, dass du es mit python2 ausgeführt hast :)
Ich sag mal so: Pluspunkte, wenn es mit Python2 laeuft. ;-) Dein Spendenscript habe ich damals auch angepasst. Jetzt habe ich den urllib-Teil mal ersetzt durch:

Code: Alles auswählen

import urllib
...
html = urllib.urlopen('http://tmp.marmaro.de/dfde/dfde-besucher.log').read()
Und in dessen Folge dann ``str.split'' durch ``unicode.split'', aber dann krachts weiter unten nochmal und da hoeren meine Python-(Nicht-)Kenntnisse dann auf: Irgendwie scheint das Splitting nicht korrekt zu funktionien, weswegen dann irgendein Index out of bounds ist ...

Wobei ich mich auch dazu aufraffen koennte, mal ein Python3 zu installieren ...

War eh nur 90% copypaste vom Spendenscript :D
eggy hat geschrieben: ↑ zum Beitrag ↑
20.12.2018 16:32:57
@Meillo: das disqualifizierte Dinotier da drüben schummelt! *mit Finger drauf zeig*
Ich hab's schon geseh'n. Schummeln ist aber erlaubt. :-P Abschreiben und Ideen klauen wird sogar gern gesehen ... solange es am Ende keine Einheitsloesungen gibt. ;-)

Deadline wie üblich Sonntagabend? Oder diesmal ohne?
Lass es uns ruhig so machen wie immer: Veroeffentlichungen am Sonntag Abend. Anschliessend kann man die Loesungen diskutieren und noch auf fremden Loesungen aufbauende bessere Loesungen einreichen.

Ich freue mich ueber weitere Mitmacher. (Es ist egal in welcher Technologie. Die Aktion soll Spass machen; das ist das Wichtigste!)
Use ed once in a while!

Benutzeravatar
Meillo
Moderator
Beiträge: 8813
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: [Scripting Contest] Meillos Besucherlog

Beitrag von Meillo » 22.12.2018 08:41:52

Phineas hat geschrieben: ↑ zum Beitrag ↑
22.12.2018 00:18:00
eggy hat geschrieben: ↑ zum Beitrag ↑
19.12.2018 21:51:48
... eine Grafik, die aus Meillos Besucherlog eine hübsche/bunte/gruslige/tolle/langweilige/informative/nichtssagende/etc Infografik erzeugt.
Da ich aber nun mal viel hübscher bin als Ihr, könnt Ihr gleich aufgeben.
@Phineas: Da hast du was falsch verstanden. Das ist kein Beauty-Contest, sondern ein Scripting-Contest. Dein Script muss schoen sein oder seine Ausgabe, nicht aber der Programmierer. :-D
Use ed once in a while!

Benutzeravatar
whisper
Beiträge: 3184
Registriert: 23.09.2002 14:32:21
Lizenz eigener Beiträge: GNU Free Documentation License
Kontaktdaten:

Re: [Scripting Contest] Meillos Besucherlog

Beitrag von whisper » 22.12.2018 09:25:41

Phineas hat geschrieben: ↑ zum Beitrag ↑
22.12.2018 00:18:00
Da ich aber nun mal viel hübscher bin als Ihr, könnt Ihr gleich aufgeben.

(Ich weiß, dass "niemand" hier die Rechte auf Scherze gepachtet hat, aber ich probiere es trotzdem mal.)
Du grottenhässlicher Raabe?
Ich habe wenigstens Charakter und kann kochen :-)

Benutzeravatar
Meillo
Moderator
Beiträge: 8813
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: [Scripting Contest] Meillos Besucherlog

Beitrag von Meillo » 22.12.2018 09:34:31

whisper hat geschrieben: ↑ zum Beitrag ↑
22.12.2018 09:25:41
Ich habe wenigstens Charakter und kann kochen :-)
Die relevante Frage ist: Kannst du auch ein huebsches DFDE-Besucher-Diagramm generieren lassen? ;-)
Use ed once in a while!

Benutzeravatar
whisper
Beiträge: 3184
Registriert: 23.09.2002 14:32:21
Lizenz eigener Beiträge: GNU Free Documentation License
Kontaktdaten:

Re: [Scripting Contest] Meillos Besucherlog

Beitrag von whisper » 22.12.2018 10:11:28

Meillo hat geschrieben: ↑ zum Beitrag ↑
22.12.2018 09:34:31
whisper hat geschrieben: ↑ zum Beitrag ↑
22.12.2018 09:25:41
Ich habe wenigstens Charakter und kann kochen :-)
Die relevante Frage ist: Kannst du auch ein huebsches DFDE-Besucher-Diagramm generieren lassen? ;-)
Ja. Aber ich will nicht. In Fact, keine Zeit momentan, aber ich habe sowas ähnliches für Spam-Lern, mit gnuplot gemacht. Das kannst du anpassen.

Code: Alles auswählen

#!/bin/bash
gnuplot -persist <<-EOF
set title 'Gelernte SPAM E-Mails'
set ylabel 'Anzahl'
set xdata time
set timefmt '%Y-%m-%d'
set xrange ['2018-11-01':'2018-12-31']
plot '/tmp/x.dat'  using 1:2 with lines
EOF

Code: Alles auswählen

Datum           SPAM
2018-11-03       476 
2018-11-05       479
2018-11-08       487
2018-11-12       492   
2018-11-15       501   
2018-11-19       512   
2018-11-22       522   
2018-11-26       531   
2018-11-29       537   

eggy
Beiträge: 3331
Registriert: 10.05.2008 11:23:50

Re: [Scripting Contest] Meillos Besucherlog

Beitrag von eggy » 22.12.2018 11:30:13

Meillo hat geschrieben: ↑ zum Beitrag ↑
22.12.2018 08:39:05
Ich hab's schon geseh'n. Schummeln ist aber erlaubt. :-P Abschreiben und Ideen klauen wird sogar gern gesehen ... solange es am Ende keine Einheitsloesungen gibt. ;-)
Das Schummeln war nur aufs Codeposten vor Ablauf der Deadline bezogen.

An der jetzigen Aufgabe ist interessant, dass man die Daten sehr unterschiedlich interpretieren und darstellen kann. Mal sehen, ob alle in die gleiche Richtung gedacht haben.

RobertDebiannutzer
Beiträge: 385
Registriert: 16.06.2017 09:52:36

Re: [Scripting Contest] Meillos Besucherlog

Beitrag von RobertDebiannutzer » 22.12.2018 16:42:46

Da kann man doch nicht widerstehen... Und ich habe ja noch nie was mit awk gemacht...
Also hier eine einfache Lösung fürs Terminal. Die "dependencies" sind ja alle Standard.
[EDIT] Code entfernt. Tut mir wirklich leid, dass ich mein script nicht erst zum Veröffentlichungstermin veröffentlicht habe. Das habe ich nicht kapiert - ist mein erster "scripting contest". :oops: [/EDIT]
Der Multiplikationsfaktor "k", der vor Zeilen angezeigt wird, die zu lang sind fürs Terminal, ist natürlich nur ein ungefährer Wert, da er stets abgerundet ist. Dient also nur zur ungefähren Einschätzung der Größenordnung.
Auf einen Test, ob das Terminal von der Breite her ausreicht, habe ich mal verzichtet, damit es nicht zu unübersichtlich wird. (Und ist ja in diesem Fall auch nicht wirklich nötig.)
Zuletzt geändert von RobertDebiannutzer am 22.12.2018 18:10:20, insgesamt 1-mal geändert.

tobo
Beiträge: 1990
Registriert: 10.12.2008 10:51:41

Re: [Scripting Contest] Meillos Besucherlog

Beitrag von tobo » 22.12.2018 17:37:33

Wow, echt beeindruckend diese grassierende Leseschwäche hier...

RobertDebiannutzer
Beiträge: 385
Registriert: 16.06.2017 09:52:36

Re: [Scripting Contest] Meillos Besucherlog

Beitrag von RobertDebiannutzer » 22.12.2018 17:45:34

@tobo:
Falls Du mich meinst:
Meillo hat geschrieben: ↑ zum Beitrag ↑
19.12.2018 22:08:29
Uebrigens habe ich natuerlich auch awk auf dem System, und Textoutput ist ebenso erlaubt.
Meillo hat geschrieben: ↑ zum Beitrag ↑
22.12.2018 08:39:05
(Es ist egal in welcher Technologie. Die Aktion soll Spass machen; das ist das Wichtigste!)
Und wegen:
eggy hat geschrieben: ↑ zum Beitrag ↑
19.12.2018 21:51:48
"von-Meillo-gewünscht": das Script soll am Ende regelmässig auf Meillos Serverchen laufen,
Ich habe es fürs Terminal geschrieben und "less" dahintergehängt, damit ihr euch - falls ihr wollt - den von meinem Script generierten Output gemütlich anschauen könnt. Ist doch logisch? Falls mein Script irgendwo zum Einsatz kommen sollte, kann man das entfernen und den output woanders hin leiten - die Anzeigebreite muss mann dann halt als Variable statisch konfigurieren.
So oder so will man sich das Ergbnis - wenn ich das richtig verstanden habe - aber ja hauptsächlich anschauen und eigentlich wäre es ja auch gar nicht nötig, so ein script als cronjob oder so ausführen zu lassen?

thoerb
Beiträge: 1677
Registriert: 01.08.2012 15:34:53
Lizenz eigener Beiträge: MIT Lizenz

Re: [Scripting Contest] Meillos Besucherlog

Beitrag von thoerb » 22.12.2018 18:04:39

Deadline wie üblich Sonntagabend? Oder diesmal ohne?
Lass es uns ruhig so machen wie immer: Veroeffentlichungen am Sonntag Abend. Anschliessend kann man die Loesungen diskutieren und noch auf fremden Loesungen aufbauende bessere Loesungen einreichen.

RobertDebiannutzer
Beiträge: 385
Registriert: 16.06.2017 09:52:36

Re: [Scripting Contest] Meillos Besucherlog

Beitrag von RobertDebiannutzer » 22.12.2018 18:10:54

Entschuldigung, tut mir echt leid - Code entfernt... :oops:
(Vielleicht mag ein Moderator die Beiträge löschen, dann ist der Thread wieder aufgeräumt.)

RobertDebiannutzer
Beiträge: 385
Registriert: 16.06.2017 09:52:36

Re: [Scripting Contest] Meillos Besucherlog

Beitrag von RobertDebiannutzer » 23.12.2018 20:32:19

Äh, jetzt? Eigentlich wollte ich warten, bis jemand anderes gepostet hat, aber jetzt ist ja schon längst über 18:00...
Dafür habe ich mein Scriptchen doch nochmal überarbeitet, sodass es nun etwas elaborierter ist:

Code: Alles auswählen

#!/bin/sh
# tested with: bash, dash, busybox ash, busybox sh
# checked with "shellcheck -s bash" / "shellcheck -s dash" (no complaints)

# depends on:
# awk  (package mawk - that is what I have)
# tput (package ncurses-bin) (not needed for option "-o")
# wget (package wget)
# less (package less) (not needed for option "-o")

# options:
#  -o[number] output to stdout instead of piping it to less
#             a number is required to calculate display width

# if output to stdout, use cat
if [ -n "$1" ]; then
	cmd () { cat; }
else
	if [ ! -t 1 ]; then
		# output to less, but no terminal? Seems wrong...
		exit 1
	fi
	cmd () { less; }
fi

# calculate display width
case "$1" in
	'-o'*)
		cols="${1#\-o}"
		;;
	*)
		cols=$(tput cols)
		;;
esac

# get log
log=$(wget -qO- http://tmp.marmaro.de/dfde/dfde-besucher.log)

# calculate length of (date)+(time)+(two spaces)
len=$(echo "$log" | awk 'END{ print length($1)+length($2)+2 }')

# available columns are cols-len
cols=$((cols-len))
# guarantee an arbitrary minimum value for display width
if [ $cols -lt 10 ]; then
	exit 1
fi

# "j = $5/2" is an attempt to ensure that most lines are not too long
# print "##################" if a new day begins
echo "$log" | awk -v cols=$cols '{
	if ($1 != old) {
		print "##################"
	}
	old = $1
	printf "%s %s ", $1, $2
	j = $5/2
	if (j > cols) {
		k = int(j/cols)
		j = cols-length(k)-1
		printf "%sx", k
	}
	for (i=0; i<j && i<cols; i++) {
		printf "-"
	}
	printf "\n"
}' | cmd
Edit: Tippfehler...

eggy
Beiträge: 3331
Registriert: 10.05.2008 11:23:50

Re: [Scripting Contest] Meillos Besucherlog

Beitrag von eggy » 23.12.2018 21:15:04

Ich hätts ja eigentlich mit R gemacht,
aber da ich auf Meillos Serverchen kein R hab rumliegen sehen ;) ,
mal was mit Python:
pastebin/?mode=view&s=40543

Hab ne ähnliche Lösung, wie die vom Dino, aber mit nem etwas anderen Ansatz.
gallery/image/1977
oben Script von TRex, unten meins.

Benutzeravatar
detix
Beiträge: 1702
Registriert: 07.02.2007 18:51:28
Wohnort: MK

Re: [Scripting Contest] Meillos Besucherlog

Beitrag von detix » 24.12.2018 10:55:28

Schummeln ist aber erlaubt. Abschreiben und Ideen klauen wird sogar gern gesehen
Na dann klaue ich mal bei @whisper mit Debiangnuplot...

Code: Alles auswählen

cd /tmp
wget http://tmp.marmaro.de/dfde/dfde-besucher.log

echo "set term qt persist size 800,400
set title 'dfde Besucher'
set xlabel \"\nDatum und Uhrzeit\"
set ylabel 'Besucheranzahl'
set xdata time
set timefmt '%Y-%m-%d %H:%M'
set xrange ['2018-12-01':'2018-12-31']
set yrange [0:200]
set clip two
plot ['2018-12-01':'2018-12-31'] 'dfde-besucher.log' using 1:5 with lines" > dfde.plt
Aufruf mit: gnuplot dfde.plt -
Das Minuszeichen am Ende ist nur dafür da um gnuplot nicht zu beenden, nur dann funktioniert zoomen oder das Bild mit den Pfeiltasten verschieben...
Gruß an alle Debianer, und immer daran denken:
Macht ohne Haftung funktioniert nicht!

cronoik
Beiträge: 2049
Registriert: 18.03.2012 21:13:42
Lizenz eigener Beiträge: GNU Free Documentation License

Re: [Scripting Contest] Meillos Besucherlog

Beitrag von cronoik » 26.12.2018 01:28:45

Noch ein weiterer Python3 Beitrag (verspaetet und deshalb außer Konkurrenz):
https://gitlab.com/cronoik/dfdescriptin ... Visitorlog
Hilf mit unser Wiki zu verbessern!

eggy
Beiträge: 3331
Registriert: 10.05.2008 11:23:50

Re: [Scripting Contest] Meillos Besucherlog

Beitrag von eggy » 26.12.2018 01:51:53

bunt :D

Antworten