<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" gd:etag="W/&quot;CUQNSHgycSp7ImA9WhVRFk8.&quot;"><id>tag:blogger.com,1999:blog-7657267877844457605</id><updated>2012-03-24T22:09:59.699+01:00</updated><category term="png grafik platzhalter generator" /><category term="ff firefox simpleblock adblock plugin" /><category term="shy soft hyphen silbentrennung html css grid mobile smartphone agentur simon" /><category term="AHK HTML PHP" /><category term="TYPO3 CMSMS Favelet Optimierung Bookmarklet" /><category term="php css js javascript html komprimierung" /><category term="svg navigation xml data URI url" /><category term="website sicherheit checkliste" /><title>Webdesign-Blog | Bertram Simon says</title><subtitle type="html">Meine Name ist Bertram Simon und ich gehöre zur C64-Generation. Ich mag Menschen, Computer, Netzwerke und schreibe gerne. Ich bin Inhaber der &lt;a href="http://www.agentur-simon.de"&gt;Agentur Simon, einer Internetagentur in Wuppertal&lt;/a&gt;. Außerdem bin ich ein liebender Vater und verdeckter Weltverbesserer.</subtitle><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://simonwpt.blogspot.com/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://simonwpt.blogspot.com/" /><author><name>Bertram Simon</name><uri>http://www.blogger.com/profile/10879912121012499608</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>8</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/BertramSimonSays" /><feedburner:info uri="bertramsimonsays" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><geo:lat>51.2357729</geo:lat><geo:long>7.1581559</geo:long><entry gd:etag="W/&quot;CkEDQHg4fSp7ImA9Wx9UFU4.&quot;"><id>tag:blogger.com,1999:blog-7657267877844457605.post-3253933486900414354</id><published>2011-02-12T16:08:00.029+01:00</published><updated>2011-02-12T18:11:11.635+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-02-12T18:11:11.635+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="shy soft hyphen silbentrennung html css grid mobile smartphone agentur simon" /><title>Shy: Schüchtern aber wirkungsvoll</title><content type="html">&lt;div&gt;Es sind manchmal die Kleinigkeiten, die einem Webdesigner das Leben versüßen. Bei der Planung unserer neuen Firmenwebsite hatte ich mich entschieden, den neuen Internetauftritt via Media-Queries zusätzlich für Smartphones zu optimieren.&lt;/div&gt;&lt;br /&gt;&lt;div&gt;Gesagt - getan. Unser Designer hatte vor über einem Jahr bereits das Screendesign entworfen. Allerdings kamen wir aufgrund des hohen Auftragsvolumen nicht dazu, das Webdesign umzusetzen. Im nachhinein ein Glücksfall: Vor einem Jahr hätten wir nicht mit HTML5 und Media Queries gearbeitet, sondern über Auslesen des User-Agents unterschiedliche XHTML-Templates ausgegeben.&lt;/div&gt;&lt;br /&gt;&lt;div&gt;Das neue Design basiert auf einer angepassten Version des 1140px CSS Grid System. Das CSS-Framework funktioniert ähnlich wie blueprint oder 960, hat aber eine mobile Ausrichtung. Als Vertreter der Lean and Clean-Webfraktion habe ich das Framework leicht modfiziert und den Quellcode stark optimiert.&lt;/div&gt;&lt;br /&gt;&lt;div&gt;Als ich den Web-Prototypen fertiggestellt hatte, kam der inhaltliche Teil. Ich tauschte den Blindtext gegen den Originaltext aus. Alles sah auf dem ersten Blick gut aus und ich freute mich über das Ergebnis, ... bis mich unser Designer auf die unschönen Lücken des im Blocksatz gesetzten Anfangstexts aufmerksam machte. Was auf dem Desktoprechner noch akzeptabel aussah, mutierte auf Android und iPhone zur unleserlichen Sprachruine: Unser Text sah aus, als hätte man ihm die Zähne ausgeschlagen.&lt;/div&gt;&lt;br /&gt;&lt;div&gt;"Schade, dass man im Web keine Silbentrennung nutzen kann." dachte ich so bei mir und machte für einen Neandertal-HTMLer einen typischen Gedankenfehler. Mittlerweile unterstützen alle Browser das SHY-Symbol &amp;amp;shy; (&amp;amp;#173; oder &amp;amp;#xAD;) .&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;code&gt;&amp;lt;inerinnerungruf&amp;gt;&lt;br /&gt;Soft Hyphen - abgekürzt shy - ist ein Zeichen, dass bildlich mit einem identischen oder vergleichbaren grafischen Symbol zum Hyphen (-) dargestellt wird. Das Zeichen wird nur sichtbar, wenn ein Zeilenumbruch innerhalb eines Wortes - z. B. durch das Ändern der Browsergröße - erzwungen wird. Ansonsten ist es unsichtbar.&lt;br /&gt;&amp;lt;/inerinnerungruf&amp;gt;&lt;/code&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;Nun stellte sich nur noch die Frage: "Wenn alle aktuellen Browser das Soft Hyphen verstehen, gilt dies auch für die Suchmaschinen?" Tatsächlich scheinen nach meinen Recherchen auf jeden Fall Google und Bing die schüchternen Trenntexte korrekt zu erkennen. Sehr wahrscheinlich gilt dies auch für eine Reihe weiterer Suchmaschinen.&lt;/div&gt;&lt;br /&gt;&lt;div&gt;Unsere neue Startseite ist nun online und wird in allen Browsergrößen korrekt dargestellt. Ich werde in nächster Zeit ein Auge auf die Suchmaschinen-Ergebnisse haben, ob ich uns nicht ungewollt ins SEO-Off geschossen habe.&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;strong&gt;Links zum Post&lt;/strong&gt;&lt;/div&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://cssgrid.net/" target="_blank"&gt;1140px CSS Grid System&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://code.google.com/p/hyphenator/" target="_blank"&gt;hyphenator (automatic javascript solution)&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.agentur-simon.de/" target="_blank"&gt;Startseite der Agentur Simon&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;div&gt;PS Leider missbrauchen viele Spammer  das unschuldigen Zeichen zur Verschleierung ihrer prätentiösen Werbediarrhoe. Solltet ihr euch wundern, wieso trotz Badword-Liste Spam in Blogkommentaren auftreten, ist das &amp;amp;shy; vielleicht der Grund dafür.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7657267877844457605-3253933486900414354?l=simonwpt.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/BertramSimonSays/~4/dKjdejkJC4Q" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://simonwpt.blogspot.com/feeds/3253933486900414354/comments/default" title="Kommentare zum Post" /><link rel="replies" type="text/html" href="http://simonwpt.blogspot.com/2011/02/shy-schuchtern-aber-wirkungsvoll.html#comment-form" title="0 Kommentare" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7657267877844457605/posts/default/3253933486900414354?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7657267877844457605/posts/default/3253933486900414354?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/BertramSimonSays/~3/dKjdejkJC4Q/shy-schuchtern-aber-wirkungsvoll.html" title="Shy: Schüchtern aber wirkungsvoll" /><author><name>Bertram Simon</name><uri>http://www.blogger.com/profile/10879912121012499608</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://simonwpt.blogspot.com/2011/02/shy-schuchtern-aber-wirkungsvoll.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0AGRH88eip7ImA9WxFUEEg.&quot;"><id>tag:blogger.com,1999:blog-7657267877844457605.post-1234860930539131833</id><published>2010-06-20T20:37:00.002+02:00</published><updated>2010-06-20T20:48:45.172+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-06-20T20:48:45.172+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="png grafik platzhalter generator" /><title>Blitzschnell grafische Platzhalter erstellen</title><content type="html">Nachdem einige Zeit vergangen ist, möchte ich heute einen kurzen Artikel über ein Online-Tool von mir schreiben. Auf meiner Web-Spielwiese unter www.xoc.de veröffentliche ich kleine Tools, die ich selbst benötige.&lt;br /&gt;&lt;br /&gt;Ein neu veröffentlichter Liebling von mir ist &lt;a href="http://www.xoc.de/createimage.php"&gt;createimage&lt;/a&gt;. Damit kann man blitzschnell grafische Platzhalter im PNG-Format erstellen. So ein Platzhalter ist im Prinzip die grafische Variante eines  Blindtextes.&lt;br /&gt;&lt;br /&gt;Es kommt immer wieder vor, dass ich beim Prototyping schnell eine  Grafik benötige. Also habe ich &lt;a href="http://www.xoc.de/createimage.php"&gt;createimage&lt;/a&gt; entwickelt, welches ein paar Variablen wie z.B.  Größe, Farbe und Text abfragt. Nach dem Absenden wird die Grafik erstellt - schnell und schmerzfrei.&lt;br /&gt;&lt;br /&gt;Viel Vergnügen...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7657267877844457605-1234860930539131833?l=simonwpt.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/BertramSimonSays/~4/_skS7rJgXrQ" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://simonwpt.blogspot.com/feeds/1234860930539131833/comments/default" title="Kommentare zum Post" /><link rel="replies" type="text/html" href="http://simonwpt.blogspot.com/2010/06/blitzschnell-grafische-platzhalter.html#comment-form" title="0 Kommentare" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7657267877844457605/posts/default/1234860930539131833?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7657267877844457605/posts/default/1234860930539131833?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/BertramSimonSays/~3/_skS7rJgXrQ/blitzschnell-grafische-platzhalter.html" title="Blitzschnell grafische Platzhalter erstellen" /><author><name>Bertram Simon</name><uri>http://www.blogger.com/profile/10879912121012499608</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://simonwpt.blogspot.com/2010/06/blitzschnell-grafische-platzhalter.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUYHRXk4fSp7ImA9WxBWFEg.&quot;"><id>tag:blogger.com,1999:blog-7657267877844457605.post-5691522292106095318</id><published>2010-02-06T12:27:00.007+01:00</published><updated>2010-02-06T12:52:14.735+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-02-06T12:52:14.735+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="TYPO3 CMSMS Favelet Optimierung Bookmarklet" /><title>Mit Favelets die Arbeit in TYPO3 und CMSMS erleichtern</title><content type="html">Manchmal kann man sich das Leben als Webdesigner vereinfachen, merkt es aber nicht. In meiner Internetagentur betreuen wir viele TYPO3-Auftritte. Natürlich bieten wir auch andere CMS wie z.B. CMSMS (CMS made simple) an.&lt;br /&gt;&lt;br /&gt;Will man an einem Projekt arbeiten, ruft man die Seite. Dann kopiert man die URL, hängt eine /typo3/ an, um sich im Backend einzuloggen. Das sind jedes Mal fünf nervige Sekunden.&lt;br /&gt;&lt;br /&gt;Warum so kompliziert, wenn es auch einfacher geht? Zum Beispiel mit einem Favelet. Favelets sind Javascript-Snippets, die man als Lesezeichen in seinem Browser ablegt.&lt;br /&gt;&lt;br /&gt;Ich habe eine Favelet erstellt, welches beim Klicken eine neue Seite mit dem TYPO3-Login öffnet:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="javascript:t3url='http://'+this.location.host+'/typo3/';void(t3login=window.open(t3url,'_blank'));t3login.focus();"&gt;TYPO3-Login&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Einfach den Link auf die Lesezeichensymbolleiste ziehen, eine TYPO3-Seite besuchen und draufklicken. Sofort wird ein neues Fenster mit dem TYPO3 Backend geöffnet. Weil es so einfach ist, lege ich hier auch noch ein Favelet für CMSMS ab:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="javascript:cmsurl='http://'+this.location.host+'/admin/';void(cmslogin=window.open(cmsurl,'_blank'));cmslogin.focus();"&gt;CMSMS-Login&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Ich wünsche viel Spaß und eine erhöhte Produktivität;-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7657267877844457605-5691522292106095318?l=simonwpt.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/BertramSimonSays/~4/-3tyzmIrZNg" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://simonwpt.blogspot.com/feeds/5691522292106095318/comments/default" title="Kommentare zum Post" /><link rel="replies" type="text/html" href="http://simonwpt.blogspot.com/2010/02/mit-einem-favelets-die-arbeit-in-typo3.html#comment-form" title="0 Kommentare" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7657267877844457605/posts/default/5691522292106095318?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7657267877844457605/posts/default/5691522292106095318?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/BertramSimonSays/~3/-3tyzmIrZNg/mit-einem-favelets-die-arbeit-in-typo3.html" title="Mit Favelets die Arbeit in TYPO3 und CMSMS erleichtern" /><author><name>Bertram Simon</name><uri>http://www.blogger.com/profile/10879912121012499608</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://simonwpt.blogspot.com/2010/02/mit-einem-favelets-die-arbeit-in-typo3.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CU8MRXs9fSp7ImA9WxBWEUw.&quot;"><id>tag:blogger.com,1999:blog-7657267877844457605.post-926117416562562159</id><published>2010-01-31T17:55:00.023+01:00</published><updated>2010-02-02T13:31:24.565+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-02-02T13:31:24.565+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="svg navigation xml data URI url" /><title>SVG - Vektorgrafik mit Geschwindigkeitsvorteil</title><content type="html">&lt;p&gt;In einem meiner letzten Projekte musste ich Grafiken für eine vertikale Navigation erstellen. Um die Ladezeiten zu reduzieren, entschied ich mich für die &lt;a href="http://superfluousbanter.org/archives/2004/05/navigation-matrix-reloaded/"&gt;CSS-Matrix-Technik&lt;/a&gt;.  Mit dieser Technik speichert man alle Hintergrundgrafiken in einer einzelnen großen Grafik und greift per CSS auf einen Ausschnitt zu. Soweit so gut.&lt;/p&gt;&lt;p&gt;Leider war die Navigation durch ein ungewöhnliches Design sehr komplex:&lt;/p&gt;&lt;ol&gt;&lt;li&gt;Es gibt verschiedene Ebenen mit unterschiedlichen Höhen und Hintergründen.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Wenn ein Menüelement ein Unternemenü anzeigt, ändert sich die Höhe und der Hintergrund des Menüelements.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Es gibt verschiedene Zustände für ein Menüelement: normal, mouseover und selected.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Es gibt unterschiedliche Farbkennzeichnungen für einen gleichen Menütyp.&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;Ganz schön kompliziert, obwohl das Design kinderleicht aussieht. Wer sich nichts darunter vorstellen kann, kann sich gerne die Website als Beispiel ansehen: &lt;a href="http://www.phibu.de/"&gt;www.phibu.de&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Die dazugehörige background-Grafik sieht so aus:&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_MrON46Rxo6Y/S2W9duQzHKI/AAAAAAAAABY/eZ_F5Ub1-0Y/s1600-h/menu_phibu.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="104" src="http://1.bp.blogspot.com/_MrON46Rxo6Y/S2W9duQzHKI/AAAAAAAAABY/eZ_F5Ub1-0Y/s320/menu_phibu.png" width="320" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Ein Designer legt eine solche Grafik mittels Hilfslinie in Photoshop an. Als Geek programmiert man dagegen ein kleines PHP-Script, das einem die Grafik erstellt. Ursprünglich wollte ich das Bild über Imagemagick erstellen. Doch ich entschied mich aufgrund des einfachen Handlings für die Nutzung von SVG.&lt;br /&gt;SVG steht für &lt;i style="background:yellow"&gt;Scalable Vector Graphics&lt;/i&gt; und nutzt die XML-Auszeichnung für die Beschreibung von zwei-dimensionalen Vektor-Grafiken. Jeder, der HTML versteht, kann SVG für die Erstellung von Grafiken nutzen. Es ist ganz einfach. Zu erst definiert man den Doctype:&lt;/p&gt;&lt;blockquote style="font-family: monospace;"&gt;&amp;lt;!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"&amp;gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;p&gt;Dann leitet man die Grafik ein:&lt;/p&gt;&lt;blockquote style="font-family: monospace;"&gt;&amp;lt;svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:ev="http://www.w3.org/2001/xml-events" version="1.1" baseProfile="full" width="932" height="306"&amp;gt;&lt;/blockquote&gt;&lt;p&gt;Dann macht es Sinn, einen Titel und eine Beschreibung zu vergeben:&lt;/p&gt;&lt;blockquote style="font-family: monospace;"&gt;&amp;lt;title&amp;gt;phibu&amp;lt;/title&amp;gt;&lt;br /&gt;&amp;lt;desc&amp;gt;Hintergründe für Menüs erstellen&amp;lt;/desc&amp;gt;&lt;/blockquote&gt;&lt;p&gt;Nun kommt die eigentliche Beschreibung der geometrischen Figuren:&lt;/p&gt;&lt;blockquote style="font-family: monospace;"&gt;&amp;lt;!-- Hintergrundfarbe --&amp;gt;&lt;br /&gt;&amp;lt;rect x="0" y="0" width="233" height="306" fill="#fff" /&amp;gt;&lt;br /&gt;&amp;lt;!-- Dicke Balken --&amp;gt;&lt;br /&gt;&amp;lt;rect x="0" y="0" width="233" height="34" fill="#fff" /&amp;gt;&lt;br /&gt;&amp;lt;rect x="0" y="34" width="233" height="34" fill="#ede8da" /&amp;gt;&lt;br /&gt;&amp;lt;rect x="0" y="68" width="233" height="34" fill="#bcad92" /&amp;gt;&lt;br /&gt;&amp;lt;rect x="0" y="102" width="233" height="26" fill="#fff" /&amp;gt;&lt;br /&gt;&amp;lt;rect x="0" y="128" width="233" height="26" fill="#ede8da" /&amp;gt;&lt;br /&gt;&amp;lt;rect x="0" y="154" width="233" height="26" fill="#bcad92" /&amp;gt;&lt;br /&gt;&amp;lt;rect x="0" y="180" width="233" height="16" fill="#ede8da" /&amp;gt;&lt;br /&gt;&amp;lt;rect x="0" y="196" width="233" height="16" fill="#ede8da" /&amp;gt;&lt;br /&gt;&amp;lt;rect x="0" y="212" width="233" height="16" fill="#bcad92" /&amp;gt;&lt;br /&gt;&amp;lt;rect x="0" y="228" width="233" height="26" fill="#ede8da" /&amp;gt;&lt;br /&gt;&amp;lt;rect x="0" y="254" width="233" height="26" fill="#ede8da" /&amp;gt;&lt;br /&gt;&amp;lt;rect x="0" y="280" width="233" height="16" fill="#bcad92" /&amp;gt;&lt;br /&gt;&amp;lt;rect x="0" y="296" width="233" height="16" fill="#ede8da" /&amp;gt;&lt;br /&gt;&amp;lt;!-- 13px Left --&amp;gt;&lt;br /&gt;&amp;lt;rect x="0" y="0" width="13" height="306" fill="#bcad92" /&amp;gt;&lt;br /&gt;&amp;lt;!-- Trenner --&amp;gt;&lt;br /&gt;&amp;lt;rect x="0" y="0" width="233" height="1" fill="#bcad92" /&amp;gt;&lt;br /&gt;&amp;lt;rect x="0" y="32" width="233" height="2" fill="#fff" /&amp;gt;&lt;br /&gt;&amp;lt;rect x="0" y="34" width="233" height="1" fill="#bcad92" /&amp;gt;&lt;br /&gt;&amp;lt;rect x="0" y="66" width="233" height="2" fill="#fff" /&amp;gt;&lt;br /&gt;&amp;lt;rect x="0" y="100" width="233" height="2" fill="#fff" /&amp;gt;&lt;br /&gt;&amp;lt;rect x="0" y="102" width="233" height="1" fill="#bcad92" /&amp;gt;&lt;br /&gt;&amp;lt;rect x="0" y="128" width="233" height="1" fill="#bcad92" /&amp;gt;&lt;br /&gt;&amp;lt;rect x="0" y="252" width="233" height="2" fill="#fff" /&amp;gt;&lt;br /&gt;&amp;lt;rect x="0" y="278" width="233" height="2" fill="#fff" /&amp;gt;&lt;br /&gt;&amp;lt;rect x="0" y="304" width="233" height="2" fill="#fff" /&amp;gt;&lt;br /&gt;&amp;lt;!-- Pfeile --&amp;gt;&lt;br /&gt;&amp;lt;polygon points="13,199, 18,203,13,207" style="fill:#bcad92;" /&amp;gt;&lt;br /&gt;&amp;lt;polygon points="13,257, 18,261,13,265" style="fill:#bcad92;" /&amp;gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;p&gt;Und zum Schluss sollte man das schließende Tag nicht vergessen:&lt;/p&gt;&lt;blockquote style="font-family: monospace;"&gt;&amp;lt;/svg&amp;gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;p&gt;Um ehrlich zu sein, habe ich nur die erste Spalte erstellt und dann in &lt;i style="background:yellow"&gt;PHP&lt;/i&gt; mit &lt;i style="background:yellow"&gt;sprintf()&lt;/i&gt; und einer &lt;i style="background:yellow"&gt;array&lt;/i&gt;-Schleife die gesamte Grafik erstellt. Das ging recht schnell und zeigt auch den Vorteil dieser Technik.&lt;/p&gt;&lt;p&gt;Am liebsten hätte ich die SVG-Grafik direkt im CSS benutzt. Leider kann der IE bis heute kein SVG interpretieren (es seie denn, man installiert ein Adobe-Plugin). Daher habe ich die Grafik als &lt;i style="background:yellow"&gt;PNG&lt;/i&gt; gespeichert. Firefox, Chrome, Safari und Opera haben zum Glück keine Probleme mit SVG.&lt;/p&gt;&lt;p&gt;&lt;span style="font-weight:bold;"&gt;Die schnellste Möglichkeit, eine SVG-Grafik in ein anderes Grafik-Format zu konvertieren:&lt;/span&gt; In Opera (dem besten Browser der Welt) kann man mit der rechten Maus-Taste eine SVG-Grafik in die Zwischenablage kopieren und dann in einem beliebigen Grafikprogramm einfügen und im gewünschten Format speichern. Ich habe keine Möglichkeit gefunden, die SVG-Grafik schneller zu konvertieren:-P&lt;/p&gt;&lt;p&gt;Ich empfehle allen Interessierten folgende Links:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://svg.tutorial.aptico.de/start.php"&gt;SVG Tutorial [de]&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://www.selfsvg.info/"&gt;SelfSVG [de]&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://www.datenverdrahten.de/svglbc/"&gt;Daten verdrahten [de]&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://hoffmann.bplaced.net/hilfe.php?me=svg&amp;amp;in=svgkurven&amp;amp;stil=a"&gt;Dr. O. Hoffmann [de]&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="https://developer.mozilla.org/en/SVG/"&gt;Mozilla SVG [en]&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://de.wikipedia.org/wiki/Scalable_Vector_Graphics"&gt;Wikipedia - SVG[de]&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://www.scale-a-vector.de/"&gt;Scale-a-Vector [de/en]&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Einige weitergehende Möglichkeiten mit SVG:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.themaninblue.com/experiment/Blobular/"&gt;Blobular&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://raphaeljs.com/"&gt;Raphaël—JavaScript Library&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://bluff.jcoglan.com/"&gt;Bluff - Beautiful graphs in JavaScript&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://svg-edit.googlecode.com/"&gt; svg-edit - a complete vector graphics editor in the browser &lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://wiki.svg.org/SVG_and_PHP"&gt;SVG_and_PHP&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Für die Zukunft sollte man SVG und das &lt;i style="background:yellow"&gt;data URI&lt;/i&gt; Schema im Auge behalten. Mit der data-URL-Technik kann man Daten wie z.B. eine SVG-Grafik direkt im HTML-Code verankern. Leider sammelt der Internet Explorer auch hier wieder Minuspunkte. Erst der IE8 unterstützt data-URI und dann auch nur bis 32kB:-P&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://de.wikipedia.org/wiki/Data-URL"&gt;Wikipedia - Data URL [de]&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://tools.larskleinschmidt.de/dataurl"&gt;Data-URL Generator von Lars Kleinschmidt [de]&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7657267877844457605-926117416562562159?l=simonwpt.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/BertramSimonSays/~4/x7KXHps6FwY" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://simonwpt.blogspot.com/feeds/926117416562562159/comments/default" title="Kommentare zum Post" /><link rel="replies" type="text/html" href="http://simonwpt.blogspot.com/2010/01/svg-vektorgrafik-mit.html#comment-form" title="0 Kommentare" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7657267877844457605/posts/default/926117416562562159?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7657267877844457605/posts/default/926117416562562159?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/BertramSimonSays/~3/x7KXHps6FwY/svg-vektorgrafik-mit.html" title="SVG - Vektorgrafik mit Geschwindigkeitsvorteil" /><author><name>Bertram Simon</name><uri>http://www.blogger.com/profile/10879912121012499608</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/_MrON46Rxo6Y/S2W9duQzHKI/AAAAAAAAABY/eZ_F5Ub1-0Y/s72-c/menu_phibu.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://simonwpt.blogspot.com/2010/01/svg-vektorgrafik-mit.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEECR3g-cCp7ImA9WxBQF0k.&quot;"><id>tag:blogger.com,1999:blog-7657267877844457605.post-8810054611922908647</id><published>2010-01-17T16:26:00.018+01:00</published><updated>2010-01-17T16:37:46.658+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-01-17T16:37:46.658+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="php css js javascript html komprimierung" /><title>Komprimierung von statischen Dateien mit PHP</title><content type="html">In dem heutige Artikel schreibe ich über die Möglichkeit, die Komprimierung von statischen Dateien durch PHP zu realisieren. Ob diese Lösung sinnvoll ist, muss jeder selbst entscheiden.&lt;br /&gt;
&lt;br /&gt;
Fangen wir zu erst mit der technischen Umsetzung an. Wenn wir PHP-Anweisungen in CSS-, Javascript- oder HTML-Dateien ausführen wollen, können wir dies sehr einfach über .htaccess-Anweisungen tun:&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote style="font-family: monospace;"&gt;AddHandler application/x-httpd-php .css&lt;br /&gt;
AddHandler application/x-httpd-php .js&lt;br /&gt;
AddHandler application/x-httpd-php .htm .html&lt;br /&gt;
php_flag zlib.output_compression on&lt;br /&gt;
php_value zlib.output_compression_level 9&lt;br /&gt;
auto_prepend_file = "pre.php"&lt;br /&gt;
short_open_tag = 0&lt;br /&gt;
&lt;/blockquote&gt;&lt;br /&gt;
Die AddHandler-Anweisungen bewirken, dass alle Dateien mit der Endung .css, .js, .htm oder .html durch den PHP-Interpreter gejagt werden. Mit der vierten Zeile schalten wir die Komprimierung für die Ausgabe ein und mit der fünften Zeile wird die Ausgabe maximal komprimiert. In der sechsten Zeile wird die Ausgabe durch die pre.php gejagt. Diese Angabe nutzen wir, um den richtigen Header zu setzen. Die siebte Zeile verhindert, dass z.B. XML-Angaben (&amp;lt;?xml) fälschlicherweise als PHP-Angabe interpretiert werden.&lt;br /&gt;
&lt;br /&gt;
Die Datei pre.php könnte wie folgt aussehen:&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote style="font-family: monospace;"&gt;&amp;lt;php&lt;br /&gt;
$path = pathinfo($_SERVER['SCRIPT_NAME']);  &lt;br /&gt;
&lt;br /&gt;
if ($path['extension'] == 'css')  {  &lt;br /&gt;
header('Content-type: text/css');&lt;br /&gt;
}  &lt;br /&gt;
&lt;br /&gt;
if ($path['extension'] == 'js')  {  &lt;br /&gt;
header('Content-type: application/x-javascript');  &lt;br /&gt;
} &lt;br /&gt;
&lt;br /&gt;
if ($path['extension'] == 'htm' || $path['extension'] == 'html')  {  &lt;br /&gt;
header('Content-type: text/html');&lt;br /&gt;
} &lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;/blockquote&gt;&lt;br /&gt;
Mit diesen wenigen Handgriffen werden nun alle CSS-, Javascript- oder HTML-Dateien komprimiert ausgegeben. Eine ideale Lösung, wenn der Hoster die Anweisungen mod_gzip_on oder mod_deflate in der .htaccess nicht erlaubt.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Ich möchte zum Schluss noch einige Hinweise geben:&lt;/b&gt; &lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Komprimierung macht wenig Sinn, wenn die Dateien klein sind. Man sollte daher z.B. mehrere CSS-Dateien (oder Javascript) zu einer Datei verschmelzen.&lt;/li&gt;
&lt;li&gt;Man sollte das Ergebnis immer sinnvoll cachen, um den Server nicht mit überflüssiger Komprimierung zu belasten.&lt;/li&gt;
&lt;li&gt;Der IE6 kann komprimierte Dateien nicht im Cache halten.&lt;/li&gt;
&lt;li&gt;Man kann dynamisches CSS (z.B. Hintergrundbild nach Uhrzeit oder Herkunft setzen) sehr leicht mit PHP realisieren. Das führt allerdings bei stark frequentierten Sites zu hoher Systemlast, weil diese Ergebnisse nicht gecacht werden sollten. &lt;/li&gt;
&lt;li&gt;Man sollte die Komprimierung aus Sicherheitsgründen auf bestimmte Verzeichnisse (z.B. /css/ oder /js/) beschränken.&lt;/li&gt;
&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7657267877844457605-8810054611922908647?l=simonwpt.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/BertramSimonSays/~4/jqPXsD6S4Q8" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://simonwpt.blogspot.com/feeds/8810054611922908647/comments/default" title="Kommentare zum Post" /><link rel="replies" type="text/html" href="http://simonwpt.blogspot.com/2010/01/komprimierung-von-statischen-dateien.html#comment-form" title="0 Kommentare" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7657267877844457605/posts/default/8810054611922908647?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7657267877844457605/posts/default/8810054611922908647?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/BertramSimonSays/~3/jqPXsD6S4Q8/komprimierung-von-statischen-dateien.html" title="Komprimierung von statischen Dateien mit PHP" /><author><name>Bertram Simon</name><uri>http://www.blogger.com/profile/10879912121012499608</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://simonwpt.blogspot.com/2010/01/komprimierung-von-statischen-dateien.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUEDQHc7fip7ImA9WxBRFU8.&quot;"><id>tag:blogger.com,1999:blog-7657267877844457605.post-1414691210303202331</id><published>2010-01-03T14:47:00.005+01:00</published><updated>2010-01-03T15:07:51.906+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-01-03T15:07:51.906+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="website sicherheit checkliste" /><title>Wie man seine Website vor Schurken schützt</title><content type="html">Als Neuling freut man sich, wenn die Websitestatistik sehr viele Besucher am Tag ausspuckt. Ein Profi wittert dagegen sofort Ärger. In der Tat sind die meisten Einträge auf einer Website oft keine erwünschten, menschlichen Besucher, sondern automatisierte Datensammler und Hackerprogramme von Schurken.&lt;br /&gt;
&lt;br /&gt;
Solche Schädlinge verursachen in vielfältiger Weise einen Schaden für den Betreiber einer Website:&lt;br /&gt;
&lt;br /&gt;
&lt;ol type="a"&gt;&lt;li&gt;Es werden automatisiert Daten ausgelesen und für unerwünschte Zwecke missbraucht. Das bekannteste Beispiel ist das Sammeln von Mail-Adressen von Spammern.&lt;/li&gt;
&lt;li&gt;Die komplette Website wird kopiert und für betrügerische Absichten missbraucht. Besonders betroffen sind Shopbesitzer. Schurken kopieren einen Shop und nehmen das Geld für Bestellungen an, ohne die Ware zu liefern. Die geprellten Kunden wenden sich erbost an den nichts ahnenden Shopbetreiber und leiten rechtliche Schritte ein.&lt;/li&gt;
&lt;li&gt;Es wird auf der Website gezielt nach Schwachstellen gesucht. Diese sogenannten Exploits werden in vielfältiger Weise von den Schurken genutzt. Auf kommerziellen Sites (Shops, Banken, Telekom usw.) werden z. B. Adress- und Bankdaten ausgespäht und später missbraucht. Oft werden gekaperte Websites in Zombies verwandelt und führen im Auftrag der Schurken Schadaktionen aus. Eine Armee von Zombiehostings kann durch permanente Abfragen einen Webserver stilllegen. Diese Angriffe nennt man DDOS - Denial of Service.&lt;/li&gt;
&lt;li&gt;Es werden Inhalte wie Texte, Bilder und Dokumente kopiert. Der Schurke integriert die Inhalte auf seiner eigenen Website. Der Websitebetreiber verliert Kunden und hat Einbußen im Pageranking.&lt;/li&gt;
&lt;li&gt;Man kann seine Webstatistiken nicht mehr zur Analyse und Marketingplanung verwenden, weil die Daten fehlerhaft sind.&lt;/li&gt;
&lt;/ol&gt;&lt;br /&gt;
Was kann man tun, um sich vor diesen Problemen zu schützen? Es gibt einfache Regeln zur Bekämpfung von Schurken, die ich als Checkliste mit Verlinkung zu hilfreichen Sites präsentieren möchte:&lt;br /&gt;
&lt;br /&gt;
&lt;ul type="square"&gt;&lt;li&gt;Halte deine Anwendung (CMS, Shop, Blog oder andere Anwendungen zuzüglich der Plugins und Erweiterungen) auf den aktuellen Stand.&lt;/li&gt;
&lt;li&gt;Programmiere deine Programmierung sicher:&lt;br /&gt;
&lt;ul type="square"&gt;&lt;li&gt;&lt;a href="http://www.tu-chemnitz.de/urz/www/php/rsrc/phpsec.pdf" target="_blank"&gt;PDF: PHP Security&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://google.wikia.com/wiki/Google_Hacks" target="_blank"&gt;Site: Google Hacks&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://xoc.de/html2javascript.php" target="_blank"&gt;Site: Sensible Informationen (z.B. E-Mails, Adressen, Bankdaten) via Javascript verschlüsseln&lt;/a&gt;&lt;br /&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;Schurken mit .htaccess blocken:&lt;br /&gt;
&lt;ul type="square"&gt;&lt;li&gt;&lt;a href="http://www.askapache.com/htaccess/blocking-bad-bots-and-scrapers-with-htaccess.html" target="_blank"&gt;Site: Blocking Bad Bots and Scrapers with .htaccess&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://perishablepress.com/press/2009/03/16/the-perishable-press-4g-blacklist/" target="_blank"&gt;Site: The Perishable Press 4G Blacklist&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.ipaddresslocation.org/ip_ranges/get_ranges.php" target="_blank"&gt;Site: IP Address Range Lookup&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.proxyserverprivacy.com/ipaddress_range.php" target="_blank"&gt;Site: IP Address Range - Proxy Ranges&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;Halte die Augen offen und reagiere schnell:&lt;br /&gt;
&lt;ul type="square"&gt;&lt;li&gt;&lt;a href="http://toscho.de/2009/htaccess-angriffe-sehen-blockieren/" target="_blank"&gt;.htaccess: Angriffe sehen und blockieren&lt;/a&gt;&lt;br /&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
Bei meinen Untersuchungen habe ich festgestellt, dass sich sehr viele Spider an einer simplen Umleitung die Zähne ausbeissen. Meine berufliche Website leitet z.B. von der Startseite permanent auf eine Unterseite weiter:&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote style="font-family:monospace;"&gt;www.domain.de/&lt;br /&gt;
301 -&gt; www.domain.de/de/&lt;br /&gt;
&lt;/blockquote&gt;&lt;br /&gt;
Da ich auf der Website mit relativen Links arbeite, versuchen die schlecht programmierten Spider im root-Verzeichnis anstatt im de-Verzeichnis alle Seiten zu öffnen. Intelligente Spider wie z. B. die von Google, Bing oder !Yahoo indizieren dagegen alle Inhalte korrekt:-)&lt;br /&gt;
&lt;br /&gt;
Wer alle Tipps beherzigt, wird weniger - aber dafür gewollten Traffic auf seiner Website haben. Das bedeutet deutlich mehr Sicherheit vor Schurken und mehr Planungssicherheit beim Internetmarketing.&lt;br /&gt;
&lt;br /&gt;
PS Beim Blocken via &lt;span style="background-color: yellow; font-family:monospace;"&gt;.htaccess&lt;/span&gt; sollte man Vorsicht walten lassen, um nicht aus Versehen erwünschte Besucher zu blockieren.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7657267877844457605-1414691210303202331?l=simonwpt.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/BertramSimonSays/~4/8Y5Z0flOEM4" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://simonwpt.blogspot.com/feeds/1414691210303202331/comments/default" title="Kommentare zum Post" /><link rel="replies" type="text/html" href="http://simonwpt.blogspot.com/2010/01/wie-man-seine-website-vor-schurken.html#comment-form" title="0 Kommentare" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7657267877844457605/posts/default/1414691210303202331?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7657267877844457605/posts/default/1414691210303202331?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/BertramSimonSays/~3/8Y5Z0flOEM4/wie-man-seine-website-vor-schurken.html" title="Wie man seine Website vor Schurken schützt" /><author><name>Bertram Simon</name><uri>http://www.blogger.com/profile/10879912121012499608</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://simonwpt.blogspot.com/2010/01/wie-man-seine-website-vor-schurken.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Dk8NQ3kzcCp7ImA9WxBSF0g.&quot;"><id>tag:blogger.com,1999:blog-7657267877844457605.post-8182238663756998442</id><published>2009-12-25T16:11:00.004+01:00</published><updated>2009-12-25T16:28:12.788+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-12-25T16:28:12.788+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="ff firefox simpleblock adblock plugin" /><title>SimpleBlock, das unterbewertete Firefox-Plugin</title><content type="html">Allen anderen Browsern zum Trotz kann ich einfach nicht ohne Firefox leben. Am liebsten würde ich mit Opera arbeiten, aber leider kommt TYPO3 nicht mit dem norwegischen Wunderbrowser klar. Obwohl ich Firefox toll finde, stört mich im Vergleich zu anderen Browsern der gefrässige Speicherverbrauch. Bei der Arbeit komme ich teilweise auf 250 MB Speicherbelegung. Da können Chrome, Opera und Safari in Sachen Speicherauslastung und Geschwindigkeit deutlich punkten.&lt;br /&gt;
&lt;br /&gt;
Auf der Suche nach einer Möglichkeit, den Speicherhunger von Firefox wenigstens etwas zu reduzieren, bin ich über &lt;a href="https://addons.mozilla.org/en-US/firefox/addon/11879" target="_blank"&gt;SimpleBlock&lt;/a&gt; gestolpert. Mir ist bei Speichercheck aufgefallen, dass fast alle Lösungen zum Blockieren von Online-Werbung und Trackern echte Speicherdiebe sind. Dabei ist es egal, ob man mit Plugins wie z. B. &lt;a href="https://addons.mozilla.org/de/firefox/addon/1865" target="_blank"&gt;Adblock Plus&lt;/a&gt; oder externen Lösungen wie z. B. &lt;a href="http://www.privoxy.org/" target="_blank"&gt;Privoxy&lt;/a&gt; arbeitet.&lt;br /&gt;
&lt;br /&gt;
&lt;a href="https://addons.mozilla.org/en-US/firefox/addon/11879" target="_blank"&gt;SimpleBlock&lt;/a&gt; ist ein sehr kleines Plugin. Es blockiert Webseiten und verzichtet dabei auf jeglichen Schickschnack. Nach der Installation öffnet man den zu nutzenden &lt;a href="http://www.firefox-browser.de/wiki/Profilordner#Wo_finde_ich_meinen_Profilordner.3F" target="_blank"&gt;Profilordner&lt;/a&gt; und legt eine Textdatei namens SimpleBlock.ini an. Damit ist der einfache Teil der Arbeit abgeschlossen. &lt;br /&gt;
&lt;br /&gt;
Die Anpassung des Plugins ist ebenfalls einfach, allerdings etwas zeitaufwendiger. &lt;a href="https://addons.mozilla.org/en-US/firefox/addon/11879" target="_blank"&gt;SimpleBlock&lt;/a&gt; liest zeilenweise alle Anweisungen in der SimpleBlock.ini ein und überprüft alle Links einer Seite auf Übereinstimmung. Bei einem Treffer wird der Link einfach nicht geladen. Die Anweisungen können aus Fragmenten einer URL bestehen. Man kann aber auch mit Regular Expressions arbeiten.&lt;br /&gt;
&lt;br /&gt;
Ein gutes Beispiel für das Blockieren von Links sind die ungeliebten Google AdSense Werbungen. Diese werden auf Websites über den Link &lt;span style="font-family:monospace;"&gt;http://pagead1.googlesyndication.com/pagead/show_ads.js&lt;/span&gt; oder &lt;span style="font-family:monospace;"&gt;http://pagead2.googlesyndication.com/pagead/show_ads.js&lt;/span&gt; eingebunden.&lt;br /&gt;
&lt;br /&gt;
Man kann diese Anzeigen auf unterschiedliche Weise blockieren:&lt;br /&gt;
&lt;blockquote style="font-family:monospace;"&gt;//pagead&lt;br /&gt;
.googlesyndication.com/&lt;br /&gt;
/pagead/&lt;br /&gt;
show_ads.js&lt;br /&gt;
&lt;/blockquote&gt;&lt;br /&gt;
Jede dieser Anweisungen würde in der AdSense-Url gefunden und blockiert. Man kann mit wenig Aufwand sehr viel Werbung wie folgt ausfiltern:&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote style="font-family:monospace;"&gt;//ad.&lt;br /&gt;
//ads.&lt;br /&gt;
//adserv&lt;br /&gt;
/ad/&lt;br /&gt;
/ads/&lt;br /&gt;
adclient&lt;br /&gt;
adfarm&lt;br /&gt;
adinterax&lt;br /&gt;
adserv&lt;br /&gt;
adtags&lt;br /&gt;
adtech&lt;br /&gt;
&lt;/blockquote&gt;&lt;br /&gt;
Sehr viel Werbungen haben diese Fragmente im Pfad. Wer sich nun fragt, warum ich nicht einfach &lt;span style="background:yellow;"&gt;ad&lt;/span&gt; und &lt;span style="background:yellow;"&gt;ads&lt;/span&gt; in einer Zeile gesetzt habe. Der Grund ist simple: Viele Websites nutzen Daten-Verzeichnisse namens uplo&lt;span style="background:yellow;"&gt;ad&lt;/span&gt; oder uplo&lt;span style="background:yellow;"&gt;ads&lt;/span&gt;. SimpleBlock würde alle Dateien wie z.B. Bilder, Videos, Animationen und Downloads aus diesen Verzeichnissen blockieren.&lt;br /&gt;
&lt;br /&gt;
Aber nicht nur Werbung kann man mit &lt;a href="https://addons.mozilla.org/en-US/firefox/addon/11879" target="_blank"&gt;SimpleBlock&lt;/a&gt; löschen. Auch sogenannte Tracker - also Scripte, die ungefragt Informationen über den Nutzer und sein Verhalten weitergeben - kann man blockieren und sorgt damit für die eigene Sicherheit. Ein Bespiel für die Filterung von Trackern sieht so aus:&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote style="font-family:monospace;"&gt;.google-analytics.com&lt;br /&gt;
.hitslink.com&lt;br /&gt;
.ivwbox.de&lt;br /&gt;
.sitemeter.com&lt;br /&gt;
.statcounter.com&lt;br /&gt;
&lt;/blockquote&gt;&lt;br /&gt;
Ebenso leicht kann man nervige MouseOver-Werbungen wie z.B. die von &lt;a href="http://www.vibrantmedia.com/whatisIntelliTXT.asp?cc=de" target="_blank"&gt;IntelliTXT&lt;/a&gt; und &lt;a href="http://www.kontera.com" target="_blank"&gt;Kontera&lt;/a&gt; blockieren:&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote style="font-family:monospace;"&gt;intellitxt.com&lt;br /&gt;
kontera.com&lt;br /&gt;
vibrantmedia.com&lt;br /&gt;
&lt;/blockquote&gt;&lt;br /&gt;
Wer bei der Blockierung mehr differenzieren möchte, kann Regular Expressions benutzen. Mit einem führenden &lt;i&gt;R:&lt;/i&gt; wird eine RegEx eingeleitet. Eine Expression kann sehr nützlich sein, wenn die Werbung auf dem gleichen Server gehostet wird. Das nachfolgende Beispiel blockiert alle Flash-Dateien, die in einem Verzeichnis namens &lt;i&gt;banner&lt;/i&gt; gehostet werden:&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote style="font-family:monospace;"&gt;R: /banner/.+.swf&lt;br /&gt;
&lt;/blockquote&gt;&lt;br /&gt;
&lt;strong&gt;Fazit&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
Wer Webseiten schneller laden möchte, die Weitergaben von persönlichen Daten unterbinden möchte oder einfach kein Interesse an nerviger Werbung hat, benötigt einen guten Filtermechanismus. Ein Problem bei vielen Lösungen ist der wachsende Speicherhunger. Mit &lt;a href="https://addons.mozilla.org/en-US/firefox/addon/11879" target="_blank"&gt;SimpleBlock&lt;/a&gt; habe ich ich für mich eine Lösung gefunden, die den Speicherverbrauch niedrig hält und trotzdem sehr flexibel ist. &lt;br /&gt;
&lt;br /&gt;
Wer wenig Zeit zur Umsetzung eigener Regeln hat und fertige Regeln sucht: Man kann mit wenig Aufwand die Listen von &lt;a href="http://easylist.adblockplus.org/" target="_blank"&gt;AdBlock Plus&lt;/a&gt; oder &lt;a href="http://www.fanboy.co.nz/adblock/opera/" target="_blank"&gt;Fanboy urlfilter.ini&lt;/a&gt; umarbeiten.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7657267877844457605-8182238663756998442?l=simonwpt.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/BertramSimonSays/~4/5G8IJluJJxs" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://simonwpt.blogspot.com/feeds/8182238663756998442/comments/default" title="Kommentare zum Post" /><link rel="replies" type="text/html" href="http://simonwpt.blogspot.com/2009/12/simpleblock-das-unterbewertete-firefox.html#comment-form" title="0 Kommentare" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7657267877844457605/posts/default/8182238663756998442?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7657267877844457605/posts/default/8182238663756998442?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/BertramSimonSays/~3/5G8IJluJJxs/simpleblock-das-unterbewertete-firefox.html" title="SimpleBlock, das unterbewertete Firefox-Plugin" /><author><name>Bertram Simon</name><uri>http://www.blogger.com/profile/10879912121012499608</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://simonwpt.blogspot.com/2009/12/simpleblock-das-unterbewertete-firefox.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0YBQnk9fCp7ImA9WxBSEUk.&quot;"><id>tag:blogger.com,1999:blog-7657267877844457605.post-4794839178550787920</id><published>2009-12-18T14:48:00.012+01:00</published><updated>2009-12-18T15:05:53.764+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-12-18T15:05:53.764+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="AHK HTML PHP" /><title>Schneller arbeiten durch Ersetzungen mit AutoHotKey</title><content type="html">Unter Windows gibt es ein großartiges Tool namens &lt;a href="http://de.autohotkey.com/" target="blank"&gt;AutoHotKey Website kurz AHK&lt;/a&gt; genannt. AHK ist im Prinzip eine kleine OpenSource Programmsprache, mit welcher man mächtige Skripte zur Automatisierung von Ein- und Ausgaben schreiben kann.&lt;br /&gt;
&lt;br /&gt;
Im ersten Teil möchte ich das Ersetzen von Texten vorstellen. Die Installation ist schnell vollzogen, einfach die &lt;a href="http://www.autohotkey.com/download/" target="blank"&gt;aktuelle Version von AHK&lt;/a&gt; herunterladen und das Setup ausführen.&lt;br /&gt;
&lt;br /&gt;
In Web-Projekte wiederholen sich immer wieder bestimmte Code-Fragmente. Typische Beispiele sind Blindtexte, Platzhalter für Menüs, Aufzählungen aber auch Programmcode wie For-Next-Schleifen, Switch-Abfragen usw.&lt;br /&gt;
&lt;br /&gt;
Mit AHK kann man sehr einfach Vorlagen gestalten, welche später beim Tippen eines Kürzels eingefügt werden. Hier ein kleines Beispiel:&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote style="font-family:monospace;"&gt;:o:#bt::&lt;br /&gt;
clipboard=Ich bin ein Blindtext!&lt;br /&gt;
Send ^v&lt;br /&gt;
return&lt;br /&gt;
&lt;/blockquote&gt;&lt;br /&gt;
Sobald wir ein &lt;span style="background-color: yellow; font-family:monospace;"&gt;#bt&lt;/span&gt; tippen, wird &lt;span style="background-color: yellow; font-family:monospace;"&gt;#bt&lt;/span&gt; durch &lt;span style="background-color: yellow; font-family:monospace;"&gt;Ich bin ein Blindtext!&lt;/span&gt; ersetzt.Schauen wir uns den Code näher an. Normalweise wird ein Replacment mit &lt;span style="background-color: yellow; font-family:monospace;"&gt;::&lt;/span&gt; eingeleitet. Im Beispiel nutze ich zusätzlich die Option &lt;span style="background-color: yellow; font-family:monospace;"&gt;o&lt;/span&gt;. Damit wird das Endzeichen wiedergelöscht.&lt;br /&gt;
&lt;br /&gt;
Was ist ein Endzeichen? Stellen wir uns vor, wir hätten zwei Textersetzungen: &lt;span style="background-color: yellow; font-family:monospace;"&gt;#bt&lt;/span&gt; und &lt;span style="background-color: yellow; font-family:monospace;"&gt;#btx&lt;/span&gt; Ohne ein End- oder Abschlusszeichen könnten wir nie &lt;span style="background-color: yellow; font-family:monospace;"&gt;#btx&lt;/span&gt; eintippen, weil vor der Eingabe des x die Ersetzung von &lt;span style="background-color: yellow; font-family:monospace;"&gt;#bt&lt;/span&gt; aktiv würde. Die Endzeichen sind neben dem Leerzeichen: &lt;span style="background-color: yellow; font-family: monospace;"&gt;-()[]{}:;'"/\,.?!`n `t&lt;/span&gt;. Man kann aber auch andere Endzeichen in AHK definieren.&lt;br /&gt;
&lt;br /&gt;
Ich habe festgestellt, dass abschließende Endzeichen meinen Schreibfluss stören und ausbremsen. Nehmen wir an: &lt;span style="background-color: yellow; font-family:monospace;"&gt;#w&lt;/span&gt; steht für &lt;span style="background-color: yellow; font-family:monospace;"&gt;Wuppertal&lt;/span&gt; und ich wollte &lt;span style="background-color: yellow; font-family:monospace;"&gt;Wuppertaler Schwebebahn&lt;/span&gt; schreiben. Würde ich das Endzeichen nicht automatisch unterdrücken, würde ich Wuppertal er Schwebebahn schreiben. Also müsste ich manuell das Leerzeichen löschen. Mit &lt;span style="background-color: yellow; font-family:monospace;"&gt;:o:&lt;/span&gt; unterdrückt man die Endzeichen.&lt;br /&gt;
&lt;br /&gt;
Zurück zum Beispiel: Mit &lt;span style="background-color: yellow; font-family:monospace;"&gt;:o:#bt::&lt;/span&gt; definiere ich das Kürzel &lt;span style="background-color: yellow; font-family:monospace;"&gt;#bt&lt;/span&gt; welches ohne das Endzeichen ersetzt werden soll. In AHK gibt es unterschiedliche &lt;span style="background-color: yellow; font-family:monospace;"&gt;&lt;a href="http://www.autohotkey.com/docs/commands/Send.htm" target="_blank"&gt;Send&lt;/a&gt;&lt;/span&gt;-Methoden, die alle einen großen Nachteil haben: Sie sind sehr sehr langsam. Daher nutze ich in meinem Beispiel die Zwischenablage. Mit &lt;span style="background-color: yellow; font-family:monospace;"&gt;clipboard=Ich bin ein Blindtext!&lt;/span&gt; fülle ich die Zwischenablage mit dem Blindtext, mit &lt;span style="background-color: yellow; font-family:monospace;"&gt;Send ^v&lt;/span&gt; füge ich die Zwischenablage im aktuellen Dokument ein und mit &lt;span style="background-color: yellow; font-family:monospace;"&gt;return&lt;/span&gt; sage ich AHK, dass unsere Textersetzung beendet ist.&lt;br /&gt;
&lt;br /&gt;
Nachfolgend liste ich Beispiele für Blindtext-Ersetzungen im HTML-Bereich auf:&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote style="font-family:monospace;"&gt;:o:#p1::&lt;br /&gt;
clipboard=&amp;lt;p&amp;gt;facilisis enim ultricies condimentum, erat facilisis. tempor porttitor, placerat et enim augue, eros amet, Mauris vitae, dui Vestibulum eu sed, wisi, Aliquam est ullamcorper mi, tincidunt ornare accumsan et malesuada sit egestas. senectus eget, luctus, wisi. ac erat Donec dui. turpis feugiat non pulvinar in faucibus, lacus vitae fermentum, erat. amet, sit condimentum habitant fames sit eleifend neque egestas Vestibulum dapibus, neque libero eros semper. eu quis, felis. commodo amet pharetra. tristique tempus amet est. Pellentesque tortor cursus sagittis Ut ante. Nam magna netus vulputate id sit ipsum eu quam, metus vitae, elit tincidunt Aenean eget leo. ac orci, rutrum mi et tortor turpis egestas Quisque Praesent quam sapien Aenean volutpat. Donec morbi ultricies &amp;lt;/p&amp;gt;\n&lt;br /&gt;
Send ^v&lt;br /&gt;
return&lt;br /&gt;
&lt;br /&gt;
:o:#p2::&lt;br /&gt;
clipboard=&amp;lt;p&amp;gt;semper. libero placerat egestas. ante. et Aenean tempor habitant ac amet, Pellentesque feugiat egestas tortor ultricies mi morbi quam, est. Mauris Vestibulum quam malesuada sit vitae leo. vitae, et tristique fames eu ultricies Donec eleifend sit netus turpis senectus eget, amet &amp;lt;/p&amp;gt;&lt;br /&gt;
Send ^v&lt;br /&gt;
return&lt;br /&gt;
&lt;br /&gt;
:o:#p3::&lt;br /&gt;
clipboard=&amp;lt;p&amp;gt;habitant et Pellentesque malesuada senectus morbi netus et turpis egestas. fames ac tristique &amp;lt;/p&amp;gt;&lt;br /&gt;
Send ^v&lt;br /&gt;
return&lt;br /&gt;
&lt;br /&gt;
:o:#u1::&lt;br /&gt;
clipboard=&amp;lt;ul&amp;gt;\n&amp;lt;li&amp;gt;Lorem ipsum dolor sit amet, consectetuer adipiscing elit.&amp;lt;/li&amp;gt;\n&amp;lt;li&amp;gt;Aliquam tincidunt mauris eu risus.&amp;lt;/li&amp;gt;\n&amp;lt;li&amp;gt;Vestibulum auctor dapibus neque.&amp;lt;/li&amp;gt;\n&amp;lt;/ul&amp;gt;\n&lt;br /&gt;
Send ^v&lt;br /&gt;
return&lt;br /&gt;
&lt;br /&gt;
:o:#u2::&lt;br /&gt;
clipboard=&amp;lt;ul&amp;gt;\n&amp;lt;li&amp;gt;Morbi in sem quis dui placerat ornare. Pellentesque odio nisi, euismod in, pharetra a, ultricies in, diam. Sed arcu. Cras consequat.&amp;lt;/li&amp;gt;\n&amp;lt;li&amp;gt;Praesent dapibus, neque id cursus faucibus, tortor neque egestas augue, eu vulputate magna eros eu erat. Aliquam erat volutpat. Nam dui mi, tincidunt quis, accumsan porttitor, facilisis luctus, metus.&amp;lt;/li&amp;gt;\n&amp;lt;li&amp;gt;Phasellus ultrices nulla quis nibh. Quisque a lectus. Donec consectetuer ligula vulputate sem tristique cursus. Nam nulla quam, gravida non, commodo a, sodales sit amet, nisi.&amp;lt;/li&amp;gt;\n&amp;lt;li&amp;gt;Pellentesque fermentum dolor. Aliquam quam lectus, facilisis auctor, ultrices ut, elementum vulputate, nunc.&amp;lt;/li&amp;gt;\n&amp;lt;/ul&amp;gt;\n&lt;br /&gt;
Send ^v&lt;br /&gt;
return&lt;br /&gt;
&lt;br /&gt;
:o:#o1::&lt;br /&gt;
clipboard=&amp;lt;ol&amp;gt;\n&amp;lt;li&amp;gt;Lorem ipsum dolor sit amet, consectetuer adipiscing elit.&amp;lt;/li&amp;gt;\n&amp;lt;li&amp;gt;Aliquam tincidunt mauris eu risus.&amp;lt;/li&amp;gt;\n&amp;lt;li&amp;gt;Vestibulum auctor dapibus neque.&amp;lt;/li&amp;gt;\n&amp;lt;/ol&amp;gt;\n&lt;br /&gt;
Send ^v&lt;br /&gt;
return&lt;br /&gt;
&lt;br /&gt;
:o:#o2::&lt;br /&gt;
clipboard=&amp;lt;ol&amp;gt;\n&amp;lt;li&amp;gt;Morbi in sem quis dui placerat ornare. Pellentesque odio nisi, euismod in, pharetra a, ultricies in, diam. Sed arcu. Cras consequat.&amp;lt;/li&amp;gt;\n&amp;lt;li&amp;gt;Praesent dapibus, neque id cursus faucibus, tortor neque egestas augue, eu vulputate magna eros eu erat. Aliquam erat volutpat. Nam dui mi, tincidunt quis, accumsan porttitor, facilisis luctus, metus.&amp;lt;/li&amp;gt;\n&amp;lt;li&amp;gt;Phasellus ultrices nulla quis nibh. Quisque a lectus. Donec consectetuer ligula vulputate sem tristique cursus. Nam nulla quam, gravida non, commodo a, sodales sit amet, nisi.&amp;lt;/li&amp;gt;\n&amp;lt;li&amp;gt;Pellentesque fermentum dolor. Aliquam quam lectus, facilisis auctor, ultrices ut, elementum vulputate, nunc.&amp;lt;/li&amp;gt;\n&amp;lt;/ol&amp;gt;\n&lt;br /&gt;
Send ^v&lt;br /&gt;
return&lt;br /&gt;
&lt;br /&gt;
:o:#u3::&lt;br /&gt;
clipboard=&amp;lt;ul id="menu"&amp;gt;\n&amp;lt;li&amp;gt;&amp;lt;a href="#nowhere" title="Lorum ipsum dolor sit amet"&amp;gt;Lorem&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;\n&amp;lt;li&amp;gt;&amp;lt;a href="#nowhere" title="Aliquam tincidunt mauris eu risus"&amp;gt;Aliquam&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;\n&amp;lt;li&amp;gt;&amp;lt;a href="#nowhere" title="Morbi in sem quis dui placerat ornare"&amp;gt;Morbi&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;\n&amp;lt;li&amp;gt;&amp;lt;a href="#nowhere" title="Praesent dapibus, neque id cursus faucibus"&amp;gt;Praesent&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;\n&amp;lt;li&amp;gt;&amp;lt;a href="#nowhere" title="Pellentesque fermentum dolor"&amp;gt;Pellentesque&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;\n&amp;lt;/ul&amp;gt;\n&lt;br /&gt;
Send ^v&lt;br /&gt;
return&lt;br /&gt;
&lt;br /&gt;
:o:#robots::&lt;br /&gt;
clipboard=User-agent: *\nDisallow: /typo3\nDisallow: /typo3_src\nDisallow: /t3lib\n&lt;br /&gt;
Send ^v&lt;br /&gt;
return&lt;br /&gt;
&lt;br /&gt;
&lt;/blockquote&gt;&lt;br /&gt;
Für die Programmierer unter uns ein paar kleine PHP-Goodies, die das programmieren einfacher, schneller und fehlerfreier machen:&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote style="font-family:monospace;"&gt;:o:_g::$_GET['']{Left 2}&lt;br /&gt;
:o:_p::$_POST['']{Left 2}&lt;br /&gt;
:o:_r::$_REQUEST['']{Left 2}&lt;br /&gt;
:o:_s::$_SESSION['']{Left 2}&lt;br /&gt;
:o:_pr::print_r();{Left 2}&lt;br /&gt;
:o:_if::if(isset()) {{}{Left 4}&lt;br /&gt;
&lt;/blockquote&gt;&lt;br /&gt;
Wie man an den wenigen Bespielen sehen kann, kann man als Webdesigner seine Arbeit mit Hilfe von Textersetzungen in allen Bereichen optimieren. Viel Erfolg!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7657267877844457605-4794839178550787920?l=simonwpt.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/BertramSimonSays/~4/liOi_353Dn8" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://simonwpt.blogspot.com/feeds/4794839178550787920/comments/default" title="Kommentare zum Post" /><link rel="replies" type="text/html" href="http://simonwpt.blogspot.com/2009/12/html-php-co-ersetzungen-mit-autohotkey.html#comment-form" title="0 Kommentare" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7657267877844457605/posts/default/4794839178550787920?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7657267877844457605/posts/default/4794839178550787920?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/BertramSimonSays/~3/liOi_353Dn8/html-php-co-ersetzungen-mit-autohotkey.html" title="Schneller arbeiten durch Ersetzungen mit AutoHotKey" /><author><name>Bertram Simon</name><uri>http://www.blogger.com/profile/10879912121012499608</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://simonwpt.blogspot.com/2009/12/html-php-co-ersetzungen-mit-autohotkey.html</feedburner:origLink></entry></feed>

