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

    В номинации:
    За время:
  2. Java / Говнокод #10381

    +75

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    byte[] buf = new byte[8192];
    int len = 0;
    while ((len = is.read(buf))>0)
    {
        requestString += new String(buf, 0, len, "UTF-8");
    }

    Пока никто не кормил туда настоящий UTF-8. Только ascii.

    konsoletyper, 28 Мая 2012

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

    +151

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    // $reg_date = "12.12.2007 15:41";
    
    $this->reg_date = strptime($reg_date, "%d.%m.%Y %H:%M");
    
    // и теперь обратно. Казалось бы, все просто, ан нет!
    $rd = $this->reg_date;
    $reg_date = mktime($rd['tm_hour'], $rd['tm_min'], 0, $rd['tm_mon']+1, $rd['tm_mday'], 1900+$rd['tm_year']); //как это???
    $reg_date = strftime("%d.%m.%Y %H:%M", $reg_date);
    // нормально, у strptime и strftime порядок аргументов разный
    
    // $r_date == "12.12.2007 15:41"

    Попытался написать на PHP простенькую штуку, глаза на лоб полезли от того как там делаются элементарнейшие вещи. Скажите, что все можно сделать проще и я просто плохо читал документацию!

    hakimovis, 10 Ноября 2011

    Комментарии (34)
  4. C++ / Говнокод #8210

    +168

    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
    void __fastcall TForm1::ShowBits(unsigned char data)
    {
       if(data&0x1)ImBit0->Canvas->Brush->Color=0x0000FF00;
       else ImBit0->Canvas->Brush->Color=clRed;
       ImBit0->Canvas->FillRect(TRect(0,0,ImBit0->Width,ImBit0->Height));
       if(data&0x2)ImBit1->Canvas->Brush->Color=0x0000FF00;
       else ImBit1->Canvas->Brush->Color=clRed;
       ImBit1->Canvas->FillRect(TRect(0,0,ImBit1->Width,ImBit1->Height));
       if(data&0x4)ImBit2->Canvas->Brush->Color=0x0000FF00;
       else ImBit2->Canvas->Brush->Color=clRed;
    
       ImBit2->Canvas->FillRect(TRect(0,0,ImBit2->Width,ImBit2->Height));
       if(data&0x8)ImBit3->Canvas->Brush->Color=0x0000FF00;
       else ImBit3->Canvas->Brush->Color=clRed;
    
       ImBit3->Canvas->FillRect(TRect(0,0,ImBit3->Width,ImBit3->Height));
       if(data&0x10)ImBit4->Canvas->Brush->Color=0x0000FF00;
       else ImBit4->Canvas->Brush->Color=clRed;
    
       ImBit4->Canvas->FillRect(TRect(0,0,ImBit4->Width,ImBit4->Height));
    
       if(data&0x20)ImBit5->Canvas->Brush->Color=0x0000FF00;
       else ImBit5->Canvas->Brush->Color=clRed;
       ImBit5->Canvas->FillRect(TRect(0,0,ImBit5->Width,ImBit5->Height));
    
       if(data&0x40)ImBit6->Canvas->Brush->Color=0x0000FF00;
       else ImBit6->Canvas->Brush->Color=clRed;
       ImBit6->Canvas->FillRect(TRect(0,0,ImBit6->Width,ImBit6->Height));
    
       if(data&0x80)ImBit7->Canvas->Brush->Color=0x0000FF00;
       else ImBit7->Canvas->Brush->Color=clRed;
       ImBit7->Canvas->FillRect(TRect(0,0,ImBit7->Width,ImBit7->Height));
    }

    Отображение состояния битов байта

    absolut, 17 Октября 2011

    Комментарии (34)
  5. C++ / Говнокод #7912

    +171

    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
    static void tm_to_systemtime(const tm* pTime, LPSYSTEMTIME pSysTime )
    {
    	time_t timeT = mktime((tm*)pTime);
    	FILETIME fTime = {0},lTime = {0};
    	LONGLONG ll = Int32x32To64(timeT, 10000000) + 116444736000000000;
    	fTime.dwLowDateTime = (DWORD) ll;
    	fTime.dwHighDateTime = ll >>32;
    	FileTimeToLocalFileTime(&fTime,&lTime);
    	FileTimeToSystemTime(&lTime,pSysTime);
    }
    
    static std::string GetDateTimeString(const tm& activ)
    {
    	SYSTEMTIME sysTime = {0};
    	tm_to_systemtime(&activ,&sysTime);
    	char str[256];
    	//format to <YYYYMMDDHHMMSS>
    	sprintf_s(str,sizeof(str),"%04d%02d%02d%02d%02d%02d",sysTime.wYear,sysTime.wMonth,sysTime.wDay,sysTime.wHour,sysTime.wMinute,sysTime.wSecond);
    	return std::string(str);
    }

    далеко не самый скучный способ отформатировать ::tm в виде YYYYMMDDHHmmss

    defecate-plusplus, 20 Сентября 2011

    Комментарии (34)
  6. C++ / Говнокод #7828

    +161

    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
    template<typename T,typename FIELD_T>
    struct type_has_field{
      typedef char yes_type;
      struct no_type{char padding[8];};
      template<class U>
      static yes_type check_sig1(
        U*,
        FIELD_T(U::*)=&U::field          // !!!Most importantly!!!
      );
      template<class U>
      static no_type check_sig1(...);
      static const bool value=sizeof(check_sig1<T>(0))==sizeof(yes_type);
    };

    http://www.gamedev.ru/code/forum/?id=152200

    CPPGovno, 10 Сентября 2011

    Комментарии (34)
  7. C++ / Говнокод #7114

    +163

    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
    #include <stdio.h>
    
    const int (&getArray())[10] {
      static int tmp[10] = {1,2,3,4,5,6,7,8,9,10};
      return tmp;
    }
    
    void foo(const int (&refArr)[10])
    {
      size_t size = sizeof(refArr); // returns 10*sizeof(int)
      printf ("Array size: %d\r\n", size);
    }
    
    
    int main() {
      foo(getArray());
    
      printf ("%d", getArray()[0]);
      for (size_t i=1; i<sizeof(getArray())/sizeof(getArray()[0]); ++i)
        printf (",%d", getArray()[i]);
        
      return 0;
    }

    http://codepad.org/rPl6b7IS

    c++ страшный язык :)
    Извращения на тему: http://heifner.blogspot.com/2005/06/c-reference-to-array.html

    Aleskey, 30 Июня 2011

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

    +159

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    protected function readConfig($configPath) {
        $ini = parse_ini_file($configPath);
        foreach ($ini as $key => $value) {
            $config[$key] = $value;
        }
        return $config;
    }

    xarper, 21 Июня 2011

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

    +147

    1. 1
    2. 2
    3. 3
    if ($a = 1) {
    	...бла-бла-бла
    }

    nislova, 20 Июня 2011

    Комментарии (34)
  10. VisualBasic / Говнокод #6861

    −99

    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
    65. 65
    66. 66
    67. 67
    68. 68
    69. 69
    70. 70
    71. 71
    72. 72
    73. 73
    Dim byteOut(64) As Byte
            Dim i As Integer
            Try
                byteOut(0) = Len(outCName) + 5 'number bytes in output message
                byteOut(1) = &H0 'should be 0 for NXT
                byteOut(2) = &H80 '&H0 = reply expected &H80 = no reply expected
                byteOut(3) = &H9 'Send Bluetooth
                byteOut(4) = &H0 'Box Number - 1
                byteOut(5) = Len(outCName) + 1 'message size with null terminator
                For i = 1 To Len(outCName) 'copy bytes into output array
                    byteOut(i + 5) = Asc(Mid(outCName, i, 1))
                Next
                byteOut(Len(outCName) + 6) = &H0 'add null terminator
                SerialPort1.Write(byteOut, 0, Len(outCName) + 7) 'send message
    
            Catch ex As Exception
                MsgBox(ex.ToString)
            End Try
            '<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
            Try
                byteOut(0) = Len(outWState) + 5 'number bytes in output message
                byteOut(1) = &H0 'should be 0 for NXT
                byteOut(2) = &H80 '&H0 = reply expected &H80 = no reply expected
                byteOut(3) = &H9 'Send Bluetooth
                byteOut(4) = &H1 'Box Number - 1
                byteOut(5) = Len(outWState) + 1 'message size with null terminator
                For i = 1 To Len(outWState) 'copy bytes into output array
                    byteOut(i + 5) = Asc(Mid(outWState, i, 1))
                Next
                byteOut(Len(outWState) + 6) = &H0 'add null terminator
                SerialPort1.Write(byteOut, 0, Len(outWState) + 7) 'send message
    
            Catch ex As Exception
                MsgBox(ex.ToString)
            End Try
    
    <..ещё один раз..>
    
       '<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
            Try
                byteOut(0) = Len(outWindC) + 5 'number bytes in output message
                byteOut(1) = &H0 'should be 0 for NXT
                byteOut(2) = &H80 '&H0 = reply expected &H80 = no reply expected
                byteOut(3) = &H9 'Send Bluetooth
                byteOut(4) = &H3 'Box Number - 1
                byteOut(5) = Len(outWindC) + 1 'message size with null terminator
                For i = 1 To Len(outWindC) 'copy bytes into output array
                    byteOut(i + 5) = Asc(Mid(outWindC, i, 1))
                Next
                byteOut(Len(outWindC) + 6) = &H0 'add null terminator
                SerialPort1.Write(byteOut, 0, Len(outWindC) + 7) 'send message
    
            Catch ex As Exception
                MsgBox(ex.ToString)
            End Try
    
            '<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
            Try
                byteOut(0) = Len(outHum) + 5 'number bytes in output message
                byteOut(1) = &H0 'should be 0 for NXT
                byteOut(2) = &H80 '&H0 = reply expected &H80 = no reply expected
                byteOut(3) = &H9 'Send Bluetooth
                byteOut(4) = &H4 'Box Number - 1
                byteOut(5) = Len(outHum) + 1 'message size with null terminator
                For i = 1 To Len(outHum) 'copy bytes into output array
                    byteOut(i + 5) = Asc(Mid(outHum, i, 1))
                Next
                byteOut(Len(outHum) + 6) = &H0 'add null terminator
                SerialPort1.Write(byteOut, 0, Len(outHum) + 7) 'send message
    
            Catch ex As Exception
                MsgBox(ex.ToString)
            End Try

    Говнокод почти трёхлетней давности. Понадобилось мне посмотреть, как я реализовывал "общение" по блютусу с Mindstorms NXT, и напоролся на вот это...

    RaZeR, 04 Июня 2011

    Комментарии (34)
  11. PHP / Говнокод #6318

    +154

    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
    65. 65
    66. 66
    67. 67
    68. 68
    69. 69
    70. 70
    71. 71
    72. 72
    73. 73
    74. 74
    75. 75
    76. 76
    77. 77
    78. 78
    79. 79
    80. 80
    81. 81
    82. 82
    83. 83
    84. 84
    85. 85
    86. 86
    87. 87
    88. 88
    89. 89
    90. 90
    91. 91
    92. 92
    function sajax_get_common_js() {
        global $sajax_debug_mode;
        global $sajax_request_type;
        global $sajax_remote_uri;
    
        $t = strtoupper($sajax_request_type);
        if ($t != "GET" && $t != "POST")
          return "// Invalid type: $t.. \n\n";
    
        ob_start();
        ?>
    
        // remote scripting library
        // (c) copyright 2005 modernmethod, inc
        var sajax_debug_mode = <?php echo $sajax_debug_mode ? "true" : "false"; ?>;
        var sajax_request_type = "<?php echo $t; ?>";
    
        function sajax_debug(text) {
          if (sajax_debug_mode)
            alert("RSD: " + text)
        }
        function sajax_init_object() {
          sajax_debug("sajax_init_object() called..")
    
          var A;
          try {
            A=new ActiveXObject("Msxml2.XMLHTTP");
          } catch (e) {
            try {
              A=new ActiveXObject("Microsoft.XMLHTTP");
            } catch (oc) {
              A=null;
            }
          }
          if(!A && typeof XMLHttpRequest != "undefined")
            A = new XMLHttpRequest();
          if (!A)
            sajax_debug("Could not create connection object.");
          return A;
        }
        function sajax_do_call(func_name, args) {
          var i, x, n;
          var uri;
          var post_data;
    
          uri = "<?php echo $sajax_remote_uri; ?>";
          if (sajax_request_type == "GET") {
            if (uri.indexOf("?") == -1)
              uri = uri + "?rs=" + escape(func_name);
            else
              uri = uri + "&rs=" + escape(func_name);
            for (i = 0; i < args.length-1; i++)
              uri = uri + "&rsargs[]=" + escape(args[i]);
            uri = uri + "&rsrnd=" + new Date().getTime();
            post_data = null;
          } else {
            post_data = "rs=" + escape(func_name);
            for (i = 0; i < args.length-1; i++)
              post_data = post_data + "&rsargs[]=" + escape(args[i]);
          }
    
          x = sajax_init_object();
          x.open(sajax_request_type, uri, true);
          if (sajax_request_type == "POST") {
            x.setRequestHeader("Method", "POST " + uri + " HTTP/1.1");
            x.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
          }
          x.onreadystatechange = function() {
            if (x.readyState != 4)
              return;
            sajax_debug("received " + x.responseText);
    
            var status;
            var data;
            status = x.responseText.charAt(0);
            data = x.responseText.substring(2);
            if (status == "-")
              alert("Error: " + data);
            else
              args[args.length-1](data);
          }
          x.send(post_data);
          sajax_debug(func_name + " uri = " + uri + "/post = " + post_data);
          sajax_debug(func_name + " waiting..");
          delete x;
        }
    
        <?php
        $html = ob_get_contents();
        ob_end_clean();
        return $html;
      }

    Из PHPList
    PHP и JS в перемешку.

    Это печально...

    rO_ot, 12 Апреля 2011

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