Beiträge von a9bejo

    Na da hab ich noch extra geschrieben:

    Zitat von a9bejo


    Suns JavaFX bitte nicht verwechseln mit Applets, Webstart oder serverseitigem Java!)

    Aber so wie es aussieht ist JavaFX tatsaechlich nicht viel mehr
    als Swing, das ueber Java Webstart oder in Applets gestartet
    wird. Es gibt halt eine neue Sprache (eben JavaFX Script), mit
    der man die GUIs deklarativ basteln kann. Aber so viel neues
    habe ich bis jetzt nicht gesehen.

    Wen es interressiert, und wer sich gewappnet fuehlt, dass
    ganze Marketinggebrabbel ueber sich ergehen zu lassen: Die
    Keynotes zur Java One, wo auch JavaFX vorgestellt wurde, finden
    sich hier.
    Bruce Eckel haelt dort morgen auch einen Vortrag. Ueber Flex :).

    Zitat von phudy

    aber mal abgesehen von solchen (politischen) eigenschaften, wie
    siehts mit den produkten/technologien an sich aus? was gibts
    neues? wo gibts erhebliche einschraenkungen?

    Bei JavaFX hast du hast du halt das gesamte JDK mit seinen X tausend
    Klassen und Komponenten zur Verfuegung. Adobes Framework kann da
    nicht mithalten. Aber das muss ja nicht unbedingt was schlechtes
    sein. Wenn ich ueber Webservices mit einem Backend Daten
    austausche, dann muss mein GUI Framework eigentlich nur eines
    richtig gut koennen: Naemlich GUIs bauen. ;)

    Zitat von phudy

    Apollo ist dann quasi die weiterentwicklung von
    flex?

    Ich glaube Apollo ist in etwa das was Du ueber screenwaver
    schreibst. Also eine Moeglichkeit, Flash Applikationen
    am Desktop laufen zu lassen.

    Ich hab jetzt mal ein wenig in OpenLaszlo reingeschaut und
    die sind eigentlich schon laengst da angekommen, wo Adobe jetzt mit
    Flex hinmarschiert ist: Die GUI Entwicklung schaut sehr aehnlich wie
    Flex aus (siehe hier die demos), und ein OpenLaszlo Projekt laesst sich
    wahlweise als Flash oder als DHTML/AJAX deployen.

    Danke, genau auf solche Erfahrungsberichte hatte ich gehofft. Ich
    habe bis jetzt nur Spezifikation gelesen und ein paar kurze Beispiele
    geschrieben (einfache GUI kommuniziert ueber SOAP mit einem Ruby on
    Rails Backend u.a.). Da ist eine real world Erfahrung mit einer
    grossen codebasis schon sehr wertvoll.

    Hier ein paar Fragen:

    Konntest Du die GUI groesstenteils mit mxml machen oder musstest Du
    oefters direkt auf ActionScript zurueckgreifen. Was ich bis jetzt gesehen
    habe, ist ActionScript in Flash eigentlich nur notwendig, wenn man
    eigene GUI Komponenten erstellen moechte. Ist das korrekt?
    Beschraenkt sich der FlexAnteil deiner Software wirklich nur auf das
    darstellen der GUI und die Datenanbindung, oder ist dann am Ende doch
    noch irgendwo "richtige" Programmlogik eingeflossen? Hast Du am Backend
    umdenken muessen, als Du das Frontend gewechselt hast?

    Wie laeuft die Kommunikation zum Backend bei dir ueberhaupt ab? Ich
    rede immer von SOAP, aber da gibt es ja noch andere Moeglichkeiten.

    Zitat

    Anforderungen an das Frontend sehr "desktopig".


    Was war denn da zum Beispiel?

    Zitat

    Die Flex-IDE von Adobe ist zwar recht teuer, 500$, aber imho
    sehr gut, jeden Cent wert.

    Den Preis fuer die IDE finde ich sogar fast beruhigend. Wenn Adobe
    versucht mit den Lizenen fuer die Tools Geld zu verdienen, stehen die
    Chancen ja ganz gut das sie die Plattform selber (also vor allem
    Flash) standardisieren. Mit PDF hat das ja so auch schon gut
    funktioniert.

    Ausserdem hab ich den Eindruck man kommt auch ohne den Flex Builder
    sehr gut zurecht. Ich hab fuer meine Beispiele Emacs verwendet und
    den mxml source gegen ein Schema validiert. Da hat man dann code
    completion und syntax validation. Und das was Adobe gemacht hat, also
    eine IDE auf basis von Eclipse schreiben, dass kann man ihnen ja auch
    nachmachen.

    Der Entwickler von JavaFX Script (frueher 'F3') fuert ein Weblog mit Beispielen.
    Nichts grossartig beeindruckendes dabei, aber erwaehnenswert.
    Ausserdem gibt es eine Developer Site fuer das Projekt auf https://openjfx.dev.java.net/.

    die Demos scheinen alle ueber Java Webstart zu laufen und JavaFX
    ist eigentlich nur eine deklarative Sprache um GUIs zu bauen, die
    von der Syntax an ECMA script erinnert. Die Demos wirken alle
    etwas holprig. Von dem bischen, das ich bis jetzt gesehen habe,
    finde ich mxml und Flash die elegantere Loesung gegenueber JavaFX
    und Webstart. Naja, ich denke ich spiel erstmal ein wenig mit dem
    Zeug bevor ich es verurteile.


    Flash verfügt halt nicht über grosse Komponentenbibliotheken. Es
    gibt ein Projekt zum Einbinden von Java in Flash, aber
    ich weiss nicht, wie weit bzw. wie aktiv die sind.

    Was ich fast eleganter fände als eine Anbindung an eine
    bestehdene Plattform: Das man Desktop Applikationen genauso wie jetzt
    Webapplikationen ausliefert, also mit einer Backendkomponente
    und dann einem .swf das nur GUI macht und über SOAP/REST oder
    sogar einfache command line Befehle mit dem Background Process
    kommuniziert:

    Dann kann man nicht nur jede beliebige Plattform im Backend
    verwenden. Man kann auch bei Bedarf das Backend wieder auf einen
    anderen Rechner auslagern, die GUI ist immer hübsch von der Logik
    getrennt, und das beste: Jede so erstellte Desktop Applikation
    verfügt dann über eine maschinenlesbare Schnittstelle, die von
    anderen Applikationen im System verwendet werden kann.

    Also im Prinzip einfach SOA, aber auch für rein lokale
    Anwndungen auf dem Desktop.

    Wird für alle (gängigen) Browser auf
    allen (gängigen) Betriebssystemen zur Verfügung stehen

    Das ist nicht korrekt. Silverlight ist z.B. nicht unter Linux
    verfuegbar.

    Das Microsoft teile von Silverlight unter eine open source lizenz
    stellt wuste ich. Es ist meiner Meinung nach aber nur ein Versuch
    die Software besser zu vermarkten und hat kaum positive
    Auswirkungen fuer uns. Also in etwa so wie ".NET ist genauso
    platformunabhaengig wie Java" (das haben sie 2000 behauptet).

    Der Grund warum die Lizenz so wichtig ist ja das wir unsere
    Software nicht auf die Interessen von jemand anderen
    einschraenken lassen wollen.

    Microsoft kann uns Silverlight gar nicht ueberlassen, denn
    die Kontrolle ueber die Applikationsplatform ist wesentlicher
    Bestandteil ihres Businessmodells. Bei Adobe bin ich mir nicht
    so sicher, die koennten sich unter Umstaenden gezwungen sehen
    auch Flash frei zu geben. Und JavaFX ist halt von vornherein
    Open Source.

    Ich schaetze das Silverlight seine Verwendung findet, aber halt
    vor allem in den klassischen MS-Shops, nicht als allgemein
    akzeptierter Softwarestandard.

    nachdem Silverlight ja aufm .NET
    Framework aufbaut wird es sicher ziemlich komfortabel zu
    programmieren sein (hab da jedoch noch keine erfahrung damit, mit
    .NET allerdings schon).

    Ja, Du kannst z.B. mit jeder Programmiersprache arbeiten, die es
    fuer das .NET Framework gibt. Also z.B. kannst du deine Webguis
    mit IronPython oder Ruby basteln. Das sollte mit JavaFX aber auch
    ohne weiteres gehen. Zumindest wueste ich jetzt nicht was dagegen
    spricht. Das ist natürlich schon cool. Andererseits: Wenn ich
    damit vor allem GUIs baue, ist das dann noch wirklich wichtig?

    Ich wuerde sagen das der Quicksort M3 vermutlich da verwendet wird, wo Daten sortiert werden, die nicht voellig willkuerlich geordnet vorliegen, sondern groesstenteils bereits sortiert sind. Also z.b. 1 2 3 4 5 6 8 7 9 . Da ein Quicksort nicht stabil ist, darf auch die Reihenfolge gleicher Elemente kein Kriterium sein.

    Ich habe mal nach bei google codesearch gesucht, und der median of three wird z.b. bei gnusmalltalk oder in der c bibliothek glibc verwendet:

    http://www.google.com/codesearch?hl=…vot&btnG=Search

    Nachdem Sun gestern auf der Java One JavaFX
    vorgestellt hat, gibt es nunmehr drei grosse Anbieter von Rich
    Internet Application (RIA) Plattformen:

    Ich selbst bin der Meinung, dass RIAs mit Javascript und
    AJAX zu basteln ganz furchtbar ist. Selbst mit Frameworks wie
    prototype.js bleibt das immer noch ein haesslicher Hack, der ja
    auch niemals fuer richtige GUI Programmierung gedacht war.

    Zumindest die Idee hinter einer richtigen GUI Platform finde ich
    deshalb sehr interressant. Alle 3 Loesungen definieren GUIs
    deklarativ und koennen sowohl innerhalb eines Browsers als auch
    direkt auf dem Desktop laufen.

    Silverlight ist fuer mich eigentlich schon raus, weil properitaer
    und auf Grund der Firmenpoliktik stark eingeschraenkt (z.B. auf das
    Betriebsystem). Silverlight hat aber auch interressante Ansaetze.

    In Flex habe ich mich etwas reingelesen. Flex ist mittlerweile
    Open Source, Flash selbst aber nicht :(. Ein anderes Problem ist,
    das es natuerlich nicht die Fuelle an Bibliotheken gibt wie bei
    .NET oder vor allem bei Java. Solange die Applikationen nur thin
    clients sind ist das wurscht, aber wenn man dann auch am Desktop
    damit arbeitet und lokal Funkionalitaet implementieren will, ist
    es ein Problem.

    Ich habe Flex jetzt mal als reine GUI software betrachtet, die
    immer, auch wenn sie lokal laeuft (z.B. als Apollo Applikation),
    ueber Webservices mit einem Backend kommuniziert. Ich glaube das
    kann gut funktionieren (Ein netter Nebeneffekt ist, das man
    so dem Programmierer zwingt GUI und Logik zu trennen :) ).

    JavaFX ist als einziges Framework vollstaendig UNSER Eigentum,
    was ja gerade bei dieser Art von Software Plattform fast schon
    Pflicht sein sollte (Wer will schon o ein Debakel wie mit
    Microsoft in den 80/90ern). JavaFX verfuegt auch ueber die
    groesste bestehende Softwarebasis, darum momentan fuer mich
    vorne.

    Update: OpenLaszlo sollte man noch dazu nennen: http://www.openlaszlo.org/ .

    Mich interressiert eure Meinung dazu. Hat jemand schon eines von
    den Frameworks genauer unter die Lupe genommen? Oder seid ihr mit
    dem Status Quo zufrieden?

    Weitere Artikel zu dem Thema:

    http://diveintomark.org/archives/2007/05/02/silly-season

    http://jeremy.zawodny.com/blog/archives/009000.html

    http://www.paulgraham.com/microsoft.html

    http://www.artima.com/weblogs/viewpost.jsp?thread=193593

    http://www.adobe.com/devnet/flex/articles/flexjava.html

    Da gibt es mehrere moeglichkeiten. Hier eine Auswahl:

    Ueber CGI. Hier hast du einfach ein java programm das ueber HTTP kommuniziert. Sehr low level.

    Ueber einen Servlet Container: der uebliche weg. Ein Serlvet, das in einem eigenen webserver lauft, der dann ueber apache weitergeroutet wird. Das ist der meistverwendete weg, aber ohne Ausgiebige Recherche lauft da gar nichts. "Tomcat" ist hier ein einfacher servlet container.

    Helma ist ebenfalls ein Webserver fuer Java Applikationen, der mit Apache kombiniert laufen kann. Bei Helma wird die gui mit javascript gebastelt, die pltform ist aber java und du kannst ganz einfach deine Javabibliotheken verwenden und einbinden. Helma ist vermutlich die einfachste Loesung fuer schnelle Java aplicationen, allerdings ist die Software ausserhalb von Oesterreich kaum in Gebrauch.

    Verstehe ich dich richtig, das so in etwa dein momentaner
    Algorithmus aussieht:

    Code
    results = Liste
    for each hash in file:
        for each email in database:
            if sha1(email) == hash:
                 results.add(email)

    Folgende Ansaetze:

    1. Mach die innere Schleife direkt auf datenbankebene:
    "SELECT email FROM tablename WHERE sha1(email) = hash"
    => nur noch 19000 abfragen.

    2. Mach auch die aussere Schleife auf Datenbankebene:
    "SELECT email FROM tablename WHERE SHA1(email) in (hash1,hash2,hash3,...)
    => nur mehr 1 (etwas laengere) Abfrage.

    3. berechne die hashes von allen emails in einem preprocessing schritt und speichere diese hashes
    in einer Hilfstabelle oder einem Hilfsfeld in der Datenbank. Dann ist die Abfrage nurmehr:

    "SELECT email FROM tablename WHERE stored_hash in (hash1,hash2,hash3,...)"


    Ich vermute, dass dann die ganze Berechnung keine 5 sekunden dauert.

    Zitat von Paulchen


    Was hat das mit der ursprünglichen Problemstellung zu tun?


    Aber ich kann die Variablen des Objektes nur so ansprechen

    Code
    System.out.println(objs[i].variable);

    oder

    Code
    System.out.println(objs[1].variable);

    Folgendes geht leider nicht

    Code
    System.out.println(objs1.variable);

    Wie machst Du aus einem Basisstring "objs" und einem Index "1" einen Referenznamen objs1 ? Dass kommt doch genau auf das von mir beschriebene Problem hinaus oder nicht?

    Ich verstehe zwar deinen Ruby-Code nicht, aber noch weniger versteh ich, wie du jetzt draufkommst, dass man hier Reflection verwenden sollte.


    Von 'sollte' kann gar nicht die Rede sein, schiesslich habe ich diese Loesung als "praktisch unbrauchbar" bezeichnet.

    Also das Problem:

    Ich bekomme zur Laufzeit einen String, und moechte daraus einen Referenznamen machen.

    Code
    String name = "foo";
    
    
    // some magic
    
    
    //benutze foo als eine referenz, z.B.:
    foo = "Hallo Welt";

    In einer interpretierten Sprache kann man das Problem mit eval loesen.
    Die Ruby Loesung geht im Prinzip so vor. Aber in Java ist der Code zur
    Laufzeit ja nicht mehr vorhanden: Die VM kennt nur noch noch Bytecode.

    Was man also machen muesste ist:

    - Zur Laufzeit ein .class file erstellen, das z.b. eine Klasse
    enthaelt, welche 'foo' als eine oeffentliche, statische variable
    besitzt.

    - Diese Klasse mittels Reflection zur Laufzeit laden und dann die
    Referenz foo mittels 'MyClass.foo' ansprechen.

    Oder gibt es vielleicht einen einfacheren Weg?

    Code
    print @aName  #=> '#<Object:0xb7c8dc20>'

    Einfach ;)?

    Die Bemerkung verstehe ich nicht. Diese Zeile ist ja nicht die Loesung des Problems (diese steht eine Zeile drueber im Aufruf der Methode 'instance_variable_set'). Der print befehl ist nur ein Beispiel fuer die Verwendung des Ergebnisses.

    Vielleicht ist ja die Notation unklahr: Alles nach dem '#' ist in Ruby ein Kommentar, und in diesem Fall soll der Kommentar die Ausgabe beschreiben, naemlich den der Variablen zugewiesenen Wert. und print variable ist ja wohl nicht komplizierter als System.out.print(variable);

    Wenn man die Syntax einer Sprache nicht kennt, ist natuerlich alles kompliziert. ;)


    In Java laesst sich das Problem meiner Meinung nach nur loesen, indem man zur Laufzeit Bytecode generiert und diesen dann mittels Reflection laed. Und das ist fuer mich kompliziert genug um es als praktisch unbrauchbar zu bezeichnen.

    In Sprachen, die Metaprogrammierung besser unterstuetzen,
    ist die Aufgabe recht einfach geloest:

    Code
    #!/usr/bin/ruby
    someString = "aName"
    instance_variable_set '@'+someString, Object.new
    
    
    
    
    print @aName  #=> '#<Object:0xb7c8dc20>'

    Eine Frage aus Neugier: Wozu braucht man als TU Student eigentlich noch eine Lizenz fuer die Vollversion? Microsoft bietet doch mittlerweile die Visual Studio Express Versionen gratis zum download an, da ist doch alles dabei was man als Privatentwickler fuer die Windows Plattform gebrauchen kann?

    Zitat von Nicholas1991

    Ich meine generell wie man solch einen Thread erzeugt und wie er aufgebaut sein muss?

    Meiner Erfahrung nach lernt man solche Grundlagen besser aus Buechern, und benutzt Foren wie dieses zur weiteren Recherche.

    Natuerlich kann ich dir jetzt einen Essay ueber Java Threading schreiben, aber ich wuerde ja nur wiederholen was schon zig andere vor mir geschrieben haben.

    ja kampi, hast recht -danke danke danke.

    dh ich muss immer wenn ich dia starten will, händisch x11 starten, warten bis xterm da is, und dann von dort dia starten?!

    umständlich......... aber es funktionert.

    danke nochmal -war doch einfacher als ich gedacht habe :D

    ich machs im macos eigentlich immer so, was nicht heiszt, dass es nicht anders geht. irgendwie schafft es schlieszlich auch openoffice das X11 gleich mitzustarten.

    der befehl "open-x11" startet eine applikation in x11:

    Code
    open-x11 dia

    und wer sich das nicht merken will, der kann folgendes in seine ~/.profile schreiben:

    Code
    alias dia="open-x11 dia"