Beiträge von a9bejo

    Bevor Du ueber die Umsetzung nachdenken kannst, musst Du die tatsaechlichen Anforderungen herausfinden. "Eingescannte Dokumente besser organisieren" ist noch kein Usecase, anhand dem man eine Software bauen kann.

    Die ersten Fragen die sich mir da stellen: Was sind denn das fuer Dokumente, und was macht Dein Chef? Wie sieht denn so eine Suchanfrage tatsaechlich aus? Wie gross ist das Budget fuer dieses Projekt?

    Wenn Dein Chef im Textinhalt suchen muss, brauchst du Schrifterkennung. Das kann ziemlich schlechte Qualitaet liefern, je nachdem was Da fuer Dokumente dabei sind (handgeschriebene Notizen z.b.). Die Ergebnisse kommen dann vielleicht in einen Suchindex wie Solr und es gibt ein Frontend.

    Wenn es wie Du sagst nur ein paar hundert Dokumente sind, und wenn Dein Chef nach bestimmten Kategorien sucht (z.b. alle Dokumente zu Projekt x im Zeitraum Y), dann macht es vielleicht Sinn, die Daten zu taggen: Also Die Dokumente werden manuell mit Stichwoerten versehen (z.b. von einem Praktikanten), und Dein chef tagged neue Dokumente selbst nach, wenn er sie einscannt. Das ist dann vor allem eine Datenbank oder ein Solr Index mit einem Admin Frontend.

    Je nach den tatsaechlichen Anforderungen kann die effizienteste Loesung auch sein, die Daten fuer deinen Chef einfach sinnvoller in Unterverzeichnissen abzulegen

    Und zum Abschluss noch ein Tip: Es gibt bereits fuer alle grossen Betriebsysteme kostenlose Desktopsuchmaschinen. D.h. wenn dein Scanner OCR macht, dann kann Google Desktop, Beagle, Stringi, Recoll Spotlight, das Microsoft Ding oder was auch immer Deine Daten indizieren und Dein Chef kann danach suchen. Das ist vermutlich am billigsten, wenn es Volltextsuche sein soll.


    weil ich null ahnung habe, unter was ich das einordnen kann, hätte ich eine lange zeile gebraucht, um einen passenden threadtitel zu finden :)

    Vorschlag fuer einen Titel, der besser gewesen waehre: "Suche in eingescannten Dokumenten".

    python wird ja (normalerweise?) interpretiert und nicht kompiliert oder?

    Ein Interpreter und ein Compiler sind keine gegensaetzlichen tools, und der Begriff Interpreter wird auch sehr vielseitig verwendet. Ein Interpreter benötigt auch einen Compiler, er tut halt zur Laufzeit uebersetzen.

    Noch dazu wird z.b. CPython(C implementierung von Python) code meistens ersteinmal vollstaendig in Bytecode compiliert, genau wie Jython (Java implementierung von Python) Code. Der Bytecode wird dann zur Laufzeit nochmal in Maschinencode kompiliert.


    So Schwer dürfte das doch nicht sein oder?

    Wirklich schwer ist das nicht, aber das dafür notwendige Wissen ist für dich derzeit komplett unnötiger Ballast. .exe Dateien machen ist in Python eher unüblich und wird vor allem gemacht, wenn man ein fertiges Produkt speziell für Microsoft Windows Systeme anbieten möchte. Eine Bibliothek, mit der Du eine grafische Benutzeroberflächen erstellen oder mp3 Dateien abspielen kannst, ist einfach zu erlernen, wenn Du bereits programmieren kannst, Aber es geht weit am Ziel vorbei, wenn Du dich jetzt nach 6 Stunden mit so etwas befasst.

    Nimm dir ein gutes Buch und lies das mal in Ruhe durch. Mach die Beispiele und Uebungen mit, probiere alles praktisch aus und spiel damit herum. Alles andere kommt danach.

    Ich spiel ja auch gerne Diablo. Den zweiten Teil hab ich erst dieses Jahr wieder mal fast durchgespielt. Aber was macht da eigentlich so viel Spass? Ich meine Klick Klick Klick Klick Klick Klick Klick Klick Klick Klick Klick Klick Klick Klick Klick Klick Klick Klick Klick Klick Klick Klick Klick Klick Klick Klick Klick Klick Klick Klick Klick Klick ... Klick Klick MAUS KAUFEN Klick Klick Klick Klick Klick Klick Klick Klick Klick Klick Klick Klick Klick Klick Klick Klick Klick Klick Klick Klick Klick Klick Klick Klick Klick Klick Klick Klick Klick Klick Klick Klick...

    Klingt ja eigentlich nicht so heiss.

    "Der Vorgang konnte nicht abgeschlossen werden, da das Objekt "iCalDockExtra" in Verwendung ist."

    http://Anscheinend ist iCalDockExtra ein Tool das die aktuellen Tag im ical Dock Icon anzeigt. Du koenntest mal schauen ob iCalDockExtra vielleicht nur laeuft, wenn Du ical im Dock hast (bzw. ob du ical loeschen kannst wenn das nicht der Fall ist).

    Ansonsten mach ein Terminal auf loesche die iCal.app mit rm -rf .

    iCalDockExtra sollte da dann auch vernichtet werden, denn offenbar liegt das im.app ordner drinnen, also in /Applications/iCal.app/Contents/Resources/iCalDockExtra.bundle .

    Doch, das 13te und 14te ist da schon mitbedacht. Aber wie gesagt, das sind keine persönlichen Erfahrungen, sondern Berichte von Medien und Freunden, die als Freelancer taetig sind. Statistiken koennen natuerlich falsch sein, und Freunde zu den Ausnahmen gehoeren. Den Leuten, die ich da im Sinn habe, bleibt am Ende aber deutlich mehr uebrig als z.b. mir.

    Du solltest halt laengere Arbeitsunfaehigkeit vermeiden ;).

    Also wenn ich schreibe

    Zitat von ichImLetztenPost

    Als Freelancer steigst Du nach Abzug aller Ausgaben und Steuern nochmal um einiges besser aus als mit einer Anstellung.

    dann meine ich das schon auch genau so. Ich habe selbst nie als Freelancer gearbeitet, aber wenn Ich Gehaltsstatistiken und den Erfahrungen von Freunden glaube, dann steigen Freelancer in der Regel deutlich besser aus als Angestellte. Und es gibt derzeit auch keine Schwierigkeiten, an Aufträge zu kommen.

    Ich kenne zumindest niemanden, der mit einem Bachelor dieses Gehalt verdient. Aber ich lass mich gerne eines besseren belehren ;)

    Meinst Du das jetzt nur auf komplette Einsteiger bezogen? Bei uns liegen die Gehälter schon recht weit darüber (so 2.8 - 3.5 bei Vollzeitanstellung). Das betrifft jetzt Leute nur mit Bakk., sowie Entwickler ganz ohne akademischen Titel. In anderen Firmen ist das auch nicht so viel anders. Wobei ich natürlich auch Unternehmen kenne, die ganz, ganz niedrig ansetzen und damit teilweise auch Erfolg haben. Als Freelancer steigst Du nach Abzug aller Ausgaben und Steuern nochmal um einiges besser aus als mit einer Anstellung.

    Es ist selbstverständlich fraglich, ob man so ganz ohne Joberfahrung auf dem Niveau arbeiten kann wie die Kollegen, von denen ich da spreche. Aber welcher halbwegs motivierte Programmierer muss das heute schon: Selbst wenn jemand während des Studiums nicht gejobt hat, kann er sich ja als Student heute jederzeit in einem Free Software Projekt einen Namen machen.

    Bei uns ist es jedenfalls mehr oder weniger wurscht, wo jemand sein Wissen her hat. Können muss er halt was.

    Ich bin ja ein großer Freund von der Technik, externe Unternehmensberater bei einem Problem hinzuzuziehen: Außenstehende Berater haben einfach eine individuelle Perspektive und können frische Ideen in den Prozess bringen. Das ist ein wichtiger Job und wird auch verdienterweise sehr gut bezahlt.

    Unternehmensberater entwickeln aber weder Software noch Spezifikationen, und sie treffen auch keine Entscheidungen über Vorgehensweise und Design. Diese Dinge werden von Softwarearchitekten/Softwareentwicklern im Haus gemacht. Berater tuen "nur" genau was sie machen sollen: Sie beraten.

    Und jetzt kommt's: Im Alltagssprachgebrauch werden Architekten und Entwickler oft als "Programmierer" bezeichnet. Weil sie eben meistens auch implementieren, weil sich gute Hacker oft gerne selbst so bezeichnen, und weil im Management eh keiner so genau weiß was die da tuen.

    Es gibt sicher noch Großunternehmen, in denen es die sprichwörtlichen "Programmieraffen" gibt, die nur ausführen, was jemand anderes vorbereitet hat. Aber weil man auf diese Weise nicht effizient Software entwickeln kann, gibt es sowas immer seltener.

    "Programmieren können" im eigentlichen Sinn ist natürlich ganz einfach - Babies entwickeln Algorithmen gleich nach ihrer Geburt.

    Aber ueber den "Webseite mit PHP basteln" Tellerrand hinaus ist es heute scheiß schwer, gute Programmierer zu finden. Jedes Unternehmen das ich kenne, groß wie klein, suchst derzeit händeringend nach guten Leuten. Der Bedarf an guten Programmierern ist weit höher als der für gute Unternehmensberater, fuer Vertrieb oder Management. Und wer die richtig guten Leute bekommen will, der muss nicht nur gute Löhne zahlen. Der muss auch noch richtig interessante Probleme haben, die einem Hacker Spass machen.


    Ach, und mehr oder weniger related (video anschauen und nicht nur die bullet points lesen!):

    http://axel.blogr.com/stories/8094526/

    um einen Einstieg zu bekommen, würd ich gern wissen, wie man diese Zeilen zu verstehen hat.

    Das ist eine in JavaCC geschriebene BNF (=>googlen), die einen Ausdruck beschreibt: Eine UnaryExpression kann aus einer geklammerten Expression, einem Identifier oder einem Integer bestehen. Ein Identifier ist eine Konstante. Ein Integer... und so weiter und so fort.

    Wie man diese Syntax versteht und anwendet, kannst Du im JavaCC Tutorial (=> googlen) nachlesen.

    Naja, bei Java gehts ja nicht nur um die Programmiersprache, sondern um eine ganze Umgebung (Programmiersprache+Compiler+VM).

    Stephe hat aber ganz deutlich von der Sprache Java gesprochen, nicht von der Plattform:

    Zitat von Stephe


    Java ist bewiesenermaßen langsamer als so manch andere Sprache, aber egal.

    Ich weiss natuerlich wie er es gemeint hat: Darum hatte ich dann auch gleich meine Meinung zu gängigen Java Compilern und VMs dazu geschrieben.


    Das ist heutzutage gar nicht mehr so einfach, da du auch so Dinge wie Caches, OoO und die Anzahl der processing Units eines bestimmten Typs berücksichtigen musst. Da kanns schon passieren, dass ein C/C++-Compiler (speziell die der Prozessorhersteller selber) dir effizienteren Code ausspucken, als du selber schreiben würdest.

    Sicher musst du für hoch optimierten Assemblercode sehr viel Zeit investieren. Aber Du musst ja auch viel mehr Zeit in dein C++ Programm investieren als in dein Java Programm, und in Dein Java Programm mehr als in Dein Ruby Programm. Ich sage nur das wenn Geschwindigkeit das kritische Kriterium ist, dann musst Du halt in den sauren Apfel beißen und andere Dinge vernachlässigen.

    In Wirklichkeit ist "schnell" natürlich meistens viel weniger interessant als "funktionell","günstig" oder "sicher". Und die meisten tatsächlichen Geschwindigkeitsprobleme hängen nicht einmal mit dem Compiler zusammen, sondern die Bottlenecks liegen im Algorithmus. Noch dazu beschränken die Geschwindigkeitsprobleme in der Regel auf weniger als 5% der Codebasis.

    Womit wir wieder bei OptimizeLater wären. Schreib das Zeug in der abstraktesten Sprache die Du kennst. Und wenn Du dann die Performance unzureichend ist - Dann such dir mit einem Profiler die 2% vom Code die ganze Performance versauen und lager die in gut optimierten C Code aus.


    PS: Ich kriege Moriarty's Empire am Mac/Java 5 leider nicht zum Laufen: Schwarzer Screen. Unter Linux/Java 6 laeuft es aber ganz prima ( und macht auch Spass! ).

    Naja Gerüchte, Java ist bewiesenermaßen langsamer als so manch andere Sprache, aber egal.

    Geruechte. Programmiersprachen haben praktisch sehr wenig bis gar keinen Einfluss auf die Geschwindigkeit einer Software. Und was Compiler betrifft: Da wird dir jeder Ruby/Python/Erlang/Smalltalkprogrammierer bestaetigen, dass die Softwareplatform Java eher zu den schnelleren Lösungen gehört.

    Wegen OptimizeLater ist das nicht besonders wichtig; Und wenn doch, dann würde ich jede Zeile Code in hochoptimiertem Assembler schreiben.

    Naja ich hätte da schon an Java gedacht, da ich damit doch schon einige Erfahrungen hab (Eprog, SE, DSLab, MM1)

    Dann ist Java sicher eine solide Option. Nicht, dass es kontraproduktiv waere eine abstraktere Sprache dazuzulernen. Aber das wuerde auf jeden Fall ersteinmal Zeit kosten.


    vorallem gäbe es da für MIDI das Java Media Framework für Windows, angeblich auch für Mac, ich hoffe das funzt da auch gscheit.

    Java ist der Name fuer eine Programmiersprache, sowie fuer eine Softwareplattform. Das Java Media Framework ist Teil der Softwareplattform Java, d.h. Du kannst das mit jeder Programmiersprache benutzen, die es fuer Java gibt. Z.b. Java, aber auch Python, Ruby, Scala, Scheme und viele weitere.

    Und als Randnotiz: APIs fuer MIDI Verarbeitung gibt es eigentlich auf allen grösseren Softwareplattformen.

    Als Programmiersprache wuerde ich, wie immer, die abstrakteste Sprache nehmen die Du findest. Wenn die Zeit knapp ist, dann besser die abstrakteste Sprache die Du bereits kennst. Und relativ populär sollte sie schon sein. Python, Ruby oder sowas. Auf jeden Fall würde ich mir zweimal überlegen, ob Du Dir hier wirklich Java oder sogar C++ antun musst. Die meisten Implementierungen von OpenGL sind sowieso in C implementiert.

    Als Plattform empfehle ich Java oder CPython.

    Fuer CPython gibt es z.B. http://pyopengl.sourceforge.net

    Fuer Java gibt es das schon angesprochene http://en.wikipedia.org/wiki/Java_OpenGL .

    Zitat

    Bisher habe ich nur normale Text Datein gelesen und irgendwie find ich nix was mir weiterhilft.

    RTF dateien sind ganz normale Textdateien. Das Format des Textes ist halt genauer spezifiziert, d.h. Du kannst dir die Spezifikation durchlesen und dann den Textinhalt danach parsen. Oder du benutzt eine bestehende API die das schon macht.

    Eine Suche bei Google liefert zu "RTF java parser" diesen Link:

    http://forum.java.sun.com/thread.jspa?fo…threadID=287120


    Zu "RTF" diesen Link:

    http://en.wikipedia.org/wiki/Rich_Text_Format

    Am Ende der Wikipediaseite gibt es auch links zu den Spezifikationen von allen wichtigen Versionen von RTF, sowie zu einer Reihe von Libraries die es Parsen koennen (z.b. itext) .

    die oberflaeche der schwarzen macbooks ist ja auch anders. evtl anderes material verbaut und deshalb robuster? also ist es doch nicht nur die farbe + 20gb mehr hd....

    Ne, mir haben sie ja das (weisse) Gehause ausgetauscht, und das neue ist auch sehr stabil, und verfaerbt sich auch nicht. Aber soweit ich das hoere gab/gibt es bei den schwarzen Notebooks aus der Serie aehnliche Probleme wie bei den weissen.

    Irgendwie kann man den komischen Stream dazu bringen, Spaces nicht zu fressen


    Cool. Aber ich wuerde das vermutlich vermeiden, um das UI von der Logik zu trennen (nicht das das bei den paar Zeilen wirklich was bringen wuerde). Also wenn ich die Aufgabe fuer mich loesen wollte, dann haette ich vermutlich mit einer Funktion isPalindrom() angefangen und das ui dann spaeter gebaut.

    (Pseudocode)

    Code
    def isPalindrom(str): 
      str = removeWhiteSpace(lowerCase(str))
      return str == reverse(str)
    
    
    def main():
      input = readFromCLI()
      if(isPalindrom(input)):
        ...