re-Modul auch für "Kleinigkeiten" verwenden?

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
BlackJack

@mutetella: Zu sagen es müsste möglich sein eine Software intuitiv bedienbar zu machen mit der Einschränkung "was immer das konkret heissen mag", ist irgendwie sinnlos. Entweder Du kannst definieren was das bedeutet, oder das klingt irgendwie nach "ich weiss zwar nicht wie, aber das muss doch irgendwie magisch mitdenken können und von jedem bedienbar sein ohne sich damit wirklich auseinandersetzen zu müssen". Also eine "mach was ich denke, nicht was ich sage"-Schnittstelle. Hätte ich auch gerne -- aber ich halte lieber nicht die Luft an, bis es das gibt. ;-)

Die Ribbons waren ein Schritt in die richtige Richtung? "Früher" hatte StarOffice/OpenOffice Kontextmenüs, welche nur Punkte angezeigt haben, die im aktuellen Zustand des Dokuments sinnvoll waren. Da haben sich immer wieder Leute beschwert, dass es für sie nicht nachvollziehbar ist wann und warum welcher Menüpunkt da ist oder eben auch nicht, und dass MS Office das viel besser gelöst hat. Dann haben sie's bei OpenOffice statisch gemacht, wie bei MS Office. Als nächstes kam dann Microsoft auf die Idee mit den Ribbons immer nur die Funktionalität anzubieten, die im aktuellen Zustand des Dokuments gerade sinnvoll sind. :-) Unintuitiv und verwirrend fanden immer irgendwelche Leute einen der Ansätze. Oder auch beide. IMHO ist es eben *nicht* möglich eine intuitive Schnittstelle auf eine hochkomplexe Software zu setzen.

Es mag nicht nachvollziehbare "Wege" im Programm geben, die sollte man beseitigen, aber irgendeinen Weg muss es ja geben ein bestimmtes Ergebnis zu erreichen und da muss sich der Benutzer natürlich an den Weg halten, der vom Programm vorgesehen ist. Wie sollte es auch anders gehen?

Nimmt ``-b`` mal einen und mal zwei Argumente entgegen? Das wäre glaube ich das erste Programm was ich sehe was das macht. Würde ich nicht machen -- da kommt man früher oder später zu Mehrdeutigkeiten wenn man auch Positionsargumente hat. Auch wenn immer die gleiche Anzahl von Argumenten pro Option eindeutig wäre, würde ich das auch nicht machen. Ist zu ungewöhnlich.

Und wenn Deine Frau tatsächlich ``denkdran -b 14.05.2011 15:00 -e 14.05.2011 16:00`` eingibt, würde das Programm dass dann schlucken oder eine Fehlermeldung ausgeben? :-P
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Leonidas hat geschrieben: Kleines Beispiel: einige Leute wissen nicht dass GNU tar inzwischen ziemlich gut mit Archivformaten umgehen kann, so das man zum entpacken von ``bz2`` eigentlich nie die ``j``-Option hernehmen muss -- tar erkennt selbst dass es ein bzip2-komprimiertes Archiv ist.
Eine nette "Falle" übrigens; ich bin es unter Linux auch immer so gewohnt gewesen und dann auf dem Webspace unserer Uni auf die Nase gefallen, da tar unter Solaris oder einem *BSD diese Option eben nicht hatte. Da musste man tatsächlich nachträglich ein bzip2 drüber laufen lassen... naja, das mal kurz Offtopic :-D
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
mutetella
User
Beiträge: 1695
Registriert: Donnerstag 5. März 2009, 17:10
Kontaktdaten:

BlackJack hat geschrieben:Zu sagen es müsste möglich sein eine Software intuitiv bedienbar zu machen mit der Einschränkung "was immer das konkret heissen mag", ist irgendwie sinnlos.
Ich denke mal, dass 'intuitiv' auch nicht ganz der richtige Ausdruck ist. 'Verständlich' und 'nachvollziehbar' trifft es wohl eher. Jedenfalls finde ich schon, dass man etwas, wie in diesem Fall die Bedienung von Officepaketen, durchaus bemängeln darf, auch wenn man nicht in der Lage ist, konkrete Lösungen mitzuliefern. Dass sowohl MS Office wie auch OpenOffice keine Glanzlichter in Sachen Bedienkomfort sind, wird sicherlich von den Wenigsten bestritten. Gedanken darüber, "was immer das konkret heissen mag" müssen sich die Entwickler solcher Software machen.
Wenn die Bedienung meines Kalenders kritisiert wird, muss ja auch ich mir Gedanken darüber machen, wie solche Mißstände beseitigt werden können.
BlackJack hat geschrieben:Nimmt ``-b`` mal einen und mal zwei Argumente entgegen?
Nein. Immer date und time. Wobei 'date' auch durch '+2' für übermorgen oder '14' / '14.' für den 14. des aktuellen Monats bzw. '14.05.' / '14.05' für den 14. Mai sein kann. Ebenso muss 16.00 Uhr nicht zwingend als '16.00' sondern darf auch als '16' / '16.' übergeben werden.
BlackJack hat geschrieben:Auch wenn immer die gleiche Anzahl von Argumenten pro Option eindeutig wäre, würde ich das auch nicht machen. Ist zu ungewöhnlich.
Zu ungewöhnlich? Ungewöhnliche Begründung! Zuerst hatte ich auch '-b' und '-e' für Anfangs- und Enddatum sowie '-f' und '-u' für Anfangs- und Endzeit. Ich fand dann aber, dass ein Auseinandernehmen von Argumenten, die derart eng miteinander in Verbindung stehen, eher stört. Dein 'ungewöhnlich' hat mich jetzt verunsichert, aber noch nicht überzeugt... :)
BlackJack hat geschrieben:Und wenn Deine Frau tatsächlich ``denkdran -b 14.05.2011 15:00 -e 14.05.2011 16:00`` eingibt, würde das Programm dass dann schlucken oder eine Fehlermeldung ausgeben? :-P
Wenn ihr mich nicht vollends davon abbringt, dann wird mein Programm alles schlucken, was man ihm gibt. Fehlermeldungen wird es nicht geben. Muss sich meine Frau dann selbst darum kümmern, weshalb sie ständig ihre Termine verbummelt. Gibt ja schließlich eine manpage in englischer, französischer und italienischer Sprache. Und darin werde ich ein eigenes Kapitel über die Unterschiede gebräuchlicher Trennzeichen verfassen. :D

mutetella
Entspanne dich und wisse, dass es Zeit für alles gibt. (YogiTea Teebeutel Weisheit ;-) )
BlackJack

@mutetella: Was ist denn an dem Vorgehen, dass man in der Textverarbeitung eine Fusszeile in den Seiteneinstellungen aktivieren muss und dort dann mit `Einfügen → Feldbefehl → Seitennummer` die Seitennummer einfügen kann, nicht verständlich oder nachvollziehbar? Ich sehe keine tiefere Magie, die man einem durchschnittlichen Benutzer nicht erklären kann.

Bei Deinen Beispielen sind doch aber zwei dabei, bei denen ``-b`` nur *ein* Argument bekommt!?

Ungewöhnliche APIs verletzen das "principle of least surprise" a.k.a. "principle of least astonishment". Bei der Kommandozeile ``foo -a x y -b z`` dürften 99% der Nutzer die Frage ob `y` ein Positionsargument ist, mit "Ja" beantworten.

Man muss ja auch nicht zwingend zwei Optionen aus Datum und Zeit machen, man kann sie zu einem (optionalen) Argument zusammenfassen: ``denkdran -b '12.05.2011 16.30'``. Spätestens wenn jemand das nach ISO-Standard eingeben möchte -- und Du möchtest dem Benutzer ja möglichst freie Hand lassen -- dann ist da kein Leerzeichen mehr drin und es wäre aus Sicht der Shell eh nur ein Argument ('2011-05-12t16:30').

Ich weiss übrigens noch nicht so ganz ob ich überzeugt bin, dass das überhaupt eine *Option* ist. Zumindest der Startzeitpunkt ist IMHO ein Argument was nicht optional ist.
mutetella
User
Beiträge: 1695
Registriert: Donnerstag 5. März 2009, 17:10
Kontaktdaten:

BlackJack hat geschrieben:Bei Deinen Beispielen sind doch aber zwei dabei, bei denen ``-b`` nur *ein* Argument bekommt!?
Hatte ich dann aber zwischenzeitlich 'über den Haufen geworfen'.
BlackJack hat geschrieben:Man muss ja auch nicht zwingend zwei Optionen aus Datum und Zeit machen, man kann sie zu einem (optionalen) Argument zusammenfassen: ``denkdran -b '12.05.2011 16.30'``. Spätestens wenn jemand das nach ISO-Standard eingeben möchte -- und Du möchtest dem Benutzer ja möglichst freie Hand lassen -- dann ist da kein Leerzeichen mehr drin und es wäre aus Sicht der Shell eh nur ein Argument ('2011-05-12t16:30').
Und was hältst Du davon, Argumente mit Leerzeichen und ohne quotes trotzdem als 1 Argument zu behandeln? Ich denke da neben der '-b'-Option auch an die Übergabe des Termintitels via '-t' / '--title'. Was spricht dagegen, die Argumente folgender Aufrufe jeweils zu einem Argument zusammenzuführen?

Code: Alles auswählen

denkdran -t Theaterkarten besorgen
denkdran -b 12.05.2011 16.30
Ok, ein

Code: Alles auswählen

denkdran -t Rock'n'Roll Kurs
wird Probleme machen, macht es aber auch innerhalb quotes.
BlackJack hat geschrieben:Ich weiss übrigens noch nicht so ganz ob ich überzeugt bin, dass das überhaupt eine *Option* ist. Zumindest der Startzeitpunkt ist IMHO ein Argument was nicht optional ist.
Ich hab' das so geplant, dass als Startzeitpunkt das aktuelle Datum und die abgerundet volle aktuelle Stunde verwendet wird, wenn kein Argument übergeben wird.

Die Idee, ein Datum abgekürzt (z. B. 14. oder 14.05.) zuzulassen, hab' ich verworfen, da das sicherlich in den meisten Fällen schiefgeht, da z. B. bei einer '%Y.%m%d' Einstellung das kaum übertragbar ist.

Aber was hältst Du von der Idee, für das heutige Datum die '0', für morgen ein '+1', für gestern ein '-1' u.s.w. zuzulassen?

Um das ganze (auch für mich) nochmals zusammenzufassen (sofern mir niemand nochmal einen Strich durch die Rechnung macht... :wink: ):
  • In der Konfiguration wird per datetime-directive (z. B. '%Y.%m.%d %H:%M') festgelegt, wie Datum und Zeit zu übergeben sind.
  • Durch Leerzeichen getrennte Argumente werden grundsätzlich zu einem Argument zusammengefasst, 12.05.2011 16.30 wird wie '12.05.2011 16.30' behandelt
  • Statt dem Datum kann auch '-1', '0', '+1' etc. für gestern, heute, morgen etc. verwendet werden
  • Fehlendes '-b'-Argument wird durch heutiges Datum, volle aktuelle Stunde ersetzt, fehlendes '-e'-Argument durch Anfangsdatum und Anfangszeit + Standardterminlänge aus Konfiguration
Akzeptabel?

mutetella
Entspanne dich und wisse, dass es Zeit für alles gibt. (YogiTea Teebeutel Weisheit ;-) )
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

mutetella hat geschrieben:Die Idee, ein Datum abgekürzt (z. B. 14. oder 14.05.) zuzulassen, hab' ich verworfen, da das sicherlich in den meisten Fällen schiefgeht, da z. B. bei einer '%Y.%m%d' Einstellung das kaum übertragbar ist.
Nun fuer den Rest der Daten musst du dann eben rechnen ;)

Orgmode loest die Datumseingabe imo super, schaus dir an, vllt kannst du da was uebernehmen:
http://orgmode.org/manual/Creating-time ... timestamps
http://orgmode.org/manual/The-date_002f ... ime-prompt

Aber nicht nur lesen, sondern auch in Emacs testen.
mutetella
User
Beiträge: 1695
Registriert: Donnerstag 5. März 2009, 17:10
Kontaktdaten:

@cofi:
Oh Mann... wie geil ist das denn??? Hab' mir das gerade durchgelesen und werd' mir gleich mal den Emacs samt Org Mode installieren. Das muss ich unbedingt ausprobieren... :D
Während BlackJack meine Shell-Spinnereien dermaßen zurechtgestutzt hat :wink: (vieles davon zu Recht...), entwickelte sich in mir die Idee, das TUI des Kalenders ähnlich wie VIM über eine Kommandozeile via ':' zu steuern. Und genau dort lassen sich solche Spielchen dann auch prima integrieren nutzen.

Jetzt werd' ich erstmal die Threadbeiträge hier, die Org Mode-Sache und meine eigenen Ideen "sacken" lassen.
Alles sehr inspirierend... mehr Cognac, bitte... :mrgreen:

mutetella
Entspanne dich und wisse, dass es Zeit für alles gibt. (YogiTea Teebeutel Weisheit ;-) )
Antworten