Gå til innhold

teflonpanne

Medlemmer
  • Innlegg

    1 196
  • Ble med

  • Besøkte siden sist

Innlegg skrevet av teflonpanne

  1. std::map er vanligvis implementert som et red-black tree, så med hash map så mener han et hash map.. det er egentlig bare en stor vanlig array hvor indekseringen gjøres av en hash-funksjon. Trikset er å finne en hashfunksjon som gir god nok spredning og distrubisjon av indekser så man får så få kræsj som mulig, dvs at to ulike strenger får lik hashverdi. Da må man f.eks drive med hash chaining for å takle det. Man har selvfølgelig funnet hashfunksjoner som er enkle, kjappe å regne ut og gode nok og som man finner ganske fort ved å søke litt.

  2. Du må nok bare prøve deg frem med affine transformasjoner til du får ønsket effekt. Affine transformasjoner er et begrep i lineær algebra og betyr egentlig bare at du må bruke matriser for å rotere og flytte bildet ditt sånn at det blir rett. Hvis du har noen referansepunkter (som du har, siden du vet hvordan bildet skal være når det er ferdig), så kan du f.eks tegne en prikk i hvert hjørne, og så gjøre det samme i hvert hjørne der du vil bildet ditt skal ende opp. Da vil du ende opp med et lineært likningssystem med 8 ukjente koeffesienter som du må løse for å finne matrisen som flytter bildet ditt slik du vil. Det kan kanskje være litt vanskelig hvis du ikke kan lineær algebra, så mitt tips er at du leser litt om transformasjoner og rotasjoner med matriser og så prøver du å implementere f.eks matrisemultiplikasjon i koden din (det er veldig lett, står tusenvis av steder på nettet). Hver pixel blir da en vektor som blir transformert av matrisen til sin nye plass. Og så kan du rotere og flytte bildet akkurat som du vil ved hjelp av matrisen helt til du er fornøyd.

     

    Men det er bare det første steget desverre, når du har gjort det (flyttet alle pikslene til sine nye posisjoner), så må du gi dem ny farge også ved å interpolere. Det som gir best resultat er å gå "baklengs", altså for hver pixel i det nye bildet, så må du finne den gamle pikslen som den ble mappet fra. Det gjør du ved å invertere matrisen, T^(-1) er vanligvis notasjonen hvis T er matrisen. Fins et par metoder for interpoleringen, bl.a. nearest neighbor, bilinear interpolation og bicubic interpolation. Nearest neighbor suger så den trenger du ikke bry deg om. Men de to andre går kort fortalt ut på å se på verdiene til 4 og 16, henholdsvis, av nabopikslene til den gamle pikslen og ta gjennomsnittet av de. Så har du fargen på den nye pikslen. Det kan høres litt komplisert ut, men det er egentlig veldig rett frem.

     

    Søk litt på matrix tutorial og bilinear filtering og neighboring pixels osv.

     

    edit: eh, er det et bilde du skal gjøre dette med eller mange? Blir hvert bilde skjeivt liksom også vil du ha noe som automatisk retter det opp? Og programmmere noe som gjør det automatisk kan som sagt bli litt vrient hvis du ikke kan lineær algebra, men hvis du bare skal gjøre det med et bilde så er kanskje photoshop bedre? Eller så kan du finne matrisen manuelt første gangen og så bruke den hver gang (sett at bildet blir feil perspektiv likt hver gang da..)

     

    http://www.uio.no/studier/emner/matnat/ifi...isningsplan.xml

    Se spesielt på pdf nr. 4 om geometriske operasjoner. Der står det en algoritme for å "baklengsmappe" som jeg forklarte over og står også om interpolasjon og samregistrering av bilder (som er det du egentlig vil gjøre).

  3. R1 og R2 er realfagsmatten i 2. og 3. klasse på vidergående. Det største hoppet er ikke egentlig fra ungdomsskolen til T-matten i 1. klasse, men fra T til R. Det synes ihvertfall jeg.

    Enig :cry:

     

    Men når det gjelder IT så gir vel det like mye studiepoeng som de andre realfaga? Så hvis du skal bli programmerer, kan du vel likeså godt ta det istedenfor kjemi?

    Hvis man kan programmere fra før er IT på vgs noe av det mest bortkasta du kan ta IMO. Du lærer så vidt hvordan du programmerer en løkke i Visual Basic, men hvis du forventer å kunne programmere etter et IT kurs på vgs vil du bli skuffet er jeg redd. Det er kanskje enkle studiepoeng, men det er vel mer givende å ta kjemi da og faktisk lære noe. Det skulle ihvertfall jeg ønske at jeg gjorde. Programmering lærer man av seg selv av å lese bøker og så begynner man på universitet/høyskole. Selv om det fins jo utrolig flinke folk som aldri har gått på universitetet heller men er selvlært. Poenget mitt er vel at IT på vgs suger balle. Hvis du er interessert i en lett karakter er det sikkert greit, hvis du har lyst til å lære noe så hadde jeg valgt kjemi eller noe annet.

  4. Apt/Mediafront ville nok tatt 100 000 for jobben.

     

    Jeg hadde tatt 580 kr timen eks mva.

     

    Hva du skal ta er veldig individuelt er vel poengt. Faktorer som erfaring, kunnskap, anseelse og tidligere prestasjoner definerer hva du kan ta betalt.

     

    Dette er jo for moren din, og åpenbart blir det ett læringsprosjekt. Ikke er du noe designer, så tenker du vil bruke ett CMS med en standard template.

     

    Å forsvare noe høyrer times pris enn 200 - 300 kr timen, eller ta en fast pris på 3 - 4000 kr blir vanskelig. Å bli noe mer konkret som det er umulig da omfanget av jobben ikke er kjent. Er det snakk om en enkel presentasjon av ett firma, eller skal du legge ut 400 produkt sider i en database, eller skal det være noe form for nettbutikk også?

     

    Jeg ville sett på den største verdien her i å ha en konkret jobb for en konkret kunde og ta erfaringene fra det. Ikke pengene.

     

    AKIRA

    Okay, takk.

     

     

    Ser for meg at dette er sånn "Dere, sønnen min kan jo data, han kan sikkert lage noe til oss, så slipper vi å betale så mye".

     

    *mamma kommer hjem*

     

    "Du? Er ikke du sånn 'dataekspert'? Vil du lage hjemmeside for jobben min?"

     

    Som om de automatisk tror at bare man "kan data" kan man gjøre hva som helst, inkl. design.

    Jepp, ganske omtrent sånn. Det er ikke akkurat som om en enkel webside med litt php/perl er verdens vanskeligste ting å få til. Designen skal jeg antakeligvis få hjelp til av noen som kan det bedre enn meg.

  5. Tusen takk for utfyllende svar. Det har virkelig hjelpet meg til å forstå quicksort bedre.

    Jeg skjønner ikke hvorfor forfatteren av denne koden har valgt å ta med (i < right) og (j > left) i while-løkkene da det iallefall kan virke som dette er overflødig siden jeg velger x lik medianen hver gang og da vil (items < x) og (x < items[j]) bli false når items og/eller items[j] er lik x.

    En annen ting jeg oppdaget er at i do-while løkken kan man bare skrive while (i < j)...

    Noen som kan tenke seg hvorfor koden er skrev slik..?

     

    Uansett, atter en gang, takk for hjelpen... :)

    Nja, du må ha med i < right og j > left for at den ikke skal gå over grensen sin og begynne å sortere sub-arrayer som allerede er sortert og sånn. Skjønte ikke helt det siste spørsmålet men. Det er faktisk ganske lett å se hvordan quicksort funker med haskell-kode, da ser det slik ut:

    qs []	 = []
    qs (x:xs) =  qs left ++ [x] ++ qs right
    	where left  = filter (<x) x
    		  right = filter (>=x) xs

    her ser man at quicksort på en tom liste er en tom liste, mens quicksort av en liste av minst et element og en resterende liste ((x:xs)) er en liste av quicksort på den venstre lista, sammenslått med element x, sammenslått med quicksort på den høyre lista, hvor den høyre og venstre lista er sortert til bare å ha elementer som er henholdsvis mindre og større enn x.

  6. Skal lage en enkel hjemmeside for firmaet til mamma som gjør at hun kan oppdatere siden med et veldig enkelt webinterface da hun er lei av å ikke klare det nå. Det blir som sagt ikke en komplisert side, men jeg skal nå prøve å få den til å se litt profesjonell ut og få til et brukbart webinterface hvor hun kan legge til nyheter/tekst osv, men jeg lurer litt på hva som er vanlig betaling for slike sider? Er det vanlig med timelønn eller fastpris? Hvor mye i timelønn isåfall?

  7. Quicksort

     

    Jeg leser boken C++ A Beginner's Guide av Herbert Schildt og kom over en kode som jeg hadde litt problemer med å forstå. Jeg har skrevet inn koden og den virker akkurat som den skal. Problemet er at jeg ikke forstår hvordan den virker.

    Programmet sorterer en char array ved å bruke quicksort-algoritmen (velger medianen som utgangspunkt hver gang).

    Har søkt litt på quicksort på internett og funnet ut noelunde hvordan quicksort virker i teorien, men når jeg ser på kodeeksempelet klarer jeg ikke helt å forstå hvordan man har tenkt i qs().

     

    Altså problemet er å forstå hvordan de har overført det fra teori til kode...

    Håper noen kan hjelpe meg med å forstå bedre..

    Takker på forhånd. :)

     

    #include <iostream>
    #include <cstring>
    using namespace std;
    
    void quicksort(char *items, int len);
    
    void qs(char *items, int left, int right);
    
    int main()
    {
       char str[] = "daebc";
    
       cout << "Original order: " << str << '\n';
    
       quicksort(str, strlen(str));
    
       cout << "\n\nSorted order: " << str << "\n";
    
       cin.get();
    
       return 0;
    }
    
    // Set up a call to the actual sorting function.
    void quicksort(char *items, int len)
    {
       qs(items, 0, len-1);
    }
    
    // A recursive version of Quicksort for sorting characters
    void qs(char *items, int left, int right)
    {
    
       int i, j;
       char x, y;
    
       i = left; j = right;
       x = items[(left + right) / 2];
    
       do
       {
           while((items[i] < x) && (i < right)) i++;
           while((x < items[j]) && (j > left)) j--;
    
           if (i <= j)
           {
               y = items[i];
               items[i] = items[j];
               items[j] = y;
               i++; j--;
           }
       } while (i <= j);
    
       if (left < j) qs(items, left, j);
       if (i < right) qs(items, i, right);
    
    
    }
    

    Hver gang quicksort blir kalt så tar den et element, i koden din er det det midterste elementet (x = items[(left + right) / 2];), og så går den gjennom arrayen to ganger, en fra hver side til den finner et element som er mindre enn eller større enn x:

    while((items[i] < x) && (i < right)) i++;
    while((x < items[j]) && (j > left)) j--;

    altså, i er nå plassen til det første elementet som er større enn x og j er plassen til det første elementet som er mindre enn x. Den neste koden:

    if (i <= j)
    	{
    		y = items[i];
    		items[i] = items[j];
    		items[j] = y;
    		i++; j--;
    	}

    bytter om på disse to elementene sånn at i nå inneholder et element som er mindre enn x og j et element som er større enn x og dermed er de tre elementene sortert. Og sånn fortsetter loopen til i og j møtes og alle elementene som er mindre enn x er på den venstre siden av x og de elementene som er større er på den høyre siden. Så kaller man quiksort rekursivt igjen for å sortere subarrayene på venstre og høyere-siden. Vet ikke om det ble helt bra forklart.. Du får spørre hvis det er mer du lurer på.

  8. Jeg velger å svare dere alle, siden det går ut på det samme. Det som er sikkert er at en liberalisering og legalisering av cannabis fort vil føre til moralsk forfall og økte utgifter.

    Dette er bare tull. Hvordan begrunner du moralsk forfall? Jeg vil hevde akkurat det motsatte, at rusmidler som cannabis, sopp, lsd osv fører til en moralsk oppvåkning fordi det gjør at man klarer å se mye mer objektivt på ting uten vårt vanlige egosentriske filter og gjør at man i mye større grad klarer å føle empati for andre.

     

    Utgiftene vil heller ikke bli mye større sammenliknet med hvor mye staten kan tjene på skatter og inntekter, så dette er også bare tull.

     

    Flere vil bli avhengige av narkotika og derfra vil veien til de store samfunnsproblemene være veldig liten. For det er ved hasj og andre lettere narkotiske stoffer det begynner og er selve springbrettet som fører misbrukeren over på andre langt mer farlige stoffer (uavhengig av om det er forbudt eller ikke).

    De fleste studier viser at legalisering/dekriminalisering ikke fører til mer avhengighet, snarere tvert imot. Man trenger heller ikke oppsøke kriminelle miljøer (ofte) for å kjøpe seg cannabis, og på den måten så blir man spart for spørsmål om man vil kjøpe noe annet også av dealern. Så springbretteorien faller også bort.

     

    En legalisering av hasj vil dessuten gi ett uheldig signal til folk hvor en gir uttrykk for at narkotika ikke er så farlig alikevel, noe som igjen vil føre til en gradvis allmenn aksept av andre narkotiske stoffer. Dette vil bare føre til ytterligere press fra narkotikatilhengerne om å legalisere andre stoffer. Hasj er heller ikke så uskyldig og ufarlig som mange påstår. Det har flere psykiske skadevirkninger og misbruk medfører reelle og godt dokumenterte problemer slik som psykoser, personlighetsfortyrrelser, angst og andre psykiske problemer. Tilgangen vil altså øke, siden man her også vil kunne oppsøke miljøer som kan skaffe billigere hasj som følge av legaliseringen og hvor en også har tilgang på andre narkotiske stoffer. Vi får her en dominoeffekt som vil føre til økt misbruk, ikke mindre.

    Det vil gi et signal om at man ikke lenger følger den gamle, svært mislykkede, "war on drugs"-politikken som utelukkende er basert på redsel for alt man kan ruse seg og på ikke vitenskapelige fakta, som det burde være basert på. Det er ingen andre rusmidler som det er brukt så mye penger på å prøve å finne ut at det er farlig, og resultatet er patetisk dårlig. Man vet at misbruk av cannabis ikke er bra, som alt misbruk, men misbruk av cannabis iforhold til f.eks heroin, alkohol, amfetamin osv er i tillegg svært lite helseskadelig, sammenlignet med misbruk av de andre stoffene jeg nevnte. For noen kan det gå verre utover psyken enn andre, men alt tyder på at skader av cannabis er reversible som forsvinner etter et par måneder etter man har sluttet misbruket.

     

    Når det gjelder økt misbruk og miljøer hvor man kan kjøpe billigere hasj er dette altså en holdbar påstand. Ingen vil kunne klare å utkonkurrere staten på pris, hvis man da ikke drar til sverige f.eks hvor staten tar mindre, men det blir litt som med ølsmugling, det er ikke så lønnsomt at det er et veldig stort problem. Folk står ikke og pusher billig øl på plata, nettopp fordi det ikke er nok penger i det. Og som sagt så er det ingenting som tyder på at en legalisering fører til mer misbruk, men mindre.

     

    Vi kan ta alkoholpolitikken som ett eksempel hvor det viser seg at land som har en mer liberal alkoholpolitikk er de som har størst problemer. Ta Finland; når alkoholavgiftene der ble senket, så førte det til økt alkoholforbruk noe som igjen førte til om lag 600 flere dødsfall pr. år. Antallet fyllekjørere økte med 25 prosent fra 2003 til 2004 og også antallet voldtekter gikk kraftig opp pga liberaliseringen og avgiftskuttet. Også i Storbritannia og Irland førte en liberal alkoholpolitikk til mer vold, flere ulykker og flere alkoholskader. Som med alkohol så med hasj, vil en legalisering og liberalisering føre til økt tilgang og dermed også økt forbruk.

    Hva med land som har ført en liberal cannabispolitikk som ikke ligger på toppen av misrbukerstatiskken som nederland? Hva med land som frankrike, italia og spania som har meget liberale alkohollover sett med norske øyne og som ikke har den fyllakulturen vi har i Norge? Riktignok har de endel leverskader, men folk der har lært seg å kunne drikke uten å nødvendigvis drikke seg så drita full at du ikke vet hva du gjør.

     

    Som en liten kommentar til linkene dine er det veldig viktig å skille mellom bruk og misbruk. Ved moderat bruk av cannabis er skadene så og si ikke-eksisterende, ved misbruk er det noen som blir rammet harderere enn andre, spesielt de som har psykiske lidelser i familien eller en latent psykisk lidelse, men dette er ca 1% av befolkningen. For de resterende 99% vil misbruk "bare" føre til at man blir litt mer apatisk, sløvere og de andre tingene man forbinder med "stonere". Men man kan ihvertfall fint fortsette å leve et relativt normalt liv, det er ikke tilfelle til de fleste alkoholikere, heroinister eller de fleste andre narkomane.

  9. Tror vel accelerated c++ er en veldig anbefalt og bra bok, mens ".. for dummies"-seriene generelt anbefales å holde seg vekke fra.

     

    Visual C++ er et helt greit IDE med en grei kompilator, så lenge du har de nyeste og ikke versjon 6 eller noe. Grunnen til feilene kan enten være fordi "for dummies"-boken inneholder ustandard eller gammel C++, eller fordi du har feil innstillinger i visual studio. Men det er litt vanskelig å si uten å se feilen.

  10. Hørte forresten en morsom hypotese om hvordan det har blitt til med de flyvende reinsdyrene.

    Den går ut på at reinsdyrene spiser fluesopp og så har urinnvånere brukt urinen deres til å ruse seg på etterpå. Dermed har de sett flyvende reinsdyr og dette skal være opphavet til myten.

    Vet ikke om det stemmer. Men jeg VET at det er sant at reinsdyr har blitt observert å velge bort reinlav til fordel for fluesopp når de graver i snøen.

    Klart. Julenissen var jo en sjaman, derav den røde og hvite drakten for å hylle fluesoppen når man skal ut i kalde siberia for å plukke sopp som man tar med hjem i en svær pose eller julesekk. Fluesoppen liker seg forøvrig under store grantrær, som vi nå bruker som juletrær. Den må også varmes opp eller tørkes for at ibotensyra (som er litt giftig) skal omdannes til muscimol, som er et mildt psykedelisk rusmiddel. Det kan gjøres ved at fluesoppen legges oppå grantrærne i solsteika f.eks, eller blir hengt over peisen i sokker. Står masse om dette hvis man søker på santa claus mushrooms på google, og så har man jo også tusenvis av forskjellig julemotiver med julenissen og fluesopp.

  11. Jeg er egentlig usikker på fremtiden til GPGPU, hvor nyttig kan det egentlig være?

    Tja, det er vel mest nyttig for massive datasett som kan behandles parallellt, typisk dsp-oppgaver o.l.

     

    Det som hadde vært spennende, var om en fikk en GPU-implementasjon av OpenGL, så vil OpenGL bli mer...universalt tilgjengelig.

    Hmm, skjønner ikke helt hva du mener? OpenGL bruker jo GPU'en og du kan programmere den selv med vertex og pixelshadere..

  12. Er en god del annet en bare og sette seg ned å programere da :)

    Men, er det noe nyttig og lære seg dette? Kan det være et framtidig yrke? Isåfall lurer jeg på hvor, siden jeg tviler sterkt på å få komme inn i noe sånt som Ubi-Montreal eller Crytek? :)

     

    Edit: Så om jeg har forstått deg rett, så er Matte og C++ tingen?

    Eller er C++ noe man bare bør begynne med, og fortsette med noe annet?

    Neida, det er ikke verre enn å bare begynne å programmere. Kjøp deg en bok om språket du vil lære, les og gjør oppgaver samtidig. Den eneste måten man lærer å programmere på er å programmere. Og ja, det å kunne programmere er nyttig. Om det er et fremtidig yrke vil jo være opp til deg selv, men ja, det er behov for folk som kan programmere i verden.

     

    C++ er greit det ja, og et av språkene man burde kunne. Men det egner seg ikke til alt, og de fleste programmerere lærer seg flere språk som egner seg til forskjellige ting. Etter du har lært deg det første er ikke de andre så vanskelige, det er veldig mye likt. Så start gjerne med C++, kjøp deg boka "accelerated C++" og begydunn å programmer. Men du må gjerne lære deg et annet språk også. Søk litt på free python books f.eks og start litt smått med python f.eks. Det er et veldig enkelt og kraftig scriptespråk som passer bra som begynnerspråk. Bare husk at du må lære deg C/C++ før eller senere og ting som pekere og minnebehandling. Det slipper du med python og mange andre språk, men det er viktig å få en forståelse for det før eller senere.

     

    edit: apropos den siste posten, ikke la deg stoppe av at det ser litt håpløst ut på starten. Det gjør det for alle, men bare fortsett å les og prøv å lag noen små programmer, så løftes tåken etterhvert, garantert. Men imotsetning til VB så ikke prøv på GUI-programmer, begynn med enkle console-programmer.

  13. Ja, det er jo en positiv bieffekt. Hvis du er flink i matte vil det ikke være andre grenser enn fantasien for hva du kan programmere, og det er en stor motivator for å jobbe litt ekstra med matte.

    Et lite tips som jeg ikke fant ut av før på universitetet desverre er å følge nøye med på hvordan man beviser ting ved å se på egenskapene til forskjellige matematiske strukturer. Det gadd jeg aldri å bry meg særlig om på ungdomsskole og vgs, men når jeg kom på universitet fant jeg ut at det er helt elementært for å forstå hvordan man bygger opp hele matematikken fra enkel set-teori til elementær algebra som 1 + b = 2 og videre til det mest kompliserte.

     

    Et annet tips er at du burde pugge trigonometriske identiteter som cos^2 + sin^2 = 1 osv for da vil integrering, komplekse tall osv bli veldig mye lettere. Og hvis det sitter er det igjen utrolig mye annet kult som kan brukes til programmering av fysiske fenomener som åpner seg.

  14. Vel, jeg kan skjønne at siden du driver mest med grafikk så har du kanskje aldri hatt det store behovet for å produsere testdata eller å analysere utdata (bortsett fra av grafiikken du gjør med hodet da), men du skjønner sikkert forskjellen på scenarioet og det å analysere en variabel i en debugger.

     

    Poenget er at utvikling er mye mer enn å skrive koden, trykke på en knapp så det kompilerer og debugge og så er du ferdig. De eneste som kanskje har det som sitt hovedscenario er vel typiske GUI-brukerprogrammer, som du finner mest av på windows, og det er vel kanskje også noe av forklaringen til at så mye av forskning og store tunge programmer på servermarkedet foretrekker linux/unix som utviklingsplatform.

     

    Det burde vel også si litt at et sånt utviklingsmiljø fortsatt er foretrukket etter 30-40 år av nærmere samtlige som driver med noe som helst seriøs programmering på unix/linux. Jeg tror ikke google, linux osv er utviklet i verken MSVS, KDevelop eller code blocks. Da er det tydelig at noe er gjort riktig og at ting er effektivt, stabilt og kraftig.

×
×
  • Opprett ny...