wenn man sie nicht hineinlassen muss dann können sie einem eh nie was tun oder? (ausser sie kommen mit dem Batmobil mit der Schüssel oben drauf LOL)
Beiträge von beat
-
-
hi
coole seite, gefällt mir. finds besser als mtb obwohl der datenbestand von dort nicht zu schlagen ist.
kleiner tipp von mir. Verlinke doch das suchen, finden, veröffentlichen auf der
main page, so grosse schrift verleitet sehr stark zum draufklicken. -
Hallo
Komme erstmal in die Situation GIS zahlen zu müssen bin aber ehrlich gesagt nicht bereit 20 euro im monat dafür zu zahlen. Was können die mir tun wenn ich nicht zahle? Wenn die vor meiner tür stehen und meine wohnung kontrollieren wollen dann dürfen die doch nie hinein oder kommen die mit einer art durchsuchungsbefehl?
mfg
-
Was haltet ihr davon. Ich vermiss irgendwie einen mail client, sonst hätt ich schon bestellt
Die Frage ist auch ob sich ein kauf lohnen würde da das iphone im november zum gleichen preis in Österreich erscheint.
-
ich würd auch auf jeden fall warten. erstens bekommst du leopard und zweitens iLife 08. wennst dir die beiden sachen kaufen würdest zahlst ca. 150 euro. denk schon dass sich das auszahlt. Und wer weiss, vielleicht gibts bis dahin ja ein hardware update
-
Empfehlenswert in der Richtung ist mMn 'Objektorientierte Programmierung' bei Prof. Puntigam, sofern du das nicht schon gemacht hast.Das hab ich schon gemacht. War auch ganz interessant, es wurden auch ein paar entwurfsmuster vorgestellt, aber wirklich objektorientiertes design hat man da auch nicht vermittelt bekommen. Ich denk advanced software enginnering wäre interessant da man die arbeitsschritte analyse und entwurf im gegensatz zu sepm selbst machen muss.
-
Was ich jetzt so gelesen hab ist das Brückenmuster gut geeignet für db andbindung und graphische benutzeroberflächen. Ob das jetzt für mich das ideale wäre bezweifle ich aber.
-
Danke. Werde das jetzt auch so machen dass ich statt meiner abstrakten klasse ein interface verwende, denn konkreten code enthält sie nicht.
Ich finde das thema allgemein sehr interessant und bin etwas enttäuscht dass man mir dass im bakk nur so unzureichend nähergebracht hat. Objektorientierte Modellierung war damals ja noch nicht pflicht. Hat das schon wer gemacht und kann es als zb freu/wahlfach empfehlen?
mfg
-
Hallo
Ich schreibe an einer kleinen music tag lib in java die ich für ein projekt brauch und weiss jetzt nicht was designmässig besser ist.
Ich habe zur zeit eine abstrakte klasse MusicTag. Von ihr erbt ID3Tag.Von ID3Tag erben ID3v1Tag und ID3v2Tag. Von ID3v1Tag erbt ID3v1_1Tag. Von ID3v2Tag erbt ID3v2_3. Von ID3v2_3 erbt ID3v2_4 Tag. (endlich geschafft)Wenn ich dann irgendwann in meinem programm einen Tag (welcher art auch immer) brauch so schreibe ich einfach zb:
MusicTag mt = new ID3v1Tag(bla);
und hab dann durch MusicTag zugriff auf alle methoden die relevant für tags sind.
Jetzt stell ich mir allerdings die frage ob es nicht besser wär ein Interface IMusicTag zu definieren mit den Methoden getArtist(),getAlbum usw...
Was ist besser, bzw macht es einen Unterschied (ich sehe zur zeit keinen). Hab mir bis jetzt noch nie gedanken über sowas gemacht...mfg
-
was du aber nicht machst ist ihn auf korrektheit überprüfen. Das heisst du sucht einfach 0xff und schnappst dir dann 4bytes inkl. raus.
Aber anscheinend ist man mit ruby da recht schnell.
-
den frameHeader. dem interessierten leser empfehle ich: http://www.mp3-tech.org/programmer/frame_header.html
-
thx wolfi. hat super funktioniert. wenn nur alles so schnell wär wie ein RAM
Falls mal wer ein änliches problem hat, hier ist der code:
Code
Alles anzeigenprivate void getFirstFrameHeader() throws NoFrameHeaderFoundException { // Neuen RAF initialisieren RandomAccessFile raf = null; try { raf = new RandomAccessFile(this,"r"); } catch (FileNotFoundException e) { System.out.println("File not found"); } /* * Im Speicher werden 65536 Bytes für blöcke aus * dem File reserviert die dann mit dem muster * byteweise verglichen werden. */ byte byteBlock[] = new byte[65536]; /* * BlockCounter zählt wieviel blöcke schon gelesen * werden und dient grundsätzlich zur positionsberechnung * des Zeigers. */ long blockCounter = 0; /* * Wenn der header gefunden wurde wird die schleife verlassen */ boolean headerFound = false; try { // lesen des ersten blockes raf.read(byteBlock); } catch (IOException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } /* * Solange kein Header gefunden wurde wird der ByteBlock byteweise * durchlaufen und geprüft ob es sich bei byte[i] + die nächsten 3 * Bytes um einen gültiogen Header Handeln kann. Ist dies der Fall * wird die Schleife verlassen. Wenn nicht wird bis zum ende des * Blockes weitergesucht. Da die letzten 3 Bytes nicht geprüft werden * können (da ja noch kein neuer Block von der HD gelesen wurde werden * die letzten 3 Bytes einfach beim neuen Block dazugelesen weshalb * das RAF auch auch blockCounter * 65536 - 3 * blockCounter gesetzt * wird. */ while (!headerFound) { for (int i = 0; i < byteBlock.length - 3; i++) { if (byteBlock[i] == (byte) 0xff) { if (isHeader(byteBlock[i + 1], byteBlock[i + 2], byteBlock[i + 3])) { firstFrameHeader = "11111111" + JTaggerUtils.intArrayToString(JTaggerUtils .getBits(byteBlock[i + 1])) + JTaggerUtils.intArrayToString(JTaggerUtils .getBits(byteBlock[i + 2])) + JTaggerUtils.intArrayToString(JTaggerUtils .getBits(byteBlock[i + 3])); headerFound = true; System.out.println(blockCounter * 65536 - 3 * blockCounter + i); break; } } } blockCounter++; try { raf.seek(blockCounter * 65536 - 3 * blockCounter); raf.read(byteBlock); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } if((blockCounter * 65536 - 3 * blockCounter) > this.length()) { try { raf.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } throw new NoFrameHeaderFoundException("No frameHeaderFound"); } } try { raf.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } }
-
das hab i ma auch scho überlegt, allerding gleich das ganze mp3 da würd ma sich nämlich im vergleich zu den blöcken arbeit ersparen (wenn zb oxff am ende des block gefunden wird und man dann einen neuen einlesen muss für die anderen 3 bytes)
-
Hallo
Folgendes Java Problem:
Ich suche in einem File das Byte 0xff. wenn ich auf eines stosse nehme ich mir 4 bytes ab der position und vergleiche sie mit einem bestimmten muster. Wenn es passt ist der algorithmus beendet, wenn nicht dann such ich mir das nächste 0xff und das ganze geht von vorne los bis es passt oder das file durchlaufen wurde.
Ich mach das zur zeit mit einem RandomAcessFile folgendermassen:
Code
Alles anzeigenprivate void getFirstFrameHeader() throws NoFrameHeaderFoundException { // Instantitate a Random Access File with read rights RandomAccessFile raf = null; try { raf = new RandomAccessFile(this,"r"); } catch (FileNotFoundException e) { System.out.println("File not found"); } boolean headerFound = false; boolean endOfFile = false; /* * Should be changed due to perfomance problems */ long positionInFile = 0; /* * Checks every Byte if it is equal to 0xff as long as * a valid header isnt found or the end of file is reached */ while (!headerFound && !endOfFile) { try { raf.seek(positionInFile); } catch (IOException e1) { System.out.println("Couldn't point to file Position\n" + e1); } int read = 0; int readPlusOne = 0; int readPlusTwo = 0; int readPlusThree = 0; try { read = raf.read(); readPlusOne = raf.read(); readPlusTwo = raf.read(); readPlusThree = raf.read(); } catch (IOException e) { System.out.println("IO Exception"); } // Break if end of file is reached if (read == -1 || readPlusOne == -1 || readPlusTwo == -1 || readPlusThree == -1) { endOfFile = true; break; } // If actual Byte equals 0xff if (read == 255) { // check if the next 3 Bytes could form a valid header or not if (isHeader(readPlusOne, readPlusTwo, readPlusThree)) { firstFrameHeader = "11111111" + JTaggerUtils.intArrayToString(JTaggerUtils .getBits(readPlusOne)) + JTaggerUtils.intArrayToString(JTaggerUtils .getBits(readPlusTwo)) + JTaggerUtils.intArrayToString(JTaggerUtils .getBits(readPlusThree)); headerFound = true; } } positionInFile++; System.out.println(positionInFile); // debug } startPosOfFirstFrameHeader = --positionInFile; try { raf.close(); } catch (IOException e) { e.printStackTrace(); } if (!headerFound) throw new NoFrameHeaderFoundException("No Frame header found in " + this.getName()); }
Das Problem ist dass diese methode verdammt langsam ist. normalerweise wird der frameheader gleich am anfang des Files gefunden, manchmal aber auch erst nacht 30KB oder so. Und für die 30 KB braucht er fast 30 sekunden. Wie macht ihr dass wenn ihr so ein problem habt?
mfg
-
passt. hat super funktioniert. Aber ziemlich überladen der editor, der spielt echt alle stücke.
-
Hallo
Würde für testzwecke ein mp3 file brauchen dass einen id3 v2.4 tag hat, hab meine ganze sammlung durchsucht und es war leider keins dabei. wenn mir wer helfen könnte... das wär super. (itunes schreibt leider nur mit 2.4 und hab noch keinen editor gefunden bei der man die version einstellen kann)
mfg
-
Ist ganz interessant. Etwas Off Topic: aber darf man in cg2 Scriptsprachen zb Python verwenden, hab gelesen dass das immer wieder in Spielen verwendet wird (für den spielablauf selbst, nicht für die business logic)
-
gute idee wolfi. mal schaun wie der die platten organisiert hat...
-
das is ja das problem. ich schreib das programm für an kunden und der will damit seine mp3 sammlung verwalten/verarbeiten. und die is sehr sehr gross (2TB - richtig gelesen, tera byte )
-
Hab mir mal im hexeditor angeschaut wie itunes das macht. wenn der neue tag kürzer ist als der alte dann füllt itunes die differenzbytes einfach mit 0x00 auf, wenn der neue tag länger ist schreibt es wie es aussieht das file neu. find ich ganz klug
bessere lösung gibt es sicher keine?