Du bist nicht eingeloggt! Möglicherweise kannst du deswegen nicht alles sehen.
  (Noch kein mods.de-Account? / Passwort vergessen?)
Zur Übersichtsseite
Hallo anonymer User.
Bitte logge dich ein
oder registriere dich!
 Moderiert von: Che Guevara


 Thema: Gehirnsalat ( wir unter uns )
« erste « vorherige 1 ... 4693 4694 4695 4696 [4697] 4698 4699 4700 4701 ... 6582 nächste » letzte »
erste ungelesene Seite | letzter Beitrag 
TriggerTG

TriggerTG
 
Zitat von Smoking

So, mal eine etwas ausführliche Frage von mir:

Ihr habt hier wahrscheinlich alle schonmal eine JavaScript-Frameworks wie jQuery, Prototype und Konsorten benutzt.

Wofür setzt ihr diese Frameworks ein und was seht ihr an Vorteilen die sich durch die Nutzung der Frameworks ergeben?

Was gefällt euch an den einzelnen Frameworks und was empfindet ihr als verbesserungswürdig?

Wie benutzt ihr die Frameworks? Findet ihr es gut, dass man, je nach Framework, mit ein paar Zeilen Code weitere Funktionen in eine Oberfläche einbinden kann oder würdet ihr eher einen statischen Ansatz begrüßen, bei dem man einmal ein bestimmtes Featureset festlegt, für das dann eine eigene Bibliothek generiert wird?




Mich haben solche Frameworks lange nicht interessiert, da ich von Javascript-Spielereien eh nicht viel hielt: Zu viel frickelei.

Mit jQuery hat sich das enorm geändert: Die DOM-Elemente sind Kinderlicht selektierbar. Genausoeinfach kann man jegliche Eigenschaften ändern, ohne auf die Browser-spezifischen Eigenheiten zu achten. Die Syntaxeigenheiten hat man auch sehr schnell drin.

Weiterhin finde ich gut, dass es mit diversen Drittanbieter-Plugins ganz schöne Animationen möglich sind. Siehe die Easing-Bibliothek zB.

Browser-Addons wie Firebug lassen auch Bugs relativ sinnvoll tracen.

Andere Frameworks habe ich nie ausprobiert (mootools, prototype)

Auch die jQuery-Struktur finde ich ganz gut: Eine Corelibrary und bei Bedarf lädt man halt noch mehr Plugins dazu.

Allerdings muss man da aufpassen, sonst ist man ganz schnell mal jenseits der 500kb Augenzwinkern
28.06.2010 18:46:40  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
Achsel-des-Bösen

AUP Achsel-des-Bösen 06.10.2009
 
Zitat von [Dicope]

Letztens entdeckt:
.delegate( selector, eventType, eventData, handler )


Gott, ist das geil. Ich hab auch noch keine Aufgabe gefunden, die Jquery nicht in ein paar Zeilen könnte. <3 Jquery.


Delegate kannte ich nicht. Awesome! \o/
28.06.2010 18:49:55  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
TriggerTG

TriggerTG
Ui ja, musste erstma nachschlagen was das machen soll: Sehr praktisch!

e\ Ah mist, nu hab ich beim gucken mein Magnum verschlungen und kann mich gar nicht mehr richtig erinnern wie lecker das war

[Dieser Beitrag wurde 1 mal editiert; zum letzten Mal von TriggerTG am 28.06.2010 18:53]
28.06.2010 18:52:28  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
TriggerTG

TriggerTG
 
Zitat von GH@NDI

So Trigger, da haste mal wieder was zum aufschauen Breites Grinsen
[...]



"Generalprobe Bikemarathon 2010"
Wann ist denn dieses Event und worum geht es da?

--

Ich bräuchte ma soeinen wie Ghandi hier. Ständig nur alleine rumzugurken wird langsam trist. Aber die Leute winken immer nur ab. Erstens wegen der Entfernung und zweitens weil ich zu schnell sei peinlich/erstaunt
[Dieser Beitrag wurde 1 mal editiert; zum letzten Mal von TriggerTG am 28.06.2010 19:13]
28.06.2010 19:06:56  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
Smoking

AUP Smoking 09.09.2023
Hm, ok. Als Quintessenz heißt das wohl, dass ihr mit den zur Verfügung stehenden Werkzeugen zufrieden seid und gerade die Möglichkeit bevorzugt, mit ein bisschen Code die Funktionalität zu verändern.

Was würdet ihr von einem WYSIWYG Ansatz bzw. einem Generator halten, der euer Frontend mit ein paar Klicks generieren könnte?

Oder was würdet ihr von einem "MVC"-Framework halten, dass es euch erlaubt den Großteil eurer Logik auf den Client auszulagern?
28.06.2010 19:12:21  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
TriggerTG

TriggerTG
Kommt stark auf die Umsetzung drauf an würde ich sagen: Klingt vorab zu unflexibel, zu langsam (die JS-Engines der Browser sind schon schneller geworden, aber evtl. sind die noch nicht schnell genug), zu sehr nach Frickelei
28.06.2010 19:17:38  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
GH@NDI

ghandi2
 
Zitat von TriggerTG

 
Zitat von GH@NDI

So Trigger, da haste mal wieder was zum aufschauen Breites Grinsen
[...]



"Generalprobe Bikemarathon 2010"
Wann ist denn dieses Event und worum geht es da?

--

Ich bräuchte ma soeinen wie Ghandi hier. Ständig nur alleine rumzugurken wird langsam trist. Aber die Leute winken immer nur ab. Erstens wegen der Entfernung und zweitens weil ich zu schnell sei peinlich/erstaunt



Albstadt Bikemarathon, 10.07.2010
// Ist ein Hobbymarathon. Mit meinem aktuellen 17er Schnitt rutsch ich da grade so in die 1000er finisher. Diese Jahr Starten 3.300 fahrer. Letztes Jahr war das Starterfeld noch auf 2.500 limitiert.

Ich fahr auch immer alleine. Hab mich aber auch dran gewöhnt, so kann ich mein Tempo machen. Wenn andere mal mit mir fahren wollen, sagen sie immer, ich soll ruhig vorher schonmal 40km machen, dann fühlen sie sich nicht so schlecht Breites Grinsen
[Dieser Beitrag wurde 1 mal editiert; zum letzten Mal von GH@NDI am 28.06.2010 19:21]
28.06.2010 19:19:53  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
TriggerTG

TriggerTG
Naja zu Zweit, wenn man ähnlich stark ist, wäre das schon ziemlich geil. So wird man auch auf Passagen, wo man grad schwach ist, doch wieder angetrieben.

Solange muss halt der meckernde Fahrradcomputer reichen, wenn die Geschwindigkeit unter den Durchschnitt rutscht. fröhlich
28.06.2010 19:22:00  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
Achsel-des-Bösen

AUP Achsel-des-Bösen 06.10.2009
 
Zitat von Smoking

Was würdet ihr von einem WYSIWYG Ansatz bzw. einem Generator halten, der euer Frontend mit ein paar Klicks generieren könnte?


Wird nichts. Zu unflexibel...im Zweifelsfall müsste man eh selbst frickeln.

 
Zitat von Smoking

Oder was würdet ihr von einem "MVC"-Framework halten, dass es euch erlaubt den Großteil eurer Logik auf den Client auszulagern?


Auch blöd. Schon aus Sicherheitsgründen müsste man die Hälfte der Logik auf dem Server wiederholen um sicherzugehen.
Mir würde es schon reichen, wenn es für diverse Serverseitige Frameworks die Möglichkeit gäbe mit wenig(!) Aufwand Serverseitige Endpunkte an JS zu binden. Und das bitte unabhängig von der Serverseite.
28.06.2010 19:24:52  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
Teufel

AUP Teufel 21.04.2008
 
Zitat von Achsel-des-Bösen

 
Zitat von [Dicope]

Letztens entdeckt:
.delegate( selector, eventType, eventData, handler )


Gott, ist das geil. Ich hab auch noch keine Aufgabe gefunden, die Jquery nicht in ein paar Zeilen könnte. <3 Jquery.



Delegate kannte ich nicht. Awesome! \o/



Wo ist da jetzt der Unterschied zu live() und click() ?
28.06.2010 19:32:35  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
TriggerTG

TriggerTG
Nirgends.

 
Code:
Delegate is an alternative to using the .live() method, allowing for each binding of event delegation to specific DOM elements. [...]
http://api.jquery.com/delegate/
[Dieser Beitrag wurde 1 mal editiert; zum letzten Mal von TriggerTG am 28.06.2010 19:35]
28.06.2010 19:34:19  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
Smoking

AUP Smoking 09.09.2023
 
Zitat von Achsel-des-Bösen


 
Zitat von Smoking

Oder was würdet ihr von einem "MVC"-Framework halten, dass es euch erlaubt den Großteil eurer Logik auf den Client auszulagern?


Auch blöd. Schon aus Sicherheitsgründen müsste man die Hälfte der Logik auf dem Server wiederholen um sicherzugehen.
Mir würde es schon reichen, wenn es für diverse Serverseitige Frameworks die Möglichkeit gäbe mit wenig(!) Aufwand Serverseitige Endpunkte an JS zu binden. Und das bitte unabhängig von der Serverseite.



Das wäre gerade der Ansatz den ich damit verfolgen würde. Die Anbindung an den Server würde per Ajax geschehen und wie die Daten aussehen, die geladen werden, könntest du selbst bestimmen, da du sie letztlich auch selbst verarbeiten musst. Im Endeffekt könnte man damit auch ein "Liveupdate" bauen, dass halt in einem bestimmten Intervall den Server pollt.

Oder meinst du das anders?
[Dieser Beitrag wurde 1 mal editiert; zum letzten Mal von Smoking am 28.06.2010 19:40]
28.06.2010 19:39:54  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
TriggerTG

TriggerTG
Arrr, warum ist dieser Trend an mir so spurlos vorbei gegangen: ORM (Objektrelationale Mapper, Hibernate z.B.) sind geil Breites Grinsen
28.06.2010 20:04:11  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
Smoking

AUP Smoking 09.09.2023
Da hat man uns sogar in Datenbanken 1 direkt zu geraten, falls wir mal in der Verlegenheit kommen sollten, Datenbanken aus einer Hochsprache heraus ansprechen zu wollen.
28.06.2010 20:06:35  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
CLiX

AUP CLiX 08.12.2012
Kann mir jemand sagen warum der String immer noch irgendwie ein AnsiString ist, und kein Unicode? Anstatt einem Unicode Zeichen empfängt der client nur ein "?"

 
Code:
UnicodeString StrEncrypt( UnicodeString b )
{
	wchar_t * buffer = b.w_str();
	int temp2, temp3;
	UnicodeString buff;

	for (int i = 0; i < b.Length(); i++)
	{
			temp2 = buffer[i];
			temp3 = temp2 + 0xF;
			buff += (wchar_t)temp3;
	}

	return buff;
}


 
Code:
		UnicodeString buffer = "ABCDEFGHIJKLMNOPQRSTUVWXYZÄÖÜ1234567890";
clients[i]->socket->WriteLnRFC( StrEncrypt( buffer ));
28.06.2010 20:07:13  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
igor]2

Phoenix
...
 
Zitat von [DK]Peacemaker

Ich frag nur noch mal, ob jemand von euch noch an dem Parser arbeitet?



So hin und wieder mal, mehr aus Interesse an Parsertechnologie. Hab mir zu dem Zweck parallel mal eine Sammlung monadischer Kombinatoren für PEGs zusammengebastelt:

 
Code:
type Parser<'a> = char list -> ('a * char list) option

// Monad
type ParserMonad() =
    member x.Bind(p, f) = fun i ->
        match p i with
        | Some (v, r) -> (f v) r
        | None        -> None
    member x.Delay(f)   = fun i -> f () i
    member x.Return(v)  = fun i -> Some (v, i)
    member x.Zero()     = fun _ -> None

// Builder instance
let parse = new ParserMonad()

// Prioritized choice
let (</>) (p1 : Parser<'a>) (p2 : Parser<'a>) : Parser<'a> = fun i ->
    match p1 i with
    | Some (v, r) -> Some (v, r)
    | None        -> p2 i

// Lookahead
let notpred p : Parser<unit> = fun i ->
    match p i with
    | None -> Some ((), i)
    | _    -> None

// Star, plus
let rec many p = many1 p </> parse.Return([])
and many1 p = parse {
    let! x = p
    let! xs = many p
    return x :: xs }

// Characters and strings
let satisfy (pred : char -> bool) : Parser<char> = fun i ->
    match i with
    | c :: r when pred c -> Some (c, r)
    | _                  -> None
let whitespace = satisfy Char.IsWhiteSpace
let anychar = satisfy (fun _ -> true)
let character c = satisfy ((=) c)
let string str =
    let rec _string str =
        match str with
        | s :: ss -> parse {
            let! _ = character s
            let! _ = _string ss
            return s :: ss }
        | [] -> parse.Return([])
    _string (Seq.toList str)


// BB specific
let rec bbexpr =
    let contents = parse {
        let! _ = notpred (string "[/b]")
        let! x = bbexpr </> anychar
        return x }
    parse {
        let! _ = string "[b]"
        let! _ = many contents
        let! _ = string "[/b]"
        return 'B' }

let bbparse = many (bbexpr </> anychar)

let result = "Hello [b]World[/b]!" |> Seq.toList |> bbparse


Der BB-spezifische Teil da unten beschreibt z.B. den Abschnitt einer Grammatik, der verschachtelte Bold-Tags korrekt zuordnet. Eigentlich ziemlich elegant, und im Gegensatz zu vielen anderen Parsertechnologien kontextsensitiv. Ich stells mal zur Verfügung, falls jemand daran weiterbasteln will. Das auf die anderen Tags auszuweiten und ein DOM einzuziehen sollte nicht allzu schwer sein. Müsste auch problemlos in Haskell oder Scala zu übersetzen sein.
[Dieser Beitrag wurde 1 mal editiert; zum letzten Mal von igor]2 am 28.06.2010 20:49]
28.06.2010 20:48:05  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
GarlandGreene

Mod GIGN
 
Zitat von TriggerTG

Arrr, warum ist dieser Trend an mir so spurlos vorbei gegangen: ORM (Objektrelationale Mapper, Hibernate z.B.) sind geil Breites Grinsen



ich schau mir grad nach einiger Zeit NHibernate mal Castle ActiveRecord an. IoC hab ich bisher wenn überhaupt mit Spring gemacht, aber jetzt wollte ich mir mal Castle anschauen. Und ActiveRecord basiert auf NHibernate, verzichtet aber auf das XML-Mapping. Bisher ist die Konfiguration im Zusammenspiel mit Castle Windsor ein Traum. Selbst einen AuditInterceptor bindet man einfach mal eben per Konfiguration ein, ohne eine einzige Zeile (Konfigurations-) Code.
28.06.2010 20:50:28  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
igor]2

Phoenix
 
Zitat von CLiX

Kann mir jemand sagen warum der String immer noch irgendwie ein AnsiString ist, und kein Unicode? Anstatt einem Unicode Zeichen empfängt der client nur ein "?"

...


Kodierungsprobleme saugen immer. Ist mir aus dem Codestück nicht ersichtlich, warum das nicht klappen sollte. Dass das so oder so kein echtes Unicode ist (auch wenn sie die Klasse noch so optimistisch "UnicodeString" nennen), sondern bestenfalls UCS-2 o.ä., ist dir ja klar/egal, vermute ich.
[Dieser Beitrag wurde 1 mal editiert; zum letzten Mal von igor]2 am 28.06.2010 21:39]
28.06.2010 21:38:15  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
Achsel-des-Bösen

AUP Achsel-des-Bösen 06.10.2009
Hähä...der Typ der das Praktikum zu unserer Webtechnologie Vorlesung leitet, möchte zur Abgabe nur den Code und eine Installationsanleitung.
Unsere Projekt wurde unter Verwendung von Django, jQuery und der GoogleMaps API erstellt. Und das muss er dann unter Windows XP (das verwendet er) installieren und testen.

Um das technische Niveau des Typen zu umreissen: Er "lehrt" HTML 4.0 und JS auf dem Niveau von
alert('Hallo Welt!');
. Außerdem hat benutzt er auf seinem Laptop einen IE6 bei dem im Fenstertitel "Hacked by GrimReperZ008" (oder so) steht. Klartext: Meine Mutter ist technisch weit höher qualifiziert.

Die Installation würde ich zu gerne mitbekommen. Wir liefern sicherheitshalber ein Fertigkonfiguriertes Linux als VirtualBox Image mit fröhlich
28.06.2010 21:44:20  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
CLiX

AUP CLiX 08.12.2012
 
Zitat von igor]2

 
Zitat von CLiX

Kann mir jemand sagen warum der String immer noch irgendwie ein AnsiString ist, und kein Unicode? Anstatt einem Unicode Zeichen empfängt der client nur ein "?"

...


Kodierungsprobleme saugen immer. Ist mir aus dem Codestück nicht ersichtlich, warum das nicht klappen sollte. Dass das so oder so kein echtes Unicode ist (auch wenn sie die Klasse noch so optimistisch "UnicodeString" nennen), sondern bestenfalls UCS-2 o.ä., ist dir ja klar/egal, vermute ich.



Hmm "bestenfalls UCS-2" - d.h. es werden nicht alle Zeichen unterstützt?
Woher bekomm ich denn dann eine "echte" Unicode Klasse?
Dreck peinlich/erstaunt

so sollte das Packet aussehen:



Und so sieht es aus:



traurig
(Andere Abweichungen ignorieren)

e/
http://docwiki.embarcadero.com/RADStudio/de/Unicode_in_RAD_Studio

hmmm
[Dieser Beitrag wurde 1 mal editiert; zum letzten Mal von CLiX am 28.06.2010 22:03]
28.06.2010 21:56:37  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
igor]2

Phoenix
Okay, der Beschreibung nach rechnen sie löblicherweise wirklich mit Surrogatpaaren (= Buchstaben, die 4 Byte breit sind). Dann funktioniert die Umwandlung in wchar_t, wie du sie machst, allerdings "nur" für BMP-Zeichen -- für die meisten praktischen Anwendungen ist das allerdings echt mal egal. Reine Detailnachfrage meinerseits.
28.06.2010 22:17:02  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
TriggerTG

TriggerTG
 
Zitat von Achsel-des-Bösen

[...]

Die Installation würde ich zu gerne mitbekommen. Wir liefern sicherheitshalber ein Fertigkonfiguriertes Linux als VirtualBox Image mit fröhlich



Nerds fröhlich

--

Ich lande neuerdings immer öfter auf stackoverflow für viele Fragestellungen. Hat sich echt gemausert seit seinem Start damals
[Dieser Beitrag wurde 1 mal editiert; zum letzten Mal von TriggerTG am 28.06.2010 22:25]
28.06.2010 22:20:18  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
Danzelot

AUP Danzelot 28.02.2014
Woah, ich habe bis Zehn Uhr geschlafen und bin jetzt schon müde für Bett. Super, damit läuft es ja langsam mit dem Tagesrhythmus (zumindest der Teil "Abend")

Gute Nacht!
28.06.2010 22:44:51  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
flying sheep

AUP flying sheep 04.12.2011
ich finde vor allem das system „bewertbare antwort“ vs. „kommentar zu einer antwort“ gut durchdacht. da kommt meistens als erstes die beste antwort, tippfehler im code etc. übersichtlich in den kommentaren direkt darunter korrigiert.

apropos nerds: hab heute meine erste scrapinganwendung geschrieben. sie kann tf2-achievements eines spielers auslesen und auflisten (in gui, natürlich). sinnlos, weil nicht mehr optionen als die internetseite, aber hey!
28.06.2010 22:46:27  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
Redh3ad

AUP Redh3ad 11.10.2009
 
Zitat von flying sheep

apropos nerds: hab heute meine erste scrapinganwendung geschrieben. sie kann tf2-achievements eines spielers auslesen und auflisten (in gui, natürlich). sinnlos, weil nicht mehr optionen als die internetseite, aber hey!


Über die XML-Schnittstelle der Steamcommunity-Site oder aus dem lokalen Cache im TF2-Ordner?
28.06.2010 22:52:28  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
Danzelot

AUP Danzelot 28.02.2014
Ich wette, über geparsten HTML-Code Breites Grinsen
28.06.2010 22:55:11  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
CLiX

AUP CLiX 08.12.2012
...
 
Zitat von cLam

Ein Software Ingenieur (Programmierer) und seine Frau:

Sie: "Schatz, wir haben kein Brot mehr, könntest du bitte zum Supermarkt gehen und eins holen? Und wenn sie Eier haben, bring 6 Stück mit."
Er: "Klar Schatz, mach ich!"

Nach kurzer Zeit kommt er wieder zurück und hat 6 Brote dabei.

Sie: "Warum nur hast du 6 Brote gekauft?!?"
Er: "Sie hatten Eier."



fröhlich
28.06.2010 23:03:56  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
TriggerTG

TriggerTG
Breites Grinsen
28.06.2010 23:07:14  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
Achsel-des-Bösen

AUP Achsel-des-Bösen 06.10.2009
Ich hab auch einen tollen Scraper:
 
Code:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# Copyright (c) 2010 Martin Thurau <martin.thurau@gmail.com>
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
# in the Software without restriction, including without limitation the rights
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
# copies of the Software, and to permit persons to whom the Software is
# furnished to do so, subject to the following conditions:
# The above copyright notice and this permission notice shall be included in
# all copies or substantial portions of the Software.
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
# SOFTWARE.

# Parser for the Hafas online module

import sys, os
from os.path import abspath, dirname, join
from datetime import datetime, timedelta
from urllib import urlencode, urlopen
import logging
import re

# insert "lib" dir to the module search path
if __file__:
	appDir = dirname(abspath(__file__))
	libDir = join(appDir, 'lib')
	sys.path.insert(1, libDir)

from BeautifulSoup import BeautifulSoup, BeautifulStoneSoup
import mechanize

BASE_URI = "http://scout.hafas.de/bin/query.exe/dl?%s"

# IDs can be retrieved in this way:
#	- [URL]http://scout.hafas.de/bin/query.exe/dl?[/URL]
# - choose any trip with includes the search station
# - press "Reisebegleiter" button
# - find the link with the searched station and copy the url
# - parameter "evalid" contains the ID
LOCATIONS = {
	'FH': '715312',
	'ZOB': '160021',
	'SANDSTR': '711050',
	'BESSEMER STR': '715322',
	'MARIA GOEPPERT STR': '700857',
}


def extract_times(data, date_time):
	soup = BeautifulSoup(data)
	text = ''.join(soup.find('pre').findAll(text=True))
	times = re.findall('\d\d:\d\d', text)

	results = []
	first_depart = None
	for idx in range(0, len(times), 2):

		# transform dates in real datetime objects
		depart = datetime.strptime(date_time.strftime('%d.%m.%Y') +' '+ times[idx], '%d.%m.%Y %H:%M')
		arrive = datetime.strptime(date_time.strftime('%d.%m.%Y') +' '+ times[idx+1], '%d.%m.%Y %H:%M')

		# if time leap of the end of the day, they will be corrected
		if not first_depart:
			first_depart = depart
		if arrive < first_depart:
			arrive = arrive + timedelta(days=1)
		if depart < first_depart:
			depart = depart + timedelta(days=1)
		results.append((depart, arrive))
		
	return results



def get_trips(start_id, dest_id, date_time=datetime.now(), amount=3):

	uri = BASE_URI % urlencode({
		'date': date_time.strftime('%d.%m.%y'),
		'time': date_time.strftime('%H:%M'),
		'timesel': 'depart',
		'externalCall': 'yes',
		'start': 'yes',
		'SID': "A=1@L=%s" % start_id,
		'ZID': "A=1@L=%s" % dest_id
	})

	# config browser
	br = mechanize.Browser()
	br.set_handle_robots(False)
	br.addheaders = [('User-agent', 'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.1) Gecko/2008071615 Fedora/3.0.1-1.fc9 Firefox/3.0.1')]

	# calculate the needed number of fetches
	fetch_amount = 1
	if amount % 3 == 0:
		fetch_amount = amount / 3
	else:
		fetch_amount = (amount//3)+1
	
	# retreive initial data
	res = br.open(uri)
	fetch_amount -= 1

	while fetch_amount > 0:
		br.select_form(nr=0)			# there is only one form on the page
		res = br.submit(nr=1)			# the second submit is the right one
		fetch_amount -= 1

	# extract data
	times = extract_times(res.read(), date_time)

	return times[:amount]
	

if __name__ == "__main__":
	
	last_res = datetime.now()
	res = get_trips(LOCATIONS['FH'], LOCATIONS['ZOB'], amount=15)
	
	for t in res:
		print t


Kann mir Busabfahrtszeiten aus dem Hafas-System unserer Verkehrsbetriebe laden. Würde theoretisch auch mit der Deutschen-Bahn gehen, sofern man etnsprechende IDs für Start und Ziel hat, denn die benutzen das selben System.
[Dieser Beitrag wurde 1 mal editiert; zum letzten Mal von Achsel-des-Bösen am 28.06.2010 23:24]
28.06.2010 23:18:56  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
Floder

Floder
Da ich wohl bald einen neuen Job habe, werde ich mir glaubich mal wieder was leisten! Einwände?
28.06.2010 23:19:57  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
 Thema: Gehirnsalat ( wir unter uns )
« erste « vorherige 1 ... 4693 4694 4695 4696 [4697] 4698 4699 4700 4701 ... 6582 nächste » letzte »

mods.de - Forum » Webdesign & Coding » 

Hop to:  

Thread-Tags:
Mod-Aktionen:
23.08.2018 12:40:15 TriggerTG hat den Thread-Titel geändert (davor: "Wiederbelebungssalat")
09.03.2017 08:55:19 TriggerTG hat den Thread-Titel geändert (davor: "Gehirnsalat")
21.05.2014 16:08:26 Redh3ad hat den Thread-Titel geändert (davor: "Hochzeitssalat")
10.05.2014 09:43:28 Redh3ad hat den Thread-Titel geändert (davor: "Gehirnsalat")
19.10.2013 21:43:03 [DK]Peacemaker hat diesen Thread repariert.
04.10.2013 20:11:45 TriggerTG hat den Thread-Titel geändert (davor: "Damiferkel-Salat")
29.08.2013 19:59:27 [DK]Peacemaker hat den Thread-Titel geändert (davor: "HerpDerpSalat")
19.08.2013 10:04:19 TriggerTG hat den Thread-Titel geändert (davor: "SirSiggiSalat")
13.08.2013 18:43:13 TriggerTG hat den Thread-Titel geändert (davor: "Kamelwochensalat")
05.08.2013 09:47:37 TriggerTG hat den Thread-Titel geändert (davor: "Gehirnsalat")
24.06.2013 16:30:39 TriggerTG hat den Thread-Titel geändert (davor: "cmssalat")
20.06.2013 12:58:35 TriggerTG hat den Thread-Titel geändert (davor: "Krissalat")
13.06.2013 10:59:25 TriggerTG hat den Thread-Titel geändert (davor: "Gehirnsalat")
08.06.2013 11:28:06 TriggerTG hat den Thread-Titel geändert (davor: "rABBIntensalat")
03.06.2013 09:56:52 TriggerTG hat den Thread-Titel geändert (davor: "Gehirnsalat")

| tech | impressum