Asciiflow

Schnell mal ein Diagramm in eine Mail zu packen geht dank Anhängen, relativ problemlos. Aber es geht auch eleganter. So könnte man zum Beispiel die Webapplikation „Asciiflow“ benutzen. Mit dieser Webapplikation ist es ohne Probleme möglich Flussdiagramme zu erstellen

Asciiflow in Aktion

Asciiflow in Aktion

Die einstehenden Diagramme können dabei sowohl importiert als auch exportiert werden. Daneben gibt es einige Werkzeug, sowie eine Unde und Redo Funktionalität. Zu finden ist Asciiflow dabei unter http://www.asciiflow.com/ zu finden.

Auf „protected“ und „private“ Eigenschaften unter C# zugreifen

Im Normalfall hat es gute Gründe das man auf bestimmte Eigenschaften einer Klasse nicht zugreifen kann. Manchmal ist es aber dennoch nützlich genau dies zu tun. So zum Beispiel bei der „NetworkStream“ Klasse welche im .NET/Mono Framework zu finden ist. Diese hat dabei die Eigenschaft „Socket“ welche „protected“ ist. Möchte man nun doch auf diese Eigenschaft zugreifen, so muss man zu etwas Magie in Form von Reflection greifen:

NetworkStream stream;
...
PropertyInfo pi=stream.GetType().GetProperty("Socket", BindingFlags.Public|BindingFlags.NonPublic|BindingFlags.Instance);
Socket socket=(Socket)pi.GetValue(stream, null);

Hier holt man sich mittels Reflection die Eigenschaft und castet sie. Anschließend hat man dann in der Variable „socket“ die entsprechende Eigenschaft und kann mit dieser dann machen was man möchte.

JavaScript Integer in Enum umwandeln

In JavaScript ist es durchaus möglich Enums anzulegen:

var Protocol =
{ 
  PAMSG_REGISTER:0x0000, // D version, S username, S password, S email, S captcha response
  APMSG_REGISTER_RESPONSE:0x0002, // B error, S updatehost, S Client data URL, B Character slots
  PAMSG_UNREGISTER:0x0003, // S username, S password
}

Interessant wird es nun, wenn man versucht aus einer Zahl in diesem Beispiel der „2“ wieder einen Enum („APMSG_REGISTER_RESPONSE“) zu erzeugen. Hierbei hilft die Funktion „getEnumFromInteger“ welche wie folgt aussieht:

function getEnumFromInteger(enumWithValues, integer)
{
  var keys = Object.keys(enumWithValues);
    
  for (var i=0; i<keys.length; i++)
  {
    if(enumWithValues[keys[i]]==integer) return keys[i];
  }
    
  return null;
}

Damit wird der Enum durchiteriert und der entsprechende Schlüssel, welcher dem Integer entspricht, zurückgegeben.