Alle Beiträge von Björn Karpenstein

Diplom Informatiker, Programmierer, Musikbegeisterter

IBM Doors DXL: Iterate over Linkmodule

Problem

The links in a link module should be iterated

Approach

Link Modules can be read with the appropriate method like formal modules.

Solution

nSatisfiesLinkModule = "/NDS/90 Administration/Satisfies"; 
Object o = null; 
string src   = ""; 
string tgt   = ""; 
SatisfiesLinkModule = read(nSatisfiesLinkModule, false); 
for o in SatisfiesLinkModule do 
{ 
                // get names of source and target modules 
                src = o."source" "" 
                tgt = o."target" "" 
                print src " -> " tgt "\n" 
} 

IBM Doors DXL: Helpful Trigger Functions for persistent Triggers to block a module

Problem

The modification (Edit Mode / Edit Share) of a module shall be prevented.
Das Editieren eine Doors Modules (Edit Mode / Share Mode) soll verhindert werden.

Approach

Defining a library and using the existence of a trigger as condition for allowed modifications can be used to block the formal Module for edit/share mode.
Durch das definieren eine Triggers und der zugehörigen Trigger_Library kann man die Existenz eines Triggers als Bedingung für das Erlauben des Edit/Share Modes nehmen.

Solution

void listAllTriggerForMod (Module mod) 
{
	Trigger t;
	for t in mod do 
	{
		print name(t) "\n";	
	}
}

bool checkTriggerIfExistForMod (Module mod, string triggername) 
{
	Trigger t;
	for t in mod do 
	{
		if(name(t) "" == triggername)	
		{
			return true;
		}
	}
	
	return false;
}

string getDXLCodeForModWithTrigger (Module mod, string triggername) 
{
	Trigger t;
	for t in mod do 
	{
		if(name(t) "" == triggername)	
		{
			return dxl(t);
		}
	}
	
	return "not found";
}

void removeTriggerForModWithName(Module mod, string triggername) {

	Trigger t;
	string errorMsg;
	
	// first delete _all possible trigger_
	for t in mod do {
		if (name (t) "" == triggername) {
			errorMsg = delete(t);
		   	if(!null(errorMsg)) {
			  errorBox("Error occurred:\n" errorMsg"");
			  break;
		   }
		}
	}
}

void installTriggerForMod (Module mod) 
{
	string dxlCode = "Module cm = current Module;\n" //-
					"if ((isEdit(cm)||isShare(cm))){\n" //-
					"ack(\"During Wings LDT modifications it is not allowed to modify texts in the UIT/ALM Module.\");\n" //-
					"downgrade(cm)\n" //-
					"}\n";
	 
	string errors = checkDXL(dxlCode)
	
	if(null(errors)) 
	{
		string moduleName = name(mod)
		if(!checkTriggerIfExistForMod(mod, "Text_Tool_Block_Trigger"))
		{
			Trigger t = trigger("Text_Tool_Block_Trigger", project->module->moduleName, post, open, 15, dxlCode);
		}
		else ack "Trigger already exist!";
	}
	
	save(mod);
}

Module uitModule = read("/NDS/20 System/DS/UIT-User Interface Texts", false);
print "Vor der Installation...\n";
print "=======================\n";
listAllTriggerForMod(uitModule);
installTriggerForMod(uitModule);
print "\n\nNach der Installation...\n";
print "=======================\n";
listAllTriggerForMod(uitModule);
removeTriggerForModWithName(uitModule, "Text_Tool_Block_Trigger");
print "\n\nNach dem Entfernen...\n";
print "=======================\n";
listAllTriggerForMod(uitModule);

C#.NET Windows Forms: Allow only numbers and decimals in TextBox

Problem

A Textbox should only allow numbers and decimals

Approach

Using the Keypress method will validate on each key that is entered.
Call the code below onKeyPress Event of each Textbox with

validateNumber(sender, e);

after each

Solution

private void validateNumber(object sender, KeyPressEventArgs e)
{
  if ((e.KeyChar == ',') && (((TextBox)sender).Text.IndexOf(',') > -1))
  {
    e.Handled = true;
    return;
  }

  if (!Char.IsDigit(e.KeyChar))
  {
    if ((e.KeyChar != ',') &&
        (e.KeyChar != Convert.ToChar(Keys.Back)))
    {
        e.Handled = true;
        return;
    }
 }
}

Günstiges MIDI-Keyboard mit VST-Instrumenten

Problem

Die heutigen Synthesizer gehobener Klasse und authentischen Sounds haben z.Zt. einen Marktwert von mehreren tausend Euro. Die Synthesizer-Klänge sind proprietär und oftmals auf deren Platinen fest integriert. Die Erweiterbarkeit lässt im Rahmen der Produktlinie gewisse Freiheiten, die allerdings oftmals an einem engen Spektrum an Angeboten scheitert.

Es wird nach einer möglichst günstigen Alternative mit vielen Erweiterungsmöglichkeiten gesucht.

Ansatz

Die VST Schnittstelle erlaubt das Laden von VST Instrumenten am PC. Hierbei handelt es sich pro Instrument um ein Stück Software, welches zur Klangerzeugung genutzt wird und auf ein bestimmtes Genre/ein bestimmtes Klangbild spezielisiert ist. Hierdurch können die Kernkompetenzen der spezialisierten Anbieter besser ausgeschöpft werden um in einem entsprechendem Soundsegment einen bestmöglichen Klang zu erzahlen.

Lösung

Wir das nachfolgende Video werden die folgenden Kompoenten genutzt:
* Cubase LE 6 als DAW mit Halion (10 EUR)
* ASIO Soundkarte (60 EUR)
* Tastatur (39 EUR)

Beispielergebnis

Dialyseerfolg messen

Aufgabenstellung

Ein Patient wiegt 120 KG und wird 4 Stunden mit einem Dialysiator mit K=270 dialyisiert.
Wie lässt sich der zu erwartende Erfolg errechnen?

Ansatz

KTv = Kennzahl über die Effeziienz einer Dialysebehandlung

Lösung

Urea wird als Indikator für die Harnstoffkonzentration allgemein verwendet.

Patientengewicht/Volumen = 120 KG
V: 120 kg = 120 Liter Volumen. 58% davon sind das Urea Volumen. also 69,6 Liter = 69600 ml

K: Clearance [ml/min] 270
t: Dialysedauer = 4 h

Ein Patient wiegt 120 KG und

8,4 l = 840 ml darf man rausnehmen

BF = 480 ml/min
DF = 960 ml/min

K* t/V = 270 ml/min * 240 min / 69600

Word VBA: Alle Bilder / OLE-Objekte automatisch verkleinern

Problem

In einem Dokument sollen alle Bilder auf eine fixe Breite von 400 Bildpunkten im Seitenverhältnis verkleinert oder vergrößert werden.

Ansatz

Über das Seitenverhältnis der alten Größe der Seite A (a) zur neuen Größe der Seite A (ax) lässt sich die Aspect Ratio Verhältniszahl errechnen.
Diese Verhältniszahl kann mit der Größe der Seite B (b) des Rechteckes multipliziert werden, um die neue Größe der Seite B (bx) zu ermittlen.

Lösung

Sub bilderKleinerMachen()
    ' By Bjoern Karpenstein
    Dim s As InlineShape
    
    Dim aspectRatio As Double
    
    Dim newWidth As Integer
    
    newWidth = 400
    
    Dim i As Integer
            
    i = 1
        
    For Each s In ActiveDocument.InlineShapes
        s.Select
        If (s.Width > newWidth) Then
            If i > 1 Then
              aspectRatio = CDbl(newWidth) / CDbl(s.Width)
              s.Width = newWidth
              s.Height = CInt(s.Height * aspectRatio)
            End If
            i = i + 1
        End If
    Next
End Sub

DR NEON Saiten : Leuchtende Saiten auf meiner Fender Stratocaster Squier

Vorwort

Vom 10.04.2013 bis zum 13.04.2013 findet wieder die Musikmesse in Frankfurt statt. Da wir in den letzten Jahren mit Effekten, Instrumenten und Aufnahmezubehör mit jeweils individuellen Eigenschaften überhäuft wurden, bleibt nicht viel Spielraum für weitere Illusionen. Dafür gibt es aber auch Produktdesigner, die mit ihren Ideen ein breites Spektrum an Musikern individuell begeistern könnne.

Vorstellung: DR NEON Saiten

Ein nettes Spielzeug und Gimmick, welches evtl. nicht neu ist aber an mir bis jetzt gänzlich vorbei ging, ist die Verwendung von glühenden/leuchtenden Saiten wofür der Hersteller DR mit der NEON Serie ein Patent hat. Die Saiten leuchten nicht von selbst, wie man zuerst vermuten kann, sondern benötigen eine Schwarzlichtquelle.

Preis

Für knappe 16 EUR kann sich der Effekt auch sehen lassen.

Farben

Es gibt mehrere Farben wie Orange, Grün, Gelb, Rosa, Blau und weitere Farben die im Schwarzlicht einen kräftigen Ton absondern. Ich habe die Farben auf meiner Gitarre gemix (siehe Fotos), was den Nachteil hat, das man das harmonische alternieren der Farben beim Einwechseln einer gerissenen Saite durchbrechen kann.

Handhabung

Es liegt ein Warnhinsweis bei, da die Saiten ledigliche beschichtet sind und beim Scratchen die Schicht abgezogen werden kann. Deswegen sollte man Scratchings vorerst vermeiden. Ich habe die Saiten auf meine alte Squier gezogen, da ich sie nicht mehr so oft nutze und mir sonst nicht sicher wäre ob ich versehentlich doch mal ein „scratch“ mache 😉

Fotos


daylight_strings

dark_perspective

dark_mechanics

daylight_pickups

dark_pickups

Videos

Bei Dunkelheit und schwachem Schwarzlicht



Bei Tageslicht



Google Analytics: Der Brandenburg Bug (Der Branden Bug)

Problem

Seit geraumer Zeit wunder ich mich darüber, dass das Karten Overlay in der Google Analytics Statistik keine Besucher aus Brandenburg anzeigt.

Analyse

Nach einigen Gesprächen mit anderen Bloggern, welche Besucherzahlen weit über 500.000 User/Monat haben, fand ich heraus, dass ich nicht der einzige Blogger bin, bei dem Analytics nichts in Brandenburg anzeigt.

Beispiel

kein_brandenburger

Lösung

Bis jetzt hat sich Google dazu noch nicht geäußert.

Es kann natürlich auch hieran liegen:

Ch ch ch ch X-D