PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : RegEx Problem



hpf
09-10-2006, 13:02
hiho zusammen,

vieleicht könnt ihr mir bei meinem kleinen problemchen helfen.
also, als erstes mal ne kleine exkursion zu dem endziel.
ich möchte ein kleines protokoll entwickel, um die kommunikation mit verschiedenen datenquellen zu vereinheitlichen (die datenquellen sind einem von mir geschriebenen applikationsframework zugehörig) es funktionert auch recht gut. das einzige, was mich noch stört ist das ganze rumgefummel an den request strings, nun hab ich mir überlegt, dass das ganze doch mit regexp's wahrscheinlich leichter zu handlen sei.
aber pustekuchen, mein ausdruck hat nie einen match, nur weiß ich leider net, an welcher stelle es hackt (der syntaxparser beschwert sich nicht, also muss es ein gültiger ausdruck sein).

so, nun zum konkreten problem:
ich habe einen protokoll string, der in etwa so aussieht

hpf-net://req="run";object[objname="obj1",obj="{serialisiertes Objekt}"]

nun würde ich gerne ein paar dinge herausfinden wenn ich ein request bekomme:
1. ist der request string von meinem protokoll
2. was steht in ihm (am besten gleich splitten)

aber mein ausdruck(eine zeile drunter) stellt nicht einmal fest ob der string gültig ist
"^hpf(-net|-db)://.*"

kennt einer von euch vieleicht ein gutes tutorial für regex ?

mfg
hpf

Waxolunist
09-10-2006, 14:22
tutorials gibt es zu hauf.

einfach google befragen.

Ansonsten empfehl ich dir die API, wo die Unterschiede von Java zu Perl-Regex ganz gut erklärt werden. Ich verwende zum Testen gerne dieses Applet (http://www.cis.upenn.edu/~matuszek/General/RegexTester/regex-tester.html)

Deine Regex sagt in der Gruppe derzeit nur, dass es ein -net-Aufruf ist.

Jetzt kommt es natürlich darauf an, was du genau möchtest.

Wenn du folgende Ausgabe z.B. möchtest:



group(0) = "hpf-net://req="run";object[objname="obj1",obj="{serialisiertes Objekt}"]"
group(1) = "-net"
group(2) = "obj1"
group(3) = "serialisiertes Objekt"


folgende Regex verwenden:

^hpf(-net|-db)://.*objname="(.*)",obj="\{(.*)\}".*

hpf
09-10-2006, 14:34
erstmal vielen dank für den link, das applet is echt spitze, inzwischen klappt das auch ganz gut, nun habe ich aber ein kleines/großes problem, mit dem preparierten string "hpf-net://req="run";object[objname="obj1",obj="{serialisiertes Objekt}"]"
klappt es nun aber wenn ich den teil {serialisiertes Objekt} durch ein echtes serialisiertes object (den bytarray output als string) ersetzte, schlägt es wieder fehl :( kann man ihm in dem regex noch beibiegen, dass ihm absolut egal ist was für zeichen in einem bestimmten abschnitt verwendet werden ?

mfg
hpf

Waxolunist
09-10-2006, 14:40
.* heißt eigentlich schon irgendwelche zeichen, und zwar beliebig oft.

Kannst du mal ein Beispiel für so einen Bytearray bringen?

Liberty
09-10-2006, 14:54
Moin!

@hpf:
Nimm's mir nicht übel, aber als Informatik-Student finde ich Deinen gesamten Ablauf etwas "unelegant".

Ich persönlich würde an derartige Probleme in zwei Schritten herangehen:

Als erstes würde ich den String durch einen handgemachten Tokenizer zerlegen und dann im zweiten Schritt mit den Tokens weiterarbeiten. Das ist übrigens auch gleich eine gute Kontrollmöglichkeit, denn in dem Moment, in dem Du feststellst, dass sich Dein String nicht eindeutig zerlegen lässt, müsstest Du Deine Syntax nochmal überdenken, Du sicherst Dich also nochmal gegen nicht eindeutige Syntax ab.

So long,
Liberty

P.S.:
Hast Du irgendwo Deine Syntax schonmal vernünftig dokumentiert, sieht im Moment ehrlich gesagt ein klein wenig unsauber aus...

hpf
09-10-2006, 14:57
@Liberty keine sorge, ich nehm dir nix übel, aber das hab ich schon getan ^^ aber mit regex würde ich den code (bis auf die expression selbst) extrem siplifizieren ^^

mfg
hpf

hpf
09-10-2006, 15:05
hmm, der string lässt sich net vernünftig aus der console kopieren, der scheint escape sequences zu enthalten, aber ich hab mal nen bild gemacht. ich bräuchte im prinzip nen "ignore ascii mode für den part".

http://www.h-p-f.org/serailizedObj-regex-prob.bmp

mfg
hpf

Liberty
09-10-2006, 15:19
Moin,

das könnte ja auch der Grund sein, warum Du mit den RegExp's Probleme hast.

Ich gehe mal davon aus, dass Deine Protokoll-Strings grundsätzlich "human-readable" sein sollen und evtl. auch als reine Text-Strings verarbeitet werden sollen.
Deshalb solltest Du vielleicht mal überlegen, ob Du die problematischen Teile nicht in einen int64-Code umwandeln solltest, bevor Du sie in Deinem String verwendest. Das könnte evtl. die Verarbeitung durch RegExp's erleichtern.

So long,

Liberty

hpf
09-10-2006, 16:02
der tip mit der int64 konvertierung is gut, das müsste ich mal ausprobieren.

mfg
hpf

Waxolunist
09-10-2006, 16:20
@Liberty:

Als fertiger Dipl.-Ing. finde ich die Vorgehensweise über einen regulären Ausdruck extrem elegant, da sehr wohl die Gültigkeit bzw. die Erfüllung von bestimmten Parametern überprüft wird und zugleich eine Zerlegung stattfindet. Reguläre Ausdrücke sind Tokenizern absolut vorzuziehen.

Je nach verwendeter Engine sind diese nicht nur schneller, sondern verkürzen auch den Code.

Aber mit den serializierten Objekten stimmt es schon, dass es da eher schwierig wird. Ich würde mir eher etwas einfallen lassen, wo ich vielleicht Objektbeschreibungen hin und hersende, á la XML

Waxolunist
09-10-2006, 16:30
Ich habs aber jetzt mal selbst versucht, und finde, dass es ganz gut funktioniert.

Hier mal mein Beispiel-Code:


import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.ObjectOutputStream;
import java.util.Date;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class StringRegexTest {

public static void main(String[] args) {

String serializableObj = SerializeDate.serialize();

String text = "hpf-net://req=\"run\";object[objname=\"obj1\",obj=\"{"
+ serializableObj + "}\"]";

Pattern pattern = Pattern.compile("^hpf(-net|-db)://.*objname=\"(.*)\",obj=\"\\{([\\u0000-\\uFFFF]*)\\}\".*$", Pattern.DOTALL | Pattern.CASE_INSENSITIVE);
Matcher m = pattern.matcher(text);
if (m.find()) {
//System.out.println(m.groupCount());
for (int i = 0; i <= m.groupCount(); i++)
System.out.println(m.group(i));
}


}
}

class SerializeDate {
static String serialize() {
try {
ByteArrayOutputStream bos = new ByteArrayOutputStream();
ObjectOutputStream o = new ObjectOutputStream(bos);
o.writeObject("Today");
o.writeObject(new Date());
o.close();
return bos.toString();
} catch (IOException e) {
System.err.println(e);
return null;
}
}
}


Ich habe einfach im serialisierten Teil den Pattern any Character durch any Unicode-Character ersetzt.

Liberty
09-10-2006, 16:36
Moin!

@Waxolunist:
Sorry, wenn's eigentlich OT ist, aber was studiert ihr Dipl.-Ings. eigentlich? Ich muss nämlich leider anmerken, dass ich "Dipl.-Ing." schon seit einiger Zeit nicht mehr als Qualitätsmerkmal im Informatikbereich akzeptiere, denn relativ häufig musste ich schon feststellen, dass sich hinter Dipl.-Ings., die sich in diesem Bereich versucht haben, ziemlich unfähige Menschen versteckt haben und daher frage ich mich so manches mal, was ein Dipl.-Ing. eigentlich genau studiert...
Das hat jetzt nichts mit Dir zu tun (ich kenne Dich ja auch überhaupt nicht), ist aber so eine allgemeine Beobachtung, die ich leider in der letzten Zeit machen musste.

@RegExp's
Wo findet denn bei der von hpf geschilderten Anwendung die Zerlegung a la Tokenizer statt :confused: Irgendwie erinnere ich dunkel, mal gelernt zu haben, dass der Sinn von RegExp's ist, zu prüfen ob ein bestimmter String ein bestimmtes Muster erfüllt und das ganze ist dann ein reines Entscheidungsproblem.
//EDIT
Ist aber bei mir hauptsächlich theoretisches Wissen ... Ullman lässt grüßen.

So long,
Liberty

P.S. @Dipl.-Ing.:
Ich bleibe lieber bei meinem angestrebten "MSc CS"

Waxolunist
09-10-2006, 16:54
Bevor ich mal loslege, möchte ich noch kurz sagen, dass mir der Titel eigentlich wurscht ist, aber er hilft im titelgeilen Österreich. Das möchte ich nicht bestreiten. Mich hat es nur gereizt, dir Konter zu geben auf deine Aussage "... als Informatik-Student...".

Tja, in Österreich gibts im technischen Bereich noch nicht sehr lange die Aufteilung nach Master und Baccelor. Ich habe also noch nach einem alten Studienplan studiert, stehe aber auf dem Level eines Masters bzw. Magisters der Technik (bäh klingt des grauslich).

Mein Hauptstudienfach war Nachrichtentechnik mit Schwerpunkt auf Computersimulation.

Dipl.-Ing. umfasst in Österreich eigentlich jedes technisches Studium, sprich im ersten Abschnitt sind eigentlich alle Ingenieursgrundlagen dran gewesen, das waren Physik 1, Numerik 1, Mathematik 1+2, Informatik 1, Analoge und Digitale Schaltungstechnik und noch einige vorbereitende Vorlesungen für die Speziellen. Im zweiten Abschnitt kommen dann die für das Studienfach spezielleren plus einige Zusatzfächer wie Recht und etwas Wirtschaft, Wissenschaftliches Arbeiten usw.

Wies jetzt im neuen Studienplan aussieht, kann ich dir nicht genau sagen, aber Kern der Studienreform, war dass man schon früher einen kleinen Abschluss hat, den Bacc eben.

ad Zerlegung: Du kannst mit Regex sehr wohl splitten. Wenn du meinen Code mal kurz ausführst, siehst du dass der String schon gruppiert ist, und die Gruppen nur mehr der Reihe nach ausgelesen werden müssen. In meinem Beispielcode gebe ich die Strings der Reihe nach auf der Konsole aus.

/greetz

Christian

hpf
09-10-2006, 17:14
@Waxolunist
danke dir nun klappts ^^

Liberty
09-10-2006, 17:20
Moin,

@RegExp in Java:
Ich muss zu meiner Schande eingestehen, dass ich mich mit der Implementierung der RegExp-Mechanismen in Java wegen bisher mangelnder Notwendigkeit noch nicht beschäftigt hatte und daher nicht gewusst habe, dass da auch gleich Tokens mit anfallen, sorry.
Vom reinen Gefühl her würde ich aber trotzdem weiterhin über einen int64-(oder auch Hex-)Code nachdenken, damit könnten sich Fehler beim Parsen vermeiden lassen (sonst müsstest Du auch sicherstellen, dass in Deinen Object-Strings keine Zeichen auftauchen, die als Trennzeichen zur nächsten Option interpretiert werden könnten.

@Waxolunist:
Ich glaube, das Problem bei vielen Dipl.-Ings. ist, dass die von allem ein bißchen gemacht haben und am Ende eher ins mittlere Management gehen müssten und nicht in die rein technische Ebene.
Klar, wir machen im reinen Informatik-Studium natürlich auch Anteile Mathe (inkl. Statistik) aber wir schenken uns eigentlich diesen physikalischen und juristischen Overhead, den Du jetzt z.B. gemacht hast.
Kann aber auch ein deutlicher Unterschied FI/AT/DE sein, denn in Deutschland kannst Du Deinen Dipl.-Ing. auch schon an Fachhochschulen machen und musst nicht mal an die Uni.

So long,
Liberty

hpf
09-10-2006, 17:40
also serailisierung/deserialisierung laufen nun rudimentär, ich denke, ich werde den strin so belassen wie er ist und noch ne crc drüber legen zur datensicherung

mfg hpf

Waxolunist
09-10-2006, 19:51
@Waxolunist:
Ich glaube, das Problem bei vielen Dipl.-Ings. ist, dass die von allem ein bißchen gemacht haben und am Ende eher ins mittlere Management gehen müssten und nicht in die rein technische Ebene.
Klar, wir machen im reinen Informatik-Studium natürlich auch Anteile Mathe (inkl. Statistik) aber wir schenken uns eigentlich diesen physikalischen und juristischen Overhead, den Du jetzt z.B. gemacht hast.
Kann aber auch ein deutlicher Unterschied FI/AT/DE sein, denn in Deutschland kannst Du Deinen Dipl.-Ing. auch schon an Fachhochschulen machen und musst nicht mal an die Uni.

So long,
Liberty

Hallo

Ich werde die Diskussion jetzt mal hier weiterführen, nachdem es für hpf mal zufriedenstellend läuft.

Physik und all dieser Overhead finde ich zunächst einmal essentiell für Nachrichtentechnik. Zudem mag ich persönlich keine Fachidioten, wenn ich mit einem Informatiker zusammenarbeite und ich OPV erwähne, so möchte ich das nicht erklären müssen. Das erwarte ich mir, dass der zumindest eine Grundahnung von dem hat, was ich spreche, genauso wie ich von einem Datenbanker erwarte, die Grundlagen der Mathematik (Statistik) zu kennen, oder dass der zumindest was mit dem Begriff OOP anfangen kann.

Dass ich jetzt vermehrt in DB und Java arbeite, ist eher Zufall gewesen. Aber andere Bereich wären genauso denkbar gewesen. Tja, man weiß ja nie, wos hin geht im Leben, wär ja sonst fad.

Juristischen Scheiß würde ich mir schon gar nicht sparen im Bereich Informatik. GPL und Urheberrecht finde ich genauso grundlegend. Das gehört einfach dazu.
Zudem, stell dir vor, du wirst vorgeschlagen zu einem Bereichsleiter und dann kannst du nicht mal eine Bilanz erstellen oder hast noch nie was von doppelter Buchführung gehört. Die werden sagen, Supertechniker, aber für eine höhere Position ungeeignet.

Das nächste ist, Projektmanagement. War ein kleiner Kurs. Aber ein Kunde erwartet das. Wenn der einen Projektplan möchte, und ich kann ihm nicht sinnvoll einen Milestoneplan und was eben so dazu gehört, erstellen, werde ich bei der Ausschreibung gegen die Konkurrenz eher abstinken.

Ausserdem solltest du, v.a. wenn du vielleicht selbständig oder als freier Programmierer arbeitest, deinen Lohn ausrechnen können. Das waren Zusätze, die ich gern gemacht habe, da ich später nie mehr diesen einfachen Zugang zu diesen Lehrgängen gehabt hätte.

Ich habe Studenten auch als Absolvent betreut, inzwischen nicht mehr, und denen habe ich solche Kurse immer nahe gelegt. Das wird unterschätzt. Genauso sollten Wirtschaftler ein gewisses technisches Grundverständnis besitzen. Es ist einfach unglaublich entspannend, wenn ein Kunde weiß, wovon man spricht, ohne dass man ständig die einfachsten Begriffe erklären muss, oder noch schlimmer, er traut sich nicht nachfragen, und man spricht eigentlich gegen eine Wand.

Ich kann ehrlich jetzt nichts mit dem Titel "MSc CS" anfangen. Bei DI weiß ich zumindest, Ingenieursgrundlagen, gewisses technisches Grundverständnis. Wenn ich dann noch den Zusatz als DI für xxx kenne, weiß ich sogar noch mehr.

lg, Christian

PS: Bin schon gespannt auf deine Stellungnahme. Finde diese Diskussion doch interessant. Darf ich fragen, in welchem Semester du bist?

PPS: Habe mich gerade informiert: Master of Science in Computer

Liberty
09-10-2006, 23:00
Moin,

in einem Punkt sind wir uns dann ja schon mal einig: Wir mögen beide keine Fachidioten, allerdings sehe ich nicht, dass ein Informatiker sich zwangsläufig mit elektronischen Bauteilen auskennen muss, da sehe ich den Zusammenhang nicht. Vielleicht definiere ich Fachidiot auch etwas anders, denn für mich ist ein Fachidiot jemand, der über sein Fach hinaus keine Allgemeinbildung hat und ich habe mir schon vorgenommen, meine "freien" Scheine auf Geschichte oder Soziologie zu verbraten und bloß nicht auf Physik oder ähnliche Gebiete, die mir viel zu nah an meinem eigenen Bereich sind.

Darüber hinaus sind viele der Bereiche, die Du erwähnt hast, für mich Allgemeinwissen, bzw. Bereiche an die ich mich mit dem Halbwissen, das man zwangsläufig hat, nicht heranwagen würde.
Nehmen wir zum Beispiel juristische Fragen: Mein Eltern sind beide Anwälte und wenn ich von denen eins gelernt habe, dann, dass es nichts schlimmeres gibt als Menschen, die sich auf dem "oblatendünnen Eis des halben Zweidrittelwissens" (Sorry, bin Kuttner-Fan) bewegen und damit nicht selten mehr Schaden anrichten, da sie meist doch irgendetwas übersehen habe.
Und ich bin der Meinung, dass man für Dinge wie Lizenzrecht keine Kurse braucht, ich bin bislang mit gesundem Menschenverstand und zwei Augen (brauche ich für's Lesen der (Lizenz)verträge) ganz gut gefahren und wenn es darum geht, selbst (Lizenz)verträge einzusetzen, dann werde ich mich hüten, das ohne die Unterstützung eines Volljuristen zu tun.
Ich habe im Rahmen meiner Ausbildung zum Reserveoffizier der Bundeswehr auch ein paar Seminare Recht (bisher Verfassungs-, Wehr- und Befehlsrecht) und das ist schon ganz gut, sich damit auseinanderzusetzen, aber ich käme deshalb noch lange nicht auf die Idee, mich z.b. vor einem Truppendienstgericht selbst zu vertreten.

Ok, ich gebe an dieser Stelle zu, dass ich sehr stark von mir selbst ausgehe und ich muss leider genauso zugeben, dass ich in vielen Bereichen bei meinen Kommilitonen feststellen muss, dass eine Aufmerksamkeit und Sensibilität für die angesprochenen Bereiche schlicht und ergreifend nicht existiert. Von der Seite macht es wahrscheinlich schon Sinn, viele Dinge explizit anzusprechen, auch wenn es für einen selbst oft öde ist.
Ich (5. Semester) sitze zum Beispiel gerade in einem Kurs "Einführung in die Informatik" (oder "Johdatus tietojenkäsittelytieteeseen" wie man hier zu sagen pflegt) und wenn ich mir anschaue, dass die Dozenten darauf hinweisen, dass man bitte in für die Uni verfassten Dokumenten Slang vermeiden sollte, dann frage ich mich ernsthaft, welche Qualität heute von den Schulen geliefert wird, denn das muss man doch einem Studenten EIGENTLICH nicht ausdrücklich erklären (dachte ich zumindest bisher). Aber würde ich jetzt hier mit einem Monolog über den Verfall des Allgemeinwissens, der Umgangsformen und der Rhetorik beginne, würde dieser Post alle Rekorde sprengen, also weiter im Text.

Nächster Bereich: Wirtschaft
Da ist mein Ansatz wieder ähnlich, denn ich frage mich, ob es wirklich etwas bringt, die Studenten in irgendwelche Einführungskurse zu stecken und ihnen das Gefühl zu vermitteln, sie würde sich jetzt auch mit Wirtschaft auskennen, denn auch das ist ein Bereich, den ich im Großen und Ganzen den echten Profis überlassen würde.
Natürlich sollte es jedem Menschen klar sein, dass Geld und Zeit Resourcen sind, die nicht unbegrenzt zur Verfügung stehen, nur für derartige Grunderkenntnisse brauche ich keine Kurse in BWL, sondern gesunden Menschenverstand.

Letzter Punkt: Methodik
Nennt mich altmodisch, aber ich halte einen großen Teil der heutigen Methodenlehre für - gelinde gesagt - Müll. Entweder Du bist in der Lage, Dich und Deine Sache zu verkaufen oder eben nicht und da helfen Methodikkurse an der Uni mit jeder Menge sinnlosen Referaten nicht wirklich.
Ich habe mich mal in so einem Schwachsinns-Einführungs-Kurs mit einem Dozenten angelegt, weil der mir für meine PowerPoint-Präsentation eine schlechte Bewertung mit der Begründung "zu wenig Animation und Effekte" gegeben hat. Ich habe eine halbe Stunde lang versucht, dem Mann zu erklären, dass dem Thema "die Geschichte Afghanistans" eine seriöse und sachliche Gestaltung angemessener ist als Effekte um der Effekte willen. Das hat der Mann nicht verstanden, der wollte tatsächlich, dass ich so Infos wie "Die Kriege des letzten Jahrhunderts forderten in Afghanistan X Tausend Tote" mit lustigen Effekten dekoriere.
Also wenn das Methodik sein soll (und das sollte es bei uns sein), dann kann ich auch gut ohne Leben.
Ok, nicht alles an der Methodik ist schlecht und ich erkenne an, dass es nicht schadet, wenn man grundsätzlich einen gewissen Überblick über vorhandene Technologien hat, damit man überhaupt weiß, zwischen welchen Optionen man sich am Ende entscheiden kann, aber wen ich mir überlege, dass im Java-Programmierprojekt (mandatory) die Verwendung von JUnit vorgeschrieben ist, dann finde ich das schon wieder nicht gut, denn es sollte doch jedem Entwickler selbst überlassen bleiben, zu entscheiden, wie er seinen Projekte testet und debugged. Ich halte den Hype, der teilweise um TDD gemacht wird, auch für extrem übertrieben, aber das wäre schon wieder eine andere Geschichte...

Ok, abschließend kann ich ja das ganze noch mal kurz von der anderen Seite aufziehen: Ich halte es grundsätzlich für unsinnig, Studenten in irgendwelchen grundsätzlich fachfremden Bereichen Grundkurse aufzudrücken, denn die Zeit fehlt ihnen dann an anderer Stelle gerne mal für ihr eigentliches Kernfach.
Außerdem können Studenten eh' nicht auf alle Situationen ihres zukünftigen Berufslebens vorbereitet werden, denn dann müssten wir auch noch "Menschenführung", "Rhetorik" und wahrscheinlich noch viele andere Aspekte in den Studienplan aufnehmen.

So, jetzt bis Du wieder dran und dann kann ich ja mal die Geschichte eines speziellen Dipl.-Ings. erzählen, der "euren" Ruf bei mir endgültig ruiniert hat ;)

So long,
Henning

P.S.:
Ich bin auch nicht zuletzt etwa einen Monat pro Jahr in der Bundeswehr aktiv, weil ich dadurch einen sehr guten Kontrast zum akademischen Umfeld habe. Bisher funktioniert das ganz gut.
P.P.S.:
Abgesehen vom letzten Jahr, denn da hatte ich am ersten Tag im Dienst folgendes Gespräch:
Hauptmann M.: Herr L., Sie studieren doch Informatik?"
Ich: "Das ist richtig..."
Hptm M.: "Sehr gut, wir brauchen eine Datenbank für die Auftragsverteilung in unserer Abteilung."
Ich: "Ich wollte ja eigentlich etwas Abwechslung, aber Sie sind hier der Chef. Womit kann ich arbeiten?"
Hptm M.: "Wir haben leider nur Microsoft Access."

Also saß ich da 5 Wochen in einem Büro und hab' eine Datenbank entwickelt... :rolleyes:
P.P.P.S.:
Als ich dieses Jahr mal wieder in der entsprechende Abteilung vorbeigeschaut habe, habe ich mit Erstaunen festgestellt, dass das Teil immer noch im Einsatz ist, dabei halte ich das Ding nicht gerade für eines meiner "Meisterwerke" :D

Waxolunist
10-10-2006, 10:12
Morgen,

Zuallererst möchte ich noch sagen, früher, also das ist gerade mal etwa 5 Jahre her, gab es noch nicht einmal den Titel Master, ausser in gewissen Ausnahmefällen auf Privatunis. Dipl.-Ing. war nichts anderes als der akademische Grad, den man erhielt nach einem technischen Studium, genauso wie man den Titel Dipl.-Kfm. (Diplom Kaufmann) erhielt für ein wirtschaftliches Studium, inzwischen Magister, seit neuestem auch Master. Da kann man nicht sagen, also was die Dipl.-Ing. studiert haben ist mir zu allgemein. Hättest du vor 5 Jahren in Ö das gleiche wie jetzt studiert, hättest du am Ende ebenfalls diesen akademischen Grad erhalten. Das ist für mich nur eine Bezeichnung.

Fachwissen über Elektronik brauchts natürlich nicht ständig. Aber bevor ich an meinem jetzigen Projekt gearbeitet habe, war ich sehr im embedded-Bereich tätig. Da war es mir eine absolute Hilfe, dass ich mitreden konnte. Selbst habe ich nicht entwickelt an der Elektronik, aber ich konnte bei den Erhebungen der Anforderungen mitreden und mitgestalten. Ist natürlich nicht immer von nöten und in einem reinen Softwareprojekt schon gar nicht notwendig. Zudem waren das bei mir verpflichtende Fächer, ich hab nämlich nicht Informatik studiert.

Ich werde mich nicht als Anwalt gerieren, nur weil ich 2 Semester lang einen Kurs zu Recht besucht habe. Aber mein Verständnis ist gewachsen, und ich finde Lizenztexte jetzt nicht gerade leicht verständliche Texte. Genauso geht es mir bei Wirtschaft. Ich hatte davor überhaupt nichts damit am Hut, aber ich konnte eine gewisse Sensibilität dafür entwickeln.

In einer Personalabteilung oder in der Buchhaltung werde ich deswegen noch lange nicht sitzen, aber ich kann ein Budget erstellen, welches ohnehin danach zur Überprüfung an einen Profi geht. Aber es geht in Grundzügen.

Genauso machst du es mit Geschichte und Soziologie. Du versuchst in Grundzügen mitzureden und dir Wissen auch in anderen Bereichen aufzubauen. Mehr ist es nicht. Denn mit einem Profi wirst auch du nicht in diesen Bereichen mithalten können.

Zur Mehtodik kann ich dir nur zustimmen. Aber viele Firmen (je größer desto schlimmer) verlangen es. Vor allem wenn ich da an die ISO 9001-Zertifizierung denke. Ich denke mir auch oftmals, Humbug. Aber von der marktstrategischen Bedeutung kann dieses Zertifikat ja schon beinahe als unerlässlich angesehen werden.

Dass dein Prof, dir Effekte bei einer Präsentation abverlangt, kann ich jetzt, nachdem ich die Geschichte von deiner Position aus gehört habe, auch nicht verstehen. (Österreich - neutral, du weißt schon :) ).

Zu JUnit kann ich nur sagen, dass der Prof. zwar ein bestimmtes Tool verlangt hat, aber kennt man die Konzepte des einen Tools, kann man sich auch leichter in andere Tools einarbeiten, die ähnliche Gebiete wie etwa Lasttests abdecken. Zudem haben Professoren eben eine Vorliebe und tun sich damit bei der späteren Kontrolle leichter. Ich denke das muss man akzeptieren. Genauso wie später Kunden z.B. den Einsatz von Oracle verlangen, auch wenns genauso in MySQL gehen würde, da muss man sich beugen.

So jetzt bin ich auf die Geschichte eines Studierten gespannt, der den Ruf von Dipl-Ings ruiniert hat.

\greetz

waxo

hpf
10-10-2006, 14:50
@Waxolunist
ich hätte da nochmal eine kurze frage an dich.
und zwar habe ich nun versucht, statt einem "object[.*]" block zwei durch semikolon getrennt hintereinander zu schreiben (in der hoffnung, wenn ich den regex anpasse die beiden objekt blöcke als 2 matches/groups zu bekommen), das klappt aber leider net. nun habe ich mir überlegt, ihn zu splitten und jedes split resultat mit nem anderen regex zu prüfen (finde ich persönlich net so elegant, fände es schöner das alles mit einer regex prüfun zu schaffen), oder gibt es da noch nen trick, den ich net gefunden habe ?

mfg
hpf

Waxolunist
10-10-2006, 15:37
Ich kann mir leider im Moment nicht sehr viel unter deiner Beschreibung vorstellen. Könntest du bitte ein Beispiel bringen und genau sagen, welche Teile du gerne separiert hättest?

hpf
10-10-2006, 18:47
also im prinzip, möchte ich zum beispiel statt:
hpf-net://req="run";object[objname="obj1",obj="{serialisiertes Objekt}"]

das ganze mit mehreren objects machen:
hpf-net://req="Foo.add(Object a, Object b)";object[objname="a",obj="{serialisiertesObjekt1}"];object[objname="b",obj="{serialisiertesObjekt2}"]

Edit: Die separierung sollte so sein wie vorher, also subprotokoll, request type und die parameter objeke

mfg
hpf

Liberty
10-10-2006, 19:29
Moin,

sorry, wenn ich Deine Frage nich so direkt beantworte, aber wie hast Du Deine Protokollstrings eigentlich aufgebaut?
Ich glaube nämlich im Moment, dass Deine Strings ziemlich - hm mir fällt gerade kein besseres Wort ein - "schlampig" aufgebaut sind und evtl. würde es Deinem Protokoll gut tun, wenn Du die Stringyntax noch etwas mehr von der eigentlichen Java-Syntax abheben und abstrahieren würdest.
Im Moment schachtelst Du und da wäre es evtl. sinnvoll auf, XML asuzuweichen.
Schau Dir zum Beispiel an, dass Du auf der höchsten Ebene die Elementen mit ";" trennst, aber innerhalb der []-Blöcke dann die einzelnen Elemente durch "," voneinnander abgrenzt.

Ich weiß jetzt nicht, wie komplex derartige Strings bei Dir werden können und ob das Protokoll sich entwickeln soll, d.h. die Syntax evtl. später noch erweitert wird, aber rein vom Gefühl her würde ich Dir raten da vielleicht nochmal über die Grundstruktur Deiner Strings nachzudenken.

So long,
Liberty

P.S. @Waxolunist:
Ich habe gerade erfahren, dass sich morgen der nächste Dipl.-Ing. an dem Problem, bei dem der erste schon wortreich nichtssagend gescheitert ist, versuchen darf, ich warte also erstmal ab, wie der sich anstellt ;)

hpf
10-10-2006, 19:54
also, das ganze ist so konzipiert:
aufbau:
Protokoll-Subprotokoll://Service="name";Request="name";parameterObjekte;
(service ist noch net in der iplementierung enthalten, aber geplant)
beispiel:
hpf-net://srv="testSrv";req="testReq";object[objname="name",obj"{SerialisiertesObjekt}"];object[objname="name",obj"{SerialisiertesObjekt}"]


Das ganze ist gedacht als grundlage für eine schmale
SLP implementierung. (momentan geht es weniger ums protocol als um die grundlagenforschung um einen passablen ansatz für den parser zu finden).

Ich hatte auch schon über XML nachgedacht, die ersten versuche mit nem SaxParser fand ich nicht sehr zufriedenstellend(performance), die regexp's sind schneller(um ca. 10% laut eclipse tptp profiler).

Die Protokollstruktur selbst wird sich noch massiv wandeln,
nur ohne testprotokoll kein parser versuch ^^

mfg
hpf

falke2203
11-10-2006, 07:45
Was dir das ganze etwas leichter machen würde, wäre, wenn du mal eine formale Syntax-Grammatik für deine Requests definierst, etwa in der Art


Request ::= Protokoll '-' Subprotokoll '://' Service ';' Request ';' ObjectList
Protokoll ::= 'hpf'
...
ObjectList ::= 'object[' Objects ']'
Objects ::= Object ';' Objects
Objects ::= Object
Object ::= ObjectName ',' ObjectValue
...

Damit ist es dann deutlich leichter, so einen Request zu analysieren; im günstigsten Fall kannst du (je nach verwendeter Technik) die Grammatik direkt als Eingabe für einen (Java-) Parser verwenden.

Ich würde dir auch dringend davon abraten, in dem Request-String mit serialisierten Objekten zu arbeiten. Besser wäre in meinen Augen tatsächlich eine text-basierte Struktur.

PS: Und das sage ich als in zwei Wochen fertiger Dipl.-Inf. :)
PPS: Um mal an die "Nebendiskussion" in diesem Thread anzuknüpfen: Ich habe schon mit Dr. Dipl. Inf.'s gearbeitet, wo ich mich gefragt habe, wie viel Geld die wohl für ihre Titel bezahlt haben. Auf der anderen Seite waren zwei der fähigsten Informatiker, mit denen ich bisher arbeiten durfte, Dipl. Physiker respektive Dipl. Mathematiker...

hpf
11-10-2006, 08:18
danke für den tip, ich muss mal schauen wie ich nun weiter verfahre.
das ganze soll wie gesagt am ende eine schmale slp implementierung als subprotokoll bekommen, da wären textorientierte requests praktischer, aber es soll ein weiteres subprotokoll geben, welches rpc zugriffe handeln soll, dieses sollte serialisierte objekte als parameter(für funktionsaufrufe) und rückgabewerte mit übertragen können.
Um mir dann einen zusätzliche verbindung (ObjectStream) zu sparen, wollte ich die objekte gleich im request string mit unterbringen.
vielleicht ist auch die bezeichnung request unglücklich gewählt, im rpc subprotokoll wird es auch eher "method" oder "action" heißen ^^

mfg
hpf

Waxolunist
11-10-2006, 08:52
@hpf

Also so eine Liste ist nicht möglich mit regex.

Auch mit 2 Regulären Ausdrücken ist es schwer dem hier beizukommen.

Man kann es ja versuchen, aber ich würde hier tatsächlich eine XML-Lösung anstreben, und die 10%-Performanceverlust können sich ja nur im Millisekundenbereich abspielen.

hpf
11-10-2006, 09:41
jo, der performance verlust spielt sich wirklich nur im millisekundenbereich ab, ich werde nochmal nen bisschen experimentieren, mal schauen vieleicht kriege ich ja noch nen bischen leistung aus dem SaxParser heruaus gekitzelt.

mfg
hpf

Liberty
18-10-2006, 21:01
Moin,

ich drück mich gerade vor ein wenig Kleinkram, den ich eigentlich zu morgen erledigen sollte, also reiche ich jetzt mal mein Schlüsselerlebnis mit dem Negativbeispiel eines Dipl.-Ings. nach...

Zur Vorgeschichte: Ich hab' diesen Sommer das alte Netzwerk in der Kanzlei meiner Eltern (4 Rechner ohne Server, verbunden über Standard-Bordmittel von Windows) von Windows 98 auf WinXP migriert und dabei ein wenig getrickst um einem der Rechner Server-Aufgaben unterzujubeln, Hauptabweichung vom Standard war, dass ich dem Netzwerk servergespeicherte Profile ohne Server verpasst habe. Ich gebe zu, ich hab' da auch insgesamt 3 Wochen dran gesessen, bis ich mit dem Ergebnis zufrieden war. War aber kein Problem, ich konnte mir die Zeit nehmen, weil meine Eltern und das Vorzimmer weiterhin parallel mit dem alten System weiterarbeiten konnten. Soweit so normal, Office 2003 Prof. und den NAV überall installiert, passt.
Eine Woche zieht ins Land, ich mach noch ein wenig harmloses Feintuning, lasse die Kanzlei aber schon mit dem neuen System arbeiten, alles bestens, bis plötzlich die Meldung "Sie sind Opfer einer Softwarefälschung geworden" aus dem Nichts auftaucht und einfach nur nervt. Außerdem fing parallel der NAV an, herumzuzicken. Ich mich eine Woche mit dem Problem herumgeärgert, einige Möglichkeiten ausgeschlossen, finde aber keine Lösung. Leider musste ich dann auch zurück nach Helsinki, also habe ich meinen Eltern klargemacht, dass wir einen externen Experten brauchen. Das habe ich denen schon seit längerem immer wieder vorgebetet, dass die sich schon im "Frieden" jemanden suchen sollen, der die Betreuung des Netzwerks übernehmen kann, da ich auf Dauer weder Zeit noch... (ups, ich schweife ab :rolleyes:)

Das war der Punkt, an dem Dipl.-Ing. Fuchs (Name geändert) auf den Plan tritt. Der war uns von Bekannten meiner Eltern empfohlen worden, also haben wir den auf das Problem losgelassen. Leider haben wir vergessen, uns vorher zu erkundigen, worin Herr Fuchs nun genau Dipl.-Ing. ist, denn der Mann hat weder verstanden, wie ich das Netzwerk strukturiert habe (zur Erinnerung: Ich habe keine Werkzeuge von Drittanbietern verwendet, sondern ausschließlich mit Freigaben und Gruppenrichtlinien gearbeitet) noch hat der Mann sich irgendwie sinnvoll zum Problem geäußert, stattdessen hat er plötzlich angefangen, ohne vorherige Absprache mit den Anwendern an den Workstations Einstellungen zu verändern, die ich vorher mühsamst und perfektionistisch mit den betroffenen Anwendern abgestimmt habe und darüber hinaus hat er auch noch irgendein mir unbekanntes Tool namens Netzpost installiert, dessen Nutzen niemandem in der Kanzlei eingängig war und wenn ich persönlich eins nicht abkann, dann ist es, wenn irgendwelche Halb-Experten anfangen, sauber neuaufgesetzte Systeme mit irgendwelchem Kleinscheiß vollzumüllen.
Dazu sollte ich an dieser Stelle erwähnen, dass ich in zwei Telefongesprächen mit Herrn Fuchs ausführlich versucht habe, ihm alle Infos, die ich bereits über das Problem selbst ermittelt hatte, weiterzugeben und ihm darüber hinaus zu erklären, wie ich das Netzwerk aufgebaut habe und wenn er's danach immer noch nicht kapiert, dann sind selbst 40€/Std noch zu viel. Jedenfalls wurde Herr Fuchs dann nach einem halben Tag ohne Ergebnis von meiner Mutter in der ihr in solchen Situationen eigenen Art mehr oder weniger rausgeworfen. Er wollte sich daraufhin mit einer Analyse und einem "Konzept" wieder an uns wenden und das hat er dann auch getan und dann ist uns endgültig der Kragen geplatzt, denn da stand unter anderem als Problemlösung "Weiterer Kontakt mit Herrn L." drin (Herr L. bin ich selbst). Also wenn ich ihm sagen soll, wie er das Problem lösen kann, dann könnte ich da auch einen fachkundigen Freund von mir, der in der Gegen wohnt hinschicken und das übers Telefon machen, aber wenn ich als bisheriger Admin ausdrücklich einen weiteren Experten anfordere und ihm sage "Sie sind hier, weil ich nicht weiterkomme", dann ist die von Herrn Fuchs vorgeschlagene "Problemlösung" doch echt eine Frechheit.
Darüber hinaus hatte Herr Fuchs offensichtlich ein gewisses Problem mit Respekt, denn nur weil ich auch aus dem gleichen Fachbereich (oder eben nicht :p) komme, heißt dass noch lange nicht, dass er mich kumpelhaft duzen darf. Ich mag in solchen Dingen etwas altmodisch sein, aber ich lege einen gewissen Wert auf äußere Form. Und in diesem Fall hätte Herrn Fuchs durchaus klar werden können, dass nicht zuletzt ich darüber entscheide, ob und was er im Büro meiner Eltern veranstalten darf und dass ich seine Arbeit in gewisser Weise "bewerte".
Aber das wäre mir sogar egal gewesen, wenn er nebenbei noch das Problem gelöst hätte, aber stattdessen hat er sich mit "Problemen" beschäftigt wie "Sie brauchen unbedingt Mozilla" oder "NAV ist wie wir alle wissen großer Mist und langsam", dabei hat der Mann von Anfang an die Ansage bekommen, dass er sich erst über andere Themen Gedanken machen darf, wenn er mir zumindest erklärt hat, wo das Problem liegt und dann kann ich immer noch entscheiden, ob er anderen Kleinkram gleich in eniem Aufwasch miterledigen darf/soll, bzw. meine Eltern dahingehend beraten.
Aber das waren alles so Dinge, die Herr Fuchs echt nicht verstanden hat, also durfte er seine bis dahin getätigten Bemühungen kurzfristig abrechnen und damit war Herr Fuchs für uns erledigt.

Mittlerweile haben wir das Problem an eine etwas größere Firma abgegeben und der Mitarbeiter, den die uns geschickt haben, ist voll in Ordnung. Der hat zwar das Problem bis jetzt auch nicht lösen können, aber er hat zumindest alle meine Aktionen verstanden und die Nachfragen, die er an mich hatte, waren absolut sinnvoll und verständlich und nachdem er sichergestellt hat, dass das Problem außer der Tatsache, dass es ein wenig beim Arbeiten stört, keinen Schaden anrichtet und nicht auf Viren/Würmer zurückzuführen ist, haben wir uns erstmal auf Weihnachten vertagt und dann werde ich das Netzwerk wohl endgültig übergeben und dann sehen wir weiter.
Jedenfalls war das von der Professionalität her ein Unterschied wie Tag und Nacht, allerdings befürchte ich, dass der zweite, fähigere Mensch nicht mal Dipl.-Ing. ist, also bleibt deren Ruf bei mir leider zerstört...

So long,
Liberty

P.S.:
Ich glaube im Nachhinein, dass Herr Fuchs auch einfach nicht damit umgehen konnte, dass es da jemanden gibt, der ihm mit entsprechendem Fachwissen auf die Finger schaut, so dass er diesen Kunden nicht einfach sein Schema F vorsetzen kann, denn ich habe ganz allgemein den starken Verdacht, dass sich viele Firmen in der Branche schlicht und ergreifend ihre Kunden weitestgehend "zurechterziehen", so dass die Systeme möglichst nah an einem einheitlichen Schema bleiben.

falke2203
20-10-2006, 08:04
Das ist ein durchaus verbreitetes Problem - Leute, die wissen wie man einen Computer einschaltet und von CD booten können werden automatisch (von denen, die das nicht können) in den Stand eines ausgewiesenen Experten befördert. Ein kleines Beispiel dazu: ein Freund von mir macht eine Ausbildung zum Fachinformatiker (Systemintegration) bei einer karitativen Einrichtung - und seine beiden "Chefs" sind Ex-Maurer und Ex-Gärtner. Warum? Weil sie wissen wie man einen Rechner einschaltet und von CD bootet.
Dem gemeinen Dipl-Ing sollte man zumindest ein gewisses technisches Verständnis unterstellen, das unter Umständen hilfreich sein kann (aber wie oben zu lesen ist nicht unbedint muss).
Whatever, ich denke das liegt insgesamt daran, dass es noch nicht lange genug trendy ist, dass jeder alles mit dem Rechner macht, ergo auch noch gut ausgebildetes und erfahrenes Personal fehlt. Und da zählt dann halt wieder unter den Blinden ist der Einäugige König. Und frag mal deine Eltern, was wohl aus der Sache mit Herrn Fuchs geworden wäre, wärest du nicht da oder in der Lage gewesen, seine Vorgehensweise zu hinterfragen. Haben deine Eltern entsprechende Kompetenzen, dass sie diese Probleme ähnlich schnell erkannt hätten?
Insgesamt bin ich dennoch der Meinung, dass eine Beweisführung über die allgemeine Inkompetenz des gemeinen Dipl-Ings nicht per vollständiger Induktion erfolgen kann :)

Liberty
20-10-2006, 18:33
Moin,

meine Eltern können zwar die Fachkenntnis nicht unbedingt mit meiner eigenen Treffsicherheit beurteilen, aber meine Mutter, die sich das Elend live angeschaut hat, meinte, dass bei Herrn Fuchs auch die ganze 'allgemeine' Professionalität nicht vorhanden war und dass können Kunden ja durchaus erkennen.
Außerdem hat Herr Fuchs sich ja schon auf so sinnlosem Gebiet wie "Ich habe die TFTs auf die optimale Auflösung eingestellt" "Warum?" "Ja ist halt besser..." Was Herr Fuchs nicht wusste (aber durchaus durch gezieltes Fragen hätte herausfinden können), ist, dass ich jedem Anwender in der Kanzlei erklärt und gezeigt habe, warum die optimale Auflösung (also Hardwareauflöung = Softwareauflösung) grundsätzlich die beste weil schärfste und klarste ist und sich die Anwender dann trotzdem dafür entscheiden, eine andere Auflösung (mit Interpolation) zu verwenden, dann ist das eine Entscheidung, die ich als Admin respektiere, frei nach dem Motto, die Anwender sollen nach ihren eigenen Bedürfnissen vernünftig arbeiten können und eben nicht nach Schema F...
Ich breite diesen eigentlich lächerlich unwichtigen Punkt hier so aus, weil das der Punkt war, an dem meine Mutter sich auch ohne meine Mitwirkung schon gefragt hatte, ob der Kerl jetzt so wirklich das Gelbe vom Ei ist...

So long,

Liberty

P.S.:
Je länger ich drüber nachdenke, desto mehr glaube ich, dass dieses Phänomen wohl weniger mit dem Titel "Dipl.-Ing." als mehr mit der IT-Branche an sich zu tun hat.
P.P.S.:
Und wenn ich mir überlege, was damals Mitschüler von mir in der Oberstufe an astronomischen Preisen für lächerlich stupides Webdesign genommen haben, da ist mir schon fast schlecht geworden. Bei den Preisen hatte ich schon fast ethische Bedenken, allerdings hält mich die Gewissheit aufrecht, dass aus den betreffenden Leuten auf Grund echter Fachkenntnis auf Dauer eh' nix wird und ganz am Ende meistens doch Qualität über Show und Schnackerei siegt... Hoffentlich...