Gå til innhold

kattemat

Medlemmer
  • Innlegg

    850
  • Ble med

  • Besøkte siden sist

Innlegg skrevet av kattemat

  1. Så vidt jeg vet så byttet sun fra monotolisk kjerne(BSD) til microkernel(SysVr4) ved SunOS4->SunOS5. Men jeg tror ikke at solaris er noe prakteksempel på en ren microkernel - men heller at det har en mickrokernel'ish design. Tviler litt på at det hadde vært noen enkel sak å få solaris til å kjøre oppå en anna microkernel.

     

    Ellers er jeg enig med olefiver. Professorer og førsteamanuensis betyr ikke nødvendigvis at en skal sluke alt rått. Jeg sier heller ikke at de ikke er kompetente(tok UiO versjonen av kurset selv i sin tid), men en skal heller ikke ta alt for god fisk ;)

  2. Du har nok missforstått litt syntaks her. Her er mitt forslag til noen(svært lite gjennomarbeidede) forbedringer ;)

     

    #include <90s2313.h>;              
    #include <delay.h>;
    #include <string.h>;                
    
    // keypad code is 1337
    static int pincodetest[4] = {1,2,3,4};
    
    int 
    CORRECT(int *entered_pincode) {
    
     if(!memcmp(entered_pincode, pincodetest, sizeof(pincodetest))
       return 0;
    
     return 1;
    }
    
    void 
    TurnOn(void) {
     PORTD.5 = 1;// 1 gjor at transistoren opner seg..  eventuelt legg in lys her..
     delay_ms(500); //hold knappen inne i ett halvt sekund..
     PORTD.5 = 0; //skru av knappen igjenn, skru av lyset igjenn  
    }      
    
    int 
    FinnKnapp(void){
     if (PINB.0) return 1;  
     if (PINB.1) return 2;
     if (PINB.2) return 3;
     if (PINB.3) return 4;
     if (PINB.4) return 5;
     if (PINB.5) return 6;
     if (PINB.6) return 7;
     if (PINB.7) return 8;
     if (PIND.1) return 9;
    
     return 0;
    }
    
    int
    main(int argc, char *argv[])
    {
     PORTB=0x00;
     DDRB=0x00;
    
     PORTD=0x00;
     DDRD=0x7E;
     ACSR=0x80;
    
     for(;;) {
       int code[4];
       int i;
    
       // fyst, finn ut ka knapp som er blitt trykket..
       for(i = 0; i < 4; i++)
         code[i] = FinnKnapp();  
       
       if (corect(entered_code)) 
         TurnOn();
     }
    }
    

     

    [EDIT] noen obligatoriske trykkfeil og la til bruk av memcmp

  3. "Finnes ikke i C"? memcmp(3) er prototypet i string.h. Den er en del av C99.

     

    [EDIT] Her er et kjapt eksempel på bruken:

     

    #include <string.h>
    #include <stdio.h>
    #include <stdlib.h>
    
    int
    main(int argc, char *argv[])
    {
     char pin1[4] = { '1', '2', '5', '7' };
     char pin2[4] = { '1', '2', '5', '7' };
     char pin3[4] = { '1', '5', '7', '4' };
     char pin4[4] = { '1', '3', '3', '7' };
    
     if(!memcmp(pin1, pin2, 4))
       {
         printf("pin1 == pin2\n");
       }
     else
       {
         printf("pin1 != pin2\n");
       }
    
     if(!memcmp(pin3, pin4, 4))
       {
         printf("pin3 == pin4\n");
       }
     else
       {
         printf("pin3 != pin4\n");
       }
    
     return EXIT_SUCCESS;
    }
    

  4. Så vidt jeg kan huske, så skal parameter 2 til va_start være en peker til den siste "faste" parameteren. Eksempel(unnskylder meg atter en gang for Linux-C kode):

     

    int

    sprintf_wrapper(char *buf, char *format, ...)

    {

    int ret;

    va_list arglist;

     

    va_start(arglist, format);

     

    ret = vsprintf(buf, format, arglist);

     

    va_end(arglist);

    return ret;

    }

     

     

    [edit: bytta til sprintf og la til retur ;)]

  5. Jeg bruker Linux 99% av tida, men nærer ikke noe hat mot MS produkter. Microsoft har, i mine øyne, lagd en rekke gode produkter, inkl. NT OSene, som har blitt utviklet mot enorme kundemasser. Problemet er altså ikke produktene(for min del), men måten MS har oppført seg. De har skviset selskap ut av markedet og ikke minst, de har pushet på en rekke proprietære standarder og låst kunder inne i sine miljøer.

    Men slik blir det kanskje uansett når en aktør så og si har monopol... IBM var jo en gang "de onde", men nå er de jo riktig godt likt i FOSS miljøer.

     

    Nei - på tide å komme seg i seng...

    • Er du hobbyprogrammerar eller proffesionell?
      Jobben min er å programere, så sånn sett er jeg vel profesjonell. Kompetansemessig er det vel rimelig teit å kalle seg proff :-) man lærer så lenge man lever.
    • Kvifor begynte du å programmere?
      Pga. at det fasinerte meg utrolig at jeg kunne få datamaskinen til å gjøre akkurat som jeg ville.
    • Kor lenge har du programmert? (og kor gammald var du då? valgfri)
      Begynte på C64/BASIC på slutten av åttitallet. Dabbet av i gymnastida, men tok etterhvert utdanning på dette så da var det back in bussiness.
    • Kvafornokre programmeringsspråk kan du?
      C må kunne sies å være hovedspråket mitt. Ellers har jeg drevet mest med Java og Perl og vært litt borti C++, Python (og annen scripting), assembly og BASIC(for lenge lenge siden)
    • Når var du interresert i data (alder)?
      9-10 års alderen. Hmm... jeg er vel egentlig alt for gammel til å henge her inne.
    • Har du toke nokon utdannelse innen programmering?
      Hovedfag fra UiO/UniK.
    • Kva er det største prosjektet du nokon gong har gjennomført i programmering?
      I ikke-jobbsammenheng er det vel olsrd (olsr.org)
    • Kva er den største tabben du har gjort innen programmering?
      At jeg ikke kom lengre en qBasic med den første i386 en min! Hadde jeg hatt en C kompilator(for ikke å snakke om Linux/Minix el.) den gang så...
    • Kva type programmering driver du mest med / liker du best? Driver-programmering, Konsoll-programmering, Windows-programmering, Dataspel, osv...
      Lavnivå ting som netstack synes jeg kanskje er artigst nå. Er glad i nettverksrelaterte ting.
    • Kva for eit operativsystem brukar du?
      Mest Linux. På jobb er det forskjellige RTOS varianter mens på hobbybasis fyrer jeg avogtil opp FreeBSD. Så alt i alt er det Unix type OS som gjelder.
    • Kven er ditt største idol innen IT?
      Tja... tror ikke jeg har noen. Kanskje en av guruene ala Kerrigan & Richie? Nei - vet ikke.

  6. Nei!

     

    Det er ikke kritikk av løsningen, det er kritikk av prosessen som har ført til løsningen.

     

    Når du skal kjøpe ny mobil så gir du f i hvordan den ble laga, du er interessert i hvordan den virker. Om det var hundre komponenter som ble rista i en stor svart box, og ut kom en fullt fungerende mobiltelefon så er det like bra som om det satt fjorten nakne nonner ved midnattsmesse og ba Gud skjenke dem mobilen.

     

    Det viktigste er hvordan mobilen funker.

    Jeg skjønner poenget med at det kan sees som kritikk av metoden(noe det vitterlig også er), men Theo sier:

    "It's terrible" (det kan diskuteres om It hennspeiler på situasjonen eller Linux. Artikkelforfatter legger iallfall opp til at det skal henspeile på Linux).

    "Everyone is using it, and they don't realize how bad it is."(her henspeiler it uomtvistelig på Linux, her sier han jo rett ut at "Linux is bad"?)

    "There are so many parts of the system that are just these cheap little hacks, and it happens to run."(dette er jo en direkte kritikk av Linux koden)

     

    Jeg sier ikke at det theo sier er utelukkende feil, bare at det er en direkte kritikk mot Linux slik det eksisterer i dag. Men nå virker det som om du ikke mener at Linux kildekoden er en del av Linux produktet, så der har vi i så fall veldig ulike synsvinkler.

    Men det er fint vær ute... så la oss ikke krangle :) Om vi sier at det ikke er kritikk av anna enn prosessen så er det vel færre som blir provosert, og det er forsåvidt like greit.

  7. Ikke noe av kritikken i artikkelen retter seg mot det ferdige produktet. All kritikken er rettet mot hvordan Linux utvikles.

     

    Det han sier er at Linux kan ikke fungerer bra, fordi Linux ikke er utviklet på den måten han mener er en god måte å utvikle på.

    Det er da virkelig to sider av samme sak. Han kritiserer Linux som en bruksløsning. Om det er fordi han mener hans 60ish team av OpenBSD utviklere er sååå mye mer 1337 enn de tusener av utviklere som jobber på Linux eller fordi han kun mener metoden er bedre gjør ikke at han ikke kritiseres sluttproduktet.

     

    Er ikke dette kritikk av Linux som en bruksløsning?

     

    "It's terrible," De Raadt says. "Everyone is using it, and they don't realize how bad it is. And the Linux people will just stick with it and add to it rather than stepping back and saying, 'This is garbage and we should fix it.'"

     

    Her sier han at det eksisterende produktet er "garbage" og bør scrappes.

     

    "Linux has never been about quality. There are so many parts of the system that are just these cheap little hacks, and it happens to run."

     

    Her sier han altså at det så å si bare er flaks at en slik samling hacks greier å kjøre... og dette er kun kritikk av utviklingsmodell??

     

    Han kommer jo også med usaklige latterlige kommentarer som:

    "Linux people do what they do because they hate Microsoft. We do what we do because we love Unix,"

     

    Forbes har også kjørt et par latterlige lavmålssaker i det siste. Kommentarer som dette sier vel det meste:

    There are three open source flavors of BSD--FreeBSD, NetBSD and OpenBSD, the one De Raadt develops, which is best-known for its security features. In a sort of hacker equivalent of the Ford-versus-Chevy rivalry, BSD guys make fun of Linux on message boards and Web sites, the gist being that BSD guys are a lot like Linux guys, except they have kissed girls.

     

     

    Jeg tror hele denne artikkelen er et resultat av at Forbes har skjønt at om en greier å få en sak inn på slashdot, og om denne saken kan bli en orntli flamewar, så blir det masse hits på forbes.com.

  8. Theo er vel prototypen på en brilliant koder som oppfører seg som et rasshøl.

     

    Han har jo også uttalt at han aldri har prøvd Linux - så det er litt rart at han har noen som helst forutsettning for å komme med uttalelsene sine.

    Uansett, Tråden i netbsd mailinglista hvor han blir pælma ut er artig lesing ;)

  9. Med all respekt, kattemat, han skriver C++ under Windows. Er det ikke da litt skivebom å servere C for Linux(/Unix)?

    Tja...mulig jeg burde lest tråden fra toppen, men om vi fjerner getpiden(og unistd?) så bør det vel kompilere på win32 også? Har ikke noe windows boks å teste på dog.

     

    Uansett, var bare for å illustrere et poeng men litt praktisk testing... om det da er C eller C++ en bruker så gjør det strengt tatt ikke så mye så lenge det er C bibliotek funksjoner en snakker om?

    men for all del la meg prøve å spytte sammen et c++ eksempel:

    #include <iostream>
    #include <iomanip>
    #include <ctime>
    #include <string>
    
    using namespace std;
    
    int 
    main(int argc, char *argv[])
    {
     int i;
     
     if(argc > 1)
       {
         string s(argv[1]);
    
         if(!s.compare("-seed"))
         {
             cout << "seeding..." << endl;
             srand(time(0));
         }
       }
     
     cout << "10 random numbers: ";
    
     for(i = 0; i < 10; i++ )
       cout << setw(4) << rand() % 100;
    
     cout << endl;
     
    return 0;
    }
    

     

    La oss virkelig håpe dette fungerer på win32 da... :whistle:

     

    (EDIT: ble litt stygg formatering)

  10. Du må seede random generatoren din, ellers vil du få samme random verdier hver ang. Prøv:

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #include <time.h>
    #include <sys/types.h>
    #include <unistd.h>
    
    int
    main(int argc, char *argv[])
    {
     int i;
    
     if((argc > 1) && !strcmp(argv[1], "-seed")) 
       {
         printf("seeding...\n");
         srand(time(0) + getpid());
       }
    
     printf("10 random numbers: ");
     for(i = 0; i < 10; i++ )
       printf("%3d%c", rand() % 100, (i == 9) ? '\n' : ' ');
    
     return 0;
    }
    

     

     

    kjør denne med og uten -seed opsjonen noen ganger ;)

  11. Lurt å si hvilket OS det er snakk om ;)

     

    Ang IP addresse så bør du se på GetAdaptersInfo for win32, og IOCGIFADDR ioctl kallet for unix.

     

    ang ICMP(ping) så ta en titt på raw sockets(SOCK_RAW) i både win32 og Unix og struct icmphdr i unix(iallfall Linux). I win32 finnes det vel et eget sett med icmp relaterte API funksjoner som gjør dette lettere.

     

    Som alltid, om du bruker et OS med åpen kildekode er det jo bare å ta en titt på kilden for f.eks. ifconfig og ping :)

×
×
  • Opprett ny...