Kleiner Exkurs über das Schulsystem in Österreich:
Die grundlegenden bildungspolitischen Vorgaben, d. h. Schulorganisation und Lehrpläne, sind in Österreich
Aufgaben des Bundes. Die
Gymnasien und Höheren Schulen, wie BHS, sind Bundessache. Es gibt
grundsätzlich drei verschiedene Typen von Gymnasien (AHS): das
wirtschaftskundliche Realgymnasium, das Realgymnasium und das
Gymnasium. Das Bundesgymnasium Rechte Kremszeile ist ein
wirtschaftskundliches Realgymnasium mit Schwerpunkt Informatik. Der
Pflichtschulbereich (in den neun österreichischen Bundesländern)
unterliegt den Landesschulräten bzw. Bezirksschulräten. Für die
Hauptschulen und Volksschulen sind finanziell die Gemeinden
verantwortlich (Ausstattung, Gebäudeverwaltung). Die Schüler kommen
im Alter von durchschnittlich zehn Jahren auf das Gymnasium und
verlassen sie mit der Matura (Abitur) im Alter von 18 oder 19
Jahren.
|
Autoreninformation |
Carsten Rohmann experimentiert seit dem Erscheinen von Knoppix gelegentlich mit (Linux-)Live-Systemen. Das zunehmende Interesse an freien Softwareprojekten, die einem konkreten sozialen Zweck dienen, führte ihn zum Thema „Linux in der Schule“ - beides zusammen zur Beschäftigung mit LinuxAdvanced. |
# apt-get install linux-headers-`uname -r` |
# /etc/init.d/gdm stop |
# sh ./Name_des_treibers.run |
# /etc/init.d/gdm start |
$ compiz --replace |
# dpkg -i --force-architecture skype-debian-2.1.0.47-1_i386.deb |
Autoreninformation |
Curdin Caspar nutzt Linux seit dem Sommer 2009. Anfänglich verwendete er Ubuntu, doch durch seine Neugierde kamen ihm auch schon andere Distributionen zwischen die Finger, wie openSUSE und Debian. |
Kurz erläutert: „Merge Window“ Mit dem „Merge Window“ beginnt der Entwicklungszyklus des Kernels. In diesem Zeitraum werden neue Funktionen, Treiber oder anderweitige größere Neuerungen aus verschiedenen Entwickler-Zweigen in den aktiven Entwicklungszweig des Kernels übernommen. Dieser Zeitraum dauert meist zwei bis drei Wochen und wird mit Veröffentlichung des ersten Release Candidate (-rc1) beendet. Die Begrenzung dieser Zeitspanne soll verhindern, dass zu große Änderungen die weitere Entwicklungsphase beeinträchtigen, sodass nach dem „Merge Window“ überwiegend nur Patches aufgenommen werden, die der Behebung von Fehlern im Kernel dienen. |
Autoreninformation |
Mathias Menzer wirft gerne einen Blick auf die Kernel-Entwicklung, um mehr über die Funktion von Linux zu erfahren und seine Mitmenschen mit seltsamen Begriffen und unverständlichen Abkürzungen verwirren zu können. |
$ tclsh |
#!/usr/bin/tclsh |
Hallo Welt Hallo Welt |
Hallo Welt! |
Hallo Welt! |
can't read "b": no such variable |
1 0 |
0 0 |
# Ein Kommentar set a 42 ;# noch ein Kommentar |
42 |
42 0 |
0 0 |
43 |
44 42 |
Hallo Welt Hallo Welt |
Hallo Welt $a $b |
puts "$a $b" Hallo Welt |
puts "$a $b" Hallo Welt |
12 |
A B C |
3 |
A B C D A B C D E 5 |
A D |
Hallo Welt Hallo Welt |
{Hallo } elt |
Hallo 6 |
Hallo Welt Hallo Welt |
Hallo Welt Welt Hallo |
Hallo Welt Welt Hallo |
Index 1,3 |
Welt Hallo 0 1 1,3 |
1 2 3 4 {} \\ = {"} |
Hallo Welt 10 |
if { [info exists a] } { string length $a } else { set a "Hallo Welt" } |
if { [info exists a] } { string length $a } |
wrong # args: no script following " [info exists a] " argument |
Hallo Welt |
invalid command name "kram" |
if { ![info exists a] } { set a "Hallo Welt" } elseif { [string length $a] == 10 } { puts $a set a "HW" } else { puts $a } |
|
1111111111 |
Welt Hallo 1 0 0 Welt Hallo 1 A(0) = 1 A(Welt) = Hallo A(Hallo) = Welt A(1) = 0 |
|
0 |
Hallo Welt 1 |
Ballons fliegen in die Welt 1 Ballons fliegen nicht 0 |
1 Hai |
set result 1 for { set ii 0 } { $ii < $exponent } { incr ii } { set result [expr $result*$basis] } return $result } |
25 8 1 -8 |
#!/usr/bin/tclsh puts "Anzahl der Parameter: $argc" puts "Parameterliste: $argv" |
$ ./args.tcl Hallo Welt Anzahl der Parameter: 2 Parameterliste: Hallo Welt |
newTask \ "1000.01 Schule/Hausaufgaben" \ "08.02.2010 07:45:00" \ "08.02.2010 12:55:00" |
|
proc printUsage { call } { puts "Usage: $call TASK_FILE" } |
proc checkTimeFormat { timeStr } { return [regexp {^[0-9]{2}:[0-9]{2}:[0-9]{2}$} $timeStr] } proc checkDateFormat { timeStr } { return [regexp {^[0-9]{2}.[0-9]{2}.[0-9]{4}$} $timeStr] } |
proc delLeadingZero { line } { regsub "^0" $line newline return $newline } |
proc addLeadingZero { hours minutes seconds } { if { $hours >= 0 && $minutes >= 0 && $seconds >= 0 } { if { $hours < 10 } { set hours "0$hours" } if { $minutes < 10 } { set minutes "0$minutes" } if { $seconds < 10 } { set seconds "0$seconds" } set realTime "$hours:$minutes:$seconds" } else { error "Error: Time is negative: $hours $minutes $seconds" } return $realTime } |
set timeList1 [split $timeStr1 :] set timeList2 [split $timeStr2 :] |
set hours [expr [delLeadingZero [lindex $timeList2 0]]-[delLeadingZero [lindex $timeList1 0]]] set minutes [expr [delLeadingZero [lindex $timeList2 1]]-[delLeadingZero [lindex $timeList1 1]]] set seconds [expr [delLeadingZero [lindex $timeList2 2]]-[delLeadingZero [lindex $timeList1 2]]] |
set realTime [addLeadingZero $hours $minutes $seconds] |
proc checkDateAndTime { timeDateStr1 timeDateStr2 } { set realTime if { [checkSameDate [lindex $timeDateStr1 0] [lindex $timeDateStr2 0]] } { set realTime [diffTime [lindex $timeDateStr1 1] [lindex $timeDateStr2 1]] } return $realTime } |
if { [regexp {^[0-9]{4}.[0-9]{2}$} [lindex $task 0] ] } { # ... } |
global tasklist if { [info exists tasklist($taskNumber)] } { if { $tasklist($taskNumber) != [lindex $task 1] } { error "Error: ..." set taskNumber } } else { set tasklist($taskNumber) [lindex $task 1] } |
set taskNumber [checkTask $task] |
set diff [checkDateAndTime $starttime $endtime] |
global timelist if { [info exists timelist($taskNumber)] } { set timelist($taskNumber) [addTime $timelist($taskNumber) $diff] } else { set timelist($taskNumber) $diff } |
proc printTaskTimes { } { global timelist global tasklist if { [lsort [array names timelist]] == [lsort [array names tasklist]] } { set taskNumbers [lsort [array names timelist]] foreach taskNumber $taskNumbers { puts "$taskNumber: $timelist($taskNumber) $tasklist($taskNumber)" } } } |
source [lindex $argv 0] |
printUsage $argv0 |
$ ./check_tasks.tcl tasks.txt |
1000.01: 29:05:00 Schule/Hausaufg. 1000.02: 05:54:42 Aushilfsjob 2000.01: 03:54:58 Kino 2000.02: 06:13:17 TV 2000.03: 02:58:54 PC 3000.01: 03:07:12 Karatetraining 4000.01: 02:56:37 Klavierunterricht |
Autoreninformation |
Dominik Wagenführ ist Software-Entwickler und hat dabei auch täglich mit Tcl zu tun. Auf die Art hat er diese Skriptsprache schätzen gelernt. |
Autoreninformation |
Kirsten Roschanski gehört seit der ersten Stunde zur Netbook-Nutzergruppe. Daher brauchte sie eine Möglichkeit, ohne CD-Laufwerk ein neues Betriebssystem zu installieren. Da bot sich das Booten von einem USB-Stick an. |
from reportlab.pdfgen.canvas import Canvas from reportlab.lib.units import cm pdfdoc = Canvas('meinpdf.pdf') pdfdoc.drawString(10*cm,10*cm,'Hallo ReportLab') pdfdoc.setFillColorRGB(1,0,0) pdfdoc.setStrokeColorRGB(1,0,0) pdfdoc.drawString(10*cm,11*cm,'Mein erstes Dokument') pdfdoc.showPage() pdfdoc.save() |
from reportlab.pdfgen.canvas import Canvas from reportlab.lib.units import cm pdfdoc = Canvas('meinpdf.pdf') pdfdoc.drawString(10*cm,10*cm,'Seite 1') pdfdoc.showPage() pdfdoc.drawString(10*cm,10*cm,'Seite 2') pdfdoc.showPage() pdfdoc.save() |
from reportlab.pdfgen.canvas import Canvas from reportlab.lib.units import cm from reportlab.lib.pagesizes import letter, landscape pdfdoc = Canvas('meinpdf.pdf',landscape(letter)) pdfdoc.drawString(10*cm,10*cm,'Hallo Letter-Querformat!') pdfdoc.showPage() pdfdoc.save() |
breite, hoehe = landscape(letter) |
from reportlab.pdfgen.canvas import Canvas from reportlab.lib.units import cm pdfdoc = Canvas('meinpdf.pdf') pdfdoc.setFont('Helvetica',12) pdfdoc.drawString(10*cm,10*cm,'Helvetica in 12 pt') pdfdoc.setFont('Courier', 14) pdfdoc.drawString(9*cm, 11*cm,'Courier in 14 pt') pdfdoc.setFont('Times-Roman', 10) pdfdoc.drawString(8*cm,12*cm,'Times in 10 pt') pdfdoc.showPage() pdfdoc.save() |
from reportlab.pdfgen.canvas import Canvas from reportlab.lib.units import cm from reportlab.platypus import Paragraph, Frame from reportlab.lib.styles import getSampleStyleSheet pdfdoc = Canvas('meinpdf.pdf') styles = getSampleStyleSheet() text1 = Paragraph('Eine Ueberschrift', styles['Heading1']) text2 = Paragraph('Hier steht der Text', styles['Normal']) text3 = Paragraph('Ueberschrift Ebene 2',styles['Heading2']) text4 = Paragraph('Und noch mehr Text...',styles['Normal']) story = [] story.append(text1) story.append(text2) story.append(text3) story.append(text4) f = Frame(5*cm, 5 * cm, 10*cm, 15*cm) f.addFromList(story,pdfdoc) pdfdoc.save() |
styles['Heading2'].fontName = 'Helvetica' |
from reportlab.lib.units import cm from reportlab.platypus import Paragraph, SimpleDocTemplate from reportlab.lib.styles import getSampleStyleSheet styles = getSampleStyleSheet() text1 = Paragraph('Eine Ueberschrift', styles['Heading1']) text2 = Paragraph('Ganz viel Text...', styles['Normal']) text3 = Paragraph('Ueberschrift Ebene 2',styles['Heading2']) text4 = Paragraph('Und noch mehr Text...',styles['Normal']) story = [] story.append(text1) story.append(text2) story.append(text3) story.append(text4) pdfdoc = SimpleDocTemplate('meinpdf.pdf') pdfdoc.build(story) |
text2 = Paragraph('Ganz <strong>viel</strong> Text...', styles['Normal']) |
Autoreninformation |
Jochen Schnelle hat eine einfache Möglichkeit gesucht, PDF-Dokumente aus Python heraus zu generieren und mit ReportLab gefunden. Er nutzt es beruflich für diverse Intranet-Projekte. |
Buchinformationen | |
Titel | Reguläre Ausdrücke Kochbuch |
Autor | Jan Goyvaerts & Steven Levithan - Übersetzung: Thomas Demmig |
Verlag | O'Reilly, 2009 |
Umfang | 521 Seiten |
ISBN | 978-3-89721-957-1 |
Preis | 49,90 € |
Autoreninformation |
Michael Niedermair ist Lehrer an der Münchner IT-Schule und unterrichtet Programmierung, Datenbanken, IT-Technik und Linux. Nebenbei schreibt und liest er viel und geht gerne in die Berge. |
Buchinformationen | |
Titel | Gentoo Linux - Installation - Konfiguration - Administration |
Autor | Gunnar Wrobel |
Verlag | Open Source Press, 2008 |
Umfang | 416 Seiten |
ISBN | 978-3-937514-34-5 |
Preis | 19,95 € |
Autoreninformation |
Martin Ingenhoven benutzt, abgesehen von einem erfolglosen Versuch mit Suse Linux 7, privat seit fünf Jahren ausschließlich GNU/Linux als Betriebssystem. Am liebsten arbeitet er mit debianbasierten Distributionen, ist aber bekennender Distrohopper, der immer einen Rechner zum Spielen und Basteln herumstehen hat. |
Messen | ||||
Veranstaltung | Ort | Datum | Eintritt | Link |
LiWoLi 2010 | Linz | 15.-17.04.2010 | frei | http://linuxwochen.at |
Der Freie Software Tag | Krems | 17.04.2010 | frei | http://linuxwochen.at |
Grazer Linuxtage | Graz | 24.04.2010 | frei | http://linuxwochen.at |
Linuxwochen Wien | Wien | 06.-08.05.2010 | frei | http://linuxwochen.at |
LUG Camp | Roth | 13.-16.05.2010 | 55 EUR | https://lug-camp-2010.de |
FuCamp | Furtwangen | 14.-16.05.2010 | frei | http://fucamp.mixxt.de/ |
Freifunk Weekend | Berlin | 14.-16.05.2010 | frei | https://wiki.freifunk.net |
Linuxwochen Eisenstadt | Eisenstadt | 28.-29.05.2010 | frei | http://linuxwochen.at |
GPN9 | Karlsruhe | 03.-06.06.2010 | - | http://entropia.de/wiki/GPN9 |
LinuxTag | Berlin | 09.-12.06.2010 | 12 EUR | http://www.linuxtag.de |
FrOSCon | Sankt Augustin | 21.-22.08.2010 | 5 EUR | http://www.froscon.de |
FrOSCamp | Zürich | 17.-18.09.2010 | frei | http://froscamp.org |
Ubucon | Leipzig | 15.-17.10.2010 | - | http://www.ubucon.de |
Open Source Expo | Karlsruhe | 15.-16.11.2010 | - | http://openexpo.de |
OOoKWV | München | 16.-17.11.2010 | - | http://www.oookwv.de |
$: | Shell-Prompt |
#: | Prompt einer Root-Shell - Ubuntu-Nutzer können hier auch einfach in einer normalen Shell ein sudo vor die Befehle setzen. |
~: | Abkürzung für das eigene Benutzerverzeichnis /home/BENUTZERNAME |
Impressum ISSN 1867-7991 | ||
freiesMagazin erscheint als PDF und HTML einmal monatlich. | ||
Redaktionsschluss für die Mai-Ausgabe: 18. April 2010 | ||
Kontakt | ||
Postanschrift | freiesMagazin | |
c/o Dominik Wagenführ | ||
Beethovenstr. 9/1 | ||
71277 Rutesheim | ||
Webpräsenz | http://www.freiesmagazin.de | |
Autoren dieser Ausgabe | ||
Curdin Caspar | Debian Testing „squeeze“ | |
Martin Ingenhoven | Rezension: Gentoo Linux | |
Mathias Menzer | Der März im Kernelrückblick | |
Michael Niedermair | Rezension: Reguläre Ausdrücke Kochbuch | |
Carsten Rohmann | LinuxAdvanced-USB-Edition - Mehr als eine „digitale Schultasche“ | |
Kirsten Roschanski | Ubuntu-Live-System von USB-Sticks booten | |
Jochen Schnelle | PDF-Dokumente mit ReportLab generieren | |
Dominik Wagenführ | Eine Einführung in Tcl |
Erscheinungsdatum: 2. April 2010 | ||
Redaktion | ||
Dominik Honnef | Thorsten Schmidt | |
Dominik Wagenführ (Verantwortlicher Redakteur) | ||
Satz und Layout | ||
Ralf Damaschke | Yannic Haupenthal | |
Michael Niedermair | ||
Korrektur | ||
Daniel Braun | Frank Brungräber | |
Stefan Fangmeier | Mathias Menzer | |
Karsten Schuldt | Franz Seidl | |
Stephan Walter | ||
Veranstaltungen | ||
Ronny Fischer | ||
Logo-Design | ||
Arne Weinberg (GNU FDL) | ||