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

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

    +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
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    AClass::AClass()
    {
            char c;
    	pipe( m_ThreadPipeA );
    	pipe( m_ThreadPipeB );
            write( m_ThreadPipeA[0], &c, sizeof(c) );
    }
    
    void AClass::JobCreatorThread()
    {
    	char c;
    	do {
    		/* prepare new job and pass it to the thread pool */
    		read( m_ThreadPipeA[1], &c, sizeof(c) );
    		m_CurrJob = IncomingJob;
    		write( m_ThreadPipeB[0], &c, sizeof(c) );
    	} while (!m_Shutdown);
    }
    
    void AClass::ThreadPoolMethod()
    {
    	char c;
    	do {
    		Job j;
    		read( m_ThreadPipeB[1], &c, sizeof(c) );
    		j = m_CurrJob;
    		write( m_ThreadPipeA[0], &c, sizeof(c) );
    		/* handle the job j */
    	} while (!m_Shutdown);
    }

    из архивов.

    дала как-то архетиктура задание модуль распаралелить потоками - но при этом как можно меньше использовать локи, что бы проблем вертикального скалирования не возникало. и три месяца спустся они родили -о чудо!- многопоточный модуль ВООБЩЕ без локов. тока с производительностью проблемы - но это не могут быть локи потому что модуль ими ВООБЩЕ не пользуется - почему мне и дали задание посмотреть что там можно еще усовершенствовать.

    мне несколько часов понадобилось что бы мой примитивный мозг смог осознать величие полета мысли моих коллег. а потом (когда я наконец из моря кода выцедил приведенную сверху эссенцию) у меня волосы дыбом встали....

    лопата: чудаки пайпами симулировали мутексы/ивенты. и ведь не придерешься: архитекторы сказали локи избегать, а про пайпы ничего сказано не было.

    ЗЫ ну и то что в джоб объекте еще и строковых массивов на 80К, и они постоянно копировались туды сюды, это было cherry topping ко всему этому счастью.

    Dummy00001, 23 Декабря 2010

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

    +152

    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
    $src = $_GET["src"];
    $w = $_GET["w"];
    $h = $_GET["h"];
    $q = $_GET["q"];
    $info = pathinfo($src);
    $ext = $info["extension"];
    if($ext == "jpg" or $ext == "jpeg"){
        $img = imagecreatefromjpeg($src);
    }
    else if($ext == "gif"){
        $img = imagecreatefromgif($src);
    }
    else if($ext == "png"){
        $img = imagecreatefrompng($src);
    }
    $x = $w / imagesx($img);
    $y = $h / imagesy($img);
    $k = ($x > $y) ? $y : $x;
    $nw = intval(imagesx($img) * $k);
    $nh = intval(imagesy($img) * $k);
    $img1 = imagecreatetruecolor($nw, $nh);
    // $img1 = imagecreatefromjpeg("bj.jpg");
    imagecopyresampled($img1, $img, 0, 0, 0, 0, $nw, $nh, imagesx($img), imagesy($img));
    header("Content-type: image/jpeg");
    imagejpeg($img1, null, $q);
    imagedestroy($img);
    imagedestroy($img1);

    Кусман отборного калища руки Великого уё... Гудвина =)

    Ice, 23 Декабря 2010

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

    +110

    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
    protected void Page_Load(object sender, EventArgs e)
            {
                Common.CheckAuthorization(Response, Session);     
    
                string uniqueID = Request["__EVENTTARGET"];
                if (uniqueID != null)
                {
                    UpdatePanel.ContentTemplateContainer.Controls.Clear();
                    string controlPath;
                    Control control = GetViewControlOnEvent(uniqueID, out controlPath);
    
                    if (control != null)
                    {
                        UpdatePanel.ContentTemplateContainer.Controls.Add(control);
                        Helpers.SetKeyInSession(Common.CATALOG_KEYS.CONTROL_PATH, controlPath, Session);
                    }
                    else
                    {
                        UpdatePanel.ContentTemplateContainer.Controls.Add(
                            GetViewControlOnSession());
                    }
                }
                else
                {
                    if (ControlParam == null)
                        Helpers.SetKeyInSession(Common.CATALOG_KEYS.CONTROL_PATH, Common.PATHS.USER_CONTROLS.MAIN_CONTROL, Session);   
    
                    UpdatePanel.ContentTemplateContainer.Controls.Add(
                        GetViewControlOnSession());
                }
                TreeViewState.SaveTreeView(treeCatalogs, this.GetType().ToString());
    
                this.PreRender += OnPreRender;
            }

    Nigma143, 22 Декабря 2010

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

    +162

    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
    //exit;
    
    define("CACHE_USE", false);
    
    require("/usr/home/<path_to_config>/config.php");
    require_once(PATH_CLASSES . "/DB.Class.php");
    
    DB::connect(DBHOST, DBUSERNAME, DBPASSWORD, DBNAME);
    
    checkLongProcesses();
    sleep(30);
    checkLongProcesses();
    
    function checkLongProcesses() {
    	$pslist = DB::query("SHOW PROCESSLIST");
    
    	if (sizeof($pslist) > 25) {
    
    		mail("[email protected]", "SQL Processes Monitor Report", print_r($pslist, true));
    
    		echo "Killing long queries...\n\n";
    		foreach ($pslist as $el) {
    			if ($el['Time']>10) {
    				echo "Killing process: " . $el['Id'] . "\n";
    				echo $el['Info'] . "\n\n";
    				DB::query("KILL " . $el['Id']);
    			}
    		}
    	}
    }

    Достался проект с кодом различной говнистости. Вот такое, например, запускается кроном каждые 10 минут.

    wmmorgun, 21 Декабря 2010

    Комментарии (1)
  6. SQL / Говнокод #4945

    −178

    1. 1
    select count(*) from contacts left join orders on contacts.id = orders.contactId where not ISNULL(orders.contactId)

    Комментарий автора "в inner можно что-то потерять, а left всегда работает"

    Анонимус, 16 Декабря 2010

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

    +118

    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
    public IProjectController ProjectController
            {
                [System.Diagnostics.DebuggerNonUserCode]
                get
                {
                    return _widgets[0].Widget.ProjectController;
                }
                [System.Diagnostics.DebuggerNonUserCode]
                set
                {
                    foreach (var c in _widgets)
                        c.Widget.ProjectController = value;
                }
            }

    Коротко но зато как емко. Моя любимая часть это конечно аттрибуты - что бы дебаггер не заходил туда в момент отладки - а вдруг кто увидит

    eval_2009, 09 Декабря 2010

    Комментарии (1)
  8. C++ / Говнокод #4864

    +161

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    CRect rcHeaderImage;
    rcHeaderImage.left = listColumn.m_strText.IsEmpty() ? ( ( rcHeaderText.left + rcHeaderText.right ) / 2 ) - ( sizeIcon.cx / 2 ) 
            - (( !m_bShowThemed
    #ifndef DISABLE_XP_THEMES
            || m_thmHeader.IsThemeNull()
    #endif
            ) ? 0 : 1 ) : rcHeaderText.left;

    Вот так вот задачка "подвинуть иконку вправо на пару пикселов" превращается в нетривиальную :)

    ryadovoy, 08 Декабря 2010

    Комментарии (1)
  9. Python / Говнокод #4720

    −181

    1. 1
    function hilight { python2 -c 'import sys, re; map(lambda s: sys.stdout.write(re.sub(r"'$1'", lambda m: "\033[1;31m%s\033[0m" % m.group(0), s)), sys.stdin)' }

    Это в Python или в bash?

    ___, 23 Ноября 2010

    Комментарии (1)
  10. C# / Говнокод #4709

    +121

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    txtContacts.Text = "";
    bool first = true;
    
    foreach (string contact in contacts)
    {
    	if (first != true)
    		txtContacts.Text += ";";
    	first = false;
    
    	txtContacts.Text += contact;
    }

    Думаю, кто-то хотя бы раз сталкивался с самопальным String.Join'ом

    zheka, 22 Ноября 2010

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

    +145

    1. 1
    2. 2
    3. 3
    [Mon Nov 22 15:52:46 2010] [emerg] [client 217.69.133.30] mod_bartertown_translate: Fatal: STL: cannot find file in include directories `/`
    жгут
    написали бы еще "не могу открыть что-то что должно лежать в '/'"

    программа не смогла открыть файл и написала в логи..

    m0r1k, 22 Ноября 2010

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