<?xml version="1.0" encoding="ISO-8859-1"?>
<rss version="2.0">
	<channel>
		<docs>http://blogs.law.harvard.edu/tech/</docs>
		<description>RSS-Feed from http://potassium.1338.at/</description>
		<link>http://potassium.1338.at/</link>
		<title>Potassiums Weblog - One step ahead of the average nerd - Kategorie: Programmieren</title>
		<ttl>30</ttl>
		
<item>
	<title><![CDATA[PHP: empty("0") != empty("00")]]></title>
	<description><![CDATA[Die PHP-Funktion <a href="http://at.php.net/manual/en/function.empty.php" target='_blank'>empty()</a> gibt Auskunft darüber, ob die angegebe Variable <em>leer</em> ist. Folgendes weiß das Manual dazu zu sagen<br />
<fieldset class="quotediv"><legend>Zitat</legend>Returns FALSE if var has a non-empty and non-zero value. <br />
<br />
The following things are considered to be empty: <br />
"" (an empty string)<br />
0 (0 as an integer)<br />
"0" (0 as a string)<br />
NULL<br />
FALSE<br />
array() (an empty array)<br />
var $var; (a variable declared, but without a value in a class)</fieldset><br />
<br />
Man sollte nun doch meinen, dass folgende beide Code-Snippets das gleiche Ergebnise erzeugen: nämlich <em>true</em>.<br />
<fieldset><legend>Code</legend><br />
<?php<br />
$var = "0";<br />
var_dump(empty($var));<br />
?><br />
</fieldset><br />
<fieldset><legend>Code</legend><br />
<?php<br />
$var = "00";<br />
var_dump(empty($var));<br />
?><br />
</fieldset><br />
Dem ist aber nicht so.<br />
Das erste snippet gibt folgendes wiede<br />
<fieldset class="quotediv"><legend>Zitat</legend>bool(true)</fieldset><br />
das zweite Snippet<br />
<fieldset class="quotediv"><legend>Zitat</legend>bool(false)</fieldset><br />
<br />
Um darauf zu kommen, habe ich gerade zwei Stunden meines Lebens verschwendet...Dankeschön!<br />
]]></description>
	<guid>http://potassium.1338.at/index.php?id=1033#</guid>
	<link>http://potassium.1338.at/index.php?id=1033</link>
	<pubDate>Thu, 19 Aug 2010 22:06:00 +0200</pubDate>
	<author>potassium</author>
	<category>Programmieren, PHP-Entwicklung</category>
</item>
<item>
	<title><![CDATA[Java 4-Ever Trailer]]></title>
	<description><![CDATA[Wie manche wissen, bin ich kein großer Java-Fan, aber dieses Video is genial :D<br />
<div class="small center"><object width='425' height='355'><param name='movie' value='http://www.youtube.com/v/A1zySeNpW20&feature=player_embedded&has_verified=1&rel=1'></param><param name='wmode' value='transparent'></param><embed src='http://www.youtube.com/v/A1zySeNpW20&feature=player_embedded&has_verified=1&rel=1' type='application/x-shockwave-flash' wmode='transparent' width='425' height='355'></embed></object><br /><a target="_blank" href="http://www.youtube.com/watch?v=A1zySeNpW20&feature=player_embedded&has_verified=1">Direktlink zu Youtube</a></div><br />
<br />
<img alt='Picture' src='http://potassium.1338.at/upload/smilies/rofl.gif' border='0' class='blogged_image' /><img alt='Picture' src='http://potassium.1338.at/upload/smilies/rofl.gif' border='0' class='blogged_image' /><img alt='Picture' src='http://potassium.1338.at/upload/smilies/rofl.gif' border='0' class='blogged_image' /><br />
<br />
Via eli]]></description>
	<guid>http://potassium.1338.at/index.php?id=1004#</guid>
	<link>http://potassium.1338.at/index.php?id=1004</link>
	<pubDate>Thu, 01 Jul 2010 23:09:00 +0200</pubDate>
	<author>potassium</author>
	<category>g33k-Humor, youtube, video.google.com, etc..., Programmieren</category>
</item>
<item>
	<title><![CDATA[Oh du schöne, oh du seelige...]]></title>
	<description><![CDATA[...Syntax von PHP.<br />
Im Vergleich zu Visual Basic ist die Syntax von PHP einfach nur traumhaft.<br />
Ich speib mich gleich an bei der von VB.]]></description>
	<guid>http://potassium.1338.at/index.php?id=901#</guid>
	<link>http://potassium.1338.at/index.php?id=901</link>
	<pubDate>Wed, 18 Nov 2009 01:18:00 +0100</pubDate>
	<author>potassium</author>
	<category>Programmieren</category>
</item>
<item>
	<title><![CDATA[Fix: serialize() und unserialize() fail with data containing single or double quotes [update]]]></title>
	<description><![CDATA[When serialize()ing an array containing the data of the last created blogpost there was no error at first.<br />
But if the data were fetched from the database and the script tried to unserialize() them the following error occured:<br />
<fieldset class="quotediv"><legend>Zitat</legend>Notice: unserialize() [function.unserialize]: Error at offset 51 of 66 bytes in somefile.php</fieldset><br />
So why is this?<br />
Lets say you have an array with 3 indizes containing 2 strings and one integer.<br />
<br />
<fieldset><legend>Code</legend>$somearray[0] = "test";<br />
$somearray[1] = "he hasn\'t eaten anything";<br />
$somearray[2] = 36;</fieldset><br />
As you can see the single quote in the second array-element is escaped by a backslash.<br />
If you now serialize the data you get the following string<br />
<fieldset><legend>Code</legend>a:3:{i:0;s:4:"test";i:1;s:25:"<font color="red">he hasn\'t eaten anything</font>";i:2;i:36;}<br />
</fieldset><br />
If this string is now written to the database the backslashes disappears and the field contains the following data:<br />
<fieldset><legend>Code</legend>a:3:{i:0;s:4:"test";i:1;s:25:"<font color="red">he hasn't eaten anything</font>";i:2;i:36;}<br />
</fieldset><br />
As the considerate reader might have discovered the length of the highlighted string was first 25 characters and is after inserting into the database 24 characters long. <br />
So if PHP tries to unserialize the string it thinks it has to read 25 characters but there are only 24. This throws the above error.<br />
<br />
So how can you circumvent this?<br />
<fieldset><legend>Code</legend>$somearray[0] = "test";<br />
$somearray[1] = "he hasn\'t eaten anything";<br />
$somearray[2] = 36;<br />
foreach($somearray as $key=>$value){<br />
$somearray[$key] = stripslashes($value);<br />
}<br />
$serialized_data = addslashes(serialize($somearray));</fieldset><br />
<br />
So the backslashes are removed before serializing the data and added afterwards to prevent database malfunctions or errors.]]></description>
	<guid>http://potassium.1338.at/index.php?id=862#</guid>
	<link>http://potassium.1338.at/index.php?id=862</link>
	<pubDate>Thu, 27 Aug 2009 22:33:00 +0200</pubDate>
	<author>potassium</author>
	<category>Software-Entwicklung, Programmieren, PHP-Entwicklung</category>
</item>
<item>
	<title><![CDATA[SQL: Doppelte Datensätze einfach löschen [update]]]></title>
	<description><![CDATA[Nachdem Michelle mich darauf aufmerksam gemacht hat, dass im Seitenmenü die doppelte Anzahl an Seiten zB bei den Kategorien angezeigt werden als eigentlich vorhanden sein sollten hab ich mich auf Fehlersuche gemacht.<br />
Nachdem ich ein fehlendes <em>DISTINCT</em> zuerst für den Verantwortlichen gehalten habe bin ich nach einiger Zeit draufgekommen, dass beim Portieren der Software der Inhalt 2 mal eingefügt wurde.<br />
Ich hatte also eine 2spaltige Tabelle mit mehreren Tausend Einträgen und diese waren je 2 mal vorhanden. Was also tun? Manuell kann man das vergessen. Mit normalen Abfragen is mir auch nix eingefallen und siehe da das Glasgoogle hat geholfen und folgendes zu Tage gebracht:<br />
<a href="http://www.issociate.de/board/post/255929/Doppelte_Einträge_löschen.html" target='_blank'>Doppelte Einträge löschen</a> (ganz unten)<br />
<br />
<fieldset><legend>Code</legend>ALTER <font color="red">IGNORE</font> TABLE <em>Table</em> ADD UNIQUE INDEX temp_index (<em>Column1</em> , <em>Column2</em>);</fieldset><br />
Es wird ein UNIQUE Index auf die gewähljten Felder gelegt und da er UNIQUE ist, sind keine doppelten Einträge erlaubt.<br />
Ignore ist dabei das Stichwort: Dadurch werden doppelte Einträge einfach gelöscht. Sache gelöst. Juhu :D<br />
<br />
]]></description>
	<guid>http://potassium.1338.at/index.php?id=861#</guid>
	<link>http://potassium.1338.at/index.php?id=861</link>
	<pubDate>Thu, 27 Aug 2009 22:17:00 +0200</pubDate>
	<author>potassium</author>
	<category>Software-Entwicklung, Programmieren, SQL</category>
</item>
<item>
	<title><![CDATA[DOM]]></title>
	<description><![CDATA[Mhm, hab grad meine ersten (bewussten) <a href="http://de.wikipedia.org/wiki/Document_Object_Model" target='_blank'>DOM</a>-Schritte gemacht. Schon ziemlich mächtig das Zeug. Trotzdem is Javascript ned wirklich meine Sprache...Naja das was ich wollte geht ja mal. Bald zu sehen in PotaBlog 2.0 :)]]></description>
	<guid>http://potassium.1338.at/index.php?id=815#</guid>
	<link>http://potassium.1338.at/index.php?id=815</link>
	<pubDate>Fri, 26 Jun 2009 23:52:00 +0200</pubDate>
	<author>potassium</author>
	<category>Programmieren</category>
</item>
<item>
	<title><![CDATA[Episch: LANBall]]></title>
	<description><![CDATA[<a href="http://www.top-fünf.de/lanball/" target='_blank'>LANBall</a> ist eine Möglichkeit, wie sogar ich mal einen Ball dorthin manövrieren könnte wo er hin soll :D<br />
<br />
<div class="small center"><object width='425' height='355'><param name='movie' value='http://www.youtube.com/v/3yLsx96V-zA&&rel=1'></param><param name='wmode' value='transparent'></param><embed src='http://www.youtube.com/v/3yLsx96V-zA&&rel=1' type='application/x-shockwave-flash' wmode='transparent' width='425' height='355'></embed></object><br /><a target="_blank" href="http://www.youtube.com/watch?v=3yLsx96V-zA&">Direktlink zu Youtube</a></div><br />
<br />
<fieldset class="quotediv"><legend>Zitat</legend>Die genialste Idee aller Zeiten: Der Lagesensor im Ball stammt aus einem Nintendo-Wii-Controller, der rückmeldet, in welcher Lage sich der Ball befindet, einschließlich Drehung. Daran haben wir uns die Zähne am übelsten ausgebissen. Wir haben uns alles mögliche überlegt: Ein Laser-Gyroskop wie im BigDog von Boston Dynamics, den Lagesensor aus dem iPhone .... und so weiter. .War aber alles zu komplex, zu teuer oder zu schwer. Der Wii-Sensor kann die Lage sehr schnell und exakt bestimmen und wiegt fast nichts - also gekauft!</fieldset><br />
<br />
<fieldset class="quotediv"><legend>Zitat</legend>Die finale Innenkonstruktion mit Carbontank und den ersten Druckluftleitungen. Die Druckluft wird durch lauter Mini-Pneumatik-Equipment von Festo und SMC an- und abgeschaltet. Die Signalübertragung funktioniert via simplem W-LAN, wobei wir für das Senden der Telemetrie und das Empfangen der Steuerdaten vom Rechner je einen eigenen Kanal benutzen.</fieldset><br />
<br />
Mehr Infos zu diesem echt genialen System gibts <a href="http://www.top-fünf.de/lanball/" target='_blank'>hier</a><br />
<br />
Sogar ein <a href="http://www.top-fünf.de/lanball/LANball_SignalFlow.pdf" target='_blank'>Flowchart</a> gibts dazu.]]></description>
	<guid>http://potassium.1338.at/index.php?id=805#</guid>
	<link>http://potassium.1338.at/index.php?id=805</link>
	<pubDate>Tue, 02 Jun 2009 16:17:00 +0200</pubDate>
	<author>potassium</author>
	<category>lost and found @ WWW, g33k-Humor, youtube, video.google.com, etc..., Humor, Netzwerke, Kunst, Programmieren, Sport</category>
</item>
<item>
	<title><![CDATA[PotaBlog 2.0 [update]]]></title>
	<description><![CDATA[Bwah, derzeit arbeite ich grad am Release 2.0 von PotaBlog. Da sich einige Dinge grundlegend verändern, ist es ein weitaus größerer Aufwand, als erwartet.<br />
<br />
Bin gerade 3 Stunden gesessen und hab nur Texte aus Templates in Variablen kopiert und diese Texte ins Englische übersetzt -_-<br />
<br />
Wünsche eine gute Nacht!]]></description>
	<guid>http://potassium.1338.at/index.php?id=772#</guid>
	<link>http://potassium.1338.at/index.php?id=772</link>
	<pubDate>Fri, 03 Apr 2009 03:55:00 +0200</pubDate>
	<author>potassium</author>
	<category>Software-Entwicklung, Weblog, Programmieren, PHP-Entwicklung</category>
</item>
<item>
	<title><![CDATA[Firefox mega Fail bei setcookie]]></title>
	<description><![CDATA[Wenn man mittels setcookie() mit PHP ein Cookie auf einem Apache-Server unter Windows für Firefox oder IE 7 senden will, der auf localhost läuft, so ist folgende Syntax von nöten:<br />
<fieldset><legend>Code</legend><br />
setcookie("test", "test", time() + 3600, "/", false);<br />
</fieldset><br />
Folgendes weiß dazu das manual<br />
<fieldset class="quotediv"><legend>Zitat</legend>bool setcookie ( string $name [, string $value [, int $expire [, string $path [, string $domain [, bool $secure [, bool $httponly]]]]]] )<br />
</fieldset><br />
<br />
Somit muss man den Wert <em>Domain</em> anstatt wie es sich gehört auf <em>localhost</em> auf <em>false</em> setzen. <br />
Das hat mich wieder nerven gekostet....]]></description>
	<guid>http://potassium.1338.at/index.php?id=769#</guid>
	<link>http://potassium.1338.at/index.php?id=769</link>
	<pubDate>Wed, 25 Mar 2009 16:53:00 +0100</pubDate>
	<author>potassium</author>
	<category>Weblog, was mich ärgert..., Programmieren</category>
</item>
<item>
	<title><![CDATA[SOAP]]></title>
	<description><![CDATA[Ich möchte hiermier anmerken, dass ich SOAP hasse und kryptische Fehlermeldungen noch mehr. GRMLZ<br />
]]></description>
	<guid>http://potassium.1338.at/index.php?id=758#</guid>
	<link>http://potassium.1338.at/index.php?id=758</link>
	<pubDate>Wed, 25 Feb 2009 17:53:00 +0100</pubDate>
	<author>potassium</author>
	<category>Programmieren</category>
</item>
<item>
	<title><![CDATA[Barcode Interleaved 2 of 5 selfmade [update]]]></title>
	<description><![CDATA[Da ich für ein Projekt Barcodes der Form <em>Interleaved 2 of 5</em> brauche und die Schriftarten dafür erst ab 139 $ zu bekommen sind hab ich beschlossen das mit PHP und GD-Library selbst zu lösen.<br />
<br />
Mit Hilfe von <a href="http://www.spatula.net/proc/barcode/i25.src" target='_blank'>Nick Johnsons</a> Site über Barcodes und spezifisch über I2O5 war es möglich das zu bekommen, was ich erreichen wollte:<br />
<br />
Die Zahl 0930000153 wird umgewandelt in<br />
<img alt='Picture' src='http://potassium.1338.at/upload/pictures/barcode_0930000153_23.02.2009.jpg' border='0' class='blogged_image' /><br />
<br />
Und sieht auch noch aus wie das Original, das ich nachzumachen versuchte.<br />
<br />
Gelöst hab ich es wie folgt:<br />
Die umzuwandelnde Zahl wird in 2 Zeichen lange Strings aufgespalten und diese in ein Array geschrieben. In einem anderen Array, dass 2 Indizes hat [0-9] und [0-4] steht jeweils drinnen ob es als ein breiter oder ein dünner Strich dargestellt werden soll - nach folgendem Schema.<br />
<fieldset><legend>Code</legend>0: nnwwn<br />
1: wnnnw<br />
2: nwnnw<br />
3: wwnnn<br />
4: nnwnw<br />
5: wnwnn<br />
6: nwwnn<br />
7: nnnww<br />
8: wnnwn<br />
9: nwnwn</fieldset><br />
Wobei n für narrow als dünn und w für wide also dick steht.<br />
Nun wird eine Schleife gestartet die von 0 bis 4 durchläuft und dabei wird der die erste Ziffer der 2 Ziffern die vorher in ein Array geschrieben wurden als Index genommen und die Schleifenzähler-Variable für den 2 Index. <br />
Dann wird je nach Inhalt des 2. Arrays entweder ein dünner Senkrechter Strich, ein dünner Abstand, ein dicker Strich oder ein dicker Abstand in das Bild geschrieben.<br />
Mit der 2. Zahl wird danach ebenso fortgefahren.<br />
<br />
<fieldset><legend>Code</legend>//create image<br />
$width = "300";<br />
	$height = "40";<br />
	$img = ImageCreatetruecolor($width, $height)  or die("Cannot Initialize new GD image stream");<br />
	if(!$img){<br />
		die("can't create picture");<br />
	}<br />
	$black = imagecolorallocate($img, 0, 0, 0); <br />
	$white = imagecolorallocate($img,255,255,255);<br />
	imagefill($img,0,0,$white);	<br />
	$data = str_split("0930000153",2);<br />
	global $pos;<br />
	$pos = 1;<br />
	//startpattern<br />
	nline();<br />
	nspace();<br />
	nline();<br />
	nspace();<br />
//eigentliche Daten<br />
	foreach($data as $data){<br />
		for($i=0;$i<=4;$i++){<br />
			call_user_func($digits[$data[0]][$i]."line");<br />
			call_user_func($digits[$data[1]][$i]."space");<br />
		}<br />
	}<br />
//endpattern<br />
	wline();<br />
	nspace();<br />
	nline();<br />
//show image<br />
	Header("Content-Type: image/png");<br />
	imagepng($img);<br />
	imagedestroy($img);<br />
	exit();</fieldset><br />
Wobei im Array $digits halt noch die o.g. Daten drinnenstehn.<br />
Hoffe alle Unklarheit ist beseitigt.<br />
<br />
]]></description>
	<guid>http://potassium.1338.at/index.php?id=756#</guid>
	<link>http://potassium.1338.at/index.php?id=756</link>
	<pubDate>Mon, 23 Feb 2009 18:41:00 +0100</pubDate>
	<author>potassium</author>
	<category>lost and found @ WWW, Programmieren, PHP-Entwicklung</category>
</item>

	</channel>
</rss>
