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

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

    +79

    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
    //первый сайт - интернет магазин
    //отрывок из функции редактирования, функции добавления, функции удаления товаров, в таблицу "export_catalogue" каждая строка - это "поле товара" и "новое значение поля"
    //что-то на подобие лога изменений. Конечно копипаст всех полей товаров.
    $this->insert($table = "`export_catalogue`", $fields = "`action`, `table`, `element`, `fields`, `value`", $values="'update', 'catalogue_files', '$catalogue_id', 'name_rus', '$name_rus'");
    $this->insert($table = "`export_catalogue`", $fields = "`action`, `table`, `element`, `fields`, `value`", $values="'update', 'catalogue_files', '$catalogue_id', 'name_ger', '$name_ger'");
    
    //файл xml_create_catalogue.php, который запускается по крону каждые 5 минут, создаёт xml файлы. Каждый файл содержит в себе изменение одного поля товара
    $result_export_array = $global->select_all($fields = "*", $table = "`export_catalogue`", $where = "`create` = '0' ORDER BY `id` ASC");
    for ($i=0; $i<count($result_export_array); $i++){
      $doc = new DOMDocument('1.0', 'utf-8');
      $doc->formatOutput = true;
      ...
      // название fields - не мой коммент
      $fields = $doc->createElement('fields');
      $fields = $root->appendChild($fields);
      // данные element - не мой коммент
      $data_fields = $doc->createTextNode($result_export_array[$i]['fields']);
      $data_fields = $fields->appendChild($data_fields);
      ...
      //если картинка или файл товара, то файл кодируется в бэйс64 и записывается в ячейку xml
      $value_default = $result_export_array[$i]['value'].'photo_data'.base64_encode($contents);
      $value_convert = mb_convert_encoding($value_default, "UTF-8", "Windows-1251");
      $data_value = $doc->createTextNode($value_convert);
      ...
      //почетка, что файл экспорта создан
      $global->update($table = "`export_catalogue`", $fields = "`create` = '1'", $where = "`id` = '".$result_export_array[$i]['id']."'");
    }
    
    //файл xml_upload_catalogue.php, крон - 5 минут, копирует созданные xml файлы на фтп второго сайта
    $result_export_array = $global->select_all($fields = "*", $table = "`export_catalogue`", $where = "`upload` = '0' ORDER BY `id` ASC");
     for ($i=0; $i<count($result_export_array); $i++){
      ... //тут идёт копирование файлов по фтп
      //пометка, что файл загружен на второй сайт
      $global->update($table = "`export_catalogue`", $fields = "`upload` = '1'", $where = "`id` = '$file_id'"); 
    }
    
    //второй сайт - интернет магазин
    //xml_import_catalogue.php по крону, проверяется наличие xml файлов и поля импортируются в каталог
    //цикл по списку файлов
    foreach ($file_list as $key => $file_name) {
      //в таблицу import_catalogue записывается, какие файлы были импортированны 
      $next_file_array = $global->select_only($fields = "*", $table = "`import_catalogue`", $where = "`id` != '0' ORDER BY `id` DESC LIMIT 1");
      //причем имя файла(числовое) должно быть обязательно на 1 больше последнего записанного в таблице 
      $next_file = intval($next_file_array['id'] + 1).'.xml';
      ...
      //апдейт поля товара
      $value_convert = mb_convert_encoding($value_xml, "Windows-1251", "UTF-8");
      $global->update($table = "`$table_xml`", $fields = "`$fields_xml` = '".$global->sql_prepare($value_convert)."'", $where = "`id` = '$element_xml'");
      ...
      //помечаем, что файл импортирован и удаляем
      $global->insert($table = "`import_catalogue`", $fields = "`joined`", $values="'$joined'");
    }

    Самый идеальный экспорт товаров из одного сайта в другой. Приведены отрывки кода из двух сайтов на каждом этапе экспорта

    Cool-Di, 05 Мая 2012

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

    +144

    1. 1
    2. 2
    3. 3
    4. 4
    echo "
    Посоны, подскажите забугорный аналог говнокод.ру!
    Шутить перечилсяя хостинги кода вроде гитхаба, гуглкода etc не стоит.
    ";

    Ну простите, посоны, что написал реквест вместо кода.

    mark, 03 Мая 2012

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

    −179

    1. 1
    2. 2
    3. 3
    Если Не КВыгрузке Тогда
        КВыгрузке = НЕ КВыгрузке;
    КонецЕсли;

    inspired, 03 Мая 2012

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

    +159

    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
    function line( x0, y0, x, y, elmId ) {
    
    	var sx = x-x0, sy = y-y0, dir = (sx>sy), adir = (Math.abs(sx)>Math.abs(sy));
    
    	if ( (x0>x&&y0<=y&&adir)||(x0<=x&&y0>y&&!adir)||(x0>x&&y0>y) ) return line(x, y, x0, y0, elmId); // black magic!
    
    	var d1 = dir? x0:y0, d2 = dir? y0:x0, b1 = dir? sx:sy, b2 = dir? sy:sx, k = b2/b1;
    
    		for( var i=0; i<=b1;i++ ){
    
    			if ( dir ) plot( d1, Math.floor(d2), elmId );
    			else plot( Math.floor(d2), d1, elmId );
    
    			d1++;d2+=k;
    		}
    	return true;
    }
    /* ... */
    function plot(x, y, elmId) {
    
    	var div = document.createElement('div');
    	div.className = 'dot' + (!!elmId? ' dot-'+elmId:'' ) ;
    	div.style.left = x + 'px';
    	div.style.top = y + 'px';
    
    	document.getElementsByTagName('BODY')[0].appendChild(div);
    }

    Опачки...

    istem, 20 Апреля 2012

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

    +947

    1. 1
    2. 2
    3. 3
    xg = (int)Math.Round(40 + ye[0] * 360 / 12);
                    yg = (int)Math.Round(340 - ye[1] * (decimal)2.5);
                    cur = new PointF((float)xg, (float)yg);

    Отрисовка графика.

    cgbs, 20 Апреля 2012

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

    +1004

    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
    long base64::rlong (char * source)
    {
        long res = 0;
        for (int i = 0; i < 4; i++) ((char *) &res)[3 - i] = source[i];
        return res;
    }
    
    void base64::encode (char * source, char * dest)
    {
        char base[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
        int n = 0;
        for (int nd = 0; nd < ceil(4*((double)strlen(source))/3); nd++)
            dest[n++] = base[rlong(&source[((nd >> 2) << 2)*3 >> 2]) >> (26 - 6*(nd - ((nd >> 2) << 2))) & 0x3F]; 
        for (int i = 0; i < ((int) ceil(((double)n)/4) << 2) - n; i++) dest[n++] = '=';
        dest[n] = 0;
    }

    Ответ преподу по c++. Переводстроки в base64.

    antonymus, 14 Апреля 2012

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

    +121

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    private static string GetShortDisciplineName(string longDsciplineName){
                string[] words = longDsciplineName.Split(' ');
                switch (words.Count()){
                    case 1:{
                        return longDsciplineName;
                        break;
                        }

    pm2t29jf47, 13 Апреля 2012

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

    +148

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    php_value register_globals 1
    php_flag register_globals on
    php_value magic_quotes 1
    php_flag magic_quotes on
    php_value magic_quotes_gpc 1
    php_flag magic_quotes_gpc on

    n/c

    miraage, 13 Апреля 2012

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

    +68

    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
    if (seriesOrder == SeriesRenderingOrder.REVERSE) {
                    //render series in reverse order
                    for (int pass = 0; pass < passCount; pass++) {
                        int seriesCount = dataset.getSeriesCount();
                        for (int series = seriesCount - 1; series >= 0; series--) {
                            int firstItem = 0;
                            int lastItem = dataset.getItemCount(series) - 1;
                            if (lastItem == -1) {
                                continue;
                            }
                            if (state.getProcessVisibleItemsOnly()) {
                                int[] itemBounds = RendererUtilities.findLiveItems(
                                        dataset, series, xAxis.getLowerBound(),
                                        xAxis.getUpperBound());
                                firstItem = Math.max(itemBounds[0] - 1, 0);
                                lastItem = Math.min(itemBounds[1] + 1, lastItem);
                            }
                            state.startSeriesPass(dataset, series, firstItem,
                                    lastItem, pass, passCount);
                            for (int item = firstItem; item <= lastItem; item++) {
                                renderer.drawItem(g2, state, dataArea, info,
                                        this, xAxis, yAxis, dataset, series, item,
                                        crosshairState, pass);
                            }
                            state.endSeriesPass(dataset, series, firstItem,
                                    lastItem, pass, passCount);
                        }
                    }
                }
                else {
                    //render series in forward order
                    for (int pass = 0; pass < passCount; pass++) {
                        int seriesCount = dataset.getSeriesCount();
                        for (int series = 0; series < seriesCount; series++) {
                            int firstItem = 0;
                            int lastItem = dataset.getItemCount(series) - 1;
                            if (state.getProcessVisibleItemsOnly()) {
                                int[] itemBounds = RendererUtilities.findLiveItems(
                                        dataset, series, xAxis.getLowerBound(),
                                        xAxis.getUpperBound());
                                firstItem = Math.max(itemBounds[0] - 1, 0);
                                lastItem = Math.min(itemBounds[1] + 1, lastItem);
                            }
                            state.startSeriesPass(dataset, series, firstItem,
                                    lastItem, pass, passCount);
                            for (int item = firstItem; item <= lastItem; item++) {
                                renderer.drawItem(g2, state, dataArea, info,
                                        this, xAxis, yAxis, dataset, series, item,
                                        crosshairState, pass);
                            }
                            state.endSeriesPass(dataset, series, firstItem,
                                    lastItem, pass, passCount);
                        }
                    }
                }

    нашел в jfreechart
    Обе ветки if-else идентичны, только в одной цикл идет от нуля, в другой в обратную сторону.
    Говнокод или нет?

    krige, 12 Апреля 2012

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

    +143

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    9. 9
    public void saveDomain(DomainMetadata domainMetadata){
            domainStore.save(domainMetadata);
        }
    
    оттуда же
    
    public void saveMail(Mail mail){
            mailCollection.save(mail);
        }

    exciter, 11 Апреля 2012

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