Samstag, 13. Dezember 2008

Project Euler - Programmierübungen der Extraklasse!

Ständig steht man vor dem Problem, dass man nicht weiss was man programmieren soll. Entweder sind Programme einfach nicht realisierbar oder es sind so einfache Programme, dass man selber den Nutzen der ganzen Sache nicht erkennt.

Wenn man jetzt noch einen kleinen Hang zu mathematischen Problemen hat, dann ist Project Euler das absolut passende Programm für viele Stunden von Programmierarbeit.

Mehrere auf Programmiersprachen bzw. Lösungen durch Programmiersprachen zugeschnittene Probleme fordern und lehren ungemein. Das beste daran ist die Möglichkeit nach einer eigenen Lösung sich in einem Forum mit anderen auszutauschen und den eigenen Code immer weiter zu optimieren.

Project Euler

Dienstag, 7. Oktober 2008

Open-Source Bug-Tracker - Mantis

Auf der langen Suche nach einem einfach zu installierenden und vorallem Ressourcen sparenden Bugtracker bin ich auf "Mantis" gestoßen. Dieser bietet alles was man braucht, ohne viel Schnickschnack und aufwendiges Design, aber mit sehr guter Funktionalität.

http://www.mantisbt.org/

Montag, 6. Oktober 2008

Mister-Wong - Social Bookmarking Tool

Da ich ein Freund des Web 2.0 und ständig auf der Suche nach Codeschnippseln, oder Problemlösungen bin ist dieses Social Bookmarking Tool eine sehr schöne Sache.
Durch Addons im Browser können so die relevanten Seiten an Mister-Wong übermittelt und dort auf einem eigenen Profil veröffentlicht werden.

Sollte man nun das gleiche Problem erneut vorfinden, oder möchte man gerne anderen Leuten die Antworten auf die Fragen geben ist dies mit der eigenen Bookmark-Seite kein Problem mehr.

Mister-Wong

Sonntag, 5. Oktober 2008

Basteln macht wieder Spaß! - Cubeecraft

Im planetquake.de-Forum bin ich auf diese absolut geniale Seite gestoßen. Diese Seite bietet Vorlagen an, welche ausgedruckt und durch die vorhandenen Markierungen so geschnitten werden können, dass es anschließend möglich ist Figuren daraus zu basteln.
Die Figuren, welche angeboten werden stammen aus allen Bereichen des Films und der Computerspiele und sind für die Nerds unter uns eine wahre Freude :)

http://www.cubeecraft.com

Donnerstag, 25. September 2008

Automatische Sicherung mit tar auf FTP-Server

Ich stand in der letzten Zeit vor dem Problem, eine gute Sicherungsmethode zu finden, welche performant, sicher und unkompliziert von statten geht.
Die beiden ersten Punkte habe ich denke ich erfüllt, am dritten Punkt müsste ich noch arbeiten :)
In diesem Fall wird per Shell-Script eine Sicherung aller relevanter Daten erstellt, gepackt, komprimiert und anschließend auf einen FTP-Server hochgeladen. Wer es brauchen kann, soll es sich gerne kopieren.

#!/bin/sh

# Festlegen der für das Script nötigen Variablen
dateiname="backup.tar.gz"
mysql=`date "+mysql_backup-%Y-%m-%d.sql"`
apache=`date "+apache_backup-%Y-%m-%d.tar.gz"`
datum=`date +%Y-%m-%d`

cd /

# Erstellen der verschiedenen Sicherungen
# MySQL-Komplettsicherung
# Apache-Configsicherung
mysqldump -uuser -ppasswort --all-databases > $mysql
tar cplvzf $apache /etc/apache2
tar cplvzf $dateiname /

echo "Backup erstellt!"

# Erstellen eines neuen Log-Eintrags in die backup.log
echo $dateiname $datum >> backup.log

# Verbindung zum FTP-Server und Hochladen der Dateien
ftp -n 150.50.50.0 << END_OF_FTP
user heinz_user heinz_passwort
put $dateiname
put backup.log
quit
END_OF_FTP

echo "Daten erfolgreich hochgeladen!"

# Löschen der auf dem Server erstellten temporären Dateien
cd /
rm $dateiname
rm $mysql
rm $apache

Dienstag, 23. September 2008

Referat - Scriptsprachen

Kürzlich musste ich für die Schule ein Referat zum Thema Scriptsprachen erstellen. Dieses enthält alles relevante zu den wichtigsten Sprachen, wie kleine Scriptbeispiele, die Geschichte, Anwendungsgebiete etc.

Sollte jemand dieses Referat gebrauchen können, so kann er sich gerne die Informationen herausfiltern, die er benötigt.

Das Referat werde ich hochladen, sobald die vollständige Benotung vonstatten gegangen ist.

Mittwoch, 10. September 2008

Ein Adressbuch mit "pickle"

Nach meinem erstem Projekt, welches mich in der Lernkurve doch sehr vorangebracht habe ich nun ein weiteres aus dem Projektideenfundus des Pythonwikis angestrebt und mich daran versucht.

Zunächst möchte ich ein Adressbuch auf Dateiebene, also ohne eine SQL-Datenbank realisieren bis ich so weit bin, dass ich auch das ohne Probleme hinbekommen würde. Für die Speicherung benutze ich "pickle", ein Modul, welches Daten sequentiell in eine normale Textdatei schreibt, damit es möglich ist nach dem Auslesen dieser Objekte, Variablen etc. in der gleichen Form wieder zu erhalten, ohne diese noch einmal neu deklarieren, oder füllen zu müssen.

Der erste Entwurf ist ein Versuch OOP zu schreiben. Ich hoffe es ist mir "banal" gelungen :) Die überarbeitete Version wird natürlich folgen.

import pickle

from sys import exit

class Person(object):
def __init__(self):
pass

def person_new():
person = Person()
person.vorname = raw_input('Vorname: ')
person.name = raw_input('Nachname: ')
person.geburtsort = raw_input('Geburtsort: ')
person.strasse = raw_input('Strasse: ')
person.hausnummer = raw_input('Hausnummer: ')
person.plz = raw_input('PLZ: ')
person.stadt = raw_input('Stadt: ')
return person

def person_add():
print personen

def person_show():
x = 0
for i in personen:
x+=1
print str(x) + ') ' + i

def dump_dict():
file = open('personen/daten.pk1', 'wb')
pickle.dump(personen, file)
file.close()

def load_dict():
file = open('personen/daten.pk1', 'rb')
personen = pickle.load(file)
file.close()
return personen

def menue_haupt():
print '1) Personen listen'
print '2) Person hinzufuegen'
print '3) Person loeschen'
print '4) Programm beenden'
i = int(raw_input('\nWaehlen Sie eine Option: '));print ''
return i

def menue_list():
i = raw_input('\nWelche Person?\n')
person = personen[i]
print 'Vorname: ' + person.vorname
print 'Nachname: ' + person.name
print 'Gebursort: ' + person.geburtsort
print 'Strasse: ' + person.strasse
print 'Hausnummer: ' + str(person.hausnummer)
print 'PLZ: ' + str(person.plz)
print 'Stadt: ' + person.stadt

def menue_delete():
i = raw_input('\nWelche Person moechten Sie loeschen?\n')
del personen[i]
dump_dict()

## Wieso kann `break` nicht ausgelagert werden?

def main():
while True:
i = menue_haupt()
if i == 1:
while True:
person_show()
menue_list()
i = int(raw_input('\n1) Menue\n2) Nochmal\n'))
if i == 1:
break
elif i == 2:
person_add()
i = int(raw_input('\n1) Menue\n2) Nochmal\n'))
if i == 1:
break
elif i == 3:
while True:
person_show()
menue_delete()
i = int(raw_input('\n1) Menue\n2) Nochmal\n'))
if i == 1:
break
elif i == 4:
exit()

personen = load_dict()
main()

World of Warcraft - Es hat mich wieder gepackt

Ich war eigentlich der Meinung, dass es nach 1 1/2 jähriger Abstinenz von World of Warcraft nicht mehr so einfach möglich wäre mich noch einmal zu begeistern, doch da habe ich mich (leider?) getäuscht.

Eigentlich wollte ich nur für einen Monat noch einmal reinschauen, doch jetzt habe ich das PVP-Set komplett, level einen neuen Charakter, diesmal einen Druiden hoch und merke überhaupt nicht, dass ich so lange ausgesetzt habe.

Nunja, die Zeit wird zeigen, ob die Aktion so gut war :)

Sonntag, 7. September 2008

"Cloverfield" - Monstermovie der Extraklasse!

Die letzten Jahre wurde man ja in filmtechnischer Hinsicht total enttäuscht, wenn es sich denn um die sogenannten "Monstermovies" gehandelt hat.
Die Klassiker wie King Kong, Godzilla und Co. sind nicht mehr wirklich aktuell und das Thema ist ausgelutscht.

Umso mehr habe ich mich darüber gefreut, dass sich endlich wieder jemand an einen solchen Film getraut hat.

Ich spreche hier von "Cloverfield", ein mit einer MiniDV-Cam gedrehter Film, welcher die gesamte Handlung aus der Ich-Perspektive zeigt, aber trotzdem keine schlechte Filmqualität aufweist.
Man ist mitten im Geschehen, weiß nur soviel wie die Akteure selbst und die Schauplätze sind zwar allgemein, aber dennoch beängstigend. Zudem ist das Monster auch sehr innovativ, wie ich finde :)

Zudem finde ich es ganz cool, dass man um den Film vollständig verstehen zu können auf jede kleine Einzelheit achten, oder sogar im Internet Recherchen durchführen muss.

Absolut zu empfehlen!

Dienstag, 2. September 2008

"Hangman" - Mein erstes Python-Projekt

Nachdem mein erster, nur auf Modulbasis bestehender Versuch ein Hangman-Spiel zu schreiben zwar funktioniert hat, in programmiertechnischer Hinsicht allerdings ein Fiasko war habe ich diesen mit Hilfe des deutschen Python-Forums (nur zu empfehlen!) neu geschrieben bzw. so viel geändert, dass im Grunde genommen ein neuer Code daraus entstanden ist :)

Die wichtigsten zusammenhängenden Funktionen sind in Hauptfunktionen unterteilt, um eine bessere Übersicht und Funktionalität gewährleisten zu können. Zur etwas besseren visuellen Darstellung wird auch eine Funktion ausgeführt, welche in kleines Hangman'chen anzeigt.

Der Code ist mit Sicherheit nicht "gut" oder "perfekt", aber vielleicht hilft es ja dem ein oder anderen. Verbesserungsvorschläge sind natürlich auch gerne gesehen :)

Den Code gibts hier

from random import shuffle

datei = open('wort.txt', 'r')
var = datei.read()
words = var.split(" ")
datei.close()

def hangman_show(a, b):
hangman = ["-----", "|/ |", "| o ", "| \O/ ", "| / \ "]
for i in range(a, b):
print hangman[i]

def input_char():
char = raw_input('\nBitte geben Sie einen Buchstaben ein:')
while len(char) > 1 or char == '':
char = raw_input('Bitte geben Sie einen EINZELNEN Buchstaben ein:')
char = char.upper()
return char.swapcase()

def output_word(wort, buchstaben):
daneben = 0
for stelle in wort:
if stelle in buchstaben:
print stelle,
else:
print "_",
daneben += 1
return daneben

def guess_chars(versuche, words):
shuffle(words)
wort = words.pop()
fehler = 0
buchstaben = ''
while fehler < versuche:
char = input_char()

if char in wort:
print 'Dieser Buchstabe ist richtig!'
if char not in buchstaben:
buchstaben += char
if output_word(wort, buchstaben) == 0:
print '\nSie haben das Wort erraten!'
break
else:
print 'Dieser Buchstabe ist schon vorhanden!'
else:
print 'Dieser Buchstabe ist falsch!'
hangman_show(0,fehler+1)
fehler += 1
if fehler == versuche:
print '\nSie haben verloren!'

nochmal = ''
while nochmal == 'j':
guess_chars(5, words)
nochmal = raw_input('Wollen Sie noch einmal spielen? (j/n)')

Montag, 1. September 2008

Erste eigene Wohnung!

So, endlich, nach viel Stress und körperlicher Arbeit ist es soweit, die erste gemeinsame Wohnung mit meiner Freundin ist bewohnbar, mehr oder weniger zumindest :)

Jetzt wo alles hier ist müssen die letzten beiden verbleibenen Zimmer, die Küche und das Badezimmer fertig gemacht werden und dann ist es endlich möglich die noch im Wohnzimmer gestapelten Sachen so zu verteilen das die Wohnung in einem normalen Antlitz erblüht.

Die Bilder werden folgen :)

Freitag, 29. August 2008

Datenbankabfrage über mehrere Tabelle ohne Joins

Nach mehreren Stunden herumprobieren habe ich endlich einen Befehl gefunden, der mein Problem löst. Eigentlich sehr einfach, aber finden muss man ihn erst einmal :)

Ich spreche vom UNION-Befehl.

Problem: Datenbankabfrage über mehrere gleich aufgebaute Tabellen, zum einen um Übersicht zu gewähren und zum anderen, weil in Zukunft enorm viele Datensätze aufgenommen werden, welche in einer Tabelle zu einem Wust von Daten führen würden.

Ich habe mehrere Befehle und Sortiermethoden ausprobiert, z.B. die einzelnen Abfrage-Arrays nach den Abfragen zu verketten, um die Arrays selber zu ordnen nur keine der Möglichkeiten war zufriedenstellend.

Der UNION-Befehl machte alles sehr einfach und mich glücklich :)

Beispiel: Alle Datensätze sollen abgefragt werden

Tabelle abc
Tabelle def

(SELECT * FROM abc) UNION (SELECT * FROM def)

Mittwoch, 9. Juli 2008

Erste Gehversuche: FreeBSD

So, nach der ersten missglückten Installation vor ein paar Jahren habe ich mich heute bei der Suche nach den bestmöglichen Serversystemen an FreeBSD herangewagt und die kleinstmögliche Installation gestartet.

Die Installation selbst sehe ich nicht als schwer an, da sind Distributionen wie Gentoo doch weit komplizierter, wobei hier auch alles von der Übung an sich abhängt. Nach der Partitionierung, welche durch die sehr gute Dokumentation ein Kinderspiel ist kann das komplette Betriebssystem einfach von einem Server geladen und eingespielt werden. Läuft die Installation einmal, so kann man sich fürs erste zurücklegen.

Jetzt läuft das System...... der nächste Schritt wird die Installation der kleinsten Basisprogramme sein :)

Donnerstag, 3. Juli 2008

Indiana Jones und das Königreich des Kristallschädels

Gestern war es wieder soweit, endlich habe ich wieder ein Kino von innen gesehen und konnte den neuesten Indiana Jones Teil genießen.
Nun, ich muss zugeben, er ist nicht so gut, wie die alten Teile, aber dennoch nicht so schlecht, wie ihn doch so einige Kritiker bezeichnet haben.

Alle typischen Indiana Jones Elemente sind vorhanden, die Musik ist erste Sahne, Harrison Ford hat sich für sein Alter erstaunlich gut gemacht, einziges Manko ist die teilweise doch arg überzogene Storry.

Er ist durchaus gut, kein Meilenstein, aber gut. Popcornkino ist etwas anderes. Ich freue mich auf jeden Fall auf die DVD, damit ich die Indiana Jones Reihe vervollständigen kann.

Debian mit Squid-Proxy

Heute habe ich das erste mal einen Squid-Proxy für den praktischen Einsatz in einer VM aufgesetzt und getestet und ich kann nur eins sagen, ich bin begeistert!

Wenn man sich durch 2-3 Seiten gearbeitet hat, den ersten Kontakt mit den Variablen erhält und der Proxy in den ersten Testbetrieb geht gibt es einfach nichts einfacheres, perfomanteres und besseres! Zumal man auch beachten muss, dass der komplette Proxy kostenlos ist.

Links:
http://www.squidportal.de/
http://www.squid-cache.org/