Seite 1 von 3
Re: Shutdowner - noch so ein Shutdown-Timer ;)
Verfasst: Montag 23. Juli 2012, 16:52
von Py-Prog
cofi hat geschrieben:Das viel wichtigere Argument fuer eine `main` Funktion ist, dass man genau sieht welche Variablen beeinflusst werden: Lokale Variablen und globale nur mit `global`.
Bei einem "main-Block" kann man beliebig globale Variablen benutzen ohne das zu kennzeichnen. Was nach Freiheit klingt, macht es aber nur schwerer fuer den Leser den Code nachzuvollziehen.
Stimmt das mit dem root.destroy() hätte ja gar nicht funktioniert weil die variable nicht global war. Dann endere ich das bei meinen Programmen jetzt auch um.
Aber ich dachte wenn man global her nimmt macht man "immer" etwas falsch?
Re: Shutdowner - noch so ein Shutdown-Timer ;)
Verfasst: Montag 23. Juli 2012, 17:11
von deets
Wenn man "immer" etwas falsch machen wuerde, dann wuerde das bedeuten man koennte es aus der Sprache werfen.
Man macht "so gut wie immer" etwas falsch, und ich kann mich nicht erinnern, wann ich es in den letzten Monaten oder gar Jahren verwenden musste. Um ehrlich zu sein: mir faellt auf Anhieb noch nicht mal ein Fall ein, wo es denn noetig waere... Aber vielleicht hat da wer anders ne Idee.
Re: Shutdowner - noch so ein Shutdown-Timer ;)
Verfasst: Montag 23. Juli 2012, 17:19
von Py-Prog
Also Prinzipiell das gleiche wie mit der exec() Funktion die ich vergessen sollte das es sie gibt.
Re: Shutdowner - noch so ein Shutdown-Timer ;)
Verfasst: Montag 23. Juli 2012, 17:49
von EyDu
Py-Prog hat geschrieben:Also Prinzipiell das gleiche wie mit der exec() Funktion die ich vergessen sollte das es sie gibt.
Einfach weiter vergessen, dass es global und exec überhaupt gibt. Wie auch deets kann ich mich an keine Situation in den letzten Jahren erinnern, in denen ich eins von beiden hätte sinnvoll einsetzen könnten.
Re: Shutdowner - noch so ein Shutdown-Timer ;)
Verfasst: Montag 23. Juli 2012, 18:14
von Dav1d
EyDu hat geschrieben:Einfach weiter vergessen, dass es global und exec überhaupt gibt. Wie auch deets kann ich mich an keine Situation in den letzten Jahren erinnern, in denen ich eins von beiden hätte sinnvoll einsetzen könnten.
Wenn es mal schnell gehen muss:
Code: Alles auswählen
import weechat as w
from subprocess import check_call
from time import time
w.register('notify', 'dav1d', '1.0', 'GPL', 'uses libnotify to notify on highlight', '', '')
INTERVAL = 30
last = 0
def notify_send(title, msg, icon):
check_call(['notify-send', title, msg, '-i', icon])
def notify(data, signal, msg):
global last
print signal
if time() - last > INTERVAL and not msg.split()[0] == '--':
n = 'Highlight' if signal.endswith('highlight') else 'Private Message'
title = '{}: {}'.format(n, msg.split()[0])
notify_send(title, msg.split(None, 1)[1], 'notification-message-im')
last = time()
return w.WEECHAT_RC_OK
w.hook_signal('weechat_highlight', 'notify', '')
w.hook_signal('weechat_pv', 'notify', '')
Re: Shutdowner - noch so ein Shutdown-Timer ;)
Verfasst: Montag 23. Juli 2012, 18:33
von EyDu
Es war klar, dass ich das "sinnvoll" in meinem Beitrag hätte fett schreiben sollen. Natürlich kann man so etwas in einem Test machen, aber so etwas würde doch niemand ernsthaft in produktivem Code nutzen wollen.
Re: Shutdowner - noch so ein Shutdown-Timer ;)
Verfasst: Montag 23. Juli 2012, 19:22
von lunar
@Dav1d: Ich sehe nicht, warum "global" in diesem Beispiel
sinnvoll sein sollte… ich würde ja einen Dekorator implementieren, um die Ausführung einer Funktion zu begrenzen:
Code: Alles auswählen
def throttled(limit):
def decorator(func):
self = lamda: pass
self.last_call = 0
self.last_return_value = None
def wrapper(*args, *kwargs)
now = time()
if now - self.last_call > limit:
self.last_return_value = func(*args, **kwargs)
return self.last_return_value
return wrapper
return decorator
@throttled(limit=30)
def notify(data, signal, msg):
n = 'Highlight' if signal.endswith('highlight') else 'Private Message'
title = '{}: {}'.format(n, msg.split()[0])
notify_send(title, msg.split(None, 1)[1], 'notification-message-im')
Re: Shutdowner - noch so ein Shutdown-Timer ;)
Verfasst: Montag 23. Juli 2012, 19:24
von Py-Prog
lunar hat geschrieben:@Dav1d: Ich sehe nicht, warum "global" in diesem Beispiel sinnvoll sein sollte…
Alles ist zu etwas gut, und wenn es nur als schlechtes Beispiel dient.
Re: Shutdowner - noch so ein Shutdown-Timer ;)
Verfasst: Montag 23. Juli 2012, 20:10
von Scriptinggamer
Drifften wir nicht etwas ab?

Re: Shutdowner - noch so ein Shutdown-Timer ;)
Verfasst: Montag 23. Juli 2012, 21:06
von Dav1d
@lunar, wow schöne Lösung, darauf wäre ich nicht gekommen!
@Py-Prog, schönes Avatar, so bunt.
Re: Shutdowner - noch so ein Shutdown-Timer ;)
Verfasst: Montag 23. Juli 2012, 21:59
von Scriptinggamer
Also gibts nichts mehr am Shutdowner auszusetzen?
Gruß
Re: Shutdowner - noch so ein Shutdown-Timer ;)
Verfasst: Montag 23. Juli 2012, 22:31
von EyDu
Scriptinggamer hat geschrieben:Also gibts nichts mehr am Shutdowner auszusetzen?
Naja, wir kennen ja deine jetzige Version gar nicht.
Dav1d hat geschrieben:@Py-Prog, schönes Avatar, so bunt.
Mich hat das Bild nach wenigen Betrachtungen so sehr genervt, dass es im Filter gelandet ist.
Re: Shutdowner - noch so ein Shutdown-Timer ;)
Verfasst: Montag 23. Juli 2012, 22:55
von Dav1d
EyDu hat geschrieben:Schönes Avatar, so bunt.
Mich hat das Bild nach wenigen Betrachtungen so sehr genervt, dass es im Filter gelandet ist.
Ich finde es so toll, dass ich es sogar geklaut habe (das siehst du ja anscheinend nicht, dank dem Filter).
Das Forum braucht Sarkasmus-BBCodes
Re: Shutdowner - noch so ein Shutdown-Timer ;)
Verfasst: Dienstag 24. Juli 2012, 07:53
von Scriptinggamer
Ich hab ihn ersetzt, aber heute nachmittag hab ich Zeit ihn nochmal zu posten, ich glaub ich hab aber nur noch die shutdown befehle und die erkennung des Befehls geändert.
Gruß
Re: Shutdowner - noch so ein Shutdown-Timer ;)
Verfasst: Dienstag 24. Juli 2012, 08:02
von deets
Pack ihn doch bitte auf sowas wie Github oder pastebin - dann kann man das lesen. In github zB koennte man dann auch direkt sehen, *was* du geaendert hast. Und was du in jedem Fall aendern solltest ist die Zeit-Berechnung, dafuer ist datetime das geeignete Modul.
Re: Shutdowner - noch so ein Shutdown-Timer ;)
Verfasst: Dienstag 24. Juli 2012, 17:13
von Scriptinggamer
Ich hab mich bei diesem git angemelden und es heruntergeladen, wie lade ich jetzt meine datein hoch?
Gruß
Re: Shutdowner - noch so ein Shutdown-Timer ;)
Verfasst: Dienstag 24. Juli 2012, 17:22
von deets
Bei "git" kann man sich nicht anmelden. Wenn bei github. Und die haben ziemlich gute Tutorials. Verlinkt *direkt* von der Startseite:
https://github.com/
Schritte 1 - 4
Re: Shutdowner - noch so ein Shutdown-Timer ;)
Verfasst: Dienstag 24. Juli 2012, 17:40
von Dav1d
Re: Shutdowner - noch so ein Shutdown-Timer ;)
Verfasst: Dienstag 24. Juli 2012, 19:44
von Scriptinggamer
Jaaaaa, nach einigen Stunden hab ich es tatsächlich hinbekommen! Hier ist das Script also
Shutdowner
Mit datetime muss ich mich noch ein bisschen beschäftigen...
Wie kann ich z.B. mit denen Rechnen?
Gruß
Re: Shutdowner - noch so ein Shutdown-Timer ;)
Verfasst: Dienstag 24. Juli 2012, 20:27
von ocoal
Scriptinggamer hat geschrieben:... Mit datetime muss ich mich noch ein bisschen beschäftigen...
Wie kann ich z.B. mit denen Rechnen? ...
... mit
datime.timedeltaCode: Alles auswählen
>>> from datetime import datetime
>>> now = datetime.now()
>>> now
datetime.datetime(2012, 7, 24, 21, 23, 36, 328000)
>>> from datetime import timedelta
>>> now - timedelta(days=1)
datetime.datetime(2012, 7, 23, 21, 23, 36, 328000)
-Colin-