Beiträge von a9bejo

    aber in der Zwischenzeit hab ich bemerkt dass die Anmeldung generell manchmal nicht funzt.

    Das ist aber kein generelles Problem mit der twoday Software, sondern mit der Anbindung an das Accounting von der TU Wien. Damit hat es leider schon immer Probleme gegeben. Auf twoday.net gibt es die meines Wissens nach nicht. Dort wird aber auch die Software öfter mal upgedated.

    hm, eigentlich fehlt da keine methode, ich hab auch nur die eine klasse :) ....

    Du implementierst in deiner Klasse die Interfaces ActionListener, WindowListener und ChangeListener.

    D.h. Du musst alle Methoden, die in diesen Interfaces beschrieben stehen, implementieren. Ansonsten kann Dein Code nicht kompilieren.

    Zitat

    kannst du mir da dabei helfen?


    Ja.

    Du erstellst derzeit von der Klasse DrawExample zwei verschiedene Instanzen: Eine fuegst Du zu Deinem JFrame hinzu:

    PHP
    frame.getContentPane().add(new DrawExample());

    die andere erwartet das Event vom slider:

    PHP
    ChangeListener aChangeListener = new DrawExample();
    slider.addChangeListener(aChangeListener);

    das bedeutet das die Instanz, die das ChangeEvent vom Slider empfaengt, gar nicht Teil Deines Fensters ist. Und die Instanz die tatsaechlich am Fenster haengt, bekommt das Event nicht.

    Also um Deinen code zum Laufen zu bringen:

    - Entferne die Interfaces ActionListener und WindowListener, denn die verwendest Du derzeit eh nicht.

    - Erstelle eine einzige Instanz von DrawExample, und uebergib diese Instanz dann einmal an das Frame (in ihrer Funktion als JCompontent) und einmal an den JSlider (in ihrer Funktion als ChangeListener).

    - seit java 6 musst du nicht mehr JFrame.getContentPage().add() verwenden. Du kannst/solltest stattdessen einfach die add() Methode benutzen.

    hab ich paradeisa auf den augen, oder ueberseh ich da die verwendung von quicktime?

    Nein, das siehst Du richtig. Dazu werden die Interfaces ActionListener, WindowListener und ChangeListener implementiert, jedoch fehlen 8 Methoden, die in diesen Interfaces definiert sind. Konnte das Beispiel deshalb leider nicht testen.

    Uebrigens: Viel einfacher geht das mit JavaFX:

    Absteigend sortieren und dann die ersten 3 ergebnisse nehmen.

    SELECT Titel FROM Buch ORDER BY seiten DESC LIMIT 3

    limit ist datenbankspezifisch. Die meisten Datenbanken haben aber dieses feature, schaut nur immer ein wenig anders aus.

    Wir arbeiten testbasiert und fahren damit sehr gut. Wir machen schon Test first, aber wir schreiben in der Regel erstmal nur ein groben Testfall, der die erfolgreiche Funktionalität ungefähr tested. Der Test veraendert sich dann schon während der Implementierung sehr stark, und die tatsächliche Testabdeckung (innerhalb eines Tests) bleibt auch erstmal relativ gering. Die Testabdeckung wächst dann nach und nach beim Bugfixing, Refactoring und beim Erweitern der Unit.

    - Geschwindigkeit ist definitiv weit höher als ohne Tests. Und wir verbringen sehr viel Zeit mit der Testpflege. Es ist aber nicht so als währe das Schreiben der Tests eine laestige Zusatzaufgabe beim Entwicklen: Tests schreiben bedeutet Softwarekomponenten designen, und das ist ja auch eigentlich der interessante Teil am programmieren.

    - meiner Erfahrung ist es wichtiger, das es fuer jede Komponente einen funktionierenden Test gibt, als das ein einzelner Test möglichst viel Funktionalitaet abdeckt.

    - Keine Tests -> kein Refaktoring. Theoretisch kann man immer am Code schrauben, aber praktisch gesehen kann man nicht in vernuepftiger Zeit refaktoren, wenn man keine Tests hat (oder wenn man den Tests nicht vertrauen kann). Wir benutzen im Frontend eine Komponente, die sich ueber kein ausgereiftes Testframework verfuegt. In der Folge gibt es auch keine richtigen Tests. Da kann man den Unterschied ganz deutlich spuehren: Du machst eine Aenderung und dann musst Du das ganze verdammte Projekt anschauen um sicher zu gehen, das noch alles steht. Und das geht natuerlich nur sehr bedingt und kostet sehr viel Zeit.

    - Bei groesseren Projekten musst Du ohnehin jedes Modul unabhaengig voneinander testen. Alles andere wuerde viel zu lange dauern. Also warum nicht gleich richtige Unittests schreiben?

    - Wir dokumentieren nicht konsequent genug. Das heisst, dass die Tests meistens die beste Dokumentation ist, die wir haben. Der mit Abstand beste Weg um unseren Code zu verstehen ist das Studieren der Tests. Damit geht es dann aber sehr gut: Du kannst den Test benutzen, um zu verstehen was ein Modul macht, ohne gleich das ganze Projekt zu verstehen. Die Tests selber sind dann auch of sehr gut dokumentiert.

    - Wichtig ist es, wirkliche Unittests zu machen und die Integrationtests EXTRA. D.h. mann muss Mockups schreiben um alle externen Dependencies aufloesen. In Unittests keine gemeinsame Datenbank verwenden, auf Netzwerkresourcen zugreifen oder auf Resourcen mit einem absoluten Pfadnamen oder was auch immer. Wenn man da nicht stur bleibt und Zeit investiert, dann kann man es gleich bleiben lassen.

    - Das Fehlschlagen von Tests darf man auf keinen Fall zulassen! Wenn es nur einen Test gibt, der "halt immer schieflaeuft", dann vertraut niemand mehr dem ganzen Testprozess. Wir verwenden fuer unsere Java projekte Maven, und wenn die Tests (JUnit) nicht erfolgreich sind, kann nicht gebuildet und submitted werden. Das muesste man mit einem extra Parameter umgehen, und jeder weiss das er es nicht tuen soll. Ruby on Rails legt Gerueste fuer unit- und integrationtests automatisch an, inklusive der Datenbank. Fuer Haskell gibt es QuickCheck.

    Beide Dateien sind im selben Verzeichnis.

    Sollten sie aber nicht, denn die Klasse Daniel ist im default package (du hast keine package anweisung in Daniel.java). Die Klasse Calculator hast du aber in einem package 'ds' definiert.
    D.h der Calculator muss auch in einem entsprechendem Unterordner liegen und du musst im Calculator die klasse Daniel importieren. Oder Du schiebst beide in das selbe package.

    Alle anderen Antworten waren natuerlich voellig richtig und hoffentlich hilfreich, aber hier noch ein ganz anderer, rein praktisch orientierter Tip:

    Wenn Du irgendetwas mit Java machst und Du kommst an eine Stelle wo Du dir denkst: "Komisch, das es diese Funktion gar nicht in der Standardbibliothek gibt", dann schau immer erst bei apache.org nach. Die URL fuer die Apache Commons APIs sind ungefaehr genauso wichtig zu kennen wie das API vom JDK. Fast jedes Java Projekt das ich jemals geschrieben oder ausgefuehrt oder gelesen habe braucht irgendeine API aus diesem Projekt. z.b um [url=http://commons.apache.org/io/apidocs/org…o.OutputStream)]streams zu kopieren[/url].

    Wenn Java eine Abkuerzung waehre, dann staende das A fuer Apache.

    Hier ein Test von heise.de: http://www.heise.de/mobil/artikel/98366/0

    Zitat


    Sofern der taiwanische Preis von 240 Euro für dieses Modell auch in Deutschland gilt, dann hat Asus mit dem Eee PC einen echten Kracher im Programm. Der Kleine ersetzt zwar weder Notebook noch PC, aber als stabiler Rechner unterwegs, der alle benötigten Anwendungen bereits mitbringt, schick aussieht und in jede Tasche passen dürfte, ist er unschlagbar – und konkurrenzlos: One Laptop per Child muss den ursprünglich 100-Dollar-Laptop genannten XO für knapp 200 US-Dollar verkaufen und hat weiter mit Verzögerungen zu kämpfen; Intels Classmate gibts nur für Regierungsorganisationen.

    Kann mir bitte jemand erklären, welchen Vorteil man von variablen Variablennamen hat?
    -- Stefan

    Mir faellt jetzt kein Grund ein, warum man lokale Variablennamen dynamisch erstellen sollte, aber durch Metaprogrammierung (Ueberbegriff) laesst sich oft sehr eleganter Code erzeugen.

    Im Webframework Ruby On Rails werden z.B. beim ActiveRecordPattern dynamisch Klassen anhand des Datenbankschemas aufgebaut. Also sagen wir Du hast eine Tabelle 'people' mit den feldern 'fullname' und 'age', dann kannst du schreiben:

    Code
    class Person < ActiveRecord::Base
    end

    und anschliessend haben dann Instanzen von 'Person' Zugriffsmethoden, um Records zu bearbeiten:

    Code
    person = Person.find_by_fullname "Max Mustermann"
    person.fullname = "Hansi Hinterseer"

    Das bedeutet, Du hast die Informationen der Feldnamen nicht redundant, sondern nur einmal vorliegen (naemlich in der Datenbank). Wenn Du das Schema aenderst, dann sind die Aenderungen automatisch auch im Code.

    Das ist nur ein Pattern und nicht immer sinnvoll (z.b. bei legacy Datenbanken). Aber es ist sehr populaer und nimmt oft eine ganze Menge Komplexitaet aus dem Code.

    Dann gibt es z.b. den Builder, mit dem man z.B. sehr elegant XML erstellen kann, indem die Methoden zur Laufzeit erstellen werden:

    http://builder.rubyforge.org/



    Da geht doch jegliche Typsicherheit zur Compile-Zeit verloren...


    Ja, aber wie stark dieser Nachteil sich in Relation zu den Vorteilen von dynamischen Typing auswirkt (weniger Code, lesbarere Konstrukte) ist alles andere als sicher und wird seit Jahrzehnten ausgiebig diskutiert. Ein klassisches Gegenargument ist z.B.: Wenn man Test-driven arbeitet, dann decken die Unittests ohnehin auch Typfehler schnell auf. Interessant sind hier auch Sprachen wie Haskell, die mit optionaler statischer Typisierung und Typeninferenz arbeiten.

    Hat jemand vielleicht noch paar ähnliche Links für mich?! :) Oder worauf ich überhaupt suchen soll?!

    Ausser sourceforge fallen mir jetzt noch http://code.google.com/hosting/ , http://rubyforge.org/ , http://java.net/ ein.

    Am besten suchst Du dir einfach ein oder mehrere interessante Projekte raus, lädst Dir den Sourcecode herunter und liest Die Mailinglisten mit. So findest Du heraus was da alles an Arbeit anfällt, wo Du dich nützlich machen könntest, und vor allem, ob du da mitmachen möchtest.

    Den Sourcecode anschauen ist nicht nur gut um dann später daran mitzuarbeiten: Du lernst extrem viel darüber, wie Software aufgebaut ist.

    - Das wichtigste bei einem Projekt ist, das es Dich interessiert. Du sollst ja Spass haben, wenn Du daran arbeitest.

    - Ein guter Einstieg in ein Projekt ist oft, Dokumentation zu schreiben. In vielen Projekten wollen die meisten lieber Code schreiben als dokumentieren, darum ist jemand der Doku macht oft sehr gerne gesehen. Außerdem muss man z.b. Code verstehen, um ihn zu dokumentieren: Ein guter Einstieg um das Projekt kennenzulernen.

    - Wenn Du Dich möglichst nützlich machen möchtest, dann suchst Du dir Projekte, die viel von dem machen, was Du schon kannst. Dann lernst Du immer noch sehr viel, weil Java programmieren in einem Team, an einem richtigen Projekt schon sehr viel anders ist als die Uebungen, die man auf der Uni macht.

    - Aber wenn Du möglichst viel neues dazulernen willst, dann suchst Du dir ein Projekt, das viel Technologien verwendet, die moeglichst anders sind als das was Du schon kennst. Wenn Du schon C++ und Java kennst, willst Du z.b. vielleicht mal Erlang oder Python lernen.

    - Javascript ist absolut nicht ähnlich zu Java. Die Syntax sieht ähnlich aus, aber abgesehen davon hat Javascript mehr Aehnlichkeit mit z.b. Lisp oder Ocaml als mit Java.

    wie wärs mit dem bestimmen aller häufungen, ordnen derselben nach länge der häufung und melden der ersten 10 prozent ?

    oder melden aller häufungen die länger als die durchschnittliche häufungslänge sind ?

    Bekommst du dann nicht immer als erstes Ergebnis den gesamten String zurueck? Weil der ist ja immer die laengste Haeufung. Ausserdem ist, wenn ich mich jetzt nicht irre, das Berechnen aller moeglichen Haeufungen ein Theta(n^2) Problem. Meine Heuristik von oben war z.B. linear.

    Ich dachte ich haette Deine Frage hiermit beantwortet:

    Zitat von a9bejo

    Das J2EE package, das Du Dir von Sun Microsystems herunterladen kannst, enthaelt nicht auch das JDK.

    Aber wenn Du nur das J2EE package von Sun installiert hast, dann installiert der installer von sun das SDK vielleicht gleich mit. Aber Du hast das JDK (oder theoretisch j2me) auf jeden Fall installiert, wenn Du Code kompilieren kannst.

    Update: Ah, jetzt hab ichs. Ich verwechsele JDK mit J2SE. das J2SE package von Sun musst Du nicht mitinstallieren. Das JDK (Kompiler, STDLIB usw.) wird mitinstalliert. Sorry for the mess

    Erlich gesagt weiß ich nicht genau wie groß der Datenbestand sein wird. Da es sich dabei allerdings um Dokumente (z.B. Spezifikationen) und Modelle aus dem CAD Bereich handelt kann der Umfang schon größer werden (zumindest was den Speicherplatz betrifft).

    Fuer mich klingt das nicht so schlimm: Es hoert sich so an, als waehre da ein ueberschaubares Team von Benutzern die immer wieder mal Daten raufladen. Auch wenn die Dokumente selbst gross sind, werden vermutlich nicht 1000 neue Dokumente pro Minute erstellt. Diese Menge in kurzer Zeit zu indizieren sollte ueberhaupt kein Problem darstellen. Ich definiere "in kurzer Zeit" absichtlich nicht, da ich ja nur wenig Informationen habe.


    Im Beispiel wird folgendermaßen verfahren:

    • Create an IndexWriter.
    • Locate each file to be indexed by walking the directory looking for file names ending in .txt.
    • For each text file, create a Document with the desired Fields.
    • Add the document to the IndexWriter instance.

    Das ist der Vorgang bei Lucene. Wenn Du da mehr Beispielcode brauchst: Ich habe hier ein kurzes Beispiel in Ruby/Java, wo ich Daten von twitter.com in einen Index spiele:

    http://blog.bookworm.at/2007/04/twitter-lucene.html

    In einer Produktivumgebung gibt es aber meistens noch mehr Dinge zu beachten, darum habe ich solr empfohlen.

    Eine 10 Minuten Einfuehrung in solr findest Du hier: http://lucene.apache.org/solr/tutorial.html


    Punkt drei interessiert mich besonders. Die Felder müssen ja zur Buildtime festgelegt werden um sie später in den Anfragen des Users nutzen zu können (?). Was mache ich wenn ich ein neues Feld einführen möchte um dieses später in einer Anfrage an die Datenbank einsetzen zu können, ohne den Code händisch ändern und neu compilieren zu müssen?
    Das wäre doch zum Erreichen dieses Ziels durch erneute Indizierung notwendig oder nicht?

    Ja: Was Du in dem Index speichern willst, bleibt Dir ueberlassen. Das kann Deine Software ja nicht wissen. Du kannst natuerlich Code schreiben, der sich das Datenbankschema anschaut und daraus heraus dann entscheidet, welche Felder der neue Index haben soll. Aber eine bestehende Loesung, um den Index dynamisch mit dem gesamten Datenbankschema zu synchronisieren, gibt es meines Wissens nach nicht.

    Du willst in der Regel aber gar nicht alle Felder aus allen Tabellen in der Datenbank fuer den Index indizieren. Sondern eben nur die Daten, in denen wirklich gesucht werden soll. Und ueblicherweise aendert man an seinem Datenbankschema ja nicht oft etwas.

    Das J2EE package, das Du Dir von Sun Microsystems herunterladen kannst, enthaelt nicht auch das JDK.

    j2ee ist aber eigentlich keine Software, sondern eine Reihe von Spezifikationen und Schnittstellen. Es gibt viele Implementierungen von diesen Schnittstellen, und so mancher Hersteller wird vielleicht auch ein JDK zu einem Download Paket dazustecken.

    Der Titel der Studie lautet:

    "Was macht Unternehmen als Arbeitgeber für Studierende, Universitäts-Absolventen und Jobsuchende attraktiv?"

    Beschiss! Ich hatte gedacht ich helfe mit dieser Umfrage mir selbst, in dem ich Unternehmen einen Hinweis darauf gebe, was mir bei einem Arbeitgeber besonders wichtig ist. Der Titel klingt danach.

    Die Fragen lassen aber vermuten, dass hier vielmehr untersucht wird, welchen Eindruck US Konzerne im Verlgeich zu oesterreichischen Unternehmen bei Arbeitnehmern machen. Nicht verwunderlich, denn hinter der Umfrage scheinen die Unternehmen Booz Allen Hamilton, Oracle, UPC, General Motors, PricewaterhouseCoopers oder der American Chamber of Commerce in Austria zu stecken. Zwei, drei Fragenbloecke beziehen sich ueberhaupt auf die Anforderungen, die einen Arbeitgeber attraktiv machen. Die anderen Fragen sind eher in die Richtung "Wissen Kunden eigentlich, das Telekabel einem textanischen Grosskonzern angehoert?". Die Fragen die sich direkt ums Angestelltenverhaeltnis drehen sind richtig dumm gestellt: "Welche der folgenden 10 Bereiche sind interessant?" - Und dann eine ganz allgemeine Liste, in denen es ueberall interressante und oede Bereiche gibt. Und egal was man davon haelt: Man muss genau 3 Stueck auswaehlen.

    Keine Fragen danach wie wichtig mir kreatives Arbeiten ist, oder vom Arbeitgeber finanzierte Weiterbildung, oder puenktliche Bezahlung.

    - Fragen, bei denen man etwas (irgendwas) auswaehlen muss, um die Umfrage weiterzufuehren. Selbst wenn kein einziger Punkt zutreffend ist.

    - "Was ist besonders wichtig" Fragen, bei denen die einzelnen Kriterien hintereinander zu bewerten sind (d.h. man kann die Kriterien gar nicht gegeneinander abwiegen).

    Ich bin etwas enttaeuscht, dass solche hinterhaeltigen Marktanalysen ueber TU Career beworben werden.

    Lenovo Thinkpads und Apple sind wohl die Elite im Notebookmarkt. Wenn es nach Reperaturstatistiken und Support geht, schneiden diese beiden Firmen am besten ab. Wenn es nach dem Ruf geht ebenfalls. Lenovo sogar noch vor Apple, weil Apple in den letzten Monaten einige Patzer hatte.

    Meine persoenliche Meinung: Wenn auf dem Rechner Linux laufen soll dann kauf Dir ein Thinkpad aus der X Serie. Ansonsten kauf Dir ein Macbook Pro.