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

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

    −97

    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
    #include <stdio.h>
    #include <signal.h>
    #include <unistd.h>
    #include <sys/wait.h>
    void sighndlr_1(int signo) { //obrabot4ik dlya 1go processa
        printf("I'm child process #1. I've got SIGINT! :) So, I won't do anything...\n"); //prosto vyvod na ekran soobscheniya o polu4enii signala
    }
    
    void sighndlr_2(int signo) { //dlhya 2go
        printf("I'm child process #2. I've got SIGINT :)\n");
    }
    
    int main(int argc, char **argv) {
        pid_t pid1,pid2,pid3,pid4; //4 do4ernih processa
        static struct sigaction act1,act2,act3; //3 struktury dlya 3h processov
        act1.sa_handler = sighndlr_1; //ustanovka obrabot4ika dlya 1 struktory
        act2.sa_handler = sighndlr_2; //dlya 2i
        act3.sa_handler = SIG_IGN; //ignoriruem signal v 3 strukture
        switch(pid1 = fork()) { //sozdaem 1 do4erniy process
        case -1: //vihodim pri oshibke sozdaniya
    	printf("Error fork\n");
    	exit(1);
    	break;
        case 0:
    	printf("Child process #1 started (pid = %d)\n", getpid()); //soobshenie ob uspeshnom sozdanii i vyvod pid
    	sigaction(SIGINT,&act1,NULL); //ustanovka struktury obrabot4ika dlya SIGINT
    	for(;;) pause(); //beskone4nyi cikl
    	break;
        default:
        switch(pid2 = fork()) { //sozdaem 2 process
        case -1:
    	printf("Error fork\n");
    	exit(1);
    	break;
        case 0:
    	printf("Child process #2 started (pid = %d)\n", getpid());
    	sigaction(SIGINT,&act2,NULL); //dlya SIGINT
    	sigaction(SIGQUIT,&act3,NULL); //ignorim SIGQUIT
    	for(;;) pause();
    	break;
        default:
        switch(pid3 = fork()) { //3 process
        case -1:
    	printf("Error fork\n");
    	exit(1);
    	break;
        case 0:
    	printf("Child process #3 started (pid = %d)\n", getpid());
    	sigaction(SIGINT,&act3,NULL); //ignorim SIGINT
    	for(;;) pause();
    	break;
        default:
        switch(pid4 = fork()) { //4 process
        case -1:
    	printf("Error fork\n");
    	exit(1);
    	break;
        case 0:
    	printf("Child process #4 started (pid = %d)\n", getpid());
    	setsid(); //menyaem identifikator seansa dlya processa
    	printf("Process #4 changed sid\n");
    	for(;;) pause();
    	break;
        default:
        printf("Finishing parent process... (pid = %d)\n", getpid());
        exit(0); //zavershaetsya roditelsky process
        break;
        }        
        break;
        }
        break;
        }
        break;
        }
    }

    Лаба по курсу операционных систем. Нужно было создать 4 дочерних процесса, и для каждого процесса создать свои обработчики для сигнала SIGINT или SIGQUIT. Полученный говнокод полон повторяющихся конструкций, и слишком сильно запутан операторами switch-case.

    Boten, 30 Апреля 2011

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

    +120

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    public void PauseCheck(int x)
    {
        for (int i = 0; i < (x / 10); i++)
        {
          Thread.Sleep(10);
        }
    }

    psina-from-ua, 27 Апреля 2011

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

    +158

    1. 1
    {{capture assign=isSmtng}}1{{/capture}}

    Опять смарти. Кто-то обьяснит чем указанное решение лучше этого?
    {{assign var="isSmtng" value="1"}}

    govno, 19 Апреля 2011

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

    +163

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    int F(x)
    {
       if (.chto-to) v.push_back(.koe-chto.);
       int ind = somefunc(x);
       for each y in x.childs
          v[ind].res += F(y);
    }

    Не говнокод, но пример того, как из std::vector можно выстрелить себе в ногу

    Комментарий автора кода ( http://codeforces.ru/blog/entry/1719#comment-32824 ):
    такая штука получала крэш на компиляторе жюри, из-за того что сначала вычислялся адрес v[ind].res затем вызывалась снова F, которая пушбекает в вектор v, и может тем самым заставить вектор перевыделить память, тем самым адрес вычисленный ранее становился инвалидным.
    я этот баг долго не мог найти, потомучто студия генерила нормальный код, не вызывающий креша

    burdakovd, 18 Апреля 2011

    Комментарии (6)
  6. Си / Говнокод #6378

    +145

    1. 1
    2. 2
    3. 3
    //Determine padding for use in allocating new memory
    int padding = 0;
    while ( (width * 3 + padding) % 4 != 0) padding++;

    http://www.cplusplus.com/forum/windows/6353/
    Ещё одна история о том, как людям не дано запомнить двоичную природу данных.
    Если что, вот корректный шаблон на D:

    int packed(int alignment)(int location) {
    static assert(alignment == 2 | alignment == 4 | alignment == 8);
    const badEnd = alignment - 1; //0b11, 0b111, 0b1111
    return location & badEnd ? (location & ~badEnd) + alignment : location;
    }

    denis-sh, 16 Апреля 2011

    Комментарии (6)
  7. Куча / Говнокод #6375

    +141

    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
    <?php
    /* ...какой-то код... */
    
    /* Как бы та самая с**ная "многозадачность" */
    	$proc = popen("/var/www/test PARAMS", "r");
    
    /* ...какой-то код... */
    ?>
    -----------------------------------------------------------------------------
    #!/bin/sh
    # Содержание /var/www/test
    
    STRING="/usr/bin/php -q /var/www/my/test.php"
    
    	if [ -n "$1" ]
    		then
    			VAR1=$1
    		else
    			VAR1='0'
    	fi
    
    `$STRING $VAR1`&
    
    --------------------------------------------------------------
    <?php
    /* ...какой-то код... */
    	/* 
    	файл /var/www/my/test.php 
    	содержит кой-чего на выполнение...
    	*/
    /* ...какой-то код... */
    ?>

    Кажется это достойно этого сайта...

    istem, 15 Апреля 2011

    Комментарии (6)
  8. Java / Говнокод #6325

    +68

    1. 1
    2. 2
    log.debug("Request: " + requestStr);
    System.out.println("Request: " + requestStr);

    tupak, 12 Апреля 2011

    Комментарии (6)
  9. ActionScript / Говнокод #6291

    −111

    1. 1
    stop (); if (parent) parent.removeChild (this);

    сам пишу в таймлайне в последних кадрах :)

    makc3d, 08 Апреля 2011

    Комментарии (6)
  10. PHP / Говнокод #6262

    +165

    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
    switch ($status){
    	case STATUS_WAIT: 
    		$sql='UPDATE orders SET status=\''.STATUS_WAIT.'\' WHERE id='.$id;
    	break;
    	case STATUS_ACCEPT: 
    		$sql='UPDATE orders SET status=\''.STATUS_ACCEPT.'\' WHERE id='.$id;
    	break;
    	case STATUS_ORDER: 
    		$sql='UPDATE orders SET status=\''.STATUS_ORDER.'\' WHERE id='.$id;
    	break;
    	case STATUS_CANCEL: 
    		$sql='UPDATE orders SET status=\''.STATUS_CANCEL.'\' WHERE id='.$id;
    	break;
    	default: $this->addError('недопустимый статус');
    }

    Paradoks, 07 Апреля 2011

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

    +119

    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
    RegistryKey readKey = Registry.CurrentUser.OpenSubKey("SOFTWARE\\Webzen\\Mu\\Config\\");
            Microsoft.Win32.RegistryKey regKey = Microsoft.Win32.Registry.CurrentUser;
            RegistryKey saveKey = Registry.CurrentUser.CreateSubKey("SOFTWARE\\Webzen\\Mu\\Config\\");
    
            private void b_exit_Click(object sender, EventArgs e)
            {
                if (checkBox1.Checked == true)
                    saveKey.SetValue("WindowMode", (int)0x00000001, Microsoft.Win32.RegistryValueKind.DWord);
                else
                    saveKey.SetValue("WindowMode", (int)0x00000000, Microsoft.Win32.RegistryValueKind.DWord);
                if (checkBox2.Checked == true)
                    saveKey.SetValue("MusicOnOff", (int)0x00000001, Microsoft.Win32.RegistryValueKind.DWord);
                else
                    saveKey.SetValue("MusicOnOff", (int)0x00000000, Microsoft.Win32.RegistryValueKind.DWord);
                if (checkBox3.Checked == true)
                    saveKey.SetValue("SoundOnOff", (int)0x00000001, Microsoft.Win32.RegistryValueKind.DWord);
                else
                    saveKey.SetValue("SoundOnOff", (int)0x00000000, Microsoft.Win32.RegistryValueKind.DWord);
                if (comboBox1.SelectedItem == "800x600")
                    saveKey.SetValue("Resolution", (int)0x00000001, Microsoft.Win32.RegistryValueKind.DWord);
                else if (comboBox1.SelectedItem == "1024x768")
                    saveKey.SetValue("Resolution", (int)0x00000002, Microsoft.Win32.RegistryValueKind.DWord);
                else if (comboBox1.SelectedItem == "1280x1024")
                    saveKey.SetValue("Resolution", (int)0x00000003, Microsoft.Win32.RegistryValueKind.DWord);
                saveKey.Close();
                this.Close();
            }
    
            private void Options_Load(object sender, EventArgs e)
            {
                XmlDocument cfg = new XmlDocument();
                cfg.Load("cfg.xml");
                String lang = cfg.GetElementsByTagName("language")[0].InnerText;
                if (lang == "en")
                {
                    checkBox1.Text = "In window";
                    checkBox3.Text = "Music";
                    checkBox2.Text = "Sounds";
                    label1.Text = "Resolution game";
                    b_exit.Text = "Save";
                    b_cancel.Text = "Cancel";
                }
                int loadString = (int)readKey.GetValue("WindowMode");
                if (loadString == 1)
                    checkBox1.Checked = true;
                int loadString2 = (int)readKey.GetValue("MusicOnOff");
                if (loadString2 == 1)
                    checkBox2.Checked = true;
                int loadString3 = (int)readKey.GetValue("SoundOnOff");
                if (loadString3 == 1)
                    checkBox3.Checked = true;
                if (readKey.GetValue("Resolution") == null)
                {
                    regKey.CreateSubKey("SOFTWARE\\Webzen\\Mu\\Config");
                    regKey.SetValue("Resolution", (int)0x00000001, Microsoft.Win32.RegistryValueKind.DWord);
                }
                else
                {
                    int loadString4 = (int)readKey.GetValue("Resolution");
                    if (loadString4 == (int)0x00000001)
                        comboBox1.Text = "800x600";
                    else if (loadString4 == (int)0x00000002)
                        comboBox1.Text = "1024x768";
                    else if (loadString4 == (int)0x00000003)
                        comboBox1.Text = "1280x1024";
                    else
                        comboBox1.Text = "Выберите разрешение";
                }
                readKey.Close();
            }

    Код годичной давности, по сравнению с моими классами сейчас, это небо и земля.

    daffsik, 06 Апреля 2011

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