„Ich glaube, dass gerade die Vielseitigkeit die Voraussetzung für aus dem Rahmen fallende Ideen ist.
Eine solche Idee, wenn man so will, war letzten Endes auch der Computer.“

Konrad Zuse

Zuse-Tower

Konrad Zuse ist 1910 in Berlin geboren, studierte Bauingenieurwesen.
Sein Abitur legte er in Hoyerswerda am Reform-Realgymnasium ab. In dieser Stadt lebte er von 1923 bis 1928.
Lange konnte er sich nicht entscheiden, ob er mehr zur künstlerischen oder technischen Richtung neigte!, er widmete einen Großteil seiner Zeit trotzdem der Malerei.
2010 jährt sich der Geburtstag von Konrad Zuse zum 100. Mal. Hoyerswerda nutzt dies um auf den Erfinder des Computers aufmerksam zu machen, indem sie ein Hochhaus zum Zuse-Tower (umlaufende LED-Leuchten an den Balkonen) mit Zuse-Fenster gestaltet. In unmittelbarer Nähe steht eine Skulptur mit einem Laptop. Ein W-LAN Windkreis umschließt den „Laptopper“ der zum Kommunizieren und Chatten einlädt.

Auch ein Zuse-Museum gibt es in Hoyerswerda, hier bekommt man einen Überblick über
die Geschichte der Rechenhilfsmittel,
die Lochkartentechnik von IBM,
den Lebensweg und das Schaffen von Konrad Zuse,
die DDR-Rechentechnik von Robotron,
die Büro- und Heimcomputer ab 1. Generation.

„Es hat viele Erfinder außer mir gegeben, um den Computer, so wie wir ihn heute kennen,
zu entwickeln. Ich wünsche der nachfolgenden Generation alles Gute im Umgang mit dem
Computer.
Möge dieses Instrument Ihnen helfen, die Probleme dieser Welt zu beseitigen,
die wir Alten Euch hinterlassen haben.“
Konrad Zuse

Post to Twitter

Um mich ein bisschen von dem kommenden Prüfungsstress abzulenken, habe ich mich heute dazu entschlossen, ein kleines Rezept für selbstgemachte Cheeseburger online zu stellen.

Für 2-3 Personen benötigt Ihr folgende Zutaten (Bild 1):

- 2x Vollkorn Toestbrötchen (Kaufland, insg. 12 Brötchen)
- Ketchup
- Schmelzkäse (ca. 24 Scheiben, wenn Ihr doppelt belegt)
- 1ne Tomate
- 500 Gramm Rinderhackfleisch
- Gurke
- Salat
- Zwiebel
- Senf
- Knoblauch
- 2 Eier
- ~100g Semmelbrösel/gequollenes Brötchen

Zuerst schnippelt Ihr den Salat (Bild 2), wie Ihr mögt entweder klein, so wie ich, oder ihr lasst größere Blätter. Danach fangt Ihr an, die Buletten vorzubereiten. Dazu schneidet Ihr die Zwiebel und den Knoblauch klein. Packt dies mit dem Hackfleisch, den Eiern, Semmelbrösel und dem Senf in eine Schale (Bild 3). Diese Masse muss nun kräftig durchgeknedet/vermischt werden. Dies funktioniert entweder mit den Händen, oder ihr nutzt dazu eine Gabel.

Wichtig ist, dass die Masse gut vermischt ist, sonst fallen euch später die Buletten in der Pfanne auseinander (Bild 4). Nun nehmt ihr kleine Teile der Masse aus der Schüssel und formt Sie zu Cheeseburger ähnlichem Pressfleisch (Bild 5). Mit 500g kommt Ihr ungefähr auf 12 – 15 solcher Fleischtaler (Bild 6).

Zu guter Letzt, werden die Hackfleischtaler in einer Pfanne mit Olivenöl gebraten (Bild 7). Beachtet bitte, das Ihr die Hitze ungefähr auf die mittlere Stufe stellt, damit sie euch nicht verbrennen. Während des Bratens backt oder toestet Ihr die Brötchen auf, so das alle Zutaten cirka zeitgleich fertig sind. Diese Brötchen belegt Ihr nun mit Fleisch, Käse, Ketchup und euren Salatzutaten (Bild 8, Bild 9).

Guten Appetit!

Post to Twitter

Mittels einem einfachen wget Befehl ist es möglich, ein komplettes Verzeichnis aus dem Internet herunter zu laden.

Folgender Befehl lädt das komplette Verzeichnis inkl. Unterverzeichnisse herunter:

> wget -r http://wh12.tu-dresden.de/~aucbdude/Digitaltechnik/ –no-parent –reject “index.html*” -l 5 -nH

Wobei die einzelnen Parameter folgendes bedeuten:

-r rekursiv herunterladen
–no-parent nicht in übergeordnete Ordner gehen
–reject Ignorierfilter
-l 5 Rekursionstiefe von 5
-nH Den Hostnamen lokal weglassen

Ich habe das ganze in ein kleines Shellscript verpackt, welches wie folgt aufgerufen werden muss:

> ./didl.sh [URL] [Tiefe der Rekursion]

also zum Beispiel:

> ./didl.sh http://wh12.tu-dresden.de/~aucbdude/Digitaltechnik/ 5

Das Script habe ich euch hier zum Download hinterlegt.

Post to Twitter

Heute habe ich wieder die Zeit gefunden, etwas aus dem Männerkochbuch zu probieren. Die Wahl viel schnell auf die Zwiebelsuppe. Für zwei Personen braucht man vier Zwiebeln – anfangs dachte ich “uhh, wer soll das alles Essen?”. Aber während der 20 minütigen Anbratzeit verringert sich das Zwiebelvolumen auf gut 1/4 der Ursprungsmenge. Das ganze zusammen mit Hühnerbrühe, Wein und Essig eine Stunde köcheln lassen und fertig.

Zugegeben, auf dem Foto schauts ein wenig >komisch< aus, hat aber sehr lecker geschmeckt und soll ja auch sehhhhr gesund sein ;). Wieder eine Empfehlung und 2:0 für das Männerkochbuch, welches scheinbar studentensicherer ist, als das Studentenfutter.

Post to Twitter

Studentenfutter und das Männerkochbuch habe ich vor ein paar Wochen zum Geburtstag bekommen. Da ich mich seit geraumer Zeit sehr für Kochen und Küche interessiere, aber ich in letzter Zeit doch häufig das gleiche gekocht habe, kommen mir diese zwei Gedankenanstöße sehr gelegen und über die Pfingstfeiertage war auch genug Zeit einmal in den Büchern rumzustöbern.

Das erste Rezept habe ich aus dem Männerkochbuch gestetet – Club Sandwiches.

Club Sandwiches #1Die Zutaten bestanden dabei aus frischem Eisbergsalat (Wenn ich da auch den richtigen Salat gekauft habe, keine Ahnung ;D), Remoulade, Toasts, Tomate, Putenbrust und Bacon. Wobei ich normalen Schinken genommen habe.

Super Lecker! Absolute Empfehlung. Hier noch eine Nahaufnahme.

Gestern habe ich aus dem Studentenfutter Köttbullar probiert.

Köttbular Aber irgendwie liegen mir Buletten nicht. Jedes mal fallen die Dinger auseinander. Die Soße war auch eher Geschmackssache, einzig und allein mein Kartoffelbrei war spitze – sollte auch sein, wenn schon mein Kartoffelbreistampfgerät dabei kaputt geht … Wie man auf dem Bild rechts sieht, schauts auch nicht soo appetitlich aus :p

In nächster Zeit werde ich sicher noch das eine oder andere aus den zwei Büchern probieren und berichten ;).

Wenn jemand einen Tipp für das Braten von Buletten, ohne das diese auseinander fallen, hat, immer her damit!

Post to Twitter

Einige Tracker haben in letzter Zeit Ihre normale http Announce URL gegen eine https URL getauscht. RTorrent ist ein sehr beliebter, kleiner Linux Konsolen Torrent Client. Leider unterstützt er von Haus aus keine selbst signierten SSL Zertifikate. Glücklicherweiße können wir ihm da aber mit geringem Aufwand auf die Sprünge helfen.

Alle nachfolgenden Schritte müssen als root ausgeführt werden!

Als erstes laden wir das SSL Zertifikat des Trackers herunter, wobei Ihr für “TRACKER-URL.org” eure Tracker URL eintragen müsst:

[root@unix01 ~]# openssl s_client -connect TRACKER-URL.org:443 |tee cafile
[root@unix01 ~]# openssl x509 -inform PEM -in cafile -text -out tracker.pem

Jetzt kopieren wir das Zertifikat in unser System:

[root@unix01 ~]# cp tracker.pem /usr/share/ca-certificates/tracker.crt

Der letzte Schritt ist es, dem System dieses unsigned Zertifikat als “echtes” zu verkaufen. Dafür öffnen wir die Datei /etc/ca-certificates.conf mit zum Beispiel vi. Nun schreibt Ihr irgendwo unter dem auskommentierten Teil eure tracker.crt.

# This file lists certificates that you wish to use or to ignore to be
# installed in /etc/ssl/certs.
# update-ca-certificates(8) will update /etc/ssl/certs by reading this file.
#
# This is autogenerated by dpkg-reconfigure ca-certificates.
# Certificates should be installed under /usr/share/ca-certificates
# and files with extension '.crt' is recognized as available certs.
#
# line begins with # is comment.
# line begins with ! is certificate filename to be deselected.
#
tracker.crt
brasil.gov.br/brasil.gov.br.crt
cacert.org/cacert.org.crt
cacert.org/class3.crt
cacert.org/root.crt
[..]

Nun müsst Ihr nurnoch die CA certificates Datenbank reloaden/updaten

[root@unix01 ~]# update-ca-certificates

Nun sollten Fehler wie Tracker: Peer certificate cannot be authenticated with known CA certificates im rtorrent für diesen Tracker behoben sein.

Das original Tutorial stammt von CodersHELL.

Post to Twitter

Linux Webserver Apache2:

Ausgangssituation
- Mittels VirtualHosts mehrere Subdomains versch. Webpräsenzen zuweißen.
- Via .htaccess den Zugriff auf einen Unterordner Namens „secure“ beschränken und für eine Subdomain eine sichere Verbindung via SSL einrichten.

Konfigurationsdateien:
Debian: /etc/apache2/sitesavailable/… für VirtualHosts etc.
RedHat: /etc/httpd/conf/httpd.conf
→ Bei RedHat basierden Systemen liegt leider alles in einer einzelnen Datei, was die Übersicht ziehmlich beschränkt. Das Tutorial wird sich mit RedHat basierenden Systemen befassen, eine spätere Anpassung an Debian ist möglich.
In meinem Beispiel gibt es die 4 Subdomains:
verkauf.take.local # Seite der Verkaufsabteilung
support.take.local # Seite des Supportes
www.take.local # Hauptseite
ssl.take.local # SSL Seite
(Weiterführend von dem Samba Tutorial)

Als erstes sollten wir also in unserem Windows DNS Server 4 neue ARecords für die 4 Subdomains anlegen.
Beide auf die IP Adresse 192.168.1.231.
Für diese Seiten legen wir nun 2 neue Ordner an:
[root@unix01 ~]# mkdir /var/www/support && mkdir /var/www/verkauf

VirtualHost für non-SSL
NameVirtualHost 192.168.1.231:80
<VirtualHost 192.168.1.231:80>
ServerName verkauf.take.local
DocumentRoot /var/www/verkauf
<Directory /var/www/verkauf>
Options None
AllowOverride All
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
<VirtualHost 192.168.1.231:80>
ServerName support.take.local
DocumentRoot /var/www/support
<Directory /var/www/support>
Options None
AllowOverride All
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
<VirtualHost 192.168.1.231:80>
ServerName www.take.local
DocumentRoot /var/www/html
<Directory /var/www/html>
Options None
AllowOverride All
Order allow,deny
Allow from all
</Directory>
</VirtualHost>

Passwortgeschützten Bereich für /var/www/html/secure erstellen

→ AllowOverride All in httpd.conf!

.htaccess
AuthType Basic
AuthName Secured
AuthUserFile /var/www/apachepasswords
Require user take eric

Passwort Datei erstellen
[root@unix01 ~]# /usr/bin/htpasswd -c /var/www/apachepasswords take # Erstellt die o.g. Passwort Datei
[root@unix01 ~]#
/usr/bin/htpasswd /var/www/apachepasswords eric # -c weglassen, da schon vorhanden

SSL-Verbindung
Die günstigste Variante ist ein selbsterstelltes Zertifikat und genau dieses werden wir jetzt erstellen.

[root@unix01 ~]# openssl genrsa -des3 -rand /var/log/messages:/var/log/smb:/var/log/mysql.log -out take.key 1024
→ Passwort eingeben

[root@unix01 ~]# openssl req -new -key take.key -out take.csr
Enter pass phrase for take.key:
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter ‘.’, the field will be left blank.
——
Country
Name (2 letter code) [GB]:DE
State or Province Name (full name) [Berkshire]:Sachsen
Locality Name (eg, city) [Newbury]:Kesselsdorf
Organization Name (eg, company) [My Company Ltd]:Take AG
Organizational Unit Name (eg, section) []:TAG
Common Name (eg, your name or your server’s hostname) []:ssl.take.local
Email Address []:root@take.local
Please enter the following ‘extra’ attributes
to be sent with your certificate request
A challenge password []:takey
An optional company name []:
[root@unix01 ~]# openssl x509 -req -days 30 -in take.csr \
-signkey  take.key -out take.crt
Signature ok
subject=/C=DE/ST=Sachsen/L=Kesselsdorf/O=Take
AG/OU=TAG/CN=ssl.take.local/emailAddress=root@take.local
Getting Private key
Enter pass phrase for take.key:

Nun haben wir unser eigenes Zertifikat erzeugt. Das kopieren wir nun nach /etc/httpd/conf.d/

[root@unix01 ~]# cp take.key /etc/httpd/conf.d/
[root@unix01 ~]# cp take.crt /etc/httpd/conf.d/

Jetzt muss nur noch die Datei /etc/httpd/conf.d/ssl.conf angepasst werden:

Es müssen nur wenige Einstellungen verändert werden, aus diesem Grund schreibe ich hier nur die Veränderungen:

/etc/httpd/conf.d/ssl.conf
ca. Zeile 84: DocumentRoot „/var/www/ssl“
ca. Zeile 85: ServerName ssl.take.local
ca. Zeile 112: SSLCertificateFile /etc/httpd/conf.d/take.crt
ca. Zeile 120: SSLCertificateKeyFile /etc/httpd/conf.d/take.key

Danach muss der Apache2 neugestartet werden (reload geht in diesem Fall nicht!). Die Passwortabfrage sollte nicht weiter abschreiben, Passwort eingeben und weiter gehts.

Jetzt ist eine SSL-Verbindung über http://ssl.take.local möglich.

MySQL und phpMyAdmin

Als erstes müsst ihr nach einer frischen Installation von MySQL dem root Benutzer ein Passwort geben:

[root@unix01 ~]# mysqladmin -u root password ‘takey’

→ Passwort ‘takey’ ist das neue Passwort – es wird im Klartext übergeben, es sei zu Beachten das niemand Binblick auf euren Monitor hat.

Nun laded euch die neuste Version von phpMyAdmin unter www.phpmyadmin.net herrunter und entpackt diese. Zu guter letzt muss noch ein Eintrag in der Sample-Konfigurationsdatei geändert werden und diese in config.inc.php umbenennen.

Öffnet die Datei config.sample.inc.php mit eurem favorisierten Texteditor (vi, oä.) und editiert folgende Zeile:

$cfg['blowfish_secret'] = ‘IrgendEtwasSinnfreies059689256′;

Alles andere kann so gelassen werden, jetzt noch die Config umbenennen:

[root@unix01 ~]# mv config.sample.inc.php config.inc.php

Aufrufbar ist der phpMyAdmin nun über http://www.take.local/phpMyAdmin.

Dieses Tutorial ist ein Rewrite von CodersHELL.

Post to Twitter

Wie heise mobil berichtet, kommt das Nexus One am 24. Mai auf den deutschen Markt. Als erster Mobilfunkanbieter wird das Smartphone im Onlineshop von Vodafone erhältllich sein.

Online kann es ab nächsten Montag, in den Shops ab Dienstag, bestellt werden. Die Kosten belaufen sich für die vertragsfreie Version auf 490 Euro, in Verbindung mit einem Vertrag wird es ab 30 Euro zu haben sein.

Schade das Google erst jetzt auf die große Nachfrage reagiert und es hierzulande anbietet. Vor ein paar Monaten hätte ich es mirsicher anstelle meines HTC Heros gekauft.

Post to Twitter

Oft weiß man vorher nicht wie groß ein Array wird. Abhilfe schafft folgender kleine Workarround:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
// Array dynamisch an größe anpassen
String[] array = new String[0];

for (int x=0;x<20;x++)
{
    // Temp Array erstellen
    String[] temp = new String[(x+1)];
    System.arraycopy(array, 0, temp, 0, array.length);

    // Temp Array nach array kopieren
    array = new String[(x+1)];
    System.arraycopy(temp, 0, array, 0, temp.length);
    temp = null;

    array[x] = "X-Nr.: "+x;
}

for(int x=0;x<array.length;x++)
{
    System.out.println(array[x]);
}

Post to Twitter

Java-Client
Imports

1
2
3
import java.io.*;
import java.net.*;
import java.util.logging.*;

Klasse “Main”:

1
2
3
public class Main {
// Methode main
public static void main(String[] args) {

Einstellungen

1
2
3
String server = "192.168.2.50";
String path   = "/test.php";
int    port   = 80;

POST Daten welche wir zum Server übetragen möchten

1
String post = "go=login&amp;user=take&amp;pass=123";

Try-Catch Block für den Socket Teil

1
try {

Socketverbindung aufbauen

1
Socket fp = new Socket(server, port);

Input/Output Streams

1
2
BufferedReader input  = new BufferedReader(new InputStreamReader(fp.getInputStream()));
OutputStream   output = fp.getOutputStream();

Anfrage senden

1
2
3
4
5
6
output.write ( ("POST "+path+" HTTP/1.1\r\n").getBytes() );
output.write ( ("Host: "+server+"\r\n").getBytes() );
output.write ( ("Content-type: application/x-www-form-urlencoded\r\n").getBytes() );
output.write ( ("Content-length: "+post.length()+"\r\n").getBytes() );
output.write ( ("Connection: close\r\n\r\n").getBytes() );
output.write ( (post+"\r\n\r\n").getBytes() );

Server Antwort erhalten

1
2
3
4
String line;
String header = "1"; // Zum nervigen Headerscheiß rausschneiden..
while (!input.ready()) {} // Warte bis der Content komplett geladen wurde.
boolean bodyStarted = false;

// Server response Zeile für Zeile ausgeben
while ((line = input.readLine()) != null) {

// Um die Header nicht mit angezeigt zu bekommen:
if (header.length()==0 || bodyStarted==true)
{
System.out.println(line);
}
else {
header = line;
}
}

Verbindung beenden

1
2
3
input.close();
output.close();
fp.close();

Ende des Try-Catch Blocks

1
2
3
4
5
} catch (UnknownHostException ex) {
Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
} catch (IOException ex) {
Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
}

Ende der Methode und Klasse

1
2
}
}

Test-PHP Serverseitig

1
2
3
4
<?php
foreach ($_POST as $key =&gt; $value)
echo "{{$key} =&gt; {$value}}\n";
?>

Die Datei Main.java zum Download.

Post to Twitter

Nächste Seite »