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

<channel>
	<title>gedankendunst.de</title>
	<atom:link href="http://blog.gedankendunst.de/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.gedankendunst.de</link>
	<description>Das Internet</description>
	<lastBuildDate>Fri, 03 Jul 2009 11:40:34 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Hype um Piratenpartei</title>
		<link>http://blog.gedankendunst.de/2009/07/03/hype-um-piratenpartei/</link>
		<comments>http://blog.gedankendunst.de/2009/07/03/hype-um-piratenpartei/#comments</comments>
		<pubDate>Fri, 03 Jul 2009 11:23:30 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Politik]]></category>
		<category><![CDATA[Piratenpartei]]></category>
		<category><![CDATA[Urheberrecht]]></category>

		<guid isPermaLink="false">http://blog.gedankendunst.de/?p=102</guid>
		<description><![CDATA[Auf Grund der Initiative unserer Familienministerin Ursula von der Leyen Websperren für Seiten mit kinderpornographischen Inhalten einzuführen, erfährt die Piratenpartei einen größeren Zuwachs an Mitgliedern und auch Befürwortern. Bisher habe ich mich mit dem Thema Piratenpartei nicht wirklich beschäftigt, da mir der Name dieser Partei ein wenig unbehagen bereitet hat. Für mich sind Piraten einfach [...]]]></description>
			<content:encoded><![CDATA[<p>Auf Grund der Initiative unserer Familienministerin Ursula von der Leyen Websperren für Seiten mit kinderpornographischen Inhalten einzuführen, erfährt die Piratenpartei einen größeren Zuwachs an Mitgliedern und auch Befürwortern. Bisher habe ich mich mit dem Thema Piratenpartei nicht wirklich beschäftigt, da mir der Name dieser Partei ein wenig unbehagen bereitet hat. Für mich sind Piraten einfach nur Verbrecher, Seeräuber oder einfach nur eine Gruppe von Menschen, die anderen Ihr Eigentum stehlen.<br />
Auf Grund eines Blogbeitrags eines früheren Arbeitskollegen, der in diesem Beitrag seinen Eintritt in die Piratenpartei bekundet hat, habe ich mich etwas intensiver mit dem Thema beschäftigt. Frank, der für mich eher als unpolitisch galt, gibt in seinem <a href="http://www.altpeter.de/2009/06/22/ja-auch-ich-bin-jetzt-pirat/">Blogbeitrag</a> (http://www.altpeter.de/2009/06/22/ja-auch-ich-bin-jetzt-pirat/) als Grund für seinen Eintritt in die Partei an, sich mit dem Politiksystem der letzten Jahre nicht identifizieren zu können, Entscheidungen der Politker nicht nachvollziehen zu können, sowie die Ignoranz der Politker auf die Petition von 130.000 Bürgern, die Ihr Votum gegen die oben besagten Sperren von Webseiten mit kinderpornographischen Inhalten abgegeben haben, nicht verstehen zu können. Wobei letzterer Punkt sein Hauptargument für den Eintritt in diese Partei ist.<br />
Trotz meiner Meinung, dass der Grundgedanke Websperren für kinderpronographische Inhalte einzuführen, nicht verkehrt ist, muss ich auch meine Kritik an der Umsetzung bekunden. Zuerst sollten alle bereits bestehenden gesetzlichen Möglichkeiten ausgeschöpft werden, um derartigen Anbietern die Server zu sperren und rechtskräftig zu verurteilen. Jedoch ist uns allen bekannt, dass diese Möglichkeiten nur innerhalb der EU ausgeschöpft werden können. Außerhalb der EU wird es je nach ausgehandeltem Abkommen zwischen den jeweiligen Ländern unter Umständen schwierig werden, Einfluss nehmen zu können. In derartigen Fällen empfinde ich es als richtig Websperren einzuführen. Aber auch nur in diesen Fällen! Ich bin nicht der Meinung, dass die Verhinderung des Zugangs zu Kinderpornographie das Recht auf freie Meinungsäußerung beeinträchtigt. Die dargestellten Misshandlungen sind Straftaten. Nicht nur, dass diese Kinder großes Leid erfahren mussten, nein sie werden zusätzlich noch damit gedemütigt, dass jeder Zugriff auf die Dokumentation dieser Straftaten hat. Über die Art und Weise wie diese Sperren vorgenommen werden sollen, nämlich über das DNS-System, könnte man nun auch noch einen längeren Absatz schreiben, aber dann würden wir zu weit vom eigentlichen Thema abkommen. Ich möchte nur kurz anschneiden, dass DNS-Sperren natürlich unfug sind. Hier müssen Websperren nach dem Vorbild der Engländer her.</p>
<p>Kommen wir aber wieder zurück zum Kern des Themas, der Piratenpartei. Damit ich in eine Partei eintrete oder sie überhaupt wähle, muss diese schon ein gutes Programm vorzuweisen haben. Also dachte ich mir, dass schaue ich mir mal an. </p>
<p>Der ersten Kernaussage, die unter den <a href="http://www.piratenpartei.de/navigation/politik/unsere-ziele">Zielen</a> (http://www.piratenpartei.de/navigation/politik/unsere-ziele) der Partei zu finden ist, kann ich ohne Bedenken zustimmen:</p>
<blockquote><p>Das Recht des Einzelnen, die Nutzung seiner persönlichen Daten zu kontrollieren, muss gestärkt werden. Dazu müssen insbesondere die Datenschutzbeauftragten völlig unabhän­gig agieren können.</p></blockquote>
<p>Auch dem zweiten Punkt kann ich meine Zustimmung nicht verwehren:</p>
<blockquote><p>Wir lehnen Patente auf Lebewesen und Gene, auf Geschäftsideen und auch auf Software einhellig ab, weil sie unzumutbare und unver­antwortliche Konsequenzen haben, weil sie die Entwicklung der Wissensgesellschaft be­hindern, weil sie gemeine Güter ohne Gegen­leistung und ohne Not privatisieren und weil sie kein Erfindungspotential im ursprünglichen Sinne besitzen.</p></blockquote>
<p>Beim dritten Punkt der Partei-Ziele bekomme ich allerdings starke Bauchschmerzen. Es geht in diesem Punkt um die Veränderung des Urheberrechts. Die Piratenpartei vertritt die Auffassung, dass die derzeit bestehenden Regelungen </p>
<blockquote><p>&#8230; auf einem veralteten Verständnis von so genanntem &#8220;geistigem Eigentum&#8221; basieren, welches der angestrebten Wissens- oder Informationsgesellschaft entgegen steht. [...] Die Schaffung von künstlichem Mangel aus rein wirtschaftlichen Interessen erscheint uns unmoralisch, daher lehnen wir diese Verfahren ab. [...] Da sich die Kopierbarkeit von digital vorliegenden Werken technisch nicht sinnvoll einschränken lässt und die flächendeckende Durchsetzbarkeit von Verboten im privaten Lebensbereich als gescheitert betrachtet werden muss, sollten die Chancen der allgemeinen Verfügbarkeit von Werken erkannt und genutzt werden. [...] Daher fordern wir, das nichtkommerzielle Kopieren, Zugänglichmachen, Speichern und Nutzen von Werken nicht nur zu legalisieren, sondern explizit zu fördern, um die allgemeine Verfügbarkeit von Information, Wissen und Kultur zu verbessern, denn dies stellt eine essentielle Grundvoraussetzung für die soziale, technische und wirtschaftliche Weiterentwicklung unserer Gesellschaft dar. </p></blockquote>
<p>Dieser Punkt ist selbstverständlich vollständig abzulehnen. Ich bezeichne diese Idee sogar als vollkommen absurd. Wie sollen Autoren und Musiker auf diese Weise Geld verdienen? Nach den Vorstellungen der Piraten, und hier machen sie ihrem Namen wirklich alle Ehre, kann jeder alles kopieren und nutzen solange es sich um eine nicht-kommerzielle Nutzung handelt. Fraglich ist dann welcher Autor sich zwei Jahre lang hinsetzen wird, Fachinformationen zu recherchieren  um diese zur Verfügung zu stellen. Was bedeutet das für Forschungsarbeiten? &#8211; An dieser Stelle kann man noch viel tiefer in die Materie gehen und die wirtschaftlichen Folgen darstellen. Der Schaden, nicht nur der finanzielle Schaden, sondern auch der kulturelle Schaden, der durch die Nicht-Veröffentlichung bzw. Nicht-Erstellung von Informationen entstehen würde, ist immens. Das ist bloßer Populismus der an dieser Stelle betrieben wird. Hier soll ganzen Branchen die Existenz-Grundlage entzogen werden.<br />
Den weiteren beiden veröffentlichten Zielen mit der Überschrift &#8220;Transparenz&#8221; und &#8220;Open Access&#8221; kann man weitgehend zustimmen. Aber damit sind wir auch schon am Ende der Zielsetzungen. Themen wie Umweltpolitik, Familienpolitik, Wirtschaftspolitik oder weiteren sozialen Fragen und Weiterem widmet sich die Piratenpartei erst gar nicht. </p>
<p>Damit ist diese Partei nun wirklich keine vollwertige Partei. Von den 5 Zielen lassen sich mindestens 3 auch bei den Grünen, SPD und sogar der CDU finden (vielleicht noch bei anderen) und das Absurd-Ziel &#8220;Änderung des Urheberrechts&#8221; ist ein absolutes K.O.-Kriterium. So sehr ich Frank fachlich auch schätzen mag, aber seine neu gewonnene politische Einstellung ist reine Zeitverschwendung und bei weitem nicht mehrheitsfähig. Jede Stimme an die Piratenpartei ist eine verschenkte Stimme.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.gedankendunst.de/2009/07/03/hype-um-piratenpartei/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>html2gif / html2jpg</title>
		<link>http://blog.gedankendunst.de/2009/07/02/html2gif-html2jpg/</link>
		<comments>http://blog.gedankendunst.de/2009/07/02/html2gif-html2jpg/#comments</comments>
		<pubDate>Thu, 02 Jul 2009 13:52:14 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Programmierung]]></category>
		<category><![CDATA[Soft- & Hardware]]></category>
		<category><![CDATA[Browser]]></category>
		<category><![CDATA[Browser-Screenshot]]></category>
		<category><![CDATA[convert]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[html2gif]]></category>
		<category><![CDATA[html2jpg]]></category>
		<category><![CDATA[html2png]]></category>
		<category><![CDATA[ImageMagick]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[Mozilla]]></category>
		<category><![CDATA[Screenshot]]></category>
		<category><![CDATA[VNC]]></category>
		<category><![CDATA[xwd]]></category>
		<category><![CDATA[xwininfo]]></category>

		<guid isPermaLink="false">http://blog.gedankendunst.de/?p=78</guid>
		<description><![CDATA[Wer von uns kennt sie nicht, diese kleinen Thumbnails auf verschiedenen WebSeiten, die wiederum eine Vorschau von anderen Seiten im Internet darstellen. Auf der Suche nach einer geeigneten Software, um diese Bilder selbst herstellen zu können, verzweifelt man recht schnell. Ein bereits fertiges, lauffähiges Programm für Linux, welches sich am besten auch noch automatisiert einsetzen [...]]]></description>
			<content:encoded><![CDATA[<p>Wer von uns kennt sie nicht, diese kleinen Thumbnails auf verschiedenen WebSeiten, die wiederum eine Vorschau von anderen Seiten im Internet darstellen. Auf der Suche nach einer geeigneten Software, um diese Bilder selbst herstellen zu können, verzweifelt man recht schnell. Ein bereits fertiges, lauffähiges Programm für Linux, welches sich am besten auch noch automatisiert einsetzen läßt, findet man nicht.<br />
Die ersten Gedanken, die einem durch den Kopf schießen, sagen: Es gibt doch für alles irgendwelche Konvertier-Tools. Ich kann aus einem .doc-Dokument ein PDF machen. Ich kann aus einer Grafik im Format GIF auch problemlos ein JPEG machen. Aber warum gibt es kein einfaches kleines Tool, welches mir aus einer HTML-Datei einfach ein Bild machen kann?<br />
Wenn man über diese Fragestellung dann etwas intensiver nachdenkt, stellt man relativ schnell fest, dass ein solches Programm viel Interpretationsarbeit leisten muss. In Webseiten ist JavaScript eingebunden, wir finden dort häufig Videos, auch hereinfliegende Layer-Werbung ist nicht selten und viele 100 Dinge mehr. Diese Interpretationsarbeit ist natürlich nicht einfach zu bewerkstelligen. Aber auch nicht unlösbar, oder? Also fangen wir an:</p>
<p>Um sich die Interpretationsarbeit der einzelnen HTML-Elemente inkl. Video, Java, JavaScript, PHP, usw. usw. zu ersparen, greifen wir einfach auf einen vorhandenen Browser zurück: z.B. Mozilla. Diesen installieren wir  auf unserem Root-Server.<br />
Auf der Shell-Oberfläche allein ist der Browser leider nicht lauffähig. Aber ein X-Server und ein VNC-Server sollten Abhilfe schaffen. Mit Hilfe der Virtual Network Computing Software lassen sich Bildschirminhalte eines entfernten Rechners auf einem lokalen Rechner darstellen. Da die Server im Rechenzentrum meist über keinen Monitor verfügen, den man von zu Hause aus sehen kann, erscheint mir das ein sinnvoller Ansatz zu sein. Wer sich bisher noch nicht mit VNC beschäftigt hat, der sollte mal einen Blick auf die <a href="http://de.wikipedia.org/wiki/Virtual_Network_Computing">Wikipedia-Seite</a> werfen. Hier findet man einen groben Überblick und auch weiterführende Links.</p>
<p>Gehen wir nun davon aus, dass Mozilla, der X-Server und der VNC-Server auf unserem Rechner installiert sind. Eventuell noch der VNC-Client auf unserem lokalen Computer um die Dinge zu sehen, die nun kommen werden.</p>
<p>Lassen Sie uns also den X-Server starten:</p>
<blockquote><p>startx &#038;</p></blockquote>
<p>Den VNC-Server starten wir gleich im Anschluss:</p>
<blockquote><p>vncserver -geometry 1280&#215;800 -depth 16 :20 &#038;</p></blockquote>
<p>Nun wo alles läuft können wir auch noch den Mozilla starten und die Seite http://blog.gedankendunst.de aufrufen:</p>
<blockquote><p>mozilla-firefox &#8211;display :20 -height 1280 -width 800 -p default http://blog.gedankendunst.de &#038;</p></blockquote>
<p>Sofern Sie auch den VNC-Client im Einsatz haben und diesen mit Ihrem Server verbunden haben (In unserem Beispiel mit Display 20), sollten Sie beobachten können, dass sich ein Browserfenster öffnet und die entsprechende Seite dargestellt wird. In unserem Beispiel wird der Browser mit einer Fenstergröße von 1280 Pixel x 800 Pixel geöffnet. Damit sollten auch WebSeiten, die sich in der Breite sehr strecken zumindest horizontal komplett angezeigt werden.<br />
Da wir aber eine Automatisierung der Browser-Screenshots wünschen, kehren wir schnell wieder zu unserem Server zurück. Die Ansicht im VNC-Client diente lediglich der Kontrolle. Sie müssen den Client selbstverständlich nicht einsetzen. </p>
<p>Um von der Shell aus einen Screenshot des im VNC Angezeigten zu erhalten können wir auf xwd zurückgreifen. Dieses Programm erstellt ein beliebiges Abbild eines geöffneten Fensters. Die Syntax für den Aufruf ist:</p>
<blockquote><p>xwd -display :20 -silent -nobdrs -id &lt;irgendeine ID&gt; -out &lt;Dateiname&gt;</p></blockquote>
<p>So weit so gut. Nun stellt sich natürlich die Frage, wie die ID des Fensters zu ermitteln ist, dessen Inhalt wir gern in unserer Bilddatei &#8220;Dateiname&#8221; hätten. Auch dafür gibt es natürlich ein Programm: xwininfo.</p>
<p>Ein Aufruf von</p>
<blockquote><p>xwininfo -display :20 -root -tree</p></blockquote>
<p>ergibt nun ein ziemlich unübersichtliches Durcheinander auf unserer Shell. Ein möglicher Output ist folgender:</p>
<blockquote><p>&#8230;<br />
&#8230;<br />
0&#215;6684b7 (has no name): ()  1288&#215;783+-4+-4  +-4+-4<br />
        10 children:<br />
        0&#215;6684c1 (has no name): ()  1280&#215;20+4+4  +0+0<br />
           4 children:<br />
           0&#215;6684c8 (has no name): ()  20&#215;20+0+0  +0+0<br />
           0&#215;6684c7 (has no name): ()  20&#215;20+1260+0  +1260+0<br />
           0&#215;6684c5 (has no name): ()  20&#215;20+1220+0  +1220+0<br />
           0&#215;6684c2 (has no name): ()  20&#215;20+1240+0  +1240+0<br />
        0&#215;6684c0 (has no name): ()  1280&#215;755+4+24  +0+20<br />
           1 child:<br />
           0&#215;100003f &#8220;gedankendunst.de &#8211; Iceweasel&#8221;: (&#8220;Gecko&#8221; &#8220;Firefox-bin&#8221;)  1280&#215;755+0+0  +0+20<br />
              2 children:<br />
              0&#215;1000045 (has no name): ()  1280&#215;755+0+0  +0+20<br />
                 1 child:<br />
                 0&#215;1000046 (has no name): ()  1280&#215;755+0+0  +0+20<br />
                    1 child:<br />
                    0&#215;1000047 (has no name): ()  1280&#215;755+0+0  +0+20<br />
                       1 child:<br />
                       0&#215;1000054 (has no name): ()  1280&#215;755+0+0  +0+20<br />
                          1 child:<br />
                          0&#215;1000055 (has no name): ()  1280&#215;755+0+0  +0+20<br />
                             3 children:<br />
                             0&#215;1000080 (has no name): ()  16&#215;16+201+35  +201+55<br />
                                1 child:<br />
                                0&#215;1000081 (has no name): ()  16&#215;16+0+0  +201+55<br />
                             0&#215;100007e (has no name): ()  16&#215;16+201+35  +201+55<br />
                                1 child:<br />
                                0&#215;100007f (has no name): ()  16&#215;16+0+0  +201+55<br />
                             0&#215;1000078 (has no name): ()  1280&#215;640+0+93  +0+113<br />
                                1 child:<br />
                                0&#215;1000079 (has no name): ()  1280&#215;640+0+0  +0+113<br />
                                   1 child:<br />
                                   0&#215;100007a (has no name): ()  1280&#215;640+0+0  +0+113<br />
                                      1 child:<br />
                                      0&#215;100007b (has no name): ()  1280&#215;640+0+0  +0+113<br />
                                         1 child:<br />
                                         0&#215;100007c (has no name): ()  1280&#215;640+0+0  +0+113<br />
                                            1 child:<br />
                                            0&#215;100007d (has no name): ()  1280&#215;640+0+0  +0+113<br />
                                               1 child:<br />
                                               0&#215;1000101 (has no name): ()  1280&#215;640+0+0  +0+113<br />
                                                  1 child:<br />
                                                  0&#215;1000102 (has no name): ()  1280&#215;640+0+0  +0+113<br />
                                                     2 children:<br />
                                                     0&#215;100035d (has no name): ()  789&#215;519+10+10  +10+123<br />
                                                        1 child:<br />
                                                        0&#215;100035e (has no name): ()  789&#215;519+0+0  +10+123<br />
                                                           2 children:<br />
                                                           0&#215;1000365 (has no name): ()  785&#215;440+2+57  +12+180<br />
                                                              1 child:<br />
                                                              0&#215;1000366 (has no name): ()  785&#215;440+0+0  +12+180<br />
                                                                 1 child:<br />
                                                                 0&#215;1000367 (has no name): ()  785&#215;440+0+0  +12+180<br />
                                                                    1 child:<br />
                                                                    0&#215;1000368 (has no name): ()  785&#215;440+0+0  +12+180<br />
                                                                       1 child:<br />
                                                                       0&#215;1000369 (has no name): ()  785&#215;440+0+0  +12+180<br />
                                                                          1 child:<br />
                                                                          0&#215;100036a (has no name): ()  785&#215;440+0+0  +12+180<br />
                                                           0&#215;100035f (has no name): ()  780&#215;480+0+0  +10+123<br />
                                                              1 child:<br />
                                                              0&#215;1000360 (has no name): ()  780&#215;480+0+0  +10+123<br />
                                                                 1 child:<br />
                                                                 0&#215;1000361 (has no name): ()  780&#215;480+0+0  +10+123<br />
                                                                    1 child:<br />
                                                                    0&#215;1000362 (has no name): ()  780&#215;480+0+0  +10+123<br />
                                                                       1 child:<br />
                                                                       0&#215;1000363 (has no name): ()  780&#215;480+0+0  +10+123<br />
                                                                          1 child:<br />
                                                                          0&#215;1000364 (has no name): ()  780&#215;480+0+0  +10+123<br />
                                                     0&#215;1000103 (has no name): ()  1264&#215;640+0+0  +0+113<br />
                                                        1 child:<br />
                                                        0&#215;1000104 (has no name): ()  1264&#215;640+0+0  +0+113<br />
                                                           3 children:<br />
                                                           0&#215;1000250 (has no name): ()  160&#215;600+800+1340  +800+1453<br />
                                                              1 child:<br />
                                                              0&#215;1000251 (has no name): ()  160&#215;600+0+0  +800+1453<br />
                                                                 1 child:<br />
                                                                 0&#215;10002f3 (has no name): ()  160&#215;600+0+0  +800+1453<br />
                                                                    1 child:<br />
                                                                    0&#215;10002f4 (has no name): ()  160&#215;600+0+0  +800+1453<br />
                                                           0&#215;10001dc (has no name): ()  160&#215;600+800+710  +800+823<br />
                                                              1 child:<br />
                                                              0&#215;10001dd (has no name): ()  160&#215;600+0+0  +800+823<br />
                                                                 1 child:<br />
                                                                 0&#215;10002f0 (has no name): ()  160&#215;600+0+0  +800+823<br />
                                                                    1 child:<br />
                                                                    0&#215;10002f1 (has no name): ()  160&#215;600+0+0  +800+823<br />
                                                           0&#215;10001d1 (has no name): ()  160&#215;600+800+80  +800+193<br />
                                                              1 child:<br />
                                                              0&#215;10001d2 (has no name): ()  160&#215;600+0+0  +800+193<br />
                                                                 1 child:<br />
                                                                 0&#215;10002ed (has no name): ()  160&#215;600+0+0  +800+193<br />
                                                                    1 child:<br />
                                                                    0&#215;10002ee (has no name): ()  160&#215;600+0+0  +800+193<br />
              0&#215;1000040 (has no name): ()  1&#215;1+-1+-1  +-1+19<br />
        0&#215;6684bf (has no name): ()  24&#215;24+1264+759  +1260+755<br />
        0&#215;6684be (has no name): ()  24&#215;24+0+759  +-4+755<br />
        0&#215;6684bd (has no name): ()  24&#215;24+1264+0  +1260+-4<br />
        0&#215;6684bc (has no name): ()  24&#215;24+0+0  +-4+-4<br />
        0&#215;6684bb (has no name): ()  1288&#215;4+0+779  +-4+775<br />
        0&#215;6684ba (has no name): ()  4&#215;783+1284+0  +1280+-4<br />
        0&#215;6684b9 (has no name): ()  4&#215;783+0+0  +-4+-4<br />
        0&#215;6684b8 (has no name): ()  1288&#215;4+0+0  +-4+-4<br />
&#8230;<br />
&#8230;</p></blockquote>
<p>Versuchen wir das Chaos zu ordnen. Wir suchen nach einem Fenster welches die Größe von 1280 x 800 Pixel hat. Dabei fällt diese Zeile glatt ins Auge:</p>
<blockquote><p>0×100003f “gedankendunst.de &#8211; Iceweasel”: (”Gecko” “Firefox-bin”) 1280×755+0+0 +0+20</p></blockquote>
<p>Wenn wir von diesem Fenster einen Screenshot mit folgendem Befehl erstellen</p>
<blockquote><p>xwd -display :20 -silent -nobdrs -id  0×100003f -out meinbild</p></blockquote>
<p>und diesen anschliessend mit dem Programm convert aus dem ImageMagick-Paket konvertieren</p>
<blockquote><p>convert meinbild bild.jpg</p></blockquote>
<p>oder</p>
<blockquote><p>convert meinbild bild.gif</p></blockquote>
<p>dann fällt uns auf, dass das Ergebnis schon fast unseren Wünschen entspricht. Was mir augenblicklich an der Ausgabe noch nicht gefällt sind die Browser-Leisten wie beispielsweise die Status-Leiste, das URL-Eingabe-Feld, usw. usw.<br />
Wir müssen also nach einem Fenster dieses Prozesses suchen, welches eine etwas kleinere Größe hat, denn in diesem Fenster müssen die Browser-Leisten fehlen. Nach ein paar Versuchen mit den untergeordneten Fenstern bin ich auf das folgende X-Window gestoßen:</p>
<blockquote><p>0×1000103 (has no name): () 1264×640+0+0 +0+113</p></blockquote>
<p>Dieses Fenster erfüllt alle meine Anforderungen an den Screenshot meines Blogs.</p>
<p>Die Größe des Fensters kann bei Ihnen je nach Browser variieren. Um das richtige Fenster zu finden, hilft es einfach nur alle Fenster auszuprobieren. Wenn Sie das für Sie richtige Fenster gefunden haben, können Sie damit beginnen den Prozess der ScreenShot-Herstellung in einem Script zu automatisieren.</p>
<p>Sollte Ihnen das Alles zu umständlich erscheinen, können Sie natürlich auf einen der auf dem Markt vorhandenen Anbieter zurückgreifen. Einer der Anbieter auf dem Markt ist Michael Jentsch der auf der Seite: http://www.m-software.de/thumbshots/ einen solchen bzw. ähnlichen Dienst bereits anbietet.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.gedankendunst.de/2009/07/02/html2gif-html2jpg/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Einbinden eines PHP-Scripts in eine Webseite</title>
		<link>http://blog.gedankendunst.de/2009/07/02/einbinden-eines-php-scripts-in-eine-webseite/</link>
		<comments>http://blog.gedankendunst.de/2009/07/02/einbinden-eines-php-scripts-in-eine-webseite/#comments</comments>
		<pubDate>Wed, 01 Jul 2009 22:29:05 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[HowTo]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://blog.gedankendunst.de/?p=55</guid>
		<description><![CDATA[Um ein PHP-Script in eine HTML-Seite einbinden zu können, sollte man auf die Hilfe von JavaScript zurückgreifen. Gerade dann, wenn das Script nicht nur auf dem eigenen Server ausgeführt werden soll, sondern auch von anderen WebSeiten aufgerufen werden soll (z.B. bei einem Counter-Dienst). Man kann in der Regel nicht davon ausgehen, dass jedes Webserver-Paket auch [...]]]></description>
			<content:encoded><![CDATA[<p>Um ein PHP-Script in eine HTML-Seite einbinden zu können, sollte man auf die Hilfe von JavaScript zurückgreifen. Gerade dann, wenn das Script nicht nur auf dem eigenen Server ausgeführt werden soll, sondern auch von anderen WebSeiten aufgerufen werden soll (z.B. bei einem Counter-Dienst). Man kann in der Regel nicht davon ausgehen, dass jedes Webserver-Paket auch PHP unterstützt.</p>
<p>Das PHP Script selbst kann eigentlich wie bisher geschrieben werden, allerding mit einem Unterschied. Auf die Angabe des &#8220;echo&#8221;-Befehls muss verzichtet werden. Alles was auf dem Bildschirm ausgegeben werden soll, sollte in einer Variablen gespeichert werden.</p>
<p>Beispiel:</p>
<blockquote><p>&lt;script language=&#8221;php&#8221;&gt;</p>
<p>$ausgabe = $ausgabe.&#8221;&lt;table style=\&#8221;text-align: left; width: 120px; background-color: rgb(255, 255, 255);\&#8221; border=\&#8221;0\&#8221;";<br />
$ausgabe = $ausgabe.&#8221;cellpadding=\&#8221;0\&#8221; cellspacing=\&#8221;0\&#8221;&gt;&#8221;;<br />
$ausgabe = $ausgabe.&#8221;&lt;tbody&gt;&#8221;;<br />
&#8230;.<br />
&#8230;.
</p></blockquote>
<p>Ganz am Ende des Scripts, sollte die gewünschte Ausgabe erfolgen. Diese sollte allerdings im JavaScript-Stil erfolgen. Das PHP-Script gibt einen JavaScript-Befehl aus:</p>
<blockquote><p>&#8230;<br />
&#8230;<br />
echo &#8220;document.write(&#8216;$ausgabe&#8217;)&#8221;;</p>
<p>&lt;/script&gt;
</p></blockquote>
<p>Um das Script nun in eine HTML-Seite einzuinden, braucht nur noch folgender Code-Schnippsel eingefügt werden:</p>
<blockquote><p>&lt;script<br />
type=&#8221;text/javascript&#8221;<br />
src= &#8220;http://script.php&#8221;&gt;<br />
&lt;/script&gt;
</p></blockquote>
<p>Das Script erfüllt nun die Anforderungen des gesetzten Typs &#8220;text/javascript&#8221;, denn das Ergebnis ist eine Ausgabe im JavaScript-Format</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.gedankendunst.de/2009/07/02/einbinden-eines-php-scripts-in-eine-webseite/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Einrichtung eines FTP-Servers unter Debian</title>
		<link>http://blog.gedankendunst.de/2009/07/02/einrichtung-eines-ftp-servers-unter-debian/</link>
		<comments>http://blog.gedankendunst.de/2009/07/02/einrichtung-eines-ftp-servers-unter-debian/#comments</comments>
		<pubDate>Wed, 01 Jul 2009 22:21:25 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[HowTo]]></category>
		<category><![CDATA[Top Artikel]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[ftp]]></category>
		<category><![CDATA[proftpd]]></category>

		<guid isPermaLink="false">http://blog.gedankendunst.de/?p=45</guid>
		<description><![CDATA[Oft ist es erforderlich Usern FTP-Accounts einzurichten, damit diese Dateien uploaden können. Unter debian ist die Einrichtung eines FTP-Servers sehr einfach. Bitte führen Sie alle aufgeführten Schritte als User &#8220;root&#8221; durch:
Der Download und die Installation des FTP-Servers kann mit folgendem Befehl erreicht werden:

apt-get install proftpd
Bei den nachfolgenden Fragen können Sie beruhigt immer den Vorgaben zustimmen. [...]]]></description>
			<content:encoded><![CDATA[<p>Oft ist es erforderlich Usern FTP-Accounts einzurichten, damit diese Dateien uploaden können. Unter debian ist die Einrichtung eines FTP-Servers sehr einfach. Bitte führen Sie alle aufgeführten Schritte als User &#8220;root&#8221; durch:</p>
<p>Der Download und die Installation des FTP-Servers kann mit folgendem Befehl erreicht werden:</p>
<blockquote><p>
apt-get install proftpd</p></blockquote>
<p>Bei den nachfolgenden Fragen können Sie beruhigt immer den Vorgaben zustimmen. Ich würde Ihnen vorschlagen den FTP-Server als Deamon (standalone) laufen zu lassen und keine anonymen Zugänge zu verwenden.</p>
<p>Nach Abschluss der Installation legen Sie bitte eine neue Gruppe im System an: ftpuser</p>
<blockquote><p>addgroup ftpuser</p></blockquote>
<p>Öffnen Sie in einem Editor die Datei &#8220;/etc/proftpd/proftpd.conf&#8221; und fügen Sie folgende Zeilen ein, falls diese noch nicht existieren:</p>
<blockquote><p>DefaultRoot ~</p>
<p>&lt;Limit LOGIN&gt;<br />
DenyGroup !ftpuser<br />
&lt;/Limit&gt;</p></blockquote>
<p>Mit diesen Befehlen legen Sie fest, dass das absolute RootVerzeichnis eines FTP-Users sein Home-Verzeichnis ist. Es wird FTP-Usern nicht möglich sein diesen Pfad zu verlassen und in höhere Verzeichnisebenen vorzudringen.<br />
Weiterhin legen Sie fest, dass sich nur Nutzer einloggen können, die der Gruppe &#8220;ftpuser&#8221; angehören.</p>
<p>Kopien Sie bitte mit folgendem Befehl das Programm /bin/false zu /bin/onlyftp:</p>
<blockquote><p>cp /bin/false /bin/onlyftp</p></blockquote>
<p>Öffnen Sie in einem Editor die Datei &#8220;/etc/shells&#8221; und fügen Sie am Ende der Datei folgenden Eintrag hinzu:</p>
<blockquote><p>/bin/onlyftp</p></blockquote>
<p>Mit diesen Befehlen haben Sie eine Shell &#8220;onlyftp&#8221; angelegt, die es niemandem ermöglicht sich per SSH auf Ihrem Server einzuloggen, jedoch per FTP über den FTP-Server.</p>
<p>Nun können wir User anlegen, die auf den FTP-Server zugreifen können. Folgende Schritte können Sie entsprechend der Anzahl Ihrer benötigten User beliebig oft wiederholen.</p>
<p>Legen Sie nun mit folgendem Befehl den User ftp01 an:</p>
<blockquote><p>useradd ftp01</p></blockquote>
<p>Öffnen Sie in einem Editor die Datei &#8220;/etc/passwd&#8221; und ersetzen Sie in der Zeile die Ihren User ftp01 enthält, die angegebene Shell (/bin/sh oder /bin/bash) durch &#8220;/bin/onlyftp&#8221;.</p>
<p>Beispiel:</p>
<blockquote><p>&#8230;<br />
ftp01:x:1002:1003::/home/ftp01:/bin/onlyftp<br />
&#8230;</p></blockquote>
<p>Legen Sie bitte das Home-Verzeichnis des Benutzers an und geben Sie dem Benutzer Zugriff auf das Verzeichnis:</p>
<blockquote><p>mkdir /home/ftp01<br />
chown -R ftp01 /home/ftp01
</p></blockquote>
<p>Modifizieren Sie die Gruppenzugehörigkeit des Benutzers:</p>
<blockquote><p>usermod -G ftpuser ftp01</p></blockquote>
<p>Letztendlich müssen Sie dem Benutzer nun noch ein Passwort zuweisen. Führen Sie folgenden Befehl aus:</p>
<blockquote><p>passwd ftp01</p></blockquote>
<p>Geben Sie das Passwort zwei Mail nacheinander identisch ein.</p>
<p>Ihr FTP-Server und der erste User-Account sind nun eingerichtet. Sollten Sie das Upload-Verzeichnis des FTP-Users dafür nutzen wollen, es als Document-Root im Apache-Webserver verwenden zu wollen, müssen Sie noch einen symbolischenen Link erstellen.</p>
<p>Beispiel:</p>
<blockquote><p>ln -s /home/ftp01 &#8220;Document Root des Apache&#8221;</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://blog.gedankendunst.de/2009/07/02/einrichtung-eines-ftp-servers-unter-debian/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Legal illegal Geld verdienen</title>
		<link>http://blog.gedankendunst.de/2009/07/01/legal-illegal-geld-verdienen/</link>
		<comments>http://blog.gedankendunst.de/2009/07/01/legal-illegal-geld-verdienen/#comments</comments>
		<pubDate>Wed, 01 Jul 2009 21:52:34 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Internet]]></category>
		<category><![CDATA[Top Artikel]]></category>
		<category><![CDATA[Global Gaming Factory]]></category>
		<category><![CDATA[Pirate Bay]]></category>
		<category><![CDATA[Urheberrecht]]></category>

		<guid isPermaLink="false">http://blog.gedankendunst.de/?p=33</guid>
		<description><![CDATA[Der Prozess um Pirate Bay hat bereits genug Staub aufgewirbelt, aber nun kommt die Gelddruckmaschine erst richtig in Fahrt. Fangen wir jedoch vorne an.
Pirate Bay ist (war) eine der bekanntesten Tauschbörsen von Musik, Videos und Software im Internet. Selbstverständlich illegal. Diese illegalen Machenschaften fanden auf der einen Seite zwar viele Anhänger, die das Angebot nutzten [...]]]></description>
			<content:encoded><![CDATA[<p>Der Prozess um Pirate Bay hat bereits genug Staub aufgewirbelt, aber nun kommt die Gelddruckmaschine erst richtig in Fahrt. Fangen wir jedoch vorne an.<br />
Pirate Bay ist (war) eine der bekanntesten Tauschbörsen von Musik, Videos und Software im Internet. Selbstverständlich illegal. Diese illegalen Machenschaften fanden auf der einen Seite zwar viele Anhänger, die das Angebot nutzten und sich dadurch günstig mit Daten jeglicher Art versorgten, aber auch viele Gegner. Die Urheber auf der anderen Seite sind verständlicher Weise wenig begeistert. Sie haben hart an ihrer Musik gearbeitet, Nächte lang Software programmiert oder Bücher geschrieben. Leider kam für diese Arbeit weniger Geld in die Kassen als geplant. Als Folge daraus wurden in einem Prozess bisher vier der verantwortlichen Portal-Betreiber verurteilt. Das Urteil: ca. 2,7 Millionen Euro Schadenersatz und Haftstrafen.</p>
<p>So weit so gut könnte man meinen. Die Gerechtigkeit hat gesiegt und nun können wir uns entspannt zurücklehnen. Aber nein, nun tritt ein schwedisches Software-Unternehmen in Erscheinung (Global Gaming Factory) und kauft das illegale Angebot, um es in ein legales Angebot zu überführen, für ca. 5,5 Millionen Euro auf. </p>
<p>Kurz mal nachgerechnet ergibt sich daraus kein Minus, eher ein sattes Plus. Wir dürfen sicher auch davon ausgehen, dass der Betrieb der Plattform durch Werbeeinnahmen mindestens kostenneutral geblieben ist. Jeder pfiffige Geschäftsmann könnte nach diesen Ereignissen davon ausgehen, dass der Betrieb einer illegalen Plattform zwar irgendwann zu negativen Konsequenzen führen wird, diese jedoch durch spätere Einnahmen wieder für einen höheren Stand im Geldspeicher sorgen wird.<br />
Das Verhalten der Global Gaming Factory ist daher auf das Schärfste zu verurteilen. Diese Vorgehensweise setzt falsche Signale. Urheberrechtsverletzern wird dadurch suggeriert, dass auf diese Weise legal (illegal) Geld verdient werden kann. Gerade ein Software-Unternehmen sollte sich nicht auf derartige Praktiken einlassen. Indirekte Unterstützung derartiger Aktivitäten vermindert auch eigene Einnahmen. Mal darüber nachgedacht?</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.gedankendunst.de/2009/07/01/legal-illegal-geld-verdienen/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Programme auf anderen Servern mit SSH ausführen</title>
		<link>http://blog.gedankendunst.de/2009/07/01/programme-auf-anderen-servern-mit-ssh-ausfuhren/</link>
		<comments>http://blog.gedankendunst.de/2009/07/01/programme-auf-anderen-servern-mit-ssh-ausfuhren/#comments</comments>
		<pubDate>Tue, 30 Jun 2009 22:46:50 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[HowTo]]></category>
		<category><![CDATA[Top Artikel]]></category>
		<category><![CDATA[server]]></category>
		<category><![CDATA[ssh]]></category>

		<guid isPermaLink="false">http://blog.gedankendunst.de/?p=73</guid>
		<description><![CDATA[Im Server-Bereich hat man häufiger das Problem, dass man von Server A einen Befehl auf Server B ausführen möchte, um das Ergebnis auf Server A weiterverarbeiten zu können.
SSH-Verbindungen bieten sich dazu an, eine gesicherte Verbindung zwischen diesen Servern herzustellen.
ssh -l user serverB &#8216;ls -als&#8217;
Dieses Befehl würde auf &#8217;serverB&#8217; das Kommando &#8216;ls -als&#8217; ausführen.
Aus Sicherheitsgründen möchte [...]]]></description>
			<content:encoded><![CDATA[<p>Im Server-Bereich hat man häufiger das Problem, dass man von Server A einen Befehl auf Server B ausführen möchte, um das Ergebnis auf Server A weiterverarbeiten zu können.<br />
SSH-Verbindungen bieten sich dazu an, eine gesicherte Verbindung zwischen diesen Servern herzustellen.</p>
<blockquote><p>ssh -l user serverB &#8216;ls -als&#8217;</p></blockquote>
<p>Dieses Befehl würde auf &#8217;serverB&#8217; das Kommando &#8216;ls -als&#8217; ausführen.</p>
<p>Aus Sicherheitsgründen möchte man jedoch oft, dass nur ein einziges Kommando ausgeführt werden kann. Denn das Kommando &#8216;\rm -R *&#8217; wäre Fatal.</p>
<p>OpenSSH bietet die Möglichkeit zuätzlich zu den autorisierten Schlüsseln in der Datei authorized_keys auch noch eine Befehl vorzugeben, der ausgeführt werden soll. Der Befehl wird in diesem Fall ausgeführt und die SSH-Verbindung wieder geschlossen.</p>
<blockquote><p>command=&#8217;ls -als&#8217; ssh-dss AAAA&#8230;.KEY</p></blockquote>
<p>Schade an dieser Möglichkeit ist nur, dass man auf diesem Weg keine Parameter übergeben kann. Über ein Perl-Script z.B. kann man aber den eigentlich auszuführenden Befehl, welcher auf Grund der command-Anweisung in der authorized_keys nun nicht mehr ausgeführt wird, auslesen.</p>
<blockquote><p>ssh -l user serverB &#8220;parameter&#8221;</p></blockquote>
<p>Obwohl der Server nun nur den in der authorized_keys angegebenen Befehl ausführt (Dieser Befehl kann auch das Ausführen eines Perl-Scripts sein), hat man nun die Möglichkeit Parameter zu übergeben. &#8216;parameter&#8217; wird nämlich in der Umgebungsvariable &#8216;$ENV{SSH_ORIGINAL_COMMAND}&#8217; gespeichert.<br />
Ein Perl-Script kann den dort übergebenen Parameter auslesen und entsprechend weiterverarbeiten. </p>
]]></content:encoded>
			<wfw:commentRss>http://blog.gedankendunst.de/2009/07/01/programme-auf-anderen-servern-mit-ssh-ausfuhren/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CGI Umgebungsvariablen in Perl</title>
		<link>http://blog.gedankendunst.de/2009/07/01/cgi-umgebungsvariablen-in-perl/</link>
		<comments>http://blog.gedankendunst.de/2009/07/01/cgi-umgebungsvariablen-in-perl/#comments</comments>
		<pubDate>Tue, 30 Jun 2009 22:42:08 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Programmierung]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[cgi]]></category>
		<category><![CDATA[perl]]></category>

		<guid isPermaLink="false">http://blog.gedankendunst.de/?p=67</guid>
		<description><![CDATA[Was ich immer wieder gern vergesse und daher auch immer wieder nachsehen muss, sind die CGI-Umgebungsvariablen. Damit ich nicht immer wieder aufs Neue suchen muss, stelle ich hier kurz die wichtigsten Variablen zusammen:
HTTP_COOKIE
$cookie = $ENV{&#8216;HTTP_COOKIE&#8217;};
Diese Variable gibt eine Liste der vom Browser übertragenen Cookies wieder.
HTTP_REFERER
$referer = $ENV{&#8216;HTTP_REFERER&#8217;};
Diese Variable gibt die URL des Dokuments wieder, auf [...]]]></description>
			<content:encoded><![CDATA[<p>Was ich immer wieder gern vergesse und daher auch immer wieder nachsehen muss, sind die CGI-Umgebungsvariablen. Damit ich nicht immer wieder aufs Neue suchen muss, stelle ich hier kurz die wichtigsten Variablen zusammen:</p>
<p>HTTP_COOKIE</p>
<blockquote><p>$cookie = $ENV{&#8216;HTTP_COOKIE&#8217;};</p></blockquote>
<p>Diese Variable gibt eine Liste der vom Browser übertragenen Cookies wieder.</p>
<p>HTTP_REFERER</p>
<blockquote><p>$referer = $ENV{&#8216;HTTP_REFERER&#8217;};</p></blockquote>
<p>Diese Variable gibt die URL des Dokuments wieder, auf das der Browser des Benutzers vor Aufrufen dieses CGI´s zugegriffen hat.</p>
<p>HTTP_USER_AGENT</p>
<blockquote><p>$agent = $ENV{&#8216;HTTP_USER_AGENT&#8217;};</p></blockquote>
<p>Diese Variable gibt den Namen des Browsers wieder, welcher gerade auf das CGI zugreift.</p>
<p>QUERY_STRING</p>
<blockquote><p>$query = $ENV{&#8216;QUERY_STRING&#8217;};</p></blockquote>
<p>Diese Variable gibt die Formulardaten/Übergabedaten zurück, die an das CGI gesendet wurden.</p>
<p>REMOTE_ADDR</p>
<blockquote><p>$ip = $ENV{&#8216;REMOTE_ADDR&#8217;};</p></blockquote>
<p>Diese Variable gibt die IP des Users an, der gerade über einen Browser auf das CGI zugreift.</p>
<p>REMOTE_HOST</p>
<blockquote><p>$host = $ENV{&#8216;REMOTE_HOST&#8217;};</p></blockquote>
<p>Diese Variable gibt den Hostnamen des Users an, der gerade über einen Browser auf das CGI zugreift.</p>
<p>HTTP_HOST</p>
<blockquote><p>$host = $ENV{&#8216;HTTP_HOST&#8217;};</p></blockquote>
<p>Diese Variable gibt den Hostnamen an, der vom Browser aufgerufen wurde.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.gedankendunst.de/2009/07/01/cgi-umgebungsvariablen-in-perl/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Konfiguration des Apache bei Nutzung von PHP in MultiUser-Umgebung</title>
		<link>http://blog.gedankendunst.de/2009/07/01/konfiguration-des-apache-bei-nutzung-von-php-in-multiuser-umgebung/</link>
		<comments>http://blog.gedankendunst.de/2009/07/01/konfiguration-des-apache-bei-nutzung-von-php-in-multiuser-umgebung/#comments</comments>
		<pubDate>Tue, 30 Jun 2009 22:35:04 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[HowTo]]></category>
		<category><![CDATA[Top Artikel]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://blog.gedankendunst.de/?p=62</guid>
		<description><![CDATA[Als Betreiber eines Apache-Webservers in einer Multiuser-Umgebung, welcher auch das Ausführen von PHP-Scripts zulässt, sollten Sie einige Sicherheitsvorkehrungen treffen.
Folgendes Fenster zeigt eine Beispielkonfiguration des virtuellen Webservers in der Apache-Konfiguration (/etc/apache/httpd.conf)
&#60;VirtualHost 1.2.3.4&#62;
ServerAdmin email@email.de
DocumentRoot /www/domain.de/
ServerName domain.de
ServerAlias www.domain.de
ErrorLog /log/domain.err
CustomLog /log/domain.full full
&#60;Directory &#8220;/www/domain.de/&#8221;&#62;
Options Includes FollowSymLinks MultiViews
AllowOverride None
php_admin_flag engine on
php_admin_flag log_errors on
php_admin_flag track_errors on
php_admin_flag display_errors on
php_admin_flag display_startup_errors on
php_admin_flag register_globals on
php_admin_flag [...]]]></description>
			<content:encoded><![CDATA[<p>Als Betreiber eines Apache-Webservers in einer Multiuser-Umgebung, welcher auch das Ausführen von PHP-Scripts zulässt, sollten Sie einige Sicherheitsvorkehrungen treffen.</p>
<p>Folgendes Fenster zeigt eine Beispielkonfiguration des virtuellen Webservers in der Apache-Konfiguration (/etc/apache/httpd.conf)</p>
<blockquote><p>&lt;VirtualHost 1.2.3.4&gt;<br />
ServerAdmin email@email.de<br />
DocumentRoot /www/domain.de/<br />
ServerName domain.de<br />
ServerAlias www.domain.de<br />
ErrorLog /log/domain.err<br />
CustomLog /log/domain.full full<br />
&lt;Directory &#8220;/www/domain.de/&#8221;&gt;<br />
Options Includes FollowSymLinks MultiViews<br />
AllowOverride None<br />
php_admin_flag engine on<br />
php_admin_flag log_errors on<br />
php_admin_flag track_errors on<br />
php_admin_flag display_errors on<br />
php_admin_flag display_startup_errors on<br />
php_admin_flag register_globals on<br />
php_admin_flag magic_quotes_runtime off<br />
php_admin_flag magic_quotes_gpc off</p>
<p>php_admin_value open_basedir /www/domain.de<br />
php_admin_value upload_tmp_dir /www/domain.de/tmp<br />
php_admin_value session.save_path /www/domain.de/session<br />
php_admin_value error_log /www/domain.de/logs/php.error.log<br />
php_admin_value sendmail_from irgendwas@domain.de<br />
php_admin_value sendmail_path &#8220;/usr/sbin/sendmail -t&#8221;<br />
&lt;/Directory&gt;<br />
&lt;/VirtualHost&gt;</p>
<p>php_admin_value open_basedir</p></blockquote>
<p>Dieser Befehl sorgt dafür, dass PHP Scripts innerhalb dieses VWEB keine Dateioperationen ausserhalb dieses Verzeichnises vornehmen können. Diese Einstellung ist sehr wichtig, damit fremde PHP Scripte keine wichtigen Server-Daten ausgeben können, wie z.B. /etc/passwd</p>
<blockquote><p>php_admin_value upload_tmp_dir /www/domain.de/tmp<br />
php_admin_value session.save_path /www/domain.de/session
</p></blockquote>
<p>Legen Sie mit den o.g. Befehlen temporäre Verzeichnisse für Daten und Session-IDs fest, damit jeder virtuelle Webserver in seiner eigenen Umgebung Daten speichern kann.</p>
<blockquote><p>php_admin_value sendmail_from irgendwas@domain.de<br />
php_admin_value sendmail_path &#8220;/usr/sbin/sendmail -t&#8221;
</p></blockquote>
<p>Geben Sie an, wo sich auf dem Server Sendmail bzw. der Sendmail-Ersatz befindet, so dass Scripts im jeweiligen VWEB auch Mails verschicken können. Legen Sie am Besten auch gleich eine Absender-Adresse fest. Damit vermeiden Sie böse Überraschungen, den Versand von eMails in fremden Namen.</p>
<p>In der globalen PHP-Konfiguration (php.ini) sollten Sie die nachfolgenden Funtionen deaktivieren, damit keine System-Programme angesprochen werden können.</p>
<blockquote><p>disable_functions = exec,shell_exec,system,passthru,popen,proc_open,escapeshellcmd</p></blockquote>
<p>Auch mit diesen Sicherheitseinstellungen kann keine 100%ige Serversicherheit gewährleistet werden. In der Regel sollten Sie, sofern möglich, bei virtuellen Servern, die nicht Ihrem Einfluss unterliegen, PHP deaktivieren.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.gedankendunst.de/2009/07/01/konfiguration-des-apache-bei-nutzung-von-php-in-multiuser-umgebung/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Für Verlinkung bitte zahlen!</title>
		<link>http://blog.gedankendunst.de/2009/06/30/fur-verlinkung-bitte-zahlen/</link>
		<comments>http://blog.gedankendunst.de/2009/06/30/fur-verlinkung-bitte-zahlen/#comments</comments>
		<pubDate>Tue, 30 Jun 2009 20:33:56 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Internet]]></category>
		<category><![CDATA[Top Artikel]]></category>
		<category><![CDATA[Hubert Burda]]></category>
		<category><![CDATA[Suchmaschine]]></category>
		<category><![CDATA[Urheberrecht]]></category>

		<guid isPermaLink="false">http://blog.gedankendunst.de/?p=8</guid>
		<description><![CDATA[In Zeiten der Wirtschaftskrise sind kreative Ideen gefragt, Einnahmen zu steigern. Eine der interessantesten, wenn auch gleich eine der absurdesten Ideen, stammt in diesen Tagen von Hubert Burda (Zeitschriftenverleger). Dieser fordert in der Frankfurter Allgemeinen Zeitung neben Anderem eine angemessene Beteiligung an den Werbeeinnahmen der dominierenden Suchmaschinen.
Seiner Meinung nach müsse der Gesetzgeber die Verleger vor [...]]]></description>
			<content:encoded><![CDATA[<p>In Zeiten der Wirtschaftskrise sind kreative Ideen gefragt, Einnahmen zu steigern. Eine der interessantesten, wenn auch gleich eine der absurdesten Ideen, stammt in diesen Tagen von Hubert Burda (Zeitschriftenverleger). Dieser fordert in der <a href="http://www.faz.net/s/Rub475F682E3FC24868A8A5276D4FB916D7/Doc~E5A9CAF508685453EB782013BE79E9C91~ATpl~Ecommon~Scontent.html">Frankfurter Allgemeinen Zeitung</a> neben Anderem eine angemessene Beteiligung an den Werbeeinnahmen der dominierenden Suchmaschinen.<br />
Seiner Meinung nach müsse der Gesetzgeber die Verleger vor einer schleichenden Enteignung schützen. Herr Burda beklagt, dass der größte Anteil an Werbeeinahmen nicht unbedingt an hochwertige, journalistische Angebote im Netz fließe, sondern an die marktdominierenden Suchmaschinen, welche auf diese Angebote verlinkten.</p>
<div id="attachment_30" class="wp-caption aligncenter" style="width: 208px"><a href="http://blog.gedankendunst.de/2009/06/30/fur-verlinkung-bitte-zahlen/hboi9h0x2/" rel="attachment wp-att-30"><img src="http://blog.gedankendunst.de/wp-content/uploads/2009/06/hboi9h0x2.jpg" alt="Hubert Burda (© Hubert Burda Media)" title="Hubert Burda" width="198" height="300" class="size-full wp-image-30" /></a><p class="wp-caption-text">Hubert Burda (© Hubert Burda Media)</p></div>
<p>In dem Punkt, dass ein Großteil aller Werbeeinnahmen an den Suchmaschinen-Primus Google fließen, kann man Hubert Burda nicht widersprechen. Jedoch sprudeln die Werbeeinnahmen nicht in die Kassen von Google, weil Herr Burda mit dem Magazin Focus so großartigen Häppchenjournalismus betreiben läßt, sondern die Geschäftsideen der Suchmaschinen-Betreiber, angetrieben durch Google, einfach eine Marktlücke ausgenutzt haben.<br />
Der Gesetzgeber hat Verleger, Journalisten und Autoren bereits ausreichend mit dem Urheberrechtsgesetz (UrhG) geschützt. Den Suchmaschinen kann man eine unerlaubte Vervielfältigung der Werke nicht vorwerfen. Sie &#8220;zitieren&#8221; höchstens einen kleinen Auszug aus jeweiligen Werken und verlinken aus diesen Zitaten dann auf die entsprechenden Seiten der Verlage. Genau dieses Vorgehen erlaubt auch das deutsche Urheberrecht. Das Wort &#8220;erlauben&#8221; ist in diesem Zusammenhang sogar zu schwach gewählt. Nein, es ist sogar erwünscht zu zitieren und auf andere Werke zu verweisen, da dies der kulturellen und wissenschaftlichen Weiterentwicklung einer Gesellschaft dient.<br />
Das Vorgehen von Google, ohne Einholung einer Genehmigung, ganze Buchpassagen zu digitalisieren und zu veröffentlichen ist unredlich. Hier steht jedoch der juristische Weg offen, denn dieses Vorgehen ist nicht durch das Recht auf Zitate abgedeckt.</p>
<p>Statt absurde Forderungen aufzustellen, schlägt gedankendunst.de Herrn Burda vor, einfach folgende robots.txt in allen Angeboten aufzunehmen:</p>
<p>User-agent: *<br />
Disallow: /</p>
<p>Dieser Schritt wird die Suchmaschinen dazu verleiten, seine Angebote nicht mehr zu indexieren. Durch fehlende Verweise und Zitate der Suchmaschinen  können diese keine Werbeerlöse durch Inhalte der Hubert Burda Media erwirtschaften. Hoffentlich führt unser Tipp nicht zur größten Firmenpleite des 21. Jahrhunderts. Wir würden Google und Co vermissen.<br />
Dem Mitbewerber Axel Springer empfehlen wir die Durchsetzung einer 10 prozentigen Umsatzbeteiligung an Kiosken zu erwirken, denn ohne die leicht bekleidete Dame auf der Titelseite der BILD würde dort niemand ernsthaft von uns den Kauf eines Schokoriegels in Betracht ziehen.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.gedankendunst.de/2009/06/30/fur-verlinkung-bitte-zahlen/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Hallo Welt!</title>
		<link>http://blog.gedankendunst.de/2009/06/30/hello-world/</link>
		<comments>http://blog.gedankendunst.de/2009/06/30/hello-world/#comments</comments>
		<pubDate>Tue, 30 Jun 2009 16:49:08 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Internet]]></category>

		<guid isPermaLink="false">http://gedankendunst.de/index.php?p=1</guid>
		<description><![CDATA[Der berühmte &#8220;Hallo Welt&#8221;-Artikel darf natürlich auch in diesem Blog nicht fehlen. Also geben wir hiermit den Startschuss für dieses neue Blog.
]]></description>
			<content:encoded><![CDATA[<p>Der berühmte &#8220;Hallo Welt&#8221;-Artikel darf natürlich auch in diesem Blog nicht fehlen. Also geben wir hiermit den Startschuss für dieses neue Blog.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.gedankendunst.de/2009/06/30/hello-world/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

