|
|
|
|
Webdesign & Development hab ich fertig, das waren vier Jahre - die ersten zwei clientside, das dritte serverside und das vierte eine akademische Anwendung der ersten drei Jahre.
Da ich aber weiter an der Uni bleibe um einen Master zu machen haben sie mich eben gefragt ob ich die erst Semester in ihren Labs beaufsichtigen moechte
|
|
|
|
|
|
|
Pff, das ist doch alles Handwerk. Doch kein Studium!
|
|
|
|
|
|
|
Vielleicht nicht in Deutschland, aber hier studiert man ja auch um Krankenschwester zu werden
|
[Dieser Beitrag wurde 1 mal editiert; zum letzten Mal von Y2Keeper am 09.09.2009 14:31]
|
|
|
|
|
|
1,0 \o/
Meine Prüfung war komplett anders als die der anderen.
Es kam nämlich der befürchtete satz:
"Jo Herr Weitzel, sie haben ja Logik für mich kontrolliert, da sollte das ja kein Problem sein"
(ich konnte mich vorm lernen an rein gar nichts erinnern.
Normalerweise hieß es, es sei Platz für einen Beweis in der Prüfung, der Rest sei Definitionen und erklären.
Ich habe 6 Beweise gebracht UND alles erklärt.
Zum Schluss noch schön diskutiert über Themen die nicht unbedingt mit KI zu tun haben, das war spass.
Beste Prüfung die ich je hatte (inkl. Job gesichter fürs neue Semester)
|
|
|
|
|
|
|
Glückwunsch, dann kannst du uns ja jetzt ein Salatbrain bauen, das uns die Weltherrschaft an, äh, uns reißt \o/
|
|
|
|
|
|
|
Ich würde den Thread ja Glückwunsch-mäßig unbenennen...
|
|
|
|
|
|
|
Besser nicht, sonst macht mercury hier dicht
|
|
|
|
|
|
|
Untertitel ändern?
|
|
|
|
|
|
|
Hat sicherlich ähnliche Konsequenzen
|
|
|
|
|
|
|
was musstest du dafür tun ???
|
|
|
|
|
|
|
Wilden Hemmungslosen mit allen Angestellten *brrrr* und allen Angestelltinnen *rrrrr* der Hassfurter Stadtwerke.
|
|
|
|
|
|
|
Du gehst dem Matthias fremd???
|
|
|
|
|
|
|
Für schnelles Internet tue ich alles.
|
|
|
|
|
|
|
Schlampe!!
|
|
|
|
|
|
|
Das ist das was du denkst.
|
|
|
|
|
|
|
So, meine Damen und Herren, sieht das im übrigen aus wenn 2 Leute kommunizieren, die nicht mehr ganz richtig in der Birne sind:
ICQ:
|
|
|
|
|
|
|
Da kann ich morgen auch mal einen Screenshot nachreichen.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Jetzt muss jemand noch einen Parser schreiben, der den Post ausliest und den Link mit dem Zitat ersetzt! \o/
Nein, das werde nicht ich sein ... :P
|
|
|
|
|
|
|
| Zitat von cms
Jetzt muss jemand noch einen Parser schreiben, der den Post ausliest und den Link mit dem Zitat ersetzt! \o/
Nein, das werde nicht ich sein ... :P
| |
Apropo Parser. Ich hab gestern einen kleinen Python Parser geschrieben um diese Grauenvolle Misgeburt in etwas schönes zu verwandeln:
|
Code: |
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import urllib2, re
from BeautifulSoup import BeautifulSoup
import datetime
MEAL_TYPES = ("Eintopf", "Hauptg. 1", "Hauptg. 2", "Vegetarisch", "Beilagen")
def _text(node):
'''Bereinigt einen rohen HTML-String von allen Tags, Newlines, Whitespaces
und sonstigem Müll'''
def clean(s):
s = s.replace(' ', ' ').replace('ä',u'ä')
s = s.replace('ö',u'ö').replace('ü',u'ü')
s = s.replace('"', '"').replace('ß', u'ß')
s = s.replace('&','&').replace('€', u'¤')
s = s.replace('„','"').replace('“','"')
s = re.sub('\s+',' ', s)
s = s.strip()
return s
text_nodes = filter(lambda x: x, [clean(x) for x in node.findAll(text=True)])
raw = ' '.join(filter(lambda x: x, text_nodes))
return raw
# objektwrapper für daten
class Meal:
def __init__(self, typ, text, price):
self.typ = typ
self.text = text
self.price = price
class Day:
def __init__(self, date, meals):
self.date = date
self.meals = meals
def extract(html):
body = BeautifulSoup(html).html.body
## vorarbeiten
# interessanten tabelle
header = body.find("th", attrs={"colspan": 6})
table = header.parent.parent # mensaplan tabelle
## tabelle bearbeiten und aufbereiten
# manchmal stehen da überflüssige infos zwischen, die fliegen raus
[tr.extract() for tr in table.findAll("tr", attrs={"class": "schrift_fett"})]
# außerdem sie ersten zwei zeilen der tabelle weg (überschriften)
[tr.extract() for tr in table.findAll("tr")[:2]]
# und der cafeteria specials fleigen auch raus
[td.extract() for td in table.findAll("td", attrs={"colspan": 5})]
## daten extrahieren
# das datum von wann bis wann der plan gilt, steht ganz hinten im header
from_to_date = header.contents[-1].strip()
# durch das bereinigen besteht die tabelle aus 5 dreiergruppen von <tr>,
# wobei je drei einen tag bilden. die gesamtzahl der <tr>s ist also 15. Wenn
# das nicht so ist, ist irgendwas schief gelaufen
trs = table.findAll("tr")
assert len(trs) == 15
# der einfachheit halber sortieren wir die dreiergruppen erstmal in eine
# liste mit einem eintrag pro tag
raw_days = []
days = []
for start_idx in range(0,15,3):
end_idx = start_idx + 3
raw_days.append((trs[start_idx:end_idx]))
# exatrhieren der daten
for day in raw_days:
# das datum steht (bis auf das jahr, wo wir einfach als aktuelles annehmen),
# im ersten feld
raw_date = day[0].div.div.contents[-1].strip() + str(datetime.datetime.now().year)
dt = datetime.datetime.strptime(raw_date, '%d.%m.%Y')
date = datetime.date(dt.year, dt.month, dt.day)
# die gerichte haben einen feste reihenfolge und stehen im zweiten feld, die
# preis im dritten
types = MEAL_TYPES
texts = day[1].findAll("td")
prices = day[2].findAll("td")
# die einzelnen pbjekte kommen in ein kleins objekt und landen in einer liste
meals = []
for i in range(4):
meals.append(Meal(
types[i],
_text(texts[i]),
_text(prices[i])
))
# für die beilagen gibt es keinen preis, daher eine sonderbehandlung
meals.append(Meal(types[4], _text(texts[4]), ""))
# alles zusammen landet in einem Wrapper und dann in "days". Fertig.
days.append(Day(date, meals))
return days
|
|
(Massenhaft Tippfehler in den Kommentaren, ich weiß )
Mir war langweilig
|
|
|
|
|
|
|
Du Nachmacher!
Naja. Immerhin bekommt ihr es noch als... ich wage kaum, das noch HTML zu nennen, aber zumindest etwas ähnliches.
|
|
|
|
|
|
|
| Zitat von Achsel-des-Bösen | Zitat von cms
Jetzt muss jemand noch einen Parser schreiben, der den Post ausliest und den Link mit dem Zitat ersetzt! \o/
Nein, das werde nicht ich sein ... :P | |
Apropo Parser. Ich hab gestern einen kleinen Python Parser geschrieben um diese Grauenvolle Misgeburt in etwas schönes zu
verwandeln:
(Massenhaft Tippfehler in den Kommentaren, ich weiß )
Mir war langweilig | |
Same here: http://sandeln.de/mobil/
|
[Dieser Beitrag wurde 1 mal editiert; zum letzten Mal von Teufel am 09.09.2009 19:28]
|
|
|
|
|
|
Ich hab dazu übrigens mal Google Appengine benutzt. In Kombination mit Django ist das eigentlich ganz hübsch, auch wenn man sich an den "Datastore" erstmal gewöhnen muss
http://hrnz-playground.appspot.com/mensaplan/[raw,xml,rss]
|
|
|
|
|
|
|
Page not found, behauptet er, unabhängig davon, ob ich das in eckigen Klammern dahinter mitkopiere. Hrm.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Apropos RegExp:
Wie krieg ich denn ein ordentliches "oder" hin?
In deinem Fall zB:
|
Code: |
/\[raw|xml|rss\]/.test("[raw]") // true
/\[raw|xml|rss\]/.test("[xml]") // true
/\[raw|xml|rss\]/.test("[rss]") // true
Aber auch:
/\[raw|xml|rss\]/.test("[rawmrss") // true
|
|
Wie krieg ich das hin, dass er ausschließlich XML, RSS und XML akzeptiert?
|
|
|
|
|
|
|
wenn das normales regex ist:
(raw|xml|rss)
wenn du auf Charakterklassen matchst, matcht er halt Buchstabe für Buchstabe (bzw. nur den ersten Buchstaben).
|
|
|
|
|
|
|
|
|
|
Thema: Gehirnsalat ( wir unter uns ) |