<?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/"
	>

<channel>
	<title>blog.murb.com</title>
	<atom:link href="http://blog.murb.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.murb.com</link>
	<description>Plan to be spontaneous tomorrow.</description>
	<pubDate>Sun, 02 Oct 2011 14:49:28 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.7</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>ICQ - Ein paar Statistiken&#8230;</title>
		<link>http://blog.murb.com/2011/10/01/icq-stats/</link>
		<comments>http://blog.murb.com/2011/10/01/icq-stats/#comments</comments>
		<pubDate>Sat, 01 Oct 2011 18:28:24 +0000</pubDate>
		<dc:creator>Martin</dc:creator>
		
		<category><![CDATA[ICQ]]></category>

		<category><![CDATA[icq statistiken]]></category>

		<guid isPermaLink="false">http://blog.murb.com/?p=408</guid>
		<description><![CDATA[ICQ wird oft als der erste Instant-Messaging-Dienst bezeichnet und ist auch nach fast 15 Jahren noch immer sehr beliebt. In den ersten Jahren konnte ICQ einen rasanten Zuwachs verzeichnen, unter anderem auch durch den Verkauf an den amerikanischen Onlinedienst AOL. Doch wie sieht es heute aus? Nach ausführlichen Statistiken über die Nutzerzahlen und Informationen über [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;"><span style="font-size: xx-large;"><strong>ICQ</strong></span> wird oft als der erste Instant-Messaging-Dienst bezeichnet und ist auch nach fast 15 Jahren noch immer sehr beliebt. In den ersten Jahren konnte ICQ einen rasanten Zuwachs verzeichnen, unter anderem auch durch den Verkauf an den amerikanischen Onlinedienst AOL. Doch wie sieht es heute aus? Nach ausführlichen Statistiken über die Nutzerzahlen und Informationen über die Nutzer selbst sucht man im Internet vergeblich.</p>
<p style="text-align: justify;">Der folgende Artikel soll einen Einblick in die aktuelle Lage von ICQ und deren Nutzer ermöglichen. Neben den weltweiten Statistiken, wurden Deutschland und Russland zusätzlich separat untersucht, da diese beiden Länder den größten Nutzeranteil aufweisen.</p>
<p><span id="more-408"></span></p>
<p style="text-align: justify;"><em>Anmerkung: Für die folgenden Statistiken wurden nur Accounts mit aktivierten Profilen berücksichtigt.</em></p>
<p></br></p>
<p style="text-align: justify;"><strong>Anzahl und Verteilung der UINs</strong><br />
Ein typisches Merkmal von ICQ sind die ICQ-Nummern, über  die jeder Nutzer eindeutig identifiziert werden kann und worüber, zusammen mit dem Passwort, der Login erfolgt. In den letzten Jahren wurde der Login über eine feste E-Mail-Adresse jedoch in den Vordergrund gerückt, sodass die ICQ-Nummer zunehmend an Bedeutung verliert. Doch vor allem im russischsprachigen Raum erfreuen sich kurze und einfach zu merkende UINs (Unique Identification Number – im Weiteren als Synonym für die ICQ-Nummer verwendet) großer Beliebtheit, sodass eine komplette Umstellung auf den Login via E-Mail hier wohl wenig Begeisterung auslösen würde.</p>
<div style="text-align: justify">Aber zurück zu den Statistiken. Für die Auswertung wurden die ICQ-Nummern in die Bereiche 5-, 6-, 7-, 8-stellig,
<div style="text-align: left; width: 300px; margin: 5px 10px 5px 0px; float: left"><a href="http://blog.murb.com/icq/icq_stats/icq_stats_01.png" class="imgbox" target="_blank"><img title="Diagram 1: Number of UINs" src="http://blog.murb.com/icq/icq_stats/icq_stats_01_th.png" alt="Diagram 1: Number of UINs" width="300" height="180" border="0" /></a><br />Diagram 1: Number of UINs</div>
<p> sowie in die Bereiche 1 bis 9 bei den 9-stelligen UINs aufgeteilt. <a title="Diagram 1: Number of UINs" href="http://blog.murb.com/icq/icq_stats/icq_stats_01.png" class="imgbox" target="_blank">Diagramm 1</a> zeigt die absolute Anzahl der ICQ-Nummern in den jeweiligen Bereichen. Die geringe Zahl der 5-stelligen UINs ist darauf zurückzuführen, dass sie ursprünglich nur für die Entwickler gedacht waren und nicht zur Registrierung freigegeben wurden. Der größte Anteil konzentriert sich verständlicherweise im Bereich der 9-stelligen UINs. Gut zu erkennen ist hier, dass momentan UINs mit der Anfangszahl 6 bei der Registrierung vergeben werden. (Anmerkung: Die Vergabe der Nummern erfolgt <em>nicht</em> fortlaufend, sondern zufällig aus einem größeren Bereich, beispielsweise 550000000-650000000). Obwohl für den Bereich 700000000-999999999 offiziell noch keine Registrierung möglich ist, existieren hier bereits einige Accounts. Das liegt unter anderem daran, dass es vor einiger Zeit möglich war, durch Ausnutzung eines Bugs beliebige UINs zu registrieren.
<div style="text-align: left; width: 300px; margin: 5px 0px 5px 10px; float: right"><a href="http://blog.murb.com/icq/icq_stats/icq_stats_02.png" class="imgbox" target="_blank"><img title="Diagram 2: Percentage of UINs" src="http://blog.murb.com/icq/icq_stats/icq_stats_02_th.png" alt="Diagram 2: Percentage of UINs" width="300" height="180" /></a><br />Diagram 2: Percentage of UINs</div>
<p>Um den Anteil der registrierten Accounts in den jeweiligen UIN-Bereichen besser vergleichen zu können, bietet sich der prozentuale Anteil an (<a title="Diagram 2: Percentage of UINs" href="http://blog.murb.com/icq/icq_stats/icq_stats_02.png" class="imgbox" target="_blank">Diagramm 2</a>), das heißt unabhängig von der maximalen Anzahl der UINs betrachtet. Hier wird die geringe Anzahl der 5-stelligen UINs noch einmal deutlich, aber auch 7- und 8-stellige UINs existieren verhältnismäßig wenig.<br />
Schaut man sich die Unterbereiche <a title="Diagram 3: Number of UINs" href="http://blog.murb.com/icq/icq_stats/icq_stats_03.png" target="_blank">im Detail</a> an, ist ein gewisses System bei der Nummernvergabe zu erkennen. Auffällig ist jedoch, dass die Bereiche 180000000-189999999 und 500000000-549999999 komplett übersprungen wurden.<br />
Insgesamt sind 382627226, also rund 383 Millionen Accounts bei ICQ registriert. Bei <a title="Wikipedia:ICQ" href="http://de.wikipedia.org/wiki/ICQ" target="_blank">Wikipedia</a> heißt es: <em>„Derzeit sind über 470 Millionen Nutzer bei ICQ registriert.“</em> Da fragt man sich, wie sie auf diese Zahl kommen. Würde man die inaktiven Profile zu den 383 Millionen hinzunehmen, wäre das trotzdem noch weit von den genannten 470 entfernt. Vermutlich stammt der Wikipedia-Eintrag aus der Zeit, als ICQ-Nummern mit den Anfangszahlen 47 vergeben wurden.</div>
<p><br style="clear: both" /></p>
<div style="text-align: justify"><strong>Heimat-Stadt &#038; -Land</strong></p>
<div style="text-align: left; width: 300px; margin: 5px 0px 5px 10px; float: right"><a href="http://blog.murb.com/icq/icq_stats/icq_stats_04.png" class="imgbox" target="_blank"><img title="Diagram 4: ICQ Home Country" src="http://blog.murb.com/icq/icq_stats/icq_stats_04_th.png" alt="Diagram 4: ICQ Home Country" width="300" height="180" /></a><br />Diagram 4: ICQ Home Country</div>
<p> Die Länder mit den meisten ICQ-Nutzern sind Russland (30,9 Mio.), Tschechien (30,3 Mio.) und Deutschland (21,5 Mio.). Danach folgen Ukraine, USA und Brasilien mit weitem Abstand (<a title="Diagram 4: ICQ Home Country" href="http://blog.murb.com/icq/icq_stats/icq_stats_04.png" class="imgbox" target="_blank">Diagramm 4</a>). Da Tschechien bei den aktiven Nutzern allerdings noch hinter der Ukraine einzuordnen wäre, wird  es bei den Statistiken nicht näher betrachtet.<br />
Von allen Nutzern, die ein Heimatland angegeben haben (152,7 Mio.), stammen somit 20,2% aus Russland und 14,1% aus Deutschland. Tatsächlich werden es wahrscheinlich noch mehr sein. </p>
<div style="text-align: left; width: 300px; margin: 5px 10px 0px 0px; float: left"><a href="http://blog.murb.com/icq/icq_stats/icq_stats_05.png" class="imgbox" target="_blank"><img title="Diagram 5: ICQ Home City" src="http://blog.murb.com/icq/icq_stats/icq_stats_05_th.png" alt="Diagram 5: ICQ Home City" width="300" height="180" /></a><br />Diagram 5: ICQ Home City</div>
<p> Schaut man sich nun die Heimatstädte an (<a title="Diagram 5: ICQ Home City" href="http://blog.murb.com/icq/icq_stats/icq_stats_05.png" class="imgbox" target="_blank">Diagramm 5</a>), ist es nicht verwunderlich, dass Moskau (6,9 Mio.) unangefochten den ersten Platz belegt. Auch sonst sind viele russische Städte in den Top 15 vertreten. Mit 0,52 Mio. Nutzern liegt die größte deutsche Stadt nur auf Platz 10. Weitere deutsche Städte folgen erst auf den Plätzen 32 (Hamburg), 56 (Köln) und 60 (München).</div>
<p><br style="clear: both" /><br style="clear: both" /></p>
<div style="text-align: justify"><strong>Anzahl der aktiven Nutzer</strong><br />
Von über 52 Millionen im November 2009, hat sich die Anzahl der aktiven ICQ-Nutzer innerhalb von nur einem Jahr um fast 37% auf 33 Millionen verringert (<a title="Diagram 6: ICQ Active Users" href="http://blog.murb.com/icq/icq_stats/icq_stats_06.png" class="imgbox" target="_blank">Diagramm 6</a>).
<div style="text-align: left; width: 300px; margin: 5px 10px 0px 0px; float: left"><a href="http://blog.murb.com/icq/icq_stats/icq_stats_06.png" class="imgbox" target="_blank"><img title="Diagram 6: ICQ Active Users" src="http://blog.murb.com/icq/icq_stats/icq_stats_06_th.png" alt="Diagram 6: ICQ Active Users" width="300" height="180" /></a><br />Diagram 6: ICQ Active Users</div>
<p> In Deutschland und Russland fallen die Rückgänge mit 17% auf 6,6 Millionen bzw. mit 10% auf 18,4 Millionen nicht so stark aus.<br />
Bei den eindeutigen Nutzern ist, insbesondere bei Deutschland und Russland, im gleichen Zeitraum nur ein leichter Rückgang zu verzeichnen. Die Anzahl liegt hier jeweils bei ungefähr der Hälfte der eben genannten Zahlen.<br />
Vor allem bei den russischen Unique Users sind konstante Schwankungen im Verlauf zu erkennen, wobei die Höhen unter der Woche erreicht werden und die Tiefen am Wochenende. Ursache hierfür könnte die mangelnde private Nutzung von ICQ sein, oder die Tatsache, dass gerade einmal 25% der russischen Haushalte über einen Breitband-Internetzugang verfügen. In Deutschland sind es hingegen über 66% der Haushalte.</p>
<div style="text-align: left; width: 300px; margin: 5px 10px 0px 0px; float: left"><a href="http://blog.murb.com/icq/icq_stats/icq_stats_07.png" class="imgbox" target="_blank"><img title="Diagram 7: ICQ Active Users by Country" src="http://blog.murb.com/icq/icq_stats/icq_stats_07_th.png" alt="Diagram 7: ICQ Active Users by Country" width="300" height="180" /></a><br />Diagram 7: ICQ Active Users by Country</div>
<p> Das <a title="Diagram 7: ICQ Active Users by Country" href="http://blog.murb.com/icq/icq_stats/icq_stats_07.png" class="imgbox" target="_blank">folgende Diagramm</a> zeigt den internationalen Vergleich der aktiven ICQ-Nutzer. Und erneut wird der große Nutzerkreis in Russland ersichtlich. Vergleicht man nur die Werte von <a title="Diagram 8: ICQ Active Users by Country" href="http://blog.murb.com/icq/icq_stats/icq_stats_08.png" class="imgbox" target="_blank">November 2009</a> mit jenen im <a title="Diagram 9: ICQ Active Users by Country" href="http://blog.murb.com/icq/icq_stats/icq_stats_09.png" class="imgbox" target="_blank">darauffolgenden Jahr</a>, kann Russland seinen Anteil von 35% auf fast 50% sogar kräftig steigern. Aber auch Deutschland schafft knapp 5% Plus. Allerdings resultiert dieser Anstieg in beiden Fällen nicht aus einem Nutzerzuwachs, sondern aus den teilweise großen Rückgängen in anderen Ländern (beispielsweise Israel).</div>
<p><br style="clear: both" /></p>
<div style="text-align: justify"><strong>Das durchschnittliche Alter</strong><br />
Mit 28 Jahren ist das durchschnittliche Alter der ICQ-Nutzer verhältnismäßig hoch. Das liegt aber vor allem daran, dass der Großteil der Nutzer bereits seit vielen Jahren bei ICQ angemeldet ist. Denn mit dem Alter des Accounts steigt tendenziell auch das Alter des Besitzers, was auf dem <a title="Diagram 10: ICQ Average Age" href="http://blog.murb.com/icq/icq_stats/icq_stats_10.png" class="imgbox" target="_blank">Diagramm</a> gut zu erkennen ist. Das durchschnittliche
<div style="text-align: left; width: 300px; margin: 5px 0px 5px 10px; float: right"><a href="http://blog.murb.com/icq/icq_stats/icq_stats_10.png" class="imgbox" target="_blank"><img title="Diagram 10: ICQ Average Age" src="http://blog.murb.com/icq/icq_stats/icq_stats_10_th.png" alt="Diagram 10: ICQ Average Age" width="300" height="180" /></a><br />Diagram 10: ICQ Average Age</div>
<p> Alter der weiblichen Nutzer liegt, wie im Internet üblich, meistens unter dem der männlichen Nutzer.<br />
Verständlicherweise fragt sich der eine oder andere sicher, warum das allgemeine Alter teilweise leicht über dem der geschlechtsspezifischen Angaben liegt. Das hat den einfachen Grund, dass in diesen Fällen mehr Angaben zum Alter als zum Geschlecht vorliegen.<br />
Mit 23,3 Jahren wird im Bereich 600000000-699999999 bei den weiblichen Nutzern (2,66 Mio.) das niedrigste Durchschnittsalter erreicht. Interessant wäre hier natürlich das Alter der aktiven Nutzer.</p></div>
<p><br style="clear: both" /></p>
<div style="text-align: justify"><strong>Aufteilung nach Geschlecht</strong><br />
Insgesamt liegt das Verhältnis zwischen männlichen und weiblichen Nutzern bei ungefähr 60% zu 40% (sofern angegeben). In Deutschland ist der Anteil der weiblichen Nutzer in den letzten Jahren konstant angestiegen. Kurze ICQ-Nummern bleiben aber doch eher Männersache.<br style="clear: both" /></p>
<div style="text-align: left; float: left; width: 200px; margin: 0px 15px 0px 0px"><a href="http://blog.murb.com/icq/icq_stats/icq_stats_11.png" class="imgbox" target="_blank"><img title="Diagram 11: ICQ Gender" src="http://blog.murb.com/icq/icq_stats/icq_stats_11_th.png" alt="Diagram 11: ICQ Gender" width="200" height="120" /></a><br />Diagram 11: ICQ Gender</div>
<div style="text-align: left; float: left; width: 200px; margin-right: 15px"><a href="http://blog.murb.com/icq/icq_stats/icq_stats_12.png" class="imgbox" target="_blank"><img title="Diagram 12: ICQ Gender DE" src="http://blog.murb.com/icq/icq_stats/icq_stats_12_th.png" alt="Diagram 12: ICQ Gender DE" width="200" height="120" /></a><br />Diagram 12: ICQ Gender DE</div>
<div style="text-align: left; float: left; width: 200px"><a href="http://blog.murb.com/icq/icq_stats/icq_stats_13.png" class="imgbox" target="_blank"><img title="Diagram 13: ICQ Gender RU" src="http://blog.murb.com/icq/icq_stats/icq_stats_13_th.png" alt="Diagram 13: ICQ Gender RU" width="200" height="120" /></a><br />Diagram 13: ICQ Gender RU</div>
<p><br style="clear: both" /><br style="clear: both" /></p>
<div style="text-align: justify"><strong>Die häufigsten Vornamen</strong></p>
<div style="text-align: left; width: 300px; margin: 5px 10px 0px 0px; float: left"><a href="http://blog.murb.com/icq/icq_stats/icq_stats_14.png" class="imgbox" target="_blank"><img title="Diagram 14: ICQ First Names" src="http://blog.murb.com/icq/icq_stats/icq_stats_14_th.png" alt="Diagram 14: ICQ First Names" width="300" height="180" /></a><br />Diagram 14: ICQ First Names</div>
<p> Bei den Vornamen liegt Anna mit 2,95 Mio. Einträgen auf dem ersten Platz, gefolgt von Basil (2,57 Mio.) und Roman (2,43 Mio.). Auf den ersten Blick mag das nicht logisch erscheinen, denn immerhin ist der Großteil der ICQ-Nutzer männlich. Der Grund ist in dem Fall der Name Anna selbst, da dieser nur wenige Varianten besitzt und in vielen Sprachen gleich geschrieben wird. Würde man beispielsweise Alex zu Alexander zählen, wäre er natürlich klar vorne. Aber es kann eben auch die Kurzform von Alexandra sein.<br />
In <a title="Diagram 15: ICQ First Names DE" href="http://blog.murb.com/icq/icq_stats/icq_stats_15.png" class="imgbox" target="_blank">Deutschland</a> liegen die Namen Christian, Michael und Daniel mit leichtem Abstand vorne. Der Vorname Anna taucht in den Top 15 gar nicht auf, sondern liegt weit abgeschlagen auf Platz 28.</div>
<p><br style="clear: both" /></p>
<div style="text-align: justify"><strong>Autorisierung erforderlich?</strong></p>
<div style="text-align: left; width: 300px; margin: 5px 0px 5px 10px; float: right"><a href="http://blog.murb.com/icq/icq_stats/icq_stats_16.png" class="imgbox" target="_blank"><img title="Diagram 16: ICQ Authorization Required" src="http://blog.murb.com/icq/icq_stats/icq_stats_16_th.png" alt="Diagram 16: ICQ Authorization Required" width="300" height="180" /></a><br />Diagram 16: ICQ Authorization Required</div>
<p> Um einen Kontakt in die eigene Liste aufnehmen und alle Funktionen von ICQ nutzen zu können, ist meistens eine Autorisierung erforderlich. Aber nicht immer. Wie <a title="Diagram 16: ICQ Authorization Required" href="http://blog.murb.com/icq/icq_stats/icq_stats_16.png" class="imgbox" target="_blank">Diagramm 16</a> zeigt, ist nur bei knapp über der Hälfte aller Kontakte (56%) eine Autorisierung nötig. Gut erkennbar ist eine sprunghafte Veränderung ab dem UIN-Bereich 200000000. Entweder wurde hier die Standardeinstellung zur Autorisierung verändert, oder das Nutzerverhalten hat sich geändert.<br />
Im Vergleich zu <a title="Diagram 18: ICQ Authorization Required RU" href="http://blog.murb.com/icq/icq_stats/icq_stats_18.png" class="imgbox" target="_blank">Russland</a> verlangt in <a title="Diagram 17: ICQ Authorization Required DE" href="http://blog.murb.com/icq/icq_stats/icq_stats_17.png" class="imgbox" target="_blank">Deutschland</a> ein deutlich höherer Anteil der Nutzer eine Autorisierung.</div>
<p><br style="clear: both" /></p>
<div style="text-align: justify"><strong>Genutzte ICQ-Clients</strong><br />
ICQ kämpft seit dem Aufkommen alternativer Clients stets um die Nutzer für den offiziellen Client, welchen weltweit nicht einmal die Hälfte (43,50%) aller ICQ-User nutzen. Gerade in <a title="Diagram 21: ICQ Clients RU" href="http://blog.murb.com/icq/icq_stats/icq_stats_21.png" class="imgbox" target="_blank">Russland</a>, dem Land mit den meisten ICQ-Nutzern, wird der offizielle Client nur von ungefähr einem Viertel verwendet. Der alternative Client QIP ist hier besonders stark vertreten. Nur in Deutschland ist der Anteil der ICQ eigenen Software sehr hoch (81,54%). Der Rest verteilt sich relativ gleichmäßig auf die vier größten Drittanbieter QIP, Miranda IM, Trillian und Pidgin.</div>
<div style="text-align: left; float: left; width: 300px; margin: 5px 30px 0px 0px"><a href="http://blog.murb.com/icq/icq_stats/icq_stats_19.png" class="imgbox" target="_blank"><img title="Diagram 19: ICQ Clients" src="http://blog.murb.com/icq/icq_stats/icq_stats_19_th.png" alt="Diagram 19: ICQ Clients" width="300" height="180" /></a><br />Diagram 19: ICQ Clients</div>
<div style="text-align: left; float: left; width: 300px; margin-top: 5px"><a href="http://blog.murb.com/icq/icq_stats/icq_stats_20.png" class="imgbox" target="_blank"><img title="Diagram 20: ICQ Clients DE" src="http://blog.murb.com/icq/icq_stats/icq_stats_20_th.png" alt="Diagram 20: ICQ Clients DE" width="300" height="180" /></a><br />Diagram 20: ICQ Clients DE</div>
<p><br style="clear: both" /><br style="clear: both" /></p>
<div style="text-align: justify"><strong>Kontaktliste: Limits</strong></p>
<div style="text-align: left; width: 300px; margin: 5px 0px 5px 10px; float: right"><a href="http://blog.murb.com/icq/icq_stats/icq_stats_22.png" class="imgbox" target="_blank"><img title="Diagram 22: ICQ Limits" src="http://blog.murb.com/icq/icq_stats/icq_stats_22_th.png" alt="Diagram 22: ICQ Limits" width="300" height="180" /></a><br />Diagram 22: ICQ Limits</div>
<p> Das <a title="Diagram 22: ICQ Limits" href="http://blog.murb.com/icq/icq_stats/icq_stats_22.png" class="imgbox" target="_blank">folgende Diagramm</a> zeigt die „Grenzen“ rund um die Kontaktliste. Im Allgemeinen haben sich die die Grenzen in den letzten Jahren kontinuierlich nach oben verschoben. Ein großer Sprung ist bei den maximalen Einträgen in der Ignorieren-Liste zu verzeichnen. Ein Zusammenhang mit dem erhöhten Spam-Aufkommen wäre denkbar.<br />
Aktuell können maximal 1500 Kontakte (verteilt auf mehrere Gruppen) in die eigene Kontaktliste aufgenommen werden. Pro Gruppe sind 600 Kontakte möglich.</div>
<div style="text-align: justify"><u>Erklärung der Begriffe:</u><br />
<strong>Watchers:</strong> Maximale Anzahl an Beobachtern einer UIN.<br />
<strong>Ignore List:</strong> Maximale Anzahl der Einträge in der Ignorieren-Liste.<br />
<strong>Groups:</strong> Maximale Anzahl der Gruppen in der Kontaktliste.<br />
<strong>Visible/Invisible List:</strong> Maximum für Einträge in den Sichtbar-/Unsichtbar-Listen.<br />
<strong>Contacts:</strong> Anzahl der maximalen Kontakte in der eigenen Kontaktliste.</div>
<p><br style="clear: both" /></p>
<div style="text-align: justify"><strong>Sicherheit &#038; Spam</strong><br />
Wie bereits zu Beginn erwähnt, gilt es in Russland schon fast als Tradition, eine kurze oder „schöne“ ICQ-Nummer zu besitzen. Aus diesem Grund werden Besitzer solcher UINs regelmäßig Opfer von Account-Diebstählen. Aber auch andere Nutzer bleiben davon nicht verschont. Für das Verteilen von Spam beispielsweise, was im ICQ-Netz stark betrieben wird, eignen sich aktive Accounts sehr gut. Dabei spielt die ICQ-Nummer keine Rolle. Denn auf einen Link, der durch einen Freund versendet wurde, klickt man verständlicherweise dann doch eher, als wenn er von einem Fremden kommt.<br />
Viele Nutzer machen es den „Hackern“ aber auch zu leicht. Natürlich ist die Sicherheit in puncto Passwort bei ICQ durch die momentan maximale Anzahl von 8 Zeichen begrenzt, doch das sollte im Normalfall ausreichen. Erschreckend ist jedoch die Fahrlässigkeit vieler Nutzer bei der Passwortwahl. Nicht nur dass sich oft mit 6 und weniger Zeichen begnügt wird, nein, so verwenden im Schnitt 10% ein einfaches Wort aus dem Wörterbuch (sehr beliebt sind „passwort“, „password“, „schatz“, „12345678“ und Varianten davon) oder einen Namen. Auch vor dem eigenen Namen wird bei der Passwortwahl nicht Halt gemacht. Das bedeutet, von den genannten 10% wählt wiederum ungefähr jeder zehnte ein Passwort mit direktem Bezug zur eigenen Person oder sogar zum eigenen Profil (Vor-/Nachname sowie Geburtsdatum).<br />
Beim Spam über das ICQ-Netzwerk werden die Nutzer vor allem durch regelmäßig eingehende Nachrichten und Anfragen genervt und weniger durch den Inhalt dieser Nachrichten, da diese entweder wegen der enthaltenen Links gefiltert werden oder auf Russisch sind. Lange wurde von seitens ICQ nichts oder nur wenig dagegen unternommen. Erst in den letzten Monaten gelang es, das Spam-Aufkommen ein wenig einzudämmen. Häufige Nicknames der Spam-Accounts sind <em>Sophia1802</em>, <em>Natha_1983</em>, <em>Natha_2399</em> und <em>Natha_2019</em>, welche einigen ICQ-Nutzern bekannt vorkommen dürften. Bei über 39.000 Accounts nach diesem Schema, wird es schwer sie alle in die Ignorieren-Liste zu bekommen. Eine serverseitige Deaktivierung wäre sicher kein Problem gewesen, hätte man sich nur mal Zeit dafür genommen. Die vollständige Liste der genannten Spam-Accounts kann im letzten Abschnitt heruntergeladen werden.</div>
<p><br style="clear: both" /></p>
<div style="text-align: justify"><strong>Fazit</strong><br />
Insgesamt sieht die Zukunft für ICQ eher verhalten aus. Das wurde auch am Verkaufswert von &#8220;nur&#8221; 187,5 Mio. US-$
<div style="text-align: left; width: 300px; margin: 5px 10px 0px 0px; float: left"><a href="http://blog.murb.com/icq/icq_stats/sqlite.png" class="imgbox" target="_blank"><img title="Sample SQL Query" src="http://blog.murb.com/icq/icq_stats/sqlite_th.png" alt="Sample SQL Query" width="300" height="180" /></a><br />Sample SQL Query</div>
<p> deutlich. Ein möglicher Grund für den starken Nutzerrückgang könnte der Wechsel vieler Nutzer zur Konkurrenz (z.B. MSN/WLM oder Skype) sein. Im Bereich Internet-  bzw. Audio/Video-Telefonie, konnte sich ICQ im Gegensatz zu Skype nie richtig durchsetzen. Ebenso tragen soziale Netzwerke wie beispielsweise Facebook weiter zu einem Rückgang der ICQ-Nutzer bei, denn oft ist bereits eine Chat-Funktion vorhanden und somit kein extra Programm mehr nötig. Aber auch die mittlerweile weit verbreiteten Smartphones mit ihren zahlreichen Apps zur Kommunikation tragen ihren Anteil dazu bei.<br />
Dennoch ist die Mail.ru Group bemüht, dem entgegen zu wirken. Als gute Ansätze wären hier die Integration des Facebook-Chats, die Verbindung mit Google Talk und die Genehmigung alternativer Clients zu nennen.  Auch wird vermehrt auf die Wünsche der Nutzer eingegangen, was aber eigentlich selbstverständlich sein sollte.</p></div>
<p><br style="clear: both" /></p>
<div style="text-align: justify"><strong>Downloads</strong><br />
Die Statistiken mit allen Zahlen und weiteren Details sowie die Liste der Spam-Accounts können hier als Excel-Dokument (Office 2010) heruntergeladen werden:</p>
<div style="text-align: left; width: 16px; margin: 1px 5px 0px 0px; float: left"><a href="http://blog.murb.com/icq/icq_stats/ICQ_Statistics.xlsx"><img src="http://blog.murb.com/icq/icq_stats/excel.png" width="16" height="16" /></a></div>
<p><strong><a href="http://blog.murb.com/icq/icq_stats/ICQ_Statistics.xlsx">ICQ_Statistics.xlsx</a></strong> (962 KB)</div>
<div style="text-align: left; width: 16px; margin: 1px 5px 0px 0px; float: left"><a href="http://blog.murb.com/icq/icq_stats/ICQ_Spam_Natha_Sophia.xlsx"><img src="http://blog.murb.com/icq/icq_stats/excel.png" width="16" height="16" /></a></div>
<p><strong><a href="http://blog.murb.com/icq/icq_stats/ICQ_Spam_Natha_Sophia.xlsx">ICQ_Spam_Natha_Sophia.xlsx</a></strong> (1,65 MB)</div>
<p><br style="clear: both" /></p>
<p><span style="font-size: xx-small;"><strong>Quellen:</strong> ICQ Server Database, ICQ Internal Reports, General Internet</span></p>
<p><strong>Stand: Juni 2011</strong><br />
<script type="text/javascript" src="http://blog.murb.com/mootools.js"></script><br />
<script type="text/javascript" src="http://blog.murb.com/bumpbox-2.0.1-min.js"></script><br />
<script type="text/javascript">
  window.addEvent('domready',function(){
    doBump('.imgbox',500, 300, '111', '000', '0.75', 10, 1 ,'000', 20, '000', 3, Fx.Transitions.Bounce.EaseOut, Fx.Transitions.Bounce.EaseOut, 'http://blog.murb.com/images/bg_bumpbox.png', 'top left', 'repeat-x');
  });
</script></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.murb.com/2011/10/01/icq-stats/feed/</wfw:commentRss>
		</item>
		<item>
		<title>AJAX-Login validation in PHP via Facebox-Lightbox</title>
		<link>http://blog.murb.com/2010/05/06/ajax-login-validation-in-php-via-facebox-lightbox/</link>
		<comments>http://blog.murb.com/2010/05/06/ajax-login-validation-in-php-via-facebox-lightbox/#comments</comments>
		<pubDate>Thu, 06 May 2010 17:11:42 +0000</pubDate>
		<dc:creator>Richard</dc:creator>
		
		<category><![CDATA[Allgemeines]]></category>

		<guid isPermaLink="false">http://blog.murb.com/?p=354</guid>
		<description><![CDATA[Nachdem ich für ein Projekt einen Login in einer Lightbox, die mittels Facebox umgesetzt wurde, realisieren sollte hat mich das mal wieder einen halben Tag gekostet , obwohl es doch nur ein kleiner Login ist. Aber alles der Reihe nach.
Die Lightboxfunktion mittels Facebox war bereits erfoglreich umgesetzt und funktionstüchtig. Fehlte also nur noch der Login [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">Nachdem ich für ein Projekt einen Login in einer Lightbox, die mittels Facebox umgesetzt wurde, realisieren sollte hat mich das mal wieder einen halben Tag gekostet , obwohl es doch nur ein kleiner Login ist. Aber alles der Reihe nach.<br />
Die Lightboxfunktion mittels <a href="http://famspam.com/facebox" target="_blank">Facebox</a> war bereits erfoglreich umgesetzt und funktionstüchtig. Fehlte also nur noch der Login ansich. Das Formular war schnell gebastelt. Doch dann gab es ein Problem: Die POST-Übermittlung der Formulareingaben nach dem Betätigen des Submit-Buttons schloss die Lightbox. Ich wollte den Loginvorang jedoch innerhalb der Lightbox mittels AJAX ablaufen lassen - also mit &#8220;asynchroner&#8221; Eingabeprüfung.</p>
<p style="text-align: justify;">
<p style="text-align: justify;">Für das Vorhaben mussten im Groben Lösungen zu zwei Problemen her:</p>
<p style="text-align: justify;"><strong>1. Der Login sollte in der Lightbox stattfinden</strong></p>
<p style="text-align: justify;"><strong>2. Die Validierung der Userdaten sollte per AJAX ohne Seitenreload geschehen</strong></p>
<p style="text-align: justify;">
<p style="text-align: justify;">Für Problem 1 wurde ich hier fündig: <a href="http://freecss.info/css-tutorials/jquery-ajax-contact-form-in-facebox/" target="_blank">Jquery Ajax Contact Form in Facebox</a>. Den Download dazu gibt es <a href="http://www.brightcherry.co.uk/scribbles/2008/12/11/ajax-jquery-contact-form-with-validation/" target="_blank">hier</a>.</p>
<p style="text-align: justify;">Das zweite Problem konnte ich hiermit lösen: <a href="http://roshanbh.com.np/2008/04/ajax-login-validation-php-jquery.html" target="_blank">Ajax login validation system in PHP using jQuery</a>. Ein Dank an die Autoren an dieser Stelle.</p>
<p style="text-align: justify;">Wie beides zusammen aussieht, kann man in meiner mühevoll erstellten <a href="http://blog.murb.com/facebox_login" target="_blank">Live Demo</a> bestaunen. ;-)<br />
Rein geht&#8217;s mit <strong>time </strong>und <strong>flies</strong>.</p>
<p style="text-align: justify;">Der Code kann auf Wunsch <a href="http://blog.murb.com/facebox_login/facebox_login.rar" target="_blank">hier</a> gedownloadet werden. Für den Datenbankzugriff muss die Datei <em>&#8220;includes/db_connection.php&#8221;</em> angepasst werden. Für den Import in die Datenbank liegt ein Dump bei. Viel Spaß!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.murb.com/2010/05/06/ajax-login-validation-in-php-via-facebox-lightbox/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Password Generator v.2.0</title>
		<link>http://blog.murb.com/2009/01/07/password-generator-v20/</link>
		<comments>http://blog.murb.com/2009/01/07/password-generator-v20/#comments</comments>
		<pubDate>Tue, 06 Jan 2009 23:21:11 +0000</pubDate>
		<dc:creator>Richard</dc:creator>
		
		<category><![CDATA[Programme & Tools]]></category>

		<category><![CDATA[WPF]]></category>

		<guid isPermaLink="false">http://blog.murb.com/?p=316</guid>
		<description><![CDATA[
Neues Jahr, neue Anwendung. Naja, nicht ganz. Denn streng genommen ist sie zu sehr großen Teilen im vergangenen Jahr entstanden. Aber viel wichtiger ist, dass es meine erste, wenn auch kleine WPF-Anwendung überhaupt ist.
Der Password Generator existierte bereits als Download auf unserer Webseite, jedoch mit weniger Funktionsumfang. Dies sollte sich mit Version 2.0 ändern und [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">
<p style="text-align: justify;">Neues Jahr, neue Anwendung. Naja, nicht ganz. Denn streng genommen ist sie zu sehr großen Teilen im vergangenen Jahr entstanden. Aber viel wichtiger ist, dass es meine erste, wenn auch kleine WPF-Anwendung überhaupt ist.</p>
<p style="text-align: justify;">Der Password Generator existierte bereits als Download auf unserer <a href="http://www.murb.com" target="_blank">Webseite</a>, jedoch mit weniger Funktionsumfang. Dies sollte sich mit Version 2.0 ändern und stellte damit eine prima Möglichkeit dar, sich gleichzeitig besser in die WPF-Welt hinein zu arbeiten.</p>
<p style="text-align: justify;">Sehen wir uns die Anwendung etwas genauer an.</p>
<p><span id="more-316"></span></p>
<p align="center"><img style="padding-top: 10px; padding-bottom: 5px" title="Password Generator Main" src="http://blog.murb.com/wp-content/uploads/2009/01/password_generator_main.gif" alt="Password Generator Main" width="450" height="350" /></p>
<p style="text-align: justify;">Mit den neuen Funktionen wurde auch ein eigenes Fensterdesign entworfen (<a href="http://www.microsoft.com/expression/products/Overview.aspx?key=blend" target="_blank">Expression Blend</a> lässt grüßen). Auf der Hauptseite <em>&#8220;Generator&#8221;</em> können allgemeine Einstellungen wie Zeichenvorrat und Erstellungsoptionen vorgenommen werden. Aktiviert man <em>&#8220;Sonderzeichen&#8221;</em>, so kann man zwischen <em>normal</em>, <em>alle </em>und <em>eigene </em>wählen. Dabei enthalten die Optionen jeweils folgende Zeichen:</p>
<p style="text-align: justify;">normal: <span style="color: #008000;"> !$%&amp;()§=?@#-_</span><br />
alle:  <span style="color: #008000;">°^!&#8221;§$%&amp;/{([)]=}?\´`*+~&#8217;#-_.:,;µ@€|&lt;&gt;</span><br />
eigene:  <span style="color: #008000;"><em>Können unter Einstellungen festgelegt werden.</em></span></p>
<p style="text-align: justify;">Die Einstellung <em>&#8220;Gleiche Zeichen vermeiden&#8221;</em> bewirkt, was sie aussagt: Es wird jedes Zeichen nur einmalig verwendet. Das schränkt natürlich die Passwortlänge auf den Zeichenpool  ein. Die restlichen Punkte sollten selbsterklärend sein, denke ich. Was es mit dem Hinweis <em>&#8220;Zahlen werden mit Faktor 3 bevorzugt!&#8221;</em> auf sich hat, wird klar, wenn wir uns die Einstellungen ansehen:</p>
<p align="center"><img style="padding-top: 10px; padding-bottom: 5px" title="Password Generator Settings" src="http://blog.murb.com/wp-content/uploads/2009/01/password_generator_settings.gif" alt="Password Generator Settings" width="450" height="350" /></p>
<p style="text-align: justify;">Neben dem Zeichenpool und den eigenen Sonderzeichen kann ebenso festgelegt werden, ob Zahlen bevorzugt werden. Der Grund hierfür ist, dass jede Zahl nur einmal im normalen Zeichenvorrat vorkommt und damit die Zahlen gerade einmal einen Anteil von 13% ausmachen. Ich bevorzuge allerdings Passwörter mit einer gewissen Mindestmenge an Zahlen. Vielleicht geht es anderen genauso. ;-) Aktiviert man den eigenen Zeichenpool, fällt sowohl die festgelegte Zahlenbevorzugung als auch die festgelegten Sonderzeichen weg, da die Zeichen für das Passwort ausschließlich aus dem eigenen Zeichenpool entnommen werden.</p>
<p style="text-align: justify;">Kommen wir zum Punkt <em>&#8220;Die letzten 10 Passwörter speichern&#8221;</em>. Diese Option dient lediglich der Aufzeichnung der letzten Passwörter (bspw. zu Verwaltungszwecken) und ist mit Vorsicht zu genießen, da die Passwörter unverschlüsselt und zudem in einer nicht gerade getarnten Datei Namens <em>&#8220;passwords.log&#8221;</em> gespeichert werden. Also nur verwenden, wenn nötig!</p>
<p style="text-align: justify;">Soweit zur Programmfunktion.</p>
<p style="text-align: justify;">Die Anwendung muss nicht installiert werden! Einfach downloaden und los geht&#8217;s!<br />
Allerdings wird für die Ausführung das <a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=333325FD-AE52-4E35-B531-508D977D32A6&amp;displaylang=de" target="_blank">.NET Framework 3.0</a> oder höher benötigt, da WPF-Anwendungen ein Teil davon sind. In Vista ist dies bereits enthalten. Für Windows XP kann es ab Service Pack 2 problemlos nachinstalliert werden.</p>
<p style="text-align: justify;"><strong><a href="http://www.murb.com/index.php?page_id=237" target="_blank">Download Password Generator v.2.0</a></strong></p>
<p>Für Fragen und Anregungen verweise ich auf unser <a href="http://www.murb.com/forum/" target="_blank">Forum</a>. Viel Spaß beim Passwörter generieren! :-)</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.murb.com/2009/01/07/password-generator-v20/feed/</wfw:commentRss>
		</item>
		<item>
		<title>WPF: Anwendung mit Systray-Icon ausstatten</title>
		<link>http://blog.murb.com/2008/12/25/wpf-anwendung-mit-systray-icon-ausstatten/</link>
		<comments>http://blog.murb.com/2008/12/25/wpf-anwendung-mit-systray-icon-ausstatten/#comments</comments>
		<pubDate>Thu, 25 Dec 2008 19:02:27 +0000</pubDate>
		<dc:creator>Richard</dc:creator>
		
		<category><![CDATA[C#]]></category>

		<category><![CDATA[Expression Blend]]></category>

		<category><![CDATA[blend]]></category>

		<category><![CDATA[notifyicon]]></category>

		<category><![CDATA[systray-icon]]></category>

		<category><![CDATA[windows.forms]]></category>

		<guid isPermaLink="false">http://blog.murb.com/?p=253</guid>
		<description><![CDATA[
Je nach Anwendung können Systray-Icons eine sehr bequeme Art der Steuerung darstellen. Daher dachte ich mir &#8220;bauste dir eben auch so ein Ding in dein Tool ein&#8221;. Fragt sich nur, wie man das am geschicktesten realisiert. Vermutlich könnte man das mit reinem XAML irgendwie lösen. Das sehe ich allerdings nicht als die optimale Lösung an, [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">
<p style="text-align: justify;">Je nach Anwendung können Systray-Icons eine sehr bequeme Art der Steuerung darstellen. Daher dachte ich mir <em>&#8220;bauste dir eben auch so ein Ding in dein Tool ein&#8221;</em>. Fragt sich nur, wie man das am geschicktesten realisiert. Vermutlich könnte man das mit reinem XAML irgendwie lösen. Das sehe ich allerdings nicht als die optimale Lösung an, da mir das in dieser Hinsicht zu unflexibel ist. Also muss C# mit <span style="color: #008000;">Windows.Forms</span> herhalten.</p>
<p style="text-align: justify;">Ein <span style="color: #808000;">NotifyIcon</span> ist schnell erzeugt und betitelt. Doch wie sieht es mit Icon und Kontextmenü aus? Das erfordert ein paar mehr Zeilen Code, erst recht, wenn man ein bereits eingebundenes Icon (bspw. das der Anwendung selbst) verwenden möchte. Ich gehe hierbei auf die Situation ein, dass sich das Icon in den eigenen Ressourcen von <span style="color: #993300;">Expression Blend</span> befindet.</p>
<p><span id="more-253"></span></p>
<p style="text-align: justify;">Fangen wir ganz vorne an. Ein NotifyIcon lässt sich mit diesem Code erzeugen:</p>
<div style="margin: 10px; background-color: #fafafa; border: 1px dotted #cccccc">
<table width="100%" border="0" cellpadding="0" cellspacing="0">
<tr>
<td align="left" valign="top" style="padding: 5px; border-right: 1px solid #cccccc; font-family: Courier New; color: #2b91af; font-size: 12px; line-height: 140%">
&nbsp;1<br />
&nbsp;2<br />
&nbsp;3<br />
&nbsp;4<br />
&nbsp;5<br />
&nbsp;6<br />
&nbsp;7<br />
&nbsp;8<br />
&nbsp;9<br />
10<br />
11<br />
12<br />
13<br />
14<br />
15<br />
16<br />
17<br />
18<br />
19<br />
20<br />
21<br />
22</td>
<td width="100%" align="left" valign="top" style="padding: 5px; font-family: Courier New; font-size: 12px; color: black; line-height: 140%">
<span style="color: blue;">private</span> <span style="color: blue;">static</span> <span style="color: #2b91af;">NotifyIcon</span> notifyIcon = <span style="color: blue;">new</span> <span style="color: #2b91af;">NotifyIcon</span>();<br />
&nbsp;<br />
<span style="color: blue;">public</span> MainWindow()<br />
{<br />
&nbsp; &nbsp; <span style="color: green;">// info when mouse hits the icon</span><br />
&nbsp; &nbsp; notifyIcon.Text = <span style="color: #a31515;">&quot;Programmtitel&quot;</span>;<br />
&nbsp;<br />
&nbsp; &nbsp; <span style="color: green;">// double click: bring application back to front</span><br />
&nbsp; &nbsp; notifyIcon.MouseDoubleClick += <span style="color: blue;">new</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; System.Windows.Forms.<span style="color: #2b91af;">MouseEventHandler</span>(openFromTray);<br />
&nbsp;<br />
&nbsp; &nbsp; <span style="color: green;">// create context menu and add items</span><br />
&nbsp; &nbsp; System.Windows.Forms.<span style="color: #2b91af;">ContextMenu</span> myContextMenu = <span style="color: blue;">new</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; System.Windows.Forms.<span style="color: #2b91af;">ContextMenu</span>();<br />
&nbsp;<br />
&nbsp; &nbsp; myContextMenu.MenuItems.Add(0, <span style="color: blue;">new</span> System.Windows.Forms.<span style="color: #2b91af;">MenuItem</span>(<span style="color: #a31515;">&quot;Show&quot;</span>,<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: blue;">new</span> <span style="color: #2b91af;">EventHandler</span>(openFromTray)));<br />
&nbsp; &nbsp; myContextMenu.MenuItems.Add(1, <span style="color: blue;">new</span> System.Windows.Forms.<span style="color: #2b91af;">MenuItem</span>(<span style="color: #a31515;">&quot;Exit&quot;</span>,<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: blue;">new</span> <span style="color: #2b91af;">EventHandler</span>(systrayExit)));<br />
&nbsp;<br />
&nbsp; &nbsp; notifyIcon.ContextMenu = myContextMenu;<br />
}</td>
</tr>
</table>
</div>
<p style="text-align: justify;">Die beiden Funktionen zum Wiederherstellen oder Schließen der Anwendung könnten beispielsweise so aussehen:</p>
<div style="margin: 10px; background-color: #fafafa; border: 1px dotted #cccccc">
<table width="100%" border="0" cellpadding="0" cellspacing="0">
<tr>
<td align="left" valign="top" style="padding: 5px; border-right: 1px solid #cccccc; font-family: Courier New; color: #2b91af; font-size: 12px; line-height: 140%">
&nbsp;1<br />
&nbsp;2<br />
&nbsp;3<br />
&nbsp;4<br />
&nbsp;5<br />
&nbsp;6<br />
&nbsp;7<br />
&nbsp;8<br />
&nbsp;9<br />
10<br />
11<br />
12</td>
<td width="100%" align="left" valign="top" style="padding: 5px; font-family: Courier New; font-size: 12px; color: black; line-height: 140%">
<span style="color: blue;">private</span> <span style="color: blue;">void</span> openFromTray(<span style="color: blue;">object</span> sender, <span style="color: #2b91af;">EventArgs</span> e)<br />
{<br />
&nbsp; &nbsp; notifyIcon.Visible = <span style="color: blue;">false</span>;<br />
&nbsp; &nbsp; <span style="color: blue;">this</span>.ShowInTaskbar = <span style="color: blue;">true</span>;<br />
&nbsp; &nbsp; <span style="color: blue;">this</span>.Show();<br />
&nbsp; &nbsp; <span style="color: blue;">this</span>.WindowState = <span style="color: #2b91af;">WindowState</span>.Normal;<br />
}<br />
<span style="color: blue;">protected</span> <span style="color: blue;">void</span> systrayExit(<span style="color: blue;">object</span> sender, <span style="color: #2b91af;">EventArgs</span> e)<br />
{<br />
&nbsp; &nbsp; notifyIcon.Visible = <span style="color: blue;">false</span>;<br />
&nbsp; &nbsp; <span style="color: blue;">this</span>.Close();<br />
}</td>
</tr>
</table>
</div>
<p style="text-align: justify;">Damit das Ganze überhaupt funktioniert, benötigen wir hierzu den Namespace <span style="color: #008000;">System.Windows.Forms</span>, da sowohl die Klasse <span style="color: #008000;">ContextMenu </span>als auch die Klasse <span style="color: #008000;">NotifyIcon </span>von <span style="color: #008000;">Windows.Forms</span> stammen. Dies lässt sich mit der Zeile <span style="font-size: 10pt; line-height: 115%; font-family: &quot;Courier New&quot;; color: blue;">using</span><span style="font-size: 10pt; line-height: 115%; font-family: &quot;Courier New&quot;;"> System.Windows.Forms;</span> am Anfang des Dokuments erledigen. Erhält man die Fehlermeldung, dass Forms im Namespace <span style="color: #008000;">System.Windows</span> nicht vorhanden ist, muss der nötige Verweis erst dem Projekt hinzugefügt werden:</p>
<p class="MsoNormal" style="text-align: justify;">
<table style="text-align: left;" border="0" cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr>
<td style="padding-top: 15px; padding-bottom: 15px" width="50%" align="center" valign="top"><img class="aligncenter size-full wp-image-257" title="Verweis hinzufügen 1" src="http://blog.murb.com/wp-content/uploads/2008/12/verweis_hinzuf1.gif" alt="Verweis hinzufügen 1" width="230" height="159" /></td>
<td style="padding-top: 15px; padding-bottom: 15px" width="50%" align="center" valign="top"><img class="aligncenter size-full wp-image-254" title="Verweis hinzufügen 2" src="http://blog.murb.com/wp-content/uploads/2008/12/verweis_hinzuf2.gif" alt="Verweis hinzufügen 2" width="274" height="182" /></td>
</tr>
</tbody>
</table>
<p style="text-align: justify;">Sollte der Compiler das Erzeugen des NotifyIcon nicht schlucken muss NotifyIcon zu <span style="color: #008000;">System.Windows.Forms.NotifyIcon</span> erweitert werden.</p>
<p style="text-align: justify;">Soweit so gut, jetzt braucht es nur noch ein passendes Icon. Eigentlich ist die Sache ganz einfach:</p>
<div style="margin: 10px; background-color: #fafafa; border: 1px dotted #cccccc">
<table width="100%" border="0" cellpadding="0" cellspacing="0">
<tr>
<td align="left" valign="top" style="padding: 5px; border-right: 1px solid #cccccc; font-family: Courier New; color: #2b91af; font-size: 12px; line-height: 140%">&nbsp;1</td>
<td width="100%" align="left" valign="top" style="padding: 5px; font-family: Courier New; font-size: 12px; color: black; line-height: 140%">
notifyIcon.Icon = <span style="color: blue;">new</span> <span style="color: #2b91af;">Icon</span>(<span style="color: #a31515;">&quot;Icon.ico&quot;</span>);</td>
</tr>
</table>
</div>
<p class="MsoNormal" style="text-align: justify;">Schwieriger wird es erst, wenn ich mein Icon aus den Ressourcen, die ich in Blend eingerichtet habe herausnehmen möchte.</p>
<p align="center"><img class="size-full wp-image-255 aligncenter" title="Blend Resources" src="http://blog.murb.com/wp-content/uploads/2008/12/blend_images.gif" alt="Blend Resources" width="292" height="186" /></p>
<p class="MsoNormal" style="text-align: justify; padding-top: 5px">Gehen wir von der Situation wie im Bild zu sehen aus. Das Icon befindet sich demnach im Ordner &quot;Images&quot;. Um dieses Icon zu verwenden benötigen wir hierfür einen <span style="color: #008000;">Ressourcenstreamer </span>, der auf diese Ressourcen zugreifen kann, um sie gefügig zu machen.</p>
<div style="margin: 10px; background-color: #fafafa; border: 1px dotted #cccccc">
<table width="100%" border="0" cellpadding="0" cellspacing="0">
<tr>
<td align="left" valign="top" style="padding: 5px; border-right: 1px solid #cccccc; font-family: Courier New; color: #2b91af; font-size: 12px; line-height: 140%">
&nbsp;1<br />
&nbsp;2<br />
&nbsp;3<br />
&nbsp;4<br />
&nbsp;5<br />
&nbsp;6<br />
&nbsp;7</td>
<td width="100%" align="left" valign="top" style="padding: 5px; font-family: Courier New; font-size: 12px; color: black; line-height: 140%">
<span style="color: blue;">try</span><br />
{<br />
&nbsp; &nbsp; <span style="color: #2b91af;">Stream</span> iconStream = System.Windows.<span style="color: #2b91af;">Application</span>.GetResourceStream(<span style="color: blue;">new</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #2b91af;">Uri</span>(<span style="color: #a31515;">&quot;Images/Icon.ico&quot;</span>, <span style="color: #2b91af;">UriKind</span>.Relative)).Stream;<br />
&nbsp; &nbsp; notifyIcon.Icon = <span style="color: blue;">new</span> System.Drawing.<span style="color: #2b91af;">Icon</span>(iconStream);<br />
}<br />
<span style="color: blue;">catch</span> { }
</td>
</tr>
</table>
</div>
<p class="MsoNormal" style="text-align: justify;">Der try-catch-Block empfiehlt sich hier - wie eigentlich immer bei Zugriff auf Dateien. Für das Erzeugen des Icons aus dem Stream <span style="color: #008000;">iconStream </span>muss ggf. wieder ein Verweis hinzugefügt werden (siehe oben).  Diesmal <span style="color: #008000;">System.Drawing</span>.</p>
<p align="center"><img class="size-full wp-image-256 aligncenter" title="Systray-Icon" src="http://blog.murb.com/wp-content/uploads/2008/12/systrayicon.gif" alt="Systray-Icon" width="247" height="75" /></p>
<p class="MsoNormal" style="text-align: justify; padding-top: 5px">Wie erwünscht, erscheint das Icon und das Kontextmenü. Ziel erreicht. :-)</p>
<p class="MsoNormal" style="text-align: justify;">Damit wäre ich am Ende. Vielleicht konnte ich dem einen oder anderen helfen. Fällt mir noch etwas ein, werde ich den Artikel erweitern. Verbesserungsvorschläge sind wie immer willkommen.</p>
<p class="MsoNormal" style="text-align: justify;">Fin.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.murb.com/2008/12/25/wpf-anwendung-mit-systray-icon-ausstatten/feed/</wfw:commentRss>
		</item>
		<item>
		<title>CopySourceAsHtml für deutsches Visual Studio</title>
		<link>http://blog.murb.com/2008/12/25/copysourceashtml-fur-deutsches-visual-studio/</link>
		<comments>http://blog.murb.com/2008/12/25/copysourceashtml-fur-deutsches-visual-studio/#comments</comments>
		<pubDate>Thu, 25 Dec 2008 17:56:49 +0000</pubDate>
		<dc:creator>Richard</dc:creator>
		
		<category><![CDATA[Programme & Tools]]></category>

		<guid isPermaLink="false">http://blog.murb.com/?p=283</guid>
		<description><![CDATA[Wie hier berichtet, hatte ich bereits ein Plugin für das Visual Studio gefunden, um Source Code mit gewünschtem Syntax Highlighting im HTML-Format zu kopieren. Doch leider musste ich nun feststellen, dass CopySourceAsHtml nur für das englischsprachige Visual Studio einwandfrei funktioniert.
Bei der deutschen Version kommt nach dem Start des Programms folgender Fehler:
 &#8220;CopySourceAsHtml caught the following [...]]]></description>
			<content:encoded><![CDATA[<p>Wie <a href="http://blog.murb.com/2008/12/04/source-code-in-wordpress-c-xaml-java/" target="_blank">hier</a> berichtet, hatte ich bereits ein Plugin für das Visual Studio gefunden, um Source Code mit gewünschtem Syntax Highlighting im HTML-Format zu kopieren. Doch leider musste ich nun feststellen, dass <span style="color: #008000;">CopySourceAsHtml</span> nur für das englischsprachige Visual Studio einwandfrei funktioniert.</p>
<p style="text-align: justify;">Bei der deutschen Version kommt nach dem Start des Programms folgender Fehler:<br />
<span style="color: #800000;"> &#8220;CopySourceAsHtml caught the following exception: System.ArgumentException: Der Wert liegt außerhalb des erwarteten Bereichs.&#8221; </span>[…]</p>
<p style="text-align: justify;"><span id="more-283"></span></p>
<p align="center"><img class="size-full wp-image-284 aligncenter" title="CopySourceAsHtml Error" src="http://blog.murb.com/wp-content/uploads/2008/12/copysourceashtml_error.gif" alt="CopySourceAsHtml Error" width="483" height="178" /></p>
<p style="text-align: justify; padding-top: 10px;">Eine Google-Suche brachte mich zu <a href="http://entwickler-forum.de/showthread.php?t=39149" target="_blank">diesem</a> Thread. Wie dort zu lesen, liegt es an der deutschen Version von Visual Studio.  Der Lösungsvorschlag, &#8220;Edit&#8221; in &#8220;Bearbeiten&#8221; umzubenennen und das Plugin erneut zu kompilieren hat funktioniert!<br />
Leider findet sich auf der <a href="http://www.jtleigh.com/people/colin/software/CopySourceAsHtml/" target="_blank">Herstellerseite</a> von CopySourceAsHtml kein Quellcode zur aktuellesten Version 3.0. Daher musste die ältere Version 2.0 herhalten, die man mit einem kleinen Trick auch unter Visual Studio 2008 verwenden kann: Man ändert in der AddIn-Datei  die Versionsnummer von 8.0 auf 9.0.</p>
<p style="text-align: justify;">Um Suchenden die Arbeit zu ersparen stelle ich hier meine kompilierten Versionen für die deutsche Version zur Verfügung.</p>
<p style="text-align: justify;"><a href="http://blog.murb.com/wp-content/uploads/2008/12/copysourceashtml2005_20.rar">Download CopySourceAsHtml für deutsches Visual Studio 2005</a><br />
<a href="http://blog.murb.com/wp-content/uploads/2008/12/copysourceashtml2008_20.rar">Download CopySourceAsHtml für deutsches Visual Studio 2008</a></p>
<p style="text-align: justify;">Die Dateien müssen in das Addins-Verzeichnis kopiert werden. Es findet sich bei Windows XP unter <span style="color: #808000;"><em>C:\Dokumente und Einstellungen\&lt;Benutzername&gt;\Eigene Dateien\Visual Studio 2008\Addins</em></span><br />
und bei  Vista unter <span style="color: #808000;"><em>C:\Benutzer\&lt; Benutzername &gt;\Dokumente\Visual Studio 2008\Addins</em></span><br />
Sollte der Ordner Addins nicht existieren, muss dieser erstellt werden. Anschließend die Dateien hineinkopieren und Visual Studio starten. Fertig!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.murb.com/2008/12/25/copysourceashtml-fur-deutsches-visual-studio/feed/</wfw:commentRss>
		</item>
		<item>
		<title>WordPress-Update auf v.2.7</title>
		<link>http://blog.murb.com/2008/12/23/wordpress-update-auf-version-27/</link>
		<comments>http://blog.murb.com/2008/12/23/wordpress-update-auf-version-27/#comments</comments>
		<pubDate>Tue, 23 Dec 2008 15:03:05 +0000</pubDate>
		<dc:creator>Richard</dc:creator>
		
		<category><![CDATA[Allgemeines]]></category>

		<category><![CDATA[Programme & Tools]]></category>

		<category><![CDATA[ultracompare]]></category>

		<category><![CDATA[ultraedit]]></category>

		<category><![CDATA[update]]></category>

		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://blog.murb.com/?p=245</guid>
		<description><![CDATA[Kaum ist man eine Weile nicht mehr eingeloggt, schon gibt es wieder eine neue Version von WordPress. Version 2.7 sei verfügbar macht ein gelber Balken mich darauf aufmerksam. Ich solle doch bitte updaten.
Kein Problem. Dem Link folgen und das Archiv downloaden. Brav öffne ich die liesmich.html um mich über weitere Schritte des Updates zu informieren. [...]]]></description>
			<content:encoded><![CDATA[<p class="MsoNormal" style="text-align: justify;">Kaum ist man eine Weile nicht mehr eingeloggt, schon gibt es wieder eine neue Version von <a href="http://de.wordpress.org" target="_blank">WordPress</a>. <em>Version 2.7 sei verfügbar</em> macht ein gelber Balken mich darauf aufmerksam. Ich solle doch bitte updaten.<br />
Kein Problem. Dem Link folgen und das Archiv downloaden. Brav öffne ich die <em>liesmich.html </em>um mich über weitere Schritte des Updates zu informieren. Wie fast zu erwarten heißt gleich Punkt 1 der Aktualisierungsanleitung: &#8220;Löschen Sie alle WordPress-Dateien und -Ordner außer <code><span style="font-size: 10pt; line-height: 115%;">wp-config.php</span></code> und <code><span style="font-size: 10pt; line-height: 115%;">wp-content</span></code>.&#8221;.</p>
<p style="text-align: justify;"><span id="more-245"></span></p>
<p class="MsoNormal" style="text-align: justify;">Dumme Sache, denn in meiner Anpassungs- und Umgestaltungswut nach Installation der ersten WordPress-Version (2.65) hatte ich natürlich in einigen Dateien herumgepfuscht und diese durfte ich nun finden und den geänderten Code übertragen. Na prima! Wie soll ich jetzt die ganzen Dateien finden, zumal mir nach einem Backup der Webspacedateien alle Dateien mit gleichem Datum vorliegen?</p>
<p class="MsoNormal" style="text-align: justify;">Die Lösung lautet <a href="http://www.ultracompare.com" target="_blank">UltraCompare</a>, ein mittlerweile sehr ausgereiftes Unterprogramm von <a href="http://www.ultraedit.com" target="_blank">UltraEdit</a>. Dort wählte ich zuerst ein Verzeichnisvergleich zwischen meinem aktuellen Webspacestand und der nochmal neu entpackten WordPress Version 2.65 . Für meinen Fall musste ich in der Konfiguration unter &#8220;Optionen zum Ignorieren &gt; Ordner&#8221; noch einen Haken bei &#8220;Unterschiede zwischen Dateizeiten ignorieren&#8221; setzen und das Programm tat das, was ich wollte. Nach dem Herausfiltern der geänderten Dateien konnte ich mittels Dateivergleich (siehe Bild) die geänderten Codezeilen kopieren.</p>
<p class="MsoNormal" style="text-align: justify;"><img class="aligncenter size-full wp-image-247" style="padding-top: 15px; padding-bottom: 15px" title="UltraCompare" src="http://blog.murb.com/wp-content/uploads/2008/12/ultracompare.gif" alt="UltraCompare" width="599" height="128" /></p>
<p class="MsoNormal" style="text-align: justify;">Damit war die Sache erledigt! *freu*</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.murb.com/2008/12/23/wordpress-update-auf-version-27/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Source Code in WordPress: C#, XAML, Java</title>
		<link>http://blog.murb.com/2008/12/04/source-code-in-wordpress-c-xaml-java/</link>
		<comments>http://blog.murb.com/2008/12/04/source-code-in-wordpress-c-xaml-java/#comments</comments>
		<pubDate>Thu, 04 Dec 2008 22:07:12 +0000</pubDate>
		<dc:creator>Richard</dc:creator>
		
		<category><![CDATA[Allgemeines]]></category>

		<category><![CDATA[blog]]></category>

		<category><![CDATA[C#]]></category>

		<category><![CDATA[codeumgebung]]></category>

		<category><![CDATA[java]]></category>

		<category><![CDATA[source code]]></category>

		<category><![CDATA[syntax highlighting]]></category>

		<category><![CDATA[wordpress]]></category>

		<category><![CDATA[WPF]]></category>

		<category><![CDATA[XAML]]></category>

		<guid isPermaLink="false">http://blog.murb.com/?p=12</guid>
		<description><![CDATA[Endlich hat man es geschafft, den Blog zum Laufen zu bringen, schon steht man vor dem nächsten Problem: Wie bekomme ich eine anständige Codeumgebung mit sprachenspezifischem Syntax-Highlighting in einen Artikel?
Da ich es auf vielen Blogs bereits gesehen hatte, nahm ich an, es sei standardmäßig in WordPress integriert. Dem ist leider nicht so.
Es ist also mal [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify">Endlich hat man es geschafft, den Blog zum Laufen zu bringen, schon steht man vor dem nächsten Problem: Wie bekomme ich eine anständige Codeumgebung mit sprachenspezifischem Syntax-Highlighting in einen Artikel?<br />
Da ich es auf vielen Blogs bereits gesehen hatte, nahm ich an, es sei standardmäßig in WordPress integriert. Dem ist leider nicht so.</p>
<p style="text-align: justify">Es ist also mal wieder Tüfteln angesagt. Mittels zusätzlicher Programme und Plugins habe ich mir meine eigenen angepassten Umgebungen gebastelt.</p>
<p><span id="more-12"></span></p>
<p style="text-align: justify">Da ich mich in letzter Zeit viel mit der Programmierung und Gestaltung von <a href="http://de.wikipedia.org/wiki/Windows_Presentation_Foundation" target="_blank">WPF</a>-Anwendungen beschäftigt habe, gilt mein Interesse v.a. dem C# sowie XAML Source Code.</p>
<p><img src="http://blog.murb.com/wp-content/uploads/2008/12/vs_cs2html.gif" alt="" title="Visual Studio" width="175" height="129" class="alignnone size-medium wp-image-160" style="margin-top: 10px; float: left" /></p>
<p style="text-align: justify; padding-top: 20px">Für den <strong>C# Source Code</strong> bietet sich ein Plugin für Visual Studio 2008 an: <a href="http://www.jtleigh.com/people/colin/software/CopySourceAsHtml/" target="_blank">CopySourceAsHtml</a><br />
Das Plugin einfach installieren, Visual Studio starten und schon steht einem der Export in HTML per Mausklick zur Verfügung. Gewünschten Code markieren, Rechtsklick und &#8220;Copy As HTML&#8230;&#8221; wählen.</p>
<p>&nbsp;</p>
<p>Das Ergebnis kann sich sehen lassen (C#-Code Beispiel):</p>
<div style="margin: 10px; background-color: #fafafa; border: 1px dotted #cccccc">
<table width="100%" border="0" cellpadding="0" cellspacing="0">
<tr>
<td align="left" valign="top" style="padding: 5px; border-right: 1px solid #cccccc; font-family: Courier New; color: #2b91af; font-size: 12px; line-height: 140%">
&nbsp;1<br />
&nbsp;2<br />
&nbsp;3<br />
&nbsp;4<br />
&nbsp;5<br />
&nbsp;6<br />
&nbsp;7<br />
&nbsp;8<br />
&nbsp;9<br />
10<br />
11<br />
12<br />
13<br />
14<br />
15<br />
16<br />
17<br />
18<br />
19<br />
20<br />
21<br />
22<br />
23<br />
24<br />
25
</td>
<td width="100%" align="left" valign="top" style="padding: 5px; font-family: Courier New; font-size: 12px; color: black; line-height: 140%">
<span style="color: blue;">void</span> HandleRequestNavigate(<span style="color: blue;">object</span> sender, <span style="color: #2b91af;">RoutedEventArgs</span> e)<br />
{<br />
&nbsp; &nbsp; <span style="color: blue;">try</span><br />
&nbsp; &nbsp; {<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: blue;">string</span> navigateUri = <span style="color: #a31515;">&quot;about:blank&quot;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: blue;">if</span> (sender.Equals(<span style="color: blue;">this</span>.email))<br />
&nbsp; &nbsp; &nbsp; &nbsp; {<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; navigateUri = email.NavigateUri.ToString();<br />
&nbsp; &nbsp; &nbsp; &nbsp; }<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: blue;">else</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; {<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; navigateUri = website.NavigateUri.ToString();<br />
&nbsp; &nbsp; &nbsp; &nbsp; }<br />
&nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: green;">// if the URI somehow came from an untrusted source, make sure to</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: green;">// validate it before calling Process.Start(), e.g. check to see</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: green;">// the scheme is HTTP, etc.</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #2b91af;">Process</span>.Start(<span style="color: blue;">new</span> <span style="color: #2b91af;">ProcessStartInfo</span>(navigateUri));<br />
&nbsp; &nbsp; &nbsp; &nbsp; e.Handled = <span style="color: blue;">true</span>;<br />
&nbsp; &nbsp; }<br />
&nbsp; &nbsp; <span style="color: blue;">catch</span> (<span style="color: #2b91af;">Exception</span> urlError)<br />
&nbsp; &nbsp; {<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #2b91af;">Functions</span>.logError(urlError.ToString());<br />
&nbsp; &nbsp; }<br />
}
</td>
</tr>
</table>
</div>
<p style="text-align: justify; padding-top: 5px">Die richtige Kolorierung und Formatierung des Codes hat das Plugin übernommen. Jedoch fehlte dem Ganzen eine Umgebung, die den Code vom restlichen Text hervorhebt. Hierfür habe ich mir selbst eine Box gebaut, in der ich den konvertieren Code hineinkopiere.<br />
Aber Achtung: Würde man den Output von <em>CopySourceAsHtml</em> direkt verwenden, so würde man beim Kopieren aus dem Artikel erstens die Zeilennummern mitkopieren und zudem zwischen jeder Zeile eine Leerzeile haben. Dies musste ich ebenfalls per Hand anpassen: Zeilennummern in eine extra Spalte packen und pre-Tags entfernen.</p>
<p style="text-align: justify; padding-top: 10px">Kommen wir nun zu <strong>XAML</strong>. Hier arbeite ich normalerweise mit <a href="http://www.microsoft.com/expression/products/Overview.aspx?key=blend" target="_blank">Expression Blend</a> und hatte mir natürlich auch ein solches Plugin wie für Visual Studio gewünscht. Leider konnte ich auf die Schnelle nichts finden und musste mich mit einem zusätzlichen Programm begnügen: <a href="http://www.carlosag.net/Tools/CodeColorizer/" target="_blank">CarlosAg.CodeColorizer</a><br />
Nachdem man den Codeausschnitt eingefügt und als Sprache &#8220;Markup Code&#8221; ausgewählt hat, spuckt einem das Programm mit &#8220;Colorize&#8221; das Ergebnis aus.<br />
Noch ein paar kleine Anpassungen der Ausgabe (Anführungszeichen anpassen) und schon kann ich es problemlos in meiner zuvor gebastelten Box einfügen. Et voilà, c&#8217;est ça:</p>
<div style="margin: 10px; background-color: #fafafa; border: 1px dotted #cccccc">
<table width="100%" border="0" cellpadding="0" cellspacing="0">
<tr>
<td align="left" valign="top" style="padding: 5px; border-right: 1px solid #cccccc; font-family: Courier New; color: maroon; font-size: 12px; line-height: 140%">
&nbsp;1<br />
&nbsp;2<br />
&nbsp;3<br />
&nbsp;4<br />
&nbsp;5<br />
&nbsp;6<br />
&nbsp;7<br />
&nbsp;8<br />
&nbsp;9<br />
10<br />
11<br />
12<br />
13<br />
14<br />
15<br />
16<br />
17<br />
18<br />
19<br />
20<br />
21
</td>
<td width="100%" align="left" valign="top" style="padding: 5px; font-family: Courier New; font-size: 12px; color: black; line-height: 140%">
<p><font color="blue">&lt;</font><font color="maroon">Grid</font><font color="red">&nbsp;x:Name</font><font color="blue">=&quot;LayoutRoot&quot;&gt;</font><font color="black"><br />
  &nbsp;&nbsp;&nbsp;&nbsp;</font><font color="blue">&lt;</font><font color="maroon">TextBlock</font><font color="red">&nbsp;x:Name</font><font color="blue">=&quot;attentionHeader&quot;</font><font color="red"><br />
  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Margin</font><font color="blue">=&quot;60,10,8,41&quot;</font><font color="red">&nbsp;TextWrapping</font><font color="blue">=&quot;Wrap&quot;</font><font color="red"><br />
  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;HorizontalAlignment</font><font color="blue">=&quot;Left&quot;</font><font color="red">&nbsp;Foreground</font><font color="blue">=&quot;#FF3B5A82&quot;</font><font color="red"><br />
  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;VerticalAlignment</font><font color="blue">=&quot;Top&quot;</font><font color="red">&nbsp;Text</font><font color="blue">=&quot;Hinweis&quot;</font><font color="red">&nbsp;FontWeight</font><font color="blue">=&quot;Bold&quot;</font><font color="blue">/></font><font color="blue"><br />
&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&lt;</font><font color="maroon">TextBlock</font><font color="red">&nbsp;x:Name</font><font color="blue">=&quot;attentionText&quot;</font><font color="red"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Margin</font><font color="blue">=&quot;60,28,0,35&quot;</font><font color="red">&nbsp;TextWrapping</font><font color="blue">=&quot;Wrap&quot;</font><font color="red"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;HorizontalAlignment</font><font color="blue">=&quot;Left&quot;</font><font color="red">&nbsp;Foreground</font><font color="blue">=&quot;#FF3B5A82&quot;</font><font color="red">&nbsp;Width</font><font color="blue">=&quot;276&quot;</font><font color="red"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Text</font><font color="blue">=&quot;Es&nbsp;wurden&nbsp;keine&nbsp;Zeichen&nbsp;gew&auml;hlt.&nbsp;Bitte&nbsp;eine&nbsp;Auswahl&nbsp;treffen!&quot;</font><font color="blue">/><br />
&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&lt;</font><font color="maroon">Button</font><font color="red">&nbsp;Click</font><font color="blue">=&quot;closeMsgBox&quot;</font><font color="red"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Margin</font><font color="blue">=&quot;0,0,0,8&quot;</font><font color="red">&nbsp;Content</font><font color="blue">=&quot;Alles&nbsp;klar!&quot;</font><font color="red"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;HorizontalAlignment</font><font color="blue">=&quot;Center&quot;</font><font color="red">&nbsp;VerticalAlignment</font><font color="blue">=&quot;Bottom&quot;</font><font color="red"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Height</font><font color="blue">=&quot;21&quot;</font><font color="red">&nbsp;Width</font><font color="blue">=&quot;80&quot;/><br />
&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&lt;</font><font color="maroon">Image</font><font color="red">&nbsp;HorizontalAlignment</font><font color="blue">=&quot;Left&quot;</font><font color="red"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Margin</font><font color="blue">=&quot;5,5,0,0&quot;</font><font color="red">&nbsp;Width</font><font color="blue">=&quot;48&quot;</font><font color="red"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Source</font><font color="blue">=&quot;..\Images\warning.gif&quot;</font><font color="red">&nbsp;Stretch</font><font color="blue">=&quot;Fill&quot;</font><font color="red"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;VerticalAlignment</font><font color="blue">=&quot;Top&quot;</font><font color="red">&nbsp;Height</font><font color="blue">=&quot;48&quot;/><br />
&lt;/</font><font color="maroon">Grid</font><font color="blue">&gt;</font></p>
</td>
</tr>
</table>
</div>
<p style="text-align: justify; padding-top: 5px">Nachdem das Bisherige so gut funktioniert hatte, dachte ich mir, wie wäre es mit ein wenig <strong>Java Code</strong> zum Abschluss. Zum Programmieren mit Java bin ich die Entwicklungsumgebung <a href="http://www.eclipse.org/" target="_blank">Eclipse</a> gewohnt, für die es unzählige Plugins gibt. Als ich allerdings nach wenigen Minuten über ein entsprechendes Programm, genannt <a href="http://www.java2html.de" target="_blank">Java2Html Converter</a> gestolpert bin, habe ich die Suche nach einem Plugin vorerst eingestellt.</p>
<p style="text-align: justify">Der Output des Programms liefert mir genau das, was ich haben wollte - zumindest auf den ersten Blick. Ganz so einfach war es dann leider doch nicht, da mir der FireFox einen Strich durch die Rechnung machte: Die Höhe von Zeilen mit fett gedruckten Wörtern wich bei Schriftgröße 12px von denen ohne fett gedruckter Wörter ab. Die Lösung war eine schrittweise Vergrößerung der Schrift. Mit 12.5px fand ich schließlich ein passendes Maß.<br />
Damit war es leider noch immer nicht getan. So besitzt der FF im Gegensatz zum IE bei der Schriftart &#8220;Courier New&#8221; einen höheren (horizontalen) Zeichenabstand. Dies lies sich mit CSS leider nicht korrigieren (wenn doch, bitte melden!). Wie im folgenden Codeausschnitt zu sehen, musste ich die erste Zeile umbrechen, da sie im FF nicht in eine Zeile passen würde. Im IE dagegen schon.</p>
<div style="margin: 10px; background-color: #fafafa; border: 1px dotted #cccccc">
<table width="100%" border="0" cellpadding="0" cellspacing="0">
<tr>
<td align="left" valign="top" style="padding: 5px; border-right: 1px solid #cccccc; font-family: Courier New, monospace; color: #666666; font-size: 12.5px; line-height: 140%">
&nbsp;1<br />
&nbsp;2<br />
&nbsp;3<br />
&nbsp;4<br />
&nbsp;5<br />
&nbsp;6<br />
&nbsp;7<br />
&nbsp;8<br />
&nbsp;9<br />
10<br />
11<br />
12<br />
13<br />
14<br />
15<br />
16<br />
17<br />
18<br />
19<br />
20<br />
21
</td>
<td width="100%" align="left" valign="top" style="padding: 5px; font-family: Courier New, monospace; font-size: 12.5px; color: black; line-height: 140%">
<font color="#7f0055"><b>public&nbsp;static&nbsp;</b></font><font color="#000000">String&nbsp;replace</font><font color="#000000">(</font><font color="#000000">String&nbsp;source,&nbsp;String&nbsp;pattern,</font><br />
<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">String&nbsp;replace</font><font color="#000000">)&nbsp;{</font><br />
<font color="#ffffff"></font><br />
<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#7f0055"><b>if&nbsp;</b></font><font color="#000000">(</font><font color="#000000">source&nbsp;!=&nbsp;</font><font color="#7f0055"><b>null</b></font><font color="#000000">)&nbsp;{</font><br />
<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#7f0055"><b>final&nbsp;</b></font><font color="#7f0055"><b>int&nbsp;</b></font><font color="#000000">len&nbsp;=&nbsp;pattern.length</font><font color="#000000">()</font><font color="#000000">;</font><br />
<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">StringBuffer&nbsp;sb&nbsp;=&nbsp;</font><font color="#7f0055"><b>new&nbsp;</b></font><font color="#000000">StringBuffer</font><font color="#000000">()</font><font color="#000000">;</font><br />
<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#7f0055"><b>int&nbsp;</b></font><font color="#000000">found&nbsp;=&nbsp;-</font><font color="#990000">1</font><font color="#000000">;</font><br />
<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#7f0055"><b>int&nbsp;</b></font><font color="#000000">start&nbsp;=&nbsp;</font><font color="#990000">0</font><font color="#000000">;</font><br />
<font color="#ffffff"></font><br />
<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#7f0055"><b>while</b></font><font color="#000000">((</font><font color="#000000">found&nbsp;=&nbsp;source.indexOf</font><font color="#000000">(</font><font color="#000000">pattern,&nbsp;start</font><font color="#000000">))&nbsp;</font><font color="#000000">!=&nbsp;-</font><font color="#990000">1</font><font color="#000000">)&nbsp;{</font><br />
<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">sb.append</font><font color="#000000">(</font><font color="#000000">source.substring</font><font color="#000000">(</font><font color="#000000">start,&nbsp;found</font><font color="#000000">))</font><font color="#000000">;</font><br />
<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">sb.append</font><font color="#000000">(</font><font color="#000000">replace</font><font color="#000000">)</font><font color="#000000">;</font><br />
<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">start&nbsp;=&nbsp;found&nbsp;+&nbsp;len;</font><br />
<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">}</font><br />
<font color="#ffffff"></font><br />
<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">sb.append</font><font color="#000000">(</font><font color="#000000">source.substring</font><font color="#000000">(</font><font color="#000000">start</font><font color="#000000">))</font><font color="#000000">;</font><br />
<font color="#ffffff"></font><br />
<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#7f0055"><b>return&nbsp;</b></font><font color="#000000">sb.toString</font><font color="#000000">()</font><font color="#000000">;</font><br />
<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">}</font><br />
<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#7f0055"><b>else&nbsp;return&nbsp;</b></font><font color="#2a00ff">&#34;&#34;</font><font color="#000000">;</font><br />
<font color="#000000">}</font></td>
</tr>
</table>
</div>
<p style="text-align: justify; padding-top: 5px">Das war&#8217;s soweit. Vielleicht nehme ich mir noch weitere Sprachen vor&#8230; naja, spätestens dann, wenn ich sie hier brauche. ;-)<br />
Für die Automatisierung der Ergebnislieferung der oben aufgeführten Sprachen, wie ich es möchte, liese sich bestimmt ein kleines Tool schreiben. Mal sehen&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.murb.com/2008/12/04/source-code-in-wordpress-c-xaml-java/feed/</wfw:commentRss>
		</item>
		<item>
		<title>&#8230;und ab geht die Post!</title>
		<link>http://blog.murb.com/2008/12/02/und-ab-geht-die-post/</link>
		<comments>http://blog.murb.com/2008/12/02/und-ab-geht-die-post/#comments</comments>
		<pubDate>Tue, 02 Dec 2008 20:00:43 +0000</pubDate>
		<dc:creator>Richard</dc:creator>
		
		<category><![CDATA[Allgemeines]]></category>

		<category><![CDATA[blog]]></category>

		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://blog.murb.com/?p=1</guid>
		<description><![CDATA[Blog hier, Blog da. Gibt es noch jemanden, der nicht bloggt?
In letzter Zeit bin ich während der Suche nach Lösungen zu meinen meist programmiertechnischen Problemen nicht selten über unzählige Blogs mit Lösungsvorschlägen gestolpert. Als ich mir am Ende eines solchen Suchmarathons meinen eigenen Lösungsweg zusammen geschustert hatte, konnte ich diesen leider keinem hinterlassen. So entstand [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;"><strong>Blog hier, Blog da. Gibt es noch jemanden, der nicht bloggt?</strong></p>
<p style="text-align: justify;">In letzter Zeit bin ich während der Suche nach Lösungen zu meinen meist programmiertechnischen Problemen nicht selten über unzählige Blogs mit Lösungsvorschlägen gestolpert. Als ich mir am Ende eines solchen Suchmarathons meinen eigenen Lösungsweg zusammen geschustert hatte, konnte ich diesen leider keinem hinterlassen. So entstand die Idee, doch selbst einen Blog ins Leben zu rufen. Zudem hatte mich schon länger interessiert, wie so ein Blog genau funktioniert. ;-)</p>
<p style="text-align: justify;">Also denn, <a href="http://de.wordpress.org/" target="_blank">WordPress</a> installieren  und loslegen! Naja, nicht ganz&#8230; zu einem eigenen Blog gehört natürlich auch ein eigenes Design. Nach dem Durchwühlen ettlicher Themenseiten stand die Wahl fest. Kleinere Änderungen an Design und Darstellung waren noch nötig, dann war ich zufrieden. Endlich ging&#8217;s an den Inhalt&#8230;<br />
Nein, noch immer nicht. Es taucht sofort das nächste Problem auf: Wie bekomme ich in den Artikel eine vernünftige &#8220;Codeumgebung&#8221; hinein? Am besten mit toller Syntax-Highlighting? Mehr dazu <a href="http://blog.murb.com/?p=12" target="_self">hier</a>.</p>
<p style="text-align: justify;">Wie es hier genau weiter geht oder ob mir nicht nach wenige Tagen die Lust vergeht, wird sich zeigen&#8230;</p>
<p style="text-align: justify;">Servus</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.murb.com/2008/12/02/und-ab-geht-die-post/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>

