Zum Inhalt springen

Moeki

Mitglieder
  • Gesamte Inhalte

    560
  • Benutzer seit

  • Letzter Besuch

Alle Inhalte von Moeki

  1. Easy Recovery Pro. Super Sache das Programm. Ich fahre jetzt gerade ein Backup der wichtigsten Daten über Netzwerk auf einen FTP Server. Dankeschön.
  2. Moin, ich brauche dringend eure Hilfe. Ich habe gestern versucht, von Windows XP auf Vista 64 bit zu wechseln und daher alle wichtige Daten auf F: gespeichert. Nach der Neuinstallation habe ich Laufwerksbuchstaben anpassen müssen, was zur Folge hatte, dass meine F: Partition verschwunden ist und die Partitionstabelleneinträge fehlerhaft sind. Mit "testdisk" sehe ich die Partition, kann sie aber nicht wieder herstellen. Partition Magic startet erst gar nicht (Fehlermeldung "Partition Fehlerhaft"). Mit dem Windows Datenträger Snap In wird mir der entsprechende Speicherbereich als "frei" gekennzeichnet. Habe mit ptedit dann mal NTFS draus gemacht und mit testdisk nach Empfehlung einen Wert von 240 auf 250 geändert, nun wird mit das ganze als RAW gekennzeichnet, bringt also nix. Vorher: c:\ 30 GB NTFS d:\ 50 GB NTFS e:\ 35 GB NTFS f:\ 120 GB (vorher NTFS, jetzt keine Ahnung was) Rest 15 GB, zur Zeit ungenutzte Linux Partition Jetzt: c:\ 30 GB NTFS d:\ 50 GB NTFS e:\ 35 GB NTFS irgendwas 107 GB + 40 GB bzw. 120 GB + 15 GB (unterschiedlich je nach Programm) Welche Tools könnt ihr mir empfehlen. Ich brauche unbedingt die Daten (Studium, E-Mail, Banking, Eigene Dateien), die Struktur ist mir egal. An der Partition und den entsprechenden Daten an sich habe ich nichts geändert, die 1 und 0 sind also noch da. Danke, Moeki.
  3. 1. Während meines Studiums komme ich mit Bafög, Kindergeld und geringfügiger Beschäftigung auf 1000 € im Monat. Mehr als während meiner Ausbildung. Ohne Bafög, mit gutem Nebenjob und Unterstützung der Eltern kannst du auf das Gleiche oder mehr kommen. 1 Tag Arbeit in der Woche ist immer drin. 2. Wenn ich mir deine Noten angucke, bist du mit dem Studium wirklich besser dran. In der Ausbildung wäre wichtig, viel viel du dir darüber hinaus aneignest. Im Studium, wie sehr du dich in den angeboten Stoff einarbeitest, es vertiefst und anwendest. 3. Die Berufschancen mit Studium sind auf absehbare Zeit wesentlich besser. Das Gehalt ebenso. Du kriegst ein breites Basiswissen und kannst dich dazu noch spezialisieren. 4. Das Studentenleben hat seine Vorteile. Du kannst in ganz Deutschland studieren, zwischenzeitlich die Uni wechseln oder sogar ein Auslandssemester machen, was bei Arbeitgebern gut ankommt.
  4. Mich würde interessieren wieso du was anderes brauchst als das Sozialticket? Der öffentliche Nahverkehr ist in Berlin und Randbezirken wirklich Spitze. Ich wüsste nicht, wieso man unbedingt mit Auto fahren muss. Gerade wenn es so finanziell schon eng ist.
  5. Ich betreue das Heimnetzwerk meiner Schwiegereltern samt 5 Clients und Peripherie (viel Remote) ... für einen Tritt in den ***** und ohne Anerkennung. Wenn ich denen eine angemessene Rechnung präsentieren würde, würden sie meine Arbeit wohl mehr wertschätzen. Dafür haben sie uns aber schon oft beim Umzug geholfen. Ansonsten telefonischer Support für Freunde und Bekannte bei kleineren Anliegen. Da man dafür kein Geld nehmen sollte bzw. die "Kunden" es zum Teil als selbstverständlich ansehen und in der Regel wenig achten, versuche nicht nur ich, sondern auch ein Großteil meiner Kollegen und Bekannten, privaten Tätigkeiten auf den engsten Verwandtenkreis zu begrenzen.
  6. Mit den Noten würde ich direkt studieren oder nach der verkürzten Ausbildung zum FiSi (lass' dir nix anderes einreden) ein Studium beginnen. Alles andere ist unter deinem Niveau. Oder aber direkt zum Bund und da studieren.
  7. Hat sich erledigt :-) Nun habe ich mein Programme, dass bestimmte Prozeduren aufruft, Tabellen und Typen erstellt und eine Ausgabe in eine Tabelle schreibt. Alles das möchte ich nun anderen in Form einer Prozedur oder eines Packages zur Verfügung stellen. Geht das hier überhaupt? Welches wäre die bessere Strategie? Gruß, Moeki. SET SERVEROUTPUT ON; EXEC DBMS_OUTPUT.ENABLE(200000); DROP TABLE besucht_post PURGE; DROP TABLE result PURGE; DROP TYPE con_type FORCE; CREATE OR REPLACE TYPE con_type IS TABLE OF number(12); / CREATE TABLE result (preord number(12), inord number(12), postord number(12), levelord number(12)); CREATE TABLE besucht_post(lfd number(2), links number(2), rechts number(2)); ------------------------------------- DECLARE con_pre con_type := con_type(); con_in con_type := con_type(); con_post con_type := con_type(); con_level con_type := con_type(); TYPE mein_typ IS RECORD(lfd number(12)); TYPE my_queue IS TABLE OF mein_typ INDEX BY BINARY_INTEGER; queue my_queue; TYPE my_type IS TABLE OF number(12) INDEX BY BINARY_INTEGER; stack my_type; -- Get Funktion definiert auf Queue vom Typ my_type FUNCTION get RETURN mein_typ IS merk mein_typ; BEGIN merk := queue(queue.first); queue.delete(queue.first); return merk; END; -- Put Procedur definiert auf Queue vom Typ my_type PROCEDURE put(lfd IN number) is BEGIN IF (queue.exists(queue.last)) THEN queue(queue.last+1).lfd := lfd; ELSE queue(1).lfd := lfd; END IF; END; --Push Procedur definiert auf Stack vom Typ my_type PROCEDURE push(in_stack IN number) is BEGIN IF (stack.exists(stack.last)) THEN stack(stack.last+1) := in_stack; ELSE stack(1) := in_stack; END IF; END; --Pop Funktion definiert auf Stack vom Typ my_type FUNCTION pop RETURN number IS merk number(12); BEGIN merk := stack(stack.last); stack.delete(stack.last); return merk; END; --Topstack Funktion definiert auf Stack vom Typ my_type FUNCTION topstack RETURN number IS BEGIN return stack(stack.last); END; --IsEmpty Funktion definiert auf Stack vom Typ my_type FUNCTION is_empty RETURN boolean IS empty boolean; BEGIN IF stack.exists(stack.last) THEN empty:=FALSE; ELSE empty:=TRUE; END IF; return empty; END; --Preorder Traversierung PROCEDURE preorder (akt IN number) IS li number(12); re number(12); cur number(12); CURSOR c1(aktuell IN NUMBER) IS SELECT links, rechts FROM verbindung WHERE (aktuell = lfd); BEGIN dbms_output.put_line('PREORDER'); IF (akt IS NOT NULL) THEN push(akt); END IF; WHILE NOT is_empty LOOP cur:=pop(); dbms_output.put_line(cur); OPEN c1(cur); FETCH c1 INTO li,re; CLOSE c1; IF (con_pre.exists(con_pre.last)) THEN BEGIN con_pre.extend; con_pre(con_pre.last) := cur; END; ELSE BEGIN con_pre.extend; con_pre(1) := cur; END; END IF; IF (re IS NOT NULL) THEN push(re); END IF; IF (li IS NOT NULL) THEN push(li); END IF; END LOOP; END; --Inorder Traversierung PROCEDURE inorder (akt IN number) IS done boolean:=false; li number(12); re number(12); cur number(12); CURSOR c1(aktuell IN NUMBER) IS SELECT links, rechts FROM verbindung WHERE (aktuell = lfd); BEGIN cur:=akt; IF (cur IS NOT NULL) THEN push(cur); END IF; dbms_output.put_line('INORDER'); WHILE (cur IS NOT NULL) AND NOT is_empty LOOP LOOP OPEN c1(cur); FETCH c1 INTO li,re; CLOSE c1; push(cur); cur:=li; EXIT WHEN (cur IS NULL); END LOOP; cur:=pop(); dbms_output.put_line(cur); IF (con_in.exists(con_in.last)) THEN BEGIN con_in.extend; con_in(con_in.last) := cur; END; ELSE BEGIN con_in.extend; con_in(1) := cur; END; END IF; IF (topstack() IS NOT NULL) AND (done=false) THEN BEGIN cur:=pop(); IF (cur=akt) THEN done:=true; END IF; dbms_output.put_line(cur); con_in.extend; con_in(con_in.last) := cur; END; END IF; OPEN c1(cur); FETCH c1 INTO li,re; CLOSE c1; cur:=re; END LOOP; END; --Postorder Traversierung PROCEDURE postorder (akt IN number) IS li number(12); re number(12); cur number(12); lt number(12); rt number(12); temp number(12); done boolean:=false; CURSOR c1(aktuell IN NUMBER) IS SELECT links, rechts FROM verbindung WHERE (aktuell = lfd); CURSOR c2(aktuell IN NUMBER) IS SELECT links, rechts FROM besucht_post WHERE (aktuell= lfd); BEGIN dbms_output.put_line('Postorder'); cur:=akt; IF (cur IS NOT NULL) THEN BEGIN OPEN c1(cur); FETCH c1 INTO li,re; CLOSE c1; INSERT INTO besucht_post VALUES (cur,li,re); push(cur); END; END IF; WHILE (cur IS NOT NULL) AND NOT is_empty AND NOT (done=true) LOOP LOOP OPEN c1(cur); FETCH c1 INTO li,re; CLOSE c1; OPEN c2(cur); FETCH c2 INTO lt,rt; IF (lt != li) OR (rt != re) OR (c2%NOTFOUND) THEN BEGIN push(cur); INSERT INTO besucht_post VALUES (cur,li,re); END; END IF; CLOSE c2; cur:=li; IF (li is NULL) AND (re IS NOT NULL) THEN cur:=re; END IF; EXIT WHEN (cur IS NULL); END LOOP; cur:=pop(); dbms_output.put_line(cur); IF (con_post.exists(con_post.last)) THEN BEGIN con_post.extend; con_post(con_post.last) := cur; END; ELSE BEGIN con_post.extend; con_post(1) := cur; END; END IF; IF (cur=akt) THEN done:=true; END IF; cur:=topstack(); OPEN c1(cur); FETCH c1 INTO li,re; CLOSE c1; cur:=re; END LOOP; END; --Levelorder Traversierung PROCEDURE levelorder(akt IN number) IS k1 mein_typ; li number(12); re number(12); cur number(12); CURSOR c1(aktuell IN number) IS SELECT links, rechts FROM verbindung WHERE (aktuell = lfd); BEGIN put(akt); con_level.extend; con_level(1) := akt; dbms_output.put_line('Levelorder'); WHILE (queue.exists(queue.first)) LOOP k1 := get(); dbms_output.put_line(k1.lfd); OPEN c1(k1.lfd); FETCH c1 INTO li, re; CLOSE c1; IF (li IS NOT NULL) THEN BEGIN con_level.extend; con_level(con_level.last) := li; put(li); END; END IF; IF (re IS NOT NULL) THEN BEGIN con_level.extend; con_level(con_level.last) := re; put(re); END; END IF; END LOOP; END; -- main BEGIN preorder(13); inorder(13); postorder(13); levelorder(13); FORALL i IN indices OF con_in INSERT INTO RESULT VALUES(con_pre(I),con_in(I),con_post(I),con_level(I)); END; / GRANT SELECT ON result TO PUBLIC; select * from result;
  8. Hallo. Ich möchte für einen bestimmten User ein Programm einmalig starten. Dazu möchte ich unter Autostart ein Skript ablegen, welches folgendesmaßen funktionieren soll: Ist der angemeldete User "%Computername%L" und die Variable LAccount ist mit 0 belegt, dann: Führe ein bestimmtes Programm aus. Bsp.: C:\Programme\XYZ\xyz.exe Setze die Variable LAccount auf 1. (ggf. lösche das Skript aus dem Autostart) sonst: Ende. Per Batch kriege ich das nicht hin und andere Sprachen kann ich net :-). Wie lässt sich mein Anliegen also am Besten realisieren? Gruß, Moeki.
  9. Moin Moin. Im Rahmen eines Aufgabe an der Uni, stoße ich langsam aber sicher an meine Grenzen. Die Aufgabe ist, einen in einer Tabelle gespeicherten binbären Baum in PREORDER, INORDER, POSTORDER und LEVELORDER Reihenfolge auszugeben und die Werte in eine Tabelle zu speichern. Die Proceduren sollen iterativ sein. Um, die Werte in eine Tabelle zu speichern brauche ich Container. Ich habe diverse Varianten probiert, scheitere jetzt aber an Compilierungsfehler bei der Typdeklaration. Wie kann ich die ausmerzen, "show" funktioniert leider nicht. Bzw. vielleicht findet ihr bei beim Überfliegen den Fehler. Ich weiß, dass die unterschiedlichen Typen für Stack und Queue nicht unbedingt ideal sind, kann das aber nicht anders im Moment. SET SERVEROUTPUT ON; EXEC DBMS_OUTPUT.ENABLE(200000); DROP TABLE RESULT PURGE; CREATE TABLE result (preord number(12), inord number(12), postord number(12), levelord number(12)); CREATE OR REPLACE TYPE con_type IS TABLE OF number(12); ------------------------------------- DECLARE con_pre con_type := con_type(); con_in con_type := con_type(); con_post con_type := con_type(); con_level con_type := con_type(); TYPE mein_typ IS RECORD(lfd number(12)); TYPE my_queue IS TABLE OF mein_typ INDEX BY BINARY_INTEGER; queue my_queue; TYPE my_type IS TABLE OF number(12) INDEX BY BINARY_INTEGER; stack my_type; -- Get Funktion definiert auf Queue vom Typ my_type FUNCTION get RETURN mein_typ IS merk mein_typ; BEGIN merk := queue(queue.first); queue.delete(queue.first); return merk; END; -- Put Procedur definiert auf Queue vom Typ my_type PROCEDURE put(lfd IN number) is BEGIN IF (queue.exists(queue.last)) THEN queue(queue.last+1).lfd := lfd; ELSE queue(1).lfd := lfd; END IF; END; --Push Procedur definiert auf Stack vom Typ my_type PROCEDURE push(in_stack IN number) is BEGIN IF (stack.exists(stack.last)) THEN stack(stack.last+1) := in_stack; ELSE stack(1) := in_stack; END IF; END; --Pop Funktion definiert auf Stack vom Typ my_type FUNCTION pop RETURN number IS merk number(12); BEGIN merk := stack(stack.last); stack.delete(stack.last); return merk; END; --Topstack Funktion definiert auf Stack vom Typ my_type FUNCTION topstack RETURN number IS BEGIN return stack(stack.last); END; --Preorder Traversierung PROCEDURE preorder (akt IN number) IS li number(12); re number(12); cur number(12); CURSOR c1(aktuell IN NUMBER) IS SELECT links, rechts FROM verbindung WHERE (aktuell = lfd); BEGIN push(akt); WHILE (topstack() IS NOT NULL) LOOP cur:=pop(); OPEN c1(cur); FETCH c1 INTO li,re; CLOSE c1; IF (cur IS NOT NULL) THEN BEGIN IF (con_pre.exists(con_pre.last)) THEN BEGIN con_pre.extend; con_pre(con_pre.last) := cur; END; ELSE BEGIN con_pre.extend; con_pre(1) := cur;END; END IF; END; END IF; push(re); push(li); END LOOP; END; --Inorder Traversierung PROCEDURE inorder (akt IN number) IS li number(12); re number(12); cur number(12); CURSOR c1(aktuell IN NUMBER) IS SELECT links, rechts FROM verbindung WHERE (aktuell = lfd); BEGIN OPEN c1(akt); FETCH c1 INTO li,re; CLOSE c1; push(li); WHILE (topstack() IS NOT NULL) LOOP cur:=pop(); OPEN c1(cur); FETCH c1 INTO li,re; CLOSE c1; IF (cur IS NOT NULL) THEN BEGIN IF (con_in.exists(con_in.last)) THEN BEGIN con_in.extend; con_in(con_in.last) := cur; END; ELSE BEGIN con_in.extend; con_in(1) := cur;END; END IF; END; END IF; push(re); push(cur); END LOOP; END; --Postorder Traversierung PROCEDURE postorder (akt IN number) IS li number(12); re number(12); cur number(12); CURSOR c1(aktuell IN NUMBER) IS SELECT links, rechts FROM verbindung WHERE (aktuell = lfd); BEGIN OPEN c1(akt); FETCH c1 INTO li,re; CLOSE c1; push(li); WHILE (topstack() IS NOT NULL) LOOP cur:=pop(); OPEN c1(cur); FETCH c1 INTO li,re; CLOSE c1; IF (cur IS NOT NULL) THEN BEGIN IF (con_post.exists(con_post.last)) THEN BEGIN con_post.extend; con_post(con_post.last) := cur; END; ELSE BEGIN con_post.extend; con_post(1) := cur;END; END IF; END; END IF; push(cur); push(re); END LOOP; END; --Levelorder Traversierung PROCEDURE levelorder(akt IN number) IS k1 mein_typ; li number(12); re number(12); cur number(12); CURSOR c1(akt IN number) IS SELECT links, rechts FROM verbindung WHERE (akt = lfd); BEGIN put(akt); con_level.extend; con_level(1) := akt; WHILE (queue.exists(queue.first)) LOOP k1 := get(); dbms_output.put_line(k1.lfd); OPEN c1(k1.lfd); FETCH c1 INTO li, re; CLOSE c1; IF (li IS NOT NULL) THEN BEGIN con_level.extend; con_level(con_level.last) := li; put(li); END; END IF; IF (re IS NOT NULL) THEN BEGIN con_level.extend; con_level(con_level.last) := re; put(re); END; END IF; END LOOP; END; -- main BEGIN inorder(13); preorder(13); postorder(13); levelorder(13); forall i in indices of con_pre insert into result values(con_pre(I),con_in(I),con_post(I),con_level(I)); END; / select * from result; Gruß, Moeki. Kopie von traversierung_3.sql.txt
  10. Sowas habe ich mir auch schon gedacht, aber dann müsste ich die Firmennamen ja irgendwie in eine numerische, vergleichbare Skala übertragen? Oder wie sollte man sonst "Lücken" erkennen? Für Buchstaben geht das sicher, aber nicht für Wörter? Oder ich addiere jeweils die ord(Substring, 1(2,3,4,5)) der Wörter und vergleiche mit dem nächsten? Dann weiß ich zwar, dass ne Lücke ist, aber keinen entsprechenden freien Namen. Bezüglich Linked/Indexed Trie: Das ist doch nicht mehr mit konstantem Speicherbedarf verbunden.
  11. Ich denke, dass das File bereits sortiert ist. Bzw. ich kann es ja darauf beschränken bzw. die Laufzeit für das Sortieren ausser Acht lassen. Mit dem Worst Case stimmt-
  12. Gegeben sei ein sequentielles File, in dem N≤10.000.000 Firmennamen mit je max. fünf Buchstaben gespeichert sind. Ich möchte einen Algrithmus entwerfen, der in linearer Zeit und mit konstantem Speicher einen nicht vorhandenen Firmennamen findet. Zunächst lasse ich beginnend von der kleinsten Kombinationsmöglichkeit einen Firmennamen erstellen. Dann öffne ich das File und mache solange get(f), bis (1) das Ende des Files erreicht ist bzw. (2) der Firmenname gefunden wurde. Bei (1) habe ich einen nicht genutzten Firmennamen gefunden. Bei (2) muss ich den nächstmöglichen Firmennamen erstellen und das File erneut durchsuchen. Konstant sollte das sein, weil am File nichts geändert wird. Aber doch nicht linear oder? Gruß, Moeki.
  13. Moin, ich suche, möglichst eine Freeware Lösung, um ohne extra Brennprogramme oder sonstige Tools, möglichst per OneClick, also very easy, Backups von Laufwerken oder Partitionen auf DVD('s) zu brennen, welche bootfähig sind und unattended installiert werden können. Kennt jemand von euch ein passenden Programm? Gruß, Marko.
  14. Hallo. Bisher nutzen wir zur Änderung der Auflösung nach der Neuinstallation der Clients per Softwareverteilung das Tool Reschange von 12noon.com. Die Parameter hängen wir mit Hilfe einer Variable ran und rufen das Tool silent auf. Leider werden offenbar keine Dual-Head Arbeitsplätze unterstützt. 2560*1024 zum Beispiel. Kennt jemand von euch eine passende Tools? Gruß, Moeki.
  15. Ich glaube, dass das Berufsbild eines Mechatronikers spezifischer und die Ausbildung geregelt ist. Insofern würde ich das vorziehen.
  16. set serveroutput on DECLARE cursor pkz_cursor is select pkz from auto where substr(pkz,1,3) = 'LOS'; wort varchar2(30); akt_zustand varchar2(10):= 'korrekt'; n number; BEGIN OPEN pkz_cursor; <<auessere_Schleife>> LOOP FETCH pkz_cursor INTO wort; EXIT auessere_Schleife WHEN pkz_cursor%NOTFOUND; dbms_output.put_line(wort); IF (ascii(substr(wort, 4, 1)) = 32) THEN akt_zustand := 'korrekt'; ELSE akt_zustand := 'falsch'; END IF; FOR n IN REVERSE 6..length(wort) LOOP EXIT WHEN akt_zustand = 'falsch'; IF (((ascii(substr(wort, n , 1)) >=65) AND (ascii(substr(wort, n , 1)) <=90)) AND ((ascii(substr(wort, n-1 , 1)) >=48) AND (ascii(substr(wort, n-1 , 1)) <=57))) THEN akt_zustand := 'falsch'; END IF; END LOOP; IF (akt_zustand = 'korrekt') THEN dbms_output.put_line('Kennzeichen ist korrekt!'); ELSE dbms_output.put_line('Kennzeichen ist falsch!'); END IF; END LOOP auessere_schleife; CLOSE pkz_cursor; END; /
  17. Hat sich erledigt. set serveroutput on DECLARE cursor pkz_cursor is select pkz from auto where substr(pkz,1,3) = 'LOS'; wort varchar2(30); BEGIN OPEN pkz_cursor; LOOP FETCH pkz_cursor INTO wort; EXIT WHEN pkz_cursor%NOTFOUND; dbms_output.put_line(wort); END LOOP; CLOSE pkz_cursor; END; / Ich muss jetzt nur noch auf den Wörtern prüfen, ob sie kennzeichenkonform sind. Ne andere Möglichkeit, als über IF Abfragen fällt mir nicht ein. Gruß, Moeki.
  18. Das denke ich eher nicht. Image ist Image und da zählt die komplette Belegschaft zu.
  19. Tja, also wenn du wirklich da arbeiten möchtest, dann würde ich mir an deiner Stelle die Haare abschneiden lassen. Ohne große Diskussion.
  20. Kannst/Magst du nicht bei der Bundeswehr bleiben? Studium würde ich dir nicht mehr raten. Ebenso eine Forcierung der kaufmännischen Laufbahn. Stattdessen Zertifizierungen im Bereich Lotus Notes und ggf. Microsoft.
  21. Hallo. Gegeben sei eine Tabelle PKW, in der unter dem Attribut PKZ verschiedene PKW-Kennzeichen gespeichert sind. Ich möchte mir alle gültigen Kennzeichen aus meinem Landkreis XYZ ausgeben lassen. Und zwar in Form eines Cursors. Bis jetzt kann ich in meinem SQL Skript nur für definierte Variablen (wort varchar2(30) := 'XYZ' per IF Abfrage prüfen, ob das Kennzeichen gültig ist. Kann ich IF Abfragen auf Cursor laufen lassen, muss ich Cursor in Variablen "umdefinieren" oder empfiehlt ihr mir sonstige Vorgehensweisen (String Abfragen im Cursor, usw.)? Z.b: CURSOR XYZ (pkz IN varchar) IS select PKZ from PKW where (left,3)pkz = XYZ and ...; Gruß, Marko.
  22. ... und schiebe in Zukunft eine ruhigere Kugel. Gerade als neuer Admin.
  23. Ich glaube gehört zu haben, dass dir für jedes Wartesemester 0,1 Notenpunkte gutgeschrieben werden. Das wäre in meinem Fall bei 8 Wartesemestern im Endeffekt ne 1,3.
  24. Bzw. ggf. zu zahlende Studiengebühren mit einbeziehen.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...