# Monday, July 28, 2008

Winsock connect immer erfolgreich

Nun, ein seltsames Problem ist mir da über den Weg gelaufen. Letzte Woche ist mein neues Werkzeug angekommen; Ein Laptop soll meine Shuttle-PC ersetzen. Heute habe ich zum ersten Mal die Windows-Version unseres aktuellen Projekts gestartet und dabei ein Verhalten beobachtet, dass mir bereits einige Entwickler aus dem Team berichtet hatten, ich jedoch nicht reproduzieren konnte.

Der Laptop ist mit einem Kabel am Netzwerk angeschlossen. Das Kabel  war vorher an einem i.LON 100 internet server angeschlossen, für den ich ein Netzwerk-Interface programmiert habe. Da dies nun abgeschlossen ist, habe ich dem Server einfach mal das Kabel geklaut und meinen Laptop damit verbunden. Als ich nun die Software angeworfen habe, hat diese auch schön brav die Konfigurationsdatei für das Interface gefunden, die EInstellungen ausgelesen und wollte diese mit dem Server angleichen. Also, Socket aufmachen und Packete tauschen. Was ja nicht funktioniert, da der Server nicht am Netzwerk hängt. Allerdings schlug beim connect() nicht der Timeout zu, sondern es wurde eine korrekte Verbindung gemeldet.

Auf die Schnelle konnte ich im Netz nichts finden, auch eine andere Entwickler hatten dies noch nicht beobachtet. Ich dachte daher, dass es an der geänderten Netzwerkhardware oder dem Treiber liegen müssen. Also habe ich den aktuellsten Treiber installiert; jedoch ohne Erfolg.

Gerade bin ich jedoch auf eine interessante Seite gestoßen: Die winsock Implementierung meldet immer einen erfolgreichen connect, wenn eine Modemverbindung verfügbar ist. Wobei verfügbar nicht mit geöffnet zu verwechseln ist, sondern wenn ein Modem vorhanden ist.

Ich werde also morgen mal im BIOS das Modem des Laptops deaktivieren und dann mal schauen, ob ich noch immer einen erfolgreichen Verbindungsversuch gemeldet bekomme. Für mich als Winsock-Neuling auf jeden Fall ein lehrhafter Tag. Morgen mehr...

Nachtrag 31.07.08:
Es ist nicht ganz beim 29.07. geblieben. Allerdings habe ich mittlerweile einige Test durchgeführt. Weder das Ausschalten des Modems in Gerätemanager noch das Ausschalten des Modems im BIOS hat das Ergebnis de Connect-Methode beeinflusst. Ich werde das ganze noch einige Male beobachten. Vlt. hat ja noch jemand eine Idee? Sollte sich was ergeben, werde ich es natürlich hier bekannt geben.

Monday, July 28, 2008 7:20:13 PM (W. Europe Standard Time, UTC+01:00) #    Comments [0] | Trackback
# Tuesday, July 22, 2008

Spartanisch Programmieren - von Stefan Lieser

Stefan Lieser schreibt in seinem Blog, er wäre ein Freund des spartanischen Programmierens. Ich kann mich ihm dort nicht anschließen, da ich lieber Code schreibe, der sich lesen lässt; Variablen bekommen Namen, die auch ein Außenstehender versteht, Code wird kommentiert, es wird mit Freizeilen zur Strukturierung gearbeitet etc. Aber das ist, wie Stefan bereits schrieb, eine persönliche Einstellung. Wenn sie nicht durch Implementierungskonventionen erzwungen oder verboten wird.

Weshalb ich mich jedoch aufgefordert fühle, auf seinen Blogpost zu antworten, ist sein Fast-Exit-Beispiel. Um eine große Verschachtelungstiefe zu vermeiden, schreibt Stefan lieber viele Exits in einer Funktion, statt seinen Code ordentlich zu strukturieren. Zuerst ein schlechtes Beispiel (von Stefan ebenfalls als schlecht angesehen):
public void DoSomething() {
  if (a) {
    if (b) {
      if (c) {
        DoItRealy();
      }
    }
  }
}
Nun seine Verbesserung (Stichwort Fast-Exit), mit der ich noch immer nicht einverstanden bin:
public void DoSomething() {
  if (!a) {
    return;
  }
  if (!b) {
    return;
  }
  if (!c) {
    return;
  }

  DoItRealy();
}

Und nun zwei Arten, die ich persönlich den beiden Vorangegangenen (nicht uneingeschränkt, aber meistens) vorziehen würde:
public void DoSomething() {
  if ( ( a )
    && ( b )
    && ( c ) )
  {
    DoItRealy();
  }
}

public void DoSomething() {
  if (!a) 
  {
    Log("Not a");
  }
  else if (!b)
  {
    Log("Not b");
  }
  else if (!c)
  {
    Log("Not c");
  }
  else
  {
    Log("All requirements complied.");
    DoItRealy();
  }
}

Tuesday, July 22, 2008 6:01:54 PM (W. Europe Standard Time, UTC+01:00) #    Comments [1] | Trackback
# Thursday, July 17, 2008

creative commons-Party in Siegen

So, nach langer Zeit nochmal ein Post. Diesmal auch nur, da der Lokalpatriotismus mich dazu treibt ;) Technische Einträge werden auch wieder hier erscheinen, allerdings ist momentan die Zeit einfach etwas zu knapp.

Nun zum eigentlichen Thema: In Siegen findet am 05.09.2008 die erste (Siegens erste) "creative commons"-Party statt. Das 7inch geht auch diesmal wieder in die Vorreiterrolle; dort geht es um 19:00 Uhr los, der Eintritt ist frei (was auch sonst). Wer möchte, kann sich die dort gespielte Musik auf einen mitgebrachten USB-Stick kopieren lassen. Und wer nicht kommen kann, findet neben einigen Informationen auch zwei Live-Streams auf der Seite der Veranstalter.

Falls sich jemand fragt, was eine "creative commons"-Party ist: Creative Commons ist eine Lizenzform, so wie die GPL. Nun gibt es Musiker, die ihre Musik unter einer CC-Lizenz veröffentlichen. Je nach Ausprägung kann diese Musik unterschiedlich verwendet werden (herunterladen und weiterverbreiten, weiterverbreiten nur mit Nennung des Künstlers etc.). Die Beiträge in diesem Blog werden zum Beispiel unter der "CC by-nc-sa"-Lizenz veröffentlicht: Man darf vervielfältigen, veröffentlichen, verbreiten und weiterverarbeiten. Bedingungen: Namensnennung, keine kommerzielle Nutzung, Weitergabe unter gleichen Bedingungen.

Eine "creative commons"-Party nun ist eine Party, bei der nur Musik gespielt wird, die frei erhältlich ist, sozusagen Open-Source-Musik. Daher ist auch die Mitnahme auf USB-Stick möglich.

Thursday, July 17, 2008 11:33:58 AM (W. Europe Standard Time, UTC+01:00) #    Comments [0] | Trackback