Gå til innhold

ProgrammeringsBaren! Småprat, om det du elsker!


Anbefalte innlegg

Noko er galt, og du må fikse det. Uansett kor irriterande det er :)

Å droppe integrasjonstester er mykje verre å droppe unit-tester.

 

Og integrasjonstester for distribuerte systemer er meir komplisert enn å bare sjekke om nettlinja er oppe. Tenk på leader election, locking, queues osv...

Lenke til kommentar
Videoannonse
Annonse

Nei.

 

def sanitize( url, parent ):
    if is_internal_link( url ): return parent + url
    return url

#in main worker function
for child in anchors:
    enqueue( sanitize( child, parent ) )
Noen kommentarer:

 

Siden funksjonskall i python er ganske dyrt -kan- du velge å gjøre dette direkte, altså uten funksjon men med if-en der den brukes.

 

Du kan bruke regex for å sjekke dette. Sjekk om urlen starter med http.

re.compile( "^http" ); re.match(); eller hvordan det ser ut i python. Mulig du også kan plassere matcheren på utsiden for effektivitet slik at du bare trenger .compile én gang, aka gjøre den global.

 

Poenget er uansett at siden dette er interne funksjoner sørger du for å rydde opp i URLer på forhånd og la alt gå gjennom samme code path (siden det ikke spiller noen rolle om en URL måtte tunes eller ikke for den øvrige koden). På den måten slipper du å håndtere for feil i andre komponenter.

 

Som en kul konsekvens av å bruke en funksjon for sanitize kan du nå:

 

for url in map( lambda x: sanitize( x, parent ), anchors ):
    enqueue()
der enqueue er det vi diskuterte sist hvor du oppdaterer legger den i køen din dersom den ikke allerede er besøkt etc. lambdaen blir såpass grisete fordi python ikke støtter currying. Endret av Lycantrophe
  • Liker 2
Lenke til kommentar

Starstwith er fin.

 

Vil linker være gyldige uten http(s)? Husk at www ikke er noe krav, ergo en dårlig ting å sjekke for.

 

edit: men det du kan gjøre for å være helt sikker er å sjekke http(s) og startswith( parent ). Det er ikke spesielt ineffektivt grunnet short circuiting.

Endret av Lycantrophe
Lenke til kommentar
Bør jeg bruke regex istedenfor python sin innebygde startswith

 

Regex er mye jobb viss du skal være nøye,les S.Lott sitt svar her.

urlparse er grei.

Tips starswith() kan ta ta tuple med flere argumenter.

startswith(("http", "https"))

Du kan jo også litt hvordan web-rammeverkene løser dette,Django og Web2py har egnene løsninger for dette.

3 parts bibliotek finnes det også flere av yurl validation,som bygger på/ forbedrere urlparse.

Lenke til kommentar

startswith(("http","https"))
er da helt ubrukelig.

 

Poenget var ikke å verifisere URLen, poenget var å vurdere om den var relativ/intern eller absolutt. Til det trenger man strengt tatt ikke regex, da man uansett bare vil gjøre startswith.

Endret av Lycantrophe
Lenke til kommentar
er da helt ubrukelig.

Ja være enig i det.

For og pynte litt på det var tipset rettet mot post #2468,hvor startswith er brukt 2 ganger sammen med if/elif.

Her hadde link.startswith(("http", "www")) vært bedre rent kodemessig.

Men som du har nevnt og vist,så er dette ingen god metode eller løsning i det hele tatt.

Endret av snippsat
Lenke til kommentar
  • 1 måned senere...

Holder på og kaller en soap webservice fra et c# mvc 4 prosjekt.

 

I kallet til webservicen kjører jeg:

 

var foo = new Bar{
   someprop= true
}
 
baz.doit(foo);
 

 

Jeg fikk det f*** ikke til å fungere, før nå. Jeg så at typen Bar også hadde feltet "somepropSpecified" som også måtte settes til true for at verdien av "someprop" skulle ihensyntas.

 

Denne somepropSpecified er ikke en del av webservice-definisjonen (wsdlen), men noe som visual studio ser ut til å generere. Noen som veit hvorfor?

Lenke til kommentar

Denne somepropSpecified er ikke en del av webservice-definisjonen (wsdlen), men noe som visual studio ser ut til å generere. Noen som veit hvorfor?

C# 1.0 hadde ikke støtte for nullable value-types som ble introdusert med generics og Nullable<T>. Før dette kunne ikke for eksempel en int være udefinert. En XML webservice derimot kan ha felter som ikke er spesifisert, men objektet må fortsatt ha disse egenskapene tilgjengelig.

 

Hvilken versjon av Visual Studio bruker du?

Lenke til kommentar

Etter litt undersøkelser ser det ikke ut til at wsdl.exe vil bruke nullable i noen tilfeller.

 

Men da vet du ihvertfall hva det er. Dustete at det er sånn, men de fleste går for JSON-varianter nå istedet så i typisk Microsoft stil lar de bare gamle systemer råtne.

 

Det er mulig du kan finne andre generatorer som ordner dette korrekt derimot, kanskje som en nuget build pakke?

Lenke til kommentar
  • 2 uker senere...

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...