Neues im Serviceangebot – LIS-Anbindung

Bei der Implementierung der LIS-Anbindung für mehrere Geräte eines Kunden habe ich in den letzten zwei Jahren viel Recherchiert und einige Diskussionen in einschlägigen Foren angestoßen. Seit einiger Zeit erhalte ich vermehrt E-Mails mit den Anfragen zu Beratung bei der LIS-Anbindung oder mit den Fragen zu den Spezifikation rund um LIS/ASTM/LH7. Ich werde fälschlicherweise für einen LIS-Berater gehalten.

LIS lag bis jetzt zwar nicht im Fokus meiner beruflicher Tätigkeiten, aber ich wäre nicht abgeneigt mein Serviceangebot in dem Bereich ausbauen. Wie ich Ihnen bei der Anbindung Ihrer Geräte an die LIS helfen kann, beschreibe ich auf der neuen Seite LIS-Anbindung.

 

Simple Persistence “Framework” for Qt4

This “framework” is intended for storing persistent data of small Qt4 Applications easily. It is nice, to have e.g. last used file loaded on a new start or to see the application position/size as used last time.
Unfortunatelly many small application – some prototypes or internal tools – hardly use such basic features. The reason often is the lack of time to implement such “nice-to have” stuff. There are many things to be considered format, place of data, unified load/store procedures, etc.
This framework helps to use persistency with very minimal implementation overhead. These are the steps for using it:

  1. include “persistence.h”
  2. call once macro PERSISTENCE_INIT after QApplication has been created ( usually called in main )
  3. For each item to store call once macro PERSISTENT ( usually called in constructor body of the class containing this variable or property )

That’s it. The data will be stored on exit and loaded on start.

The macro PERSISTENCE_INIT has two parameters – company name and app name e.g.: PERSISTENCE_INIT( “My Company”, “My App Name” )
The macro PERSISTENT has three parameters. There are three variants
at the moment, e.g:
PERSISTENT(“MyIntVar”, &SomeIntMember, this )
PERSISTENT(“MyStrVar”, &SomeQStringMember, this )
PERSISTENT(“MyProperty”, this, “geometry”)
The two first variants store a value of a int/QString member
The third variant stores the value of a QObject property (e.g. geometry)

Example:

#include <QtGui> 
#include "persistence.h" //(1.) include persistence "framework"
#include "slotvarmapper.h"

/// Variables to be persistent
int myIntValue=4711;
QString myStrValue="Hello";

int main(int argc, char *argv[])
{

    QApplication a(argc, argv);
    //(2.)Init persistence
    PERSISTENCE_INIT( "MyCompany", "MyTestApp" );

    //create a simple GUI containing 2 line-edits
    QWidget w;
    w.setLayout(new QVBoxLayout);
    QLineEdit *intLine = new QLineEdit (&w);
    QLineEdit *strLine = new QLineEdit (&w);
    w.layout()->addWidget(intLine);
    w.layout()->addWidget(strLine);

    //Helper instance for storing line-edit value in myIntValue
    StrSlotToIntVarMapper im( myIntValue,&w );
    QObject::connect(intLine,SIGNAL(textChanged(QString)),&im,SLOT(processSlot(QString)));

    //Helper instance for storing line-edit value in myStrValue
    StrSlotToStrVarMapper sm( myStrValue,&w );
    QObject::connect(strLine,SIGNAL(textChanged(QString)),&sm,SLOT(processSlot(QString)));

    //(3.)Declare variables and property to be pesistent. Thats ALL!
    PERSISTENT("LastIntValue", &myIntValue, 0)
    PERSISTENT("LastStrValue", &myStrValue, 0)
    PERSISTENT("LastGeometry", &w, "geometry")

    //Set initial values, or values from persistence
    intLine->setText(QString::number(myIntValue));
    strLine->setText(myStrValue);

    w.show();
    return a.exec();
    //(4.)Persistent values are stored on exit automatically
}

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 Reihenfolge 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 Linkssammlung sehr freuen.

Viel Erfolg bei Eurer Projektsuche!
Valentin Heinitz

centomo GmbH & Co. KG – Embedded, Automotive, SAP, Finanzen
AURELLY TECHNOLOGIES GmbH – Automotive, Embedded
CIRIC Software GmbH – HMI, Design, Mobile
ASSpro e.K. – Embedded, Konstruktion
Careerjet – Jobsuchmaschine, die auch freiberufliche Projekte bietet.
LV Consulting GmbH
atensis Consulting Expert-Recruiter aus Dietzenbach – Steinberg. SAP, WEB, QA, CM
VOLT Personaldienstleister mit Vertretung (u.A.) in München. Telekommunikation, Medizintechnik, Spielindustrie. Keine Projektausschreibungen auf der Webseite.
mymotion.de – Embedded, Konstruktion, QM, PM. Gut gestaltete Webseite mit Projektauflistung und Profileingabemöglichkeit.
Portal free-lancer.eu – Kostenlose Projektvermittlung für Freelancer und Unternehmen. Möglichkeit, sich kostenlos als Freiberufler einzutragen. Name, Stunden-/Tagessatz sind für alle sichtbar.
Euro London Appointments – Vermittlung vom mehrsprachigen Personal, auch von freiberuflichen IT-Spezialisten. Jobsuchmaschiene auf der Startseite. Niederlassungen in Deutschland in Frankfurt, Düsseldorf und München.
bonabendis GmbH Viele Projektausschreibungen auf der Webseite. SAP, Java, Finanzen
Pronovit AG SAP, QA, viele Projekte auf der Webseite.
be1ne Unternehmensberatung – .NET, Java, SAP, Finanzen
IDM Support & Consulting GbR EDV-GbR aus Berlin, die auch mit Freiberuflern zusammen arbeitet. Keine Projektausschreibung auf der Webseite.
Sterling Consulting – IT-Beratungsagentur aus München. Keine Projektausschreibung auf der Webseite.
msg systems AG – IT-Beratungsunternehmen aus München. Keine Angaben, ob sie mit Freiberuflern zusammen arbeiten, eher Arbeitnehmerüberlassungsmodell. SAP, Automotive, Finanzen, Versicherungswesen.
MGW – EDV- und Informatik-Büro aus Gernsheim, die auch mit Freiberuflern zusammen arbeiten. Automatisierung, Medizintechnik
Kumgeo GmbH – Kleinere IT-Beratungsgesellschaft aus Hamburg, die auch mit Freiberuflern zusammen arbeiten. Automotive, Raumfahrt.
it-projekte.de – Portal für IT-Projekte, Anmeldung erforderlich.
LV Consulting – Agentur aus Rüsselsheim. Finanzen.
DV-RATIO – Java, C#, SAP, Business und Finanzen. Ausschreibungen sind für Festanstellungen, angeblich arbeiten sie jedoch auch mit Freelancern.
BGI E-Commerce, Finanzen, Energie. Keine Projektausschreibungen auf der Webseite.
BEST JOB IT Services Niederlassungen in Hamburg, München, Berlin. IT-Support/Administration, SAP, MS-Technilogien
Xiopia GmbH Ein Unternehmen der ALLGEIER Holding aus D8-Raum.
7G-Consult – Start-Up Agentur aus Darmstadt. Viele Projekte auf der Webseite, kein klares Profil.
Flex-Base Eine kleinere Agentur aus Düsseldorf. Keine Projektausschreibungen auf der Webseite.
Oxford Europe Automotive, Medizintechnik, Avionik
Arateam Personalberatung, Executive Search aus Nürnberg.
SERMA GmbH IT-Dienstleister mit mehreren Niederlassungen (Berlin, Nürnbern). Festanstellung und freiberufliche Mitarbeit möglich.
consultingpool Unternehmensberatung Automotive, Finanzen
Systeme24 IT-Dienstleistungen GmbH Spezialist Recruitment aus Mainz. Überwiegend SAP, DB, E-Commerce.
unitepeople GmbH Beratungs- und Personaldienstleister mit Niederlassungen in Heidelberg und Berlin.
Accelsis Technologies GmbH Finanzbranche, Java EE, SOA
viadee Unternehmensberatung GmbH Java EE, Projekt-, Prozessmanagement, QA
IDM Germany – Java EE, IT-Infrastruktur, Datenbanken
VISPIRON AG Technologieunternehmen, das auch mit Freuberuflern zusammen arbeitet – Automotive, Embedded, Luftfahrt,
Huxley AssociatesFrankfurter Niederlassung des internationalen Recruitment-Unternehmens. Finanzen, IT, Energieversorgung.
Fox Department Finanzen. IT-Berater aus Frankfurt/M.
Bertrandt Services Engineering-Dienstleister, die auch mit Freiberuflern zusammen arbeiten.
Axxessio GmbH IT-Berater mit Niederlassungen in Köln und Darmstadt, die auch mit Freiberuflern zusammen arbeiten. Web-Projekte und Projekte für Mobile Plattformen (Android, iP.*, etc.)
Richard Gruber Gonsulting Java, E-Commerce
DIS AG IT-Dienstleister mit überwiegender Mitarbeitform – Arbeitnehmenüberlassung. Angeblich bieten sie auch freiberufliche Projekte an.
NTC-Systems/
ABSOLUT PersonalManagement Festanstellung (überwiegend) und Projekte in den Bereichen Automotive, Energie, Medizin, Halbleiter.
SyroCon GmbH IT-Berater Firma aus Eschborn (bei Frankfurt)
adesta GmbH & Co. KG Agentur aus Darmstadt.
MC IT Solutions – IT-Unternehmen aus Wiesbaden, das Laut der Selbstbeschreibung mit Freiberuflern arbeitet.
IPSWAYS – Unternehmen aus Mainz für Softwareentwicklung und IT-Experten.
http://www.linux-lancers.com – Projekte für Freiberufler mit Linuxkentnissen. Es werden auch Diplomarbeiten, Studienprojekte, Festanstellungen ausgeschrieben. Viele Projekte veraltet.
CONNEXIS Projekte und Stellen im süddeutschen Raum.
people4project.com Überwiegend SAP Projekte.
Consultime Registrierung erforderlich.
http://www.profi4project.com – Projektportal für Freiberufler der PASS Consulting.
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 für Freiberufler 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
de.progressiverecruitment.com
www.harveynash.com
exco.de Überwiegend Festanstellung
www.talisman-software.com Überwiegend Executives
www.freelancermap.de Portal für Projekte
GULP Portal für IT-Freiberufler. Projekte aus allen Branchen.
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
Syspoint ConsultingKeine Projektausschreibung auf der Webseite.
Apriori AG Keine Projektausschreibungen auf der Webseite.
Computerwoche Eine Suchmaschine der Zeitschrift Computerwoche. Keine eigene Projekte.
IQ-Net SAP, Finanzen, E-Commerce.
euro engineering IT-Dienstleister mit Vertretungen in mehreren Standorten. Keine Angabe, ob sie auch mit Freelancern arbeiten.
comebis GmbH IT-Dienstleistungsunternehmen im D4-Raum (Ratingen). Keine Projektausschreibungen auf der Webseite.
Matchtech GmbH IT-Dienstleistungsunternehmen aus Stuttgart. Stellen- und Projektanzeigen auf der Webseite. Avionik, Automotive, Energie, Automatisierung

WinMan – window manipulation

WinMan (window manipulation) is a tool for changing size, position and appereance
of running windows on MS-Windows(R) operating system. In particular it enables you to:
-Move a window around from command line tools (scripts).
-Resize windows
-Make windows displayed on top permanently.
-Hide windows
-Remove decoration from window

Idea
Once upon a time I required a window to be permanently displayed as a top window.
It shouldn’t be covered with another window by user. I’ve asked a question on StackOverflow
and the thread emerged to this tool. Many thanks to all contributors! And here is the Link:
http://stackoverflow.com/questions/4023942/window-manipulation-using-window-handle-from-different-process-on-ms-windowsxp

Atention
This software is provided as is. The author has no responsibility for any kind of damage – e.g. loss of data – on your computer.

Later on I am going to publish it on google-code or source-forge. Currently, here is the download for the code and binaries:
winman.zip
The code is distributed unter the terms of GPL V3.

QoolPersistence – Persistence easy in Qt4

Mein zweites kleines Projekt bei Google-Code ist online. QoolPersistence ist eine Singleton-Klasse und einige Makros, die es erlauben, persistente Daten in kleinen Qt4 Programmen sehr einfach zu implementieren. Persistente Daten können z.Z. integer, QStrings oder Eigenschaften von QObjects sein. Weiter Infos und natürlich das Quelcode dazu sind hier: Qoolpersistence

Project Idea: LogCompanion

LogCompanion is a tool for analyzing log-files while developing and debugging software.
Logging as a technique for debugging and error analysis is heavily used in software industry. In my experience, many companies use logging as the only debugging techniques and neglect others (e.g. such exotic one as using debugger). Whether sensible or not, the fact is, that plenty of time is spent on log-file analysis. That includes finding/(re-)opening/ log-files, looking for error (e.g. ERROR:), analyzing what happened before, analyzing what happen, if error doesn’t occur, trying to compare logs, removing timestamps in order to be able to diff files, filtering out noisy lines, removing code-line information in order to be able diff files, getting an idea why error may have happened, suspecting race-condition, looking again for corresponding timestamps, looking again for corresponding code-line information, trying to identify the place in code, copying/renaming usefull log-files/sessions, and so on.

Imagine, a software would save the log-files you’ve analyzed last time, and monitor them for changes or even for error-tags. It would recognize automatically the tags in log-lines such as file-names, lines, timestamps, error-levels, messages, etc. It would use the information sensible depending on context e.g ignoring timestamps while comparing sequences of commands, opening file on specified line in IDE, showing time-spans between lines, displaying error-level as an icon, etc. Imagine, it would even detect unusual behavior e.g prohibited sequences, time-outs, invalid values etc. How much faster would you be able to develop your software then? Much faster! LogCompanion will help you in that.

I am currently working on first prototype and I hope to publish the code soon. The prototype is developed in Qt4, of cause :-). While the prototype is evolving, I am still collecting requirements and feature ideas. Therefore this site was created. If you have a question, an idea or a suggestions, I would appreciate your message. If you are aware of such a software, free or commercial for reasonable prize, I would appreciate, If you gave me a hint – reinventing a wheel is always a pain.

Here are the key features I am aiming to implement:

  • easy definition of log format
  • auto-recognition of known log formats:
  • Automatic Error-detection in using logging APIs (extra/missing newlines etc)
  • auto-recognition of log data
    • timestamps
    • file-names and line numbers
    • URIs
  • outstanding filtering abilities
  • comparing logs using defined filter criteria
  • extensive usage of intuitive GUI-techniques
    • Drag&Drop
    • Semitransparent dialogs
    • actions on mouse over
    • gestures
  • syncing several log-files using time-stamp
  • configurable presentation of log entries
    • Icons
    • recognition of URIs
    • replacement of integer values by symbols
    • summing up same/similar consecutive log lines
  • preview of log-data items
    • Mimes
    • Code-Chunks
  • conversion to all known formats
  • auto-recognition of known formats
  • pre-defined configurations for all known formats
  • conversion to XML
  • HTML report generation
  • “tail -f” replacement
  • real time log transformation and forwarding (to file, network, etc.)
  • log data input from network connection (e.g. piping via nc)
  • log joining
  • log collection
  • input from several network connections
  • “tailing -f” several files
  • code generation for input/parsing plug-ins based on format description
  • unusual sequences detection
  • repetition detection
  • block comparison
    • N lines beginning with specified line
    • All lines between specified lines
  • Log-rotate with compression
  • alarming
    • sound
    • email
  • Status information
    • last update, a warning sign, if file older than specified time
  • Replay of cuptured events.
  • Splitting Log into several pre-defined Log-Classes. e.g. Errors, Messages of a particular developer, Strange behaviour
  • Acting as multi-client proxy server for TCP/UDP protocolls and capturing data passed through.

Things you should have done before introducing unit-testing in your software project.

Software Quality Improvement Strategy

This is a the presentation in English about how to increase quality of a software project with low costs. I have prepared it for one of my customers who considered to introduce unit-testing. As usual (I have seen this scenario many times in several companies), the “UT-framework selection orgy” began. The time passed by, the ressources were allocated to evaluation and the developers were busy debating how this or that feature of a particular UT-framework could be used in the project.

This short presentation suggests four steps to do before introducing unit-testing. The goal is to reach considerable quality improvement with low effort and to take advantage already during the introduction-phase of unit-testing.

If you would like me to hold this presentation on your premises, please see my contact details.

Generierung von Getters und Setters für C++ Klassen mit VIm

Ich selbst benutze zwar vi nicht als IDE zum Entwickeln, finde es aber sehr nützlich als mächtiges Search&Replace Tool. In diesem Beispiel geht es darum, wie man schnell aus privaten Member-Variablen einer (C++) Klasse die public Getter- und Setter-Funktionen erzeugen kann.
Die drei Variablen kopiere ich aus VisualStudio ins VIm:

QString _viewer;
QString _viewerArgs;
QString _previewRegex;

Wie man sieht, mein präferiertes Namensstil ( das ich von GoF übernommen habe ) ist für private Member: _memberName.
Die Getter heißen bei mir: const T & memberName () const;
Die Setter: void setMemberName (const T & memberName) ;

Die Getter erzeuge ich mit:

:1,$s/\(\w\+\)\s\+_\(\w\+\).*/const \1 \& \2() const {return _\2;}/

Ergebnis:

const QString & viwer const {return _viewer;};
const QString & viwerArgs const {return _viewerArgs;};
const QString & previwRegex const {return _previewRegex;};

Den Code copiere ich in public-Bereich der Klasse in VisualStudio und mache UNDO in VIm mit “ESC u”:
Und ähnlich für die Setters. Dabei wird der erste Buchstabe nach _ in Großbuchstaben konvertiert (\u):

:1,$s/\(\w\+\)\s\+_\(\w\)\(\w\+\).*/void set\u\2\3(const \1 \& \2\3){ _\2\3 = \2\3;}/

Ergebnis:


void setViwer(const QString & viewer){ _viewer = viewer;}
void setViwerArgs(const QString & viewerArgs){ _viewerArgs = viewerArgs;}
void setPreviwRegex(const QString & previewRegex){ _previewRegex = previewRegex;}

Einige alte Projekte

Nach dem Umbau der Webseite habe ich erst-mal die alten Projekte gelöscht. Überraschenderweise wurde ich hin und wieder von den Besuchern angeschrieben, die ein altes Link auf der Webseite nicht mehr gefunden haben. Die Anfragen nach den alten Projekten oder Artikeln haben mich natürlich sehr gefreut, und ich stelle die Dateien gerne wieder zur Verfügung.

Shape Widget – Ein Beispiel, wie man ein Widget in Qt3 in beliebiger Form darstellt. Für Qt4 habe ich die Portierung sehr freundlicher weise von Falko Buttler bekommen. Allerdings würde ich dieses Problem in Qt4 z.Z. mit Stylesheets und transparenten Pixmaps lösen.

Kezb – Ein Tool um beliebige Zeichen von einer Standardtastatur einzugeben. Ich habe es selbst lange benutzt um mit deutscher Tastatur kyrilisch zu schreiben. Mittlerweile benutzt ich allerdings dafür www.translit.ru.

GOTO Ireland: – Meine Erfahrung als Jobsuchender in Irland.

J2ME – Getting Started – Kurze J2ME Einführung. Ich habe sie geschrieben, als ich meine ersten Schritte mit Java-Programmierung für ein Siemens-Handy gemacht habe.

Subtitle assistant – Ein kleines C++ Projekt um aus DVD-Untertiteln Wortlisten mit Übersetzung und Anwendungsbeispielen zu erzeugen.

Selfmade BlackBerry 8800 emergency charger

Today I’ve got a kind of emergency. The USB-slot of my BlackBerry 8800 has broken. There was no chance to charge the mobile phone with a USB-cable. A broken BlackBerry is bad enough, but the worst thing was – it happened on a business trip. As I couldn’t find a cradle charger for BlackBerry 8800 in any shop around, I decided to make one myself.
My search in Internet for self-made charger HOWTO has brought no results. However it revealed, that I was not the only one owner of BlackBerry 8800 with broken USB-slot. All the question from my fellows in misfortune were in English, which motivated me to write this post.

BlackBerry 8800 has a power-connector on the left side. A multimeter told me, that upper contact was for plus and lower for minus (lower contact is connected to ground).

I’ve cut the Slim-USB ending of the USB-cable off and removed 10mm of cladding from power wires. Attention! There is no guarantee, that on your USB-Cable the red wire is + and black is -. Test the polarity with a multimeter first!
USB Cable

A piece of sticky tape did the rest of the job – connected the wires to the BlackBerry power connector.

You may ask, how I’d found out that USB on my laptop is just the source of power BlackBerry 8800 wants? Well the only thing I knew, was It wouldn’t harm my laptop as USB has built-in short-circuit guard. And for BlackBerry, well I gave it a chance and it worked.

Good luck with charging your phone!
Valentin Heinitz

ATTENTION! Try it on your own risk. I will not take any responsibility for any damage on your BlackBerry or computer.

Next Page »