<?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>speters.org</title>
	<atom:link href="http://speters.org/word/?feed=rss2" rel="self" type="application/rss+xml" />
	<link>http://speters.org/word</link>
	<description>all t3h ev1l things that you can imagine</description>
	<lastBuildDate>Mon, 13 Feb 2012 09:17:59 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>Goldbachsche Vermutung &#8211; 2</title>
		<link>http://speters.org/word/?p=242</link>
		<comments>http://speters.org/word/?p=242#comments</comments>
		<pubDate>Mon, 13 Feb 2012 09:17:06 +0000</pubDate>
		<dc:creator>serge</dc:creator>
				<category><![CDATA[c0de]]></category>

		<guid isPermaLink="false">http://speters.org/word/?p=242</guid>
		<description><![CDATA[Die Dusche ist eine der wichtigsten Errungenschaften der heutigen Zivilisation, zumindest was das Nachdenken angeht. Man ist mit dem mechanischen Ablauf des sich Säuberns beschäftigt, eine Tätigkeit, der man sich mehrere Jahrzehnte hingegeben hat und die einem ganz bestimmt keinen Funken geistiger Anstrengung mehr abverlangt. Man denk nicht mehr nach, ob der linke oder der [...]]]></description>
			<content:encoded><![CDATA[<p>Die Dusche ist eine der wichtigsten Errungenschaften der heutigen Zivilisation, zumindest was das Nachdenken angeht. Man ist mit dem mechanischen Ablauf des sich Säuberns beschäftigt, eine Tätigkeit, der man sich mehrere Jahrzehnte hingegeben hat und die einem ganz bestimmt keinen Funken geistiger Anstrengung mehr abverlangt. Man denk nicht mehr nach, ob der linke oder der rechte Arm jetzt dran ist, habe ich schon den Hals gewaschen oder sind jetzt schon die Füße dran? Man macht es einfach, ohne nachzudenken, absolut mechanisch. Der Kopf ist absolut frei, frei für wichtige Gedanken, frei für die besten Gedanken bzw. Ideen überhaupt!</p>
<p>So erging es mir heute ebenfalls. Plötzlich dachte ich darüber nach wieso ich eigentlich bei der Prim-Eigenschaften Berechnung immer von der zu überprüfenden Zahl abwärts laufen lasse? Also versuche die zu überprüfende Zahl mit jeder Zahl bis eins modulo zu nehmen. Das ergibt doch keinen Sinn! Bis zur Hälfte der zu überprüfenden Zahl wird das modulo Ergebnis immer ungleich null sein. Somit habe ich die vorhandene for-Schleife so abgeändert, daß sie die zu überprüfende Zahl nur noch mit den Zahlen ab der Hälfte abwärts modulo genommen werden.</p>
<pre>for (i = ((z - (z % 2)) / 2); i &gt; 1; i--)</pre>
<p>Nach der Änderung der Schleife kam der Algorithmus auf das millionste Ergebnis bereits nach 42 Minuten und 18 Sekunden. Mehr als doppelt so schnell wie vorher!</p>
<p>Beim weiteren Sinnieren im Verlaufe des Nachmittags kam mir die Frage wie hoch denn die Wahrscheinlichkeit wäre, daß die zu überprüfende Zahl modulo einer hohen Zahl gleich null wäre gegenüber einer modulo Operation mit einer kleinen Zahl. Also zum Beispiel wie wahrscheinlich es wäre, daß 27 % 13 gleich 0 wäre gegenüber 27 % 3 gleich 0 wäre. Somit kehrte ich die Schleife einfach um. Gleichzeitig erlaubte ich der Funktion zurückzukehren, wenn die zu überprüfende Zahl eins wäre. Da jede Primzahl nur durch sich selbst und durch eins teilbar ist, kann ich die Schleife ruhig von 3 zählen lassen.</p>
<pre>for (i = 3; i &lt; ((z - (z % 2)) / 2); i++)</pre>
<p>Schon schrumpfte die Rechenzeit auf unglaubliche 9 Minuten und 55 Sekunden. Quasi ein Bruchteil des ursprünglichen Wertes!</p>
<p>Später des Abends fragte ich mich wozu die modulo Operation mit geraden und ungeraden Zahlen durchgeführt wird. Die modulo Operation einer ungeraden Zahl mit einer geraden kann doch nie null ergeben. Somit folgte wieder eine Änderung der for-Schleife.</p>
<pre>for (i = 3; i &lt; ((z - (z % 2)) / 2); i += 2)</pre>
<p>Wie man erkennen kann, zählt die Schleife immer um zwei hoch. Somit werden nur noch ungerade Zahlen berücksichtigt. Auch nach dieser Änderung sank die Rechenzeit. Dieses Mal waren es nur noch 5 Minuten und 19 Sekunden.</p>
<p>Nun frage ich mich nach dem Erfolg des Verringerns der Laufzeit von 106 auf 5 Minuten an einem Tag, ob ich nicht öfter am Tag oder eher den ganzen Tag lang duschen sollte. Und ob mein Notebook strömendes Wasser überhaupt verträgt und/oder ob es generell Unterwassernotebooks gibt. Würde ich eine extra Halterung für das Notebook in der Dusche benötigen? Vielleicht doch lieber Tisch und Stuhl in der Dusche installieren? Na, ich weiß ja nicht&#8230;</p>
<p>BTW: Bugfix in der ersten for-Schleife in der Berechnung der Summe. Die letzte Stelle im Array ist immer eins weniger als die Array Grösse selbst. Was für ein lustiger Fehler&#8230;</p>
<pre>for (i = (arr_size - 1); i &gt;= 0; i--)</pre>
<p>Außerdem stelle ich grad fest, dass entweder mein Code recht seltsam ist (und daran besteht kein Zweifel) oder die Speicherverwaltung verhält sich unter Linux im Gegensatz zum OpenBSD ein wenig anders als erwartet. Segmentation fault. Wie schade.</p>
<div align="left" style="float: ; padding: 5px 5px 0px 0px;"><a name="fb_share" type="button_count" share_url="http://speters.org/word/?p=242"></a></div>]]></content:encoded>
			<wfw:commentRss>http://speters.org/word/?feed=rss2&#038;p=242</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Goldbachsche Vermutung</title>
		<link>http://speters.org/word/?p=165</link>
		<comments>http://speters.org/word/?p=165#comments</comments>
		<pubDate>Sun, 12 Feb 2012 12:54:59 +0000</pubDate>
		<dc:creator>serge</dc:creator>
				<category><![CDATA[c0de]]></category>

		<guid isPermaLink="false">http://speters.org/word/?p=165</guid>
		<description><![CDATA[Ich bin mir sicher, daß ich bei weitem nicht der erste bin, der seinen Spaß damit hat. Die Vermutung ist so simpel wie kompliziert: jede gerade Zahl ist die Summe zweier Primzahlen. Klingt recht einfach, bewaffnet mit einem Blatt Papier und einem Bleistift geht man die geraden Zahlen von vorne durch, addiert so lange zwei [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">Ich bin mir sicher, daß ich bei weitem nicht der erste bin, der seinen Spaß damit hat. Die Vermutung ist so simpel wie kompliziert: jede gerade Zahl ist die Summe zweier Primzahlen. Klingt recht einfach, bewaffnet mit einem Blatt Papier und einem Bleistift geht man die geraden Zahlen von vorne durch, addiert so lange zwei Primzahlen, bis man auf die ganze Zahl kommt. Für z.B. 4 wäre es 1+3, für 6 wäre es 1+5 oder 3+3 usw. Sieht wirklich recht einfach aus und wenn man Spaß an Zahlen hat, versucht man das bis zur Zahl x.</p>
<p style="text-align: justify;">Rechnerisch wäre die Vermutung bis Zahl x bewiesen, doch wie hoch würde die bewiesene Zahl sein auf unserem Blatt Papier? Ein Tausend? Vier Tausend? Womöglich sogar zehn Tausend? Denken wir doch mal ein bißchen größer, was ist mit zwei Milliarden? Macht das unser Kopf und vor allem unsere Geduld überhaupt mit? Immerhin müßte man peu á peu eine Milliarde gerader Zahlen bewiesen haben, um sicher zu stellen, daß alle bisherigen geraden Zahlen der Goldbachschen Vermutung entsprechen. Das heißt man müßte es mathematisch lösen.</p>
<p style="text-align: justify;">Wie wir wissen hat Mathematik recht wenig mit Rechnen zu tun. Mit Rechnen kann man keine allgemein gültigen mathematischen Beweise vollführen. Damit sind bestätigende und nicht bestätigende Beweise für alle Zahlen gemeint. Die Vermutung mathematisch nachzuweisen ist sicherlich eine Herausforderung, vor allem für mich, einen mathematisch eher unbedarften Menschen. Rechnerisch jedoch&#8230; Dafür hat man ja eigentlich Rechner, so habe ich mir gedacht.</p>
<p style="text-align: justify;">Was müßte das Programm machen? Eigentlich ja nur alle Zahlen von null aufwärts durchlaufen, ob sie gerade bzw. ungerade sind prüfen. Bei ungeraden Zahlen auf Prim-Eigenschaften prüfen, Primzahlen in ein Prim-Array schieben, bei geraden Zahlen die Summe prüfen. Somit sah der erste Entwurf wie folgt aus:</p>
<p style="text-align: justify;"><a href="http://speters.org/word/wp-content/uploads/2012/02/prim_01.png"><img class="alignnone size-full wp-image-193" title="Ablaufdiagramm - erster Vorschlag" src="http://speters.org/word/wp-content/uploads/2012/02/prim_01.png" alt="" width="332" height="427" /></a></p>
<p style="text-align: justify;">Wie man sehen kann, geht das Programm in eine Schleife hinein, unterscheidet zwischen geraden und ungeraden Zahlen, untersucht ungerade Zahlen, berechnet gerade Zahlen und fängt wieder von vorne an.</p>
<pre title="prim_srv.c">/*
 * prim_srv.c
 */

#include &lt;sys/errno.h&gt;

#include &lt;unistd.h&gt;
#include &lt;stdlib.h&gt;
#include &lt;string.h&gt;
#include &lt;stdio.h&gt;

#include "prim_srv.h"
#include "errexit.c"
#include "debug.c"
#include "prim.c"
#include "summ.c"

extern int errno;

int main (int argc, char *argv[])
{
    int i = 0;
    int j = 0;

    int* prim_no;
    int* prim_no_tmp;
    int prim_no_size = 0;

    prim_no        = (int*) malloc ((prim_no_size + 1) * sizeof(int));
    prim_no_tmp    = (int*) malloc ((prim_no_size + 1) * sizeof(int));
    prim_no[0]     = 0;
    prim_no_tmp[0] = 0;

    while (1)
    {
        i++;

        if ((i % 2) == 0)
        {
            if (i &gt; 0 &amp;&amp; summ (i, prim_no, prim_no_size) == 0)
            {
                printf ("prim_srv - %i - keine summe vorhanden!\n", i);
                break;
            }
        }
        else
        {
            if (prim(i) == 1)
            {
                if ((prim_no_tmp = (int *) malloc ((prim_no_size + 1) * sizeof(int))) == NULL)
                    errexit ("prim_srv - error malloc of prim_no_tmp");

                for (j = 0; j &lt; prim_no_size; j++) prim_no_tmp[j] = prim_no[j];
                prim_no_tmp[prim_no_size++] = i;

                free (prim_no);
                prim_no = NULL;

                if ((prim_no = (int*) malloc ((prim_no_size) * sizeof(int))) == NULL)
                    errexit ("prim_srv - error malloc of prim_no");

                for (j = 0; j &lt; prim_no_size; j++) prim_no[j] = prim_no_tmp[j];

                free (prim_no_tmp);
                prim_no_tmp = NULL;
            }
        }
    }
}</pre>
<p style="text-align: justify;">Damit nicht alles in einer riesigen Datei hockt, habe ich kurzerhand die Prim-Eigenschafts- und die Summen-Berechnung in zwei extra Dateien ausgelagert, prim.c und summ.c.</p>
<pre title="prim.c">/*
 * berechnet primzahlen
 *
 * z: zu untersuchende zahl
 */

int prim (int z)
{
    int i = 0;
    for (i = (z - 1); i &gt; 1; i--)
    {
        if ((z % i) == 0)
        {
            return 0;
        }
    }
    return 1;
}</pre>
<p style="text-align: justify;">Die Untersuchung einer ungeraden Zahl auf ihre Prim-Eigenschaften gestaltet sich recht einfach: man nehme die Zahl, gehe alle Zahlen von der gegebenen Zahl abwärts bis eins und versuche die zu überprüfende ungerade Zahl mit der abwärts laufenden Zahl modulo zu nehmen. Falls der ermittelte Restwert der modulo Operation null ergibt, ist die untersuchte ungerade Zahl keine Primzahl.</p>
<p style="text-align: justify;">Wie man unschwer erkennen kann, ist dieser Algorithmus zwar recht einfach, jedoch auch ziemlich rechenaufwändig. Da sollte man beizeiten das Mathematikbuch herausholen und tatsächlich darüber nachdenken wie man den Algorithmus intelligenter gestalten kann.</p>
<pre title="summ.c">/*
 * berechnet Summe
 *
 * z:        zu untersuchende zahl
 * arr:      array mit primzahlen
 * arr_size: groesse des arrays
 */
int summ (int z, int arr[], int arr_size)
{
    int i = 0;
    int j = 0;
    int has_summ = 0;
    int i_j_summ = 0;

    for (i = arr_size; i &gt;= 0; i--)
    {
        i_j_summ = 0;
        for (j = 0; j &lt; arr_size; j++)
        {
            i_j_summ = arr[i] + arr[j]; 

            if (i_j_summ &gt; z) break;
            has_summ = (i_j_summ == z) ? 1 : 0;

            if (has_summ == 1) break;
        }
        if (has_summ == 1) return has_summ;
    }
    return has_summ;
}</pre>
<p style="text-align: justify;">Bei der Untersuchung der Summe bei den geraden Zahlen habe ich mir noch weniger Mühe gegeben. Man nehme das Primzahlen Array gehe das äußere von hinten nach vorne, das innere von vorne nach hinten durch und addiere die Primzahlen der äußeren Schleife mit den Primzahlen der inneren Schleife so lange, bis man auf die gesuchte gerade Zahl kommt.</p>
<p style="text-align: justify;">Tja, was nun? Das Programm ist klein, hübsch und läuft vor sich hin. Für 1000000 Zahlen hat mein sechs Jahre alten Notebook ganze 103 Minuten und 28 Sekunden gebraucht. In Ordnung, es hat ja nur einen Prozessor, somit teilen sich das Betriebssystem und die Berechnung die Rechenzeit. Um bis in eine tiefe Milliardenzahl vorzudringen, muß das Programm schneller werden! Es ist jedoch so schrecklich einfach konstruiert, daß da eigentlich kein Potential mehr drin steckt. Ja, bis auf die Berechnung der Prim Eigenschaften und die Berechnung der Summen. Darüber habe ich mich jedoch bereits vorher muckiert&#8230; Ach &#8230; und das Herumkopieren des dynamisch allozierten Arrays schaut beim Erweitern des Primzahlen Arrays auch recht seltsam aus. Das geht bestimmt intelligenter&#8230;</p>
<p style="text-align: justify;">Ein neuer Ansatz muß her. Wer sagt denn, daß das Programm nur auf einer Maschine rechnen soll? Wie wäre es, wenn das Programm als Server dient und nur die Zahlen an den Client zwecks Prüfung bzw. Berechnung schickt? Oder noch besser: die Zahlen an viele Clients verteilt? Doch wie läßt sich das bewerkstelligen, ohne daß man nach jeder Anfrage an den Client ewig auf eine Antwort wartet, um anschließend die nächste Zahl prüfen bzw. berechnen zu lassen? Oder wie soll das Programm mit vielen Clients gleichzeitig umgehen? Sollte man den klassischen Client/Server Kommunikationsweg oder den RPC Weg wählen? Wie soll das Übergeben des Arrays mit Primzahlen an die Berechnung bei der klassischen Kommunikation funktionieren? Wird es überhaupt noch mit RPC gehen? Muß man die vielen Clients durch Generierung mehrerer Prozesse bedienen? Und wie sieht es mit der Rückgabe der Ergebnisse von den Prozessen an den Server? Wäre da die Interprozesskommunioation der beste Weg oder eher simples wegschreiben der Rückgabe auf die Festplatte? Und was ist mit dem Speichern der Ergebnisse in Arrays, wenn mehrere Clients die Ergebnisse im gleichen Augenblick zurück liefern? Sollte man Semaphore einsetzen, um das zu schreiben zu steuern?</p>
<p>Kommt Zeit, kommt Rat.</p>
<div align="left" style="float: ; padding: 5px 5px 0px 0px;"><a name="fb_share" type="button_count" share_url="http://speters.org/word/?p=165"></a></div>]]></content:encoded>
			<wfw:commentRss>http://speters.org/word/?feed=rss2&#038;p=165</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>lecker nachtisch</title>
		<link>http://speters.org/word/?p=155</link>
		<comments>http://speters.org/word/?p=155#comments</comments>
		<pubDate>Tue, 10 May 2011 12:19:45 +0000</pubDate>
		<dc:creator>serge</dc:creator>
				<category><![CDATA[lecker]]></category>

		<guid isPermaLink="false">http://speters.org/word/?p=155</guid>
		<description><![CDATA[Jeden sonnigen Mittag zu empfehlen&#8230;]]></description>
			<content:encoded><![CDATA[<p>Jeden sonnigen Mittag zu empfehlen&#8230; <img src='http://speters.org/word/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><a href="http://speters.org/word/wp-content/uploads/2011/05/erdbeeren.jpg"><img class="alignnone size-large wp-image-158" title="erdbeeren" src="http://speters.org/word/wp-content/uploads/2011/05/erdbeeren-764x1024.jpg" alt="" width="400" height="535" /></a></p>
<div align="left" style="float: ; padding: 5px 5px 0px 0px;"><a name="fb_share" type="button_count" share_url="http://speters.org/word/?p=155"></a></div>]]></content:encoded>
			<wfw:commentRss>http://speters.org/word/?feed=rss2&#038;p=155</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>back to the roots &#8211; borschtsch</title>
		<link>http://speters.org/word/?p=139</link>
		<comments>http://speters.org/word/?p=139#comments</comments>
		<pubDate>Tue, 28 Sep 2010 14:59:27 +0000</pubDate>
		<dc:creator>serge</dc:creator>
				<category><![CDATA[lecker]]></category>

		<guid isPermaLink="false">http://speters.org/word/?p=139</guid>
		<description><![CDATA[my girlfriend is t3h r0x0r. look at this, its so delicious&#8230;]]></description>
			<content:encoded><![CDATA[<p>my girlfriend is t3h r0x0r. look at this, its so delicious&#8230; <img src='http://speters.org/word/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><a href="http://speters.org/word/wp-content/uploads/2010/09/borsch.jpg"><img class="alignnone size-medium wp-image-140" title="borsch" src="http://speters.org/word/wp-content/uploads/2010/09/borsch-300x225.jpg" alt="borsch" width="300" height="225" /></a></p>
<div align="left" style="float: ; padding: 5px 5px 0px 0px;"><a name="fb_share" type="button_count" share_url="http://speters.org/word/?p=139"></a></div>]]></content:encoded>
			<wfw:commentRss>http://speters.org/word/?feed=rss2&#038;p=139</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>men&#8217;s room</title>
		<link>http://speters.org/word/?p=130</link>
		<comments>http://speters.org/word/?p=130#comments</comments>
		<pubDate>Mon, 27 Sep 2010 13:05:24 +0000</pubDate>
		<dc:creator>serge</dc:creator>
				<category><![CDATA[serge in danger]]></category>
		<category><![CDATA[sinnfrei]]></category>

		<guid isPermaLink="false">http://speters.org/word/?p=130</guid>
		<description><![CDATA[guess what has forced me to take a picture of this vending machine &#8230; o.O]]></description>
			<content:encoded><![CDATA[<p>guess what has forced me to take a picture of this vending machine &#8230; o.O</p>
<p><a href="http://speters.org/word/wp-content/uploads/2010/09/mens_room.jpg"><img src="http://speters.org/word/wp-content/uploads/2010/09/mens_room-300x225.jpg" alt="men&#039;s room" title="men&#039;s room" width="300" height="225" class="alignnone size-medium wp-image-131" /></a></p>
<div align="left" style="float: ; padding: 5px 5px 0px 0px;"><a name="fb_share" type="button_count" share_url="http://speters.org/word/?p=130"></a></div>]]></content:encoded>
			<wfw:commentRss>http://speters.org/word/?feed=rss2&#038;p=130</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>blower fan from Singapore</title>
		<link>http://speters.org/word/?p=123</link>
		<comments>http://speters.org/word/?p=123#comments</comments>
		<pubDate>Thu, 26 Aug 2010 08:17:05 +0000</pubDate>
		<dc:creator>serge</dc:creator>
				<category><![CDATA[sinnfrei]]></category>

		<guid isPermaLink="false">http://speters.org/word/?p=123</guid>
		<description><![CDATA[I had to replace a blower fan in one of our switches. It is a very old switch, there is no support available. Because of that I had to order it in Singapore. That&#8217;s what they&#8217;ve shipped, a blower fan in a Tupperware box&#8230; Crazy guys *g*]]></description>
			<content:encoded><![CDATA[<p>I had to replace a blower fan in one of our switches. It is a very old switch, there is no support available. Because of that I had to order it in Singapore. That&#8217;s what they&#8217;ve shipped, a blower fan in a Tupperware box&#8230; Crazy guys *g*<br />
<a href="http://speters.org/word/wp-content/uploads/2010/08/singapore1.jpg"><img class="alignnone size-medium wp-image-124" title="blower_fan_singapore1" src="http://speters.org/word/wp-content/uploads/2010/08/singapore1-300x236.jpg" alt="" width="300" height="236" /></a><a href="http://speters.org/word/wp-content/uploads/2010/08/singapore2.jpg"><img class="alignnone size-medium wp-image-125" title="blower_fan_singapore2" src="http://speters.org/word/wp-content/uploads/2010/08/singapore2-300x245.jpg" alt="" width="300" height="245" /></a></p>
<div align="left" style="float: ; padding: 5px 5px 0px 0px;"><a name="fb_share" type="button_count" share_url="http://speters.org/word/?p=123"></a></div>]]></content:encoded>
			<wfw:commentRss>http://speters.org/word/?feed=rss2&#038;p=123</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>scp/sftp/rsync only jail</title>
		<link>http://speters.org/word/?p=115</link>
		<comments>http://speters.org/word/?p=115#comments</comments>
		<pubDate>Thu, 19 Aug 2010 09:03:26 +0000</pubDate>
		<dc:creator>serge</dc:creator>
				<category><![CDATA[c0de]]></category>

		<guid isPermaLink="false">http://speters.org/word/?p=115</guid>
		<description><![CDATA[a few days ago i was looking for some kind of a possibility to tell a user, that he can only copy files from a specified directory. no login, only copying files from this directory. i was looking for some kind of a jail. i found a really nice howto for a chroot jail to [...]]]></description>
			<content:encoded><![CDATA[<p>a few days ago i was looking for some kind of a possibility to tell a user, that he can only copy files from a specified directory. no login, only copying files from this directory. i was looking for some kind of a jail.</p>
<p>i found a really nice howto for a chroot jail to lock users into their home directories. the funny thing is that the user does not know that he is in a jail. it looks like a usual unix environment. you have also the possibility to allow scp, sftp and/or rsync. </p>
<p>=> <a href="http://www.cyberciti.biz/tips/howto-linux-unix-rssh-chroot-jail-setup.html" target="_blank">cyberciti.biz</a></p>
<div align="left" style="float: ; padding: 5px 5px 0px 0px;"><a name="fb_share" type="button_count" share_url="http://speters.org/word/?p=115"></a></div>]]></content:encoded>
			<wfw:commentRss>http://speters.org/word/?feed=rss2&#038;p=115</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>delete last 3 files</title>
		<link>http://speters.org/word/?p=103</link>
		<comments>http://speters.org/word/?p=103#comments</comments>
		<pubDate>Thu, 15 Apr 2010 20:38:33 +0000</pubDate>
		<dc:creator>serge</dc:creator>
				<category><![CDATA[c0de]]></category>

		<guid isPermaLink="false">http://speters.org/word/?p=103</guid>
		<description><![CDATA[I have a little problem. Every time I deploy a release, I move the old one into an old-folder. The problem is: is there a way to delete all files in this old-folder except the 3 last files? kind of an opposite of ls -tr &#124; tail -n 3? I took half an hour and [...]]]></description>
			<content:encoded><![CDATA[<p>I have a little problem. Every time I deploy a release, I move the old one into an old-folder. The problem is: is there a way to delete all files in this old-folder except the 3 last files? kind of an opposite of <code>ls -tr | tail -n 3</code>? </p>
<p>I took half an hour and hacked a little script the easy and st00pid way:</p>
<p><code><br />
#!/bin/bash<br />
#<br />
# Name: del-except-3<br />
# Author: pes<br />
# Date: 08.04.2010<br />
# Description<br />
# Deletes all files in ${searchpath} except the last 3<br />
#</code></p>
<p><code>debug=1<br />
searchpath=$1</code></p>
<p><code>if [ ! -d ${searchpath} ]; then<br />
&nbsp;&nbsp;&nbsp;&nbsp;echo "${searchpath} does not exist"<br />
&nbsp;&nbsp;&nbsp;&nbsp;exit 1<br />
fi</code></p>
<p><code>cd ${searchpath}</code></p>
<p><code>last3=`ls -tr | tail -3`</code></p>
<p><code>set -- ${last3}</code></p>
<p><code>last3_1=$1<br />
last3_2=$2<br />
last3_3=$3</code></p>
<p><code>if [ ${debug} -ne 0 ]; then<br />
&nbsp;&nbsp;&nbsp;&nbsp;echo "last 3 files in ${searchpath}"<br />
&nbsp;&nbsp;&nbsp;&nbsp;echo "     1: $last3_1"<br />
&nbsp;&nbsp;&nbsp;&nbsp;echo "     2: $last3_2"<br />
&nbsp;&nbsp;&nbsp;&nbsp;echo "     3: $last3_3"<br />
fi</code></p>
<p><code>for i in `ls -1`; do<br />
&nbsp;&nbsp;&nbsp;&nbsp;if [ "${i}" != "${last3_1}" ]; then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if [ "${i}" != "${last3_2}" ]; then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if [ "${i}" != "${last3_3}" ]; then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo "rm ${searchpath}/${i}"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rm ${i}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fi<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fi<br />
&nbsp;&nbsp;&nbsp;&nbsp;fi<br />
done</code></p>
<p>is there a smart combination of shell commands? someting that does not look that stupid?</p>
<div align="left" style="float: ; padding: 5px 5px 0px 0px;"><a name="fb_share" type="button_count" share_url="http://speters.org/word/?p=103"></a></div>]]></content:encoded>
			<wfw:commentRss>http://speters.org/word/?feed=rss2&#038;p=103</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>norman antivirus + eclipse + heap space</title>
		<link>http://speters.org/word/?p=96</link>
		<comments>http://speters.org/word/?p=96#comments</comments>
		<pubDate>Mon, 12 Apr 2010 06:31:19 +0000</pubDate>
		<dc:creator>serge</dc:creator>
				<category><![CDATA[serge in danger]]></category>

		<guid isPermaLink="false">http://speters.org/word/?p=96</guid>
		<description><![CDATA[vor ein paar tagen haben wir bei uns in der firma vom symantec auf norman virusscanner gewechselt. wir entwickeln java applikationen, d.h. unsere winxp rechner haben dem entsprechend 3gig ram und verwenden eclipse. bei den vorhergehenden tests sah alles in ordnung aus, keine schwierigkeiten mit der entwicklungsumgebung. nach dem rollout haben diverse user festgestellt, dass [...]]]></description>
			<content:encoded><![CDATA[<p>vor ein paar tagen haben wir bei uns in der firma vom symantec auf <strong>norman virusscanner</strong> gewechselt.</p>
<p>wir entwickeln java applikationen, d.h. unsere winxp rechner haben dem entsprechend 3gig ram und verwenden eclipse. bei den vorhergehenden tests sah alles in ordnung aus, keine schwierigkeiten mit der entwicklungsumgebung.</p>
<p>nach dem rollout haben diverse user festgestellt, dass wenn man eclipse starten möchte (egal welche version), das startup-fensterchen kommt und prompt wieder verschwindet o.O oder wenn man glück hat, kommt ein recht grosses popup, in dem sämtliche startup-parameter drin stehen mit der fehlermeldung &#8220;<strong>java vm could not be started</strong>&#8221; oder ähnlichem. da denkt sich jeder: &#8220;wtf?&#8221; wenn man den Xmx parameter in der <strong>eclipse.ini</strong> auf <strong>840mb</strong> stellt, kommt es hoch. jedoch alles über diesem wert&#8230;</p>
<p>nach der befragung von onkel google hat sich herausgestellt, dass ein paar andere virenscanner ein recht ähnliches problem aufweisen. unter anderem panda und kaspersky (<a href="http://www.avrfreaks.net/index.php?name=PNphpBB2&amp;file=printview&amp;t=51843&amp;start=0">link</a>). wenn man &#8220;protection against unknown threats&#8221; abstellt bzw. die virenscanner komplett deinstalliert, ist das problem gelöst. da frage ich mich doch wie zum teufel kann man einen virenscanner auf den markt bringen und vertreiben, der das dynamische allozieren zusätzlichen speichers begrenzt? wtf?</p>
<div align="left" style="float: ; padding: 5px 5px 0px 0px;"><a name="fb_share" type="button_count" share_url="http://speters.org/word/?p=96"></a></div>]]></content:encoded>
			<wfw:commentRss>http://speters.org/word/?feed=rss2&#038;p=96</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>psycho on the street</title>
		<link>http://speters.org/word/?p=89</link>
		<comments>http://speters.org/word/?p=89#comments</comments>
		<pubDate>Fri, 26 Mar 2010 20:51:44 +0000</pubDate>
		<dc:creator>serge</dc:creator>
				<category><![CDATA[serge in danger]]></category>

		<guid isPermaLink="false">http://speters.org/word/?p=89</guid>
		<description><![CDATA[am 25. war ich morgens auf dem weg zur arbeit nach schwerzenbach. war irgend wann gegen viertel vor acht. netter morgen, der viel sonne versprach. ich stehe mit drei anderen fahrzeugen vor einem zebrastreifen (ja, in der schweiz hält man freiwillig vor einem zebrastreifen). musik ist in meinem auto recht laut, ich höre keine umgebungsgeräusche. [...]]]></description>
			<content:encoded><![CDATA[<p>am 25. war ich morgens auf dem weg zur arbeit nach schwerzenbach. war irgend wann gegen viertel vor acht. netter morgen, der viel sonne versprach. ich stehe mit drei anderen fahrzeugen vor einem zebrastreifen (ja, in der schweiz hält man freiwillig vor einem zebrastreifen). musik ist in meinem auto recht laut, ich höre keine umgebungsgeräusche.</p>
<p>plötzlich sehe ich eine frau recht erschrochen von links nach rechts den zebrastreifen überqueren. sie lächelt leicht schockiert, hält sich ihre hand vor die brust. wirft nochmal kurz einen blick zum fahrzeug auf der linken fahrbahn, das ebenfalls dort steht, schlendert weiter.</p>
<p>leicht irritiert fällt mein blick auf den mercedes fahrer, also das fahrzeug, auf das die frau ihren blick geworfen hat. schulterzuckend denke ich mir: &#8220;kei ahnig, hat vielleicht stark gebremst und die frau erschrocken&#8221;. nachdem die frau die strasse überquert hat, dachte ich mir, dass der mercedes fahrer wieder seines weges geht. doch interessanterweise hat er sein fahrzeug auf den bürgersteig gelenkt und ist dort neben 90 grad zur strassenseite geparkten fahrzeugen stehen geblieben.</p>
<p>noch irritierter fällt mein blick auf den hintermann des mercedes fahrers. laut fahrzeug-form konnte man noch erkennen, dass es ein recht neues modell des suzuki swift war. &#8220;war&#8221;, weil die motorhaube einer ziehharmonika glich. extrem sauer hat der hintermann gas gegeben und hat sein fahrzeug zwischen den stehenden mercedes fahrer und die parkenden autos gelenkt. doch nein, er hat nicht gebremst. keineswegs. ungebremst hat der psycho einen fünfer golf so stark gerammt, daß zusätzlich das daneben stehende fahrzeug beschädigt wurde.</p>
<p><a href="http://speters.org/word/wp-content/uploads/2010/03/poor_guy_1.jpg"><img class="alignnone size-medium wp-image-90" title="poor_guy_1" src="http://speters.org/word/wp-content/uploads/2010/03/poor_guy_1-300x225.jpg" alt="" width="300" height="225" /></a><br />
<a href="http://speters.org/word/wp-content/uploads/2010/03/poor_guy_2.jpg"><img class="alignnone size-medium wp-image-91" title="poor_guy_2" src="http://speters.org/word/wp-content/uploads/2010/03/poor_guy_2-300x225.jpg" alt="" width="300" height="225" /></a><br />
<a href="http://speters.org/word/wp-content/uploads/2010/03/poor_guy_3.jpg"><img class="alignnone size-medium wp-image-92" title="poor_guy_3" src="http://speters.org/word/wp-content/uploads/2010/03/poor_guy_3-300x225.jpg" alt="" width="300" height="225" /></a></p>
<p>alter falter&#8230; naja, unfall. passiert schon mal. kann man nix machen. aber gas geben und dabei zwei weitere fahrzeuge beschädigen? wtf?!?</p>
<div align="left" style="float: ; padding: 5px 5px 0px 0px;"><a name="fb_share" type="button_count" share_url="http://speters.org/word/?p=89"></a></div>]]></content:encoded>
			<wfw:commentRss>http://speters.org/word/?feed=rss2&#038;p=89</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

