Programmieren mit Harald R. Haberstroh (original) (raw)
Montag, 10. Januar 2011
TIOBE-Index: Python ist Programmiersprache 2010
Die Programmiersprache Python konnte unter den im TIOBE-Index gelisteten Sprachen im vergangenen Jahr den größten Zuwachs verzeichnen. Den zweitgrößten Zuwachs hatte Objective-C wegen iPhone- und iPad-Entwicklung. Objective-C galt daher lange Zeit als Kandidat für die Sprache des Jahres 2010.
Detaillierte Informationen gibt es hier und hier.
Labels: C, C#, C++, Go, Objective C, Programmiersprachen, Python, ruby
Dienstag, 26. Oktober 2010
ruby-loganalyse (PR: 5AD, 5BD)
Diverse Server (z.B. Webserver) tragen verschiedene Informationen in ein Logfile ein. Webserver loggen normalerweise jeden Zugriff auf die Website: IP-Adresse, Seite, Browser, Betriebssystem.
Bei Webservern ist es oft interessant, welche Browser oder Betriebssysteme auf der Clientseite verwendet werden.
Schreiben Sie ein ruby-Programm loganalyse.rb, welches ein (Apache-)Logfile einliest und folgende Information ermittelt:
- Liste der Browser und deren Häufigkeiten, absteigend sortiert nach Häufigkeit, prüfen Sie dabei folgende Browser(strings) ohne Berücksichtigung der Groß-/Kleinschreibung:
"Firefox", "Opera", "Mozilla", "Netscape", "MSIE" - Liste der Betriebssysteme und deren Häufigkeiten, absteigend sortiert nach Häufigkeit, prüfen Sie dabei folgende Betriebsysteme(strings) ohne Berücksichtigung der Groß-/Kleinschreibung:
"Linux", "Windows", "Mac" - Liste der Subnetze (
xx.xx.xx.*) mit deren Häufigkeiten, absteigend sortiert nach Häufigkeit (Verwenden Sie zur Unterscheidung der Netze einfach die ersten drei Teile der IP-Adresse am Zeilenanfang). - Liste der IP-Adressen mit deren Häufigkeiten, absteigend sortiert nach Häufigkeit.
- Zugriffe pro Tag mit den Häufigkeiten, sortiert nach Datum (sortieren Sie einfach die Datumstrings – z.B.
27/May/2007).
Die nötigen Informationen sind im Klartext im Logfile enthalten. Am Anfang jeder Zeile steht die IP-Adresse (z.B. 66.249.73.115). Die weiteren Informationen bekommt man durch (Sub-)Stringvergleich bzw. reguläre Ausdrücke.
Ausschnitt aus einem Logfile (↵ bedeutet Zeilenumbruch):
66.249.73.115 - - [27/May/2007:06:50:10 +0200] "GET /r.simon/html/Unterlagen/mysql_de/mysql-2.html HTTP/1.1" 200 3358 "-" "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)"↵ 66.249.73.115 - - [27/May/2007:06:50:15 +0200] "GET /d03011/Art_of_War_Forum/board.php?boardid=17&sid=c8422d9b444a6ca37c37194516d35532 HTTP/1.1" 200 6297 "-" "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)"↵ 81.52.143.15 - - [27/May/2007:06:51:11 +0200] "GET /robots.txt HTTP/1.1" 404 379 "-" "Mozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.8.1) VoilaBot BETA 1.2 (http://www.voila.com/)"↵ 81.52.143.15 - - [27/May/2007:06:51:12 +0200] "GET /d00050/http:/213.133.115.133/p/www.alpennic.com/zp_at.html HTTP/1.1" 403 550 "-" "Mozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.8.1) VoilaBot BETA 1.2 (http://www.voila.com/)"↵ 66.249.73.115 - - [27/May/2007:06:52:02 +0200] "GET /d03011/Art_of_War_Forum/thread.php?postid=227 HTTP/1.1" 200 20545 "-" "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)"↵ 193.170.149.156 - - [27/May/2007:06:52:24 +0200] "GET / HTTP/1.0" 200 209 "-" "check_http/1.99 (nagios-plugins 1.4.6)"↵
Laden Sie sich eine Beispieldatei von http://edvowww.htlwrn.ac.at/HP/blosxom/C/beispiele/access.log herunter (Achtung 14MB).
Schreiben Sie eine Klasse LogAnalyse mit einem Konstruktor, dem der Dateiname übergeben wird. In der Klasse muss eine Methode implementiert werden, welche obige Aufgabenstellung löst.
Im Hauptprogramm muss ein Objekt der Klasse angelegt werden und diese Methode aufgerufen werden. Der Dateiname kommt aus der Kommandozeile.
Hinweise:
Verwenden Sie einen Hash zum Speichern der Zählinformation.
Verwenden Sie die Sortiermethode sort von Arrays, um die entsprechende Liste zu erzeugen.
Abgabe am Ende der zweiten Übungsstunde:
Nennen Sie das Projekt 5_x_d-_name_-ruby-logfile-_i_
Dabei gilt:
- x ... a für 5A, b für 5B
- name ... Ihr Familienname
- i ... Information 1 bis 5, wobei jede Gruppe nur eine Information nach folgender Regel bearbeiten muss:
- 5BD Gruppe 1
- 5BD Gruppe 2
- 5AD Gruppe 1
- 5AD Gruppe 2
- alle, die beim Übungstermin gefehlt haben
Geben Sie auch das Ergebnis als Textdatei innerhalb des Projekts ab: ergebnis.txt. Das Projekt enthält also 2 Dateien:
loganalyse.rbergebnis.txt
# Eingestellt von Harald R. Haberstroh @ 20:00 0 Kommentare
Montag, 4. Oktober 2010
Ruby lernen (PR: 5AD, 5BD)
Lernen Sie Ruby anhand der Vorgangsweise 15 Exercises for Learning a new Programming Language.
Machen Sie ein Projekt 5ad-_name_-learn-ruby bzw. 5bd-_name_-learn-ruby, in dem Sie die Lösungen der 15 Aufgaben dokumentieren (in erster Linie getesteter und kommentierter Source-Code).
Achtung: die erste Aufgabe ist ziemlich schwierig, da das Prüfen, ob eine Taste gedrückt wurde, systemabhängig ist. Lösen Sie diese Aufgabe sowohl für Windows als auch für Linux.
Informationen:
- http://www.ruby-lang.org/de/
- http://www.jobsnake.com/seek/articles/index.cgi?openarticle=8533
- www.jobsnake.com im Google-Cache
- http://stackoverflow.com/
# Eingestellt von Harald R. Haberstroh @ 13:15 0 Kommentare
Sonntag, 20. September 2009
Entwicklungsumgebung für veschiedene Programmiersprachen einrichten
Richten Sie sich eine Entwicklungsumgebung ein, mit der Sie Java, C, C++, Ruby, Groovy und evtl. Python programmieren können. Weiters sollte es möglich sein, Projekte in einem CVS-Repository abzulegen.
Der Schwerpunkt - auch im Hinblick auf die Reife- und Diplomprüfung - liegt auf Java, aber im Laufe des Jahres werden die anderen Sprachen verwenden.
Für Ihre Projekte (Programmbeispiele) sollten Sie sowieso eine Versionsverwaltung einsetzen. In der Schule haben wir einen CVS-Server eingerichtet. Auf diesem System müssen Sie außerdem Ihre Beispiele abgeben.
Ich empfehle eclipse oder netbeans als Entwicklungsumgebung (wobei ich mir nicht sicher bin, ob netbeans auch ein Groovy-Plugin hat).
Falls Sie noch keinen Zugang zum CVS-Server haben, melden Sie sich bei mir.
"Abgabe": erstellen Sie folgende Projekte und checken Sie diese auf dem CVS-Server ein.
- 5ad-name-java-helloworld
- 5ad-name-c-helloworld
- 5ad-name-cpp-helloworld
- 5ad-name-ruby-helloworld
- 5ad-name-groovy-helloworld
- 5ad-name-python-helloworld
name ersetzen Sie bitte durch Ihren Familiennamen. Die Projekte sollen jeweils "Hello World"-Programme in der gegebenen Programmiersprache enthalten.
Termin: Montag 5.10.2009 um 8:40
Labels: Aufgabe, C, C++, CVS, eclipse, groovy, Java, netbeans, PR5, Programmiersprachen, Python, ruby
# Eingestellt von Harald R. Haberstroh @ 19:53 0 Kommentare
Abonnieren Kommentare [Atom]
