<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Ragnarok Boredom™ Blog</title>
	<atom:link href="http://siriuswhite.de/blog/feed/?lang=de" rel="self" type="application/rss+xml" />
	<link>http://siriuswhite.de/blog</link>
	<description>Just another WordPress weblog</description>
	<lastBuildDate>Thu, 15 Jul 2010 18:51:07 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>de</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>The case of GrfBuilder</title>
		<link>http://siriuswhite.de/blog/2010/07/deutsch-the-case-of-grfbuilder/?lang=de</link>
		<comments>http://siriuswhite.de/blog/2010/07/deutsch-the-case-of-grfbuilder/?lang=de#comments</comments>
		<pubDate>Tue, 06 Jul 2010 19:52:19 +0000</pubDate>
		<dc:creator>Sirius_White</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://siriuswhite.de/blog/?p=344</guid>
		<description><![CDATA[Everade trug mir gerade ein recht skuriles Problem vor: Mit Harmony verschlüsselte Dateien ließen sich nicht mit GrfBuilder packen. Die Dateien würden einfach übersprungen. Die originalen Dateien hingegen würden wunderbar funktionieren.
Erste Reaktion: Wie soll das gehen? GrfBuilder sollte die Dateien schließlich neutral behandeln und unabhängig von Inhalt packen. Allerdings ließ sich das Problem mit den [...]]]></description>
			<content:encoded><![CDATA[<p>Everade trug mir gerade ein recht skuriles Problem vor: Mit Harmony verschlüsselte Dateien ließen sich nicht mit GrfBuilder packen. Die Dateien würden einfach übersprungen. Die originalen Dateien hingegen würden wunderbar funktionieren.<br />
Erste Reaktion: Wie soll das gehen? GrfBuilder sollte die Dateien schließlich neutral behandeln und unabhängig von Inhalt packen. Allerdings ließ sich das Problem mit den besagten Dateien tatsächlich nachbilden. Seltsam..</p>
<p><a href="http://siriuswhite.de/blog/wp-content/uploads/2010/07/grfbuilder_missing_files.png" rel="lightbox[344]"><img src="http://siriuswhite.de/blog/wp-content/uploads/2010/07/grfbuilder_missing_files-456x232.png" alt="" title="GrfBuilder: Missing Files" width="456" height="232" class="aligncenter size-medium wp-image-345" /></a></p>
<p>Wie man sehen kann fehlen die größeren Dateien. Könnte es sein, dass er die Dateien aus irgendeinem Grund wirklich gar nicht erst liest? Kein Problem &#8211; einfach mal einen auf <a href="http://blogs.technet.com/b/markrussinovich/">Mark Russinovich</a> machen und <a href="http://technet.microsoft.com/de-de/sysinternals/bb896645.aspx">Process Monitor</a> anschmeißen:<br />
<a href="http://siriuswhite.de/blog/wp-content/uploads/2010/07/grfbuilder_procmon.png" rel="lightbox[344]"><img src="http://siriuswhite.de/blog/wp-content/uploads/2010/07/grfbuilder_procmon-456x301.png" alt="" title="GrfBuilder: Process Monitor" width="456" height="301" class="aligncenter size-medium wp-image-346" /></a></p>
<p>Das sieht schonmal interessant aus! Man kann erkennen, dass alle Dateien geöffnet (<code>CreateFile</code>) und auch vollständig gelesen (<code>ReadFile</code>) werden. Einen wichtigen Unterschied gibt es jedoch: Nachdem die beiden funktionierenden Dateien gelesen sind wird in die test.grf geschrieben (markierte <code>WriteFile</code> Einträge). Offenbar werden Änderungen sofort in die GRF geschrieben. Bei der GND Datei fehlt aber dieser Schritt. Der Fehler liegt also irgendwo zwischen dem Einlesen der Daten und dem Schreiben in die GRF.<br />
GrfBuilder ist ein speziell für RO entwickeltes Tool. Könnte es also sein, dass die Dateiformate überprüft werden, bevor eine Datei in die GRF gepackt wird? Durch die Verschlüsselung würden hier zwangsläufig Fehler entstehen. Theoretisch sollte das nicht so sein, aber wer weiß. Also folgende 2 Testläufe:
<ul>
<li>Die Dateien umbenennen (.bin, .txt), den Inhalt beibehalten</li>
<li>Die Formatheader einer gültigen GAT/GND Datei an den Anfang der verschlüsselten Dateien kopieren, Inhalt und Name beibehalten</li>
</ul>
<p>Ergebnis: Der erste Testlauf brachte keine Ergebnisse, die Dateien wurden weiterhin ignoriert. Bei der zweiten Methode wurde nun jedoch eine Datei akzeptiert &#8211; die GND mit GAT Header. Interessant hierbei ist, dass ein Ändern des Inhaltes zum Erfolg geführt hat, obwohl der Dateityp mit dem verwendeten Inhalt eigentlich nichts zu tun hat. &#8230; Könnte es sich um Kompressionsproblem handeln?<br />
Mit der höchsten Komprimierungsstufe wurde ein andere Datei (GAT mit GND Header) erfolgreich hinzugefügt. Und an dem Punkt kam mir der entscheidende Verdacht: Dateien innerhalb der GRF sind komprimiert. Kompression funktioniert umso besser, je mehr wiederkehrende Strukturen vorhanden sind. Durch Verschlüsselung werden diese Strukturen jedoch zerstört, was eine Kompression schwierig bis unmöglich macht. Nun könnte es sein, dass der zur Kompression verfügbare Speicher zu klein ist, weil eine zu hohe Kompressionsrate erwartet wird, die Dateigröße sich durch die zerstörte Struktur jedoch nicht verringert, sondern vergrößert. Ein Blick in den <a href="http://ookoo.org/svn/grf/src/grf.c">Source Code</a> der verwendeten GRF Library bestätigte diese Vermutung:
<ul>
<code>// 1. Compress file, to have its size<br />
ptr_comp = malloc(<span style="color:red;">size+100</span>);<br />
if (ptr_comp == NULL) return NULL; /* out of memory? */<br />
comp_size = zlib_buffer_deflate(ptr_comp, size + 100, ptr, size, handler->compression_level);</code></ul>
<p>Der Entwickler hat wohl angenommen, dass unter keinen Umständen die Datei sich durch die Kompression um mehr als 100 Bytes vergrößert. Das könnte hier jedoch der Fall sein. Der entsprechende ASM Block war auch schnell gefunden:<br />
<a href="http://siriuswhite.de/blog/wp-content/uploads/2010/07/grfbuilder_asm.png" rel="lightbox[344]"><img src="http://siriuswhite.de/blog/wp-content/uploads/2010/07/grfbuilder_asm.png" alt="" title="GrfBuilder: ASM" width="433" height="100" class="aligncenter size-full wp-image-348" /></a></p>
<p>Wenn man hier eine größere Zahl addiert sollte man den Bug zumindest umgehen können. Da man mit dem verwendeten Befehl maximal 127 addieren kann, habe ich den Codefluss einfach auf dir davor liegende Funktion (Datei umbenennen) umgeleitet, dort addiert und einen Rücksprung platziert.<br />
Eine bessere Lösung wäre es übrigens, nicht einfach wild drauf los zu schätzen, sondern <code><a href="http://refspecs.freestandards.org/LSB_3.0.0/LSB-Core-generic/LSB-Core-generic/zlib-compressbound-1.html">compressBound</a></code> zu verwenden:
<ul>
<blockquote><p>The compressBound() shall return a value representing the upper bound of an array to allocate to hold the compressed data in a single call to compress() or compress2(). This function may return a conservative value that may be larger than sourceLen.</p></blockquote>
</ul>
<p>Im Fall von Everade genügte aber vorerst mein &#8220;Hackfix&#8221;. Mit der modifizierten grf.dll kann man nun zwar keine Dateien mehr umbenennen, aber dafür alle Dateien problemlos komprimieren. <img src='http://siriuswhite.de/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://siriuswhite.de/blog/2010/07/deutsch-the-case-of-grfbuilder/?lang=de/feed/&amp;lang=de</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>The case of RCX</title>
		<link>http://siriuswhite.de/blog/2010/06/deutsch-the-case-of-rcx/?lang=de</link>
		<comments>http://siriuswhite.de/blog/2010/06/deutsch-the-case-of-rcx/?lang=de#comments</comments>
		<pubDate>Mon, 21 Jun 2010 16:16:26 +0000</pubDate>
		<dc:creator>Sirius_White</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://siriuswhite.de/blog/?p=338</guid>
		<description><![CDATA[Harmony ist dafür da, Fremdsoftware zu blockieren. Das tut es auch recht gut. Problematisch wird es nur, wenn man ein Programm explizit unterstützen muss&#8230; Die Rede ist von RCX &#8211; einer japanische Erweiterung des RO Clients, die vielen &#8220;alten Hasen&#8221; unter RoCha bekannt sein dürfte. Ansonsten verschafft dieses Video einen recht guten Überblick über die [...]]]></description>
			<content:encoded><![CDATA[<p>Harmony ist dafür da, Fremdsoftware zu blockieren. Das tut es auch recht gut. Problematisch wird es nur, wenn man ein Programm explizit unterstützen muss&#8230; Die Rede ist von RCX &#8211; einer japanische Erweiterung des RO Clients, die vielen &#8220;alten Hasen&#8221; unter RoCha bekannt sein dürfte. Ansonsten verschafft dieses Video einen recht guten Überblick über die Features:</p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="425" height="344" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube.com/v/GqANP0eTY4A&amp;hl=de_DE&amp;fs=1&amp;" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="425" height="344" src="http://www.youtube.com/v/GqANP0eTY4A&amp;hl=de_DE&amp;fs=1&amp;" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<p>Ein Kunde sprach mich vor kurzem darauf an, dass RCX nicht mit Harmony kompatibel sei. Nicht verwunderlich, schließlich lädt RCX nicht nur eine <a href="http://de.wikipedia.org/wiki/DLL-Injection">fremde DLL</a>, sondern fängt auch <a href="http://de.wikipedia.org/wiki/Winsock">Winsock</a> Funktionen ab, um anhand der Netzwerkpakete beispielsweise Skilleffekte anzuzeigen. So begann also mein Odysee hin zu einem RCX Fix&#8230;</p>
<p>Nach kurzer Codeanalyse stellte sich heraus, warum andere Bot-Protections keine derartigen Probleme haben: Die Netzwerkfunktionen arbeiten nicht direkt auf WinAPI Ebene &#8211; RCX umgeht sie daher dezent. Da Harmony auf mehreren Layern arbeitet und alle davon unter RCX liegen gestaltet sich die Sache etwas schwieriger.<br />
Mein finaler Plan:
<ul>
<li>Über <a href="http://de.wikipedia.org/wiki/Wei%C3%9Fe_Liste">Whitelisting</a> wird der RCX DLL der Zugriff auf Harmony gestattet</li>
<li>Ein- und ausgehende Netzwerkpakete werden gesammelt und über emulierte Winsock Aufrufe an RCX übergeben</li>
<li>????</li>
<li>Profit!</li>
</ul>
<p>Punkt 1 war schnell erledigt. Die Emulation der Winsock Aufrufe wurde etwas ekelhafter: RCX fängt alle Winsock Aufrufe ab und muss daher selbstständig die originalen Funktionen aufrufen. Bei eingehenden Paketen würde RCX also selbstständig &#8220;nachfragen&#8221;, ob Pakete vorhanden sind, feststellen, dass dem nicht so ist und einfach mal nichts tun. Ich durfte daher die originalen Winsock Funktionsaufrufe ebenfalls abfangen und RCX mit meinen Daten füttern. Dazu kommt, dass einige Harmony Layer den RO Client derart modifizieren, dass eine Rekonstruktion der originalen Pakete nur mit erheblichem Aufwand möglich ist. Yay.</p>
<p>Im Endeffekt konnte ich den Code auf ~300 Zeilen (und 8 Stunden Arbeit&#8230;) kürzen, trotzdem denke ich lieber nicht so oft daran, was bei aktiviertem RCX Fix mit Netzwerkpaketen angestellt wird:<br />
<a href="http://siriuswhite.de/blog/wp-content/uploads/2010/06/harm_rcx_fix.png" rel="lightbox[338]"><img src="http://siriuswhite.de/blog/wp-content/uploads/2010/06/harm_rcx_fix.png" alt="" title="harm_rcx_fix" width="435" height="247" class="aligncenter size-full wp-image-340" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://siriuswhite.de/blog/2010/06/deutsch-the-case-of-rcx/?lang=de/feed/&amp;lang=de</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Omnipost!</title>
		<link>http://siriuswhite.de/blog/2010/05/deutsch-omnipost/?lang=de</link>
		<comments>http://siriuswhite.de/blog/2010/05/deutsch-omnipost/?lang=de#comments</comments>
		<pubDate>Sun, 30 May 2010 16:01:26 +0000</pubDate>
		<dc:creator>Sirius_White</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://siriuswhite.de/blog/?p=315</guid>
		<description><![CDATA[Wie betitelt man einen Post, in dem es um alles mögliche geht? Keine Ahnung. Ich nenn ihn jetzt einfach Omnipost.
Was gibts Neues?
Green Mile
Einem Hinweis von Shinryo folgend habe ich mir vor einigen Tagen Green Mile angeschaut. Es geht um einen Gefängniswärter in den 1930er Jahren, der für den Todestrakt der Anstalt, die &#8220;Green Mile&#8221;, verantwortlich [...]]]></description>
			<content:encoded><![CDATA[<p>Wie betitelt man einen Post, in dem es um alles mögliche geht? Keine Ahnung. Ich nenn ihn jetzt einfach Omnipost.</p>
<p><em>Was gibts Neues?</em></p>
<p><strong>Green Mile</strong><br />
<a href="http://siriuswhite.de/blog/wp-content/uploads/2010/05/200px-Green_mile.jpg" rel="lightbox[315]"><img src="http://siriuswhite.de/blog/wp-content/uploads/2010/05/200px-Green_mile.jpg" alt="" title="Green Mile" width="200" height="297" class="alignleft size-full wp-image-316" /></a>Einem Hinweis von <a href="http://weero.servegame.org/blog/">Shinryo</a> folgend habe ich mir vor einigen Tagen Green Mile angeschaut. Es geht um einen Gefängniswärter in den 1930er Jahren, der für den Todestrakt der Anstalt, die &#8220;Green Mile&#8221;, verantwortlich ist. Nachdem er im Laufe der Jahre bereits viele Exekutionen vollstreckt hat, beginnt sich mit der Einlieferung des mysteriösen John Coffey jedoch einiges zu ändern. Der Neue besitzt die wundersame Gabe, Menschen von Ihren Leiden befreien zu können.<br />
Es gibt wirklich wenige Filme, die mich emotional erreichen. Meine Haupterkenntnis nach Titanic war, dass ich irgendwann eine Kreuzfahrt machen möchte. Green Mile hingegen hat es geschafft, mich selbst bei der &#8220;Wunderheilungsgeschichte&#8221; eines &#8220;Gotteswunders&#8221; mitfühlen zu lassen. Und genau dafür wird mir dieser Film wohl noch auf Jahre positiv in Erinnerung bleiben. Mein Dank an Shinryo und der Appell an all die anderen, sich diesen Film unbedingt anzusehen!</p>
<p><strong>Hardware 1 : 0 Me</strong><br />
Ich war vor 2 Wochen in Hamburg. LAN-Party bei T-Bash, mit einigen anderen Hamburgern und Sirius_Black. Wir haben zwar nichtmal die Hälfte der geplanten Spiele geschafft, aber die meisten waren dennoch <a href="http://sauerbraten.org/">sehr lustig</a>. Begleitet wurde die LAN natürlich &#8211; wer hätte es anders erwartet &#8211; von diversen technischen Problemen. Eine Maus ist gestorben, kein Spiel hat auf Anhieb bei allen funktioniert und ich hatte das Vergnügen mit Bluescreens. LAN-Party halt.<br />
Aus Faulheit habe ich meinen Rechner per Post zurück geschickt und zurück in Eisenach die Systemplatte in meinen alten Rechner eingebaut. Bluescreens. Was zum..?<br />
Logische Schlussfolgerung: Platte kaputt. Da ich eh vor hatte, die mittlerweile 3 Jahre alte Platte in naher Zukunft auszutauschen, habe ich mir daraufhin 2x 250GB 2,5&#8243; Festplatten und ein neues Gehäuse gekauft. Es ist echt faszinierend, wie viel Speicher man in der Größe (und dem Gewicht!) einer Zigarettenschachtel unterbringen kann.<br />
Als das Mindfactory Paket angekommen war also alles in den neuen Rebel 9 (siehe Bild) eingebaut und eingeschaltet. Lüfter drehen am Rad (na, krieg ich ein Bienchen für dieses Wortspiel?) und ansonsten &#8230; passiert nichts. Nach einigen Tests die Erkenntis: Mainboard schrott. Super! Nach kurzem Suchen habe ich sogar noch die Rechnung gefunden &#8211; Juli 2009 gekauft. Allerdings nicht bei <a href="http://www.mindfactory.de">Mindfactory</a>, sondern bei <a href="http://www.compuland.de/">Compuland</a>. Über Google ließen sich schnell negative Berichte bzgl. der Gewährleistungshandhabung finden. Naja, was solls. Einfach mal probieren. Und, wer hätte es anders erwartet:</p>
<blockquote><p><em>Hiermit bestätigen wir Ihnen den Erhalt der Ware, leider konnten wir nicht feststellen, das es sich um ein Gewährleistungsfall handelt.<br />
Wir haben die Ware daher ohne Anerkennung einer Rechtspflicht zur Prüfung der Garantieansprüche zum Lieferanten / Hersteller aus Kulanz weitergeleitet.</em></p></blockquote>
<p>Mal sehen. Ich glaube, das gibt noch Stress.</p>
<p>Fun Fact: Ich habe vor einigen Tagen zum Testen meiner Backup Platte einen komplette Scan aller Sektoren durchgefüht. Da die Platten für die Dauer der Überprüfung nicht genutzt werden können logischerweise über Nacht. Und ich muss sagen &#8211; mein Biorhythmus ist mittlerweile ziemlich effizient. Nicht nur wache ich seit einer Woche grundsätzlich vormittags auf, an dem Tag bin ich auch noch exakt eine Minute vor Abschluss der Überprüfung aufgewacht. Praktisch.<br />
<div id="attachment_319" class="wp-caption aligncenter" style="width: 310px"><a href="http://siriuswhite.de/blog/wp-content/uploads/2010/05/sharkoon_rebel9_eco_black.jpg" rel="lightbox[315]"><img src="http://siriuswhite.de/blog/wp-content/uploads/2010/05/sharkoon_rebel9_eco_black-300x400.jpg" alt="" title="sharkoon_rebel9_eco_black" width="300" height="400" class="size-medium wp-image-319" /></a><p class="wp-caption-text">Rebel 9. Was ein Tower.</p></div></p>
<p><strong>Season Finale!</strong><br />
Früher habe ich <em>Serienjunkies</em> immer ein wenig spöttisch betrachtet. Wie kann man nur so viel Freude an irgendeiner doofen US-Serie mit eingespielten Lachern finden? Mittlerweile verfolge ich selber aktiv <strong>How I Met Your Mother</strong> und <strong>The Big Bang Theory</strong>. Beide hatten diese Woche Finale. Zumindest für diese Staffel. How I Met Your Mother hat mich nicht vom Stuhl gehauen. Bei Big Bang Theory habe ich wie eigentlich jede Woche herzlich gelacht. Aber mir ist zumindest klar geworden, dass man Serien nicht vergleichen kann. Big Bang Theory setzt auf Comedy. Situationslacher. Hingegen hat How I Met Your Mother diese Staffel versucht, den feinen Grad zwischen Unterhaltung und tiefgreifenderen Inhalten zu finden. Nicht sonderlich erfolgreich, aber die Schreiber haben für sich hoffentlich Erkenntnisse gewonnen, die in der sechsten Staffel umsetzen werden. Aber wie dem auch sei &#8211; jeder hat auf dem Gebiet seine eigene Meinung.<br />
Allgemein habe ich in letzter Zeit Gefallen an Serien gefunden: Mit <a href="http://de.wikipedia.org/wiki/The_IT_Crowd">The IT Crowd</a> eine köstliche und erschreckend zutreffende Parodie auf die IT Abteilungen dieser Welt und mit <a href="http://de.wikipedia.org/wiki/Achtung!_Streng_Geheim!">Achtung! Streng Geheim!</a> eine Serie aus den frühen 90ern. Ich habe sie damals immer nur zufällig beim &#8220;Durchzappen&#8221; gefunden und fand sie unglaublich toll. Jetzt habe ich geballte 17 Stunden davon, verteilt auf 12 85-minütige Folgen. Ein Muss für jeden Fan cooler 90er Kids.<br />
<div id="attachment_327" class="wp-caption aligncenter" style="width: 281px"><a href="http://siriuswhite.de/blog/wp-content/uploads/2010/05/big_bang_theory_xlg.jpg" rel="lightbox[315]"><img src="http://siriuswhite.de/blog/wp-content/uploads/2010/05/big_bang_theory_xlg-271x400.jpg" alt="" title="" width="271" height="400" class="size-medium wp-image-327" /></a><p class="wp-caption-text">The Big Bang Theory</p></div></p>
<p><strong>Harmony</strong><br />
Der obligatorische Harmony Part. <img src='http://siriuswhite.de/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  Ich habe in den letzten Tagen am Lizenzsystem einiges umgestellt und ein paar nervige Bugs entfernt. Sehr hilfreich war hier ein LuminaRO Spieler, der mir über mehrere Stunden Debugging per TeamViewer ermöglicht hat. Anderenfalls hätte das Fixen des Bugs sicherlich eine ganze Weile länger gedauert. Insgesamt steht ein neuer Debugging Ansatz aber noch immer recht weit oben auf der Roadmap. Ein Projekt wie Harmony zu debuggen gestaltet sich sonst als absoluter Albtraum.<br />
Robin aka Zungarius hat sich weiterhin bereit erklärt ein kleines Design für meine Infopage vorzubereiten. Die innovative Domain <strong>harmonize.it</strong> ist ja bereits registriert&#8230; <img src='http://siriuswhite.de/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><del><strong>Grand Prix d’Eurovision de la Chanson</strong></del><br />
<strong>Eurovision Song Contest</strong><br />
Deutschland hat gewonnen!!!11 Ich bin so unglaublich glücklich!!!1111einseinself<br />
No, srsly. Wie <a href="http://siriuswhite.de/blog/2008/05/eurovision-song-contest/?lang=de">sonst auch</a> habe ich mir gestern Abend die Punktvergabe des Eurovision Song Contest angesehen. Ich gönne es Lena. Sie wirkte einfach &#8230; natürlicher als die anderen Teilnehmer. Und mit Mezzo Mix kann man eh nichts falsch machen.<br />
Ich weiß nicht mehr genau wann und vom der Kommentar kam, aber &#8220;sie hat da einfach mal Party mit der Masse gemacht&#8221; trifft es denke ich. Meiner Meinung nach auf jeden Fall ein verdienter Sieg. <img src='http://siriuswhite.de/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Mh. Das ist jetzt doch länger als erwartet geworden&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://siriuswhite.de/blog/2010/05/deutsch-omnipost/?lang=de/feed/&amp;lang=de</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Geschafft! &#8211; Rückblick und Ausblick auf die Harmony Entwicklung</title>
		<link>http://siriuswhite.de/blog/2010/05/deutsch-geschafft-ruckblick-und-ausblick-auf-die-harmony-entwicklung/?lang=de</link>
		<comments>http://siriuswhite.de/blog/2010/05/deutsch-geschafft-ruckblick-und-ausblick-auf-die-harmony-entwicklung/?lang=de#comments</comments>
		<pubDate>Sat, 22 May 2010 04:07:18 +0000</pubDate>
		<dc:creator>Sirius_White</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://siriuswhite.de/blog/?p=306</guid>
		<description><![CDATA[Harmony 3.1 ist fertig!
&#8220;Ich werde im Laufe des heutigen Tages das 3.1 Release Package fertig machen&#8221;
Sirius_White, 07.05.2010
Zugegeben, der &#8220;heutige Tag&#8221; ist es nicht mehr ganz geworden. Aber es wurde immerhin kein Duke Nukem Forever!  
Vor 2 Tagen sind die vermeintlich letzten Zeilen für 3.1 fertig geworden und Zephyrus hat sein lang ersehntes Update erhalten. [...]]]></description>
			<content:encoded><![CDATA[<p>Harmony 3.1 ist fertig!</p>
<blockquote><p>&#8220;Ich werde im Laufe des heutigen Tages das 3.1 Release Package fertig machen&#8221;<br />
<em>Sirius_White, 07.05.2010</em></p></blockquote>
<p>Zugegeben, der &#8220;heutige Tag&#8221; ist es nicht mehr ganz geworden. Aber es wurde immerhin kein Duke Nukem Forever! <img src='http://siriuswhite.de/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Vor 2 Tagen sind die vermeintlich letzten Zeilen für 3.1 fertig geworden und Zephyrus hat sein lang ersehntes Update erhalten. 2 Stunden später war dann auch ein ekelhafter Race-Condition-Bug behoben und nach den tatsächlich letzten Zeilen der 3.1 Branch als abgeschlossen markiert. Ursprünglich war der Release für Ende März angesetzt, aber durch die &#8220;Verspätung&#8221; sind immerhin zahlreiche neue Features eingeflossen, die eigentlich erst für 3.2 geplant waren. Ich kann mittlerweile denke ich mit Fug und Recht behaupten, dass in Punkto Sicherheit die aktuelle Harmony Version allen mir bekannten Anti-Bot Systemen <strong>ebenbürtig</strong> bis <strong>überlegen</strong> ist. Aber das kann ja jeder sagen, also bitte reverst Harmony &#8211; ich lege Wert auf <strong>Feedback</strong>! <img src='http://siriuswhite.de/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>Für die kommenden Versionen ist bereits einiges geplant. Die oft gewünschte <strong>GRF Protection</strong> wird mit 3.2 eingebaut werden. Die relevanten Funktionen sind bereits seit Monaten vorhanden, ich muss das Interface dafür nur etwas benutzerfreundlicher gestalten. Ich setze hierbei auf verschlüsselte Dateien innerhalb der GRF, um eine größtmögliche Kompatibilität mit vorhandenen Patchern zu gewährleisten. Aber mehr dazu wenn es soweit ist. <img src='http://siriuswhite.de/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /><br />
Auf lange Sicht steht vor allem ein Punkt im Vordergrund: Das Öffnen der Harmony Plattform für <strong>außenstehende Entwickler</strong>. Das bezieht sich einerseits natürlich auf den <strong>Window Manager</strong> (RO Interface mit Lua erweitern), aber auf das komplette Harmony Framework ansich. Durch den modularen Aufbau sollte es möglich sein, ausgewählten Entwicklern eine <strong>Harmony SDK</strong> zur Verfügung zu stellen und somit die Entwicklung neuer Client Erweiterungen zu fördern, ohne dabei die Sicherheit des Systems zu beeinträchtigen.<br />
Aber ich will an dieser Stelle nicht zu viel vorweg nehmen. Kommt Zeit, kommt Harmony 3.2. <img src='http://siriuswhite.de/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Mein Ruf nach gelangweilten Grafikern hatte übrigens Erfolg!<br />
<a href="http://siriuswhite.de/blog/wp-content/uploads/2010/05/harmonybanner.png" rel="lightbox[306]"><img src="http://siriuswhite.de/blog/wp-content/uploads/2010/05/harmonybanner.png" alt="" title="harmonybanner" width="250" height="120" class="alignleft size-full wp-image-308" /></a>Beginnend mit 3.2 wird Harmony endlich einen kleinen Splash Screen haben, auf den ich dank grafischer Omni-Inkompetenz bisher leider verzichten musste. Danke an dieser Stelle an <strong>Argon</strong>!</p>
]]></content:encoded>
			<wfw:commentRss>http://siriuswhite.de/blog/2010/05/deutsch-geschafft-ruckblick-und-ausblick-auf-die-harmony-entwicklung/?lang=de/feed/&amp;lang=de</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Neulich beim Harmony coden&#8230;</title>
		<link>http://siriuswhite.de/blog/2010/05/deutsch-neulich-beim-harmony-coden/?lang=de</link>
		<comments>http://siriuswhite.de/blog/2010/05/deutsch-neulich-beim-harmony-coden/?lang=de#comments</comments>
		<pubDate>Sun, 09 May 2010 11:41:35 +0000</pubDate>
		<dc:creator>Sirius_White</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://siriuswhite.de/blog/?p=302</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<div class="wp-caption aligncenter" style="width: 355px"><img alt="Perfect Harmony!" src="http://siriuswhite.de/img/perfect_harmony.png" width="345" height="101" /><p class="wp-caption-text">Na dann kann ja nichts mehr schief gehen!</p></div>
]]></content:encoded>
			<wfw:commentRss>http://siriuswhite.de/blog/2010/05/deutsch-neulich-beim-harmony-coden/?lang=de/feed/&amp;lang=de</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Harmony &#8211; der Name ist Programm!</title>
		<link>http://siriuswhite.de/blog/2010/05/deutsch-harmony-der-name-ist-programm/?lang=de</link>
		<comments>http://siriuswhite.de/blog/2010/05/deutsch-harmony-der-name-ist-programm/?lang=de#comments</comments>
		<pubDate>Fri, 07 May 2010 13:30:27 +0000</pubDate>
		<dc:creator>LightFighter</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://siriuswhite.de/blog/?p=275</guid>
		<description><![CDATA[&#8230; oder auch nicht.
Ich habe mich vor ein paar Tagen mal wieder dazu bewegt, mich mit  Harmony zu beschäftigen. Um genau zu sein, habe ich am Window Manager  gearbeitet. Das, was ich während dieser Zeit allerdings empfunden habe,  war alles andere als &#8220;Harmonie&#8221;. Ich würde die Zeit eher als  anstrengend, nervenaufreibend [...]]]></description>
			<content:encoded><![CDATA[<p>&#8230; oder auch nicht.</p>
<p>Ich habe mich vor ein paar Tagen mal wieder dazu bewegt, mich mit  Harmony zu beschäftigen. Um genau zu sein, habe ich am Window Manager  gearbeitet. Das, was ich während dieser Zeit allerdings empfunden habe,  war alles andere als &#8220;Harmonie&#8221;. Ich würde die Zeit eher als  anstrengend, nervenaufreibend oder &#8220;OMG Warum funktioniert das nicht?!&#8221;  bezeichnen..</p>
<div>Um diesem Artikel mal die Pointe vorwegzunehmen: ich habe es  dennoch geschafft, ein bisschen was auf die Reihe zu kriegen. Daniel hat  schließlich einige Vorarbeit geleistet und ich konnte am Anfang ohne  viel Zeit- und Arbeitsaufwand ein total unschuldig wirkendes und leeres  Custom Window bewundern: <strong>[Oder auch nicht - wegen kleinen PC/Mac  Migrationsproblemen, ist der Screen leider abhanden gekommen. Ich werd  ihn schnellstmöglich reproduzieren, sorry.]</strong></div>
<p>Nachdem die erste Euphorie verflogen war, ging dann aber auch schon  der Horror los. Ich war so naiv zu denken, dass mein größtes Problem das  Durcharbeiten und Verstehen des bestehenden Harmony Codes sein würde.  Doch als dies mehr oder weniger hinter mir lag, schien dennoch nichts zu  funktionieren. Egal, was ich versuchte, früher oder später crashte mir  der Client gnadenlos weg &#8211; ich hatte übrigens versucht, einen  stinknormalen ImageButton auf das Formular zu klatschen. Und so verging  jedenfalls der erste Tag ohne wirkliche Ergebnisse, juhu.</p>
<p>Ich habe mich dann letztendlich dazu entschieden, den BitmapButton  erstmal ruhen zu lassen. Also nahm ich mir das Element vor, welches mir  am simpelsten erschien: UIStaticText. Gesagt getan, und nach einem  weiteren Tag Arbeit und viel sinnbildlichem Schweiß, hatte ich doch  tatsächlich einen kleinen Text auf meinem Fenster!  Das musste natürlich  erstmal mit einem kleinen, bescheidenen Freudentanz gefeiert werden ^^<strong>[Und  auch bei diesem Screen muss ich euch vorerst enttäuschen..]</strong></p>
<p>Nachdem  das erste UI Objekt funktionierte, war es nicht mehr sonderlich schwer,  weitere Objekte wie zum Beispiel eine InputBox bzw EditCtrl einzubauen.  Ganz so einfach &#8211; &#8220;harmonisch&#8221; &#8211; lief der Prozess leider nicht ab, da  durch das Party Booking System ein paar neue Eigenschaften dazu gekommen  sind. Dabei habe ich allerdings auch ein paar nützliche Features  entdeckt: Wie in der Gallery zu sehen ist, kann man diese Dinger richtig  schön bunt machen <img src='http://siriuswhite.de/blog/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' />  Desweiteren kann man Rahmendicke, Passwordchars  und vieles mehr einstellen &#8211; ziemlich praktisch.</p>

<a href='http://siriuswhite.de/blog/?attachment_id=289' title='screen000_'><img width="150" height="150" src="http://siriuswhite.de/blog/wp-content/uploads/2010/05/screen000_-150x150.jpg" class="attachment-thumbnail" alt="" title="screen000_" /></a>
<a href='http://siriuswhite.de/blog/?attachment_id=290' title='screen001'><img width="150" height="150" src="http://siriuswhite.de/blog/wp-content/uploads/2010/05/screen001-150x150.jpg" class="attachment-thumbnail" alt="" title="screen001" /></a>
<a href='http://siriuswhite.de/blog/?attachment_id=291' title='screen002'><img width="150" height="150" src="http://siriuswhite.de/blog/wp-content/uploads/2010/05/screen002-150x150.jpg" class="attachment-thumbnail" alt="" title="screen002" /></a>

<p>Soweit so gut. Was ich zu Daniels  Leiden noch nicht geschafft habe ist, den Offsetgenerator dahingehend zu  erweitern, dass auch die ganzen WindowManager Offsets für die  verschiedenen Clients generiert werden. Momentan läuft der WindowManager  leider nur auf einer einzigen Exe; ich war bisher einfach zu faul, mich  mit dem Offsetgenerator auseinander zusetzen, geschweigedenn, mir  irgendwelche Suchmuster zu überlegen. Für ein Release ist das Modul  sowieso noch viel zu unausgereift.</p>
<p>Wer sich jetzt fragt, warum ich  das Modul überhaupt in Angriff genommen habe, wenn ich doch so faul  bin, der bekomme jetzt einen Keks &#8211; gute Frage. Mein ursprünglicher  Beweggrund ist das &#8220;Chains Of War&#8221; Projekt (WoW Mod für RO) von Everade,  bei dem ich mitwirke &#8211; soviel Eigenwerbung sei mir gestattet. Everade  bat mich nämlich, die Charaktererstellung so zu erweitern, dass der  Spieler auch eine Rasse wählen kann. Sein Vorschlag war, die  Charerstellung komplett aufs ControlPanel der Webseite zu verlagern, was  ich allerdings für sehr unschön finde&#8230; Sobald das einigermaßen läuft,  werde ich hier wahrscheinlich noch ein paar Screenshots posten.</p>
<p>Bis  dahin, haltet die Ohren steif und bleibt so RO-fanatisch wie die ganzen  Freaks auf diesem Blog,</p>
<p>Lighto.</p>
]]></content:encoded>
			<wfw:commentRss>http://siriuswhite.de/blog/2010/05/deutsch-harmony-der-name-ist-programm/?lang=de/feed/&amp;lang=de</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Warum ich nicht poste!</title>
		<link>http://siriuswhite.de/blog/2010/05/warum-ich-nicht-poste/?lang=de</link>
		<comments>http://siriuswhite.de/blog/2010/05/warum-ich-nicht-poste/?lang=de#comments</comments>
		<pubDate>Fri, 07 May 2010 10:08:20 +0000</pubDate>
		<dc:creator>Sirius_White</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://siriuswhite.de/blog/?p=278</guid>
		<description><![CDATA[Zugegeben, ich war schreibfaul. Aber abgesehen davon waren die letzten Wochen hauptsächlich durch Abiturprüfungen sowie vorausgehende und anschließende Feiern geprägt. Mitte April hatte ich meine letzte Schulwoche, in der letzten Aprilwoche dann meine drei schriftlichen Prüfungen (Mathe, Englisch, Info) und heute die abschließende, mündliche Prüfung in Geschichte. Und abgesehen von der Tatsache, dass ich um [...]]]></description>
			<content:encoded><![CDATA[<p>Zugegeben, ich war schreibfaul. Aber abgesehen davon waren die letzten Wochen hauptsächlich durch Abiturprüfungen sowie vorausgehende und anschließende Feiern geprägt. Mitte April hatte ich meine letzte Schulwoche, in der letzten Aprilwoche dann meine drei schriftlichen Prüfungen (Mathe, Englisch, Info) und heute die abschließende, mündliche Prüfung in Geschichte. Und abgesehen von der Tatsache, dass ich um 7.30 Uhr (!) in der Schule sein musste, lief auch alles ganz gut. <img src='http://siriuswhite.de/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><a href="http://siriuswhite.de/blog/wp-content/uploads/2010/05/daumen_hoch.jpg" rel="lightbox[278]"><img src="http://siriuswhite.de/blog/wp-content/uploads/2010/05/daumen_hoch-400x400.jpg" alt="" title="Abi geschafft!" width="400" height="400" class="aligncenter size-medium wp-image-279" /></a></p>
<p>Also wie gesagt. Ich habe die vergangenen Wochen zum intensiven Lernen genutzt. Zumindest &#8230; größtenteils. Für die drei schriftlichen Prüfungen mindestens eine Stunde.</p>
<p>Okay, hier meine tatsächlichen Beschäftigungen:</p>
<p><strong>Assassins Creed 2</strong><br />
<a href="http://darkstrim.deviantart.com/art/Ezio-Auditore-144675257"><img src="http://siriuswhite.de/blog/wp-content/uploads/2010/05/Ezio_Auditore_by_darkstrim-150x150.png" alt="" title="Ezio Auditore by darkstrim" width="150" height="150" class="alignright size-thumbnail wp-image-281" /></a><br />
Nachdem ich den ersten Teil nur auf der Xbox bei Freunden angespielt hatte, waren meine Erwartungen an den zweiten Teil der Reihe nicht sonderlich hoch. Trotz des neuen <a href="http://www.heise.de/newsticker/meldung/Online-Zwang-fuer-Offline-Spieler-Update-935628.html">Ubisoft DRM</a> Systems musste ich mir das Ganze aber einmal anschauen.<br />
Seit meiner Point&#038;Click-Adventure Phase Ende letzten Jahres (<a href="http://www.amazon.de/Koch-Media-GmbH-Geheimakte-Hammerpreis/dp/B000G02TUS">Geheimakte Tunguska</a> bei der <a href="http://www.idmt.fraunhofer.de/">Fraunhofer Talent School</a>!) habe ich eigentlich gar nichts mehr gespielt. Von daher ist es umso bemerkenswerter, wie schnell mich der Assassins Creed Sog gefasst hat. Die Story ist zwar noch immer etwas eintönig nach dem Motto &#8220;Na, wer ist der nächste Verräter?&#8221;, aber die Entwickler haben sich sichtlich Mühe gegeben, die Missionen abwechslungsreich zu gestalten. Über das nächtliche Venedig zu fliegen oder Leonardo da Vinci in einer wilden Kutschenverfolgung zu retten macht schon Spaß! <img src='http://siriuswhite.de/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><strong>ROorg</strong><br />
<a href="http://siriuswhite.de/blog/wp-content/uploads/2010/05/roorg_logo.jpg" rel="lightbox[278]"><img src="http://siriuswhite.de/blog/wp-content/uploads/2010/05/roorg_logo-456x301.jpg" alt="" title="roorg_logo" width="228" height="150" class="alignleft size-medium wp-image-283" /></a><br />
Beim <a href="http://www.roorg.net">ROorg</a> Projekt gab es in letzter Zeit einige Umplanungen, im Laufe des Tages werden wir auch noch das Press Release fertig machen. Da wir nun endgültig auf die Entwicklung eines eigenen Clients umgestiegen sind, wurde die Entwicklungszeit etwas verlängert. Aber mehr dazu in nächster Zeit auf der Projektseite. Es bleibt spannend!</p>
<p><strong>Harmony</strong><br />
Fortschritt. Im Zuge des 3.1 Updates haben mehrere Designänderungen Einzug gehalten. Nebenbei sind einige neue Features dazu gekommen und alte wurden verbessert. Sprich: Ich werde im Laufe des heutigen Tages das 3.1 Release Package fertig machen und dann bekommt Zephyrus endlich seine neue Version.<br />
<s>Timo hat offenbar noch einen Artikel über seine Arbeit am Window Manager im Arbeit, ich werde ihn gleich mal anhauen, den fertig zu machen.</s> <a href="http://siriuswhite.de/blog/2010/05/deutsch-harmony-der-name-ist-programm/?lang=de">Klick mich</a><br />
Ansonsten wird es zu Harmony in den nächsten Tagen noch einmal eine Informationsseite oder etwas in der Richtung geben. So wirklich wissen ja die meisten noch immer nicht, was Harmony überhaupt ist.<br />
Apropos: Ist irgendein Grafiker da draußen gelangweilt und möchte mir ein kleines Harmony Logo machen? ._.</p>
]]></content:encoded>
			<wfw:commentRss>http://siriuswhite.de/blog/2010/05/warum-ich-nicht-poste/?lang=de/feed/&amp;lang=de</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Warum ich nicht antworte</title>
		<link>http://siriuswhite.de/blog/2010/03/deutsch-warum-ich-nicht-antworte/?lang=de</link>
		<comments>http://siriuswhite.de/blog/2010/03/deutsch-warum-ich-nicht-antworte/?lang=de#comments</comments>
		<pubDate>Tue, 30 Mar 2010 01:17:57 +0000</pubDate>
		<dc:creator>Sirius_White</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://siriuswhite.de/blog/?p=260</guid>
		<description><![CDATA[Es soll Situationen geben, in denen man mich nicht erreicht. In jüngster Zeit höre ich immer öfter von Betroffenen, dass sie mich im MSN und ICQ angeschrieben hätten, ohne eine Antwort zu bekommen. Sogar über Skype angerufen haben sie &#8211; und trotzdem kam keine Antwort! Seltsam&#8230;
Gehen wir das Problem einmal ganz simpel an: Um auf [...]]]></description>
			<content:encoded><![CDATA[<p>Es soll Situationen geben, in denen man mich nicht erreicht. In jüngster Zeit höre ich immer öfter von Betroffenen, dass sie mich im MSN <strong>und</strong> ICQ angeschrieben hätten, ohne eine Antwort zu bekommen. Sogar über Skype angerufen haben sie &#8211; und trotzdem kam keine Antwort! Seltsam&#8230;<br />
Gehen wir das Problem einmal ganz simpel an: Um auf Textnachrichten erfolgreich zu antworten, müssen folgende Bedingungen erfüllt sein:</p>
<ul>
<li>Die eingehende Nachricht muss bei meinem Messenger ankommen</li>
<li>Ich muss dies <strong>realisieren</strong></li>
<li>Ich muss mich dazu entscheiden, darauf zu <strong>reagieren</strong></li>
<li>Die Antwort muss ihren Weg zurück finden</li>
</ul>
<p>Den ersten und letzten Punkt können wir in Zeiten des TCP Protokolls vernachlässigen. Wenn mein Rechner ACK sagt, dann ist ACK. FIN.</p>
<p><strong>1. Realisierung der eingehenden Nachricht</strong><br />
Problemquelle: Ich bin nicht immer am Rechner!<br />
Mein Rechner ist in der Regel durchgehend online. Dies hat den simplen Grund, dass er seit einiger Zeit den alten Linux Fileserver abgelöst hat und somit als Storage für dem gesamten Haushalt dient &#8211; welcher nicht nur aus mir besteht. Manchmal mache ich MSN und ICQ aus, aber normalerweise bleiben beide Programme einfach geöffnet und empfangsbereit. Heißt: Wenn <em>ich</em> im MSN online bin, heißt das noch lange nicht, dass <em><strong>ich</strong></em> auch wirklich online und anwesend bin. Wenn ich wieder da bin, werde ich wichtige Nachrichten schon beantworten:</p>
<p><strong>2. Reaktion auf eigehende Nachricht</strong><br />
Problemquelle: Ich bin nicht gewillt, auf jede Nachricht sofort zu antworten.<br />
Wer mich im MSN oder ICQ finden will, der wird dies recht schnell schaffen. Wer einen Grund hat mit mir zu reden, darf und soll das bitte auch tun.<br />
Die meisten Leute kontaktieren mich aufgrund von eAthena oder RO-Client bezüglichen Fragen. Sofern es mir möglich ist helfe ich gerne bei Problemen, die man nicht binnen 5 Minuten im eAthena Forum lösen kann. Aber wenn jemand bei den einfachsten Dingen scheitert habe ich auf Dauer auch keine Lust, immer wieder beim Urschleim anzufangen. Wer das nicht akzeptiert, wird auch keine Antwort bekommen.</p>
<p>Doch die wohl beliebteste Methode, keine Antwort zu erhalten: Alle 10 Minuten nachfragen.<br />
Niemand leistet hauptberuflich MSN Support für ein GPL Projekt. Und dementsprechend kann auch niemand gezwungen werden, irgendjemandem zu antworten. Es ist nicht die feine englische Art, aber wenn jemand nicht akzeptieren will, dass man gerade keine Zeit oder Lust hat, sich mit etwas zu beschäftigen, dann muss er damit leben, ignoriert zu werden.<br />
Mittlerweile ist diese Community an einem Zustand angelangt, an dem man öffentlich nichts mehr in Aussicht stellen darf. Denn es endet zwangsläufig darin, dass man die Hälfte seiner Zeit damit beschäftigt ist, irgendwelchen Leuten klar zu machen, dass man sich nicht 24 Stunden am Tag mit ihren Problemen befassen kann und möchte.<br />
Je penetranter man versucht eine Antwort zu bekommen, desto höher ist die Wahrscheinlichkeit im Endeffekt auf der Blockliste zu landen oder einen Blogpost wie diesen zu provozieren und <strong>danach</strong> auf der Blockliste zu landen. Im Endeffekt hat niemand gewonnen und jeder ein wenig zu viele Nerven verloren.</p>
<p>Was diesen Blogpost inspiriert hat? Folgende Unterhaltung &#8220;mit&#8221; einem Mitglied der deutschen eAthena Szene. Wenn ich nach Hause komme und einen derartigen Spamblock sehe, werde ich ganz bestimmt nicht mehr antworten:</p>
<blockquote><p>[18:21] huhu<br />
[19:05] biste nun da?<br />
[19:05] oder noch nicht<br />
[19:47] und wer da?<br />
[20:18] da?<br />
[20:48] da?<br />
[21:26] biste nun da?<br />
[21:52] da?<br />
[22:25] da?<br />
[22:57] da?&#8217;<br />
[23:01] keiner schade =(<br />
[23:08] wo isser denn eingepennt<br />
[23:18] meld dich bitte egal wie spät wir haben echt nen problem und muss das dringend lösne<br />
[23:53] ich hoffe du kommst heute nich >.<<br />
[23:53] noch<br />
[00:17] da?<br />
[00:42] nun da?<br />
[01:00] jetzt da?<br />
[01:19] da?<br />
[11:24] huhu<br />
[12:30] nun jemand da?<br />
[22:25] huhu<br />
[22:26] da?<br />
[01:43] huhu<br />
[10:49] huhu<br />
[10:53] jemand da?<br />
[12:12] huhu<br />
[12:16] hallii<br />
[20:10] huhu<br />
[22:44] huhu<br />
[23:12] da?<br />
[00:29] da?</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://siriuswhite.de/blog/2010/03/deutsch-warum-ich-nicht-antworte/?lang=de/feed/&amp;lang=de</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Party plzzzz!</title>
		<link>http://siriuswhite.de/blog/2010/03/party-plzzzz/?lang=de</link>
		<comments>http://siriuswhite.de/blog/2010/03/party-plzzzz/?lang=de#comments</comments>
		<pubDate>Thu, 25 Mar 2010 20:35:17 +0000</pubDate>
		<dc:creator>LightFighter</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://siriuswhite.de/blog/?p=233</guid>
		<description><![CDATA[&#8230; oder: &#8220;Verschwinde aus meinem Kopf, Gravity!&#8221;
Ich bin fast aus allen Wolken gefallen, als Yommy (yomanda) mir folgenden Link über Gravitys neues Party Booking &#38; Recruiting System präsentierte: Click meh.
Meine Antwort war folgende:
DAMNIT
I WANTED TO DO THAT
FUCK YOU GRAVITY

Bedarf wahrscheinlich keiner Übersetzung. Der Grund für meinen leicht ausfallenden Ton war, dass ich seit mehreren Wochen [...]]]></description>
			<content:encoded><![CDATA[<p>&#8230; oder: &#8220;Verschwinde aus meinem Kopf, Gravity!&#8221;</p>
<p>Ich bin fast aus allen Wolken gefallen, als Yommy (yomanda) mir folgenden Link über Gravitys neues Party Booking &amp; Recruiting System präsentierte: <a href="http://ktqyra.blu.livefilestore.com/y1pydMs9gUFDNpQnfQy-HSCaP5mA2ONjd1K3haNzNpq3ScIYz2_Kfym4EXj6typXJu4VsiKN-mr6pk87kIUZf1V69-bhQJqPbwN/booking.jpg" target="_blank" rel="lightbox[233]">Click meh.</a></p>
<p>Meine Antwort war folgende:</p>
<blockquote><p>DAMNIT</p>
<p>I WANTED TO DO THAT</p>
<p>FUCK YOU GRAVITY</p>
</blockquote>
<p>Bedarf wahrscheinlich keiner Übersetzung. Der Grund für meinen leicht ausfallenden Ton war, dass ich seit mehreren Wochen und Monaten die Idee gehegt hatte, irgendwann ein solches System mit Harmony zu realisieren. Das Timing von Gravity ist natürlich perfekt, denn Harmony ist gerade jetzt in einem Stadium, in dem ich durchaus hätte anfangen können, die ersten Windows zu entwerfen und das Backend zu programmieren. Aber nein, Gravity war mal wieder schneller! Aber mir macht das natürlich nichts aus, ich bin ja ein friedliches, und zartbesaitetes Wesen &#8230;..</p>
<p>Ich habe mich dann die letzten Tage daran gemacht, das System mal auseinander zu nehmen &#8211; was erstmal gar nicht so einfach war, da sich bisher noch niemand bequemt hat, das Interface zu übersetzen. Also mal schnell die aktuelle msgstringtable generiert, Google Translate drüber gejagt und nachgebessert. Nach getaner Arbeite öffne ich also meinen Client und freue mich auf ein nicht-koreanisches Booking Interface und &#8211; werde bitter enttäuscht. Es wurden vielleicht 2 oder 3 &#8220;Stringlein&#8221; genutzt, der Rest war wie vorher. Super.</p>
<p>Ein kurzer Blick in den ASM Code lässt böses erahnen: Es reicht Gravity anscheinend nicht, mir meine Idee zu klauen &#8211; nein! Irgendein Gravity Praktikant hat es anscheinend als unheimlich witzig empfunden, 90% der benutzten Strings <strong>hardcoded </strong>im Client zu verankern. Sicher, natürlich. Nachdem ich dann alle Strings per Hand im Hexeditor gesucht und übersetzt hatte, konnte ich dann tatsächlich mit einem englischen Booking Interface arbeiten. Bis auf ein paar Schönheitsfehler machte das Interface erstmal einen gar nicht mal so schlechten Eindruck:</p>
<p style="text-align: center;"><a href="http://siriuswhite.de/blog/wp-content/uploads/2010/03/screeneAthena017.jpg" rel="lightbox[233]"><img class="size-medium wp-image-234 aligncenter" title="Party Booking" src="http://siriuswhite.de/blog/wp-content/uploads/2010/03/screeneAthena017-456x342.jpg" alt="" width="456" height="342" /></a></p>
<p style="text-align: left;">Als ich dann anfing, die Packets zusammenzusuchen und zu analysieren, ist mir das wahrscheinlich beste Feature des ganzen Systems in die Hände gefallen: Die LSD Videos! Diese &#8220;Videos&#8221;, eher Foto Slideshows, bekommt man zu sehen, sobald man ein Party Recruit aufmacht, und auf antworten wartet. Sechs verschiedene Slideshows zum Thema Party, die wirklich nur in Verbindung mit Lysergsäurediethylamid entstanden sein können &#8211; herrlich!</p>
<p style="text-align: left;"><a href="http://siriuswhite.de/blog/wp-content/uploads/2010/03/lsd1.gif" rel="lightbox[233]"><img class="size-full wp-image-240 alignnone" title="lsd1" src="http://siriuswhite.de/blog/wp-content/uploads/2010/03/lsd1.gif" alt="" width="150" height="150" /></a><a href="http://siriuswhite.de/blog/wp-content/uploads/2010/03/lsd2.gif" rel="lightbox[233]"><img class="size-full wp-image-239 alignnone" title="lsd2" src="http://siriuswhite.de/blog/wp-content/uploads/2010/03/lsd2.gif" alt="" width="150" height="150" /></a><a href="http://siriuswhite.de/blog/wp-content/uploads/2010/03/lsd3.gif" rel="lightbox[233]"><img class="size-full wp-image-238 alignnone" title="lsd3" src="http://siriuswhite.de/blog/wp-content/uploads/2010/03/lsd3.gif" alt="" width="150" height="150" /></p>
<p></a></p>
<p style="text-align: left;"><a href="http://siriuswhite.de/blog/wp-content/uploads/2010/03/lsd4.gif" rel="lightbox[233]"><img class="size-full wp-image-237 alignnone" title="lsd4" src="http://siriuswhite.de/blog/wp-content/uploads/2010/03/lsd4.gif" alt="" width="150" height="150" /></a><a href="http://siriuswhite.de/blog/wp-content/uploads/2010/03/lsd5.gif" rel="lightbox[233]"><img class="size-full wp-image-236 alignnone" title="lsd5" src="http://siriuswhite.de/blog/wp-content/uploads/2010/03/lsd5.gif" alt="" width="150" height="150" /></a><a href="http://siriuswhite.de/blog/wp-content/uploads/2010/03/lsd6.gif" rel="lightbox[233]"><img class="size-full wp-image-235 alignnone" title="lsd6" src="http://siriuswhite.de/blog/wp-content/uploads/2010/03/lsd6.gif" alt="" width="150" height="150" /></a></p>
<p>Mein anfängliches Packet-Abenteuer ist dann im Laufe des Tages ausgeartet und schließlich haben White und ich alle möglichen neuen RE Packets im Client auseinander genommen und dokumentiert, die eAthena noch nicht unterstützt und haben sie dann <a href="http://www.eathena.ws/board/index.php?showtopic=242894" target="_blank">im eA Forum</a> gepostet. Sind ein paar wirklich interessante &#8211; und auch kuriose &#8211; Packets dabei gewesen, aber hat definitiv viel Spaß gemacht <img src='http://siriuswhite.de/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Ach, und ja, ich blogge hier jetzt neuerdings mit <img src='http://siriuswhite.de/blog/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> </p>
<p>See ya,</p>
<p>Lighty</p>
]]></content:encoded>
			<wfw:commentRss>http://siriuswhite.de/blog/2010/03/party-plzzzz/?lang=de/feed/&amp;lang=de</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Unde venis?</title>
		<link>http://siriuswhite.de/blog/2010/03/deutsch-unde-venis/?lang=de</link>
		<comments>http://siriuswhite.de/blog/2010/03/deutsch-unde-venis/?lang=de#comments</comments>
		<pubDate>Sun, 21 Mar 2010 20:20:55 +0000</pubDate>
		<dc:creator>Sirius_White</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://siriuswhite.de/blog/?p=222</guid>
		<description><![CDATA[Modulare Programme haben in der Regel zentrale Loggingfunktionen. Nun lässt sich zwar alles wunderschon loggen, doch die wichtigste Information fehlt in der Regel &#8211; welches Plugin hat diesen Logeintrag erzeugt?
Ich bin auf die Problematik gestoßen, als mich Timo gefragt hat, wie man herausfinden könnte, von welcher DLL ein Call kommt. Da ich zu dem Zeitpunkt [...]]]></description>
			<content:encoded><![CDATA[<p>Modulare Programme haben in der Regel zentrale Loggingfunktionen. Nun lässt sich zwar alles wunderschon loggen, doch die wichtigste Information fehlt in der Regel &#8211; welches Plugin hat diesen Logeintrag erzeugt?</p>
<p>Ich bin auf die Problematik gestoßen, als mich Timo gefragt hat, wie man herausfinden könnte, von welcher DLL ein Call kommt. Da ich zu dem Zeitpunkt selber gerade dabei war, die Modulfunktionen von Harmony zu entwerfen, habe ich mir darüber ein wenig Gedanken gemacht.</p>
<p>Man kann man natürlich den Log Aufruf mit einem weiteren Parameter ausstatten, um den Pluginnamen anzugeben. Simpel und funktioniert natürlich auch. Aber es geht noch eleganter!</p>
<p>Einige Theorie vorweg:<br />
Um herauszufinden von welcher Dll ein Call kommt benötigt man die Speicheradresse, von der der Aufruf kommt. Wenn man dann noch eine Liste aller geladenen Module hat, lässt sich der Name relativ leicht herausfinden. Die Frage ist daher: Wie kommt man an die Adresse des &#8220;Aufrufers&#8221;?<br />
Windows (im 32-Bit Modus) und somit auch Ragnarok basieren auf der <a href="http://de.wikipedia.org/wiki/X86-Prozessor">x86 Prozessorarchitektur</a>. Auch wenn man ein 64-Bit Windows verwendet, denn dann wird über <a href="http://en.wikipedia.org/wiki/WOW64">WOW64</a> eine 32 Umgebung &#8220;emuliert&#8221;.<br />
Ein Funktionsaufruf wird über den <code>call</code> Befehl ausgeführt, ein Rücksprung über <code>ret</code>. Ein <code>call</code> schreibt die Speicheradresse des Befehls nach dem Aufruf auf den <a href="http://en.wikipedia.org/wiki/Stack_%28data_structure%29#Hardware_stacks">Stack</a> und springt zur Funktionsadresse. Ein <code>ret</code> holt sich den obersten Wert vom Stack und springt dorthin zurück. Soweit ganz simpel.<br />
Lokale Variablen innerhalb der Funktion werden ebenfalls über den Stack realisiert. Man kann folglich nicht davon ausgehen, dass das oberste Element die Rücksprungadresse ist und braucht eine Möglichkeit, diese von jeder Position aus zu finden. An dieser Stelle kommt das <code>ebp</code> Register ins Spiel: Das <code>ebp</code> verweist auf die Stackposition, an der sich die Funktion am Anfang befunden hat. Über den Wert von <code>ebp</code> sollte man daher doch relativ leicht an die Rücksprungadresse kommen&#8230;?<br />
Mir war der Aufbau eines C(++) Calls bereits bekannt, aber solche Informationen lassen sich auch über <a href="http://en.wikipedia.org/wiki/X86_calling_conventions#Standard_exit_and_entry_sequences_for_C_code">Wikipedia</a> oder normale Google Recherche herausfinden.</p>
<p>Testcode:<br />
<a rel="lightbox" href="http://www.siriuswhite.de/img/retaddr_code.png"><img alt="" src="http://www.siriuswhite.de/img/retaddr_code.png" class="alignnone" width="422" height="455" /></a></p>
<p><a rel="lightbox" href="http://www.siriuswhite.de/img/retaddr_out.png"><img alt="" src="http://www.siriuswhite.de/img/retaddr_out.png" class="alignleft" width="137" height="319" /></a>Die Ausgabe sieht schonmal vielversprechend aus. Die Rücksprungadressen liegen im Bereich der main() Funktion. Dass sich die Adressen immer ändern hängt mit der <a href="http://en.wikipedia.org/wiki/Address_space_layout_randomization">Address Space Layout Randomization</a> (ASLR) zusammen, wodurch die Basisadresse des Programms sich bei jedem Start verändert. Nichtsdestotrotz haben wir nun eine gültige Rücksprungadresse!</p>
<p>Nun müssen wir dieser Basisadresse den Namen eines Plugins zuordnen. In der Regel sind Plugins eigenständige Dll Dateien. Über die <a href="http://msdn.microsoft.com/de-de/library/f7f5138s.aspx">Compilerdokumentation</a> findet man relativ schnell heraus, dass Dlls im Speicher auf 64Kb Adressen alignt sind &#8211; die Basisadresse also ein Vielfaches von 64Kb ist.<br />
Eine 32 Bit Applikation kann maximal 4Gb Speicher adressieren. Normalerweise stehen dem Programm nur 2Gb zur Verfügung, da 2Gb für den Kernel reserviert sind. Allerdings gibt es die <a href="http://msdn.microsoft.com/en-us/library/ms791558.aspx">/3GB</a> Option und unter 64-Bit Windows sieht das Ganze wieder anders aus. Wir müssen also davon ausgehen, dass wir 4Gb / 64Kb = 65536 mögliche Dll Basisadressen haben. Wenn wir im Programm ein Array verwenden, wo für jede mögliche Basisadresse ein Pointer auf den Namen hinterlegt ist, benötigt dieses array 64Kb * 32 Bit = 256 Kb. Durchaus vertretbar.</p>
<p>Problematisch könnte es nun werden, wenn eine Dll größer als 64Kb ist, also effektiv mehrere Basisadressen einnehmen würde. Um diesen Fall abzuhandeln muss beim Laden der Dll aus dem <a href="http://www.microsoft.com/whdc/system/platform/firmware/pecoff.mspx">PE Header</a> die <code>SizeOfImage</code> ausgelesen werden:</p>
<blockquote><p>The size (in bytes) of the image, including all headers, as the image is loaded in memory.</p></blockquote>
<p>Mit dieser Information kann man einfach ausrechnen wie viele Basisadressen belegt werden.</p>
<p>Wir sind also in der Lage die Rücksprungadresse einer Funktion zu ermitteln und haben ein Array in dem die Namen der Dlls hinterlegt sind. Daraus könnte dann beispielsweise das folgende Testprogramm resultieren: <a href="http://www.siriuswhite.de/source_dll/">Klick mich</a>.</p>
<p><img alt="" src="http://www.siriuswhite.de/img/retaddr_out2.png" class="alignright" width="207" height="49" />Ziel erreicht!<br />
Ein paar Tage nach der Entstehung dieser Zeilen bin ich über die MSDN Library auf eine sehr interessante Funktion des Microsoft Compilers gestoßen: <a href="http://msdn.microsoft.com/en-us/library/64ez38eh%28VS.71%29.aspx">_ReturnAddress()</a>. Damit hätte ich mir den ganzen Aufwand sparen können &#8211; aber so ist immerhin dieser Artikel herausgekommen, der hoffentlich ein paar Anregegungen geben konnte. <img src='http://siriuswhite.de/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><em>Übrigens:</em><br />
_ReturnAddress:<br />
<img src="http://www.siriuswhite.de/img/retaddr_intrinsic.png" alt="" /></p>
<p>Meine Version:<br />
<img src="http://www.siriuswhite.de/img/retaddr_normal.png" alt="" /></p>
<p>Microsoft hat wohl den selben Ansatz verfolgt <img src='http://siriuswhite.de/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://siriuswhite.de/blog/2010/03/deutsch-unde-venis/?lang=de/feed/&amp;lang=de</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
