Laden...

Forenbeiträge von fielding Ingesamt 60 Beiträge

08.09.2010 - 14:36 Uhr

Ich hätte gfoidls post ja so verstanden, dass RegEx hier die bessere Lösung ist..

Wie herbivore schon sagte, das klappt ganz gut:


            string input = "Hans wollte 40 km laufen, aber ab 20 km hatte er keine Puste mehr";
            string wordToFind = "ab";
            string regExWordDelimiter = "\\b";
            Regex regEx = new Regex(wordToFind + regExWordDelimiter, RegexOptions.IgnoreCase | RegexOptions.Multiline);
            IEnumerable matches = regEx.Matches(input);
            foreach (Match match in matches)
            {
                System.Console.Write(match.Value + " ");
            }

            System.Console.ReadKey();

02.08.2010 - 08:33 Uhr

Also der //Constructor Kommentar ist wirklich Horror, ein //Nothing allerdings lesbarer als {} oder {;}. Allerdings spricht auch nix gegen // Explicit default constructor 😃

02.08.2010 - 08:04 Uhr

Da würde ich mich nicht drauf verlassen. Oft ist String.Join schneller:
StringBuilder vs. String / Fast String Operations with .NET 2.0 - CodeProject

Übrigens würde ich mir die abart von ungarischer Notation (String sName; int iZahl;) möglichst schnell wieder abgewöhnen. Das ist kein guter Stil und erhöht den Wartungsaufwand. Du musst nämlich bei einer Typänderung im Zuge eine Refactorings zusätzlich noch die den Variablennamen ändern, was gern vergessen wird. Gerade wenns dann von Long -> Int oder so geht kann das schnell zu bugs führen. Vielleicht interessiert dich ja das Buch Clean Code.

21.07.2010 - 08:25 Uhr

Es liegt sicher am namespacemanager und die hier gezeigte lösung müsste funktionieren. Allerdings wärs komfortabler wenn man den defaultnamespace auch dem namespacemanager als default bekannt macht (präfix string.empty), dann spart man sich die präfixe im xpath ausdruck (welche ich gerne vergesse und dann doof schau).

Je nachdem, welcher Knoten aktuell der Kontextknoten ist, kann der xpath ausdruck stimmen oder auch nicht. Deiner ist auf jeden fall auch richtig, wobei du dir den doppelslash sparen kannst.

passen würde unter anderem (Kontext root):


//item/presentation/material/mattext
/questestinterop/item/presentation/material/mattext
//presentation/material/mattext
/*/presentation/material/mattext

Gut zum testen ist immer der xpath visualizer.

21.07.2010 - 08:16 Uhr

das hat nix mit nested classes zu tun sondern heißt _composition _und ist meist der vererbung vorzuziehen. von daher gut, aber am thema vorbei 😃

15.07.2010 - 09:20 Uhr

Du kannst ein Node(Set) via XPath selektieren und dann damit arbeiten.


            XmlDocument xd = new XmlDocument();
            xd.Load("test.xml");
            XmlNode xn = xd.SelectSingleNode("//User");

Von da aus kannst du mit der XmlNode arbeiten. Für mehrere Nodes gibts dann eben XmlNodeSet und SelectNodes.

08.07.2010 - 12:17 Uhr

Rein IE ist natürlich was anderes als rein IE6, sorry wenn ich dich falsch verstanden habe. Und Siemens ist jetzt nicht unbedingt ein negativbeispiel sondern eher einfach eines aus dem richtigen leben. Die meisten Großkonzerne sind in der IT relativ rückständig weil unflexibel durch lange entscheidungswege.

08.07.2010 - 12:04 Uhr

Auch solltest du alle aktuellen Browser unterstützen,

pauschal ausgedrückt, ja aber es gibt fälle wo man das nciht muss. z.b. im businessumfeld. wenn man weiß das nur der IE zum einsatz kommt, kann man sich die ganzen browserspezifischen unterscheidungen sparen, was vor allem in javascript deutlich einfacher ist.

Das ist aber auch etwas kurzsichtig. Siemens entwickelt Webanwendungen immer noch für den IE6 und testet auch nur auf dem IE6. Die große Überraschung: Man kann nicht auf den IE8 und vor allem den FF umsteigen, weil die alte Software teilweise nicht mehr korrekt dargestellt wird. Vorsichtshalber wird weiter nur für den IE6 entwickelt, damit man sich einen möglichen umstieg auf einen halbwegs aktuellen browser (welcher ist egal) endgültig verbaut. Ich behaupte mal dass standardkonforme webanwendungen immer gut investiertes geld sind.
Nette geschichte: Die kompatibilität von Vista zu bestehenden anwendungen wurde solange getestet, bis W7 raus kam. Also hat man den umstieg zu Vista übersprungen und testet jetzt fleißig W7 - wahrscheinlich bis W8 kommt.

Zum autor: du hast dir deine meinung ja bereits gebildet. Schau dir trotzdem erst mal das bestehende tool an und finde heraus warums langsam läuft. Neuimplementierung ist meistens sehr teuer im vergleich zu einem hardwareupgrade oder ein paar wartungsarbeiten an überlasteten systemen.

Wir hatten übrigens mal ein ähnliches problem, da wars eine webanwendung die schrecklich langsam lief obwohl genug ressourcen vorhanden waren. Nach wochenlangem suchen und testen ist uns dann aufgefallen, dass alle server neu gebootet wurden (winupdate) und dabei eine alte kopie der webanwendungs-vm mit der gleichen MAC gebootet ist. Je nach auslastung hat dann im browser alte oder neue VM geantwortet 😃

07.07.2010 - 11:20 Uhr

Vielen Dank euch beiden, das macht das ganze einfach viel verständlicher (nicht nur für mich, sondern für jeden besucher dieses threads) und man muss nicht erst umständlich mit dem debugger durch den code gehen, um zu begreifen was passiert. Das ist meiner Meinung nach das bisschen Mehraufwand wert 😉

07.07.2010 - 10:03 Uhr

die aufgabe war wirklich interessant, kann vllt einer noch für nicht-mathematiker erklären was da passiert? aus

Im Prinzip funktioniert es ähnlich dem Sieb des Eratosthenes. Es werden alle Zahlen im Suchbereich markiert, die irgendwie über eine Summe erreichbar sind. werd ich nicht schlau. Ich kenn zwar das Sieb des Eratosthenes und verstehs auch, den transfer zu diesem problem bekomme ich aber leider nicht hin. Allgemein würde man sich über 2 oder 3 kommentare in den Lösungen immer freuen 😉

06.07.2010 - 11:39 Uhr

Hallo alle zusammen,
ich schreibe gerade eine kurze arbeit über ein reengineering in der datenhaltung, welches ich hier in der firma begleitet habe. Nun wollte ich gerne ein kapitel über die verwendeten tools mit einstreuen (Visual Studio, Clearcase, Enterprise Architect, Office, fxCop, Resharper, XMLDiff, ...), allerdings scheitert es an der Kapitelüberschrift.

Angedacht war eigentlich "Entwicklungsumgebung", da genau in dieser technischen umgebung entwickelt wurde. Allerdings ist die Entwicklungsumgebung im Deutschen ein 100% synonym für eine IDE (google entwicklungsumgebung, wiki forwarded nach IDE). Fällt denn jemandem ein passender begriff für das verwendete toolset ein? Dieses soll die eigentliche IDE und dazugehörige utilities genauso beinhalten wie VCS und Dokumentationswerkzeuge.

Danke!

05.07.2010 - 08:16 Uhr

1-2x (2x eher selten) die woche squash - genau der richtige sport. Nachts um 22:00 noch für ne stunde mit kollegen in den court (gesündester sport überhaupt lt. forbes 😉) und die welt ist wieder in ordnung. Ansonsten im sommer zusätzlich beachvolleyball mit freunden und zur zeit leider eher selten aufs rennrad (ingolstadt ist radunfreundlich).

05.07.2010 - 08:03 Uhr

FernUni Hagen ist wohl die bekannteste (und auch größte Uni überhaupt) in Deutschland. Die meisten sind wirklich zufrieden.

02.07.2010 - 08:16 Uhr

public static FileInfo RelativeWithDriveChange(String drive, String relPath)
{
    String curDir = Directory.GetCurrentDirectory();
    String newDir = drive + curDir.Substring(3, curDir.Length - 3);
    Directory.SetCurrentDirectory(newDir);
    // there are exceptions to catch
    FileInfo result = new FileInfo(relPath);
    Directory.SetCurrentDirectory(curDir);
    return result;
}

// Usage - current dir c:\foo\bar\baz
FileInfo fi = RelativeWithDriveChange("d:\\", "..");
Debug.Print(fi.FullName); // should be d:\foo\bar

aber irgendwie hat man dadurch nichts gewonnen 😉

30.06.2010 - 13:14 Uhr

Da hast du mich falsch verstanden, ich meinte nicht unbedingt die industrie, welche Netzwerktechnik produziert, sondern diejenige, die diese einsetzt. Und v6 ist in den meisten firmen noch kein thema. Ich glaube, mann muss mehr als CCNA sein, um bei dem Thema wirklich mitreden zu können. Das dürften allerdings die wenigstens (inklusive mir) sein. Auf jeden fall gabs die diskussion über erschöpfte IP ranges schon des öfteren, aber gerade in der Netzwerktechnik ist eigentlich immer alles SNAFU (situation normal - all fucked up) und trotzdem funktionierts irgendwie. Das schichtensystem ist vom design her falsch. IPv6 ist klar ein schritt in die richtige richtung, kann allerdings nur eingeführt werden, wenn es einige zeit parallel zu v4 läuft. Außerdem wären nach der umstellung zu v6 wohl einige netzwerktechniker arbeitslos, denn da funktionieren einige sachen wie routing, qos und subnetting anstandslos(er). Ich verwette auf jedenfall meinen hut darauf, dass niemand hier wegen "ip address 404 - no free addresses found" nicht online kommen wird 😉

30.06.2010 - 09:44 Uhr

Ich denke, dass PAT (!=NAT) und Subnetting auch für die nächsten Jahre noch genug Reserven bringt. Bis dahin sollten sich dual stacks verbreitet haben, was den umstieg zumindes auf öffentlicher ebene fließend macht. Wie dringend der umstieg auf v6 ist, sieht man am besten daran, wie sich die industrie verhält. Und da scheint noch mehr als genug zeit zu sein.

30.06.2010 - 09:16 Uhr

Referenztypen sind nullable. Versuch mal folgendes:
Nullable type as a generic parameter possible?

25.06.2010 - 08:22 Uhr

solange du nicht über 80mbyte/s oder 1000000 1kb files auf einmal ziehst, gibts absolut keinen grund, warum man die kleine ssd (die mit dem os beschäftigt ist) anstatt der hdd (idle) vollmüllen sollte.

23.06.2010 - 08:20 Uhr

Zuallerst: Auf den bildchen erkennt man nicht wirklich was und ich tu mich verdammt schwer deinen text zu lesen - gib dir bitte etwas mühe.

UML wird genutzt, um a) software als blaupause vor der implementierung zu designen oder b) für die dokumentation später, was c), d) und x) auch nicht ausschließt. Es gibt viele arten von UML diagrammen, dabei hilft wiki.
Was du dir da aus VS generieren lässt ist meiner meinung nach kein richtiges UML Diagramm sondern ein Mischung aus Package und Component Diagramm.

Das was du dir da Vorstellst (Struktogramme/Programmablaufpläne in der OOP) werden je nach Bedarf mit Interaction Diagrammen dargestellt:

Interaction diagrams

Interaction diagrams, a subset of behaviour diagrams, emphasize the flow of control and data among the things in the system being modeled:

* Communication diagram: shows the interactions between objects or parts in terms of sequenced messages. They represent a combination of information taken from Class, Sequence, and Use Case Diagrams describing both the static structure and dynamic behavior of a system.  
* Interaction overview diagram: are a type of activity diagram in which the nodes represent interaction diagrams.  
* Sequence diagram: shows how objects communicate with each other in terms of a sequence of messages. Also indicates the lifespans of objects relative to those messages.  
* Timing diagrams: are a specific type of interaction diagram, where the focus is on timing constraints.  

(
>
)

Trotzdem spricht nichts dagegen, einzelne funktionen in ein struktogramm zu quetschen.

22.06.2010 - 12:30 Uhr

man sollte wohl zwischen einfachen unit tests und tdd differenzieren. natürlich bringen unit tests wenig bis nichts, wenn die coverage im niedrigen zweistelligen bereich liegt. allerdings kann dies bei konsequentem tdd nicht passieren.

22.06.2010 - 12:24 Uhr

entweder du implementierst IComparable<Appointment> und lässt deinen Code so stehen, oder du implementierst IComparable (implizit IComparable<Object>) und änderst die Signatur auf

public int CompareTo(Object o){}

Ansonsten wird CompareTo überladen und nicht überschrieben, allerdings sollte in dem fall auch ein compilerfehler auftreten, da das interface nicht erfüllt wurde.

21.06.2010 - 12:01 Uhr

Aber ich verstehe... Die Hygieneregeln haben sich vor 160 Jahren auch nicht einfach so durchgesetzt. Also müssen wir noch warten, bis auch der letzte Student nicht mehr anders kann und will, als automatisiert zu testen.

Offensichtlich hat die Industrie aber noch nicht begriffen, wie wichtig ordentliches softwaredesign im richtigen leben ist, ansonsten würden studenten tatsächlich von agiler softwareentwicklung und tdd hören, anstatt mit algo, datenstrukturen, c, java und mathe überladen zu werden.
das handwerkszeug kann man sich schnell selbst bei bringen, gutes softwaredesign lernt man aber von erfahrenen leuten und durch try&error, wofür umfangreichere softwareprojekte auch im studium bearbeitet werden müssten. dafür fehlt vor allem bei den neuen bachelor studiengängen bei aktuellem stoffplan schlicht die zeit. die forderung der industrie ist definitiv nicht laut genug (siehe anzahl an studiengängen technische informatik vs software engineering), ansonsten hätte sich schon was geändert.

zur umfrage: technisch ist mir klar, wie und warum tdd benutzt wird. wirklich sauber zu testen, lernt man allerdings eher im richtigen leben von erfahrenen leuten und richtigen projekten. daran mangelt es mir im moment leider massiv. deswegen: nein, aber schon fleißig am üben

21.06.2010 - 07:52 Uhr

Ich weiß nun woran es liegt, doch weiß ich leider nicht wie ich es lösen kann.
Das Problem ist, dass ich einen OpenFileDialog habe. Und nach diesem "zeigt" Environment.CurrentDirectory auf den Ordner in dem ich die Datei im OpenFileDialog ausgewählt habe.

Dafür gibts die property FileDialog.RestoreDirectory, ansonsten einfach relativ von deiner assembly arbeiten.

15.06.2010 - 11:26 Uhr

@fielding:

dafür braucht man keine schleife... es reicht wenn man .WaitForExit aufruft aber der blokiert ja auch 😉

das war auch kein tipp sondern zartes nachfragen nach sowas:

while(true){/* solange process läuf mülle den speicher zu und sleep ist was für anfänger */}
15.06.2010 - 10:19 Uhr

vielleicht probleme mit x64/x86? stell doch mal die target platform von allen abhängigen projekten auf x86. ansonsten schau mal da vorbei:
http://stackoverflow.com/questions/699173/clickonce-deployment-errors
http://social.msdn.microsoft.com/Forums/en-US/winformssetup/thread/9e4b714e-bad4-4c62-a7ad-3c80e32d95eb

wieso müssen exceptions unbedingt übersetzt werden? das macht die suche im netz relativ schwer..

14.06.2010 - 12:40 Uhr

zeig doch mal die schleife, in der du überprüfst, ob der prozess schon läuft.

14.06.2010 - 07:50 Uhr

Wobei ich bisher feststellen musste das ich mich schon sehr lange an diverse "regeln" halte die in CCD definiert sind ohne davon zu wissen 😄

das liegt glaube ich am gesunden menschenverstand 😉
ich sehe mich gerade zwischen rot und orange, je nach motivation..

11.06.2010 - 12:49 Uhr

Nein, nicht nach klassischem MVC. Dort enthält das Model sämtliche Logik. Der Controller kümmert sich rein um das "Mapping" von Usereingaben auf entsprechende Model-Methoden.

Sämtliche Business-Logik. Das MVC Pattern ist zwar allgemein bekannt, allerdings wird es sehr unterschiedlich ausgelegt. Nehmen wir mal folgendes an: Bei Klick auf Button B wird ein neuer Tab T in der View angelegt - wer würde nun über den Controller gehen um den Tab zu erzeugen?

Mein Model würde übrigens auch die gesamt Businesslogic beinhalten, da sonst M & C zu stark gekoppelt sind (meine Meinung).

11.06.2010 - 12:29 Uhr

es ist nicht ganz einfach, aber möglich:


^[12]?[0-9]?[0-9](\.[12]?[0-9]?[0-9]){3}$

oder


^((25[0-5]|2[0-4][0-9]|1?[0-9]{1,2})\.){3}(25[0-5]|2[0-4][0-9]|1?[0-9]{1,2})$

(http://www.naden.de/blog/ip-regular-expression-check)

wie gesagt, findet sich zuhauf im netz und alternativen gibts einige, wie hier im thread schon deutlich wird.

// edit: mit der MaskedTextBox wäre aber der Punkt auf der neuen Tastatur ganz umsonst 😉

11.06.2010 - 12:05 Uhr

eingabe mit Regex überprüfen (gibts hunderte im netz), allerdings haben meine IPs (v4) immer 4 blöcke, bei CIDR eine dazu passende subnetmask und ggfs. noch einen port :>

<ironie>wieso bestellts du nicht eine extra tastatur mit den zahlen 0-255?</ironie> Ich glaube das stück hardware hat sich preislich nicht rentiert ;D

edit: Versuchen zu parsen geht natürlich auch, die Frage ist jetzt was man als angenehmer empfindet: während der eingabe fehler markiert zu bekommen oder nach falscher eingabe von vorne anfangen zu müssen.

10.06.2010 - 15:45 Uhr

die Nutshell Reihe von OReilly (wie auch viele andere von diesem Verlag) kann ich auch empfehlen, Visual C# 2008 als Openbook oder gedruckt fand ich einfach zu umständlich zu lesen (deutsch).

bezüglich kindle: leider stellt der pdfs nur schlecht dar, auf der anderen seite verliert man die vorteile von den e-ink displays beim ipad 😕 ich bin auch schon lange auf der suche nach einer guten lösung, möchte allerdings nicht rein digital kaufen, wenn ich mir vielleicht 20% spare. und gebrauchte ebooks gibts nun mal nicht. auf der anderen seite kommen viele bücher mit PDF ebook dazu, das kann dann wieder kein ebookreader anzeigen und die volltextsuche fehlt. ein graus mit der technik 😉

10.06.2010 - 08:07 Uhr

fielding, dann haben die Firefox-Entwickler wohl andere Vorstellungen davon 😄

der firefox hält sich auch nicht an die ux guidelines, allerdings macht das mein VS 2005 auch nicht (da sind die tabs bold).

ich habe gerade selber ein bisschen rumprobiert, anscheinend lässt sich der header einer einzelnen tabpage nicht so einfach ändern ohne ihn selbst zu zeichnen. du kannst nur die ganze gruppe ändern, indem du den font des tabcontrol setzt.

am einfachsten wäre folgendes: verzichte auf die verschachtelten tabs (das gleiche gilt für die blaue schrift), sowas sieht man aus guten gründen so gut wie nie - man kann sich leicht verirren, da es einem einfachen tabcontrol mit vielen tabpages zum verwechseln ähnlich sieht. oder setze zumindest das übergeordnete tabcontrol an die seite, dann kennt man sich eher wieder aus.

außerdem denke ich, dass das event selecting hier ungünstig gewählt ist. nachdem man hier canceln kann, sollte doch eigentlich der selected tab noch der vorherige bzw null sein, oder?

09.06.2010 - 15:50 Uhr

Bei einem Klick auf den Tab wird doch bereits der Tab optisch hervorgehoben. Ich denke nicht, dass fetter Text das Verhalten ist, das ein User erwartet wenn er einen Tab selected.

09.06.2010 - 13:07 Uhr

Folgende Property in der Form setzen:

this.Cursor = Cursors.Cross;

übrigens ist html keine entwicklungsumgebung 😉

09.06.2010 - 08:42 Uhr

also ich habe bücher gelesen, in groben mengen (parallel zur ausbildung und studium, ungefähr in der folgenden reihenfolge):

  • c#/java anfängerbücher aus der von Kopf bis Fuß Reihe von OReilly
  • Softwareentwicklung von Kopf bis Fuß
  • Entwurfsmuster von Kopf bis Fuß
  • SCJP 1.6 (super)
  • Effective Java (genial)
  • SCJD 1.5 (noch besser)
  • More Effective c#
  • The mythical man month
  • clean code
  • Refactoring: Improving the Design of Existing Code
    und auch noch ein paar weitere (und es warten noch einige mehr im Bücherregal, vor allem zum thema agile SE und PM).

Ich fange gerade erst an, wirklich im Beruf (bzw aktuell Praktikum) code zu schreiben und auch daheim waren es immer nur ein paar Zeilen um Sachen auszuprobieren. Allerdings merke ich, wie schnell ich nun lerne und was ich für einen wissensvorsprung meinen kommilitionen gegenüber habe. auf viele probleme ist man bereits vorbereitet und weiß zumindest, wo man nachsehen muss oder wie man sich mit den kollegen unterhalten kann. dank clean code und der kenntnis der wichtigsten pattern können meine kollegen auch schon nach wenigen wochen meine code lesen, verstehen und so gut helfen. So ist man auch als Praktikant in der Abteilung beliebt 😉

Allerdings ist das wohl eher der autodidaktische weg, mit dem nicht alle zurecht kommen sollten ("pfui, bücher!")..

Das erste, was ich gelernt habe, war übrigens folgendes: E-Books wirklich lesen ist unglaublich anstrengend, ausdrucken teurer als kaufen, auch in gebrauchten büchern stehen noch gute infos und englische fachbücher sind sogar einfacher zu verstehen als deutsche, wenn man kein englisch kann.

04.06.2010 - 09:55 Uhr

da hast du natürlich recht. ich bin einfach von so etwas ausgegangen:

<li><a href="akloader/">akloader/</a></li>
<li><a href="akmenu4/">akmenu4/</a></li>
<li><a href="dldi/">dldi/</a></li>
<li><a href="fonts/">fonts/</a></li>
<li><a href="gbasleep/">gbasleep/</a></li>
<li><a href="language/">language/</a></li>
<li><a href="libelm/">libelm/</a></li>
<li><a href="libior4/">libior4/</a></li>
<li><a href="libiorpg/">libiorpg/</a></li>
<li><a href="license.txt">license.txt</a></li>
<li><a href="makefile">makefile</a></li>
<li><a href="patches/">patches/</a></li>

so große datenmengen werden wohl per tool erzeugt werden, und da ist die wahrscheinlichkeit, dass keine newlines im content sind, zumindest nicht verschwindend gering. aber solange der threadersteller keine beispiele (daten, eigene methode, verwendetes pattern) zeigt, kann man nicht wirklich helfen.

und natürlich geht ein xmlreader auch nur, wenn es wohlgeformtes xml ist - deswegen _könnten _ sich xmlreader auch anbieten.

übrigens liegt die dateigröße nicht nur zwischen 100kb und 100mb, sondern ziemlich genau bei 1.81 - 7.25 mb, wenn wir von utf-8 ausgehen können 😉

04.06.2010 - 09:46 Uhr

Hallo Herbivore,
naja, es mach tatsächlich keinen Sinn etwas zu parsen, von dem man ausgeht dass es falsch ist. Richtig wäre es andersrum: bei userinput kann man nicht davon ausgehen, dass er richtig ist. daher ist es falsch, im falle von falschem input ein exception zu werfen. Wenn ich konsequent davon ausgehen würde, dass der input falsch ist, dann müsst ich auch bei jeder korrekten eingabe eine exception werfen 😉 sorry, blöd ausgedrückt, is ja auch noch früh..

04.06.2010 - 08:05 Uhr

poste doch mal dein pattern, daran kanns nämlich gut liegen. auf der anderen seite:
lies doch zeilenweise ein und parse zeile für zeile, dann hast du bei den 38000 zeilen auch 38000 möglichkeiten deinen progress anzuzeigen.

edit: xmlreader könnten sich allerdings auch anbieten, einfacher xpath ausdruck und fertig. allerdings habe ich keine ahnung was von beiden performanter ist. aber in 6 minuten parse ich dir auch 100mb text mit meinem taschenrechner, der fehler liegt hier wohl in der implementierung.
weil du meintest, nach 6min hast du ohne ergebnis den process gekilled: schon mal probiert ob du auf nem subset der daten eine lösung bekommst? nich dass du hier in einer eleganten endlosschleife hängst ^^

04.06.2010 - 07:56 Uhr

also casten passt nicht ganz zum rest, deswegen lass ich das mal raus:

der richtige ansatz zum parsen ist tryParse. vor allem wenn userinput geparsed wird, sollte davon ausgegangen werden, dass dieser falsch ist. deswegen darf bei falschem input eigentlich keine exception auftreten (da diese eben _ausnahmen _anzeigen sollen), was nur mit tryParse möglich ist. afaik wurde tryParse genau aus diesem grund in 2.0 nachimplementiert.

02.06.2010 - 10:23 Uhr

Tut mir leid wenn das falsch rüber kam:
Latex ist nie die schnellste Lösung (als Nicht-Profi), deswegen hab ich zu Anfang davon Abstand genommen, auch wenn ich schon etwas Erfahrung im texen habe. Für wissenschaftliche Arbeiten ist Latex ideal, für ein bisschen Text (so wie ich das vor hatte) aber eigentlich overkill. Trotzdem ist es für mein Problem gerade die beste Lösung (ich halte nichts von der C&P Idee, aus oben genannten Gründen), was noch lange nicht heißt dass ich so zufrieden bin. Aber nachdem das Thema ja irgendwie ein bisschen abgedriftet ist von Skript in Richtung Buch und wissenschaftliche Arbeit, wollte ich mich in dem Bereich noch mal klar zu Latex bekennen.

Danke an alle für ihre Ideen und Vorschläge, hat mich zumindest zum Nachdenken und Ausprobieren gedacht. Außerdem finden 3. hier in dem Thread gute Ideen aus vielen Perspektiven.

02.06.2010 - 08:53 Uhr

@khalid: das sieht wirklich interessant aus! danke für die erste word alternative.

@herbivore: sollte ich jemals ein buch schreiben, werde ich das in betracht ziehen. sieht man sich allerdings die errata von gängigen werken an, wird das wohl in der praxis nich gemacht. Allerdings würde ich gerne mal sehen wie du inline code testest.
nach ein bisschen testen wird auf jedenfall nichts mehr in word kopiert, ich verstehe nicht warum softwarentwickler, die gänsehaut kriegen wenn GUI und Logik nicht entkoppelt sind, ganz skrupellos mit html formatierten sourcecode in ihre docs packen - stellt euch nur mal vor, der kunde hätte gerne am ende ein anderes farbschema 😉

an der stelle möchte ich noch mal jedem latex ans herz legen, der auch nur irgendwie wissenschaftliche arbeiten schreibt.

02.06.2010 - 08:16 Uhr

hallo herbivore,
wie testest du denn, ob einzelne zeilen kompilieren? Du würdest doch nicht ~100 codefragmente wie

•	MyOuter.Myinner mi = new MyOuter().MyInner();
•	MyInner.this;		// this von MyInner
•	Method-inner classes können nicht auf Instanzvariablen zugreifen (Stack<->Heap), außer sie sind final
	
•	// erstellt eine subclass von Popcorn und überschreibt pop
	public void foo() {
		Popcorn p = new Popcorn {
			public void pop() {}
		};
	}

•	A.B b = new A.B();		// static inner class, keine Instanz von A nötig (vgl. Inner class)

auseinanderfriemeln, in eine klasse packen und dann schauen obs sie compiled? Und selbst dann kanns du noch nicht garantieren ob sie auch logisch richtig ist und vor allem bleibt - sollte ich nun jedes codefragment mit unit tests abdecken?

Ich bin jetzt folgendermaßen vorgegangen:
Skript rein plaintext geschrieben, längere codefragmente wie ganze klassen oder kurze demos in externe files gepackt und mit minted/pygments formatiert, um dann im haupt-texfile wieder zu includen (quelle). Am meisten arbeit war wohl die Installation von pygments.
Sobald alle fehlerchen raus sind, werd ich mal ein sample und die dazu passende texfile anhängen, da das meiner Meinung nach der C&P-Variante in Word meilenweit überlegen ist und nicht beim ersten versionswechel der software wieder zerbricht.

//edit: inline-codehighlighting klappt allerdings noch nicht 😕

01.06.2010 - 21:25 Uhr

Naja, ich hätte noch erwähnen sollen, dass es kein automatisches Syntaxhighlighting war. Anfangs hatte ich es so gemacht, dass ich mir den Quellcode direkt aus dem VS kopiert hab, der hat dann das Format übernommen. Das hat aber nie hundertprozentig geklappt, hängt irgendwie mit den Einfügeoptionen zusammen und wie Word diese Formatierungen im Text gesetzt hatte.

willkommen in meiner welt 😄

01.06.2010 - 15:44 Uhr

Hast du dir schonmal LaTeX angeguckt?

jap, ich schreib privat auch schon regelmäßig in latex und lerne fleißig. Allerdings wollte ich das ganze schnell über die Bühne bringen, außerdem haben wir hier eine reine office infrastruktur, keine chance dokumente für die firma zu texen 😕

und ich weiß wirklich dass viel mit word geht, aber die frage, ob denn alles gemacht werden muss was irgendwie möglich ist, sollte man sich schon stellen. ich tippe gerade nur den plaintext, mal sehen ob mir noch eine elegante lösung einfällt.

01.06.2010 - 15:22 Uhr

ach, briefe oder ähnliches tipp ich auch in word. allerdings hab ich hier täglich diese schreckliche office infrastruktur mit RIESIGEN designdocs und aberwitzigen excel/access-"programmen" um mich rum und das gibt einfach mehr probleme als dass es nützt. Ich möchte gar nicht wissen wie viele wichtige infos hier in der firma in irgendwelchen alten docs verstauben und wie irgendwann mal auf ein aktuelles office portiert werden soll ohne dass es alle vorlagen und tools zerreisst.

01.06.2010 - 15:12 Uhr

danke isaac, das ist auch wirklich nett. aber erstens hab ich hier nur Word 2003 und zweitens weigere ich mich einfach word für solche dokumente zu benutzen. Das ist wohl glaubensfrage, ich kenne viele in meiner abteilung die mit word alles zusammenfrickeln können. Ob das tool allerdings wirklich für technische sachen gedacht ist, möchte ich hier öffentlich anzweifeln 😉

Vielleicht bau ich mir auch einfach selber was, mit scintilla geht das recht flott. ich dachte nur, vielleicht hat ja vor mir schon jemand word boykottiert.

01.06.2010 - 14:53 Uhr

Hallo,
danke für die antworten. Die Variante direkt aus der IDE zu kopieren (nach word/htmleditor) klappt zwar, aber ideal ist das doch nicht. Wenn ich codeschnippsel mit maximaler länge von 5 zeilen aus nem buch, meinen notizen oder aus dem kopf tippe, will ich die doch nicht zuerst in die IDE packen um sie dann von dort in einen Texteditor zu kopieren. Außerdem sind es wirklich fragmente, was bedeutet dass der Autoformat nicht funktioniert - der nutzen der IDE geht also gegen 0.

Bevor ich wirklich in Office einsteige und mich mit absatzformatierungen auseinandersetze, kann ich auch latexprofi werden. Außerdem will ich wirklich codefragmente direkt in dem texteditor schreiben, damit die Tabs aber richtig interpretiert werden muss jede zeile als eigener absatz stehen und das ist nicht unbedingt handlich.

Die Sache mit dem Forum hab ich mir tatsächlich schon überlegt, allerdings kann das nicht die ultimative lösung sein. Menschen schreiben Bücher mit mehreren hundert seiten, ich glaube einfach nicht dass da zwischen vielen tools hin und her kopiert werden muss um die gewünschte formatierung zu erhalten.

Ideal sind eigentlich Tools wie Notepad++ oder PSPad, allerdings bieten diese kein RTF.

Genau so ein tool suche ich nun: Texteditor ala PSPad/N++ mit RTF-Unterstützung, damit auch mal was unterstrichen werden kann oder sogar bildchen platz haben.

01.06.2010 - 13:50 Uhr

Hallo,
ich schreibe grad eine Zusammenfassung für eine SUN-Zertifizierung und mische ziemlich viel Fließtext mit Sourcecode. Beispiel:

•	Klassen, die spezielle Behandlung beim (de)serialisieren erfordern, müssen genau diese Methoden implementieren:
 		- private void readObject(java.io.ObjectInputStream stream) throws IOException, ClassNotFoundException;
 		- private void writeObject(java.io.ObjectOutputStream stream) throws IOException
•	Konstruktor läuft nicht bei Deserialisierung, Ausnahme: Ist eine Superklasse nicht serialisierbar, wird der Defaultkonstruktor  der ersten nicht serialisierbaren Klasse aufgerufen. Als transient markierte variablen erhalten ihren Defaultwert.
 
...

•	Aktuelle Zeit: new Date().toString();
•	Calendar mit locale:
		Locale loc = new Locale("de");
		Calendar c = Calendat.getInstance(loc);
		c.add(Calendar.DAY, 1);

...

		public class List<T> { 
			T t;
			public T get(int index) {}
			public <T extends Number> void get(T t) {};
			public <T extends Number> T get(T t) {};
		}


Das ganze ist in Word äußerst unangenehm, da das einrücken einfach die hölle ist.
Jetzt bin ich auf der Suche nach einem RTF-Editor, der komfortabler ist als Wordpad (benutze ich gerade), in dem ich Bilder wie Klassendiagramme einfügen kann und Code idealerweise in Boxen wie in jedem xbeliebigen Forum packen kann, am besten mit Highlighting, also im Stil von gängigen Büchern zum Thema Software.

Indesign wäre allerdings der absolute overkill und Latex muss nicht sein, da bin ich im moment noch zu langsam dafür. Gibts da draußen irgendwas passendes?

Vielen Dank!

01.06.2010 - 08:05 Uhr

effective java item 2:
consider a builder when faced with many construktor parameters

vor allem wenn noch viele optionale parameter dabei sind, kann man gut folgendes machen:


// JavaBeans Pattern
TestObject t = new TestObject();
t.setParam1 = ...;
t.setParam2 = ...;
t.setParam3 = ...;
// ...
// Objekterstellung fertig

allerdings hat dein objekt während der erstellung einen inkonsistenten zustand, dafür gibt es das builder pattern:


 public class Test
    {
        private readonly int req1;
        private readonly int req2;
        private readonly int opt1;
        private readonly int opt2;
        private readonly int opt3;
        private readonly int opt4;

        private Test(int req1, int req2, int opt1, int opt2, int opt3, int opt4)
        {
            this.req1 = req1;
            this.req2 = req2;
            this.opt1 = opt1;
            this.opt2 = opt2;
            this.opt3 = opt3;
            this.opt4 = opt4;
        }

        public class Builder
        {
            // req param
            private readonly int req1;
            private readonly int req2;

            // opt param, werden auf ihre defaults gesetzt
            private int opt1 = 1;
            private int opt2 = 2;
            private int opt3 = 3;
            private int opt4 = 4;

            public Builder(int req1, int req2)
            {
                this.req1 = req1;
                this.req2 = req2;
            }

            public Builder Opt1(int i)
            {
                opt1 = i;
                return this;
            }

            public Builder Opt2(int i)
            {
                opt2 = i;
                return this;
            }

            public Builder Opt3(int i)
            {
                opt3 = i;
                return this;
            }

            public Builder Opt4(int i)
            {
                opt4 = i;
                return this;
            }

            public Test Build()
            {
                return new Test(req1, req2, opt1, opt2, opt3, opt4);
            }
        }
        public static void main(string[] args)
        {
            // Opt4 omitted
            Test t = new Test.Builder(1, 2).Opt1(3).Opt2(4).Opt4(5).Build();
        }
    }

so musst du nicht den konstruktor in x variationen bereit stellen und hältst dein objekt trotzdem konsistent.

// edit: sorry, ich hoff der post ist nicht zu länglich

31.05.2010 - 16:02 Uhr

Dezentrale Repos sind momentan wirklich IN und in Verbindung mi GitHub meines erachtens gerade für lose Teams oder einzelne entwickler von vorteil. Forken/Branchen ist einfach wesentlich einfacher geworden und man kann kleinere Commits im eigenen Repo machen bevor man auf main pusht. Undd die performance ist einfach toll!

Zu Git gibts nen tollen Podcast von ChaosRadioExpress, einfach mal googlen. Außerdem ist ein Openbook für git enstanden, welches mit git von der community miterstellt und gepflegt wurde - wirklich ein tooles buch (pro-git).

Allerdings reicht SVN auch mehr als aus und die unterstützung der IDEs ist noch viel besser (kann nix zu VS sagen weil wir hier CC benutzen, allerdings ist egit für eclipse und nbgit für netbeans noch recht schwach). Bei O'Reilly gibts dann auch für SVN ein sehr gutes openbook.