<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2enclosuresfull.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss 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/" xmlns:creativeCommons="http://backend.userland.com/creativeCommonsRssModule" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>IT Blögg</title>
	
	<link>http://blog.murawski.ch</link>
	<description>Alles rund um einen IT Nerd</description>
	<lastBuildDate>Mon, 30 Jan 2012 19:27:24 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/ItBloegg" /><feedburner:info uri="itbloegg" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><creativeCommons:license>http://creativecommons.org/licenses/by-sa/2.0/</creativeCommons:license><feedburner:emailServiceId>ItBloegg</feedburner:emailServiceId><feedburner:feedburnerHostname>http://feedburner.google.com</feedburner:feedburnerHostname><item>
		<title>BackTrack 5 RC1 (Ubuntu) auf UX31</title>
		<link>http://feedproxy.google.com/~r/ItBloegg/~3/mWc3HKTpJTQ/</link>
		<comments>http://blog.murawski.ch/2012/01/backtrack-5-rc1-ubuntu-auf-ux31/#comments</comments>
		<pubDate>Sun, 15 Jan 2012 12:38:37 +0000</pubDate>
		<dc:creator>Stefan</dc:creator>
				<category><![CDATA[Gadgets]]></category>
		<category><![CDATA[PC Artikel]]></category>
		<category><![CDATA[Laptop]]></category>
		<category><![CDATA[Tweaks]]></category>
		<category><![CDATA[Ultrabook]]></category>
		<category><![CDATA[UX31]]></category>

		<guid isPermaLink="false">http://blog.murawski.ch/?p=4808</guid>
		<description><![CDATA[&#160;BackTrack ist ein OS mit Penetration Testing Tools auf Ubuntu Basis. Die neueste Version 5RC1 kann von folgender Seite heruntergeladen werden: http://www.backtrack-linux.org/downloads/ (Ich habe die KDE x64 Version genommen) Das OS erkennt leider nicht gleich die ganze Hardware vom Anfang an und da muss man ein wenig nachhelfen. Ethernet USB-LAN Adapter Dieser wird komplett nicht [...]]]></description>
			<content:encoded><![CDATA[&nbsp;<p>BackTrack ist ein OS mit Penetration Testing Tools auf Ubuntu Basis. Die neueste Version 5RC1 kann von folgender Seite heruntergeladen werden: <a href="http://www.backtrack-linux.org/downloads/" target="_blank">http://www.backtrack-linux.org/downloads/</a> (Ich habe die KDE x64 Version genommen)</p>
<p>Das OS erkennt leider nicht gleich die ganze Hardware vom Anfang an und da muss man ein wenig nachhelfen.</p>
<p><b>Ethernet USB-LAN Adapter</b><br />
Dieser wird komplett nicht erkennt und daher sollte man den dazugehörigen Treiber herunterladen. Dazu gibt man in der Shell folgenden Befehl ein:</p>
<blockquote><p><code>wget http://www.asix.com.tw/FrootAttach/driver/AX88772B_772A_760_772_178_LINUX_Driver_v4.2.0_Source.zip<br />
cd AX88772B_772A_760_772_178_LINUX_Driver_v4.1.0_Source<br />
make<br />
sudo make install<br />
sudo modprobe asix<br />
echo "asix" >> /etc/modules</code></p></blockquote>
<p>Anschliessend wurde der richtige Treiber installiert und aktiviert.</p>
<p><b>WLAN Adapter</b><br />
Der WLAN Adapter wird zwar erkennt, ist aber beim normalen Systemstart mit einem Softlock versehen. Um diesen zu entfernen sind diese Befehle nötig:<br />
<span id="more-4808"></span><br />
<blockquote><code>sudo modprobe -r acer-wmi<br />
cd /etc/modprobe.d<br />
echo "blacklist acer-wmi" >> blacklist.conf<br />
echo "rfkill unlock all" >> /root.profile<br />
rfkill unlock all<br />
</code></p></blockquote>
<p>Nun ist der Softlock entfernt und das WLAN ist auf wlan0 verfügbar.</p>
<p><b>Sleep / Hibernate Mode</b><br />
Leider hängt sich der Laptop dann beim Sleep und Hibernate auch noch auf. Dies hat mit den USB3 Treibern zu tun. Beim Aktivieren, schaltet sich zudem auch der Bildschirm nicht mehr richtig ein. Um das zu beheben sind folgende Befehle notwendig:</p>
<blockquote><p><code>touch /etc/pm/sleep.d/95usbscreen<br />
echo 'EHCI_BUSES="0000:00:1a.0 0000:00:1d.0"' >> /etc/pm/sleep.d/95usbscreen<br />
echo 'case "${1}" in' >> /etc/pm/sleep.d/95usbscreen<br />
echo '   hibernate|suspend)' >> /etc/pm/sleep.d/95usbscreen<br />
echo '       # Switch USB buses off' >> /etc/pm/sleep.d/95usbscreen<br />
echo '       for bus in $EHCI_BUSES; do' >> /etc/pm/sleep.d/95usbscreen<br />
echo '           echo -n $bus > /sys/bus/pci/drivers/ehci_hcd/unbind' >> /etc/pm/sleep.d/95usbscreen<br />
echo '       done' >> /etc/pm/sleep.d/95usbscreen<br />
echo '       ;;' >> /etc/pm/sleep.d/95usbscreen<br />
echo '   resume|thaw)' >> /etc/pm/sleep.d/95usbscreen<br />
echo '       # Switch USB buses back on' >> /etc/pm/sleep.d/95usbscreen<br />
echo '       for bus in $EHCI_BUSES; do' >> /etc/pm/sleep.d/95usbscreen<br />
echo '           echo -n $bus > /sys/bus/pci/drivers/ehci_hcd/bind' >> /etc/pm/sleep.d/95usbscreen<br />
echo '       done' >> /etc/pm/sleep.d/95usbscreen<br />
echo '' >> /etc/pm/sleep.d/95usbscreen<br />
echo '       echo -n 0x90 0x80 > /sys/devices/platform/i8042/serio4/setreg' >> /etc/pm/sleep.d/95usbscreen<br />
echo '       echo -n c > /sys/devices/platform/i8042/serio4/flags' >> /etc/pm/sleep.d/95usbscreen<br />
echo '       # Hacky workaround to fix display after suspend' >> /etc/pm/sleep.d/95usbscreen<br />
echo '       export DISPLAY=":0"' >> /etc/pm/sleep.d/95usbscreen<br />
echo '       export XAUTHORITY="/root/.Xauthority"' >> /etc/pm/sleep.d/95usbscreen<br />
echo '       xset dpms force off' >> /etc/pm/sleep.d/95usbscreen<br />
echo '       xset dpms force on' >> /etc/pm/sleep.d/95usbscreen<br />
echo '       ;;' >> /etc/pm/sleep.d/95usbscreen<br />
echo 'esac' >> /etc/pm/sleep.d/<br />
chmod +x /etc/pm/sleep.d/95usbscreen</code></p></blockquote>
<p><b>Autostart von KDE</b><br />
Wer möchte das sich das KDE automatisch startet, kann noch folgende Befehle ausführen:</p>
<blockquote><p><code>echo 'if [ -z "$DISPLAY" ] &#038;&#038; [ $(tty) == /dev/tty1 ] ; then]' >> .profile<br />
echo "		startx" >> .profile<br />
echo "fi" >> .profile</code></p></blockquote>
<p>Nun startet das KDE automatisch beim Systemstart.</p>
<p><b>Touchpad, Grafik &#038; Musik</b><br />
Diese Treiber funktionieren auf Anhieb und keinerlei Modifikationen müssen gemacht werden.</p>
<p>Da die Batterielaufzeit sehr wichtig ist bei einem Laptop nehmen wir auch da noch diverse Anpassungen vor.<br />
Damit Strom gespart werden kann, werden wir diverse Dinge anpassen, dafür installieren wir zuerst die Tools dazu:</p>
<blockquote><p><code>sudo apt-get install laptop-mode-tools -y<br />
echo 'MODULES="all"' >> /etc/default/acpid</code></p></blockquote>
<p>Damit USB3 schlafen geht wenn es unbenutzt ist:</p>
<blockquote><p><code>replace 'CONTROL_USB_AUTOSUSPEND=0' 'CONTROL_USB_AUTOSUSPEND=1' -- /etc/laptop-mode/conf.d/usb-autosuspend.conf<br />
replace 'LM_AC_SUSPEND_USB=0' 'LM_AC_SUSPEND_USB=1' -- /etc/laptop-mode/conf.d/usb-autosuspend.conf</code></p></blockquote>
<p>Der SATA Controller:</p>
<blockquote><p><code>replace 'CONTROL_INTEL_SATA_POWER=0' 'CONTROL_USB_AUTOSUSPEND=1' -- /etc/laptop-mode/conf.d/intel-sata-powermgmt.conf<br />
echo 'BATT_ACTIVATE_SATA_POWER=1' >> /etc/laptop-mode/conf.d/intel-sata-powermgmt.conf<br />
echo 'LM_AC_ACTIVATE_SATA_POWER=1' >> /etc/laptop-mode/conf.d/intel-sata-powermgmt.conf<br />
echo 'NOLM_AC_ACTIVATE_SATA_POWER=0' >> /etc/laptop-mode/conf.d/intel-sata-powermgmt.conf</code></p></blockquote>
<p>LCD Helligkeit:</p>
<blockquote><p><code>replace 'CONTROL_BRIGHTNESS=0' 'CONTROL_BRIGHTNESS=1' -- /etc/laptop-mode/conf.d/lcd-brightness.conf<br />
replace 'BATT_BRIGHTNESS_COMMAND="echo [value]"' 'BATT_BRIGHTNESS_COMMAND="echo 4"' -- /etc/laptop-mode/conf.d/lcd-brightness.conf<br />
replace 'LM_AC_BRIGHTNESS_COMMAND="echo [value]"' 'LM_AC_BRIGHTNESS_COMMAND="echo 10"' -- /etc/laptop-mode/conf.d/lcd-brightness.conf<br />
replace 'NOLM_AC_BRIGHTNESS_COMMAND="echo [value]"' 'NOLM_AC_BRIGHTNESS_COMMAND="echo 10"' -- /etc/laptop-mode/conf.d/lcd-brightness.conf<br />
replace 'BRIGHTNESS_OUTPUT="/proc/acpi/video/VID/LCD/brightness"' 'BRIGHTNESS_OUTPUT="/sys/class/backlight/acpi_video0/brightness"' -- /etc/laptop-mode/conf.d/lcd-brightness.conf</code></p></blockquote>
<p><b>CPU Frequenz Anpassung</b><br />
Damit die CPU nicht immer auf voller Leistung läuft, sondern sich je nach Systemlast selber anpasst (Stromsparend) sollte man noch das dazugehörige Modul installieren und aktivieren:</p>
<blockquote><p><code>sudo apt-get install cpufrequtils<br />
sudo modprobe acpi-cpufreq<br />
sudo modprobe cpufreq_ondemand<br />
echo "acpi-cpufreq" >> /etc/modules<br />
echo "cpufreq_ondemand" >> /etc/modules<br />
replace 'CONTROL_CPU_FREQUENCY=0' 'CONTROL_CPU_FREQUENCY=1' -- /etc/laptop-mode/conf.d/cpufreq.conf</code></p></blockquote>
<p>Audio:</p>
<blockquote><p><code>replace 'CONTROL_AC97_POWER=0' 'CONTROL_AC97_POWER=1' -- /etc/laptop-mode/conf.d/ac97-powersave.conf</code></p></blockquote>
<p>Und noch ein Fix, damit wir uns mit dem PM-Util nicht in den Weg kommen:</p>
<blockquote><p><code>touch /etc/pm/config.d/laptop-mode-tools<br />
echo 'HOOK_BLACKLIST="laptop-mode"' >> /etc/pm/config.d/laptop-mode-tools</code></p></blockquote>
<p>Selbstverständlich sollte das Gleiche auch mit dem kleineren Bruder dem UX21 gehen, aber ist ungetestet.</p>
&copy;2011 SMu - <a href=\"http://blog.murawski.ch/\">IT Blögg</a><img src=\"http://stats.murawski.ch/piwik.php?idsite=1&rec=1\" alt=\"\" /><img src="http://feeds.feedburner.com/~r/ItBloegg/~4/mWc3HKTpJTQ" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.murawski.ch/2012/01/backtrack-5-rc1-ubuntu-auf-ux31/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		<feedburner:origLink>http://blog.murawski.ch/2012/01/backtrack-5-rc1-ubuntu-auf-ux31/</feedburner:origLink></item>
		<item>
		<title>Die Weltwoche deckt nächsten Skandal auf</title>
		<link>http://feedproxy.google.com/~r/ItBloegg/~3/6Ty2f4Kb1Lc/</link>
		<comments>http://blog.murawski.ch/2012/01/die-weltwoche-deckt-nachsten-skandal-auf/#comments</comments>
		<pubDate>Fri, 13 Jan 2012 10:40:29 +0000</pubDate>
		<dc:creator>Stefan</dc:creator>
				<category><![CDATA[Lustiges]]></category>
		<category><![CDATA[Weltwoche]]></category>
		<category><![CDATA[Witz]]></category>

		<guid isPermaLink="false">http://blog.murawski.ch/?p=4805</guid>
		<description><![CDATA[&#160;Gemäss Recherchen der oben genannten Zeitung, soll ein Informant den SRG-Generaldirektor Roger de Weck darüber ins Bild gesetzt haben, dass SF-Meteorologe Thomas Bucheli an einem hochbrisanten Insiderdeal beteiligt gewesen sein soll. Konkret geht es darum, dass Buchelis Frau Mitte Dezember in einem Pneuhaus in Zürich-Altstetten neue Winterreifen gekauft haben soll und zwar genau einen Tag, [...]]]></description>
			<content:encoded><![CDATA[&nbsp;<p>Gemäss Recherchen der oben genannten Zeitung, soll ein Informant den SRG-Generaldirektor Roger de Weck darüber ins Bild gesetzt haben, dass SF-Meteorologe Thomas Bucheli an einem hochbrisanten Insiderdeal beteiligt gewesen sein soll. Konkret geht es darum, dass Buchelis Frau Mitte Dezember in einem Pneuhaus in Zürich-Altstetten neue Winterreifen gekauft haben soll und zwar genau einen Tag, bevor es zum ersten Mal bis ins Flachland geschneit hat.</p>
<p>Dieser Reifenhandel wirft natürlich viele Fragen auf. Hat Buchelis Frau vom bevorstehenden Schneefall gewusst? Hat Thomas Bucheli selbst den Reifendeal eingefädelt? Wer hat alles von der ganzen Sache profitiert? Eins ist auf jeden Fall klar, die Sache stinkt zum Himmel und der Bucheli hat offensichtlich seine Frau nicht unter Kontrolle!!!</p>
<p>Höchst pikant ist auch die Tatsache, dass der Informant (ein Hilfsarbeiter desPneuhauses) mit seinen Beweisen zuerst zum obersten Muotathaler Wetterschmöker Hans-Heiri Tresch (ein seit Jahren vehementer Kritiker Buchelis) ging, und dieser wiederum spielte die &#8220;Reifenakte&#8221; der &#8220;Weltwoche&#8221; und danach Roger de Weck zu. Was wiederum die Schlussfolgerung zulässt, dass sich Hans-Heiri Tresch den Moderationsposten auf dem Dach des Studios Leutschenbach unter den Nagel reissen will. Da Tresch im Moment &#8220;in der Zeit des Schweigens&#8221; ist, war von ihm keine Stellungnahme zu erhalten. Thomas Bucheli seinerseits weist jedoch alle gegen ihn erhobenen Vorwürfe vehement zurück.</p>
<p>Eine Blitz-Umfrage von 20Minuten Online hat übrigens ergeben, dass 98% der Userinnen und User nicht wissen, wer Thomas Bucheli ist, was Roger de Weck wiederum auf die sinkenden Einschaltquoten zurückführte.</p>
<p>Und zum Schluss noch meine persönliche Wettervorhersage: Am Abend ist mit aufkommender Dunkelheit zu rechnen&#8230;.. gegen Morgen wird&#8217;s dann aber wieder heller. </p>
<p>Ich wünsche ein schönes Wochenende.</p>
&copy;2011 SMu - <a href=\"http://blog.murawski.ch/\">IT Blögg</a><img src=\"http://stats.murawski.ch/piwik.php?idsite=1&rec=1\" alt=\"\" /><img src="http://feeds.feedburner.com/~r/ItBloegg/~4/6Ty2f4Kb1Lc" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.murawski.ch/2012/01/die-weltwoche-deckt-nachsten-skandal-auf/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://blog.murawski.ch/2012/01/die-weltwoche-deckt-nachsten-skandal-auf/</feedburner:origLink></item>
		<item>
		<title>Review &amp; FN Tasten Problem vom Asus Ultrabook UX21/31</title>
		<link>http://feedproxy.google.com/~r/ItBloegg/~3/H3qm7D7qARw/</link>
		<comments>http://blog.murawski.ch/2011/12/review-fn-tasten-problem-vom-asus-ultrabook-ux2131/#comments</comments>
		<pubDate>Thu, 29 Dec 2011 10:39:54 +0000</pubDate>
		<dc:creator>Stefan</dc:creator>
				<category><![CDATA[Gadgets]]></category>
		<category><![CDATA[PC Artikel]]></category>
		<category><![CDATA[FN Taste]]></category>
		<category><![CDATA[Laptop]]></category>
		<category><![CDATA[Ultrabook]]></category>
		<category><![CDATA[UX31]]></category>

		<guid isPermaLink="false">http://blog.murawski.ch/?p=4795</guid>
		<description><![CDATA[&#160;Die neuen Ultrabooks von Asus sind schon der Hit. Schmal, leicht, schnell und starke Akku&#8217;s. Vorne weg ohne Jedem Angst zu machen. Die Überschwemmungen in Thailand haben auf dem SSD Markt ein riesiger Schaden hinterlassen. Aus dem Grund kaufen aktuell alle Hersteller die SSD Festplatten zusammen. Die verbauten 128GB AData Sandforce SSD Platten sind recht [...]]]></description>
			<content:encoded><![CDATA[&nbsp;<p>Die neuen <a target="_blank" rel="external nofollow" href="http://www.asus.de/Notebooks/Superior_Mobility/ASUS_ZENBOOK_UX31E/">Ultrabooks von Asus</a> sind schon der Hit. Schmal, leicht, schnell und starke Akku&#8217;s.</p>
<p>Vorne weg ohne Jedem Angst zu machen. Die Überschwemmungen in Thailand haben auf dem SSD Markt ein riesiger Schaden hinterlassen. Aus dem Grund kaufen aktuell alle Hersteller die SSD Festplatten zusammen.</p>
<p><center><img class="alignnone size-full wp-image-4796" title="Ultrabook UX31" src="http://bimg4.murawski.ch/wp-content/uploads/2011/12/Ultrabook-UX31.jpg" alt="Ultrabook UX31" width="500" height="500" /></center></p>
<p>Die verbauten 128GB AData Sandforce SSD Platten sind recht schnell und leistungsfähig. Die verbauten 256 GB Festplatten von Sandisk hingegen sind lahme Schnecken im Vergleich.</p>
<p>Der i7 tut wiederum seinen Dienst und man hat genügend Performance.</p>
<p>Das Ultrabook kommt mit einem vorinstallierten Windows 7 daher. Da dies von Asus erstellt wurde, finden sich darauf erstmals eine Handvoll unnützlicher Spiele und Anwendungen vor die man deinstallieren sollte. Dabei geht schonmal eine Stunde den Bach runter.</p>
<p>Weiterhin ist auch <span id="more-4795"></span>die BingBar installiert, wo man beim Setup zustimmen muss. Naja, dafür hat man das Ultrabook 100 CHF Billiger erhalten (MS zahlt dafür) und das deinstalliert man sich auch gleich. Dafür nehm ich mir die 5 Minuten gerne.</p>
<p>Wie immer ist das Windows längst veraltet und man macht sich auf zu einem Update Marathon über mehrere Stunden.</p>
<p>Ist alles erledigt, bemerkt man gegebenenfalls, dass die FN Tasten nicht mehr funktionieren.<br />
FN + F2 steuert WLAN und Bluetooth, auch FN + F9-12 sind ausser Funktion.</p>
<p>Kurz gesagt, der ATK Manager darauf ist zwar installiert, tut aber nicht was er sollte.</p>
<p>Diesen kann man sich bei <a href="http://support.asus.de/download/download.aspx?SLanguage=de-de" target="_blank" rel="external nofollow">Asus.de</a> herunterladen:<br />
<a href="http://support.asus.de/download/download.aspx?SLanguage=de-de" target="_blank" rel="external nofollow"><img src="http://bimg3.murawski.ch/wp-content/uploads/2011/12/ATK-Manager.jpg" alt="ATK Manager" title="ATK Manager" width="600" height="150" class="alignnone size-full wp-image-4797" /></a></p>
<p>Beim Starten fragt er nach ob man die Installation reparieren oder entfernen möchte. Unbedingt Entfernen!<br />
Danach Rebooten. (PS: Sollte der Reboot nicht gehen, abwürgen). Erst nach dem Reboot neu installieren und hier nochmals Rebooten (sollte nun gehen).</p>
<p>Ist dies erledigt, funktioniert der ATK Manager endlich zufriedenstellend und die FN Tasten damit auch.</p>
<p>Trotz der Problemchen, bin ich sehr zufrieden mit dem Gerät und kann es nur empfehlen.</p>
&copy;2011 SMu - <a href=\"http://blog.murawski.ch/\">IT Blögg</a><img src=\"http://stats.murawski.ch/piwik.php?idsite=1&rec=1\" alt=\"\" /><img src="http://feeds.feedburner.com/~r/ItBloegg/~4/H3qm7D7qARw" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.murawski.ch/2011/12/review-fn-tasten-problem-vom-asus-ultrabook-ux2131/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		<feedburner:origLink>http://blog.murawski.ch/2011/12/review-fn-tasten-problem-vom-asus-ultrabook-ux2131/</feedburner:origLink></item>
		<item>
		<title>PhpMyAdmin 3.4.9 – Sicherheitsupdate</title>
		<link>http://feedproxy.google.com/~r/ItBloegg/~3/UR20ASighZk/</link>
		<comments>http://blog.murawski.ch/2011/12/phpmyadmin-3-4-9-sicherheitsupdate/#comments</comments>
		<pubDate>Sat, 24 Dec 2011 23:50:14 +0000</pubDate>
		<dc:creator>Stefan</dc:creator>
				<category><![CDATA[Confixx]]></category>
		<category><![CDATA[Server]]></category>
		<category><![CDATA[phpMyAdmin]]></category>
		<category><![CDATA[Sicherheit]]></category>

		<guid isPermaLink="false">http://blog.murawski.ch/?p=4780</guid>
		<description><![CDATA[&#160;PhpMyAdmin 3.4.9 ist vor wenigen Tagen erschienen und Jede Person sollte schnellst möglichst diese Version installieren! In allen Versionen inkl. 3.4.8 ist ein Sicherheitsloch, womit man Domain übergreifend ohne Password in die Datenbanken kommt. Ein recht happiger XSS Fix dem Fall. Der Bug wurde am 7. Dezember entdeckt und bereits am 21. Dezember geschlossen. Aus [...]]]></description>
			<content:encoded><![CDATA[&nbsp;<p><a href="http://www.phpmyadmin.net/" rel="external nofollow">PhpMyAdmin 3.4.9</a> ist vor wenigen Tagen erschienen und Jede Person sollte schnellst möglichst diese Version installieren!</p>
<p>In allen Versionen inkl. 3.4.8 ist ein Sicherheitsloch, womit man Domain übergreifend ohne Password in die Datenbanken kommt. Ein recht happiger XSS Fix dem Fall.</p>
<p>Der Bug wurde am 7. Dezember entdeckt und bereits am 21. Dezember geschlossen. Aus diesem Grund wurde auch bereits das <a href='https://www.trustwave.com/spiderlabs/advisories/TWSL2011-019.txt' rel="external nofollow">Proof of Concept</a> am 22. Dezember publiziert, womit diverse Genossen den Bug auf noch nicht aktualisierten Versionen ausnutzen könnten.</p>
<p>Aus dem Grund ist ein Update erst recht ans Herz gelegt!</p>
<p>Weiterhin möchte ich hier noch 2 sehr kleine Tipps zum Besten geben. PhpMyAdmin hat neuerdings noch &#8220;neue Funktionen&#8221; welche man gegebenenfalls nicht nutzen möchte. Leider erscheint dann aber immer folgende Meldung:</p>
<blockquote><p>Der phpMyAdmin-Konfigurationsspeicher ist nicht vollständig konfiguriert, einige erweiterte Funktionen wurden deaktiviert. Klicken Sie hier, um herauszufinden warum.</p></blockquote>
<p>Dazu öffnet man einfach die main.php im PhpMyAdmin Verzeichnis und geht zur Zeile 298:</p>
<pre class="brush: php; title: ; notranslate">if ($server &gt; 0) {</pre>
<p>Diese ändert <span id="more-4780"></span>man in:</p>
<pre class="brush: php; title: ; notranslate">if ($server &gt; 0 AND 1 == 2) {</pre>
<p>Und schon ist die Meldung weg.</p>
<p>Auch gibt es noch die Meldung:</p>
<blockquote><p>Der Server läuft mit Suhosin. Bitte lesen Sie die Dokumentation wegen möglicher Probleme.</p></blockquote>
<p>Falls keine Loginprobleme auftreten, die Meldung einfach im Config.inc.php ausblenden mit folgendem Eintrag:</p>
<pre class="brush: php; title: ; notranslate">$cfg['SuhosinDisableWarning'] = true;</pre>
<p>Ein kleinerer Fehler den gewisse Personen noch sehen:</p>
<blockquote><p>Ab sofort muss ein geheimes Passwort zur Verschlüsselung inder Konfigurationsdatei gesetzt werden (blowfish_secret).</p></blockquote>
<fieldset class="spoiler">
			<legend>
				<input type="button" onclick="tiny_spoiler('FürDebianUsersxawddkczp')" id="FürDebianUsersxawddkczp_button" value="+" />
				Für Debian User
			</legend>
			<div id="FürDebianUsersxawddkczp">Für Euch ist es speziell, ihr fügt wenn nciht schon geschehen folgende Zeile in die /var/lib/phpmyadmin/blowfish_secret.inc.php Datei:</p>
<blockquote><p>$cfg['blowfish_secret'] = &#39;5c925070633049531274625f32203b6d&#39;;</p></blockquote>
<p>Config config.inc.php shieht man Ende etwa so aus:</p>
<blockquote><p>&lt;?php</p>
<p>// Load secret generated on postinst<br />
include(&#39;/var/lib/phpmyadmin/blowfish_secret.inc.php&#39;);</p>
<p>// Load autoconf local config<br />
include(&#39;/var/lib/phpmyadmin/config.inc.php&#39;);</p>
<p>// Load user&#8217;s local config<br />
include(&#39;/etc/phpmyadmin/config.inc.php&#39;);</p>
<p>// Set the default server if there is no defined<br />
if (!isset($cfg[&#39;Servers&#39;])) {<br />
    $cfg[&#39;Servers&#39;][1][&#39;host&#39;] = &#39;localhost&#39;;<br />
}</p>
<p>// Set the default values for $cfg[&#39;Servers&#39;] entries<br />
for ($i=1; (!empty($cfg[&#39;Servers&#39;][$i][&#39;host&#39;]) || (isset($cfg[&#39;Servers&#39;][$i][&#39;connect_type&#39;]) &#038;&#038; $cfg[&#39;Servers&#39;][$i][&#39;connect_type&#39;] == &#39;socket&#39;)); $i++) {<br />
    if (!isset($cfg[&#39;Servers&#39;][$i][&#39;auth_type&#39;])) {<br />
        $cfg[&#39;Servers&#39;][$i][&#39;auth_type&#39;] = &#39;cookie&#39;;<br />
    }<br />
    if (!isset($cfg[&#39;Servers&#39;][$i][&#39;host&#39;])) {<br />
        $cfg[&#39;Servers&#39;][$i][&#39;host&#39;] = &#39;localhost&#39;;<br />
    }<br />
    if (!isset($cfg[&#39;Servers&#39;][$i][&#39;connect_type&#39;])) {<br />
        $cfg[&#39;Servers&#39;][$i][&#39;connect_type&#39;] = &#39;tcp&#39;;<br />
    }<br />
    if (!isset($cfg[&#39;Servers&#39;][$i][&#39;compress&#39;])) {<br />
        $cfg[&#39;Servers&#39;][$i][&#39;compress&#39;] = false;<br />
    }<br />
    if (!isset($cfg[&#39;Servers&#39;][$i][&#39;extension&#39;])) {<br />
        $cfg[&#39;Servers&#39;][$i][&#39;extension&#39;] = &#39;mysql&#39;;<br />
    }<br />
}</p>
<p>$cfg['DefaultLang'] = &#39;de&#39;;<br />
$cfg['SuhosinDisableWarning'] = true;<br />
?&gt;</p></blockquote>
<p>
			</div>
		</fieldset>
<fieldset class="spoiler">
			<legend>
				<input type="button" onclick="tiny_spoiler('Non-DebianInstallationenqnacjyjbwo')" id="Non-DebianInstallationenqnacjyjbwo_button" value="+" />
				Non-Debian Installationen
			</legend>
			<div id="Non-DebianInstallationenqnacjyjbwo"><br />
Dazu fügt man einfach die Zeile in die config.inc.php von PhpMyAdmin:</p>
<blockquote><p>$cfg['blowfish_secret'] = &#39;5c925070633049531274625f32203b6d&#39;;</p></blockquote>
<p>
			</div>
		</fieldset>
<p>Wer mit dem Debian Packet gearbeitet hat (z.B. nach Confixx Anleitung), sollte dieses Mal manuell Updaten!</p>
<p>Immer daran denken die Programme zu updaten, denn dies ist sehr Wichtig!</p>
&copy;2011 SMu - <a href=\"http://blog.murawski.ch/\">IT Blögg</a><img src=\"http://stats.murawski.ch/piwik.php?idsite=1&rec=1\" alt=\"\" /><img src="http://feeds.feedburner.com/~r/ItBloegg/~4/UR20ASighZk" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.murawski.ch/2011/12/phpmyadmin-3-4-9-sicherheitsupdate/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://blog.murawski.ch/2011/12/phpmyadmin-3-4-9-sicherheitsupdate/</feedburner:origLink></item>
		<item>
		<title>An update is available</title>
		<link>http://feedproxy.google.com/~r/ItBloegg/~3/8mFuLNnVL58/</link>
		<comments>http://blog.murawski.ch/2011/12/an-update-is-available/#comments</comments>
		<pubDate>Tue, 20 Dec 2011 10:22:35 +0000</pubDate>
		<dc:creator>Stefan</dc:creator>
				<category><![CDATA[Lustiges]]></category>
		<category><![CDATA[Witz]]></category>

		<guid isPermaLink="false">http://blog.murawski.ch/?p=4770</guid>
		<description><![CDATA[&#160; Der ist so genial, das ich ihn online stellen musste. Quelle PC Tipp &#169;2011 SMu - IT Blögg]]></description>
			<content:encoded><![CDATA[&nbsp;<p><a href="http://bimg4.murawski.ch/wp-content/uploads/2011/12/update_avaialble.png" rel="lightbox[4770]"><img class="alignnone size-full wp-image-4771" title="update_avaialble" src="http://bimg4.murawski.ch/wp-content/uploads/2011/12/update_avaialble.png" alt="" width="395" height="217" /></a></p>
<p>Der ist so genial, das ich ihn online stellen musste.<br />
Quelle <a rel="external nofollow" href="https://www.facebook.com/photo.php?fbid=10151080850640195&amp;set=a.10150448541635195.644651.151725540194&amp;type=1&amp;theater" target="_blank">PC Tipp</a></p>
&copy;2011 SMu - <a href=\"http://blog.murawski.ch/\">IT Blögg</a><img src=\"http://stats.murawski.ch/piwik.php?idsite=1&rec=1\" alt=\"\" /><img src="http://feeds.feedburner.com/~r/ItBloegg/~4/8mFuLNnVL58" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.murawski.ch/2011/12/an-update-is-available/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.murawski.ch/2011/12/an-update-is-available/</feedburner:origLink></item>
		<item>
		<title>Abzocke bei defektem Giromat (Crealogix)</title>
		<link>http://feedproxy.google.com/~r/ItBloegg/~3/KlZF9E8e2fo/</link>
		<comments>http://blog.murawski.ch/2011/11/giromat-defekt-oder-abzocke-bei-crealogix/#comments</comments>
		<pubDate>Thu, 24 Nov 2011 17:28:12 +0000</pubDate>
		<dc:creator>Stefan</dc:creator>
				<category><![CDATA[Sonstiges]]></category>
		<category><![CDATA[Abzocke]]></category>
		<category><![CDATA[Crealogix]]></category>
		<category><![CDATA[Giromat]]></category>

		<guid isPermaLink="false">http://blog.murawski.ch/?p=4751</guid>
		<description><![CDATA[&#160;Vor einer Weile habe ich ein Giromat ersteigert, welcher auch recht lange gut funktioniert hatte. Plötzlich jedoch meldete dieser immer wieder Papierstau und konnte so nur mühsam verwendet werden. Denn legte man eine Quittung ein und drückte die Fehlermeldung weg, zog er wieder eine Einzahlungsschein durch und erfasste die Nummer, meldete danach aber wieder Papierstau. [...]]]></description>
			<content:encoded><![CDATA[&nbsp;<p><img src="http://bimg4.murawski.ch/wp-content/uploads/2011/11/giromat.png" alt="" title="giromat" width="193" height="226" class="alignright size-full wp-image-4757" />Vor einer Weile habe ich ein Giromat ersteigert, welcher auch recht lange gut funktioniert hatte.<br />
Plötzlich jedoch meldete dieser immer wieder Papierstau und konnte so nur mühsam verwendet werden.</p>
<p>Denn legte man eine Quittung ein und drückte die Fehlermeldung weg, zog er wieder eine Einzahlungsschein durch und erfasste die Nummer, meldete danach aber wieder Papierstau.</p>
<p>Da ich gelernter Elektroniker bin und mich mit Strom auskenne, habe ich das Problem recht schnell eruiert und auch auf den einen Lichtsensor zurückverfolgt.<br />
Sobald ich eine externe Lichtquelle an den Sensor hielt, war kein Papierstau mehr da und Alles funktionierte normal.</p>
<p><a href="http://bimg3.murawski.ch/wp-content/uploads/2011/11/giromat-lichtschranke.png" rel="lightbox[4751]"><img src="http://bimg4.murawski.ch/wp-content/uploads/2011/11/giromat-lichtschranke-150x150.png" alt="" title="giromat lichtschranke" width="150" height="150" class="alignleft size-thumbnail wp-image-4754" /></a>Da ich keine UV-Lichtquelle zur Hand hatte, habe ich den Giromat 130 zur Reparatur an den Hersteller Crealogix eingeschickt mit folgendem Hinweis:</p>
<blockquote><p>Beim Giromat fehlt der vordere Einzug, weiterhin ist die erste Lichtschranke defekt und versucht daher immer Papier einzuziehen (meint irgendwas ist zwischen der Schranke) und meldet Stau.</p>
<p>Können sie mir gerne einen Kostenvoranschlag auf xxx unterbreiten?</p></blockquote>
<p>Ich habe dann auch relativ bald eine Rückantwort erhalten:<br />
<span id="more-4751"></span><br />
<blockquote>Wir haben Ihren Giromat erhalten und geprüft.</p>
<p>Leider müssen wir Ihnen mitteilen, dass das Gerät einen grösseren Defekt aufweist. Der Lesekopf ist defekt und lässt sich nicht mehr kalibrieren. Der Papierstau wegen der defekten Lichtschranke ist zurückzuführen auf einen Wackelkontakt im Mainboard.</p>
<p>Da eine Reparatur teuer wäre, würden wir Ihnen vorab vorschlagen, auf ein neues Gerät zu wechseln. Dieses würden wir Ihnen für CHF 1298.- anstatt CHF 1498.- anbieten im Falle, dass Sie sich für das Gerät CLX.G130 entscheiden würden. Bei einem Wechsel auf das Gerät CLX.G75+ offerieren wir Ihnen CHF 898.- anstatt CHF 998.- (bei diesem Gerät bitte Kreditorensoftware angeben).</p>
<p>Wenn Sie dies wünschen, können wir Ihnen die konkreten Reparaturkosten auflisten, wenn Sie dies mit dem Austauschpreis vergleichen möchten.</p></blockquote>
<p>Ich wollte das Gerät unrepariert zurück, was auch geschah. Ein kurzer Test, jawohl das Problem war immer noch vorhanden.</p>
<p><a href="http://bimg4.murawski.ch/wp-content/uploads/2011/11/giromat-funktionsweise.png" rel="lightbox[4751]"><img src="http://bimg3.murawski.ch/wp-content/uploads/2011/11/giromat-funktionsweise-150x150.png" alt="" title="giromat funktionsweise" width="150" height="150" class="alignright size-thumbnail wp-image-4753" /></a>Ich habe das Gerät nochmals aufgemacht und gesehen das der Mitarbeiter scheinbar alle Lötstellen der Lichtschranken nachgelötet habt, dennoch war der Wackelkontakt scheinbar noch vorhanden von welchem gesprochen wurde.<br />
Da die Schranke mit einer externen Lichtquelle funktionierte, meinte ich, dass die UV-Lichtquelle defekt ist. Dies war aber nicht der Fall, wie ich feststellte. Über dem Sender und Empfänger ist ein Plastikgehäuse welches das Licht umleitet (siehe Bild Rechts) welcher ich zuerst abmontierte und darunter entdeckt das der Sender und Empänger leicht schräge montiert waren. Diese habe ich gerade gebogen und die Plastikhülle (Lichtleiter) wieder montiert. Das war es dann auch und unterdessen funktioniert das Gerät wieder und erkennt alle möglichen Einzahlungsscheine.</p>
<p>Wenn ein unjustierter Lesekopf dennoch alle Einzahlungsscheine liest dann frage ich mich wozu die Justierung ist. Ich denke man möchte dem Kunden das Gerät als &#8220;unreparierbar&#8221; hinstellen und ihn so abzocken.<br />
An einem Neugerät verdient man wesentlich mehr als an einer Reparatur.</p>
<p>Ich sage, Abzocke und eine Frechheit!</p>
&copy;2011 SMu - <a href=\"http://blog.murawski.ch/\">IT Blögg</a><img src=\"http://stats.murawski.ch/piwik.php?idsite=1&rec=1\" alt=\"\" /><img src="http://feeds.feedburner.com/~r/ItBloegg/~4/KlZF9E8e2fo" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.murawski.ch/2011/11/giromat-defekt-oder-abzocke-bei-crealogix/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		<feedburner:origLink>http://blog.murawski.ch/2011/11/giromat-defekt-oder-abzocke-bei-crealogix/</feedburner:origLink></item>
		<item>
		<title>WordPress in iFrame laden</title>
		<link>http://feedproxy.google.com/~r/ItBloegg/~3/haa5x9YSQIQ/</link>
		<comments>http://blog.murawski.ch/2011/11/wordpress-in-iframe-laden/#comments</comments>
		<pubDate>Mon, 21 Nov 2011 14:35:34 +0000</pubDate>
		<dc:creator>Stefan</dc:creator>
				<category><![CDATA[WordPress]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Wordpress]]></category>

		<guid isPermaLink="false">http://blog.murawski.ch/?p=4743</guid>
		<description><![CDATA[&#160;WordPress hat bei der Version 3.1 ein Clickjacking Schutz per X-Frame-Options Header eingeführt. Dies hat zur Folge, dass WordPress nicht mehr in iFrames geladen werden kann. Da ich ein Updateskript geschrieben habe, was vollautomatisch alle WordPress Installationen per iFrames update, habe ich seither ein Problem. Zuerst habe ich den Filter von WordPress mit folgendem Plugincode [...]]]></description>
			<content:encoded><![CDATA[&nbsp;<p>WordPress hat bei der Version 3.1 ein Clickjacking Schutz per X-Frame-Options Header eingeführt.</p>
<p>Dies hat zur Folge, dass WordPress nicht mehr in iFrames geladen werden kann.</p>
<p>Da ich ein Updateskript geschrieben habe, was vollautomatisch alle WordPress Installationen per iFrames update, habe ich seither ein Problem.</p>
<p>Zuerst habe ich den Filter von WordPress mit folgendem Plugincode entfernt:</p>
<pre class="brush: php; title: ; notranslate">remove_action( 'login_init', 'send_frame_options_header');
remove_action( 'admin_init', 'send_frame_options_header');</pre>
<p>Als Nächstes habe ich meine eigene Funktion hinzugefügt:</p>
<pre class="brush: php; title: ; notranslate">function wuk_send_frame_options_header() {
	@header( 'X-Frame-Options: SAMEORIGIN, ALLOW-FROM http://wuk.ch' );
}
add_action( 'login_init', 'wuk_send_frame_options_header', 10, 0 );
add_action( 'admin_init', 'wuk_send_frame_options_header', 10, 0 );</pre>
<p>Und schon wird der HTTP Header so modifiziert das iFrames von der angegebenen Webseite erlaubt sind, aber dennoch alle anderen Domains weiterhin verboten sind.</p>
&copy;2011 SMu - <a href=\"http://blog.murawski.ch/\">IT Blögg</a><img src=\"http://stats.murawski.ch/piwik.php?idsite=1&rec=1\" alt=\"\" /><img src="http://feeds.feedburner.com/~r/ItBloegg/~4/haa5x9YSQIQ" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.murawski.ch/2011/11/wordpress-in-iframe-laden/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.murawski.ch/2011/11/wordpress-in-iframe-laden/</feedburner:origLink></item>
		<item>
		<title>Bekämpfen sich Anti-Viren-Programmen wirklich?</title>
		<link>http://feedproxy.google.com/~r/ItBloegg/~3/9k5c2yYTwEo/</link>
		<comments>http://blog.murawski.ch/2011/11/bekampfen-sich-anti-viren-programmen-wirklich/#comments</comments>
		<pubDate>Tue, 01 Nov 2011 20:37:02 +0000</pubDate>
		<dc:creator>Stefan</dc:creator>
				<category><![CDATA[Programme]]></category>
		<category><![CDATA[AntiVirus]]></category>
		<category><![CDATA[Verrücktes]]></category>

		<guid isPermaLink="false">http://blog.murawski.ch/?p=4716</guid>
		<description><![CDATA[&#160;Was der Titel verspricht, wollte ich mal auf die Probe stellen. Jeder weiss das man nicht mehr als eine Anti-Viren Software installieren sollte. Was passiert aber wirklich? Genau das habe ich mich gefragt und kurzerhand die kostenlose Anti-Viren-Programme auf der Microsoft Virenwebseite heruntergeladen und installiert. Zu diesem Zweck habe ich folgende 4 Anwendungen auf einer [...]]]></description>
			<content:encoded><![CDATA[&nbsp;<p><a href="http://bimg4.murawski.ch/wp-content/uploads/2011/11/Bild-007.jpg" rel="lightbox[4716]"><img src="http://bimg4.murawski.ch/wp-content/uploads/2011/11/Bild-007-150x150.jpg" alt="Parallele Installation" title="Parallele Installation" width="150" height="150" class="alignright size-thumbnail wp-image-4717" /></a>Was der Titel verspricht, wollte ich mal auf die Probe stellen. Jeder weiss das man nicht mehr als eine Anti-Viren Software installieren sollte.</p>
<p>Was passiert aber wirklich?</p>
<p>Genau das habe ich mich gefragt und kurzerhand die kostenlose Anti-Viren-Programme auf der Microsoft Virenwebseite heruntergeladen und installiert.</p>
<p>Zu diesem Zweck habe ich folgende 4 Anwendungen auf einer VM miteinander getestet:
<ul>
<li>Panda Cloud</li>
<li>Microsoft Security Essentials</li>
<li>Avira Avast</li>
<li>Emisoft</li>
</ul>
<p><img src="http://bimg4.murawski.ch/wp-content/uploads/2011/11/Bild-008.jpg" alt="Alle 4 Aktiv" title="Alle 4 Aktiv" width="289" height="36" class="alignnone size-full wp-image-4718" /><br />
<a href="http://bimg3.murawski.ch/wp-content/uploads/2011/11/Bild-012.jpg" rel="lightbox[4716]"><img src="http://bimg3.murawski.ch/wp-content/uploads/2011/11/Bild-012-150x150.jpg" alt="" title="Bild 012" width="150" height="150" class="alignright size-thumbnail wp-image-4724" /></a>Nur Avast prüft auf &#8220;inkompatible Anwendungen&#8221;, aber scheinbar sind parallel installierte Anti-Viren- Anwendungen kein Problem, den es wurde akzeptiert. Lediglich PandaCloud musste ich in 2 Versuchen installieren, irgendwas ging da aber schief&#8230;</p>
<p>War Alles drauf, teste ich selbstverständlich auch noch rasch mit gewissen Dateien.</p>
<p>Hinhalten musste eine KeyGen.exe welche ich rasch per VB6 zusammenbastelte. Darin enthalten war ein KeyLogger, Diverse RegistySchreib Zugriffe, Hosts File modifizieren und ein IE Browser Hack.</p>
<p><span id="more-4716"></span><br />
<table border="0" cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr>
<td><a href="http://bimg2.murawski.ch/wp-content/uploads/2011/11/Bild-009.jpg" rel="lightbox[4716]"><img src="http://bimg2.murawski.ch/wp-content/uploads/2011/11/Bild-009.jpg" alt="Meine VB6 ist böööse" title="Meine VB6 ist böööse" width="251" height="301" class="alignnone size-full wp-image-4720" /></a></td>
<td>Ohne auch schon die EXE aufzurufen reagierte Avira als einziger Anti-Virenschutz auf die Datei und zeigte ein netten Trojaner an. Alle anderen ignorieren meine VB6 Datei, auch wenn ich diese Aufrufe komplett.</td>
</tr>
<tr>
<td><a href="http://bimg2.murawski.ch/wp-content/uploads/2011/11/Bild-010.jpg" rel="lightbox[4716]"><img src="http://bimg2.murawski.ch/wp-content/uploads/2011/11/Bild-010.jpg" alt="WebHack" title="WebHack" width="250" height="199" class="alignnone size-full wp-image-4719" /></a></td>
<td>Erst als ich versuche per KeyGen.exe den BrowserHack aufzurufen reagiert Emisoft und blockiert die Aktion</td>
</tr>
<tr>
<td><a href="http://bimg4.murawski.ch/wp-content/uploads/2011/11/Bild-011.jpg" rel="lightbox[4716]"><img src="http://bimg2.murawski.ch/wp-content/uploads/2011/11/Bild-011-300x266.jpg" alt="blocke den fix" title="blocke den fix" width="300" height="266" class="alignnone size-medium wp-image-4722" /></a></a></td>
<td>Egal ob ich es Zulasse oder Blockiere, die Aktion wird dann vom Emisoft blockiert. OK, hier blockiert zum ersten Mal der eine Anti-Viren-Schutz den Anderen.</td>
</tr>
</tbody>
</table>
<p>Das war aber auch Alles was blockiert wurde.</p>
<p>Also noch schnell den Eicar Test Virus herunterladen und schauen was passiert. TXT Datei angelegt, Virentext reinkopiert und die ersten Zwei reagieren:<a href="http://bimg4.murawski.ch/wp-content/uploads/2011/11/Bild-013.jpg" rel="lightbox[4716]"><img src="http://bimg4.murawski.ch/wp-content/uploads/2011/11/Bild-013.jpg" alt="reagieren" title="reagieren" width="602" height="280" class="alignnone size-full wp-image-4723" /></a></p>
<p>Erst als ich die Text Datei in COM umbenenne reagiert auch Panda.<br />
<a href="http://bimg2.murawski.ch/wp-content/uploads/2011/11/Bild-014.jpg" rel="lightbox[4716]"><img src="http://bimg2.murawski.ch/wp-content/uploads/2011/11/Bild-014.jpg" alt="" title="Bild 014" width="432" height="135" class="alignnone size-full wp-image-4728" /></a></p>
<p>Selbst wenn ich per Avast manuell den Scan der COM Datei anwerfe mit dem Eicar Test Virus, reagiert dieser nicht und meldet eine saubere Datei.</p>
<p>Nun ja, viel Sinn machte der Test nicht wirklich und ist auch definitiv nicht aussagekräftig gegenüber den Anti-Viren-Lösungen in Sich, aber abschliessend kann ich sagen:</p>
<p>Parallele Installationen von mehreren Anti-Viren-Lösungen sind möglich und diese löschen sich nicht gegenseitig wie oft angenommen. Sie können sich gegenseitig blockieren bei gewissen Vorgängen, aber funktionieren sonst. Im Sinne &#8220;Wer es braucht der kann&#8221;.</p>
&copy;2011 SMu - <a href=\"http://blog.murawski.ch/\">IT Blögg</a><img src=\"http://stats.murawski.ch/piwik.php?idsite=1&rec=1\" alt=\"\" /><img src="http://feeds.feedburner.com/~r/ItBloegg/~4/9k5c2yYTwEo" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.murawski.ch/2011/11/bekampfen-sich-anti-viren-programmen-wirklich/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		<feedburner:origLink>http://blog.murawski.ch/2011/11/bekampfen-sich-anti-viren-programmen-wirklich/</feedburner:origLink></item>
		<item>
		<title>Seriöse Newsletter erkennen und Spam filtern</title>
		<link>http://feedproxy.google.com/~r/ItBloegg/~3/b3XooNV5iGc/</link>
		<comments>http://blog.murawski.ch/2011/11/seriose-newsletter-erkennen-und-spam-filtern/#comments</comments>
		<pubDate>Tue, 01 Nov 2011 08:59:34 +0000</pubDate>
		<dc:creator>Stefan</dc:creator>
				<category><![CDATA[Server]]></category>
		<category><![CDATA[Confixx]]></category>
		<category><![CDATA[Mail]]></category>
		<category><![CDATA[maildrop]]></category>
		<category><![CDATA[Outlook]]></category>
		<category><![CDATA[Spam]]></category>
		<category><![CDATA[Werbung]]></category>

		<guid isPermaLink="false">http://blog.murawski.ch/?p=4692</guid>
		<description><![CDATA[&#160;Immer wieder treffen Newsletter und Spam in dem Posteingang ein. Klar habe ich seit sehr langem bereits eine 2t Adresse wie abfall@meinedomain.ch heisst. Englische Anbieter wissen nichts mit dem Wort anzufangen und sehen darin keine &#8220;noreply&#8221; Adresse, weshalb diese überall angenommen wird. Ich muss mich dann auch nicht wirklich um den Werbe/Spamfilter kümmern. Nicht jeder [...]]]></description>
			<content:encoded><![CDATA[&nbsp;<p><img src="http://bimg3.murawski.ch/wp-content/uploads/2011/11/spam.png" alt="" title="spam" width="200" height="134" class="alignleft size-full wp-image-4705" />Immer wieder treffen Newsletter und Spam in dem Posteingang ein.<br />
Klar habe ich seit sehr langem bereits eine 2t Adresse wie abfall@meinedomain.ch heisst.</p>
<p>Englische Anbieter wissen nichts mit dem Wort anzufangen und sehen darin keine &#8220;noreply&#8221; Adresse, weshalb diese überall angenommen wird. Ich muss mich dann auch nicht wirklich um den Werbe/Spamfilter kümmern.</p>
<p>Nicht jeder Person besitzt eine solche 2t Adresse und benötigt daher ein paar Hilfsmittel welche die Abarbeitung des täglichen Mailaufkommen erleichtern.</p>
<h4>Seriöse Anbieter vs. Spamunternehmen</h4>
<p>Es gibt im Mailing-Gewerbe aber auch seriöse Mitbewerber (Newsletter), welche unter dem Massenversand von &#8220;Citalis und Viagra&#8221;-Anbietern (Spam) leiden. Newsletter können von Personen erwünscht sein, wobei aber Spam von Personen unerwünscht ist. Dennoch gelangt die eigene Mailadresse immer wieder mehr oder weniger versehentlich auch in Newsletteranbietern in die Hände, welche sicherlich eine selbst eingetragene Personenanzahl beliefern, nebenbei aber auch an gewünschte Postfächer ausliefern.</p>
<p>Wenn ein seriöser Anbieter Mails versendet und zu viele Personen den Spam-Button drücken, wandert der Anbieter im Ranking nach unten und die zukünftige Mailauslieferung ist wegen Blacklist vom Server/Domain gefährdet. Was die Empfänger vom Spam schützt, verhindert den sauberen Newsletter Empfang.</p>
<h4>Eine Erfindung für einfaches Abmelden</h4>
<p>Daher gibt es seit längerer Zeit den sogenannten Header:<br />
<span id="more-4692"></span><br />
<blockquote>List-Unsubscribe</p></blockquote>
<p>Diverse grosse Mailanbieter erkennen den Mailheader und stellen dem User automatisch die Möglichkeit zum Abmelden per Button wo der Anbieter nach Wahl irgendwo im Design der Seite einbinden kann.<br />
So findet der Anwender immer ein gleich aussehender Knopf an selber Stelle. Weiterhin werden &#8220;Spamreports&#8221; von Mails mit dem Header nicht so gewichtet wie bei Mails ohne dem Header.</p>
<p>Anbieter welche dem User also eine einfache Abmeldung bieten, werden als seriös angeschaut und weniger Ab gestraft. Geniale Idee, was Serverinhabern neue Möglichkeiten schafft.</p>
<h4>Die Möglichkeiten zur Filterung</h4>
<p>So kann man z.B. eine sehr scharfe Spambewertung mit Blacklists machen, jedoch Mails mit dem gesetzten Header durchlassen (trotz Erkennung). Die Empfänger können sich einfach abmelden oder diese mit einem Klick weg filtern, sogar Autoabmeldung wären möglich.<br />
Die User auf dem Server erhalten so abonnierte Newsletter trotz Spamfilter zuverlässiger und der Spamschutz ist dennoch viel schärfer eingestellt. Win/Win Situation.</p>
<p>Auf meinem Server habe ich bekanntlich <a href="http://blog.murawski.ch/2011/05/benutzerdefinierte-filterregeln-unter-confixx/">Benutzerdefinierte Filterregeln im Mail (per maildrop)</a> eingerichtet, mit welchen man auf dem Server bereits Mails filtern kann.</p>
<fieldset class="spoiler">
			<legend>
				<input type="button" onclick="tiny_spoiler('MaildropFilterregelnunterConfixx(ExceptionfürSpamassasin)leqsqagavb')" id="MaildropFilterregelnunterConfixx(ExceptionfürSpamassasin)leqsqagavb_button" value="+" />
				Maildrop Filterregeln unter Confixx (Exception für Spamassasin)
			</legend>
			<div id="MaildropFilterregelnunterConfixx(ExceptionfürSpamassasin)leqsqagavb">Die maildrop Filterregeln dazu ermöglichen es zum Beispiel diese Mails automatisch in den Spam / Newsletter Ordner zu verschieben:</p>
<blockquote><p>if (/^List-Unsubscribe/)<br />
{<br />
exception {<br />
to &#8220;$DEFAULT/.Newsletter/&#8221;<br />
}<br />
}</p></blockquote>
<p>Personen die sicher sind keine Newsletter abonniert haben, können es gleich löschen:</p>
<blockquote><p>if (/^List-Unsubscribe/)<br />
{<br />
exception {<br />
to /dev/null<br />
}<br />
}</p></blockquote>
<p>Damit die Mails aber zuerst mal definitiv durchkommen muss man noch im Spamassasin noch folgende Konfiguration einbauen:</p>
<blockquote><p>header POSIBLE_LIST  ALL =~ /^List-Unsubscribe\:/i<br />
score POSIBLE_LIST -1<br />
describe POSIBLE_LIST vermutlich Mailinglist</p></blockquote>
<p>
			</div>
		</fieldset>
<fieldset class="spoiler">
			<legend>
				<input type="button" onclick="tiny_spoiler('OutlookFilterregelnerstellenejeagpaobm')" id="OutlookFilterregelnerstellenejeagpaobm_button" value="+" />
				Outlook Filterregeln erstellen
			</legend>
			<div id="OutlookFilterregelnerstellenejeagpaobm">Selbstverständlich lässt sich dies auch unter Outlook per Filterregel einstellen:</p>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td valign="top"><a href="http://bimg4.murawski.ch/wp-content/uploads/2011/11/outlookrule1.png" rel="lightbox[4692]"><img class="alignnone size-thumbnail wp-image-4694" title="outlookrule1" src="http://bimg4.murawski.ch/wp-content/uploads/2011/11/outlookrule1-150x143.png" alt="" width="150" height="143" /></a></td>
<td valign="top"><u>1. Regel erstellen</u><br />
Regeln kann man im Home Ribbon unter Regeln -&gt; Regel erstellen anlegen.</td>
<td valign="top"><a href="http://bimg3.murawski.ch/wp-content/uploads/2011/11/outlookrule2.png" rel="lightbox[4692]"><img class="alignnone size-thumbnail wp-image-4696" title="outlookrule2" src="http://bimg2.murawski.ch/wp-content/uploads/2011/11/outlookrule2-150x150.png" alt="" width="150" height="150" /></a></td>
<td valign="top"><u>2. Erweiterte Optionen</u><br />
Damit wir nach dem Header filtern können, müssen wir in die erweiterten Optionen.</td>
</tr>
<tr>
<td valign="top"><a href="http://bimg3.murawski.ch/wp-content/uploads/2011/11/outlookrule4.png" rel="lightbox[4692]"><img class="alignnone size-thumbnail wp-image-4697" title="outlookrule4" src="http://bimg3.murawski.ch/wp-content/uploads/2011/11/outlookrule4-150x150.png" alt="" width="150" height="150" /></a></td>
<td valign="top"><u>3. Filter einstellen</u><br />
Beim Filter wählen wir &#8220;Filtern nach Header aus&#8221; und geben den Begriff &#8220;List-Unsubscribe&#8221; ein.</td>
<td valign="top"><a href="http://bimg4.murawski.ch/wp-content/uploads/2011/11/outlookrule3.png" rel="lightbox[4692]"><img class="alignnone size-thumbnail wp-image-4695" title="outlookrule3" src="http://bimg3.murawski.ch/wp-content/uploads/2011/11/outlookrule3-150x150.png" alt="" width="150" height="150" /></a></td>
<td valign="top"><u>4. Aktion</u><br />
Bei der Aktion können wir nun auswählen was mit der Mail passieren soll. Verschieben in ein Ordner oder direkt löschen.</td>
</tr>
</tbody>
</table>
<p>
			</div>
		</fieldset>
<p>So sind entweder die Newsletter bereits auf dem Server vorgefiltert/gelöscht oder halt anschliessend auf dem PC.</p>
<h4>Schlusswort</h4>
<p>Wie auch immer, seriöse Anbieter kann man so besser greifen und gegebenenfalls auch gezielt durch Blacklists lassen falls man dies möchte. Spam-Unternehmen welche sich nicht daran halten, sind dadurch auch einfacher abzufangen, in dem der Spamfilter viel schärfer eingerichtet werden kann.<br />
Mir gefällt daher der Header und bin froh seriöse Anbieter durch zulassen und dennoch Spam sehr gezielt abblocken zu können.</p>
&copy;2011 SMu - <a href=\"http://blog.murawski.ch/\">IT Blögg</a><img src=\"http://stats.murawski.ch/piwik.php?idsite=1&rec=1\" alt=\"\" /><img src="http://feeds.feedburner.com/~r/ItBloegg/~4/b3XooNV5iGc" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.murawski.ch/2011/11/seriose-newsletter-erkennen-und-spam-filtern/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://blog.murawski.ch/2011/11/seriose-newsletter-erkennen-und-spam-filtern/</feedburner:origLink></item>
		<item>
		<title>WordPress Backend Editor TinyMCE im Frontend einbinden</title>
		<link>http://feedproxy.google.com/~r/ItBloegg/~3/Us2E2UD1piY/</link>
		<comments>http://blog.murawski.ch/2011/10/wordpress-backend-editor-tinymce-im-frontend-einbinden/#comments</comments>
		<pubDate>Sat, 22 Oct 2011 07:00:18 +0000</pubDate>
		<dc:creator>Stefan</dc:creator>
				<category><![CDATA[Plugin]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[Frontend]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[PlugIns]]></category>
		<category><![CDATA[Template]]></category>
		<category><![CDATA[TinyMCE]]></category>
		<category><![CDATA[Wordpress]]></category>

		<guid isPermaLink="false">http://blog.murawski.ch/?p=4635</guid>
		<description><![CDATA[&#160;WordPress nutzt TinyMCE im Backend als Editor. Wer nun den Editor auch im Frontend nutzen möchte, wird auf mehrere Probleme stossen. Zum Einen ist der Editor extrem an WordPress angepasst worden was eine einfache Einbindung sehr erschwert. Weiterhin ist dieser an diversen Orten tief eingegraben welche die Einbindung verhindern. Sucht man per Google, wird man [...]]]></description>
			<content:encoded><![CDATA[&nbsp;<p><img src="http://bimg2.murawski.ch/wp-content/uploads/2011/10/TinyMCE.jpg" alt="" title="TinyMCE" width="150" height="150" class="alignleft size-full wp-image-4673" />WordPress nutzt TinyMCE im Backend als Editor.</p>
<p>Wer nun den Editor auch im Frontend nutzen möchte, wird auf mehrere Probleme stossen.</p>
<p>Zum Einen ist der Editor extrem an WordPress angepasst worden was eine einfache Einbindung sehr erschwert. Weiterhin ist dieser an diversen Orten tief eingegraben welche die Einbindung verhindern.</p>
<p>Sucht man per Google, wird man diverse Ansätze zur Einbindung finden, doch keine fertige und funktionsfähige Lösung. Da ich dies aber benötigte, habe ich mich hingesetzt und eine eigene Lösung zusammengebaut.</p>
<p>Damit die Einbindung so einfach wie möglich ist, habe ich daraus eine PHP Klasse gemacht:<br />
<span id="more-4635"></span>
<pre class="brush: php; highlight: [52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76]; title: ; notranslate">if (!class_exists('wuk_tinymce')) {
	class wuk_tinymce {
		var $mce_locale;

		function wuk_tinymce() {
			$this-&gt;mce_locale = ( '' == get_locale() ) ? 'en' : strtolower( substr(get_locale(), 0, 2) );
			add_action('template_redirect', array( &amp;$this, 'tinymce_loadCoreJS'));
			add_shortcode('wuktinymce', array(&amp;$this,'timymce_wuk'));
		}

		function tinymce_wuk() {
			extract(shortcode_atts(array('fields' =&gt; '', 'html' =&gt; '0', 'initArray' =&gt; ''), $atts));
			if ($fields != '') {
				$this-&gt;tinymce_getInitJS($allefelder,$htmleditor,$initArray);
			}
		}

		function tinymce_getcss() {
			if ($this-&gt;tinymce_isGreaterThan('2.8.0')) {
				return get_option('siteurl') . 'http://bimg2.murawski.ch/wp-includes/js/tinymce/themes/advanced/skins/wp_theme/content.css';
			}
			elseif ($this-&gt;tinymce_isGreaterThan('2.5.0')) {
				return get_option('siteurl') . '/wp-includes/js/tinymce/wordpress.css';
			}
			else {
				return get_option('siteurl') . '/wp-includes/js/tinymce/plugins/wordpress/wordpress.css';
			}
		}

		function tinymce_isGreaterThan($ver) {
			global $wp_version;
			if ($wp_version == 'abc') return true;
			list($Cmajor, $Cminor, $Crev) = explode('.', $ver);
			list($major, $minor, $rev) = explode('.', $wp_version);
			if ($major &lt; $Cmajor) return false;
			if ($minor &lt; $Cminor) return false;
			return true;
		}

		function tinymce_loadCoreJS() {
			wp_enqueue_script('tiny_mce', get_option('siteurl') . 'http://bimg3.murawski.ch/wp-includes/js/tinymce/tiny_mce.js', false, '20081129');
			wp_enqueue_script('tiny_mce_lang', get_option('siteurl') . '/wp-includes/js/tinymce/langs/wp-langs-' . $this-&gt;mce_locale . '.js', false, '20081129');
			//wp_deregister_script('comment-reply');
			//wp_enqueue_script( 'comment-reply', get_option('siteurl') . '/wp-content/plugins/' . plugin_basename ( dirname ( __FILE__ ) ) . &quot;/comment-reply.dev.js&quot;, false, '20090102');
		}

		function tinymce_getInitJS($wct_elements,$htmlview = '0', $initArray='') {
			if ($wct_elements == '') { return false; }
			if ($initArray == '') {
				if ($htmlview == '1') { $htmlview = &quot;,|,code&quot;; } else { $htmlview = ''; }

				$initArray = array (
					'mode' =&gt; 'exact',
					'elements' =&gt; $wct_elements,
					'theme' =&gt; 'advanced',
					'theme_advanced_buttons1' =&gt; 'bold,italic,underline,strikethrough,forecolor,backcolor,|,bullist,numlist,|,outdent,indent,|,removeformat',
					'theme_advanced_buttons2' =&gt; 'undo,redo,|,link,unlink,|,hr,sub,sup,|,charmap'.$htmlview,
    					'theme_advanced_buttons3' =&gt; '',
					'theme_advanced_toolbar_location' =&gt; &quot;top&quot;,
					'theme_advanced_toolbar_align' =&gt; &quot;left&quot;,
					'theme_advanced_statusbar_location' =&gt; 'bottom',
					'theme_advanced_resizing' =&gt; true,
					'theme_advanced_resize_horizontal' =&gt; true,
					'theme_advanced_disable' =&gt; '',
					'force_p_newlines' =&gt; false,
					'force_br_newlines' =&gt; true,
					'forced_root_block' =&gt; &quot;p&quot;,
					'gecko_spellcheck' =&gt; true,
					'skin' =&gt; 'default',
					'content_css' =&gt; $this-&gt;tinymce_getcss(),
					'directionality' =&gt; 'ltr',
					'save_callback' =&gt; &quot;brstonewline&quot;,
					'entity_encoding' =&gt; &quot;raw&quot;,
					'plugins' =&gt; $tinymce_options['plugins'],
					'language' =&gt; $this-&gt;mce_locale,
				);
			}
			else {
				$initArray['elements'] = $wct_elements;
			}

			$params = array();
			foreach ( $initArray as $k =&gt; $v ) { $params[] = $k . ':&quot;' . $v . '&quot;	'; }
			$res = join(',', $params);
			echo &quot;&lt;script type=\&quot;text/javascript\&quot;&gt;
				function brstonewline(element_id, html, body) {
					html = html.replace(/&lt;br\\s*\\/&gt;/gi, \&quot;\\n\&quot;);
					return html;
				}
				function insertHTML(html) {
					tinyMCE.execCommand(\&quot;mceInsertContent\&quot;,false, html);
				}
				tinyMCEPreInit = {
					base : \&quot;&quot;. get_option('siteurl') .&quot;/wp-includes/js/tinymce\&quot;,
					suffix : \&quot;\&quot;,
					query : \&quot;ver=20081129\&quot;,
					mceInit : {&quot;. $res .&quot;},
					go : function() {
						var t = this, sl = tinymce.ScriptLoader, ln = t.mceInit.language, th = t.mceInit.theme, pl = t.mceInit.plugins;
						sl.markDone(t.base + '/langs/' + ln + '.js');
						sl.markDone(t.base + '/themes/' + th + '/langs/' + ln + '.js');
						sl.markDone(t.base + '/themes/' + th + '/langs/' + ln + '_dlg.js');
						tinymce.each(pl.split(','), function(n) {
							if (n &amp;&amp; n.charAt(0) != '-') {
								sl.markDone(t.base + '/plugins/' + n + '/langs/' + ln + '.js');
								sl.markDone(t.base + '/plugins/' + n + '/langs/' + ln + '_dlg.js');
							}
						});
					},
					load_ext : function(url,lang) {
						var sl = tinymce.ScriptLoader;
						sl.markDone(url + '/langs/' + lang + '.js');
						sl.markDone(url + '/langs/' + lang + '_dlg.js');
					}
				};
				var subBtn = document.getElementById(\&quot;submit\&quot;);
				if (subBtn != null) {
					subBtn.onclick=function() {
						var inst = tinyMCE.getInstanceById(\&quot;comment\&quot;);
						document.getElementById(\&quot;comment\&quot;).value = inst.getContent();
						document.getElementById(\&quot;commentform\&quot;).submit();
						return false;
					}
				}
				tinyMCEPreInit.go();
				tinyMCE.init(tinyMCEPreInit.mceInit);
			&lt;/script&gt;&quot;;
		}
	}
	$sss = get_option('wuk_custom_tables');
	if (is_array($sss)) {
		if ($sss['form_serial'] != '') {
			add_action('init', 'wuk_tinymce1');
			function wuk_tinymce1() {
				global $wuk_tinymce;
				$wuk_tinymce = new wuk_tinymce();
			}
		}
	}
}
</pre>
<fieldset class="spoiler">
			<legend>
				<input type="button" onclick="tiny_spoiler('Copy&#038;PasteFehlerxslovszlsv')" id="Copy&#038;PasteFehlerxslovszlsv_button" value="+" />
				Copy&#038;Paste Fehler
			</legend>
			<div id="Copy&#038;PasteFehlerxslovszlsv">Leider verursacht mein Chache Plugin ein Problem und ändert gewissen Code oben! So wird aus:</p>
<blockquote><p><code>return get_option('siteurl') . 'wp-includes/</code></p></blockquote>
<p>Einfach folgender Code:</p>
<blockquote><p><code>return get_option('siteurl') . 'http://bimg2.murawski.ch/wp-includes/</code></p></blockquote>
<p>Was fatal ist für Copy&#038;Paste versuche. Die Klasse wurde zum Download am Artikelende angehängt!
			</div>
		</fieldset>
<p>Diese Klasse kann man in eine Plugindatei kopieren und das Plugin laden.</p>
<p>Auf dem Frontend kann man nun die diversen &#8216;textarea&#8217; Felder ausgeben und mert sich die ID&#8217;s.</p>
<p>Zum Beispiel man hat:</p>
<blockquote><p><code>&lt;textarea name="feld1" id="feld1"&gt; irgendwelcher text &lt;/textarea&gt;<br />
&lt;textarea name="feld2" id="feld2"&gt; irgendwelcher text &lt;/textarea&gt;</code></p></blockquote>
<p>Kann man mit folgendem Code den Editor für die Felder laden:</p>
<blockquote><p><code>[wuktinymce fields="feld1,feld2"]</code></p></blockquote>
<p>Bereits anschliessend werden die Felder mit dem TinyMCE Editor angezeigt.<br />
<img src="http://bimg4.murawski.ch/wp-content/uploads/2011/10/Bild-005.jpg" alt="TinyMCE WordPress Editor Frontent" title="TinyMCE WordPress Editor Frontent" width="417" height="163" class="alignnone size-full wp-image-4650" /></p>
<p>Auch weitere Optionen sind bei der Klasse möglich. Als 2te Option kann man angeben, ob man HTML code direkt bearbeiten darf oder nicht (1 oder 0). Wer noch mehr möchte, kann komplett alle Optionen vom TinyMCE (z.B. welche Plugins geladen werden oder Buttons gezeigt werden) per $initArray ändern:</p>
<blockquote><p><code>[wuktinymce fields="feld1,feld2" html="1" initArray=""]</code></p></blockquote>
<p>Mit den nun vorhandenen Möglichkeiten könnte man den Editor absolut identisch aufbauen oder sogar noch den Umfang erweitern.</p>
<p>Download der Klasse hier: <a href='http://bimg3.murawski.ch/wp-content/uploads/2011/10/wuk_tinymce.phps'>wuk_tinymce.phps</a></p>
<p>Das Standard initArray habe ich oben in der Klasse markiert (Zeile 45 bis 69) damit ihr wisst was alles zu übermitteln wäre.</p>
<p>Viel Spass!</p>
&copy;2011 SMu - <a href=\"http://blog.murawski.ch/\">IT Blögg</a><img src=\"http://stats.murawski.ch/piwik.php?idsite=1&rec=1\" alt=\"\" /><img src="http://feeds.feedburner.com/~r/ItBloegg/~4/Us2E2UD1piY" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.murawski.ch/2011/10/wordpress-backend-editor-tinymce-im-frontend-einbinden/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://blog.murawski.ch/2011/10/wordpress-backend-editor-tinymce-im-frontend-einbinden/</feedburner:origLink></item>
		<item>
		<title>Sonderzeichen in Domains unter Bind9/Apache2</title>
		<link>http://feedproxy.google.com/~r/ItBloegg/~3/wtR0nrC3Uj8/</link>
		<comments>http://blog.murawski.ch/2011/10/sonderzeichen-in-domains-unter-bind9apache2/#comments</comments>
		<pubDate>Fri, 07 Oct 2011 10:19:08 +0000</pubDate>
		<dc:creator>Stefan</dc:creator>
				<category><![CDATA[Internet]]></category>
		<category><![CDATA[Server]]></category>
		<category><![CDATA[Apache2]]></category>
		<category><![CDATA[Bind9]]></category>
		<category><![CDATA[DNS]]></category>
		<category><![CDATA[HowTo]]></category>
		<category><![CDATA[Punycode]]></category>

		<guid isPermaLink="false">http://blog.murawski.ch/?p=4628</guid>
		<description><![CDATA[&#160;Sonderzeichen in Domains sind nun seit einiger Zeit möglich. So öffnete man sich den Markt um weitere Domains zu verkaufen und noch mehr Geld zu verdienen. Zum Glück wurden diese Domains nicht wirklich angenommen und sind nur vereinzelt anzutreffen. Dennoch kommt es vor, das man auf dem eigenen Server eine solche Domain einrichten muss. Bind9 [...]]]></description>
			<content:encoded><![CDATA[&nbsp;<p><a href="http://bimg2.murawski.ch/wp-content/uploads/2011/10/punycode.png" rel="lightbox[4628]"><img src="http://bimg2.murawski.ch/wp-content/uploads/2011/10/punycode.png" alt="punycode" title="punycode" width="171" height="169" class="alignright size-full wp-image-4629" /></a>Sonderzeichen in Domains sind nun seit einiger Zeit möglich.</p>
<p>So öffnete man sich den Markt um weitere Domains zu verkaufen und noch mehr Geld zu verdienen. Zum Glück wurden diese Domains nicht wirklich angenommen und sind nur vereinzelt anzutreffen.</p>
<p>Dennoch kommt es vor, das man auf dem eigenen Server eine solche Domain einrichten muss.</p>
<p>Bind9 und auch der Apache2 müssen mit dieser Domain zurecht kommen. Damit dies funktioniert wurde eine Verschlüsselung Namens <a href="http://de.wikipedia.org/wiki/Punycode" rel="external nofollow" count="1">Punycode</a> entwickelt.</p>
<p>Diese ersetzt Sonderzeichen mit extrem schlecht aussehendem Code wie folgendes Beispiel zeigt:<br />
<span id="more-4628"></span><a href="http://xn--sonntagsverkufe-clb.ch" count="1">sonntagsverkäufe.ch</a> wird dann zu <a href="http://xn--sonntagsverkufe-clb.ch" count="1">xn--sonntagsverkufe-clb.ch</a>.</p>
<p>Zuerst mal muss man raus finden wie eine Domain korrekt heisst und aussieht wenn diese so verschlüsselt ist.<br />
Dazu installiert man sich mal die folgende Module:</p>
<blockquote><p><code>apt-get install idn libidn11</code></p></blockquote>
<p>Anschliessend kann man den Domainname mit folgendem Befehl rausfinden:</p>
<blockquote><p><code>echo sonntagsverkäufe.ch | idn -a --quiet</code></p></blockquote>
<p>Diese Domain kann nun unter Bind9 und Apache2 eingerichtet werden und Anfragen werden am richtigen Ort landen.</p>
&copy;2011 SMu - <a href=\"http://blog.murawski.ch/\">IT Blögg</a><img src=\"http://stats.murawski.ch/piwik.php?idsite=1&rec=1\" alt=\"\" /><img src="http://feeds.feedburner.com/~r/ItBloegg/~4/wtR0nrC3Uj8" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.murawski.ch/2011/10/sonderzeichen-in-domains-unter-bind9apache2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.murawski.ch/2011/10/sonderzeichen-in-domains-unter-bind9apache2/</feedburner:origLink></item>
		<item>
		<title>Eigenes WordPress Plugin schreiben</title>
		<link>http://feedproxy.google.com/~r/ItBloegg/~3/8NHlew6rCuo/</link>
		<comments>http://blog.murawski.ch/2011/10/eigenes-wordpress-plugin-schreiben/#comments</comments>
		<pubDate>Tue, 04 Oct 2011 19:57:39 +0000</pubDate>
		<dc:creator>Stefan</dc:creator>
				<category><![CDATA[Plugin]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[PlugIns]]></category>
		<category><![CDATA[Template]]></category>
		<category><![CDATA[Wordpress]]></category>

		<guid isPermaLink="false">http://blog.murawski.ch/?p=4595</guid>
		<description><![CDATA[&#160;UmUm ein eigenes WordPress Plugin zu schreiben braucht es nur ein paar Dinge. Programmieren ist Fleissarbeit welche Zeit benötigt und daher sollte man damit immer reichlich planen. Weiterhin sollte jedem Programmierer von WordPress Plugins bewusst sein, dass es nicht mit der Erstellung des Plugins endet. Diese Plugins sollten jederzeit auf die neueste Möglichkeiten und Techniken [...]]]></description>
			<content:encoded><![CDATA[&nbsp;<p>UmUm ein eigenes <strong>WordPress Plugin</strong> zu schreiben braucht es nur ein paar Dinge.</p>
<p>Programmieren ist Fleissarbeit welche Zeit benötigt und daher sollte man damit immer reichlich planen.<br />
Weiterhin sollte jedem Programmierer von WordPress Plugins bewusst sein, dass es nicht mit der Erstellung des Plugins endet.</p>
<p>Diese Plugins sollten jederzeit auf die neueste Möglichkeiten und Techniken angepasst werden sowie den Usern eine kleine Hilfe geboten werden, wenn das Plugin nicht selbsterklärend ist.</p>
<p>Was man ausser Zeit noch braucht, ist selbstverständlich PHP Kenntnisse!</p>
<p>Ich werde hier nun schnell und einfach ein sauberes <strong>Template</strong> erklären, mit welchem man das Grundgerüst für jedes WordPress Plugin schnell und einfach zur Verfügung hat.</p>
<p><img class="alignnone size-full wp-image-4610" title="Plugin" src="http://bimg4.murawski.ch/wp-content/uploads/2011/10/Bild-003.jpg" alt="Plugin" width="600" height="78" /></p>
<p>Was benötigt aber ein WordPress Plugin?</p>
<h3>Plugin Template</h3>
<p>Als Vorbereitung überlegt man sich einen Klassen Namen, welcher nur aus Buchstaben zusammengesetzt wird, ohne Leerzeichen, (z.B. MeinPlugin), welchen wir überall wo TEMPLATE steht, per Suchen und Ersetzen  im hier gezeigten und später heruntergeladenen Template austauschen.</p>
<p>Ein Plugin benötigt als Grundriss ein Header, woran WordPress das Plugin erkennt und auch weiss was dies machen sollte, welche Version es hat etc.<span id="more-4595"></span> Daher sollte man keine Zeilen weglassen oder Neue erfinden:</p>
<pre class="brush: php; highlight: [3,4,5,7,8]; title: ; notranslate">&lt;!--?php &lt;br ?--&gt;/*
 Plugin Name: some name here
 Plugin URI: http://www.yourdomain.com/plugin_webpage/ifanyexists/
 Description: Enter here a short text, what your plugin does
 Version: 1.0
 Author: your name
 Author URI: http://www.yourdomain.com

 This program is distributed under the GNU General Public License, Version 2,
 June 1991. Copyright (C) 1989, 1991 Free Software Foundation, Inc., 51 Franklin
 St, Fifth Floor, Boston, MA 02110, USA

 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS &quot;AS IS&quot; AND
 ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
 WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
 DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
 ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
 (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
 LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
 ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
 SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/</pre>
<p>Wie man sieht, ist auch gleich das Plugin dann unter GNU v2 veröffentlicht, was ich normalerweise bevorzuge für die Veröffentlichung. Selbstverständlich kann man auch das Plugin unter einer höheren Version oder der MIS Lizenz veröffentlichen, wenn man dies möchte, aber Open Source ist nötig, um das Plugin bei <a href="http://wordpress.org/" rel="external dofollow">WordPress.org</a> zu veröffentlichen.</p>
<p>Weiter geht es mit der Abfrage, ob die Klasse nicht schon zufällig existiert und wenn nicht, wird diese erstellt:</p>
<pre class="brush: php; title: ; notranslate">if (!class_exists('TEMPLATE')) {
	class TEMPLATE {
		var $settings;</pre>
<p>Gleich mit in der Klasseninitialisierung wurde eine Variable $settings erstellt, in welcher die Einstellungen vom Plugin zugegriffen werden können.</p>
<p>Die nächste Funktion ist die Grundfunktion, welche das Plugin initialisiert und die benötigten Funktionalitäten bereitstellt, wobei ich ins Detail gehen werde:</p>
<pre class="brush: php; title: ; notranslate">		function TEMPLATE() {
			$this-&gt;getOptions();
			if (function_exists('load_plugin_textdomain')) load_plugin_textdomain('TEMPLATE', PLUGINDIR.'/'.dirname(plugin_basename(__FILE__)).'/languages', dirname(plugin_basename( __FILE__ )).'/languages');

			// Example Shortcode [date] add with: add_shortcode('date', array(&amp;$this,'show_date'));

			if(is_admin()) {
				add_action('admin_menu', array(&amp;$this, 'add_menupages'));
			}

			// Example Filter add_filter( 'user_can_richedit', array(&amp;$this, 'disable_wysiwyg') );
		}</pre>
<p>Zeile 2 ruft die Funktion getOptions() auf, welche im späteren Teil erklärt wird. Kurz gesagt, diese Funktion ladet alle Plugin spezifischen Einstellungen und speichert diese dann in der $settings Variable die wir vorhin definiert haben.</p>
<p>Mit der Zeile 3 überprüfen wir, ob die installierte WordPress Version bereits Mehrsprachigkeit unterstützt und gegebenenfalls dann nachschaut, ob im Pluginverzeichnis ein Verzeichnis &#8216;languages&#8217; existiert und darin wiederum eine Sprachdatei zur aktuellen Sprache vorliegt. Falls dies der Fall ist, wird die Ausgabe dann in der aktuellen Sprache erfolgen und nicht in der &#8220;programmierten&#8221; Sprache.</p>
<p>Selbstverständlich möchte man auch dem User die Möglichkeit geben, innerhalb von WordPress Einstellungen zum Plugin vornehmen. Dies soll jedoch nur auf der Adminansicht von WordPress sein und daher muss dieses Modul auch nur dann geladen werden. Falls der Benutzer Admin ist, wird das Admin Menü geladen und angezeigt (Zeile 7-9).</p>
<p>Weiterhin hat man natürlich die Möglichkeit hier nun die Hooks und Actions vom eigenen Plugin zu initialisieren, wie die 2 Beispiele auf Zeile 5 und 11.</p>
<p>Die nächste Funktion ist bereits die Versprochene, wo die Einstellungen ladet:</p>
<pre class="brush: php; title: ; notranslate">		function getOptions() {
			$this-&gt;settings = get_option('TEMPLATE');
			if (!array_key_exists('irgendwas',$this-&gt;settings)) {
				$this-&gt;settings['irgendwas'] = 'wert';
				update_option('TEMPLATE', $this-&gt;settings);
			}
		}</pre>
<p>Diese holt nun die Einstellungen zum Plugin mit get_option() auf Zeile 2 und speichert das Resultat denn in der $settings ein. Auf Zeile 3-6 schaue ich, ob das Setting &#8216;irgendwas&#8217; bereits gesetzt ist, falls nicht, setze ich das Setting auf &#8216;wert&#8217; und speichere dies gleich wieder ein.</p>
<p>Genau auf die gleiche Art kann man nun ein Formular programmieren, wo man die Einstellungen einstellen kann und auf die gleiche Weise ein speichern. Man muss dazu nicht seine eigene Datenbank oder Konfigurationsdateien anlegen, alles ist aus einem Guss fertig verfügbar.</p>
<p>Die nächste Funktion ist sehr einfach erklärt:</p>
<pre class="brush: php; title: ; notranslate">		function activate() {
			// Create Tables if needed or generate whatever on installation
		}</pre>
<p>Diese Funktion wird aufgerufen wenn das Plugin installiert wird. Ist es beispielsweise nötig das eine Datenbank erstellt wird oder Standard Werte geladen werden, kann man dies in diese Funktion einbinden und diese wird dann EINMALIG bei der Installation oder Pluginupdate aufgerufen.</p>
<p>Diese Funktion macht das umgekehrte, bei der Deinstallation wird diese Funktion aufgerufen (nicht bereits Deaktivieren):</p>
<pre class="brush: php; title: ; notranslate">		function uninstall() {
			// Delete Tables or settings if needed be deinstallation
		}</pre>
<p>Ihr könnt euch nun denken was da rein müsste. Falls ihr irgendwas spezielles installiert habt, wieder hier entfernen, damit die Datenbank von WordPress anschliessend wieder sauber ist.</p>
<p>Die nächste Funktion ist sehr wichtig, denn ohne diese ist es zwar ein Plugin, aber der Benutzer kann nichts einstellen oder verändern.</p>
<pre class="brush: php; title: ; notranslate">		function add_menupages() {
			// For Option Pages, see WordPress function: add_options_page()
			// For own Menu Pages, see WordPress function: add_menu_page() and add_submenu_page()
		}</pre>
<p>Diese Funktion fügt innerhalb vom WordPress Admin Panel neu Links hinzu. Die erste Option auf Zeile 2 fügt einen Link zu den Einstellungen mit dem angegebenen Namen dazu (Bild Links).<br />
Wobei die Funktionen auf Zeile 3 komplett eigenständige Menüstrukturen mit Unterpunkten erstellen (Bild Rechts).<br />
<center><br />
<table>
<tr>
<td><div id="attachment_4607" class="wp-caption alignnone" style="width: 157px"><a href="http://bimg4.murawski.ch/wp-content/uploads/2011/10/Bild-000.jpg" rel="lightbox[4595]"><img src="http://bimg4.murawski.ch/wp-content/uploads/2011/10/Bild-000-147x150.jpg" alt="Menü unter Einstellungen" title="Menü unter Einstellungen" width="147" height="150" class="size-thumbnail wp-image-4607" /></a><p class="wp-caption-text">Menü unter Einstellungen</p></div></td>
<td><div id="attachment_4608" class="wp-caption alignnone" style="width: 157px"><a href="http://bimg2.murawski.ch/wp-content/uploads/2011/10/Bild-001.jpg" rel="lightbox[4595]"><img src="http://bimg3.murawski.ch/wp-content/uploads/2011/10/Bild-001-147x150.jpg" alt="Eigenes Menü mit Submenü" title="Eigenes Menü mit Submenü" width="147" height="150" class="size-thumbnail wp-image-4608" /></a><p class="wp-caption-text">Eigenes Menü mit Submenü</p></div></td>
</tr>
</table>
<p></center><br />
Kommt man mit einer Einstellungsseite zurecht ist die Einstellungsseite unter Optionen sicher zu bevorzugen. Bei grossen Plugins mit vielen Einstellungsmöglichkeiten oder unterschiedlichen Seiten, ist es besser in ein separates Menü auszulagern.</p>
<p>Das war es, nun muss nur noch die Klasse geladen werden und die Aktivierungs- und Deinstallierungshooks installieren mit dem Code:</p>
<pre class="brush: php; title: ; notranslate">	}
	add_action('init', 'TEMPLATE1');
	function TEMPLATE1() {
		global $TEMPLATE;
		$TEMPLATE = new TEMPLATE();
	}
}

if (function_exists('register_activation_hook')) { register_activation_hook(__FILE__, array('TEMPLATE', 'activate')); }
if (function_exists('register_uninstall_hook')) { register_uninstall_hook(__FILE__, array('TEMPLATE', 'uninstall')); }

?&gt;</pre>
<p>Wichtig ist hierbei, die Aktivierungs- und Deinstallierungshooks dürfen NICHT innerhalb der Klasse initialisiert werden, da diese anderenfalls nicht ausgeführt werden.</p>
<p>Das war eigentlich schon das ganze Template was es <a href="http://bimg4.murawski.ch/wp-content/uploads/2011/10/template.phps">hier zum Download</a> gibt, dennoch gebe ich euch noch gerne weitere sehr wichtige Tipps zur Programmierung mit auf den Weg, die nicht im Template ersichtlich sind:</p>
<h3>Übersetzungen</h3>
<p>Sagen wir, ihr habt eine Textausgabe die wie folgt aussieht:</p>
<pre class="brush: php; title: ; notranslate">$ip = getenv('REMOTE_ADDR');
echo &quot;Deine IP Adresse lautet: &quot;.$ip;</pre>
<p>Ist die Ausgabe &#8220;Deine IP Adresse lautet: 123.123.123.123&#8243;. Was funktioniert, aber unschön ist, denn diese Ausgabe ist nur in einer Sprache verfügbar.</p>
<p>Also sollten wir dies Multisprachig programmieren was wir im Plugin ermöglicht haben. Man programmiert es wie folgt:</p>
<pre class="brush: php; title: ; notranslate">$ip = getenv('REMOTE_ADDR');
echo __(&quot;Deine IP Adresse lautet: &quot;,&quot;TEMPLATE&quot;).$ip;</pre>
<p>Diese Funktion __() schaut nun ob der Text &#8220;Deine IP Adresse lautet&#8221; in einer anderen Sprache verfügbar ist.</p>
<p>Dies funktioniert soweit gut, bis die Variable mitten im Text ist.</p>
<pre class="brush: php; title: ; notranslate">$ip = getenv('REMOTE_ADDR');
echo &quot;Deine IP Adresse &quot;.$.&quot; war schon mal hier &quot;;</pre>
<p>Dann haben wir ein Problem, warum wir wie folgt solche Texte einbinden:</p>
<pre class="brush: php; title: ; notranslate">$ip = getenv('REMOTE_ADDR');
print_f( __(&quot;Deine IP Adresse %s war schon mal hier&quot;, &quot;TEMPLATE&quot;), $ip);</pre>
<p>Hier wird der Text &#8220;Deine IP Adresse %s war schon mal hier&#8221; in der Übersetzung gesucht und anschliessend das %s mit der Variable ersetzt. </p>
<h3>Caching</h3>
<p>Grössere Webseiten, welche immer dynamisch erstellt werden brauchen Serverleistung. Da sich aber Webseiten nicht jede Sekunde ändern, erstellt man nur in gewissen Abschnitten eine Passage neu und falls diese noch gültig ist, greifft man auf ein bereits vorher erstellten Text zurück und verwendet diesen.</p>
<p>Hat man nun eine Ausgabe, z.B. man generiert einen Text oder Artikel der auf die Seite ausgegeben wird, dann baut man Cachefunktionalität ein. </p>
<p>Als Beispiel, hier laden wir ein Artikel Archiv und geben dies aus:</p>
<pre class="brush: php; title: ; notranslate">$qry = $wpdb-&gt;get_results(&quot;SELECT DISTINCT YEAR( post_date ) AS year, MONTH( post_date ) AS month, post_title,guid FROM `&quot;.$wpdb-&gt;prefix.&quot;posts` WHERE post_type='post' AND  post_status='publish' ORDER BY year DESC, month DESC;&quot;);
foreach ($qry as $row) {
	if ($last != $row-&gt;year.$row-&gt;month) {
		if ($last != '') { echo &quot;&lt;/UL&gt;&quot;; }
		echo &quot;&lt;h4 class=\&quot;wctarchiveheader\&quot; id=\&quot;a_&quot;.$row-&gt;year.&quot;_&quot;.$row-&gt;month.&quot;\&quot;&gt;&quot;.date(&quot;F Y&quot;,mktime(0, 0, 0, $row-&gt;month, '5', $row-&gt;year)).&quot;&lt;/h4&gt;&lt;UL class=\&quot;wctarchiveul\&quot;&gt;&quot;;
		$last = $row-&gt;year.$row-&gt;month;
	}
	echo &quot;&lt;li class=\&quot;wctarchiveli\&quot;&gt;&lt;a class=\&quot;wctarchivea\&quot; href=\&quot;&quot;.$row-&gt;guid.&quot;\&quot;&gt;&quot;.$row-&gt;post_title.&quot;&lt;/a&gt;&lt;/li&gt;&quot;;
}
</pre>
<p>Nun würde bei jedem Aufruf des Artikelarchives die Datenbank durchgegangen und die Seite genieriert werden. Wir können nur den Code in folgendes ändern:</p>
<pre class="brush: php; highlight: [1,2,12,13,14]; title: ; notranslate">$out = wp_cache_get( 'archive' , 'TEMPLATE');
if ($out == false) {
	$qry = $wpdb-&gt;get_results(&quot;SELECT DISTINCT YEAR( post_date ) AS year, MONTH( post_date ) AS month, post_title,guid FROM `&quot;.$wpdb-&gt;prefix.&quot;posts` WHERE post_type='post' AND  post_status='publish' ORDER BY year DESC, month DESC;&quot;);
	foreach ($qry as $row) {
		if ($last != $row-&gt;year.$row-&gt;month) {
			if ($last != '') { $out .= &quot;&lt;/UL&gt;&quot;; }
			$out .= &quot;&lt;h4 class=\&quot;wctarchiveheader\&quot; id=\&quot;a_&quot;.$row-&gt;year.&quot;_&quot;.$row-&gt;month.&quot;\&quot;&gt;&quot;.date(&quot;F Y&quot;,mktime(0, 0, 0, $row-&gt;month, '5', $row-&gt;year)).&quot;&lt;/h4&gt;&lt;UL class=\&quot;wctarchiveul\&quot;&gt;&quot;;
			$last = $row-&gt;year.$row-&gt;month;
		}
		$out .= &quot;&lt;li class=\&quot;wctarchiveli\&quot;&gt;&lt;a class=\&quot;wctarchivea\&quot; href=\&quot;&quot;.$row-&gt;guid.&quot;\&quot;&gt;&quot;.$row-&gt;post_title.&quot;&lt;/a&gt;&lt;/li&gt;&quot;;
	}
	wp_cache_set( 'archive', $out, 'TEMPLATE', '86400');
}
echo $out;</pre>
<p>Diese Funktion prüft auf Zeile 1 ob im Chache mit dem Namen &#8216;archive&#8217; noch was gespeichert ist. Falls Nein, wird die Seite erzeugt und auf Ziele 12 gespeichert. Wie man sieht, bleibt diese Ausgabe nun in der Definition genau 84600 Sekunden gültig was einem Tag entspricht. Nach einem Tag wird der Inhalt neu generiert, innerhalb dieses Tages aber auf den erstellen Text zurückgegriffen. So spart man sich Datenbankzugriffe und CPU Zeit diese Daten zu erstellen.</p>
<p>Alle Texte / Codes welche im WordPress Frontend ausgegeben werden, sollten über diese Möglichkeit eingebunden werden.<br />
Dies ist zwar kein Must-Have wenn man kein Chaching Plugin hat, aber man sollte immer bedenken das in der WordPress Welt viele andere Blogs sind und es wäre schade, wenn ein grosse Seite das Plugin nicht verwenden würde, weil diese Option fehlt, wo für diese unverzichtbar ist.</p>
<h3>Veröffentlichung auf WordPress.org</h3>
<p>Um das Plugin auf WordPress.org zu veröffentlichen, muss man zuerst ein paar Richtlinien erfüllen. Das Wichtigste ist aber unter GNU oder höheren Lizenz zu veröffentlichen und weiterhin ein Readme zum Plugin zu erstellen.<br />
WordPress stellt ein <a href="http://wordpress.org/extend/plugins/about/readme.txt" rel="external nofollow" count="1">Standard Readme</a> zur Verfügung und auch ein <a href="http://wordpress.org/extend/plugins/about/validator/" rel="external nofollow" count="1">Readme Validator</a> wo man das eigene Readme überprüfen kann.<br />
Veröffentlichen kann man es unter dem folgenden Link: <a href="http://wordpress.org/extend/plugins/add/">WordPress.org</a></p>
<h3>Fragen und Probleme</h3>
<p>Selbstverständlich bin ich gespannt, welche Plugins alles mit meinem Template umgesetzt werden, oder wen ich Lust auf WordPress Plugin Programmierung gemacht habe.<br />
Ich stehe in den Kommentaren gerne für Fragen zu Hooks, Actions und generell zu WordPress Programmierung zur Verfügung.</p>
&copy;2011 SMu - <a href=\"http://blog.murawski.ch/\">IT Blögg</a><img src=\"http://stats.murawski.ch/piwik.php?idsite=1&rec=1\" alt=\"\" /><img src="http://feeds.feedburner.com/~r/ItBloegg/~4/8NHlew6rCuo" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.murawski.ch/2011/10/eigenes-wordpress-plugin-schreiben/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.murawski.ch/2011/10/eigenes-wordpress-plugin-schreiben/</feedburner:origLink></item>
		<item>
		<title>Nokia N8 – Pinkxel your Life</title>
		<link>http://feedproxy.google.com/~r/ItBloegg/~3/-WJCJ_XZlSA/</link>
		<comments>http://blog.murawski.ch/2011/10/nokia-n8-pinkxel-your-life/#comments</comments>
		<pubDate>Mon, 03 Oct 2011 14:22:30 +0000</pubDate>
		<dc:creator>Stefan</dc:creator>
				<category><![CDATA[Geeknews]]></category>
		<category><![CDATA[Nokia]]></category>
		<category><![CDATA[Videos]]></category>

		<guid isPermaLink="false">http://blog.murawski.ch/?p=4582</guid>
		<description><![CDATA[&#160;Auch mein Schatz steht extrem auf die Farbe Pink. Auch wenn mir persönlich die Farbe nicht so gefällt und mir kein pinkes Gerät kaufen würde, gefällt mir das ältere Konzept was definitiv damit aufgeht. Nokia hatte sich mit den individualistischen Hüllen vom ehemaligen Nokia 3210 an die Spitze gesetzt. So macht es durchaus Sinn Geräte [...]]]></description>
			<content:encoded><![CDATA[&nbsp;<p>Auch mein Schatz steht extrem auf die Farbe Pink. Auch wenn mir persönlich die Farbe nicht so gefällt und mir kein pinkes Gerät kaufen würde, gefällt mir das ältere Konzept was definitiv damit aufgeht.</p>
<p><a href="http://www.nokia.ch/" count="1" rel="external nofollow">Nokia</a> hatte sich mit den individualistischen Hüllen vom ehemaligen Nokia 3210 an die Spitze gesetzt.<br />
So macht es durchaus Sinn Geräte auf eine spezifische Gruppe auszulegen, was mit dem Nokia N8 in Pink gelingt.</p>
<p>Hier spricht das Nokia N8 Frauen an die auf Optik wert legen und beglückt sie zusätzlich mit dem starken Merkmalen von Nokia (Kamera und kostenlose Navigation) welche weiterhin führend im Mobilmarkt sind.</p>
<p>Neu gibt es auch einen geniales Video zum Thema was man gesehen haben muss.<br />
<span id="more-4582"></span>[See post to watch Flash video]
<p><a href="http://bimg4.murawski.ch/wp-content/uploads/2011/10/Pinkxel_Boutique.jpg" rel="lightbox[4582]"><img src="http://bimg4.murawski.ch/wp-content/uploads/2011/10/Pinkxel_Boutique-150x150.jpg" alt="" title="Pinkxel_Boutique" width="150" height="150" class="alignright size-thumbnail wp-image-4592" /></a>Was mir sehr gefällt, ist vor Allem die nette Frau, selbst hinter der Kamera hat sie das Gerät in der Hand und macht irgendwas damit. So merkt man das sie wirklich glücklich ist damit. Screenshot als Beweis vom Making of der Luxemburgerli-Szene im Sprüngli auf der rechten Seite.</p>
<p>PS: Das Video wurde in Zürich gedreht.</p>
&copy;2011 SMu - <a href=\"http://blog.murawski.ch/\">IT Blögg</a><img src=\"http://stats.murawski.ch/piwik.php?idsite=1&rec=1\" alt=\"\" /><img src="http://feeds.feedburner.com/~r/ItBloegg/~4/-WJCJ_XZlSA" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.murawski.ch/2011/10/nokia-n8-pinkxel-your-life/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
<enclosure url="http://bimg3.murawski.ch/wp-content/uploads/2011/10/Pinkxel-your-life1.flv" length="5926234" type="video/x-flv" />
		<feedburner:origLink>http://blog.murawski.ch/2011/10/nokia-n8-pinkxel-your-life/</feedburner:origLink></item>
		<item>
		<title>Grösste Cloud auf Erden</title>
		<link>http://feedproxy.google.com/~r/ItBloegg/~3/hHLWj1y9LUM/</link>
		<comments>http://blog.murawski.ch/2011/09/grosste-cloud-auf-erden/#comments</comments>
		<pubDate>Wed, 28 Sep 2011 09:02:20 +0000</pubDate>
		<dc:creator>Stefan</dc:creator>
				<category><![CDATA[Internet]]></category>
		<category><![CDATA[Cloud]]></category>

		<guid isPermaLink="false">http://blog.murawski.ch/?p=4570</guid>
		<description><![CDATA[&#160;Wenn in einer Cloud 5,5 PetaByte gespeichert werden können (5500 TB) mit einer Geschwindigkeit von min. 8 GB/s, dann ist man sehr positiv überrascht. Die SDSC Cloud Speicherlösung ist aber nicht nur deshalb gewaltig. Jederzeit sind die Daten auf 2 unterschiedlichen DiskArrays zu finden und noch bei einem 3ten Partner ausgelagert. Die Daten sind per [...]]]></description>
			<content:encoded><![CDATA[&nbsp;<p>Wenn in einer Cloud 5,5 PetaByte gespeichert werden können (5500 TB) mit einer Geschwindigkeit von min. 8 GB/s, dann ist man sehr positiv überrascht.</p>
<p>Die SDSC Cloud Speicherlösung ist aber nicht nur deshalb gewaltig.</p>
<p><a href="http://bimg3.murawski.ch/wp-content/uploads/2011/09/cloud.png" rel="lightbox[4570]"><img src="http://bimg3.murawski.ch/wp-content/uploads/2011/09/cloud.png" alt="" title="cloud" width="600" height="54" class="alignnone size-full wp-image-4572" /></a></p>
<p>Jederzeit sind die Daten auf 2 unterschiedlichen DiskArrays zu finden und noch bei einem 3ten Partner ausgelagert. Die Daten sind per Web einfach verfügbar und auch die S3 API wird unterstützt.</p>
<p>Sehr interessant wird es aber wenn man den Preis anschaut.<br />
Die Kosten sind umgerechnet 2.50 CHF/Monat für 100 GB Speicherplatz. Auch sind gleich 32.50 Terabyte/Monat kostenloser Traffic dabei.</p>
<p>Vergleicht man die Preise mit Dropbox, dann ist der Preis ein Witz.</p>
<p>Wer nun glaubt ich erfinde das Alles, hier der Link:<br />
<span id="more-4570"></span><a href="https://cloud.sdsc.edu/hp/index.php" count="1" rel="external nofollow">SDSC Cloud Speicherlösung</a></p>
&copy;2011 SMu - <a href=\"http://blog.murawski.ch/\">IT Blögg</a><img src=\"http://stats.murawski.ch/piwik.php?idsite=1&rec=1\" alt=\"\" /><img src="http://feeds.feedburner.com/~r/ItBloegg/~4/hHLWj1y9LUM" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.murawski.ch/2011/09/grosste-cloud-auf-erden/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.murawski.ch/2011/09/grosste-cloud-auf-erden/</feedburner:origLink></item>
		<item>
		<title>Probleme bei Energiesparen und Ruhezustand Windows 7</title>
		<link>http://feedproxy.google.com/~r/ItBloegg/~3/g3P9R8R3N7Q/</link>
		<comments>http://blog.murawski.ch/2011/09/probleme-bei-energiesparen-und-ruhezustand-windows-7/#comments</comments>
		<pubDate>Thu, 22 Sep 2011 10:00:29 +0000</pubDate>
		<dc:creator>Stefan</dc:creator>
				<category><![CDATA[Programme]]></category>
		<category><![CDATA[Tweaks]]></category>
		<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">http://blog.murawski.ch/?p=4558</guid>
		<description><![CDATA[&#160;Früher gab es noch Unterschiede zwischen dem Ruhezustand und Energiesparen. Bei Windows 7 wurde eine Art Hybrid eingeführt. Beim Ruhezustand wurde der RAM Inhalt auf die Festplatte geschrieben und der PC war danach Stromlos. Beim Wiedereinstellten musste der RAM Inhalt wiederhergestellt werden, was bei langsamen Festplatten eine Zeit dauerte. Vor Allem PC mit viel RAM [...]]]></description>
			<content:encoded><![CDATA[&nbsp;<p>Früher gab es noch Unterschiede zwischen dem Ruhezustand und Energiesparen. Bei Windows 7 wurde eine Art Hybrid eingeführt.</p>
<p>Beim Ruhezustand wurde der RAM Inhalt auf die Festplatte geschrieben und der PC war danach Stromlos. Beim Wiedereinstellten musste der RAM Inhalt wiederhergestellt werden, was bei langsamen Festplatten eine Zeit dauerte. Vor Allem PC mit viel RAM war dies unbrauchbar.</p>
<p>Der Energiesparen Modus auch Standby genannt, schaltete den PC zwar aus, liess aber die RAM unter Strom und konnte so schnell wieder starten. Bei einem Stromunterbruch musste der PC normal gestartet werden und man hatte Datenverlust bei ungespeicherten Anwendungen.</p>
<p>Die Vereinigung ist nun der &#8220;Hybride Standbymodus&#8221;. Man speichert zwar den RAM Inhalt auf die Festplatte, parallel lässt man aber auch Strom auf den RAM. Sollte der PC nun ein Stromunterbruch haben, konnte er einfach die RAM von der HD wiederherstellen und dennoch starten.</p>
<p>Leider funktionierten die verschiedenen Energiespar-Moden nicht immer. Hier ein paar Ansätze zum auffinden des Fehlers:</p>
<ol>
<li>Klicken Sie auf <em>Start</em> und geben im Suchfeld CMD ein, dann in der Liste oben kann man mit der Rechten Maustaste auf Eingabeaufforderung klicken.</li>
<li>Wählen Sie im Kontextmenü den Befehl <em>Als Administrator ausführen</em> und bestätigen die Sicherheitsrückfrage.</li>
<li>In der Eingabeaufforderung können Sie nun den Befehl <code>powercfg.exe -ENERGY</code> eintragen. Nun ist wichtig, dass man für 1 Minute den PC und alle Geräte komplett in Ruhe lässt.</li>
<li>Das Programm analysiert nun die Energiesparfunktionen und -einstellungen des PCs und aller angeschlossenen Komponenten für eine Minute.</li>
</ol>
<p>Anschliessend bekommt man ein Protokoll welches Probleme aufzählt. dies ist der Windows Weg das Problem anzupacken, doch ehrlich: Niemand kann mit dem Protokoll was anfangen und es ist für die Katze.<br />
Es muss also eine andere Lösung her.<br />
<span id="more-4558"></span><br />
Hat man Probleme mit dem Hybrieden Stromspar Modus, dann sollte man prüfen ob dieser aktiviert ist.<br />
Als Erstes rufen wir die Eingabeaufforderung als Administrator auf (siehe Oben) und führen folgenden Befehl aus um den Ruhezustand zu aktivieren (falls nicht schon aktiv):</p>
<blockquote><p><code>powercfg –H on</code></p></blockquote>
<p><a href="http://bimg3.murawski.ch/wp-content/uploads/2011/09/ruhezustand.jpg" rel="lightbox[4558]"><img src="http://bimg4.murawski.ch/wp-content/uploads/2011/09/ruhezustand-150x150.jpg" alt="" title="Ruhezustand" width="150" height="150" class="alignleft size-thumbnail wp-image-4560" /></a>Anschliessend geht man unter <em>Systemsteuerung -&gt; System und Sicherheit -&gt; Energieoptionen/Energiesparplaneinstellungen bearbeiten  -&gt;  auf Erweiterte Energieeinstellungen</em><br />
und aktiviert den Hybrieden Modus (falls nicht aktiv).</p>
<p>Nun müsste der Energiesparen Modus aktiviert und verfügbar sein.</p>
<p>Auch ein Problem was öfters Auftritt, der PC startet beim Energiesparen gleich wieder neu und bleibt nicht abgeschaltet. Das Problem ist sehr einfach: Diverse Geräte können den PC aus dem Schlaf wecken. Ein olches Gerät sendet gleich nach dem Herunterfahren ein Wecksignal und der PC startet wieder.</p>
<p>Am Besten prüfen welche Geräte den PC aufwecken dürfen mit folgendem Befehl in der Eingabeaufforderung mit Adminrechten:</p>
<blockquote><p><code>powercfg -devicequery wake_armed</code></p></blockquote>
<p>Nun werden alle Geräte aufgelistet. Geräte wie Soundkarte oder Grafikkarten kann man vom Aufweckprozess ausschliessen. Ich habe alles ausser die Tastatur entfernt. Wer auch dies nicht möchte kann alles entfernen und dann per Powerknopf am PC nur noch aufwecken.</p>
<p><a href="http://bimg3.murawski.ch/wp-content/uploads/2011/09/energiespar.gif" rel="lightbox[4558]"><img src="http://bimg2.murawski.ch/wp-content/uploads/2011/09/energiespar-150x150.gif" alt="" title="energiespar" width="150" height="150" class="alignleft size-thumbnail wp-image-4561" /></a>Geräte kann man einfach entfernen, dazu geht man wie folgt vor: <em>Systemsteuerung -&gt; System und Sicherheit -&gt; Geräte Manager</em></p>
<p>Im Geräte-Manager klickt sucht man nun die Geräte und öffnet das Gerät mit einem Doppelklick.<br />
Im Popup wechselt man auf den Tab Energieverwaltung und entfernen den Hacken bei &#8220;Gerät kann den Computern aus dem Ruhestand aktivieren&#8221; und bestätigt mit OK.</p>
<p>Hat man dies für alle unerwünschten Geräte erledigt bleibt der Rechner auch wirklich im Standby.</p>
&copy;2011 SMu - <a href=\"http://blog.murawski.ch/\">IT Blögg</a><img src=\"http://stats.murawski.ch/piwik.php?idsite=1&rec=1\" alt=\"\" /><img src="http://feeds.feedburner.com/~r/ItBloegg/~4/g3P9R8R3N7Q" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.murawski.ch/2011/09/probleme-bei-energiesparen-und-ruhezustand-windows-7/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		<feedburner:origLink>http://blog.murawski.ch/2011/09/probleme-bei-energiesparen-und-ruhezustand-windows-7/</feedburner:origLink></item>
	</channel>
</rss><!-- Performance optimized by web updates kmu. Contact us: http://wuk.ch

Minified using memcached (Feed is rejected)
Page Caching using memcached
Database Caching 21/66 queries in 0.035 seconds using memcached
Object Caching 1259/1351 objects using memcached
Content Delivery Network via bimg2.murawski.ch

Served from: blog.murawski.ch @ 2012-01-30 20:53:58 -->

