
VaNaTiC
Mitglieder-
Gesamte Inhalte
582 -
Benutzer seit
-
Letzter Besuch
Inhaltstyp
Profile
Forum
Downloads
Kalender
Blogs
Shop
Alle Inhalte von VaNaTiC
-
Du solltest Deinen Client mal debuggen und den Server in einer Console daneben offen haben. Dann siehst Du eindeutig, dass Du bitte nicht verwechseln darfst, das im Server.readLine() auch returnt, wenn der Client-Socket geschlossen wird. Reproduzierbar indem Du einfach die Schleife im Client auskommentierst und einen Haltepunkt setzt auf rd.close(). Wenn Du genau diese Zeile ausführst, bvekommt der Server plötzlich seine Zeile, aber nur weil durch rd.close() ein shutdownInput() gemacht wird.
-
hmm, Dein BufferedWriter schreibt weder CarrigeReturn noch ein LineFeed, also kein Zeilenende, der flusht nur. Ich teste Deinen Code gleich mal in meinem Eclipse. Hinweis: Bitte nutze doch das New-IO der Java-API anstelle der betagten blocking-Sockets.
-
Hmm, also laut Deinem Code, ist das eine blockierende Verbindung (synchrone Socket-programmierung) und keine asychrone (non-blocking). Deshalb wartest Du falsch mit Deinen beiden readLine(). Der Client und der Server warten mit readLine() auf eine Zeile, aber weder Client noch Server senden jemals ein Zeilenende, so dass Deine while-Schleife betreten wird. Vermute da liegt der Fehler.
-
Ah nee, mein Fehler
-
Bei den Umgebungsvariablen? Und wenn ja, welche? Sag nicht PATH!
-
@kingofbrain: Das war nicht korrekt gesagt, sie setzt den Dateizeiger wenn nix gefunden wurde 3 zeichen zurück und liest neu. @LadyPreis: Prinzipiell ist das erst der Anfang. 1) Dateizeiger vor und zurücksetzen ist echt heftig. 2) Man arbeitet bei sowas immer mit Peek() zum Prüfen anstatt Read() und danach erst tatsächliches Lesen mit Read(). 3) Viel wichtiger ist aber mit Peek() und Read() garnicht erst ein Problem zu bekommen, sondern stattdessen gleich x-Bytes in einen Puffer einzulesen, das hat auch den Vorteil, dass man Blöcke Lesen kann (viel performanter). 4) Schau Dir das MP3-Dateiformat nochmal genau an oder schieb mir mal einen Link rüber, denn ich glaube nicht, dass Tags wahllos in der ganzen Datei vorkommen können. D.h. es gibt sicherlich Vorbedingungen (Header), wo man gezielt drin suchen kann. 5) Und bei 4) wirst Du feststellen, dass es soweit ich weiss unterschiedliche Versionen v1 bis v3 gibt. Musst Du die auch behandeln?
-
Ich find den Vergleich bisher müssig und nicht zielführend. Ich kann FTP mit verdammt vielen Datenübertragungsprotokollen vergleichen. Und dabei kann das eine Mal ein Vorteil und das andere Mal ein Nachteil rauskommen. Wie ich bereits zweimal sagte, wäre es ganz hilfreich, wenn Etheral uns erstmal seine Erkenntnisse postet, mit welchen anderen Protokollen er FTP vergleichen möchte. Ansonsten könnte man den Thread auch schliessen.
-
hast Du mal geschaut, ob sich ping, netstat, etc auch wirklich in Win...\Sys...32 befinden, wo sie sein söllten?
-
Wie White schon sagte, würde ich auch vom Code her sagen, dass das paint(Graphics) durchaus mehrfach aufgerufen wird. Aber halt für Dich eventuell zu oft, Stichwort doublebuffering. Interessant wäre ob auch 100 System.out. kommen Denn das sollten sie, wenn in time 100 sind. Auch wäre es sehr komisch, wenn time immer 100 wäre. Das sollte irgendeine Zahl sein. Nämlich genau so oft, wie eben das Fenster (auch vom System her) neu gezeichnet werden will oder muss.
-
Du: ...Realistische Unterhaltungen würde ich jetzt mal als ziemlich utopisch einstufen ... Ich: Ist das nicht der Sinn einer KI? Du: Das kommt drauf an was die KI machen soll... Hast Dur Dir die Antwort im gegebenen Kontext nicht bereits im ersten Post gegeben? Fakt ist, es gibt sehr wohl relativ eng gesteckte Szenarien, wo durchaus eine realistische Unterhaltung vorstellbar ist. Zum Beispiel als interaktives Menu/Suche. Supportweichen, ... Realistischer SmallTalk ist aber zugegeben von einer Maschine nicht zu erwarten. Aber von mir auch nicht
-
Ist das nicht der Sinn einer KI?
-
Für welches Problem? Denn es sind zwei Teilaufgaben zu lösen! Einmal Deinen vorhandenen Code unter Nutzung des FileInpuStreams zu verändern und das zweite ist dann aus dem ZipFile den InpuStream Deiner gewünschten Datei zu bekommen. Das ist zum Beispiel der Code für das Holen eines InpuStreams aus einer eingetragenen Datei in einer ZIP-Datei. import java.util.zip.*; ZipFile file = new ZipFile("datei.zip"); ZipEntry entry = file.getEntry("datei.xml"); InputStream is = file.getInputStream(entry); Das findet man auch ganz einfach anhand der http://java.sun.com/javase/6/docs/api/, welche Du auf Deiner Entwicklungsmaschine lokal oder direkt im Web als Favoriten offen haben solltest. Und zwar immer, denn das erspart peinliche Fragen Das kannst Du gleich praktisch am Beispiel des DOM-Parsers üben, indem Du anhand der JDK-Hilfe nachschaust, wie der DOM-Parser arbeitet.
-
Klasse Sache. Viele, viele Anregungen kannst Du Dir bei AIML und ALICE-Bot anschauen. AIML - The Artificial Intelligence Markup Language
-
mysql_fetch_row() ist defintiv schneller, denn mittels mysql_fetch_array() werden zusätzlich die Spaltennamen als Array-Keys zurückgeliefert.
-
hmm, Vorsicht bitte mit MTU und den Dingen, die nicht in den OSI-Layer des FTP gehören, denn die haben mit dem Protokoll an sich garnix zu tun. Langsam ist FTP auch deshalb, weil es eben nur im Binary-Modus binär überträgt und ansonsten etwa doppelt soviel Datenvolumen erzeugt. Aber bitte erstmal wie oben beschrieben rausfinden, was genau für Datenübertragungsprotokolle zum Vergleich herhalten sollen
-
Ich bin mir nicht sicher, aber die Condition brauchst Du nicht. Wichtig ist R=301, was bedeutet "permanently redirected". Was daraus die Suchmaschinen machen, kann ich Dir nicht 100%ig sagen, google interpretiert das soweit ich weiss allerdings korrekt. Prüfen kann man das gut, indem man einfach im Browser die umzuleitende domain oder url eingibt und dann testet ob die neue Ziel-domain oder url danach im Browser steht. Hier is nochmal nen Link, wo viele Möglichkeiten aufgelistet sind: 301 Redirect - How to create Redirects
-
hmm, also ich kenn das so, dass man alle Schritte die im Kontext relevant sind, die die Akteure mit den Bedingungen vorher und nachher, den dazugehörigen Beziehungen im normalen oder alternativen Fluss darstellen. Wenn es rein um das theoretische Darstellen eines Anwendungsfalls geht ist die Entscheidung was man zusammenfasst - und ggf. in einem Sub-Usecase detaillierter darstellt - sowieso akademisch. Um Dein Beispiel vom Threaderstellen aufzugreifen würde ich persönlich ganz vereinfacht geschrieben: ich -> Titel, Text, Tags eingeben -> Vorschau -> Server Stattdessen im größeren Kontext das Forum betrachtet, wie frage ich nach Hilfe: ich -> Suche benutzen, Entscheidung: gefunden-> lesen; nix gefunden -> Thread erstellen -> Server schreiben.
-
anstelle von new File(bla.xml) musst Du FileInputStream() nutzen. Wenn Du das umprogrammiert hast, kannst Du sehr schnell um den FileInputStream herum noch einen ZipInputStream hängen. Schau mal die JDK-Hilfen dazu an, das hilft Dir sicher weiter.
-
ich vermute das es sich um einen OnBoard-RAID-Controler mit SATA-HDDs handelt. Diese kann man entweder während des Bootvorgangs mittels Hotkey (z.bsp. Strg+S) erreichen oder direkt im BIOS-Setup einstellen. Ich vermute in der zweiten Variante hat sich Option "verstellt" von "SATA" oder "Normal" auf "RAID". Das kann zum Beispiel passieren, wenn der Rechner eine leere BIOS-Batterie hat bzw. diese erschöpft ist, durch fehlerhafte USB-Geräte zum Beispiel und komplett spannungslos geschaltet wurde (Schalter Steckerleiste aus). Dann wird hart das "BIOS oder Setup Default" geladen meist mit Standard-Einstellungen, aber ob RAID der Standard ist wage ich zu bezweifeln. Wie gesagt, nur ne Vermutung, aber die Kontrolle im BIOS ist der erste Weg, wenns ein Hardware-Controler ist.
-
Dazu würde ich an Deiner Stelle anfangen und herausfinden, welche anderen Datenübertragungsprotokolle für einen Vergleich in Frage kommen. Mir dann einen groben Überblick über deren Funktionsweise verschaffen und hier dann konkrete Fragen stellen. Denn so gut wie jedes Protokoll überträgt Daten und könnte diesen Namen tragen.
-
ich denke mit CBR und der anschliessende Parameterdeklaration ist gemeint: call by reference (Aufruf über die Referenz), performanter beim Aufruf der Funktion, da keine Kopie der Datenstruktur angelegt werden muss, sondern nur eine 32/64-bittige Referenz an die Funktion übergeben wird. Gegenstück dazu ist call by value, Vorteil ist, Datenstruktur kann ohne Orginal zu verändern editiert werden. Die gesamten Merkmale erzählt Dir mit Sicherheit wiki oder google
-
Hmm, kann leider zu dem von Dir angesprochenen Linqtosql Mapper nix sagen, ich dachte immer LINQ wäre kein Tool, sondern eine Spec. Aber zum Thema Config: Ich bisher immer entschieden, die Config semi-automatisch zu machen. D.h. das eine mal selber einen Generator für static Schema-XML und das andere mal beim App-Init schema dynamisch über RTTI erzeugt. Wie gesagt, fertige Libraries habe ich produktiv bisher nicht eingesetzt.
-
wenn in getSource() das falsche drin steht, trägst Du das keypressed() nicht korrekt in die Componente ein. Willst Du eigentlich einen globalen KeyHandler programmieren? Ginge auch mit inline-class: this.addKeyListener(new KeyAdapter() { public void keyPressed(KeyEvent e) { if (e.getKeyCode() == KeyEvent.VK_HOME) { ... } else if (e.getKeyCode() == KeyEvent.VK_F5) ... } });
-
In dem Zusammenhang habe ich eine Frage zum extern. Muss man extern "C++" { ... } das "C++" angeben oder ist das egal?
-
Meinst Du sowas wie ne Weiterleitung? Das ginge per DNS-Forward, per .htAccess RewriteRule, per PHP-Redirect, per HTML-Header-Redirect, per HTML-FrameSet (in der Reihenfolge, wie ich es versuchen würde, bestes zuerst) Ansonsten habe ich Deine Frage nicht richtig verstanden.