Projekte für Freiberufler – Liste der Agenturen und Portale für IT Projekte

Dies sind meine “Fundstellen” für freiberufliche IT-Projekte. Die Links sind zur Zeit weder sortiert noch katalogisiert. Also gibt die Rehienfolge keine Aussage über die Qualität der Agentur.

Wo auch immer es möglich war, habe ich die Projektliste direkt verlinkt. Ansonsten sind es die Links der Firmen, bei denen es sich anzufragen lohnt. Für alle Hinweise auf ungültige Links bin ich sehr dankbar. Ich würde mich auch auf Eure Linksammlung sehr freuen.

Viel Erfolg bei Eurer Projektsuche!
Valentin Heinitz

XING In Forum “Freiberufler Projektmarkt” Verfügbarkeit posten.
Megapart GmbH
Consileon IT-Beratung, Karlsruhe. Finanzen, Automotive. Keine Projektausschriebungen auf der Seite.
ProTechnology IT-Dienstleister, überwiegend MS-Produkte, Dresden
AraCom – Agentur aus Augsburg. uC, C++, Mainframes, Hardwarenahe Projekte überwiegend im Raum München. Es besteht eine Möglichkeit, Projektnewsletters zu abonnieren.

Constaff
Etengo
http://varius-it.com – Überwiegend SAP, Finanzen
1st solution consulting GmbH
resoom.de Scannt andere Projektportale nach Projekten. Scheint noch nicht ausgereift zu sein, aber man kann schnell rausfinden, welche Portale es gibt.
Infutura Freelance-Portal
www.zeitgeist-at-work.com – Suchmaschine für Projekte/Freiberufler
Reutax
www.cs2-informatik.de Projekte überwiegend in D8 Raum. SAP, C++, Java
www.solcom.de
www.bsf-consulting.de Überwiegend Festanstellung
request2 – Keine Projekte aufgelistet, jedoch gute Vermittlungschancen.
Computerfutures
xpsnet.de
www.rosa-ag.de
Freelance.de
www.future-consulting.de Überwiegend SAP Projekte in Rhein-Main Region
Hays AG – höflich, fair, kompetent (meine Erfahrung)
http://www.valentum.de Projekte und Festanstellung
www.valyue.de
www.gft.com
www.personality-it.de Gute C++ Projekte.
www.magic-dream-personal.de u.A. Automotive Projekte in Rhein-Main und im Norddeutschen Raum
www.centomo.de SAP, Automotive, Finanzen
de.progressiverecruitment.com
www.harveynash.com
exco.de Überwiegend Festanstellung
www.talisman-software.com Überwiegend Executives
www.freelancermap.de Portal für Projekte
www.gulp.de Portal für Projekte
www.projektwerk.de Portal für Projekte
www.goetzfried-ag.com Überwiegend SAP, Finanzen
www.it-jobs.stepstone.de Überwiegend Festanstellung
www.elan-it-resource.de Überwiegend SAP, Finanzen
www.expertnet.de
www.projekt-pool.de
Actinium Consulting GmbH Keine Projektliste auf der Webseite, lohnt sich dennoch Profil einzureichen
ProTechnology – Gesellschaft für lösungsorientierte Informationstechnologien mbH
www.abcona.de
www.lenroxx.com
BBV Software Services AG, hauptsächlich Projekte in Schweiz
www.sw-xperts.com
www.tekom-gmbh.de
http://www.dozentenscout.de – Portal zum Anbieten von Vorträgen oder Schulungen
BlueCarat – Überwiegend Finance/SAP in Frankfurt
http://www.joinvision.com/ Portal für Freelancer. DE-CH-AT
Freelance-Market – Don’t call us, we’ll call you. Möglichkeit, sich als Freelancer einzutragen. Nicht auf IT beschränkt.
karriere.at – Portalbereich für IT-Jobs und Projekte in Österreich
Keine Projektausschreibung auf der Webseite.
Apriori AG Keine Projektausschreibungen auf der Webseite.
Computerwoche Eine Suchmaschiene der Zeitschrift Computerwoche. Keine eigene Projekte.

GMT (jeeamtee) – Mein erstes Projekt bei Google-Code

GMT ist eine C++ Klasse für Manipulation von Speicherblöcken. Ich habe sie während eines hardware-nahes Projektes implementiert, um die Hardware (FPGA) auf einem Embedded-Board mit einem komfortablen Konsolen-Tool testen zu können. Eine solche Konsolenapplikation wird mit GMT zu einem Zehnzeiler.

Die ursprüngliche Applikation hieß gmm (Generic Memory Manipulator) und war zum Teil auch beim Kunden entwickelt. GMT ( Generic Memory Tool ) wurde neu geschrieben und hat von gmm nur die Idee geerbt. Außerdem habe ich mich entschlossen, das Projekt nicht als eine Applikation zu entwickeln sondern als eine Klasse (oder auch eine winzige Klassenbibliothek).

Die Einfachheit und das Komfort, bei Google Open-Source Projekte zu hosten, hat mich sehr positiv überrascht. Man kann von dem Workflow und von der Projektmanagementumgebung viel lernen. Ich bin mir sicher, es wird nicht mein letztes Google-Code Projekt sein.

Das Projekt ist gehostet bei: https://code.google.com/p/jeeamtee/

Viel Erfolg damit und vielen Dank für alle Anregungen!
Valentin Heinitz

P.S.: Ah ja, warum so seltsamer Name? Der Projektname GMT war bei google-code bereits belegt, deshalb bin ich auf jeeamtee ausgewichen.

Enum2String

Beim Programmieren in C++ ist es oft nützlich, die enum-Werte nicht als Zahlen sondern als Symbole mit ihren Namen auszugeben. C++ bietet diese Funktionalität nicht an. Es kann aber mit kleinem Stück Code bewerkstelligt werden. Dieses Code wird nur dann aktiviert, wenn es erforderlich ist – meistens im Entwicklungsstadium und zur Fehlersuche.
Das hier vorgestellte Perl Skript erzeugt eine C++ Klasse, die viele überladene toString Methoden für alle im Projekt deklarierten Enums bietet. Außerdem wird hier kurz auf das nutzliche Tool ctags eingegangen.

Um alle enum-Deklarationen im Code zu finden, wäre das Parsen notwendig. C++ Code manuell (mit Perl) zu parsen, ist abenteuerlich. Es gibt eine viel einfachere und sicherere Mögligkeit – das Tool ctags.

Für jeden, der mit GNU Tool-Chain arbeitet, ist ctags sicherlich ein Begrif – das Tool parst Quellcode und erzeugt daraus Symboltabelle. Der Aufruf ctags -R * parst alle Verzeichnisse rekursiv und erzeugt eine Datei namens tags im Arbeitsverzeichnis. Zu jedem Symbol in der tags-Datei gibt es Information, in welcher Datei es deklariert wurde und mit welchem Regulärem Ausdruck es in der Datei zu finden ist. z.B. hier ist ein Ausschnitt aus der einer tags-Datei:

EnumA inc\enums1.h /^enum EnumA { eA1, eA2, eA3, };$/;" g
eA1 inc\enums1.h /^enum EnumA { eA1, eA2, eA3, };$/;" e enum:EnumA

Die erste Zeile besagt, dass in der Datei inc/enum1.h ein neuer Enum-Typ deklariert wird. Die zweite Zeile bedeutet – “enum eA1 ist ein enum vom Typ EnumA.”

Und tatsächlich, in der Testdatei inc/enums1.h findet man das EnumA:
///@file enums1.h
#ifndef ENUMS1_HG_
#define ENUMS1_HG_
enum
EnumA {
eA1, eA2, eA3, };
enum EnumB
{
eB1, // first enum
eB2, eB3=eA3,
// eBUnused,
/* eBUnused, */eB4
};
typedef enum ECStyle{
eCStyle1=0, eCStyle2=100,
};
typedef enum EStrangeStyle{
eStrangeStyle1, eStrangeStyle2
}EStrangeStyle;
#endif

Die Datei enums1.h ist eine gültige C++ Headerdatei. Ich habe dort vier Enumtypen deklariert. Die unterschiedlichen Schreibweisen habe ich absichtlich gewählt, um zu zeigen, dass manuelles Parsen keine triviale Aufgabe wäre. Diese Möglichkeiten, enums in C++ zu deklarieren, sind nicht hypothetisch. Ich habe sie alle schon im produktiven Code gesehen.
(Die Deklaration von EnumA und EnumB ist das, was man normalerweise in C++ benutzt. Die anderen, … na ja.)
Für Testzwecke habe ich im Verzeichnis inc eine weitere Datei hinterlegt:
///@file enums2.h
#ifndef ENUMS2_HG_
#define ENUMS2_HG_
enum EnumC { eC1, eC2, eC3, };
enum EnumD { eD1, eD2, eD3, };
#endif

Das komplete Perl-Skript samt dem Beispielprojekt findest Du unten, am Ende des Artikels. Hier ist eine kurze Erläuterung.

Das folgende Rreguläre Ausdruck enthält 2 “back-references” – Unterausdrucke, die nach dem Anwenden des Hauptausdrucks referenziert werden können. In Perl würden die reservierten Perl-Variablen $1 und $2 die Inhalte von den fettmarkierten Ausdrücken enthalten.
my $pat="^[^\t]+\t([^\t]+)\t.*enum:([a-zA-Z_][a-zA-Z0-9_]*)";
Zum Beispiel, nach Anwenden des oberen RegExp bei folgender Zeile würden die Perl-Variablen $1 und $2 die fettmarkierten Anteile enthalten:
eA1 inc\enums1.h /^ eA1, eA2, eA3, };$/;" e enum:EnumA

Folgende Schleife schreibt die gefundenen includes und enums in zwei Listen:
while () {
if (my ($m) = m/$pat/){
push @etypes, $2;
push @includes, $1;
}
}

Folgendes Codeschnipsel erzeugt aus beiden Listen, die mehrere gleiche Einträge enthalten können, Unique-Listen:
my %hlp1 = ();
my @uniqenums = grep { ! $hlp1{$_} ++ } @etypes;
my %hlp2 = ();
my @uniqinc = grep { ! $hlp2{$_} ++ } @includes;

Nun habe ich alle notwendigen Informationen für die Codegenerierung – Enum-Typen und Headerdateien.
Es wird eine Utility-Klasse (keine Instanzen möglich/sinnvoll) generiert, die mehrere überladenen statischen toString-Mehtoden hat z.B.:
static const char * toString( EnumA en ) {
switch( en ) {
case eA1: return "eA1";
case eA2: return "eA2";
case eA3: return "eA3";
}
}

Außerdem wird in der Klasse eine Testmethode definiert – static void testEnum2String(), die beim Aufruf alle toString Methoden testet. Enum-Wert und Enum-Symbolname werden auf der Standardausgabe ausgegeben.

Download

Copyright 2010, Valentin Heinitz