Scherzfriedhof

Da ich nun schon seit längerem nichts mehr gepostet habe: Hier etwas aus meinem Archiv. Der Scherzfriedhof in Kramsach/Tirol.

Posted in Allgemein | Leave a comment

ohne worte

Posted in Allgemein | Leave a comment

TStringGrid und rechte Maustaste

Wie kann man in einem Stringgrid mit der rechten Maustaste eine Zeile auswählen? Das ist vor allem dann notwendig, wenn man per Rechtsklick das Context Menü in der eben geklickten Zeile aufrufen will

C++ Builder:

void __fastcall TFormUser::DBAdvGridRecordMouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y)
{
 if ( Shift == TShiftState() << ssRight )
 {
  TGridCoord GridCoord = this->DBAdvGridRecord->MouseCoord( X, Y );
  this->DBAdvGridRecord->Col = GridCoord.X;
  this->DBAdvGridRecord->Row = GridCoord.Y;
 }
}
Posted in C++ | Leave a comment

TRegistry (CPP Builder)

Hier mal ein Beispiel wie man mit dem C++ Builder auf die Windows Registry zugreifen kann:

TRegistry *Registry = new TRegistry;
Registry->RootKey = HKEY_CURRENT_USER;
if ( Registry->OpenKey( "Software\\MyCompany" ) )
{
  if ( Registry->ValueExists( "Hostname" ) )
  {
    AnsiString Result = Registry->ReadString( "Hostname" );
  }
  Registry->CloseKey();
}
Posted in C++ | Leave a comment

MSSQL Stored Procedures: Zeilen zählen

Wie man die Zeilen von Stored Procedures einer MSSQL Datenbank liest:

SET NOCOUNT ON
DECLARE @ProcName varchar(100)
DECLARE @LineCount int
DECLARE @TotalCount INT = 0
DECLARE C CURSOR LOCAL FOR
SELECT o.name as ProcName FROM sysobjects o WHERE (o.xtype = 'P') ORDER BY o.name
OPEN C
CREATE TABLE #ProcLines ([Text] varchar(1000))
FETCH NEXT FROM C INTO @ProcName
WHILE @@FETCH_STATUS = 0
BEGIN
DELETE FROM #ProcLines
INSERT INTO #ProcLines
EXEC('sp_helptext ' + @ProcName + '')
SELECT @LineCount = COUNT(*) FROM #ProcLines
PRINT @ProcName + ' Lines: ' + LTRIM(STR(@LineCount))
SET @TotalCount = @TotalCount + @LineCount
FETCH NEXT FROM C INTO @ProcName
END
PRINT ' total: ' + LTRIM(STR(@TotalCount))
CLOSE C
DEALLOCATE C
DROP TABLE #ProcLines
Posted in SQL | Leave a comment

Einfache pthread mutex implementierung

TRecord.h:

class TRecord
{
 public:
  static TRecord* instance();
 private:
  TRecord() {}
  ~TRecord() {}
  static TRecord* Instance;
  static VMutex Mutex;
};

TRecord.cpp:

TRecord* TRecord::Instance = NULL;
VMutex TRecord::Mutex;
TRecord* TRecord::instance()
{
 VMutexLocker lock(&amp;Mutex);
 if (Instance == NULL)
  Instance = new TRecord();
 return Instance;
}

Hier das Muster mit Double-Check Lock:

TRecord* TRecord::instance()
{
 if (Instance == NULL)
 {
  VMutexLocker lock(&amp;Mutex);
  if (Instance == NULL) // double-check
    Instance = new TRecord();
 }
 return Instance;
}
Posted in C++ | Leave a comment

crontab und /var/log/messages

Bei Einträgen in der /etc/crontab gibt es zwei (manchmal) nervende Dinge, die ich meistens abschalte: Die Benachrichtigung per E-Mail und das Loggen in /var/log/messages. Das sollte man tun, wenn man so wie ich im 5-Minuten Takt über cron den Zustand von Diensten abfrägt. Das hat nämlich eine regelrechte Mailschwemme ausgelöst und zudem die Systemlogs zugemüllt, sodass wichtige Informationen erst gar nicht mehr auffindbar waren. Die folgenden Beispiele beziehen sich auf SuSE Linux 11.x.

1. Die Benachrichtigung per E-Mail kann man durch Umlenkung nach /dev/null deaktivieren:

SHELL=/bin/sh
PATH=/usr/bin:/usr/sbin:/sbin:/bin:/usr/lib/news/bin
MAILTO=root
#
# check scripts in cron.hourly, cron.daily, cron.weekly, and cron.monthly
#
-*/27 * * * * root test -x /usr/lib/cron/run-crons && /usr/lib/cron/run-crons >/dev/null 2>&1

2. Das Logging nach /var/log/messages kann durch einen Eintrag in /etc/syslog.conf verhindert werden:

*/2 * * * * root /usr/local/display/bin/reanimate.sh >> /dev/null 2>&1#

*.*;mail.none;news.none;cron.none               -/var/log/messages

…”rcsyslog restart” nicht vergessen…

Posted in Linux | Leave a comment

The Green Hell 2.0

This gallery contains 14 photos.

Angefangen hat alles im vorigen Jahr, als ich auf meinem 8m² Balkon eine “Vollbepflanzung” vorgenommen hatte: Im obersten Stockwerk von einem Assi-Block irgendwo in Dornbirn wucherte alles derart zu, dass “Green Hell” der wohl einzig richtige Ausdruck dafür war. Inzwischen … Continue reading

More Galleries | Leave a comment

B.O.B. #3: Warum hast du das nicht gleich richtig gemacht?

Wunderschöne Aussage. Sie legt gleich zwei Dinge klar: Sie sind nicht imstande etwas richtig zu machen – hingegen demjenigen, der das gesagt hat, würde so etwas niemals widerfahren, er ist sozusagen die Unfehlbarkeit in Person. Eine mögliche Steigerung wäre nur noch: „Kannst nicht du EINMAL etwas richtig machen?“

Hier sind Ihre Möglichkeiten leider (oder: zu Ihrem Glück?) sehr begrenzt. Sie können hoffen, dass die Person durch einen glücklichen Zufall innert kurzer Zeit aus Ihrem Umfeld verschwindet. Diesen Abgang zu beschleunigen ist jedoch meist sehr schwierig, da die Person aller Wahrscheinlichkeit Boss des Unternehmens ist. Ist sie nur Ihr Vorgesetzter könnten Sie versuchen deren Vorgesetzten zu beeinflussen – aber denken Sie immer dran: Idioten, die solche Idioten einstellen, sind richtige Idioten.

Es kann auch sein, dass Sie der Idiot sind und auf diesem Weg eliminiert werden sollten. Wie auch immer: In 99,8 % der Fällen stehen die Karten schlecht für Sie, es ist Zeit zu gehen.

Ich selbst bin bisher ein einziges Mal in den Genuss dieses Mobbing Musters gekommen: In einem völlig verhunzten Projekt mit 500.000 Zeilen Spaghetti Code habe ich mir auch mal erlaubt etwas falsch zu machen und schon wurde ich indirekt für das gesamte Chaos verantwortlich gemacht. Leider hatte ich die Zeichen nicht richtig gedeutet und bin geblieben, worauf die Angreifer natürlich mit noch härteren Waffen aufgefahren sind.

Ich nehme den Spruch in meine Sammlung als Mobbing Muster auf, da schon einige Freunde von mir (meist auch Software Entwickler) diesen kennen.

Posted in BOB - Best Of Bullshit | 2 Comments

B.O.B. #2: Womit bist du eigentlich beschäftigt?

Chef ist gelangweilt – Sie kennen das vielleicht. Wenn nicht, dann schätzen Sie sich glücklich, denn diese Art der Demütigung  kann im falschen Moment eingesetzt absolut schmerzlich in ihrer Wirkung sein.

Wenn doch, dann hat es sich vielleicht so verhalten? Sie arbeiten viel und an mehreren Projekten gleichzeitig. Sie kommen als erster ins Büro und gehen erst wieder, nachdem die letzte Reinigungskraft das Gebäude längst schon verlassen hat. Der, der Ihnen bereitwillig seine Hilfe angeboten hat, ist auch schon längst weg.

Sie haben schon öfters an Ihre Vorgesetzten appelliert, dass dieser Zustand auf Dauer nicht zu ertragen ist und dass Sie nicht in der Lage sind, jedes Projekt von Mitarbeitern, die aus der Firma gemobbt wurden, zu übernehmen.

Die Projekte versinken im Chaos, bei den Kunden macht sich längst schon höchste Unzufriedenheit breit – kurz gesagt: Die Firma steckt tiefst in der Scheiße.

Da der Chef ein Idiot ist und nicht in Ansätzen willens oder mächtig irgendetwas zu ändern, sieht dieser die einzige Rettung darin, neue Ideen umzusetzen. Freilich sind diese noch bei weitem dümmer als jene, die Sie derzeit in Ihrer freiwilligen 80 Stunden Woche versuchen auszubaden.

Dazu braucht er einen geeigneten Operator für die Umsetzung: Nach einem kurzen Rundgang durch die Büroräumlichkeiten wird er vor Ihrem Schreibtisch halt machen und die Worte sprechen: „Womit bist du eigentlich beschäftigt?“

Auch hier gilt: Greifen Sie nicht zum Stroustrup – es wäre schade drum. Es ist schon geschehen und jeder in Ihrem Umfeld sollte wissen, dass Sie nichts oder zumindest nichts Sinnvolles tun. Vielleicht soll es sogar ein Zeichen sein, das die Firma gerade wegen Ihrer (Un-)Tätigkeiten so schlecht da steht.

Was Sie hier tun können: Lassen Sie sich einfach in aller Ruhe die schwachsinnigen Ideen des Chefs vorlabern und räumen Sie anschließend sofort Ihren Schreibtisch. Auch wenn Sie nicht unmittelbar eine neue Anstellung in Aussicht haben. Es ist einfach hoffnungslos.

Posted in BOB - Best Of Bullshit | Leave a comment