<?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>derUwe.de &#187; Praxis</title>
	<atom:link href="http://deruwe.de/tag/praxis/feed" rel="self" type="application/rss+xml" />
	<link>http://deruwe.de</link>
	<description>mein Streifzug durchs Web</description>
	<lastBuildDate>Sat, 26 Jun 2010 10:45:28 +0000</lastBuildDate>
	<language>de</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Adressgenerator als CSV exportieren</title>
		<link>http://deruwe.de/2010/05/adressgenerator-als-csv-exportieren.html</link>
		<comments>http://deruwe.de/2010/05/adressgenerator-als-csv-exportieren.html#comments</comments>
		<pubDate>Fri, 21 May 2010 12:06:43 +0000</pubDate>
		<dc:creator>Uwe</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Praxis]]></category>

		<guid isPermaLink="false">http://deruwe.de/?p=471</guid>
		<description><![CDATA[Es gab einen Kommentar in meinem Beitrag zum Adressgenerator, welcher dynamisch Personen mit zufälliger Adresse generiert. Da wurde nach der Lösung gefragt wie man dieses als CSV Datei exportieren kann. Hier die Lösung. &#60;?php &#160; &#160;&#160;&#160;&#160;include_once&#160;'generator.php';&#160; &#160; &#160;&#160;&#160;&#160;//&#160;Geschlecht&#160;der&#160;Adressen: &#160;&#160;&#160;&#160;//&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;$geschlecht=0&#160;-&#62;&#160;egal &#160;&#160;&#160;&#160;//&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;$geschlecht=1&#160;-&#62;&#160;Mann &#160;&#160;&#160;&#160;//&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;$geschlecht=2&#160;-&#62;&#160;Frau &#160;&#160;&#160;&#160;$geschlecht=0; &#160; &#160;&#160;&#160;&#160;//&#160;wieviele&#160;Adressen: &#160;&#160;&#160;&#160;$count&#160;=&#160;10; &#160; &#160;&#160;&#160;&#160;//&#160;gibt&#160;an&#160;was&#160;für&#160;einen&#160;Header,&#160;eigentlich&#160;egal,&#160;aber&#160;&#34;schöner&#34;&#160;für&#160;den&#160;Browser &#160;&#160;&#160;&#160;//&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;$header='test/plain'&#160;&#160;&#160;&#160;-&#62;&#160;Text &#160;&#160;&#160;&#160;//&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;$header='text/csv'&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;-&#62;&#160;CSV&#160;Datei &#160;&#160;&#160;&#160;$header&#160;=&#160;'text/plain'; &#160; &#160;&#160;&#160;&#160;//&#160;Datei&#160;explizit&#160;zum&#160;Download&#160;anbieten &#160;&#160;&#160;&#160;//&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;$download=true&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;-&#62;&#160;ja &#160;&#160;&#160;&#160;//&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;$download=false&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;-&#62;&#160;nein &#160;&#160;&#160;&#160;$download&#160;=&#160;false; [...]]]></description>
			<content:encoded><![CDATA[<p>Es gab einen Kommentar in meinem Beitrag zum <a href="http://deruwe.de/2009/11/adressgenerator.html">Adressgenerator</a>, welcher dynamisch Personen mit zufälliger Adresse generiert. Da wurde nach der Lösung gefragt wie man dieses als CSV Datei exportieren kann. Hier die Lösung.<br />
<span id="more-471"></span><br />
<code>&lt;?php<br />
&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;include_once&nbsp;'generator.php';&nbsp;<br />
&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;Geschlecht&nbsp;der&nbsp;Adressen:<br />
&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$geschlecht=0&nbsp;-&gt;&nbsp;egal<br />
&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$geschlecht=1&nbsp;-&gt;&nbsp;Mann<br />
&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$geschlecht=2&nbsp;-&gt;&nbsp;Frau<br />
&nbsp;&nbsp;&nbsp;&nbsp;$geschlecht=0;<br />
&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;wieviele&nbsp;Adressen:<br />
&nbsp;&nbsp;&nbsp;&nbsp;$count&nbsp;=&nbsp;10;<br />
&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;gibt&nbsp;an&nbsp;was&nbsp;für&nbsp;einen&nbsp;Header,&nbsp;eigentlich&nbsp;egal,&nbsp;aber&nbsp;&quot;schöner&quot;&nbsp;für&nbsp;den&nbsp;Browser<br />
&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$header='test/plain'&nbsp;&nbsp;&nbsp;&nbsp;-&gt;&nbsp;Text<br />
&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$header='text/csv'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-&gt;&nbsp;CSV&nbsp;Datei<br />
&nbsp;&nbsp;&nbsp;&nbsp;$header&nbsp;=&nbsp;'text/plain';<br />
&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;Datei&nbsp;explizit&nbsp;zum&nbsp;Download&nbsp;anbieten<br />
&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$download=true&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-&gt;&nbsp;ja<br />
&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$download=false&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-&gt;&nbsp;nein<br />
&nbsp;&nbsp;&nbsp;&nbsp;$download&nbsp;=&nbsp;false;<br />
&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;gibt&nbsp;an&nbsp;wie&nbsp;die&nbsp;Daten&nbsp;in&nbsp;einer&nbsp;Zeile&nbsp;getrennt&nbsp;sind&nbsp;(wichtig:&nbsp;&quot;doppelte&quot;&nbsp;Anführungszeichen)<br />
&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$linebreak&nbsp;=&nbsp;&quot;;&quot;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-&gt;&nbsp;Trenner&nbsp;ist&nbsp;;<br />
&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$linebreak&nbsp;=&nbsp;&quot;|&quot;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-&gt;&nbsp;Trenner&nbsp;ist&nbsp;|<br />
&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$linebreak&nbsp;=&nbsp;&quot;\t&quot;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-&gt;&nbsp;Trenner&nbsp;ist&nbsp;Tabulator<br />
&nbsp;&nbsp;&nbsp;&nbsp;$databreak&nbsp;=&nbsp;&quot;;&quot;;<br />
&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;gibt&nbsp;an&nbsp;was&nbsp;für&nbsp;ein&nbsp;Zeilenumbruch&nbsp;(wichtig:&nbsp;&quot;doppelte&quot;&nbsp;Anführungszeichen)<br />
&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$linebreak&nbsp;=&nbsp;&quot;\r\n&quot;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-&gt;&nbsp;Trenner&nbsp;für&nbsp;Windows<br />
&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$linebreak&nbsp;=&nbsp;&quot;\n&quot;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-&gt;&nbsp;Trenner&nbsp;für&nbsp;Linux/Unix<br />
&nbsp;&nbsp;&nbsp;&nbsp;$linebreak&nbsp;=&nbsp;&quot;\n&quot;;<br />
&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;Ort&nbsp;und&nbsp;PLZ&nbsp;auch&nbsp;trennen?<br />
&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$splitLocation&nbsp;=&nbsp;true&nbsp;&nbsp;&nbsp;&nbsp;-&gt;&nbsp;wird&nbsp;getrennt,&nbsp;$databreak&nbsp;ist&nbsp;das&nbsp;Trennzeichen<br />
&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$splitLocation&nbsp;=&nbsp;false&nbsp;&nbsp;&nbsp;&nbsp;-&gt;&nbsp;wird&nbsp;nicht&nbsp;getrennt,&nbsp;Leerzeichen&nbsp;als&nbsp;Trenner<br />
&nbsp;&nbsp;&nbsp;&nbsp;$splitLocation&nbsp;=&nbsp;true;<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;//----------------------------<br />
&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;CSV&nbsp;Datei&nbsp;generieren<br />
&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;header('Content-Type:&nbsp;'.$header,true);<br />
&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;($download)&nbsp;header('Content-Disposition:&nbsp;attachment;&nbsp;filename=&quot;Adressen.csv&quot;',true);&nbsp;<br />
&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;for($i=0;$i&lt;$count;$i++)&nbsp;{<br />
&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$a&nbsp;=&nbsp;new&nbsp;Adresse();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$adress&nbsp;=&nbsp;$a-&gt;get($geschlecht);<br />
&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;ggf.&nbsp;hier&nbsp;Reihenfolge&nbsp;anpassen:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo&nbsp;$adress['vorname']&nbsp;&nbsp;&nbsp;&nbsp;.$databreak;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo&nbsp;$adress['nachname'].$databreak;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo&nbsp;$adress['strasse']&nbsp;&nbsp;&nbsp;&nbsp;.$databreak;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo&nbsp;$adress['nummer']&nbsp;&nbsp;&nbsp;&nbsp;.$databreak;<br />
&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;($splitLocation)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;PLZ/Ort&nbsp;trennen<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$tmp&nbsp;=&nbsp;explode(&quot;&nbsp;&quot;,$adress['ort'],2);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo&nbsp;$tmp[0].$databreak;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo&nbsp;$tmp[1].$databreak;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;else&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;PLZ/Ort&nbsp;nicht&nbsp;trennen<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo&nbsp;$adress['ort'].$databreak;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo&nbsp;$linebreak;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
?&gt;</code></p>
]]></content:encoded>
			<wfw:commentRss>http://deruwe.de/2010/05/adressgenerator-als-csv-exportieren.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>/proc/stat mit Bash auswerten</title>
		<link>http://deruwe.de/2010/03/proc-stat-mit-bash-auswerten.html</link>
		<comments>http://deruwe.de/2010/03/proc-stat-mit-bash-auswerten.html#comments</comments>
		<pubDate>Sat, 27 Mar 2010 14:59:07 +0000</pubDate>
		<dc:creator>Uwe</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Praxis]]></category>
		<category><![CDATA[Bash]]></category>

		<guid isPermaLink="false">http://deruwe.de/?p=462</guid>
		<description><![CDATA[Ich wollte die aktuelle CPU Auslastung per Bashscript ermitteln, so wie sie auch unter top angezeigt wird. Nach einigem suchen wurde ich bei einem Script fündig, welches sehr anschaulich verdeutlichte wie dies realisiert werden kann. Auf dessen Basis habe ich mir mein eigenes Script entwickelt. #!/bin/bash&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &#160; #&#160;/proc/stat&#160;2x&#160;auslesen BEFORE=(`cat&#160;/proc/stat&#160;&#124;&#160;grep&#160;'^cpu&#160;'`) sleep&#160;1&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; AFTER=(`cat&#160;/proc/stat&#160;&#124;&#160;grep&#160;'^cpu&#160;'`)&#160; &#160; #&#160;Differenz&#160;berechnen USER=`expr&#160;${AFTER[1]}&#160;-&#160;${BEFORE[1]}` NICE=`expr&#160;${AFTER[2]}&#160;-&#160;${BEFORE[2]}` [...]]]></description>
			<content:encoded><![CDATA[<p>Ich wollte die aktuelle CPU Auslastung per Bashscript ermitteln, so wie sie auch unter top angezeigt wird. Nach einigem suchen wurde ich bei <a href="http://colby.id.au/node/39">einem Script</a> fündig, welches sehr anschaulich verdeutlichte wie dies realisiert werden kann. Auf dessen Basis habe ich mir mein eigenes Script entwickelt.<br />
<span id="more-462"></span><br />
<code>#!/bin/bash&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;<br />
#&nbsp;/proc/stat&nbsp;2x&nbsp;auslesen<br />
BEFORE=(`cat&nbsp;/proc/stat&nbsp;|&nbsp;grep&nbsp;'^cpu&nbsp;'`)<br />
sleep&nbsp;1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
AFTER=(`cat&nbsp;/proc/stat&nbsp;|&nbsp;grep&nbsp;'^cpu&nbsp;'`)&nbsp;<br />
&nbsp;<br />
#&nbsp;Differenz&nbsp;berechnen<br />
USER=`expr&nbsp;${AFTER[1]}&nbsp;-&nbsp;${BEFORE[1]}`<br />
NICE=`expr&nbsp;${AFTER[2]}&nbsp;-&nbsp;${BEFORE[2]}`<br />
SYSTEM=`expr&nbsp;${AFTER[3]}&nbsp;-&nbsp;${BEFORE[3]}`<br />
IDLE=`expr&nbsp;${AFTER[4]}&nbsp;-&nbsp;${BEFORE[4]}`<br />
ALL=`expr&nbsp;${USER}&nbsp;+&nbsp;${NICE}&nbsp;+&nbsp;${SYSTEM}&nbsp;+&nbsp;${IDLE}`<br />
&nbsp;<br />
#&nbsp;Prozente&nbsp;berechnen<br />
PUSER=`expr&nbsp;$USER&nbsp;\*&nbsp;1000000&nbsp;/&nbsp;$ALL`<br />
PNICE=`expr&nbsp;$NICE&nbsp;\*&nbsp;1000000&nbsp;/&nbsp;$ALL`<br />
PSYSTEM=`expr&nbsp;$SYSTEM&nbsp;\*&nbsp;1000000&nbsp;/&nbsp;$ALL`<br />
PIDLE=`expr&nbsp;$IDLE&nbsp;\*&nbsp;1000000&nbsp;/&nbsp;$ALL`<br />
&nbsp;<br />
#&nbsp;Prozente&nbsp;formatieren<br />
for&nbsp;i&nbsp;in&nbsp;10&nbsp;100&nbsp;1000&nbsp;10000&nbsp;100000&nbsp;;&nbsp;do<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;[&nbsp;$PUSER&nbsp;-lt&nbsp;$i&nbsp;]&nbsp;;&nbsp;then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PUSER=&quot;0${PUSER}&quot;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fi<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;[&nbsp;$PNICE&nbsp;-lt&nbsp;$i&nbsp;]&nbsp;;&nbsp;then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PNICE=&quot;0${PNICE}&quot;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fi<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;[&nbsp;$PSYSTEM&nbsp;-lt&nbsp;$i&nbsp;]&nbsp;;&nbsp;then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PSYSTEM=&quot;0${PSYSTEM}&quot;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fi<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;[&nbsp;$PIDLE&nbsp;-lt&nbsp;$i&nbsp;]&nbsp;;&nbsp;then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PUSER=&quot;0${PIDLE}&quot;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fi<br />
done<br />
&nbsp;<br />
#&nbsp;ausgeben<br />
echo&nbsp;&quot;us:&nbsp;${PUSER:0:2}.${PUSER:2:4}%&quot;<br />
echo&nbsp;&quot;ni:&nbsp;${PNICE:0:2}.${PNICE:2:4}%&quot;<br />
echo&nbsp;&quot;sy:&nbsp;${PSYSTEM:0:2}.${PSYSTEM:2:4}%&quot;<br />
echo&nbsp;&quot;id:&nbsp;${PIDLE:0:2}.${PIDLE:2:4}%&quot;</code></p>
<p>Die Ausgabe sieht dann beispielsweise so aus:</p>
<p><code>us:&nbsp;00.9900%<br />
ni:&nbsp;00.0000%<br />
sy:&nbsp;00.4950%<br />
id:&nbsp;98.5148%</code></p>
]]></content:encoded>
			<wfw:commentRss>http://deruwe.de/2010/03/proc-stat-mit-bash-auswerten.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Adressgenerator</title>
		<link>http://deruwe.de/2009/11/adressgenerator.html</link>
		<comments>http://deruwe.de/2009/11/adressgenerator.html#comments</comments>
		<pubDate>Fri, 27 Nov 2009 14:54:20 +0000</pubDate>
		<dc:creator>Uwe</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Praxis]]></category>

		<guid isPermaLink="false">http://deruwe.de/?p=441</guid>
		<description><![CDATA[Ich mag Personensuchmaschinen nicht. Also warum nicht mal spaßeshalber einen Generator für zufällige Personen bzw. Adressen bauen? Nette Idee wie ich fand, also mal schnell was zusammen gefummelt. Die nachfolgende PHP-Klasse erzeugt eine zufällige Adresse. Dazu werden die Textdateien benötigt, in welchen ich in Handarbeit Namen, Straßennamen sowie Postleitzahlen und Orte (unabhängig voreinander) zusammengesammelt habe. [...]]]></description>
			<content:encoded><![CDATA[<p>Ich mag Personensuchmaschinen nicht. Also warum nicht mal spaßeshalber einen Generator für zufällige Personen bzw. Adressen bauen? Nette Idee wie ich fand, also mal schnell was zusammen gefummelt.<span id="more-441"></span></p>
<p>Die nachfolgende PHP-Klasse erzeugt eine zufällige Adresse. Dazu werden die Textdateien benötigt, in welchen ich in Handarbeit Namen, Straßennamen sowie Postleitzahlen und Orte (unabhängig voreinander) zusammengesammelt habe. Aus diesem Pool generiert die PHP-Klasse einen zufällige Namen mit Postanschrift.</p>
<p>Bei diesen so erzeugten Adressen paßt jeweils die Postleitzahl auch zum Ort. Möchte jemand die Echtheit einer solchen Fake-Adresse überprüfen bzw. feststellen ob dies ein Fake ist, bräuchte er eine gute Datenbank über alle Straßennamen vor Ort bzw. echte Adressdaten zum Abgleich. Es läßt sich also mit hoher Wahrscheinlichkeit nicht technisch feststellen, ob es sich um eine echte Adresse handelt. Natürlich wird es auch seltene Fälle geben wo die Person und deren Adresse wirklich stimmt. Das bleibt allerdings dem Zufall überlassen.</p>
<p>Folgende Datensätze sind enthalten</p>
<ul>
<li><a href="http://deruwe.de/dateien/2009/11/vornamen_mann.txt">1249 männliche Vornamen</a></li>
<li><a href="http://deruwe.de/dateien/2009/11/vornamen_frau.txt">1695 weibliche Vornamen</a></li>
<li><a href="http://deruwe.de/dateien/2009/11/nachnamen.txt">3421 Nachnamen</a></li>
<li><a href="http://deruwe.de/dateien/2009/11/strassen.txt">7275 Straßennamen</a></li>
<li><a href="http://deruwe.de/dateien/2009/11/plz-ort.txt">13749 (deutsche) Ortsnamen mit Postleitzahl</a></li>
</ul>
<p>Damit sind rein rechnerisch ~1.000.000.000.000.000 verschiedene Personen generierbar, wenn man die Hausnummern noch nicht einmal in die Rechnung mit einbezieht.</p>
<p>Bei den Vor- und Nachnamen habe ich versucht darauf zu achten, dass sie nicht all zu exotisch sind. Ich hoffe es ist gelungen. Wer die Daten einsetzt, sollte prüfen ob sein Namen darin vorkommt und ihn nötigenfalls nachtragen.</p>
<p>Lizenz gibt es keine &#8211; macht damit was ihr wollt. Ich würde mich allerdings über einen Link auf meine Seite freuen.</p>
<ul>
<li><a href="http://deruwe.de/beispiele/adressgenerator/">Testseite ansehen</a></li>
<li><a href="http://deruwe.de/dateien/2009/11/AdressGenerator.zip">Download PHP-Klasse (inkl. Daten)</a></li>
<li><a href="http://deruwe.de/2010/05/adressgenerator-als-csv-exportieren.html">Adressgenerator als CSV exportieren</a></li>
</ul>
<p>Viel Spaß beim Spielen ;)</p>
<h2>Quellcode der PHP-Klasse</h2>
<p><code>&lt;?php<br />
&nbsp;<br />
class&nbsp;Adresse&nbsp;{<br />
&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;Dateien&nbsp;sind&nbsp;in&nbsp;uft-8<br />
&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;$fileVornamenFrau&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;'./vornamen_frau.txt';<br />
&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;$fileVornamenMann&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;'./vornamen_mann.txt';<br />
&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;$fileVornamenEgal&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;'./vornamen_egal.txt';<br />
&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;$fileNachnamen&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;'./nachnamen.txt';<br />
&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;$fileStrassen&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;'./strassen.txt';<br />
&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;$filePlzOrt&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;'./plz-ort.txt';<br />
&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;$geschlecht=0&nbsp;-&gt;&nbsp;egal<br />
&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;$geschlecht=1&nbsp;-&gt;&nbsp;Mann<br />
&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;$geschlecht=2&nbsp;-&gt;&nbsp;Frau<br />
&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;return&nbsp;array<br />
&nbsp;&nbsp;&nbsp;&nbsp;function&nbsp;get($geschlecht=0)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;array(<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'vorname'=&gt;$this-&gt;getVorname($geschlecht),<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'nachname'=&gt;$this-&gt;getNachname(),<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'strasse'=&gt;$this-&gt;getStrasse(),<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'nummer'=&gt;$this-&gt;getHausnummer(),<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'ort'=&gt;$this-&gt;getPlzOrt()<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;);<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;$geschlecht=0&nbsp;-&gt;&nbsp;egal<br />
&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;$geschlecht=1&nbsp;-&gt;&nbsp;Mann<br />
&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;$geschlecht=2&nbsp;-&gt;&nbsp;Frau<br />
&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;return&nbsp;string<br />
&nbsp;&nbsp;&nbsp;&nbsp;function&nbsp;getHTML($geschlecht=0)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;'&lt;address&gt;'.&quot;\n&quot;.<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$this-&gt;getVorname($geschlecht).'&nbsp;'.$this-&gt;getNachname().'&lt;br&nbsp;/&gt;'.&quot;\n&quot;.<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$this-&gt;getStrasse().'&nbsp;'.$this-&gt;getHausnummer().'&lt;br&nbsp;/&gt;'.&quot;\n&quot;.<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$this-&gt;getPlzOrt().&quot;\n&quot;.<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'&lt;/address&gt;'.&quot;\n&quot;;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;----------------------------------&nbsp;internal&nbsp;--------------------------------------&nbsp;*/<br />
&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;$geschlecht=0&nbsp;-&gt;&nbsp;egal<br />
&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;$geschlecht=1&nbsp;-&gt;&nbsp;Mann<br />
&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;$geschlecht=2&nbsp;-&gt;&nbsp;Frau<br />
&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;return&nbsp;string<br />
&nbsp;&nbsp;&nbsp;&nbsp;function&nbsp;getVorname($geschlecht=0)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;switch&nbsp;($geschlecht)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;1:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;$this-&gt;_getRandomLine($this-&gt;fileVornamenMann);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;2:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;$this-&gt;_getRandomLine($this-&gt;fileVornamenFrau);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;default:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;$this-&gt;_getRandomLine($this-&gt;fileVornamenEgal);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;return&nbsp;string<br />
&nbsp;&nbsp;&nbsp;&nbsp;function&nbsp;getNachname()&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;$this-&gt;_getRandomLine($this-&gt;fileNachnamen);<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;return&nbsp;string<br />
&nbsp;&nbsp;&nbsp;&nbsp;function&nbsp;getHausnummer($min=1,$max=99)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$result&nbsp;=&nbsp;rand($min,$max);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(rand(0,100)&lt;=20)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;fügt&nbsp;mit&nbsp;20%&nbsp;Wahrscheinlichkeit&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;einen&nbsp;Buchstaben&nbsp;zur&nbsp;Nummer&nbsp;hinzu<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$buchstaben&nbsp;=&nbsp;array('a','b','c');<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$result&nbsp;.=&nbsp;$buchstaben[rand(0,(count($buchstaben)-1))];<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;$result.'';<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;return&nbsp;string<br />
&nbsp;&nbsp;&nbsp;&nbsp;function&nbsp;getStrasse()&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;$this-&gt;_getRandomLine($this-&gt;fileStrassen);<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;return&nbsp;string<br />
&nbsp;&nbsp;&nbsp;&nbsp;function&nbsp;getPlzOrt()&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;$this-&gt;_getRandomLine($this-&gt;filePlzOrt);<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;return&nbsp;string<br />
&nbsp;&nbsp;&nbsp;&nbsp;function&nbsp;_getRandomLine($file)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$list&nbsp;=&nbsp;@file($file);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(!is_array($list)&nbsp;||&nbsp;count($list)&nbsp;&lt;&nbsp;1)&nbsp;return&nbsp;false;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;trim($list[rand(0,(count($list)-1))]);<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
}<br />
&nbsp;<br />
?&gt;</code></p>
]]></content:encoded>
			<wfw:commentRss>http://deruwe.de/2009/11/adressgenerator.html/feed</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>kleine Datenrettung unter Linux</title>
		<link>http://deruwe.de/2009/09/kleine-datenrettung-unter-linux.html</link>
		<comments>http://deruwe.de/2009/09/kleine-datenrettung-unter-linux.html#comments</comments>
		<pubDate>Sat, 12 Sep 2009 19:09:03 +0000</pubDate>
		<dc:creator>Uwe</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Praxis]]></category>
		<category><![CDATA[Festplatte]]></category>
		<category><![CDATA[Hardware]]></category>

		<guid isPermaLink="false">http://deruwe.de/?p=405</guid>
		<description><![CDATA[Eine meiner Festplatten hat den Geist aufgegeben. Dummweise gleich die auf der sich die Systempartition befand. Bemerkbar gemacht hat sch das unter Linux durch Meldungen wie diese auf der Console: ata3.00:&#160;cmd&#160;c8/00:08:43:c6:c1/00:00:00:00:00/e0&#160;tag&#160;0&#160;cdb&#160;0x0&#160;data&#160;4096&#160;in res&#160;51/40:08:43:c6:c1/00:00:00:00:00/e0&#160;Emask&#160;0x9&#160;(media&#160;error) Kurz darauf crashte der Rechner komplett. Nach einem Hardreset bootet der Rechner auch nicht mehr. Also Festplatte hinüber. Ran an die Datenrettung. Als [...]]]></description>
			<content:encoded><![CDATA[<p>Eine meiner Festplatten hat den Geist aufgegeben. Dummweise gleich die auf der sich die Systempartition befand. Bemerkbar gemacht hat sch das unter Linux durch Meldungen wie diese auf der Console:</p>
<p><code>ata3.00:&nbsp;cmd&nbsp;c8/00:08:43:c6:c1/00:00:00:00:00/e0&nbsp;tag&nbsp;0&nbsp;cdb&nbsp;0x0&nbsp;data&nbsp;4096&nbsp;in<br />
res&nbsp;51/40:08:43:c6:c1/00:00:00:00:00/e0&nbsp;Emask&nbsp;0x9&nbsp;(media&nbsp;error)</code><br />
<span id="more-405"></span></p>
<p>Kurz darauf crashte der Rechner komplett. Nach einem Hardreset bootet der Rechner auch nicht mehr. Also Festplatte hinüber. </p>
<p>Ran an die Datenrettung. Als Erstes habe ich von einer Knoppix-CD gebootet. Hier ist zu beachten das einige Knoppix-CDs erkannte Swap-Partitionen automatisch mounten. Dies sollte man unbedingt per Bootparameter verhindern, sonst wird womöglich die defekte Platte gleich wieder benutzt. Auch benötigt man die grafische Oberfläche nicht, also startet man Knoppix am Bootprompt am besten mit</p>
<p><code>knoppix 2 noswap</code></p>
<p>Also Knoppix hochgefahren war, habe ich als Nächstes erst einmal mit </p>
<p><code>smartctl -a /dev/sda</code></p>
<p>die defekte Platte untersucht. (<a href="http://deruwe.de/dateien/2009/09/smartctl.log.txt">komplettes Log</a>). Der Wert Current_Pending_Sector, welcher die defekten Sektoren angibt, war meiner Meinung nach auffällig hoch.</p>
<p>Ein anschliessendes</p>
<p><code>badblocks -v /dev/sda</code></p>
<p>bestätigte dies und lieferte jede Menge defekte Sektoren zurück (ca. 200). Bis auf eine Partitionen konnte ich alle mounten und die Daten sichern. Eine XFS-Partition war jedoch nicht mehr zum Mounten zu bewegen. (Defekter Superblock?)</p>
<p>Ein Reparaturversuch direkt auf der defekten Platte kam für mich nicht in Frage. Also benutze ich benutze dd_rescue um diese Partition als Image auf meinem Raid (gemountet unter /RAID) auszulesen.</p>
<p><code>dd_rescue /dev/sda5 /RAID/sda5.img</code></p>
<p>Das kann je nach Partitionsgröße eine ganze Weile dauern. Es sollte natürlich entsprechend Platz auf dem Ziellaufwerk vorhanden sein. Anschliessend habe ich das Image kopiert um den Reparatur-Versuch abzusichern.</p>
<p><code>cp /RAID/sda5.img /RAID/sda5.img.org</code></p>
<p>Anschliessend ein </p>
<p><code>xfs_repair /RAID/sda5.img</code></p>
<p>Es gab keine Fehlermeldungen und ich konnte anschliessend das Image mounten und die Daten darauf sichern.</p>
<p><code>mount -o ro,loop /RAID/sda5.img /mnt/...</code></p>
<p>Anschliessend habe ich mir erstmal ein Bier gegönnt und so das Überleben meiner Daten gefeiert. ;)</p>
]]></content:encoded>
			<wfw:commentRss>http://deruwe.de/2009/09/kleine-datenrettung-unter-linux.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ein einfacher FIFO-Cache in LSL</title>
		<link>http://deruwe.de/2009/09/ein-einfacher-fifo-cache-in-lsl.html</link>
		<comments>http://deruwe.de/2009/09/ein-einfacher-fifo-cache-in-lsl.html#comments</comments>
		<pubDate>Tue, 08 Sep 2009 04:43:03 +0000</pubDate>
		<dc:creator>Uwe</dc:creator>
				<category><![CDATA[Praxis]]></category>
		<category><![CDATA[LSL]]></category>
		<category><![CDATA[Secondlife]]></category>

		<guid isPermaLink="false">http://deruwe.de/?p=397</guid>
		<description><![CDATA[FIFO geschreibt einen einfachen Algorithmus bei dem zuerst ankommende Daten auch als Erste verarbeitet werden (First In &#8211; First Out). Man kann es sich als einfache Warteschlange vorstellen. Hier ein einfacher FIFO-Cache in LSL (Linden Scripting Language) mit dem es möglich ist ankommende Daten zwischenzuspeichern um sie später sequenziell abzuarbeiten. Sinnvoll ist soetwas überall dort [...]]]></description>
			<content:encoded><![CDATA[<p>FIFO geschreibt einen einfachen Algorithmus bei dem zuerst ankommende Daten auch als Erste verarbeitet werden (First In &#8211; First Out). Man kann es sich als einfache Warteschlange vorstellen. </p>
<p>Hier ein einfacher FIFO-Cache in LSL (Linden Scripting Language) mit dem es möglich ist ankommende Daten zwischenzuspeichern um sie später sequenziell abzuarbeiten. <span id="more-397"></span> Sinnvoll ist soetwas überall dort wo es durch Ereignisse (z.B. Benutzereingaben oder Sensoren) recht schnell viele Daten entstehen können, die man jedoch (durch Beschränkungen in LSL) nur relativ langsam abarbeiten kann. Man schafft sich damit einen Buffer bei &#8220;Lastspitzen&#8221;.</p>
<p>Je nach Datentyp muss das Script entsprechend angepaßt werden, dieses Beispiel ist für Keys. </p>
<p><code>list&nbsp;LIST_KEYS;<br />
&nbsp;<br />
addCache(key&nbsp;uuid)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;integer&nbsp;found&nbsp;=&nbsp;llListFindList(LIST_KEYS,&nbsp;[uuid]);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(found&nbsp;&lt;&nbsp;0)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LIST_KEYS&nbsp;+=&nbsp;[uuid];<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
}<br />
&nbsp;<br />
key&nbsp;getCache()&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(llGetListLength(LIST_KEYS))&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;key&nbsp;result&nbsp;=&nbsp;llList2Key(LIST_KEYS,0);&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LIST_KEYS&nbsp;=&nbsp;llDeleteSubList(LIST_KEYS,&nbsp;0,&nbsp;1);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;result;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;else&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;NULL_KEY;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
}<br />
</code></p>
<p>Die Benutzung ist recht einfacht. Mit addCache(key) wird ein Key in den Cache geschrieben und mit getCache() der nächste Key aus dem Cache geholt (und dort gelöscht). Ist der Cache leer wird NULL_KEY zurückgegeben. </p>
<p>In addCache() befindet sich zudem eine Prüfung ob der Schlüssel schon im Cache vorhanden ist. Diese IF-Adfrage kann auch weggelassen werden, kann aber auch recht sinnvoll sein um z.B. nur Schlüssel in den Cache einzufügen die noch nicht dort vorhanden sind (z.B. um Doppelbestellungen durch falsches Klicken bei Vendoren zu verhindern)</p>
<p>Man sollte beachten, der Speicher bei einem LSL Script ist beschränkt. Die Anzahl der maximalen Einträge im Cache (bevor es zu einem Speicherüberlauf) kommt kann recht unterschiedlich sein. Daher sollte der Cache immer schnellstmöglich abgearbeitet werden.</p>
]]></content:encoded>
			<wfw:commentRss>http://deruwe.de/2009/09/ein-einfacher-fifo-cache-in-lsl.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Nachrichten aus StudiVZ exportieren</title>
		<link>http://deruwe.de/2009/08/nachrichten-aus-studivz-exportieren.html</link>
		<comments>http://deruwe.de/2009/08/nachrichten-aus-studivz-exportieren.html#comments</comments>
		<pubDate>Sat, 22 Aug 2009 12:39:18 +0000</pubDate>
		<dc:creator>Uwe</dc:creator>
				<category><![CDATA[Praxis]]></category>

		<guid isPermaLink="false">http://deruwe.de/?p=206</guid>
		<description><![CDATA[Ich suchte letztens eine Möglichkeit eine Menge Nachrichten aus StudiVZ zu exportieren um sie mir zu archivieren. Ich habe eine recht praktische Möglichkeit gefunden. Dazu benötigt man FreePOPs, ein Programm das diverse Ressourcen (z.B. auch RSS) via POP3 zur Verfügung stellen kann und das StudiVZ Plugin. Damit kann man mit jedem beliebigen Mailprogramm Nachrichten aus [...]]]></description>
			<content:encoded><![CDATA[<p>Ich suchte letztens eine Möglichkeit eine Menge Nachrichten aus StudiVZ zu exportieren um sie mir zu archivieren. Ich habe eine recht praktische Möglichkeit gefunden. </p>
<p><span id="more-206"></span></p>
<p>Dazu benötigt man <a href="http://www.freepops.org/en/">FreePOPs</a>, ein Programm das diverse Ressourcen (z.B. auch RSS) via POP3 zur Verfügung stellen kann und <a href="http://www.andremartin.de/StudiVzPlugin/German.htm">das StudiVZ Plugin</a>. Damit kann man mit jedem beliebigen Mailprogramm Nachrichten aus StudiVZ wie E-Mails empfangen. Das Plugin ist laut Entwickler kompatibel zu StudiVz, MeinVz und SchülerVz. Auch Nachrichten direkt aus dem Mailprogramm schreiben ist möglich, habe ich jedoch nicht getestet.</p>
<p>Ich hatte etwa 1200 Nachrichten zu exportieren, nach jeweils ca. 200 kam es immer zum Abbruch, aber nach einem Neustart fuhr es fort wo es aufgehört hatte.</p>
<p>Zu beachten ist, heruntergeladene Nachrichten werden auf StudiVZ gelöscht und stehen dann dort nicht mehr zu Verfügung. </p>
<p>Wem die Nachrichten sehr wichtig sind, der sollte sich nach einem Anbieter mit IMAP Postfach umsehen (GMX, Web.de,&#8230;) und die heruntergeladenen Nachrichten wieder dort (als E-Mails) ablegen. Da geht dann auch nichts verloren wenn der eigene Rechner den Geist aufgibt und/oder die Backup-CD plötzlich nicht mehr lesbar ist.</p>
]]></content:encoded>
			<wfw:commentRss>http://deruwe.de/2009/08/nachrichten-aus-studivz-exportieren.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
