Gå til innhold

[Løst] Laste ned samtlige Lunch-striper fra Dagbladet


Anbefalte innlegg

Videoannonse
Annonse

Hey, Powershell-løsningen fungerer heller ikke uten runtimen installert. C# fungerer ikke uten support-libs installert. Hva er forskjellen?

 

Bidragene er stusselige fordi de er stygge, enten lite fleksible eller bloated (hallo xml), sekvensielle eller bare rett-frem skrøpelige.

 

Så ja, jeg er sikker.

Lenke til kommentar

Hey, Powershell-løsningen fungerer heller ikke uten runtimen installert. C# fungerer ikke uten support-libs installert. Hva er forskjellen?

 

Bidragene er stusselige fordi de er stygge, enten lite fleksible eller bloated (hallo xml), sekvensielle eller bare rett-frem skrøpelige.

 

Så ja, jeg er sikker.

Nå er vel ikke din løsning noe spesielt mer fleksibel enn noen annen her. Personlig ville jeg faktisk sagt at løsningen med xml config er den mest fleksible. Går rimelig enkelt fram hvordan man kan konfigurere den, og den fungerer på alle plattformer, altså via mono på *nix (har ikke testet, men tar det som en forutsetning). Alle løsningene her må altså ha et eller annet installert uansett hvilken plattform det kjører på. At det muligens er default installert på respektive plattformer gjør det kun litt enklere på akkurat den plattformen.

  • Liker 3
Lenke til kommentar

Hvis mono er tillatt som "gratis dependency" synes jeg bash og wget kan være det, som gjør at hele poenget til godeste Geir blir borte.

 

Jeg har bare postet selve kernelen, forresten. Det er trivielt å la den ta flere striper som argument. I utgangspunktet ville han jo bare ha lunch, de andre featurene er noe som har kommet siden.

 

edit: angående fleksible:

 

bytt {0..7} til seq 0 7 eller et annet sekvens-program så vil det fungere med alle sh-kompatible shell. date kan byttes ut. wget kan byttes ut (nesten drop-in). I tillegg til parallel download. Hvordan var det ~like fleksibelt, sa du?

 

Og hvordan er XML-løsningen mest fleksibel? Nå er du plutselig begrenset til features -han- har kodet inn i programmet sitt, på toppen av at du må forholde deg til XML.

Endret av Lycantrophe
Lenke til kommentar

Hvis mono er tillatt som "gratis dependency" synes jeg bash og wget kan være det, som gjør at hele poenget til godeste Geir blir borte.

Det er ikke en diskusjon mot bash og wget eller dependencies. Det må være lov å foreslå andre løsninger som fungerer enklere på andre systemer uten at du hevder at diskusjonen var ferdig ved innlegg #2 (din GNU-løsning) og etterpå kalle de andre løsningene for "stusselige".

  • Liker 5
Lenke til kommentar

Hvis mono er tillatt som "gratis dependency" synes jeg bash og wget kan være det, som gjør at hele poenget til godeste Geir blir borte.

 

Jeg har bare postet selve kernelen, forresten. Det er trivielt å la den ta flere striper som argument. I utgangspunktet ville han jo bare ha lunch, de andre featurene er noe som har kommet siden.

 

edit: angående fleksible:

 

bytt {0..7} til seq 0 7 eller et annet sekvens-program så vil det fungere med alle sh-kompatible shell. date kan byttes ut. wget kan byttes ut (nesten drop-in). I tillegg til parallel download. Hvordan var det ~like fleksibelt, sa du?

 

Og hvordan er XML-løsningen mest fleksibel? Nå er du plutselig begrenset til features -han- har kodet inn i programmet sitt, på toppen av at du må forholde deg til XML.

Jeg vil påstå at for den jevne bruker er det enklere å forholde seg til en xml konfigurasjon en den spesifikke implementasjonen. Med fleksibilitet mener jeg at det er fleksibelt i bruk, ikke bytte implementasjon. Koden din vil være like vanskelig å forstå for en som ikke kjenner til wget eller seq. Tror vi legger litt forskjellige ting i fleksibilitet her.

 

Angående dependicies ala Mono/wget, er jeg forsåvidt enig i at det i seg selv ikke er relevant så lenge det er mulig å kjøre det crossplattform. Tror ikke det finnes noen løsninger som funker crossplattform out of the box.

 

Hele poenget her var vel dessuten at du mente din løsning var så fantastisk mye bedre, noe den for de aller fleste brukere ikke er (windoze har fortsatt vesentlig høyere markedandel). At den er ganske elegant for de som er på *nix systemer er jeg forsåvidt enig i, men det er fortsatt at ganske stort mindretall.

  • Liker 4
Lenke til kommentar

Jeg vil påstå at for den jevne bruker er det enklere å forholde seg til en xml konfigurasjon en den spesifikke implementasjonen.

Ikke skyv utrolig uspesfikke alltid-til-din-fordel-"den jevne bruker" foran deg.

 

Med fleksibilitet mener jeg at det er fleksibelt i bruk, ikke bytte implementasjon.

Ok, men med en one-linear er forskjellen minimal.

 

Koden din vil være like vanskelig å forstå for en som ikke kjenner til wget eller seq. Tror vi legger litt forskjellige ting i fleksibilitet her.

#1: Hva er det å ikke kjenne til?

#2: Og du tror eksotisk og megaclunky XML er noe greiere?

 

Tror ikke det finnes noen løsninger som funker crossplattform out of the box.

Det er fordi "the box" er 100% strippet og har null til felles.

 

Hele poenget her var vel dessuten at du mente din løsning var så fantastisk mye bedre, noe den for de aller fleste brukere ikke er (windoze har fortsatt vesentlig høyere markedandel).

Dine ord. Det er ingen annen løsning som tilbyr noe greiere (10-linjers powershell-wank blekner, hallo). Jeg ser ikke skrekkelig mange parallelle løsninger heller.

 

At den er ganske elegant for de som er på *nix systemer er jeg forsåvidt enig i, men det er fortsatt at ganske stort mindretall.

Hva så?
  • Liker 1
Lenke til kommentar

Man kan få det litt mer komprimert enn tidligere eksempler i tråden med PowerShell også;

0..7 | %{Date -UF "%s" (Date -H 0 -Min 0 -S 0 -Mil 0).AddDays(-$_)} | %{wget -OutFile "lunch-$_.gif" "www.dagbladet.no/tegneserie/pondusarkiv/serveconfig.php?date=$_&strip=lunch"}

0..7 er hvor mange dager bakover fra i dag man skal hente for. Og ja, "wget" er gyldig i PowerShell >=3.0 (er et alias til Invoke-WebRequest).

 

Edit:
Live & learn - det måtte være en bedre måte å gjøre det på enn å knøle med minutter, sekunder og millisekunder:

0..7 | %{Date -UF %s (Date).Date.AddDays(-$_)} | %{wget -OutFile "lunch-$_.gif" "www.dagbladet.no/tegneserie/pondusarkiv/serveconfig.php?date=$_&strip=lunch"}
Endret av Paull
Lenke til kommentar
  • 2 uker senere...

Dette var løst i post #2 og allikevel dukker disse stusselige bidragene opp.

 

"Stusselige bidragene" :p

 

Det er *noe* mer funksjonalitet i min enn i din f.eks. Mange vil nok like muligheten til å velge hvilke serier som skal lastes ned, hvor mange for hver serie, og ikke minst automatisk sletting av dupes...

  • Liker 3
Lenke til kommentar

Hey, Powershell-løsningen fungerer heller ikke uten runtimen installert. C# fungerer ikke uten support-libs installert. Hva er forskjellen?

 

Bidragene er stusselige fordi de er stygge, enten lite fleksible eller bloated (hallo xml), sekvensielle eller bare rett-frem skrøpelige.

 

Så ja, jeg er sikker.

 

Djis... bloated? XML ble valgt fordi folk flest kan html -> xml. Jeg kunne like godt valgt YAML eller JSON, eller .INI (!) for den saks skyld, men å kalle det bloated at det ligger ved en config fil på noen hundre bytes hvor man kan lage en basic config uten å rote i kildefiler... meh...

 

Ja, man kan gjøre dette supernice eller superenkelt, og min er foreløpig hakket over superenkelt. "Bloated" er det ikke, og det er bare å si "nei takk" om du heller vil ha et perl-script. Ikke alle her bruker unix....

  • Liker 3
Lenke til kommentar

Det er *noe* mer funksjonalitet i min enn i din f.eks. Mange vil nok like muligheten til å velge hvilke serier som skal lastes ned, hvor mange for hver serie, og ikke minst automatisk sletting av dupes...

for strip in lunch pondus nemi; do for day in {0..7}; do DATE=$(date +%s -d "2014-03-05 + $day day"); wget -b -O lunch-$DATE.gif "www.dagbladet.no/tegneserie/pondusarkiv/serveconfig.php?date=$DATE&strip=$strip"; done; done
Voilà. Dupes skrives over. Fortsatt i parallell.

 

check mate, atheists

Endret av Lycantrophe
  • Liker 1
Lenke til kommentar

 

Det er *noe* mer funksjonalitet i min enn i din f.eks. Mange vil nok like muligheten til å velge hvilke serier som skal lastes ned, hvor mange for hver serie, og ikke minst automatisk sletting av dupes...

for strip in lunch pondus nemi; do for day in {0..7}; do DATE=$(date +%s -d "2014-03-05 + $day day"); wget -b -O lunch-$DATE.gif "www.dagbladet.no/tegneserie/pondusarkiv/serveconfig.php?date=$DATE&strip=$strip"; done; done
Voilà. Dupes skrives over. Fortsatt i parallell.

 

check mate, atheists

 

 

Pfft....det er fortsatt en lite intuitiv og kryptisk løsning og i så måte blant de dårligste løsningene her.

  • Liker 5
Lenke til kommentar

 

 

Det er *noe* mer funksjonalitet i min enn i din f.eks. Mange vil nok like muligheten til å velge hvilke serier som skal lastes ned, hvor mange for hver serie, og ikke minst automatisk sletting av dupes...

for strip in lunch pondus nemi; do for day in {0..7}; do DATE=$(date +%s -d "2014-03-05 + $day day"); wget -b -O lunch-$DATE.gif "www.dagbladet.no/tegneserie/pondusarkiv/serveconfig.php?date=$DATE&strip=$strip"; done; done
Voilà. Dupes skrives over. Fortsatt i parallell.

 

check mate, atheists

 

 

Pfft....det er fortsatt en lite intuitiv og kryptisk løsning og i så måte blant de dårligste løsningene her.

 

 

Det er vel egentlig ikke det at løsningen er veldig dårlig, men det er ekstremt vanskelig for noen som ikke kan perl flytende å konfigurere den til å passe egne behov. Alle variabler som er relevante burde vært deklarert utenfor selve koden, med en kommentar som forteller hva de gjør...

 

En annen ting er at jeg ikke helt ser hvordan den koden sjekker etter dupes (jeg mener ikke dupes som i striper som eksisterer lokalt på samme maskin, men striper (filer) som er identiske, som man ofte finner med Pondus etc., der de kjører samme stripe flere dager på rad. Min sjekker MD5 på alle filene som har blitt lastet ned og sjekker dem mot hverandre for å fjerne like striper). Det er mulig det er noe supertriks med wget?

 

Anyway; problemet er som sagt ikke nødvendigvis at koden er dårlig, men at det er utrolig kryptisk og ulesbart/vanskelig å endre for folk som ikke er vant til å kode. Hvis jeg skulle laget et script for det i et eller annet scriptspråk ville jeg hatt relevante variabler deklarert over, med en forklaring på hva de gjør. Jeg kan legge til ymse i XML om noen har noen spesielle ønsker, men det er ikke verdens vanskeligste jobb. Sletting av duplikater burde kanskje vært optional, men som sagt; jeg tror ikke veldig mange bruker dette, så det får bli om noen har noen spesielle ønsker... og å laste ned async fant jeg ut var lite å hente på siden det er så lite som skal lastes ned uansett, men jeg kunne godt skrevet det om slik at det f.eks. lastes ned 15 filer om gangen.

 

Klumpete kode, og om man skal lage noe som skal brukes/leses/forstås av andre bør man i alle fall skrive det ut slik at det er mest mulig lesbart, og ikke skrive det for å samle det på færrest mulig linjer :)

  • Liker 1
Lenke til kommentar

Det er vel egentlig ikke det at løsningen er veldig dårlig, men det er ekstremt vanskelig for noen som ikke kan perl flytende å konfigurere den til å passe egne behov. Alle variabler som er relevante burde vært deklarert utenfor selve koden, med en kommentar som forteller hva de gjør...

Nåh, dette er standard-tools uansett. Det er heller ikke perl.

 

Men det er trivielt å faktorere ut variablene til "noe som kan settes utenfor" eller gis som argumenter. Det er ganske meningsløst hvis hensikt er å kjøre i cron, men det er fortsatt trivielt.

 

Det er mulig det er noe supertriks med wget?

Nei, den vil bare overskrive filnavn.

 

Anyway; problemet er som sagt ikke nødvendigvis at koden er dårlig, men at det er utrolig kryptisk og ulesbart/vanskelig å endre for folk som ikke er vant til å kode.

Moving the goalpost.

 

Klumpete kode, og om man skal lage noe som skal brukes/leses/forstås av andre bør man i alle fall skrive det ut slik at det er mest mulig lesbart, og ikke skrive det for å samle det på færrest mulig linjer :)

Det kan fint spres over flere linjer og, det har bare null hensikt.
Lenke til kommentar

 

Det er vel egentlig ikke det at løsningen er veldig dårlig, men det er ekstremt vanskelig for noen som ikke kan perl flytende å konfigurere den til å passe egne behov. Alle variabler som er relevante burde vært deklarert utenfor selve koden, med en kommentar som forteller hva de gjør...

Nåh, dette er standard-tools uansett. Det er heller ikke perl.

 

Men det er trivielt å faktorere ut variablene til "noe som kan settes utenfor" eller gis som argumenter. Det er ganske meningsløst hvis hensikt er å kjøre i cron, men det er fortsatt trivielt.

 

Det er mulig det er noe supertriks med wget?

Nei, den vil bare overskrive filnavn.

 

Anyway; problemet er som sagt ikke nødvendigvis at koden er dårlig, men at det er utrolig kryptisk og ulesbart/vanskelig å endre for folk som ikke er vant til å kode.

Moving the goalpost.

 

Klumpete kode, og om man skal lage noe som skal brukes/leses/forstås av andre bør man i alle fall skrive det ut slik at det er mest mulig lesbart, og ikke skrive det for å samle det på færrest mulig linjer :)

Det kan fint spres over flere linjer og, det har bare null hensikt.

 

 

Jeg vet at det er trivielt å skrive det ut og å trekke ut vesentlige variabler, men jeg ville gjort det om jeg skrev kode/script som var ment for å brukes av andre. Det er nok det han mener med "mindre fleksibelt", at det er vanskelig å endre på parametre uten å forstå "kildekoden", noe man ikke bør forvente av "normale" brukere. :)

 

Og ja, klart man kan skrive kode på få linjer, men hvis jeg skulle skrive veldig lesbar kode i C# ville jeg skrevet ut f.eks.:

for (tegneserie t in tegneserier) for (date d in dates[new date(now), new date(now).addDays(-7)]) lastned(t.stripe, d);

slik at scopes ble synlig for folk som ikke har veldig mye erfaring, i alle fall om jeg vet at det er en stor mulighet for at folk vil ønske å endre litt på deler av koden. (PS; ikke 100% sikker på at det der er fungerende kode, bare klumpet det sammen som et eksempel :) Null hensikt programmeringsmessig, men det er langt mer lesbart om man skriver ut scopes med vanlig syntax. Det samme gjelder å trekke ut f.eks. konstanten -7 og sette den i noen linjer over koden med et annet navn. Hvis jeg heller skriver

// Hvor mange striper skal lastes ned?
int antallStriper = 7;

// Skal duplikatfiler slettes?
bool deleteDupes = true;

samlet på en plass i koden, så vil det være mye lettere å konfigurere for individuelle behov, selv om det vil fungere like bra uten, og være like fleksibelt for noen som har stålkontroll på hva koden gjør. Poenget er vel egentlig å gjøre dette for dem som ikke er ekstremt gode på dette :)

 

Min sletter fortsatt dupes ;) Og trivielt eller ikke, skal det brukes av "normalbrukere" (eller andre for den saks skyld) er det greit å hive alle parametre utenfor selve koden (synes i alle fall jeg) slik at det lett kan endres. I litt større opplegg er kanskje samme konstant brukt flere ganger og er "den samme" men det vil ikke nødvendigvis være tydelig for alle som prøver å endre det, og dermed blir det "mindre fleksibelt".

 

Poenget er i alle fall at det bare er positivt at det ligger mer enn én løsning her, og det er grenser for hvor avansert man kan/gidder å gjøre noe så lett som å laste ned noen tegneseriestriper uten at noen spesifikt har kommet med ønsker til "features" (ganske smalt område) så det er vel bare bra at folk kan velge den som passer deres behov/plattform selv, selv om features hos alle er helt like?

Lenke til kommentar

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...