<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-6221473894826881864</id><updated>2012-02-23T13:06:46.507-08:00</updated><category term='symfony captcha php'/><title type='text'>Stefan Kühn</title><subtitle type='html'>Internet Geschäftsideen und Unternehmertum</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://www.stefan-kuehn.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6221473894826881864/posts/default'/><link rel='alternate' type='text/html' href='http://www.stefan-kuehn.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Stefan Kühn</name><uri>http://www.blogger.com/profile/07112776940557570239</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://3.bp.blogspot.com/_o1kiijwXpPc/So-ECGs5IWI/AAAAAAAAABg/2Qp8wEFaeRo/S220/gg.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>24</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-6221473894826881864.post-8729657539551359223</id><published>2012-02-23T12:45:00.001-08:00</published><updated>2012-02-23T13:06:46.513-08:00</updated><title type='text'>Please login to use the PayPal Sandbox features</title><content type='html'>Have you ever got this error message while playing around with the PayPal Sandbox?&lt;br /&gt;Trying over and over again, with your test buyer account...&lt;br /&gt;Well, the solution is surprisingly simple.&lt;br /&gt;&lt;br /&gt;When you sign up for the PayPal sandbox, you first get a master user id. After login on with the master id you can create the test buyer and seller accounts.&lt;br /&gt;&lt;br /&gt;When making a test purchase with the test buyer account, you must be logged on with the master account id - on a second tab in the same browser!&lt;br /&gt;&lt;br /&gt;That‘s all!&lt;br /&gt;&lt;br /&gt;Have fun!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6221473894826881864-8729657539551359223?l=www.stefan-kuehn.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.stefan-kuehn.com/feeds/8729657539551359223/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.stefan-kuehn.com/2012/02/please-login-to-use-paypal-sandbox.html#comment-form' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6221473894826881864/posts/default/8729657539551359223'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6221473894826881864/posts/default/8729657539551359223'/><link rel='alternate' type='text/html' href='http://www.stefan-kuehn.com/2012/02/please-login-to-use-paypal-sandbox.html' title='Please login to use the PayPal Sandbox features'/><author><name>Stefan Kühn</name><uri>http://www.blogger.com/profile/07112776940557570239</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://3.bp.blogspot.com/_o1kiijwXpPc/So-ECGs5IWI/AAAAAAAAABg/2Qp8wEFaeRo/S220/gg.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6221473894826881864.post-6020341097290899205</id><published>2012-01-04T01:07:00.000-08:00</published><updated>2012-01-04T01:11:16.099-08:00</updated><title type='text'>Suche Rails-Entwickler</title><content type='html'>Für ein sehr interessantes Projekt, suche ich einen Rails-Entwickler, oder Jemandem, der sich einarbeiten will. Voraussetzung wäre in dem Fall Vorauskenntnisse in ein MVC-Framework wie z.B. Symfony.&lt;br /&gt;&lt;br /&gt;Ich biete auch eine Unternehmensbeteiligung für diejenigen, die eine langfristige, selbständige Tätigkeit suchen.&lt;br /&gt;Bitte melden!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6221473894826881864-6020341097290899205?l=www.stefan-kuehn.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.stefan-kuehn.com/feeds/6020341097290899205/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.stefan-kuehn.com/2012/01/suche-rails-entwickler.html#comment-form' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6221473894826881864/posts/default/6020341097290899205'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6221473894826881864/posts/default/6020341097290899205'/><link rel='alternate' type='text/html' href='http://www.stefan-kuehn.com/2012/01/suche-rails-entwickler.html' title='Suche Rails-Entwickler'/><author><name>Stefan Kühn</name><uri>http://www.blogger.com/profile/07112776940557570239</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://3.bp.blogspot.com/_o1kiijwXpPc/So-ECGs5IWI/AAAAAAAAABg/2Qp8wEFaeRo/S220/gg.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6221473894826881864.post-2264205124993272848</id><published>2011-09-27T22:55:00.000-07:00</published><updated>2011-09-27T23:10:53.787-07:00</updated><title type='text'>Firefox Plugins zum neuen Leben erwecken</title><content type='html'>In der letzten Zeit sind viele neue Firefox-Versionen erschienen. Oft müssen dann auch die Plugins aktualisiert werden.&lt;br /&gt;Was tun, wenn der Pluginentwickler keine neue Version zur Verfügung gestellt hat?&lt;br /&gt;&lt;br /&gt;Ich benutze z.B. ein Tool um REST-Test zu machen, wo die Entwicklerwebseite nicht mehr vorhanden ist. (Hier kann man nachlesen was REST ist ;-) &lt;a href="http://de.wikipedia.org/wiki/Representational_State_Transfer"&gt;REST&lt;/a&gt;)&lt;br /&gt;&lt;br /&gt;Um ein Firefox-Plugin unter eine neue Firefox-Version erneut lauffähig zu machen, ist oft nicht viel Arbeit nötig. Mann muss nur in der Datei, die das Plugin beschreibt, die maximale Firefox-Version erhöhen.&lt;br /&gt;Das geht so (ich arbeite auf einem Mac, aber unter Windows ist es Äquivalent):&lt;br /&gt;&lt;br /&gt;In dem Firefox-Menü wählen Sie Hilfe -&gt; Informationen zur Fehlerbehebung&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/-m0z-gm_mGOg/ToK3MFAQsuI/AAAAAAAAAJo/sTx_Hlii-JY/s1600/FF1.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 346px; height: 158px;" src="http://1.bp.blogspot.com/-m0z-gm_mGOg/ToK3MFAQsuI/AAAAAAAAAJo/sTx_Hlii-JY/s400/FF1.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5657285500060349154" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Alternativ können Sie auch in der Adresszeile, wo Sie sonst Ihre Webadressen eintragen, folgender Firefox-Befehl eintragen: &lt;span style="font-weight:bold;"&gt;about:support&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Dann erscheint folgende Seite:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/-YexZyQZPIPc/ToK3oxj8UjI/AAAAAAAAAJw/BuuONNpJ6vc/s1600/FF2.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 225px;" src="http://4.bp.blogspot.com/-YexZyQZPIPc/ToK3oxj8UjI/AAAAAAAAAJw/BuuONNpJ6vc/s400/FF2.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5657285993057505842" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Hier klicken Sie auf „Im Finder anzeigen“.&lt;br /&gt;(Der „Finder“, ist der Explorer/Dateimanager unter Mac.)&lt;br /&gt;&lt;br /&gt;Es öffnet sich nun in etwa folgende Ansicht:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/-no4d5WQd-lc/ToK32-BoXjI/AAAAAAAAAJ4/GHDd7syUXWc/s1600/FF3.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 246px; height: 400px;" src="http://4.bp.blogspot.com/-no4d5WQd-lc/ToK32-BoXjI/AAAAAAAAAJ4/GHDd7syUXWc/s400/FF3.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5657286236921421362" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Wir interessieren uns für die Dateien, mit den Namen &lt;span style="font-weight:bold;"&gt;install.rdf&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Jetzt müssen wir nur die richtige finden ;-)&lt;br /&gt;&lt;br /&gt;In meinem Fall will ich das Tool RESTTest zum neuen Leben erwecken.&lt;br /&gt;Die Suche gestaltet sich in dem Fall einfach.&lt;br /&gt;&lt;br /&gt;Sie öffnen die Datei &lt;span style="font-weight:bold;"&gt;install.rdf&lt;/span&gt; mit einem Text-Editor, der den Text nicht formatiert. Also nicht Pages/Word (Mac/Win), sondern TextEdit/Notepad (Mac/Win).&lt;br /&gt;&lt;br /&gt;Das sieht in meinem Fall so aus:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/-1KPJoFI7Y7E/ToK4P7LWwbI/AAAAAAAAAKA/wJpeI18erqA/s1600/FF4.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 391px;" src="http://2.bp.blogspot.com/-1KPJoFI7Y7E/ToK4P7LWwbI/AAAAAAAAAKA/wJpeI18erqA/s400/FF4.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5657286665653633458" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Hier müssen Sie nun nur, die &lt;span style="font-weight:bold;"&gt;maxVersion&lt;/span&gt; auf eine Firefox-Versionsnummer höher oder gleich die Sie im Einsatz haben. Ich nutze z.Zt. die Version 7 und habe mich hier schon auf die Version 9 für das RESTTest-Plugin vorbereitet ;-)&lt;br /&gt;&lt;br /&gt;Nach dem Sie die Datei &lt;span style="font-weight:bold;"&gt;install.rdf&lt;/span&gt; geändert und gespeichert haben, starten Sie Firefox neu. Wenn das Plugin keine weitere schwer wiegende Abhängigkeiten zu der alten Version hat, ist die wieder voll funktionsfähig.&lt;br /&gt;&lt;br /&gt;Viel Erfolg!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6221473894826881864-2264205124993272848?l=www.stefan-kuehn.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.stefan-kuehn.com/feeds/2264205124993272848/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.stefan-kuehn.com/2011/09/firefox-plugins-zum-neuen-leben.html#comment-form' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6221473894826881864/posts/default/2264205124993272848'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6221473894826881864/posts/default/2264205124993272848'/><link rel='alternate' type='text/html' href='http://www.stefan-kuehn.com/2011/09/firefox-plugins-zum-neuen-leben.html' title='Firefox Plugins zum neuen Leben erwecken'/><author><name>Stefan Kühn</name><uri>http://www.blogger.com/profile/07112776940557570239</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://3.bp.blogspot.com/_o1kiijwXpPc/So-ECGs5IWI/AAAAAAAAABg/2Qp8wEFaeRo/S220/gg.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-m0z-gm_mGOg/ToK3MFAQsuI/AAAAAAAAAJo/sTx_Hlii-JY/s72-c/FF1.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6221473894826881864.post-7988888891477255259</id><published>2011-06-16T01:44:00.000-07:00</published><updated>2011-06-16T01:59:14.215-07:00</updated><title type='text'>Bilder vom Mondfinsternis 15.06.2011</title><content type='html'>Ich konnte es nicht sein lassen die Kamera letzte Nacht zu zucken...&lt;br /&gt;Das ist das Ergebnis.&lt;br /&gt;Kamera: Nikon D200&lt;br /&gt;Objektiv: AF-S Nikkor 18-200mm 1.35-5.6 G ED&lt;br /&gt;Einstellung: ASA1000, 1/5s, eingeschaltetet Bildstabilisator&lt;br /&gt;&lt;br /&gt;Das erste Bild entstand um Ca. 23:05 Uhr. Das letzte um Ca. 23:30 Uhr.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/-x7OGQQCrKBg/TfnD08EFo6I/AAAAAAAAAFs/88owU3ZRGB4/s1600/mf1.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 289px;" src="http://4.bp.blogspot.com/-x7OGQQCrKBg/TfnD08EFo6I/AAAAAAAAAFs/88owU3ZRGB4/s400/mf1.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5618737324365292450" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/-Ap277dqOyLo/TfnD0zlnPeI/AAAAAAAAAF0/kRS3bWsvhQ8/s1600/mf2.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 287px;" src="http://2.bp.blogspot.com/-Ap277dqOyLo/TfnD0zlnPeI/AAAAAAAAAF0/kRS3bWsvhQ8/s400/mf2.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5618737322089987554" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/-RgnRUyowzCw/TfnD1FayilI/AAAAAAAAAF8/Yis14Ju-G8Y/s1600/mf3.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 279px;" src="http://2.bp.blogspot.com/-RgnRUyowzCw/TfnD1FayilI/AAAAAAAAAF8/Yis14Ju-G8Y/s400/mf3.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5618737326876428882" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/-_QnWDK2hmvk/TfnD1Sdz7bI/AAAAAAAAAGE/Dy0ojh_IaEc/s1600/mf4.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 288px;" src="http://4.bp.blogspot.com/-_QnWDK2hmvk/TfnD1Sdz7bI/AAAAAAAAAGE/Dy0ojh_IaEc/s400/mf4.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5618737330378763698" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/-2vEV4uvZnjg/TfnEI4KZ9hI/AAAAAAAAAGM/a7jz0rjtq6Q/s1600/mf5.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 310px;" src="http://4.bp.blogspot.com/-2vEV4uvZnjg/TfnEI4KZ9hI/AAAAAAAAAGM/a7jz0rjtq6Q/s400/mf5.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5618737666915431954" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/-RHGCGmJQdWQ/TfnEJEFhCCI/AAAAAAAAAGU/mRnKHK7kdA4/s1600/mf6.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 281px;" src="http://1.bp.blogspot.com/-RHGCGmJQdWQ/TfnEJEFhCCI/AAAAAAAAAGU/mRnKHK7kdA4/s400/mf6.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5618737670116149282" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/-uSHiSU2uf90/TfnEJGa_2uI/AAAAAAAAAGc/j-xjpgpnwOQ/s1600/mf7.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 285px;" src="http://3.bp.blogspot.com/-uSHiSU2uf90/TfnEJGa_2uI/AAAAAAAAAGc/j-xjpgpnwOQ/s400/mf7.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5618737670743120610" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/-O_-X1NHx0TQ/TfnEJVw4e-I/AAAAAAAAAGk/7qNPCDdMTAo/s1600/mf8.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 307px;" src="http://1.bp.blogspot.com/-O_-X1NHx0TQ/TfnEJVw4e-I/AAAAAAAAAGk/7qNPCDdMTAo/s400/mf8.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5618737674861444066" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/-OgGCxbi-Iks/TfnEJgUocGI/AAAAAAAAAGs/vwN2nacCR5I/s1600/mf9.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 298px;" src="http://2.bp.blogspot.com/-OgGCxbi-Iks/TfnEJgUocGI/AAAAAAAAAGs/vwN2nacCR5I/s400/mf9.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5618737677695742050" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6221473894826881864-7988888891477255259?l=www.stefan-kuehn.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.stefan-kuehn.com/feeds/7988888891477255259/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.stefan-kuehn.com/2011/06/bilder-vom-mondfinsternis-15062011.html#comment-form' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6221473894826881864/posts/default/7988888891477255259'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6221473894826881864/posts/default/7988888891477255259'/><link rel='alternate' type='text/html' href='http://www.stefan-kuehn.com/2011/06/bilder-vom-mondfinsternis-15062011.html' title='Bilder vom Mondfinsternis 15.06.2011'/><author><name>Stefan Kühn</name><uri>http://www.blogger.com/profile/07112776940557570239</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://3.bp.blogspot.com/_o1kiijwXpPc/So-ECGs5IWI/AAAAAAAAABg/2Qp8wEFaeRo/S220/gg.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-x7OGQQCrKBg/TfnD08EFo6I/AAAAAAAAAFs/88owU3ZRGB4/s72-c/mf1.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6221473894826881864.post-2916665994501236922</id><published>2011-06-15T09:44:00.000-07:00</published><updated>2011-06-15T09:48:25.797-07:00</updated><title type='text'>Eine Symfony Checkliste</title><content type='html'>...ich kann diese Checkliste wärmstens empfehlen und zwar bevor du anfängst zu programmieren ;-)&lt;br /&gt;&lt;a href="http://symfony-check.org/"&gt;http://symfony-check.org/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6221473894826881864-2916665994501236922?l=www.stefan-kuehn.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.stefan-kuehn.com/feeds/2916665994501236922/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.stefan-kuehn.com/2011/06/eine-symfony-checkliste.html#comment-form' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6221473894826881864/posts/default/2916665994501236922'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6221473894826881864/posts/default/2916665994501236922'/><link rel='alternate' type='text/html' href='http://www.stefan-kuehn.com/2011/06/eine-symfony-checkliste.html' title='Eine Symfony Checkliste'/><author><name>Stefan Kühn</name><uri>http://www.blogger.com/profile/07112776940557570239</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://3.bp.blogspot.com/_o1kiijwXpPc/So-ECGs5IWI/AAAAAAAAABg/2Qp8wEFaeRo/S220/gg.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6221473894826881864.post-5306676595369721934</id><published>2011-02-01T01:37:00.000-08:00</published><updated>2011-02-01T03:37:52.520-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='symfony captcha php'/><title type='text'>Für Symfony einen eigenen Captcha schreiben</title><content type='html'>Einen eigenen Captcha für das eigene Symfony-Projekt ist relativ einfach, da PHP Funktionen hat um dynamisch Bilder zu erstellen.&lt;br /&gt;&lt;br /&gt;Wir haben ein Captcha für unsere Login-Maske erstellt, da Google's reCaptcha zu lange Texte präsentiert und bei zwar seltenen aber doch Gelegenheiten nicht verfügbar war und somit eine Anmeldung auf unsere Webseite unmöglich machte.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Die Lösung besteht aus den folgenden Schritten:&lt;/strong&gt;&lt;br /&gt;1. Eine kleine Grafik als Hintergrundbild für den Captcha-Text&lt;br /&gt;2. Eine PHP-Klasse, die die Captcha-Grafik produziert&lt;br /&gt;3. Ein Modul "captcha" mit Action und Template&lt;br /&gt;4. Routing für das Captcha-Modul anpassen&lt;br /&gt;5. Eine Formularklasse mit Widget und Validator für das Captcha&lt;br /&gt;6. Ein Validator für das Captcha&lt;br /&gt;7. Das Anzeigen der Captcha-Grafik&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;1. Hintergrundbild&lt;/strong&gt;&lt;br /&gt;Oft wir eine etwas "unruhige" Hintergrundgrafik für das Captcha erstellt, um das maschinelle Auslesen des Textes zu erschweren.&lt;br /&gt;Wir haben es hier nicht übertrieben, sondern nur ein par Punkte auf einem weißem Hintergrund platziert.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_o1kiijwXpPc/TUfUptHdPPI/AAAAAAAAAE0/Fk0pACd0r2A/s1600/captcha.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 70px; height: 32px;" src="http://1.bp.blogspot.com/_o1kiijwXpPc/TUfUptHdPPI/AAAAAAAAAE0/Fk0pACd0r2A/s320/captcha.png" alt="" id="BLOGGER_PHOTO_ID_5568653277217504498" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;strong&gt;2. Eine PHP-Klasse für das Erzeugen der Captcha-Grafik&lt;/strong&gt;&lt;br /&gt;Wir haben uns für eine recht einfache Captche-Grafik entschieden. Es gibt mit PHP auch die Möglichkeit andere Schriftarten zu nutzen sowie den Text zu drehen usw.&lt;br /&gt;&lt;br /&gt;Was die einzelne Funktionen in diese Klasse machen können Sie unter &lt;a href="http://php.net/"&gt;http://php.net&lt;/a&gt; nachschlagen.&lt;br /&gt;&lt;br /&gt;Ein kleiner Hinweis noch. Da später der Aufruf unseres Symfony-Moduls eine Grafik liefern soll und kein HTML, ist es wichtig, dass wir den Header mit&lt;br /&gt;&lt;span style="font-family:courier new; font-size:10px; color:blue;"&gt;&lt;br /&gt;header ("Content-type: image/png");&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;definieren (siehe unten). Wir sehen hier auch, dass unsere Grafik eine png ist. Es sind aber auch andere Formate möglich. Siehe &lt;a href="http://php.net/"&gt;http://php.net&lt;/a&gt;.&lt;br /&gt;&lt;span style="font-family:courier new; font-size:10px; color:blue;"&gt;&lt;br /&gt;class CaptchaImage {&lt;br /&gt;&lt;br /&gt;  function generate($CaptchaText) {&lt;br /&gt;      $fontsize = 5;&lt;br /&gt;      header ("Content-type: image/png");&lt;br /&gt;   &lt;br /&gt;      $image = ImageCreateFromPNG($_SERVER['DOCUMENT_ROOT'].'/images/captcha.png'); //Backgroundimage&lt;br /&gt;   &lt;br /&gt;      imagecolorallocate ($image, 0, 0, 0);&lt;br /&gt;      $text_color = ImageColorAllocate ($image, 7, 29, 192);&lt;br /&gt;   &lt;br /&gt;      ImageString ($image, $fontsize, 5, 7, $CaptchaText, $text_color);&lt;br /&gt;      ImagePNG ($image);&lt;br /&gt;      ImageDestroy($img);&lt;br /&gt;  }&lt;br /&gt;}&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;strong&gt;3. Ein Symfony-Modul&lt;/strong&gt;&lt;br /&gt;Da wir die Captcha-Angelegenheit schön in Symfony-Stil organisiert haben möchten, haben wir ein eigenes Modul dafür erstellt.&lt;br /&gt;Das ist einfach und bringt etwas Struktur in die Anwendung.&lt;br /&gt;Das Modul trägt den Namen "captcha" und die Action "captchagen"&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_o1kiijwXpPc/TUfhTds6egI/AAAAAAAAAFU/I3QxjzK7f8Y/s1600/Baum.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 242px;" src="http://1.bp.blogspot.com/_o1kiijwXpPc/TUfhTds6egI/AAAAAAAAAFU/I3QxjzK7f8Y/s320/Baum.png" alt="" id="BLOGGER_PHOTO_ID_5568667188773681666" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Das Template captchagenSuccess.php ist leer, da die Action das Captcha-Bild liefern soll.&lt;br /&gt;&lt;br /&gt;Die "captchagen" Action ist nicht sehr umfangreich und besteht hauptsächlich aus dem Generieren des Captche-Textes und das&lt;br /&gt;Erzeugen des Bildes. In der Action wir der Captcha-Text in der Session aufgehängt, damit wir den Später gegen Benutzereingabe in unserem Validator prüfen können. Mehr dazu später.&lt;br /&gt;&lt;span style="font-family:courier new; font-size:10px; color:blue;"&gt;&lt;br /&gt;class captchaActions extends sfActions&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;   public function &lt;strong&gt;executeCaptchagen($request)&lt;/strong&gt; {&lt;br /&gt;       //Captche-Text generieren&lt;br /&gt;      $captchatext = '';&lt;br /&gt;      $pool1   = 'ABDEFGHIJKLMNPRSTUVWXYZ';&lt;br /&gt;      for ($i = 1; $i &lt;= 3; $i++) {&lt;br /&gt;$captchatext .= substr($pool1, rand(0, 22), 1);         &lt;br /&gt;}                 &lt;br /&gt;$captchatext .= " ";                 &lt;br /&gt;$pool2   = '123456789';         &lt;br /&gt;for ($i = 1; $i &lt;= 3; $i++) {             &lt;br /&gt;$captchatext .= substr($pool2, rand(0, 8), 1);         &lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;//Captche-Text in der Session aufhängen         &lt;br /&gt;$_SESSION['captchatext'] = $captchatext;&lt;br /&gt;&lt;br /&gt;//Captcha-Text mit Hilfe unsere Klasse "CaptchaImage" erstellen          $tmpCaptchaImage = new CaptchaImage();         $tmpCaptchaImage-&gt;generate($captchatext);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;strong&gt;4. Routing anpassen&lt;/strong&gt;&lt;br /&gt;Damit wir unser Somfony-Modul "captcha" rufen können, passen wir das Routing an.&lt;br /&gt;Das machen wir in der Datei apps/frontend/config/routing.yml&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&lt;br /&gt;captcha:&lt;br /&gt;&amp;nbsp;&amp;nbsp;url:   /captcha&lt;br /&gt;&amp;nbsp;&amp;nbsp;param: { module: captcha, action: captchagen }&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;5. Widget und Validator für das Captcha&lt;/strong&gt;&lt;br /&gt;Wir benutzen bereits das sfDoctrineGuardPlugin und haben daher die darin enthaltene Form-Klasse "sfGuardFormSignin" um unser&lt;br /&gt;Captcha erweitert. Selbstverständlich können Sie Ihre eigene Form-Klasse für die (Anmelde-)Maske entsprechend erweitern.&lt;br /&gt;&lt;br /&gt;So sieht die erweiterte Klasse aus:&lt;br /&gt;&lt;span style="font-family:courier new; font-size:10px; color:blue;"&gt;&lt;br /&gt;class sfGuardFormSignin extends BasesfGuardFormSignin&lt;br /&gt;{&lt;br /&gt;public function configure()&lt;br /&gt;{ &lt;br /&gt;  //Widgets erstellen und konfigurieren   &lt;br /&gt;    $this-&gt;widgetSchema['username'] = new sfWidgetFormInputText();&lt;br /&gt;    $this-&gt;widgetSchema['password'] = new sfWidgetFormInputPassword(array('type' =&gt; 'password'));&lt;br /&gt;    $this-&gt;widgetSchema['remember'] = new sfWidgetFormInputCheckbox();&lt;br /&gt;  &lt;strong&gt;$this-&gt;widgetSchema['captcha'] = new sfWidgetFormInputText();&lt;/strong&gt;&lt;br /&gt;      &lt;br /&gt;  //Validators erstellen und konfigurieren&lt;br /&gt;  $this-&gt;validatorSchema['username'] = new sfValidatorString();&lt;br /&gt;  $this-&gt;validatorSchema['password'] = new sfValidatorString();&lt;br /&gt;  $this-&gt;validatorSchema['remember'] = new sfValidatorBoolean();&lt;br /&gt;  &lt;strong&gt;$this-&gt;validatorSchema['captcha'] = new sfValidatorCaptcha();&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;  $this-&gt;validatorSchema-&gt;setPostValidator(new sfGuardValidatorUser());&lt;br /&gt; &lt;br /&gt;  $this-&gt;widgetSchema-&gt;setLabels(array( &lt;br /&gt;    'username' =&gt; 'Benutzername:',&lt;br /&gt;    'password' =&gt; 'Passwort:',&lt;br /&gt;    'remember' =&gt; 'Bitte heute eingeloggt bleiben:',&lt;br /&gt;    &lt;strong&gt;'captcha' =&gt; 'Sicherheitscode:'&lt;/strong&gt;&lt;br /&gt;  ));&lt;br /&gt;} &lt;br /&gt;}&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;Wir haben in diese Klasse folgende Erweiterungen gemacht:&lt;br /&gt;Ein Captcha-Widget hinzugefüht:&lt;br /&gt;&lt;span style="font-family:courier new; font-size:10px; color:blue;"&gt;$this-&gt;widgetSchema['captcha'] = new sfWidgetFormInputText();&lt;/span&gt;&lt;br /&gt;Das ist einfach ein normales Textfeld, wo der Anwender den Captcha-Text eintragen kann.&lt;br /&gt;&lt;br /&gt;Ein Validator für den Captcha hinzugfügt:&lt;br /&gt;&lt;span style="font-family:courier new; font-size:10px; color:blue;"&gt;$this-&gt;validatorSchema['captcha'] = new sfValidatorCaptcha();&lt;/span&gt;&lt;br /&gt;Dieser Validator, den wir selber geschrieben haben, wird unten erläutert.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;6. Validator&lt;/strong&gt;&lt;br /&gt;Um den, vom Anwender eingegebener, Captcha-Text zu prüfen, schreiben wir in Symfony-Manier ein Validator.&lt;br /&gt;Wir haben den "sfValidatorCaptcha" genannt und in der Datei sfValidatorCaptcha.class.php unter lib/form/ abgelegt.&lt;br /&gt;&lt;span style="font-family:courier new; font-size:10px; color:blue;"&gt;&lt;br /&gt;class sfValidatorCaptcha extends sfValidatorString&lt;br /&gt;{&lt;br /&gt;protected function configure($options = array(), $messages = array())&lt;br /&gt;{&lt;br /&gt;parent::configure($options, $messages);&lt;br /&gt;&lt;br /&gt;$this-&gt;setMessage('invalid', 'Der Sicherheitscode stimmt nicht mit dem im Bild überein');&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;protected function doClean($value)&lt;br /&gt;{&lt;br /&gt;parent::doClean($value);&lt;br /&gt;$clean = (string) $value;&lt;br /&gt;&lt;br /&gt;//Captcha-Text aus der Sesson holen&lt;br /&gt;$captchatext = $_SESSION['captchatext'];&lt;br /&gt;&lt;br /&gt;if($captchatext != $clean) {&lt;br /&gt;throw new sfValidatorError($this, 'invalid', array('value' =&gt; $value));&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;return $clean;&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;In der Methode configure, definieren wir den Hinweis für den Anwender, sollte er den Captcha-Text in der Captcha-Grafik falsch abtippen.&lt;br /&gt;&lt;br /&gt;Die Methode doClean vergleicht den vom Anwender eingegebenen Text, mit dem in der Action captchagen generierten Text (den wir aus der Session holen). Rekapitulation: Der Captcha-Text hatten wir ja in der Action "captchagen", wo der Text generiert wird, in der Session aufgehängt, damit der uns später zwecks Validierung zur Verfügung steht.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;7. Anzeigen der Captcha-Grafik&lt;/strong&gt;&lt;br /&gt;Für das Anzeigen der Captcha-Grafik, erweitern wir das ensprechende Template des sfDoctrineGuardPlugins.&lt;br /&gt;Da wir in dem Template nicht das Symfony-Rendering nutzen, sondern ein eigenes Layout mit eine Tabelle erstellt haben, müssen wir hier nur diese Zeilen aufnehmen:&lt;br /&gt;&lt;span style="font-family:courier new; font-size:10px; color:green;"&gt;&lt;br /&gt;&amp;lt;tr&amp;gt;&lt;br /&gt;&amp;lt;td colspan="2"&amp;gt;&lt;br /&gt;&amp;lt;?php echo $form['captcha']-&amp;gt;renderError() ?&amp;gt;&lt;br /&gt;&amp;lt;/td&amp;gt;&lt;br /&gt;&amp;lt;/tr&amp;gt;      &lt;br /&gt;&amp;lt;tr&amp;gt;&lt;br /&gt;&amp;lt;td&amp;gt;&lt;br /&gt;Sicherheitscode:&lt;br /&gt;&amp;lt;/td&amp;gt;&lt;br /&gt;&amp;lt;td&amp;gt;&lt;br /&gt;&amp;lt;?php echo image_tag(url_for('@captcha'), array('raw_name' =&amp;gt; true)) ?&amp;gt;&lt;br /&gt;&amp;lt;/td&amp;gt;&lt;br /&gt;&amp;lt;/tr&amp;gt;      &lt;br /&gt;&amp;lt;tr&amp;gt;&lt;br /&gt;&amp;lt;td&amp;gt;&lt;br /&gt;&amp;lt;?php echo $form['captcha']-&amp;gt;renderLabel() ?&amp;gt;&lt;br /&gt;&amp;lt;/td&amp;gt;&lt;br /&gt;&amp;lt;td&amp;gt;&lt;br /&gt;&amp;lt;?php echo $form['captcha']-&amp;gt;render() ?&amp;gt;&lt;br /&gt;&amp;lt;/td&amp;gt;&lt;br /&gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;Das interessanteste hier ist diese Zeile:&lt;br /&gt;&lt;span style="font-family:courier new; font-size:10px; color:green;"&gt;&lt;br /&gt;&amp;lt;?php echo image_tag(url_for('@captcha'), array('raw_name' =&amp;gt; true)) ?&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;Die Symfony-Hilfsroutine "image_tag" generiert ein img-Tag.&lt;br /&gt;In unserem Fall sieht das Ergebnis so aus:&lt;br /&gt;&lt;span style="font-family:courier new; font-size:10px; color:green;"&gt;&lt;br /&gt;&amp;lt;img src="/captcha" /&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;Der Hilfsroutine-Parameter "raw_name" verhindert, dass Symfony ein ".png" hinten dran an "/captcha" hängt.&lt;br /&gt;Auch wenn der Header ein Bild in png-Format vorgibt, wäre das ja nicht korrekt, da hier die Bildquelle (src) eine Symfony-Action ist.&lt;br /&gt;Vergleiche hier den url_for-Parameter "@captcha" mit unser Routing-Definition unter Punkt 4 oben. Das hier verwendete "@captcha" ist der Routing-Name "captcha:".&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Das fertige Ergebnis sieht so aus:&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_o1kiijwXpPc/TUfpuKRilII/AAAAAAAAAFc/483j1RzLD9o/s1600/captcha.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 70px; height: 32px;" src="http://4.bp.blogspot.com/_o1kiijwXpPc/TUfpuKRilII/AAAAAAAAAFc/483j1RzLD9o/s320/captcha.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5568676443508085890" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Ich denke das war's jetzt :-)&lt;br /&gt;Viel Spaß beim Ausprobieren!&lt;br /&gt;&lt;br /&gt;PS. Wenn Jemandem veraten k&amp;ouml;nnte, wie man hier Quellcode formatieren kann, w&amp;auml;re das sehr nett ;-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6221473894826881864-5306676595369721934?l=www.stefan-kuehn.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.stefan-kuehn.com/feeds/5306676595369721934/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.stefan-kuehn.com/2011/02/fur-symfony-einen-eigenen-captcha.html#comment-form' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6221473894826881864/posts/default/5306676595369721934'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6221473894826881864/posts/default/5306676595369721934'/><link rel='alternate' type='text/html' href='http://www.stefan-kuehn.com/2011/02/fur-symfony-einen-eigenen-captcha.html' title='Für Symfony einen eigenen Captcha schreiben'/><author><name>Stefan Kühn</name><uri>http://www.blogger.com/profile/07112776940557570239</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://3.bp.blogspot.com/_o1kiijwXpPc/So-ECGs5IWI/AAAAAAAAABg/2Qp8wEFaeRo/S220/gg.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_o1kiijwXpPc/TUfUptHdPPI/AAAAAAAAAE0/Fk0pACd0r2A/s72-c/captcha.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6221473894826881864.post-489322077360364723</id><published>2011-01-30T02:50:00.000-08:00</published><updated>2011-01-30T13:53:58.016-08:00</updated><title type='text'>Einen erfolgreichen Unternehmer...</title><content type='html'>...traf ich dieses Wochenende auf einer Motorradmesse in Dettelbach bei Würzburg.&lt;br /&gt;&lt;br /&gt;Der Airbrush-Künstler ist unglaublich talentiert und hat sein Bodypainting-Model in Ca. 20 Minuten bemalt. Das Ergebnis können Sie unten bestaunen.&lt;br /&gt;&lt;span style="font-style: italic;"&gt;(ein Klick auf das Bild bringt eine Vergrößerung)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Schön ist es auch, wenn man sein Hobby zum Beruf machen kann.&lt;br /&gt;&lt;br /&gt;Sie finden den Künstler unter &lt;a href="http://www.brusher.de/"&gt;http://www.brusher.de&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_o1kiijwXpPc/TUVJ_Y12rXI/AAAAAAAAAEE/JEy2Z-sVh4A/s1600/BodyPainting_1.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 223px; height: 320px;" src="http://3.bp.blogspot.com/_o1kiijwXpPc/TUVJ_Y12rXI/AAAAAAAAAEE/JEy2Z-sVh4A/s320/BodyPainting_1.jpg" alt="" id="BLOGGER_PHOTO_ID_5567937867662404978" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_o1kiijwXpPc/TUVKEiytTtI/AAAAAAAAAEM/poX_KiA5tpg/s1600/BodyPainting_2.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 278px;" src="http://3.bp.blogspot.com/_o1kiijwXpPc/TUVKEiytTtI/AAAAAAAAAEM/poX_KiA5tpg/s320/BodyPainting_2.jpg" alt="" id="BLOGGER_PHOTO_ID_5567937956232908498" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_o1kiijwXpPc/TUVKJ6uni0I/AAAAAAAAAEU/txJeMRNPENE/s1600/BodyPainting_3.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 242px; height: 320px;" src="http://2.bp.blogspot.com/_o1kiijwXpPc/TUVKJ6uni0I/AAAAAAAAAEU/txJeMRNPENE/s320/BodyPainting_3.jpg" alt="" id="BLOGGER_PHOTO_ID_5567938048557550402" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_o1kiijwXpPc/TUVKNxzWJbI/AAAAAAAAAEc/in65gZdtKv0/s1600/BodyPainting_4.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 164px; height: 320px;" src="http://1.bp.blogspot.com/_o1kiijwXpPc/TUVKNxzWJbI/AAAAAAAAAEc/in65gZdtKv0/s320/BodyPainting_4.jpg" alt="" id="BLOGGER_PHOTO_ID_5567938114880939442" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_o1kiijwXpPc/TUVKW85mDvI/AAAAAAAAAEk/PIzbtGOwqJs/s1600/BodyPainting_5.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 241px; height: 320px;" src="http://1.bp.blogspot.com/_o1kiijwXpPc/TUVKW85mDvI/AAAAAAAAAEk/PIzbtGOwqJs/s320/BodyPainting_5.jpg" alt="" id="BLOGGER_PHOTO_ID_5567938272478760690" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Ob ich nur wegen den Mädels da war? ;-)&lt;br /&gt;Nein... :-)&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_o1kiijwXpPc/TUVKcpI85DI/AAAAAAAAAEs/iW_kw0_dcdo/s1600/BMW_HP2_Megamoto.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 234px;" src="http://2.bp.blogspot.com/_o1kiijwXpPc/TUVKcpI85DI/AAAAAAAAAEs/iW_kw0_dcdo/s320/BMW_HP2_Megamoto.jpg" alt="" id="BLOGGER_PHOTO_ID_5567938370253677618" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6221473894826881864-489322077360364723?l=www.stefan-kuehn.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.stefan-kuehn.com/feeds/489322077360364723/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.stefan-kuehn.com/2011/01/einen-erfolgreichen-unternehmer.html#comment-form' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6221473894826881864/posts/default/489322077360364723'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6221473894826881864/posts/default/489322077360364723'/><link rel='alternate' type='text/html' href='http://www.stefan-kuehn.com/2011/01/einen-erfolgreichen-unternehmer.html' title='Einen erfolgreichen Unternehmer...'/><author><name>Stefan Kühn</name><uri>http://www.blogger.com/profile/07112776940557570239</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://3.bp.blogspot.com/_o1kiijwXpPc/So-ECGs5IWI/AAAAAAAAABg/2Qp8wEFaeRo/S220/gg.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_o1kiijwXpPc/TUVJ_Y12rXI/AAAAAAAAAEE/JEy2Z-sVh4A/s72-c/BodyPainting_1.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6221473894826881864.post-4569221931832950040</id><published>2011-01-13T23:31:00.000-08:00</published><updated>2011-01-13T23:58:57.506-08:00</updated><title type='text'>Bookmarks aus Delicious in XML-Format exportieren</title><content type='html'>Da Yahoo eventuell den Bookmark-Dienst &lt;a href="http://www.delicious.com/"&gt;http://www.delicious.com/&lt;/a&gt; schließen will, ist es empfehlenswert die Bookmarks zu sichern. Auf der Webseite von Delicious gibt es ein Export in HTML (&lt;a href="https://secure.delicious.com/settings/bookmarks/export"&gt;https://secure.delicious.com/settings/bookmarks/export&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;Wenn Sie aber die Bookmarks in XML exportieren möchten, können Sie diesen Befehl auf der Kommandozeile nutzen:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;curl https://{username}:{password}@api.del.icio.us/v1/posts/all &gt; bookmarks.xml&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Voraussetzung ist, dass Sie das Programm curl installiert haben. Auf dem Mac ist es schon drauf ;-)&lt;br /&gt;&lt;br /&gt;In dem Befehl oben ersetzen Sie username und password mit Ihren Daten. Die geschweiften Klammern müssen bleiben!&lt;br /&gt;&lt;br /&gt;Viel Erfolg!&lt;br /&gt;Und hoffen wir, dass Yahoo sich es anders überlegt!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6221473894826881864-4569221931832950040?l=www.stefan-kuehn.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.stefan-kuehn.com/feeds/4569221931832950040/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.stefan-kuehn.com/2011/01/bookmarks-aus-delicious-in-xml-format.html#comment-form' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6221473894826881864/posts/default/4569221931832950040'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6221473894826881864/posts/default/4569221931832950040'/><link rel='alternate' type='text/html' href='http://www.stefan-kuehn.com/2011/01/bookmarks-aus-delicious-in-xml-format.html' title='Bookmarks aus Delicious in XML-Format exportieren'/><author><name>Stefan Kühn</name><uri>http://www.blogger.com/profile/07112776940557570239</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://3.bp.blogspot.com/_o1kiijwXpPc/So-ECGs5IWI/AAAAAAAAABg/2Qp8wEFaeRo/S220/gg.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6221473894826881864.post-6392603240662917908</id><published>2010-11-09T23:51:00.000-08:00</published><updated>2010-11-10T00:17:08.251-08:00</updated><title type='text'>iPad Kalender-Problem</title><content type='html'>Seit dem Apple das iCal Kalenderformat (im Oktober?) auf CalDAV umgestellt hat, gibt es probleme mit dem Kalender-Sync auf dem iPad.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Es sollte vielleicht vorsichtshalber erwähnt werden, dass das neue CalDAV-Format eine Option ist. Wenn man sich in MobileMe unter me.com anmeldet und den Kalender anschaut, bekommt man das Angebot auf das neue Format umzustellen.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Es sieht jetz so aus, als ob die Kalender-Software auf dem iPad mit CalDAV nicht ganz klar kommt. Sprich es synchronisiert überhaupt nicht. Kein einziges Kalenderdatum wird vom MobileMe übernommen. Auf Geräten wie z.B. iPhone die schon das neue Betriebssystem (iOS 4.x) gibt es keine Probleme und das Problem mit dem iPad wird höchstwahrscheinlich jetzt in November gelöst, wenn die version 4.2 für das iPad kommt.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Nach dem ich zig male den MobileMe Account auf dem iPad gelöscht und wieder angelegt hatte, ohne den erhofften Erfolg, fand ich im Netz eine Lösung.&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Bevor Sie mit dem Link unten weitermachen, konfigurieren Sie MobileMe wei gewohnt auf Ihrem iPad (unter Account hinzufügen wählen Sie "MobileMe" aus). Sie deaktivieren aber hier "Kalender". Somit werden Mail, Kontakte und Lesezeichen über diesem Account syncronisiert.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Jetzt...lesen Sie hier weiter. Hier wird beschrieben, wie man ein CalDAV Account anlegt.&lt;/div&gt;&lt;div&gt;Und plötzlich erscheinen wieder Ihre Termine in dem neuen Kalender-Format von MobileMe :-)&lt;/div&gt;&lt;div&gt;Viel Efolg!&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://help.apple.com/mobileme/interface/index.html?lang=en#mmcc733205"&gt;http://help.apple.com/mobileme/interface/index.html?lang=en#mmcc733205&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6221473894826881864-6392603240662917908?l=www.stefan-kuehn.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.stefan-kuehn.com/feeds/6392603240662917908/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.stefan-kuehn.com/2010/11/ipad-kalender-problem.html#comment-form' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6221473894826881864/posts/default/6392603240662917908'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6221473894826881864/posts/default/6392603240662917908'/><link rel='alternate' type='text/html' href='http://www.stefan-kuehn.com/2010/11/ipad-kalender-problem.html' title='iPad Kalender-Problem'/><author><name>Stefan Kühn</name><uri>http://www.blogger.com/profile/07112776940557570239</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://3.bp.blogspot.com/_o1kiijwXpPc/So-ECGs5IWI/AAAAAAAAABg/2Qp8wEFaeRo/S220/gg.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6221473894826881864.post-6164432006741621915</id><published>2010-08-24T02:15:00.000-07:00</published><updated>2010-08-24T02:33:26.913-07:00</updated><title type='text'>Time Machine: indizieren verhindern</title><content type='html'>Ist es dir als Mac OSX Anwender aufgefallen, dass die Time Machine inzwischen jedes mal das Backup Volume (Time Capsule) indiziert, bevor der Backup anläuft?&lt;br /&gt;Höchtst wahrscheinlich ist das Verhalten mit einem System-Update dazu gekommen.&lt;br /&gt;Das Indizieren soll es ermöglichen mit Spotlight das Backup-Volume zu durchsuchen.&lt;br /&gt;Mir stört's und ich brauch's nicht. Netter weise lässt es sich leicht abstellen.&lt;br /&gt;In den Systemeinstellungen unter "Spotlight", Lasche "Privatsphäre", wird einfach das Volume Time Machine Backups hinzugefüht. Ein Klick auf das + bringt die Auswahlliste. Vorausgesetzt das Volume ist gerade gemountet.&lt;br /&gt;So sieht es aus:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_o1kiijwXpPc/THOQ-Q6TuaI/AAAAAAAAACI/6R5Fkbx6m3I/s1600/Settings.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 301px;" src="http://2.bp.blogspot.com/_o1kiijwXpPc/THOQ-Q6TuaI/AAAAAAAAACI/6R5Fkbx6m3I/s320/Settings.png" alt="" id="BLOGGER_PHOTO_ID_5508906168570067362" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6221473894826881864-6164432006741621915?l=www.stefan-kuehn.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.stefan-kuehn.com/feeds/6164432006741621915/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.stefan-kuehn.com/2010/08/time-machine-indizieren-verhindern.html#comment-form' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6221473894826881864/posts/default/6164432006741621915'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6221473894826881864/posts/default/6164432006741621915'/><link rel='alternate' type='text/html' href='http://www.stefan-kuehn.com/2010/08/time-machine-indizieren-verhindern.html' title='Time Machine: indizieren verhindern'/><author><name>Stefan Kühn</name><uri>http://www.blogger.com/profile/07112776940557570239</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://3.bp.blogspot.com/_o1kiijwXpPc/So-ECGs5IWI/AAAAAAAAABg/2Qp8wEFaeRo/S220/gg.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_o1kiijwXpPc/THOQ-Q6TuaI/AAAAAAAAACI/6R5Fkbx6m3I/s72-c/Settings.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6221473894826881864.post-3090898380794655979</id><published>2010-06-27T02:15:00.000-07:00</published><updated>2010-06-27T05:23:27.676-07:00</updated><title type='text'>"PomPay" auf dem Forum Kiedrich Gründermarkt am 26.06.2010</title><content type='html'>Gestern nahm ich an dem Forum Kiedrich Gründermarkt (&lt;a href="http://www.forum-kiedrich.de/"&gt;http://www.forum-kiedrich.de&lt;/a&gt;) in Wiesbaden als Gründer teil. Dabei hatte ich zwei meiner Gründungspartner Stefan Keller und Peter Wiesel.&lt;br /&gt;&lt;br /&gt;Zunächst muss ich ein spontanes Lob an den Organisatoren aussprechen. Ich denke das Forum Kiedrich ist einmalig in Deutschland. Einfach phantastisch!&lt;br /&gt;Es ist den Gründern und Betreibern von Forum Kiedrich gelungen eine unglaublich kreative und familiäre Athmosphäre zu schaffen. Hier treffen sich sowohl Gründer und sehr erfahrene Unternehmer auf einer Ebene obwohl die „Abstände“ wohl kaum größer sein könnten. Ich hatte selber die Gelegenheit den Unternehmensberater Herr Klaus Christian Plönzke und Frau Ingeborg Mehren-Hitchcock persönlich zu sprechen. Ich sage es ganz offen. Ich habe es als eine Ehre empfunden.&lt;br /&gt;&lt;br /&gt;Herr Plönzke ist nicht nur Initiator des am 6. April 1997 gegründeten Gründerinitiative "Forum Kiedrich" er hat auch am 29. September 2003 das Bundesverdienstkreutz 1. Klasse des Verdienstordens der Bundesrepublik Deutschland für seine Leistungen beim Aufbau der deutschen IT-Branche und sein Engagement für junge Unternehmensgründer erhalten.&lt;br /&gt;&lt;br /&gt;Frau Ingeborg Mehren-Hitchcock ist nicht weniger faszinierend.&lt;br /&gt;Nicht nur den berühmten Hitchcock-Orangensaft brachte sie nach Deutschland, sondern als kluge Geschäftsfrau in den Sechzigerjahren auch zahllose andere Produkte, die den American Way of Life zunächst nur in der Stadt Wiesbaden und dann in der ganzen Bundesrepublik populär machten. In Mähren geboren und in Salzburg aufgewachsen, studierte Ingeborg Mehren-Hitchcock im texanischen Austin, wo sie bald für eine Stahlfirma arbeitete, in der sie ihren späteren Ehemann, den Ingenieur Bill Hitchcock (einen Cousin des Regisseurs Alfred Hitchcock) kennenlernte. In ihrer zweiten Ehe mit George Mehren, dem stellvertretenden Landwirtschaftsminister der Regierung Lyndon B. Johnson, bereiste sie zahlreiche Länder der Dritten Welt und widmete sich zwischen ihren Wahlheimaten Texas und Wiesbaden dem Familienleben sowie dem Fundraising für wohltätige Zwecke.&lt;br /&gt;&lt;br /&gt;Mit Frau Mehren-Hitchcock hätte ich noch stunden lang reden können und immer noch das Gefühl haben, es war zu kurz!&lt;br /&gt;&lt;br /&gt;Es waren aber nicht nur die „Großen“, die das Forum Kiedrich mit Leben füllten. Es waren auch die Vielen anderen sehr guten Kontakte zu anderen Gründern und Kapitalgebern.&lt;br /&gt;&lt;br /&gt;Ich kann wirklich jeden Gründer empfehlen, sich für das Forum Kiderich zu bewerben. Das ist eine einmalige Erfahrung die zu dem, durch eine mögliche Mitgliedschaft, lange erhalten bleibt.&lt;br /&gt;&lt;br /&gt;Vielen Dank, dass wir mit unserem Projekt „PomPay“ teilnehmen dürften!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6221473894826881864-3090898380794655979?l=www.stefan-kuehn.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.stefan-kuehn.com/feeds/3090898380794655979/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.stefan-kuehn.com/2010/06/pompay-auf-dem-forum-kiedrich.html#comment-form' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6221473894826881864/posts/default/3090898380794655979'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6221473894826881864/posts/default/3090898380794655979'/><link rel='alternate' type='text/html' href='http://www.stefan-kuehn.com/2010/06/pompay-auf-dem-forum-kiedrich.html' title='&quot;PomPay&quot; auf dem Forum Kiedrich Gründermarkt am 26.06.2010'/><author><name>Stefan Kühn</name><uri>http://www.blogger.com/profile/07112776940557570239</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://3.bp.blogspot.com/_o1kiijwXpPc/So-ECGs5IWI/AAAAAAAAABg/2Qp8wEFaeRo/S220/gg.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6221473894826881864.post-4991013776889200824</id><published>2010-06-16T05:19:00.000-07:00</published><updated>2010-06-16T05:29:21.544-07:00</updated><title type='text'>Abgabeparty der Phase 3 des Businessplan-Wettbewerbs Netzwerk Nordbayern</title><content type='html'>Gestern (15.06.2010) besuchte ich das Seminar „Grundlagen der Unternehmensfinanzierung“, organisiert vom Netzwerk Nordbayern (&lt;a href="http://www.netzwerk-nordbayern.de/"&gt;http://www.netzwerk-nordbayern.de&lt;/a&gt;).&lt;br /&gt;Es gab eine Reihe sehr interessante Vorträge von folgenden Personen und Organisationen:&lt;br /&gt;&lt;br /&gt;Begrüßung und Hintergrundinfo von Frau Müller, Netzwerk Nordbayern (&lt;a href="http://www.netzwerk-nordbayern.de/"&gt;http://www.netzwerk-nordbayern.de&lt;/a&gt;)&lt;br /&gt;&lt;br /&gt;Info zu Venture Capital von Herr Raab, S-Refit in Regensburg.&lt;br /&gt;(&lt;a href="http://www.s-refit.de/"&gt;http://www.s-refit.de&lt;/a&gt;)&lt;br /&gt;&lt;br /&gt;Info zu Frühphasenfinanzierung von Herrn Redl, Bayern Kapital in Landshut (&lt;a href="http://www.bayernkapital.de/"&gt;http://www.bayernkapital.de&lt;/a&gt;)&lt;br /&gt;&lt;br /&gt;Info zu öffentliche Förderung, Herr Leitenmayer, LfA Förderbank Bayern. (&lt;a href="http://www.lfa.de/"&gt;http://www.lfa.de&lt;/a&gt;)&lt;br /&gt;&lt;br /&gt;Info zu Bankenfinanzierung, Herr Schilling, Sparkasse Nürnberg.&lt;br /&gt;(&lt;a href="http://www.sparkasse-nuernberg.de/"&gt;http://www.sparkasse-nuernberg.de&lt;/a&gt;)&lt;br /&gt;&lt;br /&gt;Info zu Technologieförderung in Bayern, Herr Lorenz, LGA Nürnberg&lt;br /&gt;(&lt;a href="http://www.lga.de/"&gt;http://www.lga.de&lt;/a&gt;)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Alles in allem war es eine sehr gut organisierte Veranstaltung.&lt;br /&gt;&lt;br /&gt;Im Anschluss fand das Abgabeparty der Phase 3 des Businessplan-Wettbewerbs, ebenfalls vom Netzwerk Nordbayern organisiert.&lt;br /&gt;&lt;br /&gt;Dieser Event wurde mit drei Vorträgen eingeleitet:&lt;br /&gt;&lt;br /&gt;Her Roman Huber, der Geschäftsführer der Bayern Kapital, erzählte auf eine sowohl informative als auch amüsante Art und Weise über die Tätigkeiten von Bayern Kapital. Ein Vortrag der, an diesem Abend, besonders gut ankam.&lt;br /&gt;&lt;br /&gt;Herr Peter Pauli, Geschäftsführer der BayBG (&lt;a href="http://www.baybg.de/"&gt;http://www.baybg.de&lt;/a&gt;) präsentierte ausführlich und informativ über deren Tätigkeiten.&lt;br /&gt;&lt;br /&gt;Zuletzt erzählte Herr Dr. Huber über die eigenen Erfahrungen als Gründer von LipoFIT (&lt;a href="http://www.lipofit.de/"&gt;http://www.lipofit.de&lt;/a&gt;). Sehr amüsant und aufschlussreich!&lt;br /&gt;&lt;br /&gt;Der Abend ließen alle mit einem leckerem Buffet und jede Menge Gelegenheiten zum Networking ausklingen. Alles vom Netzwerk Nordbayern perfekt organisiert!&lt;br /&gt;&lt;br /&gt;Ich kann wirklich jedem Gründer Empfehlen, mit Netzwerk Nordbayern Kontakt auf zu nehmen. Es ist gut investierte Zeit!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6221473894826881864-4991013776889200824?l=www.stefan-kuehn.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.stefan-kuehn.com/feeds/4991013776889200824/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.stefan-kuehn.com/2010/06/abgabeparty-der-phase-3-des.html#comment-form' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6221473894826881864/posts/default/4991013776889200824'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6221473894826881864/posts/default/4991013776889200824'/><link rel='alternate' type='text/html' href='http://www.stefan-kuehn.com/2010/06/abgabeparty-der-phase-3-des.html' title='Abgabeparty der Phase 3 des Businessplan-Wettbewerbs Netzwerk Nordbayern'/><author><name>Stefan Kühn</name><uri>http://www.blogger.com/profile/07112776940557570239</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://3.bp.blogspot.com/_o1kiijwXpPc/So-ECGs5IWI/AAAAAAAAABg/2Qp8wEFaeRo/S220/gg.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6221473894826881864.post-2476030240141633664</id><published>2010-04-21T22:46:00.000-07:00</published><updated>2010-04-21T22:55:47.968-07:00</updated><title type='text'>http://www.cafe-karte.de</title><content type='html'>Eine bomben Erkältung ist eine schöne Sache. Dann hat man endlich Zeit sein Hobby nachzugehen.&lt;br/&gt;Wie dies Symfony Anwendung z.B. &lt;a href="http://www.cafe-karte.de"&gt;http://www.cafe-karte.de&lt;/a&gt;&lt;br/&gt;&lt;br /&gt;Hier treffen einige Techniken auf ein ander. Das PHP-Framework Symfony, der Layout Builder &lt;a href="http://www.yaml.de"&gt;http://www.yaml.de&lt;/a&gt;, Google Maps, Google Local Search.&lt;br/&gt;&lt;br /&gt;Viel Spaß beim Ausprobieren! :-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6221473894826881864-2476030240141633664?l=www.stefan-kuehn.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.stefan-kuehn.com/feeds/2476030240141633664/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.stefan-kuehn.com/2010/04/httpwwwcafe-kartede.html#comment-form' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6221473894826881864/posts/default/2476030240141633664'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6221473894826881864/posts/default/2476030240141633664'/><link rel='alternate' type='text/html' href='http://www.stefan-kuehn.com/2010/04/httpwwwcafe-kartede.html' title='http://www.cafe-karte.de'/><author><name>Stefan Kühn</name><uri>http://www.blogger.com/profile/07112776940557570239</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://3.bp.blogspot.com/_o1kiijwXpPc/So-ECGs5IWI/AAAAAAAAABg/2Qp8wEFaeRo/S220/gg.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6221473894826881864.post-6350136474048091256</id><published>2010-03-08T07:43:00.000-08:00</published><updated>2010-03-08T07:55:41.871-08:00</updated><title type='text'>Internet-Nutzung - eine Grafik</title><content type='html'>Da ist es noch mal, der Beweis für meine These, dass in Schweden die Internet Nutzung viel weiter ist wie in Deutschland.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://news.bbc.co.uk/2/hi/technology/8552410.stm"&gt;http://news.bbc.co.uk/2/hi/technology/8552410.stm&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Leider gibt die Grafik nicht so viel her, wie ich mir es gewünscht hätte.&lt;br /&gt;&lt;br /&gt;Ich hätte gerne ein Start bei 1991, als ich nach Deutschland kam und in Schweden die ersten Emailadressen in Motorzeitschriften sah. Eine Zeit wo in Deutschland nur die Unis und ich in der Zentralabteilung für Forschung und Entwicklung bei Siemens eine Emailadresse hatten ;-)&lt;br /&gt;&lt;br /&gt;Schade ist auch, dass die Grafik bei +31% aufhört. Da sind wir ja sogar in Deutschland drüber hinweg.&lt;br /&gt;&lt;br /&gt;Heute liegt, laut Eurostat, die Nutzung in Sweden bei 80% und in Deutschland bei 65%.&lt;br /&gt;&lt;br /&gt;Der Grund liegt höchst wahrscheinlich in die hohe Verfügbarkeit von Risikokapital in Schweden. Laut einer Deutsche Bank Research Studie liegt die Risikokapital-Quote in Deutschland bei 0,05% vom brutto Inlandsprodukt. In Schweden liegt sie bei 0,25%. Nur noch getoppt von UK (0,34%) und eine isolierte Betrachtung von dem Bundesstaat Kalifornien (inkl. Silicon Valey) (0,69%).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6221473894826881864-6350136474048091256?l=www.stefan-kuehn.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.stefan-kuehn.com/feeds/6350136474048091256/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.stefan-kuehn.com/2010/03/internet-nutzung-eine-grafik.html#comment-form' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6221473894826881864/posts/default/6350136474048091256'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6221473894826881864/posts/default/6350136474048091256'/><link rel='alternate' type='text/html' href='http://www.stefan-kuehn.com/2010/03/internet-nutzung-eine-grafik.html' title='Internet-Nutzung - eine Grafik'/><author><name>Stefan Kühn</name><uri>http://www.blogger.com/profile/07112776940557570239</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://3.bp.blogspot.com/_o1kiijwXpPc/So-ECGs5IWI/AAAAAAAAABg/2Qp8wEFaeRo/S220/gg.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6221473894826881864.post-1438137005391545142</id><published>2010-01-19T00:38:00.000-08:00</published><updated>2010-01-19T01:28:15.723-08:00</updated><title type='text'>Webmontag in Würzburg (webmWue)</title><content type='html'>Gestern (18.01.2009) gab es wieder ein Webmontag in Würzburg.&lt;br /&gt;Zunächst  ein Dankeschön an diejenigen, die die Initiative ergriffen haben und vor allem auch an die Firma Identitätsarchitekten (&lt;a href="http://www.identitaetsarchitekten.de"&gt;http://www.identitaetsarchitekten.de&lt;/a&gt;) die Ihr Büro zur Verfügung gestellt haben.&lt;br /&gt;&lt;br /&gt;Teilnehmer- und Vortragsliste gibt es hier: &lt;a href="http://webmontag.de/location/wuerzburg/index"&gt;http://webmontag.de/location/wuerzburg/index&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Wenn Sie den Livestream (&lt;a href="http://www.ustream.tv/channel/webmontag-w&amp;uuml;rzburg"&gt;http://www.ustream.tv/channel/webmontag-w&amp;uuml;rzburg&lt;/a&gt;) verpasst haben, bin ich sicher, dass der "Videomaster" Christian Pier (&lt;a href="http://www.facebook.com/christian.pier"&gt;http://www.facebook.com/christian.pier&lt;/a&gt;) das Video unter der selben Adresse einstellen wird.&lt;br /&gt;&lt;br /&gt;Ich bin immer wieder begeistert, dass es Leute gibt, die unaufgefordert Vorträge vorbereiten und diese vor Publikum halten.&lt;br /&gt;Ich meine...wie kennen es doch alle von der Schule. Kaum jemandem hat sich vor zu Tafel getraut um die Klasse etwas vor zu tragen ;-)&lt;br /&gt;Gut, wir sind älter und reifer (???) ;-) geworden, und die Sache hat natürlich auch ein gewissen "Selbstmarketing-Zweck", was aber das Event in keinster weise schmälern soll. Ganz im Gegenteil. Diese Events leben davon, dass jeder ein Beitrag leistet. Daher fühlte ich mich diesmal "genötigt" ;-) einen kleinen Beitrag zu leisten. Ein Thema für das nächste mal liegt schon in der Pipe-Line.&lt;br /&gt;&lt;br /&gt;Der Abend klang anschließend in der Kneipe "Standard" (&lt;a href="http://www.standard-wuerzburg.de"&gt;http://www.standard-wuerzburg.de&lt;/a&gt;) aus.&lt;br /&gt;Ich musste mich fragen, was die anderen Gäste gedacht haben, als Ca 15 WebMontag-Teilnehmer den Laden stürmen und als erstes ihre iPhones rausholen und sich in dem iPhone-App "Gowalla" (&lt;a href="http://gowalla.com"&gt;http://gowalla.com&lt;/a&gt;) einchecken.&lt;br /&gt;&lt;br /&gt;Hatte ich vorhin gesagt, dass wir reifer geworden sind... ;-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6221473894826881864-1438137005391545142?l=www.stefan-kuehn.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.stefan-kuehn.com/feeds/1438137005391545142/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.stefan-kuehn.com/2010/01/webmontag-in-wurzburg-webmwue.html#comment-form' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6221473894826881864/posts/default/1438137005391545142'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6221473894826881864/posts/default/1438137005391545142'/><link rel='alternate' type='text/html' href='http://www.stefan-kuehn.com/2010/01/webmontag-in-wurzburg-webmwue.html' title='Webmontag in Würzburg (webmWue)'/><author><name>Stefan Kühn</name><uri>http://www.blogger.com/profile/07112776940557570239</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://3.bp.blogspot.com/_o1kiijwXpPc/So-ECGs5IWI/AAAAAAAAABg/2Qp8wEFaeRo/S220/gg.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6221473894826881864.post-7300743512560761990</id><published>2009-10-14T23:35:00.000-07:00</published><updated>2009-10-14T23:44:29.815-07:00</updated><title type='text'>Symfony Class Loader Problem mit dem sfThumbnailPlugin</title><content type='html'>Wenn man das symfony plugin sfThumbnailPlugin wie folgt installiert:&lt;br /&gt;&lt;span style="font-weight: bold; font-family: courier new;"&gt;symfony plugin:install sfThumbnailPlugin&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;stellt man bei der Benutzung z.B. in einem Modell fest, dass die Klasse sfThumbnail  nicht gefunden wird.&lt;br /&gt;&lt;br /&gt;Das ist ungewöhnlich, da die Klassen von installierten Plugins in der regel von dem Class Loader gefunden werden.&lt;br /&gt;&lt;br /&gt;Die Lösung auf das Problem ist jedoch einfach.&lt;br /&gt;&lt;br /&gt;In der Datei&lt;br /&gt;lib\vendor\symfony\lib\config\config\autoload.yml&lt;br /&gt;bringen wir symfony bei, wo nach Klassen gesucht werden sollen.&lt;br /&gt;&lt;br /&gt;Es gibt dabei zwei Möglichkeiten:&lt;br /&gt;&lt;br /&gt;1. Wir sorgen dafür, dass das /lib -Verzeichnis von allen Plugins durch gesucht werden.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;  &lt;span style="font-family: courier new;"&gt;plugins_lib:&lt;/span&gt;&lt;span style="font-family: courier new;"&gt;&lt;br /&gt;  &amp;nbsp;&amp;nbsp;name: plugins lib&lt;/span&gt;&lt;span style="font-family: courier new;"&gt;&lt;br /&gt;  &amp;nbsp;&amp;nbsp;path: %SF_PLUGINS_DIR%/*/lib&lt;/span&gt;&lt;span style="font-family: courier new;"&gt;&lt;br /&gt;  &amp;nbsp;&amp;nbsp;recursive: on&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;2. Wir fügen nur das /lib -Verzeichnis von dem sfThumbnailPlugin hinzu&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt; &lt;span style="font-family: courier new;"&gt;sfThumbnailPlugin:&lt;/span&gt;&lt;span style="font-family: courier new;"&gt;&lt;br /&gt;  &amp;nbsp;&amp;nbsp;name:           plugins lib&lt;/span&gt;&lt;span style="font-family: courier new;"&gt;&lt;br /&gt;  &amp;nbsp;&amp;nbsp;path:           %SF_PLUGINS_DIR%/sfThumbnailPlugin/lib&lt;/span&gt;&lt;span style="font-family: courier new;"&gt;&lt;br /&gt;  &amp;nbsp;&amp;nbsp;recursive:      on&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Vorsicht!&lt;/span&gt;&lt;br /&gt;Die Alternative 1 oben hat (bei mir) dazu geführt, dass embeded Forms nicht mehr funktionieren. In dem Fall kann ich also Alternative 2 empfehlen.&lt;br /&gt;&lt;br /&gt;Viel Erfolg!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6221473894826881864-7300743512560761990?l=www.stefan-kuehn.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.stefan-kuehn.com/feeds/7300743512560761990/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.stefan-kuehn.com/2009/10/symfony-class-loader-problem-mit-dem.html#comment-form' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6221473894826881864/posts/default/7300743512560761990'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6221473894826881864/posts/default/7300743512560761990'/><link rel='alternate' type='text/html' href='http://www.stefan-kuehn.com/2009/10/symfony-class-loader-problem-mit-dem.html' title='Symfony Class Loader Problem mit dem sfThumbnailPlugin'/><author><name>Stefan Kühn</name><uri>http://www.blogger.com/profile/07112776940557570239</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://3.bp.blogspot.com/_o1kiijwXpPc/So-ECGs5IWI/AAAAAAAAABg/2Qp8wEFaeRo/S220/gg.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6221473894826881864.post-1285698764172261060</id><published>2009-10-06T11:39:00.000-07:00</published><updated>2009-10-06T12:07:35.344-07:00</updated><title type='text'>http://www.unternehmermontag.de</title><content type='html'>Als ich das erste mal einen Webmontag (www.webmontag.de) besuchte, war ich total begeistert. Hier halten Leute interessante, 20-minütige Fachvorträge weil es denen Spaß macht und nicht weil der Chef es befolen hat.&lt;br /&gt;&lt;br /&gt;Zwei Monate später (man möge mir verzeihen, dass es so lange gedauert hat ;-) kommt mir der Gedanke:&lt;br /&gt;"Warum nur für Leute aus der Web-Technologie-Branche?"&lt;br /&gt;&lt;br /&gt;Kurz entschloßen erstellte ich &lt;span style="font-weight:bold;"&gt;http://www.unternehmermontag.de&lt;/span&gt;&lt;br /&gt;Ein "Webmontag" für jede Branche!&lt;br /&gt;&lt;br /&gt;Der Webmontag ist super! Aber da treffen sich die eben nur Web-Technologie-Fachkräfte. Es ist sehr nett unter Spezialisten zu fachsimpeln. Interessante Aufträge springen wohl aber nicht raus. Die anderen Teilnehmern sind ja auch aus der Branche…&lt;br /&gt;&lt;br /&gt;Der Unternehmermontag ist breiter gefächert. Mal angenommen einen Versicherungsfachwirt erzählt etwas über Betriebliche Altersvorsorge. Das interessiert sowohl den Bäcker, den Heizungsbauer, den Steuerberater, den Autohändler, den Architekten, der Druckerieunternehmer usw usw.&lt;br /&gt;Das sind also alles potentielle Kunden für den Versicherungsfachwirt.&lt;br /&gt;Der Druckereiunternehmer könnte ein Vergleich zwischen Digital- und Offsetdruck anstellen. Auch er hat potentielle Kunden unter den Zuhörern. Jeder Unternehmer muss mal etwas drucken. Sei es nur die Briefbögen.&lt;br /&gt;&lt;br /&gt;Der Unternehmermontag ist aber keine Werbeveranstaltung!&lt;br /&gt;Jeder Referent sollte einen interessanten Fachvortrag halten.&lt;br /&gt;Die Werbung kommt als "spin off"-Produkt.&lt;br /&gt;&lt;br /&gt;Also. Viel spaß damit!&lt;br /&gt;Es ist kostenlos!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6221473894826881864-1285698764172261060?l=www.stefan-kuehn.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.stefan-kuehn.com/feeds/1285698764172261060/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.stefan-kuehn.com/2009/10/httpwwwunternehmermontagde.html#comment-form' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6221473894826881864/posts/default/1285698764172261060'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6221473894826881864/posts/default/1285698764172261060'/><link rel='alternate' type='text/html' href='http://www.stefan-kuehn.com/2009/10/httpwwwunternehmermontagde.html' title='http://www.unternehmermontag.de'/><author><name>Stefan Kühn</name><uri>http://www.blogger.com/profile/07112776940557570239</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://3.bp.blogspot.com/_o1kiijwXpPc/So-ECGs5IWI/AAAAAAAAABg/2Qp8wEFaeRo/S220/gg.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6221473894826881864.post-6783635266228265499</id><published>2009-09-15T12:31:00.000-07:00</published><updated>2009-10-08T09:19:12.585-07:00</updated><title type='text'>MIME type problem mit Symfony's sfValidatorFile unter PHP 5.3.0</title><content type='html'>Wenn Sie die Symfony-Klasse sfValidatorFile in der Version 1.2.8 und älter, zusammen mit PHP 5.3.0 nutzen, werden Sie die Fehlermeldung:&lt;br /&gt;"Invalid mime type (image/jpeg; charset=binary)"&lt;br /&gt;erhalten. Hier ein Beispiel mit eine jpg-Datei. Das Problem trift aber auch auf andere mime types zu!&lt;br /&gt;&lt;br /&gt;Der Grund für das Problem liegt nicht bei Symfony, sondern in eine Änderung in der PHP-Version 5.3.0 Die PHP-Funktion finfo_file liefert jetzt in der Version 5.3.0 nicht nur den mime type (z.B. "image/jpeg") sondern auch den character set, wie oben bereits in der Fehlermeldung gezeigt:&lt;br /&gt;"image/jpeg; charset=binary"&lt;br /&gt;&lt;br /&gt;Das Problem wird hier erläutert:&lt;br /&gt;&lt;a href="http://bugs.php.net/bug.php?id=48885"&gt;&lt;span style="font-style: italic;"&gt;http://bugs.php.net/bug.php?id=48885&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;Hier wird deutlich erwähnt, dass es ein Feature und kein Bug ist!&lt;br /&gt;&lt;br /&gt;Leider ist diese gravierende Änderung, die die Rückvärtskompatibilität beeinträchtigt, nicht in die Dokumentation eingeflossen:&lt;br /&gt;&lt;a href="http://php.net/manual/en/function.finfo-file.php"&gt;&lt;span style="font-style: italic;"&gt;http://php.net/manual/en/function.finfo-file.php&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Entwickler bei ZEND haben den code in ihre lib nachgezogen, sodass es mit beiden Versionen klar kommt.&lt;br /&gt;&lt;br /&gt;Bis Symfony nachgezogen hat, können Sie sich mit diesem work around selber helfen. In Ihre Form-Klasse, wo Sie sfValidatorFile nutzen, geben  Sie einfach explizit die "neuen" mime types mit:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;$this-&gt;validatorSchema['bild'] = new sfValidatorFile(array('mime_types' =&gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;array(&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;'image/jpeg; charset=binary',&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;'image/pjpeg; charset=binary',&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;'image/gif; charset=binary',&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;'image/png; charset=binary',&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;'image/x-png; charset=binary',&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;)));&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Und wenn Sie wie ich, auch abwechselnd mit älteren PHP-Versionen arbeiten, geben Sie einfach beide formate mit:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;$this-&gt;validatorSchema['bild'] = new sfValidatorFile(array('mime_types' =&gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;array(&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;'image/jpeg',&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;'image/pjpeg',&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;'image/gif',&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;'image/png',&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;'image/x-png',&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;'image/jpeg; charset=binary',&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;'image/pjpeg; charset=binary',&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;'image/gif; charset=binary',&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;'image/png; charset=binary',&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;'image/x-png; charset=binary',&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;)));&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Viel Erfolg!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6221473894826881864-6783635266228265499?l=www.stefan-kuehn.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.stefan-kuehn.com/feeds/6783635266228265499/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.stefan-kuehn.com/2009/09/mime-type-problem-mit-symfonys.html#comment-form' title='2 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6221473894826881864/posts/default/6783635266228265499'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6221473894826881864/posts/default/6783635266228265499'/><link rel='alternate' type='text/html' href='http://www.stefan-kuehn.com/2009/09/mime-type-problem-mit-symfonys.html' title='MIME type problem mit Symfony&apos;s sfValidatorFile unter PHP 5.3.0'/><author><name>Stefan Kühn</name><uri>http://www.blogger.com/profile/07112776940557570239</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://3.bp.blogspot.com/_o1kiijwXpPc/So-ECGs5IWI/AAAAAAAAABg/2Qp8wEFaeRo/S220/gg.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6221473894826881864.post-3042625297539638129</id><published>2009-09-01T14:26:00.000-07:00</published><updated>2009-09-01T14:30:53.818-07:00</updated><title type='text'>MySQL Socket-Problem unter Mac OS X</title><content type='html'>Nach dem wir nun Apache, MySQL und PHP auf dem Mac OS X (Snow Leopard) zum laufen gebracht haben (siehe vorheriger Blogeintrag), wollen wir auch symfony mit dem doctrine OR-Mapper zum fliegen bringen.&lt;br /&gt;&lt;br /&gt;Die Installation der 64-bit-Version von MySQL (mysql-5.1.37-osx10.5-x86_64.dmg) unter Snow Leopart ist übrigens problemlos.&lt;br /&gt;&lt;br /&gt;Wenn man aber mit doctrine-Mittel gegen die MySQL-Datenbank arbeiten will, bekommt man folgende Meldung:&lt;br /&gt;Warning: PDO::__construct(): [2002] No such file or directory (trying to connect via unix:///var/mysql/mysql.sock) in…&lt;br /&gt;&lt;br /&gt;Das hat damit zu tun, dass die php.ini (ursprunglich die php.ini.default vom Snow Leopard bereitgestellt) etwas unglücklich konfiguriert ist.&lt;br /&gt;Das Verzeichnis für MySQL's PDO-Socket ist falsch angegeben. Der Parameter pdo_mysql.default_socket in der php.ini zeigt auf das Verzeichnis&lt;br /&gt;/var/mysql/mysql.sock&lt;br /&gt;&lt;br /&gt;Es wäre besser die Zeile mit einem ";" komplett zu deaktivieren, da dann die MySQL defauts verwendet wird.&lt;br /&gt;Ein Blick in die MySQL-Doku verrät jedoch, dass das default-Verzeichns für die MySQL Socket-Datei "/tmp" ist.&lt;br /&gt;&lt;br /&gt;Also, das Problem ist entweder so&lt;br /&gt;; pdo_mysql.default_socket=/var/mysql/mysql.sock&lt;br /&gt;oder so&lt;br /&gt;pdo_mysql.default_socket=/tmp/mysql.sock&lt;br /&gt;aus dem Weg geräumt.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6221473894826881864-3042625297539638129?l=www.stefan-kuehn.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.stefan-kuehn.com/feeds/3042625297539638129/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.stefan-kuehn.com/2009/09/mysql-socket-problem-unter-mac-os-x.html#comment-form' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6221473894826881864/posts/default/3042625297539638129'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6221473894826881864/posts/default/3042625297539638129'/><link rel='alternate' type='text/html' href='http://www.stefan-kuehn.com/2009/09/mysql-socket-problem-unter-mac-os-x.html' title='MySQL Socket-Problem unter Mac OS X'/><author><name>Stefan Kühn</name><uri>http://www.blogger.com/profile/07112776940557570239</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://3.bp.blogspot.com/_o1kiijwXpPc/So-ECGs5IWI/AAAAAAAAABg/2Qp8wEFaeRo/S220/gg.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6221473894826881864.post-1893596048319045422</id><published>2009-09-01T02:32:00.000-07:00</published><updated>2009-09-01T03:01:22.002-07:00</updated><title type='text'>Apache und PHP unter Mac OS X einrichten</title><content type='html'>Hier ein kleines Kochrezept für das Einrichten eines virtual Hosts unter Apache wo auch PHP benötigt wird.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Schritt 1:&lt;/span&gt;&lt;br /&gt;Der vorinstallierte Apache Webserver starten:&lt;br /&gt;- In den Systemeinstellungen auf "Freigaben" klicken.&lt;br /&gt;- "Webfreigabe" anwählen.&lt;br /&gt;&lt;br /&gt;Jetzt erscheint in dem Dialog rechts die Adresse zu der persönlichen Webseite:&lt;br /&gt;http://[ihre IP-Adresse]/[ihr USER]/&lt;br /&gt;Und die Webseite ihres Computers:&lt;br /&gt;http://[ihre IP-Adresse]&lt;br /&gt;&lt;br /&gt;Die Webseite Ihres Computers erreichen sie auch mit dem vordefinierten Hostnamen "localhost":&lt;br /&gt;http://localhost/&lt;br /&gt;&lt;br /&gt;localhost hat, neben bei erwähnt, die IP-Adresse 127.0.0.1&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Schritt 2:&lt;/span&gt;&lt;br /&gt;Tragen Sie in /etc/hosts einen neuen Hostnamen ein, mit dem wir später eine Webseite unter einem eigenem (virtuellem) Host erreichen.&lt;br /&gt;Beispiel:&lt;br /&gt;127.0.0.1       meintestdomain.de&lt;br /&gt;&lt;br /&gt;Nach ein neustart des Rechners erreichen wir mit "meintestdomain.de" die selbe Webseite wie mit "localhost", da wir für meintestdomain.de die selbe IP-Adresse wie für localhost vergeben haben.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Schritt 3:&lt;/span&gt;&lt;br /&gt;Jetzt konfigurieren wir den Apache Webserver für den Betrieb mit unserem neuen (virtuellen) Host meintestdomain.de&lt;br /&gt;&lt;br /&gt;In der Konfigurationsdatei /private/etc/apache2/httpd.conf&lt;br /&gt;aktivieren wir die Zeile&lt;br /&gt;#Include /private/etc/apache2/extra/httpd-vhosts.conf&lt;br /&gt;indem wir das "#" entfernen.&lt;br /&gt;Das ist die Konfigurationsdatei für virtuelle Hosts.&lt;br /&gt;&lt;br /&gt;Damit wir eine Testwebseite zum anzeigen haben, legen wir erst das Verzeichnis "meintestdomain" z.B. in unserem "home-Ordner" an.&lt;br /&gt;Neues Verzeichnis: /Users/[ihr User]/meintestdomain&lt;br /&gt;In diesem Verzeichnis legen Sie dann irgend eine HTML Datei ab, mit dem Namen index.html&lt;br /&gt;Kopieren Sie z.B. die Datei, die vom System angelegt worden ist:&lt;br /&gt;http://[ihre IP-Adresse]/[ihr USER]/&lt;br /&gt;Die befindet sich hier: /Users/[ihr USER]/Sites/index.html&lt;br /&gt;&lt;br /&gt;In der Konfigurationsdatei&lt;br /&gt;/private/etc/apache2/extra/httpd-vhosts.conf&lt;br /&gt;konfigurieren wir nun unser virtueller Host:&lt;br /&gt;&lt;br /&gt;&amp;lt;virtualhost&amp;gt;&lt;br /&gt;ServerName meintestdomain.de&lt;br /&gt;DocumentRoot "/Users/[ihr User]/meintestdomain"&lt;br /&gt;DirectoryIndex index.html&lt;br /&gt;&amp;lt;directory&amp;gt;&lt;br /&gt;AllowOverride All&lt;br /&gt;Allow from All&lt;br /&gt;&amp;lt;/directory&amp;gt;&lt;br /&gt;&amp;lt;/virtualhost&amp;gt;&lt;br /&gt;&lt;br /&gt;Starten Sie jetzt Apache neu, in dem Sie in dem Einstellungen unter "Schritt 1" oben "Webfreigabe" ab- und wieder anwählen.&lt;br /&gt;&lt;br /&gt;Jetzt erreichen Sie die Webseite unter:&lt;br /&gt;http://meintestdomain.de/&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Schritt 4:&lt;/span&gt;&lt;br /&gt;PHP konfigurieren.&lt;br /&gt;&lt;br /&gt;Zunächst müssen wir das PHP Modul in Apache aktivieren.&lt;br /&gt;In der uns jetz bekannten Konfigurationsdatei&lt;br /&gt;/private/etc/apache2/httpd.conf&lt;br /&gt;aktivieren wir die Zeile&lt;br /&gt;#LoadModule php5_module        libexec/apache2/libphp5.so&lt;br /&gt;in dem wir das "#" entfernen.&lt;br /&gt;&lt;br /&gt;Starten Sie jetzt Apache neu, in dem Sie in dem Einstellungen unter "Schritt 1" oben "Webfreigabe" ab- und wieder anwählen.&lt;br /&gt;&lt;br /&gt;Machen Sie jetzt ein erster Test. Erstellen Sie in dem Ordner, der in der virtual Host- Konfiguration "DocumentRoot" genannt wurde, die Datei test.php mit folgendem Inhalt:&lt;br /&gt;&amp;lt;?php phpinfo(); ?&amp;gt;&lt;br /&gt;&lt;br /&gt;Jetzt erreichen Sie diese Seite mit: http://meintestdomain.de/test.php&lt;br /&gt;Sie sehen sämtliche PHP-Einstellungen.&lt;br /&gt;&lt;br /&gt;Unter anderem sehen Sie, dass PHP in dem Ordner /etc nach eine Konfigurationsdatei sucht. Siehe "Configuration File (php.ini) Path"&lt;br /&gt;Beachten Sie, dass "/etc" nur ein Verweis auf den physischen Ordner /private/etc ist!&lt;br /&gt;&lt;br /&gt;Sie sehen, dass es keine php.ini in dem Ordner /private/etc gibt. PHP kommt auch ohne Konfigurationsdatei aus! Wenn Sie aber eigene Änderungen machen wollen, kopieren Sie die Datei php.ini.default nach php.ini und machen darin Ihre Einstellungen.&lt;br /&gt;&lt;br /&gt;Fertig!&lt;br /&gt;&lt;br /&gt;Viel Spaß :-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6221473894826881864-1893596048319045422?l=www.stefan-kuehn.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.stefan-kuehn.com/feeds/1893596048319045422/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.stefan-kuehn.com/2009/09/apache-und-php-unter-max-os-x.html#comment-form' title='3 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6221473894826881864/posts/default/1893596048319045422'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6221473894826881864/posts/default/1893596048319045422'/><link rel='alternate' type='text/html' href='http://www.stefan-kuehn.com/2009/09/apache-und-php-unter-max-os-x.html' title='Apache und PHP unter Mac OS X einrichten'/><author><name>Stefan Kühn</name><uri>http://www.blogger.com/profile/07112776940557570239</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://3.bp.blogspot.com/_o1kiijwXpPc/So-ECGs5IWI/AAAAAAAAABg/2Qp8wEFaeRo/S220/gg.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6221473894826881864.post-5639950646189483798</id><published>2009-08-31T02:06:00.000-07:00</published><updated>2009-08-31T02:14:26.642-07:00</updated><title type='text'>Wenn man im mac Finder mehr sehen will...</title><content type='html'>So bekommt man im Finder versteckte Dateien und Ordner zu sehen.&lt;br /&gt;In einem Terminal-Fenster:&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;defaults write com.apple.finder AppleShowAllFiles 1&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Dann den Finder neu starten:&lt;br /&gt;Tasten gleichzeitig drücken: alt + cmd + esc&lt;br /&gt;Oder ein Klick auf dem Apfel und "Sofort beenden..."&lt;br /&gt;Im Dialog den Finder auswählen und "Neu starten" anklicken.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6221473894826881864-5639950646189483798?l=www.stefan-kuehn.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.stefan-kuehn.com/feeds/5639950646189483798/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.stefan-kuehn.com/2009/08/wenn-man-im-mac-finder-mehr-sehen-will.html#comment-form' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6221473894826881864/posts/default/5639950646189483798'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6221473894826881864/posts/default/5639950646189483798'/><link rel='alternate' type='text/html' href='http://www.stefan-kuehn.com/2009/08/wenn-man-im-mac-finder-mehr-sehen-will.html' title='Wenn man im mac Finder mehr sehen will...'/><author><name>Stefan Kühn</name><uri>http://www.blogger.com/profile/07112776940557570239</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://3.bp.blogspot.com/_o1kiijwXpPc/So-ECGs5IWI/AAAAAAAAABg/2Qp8wEFaeRo/S220/gg.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6221473894826881864.post-31200796914530938</id><published>2009-08-22T23:29:00.000-07:00</published><updated>2009-08-23T00:33:57.785-07:00</updated><title type='text'>symfony (1.2) Bug (sfWidgetFormInputCheckbox)</title><content type='html'>Das symfony-Framework ist phantastisch!&lt;br /&gt;Die version 1.2 enthällt jedoch einen kleinen Bugg, der leicht zu beheben ist.&lt;br /&gt;Und zwar werden Checkboxen initial mit haken (checked) dargestellt. Ein "jungfräulicher" checkbox soll ja normaler weise "nicht gesetzt" erscheinen.&lt;br /&gt;&lt;br /&gt;Zu diesem Bug gibt es übrigens schon ein Ticket:&lt;br /&gt;&lt;a href="http://trac.symfony-project.org/ticket/3917"&gt;http://trac.symfony-project.org/ticket/3917&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Das Problem liegt in der render-Methode der Klasse sfWidgetFormInputCheckbox, die Sie hier finden:&lt;br /&gt;"dein Projekt"\lib\vendor\symfony\lib\widget\sfWidgetFormInputCheckbox.class.php&lt;br /&gt;&lt;br /&gt;So sieht die Methode im Original aus:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;public function render($name, $value = null, $attributes = array(), $errors = array())&lt;br /&gt;{&lt;br /&gt;if (!is_null($value) &amp;amp;&amp;amp; $value !== false) {&lt;br /&gt;   $attributes['checked'] = 'checked';&lt;br /&gt;}&lt;br /&gt;if (!isset($attributes['value']) &amp;amp;&amp;amp; !is_null($this-&gt;getOption('value_attribute_value'))) {&lt;br /&gt;   $attributes['value'] = $this-&gt;getOption('value_attribute_value');&lt;br /&gt;}&lt;br /&gt;return parent::render($name, null, $attributes, $errors);&lt;br /&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Der Fehler ist leicht zu beheben in dem man eine zusätzliche Bedingung in der ersten if-abfrage hinzufügt. Um Probleme bei späteren symfony updates aus dem weg zu gehen, leitet man die vorhandene Klasse selbst ab. Wenn man dabei auch noch die Namenskonvention von symfony für Dateien und Klassen einhällt, wir die Klasse auch noch von dem class loader gefunden ;-)&lt;br /&gt;&lt;br /&gt;Neue Datei: MyWidgetFormInputCheckbox.class.php&lt;br /&gt;Klasse mit der überschriebene render-Methode:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;&lt;span style="font-family:courier new;"&gt;&lt;/span&gt;class MyWidgetFormInputCheckbox extends sfWidgetFormInputCheckbox&lt;br /&gt;{&lt;br /&gt;public function render($name, $value = null, $attributes = array(), $errors = array())&lt;br /&gt;{&lt;br /&gt;   if (!is_null($value) &amp;amp;&amp;amp; $value !== false &lt;span style="color: rgb(255, 0, 0);"&gt;&amp;amp;&amp;amp; $value != 0&lt;/span&gt;) {&lt;br /&gt;       $attributes['checked'] = 'checked';&lt;br /&gt;   }  &lt;br /&gt;   if (!isset($attributes['value']) &amp;amp;&amp;amp; !is_null($this-&gt;getOption('value_attribute_value'))) {&lt;br /&gt;       $attributes['value'] = $this-&gt;getOption('value_attribute_value');&lt;br /&gt;   }&lt;br /&gt;   return parent::render($name, null, $attributes, $errors);&lt;br /&gt;}&lt;br /&gt;}&lt;/span&gt;&lt;span style="font-size:78%;"&gt;&lt;span style="font-family:courier new;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;Die zusätzliche Bedingung ist oben in rot gekennzeichnet (es ist eine null nach dem !=).&lt;br /&gt;Der Wert von $value ist im ungesetzten (unchecked) Zustand 0 (null).&lt;br /&gt;&lt;br /&gt;Bei der Erstellung des Widgets in der Form-Klasse, macht es Sinn einen Wert für den gesetzen Zustand zu definieren:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;class MySampleForm extends BaseSampleForm&lt;br /&gt;{&lt;br /&gt;public function configure()&lt;br /&gt;{   &lt;br /&gt;...&lt;br /&gt;$this-&gt;widgetSchema['MyCheckbox']        = new MyWidgetFormInputCheckbox(array(), array(&lt;span style="color: rgb(255, 0, 0);"&gt;'value' =&gt; 1&lt;/span&gt;));&lt;br /&gt;...&lt;br /&gt;}&lt;br /&gt;}&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6221473894826881864-31200796914530938?l=www.stefan-kuehn.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.stefan-kuehn.com/feeds/31200796914530938/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.stefan-kuehn.com/2009/08/symfony-12-bug-sfwidgetforminputcheckbo.html#comment-form' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6221473894826881864/posts/default/31200796914530938'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6221473894826881864/posts/default/31200796914530938'/><link rel='alternate' type='text/html' href='http://www.stefan-kuehn.com/2009/08/symfony-12-bug-sfwidgetforminputcheckbo.html' title='symfony (1.2) Bug (sfWidgetFormInputCheckbox)'/><author><name>Stefan Kühn</name><uri>http://www.blogger.com/profile/07112776940557570239</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://3.bp.blogspot.com/_o1kiijwXpPc/So-ECGs5IWI/AAAAAAAAABg/2Qp8wEFaeRo/S220/gg.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6221473894826881864.post-4647930869901986055</id><published>2009-08-22T00:21:00.000-07:00</published><updated>2009-10-06T12:25:04.706-07:00</updated><title type='text'>Duplicate content in Google vermeiden.</title><content type='html'>Ein klassisches Problem.&lt;br /&gt;Die eigene Webseite ist sowohl unter firmendienste24.de und www.firmendienste24.de erreichbar und das führt zu dem "duplicate content"-Problem in Google.&lt;br /&gt;(firmendienste24.de dient hier durchgängig als Beispiel).&lt;br /&gt;&lt;br /&gt;Wie leite ich unter Apache ein request an firmendienste24.de an www.firmendienste24.de weiter?&lt;br /&gt;&lt;br /&gt;Man könnte eine VirtualHost-Klammer in Apaches httpd.conf erstellen und dort die Weiterleitung einrichten. Wenn man aber PLESK (z.B. unter SuSe-Linux) nutzt, stellt man schnell fest, dass die Lösung nicht so direkt ist... ;-)&lt;br /&gt;&lt;br /&gt;Das Problem liegt darin, daß PLESK die Haupt-Konfigdatei&lt;br /&gt;/srv/www/vhosts/firmendienste24.de/conf/httpd.include&lt;br /&gt;jedes mal wenn man Änderungen in der PLESK-Oberfläche speichert, neu schriebt.&lt;br /&gt;&lt;br /&gt;Daher steht in den Kommentaren, dass man die eigenen Settings in&lt;br /&gt;/srv/www/vhosts/firmendienste24.de/conf/vhost.conf&lt;br /&gt;platzieren soll.&lt;br /&gt;&lt;br /&gt;Klingt ja zunächst nicht schlecht, wäre es nicht für das unglücklich platzierte include statement in der oben genanten Datei&lt;br /&gt;/srv/www/vhosts/firmendienste24.de/conf/httpd.include&lt;br /&gt;Die ist nämlich hier platziert:&lt;br /&gt;&lt;br /&gt;&amp;lt;virtualHost&amp;gt;&lt;br /&gt;...&lt;br /&gt;     Include /srv/www/vhosts/firmendienste24.de/conf/vhost.conf&lt;br /&gt;&amp;lt;/virtualHost&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Wie man hier sieht kann man hier nicht eine neue VirtualHost-Klammer öffnen...&lt;br /&gt;&lt;br /&gt;Das Umleitungsproblem kann man unter Apache aber auch elegant mit einer Datei im root-Ordner der Webseite erschlagen. Die datei trägt den Namen ".htaccess". Eine Änderung darin bedarf nicht ein mal ein Apache Neustart.&lt;br /&gt;&lt;br /&gt;Diese Lösung verlangt wiederum, daß das Apache rewrite-Modul geladen ist...&lt;br /&gt;&lt;br /&gt;Das geht so:&lt;br /&gt;In der Datei&lt;br /&gt;/etc/sysconfig/apache2&lt;br /&gt;die Variable APACHE_MODULES&lt;br /&gt;um "rewrite" erwietern.&lt;br /&gt;&lt;br /&gt;Nach dem Restart von Apache in der Datei&lt;br /&gt;/etc/apache2/sysconfig.d/loadmodule.conf&lt;br /&gt;prüfen ob das Modul rewirite geladen ist.&lt;br /&gt;(Diese Datei wird nach jedem Neustart von Apache geschrieben, und kann daher nicht editiert werden!)&lt;br /&gt;Wir suchen dabei diese zeile:&lt;br /&gt;LoadModule rewrite_module  /usr/lib/apache2-prefork/mod_rewrite.so&lt;br /&gt;&lt;br /&gt;In der Datei&lt;br /&gt;/srv/www/vhosts/firmendienste24.de/web/.htaccess&lt;br /&gt;folgender Eintrag machen um die Weiterleitung zu vollziehen:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;Rewritecond %{HTTP_HOST} !^www\.firmendienste24\.de&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;RewriteRule (.*) http://www.firmendienste24.de/$1 [R=301,L]&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;301 ist ein return code für den Browser, der besagt, dass es eine permanente Weiterleitung ist.&lt;br /&gt;&lt;br /&gt;Benutzer von dem Framework symfony, stellen schnell fest, dass das Framework eine .htaccess Datei generiert. Der Innhalt kommt aber nicht zum tragen, da in der Datei geprüft wird, ob das rewrite-Modul geladen ist...:&lt;br /&gt;&amp;lt;IfModule mod_rewrite.c&amp;gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6221473894826881864-4647930869901986055?l=www.stefan-kuehn.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.stefan-kuehn.com/feeds/4647930869901986055/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.stefan-kuehn.com/2009/08/duplicate-content-in-google-vermeiden.html#comment-form' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6221473894826881864/posts/default/4647930869901986055'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6221473894826881864/posts/default/4647930869901986055'/><link rel='alternate' type='text/html' href='http://www.stefan-kuehn.com/2009/08/duplicate-content-in-google-vermeiden.html' title='Duplicate content in Google vermeiden.'/><author><name>Stefan Kühn</name><uri>http://www.blogger.com/profile/07112776940557570239</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://3.bp.blogspot.com/_o1kiijwXpPc/So-ECGs5IWI/AAAAAAAAABg/2Qp8wEFaeRo/S220/gg.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6221473894826881864.post-989486021407272602</id><published>2009-08-21T23:27:00.000-07:00</published><updated>2009-08-21T23:47:29.357-07:00</updated><title type='text'>Schritt eins :-) Ein AMP-System aufsetzen. Hier unter Windows:</title><content type='html'>=================&lt;br /&gt;Installation&lt;br /&gt;=================&lt;br /&gt;&lt;br /&gt;Software Versions:&lt;br /&gt;Apache - 2.2.11&lt;br /&gt;Mysql -  5.1.34-community&lt;br /&gt;Php - PHP Version 5.2.9-2 (Win32)&lt;br /&gt;&lt;br /&gt;Step 1: Default Apache Installation with these settings:&lt;br /&gt;       Network domain: localhost&lt;br /&gt;       Server Name: localhost&lt;br /&gt;       Admin Email: [your Email]&lt;br /&gt;       - Install for All Users&lt;br /&gt;       - Typical&lt;br /&gt;&lt;br /&gt;Step 2: Default installation of mysql&lt;br /&gt;       Port: 3306 (default!)&lt;br /&gt;       Standard Character Set (Latin1)&lt;br /&gt;       Include Bin Directory in Windows Path&lt;br /&gt;&lt;br /&gt;Step 3: Download php zip file (php-5.2.9-2-Win32.zip), extract it to your C: drive under c:\php&lt;br /&gt;&lt;br /&gt;Step 4: Add these paths to your Windows PATH environment variable, "C:\php", "C:\php\ext",&lt;br /&gt;       incase your installation directory is php. Ifn not, replace it with your directory.&lt;br /&gt;       Use the System Path variable, as you installer Apache for all users!&lt;br /&gt;       Be shure not to use empty spaces in your directory names as some Webservers don't like it.&lt;br /&gt;&lt;br /&gt;Step 5: Open httpd.conf, that is located in Apache web server installation folder,&lt;br /&gt;       under conf directory i.e., Apache Installation folder &gt; conf &gt; httpd.conf&lt;br /&gt;       Add these line at the en of the LoadModule section...&lt;br /&gt;       &gt;LoadModule php5_module "c:/php/php5apache2_2.dll"&lt;br /&gt;       (Hint!: This module is for Apache Version 2.2)&lt;br /&gt;&lt;br /&gt;       You can ignore the Hint (alt least unter Windows ;-):&lt;br /&gt;       # Add to the end of the AddModule section (in httpd.conf)&lt;br /&gt;       AddModule mod_php5.c&lt;br /&gt;&lt;br /&gt;       Add these lines in the &lt;ifmodule mime_module=""&gt; structure...&lt;br /&gt;       &gt;AddType application/x-httpd-php .php .php3 .php4 .phtml&lt;br /&gt;       &gt;AddType application/x-httpd-php-source .phps&lt;br /&gt;&lt;br /&gt;   And these line...&lt;br /&gt;       Be shure not to place them in some sub structure!&lt;br /&gt;       Be shure to use forward shlashes ("/"). Apache want it that way!&lt;br /&gt;       A trailing slash may also be necessary for directories.&lt;br /&gt;       PHPIniDir "C:/PHP/"&lt;br /&gt;&lt;br /&gt;       Another way to tell Apache where to find your PHP install directory is to set the&lt;br /&gt;       windows environment variable PHPRC (i user both ;-):&lt;br /&gt;   PHPRC C:\PHP&lt;br /&gt;&lt;br /&gt;Step 6: Goto php installation directory, there u'll find a file named php-ini-recommended.&lt;br /&gt;       Rename it to, php.ini&lt;br /&gt;       Create an subdirectory C:\PHP\includes for your php include files.&lt;br /&gt;&lt;br /&gt;Step 7: Now it's time to modify your php.ini file...&lt;br /&gt;       Open the file in notepad.&lt;br /&gt;       If you use MySQL, look for "extension=php_mysql.dll" and  un comment it,&lt;br /&gt;       i.e., delete the ";" at the start of the line.&lt;br /&gt;       If you also use PDO (with MySQL), un comment thiese lines to:&lt;br /&gt;       extension=php_pdo.dll&lt;br /&gt;       extension=php_pdo_mysql.dll&lt;br /&gt;       And these line if you use mbstrings and sockest...&lt;br /&gt;       extension=php_mbstring.dll&lt;br /&gt;       extension=php_sockets.dll&lt;br /&gt;       ...and so on...&lt;br /&gt;       Also look for "extension_dir=", where you place your extension directory ("C:\php\ext" ).&lt;br /&gt;       That's the directory where the extensions are, that you just enadled above (php_pdo.dll e.g.)&lt;br /&gt;       Also look for "include_path =", where you place your include directory (".;C:\PHP\includes")&lt;br /&gt;       (Don't forget to un comment the line! i.e. remove the ";")&lt;br /&gt;&lt;br /&gt;Step 8: Reboot the computer - logoff isn't enough!&lt;br /&gt;&lt;br /&gt;Step 9: Create a file test.php containing this line  and place it in the&lt;br /&gt;       Apache document root directory (that's where apache default is looking files to show.&lt;br /&gt;       (When using the default installation: C:\Programme\Apache Software Foundation\Apache2.2\htdocs)&lt;br /&gt;       Test ist by calling: http://localhost//test.php&lt;br /&gt;       Important is the hint at "Loaded Configuration File".&lt;br /&gt;       There You shold find the path (with file) to yout php.ini (e.g. "C:\PHP\php.ini ")&lt;br /&gt;&lt;br /&gt;Step10: Some PHP based Software need PEAR. You install it with the Bath C:\PHP\go-pear.bat&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;done :-)&lt;br /&gt;&lt;br /&gt;&lt;/ifmodule&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6221473894826881864-989486021407272602?l=www.stefan-kuehn.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.stefan-kuehn.com/feeds/989486021407272602/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.stefan-kuehn.com/2009/08/schritt-eins-ein-amp-system-aufsetzen.html#comment-form' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6221473894826881864/posts/default/989486021407272602'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6221473894826881864/posts/default/989486021407272602'/><link rel='alternate' type='text/html' href='http://www.stefan-kuehn.com/2009/08/schritt-eins-ein-amp-system-aufsetzen.html' title='Schritt eins :-) Ein AMP-System aufsetzen. Hier unter Windows:'/><author><name>Stefan Kühn</name><uri>http://www.blogger.com/profile/07112776940557570239</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://3.bp.blogspot.com/_o1kiijwXpPc/So-ECGs5IWI/AAAAAAAAABg/2Qp8wEFaeRo/S220/gg.jpg'/></author><thr:total>0</thr:total></entry></feed>
