Sonntag, 28. Dezember 2014

Kontrollstruktur in Python: FOR

Eine weitere Kontrollstruktur ist die FOR-Schleife.
Sie führt wiederkehrende Operationen durch bis eine bestimmte
Bedingung erfüllt wird.
Einfaches Beispiel:

    #!/usr/bin/env python
    # -*- conding: utf-8 -*-
   
    for i in range(1, 10):
     print i
    else:
     print "Gezaehlt bis: ", i



Diese Schleife zählt von 1 bis 9 hoch,
und gibt den Wert auf der Konsole aus.
Ist die Schleife durchgelaufen wird die else  Anweisung
ausgeführt, in diesem Fall geschrieben wie hoch die
Schleife gezählt hat.
die Ausgabe sieht dann so aus:

andre@ubuntu1404:/daten/python$ ./test3.py
1
2
3
4
5
6
7
8
9
Gezaehlt bis:  9
andre@ubuntu1404:/daten/python$



 Es ist zu beachten das die letzte Zahl nicht mit eingeschlossen ist,
also wir haben 10 angegeben, hochgezählt wird bis 9 !

Blick zurück auf 2014

Das Jahr 2014 neigt sich dem Ende,
und ich möchte einen kurzen Blick zurück wagen.
Einiges hat sich getan.
Nach Jahren der Debian Nutzung bin ich (wieder) auf Ubuntu umgestiegen.
Ohne es bereut zu haben.
Dazu habe ich mich entschieden die Programmiersprache Python zu lernen.
Die Server bei meinem Arbeitgeber habe ich auch auf Ubuntu Server umgestellt.
Ein kleiner Server im Wohnzimmer dient mir seit diesem Jahr auch als Jabber und eMail Server. Nun auch unter Ubuntu.
Viele nette Leute habe ich durch Blogs und Diaspora kennengelernt.

Auf diesem Wege möchte ich auch den ganzen netten Leuten danken,
die mir imme wieder geholfen haben die Probleme zu lösen, egal ob in Blogs, in Wikis, per Diaspora oder dem Ubuntuusers Forum.

Danke 2014

Freitag, 19. Dezember 2014

Kontrollstruktur in Python: WHILE

Die While Schleife wird solange durchlaufen,
bis der Wert auf False gesetzt wird.
Beispiel:

    #!/usr/bin/env python
    # -*- conding: utf-8 -*-
    print "Bitte gebe deinen Namen ein";
    richtig = True;
    testname = "Andre";
    while richtig:
     meinname = raw_input();
     if meinname==testname:
      print "Hallo Andre"
      richtig = False;
    else:
      print "Dich kenn ich nicht, dein Name nochmal:"  
    print "Ende";

Als erstes wird die Variable "richtig" auf den Wert wahr gesetzt.
Danach wird die Variable "testname" mit dem String "Andre" bestückt.
Die While Schleife startet und läuft so lange wie der Vergleich
meinname mit testname wahr ist.
Anschliessend kommt eine if-Abfrage. Ist der
eingegebene Name = "Andre" wird die Variable "richtig" auf falsch
gesetzt, womit die Schleife abbricht.

Sonntag, 14. Dezember 2014

Kontrollstrukturen in Python: IF

Eine einfache Kontrollstruktur in Python ist die IF-Abfrage.
Hier wird ein Wert verglichen, und wenn das Erebnis
wahr ist, wird ein Anweisungsblock ausgeführt.
Andernfalls wird ein alternativer Anweisunsblock definiert.

    if zahl ==1:
      print "Zahl ist 1"
    else:
      print "Zahl ist nicht 1"

Hier wird geschaut ob die Zahl 1 ist, dann wird der Block ausgeführt,
andernfalls der zweite Block.

Man kann mit IF noch weitere Werte vergleichen lassen:

    if zahl ==1:
      print"zahl ist 1"
    elif zahl ==2:
      print"Zahl ist 2"
    elif zahl == 3:
      print"Zahl ist 3"
    else:
      print"Zahl ist eine andere als 1,2 oder3"

Hier werden 3 Vergleiche durchgeführt, und erst dann der alternative Anweisungsblock.

Als Programm könnte das dann so aussehen:

    #!/usr/bin/env python
    # -*- conding: utf-8 -*-
    print "Bitte gebe deinen Namen ein";
    meinname = raw_input();
    print "Hallo", meinname;
    print "Welches Jahr haben wir grade?";
    aktuellesjahr = int(input());
    print "Und wann bist du geboren?";
    geburtsjahr = int(input());
    alter = aktuellesjahr-geburtsjahr;
    print "Dann bist du jetzt ",alter," Jahre alt";
    if  alter == 38:
      print"Genau so alt wie ich";
    elif alter > 50:
      print"Boa bist du alt";
    else:
      print"Naja geht ja noch";

Dienstag, 9. Dezember 2014

Radicale Kalender auf Ubuntu Server

Da ich einen eigenen Kalenderdienst nutzen möchte,
den ich auch auf dem eigenen Server betreibe habe ich
mich für Radicale entschieden. Davical benötigt ein Apache2 was
für meinen kleinen Ubuntu-Server (hier noch Version 11.10)
zu umfangreich währe.

Die Installation ist mit der Komandozeile schnell erledigt:

apt-get install radicale

Nun habe ich folgende Werte in der Config Datei

/etc/radicale/config

angepasst:

port = 5232
type = htpasswd
personal = true
filename = /etc/radicale/users
encryption = sha1
folder = /var/lib/radicale/collections


Kurz zur Erklärung:

port=5232 setzt den TCP Port auf den entsprechenden Wert, kann auch geändert werden je nach Bedarf. Wichtig: Auch im Router musste ich eine Portweiterleitung dafür einrichten.

type = htpasswd beschreibt in welchem Format die Kennwortdatei vorliegt.

personal=true bedeutet das private Kalender nur mit Kennwort erreichbar sind.

filename = /etc/radicale/users hier wird die Kennwortdatei gesucht.

encryption = sha1 Beschreibt die Verschlüsselungsvariante für die Kennwortdatei

folder = /var/lib/radicale/collections hier ist der Pfad zu den Kalendern hinterlegt. Ich habe mir für diesen Entschieden weil er kompatibel mit älteren Radicale Versionen ist.


Einbindung in anderen Programmen (hier Lightning):

Man  wählt als Kalenderformat caldav aus, und übergibt dann
folgenden Pfad zu dem Kalender:

http://serverip:5232/benutzername/kalendername.ics

Anschliessend gibt es im Verzeichnis
/var/lib/radicale/collections

ein Verzeichnis mit dem Namen "benutzername" und dem Kalender "kalendername.ics".

 Gestartet wird der Kalender mit:

radicale -f  

oder

radicale -d

Ersteres startet den Kalender im Vordergrund, der zweite Befehl als Dämon Prozess.



Anleitung ist für Ubuntu Server 11.10



Freitag, 5. Dezember 2014

Erste Schritte in Pyhton

Seit langem auf dem Wuschzettel,
jetzt gehe ich es mal so langam an.
Die Programmiersprache Python.

So mit als erstes kommmt natürlich ein "Hallo Welt", das sieht bei
mir in Python nun so aus:

    #!/usr/bin/env python
    # -*- conding: utf-8 -*-
    print("Hallo Welt")


Ganz einfach und Schnörkellos.

Bearbeitet habe ich es mit dem Texteditor joe,
aufruf z.b.:
joe helloworld.py

und ausführbar gemacht mit:
chmod +x helloworld.py

Wenn wir  nun eine Variable einlesen wollen,
z.b. ein Namen nutzen wir dafür raw_input.
In diesem Beispiel wird der Variable "meinname"
mittels raw_input ein Wert zugewiesen,
und dieses dann mit dem Wort "Hallo" zusammen in
der print Anweisung ausgegeben.


    #!/usr/bin/env python
    # -*- conding: utf-8 -*-
    print "Bitte gebe deinen Namen ein";
    meinname = raw_input();
    print "Hallo", meinname;


Eine Zahlenvariable wird mit int(input()) eingelesen.
Als Beispiel dieses kleine Programm.
Es fragt nach dem Namen, liesst dann das aktuelle Datum
und das Geburtsdatum mittels int(input()) ein und weisst
es als Integer Wert der Variable zu. Anschliessend wird das
aktuelle Datum vom Geburtsdatum subtrahiert und das
Ergebnis ausgegeben.

    #!/usr/bin/env python
    # -*- conding: utf-8 -*-
    print "Bitte gebe deinen Namen ein";
    meinname = raw_input();
    print "Hallo", meinname;
    print "Welches Jahr haben wir grade?";
    aktuellesjahr = int(input());
    print "Und wann bist du geboren?";
    geburtsjahr = int(input());
    alter = aktuellesjahr-geburtsjahr;
    print "Dann bist du jetzt ",alter," Jahre alt";


Diese grundlegenden Programme (bisher ohne Kontrollstrukturen)
habe ich aus gewohnheit immer mit einem ; abgschlossen.
bei den input Befehlen hätte man gleich auch noch einen Text mit ausgeben
können, das habe ich für eine bessere Übersichtlichkeit erstmal weggelassen.


Aktuelle php.ini herausfinden

Um unter Ubuntu 14.04 mal schnell die aktuell benutze
php.ini Datei heraus zu finden kann man folgenden Befehle benutzen:

    sudo php -i | grep 'Configuration File'

Dann bekommt man als Ergebnis:

    Configuration File (php.ini) Path => /etc/php5/cli
    Loaded Configuration File => /etc/php5/cli/php.ini


Womit der Speicherort der Datei ersichtlich ist.

Um den Webserver nach Änderungen neu zu starten benutzt man:

    sudo service apache2 restart