Gå til innhold

slacky

Medlemmer
  • Innlegg

    882
  • Ble med

  • Besøkte siden sist

Innlegg skrevet av slacky

  1. For å gi et eksempel på hastighets fordel ved å bruke array forran liste:

    import time as t
    from array import array
    
    X = 'l' * 10000000
    
    # Create a ARRAY from string buffer
    timer = t.time()
    ARR = array('c', X)
    print t.time()-timer
    
    # Create a list from string buffer
    timer = t.time()
    LIST = list(X)
    print t.time()-timer
    
    # Create a list from string buffer (alternative)
    timer = t.time()
    list = [i for i in X]
    print t.time()-timer
    
    #---
    CPython 2.7
    >>> 7.22605770826 ms
    >>> 165.468437672 ms
    >>> 777.811088324 ms
    
    PyPy 2.1:
    >>> 14.2045789957 ms
    >>> 1688.11790597 ms
    >>> 1088.98761791 ms

    Opprette en array av char ser ut til å være beste løsningen: 10 millioner inputs på 7-14 ms er relativt kjapt.. Python 2.7+ er UTROLIG treg på å hente UT verdier fra en array. hmm.gif

  2. Bare for å utvide litt på det over, så er det relativt enkel oppgave med phps preg_match (_all), på den måten så kan du lett integerere dems innhold på egen webside, da får du mulgiehet til å plukke ut akkurat det du ønsker, samt endre stiler og oppsett.

     

    - Kommer kansje tilbake senere/eller imorgen å gir noen eksempler på akkurat dette.

  3. Hei. Jeg har et prosjekt på gang hvor jeg forsøker lese/skrive til bmp filer med kun python. Startet dette da jeg så PIL (pillow) som "overkill" for mange av mine prosjekter, noe mer lettvekt ble nødvendig (kan integreres i prosjekter).

    Men, er beklageligvis ganske vanskelig å oppnå skikkelig hastighet slik modulen er nå. Bare det å laste printscreen bufferet fra windows in tar nesten 1 sekund (loope over alle pixelene kan da ikke være nødvendig?)... Åpne in en bitmap-fil er tilsvarnede tregt.

    Så jeg spør etter tips, bedre fregangsmåter / det du kan tenke på som vil forbedre "modulen"... Tanken er at det skal fungerere på python >=2.7 og PyPy. Samt OS-uavhengig.

    Slik er koden nå:
    https://github.com/W...aster/bitmap.py

    Det er en del som ikke fungerer enda, ikke alle bmp-headere virker til å bli lastet korrekt, evt. at råmaterialet (pixelene) ikke blir behandlet korrekt etter format. Har ikke noen erfaring med å jobbe med bitmaps - til nå har bare prøvd meg frem med Wikipeda som referanse.

    __EDIT__:
    Tester ut pythons array-klasse. I PyPy så økte dette hastigheten betraktelig, klarte å kjøre bmp.setPixel((x,y), bmp.getPixel(x,y)) over 4,000,000 iterasjoner på kun 220ms. Samme løsning var ikke like egnet i CPython (2.7)... hvor det tok hele 10 sekunder!
    - Nok et område hvor PyPy er over 60 ganger raskere.

    Med denne endringen kom det også en skokk andre endringer: Nå laster jeg bilder inn på millisekunder, og topper i noen tilfeller på rundt 30 millisekunder (alt etter bildestørrelse).

    Problemet ved laste bufferet til en vanlig liste ligger i tiden det vil ta å iterere over alle pixelene: Det tar fort flere sekunder å bare lagre / lese inn filen. I motsetning til når jeg bruker arr = array('c', buffer) hvor det kun millisekunder.

  4. Foran å bruke from..future..import vil jeg heller annbefale å kaste summen til float, så lenge det ikke er noe som krever veldig stor hastighet (evt. itereres over), for det er relativt dyrt å kaste int til float eller vice versa..

    >>> lst = [1,2,3,4]
    >>> float(sum(lst)) / len(lst)
    2.5

  5. Kun nødvenig å fylle in den informasjonen du allerede ga oss i port-forwarding ruten (les NAT).

     

    Service Name: (user defined) IPCam

    WAN-interafce: VDSL

    Start- og end-port: 71, 71

    Server IP: 192.168.1.10

    Protocol: TCP

     

    - Trykk Apply.

    - Restart modemet.

     

    Nå som dette er gjort:

    For å nå kameraet "utenfra" så bruker du din WAN-ip til å nå enheten:

    http://111.111.111.111:71/

     

     

    PS: Går IP-kameraet gjennom en PC så kan det være nødvenig å skrive en unntaksregel i branmuren til PC-en.

    For å teste fra inne i huset ditt så kan du bruke anonymouse.org's tjeneste.

  6. Har brukt PHP-fusion i mange år, og har altid vært like fornøyd. Er veldig lett å jobbe med, samt ikke for avansert, språkpakker for 10-talls land, inkl Norsk. Lightweight, men utrolig bra etter min erfaring.

     

     

    Modx som er nevnt tidligere er et råtøft rammeverk, og annbefales også av meg.

     

    Også jeg missliker Drupal, og har aldri hent meg at jeg har annbefalt drupal.

  7. 1. cellspacing

    2. cellpadding

    3. inline style.

    4. avsluttende PHP-tag

     

    De to sistnevnte er teknisk sett ikke deprecated, bare bad practice.

     

    cellspacing, og cellpadding er vel strengt tatt ikke deprecated? Var iallefall ikke klar over det. De må jo justeres, da de automatisk blir satt til 2, og 2 i de fleste browsere? Css kan vel fiskse det.. Aldri testet.

     

    Skal en nå merke seg Innline CSS så har jeg heller ikke definert HTML-standard, html-tag, og body. table, tr og td er vel forsåvidt bad practice, da div lar deg gjøre samme jobben, men benytter seg av CSS for å gjøre det.

     

    Sier du at jeg ikke skal avslutte php med tag?? Det har jeg aldri hørt om. Hvorfor?

    • Liker 1
  8. Selv om dette er en eldre tråd, så ønsker jeg å oppdatere denne med min erfaring.

    Jeg skaffet meg tre nye modem for en stund siden, og resultatene er ikke hva jeg forventet. Alle består av et broadcom-chipset, men kun en av disse fungerte etter min standard. Alle ble testet i over 2 måneder.

    ZyXEL P2812: Denne var enkel, og virket ved første øyekast robust, etter en periode så knelte denne for lasten. En eller flere restarter i uken ble nødvendig. Den var på nivå med X5671. Men førte til merkbar lavere upstream.

    Zyxel P870: Jeg kjøpte denne da jeg tenkte at et modem ene og alene, må være bedre en et multimodem, jeg tok feil. Den har samme modem-chipset som DG201, men upstream minket med 20-30% på tross av samme chipset ("litt" for mye). daglig rebot av modemet ble nødvendig.

    Inteno DG201: Denne var best etter min erfaring, knelte veldig kjeldent (aldri?), men trengte gjerne en restart i uken/annen hver uke, på den andre siden var den veldig vanskelig å bridge, så det fikk jeg ikke testet (noen med erfaring?). Portforwarding var utrolig enkelt når en først forsto systemet, for GUI-en var noe klumsete. Men, jeg ble nødt til å gå over til en av de over da jeg ikke klarte bridge denne... Men vet det er fult mulig, og skal etter hva jeg leser være lett.

    -----

    Jeg opplevde beklageligvis noe annet merkelig, men dette er uavhengig av bytte av modem. For tre-fire måneder siden så falt opplasting "på sekundet" fra 22mbit til 10mbit. Og slik har det holdt seg. Har vært i kontakt med ISP, og linjen er feilfri, og det påstår at det kun er støy som fører til dette..

    Jeg hadde akseptert at det kun var støy hadde det ikke vært for at linjens "max-synk"/oppnåelig hastighet NED er nå ratet til rundt 70-80mbit, mens før vi mistet halve-opplastingen så var oppnåelig nedlasting ratet til 50-55mbit.

    Kort: Oppnåelig nedlasting økte drastisk, så fort max oppnåelig opplastingen halvertes (fra 22 til 10mbit)...

    Så vidt jeg husker så er det ikke så stort frekvens-spreding fra nedlasting til opplasting,
    så at den ene frekvensen skal møte MINDRE støy (en før), samtidig som den andre frekvensen møter MER støy (en før) finner jeg vanskelig å forstå...

  9. Vel, der kom visst en som gjorde deg en bjørnetjeneste ved å gjøre leksene for deg. Dessverre bruker han også deprecated kode i løsningen sin.

     

    Trenger ikke føle deg dum, er bare å bruke mye tid på det, så kommer lyset etterhvert.

     

    Si meg, hva er deprecated med et par loops? Har vært borte fra PHP en stund, men det er da rett frem slik en gjør det uanset språk.

     

    Hvis nested loops er deprecated så vet ikke jeg. Eneste jeg kan tenke meg at må fiskes er: $x- og $y-statementa KAN escapes i html-koden (ikke en gang verdt å nevne).

     

    ? :p

  10. <?php
    $xs = 10;
    $ys = 7;
    
    for($y=0; $y < $ys; $y++) {
     echo "<table cellspacing='0' cellpadding='0'>";
     echo "<tr>";
     for($x=0; $x < $xs; $x++) {
    echo "<td id='($x,$y)' style='border:1px solid #aaa;width:90px;height:50px'>";
      echo "x=$x, y=$y";
    echo "</td>";
     }
     echo "</tr></table>";
    }
    ?>
    

     

    Er ikke verre enn å lage en 2-dimensjonell loop. Alternativet er å bruke modulus, som også er veldig lett.

     

    Trenger du en faktisk unik kode, så må en generere en kode, å sjekke om den allerede er i bruk, ved å spørre databasen.

  11. Første jeg tenker når jeg ser koden din er mangelen på loops, jeg ser du har omtrent akkurat samme kode repitert over halve programmet ditt.. Det kan nok gjøres om til en funksjon på bare noen få linjer.

     

    La også merke til at programmet ditt ikke fungerer på Win XP-(64) samt virtualisert 7-(64), gir seg så fort paint er åpnet på begge systemene.

    - Sansynligvis fordi du har kompilert det.

     

    NOTE: Sansynligvis er det veldig få her som faktisk har brukt, eller kjenskap til autoit, og dens funksjoner samt syntax, du er nok mer tvungen til å bruke det offisielle forumet.

     

    Personlig er jeg veldig kresen på indentering. Det er noe du bør lære deg - indeneringsnivå spiller liten rolle, enten du bruker 2,3 eller 4 space (men kun en av de, ikke mix)... Vakker kode er viktig så fort det blir mer en noen få linjer.

     

    Bare for å få det sagt, så missliker jeg syntaxen til AutoIt, sterkt. Fordelen er vel at du kan lage en .exe med AutoIt (det er alt). Ser heller inget poeng i å lære seg det, da det ikke er mer en et LITE script-språk, før eller siden så må en (sansynligvis) over på et annet språk.

     

    Autoit har binds for bl. a Python. Om du bruker Python så vil du sansynligvis spare deg for lang kode, samt kunne få mer generel støtte. Med Py2exe kan du lage en exe-fil. Du finner også python-moduler som lar deg gjøre omtrent det samme som AutoIt, og mer..

  12. Så Mega gjør det de kan for å hindre lovbrudd, men for å generere klikk på artikkelen så lager dere en overskrift som tilsier at det er Mega selv som legger til rette for fildeling... Godt jobbet.

     

    Nå vet jeg ikke om tittlen er endret, men uansett: Fildeling er 100% lovling. Warez/Piratkopiert fil er på den andre siden ikke lovlig.

    - Mega legger til rette for fildeling.

     

    Åogså nå mener jeg å ha lest at mega fungerer som før, de sletter ikke materiale, de med opphvsrett har tilgang til å slette sitt materiale, om det er delt på siden.

    • Liker 1
  13. Av programmer så bruker jeg Notepad++ på Windows og Gedit/evt Notepadcc på Linux. Bruker standard terminal i systemet for å kjøre pythonfilene (under testing). På Windows så burde python linkes i miljøveriablene, les mer om dette med noen søk (Environment Variables)..

     

    Jeg vil også annbefale Python 2.7 ovenfor 3.x, av flere grunner. Bl.a: Hastighet og kompatibilitet (flere moduler).

     

    Jeg støtter også forslag om: http://learnpythonthehardway.org/

    Samt så legger jeg til dette forumet som en kilde for å lære python så fort du takler syntaxen.

  14. Hex-fargekode er noe som aktivt brukes, samt kutter ned lengden i forhold til f. eks RGB. Det er utrolig lett å konvertere mellom disse da de har en direkte sammenheng, her har du et eksempel (i python):

     

    # -*- coding: utf-8 -*-
    def rgb_to_hex(r,g,b): #Forenkling: integer til hex format %x..:
      rgb = (r,g,b)
      print '%x%x%x' % rgb
    
    def rgb2hex(r,g,b):
      hexchars = "0123456789ABCDEF"
      print hexchars[r / 16] + hexchars[r % 16] \
     + hexchars[g / 16] + hexchars[g % 16] \
     + hexchars[b / 16] + hexchars[b % 16]
    
    rgb_to_hex(255,210,255)  
    rgb2hex(255,210,255)
    

     

    Kort forklaring...

    Module (%) er brukt for å hente "resten".

     

    EG, for å konvertere #FFFFFF til RGB må vi gjøre slik:

    F = 15

    F * 16 + F = 255

     

    Andre veien...

    F = 15 = 255 / 16

    F = 15 = 255 % 16 <------ Henter "resten"

    255=FF

  15. Jeg hiver meg på det Skrotnes sier, sjekk PC-en din sin IP-adresse, ETTER at du har koblet deg rett i modemet.

     

    Som Skrotnes skriver, for å skjekke IP-addresse til din maskin kjører du følgende:

     

    STARTMENY -> Run/Kjør -> Skriv: cmd -> Skriv: ipconfig

     

    Da burde du få en IP-adresse som IKKE starter med følgende tall:

    192.x.x.x

    10.x.x.x

    - Om du har innstilt windows til å ha statisk IP, så må du fjerne det før du tester.

    Om du har en av de nevnte IP-seriene selv når du er koblet rett i modemet, så er det altså et routermodem...

  16. Vel, vel, vel... HTTP-protokollen egener seg bare fint til fildeling etter min erfaring, HTTP behandler filer ganske anderledes, og fører ikke til hastighets begrensninger som du kan muligens møte med FTP, men vil føre til andre begrensninger.

     

    Selv om opplasting av filer via HTTP-protokollen kan være et problem basert på at FF, IE, samt enkelte småbrowsere kan maks ha headers på ~2GB. Men, f.eks Chrome og Opera har ingen slike begrensninger (som er kjent) sett at du ikke er på et 32bits operativsystem, som da begrenser deg til 3.xGB.

    Apache har vel noen begrensinger igjen (de vil du nok ikke merke), og er PHP installert så må du endre flere verdier i php.ini.

  17. virker som at det bare er på kvelden jeg får dette problemet,nå er linja helt fin.

     

    på pingplotter programmet,holdet det og kjøpe det billigste?regner med at gratisversjonen ikke holder.

    Høres ut som om at dit nabolag er overbooket, det kan være for mye støy på kablene, evt overbooket node. Det er vel slik at flestparten sitter hjemme å loker på facebook, laster ned forskjellig på kvelden, mens om morgenen så er de på jobb/skole.

     

    Det er ganske smart å teste ping rett fra modemet, da dette eliminerer alle andre PC-er i huset (evt. noen i nabolaget på din trådløs) som kan skape dette problemet. Du må også være sikker på at din egen PC ikke er skaperen av problemet (virus, oppdateringer, evt. annet som kan forekomme), du kan bruke NetLimiter til å overvåke data som går ut av egen maskin.

  18. På portforward så skriver de en hel rekke porter som burde åpnes for netopp din router:

    http://portforward.c...ke_-_Source.htm

     

    Du kan like gjerne åpne portene i BÅDE Virtual Server og Port Forwarding, om bare en av de ikke fungerer, det KAN være til hjelp.

     

    Jeg likte ikke helt den listen, men kan hende det setter deg på sporet. Jeg ville vært skeptisk til de tre første portene de ønsker at du åpner, men har selv måtte åpnet en liste som minner om den listen, vet med sikkerhet at STEAM bruker port 1200, men skal egentlig ikke måtte åpne denne for en spillserver. De tre andre er jeg usikker på hvorfor du oppforres til å åpne (3478, 4379-4380).

     

    Husk å teste med porgrammet som Skrotnes viser til!

     

    Jeg ville også endret den siste port-rangen fra:

    - 27000-27050 (UDP/TCP)

    til:

    - 27005-27014 (UDP)

    - 27015 (UDP/TCP)

    - 27016-27030 (UDP)

     

    Et par andre tips:

    Kan være smart å gi routeren ~30 sekunder reboot (dra ut strømmen ~30sek) etter at du har åpnet portene, det har en kjelden gang hulpet meg på drit-routere... Husk at du må gi dine venner din WAN-IP, og du skal selv bruke din LAN-IP.

     

    Du burde ikke være "ingame" på annen server (enten det er CS, CSS, eller CSGO - alle bruker samme port), mens dine venner forsøkere å koble til serveren din. Har erfart at det kan føre til problemetikk.

  19. Det er da heller ikke WSGI sin oppgave.

    Det er vel ingen som har påstått det :)

     

    Jeg besvarte kun SINIPPSAT, som igjen kommenterte meg:

    CGI-script er det eneste funksjonelle alternativet for å kunne skrive Python på samme måte som jeg skriver PHP
    Nei også WSGI er et alternativ.

    Selv om jeg tok litt i, i min påstand om at CGI var eneste alternativet. Men, det er det enkelste alternativet å implementere, selv om det eksisterer flere python template-motorer som lar deg gjøre omtrent det samme (nevnt tidligere).

     

    //Edit skrivefeil.. ;)

×
×
  • Opprett ny...