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

<channel>
	<title>TheGeek.de &#187; programmieren</title>
	<atom:link href="http://thegeek.de/t/programmieren/feed" rel="self" type="application/rss+xml" />
	<link>http://thegeek.de</link>
	<description>WordPress, PHP, JavaScript, Web 2.0, Gaming, Motorräder, Fotografie, Piratenpartei, Privates</description>
	<lastBuildDate>Thu, 26 Jan 2012 13:19:21 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Warum ich meinen Beruf liebe und manchmal doch hasse</title>
		<link>http://thegeek.de/warum-ich-meinen-beruf-liebe-und-manchmal-doch-hasse</link>
		<comments>http://thegeek.de/warum-ich-meinen-beruf-liebe-und-manchmal-doch-hasse#comments</comments>
		<pubDate>Wed, 23 Dec 2009 12:36:30 +0000</pubDate>
		<dc:creator>Marc</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[beruf]]></category>
		<category><![CDATA[nachdenklich]]></category>
		<category><![CDATA[philosophisches]]></category>
		<category><![CDATA[programmieren]]></category>

		<guid isPermaLink="false">http://thegeek.de/?p=315</guid>
		<description><![CDATA[Ich mag es ein Programmierer zu sein, als Elektronen-Architekt an der digitalen Welt mitzubauen und im Metaverse meine Spuren zu hinterlassen. Ob es nun Text-Beiträge in meinen Blog sind, Plugins für WordPress, Code-Spielereien, oder eGovernment Web-Applikationen, womit ich meinen Lebensunterhalt verdiene. Es ist spannend die Entwicklung neuer Technologien zu beobachten und diese in seine eigene [...]]]></description>
			<content:encoded><![CDATA[<p>Ich mag es ein Programmierer zu sein, als Elektronen-Architekt an der digitalen Welt mitzubauen und im Metaverse meine Spuren zu hinterlassen. Ob es nun Text-Beiträge in meinen Blog sind, Plugins für WordPress, Code-Spielereien, oder eGovernment Web-Applikationen, womit ich meinen Lebensunterhalt verdiene. Es ist spannend die Entwicklung neuer Technologien zu beobachten und diese in seine eigene Arbeit einfließen zu lassen, permanent gefordert zu sein sich selbst Neues anzueignen, um die Weiterentwicklung mit zu gestalten. Das kommt meinem Geist sehr entgegen, der wissbegierig und neugierig und schnell gelangweilt ist, wenn er nicht beschäftigt wird. Zwar gibt es auch Phasen, in der er sich gerne der sinnlosen Zeitverschwendung widmet, aber selbst diese wird mit Herausforderungen ausgestaltet.</p>
<p>Trotzdem ist mein Berufsleben nicht immer befriedigend, denn alles Digitale unterliegt einem grundsätzlichen Problem. Digitale Informationen sind uns nah und zugleich physikalisch entfremdet, sie sind nicht greifbar und trotzdem da &#8211; immateriell. Wenn ich Schreiner wäre, oder Architekt, hätte mein Schaffen einen realen Höhepunkt indem am Ende etwas vor mit steht, dass ich berühren und erfühlen kann. Andere Menschen könnten den Stuhl oder das Haus sehen und nachvollziehen, wie es gefertigt wurde.</p>
<p>Die Schönheit von Software hingegen ist nur für diejenigen begreifbar, die ebenfalls Software schreiben. Da im Arbeitsleben selbst wir Programmierer hin und wieder ein Schulterklopfen brauchen &#8211; auch wir haben ein mehr oder minder ausgeprägtes Geltungsbedürfnis &#8211; kann dies praktisch nur von anderen Wissenden erfolgen. Vielleicht gibt es deswegen viele Blogs zu diesem Thema. Natürlich kann der Kunde sagen, dass ein bestimmtes Detail einer Anwendung schön gelöst ist, aber das ist etwas anderes, denn der Kunde versteht nicht, wie genial das in einer wunderschönen Funktion im Source-Code umgesetzt wurde. Code is poetry &#8211; aber eben nur für Programmierer. Für alle Außenstehenden, nicht Wissenden stellt Quellcode ein unverständliches Kauderwelsch dar.</p>
<p>Vielleicht schraube ich deswegen so gerne an Motorrädern herum. Das Ergebnis ist real. Aber was ist schon real&#8230;?</p>
]]></content:encoded>
			<wfw:commentRss>http://thegeek.de/warum-ich-meinen-beruf-liebe-und-manchmal-doch-hasse/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Interessantes Menü mit CSS Rotation</title>
		<link>http://thegeek.de/interessantes-menu-mit-css-rotation</link>
		<comments>http://thegeek.de/interessantes-menu-mit-css-rotation#comments</comments>
		<pubDate>Tue, 08 Dec 2009 12:06:02 +0000</pubDate>
		<dc:creator>Marc</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[menüs]]></category>
		<category><![CDATA[programmieren]]></category>
		<category><![CDATA[rotation]]></category>

		<guid isPermaLink="false">http://thegeek.de/?p=390</guid>
		<description><![CDATA[Gestern habe ich einen Artikel über Rotation von HTML Elementen mittels CSS auf snook.ca gelesen und da kam mir die Idee, dass mit diesen CSS-Anweisungen ja auch ein stylisches Menü gebastelt werden kann. Also habe ich mich gestern Abend kurz an den Rechner gesetzt und ein wenig gespielt. Nach anfänglichen Problemen im FireFox &#8211; was [...]]]></description>
			<content:encoded><![CDATA[<p>Gestern habe ich einen Artikel über Rotation von HTML Elementen mittels CSS auf <a href="http://snook.ca/archives/html_and_css/css-text-rotation">snook.ca</a> gelesen und da kam mir die Idee, dass mit diesen CSS-Anweisungen ja auch ein stylisches Menü gebastelt werden kann. Also habe ich mich gestern Abend kurz an den Rechner gesetzt und ein wenig gespielt. Nach anfänglichen Problemen im FireFox &#8211; was ich nicht erwartet hätte, ich dachte eher der IE spackt mal wieder rum &#8211; hat es mit meinem 90° gegen den Uhrzeigersinn gedrehtem Menü auch hingehauen.</p>
<p>Viel braucht es wirklich nicht, nur ein wenig HTML und ein wenig CSS, wobei der HTML-Code für das Menü absoluter Standard-Code ist, der auch für ein Top-Menü Verwendung finden würde.<span id="more-390"></span></p>
<pre class="brush:html">
<div id="menucontainer">
<div id="menu">
		<a href="#1">Home</a>
		<a href="#2">Weblog</a>
		<a href="#3">Infos</a>
		<a href="#4">Pornos</a>
		<a href="#5">Impressum</a>
	</div>
</div>
</pre>
<p>Der &#8220;menucontainer&#8221; ist übrigens überflüssig, den habe ich nur verwendet, weil ich das Menü nicht zentrieren, sondern etwas versetzt nach links anzeigen wollte.</p>
<p>Klarer wird es sichlich mit dem folgenden CSS, welches das Menü darstellt:</p>
<pre class="brush:css">
* {
	margin: 0em;
	padding: 0em;
	border: none;
}
#menucontainer {
	width: 800px;
	margin: auto auto;
}
#menu {
	width: 200px;
	-webkit-transform: rotate( -90deg );
	-moz-transform: rotate( -90deg );
	-moz-transform-origin: 100px 100px;
	filter: progid:DXImageTransform.Microsoft.BasicImage( rotation=3 );
}
#menu a:link, #menu a:visited {
	background-color: #F00;
	color: #FFF;

	margin-bottom: 25px;
	width: 200px;
	height: 50px;
	padding: 5px;
	line-height:90%;
	display: block;

	font-family: sans-serif;
	font-weight: bold;
	font-size: 24px;
	text-decoration: none;
}
#menu a:hover {
	background-color: #DDD;
	color: #F00;
}
</pre>
<p>Wenn ich ein CSS-Stylesheet beginne, schalte ich zuerst für alle Elemente die margins, paddings und die borders aus, um sie später für die Elemente wieder zu setzen, wo ich diese Eigenschaften wirklich brauche. Das macht die ganze Sache immer klarer und behebt viele Probleme mit dem IE auf einen Schlag.</p>
<p>Dem div &#8220;menucontainer&#8221; wird dann eine Breite von 800 Pixeln zugewiesen und ein automatischer margin, wodurch das gesamte div element im Browser zentriert wird.</p>
<p>Dann kommt schon die Anweidung, die das Menü gegen den Uhrzeigersinn dreht. Zuerst wird eine Breite vergeben, die der Breite der einzelnen Menüpunkte entspricht. Das muss so sein, sonst funktioniert es im IE 7 nicht.<br />
Danach folgen Anweisungen für die verschiedenen Browser um die Rotation durchzuführen. Wichtig beim FireFox: &#8220;-moz-transform-origin&#8221; muss korrekt gesetzt werden, sonst sitzen die Menüpunkte später zu tief. Jeweils die Hälfte der Menüpunkt-Breite für horizontalen und vertikalen Wert haben sich bei mir bewährt.</p>
<p>Die einzelnen Menüpunkt können beliebig formatiert werden, auch margins und paddings sind kein Problem. Wichtig ist allerdings, dass &#8220;display&#8221; auf &#8220;block&#8221; gesetzt wird und feste Breiten und Höhen vergeben werden, sonst wird es Probleme bei der Darstellung geben.</p>
<p>Getestet habe ich die Anweisungen im IE 7 und im FireFox 3.5. Im IE 6 läufts so lala, könnte man sicherlich auch noch hinbekommen, aber ich bin der Meinung, dass der IE 6 nicht mehr unterstützt werden muss. Wer den IE 6 noch nutzt, der fährt auch Autos ohne Bremsen.</p>
<p><a href="http://www.codemonster.de/source/menu_rotation_test.php" target="_blank">Hier gibt&#8217;s die komplette Datei</a> und hier eine kleine Vorschau, wie es aussehen könnte:</p>
<style type="text/css">
	#rotationtest_menucontainer {
		width: 800px;
		margin: auto auto;
	}
	#rotationtest_menu {
		width: 200px;
		-webkit-transform: rotate( -90deg );
		-moz-transform: rotate( -90deg );
		-moz-transform-origin: 100px 100px;
		filter: progid:DXImageTransform.Microsoft.BasicImage( rotation=3 );
	}
	#rotationtest_menu a:link, #rotationtest_menu a:visited {
		background-color: #F00;
		color: #FFF;</p>
<p>		margin-bottom: 25px;
		width: 200px;
		height: 50px;
		padding: 5px;
		line-height:90%;
		display: block;</p>
<p>		font-family: sans-serif;
		font-weight: bold;
		font-size: 24px;
		text-decoration: none;
	}
	#rotationtest_menu a:hover {
		background-color: #DDD;
		color: #F00;
	}
</style>
<div id="rotationtest_menucontainer">
<div id="rotationtest_menu">
		<a href="#1">Home</a><br />
		<a href="#2">Weblog</a><br />
		<a href="#3">Infos</a><br />
		<a href="#4">Pornos</a><br />
		<a href="#5">Impressum</a>
	</div>
</div>
<p><a href="http://flattr.com/thing/331572/Interessantes-Menu-mit-CSS-Rotation" target="_blank"><br />
<img src="http://api.flattr.com/button/flattr-badge-large.png" alt="Flattr this" title="Flattr this" border="0" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://thegeek.de/interessantes-menu-mit-css-rotation/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MySQL, die Indizes und der Typo3 Kickstarter</title>
		<link>http://thegeek.de/mysql-die-indizes-und-der-typo3-kickstarter</link>
		<comments>http://thegeek.de/mysql-die-indizes-und-der-typo3-kickstarter#comments</comments>
		<pubDate>Tue, 03 Nov 2009 10:42:20 +0000</pubDate>
		<dc:creator>Marc</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[indizes]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[programmieren]]></category>
		<category><![CDATA[typo3]]></category>

		<guid isPermaLink="false">http://thegeek.de/?p=293</guid>
		<description><![CDATA[Bei einem Kundenprojekt (ein Veranstaltungskalender-Modul in Typo3) wunderte ich mich kürzlich, warum im Echtbetrieb die Querys teilweise ewig lang laufen. Da ich die Datenbankstruktur mit dem Typo3 Kickstartet erzeugt hatte, ging ich davon aus, dass es an den Indizes nicht liegen kann, die werden vom Kickstarter schließlich mit gesetzt. Also probierte ich ein wenig rum, [...]]]></description>
			<content:encoded><![CDATA[<p>Bei einem Kundenprojekt (ein Veranstaltungskalender-Modul in Typo3) wunderte ich mich kürzlich, warum im Echtbetrieb die Querys teilweise ewig lang laufen. Da ich die Datenbankstruktur mit dem Typo3 Kickstartet erzeugt hatte, ging ich davon aus, dass es an den Indizes nicht liegen kann, die werden vom Kickstarter schließlich mit gesetzt.</p>
<p>Also probierte ich ein wenig rum, versuchte die Querys zu optimieren, den Code umzustricken, mit dem Ergebnis, dass alles nichts brachte. Eine Query von 3000 Datensätzen dauerte teilweise Minuten lang &#8211; was natürlich in der Rechnerwelt mehr als eine Ewigkeit ist. Okay, es wurden ziemlich viele Tabellen per Join hinzugezogen, aber 3000 Datensätze&#8230; pah, das ist doch wirklich lächerlich.</p>
<p>Also bin ich nochmal die Tabellenstruktur durchgegangen und siehe da: Zwei ID-Felder waren nicht mit einem Index versehen. Nach dem Hinzufügen dauert die Query dann 0,00 Sekunden. So soll es sein.</p>
<p>Blöder Typo3 Kickstarter. Wer damit arbeitet, aufgemerkt: Das Ding vergisst bei bestimmten Konstellationen die Indizes, also von Hand anlegen, sonst kann euch die Query bei komplexen Joins um die Ohren fliegen.</p>
<p>Das Veranstaltungskalender-Modul ist übrigens ziemlich pornös geworden: So mit Drag n Drop und Medienupload im Overlay, halt alles was man so mit Scriptaculous + Prototype so machen kann und Typo3 von Haus aus nicht mitbringt. Außerdem kann der Kalender wiederholende Termine an bestimmten Wochentagen, wobei die Eingabe richtig schön einfach ist. Ist auf jeden Fall eine nette GUI geworden.</p>
<p>Übrigens mag ich Typo3 nicht, die API ist scheiße dokumentiert und die Icons im Backend ätzend fitzelig und alles andere als selbsterklärend. Ich hoffe es ist bei der Entwicklung dieses einen Moduls geblieben. Schade, dass wir in der Firma kein WordPress anbieten. Da hätte ich richtig Spaß!</p>
]]></content:encoded>
			<wfw:commentRss>http://thegeek.de/mysql-die-indizes-und-der-typo3-kickstarter/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Die Crux mit dem Webdesign und den eigenen Ansprüchen</title>
		<link>http://thegeek.de/die-crux-mit-dem-webdesign-und-den-eigenen-anspruchen</link>
		<comments>http://thegeek.de/die-crux-mit-dem-webdesign-und-den-eigenen-anspruchen#comments</comments>
		<pubDate>Thu, 29 Oct 2009 13:34:26 +0000</pubDate>
		<dc:creator>Marc</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[ansprüche]]></category>
		<category><![CDATA[design]]></category>
		<category><![CDATA[layout]]></category>
		<category><![CDATA[programmieren]]></category>

		<guid isPermaLink="false">http://thegeek.de/die-crux-mit-dem-webdesign-und-den-eigenen-anspruchen</guid>
		<description><![CDATA[Zwar programmiere ich mehr, gelegentlich wird mir aber doch mal ein Webdesign auf&#8217;s Auge gedrückt, wobei ich das sehr gerne mache, aber es mir nicht so im Blut liegt, wie anderen in der Abteilung. Also startet man Fireworks und zwirbelt verschiedene Entwürfe, von denen einige richtig scheiße sind, aber irgendwann bilden sich dann doch einige [...]]]></description>
			<content:encoded><![CDATA[<p>Zwar programmiere ich mehr, gelegentlich wird mir aber doch mal ein Webdesign auf&#8217;s Auge gedrückt, wobei ich das sehr gerne mache, aber es mir nicht so im Blut liegt, wie anderen in der Abteilung. Also startet man Fireworks und zwirbelt verschiedene Entwürfe, von denen einige richtig scheiße sind, aber irgendwann bilden sich dann doch einige brauchbare Layouts heraus. Mit in wenig Glück ist sogar eins dabei, dass richtig gut ist und von dem der Erschaffer selbst sagen kann: Jau, das ist gut! Doch leider ist da ja auch noch der Kunde.<span id="more-278"></span></p>
<p>Also werden die besten Entwürfe an den Kunden übermittelt und natürlich entscheidet er sich für den, der einem selbst am wenigsten gefällt. Überzeugungsarbeit ist zwecklos, der Kunde hat schließlich immer Recht. Ergebnis ist letztendlich, dass die Motivation die Seite umzusetzen nicht wirklich gegeben ist. Das hat mehrere Gründe: Frustration, dass das Design, das man selbst für gut und richtig befunden hat nicht angenommen wird und natürlich auch die Tatsache, dass das Ergebnis für einen selbst ja aus Prinzip schon nicht befriedigend sein kann. Und eine rechte Lösung gibt es auch nicht: Der Kunde entscheidet und Design ist nun mal eine Geschmacksfrage.</p>
<p>Das macht wohl den Unterschied zum Profi-Designer aus: Er produziert Layouts, die alle so gut sind, dass er sie ohne Gewissenbisse umsetzen kann.</p>
<p>Bei einem Programmierauftrag ist das anders, denn beim Programmieren obsiegt immer die Logik, ist Kern des Ganzen und kaum angreifbar. Für einen Außenstehenden gibt es beim Programmieren viel wenig Geschmacksfragen. Vielleicht programmiere ich deswegen lieber, als das ich Layoute.</p>
]]></content:encoded>
			<wfw:commentRss>http://thegeek.de/die-crux-mit-dem-webdesign-und-den-eigenen-anspruchen/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

