# Vokabelprogramm - Wer macht mit?



## noobadix (18. Dez 2009)

Hallo Javaianer,

ich möchte ein Vokabelprogramm in Java. Es soll das beste seiner Art werden, ein Standard. Also wenig Java/Rechenzeit, viel Funktionalität. Und es soll für möglichst viele (Sprech-)Sprachen verwendbar sein.
Die etwas genauere Spezifikation steht in README.txt.

Hab da schon mal was vorbereitet und als Anhang beigefügt und um sich nicht erst durchwurschteln zu müssen habe ich versucht, einen einführenden Text zu schreiben.

Bin freilich bereit, das Konzept über den Haufen zu werfen, wenn jemand bessere Ideen hat.

Über Anregungen und Kritik würde ich mich also freuen.

Gruß N.


----------



## nrg (18. Dez 2009)

javadocs wären net schlecht


----------



## SlaterB (18. Dez 2009)

was ist eigentlich ein Java-Programm mit 'wenig Java'?


----------



## noobadix (18. Dez 2009)

@nrg
und dabei hasse ich arbeit...

@SlaterB
lol...mit wenig java meine ich eigentlich wenig code, also 1.effizient und 2.übersichtlich/verständlich


----------



## Sonecc (18. Dez 2009)

kleine Anregung:
Bunt ist nicht immer schön...


----------



## noobadix (18. Dez 2009)

@Sonecc
Ja, das wissen wir seit Klaus Wowereit, d.h. was genau meinst du?

Die Hintergrundfarbe habe ich in der globalen BGCOLOR zum leichten Abändern in weiser Voraussicht festgelegt. Aber Orange hat seinen Reiz :lol:

Oder meinst du den Mix aus AWT und Swing? Man warnt ja gern davor, beide zu kombinieren...bin ich hier ein Risikokandidat? Muss mir das nochmal angucken...



Der Vokabulator ist noch im Entstehen, werd also noch einiges selbst prüfen und recherchieren, aber frage hier schon mal:

Welche ist die schnellste Weise, Einträge in einem Speicherobjekt (array,vector...was sich so anbietet) zu finden?

Soll ich einfach mal Schleifen durchlaufen lassen und die Zeit messen? Oder ist eine Datenbank performanter? Oder was?

Gruß und Dank soweit
N.


----------



## Sonecc (18. Dez 2009)

Ich meinte schon die Farbe, zumal das UI nicht immer einheitlich ist, so gibt es auch ein fenster, welches keine farben besitzt und so weiter.
Ich würde da lieber auf ein alternatives L&F setzen oder ggf. auf dezente Farben (eventuell sogar wählbar?)

Warum implementierst du eigentlich Serializable, setzt aber keine ID?


----------



## nrg (18. Dez 2009)

noobadix hat gesagt.:


> Welche ist die schnellste Weise, Einträge in einem Speicherobjekt (array,vector...was sich so anbietet) zu finden?



kommt auf die datenmenge an...
-arrays würd ich mal komplett ausschließen, weil die größe nicht erweiterbar ist.
-vector/list wäre denkbar aber bei größeren mengen sehr unperformant in der selektion.
-hashset/threeset wäre da schon ein tick besser, vorausgesetzt du willst keine duplikate
-hashmap/threemap wäre auch gut, wenn du duplikate ermöglichen willst
-db wäre imho die beste lösung bei größeren datenmengen, weil die daten ohne große probleme auch über die laufzeit hinaus erhalten bleiben. ob duplikate ja oder nein bestimmst du mit dem primärkey

grüße
nrg


----------



## noobadix (18. Dez 2009)

@Sonecc
...weiß nicht. Stammt noch von nem verworfenen Ansatz, der ganze Kod ist ziemlich verschlampt, vielleicht hätt ich ihn vor der Veröffentlichung doch genauer überarbeiten sollen.

@nrg
Dass Array auch erweiterbar ist, ist ja nur eine selbst geschriebene Methode entfernt. Sonst sind die schon am schlankesten und schnellsten, oder?
Eine Datenbank ist doch wohl die behäbigste aller Möglichkeiten?


----------



## madboy (18. Dez 2009)

noobadix hat gesagt.:


> Dass Array auch erweiterbar ist, ist ja nur eine selbst geschriebene Methode entfernt. Sonst sind die schon am schlankesten und schnellsten, oder?
> Eine Datenbank ist doch wohl die behäbigste aller Möglichkeiten?


Nein und noch Mal nein 

Arrays sind zwar "schlank" aber das sagt nichts über die Geschwindigkeit aus.

Es kommt drauf an was du tun willst. Millionen von Datensätzen (was bei einem guten Vokabeltrainer so sein sollte) wirst du effektiv nur in einer Datenbank speichern können. Dafür sind Datenbanken da.

EDIT: Stimmt so nicht ganz. Datenbanken sind im Vergleich zu einer HashMap z.B. wirklich "behäbig" wenn du genau ein Element holen willst. Je nach Datenmenge kannst du aber nicht alle Daten im Arbeitsspeicher halten und komplexe Abfragen sind mit einer Datenbank relativ einfach durchzuführen.

Wie so oft solltest du dir übrigens keine Gedanken über die Performance machen, sondern lieber sauberen Code schreiben. Erst wenn du ein Performanceproblem hast, solltest du schauen wo das her kommt und dann versuchen, es zu beheben.


----------



## Sonecc (18. Dez 2009)

noobadix hat gesagt.:


> @Sonecc
> ...weiß nicht. Stammt noch von nem verworfenen Ansatz, der ganze Kod ist ziemlich verschlampt, vielleicht hätt ich ihn vor der Veröffentlichung doch genauer überarbeiten sollen.


verschlampt nicht, nur optimierungswürdig^^

DB ist wirklich die sinnvollste Datenhaltungsmöglichkeit
Ich denke aber, dass es hier mehr um die interne Nutzung der Daten geht und nicht um die sicherung der Daten auch über die Programmzeit hinweg...


----------



## nrg (18. Dez 2009)

@noobadix: überlegt mal was schneller ist bei z.b. 1000 datensätzen

select attribute from table where bedingungen

oder:

//im worstcase 1000x
for (String s : array)
   ....

grüße

EDIT: das gleiche auch bei list und vector. hashmaps und sets selektieren über den hashcode, was schon eher denkbar ist. treemaps und sets über die baumstruktur (elterknoten > linker kindknoten und elternknoten < rechter kindknoten). 

Die Frage ist auch wirklich, ob die Daten noch nach Programmlauf zur Verfügung stehen sollten. Wenn  ja -> db. ansonsten tuts auch eine map oder ein set.


----------



## noobadix (21. Dez 2009)

Habe ich das richtig verstanden, dass mein code dann wegen der DatenbankTreiber auf verschiedene Betriebssysteme ausgelegt sein müsste? Das schadete doch zu sehr der Portabilität, soll ja auch unter Linux funktionieren.


----------



## Landei (21. Dez 2009)

Schau erst mal die vorhandenen Programme an, z.B. Anki. Es ist ein Riesenaufwand, erst mal diesen Stand zu erreichen, selbst wenn du einige Dinge bestimmt "besser" (was zu beweisen wäre) machen willst.

Das tausendste Vokabelprogramm bringt niemanden wirklich weiter, insbesondere weil es da schon wirklich gute Sachen gibt. Investiere deine Arbeit lieber in konzeptionell neue, innovative Programme, oder helfe bei vorhandene Projekten.


----------



## noobadix (21. Dez 2009)

@Landei

Da sind so eins zwei Sachen, die ich vermisse, z.B. eine Erweiterung des Progs in J2ME, Synchronisation dann ganz edel per Bluetooth. Ferner sollen die speziellen Formen für Lateinvokabeln berücksichtigt werden.

Das in Kombination zeig mir mal.

Aber eigentlich hast du Recht, gibt Wichtigeres.

Trotzdem hier mal n kurzes update, habe lediglich ein paar Kleinigkeiten verändert.


----------



## diggaa1984 (21. Dez 2009)

> Bin freilich bereit, das Konzept über den Haufen zu werfen, wenn jemand bessere Ideen hat.



dann fang mal an das was du bisher hast, sinnvoll in mehrere klassen auszulagern und dann darfst du anfangen von Synchronisation, Erweiterbarkeit  und den ganzen Spielchen zu träumen 

ich korrigiere: in mehrere Dateien auslagern, viele Klassen hast ja schon


----------



## bygones (21. Dez 2009)

Landei hat gesagt.:


> Das tausendste Vokabelprogramm bringt niemanden wirklich weiter, insbesondere weil es da schon wirklich gute Sachen gibt. Investiere deine Arbeit lieber in konzeptionell neue, innovative Programme, oder helfe bei vorhandene Projekten.


warum wollen alle immer und ueberall die neuste und beste Killer-App erfinden ?

wenn jemanden unklar ist, welche Persistenzstrukturen wann wie einsetzbar sind sind solche Ratschlaege meiner Ansicht nach absolut unnuetz. Hier steht das Lernen im Vordergrund.

Ich wiederhol mich gerne: Es moege der die Hand heben der fuer seine ersten Java Programme die absolute neuwertige und unbekannt Applikation geschrieben hat

q.e.d


----------



## noobadix (21. Dez 2009)

Dass ich als Speicher eine Klartext-Datei verwende steht fest. Die kann dann auch von Hand editiert oder kopiert oder von anderen Programmen, bzw Vokabulator 2  eingelesen werden. 

Datenbanken schließe ich aus. Die Vokabelmenge wird die Million wohl nicht annährend erreichen, nun muss ich mir eben überlegen, wie möglichst wenig Schleifendurchläufe vollzogen werden, bzw. wie und ob ich das mit ner HashMap anstelle.

Wie das mit dem Auslagern in mehrere Dateien funktioniert weiß ich, aber was solls bringen?

dankbeklebten Gruß
N.


----------



## diggaa1984 (21. Dez 2009)

> Wie das mit dem Auslagern in mehrere Dateien funktioniert weiß ich, aber was solls bringen?


einen groben Ansatz von Modularisierung, Kapselung und Übersicht  .. einen riesen Schritt mehr in Richtung vernünftige Software. Du wirst es dir selbst danken .. glaub mir 

Wenn dein super-Vokabeltrainer wahr werden soll, wirst du nich mit 1000 zeilen Code auskommen, und die alle in einer Datei .. 

Eigentlich ist deine jetzige Datei aus architektonischer Sicht ne Kathastrophe .. ich will mir nich die Zeit nehmen das durchzugehen und zu erweitern oder dergleichen. Sowas muss man wie n Bauklotz konzipieren .. die steckst aufeinander und blub hast was komplexes.

Ein Haus schneidest ja auch nich aus nem 1500m³ Betonklotz raus


----------



## noobadix (21. Dez 2009)

Stimmt eigentlich...ich spiel ja OpenSourceProgrammierer :lol:


----------



## ThreadPool (21. Dez 2009)

noobadix hat gesagt.:


> Datenbanken schließe ich aus. Die Vokabelmenge wird die Million wohl nicht annährend erreichen, nun muss ich mir eben überlegen, wie möglichst wenig Schleifendurchläufe vollzogen werden, bzw. wie und ob ich das mit ner HashMap anstelle.



Schau dir mal die Datenstruktur "Trie" (engl. gesprochen "try") an. Ist ziemlich nett für sowas. 

Trie - Wikipedia, the free encyclopedia


----------



## bygones (21. Dez 2009)

lol

also ehrlich - man kanns mit der "super-duper-daten-struktur" fuer einen simplen Vokabeltrainer auch ziemlich uebertreiben.

Kennt keiner das Prinzip das Premature Optimization somit das toedlichste aller Vergehen in der Softwareentwicklung sind ?

Versteh ich nicht.

Mein Rat:

Nim ne simple HashMap und arbeite mit der... wenn in unbekannter Zukunft irgendwann einmal du das problem bekommst dass die Performance / Speicher / Wartbarkeit nicht mehr tragbar ist - DANN suche bessere Loesungen.

Anzufangen mit der Meinung "Oh ich werde ganz bestimmt auf Probleme stossen, ich brauch die ultimative Loesung" - wird das Programm mehr zerstoeren.

sorry - ich kanns nicht verstehen warum hier jeder auf Teufel komm raus versucht irgendwelche Speicherstrukturen zu propagieren....

bygones


----------



## noobadix (21. Dez 2009)

Ich find's scheen, mich in euerer Sonne des Wissens bräunen zu dürfen xD


----------



## Sekundentakt (21. Dez 2009)

noobadix hat gesagt.:


> Ich find's scheen, mich in euerer Sonne des Wissens bräunen zu dürfen xD



Es wird Dir nichts bringen, wenn Du weißt, wie Du einer Applikation einen Performance-Boost von 100% verschaffen kannst, wenn:
a) dieser Performance-Gewinn in der Praxis keinen signifikanten Vorteil bringt (Aufwand/Nutzen)
b) Du vor lauter Wissen sammeln nicht dazu kommst, dieses Wissen auch praktisch nützlich anzuwenden.

Wenn Du auf Werkzeuge zurückgreifst, die schon  zig Leute vor Dir optimiert und noch wesentlich mehr Menschen eingesetzt haben, dann spricht prinzipiell nichts dagegen, diese auch zu verwenden.
Eine eigene Implementierung macht m.E. nur dann Sinn, wenn es zwingend notwendig ist, um eine angemessene Performance zu erreichen ODER, weil es sich rechnen würde.

Ein Beispiel:
Wenn Google/Yahoo!/bing von Haus aus 0,5 Sekunden braucht, um Dir gute Resultate auf Deine Anfrage zu liefern, dann ist eine Performancesteigerung von 20% aus Usersicht nicht zwingend erforderlich.
Ob ich die Suchergebnisse nun in 0,5 oder 0,4 Sekunden geliefert bekomme, wird keiner spürbar wahrnehmen.
Wenn eine Suchmaschine aber durch diese Performancezugewinne Hardware sparen oder diese anderweitig gewinnbringend einsetzen kann, dann ergibt es Sinn, über Performanceoptimierung nachzudenken.

ABER, und das wurde auch versucht hier zu verdeutlichen, WENN Larry Page und Sergei Brin von Anfang an jede ihrer Lösungen noch vor der Implementierung verworfen hätten, um sie durch eine theoretisch performantere Lösung zu ersetzen, wären sie heute wahrscheinlich keine Milliardäre, sondern immer noch am Werkeln.


----------



## ThreadPool (21. Dez 2009)

bygones hat gesagt.:


> lol
> 
> also ehrlich - man kanns mit der "super-duper-daten-struktur" fuer einen simplen Vokabeltrainer auch ziemlich uebertreiben.
> 
> ...



Kennst du das ursprüngliche Zitat? 

"We should forget about small efficiencies, say about 97% of the time: premature optimization is the root of all evil." 

Es drehte sich dort um "Mikrooptimierungen". Die Frage der Datenstruktur und zu verwendenden Algorithmen ist eine "Designentscheidung" die ganz am Anfang des Entwicklungsprozesses steht. Das hat nur wenig mit Mikrooptimierungen zu tun. Hier geht es darum ein Design unter den Aspekten Robustheit, Skalierbarkeit und natürlich auch Ausführungsgeschwindigkeit zu entwerfen. Bei einem Vokabeltrainer mag das nicht so offensichtlich sein, da man schnell andere Algorithmen reinbasteln kann. Aber wenn man schon während man entwirft weiß das A für eine Anwendung besser funktioniert als B weshalb soll man unnötig Zeit in B investieren? Nur, weil mir Java das vielleicht schon bietet? Allerhöchstens für einen Prototypen. Und als zweiter Aspekt in Bezug zu dem Thread hier ist der Blick über den Tellerand und das man etwas lernt. Ich bin davon überzeugt das der OT mehr lernt wenn er mal eine oder mehrere Alternativen ausprobiert.


----------



## Landei (21. Dez 2009)

diggaa1984 hat gesagt.:


> ...
> Ein Haus schneidest ja auch nich aus nem 1500m³ Betonklotz raus



Ahem...


----------



## diggaa1984 (21. Dez 2009)

sowas ist mir bekannt (Felsenstadt Petra) .. aber nicht ganz in greifbarer nähe des threadopeners  und ausserdem is das da kein Beton


----------



## Sekundentakt (21. Dez 2009)

> Aber wenn man schon während man entwirft weiß das A für eine Anwendung besser funktioniert als B weshalb soll man unnötig Zeit in B investieren? Nur, weil mir Java das vielleicht schon bietet?


Das kannst Du aber auch nicht so absolut stehen lassen. 

Es muss auch irgendwo in einem Verhältnis stehen, bei dem sich der Aufwand lohnt (s. mein Posting).
Insofern ist es vielleicht eine klügere Entscheidung, auf A zu verzichten, wenn der Implementierungsaufwand von A keinen entscheidenden Vorteil gegenüber B bringen würde. Dem Beispiel folgend, ist auch ein Verzicht auf B professioneller, vorausgesetzt - ich wiederhole mich mal  - B bringt keinen entscheidenden Vorteil.

Das richtige Abwägen von Lösungen empfinde ich mindestens für genau so wichtig, wie den von Dir beschriebenen Aspekt des Softwaredesigns. Mein Beitrag bezog sich auch eher auf eine kommerzielle Arbeitsumgebung - privat hat man schließlich alle Zeit der Welt .


----------



## Landei (21. Dez 2009)

bygones hat gesagt.:


> ...
> Ich wiederhol mich gerne: Es moege der die Hand heben der fuer seine ersten Java Programme die absolute neuwertige und unbekannt Applikation geschrieben hat
> 
> q.e.d



Meine erstes ernsthafteres Java-Programm war ein kleines Demo für den verteilten Zugriff auf eine gemeinsame Resourcen (Vorlesung "Verteilte Systeme"), also nicht besonders innovativ. Nummer zwei war Teil meiner Diplomarbeit ("Computergestützte Auswahl einer optimalen Entscheidungsalternative") und transformierte ein "anschauliches", aber nicht direkt berechenbares Modell in ein komplizierteres, aber mit Standard-Optimierungsprogrammen (wie LP-Solve) zu lösendes ganzzahlig-lineares Modell, und an dieser Stelle würde ich gern meine Hand heben (wobei fairerweise gesagt werden muss, dass die Mathematik - etwa die kreative Benutzung der vorhandenen Modelle - innovativ war, weniger das Transformationsprogramm an sich)


----------



## bygones (22. Dez 2009)

ach - du bist mein persönlicher Held Landei... wunderbar


----------



## diggaa1984 (22. Dez 2009)

mal back to topic?

was gedenkst denn nun weiter zu tun noobadix, oder hat sich der thread schon erledigt?


----------



## noobadix (22. Dez 2009)

Nein, nix hat "sich" erledigt. ICH ringe derzeit mit den Tücken der Layoutmanager und solchem Kram. 

Persistent werden die Vokabeln also in einer Textdatei gespeichert. Zur Laufzeit werde ich die Vokablen mit IDs versehen und sie demnach einer HashMap zuordnen.

Dann werde ich den SourceCode in mehrere Dateien unterteilen, damit ich Teile des Proggs wiederverwerten kann und damit theoretisch andere leichter einsteigen könnten, bzw. dass sich die Arbeit geteilt werden kann.

Dann werde ich mir die Beiträge nochmals genau ansehen und gucken, was ich wo noch optimieren kann, sry, dass ich so lange brauche...hab nur mittlere Reife ^^

Die WeedMap suchend
N.


----------



## diggaa1984 (22. Dez 2009)

ging ja nicht ums lange warten, sondern nur um ein "ja ich probier mal was ich kann"  .. aber klingt ja schon gut


----------



## DamienX (23. Dez 2009)

bygones hat gesagt.:


> lol
> 
> also ehrlich - man kanns mit der "super-duper-daten-struktur" fuer einen simplen Vokabeltrainer auch ziemlich uebertreiben.
> 
> ...



Sorry bei allem respekt aber das muss ich nochmal aufrollen. Jeder Entwickler (auch ich) musste
sich am Anfang die selbe Leier anhören. Und zwar dass man sich VORHER gedanken macht wie man
ein Projekt umsetzt (Phasenkonzept blabla). Ausserdem spielen bei solchen Projekte die Datenstrukturen
zudem eine entscheidende Rolle. Probleme im voraus zu erahnen (BEVOR sie auftreten) ist meiner Meinung nach eine 
Kernaufgabe des Entwicklers. Unabhängig davon ob ich dich da richtig interpretiert habe... das sollte noch hier rein!

P.S.: Vor allem ist die Gefahr von MemLeaks bei ottonormal HashMaps nicht zu unterschätzen.

Mfg Alex


----------



## noobadix (23. Dez 2009)

Hallo,

vielen Danke für eure Mühe bisher. Ja, eigentlich möchte ich auf alle realistischen Eventualitäten vorbereitet sein, da ist also noch einiges in Sachen Fehlerbehandlung zu tun.

Was die Speicherstruktur zur Laufzeit angeht habe ich noch nichts verändert und auch sonst keine tiefgreifenden "Performanceverbesserungen" vorgenommen.

Aber ich habe eine grobe Unterteilung der Klassen vorgenommen, ein Jar erstellt und Javadoc begonnen.

Dass es um globale Variablen nicht so gut steht hab ich schon irgendwo irgendwie aufgeschnappt. Also besteht keine Möglichkeit außer der "extends" - Erweiterung, eine Variable in mehreren Klassen desselben packages zu benutzen?

Wie die einzeilige Kurzbeschreibung einer Methode in Javadocs aussehen muss, hab ich gerafft, aber wie die ausführliche Beschreibung implementieren? Mag mir wer auf die Sprünge helfen?:


```
...

/**
*
*Das kommt in die Kurzbeschreibung
*
*@author Hr. Daskannichauchschon
**/
public void tolleMethode(){ //macht nix}

...
```

Hier der Zwischenstand:


----------



## eRaaaa (24. Dez 2009)

> a)Dass es um globale Variablen nicht so gut steht hab ich schon irgendwo irgendwie aufgeschnappt. Also besteht keine Möglichkeit außer der "extends" - Erweiterung, eine Variable in mehreren Klassen desselben packages zu benutzen?
> 
> -----------------------
> 
> b)Wie die einzeilige Kurzbeschreibung einer Methode in Javadocs aussehen muss, hab ich gerafft, aber wie die ausführliche Beschreibung implementieren? Mag mir wer auf die Sprünge helfen?:



Hast du bei a) mal ein konkretes Beispiel? Also mit getter und setter solltest du doch von überall, wo du willst, darauf zugreifen können? Oder versteh ich die Frage falsch?

Und bei b) kann ich dir auch nicht ganz folgen, was du mit ausführlicher Beschreibung meinst?

```
/**
    	 * 
    	 * Calls JFrame.setSize(x,y) and JFrame.setLocation(px,py) and setVisible(true).
    	 *  
    	 * @param x x-Koordinate for JFrame.setSize(x,y)
    	 * @param y y-Koordinate for JFrame.setSize(x,y)
    	 */
    	public void showUp(int x, int y){
    		this.pack();
    		this.setLocation(x,y);
    		this.setVisible(true);
    	}
```
Bis auf den Teil, dass du vermutlich setSize durch pack() ersetzt hast irgendwann und x und y nicht für setSize verwendet wird, sondern anscheinend für setLocation (hast wohl was an der Methode geändert, aber den Kommentar nicht mit verändert *g*) sieht doch das vom Aufbau her garnicht schlecht aus?! Vllt bei der Beschreibung nicht sagen was aufgerufen wird, sondern eher was die Methode macht.

How to Write Doc Comments for the Javadoc Tool  vllt. ganz interessant!


----------



## noobadix (24. Dez 2009)

@eRaaaa #36

Hallo Nachtschwärmer,

danke, dass du mich mine pahr fählas tsaighst.

Problem a) 
Dir liegt ja mein Code vor. In der Variablen MAINVOC der Klasse Vokabulator wird der Speicherinhalt geladen. Darauf möchte ich nun auch in der Klasse Wordtest zugreifen können. Habe das nun so gelöst, dass ich MAINVOC dem Konstruktor von Wordtest übergebe, allerdings kann MAINVOC auch mal ganz schön fett werden. Habe ich das richtig verstanden, dass damit ein zweites Objekt geklont wird und nicht einfach eine neue Referenz erzeugt wird? Falls ja, wäre das evtl. problematisch.

Problem b)
Habe einen Screenshot angehängt, in dem zu sehen ist, dass ich das Problem gelöst habe. Die einzeilige Klassen-/Methodenbeschreibung (hier der Klasse GuiTools) wird mit Punkt und Absatz beendet. Der Rest wird in der Javadoc als "ausführlichere" Beschreibung via Link angezeigt.
Im Beispiel wird in der Kurzbeschreibung der Text BIS "yeah" angezeigt, via Link dann mit "yeah"
Ein Bild sagt mehr als zig Worte:


----------



## eRaaaa (24. Dez 2009)

> Problem a)
> Dir liegt ja mein Code vor. In der Variablen MAINVOC der Klasse Vokabulator wird der Speicherinhalt geladen. Darauf möchte ich nun auch in der Klasse Wordtest zugreifen können. Habe das nun so gelöst, dass ich MAINVOC dem Konstruktor von Wordtest übergebe, allerdings kann MAINVOC auch mal ganz schön fett werden. Habe ich das richtig verstanden, dass damit ein zweites Objekt geklont wird und nicht einfach eine neue Referenz erzeugt wird? Falls ja, wäre das evtl. problematisch.



Also ich hätte dir jetzt genau das vorgeschlagen  (man hätte es vllt. auch mit einem setter-"injektieren" können)
Da wird auch nichts "geklont" : Galileo Computing :: Java ist auch eine Insel (8. Auflage) – 3.6 Mit Referenzen arbeiten :toll:


----------



## noobadix (24. Dez 2009)

Hm, wie heißt's bei uns im Berlin-Wedding doch so schön: "Was willste machen?"


----------



## noobadix (26. Dez 2009)

So, das ist zwar immernoch keine Version, die den bisherigen Beiträgen und Überlegungen Rechnung trägt, aber sie ist so weit ich es erkennen kann bug-frei.

Hat schon was exhibitionistisches, he? Sry

Aber es wird nicht mehr lange dauern, dann kann das ding auch per bluetooth mit j2me kommunizieren und zack! kann man in der U-Bahn oder so andere Wörter für dieselben Sachen lernen.

:toll: 

><


----------



## noobadix (2. Jan 2010)

So, ich denke, das isses. Sollte jemand die Lust und Muße haben das Programm nach bugs zu durchsuchen oder mir andereitig Feedbacks zu geben, würde ich mich freilich freuen. Was das Speichermanagement angeht habe ich iiiiimmmmmmernochnichts geändert, aber ich möchte zunächst eine funktionierende Version haben. Das sollte sie jetzt sein, bis auf das richtig-icon im Abfragemodus, das muss ich noch selbst generieren.

Was auch noch nicht funktioniert ist die Kommunikation via Bluetooth, vielleicht hat jemand Erfahrung mit Bluecove/J2ME und Lust mir meinen Fehler aufzuzueigen? Habs aufgegeben. Ich möchte eigentlich erstmal nur einen String vom Handy zum PC schicken, so ist sind die Dateien bluesync.java und dingsbumsmobile.java ausgelegt.

Falls es jemand gebrauchen kann, viel Spaß damit.


----------



## Landei (2. Jan 2010)

Wenn du denkst, dass es ein nützliches Programm ist, und du es der Öffentlichkeit zugänglich machen willst, solltest du dir eine passende Lizens raussuchen und das Ding auf SourceForge, Google Code oder so packen. Vielleicht findest du ja auch so Leute, die dir mir Bluetooth und dem Rest helfen. while(World.sucks()) und so weiter...


----------



## noobadix (2. Jan 2010)

Wie das mit der Lizenz funktioniert hab ich noch nicht rausgefunden. Ich will lediglich, dass DIESES Programm so in der Form umsonst zu haben ist. Werd mal los googlen.


----------



## noobadix (2. Jan 2010)

Ah, das ging ja leichter als gedacht. Das gute Stück ist nun unter Dingsbums auf sourceforge zu finden 

Danke Landei für den Hinweis.


----------



## diggaa1984 (2. Jan 2010)

ich hoffe du hast ne gute beschreibung für dein Dingsbums :autsch:


----------



## noobadix (3. Jan 2010)

Diggaa, das ist heutzutage nicht mehr so einfach einen passenden legalen Namen für nen Vokabeltrainer zu finden. Da ist dingsbums eigentlich gar nicht soo schlecht


----------



## javimka (3. Jan 2010)

JVokabeltrainer schon vergeben?


----------



## noobadix (3. Jan 2010)

Boah...jut javimka, sehr jut, wird ad hoc übernommen.  Da wird sich zwar bestimmt bald einer drüber ärgern, aber...ich bin's nicht xD

edit: obwohl...hach nee ich heiße ihn: Tribuit. JVokabeltrainer impliziert ein Niveau, das ich wohl nicht bedienen kann. Aber der Name an sich ist gut.


----------



## noobadix (30. Mai 2010)

Falls es wem nützt: Tribuit | Get Tribuit at SourceForge.net

Im herunterladbaren zip ist auch der Quellcode enthalten.


----------



## noobadix (23. Sep 2010)

Ziel war es einen minimalen, aber was Sprachen betrifft flexiblen Vokabeltrainer und - Verwalter zu schreiben, das ist, denke ich, nun erreicht. Vielleicht hat jemand Lust mal drüber zu gucken? Hab hier im Forum zwar schon damit rumgefuchtelt, aber direkt um Feedback und Anregungen möchte ich hier nochmal bitten, besonders Fehler bitte melden!

Tribuit - vocabulary trainer | Download Tribuit - vocabulary trainer software for free at SourceForge.net

Danke vorab n.


----------



## Landei (23. Sep 2010)

Nur mal schnell angetestet: Funktioniert einwandfrei für Unicode, auch mit IME-Eingabe für Japanisch.


----------



## Marco13 (23. Sep 2010)

Ja, auch nur kurz getestet, aber keine Fehler gefunden. Zumindest nicht im Code  : "vertrauen" -> "to rely on" (und nicht rel*a*y on). Ansonsten ist's halt schwierig mit den 1:1-Übersetzungen. Ich hatte es zuerst mit "to trust" übersetzt. Aber wenn sich das auf Lektionen und "auswendig" gelernte Vokabeln bezieht, kann man wohl davon ausgehen, dass sie genau SO gelernt werden sollten, wie sie auch abgefagt werden. Für alles andere müßte man ja dict.leo.org oder dict.cc online anzapfen und per HTTP POST und GET das Ergebnis auf Plausibilität überprüfen :smoke:


----------



## Friedhelm (24. Sep 2010)

Das Ding ist ganz nett... aber ich würde das Tribuit Fenster so gross wie das "Nachschlagen" Fenster machen und die Ergebnisse im (immer schwarzen) Tribuit Fenster anzeigen.

Anonsten garnicht mal so schlecht 


P.s.: Aber wie kommen die Vokabeln alle rein? Muss man die alle selbst eintippen?


----------



## Landei (24. Sep 2010)

Als Nachteil würde ich noch ansehen, dass die Vokabellisten nicht mit einem normalen Editor zu bearbeiten sind.


----------



## noobadix (24. Sep 2010)

> Für alles andere müßte man ja dict.leo.org oder dict.cc online anzapfen und per HTTP POST und GET das Ergebnis auf Plausibilität überprüfen.



Die Idee ist gut, jedoch bin ich mir über die Rechtslage auch hier nicht im klaren. Für den privaten Gebrauch aber sehr wohl tauglich...brrrr, das wird ne Arbeit, wenigstens lohnt es sich. Pff, relay on....doppelt falsch, es meint, sich auf etwas zu verlassen, und falsch geschrieben ist es auch, danke. Hab nun zumindest eine überarbeitete Vokabelliste hochgeladen, da waren noch mehr, peinliche Fehler ><



> ...die Ergebnisse im (immer schwarzen) Tribuit Fenster anzeigen.



Das Hauptfenster ist tatsächlich reichlich funktionslos, der Name Tribuit ist so griffig, den muss man nicht einhypnotisieren. Werde daran arbeiten.



> Aber wie kommen die Vokabeln alle rein? Muss man die alle selbst eintippen?



Das ist ein Problem, allerdings: Sprechen wäre sehr elegant, einscannen ebenso, aber das übersteigt meine Fähigkeiten, befürchte ich, weit. Was schlägst du vor? 



> Als Nachteil würde ich noch ansehen, dass die Vokabellisten nicht mit einem normalen Editor zu bearbeiten sind.



Mit viel Liebe sind sie das schon, aber kaum menschenlesbar. Eine Zeile pro Vokabel und Syntax-Erklärung sollte Abhilfe schaffen?


----------



## Marco13 (24. Sep 2010)

noobadix hat gesagt.:


> Das ist ein Problem, allerdings: Sprechen wäre sehr elegant, einscannen ebenso, aber das übersteigt meine Fähigkeiten, befürchte ich, weit. Was schlägst du vor?



dict.leo.org, dict.cc oder mit Hilfe von Wortlisten babelfish auslutschen


----------



## Friedhelm (24. Sep 2010)

noobadix hat gesagt.:


> Das ist ein Problem, allerdings: Sprechen wäre sehr elegant, einscannen ebenso, aber das übersteigt meine Fähigkeiten, befürchte ich, weit. Was schlägst du vor?



Einfach ein paar Parser einbauen. Man trägt beim Import eine URL ein und startet den Scanvorgang (je nach eingegebener URL wird der richtige Parser gestartet, wenn die URL nicht unterstützt wird, dann anzeigen "Wird nicht unterstützt!". Ich denke so umgeht man evtl. rechtliche Auseinandersetzungen. Genaues weiß ich aber auch nicht 

Oder man baut die als Plug-Ins ein... sind dann nicht Bestandteil des Programms.

Genial wäre natürlich ein universeller Parser mit TextArea-Feld, in dem man die ParseAnweisungen kopiert... dann kann man aus jeder beliebigen Seite die Daten filtern (ähnlich wie bei PLEX und den Filmdatenbanken die angezapft werden).


----------



## noobadix (20. Okt 2010)

Hat jemand Ideen für Vokabel-Spiele? Galgenmännchen/Glücksrad fällt mir ein, aber sonst bin ich recht einfallslos ><


----------



## XHelp (20. Okt 2010)

Kannst dich ja in Spielwarenläden umschauen. Solltest du in der Nähe von Essen wohnen, lohnt sich bestimmt ein besuch auf der Spiel, die morgen startet.
Da lässt sich bestimmt die eine oder andere Idee übernehmen.


----------

