November, 2007

GIP 8

Mittwoch, November 28th, 2007
#include <string>
#include <iostream>
 
using namespace std;
 
void zahlen(short int z, string &zt);
 
int main()
{
    short int zahl;
    string zahlentext;
 
    while(true)
	{
    	cout << "Zahl = ? ";
        cin >> zahl;
        zahlen(zahl, zahlentext);
        cout << zahl << " = " << zahlentext << endl;
	}
    return 0;
}
 
void zahlen(short z, string &zt)
{
     string einer[9] = {"ein", "zwei", "drei",
                        "vier", "fuenf",
                        "sechs", "sieben",
                        "acht", "neun"};
     string zehner [2] = {"zwanzig", "dreissig"};
     if(z== 20)
          zt = zehner[0];
     else if(z==30)
          zt = zehner[1];
     else if(z>=21 && z<=39)
          zt = einer[(z%10)-1] + "und" + zehner[(z/10)-2];
     else
          zt = "unbekannt";
     //return zt;
}

Dreckige Sachen…

Donnerstag, November 22nd, 2007

Annabel kommt ins Büro: Ich war gerade in einem Laden wo es nur dreckige Sachen gibt.
Christoph: Ja, ja im Sexshop.
Annabel: Daran habe ich gerade auch gedacht als ich es gesagt habe.

GIP 7

Montag, November 19th, 2007
#include <iostream>
#include <string>
 
using namespace std;
 
int main(void)
{
	string text;
	int b[20]={0};
 
	cout << "Text = ? ";
	getline(cin, text);
 
	int iz;
	for(int i=0; i < 20; i++)
	{
		if(text[i] == ' ')
		{
			b[iz]++;
			iz=0;
		}
		cout << text[i] << endl;
	}
	// b[iz]++;
 
	for(int i=0; i < 20; i++)
	{
		if(b[i] > 0)
		{
			cout << endl << i << " ";
			for(int ii=0; b[i] > ii; ii++)
				cout << "#";
		}
	}
	return 0;
}

Beim Frühstück

Donnerstag, November 15th, 2007

Rebecca: Ich finde frische Vollmilch schmeckt immer so nach Kuh.

iPhone

Mittwoch, November 14th, 2007

9.11. und ich hatte es doch schon tatsächlich in der Hand, dabei wurde es in Deutschland erst 2 Tage später veröffentlicht. Leider habe ich es nicht schneller geschafft, es auch zu posten...

Unternehmerwerkstatt

Montag, November 12th, 2007

Über das vergangene Wochenende habe ich an einer Veranstaltung der Unternehmerwerkstatt "The Next Big Thing On The Internet" teilgenommen. Eine wirklich gute Sache, von der ich mit einigen neuen Kontakten und vielen Ideen nach Hause gekommen bin.

Der erste Beitragende Nico Lumma hat mich erstmal fast vom Hocker gehauen. Er hat maßgeblich an Webseiten wie blogg.de, mabber.com, shoppero.com mitgewirkt und hat uns ein wenig von seinem täglichen Todos erzählt.
Im Vortrag von Ralf Schmelter, der vom Gründerkolleg der RWTH kommt, ging es um einen genauen Ablauf für Gründer. Auch um Zahlen und Finanzen, bei denen man erst mal schlucken muss, aber die beim genaueren Betrachten für diese Bronche alltäglich sind.
Von Jochen Krisch haben wir uns zeigen lassen, welche Konzepte es gibt. Dabei hat er Webseiten wie woot.com mit dem Konzept, dass Shopping im Internet auch zum Erlebnis werden soll, dargestellt. Er hat uns gezeigt welche Zielgruppen schon im Internet vertreten sind und wie die derzeitigen Markt-Prognosen sind.
Bei der Vorstellung der Community von Christian Angele und seinen 3 Mitgründern, referiert er sehr offen über seine „Aggressiv“ Marketing Strategien. Aber auch, wie viel Geld bei einem solchen Konzept im Spiel sein muss, damit man mit seinen Ideen nicht auf der Strecke bleibt. Als die Stimmung etwas aufgeregter wurde, als es um den Aufwand bei einem solchen Projekt ging, sagte Peter Ambrozy: „Man muss die Scheiße einfach fressen!“ (altdeutsch würde man dazu sagen Klinkenputzen), um mit seine Sachen Erfolg zuhaben.
Beim Thema Marketingstrategien hat uns Martin Oetting gezeigt, dass es auch mit weniger Geld geht. So stellt er uns die Konzepte vor, wie man Menschen dazu bekommt, dass sie über Produkte reden.
Am Schluss der Vortrag von Peter Ambrozy der mit der Sorry ich habe einen Festen Job, Frau und Kind, ich mache jetzt was eigenes, einen endgültig vom Hocker gerissen hat.
Im ganzen habe ich sehr viel Motivation aus der Veranstaltung nehmen können und die Philosophem „ganz oder gar nicht“ werde ich in dem Zusammenhang auch umzuätzen.
Die Macher von Rudi Rockt, die sich bald Firmieren wollen, waren da und haben einen kleinen ein Blick in ihre Arbeit und den damit Verbunden Aufwand gegeben. Neben bei haben Teile des Teams aus die Veranstaltung geschmissen.

Auch wenn ich nicht aus der Marketing Bronne kommen war ich ganz schön Platt mit wie vielen Fachbegriffen ich überhäuft wurde, die wo ich dachte: „Mensch bin ich schon Alt“.

Was mich überacht hat war die Jugendherberge. Als Pfadfinder konnte man diese aus Kosten gründen nicht mehr besuchen. Was ich dort geändert hat, war schon echt schick. So hatten wir sogar ein eigenes Bad mit Dusche und WC auf dem Zimmer. Noch mal ein Großes danke schön geht an den Leiter der Herberge, denn er wird mir mein Netzkabel das ich auf dem Schrank in meinem Zimmer liegen gelassen habe, Kostenlos zuschicken.

GIP 6

Montag, November 12th, 2007
 
#include <iostream>
 
using namespace std;
 
int addiren( int augend, int addend  )
{
	return augend + addend;
}
 
int subtrahieren( int minuend, int subtrahend )
{
	return minuend - subtrahend;
}
 
int multiplizieren( int multiplikand, int multiplikator )
{
	return multiplikand * multiplikator;
}
 
int dividieren(int dividend, int divisor)
{
	if(divisor == 0)
	{
		return 0;
	}
	return dividend / divisor;
}
 
/* Überladene Funktionen */
double addiren( double augend, double addend  )
{
	return augend + addend;
}
 
double subtrahieren( double minuend, double subtrahend )
{
	return minuend - subtrahend;
}
 
double multiplizieren( double multiplikand, double multiplikator )
{
	return multiplikand * multiplikator;
}
 
double dividieren(double dividend, double divisor)
{
	if(divisor == 0)
	{
		return 0;
	}
	return dividend / divisor;
}
 
int main (void)
{
	char id, jn='j', ra;
	double erg=0, z1, z2;
 
	do
	{
 
		cout << "Minirechner: (i)nteger oder (d)ouble ? ";
		cin >> id;
 
		if(id != 'i' && id != 'd')
			continue;			
 
		cout << "Zahl 1 = ? ";
		cin >> z1;
 
		cout << "Rechenart (+ - * /) ? ";
		cin >> ra;
 
		cout << "Zahl 2 = ? ";
		cin >> z2;
 
		if(id == 'i')
		{
			z1 = (int)z1;
			z2 = (int)z2;
 
			switch(ra)
			{
				case '+':
					erg = addiren( (int)z1, (int)z2 );
					break;
				case '-':
					erg = subtrahieren( (int)z1, (int)z2 );
					break;
				case '*':
					erg = multiplizieren( (int)z1, (int)z2 );
					break;
				case '/':
					erg = dividieren( (int)z1, (int)z2 );
					break;
				default:
					break;
			}
		}
		else
		/* if(id == 'd') */
		{
			switch(ra)
			{
				case '+':
					erg = addiren( z1, z2 );
					break;
				case '-':
					erg = subtrahieren( z1, z2 );
					break;
				case '*':
					erg = multiplizieren( z1, z2 );
					break;
				case '/':
					erg = dividieren( z1, z2 );
					break;
				default:
					break;
			}
		}
		cout << z1 << ra << z2 << "=" << erg << endl; 
 
		cout << "Noch einmal (j/n)? ";
		cin >> jn;
 
	}
	while (jn == 'j');	
 
	return 0;
}
 

Frauen und Programmierern

Freitag, November 9th, 2007

Ganz oft werde ich gefragt wie es den mit der Frauen Quote bei mir im Studien gang aussieht. Ich antworte entweder immer das ich sie alle kenne oder das ich sie von einer Hand abzählen kann. Dann fragt man sich immer warum den das so ist. Ob sich Frauen nicht dafür Interessiren? Naja eigentlich begegnet man auch einer ganzen reihe Männern die sich nicht wirklich dafür Interessiren, und so ist es ja auch wieder rum nicht. Ich kenne ne ganze menge Mädels die Tag und Nacht E-Mails Schreiben und ICQen Stdudivzen und so weiter, aber da ist keine dabei die sich dafür interessiert was man mit dem Rechner sonnst noch machen kann oder gar was dahinter steckt. Und ich glaube auch nicht das Mädels einfach nur zu doof dafür sind (nein ich bin auch kein Sexist).

Ohne jetzt als Macho oder so zu wirken, glaube ich das es daran liegt das Frauen einfach nicht so Denken wir Männer. Ganz ohne Vorurteil, Frauen gehen einfach nicht Spielerisch genug an die Sache heran. Wenn man Programmiert muss man aus Probieren um dadurch Erfahrungen sammeln zu können. Des wegen ist ein Computer auch das Beste Werkzeug für den Mann, er kann immer damit Spielen. Zudem muss man Abstrakt in zeilenform Denken um 2D dinge auf dem Schirm heraus zu bekommen. Anders kann man es erklären, das es Männer erfunden haben und es so geschrieben haben, das es perfekt an die Denkweisen von Männern anknüpft.

Ja ein sehr schwieriges Thema und nun noch ein Macho Grund, an den ich nicht wirklich glaube. Eine Frau die Programmiren könne und noch gut aussieht, währe die Perfekte Frau. Mann könnte sich auf eine ganz anderen ebenen mit einander aus tauschen und bekäme nicht immer gesagt: „Verstehe ich nicht wo von du redest“. Ganz ehrlich die Perfekte Frau wie Mann sie sich wünscht gibt es nicht und das ist vermutlich auch gut so…

Falls ich Dir jetzt auf die Füße getreten haben sollte, oder Du zufällig einer wie Obern beschriebene Person kennst, ich würde gerne eine richtige Programmiererin kennen lernen.

Auch wieder ein Befehl…

Freitag, November 9th, 2007

...den ich öfters brauche aber immer lange danach suche und damit ich in zu kunft weiß wo er steht schreib ich ihn jetzt hier hin.

dpkg --get-selections | less
Er liefert mir alle Parkette die per apt installiert sind listet sie in der less auf.

Rotes Kreutz

Donnerstag, November 8th, 2007

Immanuel: ... da hast du recht.
Christoph: Oh, ich brauch einen Kalender wo ich eine Rotes Kreutz rein machen kann.
Immanuel: Warum?
Christoph: Weil du mir gerade rech gegeben hast.
Immanuel: Gar nicht.

Rsync vom Server zum BackupServer

Mittwoch, November 7th, 2007

Zunächst muss ein Schlüsselpaar erstellt werden. Das machen wir mit "ssh-keygen". Wer die SSH2 verwenden will muss den Äquivalenten befehl dazu nutzen.

root@server:~$ cd /root/.ssh
root@server:~/.ssh$ ssh-keygen -t rsa -f rsync

Kein Passwort eingeben. Dann wurden die folgenden Dateien erstellt.

rsync (ist der private key)
rsync.pub (ist der public key)

Den Public Key auf BackupServer kopieren, damit der lokale Server autorisiert werden kann.

backup@BackupServer:~$ cd /home/backup/.ssh
backup@BackupServer:~/.ssh$ cat rsync.pub >> authorized_keys
backup@BackupServer:~/.ssh$ rm rsync.pub
backup@BackupServer:~/.ssh$ chmod 0600 authorized_keys

Achtung! Falls schon eine "authorized_keys" Datei existiert nicht überschreiben, sondern durchnummerieren.
Zum Testen und um Akzeptieren des Zertifikates könnt ihr euch per SSH verbinden.

root@server:~$ ssh -i /root/.ssh/rsync backup@BackupServer

Wenn nun die Verbindung direkt aufgebaut wird, ohne die Abfrage eines Passworts, habt ihr alles richtig gemacht.

root@server:~$ rsync -e 'ssh -i /root/.ssh/rsync' -avcuz /home/Tux/ ZielServer:/home/Tux/Tuxbackup/

Hier noch eine Übersicht welche Befehle es gibt:

-a Archiv: rekursiv, mit Links und allen Rechten
-v Fortschrittsanzeige
-c Checksummen von Dateien vergleichen
-C Unwichtige Dateien ignorieren
-u Update: neue Dateien nicht überschreiben
-H Hardlinks auf dem Ziel synchronisieren
-n Nichts tun, nur zeigen, was getan würde
-e ssh SSH für die Verbindung nutzen
--delete Lokal gelöschte Dateien auch auf dem Ziel entfernen
--modify-window=N Toleranz für Zeitstempel, die Rsync noch als gleich auffasst
-z Zip: Dateien vor dem Übertragen komprimieren (spart Bandbreite, kostet Rechenzeit)

Wenn der Router zu root im Netzwerk wird

Mittwoch, November 7th, 2007

E-Mail: höchste Panik ist angesagt, mein Rooter ( das Ding mit den Fühlern) scheint im Eimer zusein, er blinkt nicht mehr, trotz Stromzufuhr und ich habe dadurch kein Internet!!!!!!

GIP 5

Montag, November 5th, 2007
#include <iostream>
 
using namespace std;
 
void hw(void)
{
	cout << "Hello wordl!" << endl;
}
 
void cbv1(double d)
{
	cout << d << endl;
}
 
char cbv2 (double d)
{
	if(d >= 0)
	{
		return 'p';
	}
	return 'n';
}
void cbr1(float &f)
{
	f = 12.345;
}
 
int cube(int l, int b, int h=1)
{
	return l * b * h;
}
 
int main (void)
{
	/* Aufgabe a) */
	hw();
 
	/* Aufgabe b) */
	cout << "Wert von a in cbv1 = ";
	cbv1(12.6);
 
	/* Aufgabe c) */
	double d = 7.1234;
	cout << "Wert von a in cbv1 = ";
	cbv1( d );
 
	/* Aufgabe d) */
	cout << "Ergebnis von cbv2 mit Parameter -23: " << cbv2 (-23) << endl;;
	cout << "Ergebnis von cbv2 mit Parameter +10: " << cbv2 (10) << endl;;
 
	/* Aufgabe e) */
	float f=0;
	cout << "Vor dem Aufruf von cbr1: f = " << f << endl;
	cbr1(f);
	cout << "Vor dem Aufruf von cbr1: f = " << f << endl;
 
	/* Aufgabe f) */
	cout << "Daten (L: 10 B: 11 H: 12)" << endl << "Rauminhalt: " << cube( 10, 11, 12 ) << endl;
 
	cout << "Daten (L: 10 B: 11 H: 1)" << endl << "Flaeche: " << cube( 10, 11 )  << endl;
 
	return 0;
}