#84 Die Programme „wiemitneo“ und „beschreibe“ sind noch in der Entwicklung

Open
opened 12 years ago by erik · 8 comments
erik commented 12 years ago

Wenn ich dem Programm linux/bin/beschreibe folgendes übergebe:

beschreibe ①

wird mir folgendes angezeigt:

1) ①
2) ①
welches Zeichen suchen Sie:

also zwei mal das gleiche. Warum? Egal was ich dann wähle (1 oder 2), es wird jedes mal das gleiche ausgegeben, nämlich

① ist nicht direkt auf der NEO-Tastatur

Aber ① ist über Compose folgendermaßen darstellbar:
<Multi_key> + <parenleft> + <1> + <parenright> 
<Multi_key> + <parenleft> + <KP_1> + <parenright>

Das Programm linux/bin/wiemitneo gibt mir dies auch direkt, ohne sinnlose Zwischenfrage aus. Wozu gibt es also das Programm linux/bin/beschreibe? Irgendwie redundant.

Wenn ich dem Programm [linux/bin/beschreibe](src/branch/master/linux/bin/beschreibe) folgendes übergebe: ``` beschreibe ① ``` wird mir folgendes angezeigt: ``` 1) ① 2) ① welches Zeichen suchen Sie: ``` also zwei mal das gleiche. Warum? Egal was ich dann wähle (1 oder 2), es wird jedes mal das gleiche ausgegeben, nämlich ``` ① ist nicht direkt auf der NEO-Tastatur Aber ① ist über Compose folgendermaßen darstellbar: <Multi_key> + <parenleft> + <1> + <parenright> <Multi_key> + <parenleft> + <KP_1> + <parenright> ``` Das Programm [linux/bin/wiemitneo](src/branch/master/linux/bin/wiemitneo) gibt mir dies auch direkt, ohne sinnlose Zwischenfrage aus. Wozu gibt es also das Programm [linux/bin/beschreibe](src/branch/master/linux/bin/beschreibe)? Irgendwie redundant.
erik commented 12 years ago
Poster

Ich schlage als Lösung zur Vermeidung der Dopplungen vor:

bisherigeAusgabe() | sort | uniq

Dast ist wohl die einfachste und schnellste Lösung.

Ich schlage als Lösung zur Vermeidung der Dopplungen vor: ``` bisherigeAusgabe() | sort | uniq ``` Dast ist wohl die einfachste und schnellste Lösung.
erik commented 12 years ago
Poster

Nein, noch besser:

Habe gerade das Skript angesehen. Puuuh, gar nicht kommentiert. Sehr schade, damit ist es fast nur für den Originalautor wartbar. Und das auch nur für kurze Zeit, bis er vergisst, was nochmal was macht.

Nun zum Vorschlag: Statt die Variable

ausgabe

jedes mal (und immer wieder!) mit 1 zu füllen, würde ich lieber die einzelnen gefundenen Zeichen in die Variable ausgabe schreiben. Jeweils mit Leerzeichen getrennt. Also erst die Zeichen, die in Compose gefunden wurden und dann die in der keysymdef.h in die Variable schreiben.

Dann Dopplungen weg, dann Auswahl ausgeben.

Beispielsweise so:

# die gefundenen Zeichen stehen in der Variable AUSGABE
AUSGABE="1 1 2 4 5 8 1 3 5 7 8 2 2 9 9 9 9 0 1 0 1 0 1 3 4 5 6 7"

# Dopplungen entfernen
AUSGABE_SORTIERT=$(for i in $AUSGABE; do echo $i; done | sort | uniq)

# Zähler für die Auswahl des richtigen Zeichens auf 1 setzen, danach ausgeben
ZAEHLER=1
for i in $AUSGABE_SORTIERT; do
    echo "${ZAEHLER}) $i"
    ZAEHLER=$(($ZAEHLER+1)) # Zähler hochzählen
done

Unicodeverträglich?

Funktioniert das auch mit sämtlichen verrückten Zeichen wie ①, ™, æ, ⅱ, usw? Ist jedenfalls sehr einfach, gut wartbar, verständlich, fehlerfreier (weniger Codezeilen) usw.

Ansonsten würde ich zumindest die Variable ausgabe ganz am Anfang initialisieren. Denn es könnte sein, dass diese schon existiert. Also am Anfang schreiben

ausgabe=0

oder ähnliches.

### Nein, noch besser: Habe gerade das Skript angesehen. Puuuh, gar nicht kommentiert. Sehr schade, damit ist es fast nur für den Originalautor wartbar. Und das auch nur für kurze Zeit, bis er vergisst, was nochmal was macht. Nun zum Vorschlag: Statt die Variable ``` ausgabe ``` jedes mal (und immer wieder!) mit 1 zu füllen, würde ich lieber die einzelnen gefundenen Zeichen in die Variable ausgabe schreiben. Jeweils mit Leerzeichen getrennt. Also erst die Zeichen, die in Compose gefunden wurden und dann die in der keysymdef.h in die Variable schreiben. Dann Dopplungen weg, dann Auswahl ausgeben. Beispielsweise so: ``` # die gefundenen Zeichen stehen in der Variable AUSGABE AUSGABE="1 1 2 4 5 8 1 3 5 7 8 2 2 9 9 9 9 0 1 0 1 0 1 3 4 5 6 7" # Dopplungen entfernen AUSGABE_SORTIERT=$(for i in $AUSGABE; do echo $i; done | sort | uniq) # Zähler für die Auswahl des richtigen Zeichens auf 1 setzen, danach ausgeben ZAEHLER=1 for i in $AUSGABE_SORTIERT; do echo "${ZAEHLER}) $i" ZAEHLER=$(($ZAEHLER+1)) # Zähler hochzählen done ``` ### Unicodeverträglich? Funktioniert das auch mit sämtlichen verrückten Zeichen wie ①, ™, æ, ⅱ, usw? Ist jedenfalls sehr einfach, gut wartbar, verständlich, fehlerfreier (weniger Codezeilen) usw. Ansonsten würde ich zumindest die Variable ausgabe ganz am Anfang initialisieren. Denn es könnte sein, dass diese schon existiert. Also am Anfang schreiben ``` ausgabe=0 ``` oder ähnliches.
bjoern commented 12 years ago

Unicodeverträglich?

Funktioniert das auch mit sämtlichen verrückten Zeichen wie ①, ™, æ, ⅱ, usw?

Bei mir unter Ubuntu 8.10 nicht, da macht schon ein

echo ① | cut -c1

wie es in der Art häufig im Scirpt verwendet wird, Probleme.

> ### Unicodeverträglich? > Funktioniert das auch mit sämtlichen verrückten Zeichen wie ①, ™, æ, ⅱ, usw? Bei mir unter Ubuntu 8.10 nicht, da macht schon ein ``` echo ① | cut -c1 ``` wie es in der Art häufig im Scirpt verwendet wird, Probleme.
erik commented 12 years ago
Poster

Unicodeverträglich?

Funktioniert das auch mit sämtlichen verrückten Zeichen wie ①, ™, æ, ⅱ, usw?

Bei mir unter Ubuntu 8.10 nicht, da macht schon ein

echo ① | cut -c1

wie es in der Art häufig im Scirpt verwendet wird, Probleme.

Echt? Bei mir funktioniert es einwandfrei:

echo ①②③④ | cut -c2-4

ergibt ②③④. Ubuntu ist komisch.

> > > ### Unicodeverträglich? > > Funktioniert das auch mit sämtlichen verrückten Zeichen wie ①, ™, æ, ⅱ, usw? > > Bei mir unter Ubuntu 8.10 nicht, da macht schon ein ``` echo ① | cut -c1 ``` > wie es in der Art häufig im Scirpt verwendet wird, Probleme. Echt? Bei mir funktioniert es einwandfrei: ``` echo ①②③④ | cut -c2-4 ``` ergibt ②③④. Ubuntu ist komisch.
bjoern commented 12 years ago

Bei mir funktioniert es einwandfrei:

echo ①②③④ | cut -c2-4

ergibt ②③④. Ubuntu ist komisch.

$ echo ①②③④ | cut -c2-4

ergibt ��.

$ echo ①②③④

funktioniert: ①②③④

$ locale
LANG=de_DE.UTF-8
LANGUAGE=de_DE:de:en_GB:en
LC_CTYPE="de_DE.UTF-8"
LC_NUMERIC="de_DE.UTF-8"
LC_TIME="de_DE.UTF-8"
LC_COLLATE="de_DE.UTF-8"
LC_MONETARY="de_DE.UTF-8"
LC_MESSAGES="de_DE.UTF-8"
LC_PAPER="de_DE.UTF-8"
LC_NAME="de_DE.UTF-8"
LC_ADDRESS="de_DE.UTF-8"
LC_TELEPHONE="de_DE.UTF-8"
LC_MEASUREMENT="de_DE.UTF-8"
LC_IDENTIFICATION="de_DE.UTF-8"
LC_ALL=

sollte ja passen.

$ cut --version
cut (GNU coreutils) 6.10
Copyright © 2008 Free Software Found…

Die ist denke ich auch aktuell.

Aber mit dem Problem bin ich hier offtopic. ☺

> Bei mir funktioniert es einwandfrei: ``` echo ①②③④ | cut -c2-4 ``` > ergibt ②③④. Ubuntu ist komisch. ``` $ echo ①②③④ | cut -c2-4 ``` ergibt ��. ``` $ echo ①②③④ ``` funktioniert: ①②③④ ``` $ locale LANG=de_DE.UTF-8 LANGUAGE=de_DE:de:en_GB:en LC_CTYPE="de_DE.UTF-8" LC_NUMERIC="de_DE.UTF-8" LC_TIME="de_DE.UTF-8" LC_COLLATE="de_DE.UTF-8" LC_MONETARY="de_DE.UTF-8" LC_MESSAGES="de_DE.UTF-8" LC_PAPER="de_DE.UTF-8" LC_NAME="de_DE.UTF-8" LC_ADDRESS="de_DE.UTF-8" LC_TELEPHONE="de_DE.UTF-8" LC_MEASUREMENT="de_DE.UTF-8" LC_IDENTIFICATION="de_DE.UTF-8" LC_ALL= ``` sollte ja passen. ``` $ cut --version cut (GNU coreutils) 6.10 Copyright © 2008 Free Software Found… ``` Die ist denke ich auch aktuell. Aber mit dem Problem bin ich hier offtopic. ☺
pascal changed title from Das Programm „beschreibe“ macht doppelte Ausgaben to Die Programme „wiemitneo“ und „beschreibe“ sind noch in der Entwicklung 12 years ago
pascal commented 12 years ago

Sie Antwort in entsprechendem Thread der für Diskussionen besser geeigneten Mailingliste…

Sie Antwort in entsprechendem Thread der für Diskussionen besser geeigneten Mailingliste…
bened commented 11 years ago

Hallo! Auch zum Thema “beschreibe”:

$ beschreibe ä
1) Ä
2) Ä
3) ä
4) ä
welches Zeichen suchen Sie: 1

• Ä gibt es direkt auf der NEO-Tastatur:
cut: Trenner muss ein einzelnes Zeichen sein
„cut --help“ gibt weitere Informationen.
cut: Liste der Positionen fehlt
„cut --help“ gibt weitere Informationen.
cut: Liste der Positionen fehlt
„cut --help“ gibt weitere Informationen.
...

Und so geht es dann weiter und weiter bis ich abbreche. Ich arbeite mit Debian Etch, was cut v5.97 mitliefert. Zu alt?

Hallo! Auch zum Thema "beschreibe": ``` $ beschreibe ä 1) Ä 2) Ä 3) ä 4) ä welches Zeichen suchen Sie: 1 • Ä gibt es direkt auf der NEO-Tastatur: cut: Trenner muss ein einzelnes Zeichen sein „cut --help“ gibt weitere Informationen. cut: Liste der Positionen fehlt „cut --help“ gibt weitere Informationen. cut: Liste der Positionen fehlt „cut --help“ gibt weitere Informationen. ... ``` Und so geht es dann weiter und weiter bis ich abbreche. Ich arbeite mit Debian Etch, was cut v5.97 mitliefert. Zu alt?
bjoern commented 11 years ago
cut: Trenner muss ein einzelnes Zeichen sein
„cut --help“ gibt weitere Informationen.
cut: Liste der Positionen fehlt
„cut --help“ gibt weitere Informationen.
cut: Liste der Positionen fehlt
„cut --help“ gibt weitere Informationen.
...

Und so geht es dann weiter und weiter bis ich abbreche. Ich arbeite mit Debian Etch, was cut v5.97 mitliefert. Zu alt?

Mit cut 6.10 bei Ubuntu 8.10 das gleiche. Es liegt daran, dass Unicode-Zeichen als 2 Zeichen gesehen werden.
Habe schonmal versucht, die Skripte umzuschreiben, dass sie awk/sed stattdessen nutzen (damit ging es bei mir), bin aber nicht weit gekommen und hab erstmal aufgegeben.

Gruß
Björn

``` cut: Trenner muss ein einzelnes Zeichen sein „cut --help“ gibt weitere Informationen. cut: Liste der Positionen fehlt „cut --help“ gibt weitere Informationen. cut: Liste der Positionen fehlt „cut --help“ gibt weitere Informationen. ... ``` > > Und so geht es dann weiter und weiter bis ich abbreche. Ich arbeite mit Debian Etch, was cut v5.97 mitliefert. Zu alt? Mit cut 6.10 bei Ubuntu 8.10 das gleiche. Es liegt daran, dass Unicode-Zeichen als 2 Zeichen gesehen werden. Habe schonmal versucht, die Skripte umzuschreiben, dass sie awk/sed stattdessen nutzen (damit ging es bei mir), bin aber nicht weit gekommen und hab erstmal aufgegeben. Gruß Björn
Sign in to join this conversation.
Loading…
There is no content yet.