Zum Inhalt springen

Crush

Mitglieder
  • Gesamte Inhalte

    2048
  • Benutzer seit

  • Letzter Besuch

Alle Inhalte von Crush

  1. Mein Vater ist Meistermechaniker und Hobby-Erfinder, meine Brüder unheimlich von SF angetan, der eine Hobby-Elektroniker, der andere Hobby-Physiker und -Philosoph, die waren 15 Jahre älter als ich und das hat mich wohl auch mit geprägt. Computer haben mich immer fasziniert und bis heute haben sie diese Eigenschaft auch nicht verloren - im Gegenteil: Mit jedem technischen Fortschritt werden die Kisten noch interessanter, wenn auch leider unüberschaubarer für den Einsteiger. So, jetzt muß ich aber erstmal meine Energieversorgungseinheit austauschen, damit mein Gehirnimplantat nicht seinen Speicher flushed - vielleicht sollte ich ja mal ein Backup machen =8-D <FONT COLOR="#a62a2a" SIZE="1">[ 04. November 2001 13:37: Beitrag 1 mal editiert, zuletzt von Crush ]</font>
  2. ??? HÄH ???? CoSI? Noch nie gehört, unter was läuft denn das? Wer verwendet denn sowas? Ich konnte nix finden. Das ist doch bestimmt eine Abkürzung, was könnte das heißen? <FONT COLOR="#a62a2a" SIZE="1">[ 04. November 2001 13:26: Beitrag 1 mal editiert, zuletzt von Crush ]</font>
  3. Also am Alter sollte es eigentlich nicht hängen oder an den Kenntnissen. Ich habe mit 11 angefangen Assembler zu programmieren, mit 12 meine ersten Demos gemacht mit 13 die ersten kleinen einfachen Spielchen, mit 15 mein erster Musik-Editor (ähnlich den Trackern) auf Amiga und mit 16 mein erster Amiga-Paradroid-Klon und erste Vektor-Demos, allerdings nur in Beta1-Stadium, aber schon spielbar (wäre schön den noch zu haben - da war sogar taktische KI-Programmierung drin). Es ist klar, daß 3D-Grafik schon etwas mehr Kenntnisse und Verständnis verlangen, aber es ist auch einfach nur wichtig sich zu erkunden, was es für Möglichkeiten gibt um die Game-Engines zu entwickeln. 99% der Engines sind im Kern ohnehin gleich. Gute Tips kann man sich bei Gamasutra oder Undergroundgames.de holen. Spieleprogrammierer gibt es nicht als Ausbildungsberuf, weil das eigentlich mit ein bissel Elan jeder lernen kann, der nur die Energie hat einfach sich durchzubeißen. Tutorials gibt´s inzwischen im Netz schon en masse. Bücher wie das oben Genannte habe ich auch im Regal stehen und die sind wirklich sehr hilfreich. Allerdings sind fundierte Programmierkenntnisse schon erforderlich. Also erstmal Programmieren lernen, dann sich in Grafik- & Soundprogrammierung einarbeiten und zum Schluß kann man ein paar Spielchen wagen zu programmieren. 2D-Programmierung ist übrigens eigentlich extrem einfach und kann sogar von Anfängern recht schnell erlernt und umgesetzt werden. 2D-Iso-Engines sind da schon ein wenig aufwendiger. 3D, da sollte man sich halt die Formeln anschauen und damit umgehen können, aber man muß nicht unbedingt wissen wie man sie herleitet, da die Formeln hierzu überall dasselbe sind (höchsten bei Interesse, wie man auf die Formeln kommt) und die Optimierungen eher in der Verwaltung der Grafikdaten und Objekte und deren Verhalten liegen als in den 3D-Standard-Formeln. <FONT COLOR="#a62a2a" SIZE="1">[ 04. November 2001 13:51: Beitrag 4 mal editiert, zuletzt von Crush ]</font>
  4. Sich mit dem Debugger zu beschäftigen verpassen viele Newbies, aber ohne den wird man früher oder später nicht mehr leben können. Es ist sogar ratsam sich ein kleines bissel auf ASM zu konzentrieren, damit man mit dem Speichermonitor auch was anfangen kann - das hilft sehr oft bei Problemfindungen. ASSERT(::IsWindow(m_hWnd)); .....da tritt der Fehler auf... void CWnd::SetWindowText(LPCTSTR lpszString) { ASSERT(::IsWindow(m_hWnd)); if (m_pCtrlSite == NULL) ::SetWindowText(m_hWnd, lpszString); else m_pCtrlSite->SetWindowText(lpszString); } Ist doch ganz klar, was los ist: IsWindow frägt ab, ob ein Fenster überhaupt existiert 0=nein. Entweder hast Du kein Window aus dem Dialogobjekt erstellt: z.B. CDialogclass DialogWindow; oder halt mit new oder sonstwie (z.B. als Member in der App-Klasse) oder Du hast den Windowhandle falsch initialisiert/ausgelesen. Nehmen wir an Du hast ein illegales Fenster geöffnet mit negativem RECT (Rechteckbereich des Fensters), dann klappt das nicht und Dir wird ein 0er-Handle zurückgegeben, weil das Erstellen des Fenster nicht funktioniert hat. Das denke ich wird hier jedoch nicht der Fall sein. Es könnte natürlich auch sein, daß Du den Handle anderweitig verfremdet hast. Angenommen er ist nicht als global in dem Bereich definiert in dem der obige Programmcode liegt, wird nicht per value zurückgegeben, sondern in einem eigenen Namespace {} drin, vielleicht in einer anderen CPP und dann noch nicht mal als static und wird dann per Referenz weitergegeben, dann ist der Handle nur für eine Mikrosekunde vorhanden und sobald die }-Klammer erreicht wird wird der Stack aufgeräumt, der Handle vernichtet und der Inhalt mit dem nächsten Funktionsaufruf überschrieben/gelöscht. Das würde auch zum selben Ergebnis führen. Static kann die Problemlösung für viele 0er-Handles sein! Versuch mal zu schauen, was passiert, wenn Dein Fenster erstellt wird. Letzteres war bei mir das erste mal das Problem (werd ich nie vergessen), als ich einen kompletten Dialog mal mit einer Resize()-Funktion versehen wollte, damit bei jeder Fenster-Größe die Größenverhältnisse auch gleich bleiben. Die haben aber fast schon zufallszahlenartige Größen angenommen beim Resizen, weil eben der Static an der richtigen Stelle gefehlt hatte und daher willkürlich Größenwerte aus dem Speicher gelesen wurden!
  5. Schon mal im Tracer alles durchgelaufen? In solchen Fällen schnippel ich auch gern mal die Elemente auseinander um genau beobachten zu können. Ganz oben in der APP das hier definieren: Dadurch werden Zusatzinformationen bei Speicheranforderungen geloggt und bei Fehlern mitausgegeben. So können bei Speicherfehlern die Auslöser lokalisiert werden. #define NEW DEBUG_NEW aus Klasse.m_Text.GetWindowText(buffer); mach ich dann: CEdit&membervar=Klasse.m_Text; ASSERT(membervar); ASSERT(membervar.GetWindowText(buffer)); Im Debugger kann man beim Einzelschritt alles genau erkennen. Bei Release-Built wird der Debug_new und er Assert automatisch eliminiert und Fehlinitialisierungen werden im Log genauer erläutert. Du könntest auch try-catch-Blöcke um die Gesamtfunktion aufbauen, denn dann ist es einfacher komplexere Fehlerquellen mit genauem Fehlercode zu interpretieren. Compiler-Option /GX und /EHs aktivieren!
  6. Also bei mir funktioniert alles, was Du beschreibst, was nicht gehen soll. Ich kann mich erinnern, daß das Intellisense bei extremen Source-Änderungen mal irgendwas "verschlafen" kann und dann stimmen die .opt, .ncb, .bsc & .pdb Dateien nicht mehr so richtig. Das kann passieren, wenn man das inkrementelle Binden ausgeschaltet hat (falls der Fehler nur im Release auftritt). Vor allem wenn man zuerst die Hs und dann im Nachhinein die cpps ändert sollen solche Fehler auftreten können. Mir persönlich ist das nur 1-2 mal innerhalb der letzten 3 Jahre passiert. Da hilft dann nur eines (wenn es das auch sein sollte): Die 4 Dateien löschen und "alles neu erstellen" lassen. Sollte der Fehler dann immer noch nicht behoben sein, dann wäre es auch möglich, daß Du evtl. private oder protected abgeleitet hast, was solche Fehler (vielleicht) auch erklären könnte hinsichtlich des Intellisense, weil man da ja über Referenzen nicht direkt von außen Zugreifen darf (Keine Zeigerzugriffe, Keine Referenzzugriffe, nur Direktzugriff über das Objekt selbst). Was für eine Fehlermeldung bekommst Du denn genau? Hast Du das neueste Update für VC drauf, welches diesen Bug einigermaßen ausmerzen sollte? Versuche vielleicht auch ein wenig an den Compiler-Optionen rumzuschrauben. Das kann manchmal auch noch helfen. <FONT COLOR="#a62a2a" SIZE="1">[ 03. November 2001 16:40: Beitrag 2 mal editiert, zuletzt von Crush ]</font>
  7. Crush

    prozess beenden

    Ctrl-Alt-Del vielleicht? <FONT COLOR="#a62a2a" SIZE="1">[ 03. November 2001 18:17: Beitrag 2 mal editiert, zuletzt von Crush ]</font>
  8. ICQ hat auch einen Pinger eingebaut, aber ich benutze auch viel Lieber die Flat-Steckdose.
  9. Vielleicht liegt das an dem neuen Wunderbaren Registriersystem, daß nämlich das Windows mit Deiner Hardware direkt Verknüpft bei der Registrierung. Vielleicht schnüffeln sich die zwei Computer gegenseitig ab und dann lockt der eine die Netzwerkfreigabe, weil ja offensichtlich eine "böse" Raubkopie vom selben Windows läuft. Ist nur eine Annahme, muß ja nicht sein, aber man hört so viel Böses über WinXP.
  10. ALso da kann wirklich etwas nicht stimmen, weil es sich um eine variable Parameterliste handelt, das bedeutet: Es können soviele Zeiger auf Strings geladen werden, wie Platz auf dem Stack ist, das heißt eine ganze Menge! Ich habe schon ein paar Kommandozeilen-Archiver mit wesentlich mehr als 15 Parametern gestartet und da gab´s überhaupt keine Probleme. <FONT COLOR="#a62a2a" SIZE="1">[ 04. November 2001 15:26: Beitrag 1 mal editiert, zuletzt von Crush ]</font>
  11. Crush

    Registry

    ja = true = wahr = 1 = 0x00000001 = (egal wieviele Nullen links davorstehen) = strom an auf der Leiterbahn nein = false = falsch = 0 = 0x00000000 (egal wieviele Nullen überhaupt drinstehen) = Strom aus auf der Leiterbahn Das 0x ist das Kennzeichen bei C/C++ für Hexadezimal-Zahlensystem, Basis=2 eine Stelle entspricht 4 Bit -> bei 2hoch4Bit = 16 Kombinationen, die man mit 0-9 und a-f ausdrückt, damit ist 0x00=2*4 Bit=1 Byte und 0x00000000 halt mehrere Bytes. Die Zahl 3f bedeutet damit im Umkehrschluß 3*16 (2hoch4) + 15 = 63 - easy, gell? Es ist 1 bestimmt schön etwas über Registry zu erfahren, aber da gibt es auch viel zuviel zu erzählen und das Thema kann über 1000 Seiten ausgetreten werden ... hol Dir doch ein wenig Literatur dazu aus dem Internet oder aus Büchern, da kommst Du eher vorwärts. Hoffentlich habe ich nichts 0es gesagt, weil Registry ein relativ komplexes Thema ist, wo ich selber noch nicht so recht durchsteige und dabei bin ich bestimmt so begriffsstutzig nun auch wieder nicht. Hier kannst Du auch noch etwas über die Registry nachlesen: http://217.115.144.9/cgi-bin/ubbcgi/ultimatebb.cgi?ubb=get_topic&f=21&t=000369&counterhit=yes http://217.115.144.9/cgi-bin/ubbcgi/ultimatebb.cgi?ubb=get_topic&f=21&t=000321&counterhit=yes http://217.115.144.9/cgi-bin/ubbcgi/ultimatebb.cgi?ubb=get_topic&f=21&t=000249&counterhit=yes <FONT COLOR="#a62a2a" SIZE="1">[ 02. November 2001 22:47: Beitrag 3 mal editiert, zuletzt von Crush ]</font>
  12. Also so würde ich das verstehen: Herr/Frau ****** ******* , geboren am **.**.****, war in der Zeit vom .. .. .. bis .. .. .. in unserer Firma als Anwendungsentwickler beschäftigt. Crush-> er war halt anwesend Herr ******* hat in den 3 Jahren, die er bei uns verweilte, einiges bewirkt, so konnte er nach zähen Verhandlungen mit der Geschäftsleitung auch seine eigene Arbeitsplatzdekoration durchsetzen. Crush-> Ein Dickschädel, der sich weniger um seine Arbeit kümmert als um seine eigenen Interessen Durch ständiges Nachfragen, konnte Herr ******* manche Aufgaben selbst lösen und diese beim Mittagessen erläutern. Haupsächlich wurden ihm organisatorische Aufgaben übertragen, wobei hier sein Engagement bei Betriebsfesten hervorzuheben ist. Crush-> Selbst beim Essen in der Mittagspause hat er einen vollquatschen müssen und damit genervt, wenigstens konnte er Parties feiern und sich somit nützlich machen Nach intensivstem Selbststudium und bedauerlicher, langer Krankheit (8 Monate) konnte sich Herr ******* auch an Arbeitsweisen erinnern und diese mit Hilfe der gesamten Abteilung und mehreren Schulungen manchmal in die Tat umsetzen. Crush-> Autsch, irgendwie hat er gar nichts auf die Reihe bekommen und wenn´s geklappt hat war´s nur Zufall, weil ihm alle die Arbeit immer abnehmen mußten, damit der Laden nicht still liegt und der ganze Arbeitsablauf zum Stillstand kommt. Herr ******* war ein sehr, sehr warmherziger Mitarbeiter, der intensiven Kontakt zu seinen Kolleginnen suchte und nach einigen Fehlversuchen auch eine besondere Beziehung zu mehreren Mitarbeiterinnen aufbauen konnte. Leider trennten sich einige seiner intensivsten Beziehungen von uns, was auch ihm sehr nahe ging. Crush-> Der mußte immer gleich versuchen alle Weiber in der Firma aufzureißen und wenn´s auf die plumpe Tour nicht klappt, dann versucht er´s halt mit brutaler Macho-Gewalt und nervt damit alle weiblichen Mitarbeiter solange bis die das Handtuch werfen und von dannen ziehen. Herr ******* verlässt unser Unternehmen in einer wieder gefestigten geistigen Verfassung und wir wünschen, den Erfolg, den er bei uns auch suchte. Crush-> Er war vollkommen in der Zeit mit allem überfordert und es war notwendig ihn zum Firmenpsychiater zu schicken, damit er nicht noch in der Firma zusammenbricht und man ihn wieder auf die Menschheit loslassen kann. Er ist absolut erfolgslos in jeder Hinsicht und soll sich vom Acker machen! ********** Also das ist das Härteste, was ich bis jetzt zu lesen bekommen habe! Das darf der NIEMAND vorlegen, da kann er sich ja gleich selber eine Kugel in den Kopf jagen. Sieht echt traurig aus für ihn. Bis auf den Punkt mit Party feiern war eigentlich überhaupt nix positives dabei - und im Zusammenhang mit dem Rest kann man das nun auch wieder nicht als wirklich positiv betrachten. Der Junge tut mir echt leid. Dieses Zeugnis ist schlechter als eine 6!!! Es wäre interessant mal zu erfahren, wie es so mit Schul- & IHK-Zeugnissen bei ihm aussieht. <FONT COLOR="#a62a2a" SIZE="1">[ 02. November 2001 23:00: Beitrag 5 mal editiert, zuletzt von Crush ]</font>
  13. Laßt uns alle zum Islam überlaufen und täglich 5x nach Mekka Knien, dann sind wir alle Brüder und somit werden alle friedlich und glücklich zusammen leben können.
  14. Ein Dynaset wird immer auf die Änderungen des Users direkt abgestimmt und entspricht immer 100% dem aktuellen Stand, während ein Snapshot die Datenbank in chronologischer Reihenfolge als statische Struktur betrachtet, die genau so aussieht, wie in dem Moment als der Recordset von der Datenbank geöffnet und dem Anwender zur Verfügung gestellt wird. Änderungen werden nicht augenblicklich sichtbar und die Datenbank darauf abgestimmt. Man muß da selber mit Requery den Recordset updaten. Selbst M$ empfiehlt sofern man mit ODBC objektorientiert arbeitet lieber auf die CDaoRecordsets zuzugreifen. Wenn man einen Recordset benutzen möchte, der die Datenbank eigenständig updated, dann soll man mit RFX (Record Field Exchange) arbeiten. Das ist so ziemlich dasselbe wie DDX für member-Variablen, nur daß diese halt für Datenbank-Records und -Felder gelten siehe: CRecordset: :DoFieldExchange() oder auch eine davon erweiterte Variante ist die Bulk-Exchange-Klasse: CRecordset: :DoBulkFieldExchange(). Es ist sehr empfehlenswert weil bequem die exclusiven Daten-Transfers alle über die RFX-Functions laufen zu lassen. <FONT COLOR="#a62a2a" SIZE="1">[ 02. November 2001 20:10: Beitrag 3 mal editiert, zuletzt von Crush ]</font>
  15. Also so wie ich das verstanden habe, richtet sich der Haß der Terroristen gegen alle Ungläubigen - also alle Nicht-Moslems! Da hat im Grunde genommen ein Land herzlich wenig mit zu tun - und wenn da Moslems leben sind die theoretisch von den Anschlägen ausgeschlossen. Wenn halt einer dabei umkommt ist er ein im Krieg Gefallener und bringt Ehre über sein Volk und seine Familie - als Märtyrer (schreibt man das so???) Amerika ist nur momentan in aller Munde, weil die da halt nähere Kontakte gehegt haben und jetzt halt immer noch hegen - egal ob friedlich oder kriegerisch. <FONT COLOR="#a62a2a" SIZE="1">[ 02. November 2001 17:02: Beitrag 1 mal editiert, zuletzt von Crush ]</font>
  16. Ich weiß gar nicht, warum sich alle so über Milzbrand aufregen, das zählt nämlich noch zu den harmloseren Biowaffen. Pocken-Viren sind weitaus gemeiner und extrem ANSTECKEND. Es gibt sogar eine Bakterienart, die so ein grausames Gift produziert und in Körpern wachsen kann, daß ein paar Pfund von deren Gift vollkommen ausreichen würde um die ganze Weltbevölkerung zu eliminieren. Und wenn man schon beim Thema ist: Atombomben selber sind eigentlich global betrachtet relativ harmlos. Es gibt nämlich noch die zwei Holocaust Bomben, mit denen man bei nur einer Zündung die gesamte Welt ausradieren könnte: Die Kobalt- und die Hydrogenbombe. Ein 10-Bomben-Cluster im Päcken auf einmal gezündet, egal wo auf der Welt würde reichen um die gesamte Menschheit auszurotten! Aber ich glaube bei Aids und Ebola und BSE brauchen wir eh nicht mehr allzu lange zu warten. Wen´s interessiert vielleicht noch zwei Links: Hydrogenbombe: http://www.gw.schule.ulm.de/faecher/deutsch/kipphard/docs/gray_board.htm Kobaltbombe: http://www.prignitz.de/Gymnasium-Wittenberge/deu/archiv/kern/refat41.htm
  17. Ja, die Suchmaschinen kann man hinsichtlich dieses Themas zur Zeit echt in den Gulli kicken.
  18. Crush

    XP-Nachfolger???

    Also mit meiner 3D-Relevator sieht alles recht plastisch aus (sogar der Sehschärfeeffekt, daß Nahes unscharf wird, wenn ich in die Ferne ein Objekt fixiere klappt prima), solange ich keinen Plasma- oder LCD-Bildschirm benutze.
  19. Trotzdem kann ein gutes Buch, das ich nebenbei auf den Tisch liegen habe nicht so ganz einfach von einem Ebook ersetzt werden. Allerdings ist die Suchfunktion bei den Ebooks natürlich feiner! Wahrscheinlich ist es am besten die Bücher auf den Tisch zu knallen und nebenbei alle wichtige Ebooks geöffnet zu halten (sieht auch so unheimlich konzentriert aus, wenn mal der Chef vorbeimarschiert).
  20. Crush

    XP-Nachfolger???

    Ich seh mich schon durch meine Sourcecodes fliegen und mit einem Klick lande ich auf dem Geforce-Chip und verbiege die Pins (hehe) oder lege gleich mal eine Leitung zum Lautsprecher um im Gigahertz-Kanal zu senden. Hoffentlich verfange ich mich nicht im Startmenü und mir fallen die ganzen Icons auf den Kopf. Bestimmt kommt von Windows für die Einsteiger auch noch eine "Greenhorn"-Edition raus. <FONT COLOR="#a62a2a" SIZE="1">[ 02. November 2001 15:14: Beitrag 1 mal editiert, zuletzt von Crush ]</font>
  21. Aber die kostenpflichtigen Nachschlagewerke zu saugen ist doch ILLEGAL! Das sind doch Warez, gell???
  22. Crush

    Auslagerungsdatei (SWAP)

    Mit so vielen Megabytes braucht man als Normalsterblicher doch wirklich keine Swap-Datei mehr, oder setzt Du die Kiste für extreme speicherfressende Programme ein? Da kannst Du ja das komplette Windows ins RAM laden und dann noch nebenbei einen Raytracer laufen lassen, ohne daß Dir der Speicher ausgehen sollte. <FONT COLOR="#a62a2a" SIZE="1">[ 02. November 2001 14:59: Beitrag 1 mal editiert, zuletzt von Crush ]</font>
  23. Das Problem lag aber nicht nur daran, daß die Typen auseinanderliefen, meine ich. Sondern vor allem, weil halt die Item-Geschichte nicht so funktioniert, wie sie funktionieren soll mit den Edit-Feldern. Erstelle Listen und schon klappen die Item-Zugriffe einwandfrei. Applets kann man natürlich nicht in C++ machen, aber Du kannst ja eine Exe-rüberschicken und starten lassen ;-D
  24. ASP = Active Service Provider = Ausgelagerte Daten- und Programm-Service-Leistungen über Netzwerke, meist noch mit integriertem technischen Support, welche oft komplexe-Office-Pakete über Internet zur Verfügung stellen oder recht Umfangreiche Anwendungen, sowie auch Backup-, Help-, Retail-, Consumer-, Document- Managing-, E-Commerce, Multimedia-, Data Warehouses-Services und 1000 verrückte Dinge mehr, welche jedoch über SSL laufen sollten, da sonst das ganze Quatsch ist. Dann muß halt nicht jeder gleich das ganze riesenkomplexe Programmpaket auf seinem Rechner installiert haben und kann trotzdem alles wichtige erledigen. Dazu muß aber eine sehr gute Netzinfrastruktur und -Anbindung vorliegen, sonst kann man bei bestimmten Dingen das alles den Hasen geben - hängt natürlich vom Einsatz ab. Das ganze hat sich nur entwickelt aufgrund der Auslagerung von EDV-Abteilungen in Firmen und der damit eingesparte technische Aufwand für Fachpersonal und Wartung - jedenfalls sollte sich das ganze so für die Firmen rechnen um instgesamt kostengünstiger zu fahren.
  25. Crush

    Auslagerungsdatei (SWAP)

    Wenn die Swap-Datei auf einer eigenen Platte liegt, ist der Gesamtzugriff natürlich bedeutend schneller, die die Köpfe nicht soviel rumrödeln müssen. Außerdem ist die DMA noch frei, wenn man auf der Programm-Platte schon weitere Daten lesen will während noch Speicher von der MMU ausgelagert wird. Der Geschwindigkeitszuwachs ist mit Sicherheit spürbar. Beim erstellen der neuen SWAP-Datei den SWAP-Speicher am besten gleich auf die maximale Partitionsgröße (sagen wir mal 2-4 Gigabyte) auslegen, damit nicht später erweitert wird und die Kacheln alle ordentlich beieinander liegen. @Maddin: Die Swap-Datei ist doch nix anderes als der physische Speicher ausgelagert! Erst wenn dieser richtig überquillt werden die Daten auf die Platte gelegt. Da ist die schnellste Möglichkeit dann einfach den Einsatz des Virtuellen Speichers gleich komplett auszuschalten! Wozu noch sinnlos im Speicher eine Speicherauslagerung emulieren???

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...