PhysikOnline-FFM / gu-urlshorter

URL-Shortener for Goethe University, Frankfurt
http://tinygu.de/
Other
4 stars 1 forks source link

Entscheidung für Umgang mit Groß- und Kleinschreibung #2

Open svenk opened 9 years ago

svenk commented 9 years ago

Wir sind immer noch nicht sicher, wie mit Groß- und Kleinschreibung umgegangen werden soll.

Zunächst muss zwischen benutzergewählten Kürzeln und automatisch generierten unterschieden werden.

Automatisch generierte Kürzel

Normalerweise zählt YOURLS Zahlen und Buchstaben, was aber ziemlich fummelig aussieht (kurz.de/1, kurz.de/2, ... kurz.de/9, kurz.de/a, kurz.de/b, ... kurzl.de/z, ...). Stattdessen habe ich das Plugin Random Keywords installiert, welches, wie man in der plugin.php nachlesen kann, einen Zufallsstring aus 4 Zeichen als Kürzel erzeugt.

Hier können wir den Zeichensatz frei wählen, aus dem für das Kürzel gewählt wird. Siehe dafür zB die YOURLS FAQ, Abschnitt Difference Between Base 36 And Base 62 Encoding sowie yourls_rnd_string.

Mit dem Commit (a5b9895a)[https://github.com/PhysikOnline-FFM/gu-urlshorter/commit/a5b9895a02c9c9e3fcf3e052e1950ff729943798] hab ich explizit Kleinbuchstaben ausgewählt sowie typische Zeichen, zwischen denen Verwechselungsgefahr besteht, deaktiviert (etwa 1 und l, o und 0). Der verwendete Zeichensatz ist also aus der Liste

    $possible = "23456789bcdfghjkmnpqrstvwxyz";

Ich denke, damit können wir gut fahren. Die Frage nach "Case Sensitive", also Groß- und Kleinschreibung umgehen wir, da die generierten Kürzel nur aus Kleinbuchstaben bestehen können. Sind zb auch einfacher einzugeben im Smartphone.

Manuell generierte Kürzel

Alternativ erlauben wir Benutzern, manuelle Kürzel einzugeben. YOURLS funktioniert hier (leider) so, dass es ohne Warnung alle ungültigen Zeichen aus dem Kürzel entfernt. Wir können hier sicher die GUI etwas benutzerfreundlicher machen und den Benutzer vor dem Abschicken warnen, wenn so etwas passiert.

Dennoch müssen wir überlegen, welche Zeichen erlaubt sein sollen. Was soll mit Großbuchstaben passieren? Im oben verlinkten Commit hab ich Großbuchstaben zugelasen (Stichwort "Base62" statt "Base36"). Allerdings gibt es die Alternativoption, Großbuchstaben mit Kleinbuchstaben zu ersetzen. Dies kann an mehreren Stellen geschehen: Direkt beim Erzeugen des Links, oder wenn man den Link aufruft. Es ist ziemlich verwirrend, dazwischen zu unterscheiden, deshalb sollte man dann konsequent mit Kleinbuchstaben fahren. Will man das? Anders gefragt: Mit welcher Intention erstellen Benutzer Kürzel mit Großbuchstaben, und sollte man sie nicht eher dazu belehren, damit aufzuhören, statt sie brutal zu ersetzen?

Referenz dieses Tickets: Bertrams E-Mail-Einwand

Ich hab jetzt mal getestet - dafuq passiert hier?? (Anhang) Er entfernt die Großbuchstaben ;-)

I see... Ja - dass die Links Case Sensitive sind, ist wohl ein Ding. Das ist natürlich fürs Abtippen auf Mobilgeräten auch nicht perfekt.

Ich finde es eigentlich gut, wenn lowercase geforced wird - aber dann durch Umwandlung und nicht durch Kürzung :)

Gibt doch da auch entsprechende Stringfunktionen, oder? Also prinzipiell ist das alles ja okay, aber es muss dann ersichtlich sein, was passiert; es muss also einen Infotext geben.

sheepyhollow commented 9 years ago

Zeichen, zwischen denen Verwechselungsgefahr besteht, deaktiviert (etwa 1 und l, o und 0)

das gilt aber nur für die automatisch erzeugten URLs?

Denn das wäre schon eine ziemliche Einschränkung für sprechende Kurz-URLs, wenn man auf i und o verzichten muss...

Nutzerfreundliches Feedback finde ich wichtig - ideal wäre es natürlich, das vorher abzufangen. Oder so ein kleines Rulebook zu verlinken.

svenk commented 9 years ago

das gilt aber nur für die automatisch erzeugten URLs? Denn das wäre schon eine ziemliche Einschränkung für sprechende Kurz-URLs

Richtig, das gilt nur für automatisch erzeugte URLs. Gerade diese Unterscheidung ist ja wichtig: Wir haben zwei verschiedene Mengen erlaubter Zeichen für die beiden Typen von gekürzten URLs (automatisch vs manuell). Ansonsten würden wir nämlich Gaga werden -- dann würden wir entweder keine Bindestriche etc. in manuellen Kürzeln erlauben können, oder wir hätten automatische Kürzel, die unleserlich wie "-_Aa98" werden könnten.

sheepyhollow commented 9 years ago

Mit welcher Intention erstellen Benutzer Kürzel mit Großbuchstaben, und sollte man sie nicht eher dazu belehren, damit aufzuhören, statt sie brutal zu ersetzen?

BInnenmajuskeln sind schon nützlich - "SciEnglish" sagt mehr aus als "scienglish". ABER es ist halt unpraktisch.

Daher ist belehren gut. Schön wäre natürlich ein Popup (bzw. eine Meldung): 'Ihre gewählte Kurz-URL enthält Großbuchstaben (bzw. sonstige Zeichen), die bei der Eingabe auf Mobilgeräten unpraktisch sein kann. Wollen Sie das wirklich??'

oder so.

svenk commented 9 years ago

Daher ist belehren gut. Schön wäre natürlich ein Popup (bzw. eine Meldung): 'Ihre gewählte Kurz-URL enthält Großbuchstaben (bzw. sonstige Zeichen), die bei der Eingabe auf Mobilgeräten unpraktisch sein kann. Wollen Sie das wirklich??'

Genau an so eine Meldung hab ich gedacht, als Popup unter dem Eingabefeld für selbstgewählte Kürzel. In der gleichen Form, wie heutzutage Warnungen kommen, dass zB das gewählte Passwort zu schwach ist. Also vgl. diese Mockups:

1 2 3 4

sheepyhollow commented 9 years ago

hübsch diskrete Bilder :)

tmke8 commented 9 years ago

Mal eine andere Frage, woher weiß YOURLS eigentlich, dass http://tinygu.de/infos zur Info-Seite führen soll und keine Kurz-URL ist?

svenk commented 9 years ago

@thomkeh: Ab Zeile 31 in yourls-go.php wird geschaut, ob es eine gleichnamige Datei im Verzeichnis pages gibt.

tmke8 commented 9 years ago

Okay und neue Kürzel werden auch danach überprüft?

svenk commented 9 years ago

Okay und neue Kürzel werden auch danach überprüft?

Was meinst du mit neuen Kürzeln? Die yourls-go.php wird direkt durch yourls-loader.php aufgerufen. Die Loader-Datei unterscheidet, ob der Beuscher eine Kurz-URL oder Statistiken anschauen möchte. Und die Loader-Datei wird wiederum per htaccess/dem Webserver aufgerufen, wenn es die Datei (wie tinygu.de/abcdef) nicht gibt (vgl. https://github.com/YOURLS/YOURLS/wiki/Nginx-configuration).

Die yourls-go.php ist ziemlich kurz und übersichtlich: In Zeile 17 wird die Datenbank angefragt, und danach geschaut ob es einen Eintrag gibt oder nicht.

tmke8 commented 9 years ago

Ich wollte wissen, was passiert wenn ich "infos" als Kürzel anfordere. Habs getestet, gibt einen Fehler. Alles gut :)

sheepyhollow commented 9 years ago

Gibt's ein Gefühl dafür, wann die Case-Warnung eingebaut werden könnte?

svenk commented 8 years ago

@crstnbr wollte sich das glaub ich mal anschauen, zumindest hat er bei #9 Interesse bekundet. Allgemein würd ich gerne einen unsere Hiwis dafür begeistern ;-).