1. Лучший говнокод

    В номинации:
    За время:
  2. Куча / Говнокод #807

    +137

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    Лабораторная работа №4
    
    Написать программу, которая осуществляет передачу сообщений по сети по протоколу TCP/IP. При этом:
    1) Адрес получателя и адрес отправителя должен отличаться не менее, чем на 3 IP-адреса (с IP-адреса 192.168.3.21 можно отправить сообщения на адреса до 192.168.3.17 и после 192.168.3.25, а на адреса от 192.168.3.18 и до 192.168.3.24 – нельзя);
    2) Сообщения должны передаваться по сегментам сети, при этом сообщение может передаваться не далее, чес на 2 IP-адреса (с IP-адреса 192.168.3.21 можно отправить сообщения на адреса 192.168.3.19, 192.168.3.20, 192.168.3.22, 192.168.3.23, а на адреса до 192.168.3.18 и после 192.168.3.24 – нельзя);
    3) На каждом сегменте к сообщению добавляется IP-адрес посредника;
    4) Ввести элемент случайности: каждый посредник может либо принять, либо отклонить сообщение с вероятностью отказа 0,3. Факт отказа отмечать в формируемом для дальнейшей отправки сообщении. При этом маршрут не может содержать более 10 узлов. Если количество узлов оказалось более 10 (из-за протяжённости маршрута или из-за ошибок и отказов), вернуть ответ напрямую отправителю о невозможности отправки сообщения, но с указанием проделанного маршрута;
    5) Ввести контроль ошибок с помощью кода Хэмминга, на каждом этапе пересылки ЄAaь код Хэмминга и передавать следующему адресату, который проверяет наличие ошибки. Отправитель с вероятностью 0,1 может допустить одиночную ошибку. Если адресат получает ошибочное сообщение, он его исправляет и отмечает этот факт в формируемом для отправки далее сообщении;
    6) Если сообщение достигло адресата, то на адрес отправителя напрямую отправляется сообщение о доставке с указанием проделанного маршрута.
    Для проверки работы программы необходимо разместить несколько копий на компьютерах в сети и запустить их на приём и передачу сообщений. Проверить, как передаются сообщения и какие при этом формируются маршруты.

    Я ИДИОТ!!!!11 УБЕЙТЕ МЕНЯ!!!11

    guest, 03 Апреля 2009

    Комментарии (8)
  3. PHP / Говнокод #523

    +137

    1. 1
    2. 2
    $users_count = count($this->db->exe('select * from px_users'));  
    $users = $this->db->exe('select * from px_users order by name limit ' . $from . ',' . $perpage);

    guest, 10 Февраля 2009

    Комментарии (3)
  4. PHP / Говнокод #981

    +136.9

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    $src= fgets($fp,1000);
    if (strpos($src,"301") && $op_2) {
    Pravile($src,$files[$a],1);
    $mk .= "http://".$www."/".$files[$a]." HTTP 301 Moved Permanently\r\n";
    echo "<a href=http://".$www."/".$files[$a]." target=\"_blank\" class=\"lime\">http://".$www."/".$files[$a]."</a>    <span style=\"font-weight: bold;color: lime;\">HTTP 301 Moved Permanently</span><br>";
    }
    
    if (strpos($src,"302") && $op_2) {
    Pravile($src,$files[$a],1);
    $mk .= "http://".$www."/".$files[$a]." HTTP 302 Found\r\n";
    echo "<a href=http://".$www."/".$files[$a]." target=\"_blank\" class=\"lime\">http://".$www."/".$files[$a]."</a>    <span style=\"font-weight: bold;color: lime;\">HTTP 302 Found</span><br>";
    }
    
    if (strpos($src,"200")) {
    Pravile($src,$files[$a],1);
    $mk .= "http://".$www."/".$files[$a]." HTTP 200 OK\r\n";
    echo "<a href=http://".$www."/".$files[$a]." target=\"_blank\" class=\"yellow\">http://".$www."/".$files[$a]."</a>    <span style=\"font-weight: bold;color: yellow;\">HTTP 200 OK</span><br>";
    }
    
    if (strpos($src,"403")&& $op_1) {
    Pravile($src,$files[$a],1);
    $mk .= "http://".$www."/".$files[$a]." HTTP 403 Forbidden\r\n";
    echo "<a href=http://".$www."/".$files[$a]." target=\"_blank\" class=\"red\">http://".$www."/".$files[$a]."</a>    <span style=\"font-weight: bold;color: red;\">HTTP 403 Forbidden</span><br>";
    }
    if (strpos($src,"401")) {
    Pravile($src,$files[$a],1);
    $mk .= "http://".$www."/".$files[$a]." HTTP 401 Authorization Required\r\n";
    echo "<a href=http://".$www."/".$files[$a]." target=\"_blank\" class=\"red\">http://".$www."/".$files[$a]."</a>    <span style=\"font-weight: bold;color: red;\">HTTP 401 Authorization Required</span><br>";
    }
    
    if (strpos($src,"503")) {
    $mk .= "http://".$www."/".$files[$a]." HTTP 503 Service Unavailable\r\n";
    echo "<a href=http://".$www."/".$files[$a]." target=\"_blank\" class=\"blue\">http://".$www."/".$files[$a]."</a>    <span style=\"font-weight: bold;color: blue;\">HTTP 503 Service Unavailable</span><br>";
    }
    if (strpos($src,"504")) {
    $mk .= "http://".$www."/".$files[$a]." HTTP 504 Gateway Timeout\r\n";
    echo "<a href=http://".$www."/".$files[$a]." target=\"_blank\" class=\"blue\">http://".$www."/".$files[$a]."</a>    <span style=\"font-weight: bold;color: blue;\">HTTP 504 Gateway Timeout</span><br>";
    }

    снова вебхакер.ру ))
    А что такое массивы? о_0

    guest, 30 Апреля 2009

    Комментарии (1)
  5. PHP / Говнокод #681

    +136.9

    1. 1
    2. 2
    $Fp = join("", file("Logs.txt"));
    $Fp1 = explode("\r\n\r\n", $Fp);

    Норм сиги

    guest, 07 Марта 2009

    Комментарии (2)
  6. JavaScript / Говнокод #651

    +136.9

    1. 1
    selonChange = this.onchange.toString().split("{")[1].split("}")[0];

    вот такая вот херня

    guest, 03 Марта 2009

    Комментарии (1)
  7. Си / Говнокод #2135

    +136.8

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    45. 45
    46. 46
    47. 47
    48. 48
    49. 49
    50. 50
    51. 51
    52. 52
    53. 53
    54. 54
    55. 55
    56. 56
    57. 57
    58. 58
    59. 59
    60. 60
    61. 61
    62. 62
    63. 63
    64. 64
    ...
    
    // TODO: remove this godless "switch()"!
                    switch(tuntype) { // TODO: Important: do as in documentation instead of reverse-ingeniering!
    #define PACKET_TRY {\
                    if(packet->ip_v == 4) {\
                            hl=packet->ip_hl<<2;\
                            if(hl>=sizeof(*packet))\
                                    break;\
                            /* TODO: Check in RFC something about of ICMP send-back in this case */\
                            fprintf(stderr, "Got too short IP-header (%i)...\n",hl);\
                    }\
                    if((packet->ip_v&IPV6_VERSION_MASK) == IPV6_VERSION) {\
                            break;\
                    }\
    }
    #define NEXT(a) tuntype=a;\
                    if(tuntry>=2)\
                            goto tun_process_switch_end;\
                    tuntry++;
    #define CASE(a) NEXT(a);\
            case a
    tun_process_switch:
    //              switch(tuntype) {
                            case TUNTYPE_NORM:              // NetBSD-like?
                                    packet=(typeof(packet))ptr;
                                    PACKET_TRY;
                            CASE(TUNTYPE_EXT):              // FreeBSD-like?
                                    packet=(typeof(packet))((char *)ptr + 4);
                                    if(s>4)
                                            if(*ptr==0x02)
                                                    PACKET_TRY;
                            CASE(TUNTYPE_ETH):              // Ethernet? TODO: Implement VLAN-tagging
                                    packet=(typeof(packet))((char *)ptr + sizeof(*eth));
                                    eth=(typeof(eth))ptr;
                                    if(!teth) {
                                            teth=alloca(sizeof(*teth));
                                            memcpy(&teth->ether_shost, &eth->ether_dhost, sizeof(teth->ether_shost));
                                            memcpy(&teth->ether_dhost, &eth->ether_shost, sizeof(teth->ether_dhost));
                                            teth->ether_type=ETHERTYPE_IP;
                                    }
                                    if(s>sizeof(*eth))
    //                                      if((*(char *)&eth->ether_type==0x08/* not IPv4? */)||(*(char *)&eth->ether_type==0x86/* not IPv6? */))  // TODO: Implement compatibility with all protocols over ethernet
                                                    PACKET_TRY;
                                    NEXT(TUNTYPE_NORM);
                                    goto tun_process_switch;
                            
                            default:                        
                                    tuntype=TUNTYPE_NORM;
                                    goto tun_process_switch;
    //              }
    tun_process_switch_end:
    #undef CASE
    #undef NEXT
    #undef PACKET_TRY
                                    if(tuntry<~0)
                                            tuntry=0;
                                    tuntype=oldtuntype;
                                    fprintf(stderr, "Got unknown packet. Flushing...\n");
                                    FLUSH;  // Flush all. We don't know the length of packet with unknown type.. So, we have to flush the buffer, to probably get new packets from the start.
                                    goto tun_process_while;
                    }
    
    ...

    "Ляпотааааа"... Очень "структурный" switch...

    xaionaro, 11 Ноября 2009

    Комментарии (11)
  8. Си / Говнокод #1659

    +136.8

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    #define CHAINFREE_STATIC_DAT(a, field) {\
        ptr=(typeof(ptr))&(a);\
        if(((typeof(&(a)))(ptr))->field)\
            free(((typeof(&(a)))(ptr))->field);\
        ptr=(typeof(ptr))(((typeof(&a))(ptr))->next);\
        if(ptr) {\
            while(((typeof(&(a)))(ptr))->next) {\
                if(((typeof(&(a)))(ptr))->field)\
                    free(((typeof(&(a)))(ptr))->field);\
                ptr=(typeof(ptr))(((typeof(&a))(ptr))->next);\
                free(((typeof(&(a)))(ptr))->prev);\
            }\
            if(((typeof(&(a)))(ptr))->field)\
                free(((typeof(&(a)))(ptr))->field);\
            free(ptr);\
        }\
        memset(&(a), 0, sizeof(a));\
    }

    Кол-во скобок радует :)

    xaionaro, 22 Августа 2009

    Комментарии (13)
  9. PHP / Говнокод #1481

    +136.8

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    function lock_user($id)
    {       
            global $db_obj;
     
            $SQL = "SELECT GET_LOCK('%s', 10)";
            $SQL = sprintf($SQL, (int)$id);
            $result = $db_obj->query($SQL);
            $row = $db_obj->fetch_array($result);
            $key = "GET_LOCK('" . (int)($id) . "', 10)";
            $res = $row[$key];
            return $res;
    }

    дзен

    guest, 06 Августа 2009

    Комментарии (4)
  10. Pascal / Говнокод #1053

    +136.8

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    hMutex := CreateMutex(0, true , 'Radionic');
      if GetLastError = ERROR_ALREADY_EXISTS then
      begin
        FullProgPath := PChar(Application.ExeName);
        WinExec(FullProgPath, SW_SHOW); // Or better use the CreateProcess function
        Application.Terminate; // or: Close;
      end;

    Пытался сделать обновления копии проги в памяти а наговнокодил кроликов в оперативке.

    guest, 16 Мая 2009

    Комментарии (0)
  11. Си / Говнокод #2502

    +136.7

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    45. 45
    46. 46
    BOOLEAN
    KiCheckForAtlThunk (
        IN PEXCEPTION_RECORD ExceptionRecord,
        IN PCONTEXT Context
        )
    
    /*++
    
    Routine Description:
    
        This routine will determine whether an access violation was raised due to
        an attempt to execute an ATL thunk in a no-execute, non-stack area.
    
        If so, the thunk will be emulated and execution resumed.
    
    Arguments:
    
        ExceptionRecord - Supplies a pointer to an exception record.
    
        Context - Supplies a pointer to a context frame.
    
    Return Value:
    
        TRUE - Context was updated to reflect the emulated ATL thunk, resume
               execution.
    
        FALSE - Not an ATL thunk, continue raising the exception.
    
    --*/
    
    //.........
    //KiDispatchException:
    //......
     switch (ExceptionRecord->ExceptionCode) {
            case STATUS_BREAKPOINT:
                ContextFrame.Eip--;
                break;
    
            case KI_EXCEPTION_ACCESS_VIOLATION:
                ExceptionRecord->ExceptionCode = STATUS_ACCESS_VIOLATION;
                if (PreviousMode == UserMode) {
                    if (KiCheckForAtlThunk(ExceptionRecord,&ContextFrame) != FALSE) {
                        goto Handled1;
                    }
    
    //................

    Объявление KiCheckForAtlThunk (втыкать в комменты и название =)) ) Для тех кто в танке: исходники Windows, оконные классы ATL выделяют тупо в хипе кусок-переходник, который заменяет HWND, идущий первым параметром в оконную процедуру, на естественный, объектно-ориентированный this. Так вот, если у нас установлено где-то в реестре юзать защиту от выполнения данных, то, естественно, в хипе хер чего выполнишь, и возникнет #GP, и тут-то нам и придет на помощь KiCheckForAtlThunk =) Короче, ИМХО, вносить изменения в ядро, для того, чтобы нормально работала криво написанная юзермодная библиотека -- та еще жесть =) Все кто минусует -- не шарят :P

    ISith, 30 Января 2010

    Комментарии (3)