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

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

    +114

    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
    private int GetInsertion(byte[] firstArr, byte[] secondArr)
            {
                int result = -1;
                int counter = 0;
                if (firstArr.Count() >= secondArr.Count())
                {
                    for (int i = 0; i < firstArr.Count(); i++)
                    {
                        if (firstArr[i] == secondArr[counter])
                        {
                            counter++;
                            if (counter == secondArr.Count())
                            {
                                result = i - counter + 1;
                                break;
                            }
                        }
                        else
                        {
                            counter = 0;
                        }
                    }
                }
                return result;
            }

    находит индекс вхождения одного массива в другой

    razzil, 23 Марта 2012

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

    −124

    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
    if (param.visible == 'cache')
    {
    	while (parseCacheResult.indexOf('$data') != -1) parseCacheResult = parseCacheResult.replace('$data', '_dataCache');
    	while (parseCacheResult.indexOf('$name') != -1) parseCacheResult = parseCacheResult.replace('$name', param.nameParam);
    	while (parseCacheResult.indexOf('$type') != -1) parseCacheResult = parseCacheResult.replace('$type', param.type);
    } else if (param.visible == 'static')
    {
    	while (parseStaticResult.indexOf('$data') != -1) parseStaticResult = parseStaticResult.replace('$data', '_dataStatic');
    	while (parseStaticResult.indexOf('$name') != -1) parseStaticResult = parseStaticResult.replace('$name', param.nameParam);
    	while (parseStaticResult.indexOf('$type') != -1) parseStaticResult = parseStaticResult.replace('$type', param.type);
    }
    else
    {
    	while (parseDynamicResult.indexOf('$data') != -1) parseDynamicResult = parseDynamicResult.replace('$data', '_dataDynamic');
    	while (parseDynamicResult.indexOf('$name') != -1) parseDynamicResult = parseDynamicResult.replace('$name', param.nameParam);
    	while (parseDynamicResult.indexOf('$type') != -1) parseDynamicResult = parseDynamicResult.replace('$type', param.type);
    }
    
    while (setResult.indexOf('$name') != -1) setResult = setResult.replace('$name', param.nameParam);
    while (setResult.indexOf('$type') != -1) setResult = setResult.replace('$type', param.type);
    while (setResult.indexOf('$className') != -1) setResult = setResult.replace('$className', className);
    
    while (getResult.indexOf('$name') != -1) getResult = getResult.replace('$name', param.nameParam);
    while (getResult.indexOf('$type') != -1) getResult = getResult.replace('$type', param.type);
    
    while (varResult.indexOf('$name') != -1) varResult = varResult.replace('$name', param.nameParam);
    while (varResult.indexOf('$type') != -1) varResult = varResult.replace('$type', param.type);
    while (varResult.indexOf('$comment') != -1) varResult = varResult.replace('$comment', param.comment);
    while (varResult.indexOf('$default') != -1) varResult = varResult.replace('$default', param.defaultValue);
    
    }
    
    var result : String = baseTemplate;
    while (result.indexOf('$className') != -1) result = result.replace('$className', className);
    while (result.indexOf('$comment') != -1) result = result.replace('$comment', comment);
    while (result.indexOf('$baseClass') != -1) result = result.replace('$baseClass', baseClass);
    while (result.indexOf('$singleton_1') != -1) result = result.replace('$singleton_1', singl_1);
    while (result.indexOf('$singleton_2') != -1) result = result.replace('$singleton_2', singl_2);
    
    result = result.replace('$var', varResult);
    result = result.replace('$set', setResult);
    result = result.replace('$get', getResult);
    result = result.replace('$parseDynamic', parseDynamicResult);
    result = result.replace('$parseStatic', parseStaticResult);
    result = result.replace('$parseCache', parseCacheResult);
    result = result.replace('$values', valuesList);
    result = result.replace('$dynamic', data.dynamicClass == 1 ? 'dynamic' : '');

    Как то родилось в процессе допилок кодогена )

    kyzi007, 23 Марта 2012

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

    +79

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    if ("5".equals(pid)) {
    
    } else {
    	if ("1".equals(pid) || "4".equals(pid)) {
    		type = "fl";
    	} else if ("6".equals(pid)){
    		type = "nw";
    	}else {
    		type = "ul";
    	}
    }

    Из базы формируется дерево элементов для меню. Там же есть какая-то сортировка. Меняем в базе сортировку, а все работает по-старому. Лезем копать и находим.

    akkuch, 23 Марта 2012

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

    +154

    1. 1
    2. 2
    3. 3
    4. 4
    static public function vkontakte_enabled()
    	{
    		return ( ipsRegistry::$settings['vk_enabled'] AND ipsRegistry::$settings['vk_api_id'] AND ipsRegistry::$settings['vk_secret'] ) ? TRUE : FALSE;
    	}

    * IP.Board v3.1.4
    И почему я пишу форумы сам?..

    skryisli, 23 Марта 2012

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

    +133

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    // for cdio:
    #include <cdio.h>
    #include <cdio_unconfig.h> # remove *all* symbols libcdio defines
    
    // Add back in the ones you want your program
    #include <config.h>

    But now what about the problem that there are common preprocessor symbols in config_cdio.h that an application may want to define in a different manner, like PACKAGE_NAME?
    For this, there is yet another header, <cdio/cdio_unconfig.h>.

    rat4, 20 Марта 2012

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

    +72

    1. 1
    2. 2
    3. 3
    4. 4
    LOG.error(msg);
    Writer writer = new StringWriter();
    e.printStackTrace(new PrintWriter(writer, true));
    LOG.error(writer.toString());

    Паранойя... А вдруг LOG неправильно стэк трейс напечатает при передаче эксепшена вторым параметром.

    roman-kashitsyn, 19 Марта 2012

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

    +145

    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
    $sortBy = "";
            if ( isset($_REQUEST['sortBy']) && ! empty($_REQUEST['sortBy'])) {
            // Get sort direction and field sort.
                $sortByParts  = explode("-", $_REQUEST['sortBy']);
                if ( is_array($sortByParts) && ! empty($sortByParts[0]) && ! empty($sortByParts[1])) {
                    $sortBy     = $sortByParts[0];
                    $direction  = $sortByParts[1];
                }   
            } 
    switch ($sortBy)
                case "discount":
                    $sortFieldBy = $sortBy;
                    break;
                case "created":
                    $sortFieldBy = $sortBy;
                    break;
                case "vendor":
                    $sortFieldBy = $sortBy;
                    break;
                case "actual_euprice":
                    $sortFieldBy = $sortBy;
                    break;
                case "actual_euprice":
                    $sortFieldBy = $sortBy;
                    break;                
                case "top_sell_product":                
                default:
                    $search->addAdditionalJoins(
                        "top_sell_product",
                        array("top_sell_product.prodlevid" => "p.prodlevid"),
                        SEARCH_ADDITIONAL_JOIN_TYPE_INNER,
                        array()
                    );

    Очередная самописная CMS.

    zii, 18 Марта 2012

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

    +157

    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
    $k=1;
    $empty=true;?>
    <?foreach($arResult["ITEMS"] as $arItem):?>
    <?$time=time();
    $delay=345600;//секунд в 4 днях
    $date_elements  = explode(".",$arItem["DATE_ACTIVE_TO"]);?>
    	<?if(((mktime(0,0,0,$date_elements[1],$date_elements[0],$date_elements[2])+$delay) < $time) or ($arItem["PROPERTIES"]["procedure"]["VALUE_XML_ID"]=="% тут айдишник %")):?>
    		<?if($k==1):?>
    			<table><tr>
    			<th>%тут оглавления%</th>
    			<th>%тут оглавления%</th>
    			<th>%тут оглавления%</th>
    			<th>%тут оглавления%</th>
    			<th>%тут оглавления%</th></tr>
    			<?$k++;
                $empty=false;?>
    		<?endif?>
    	<?$name='';?>
    	<tr>
    	% тут перебор элементов %
    	</tr>
    	<?endif?>
    <?endforeach;?>
    </table>

    кастомизированный news.list битрикса.
    1) у каждого элемента есть ключ (номер элемента), но мы-то об этом не знаем.
    2) зачем выносить table>tr>th за цикл? И так пойдет.
    3) time() в каждой итерации? А вдруг сервер слабенький, выполнение цикла занимает больше 4-ёх дней.
    4) strtotime()? не, не слышал.
    И еще куча лулзов в проекте, выложу по ходу.
    Самое интересное, что проект крупной российской фирмы, видать местные индусы делали.

    Kreeg, 15 Марта 2012

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

    +149

    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
    #include <iostream>
    #define caseop(op, code) case op: code; break;
    #define clamp(a, lo, hi) (a < lo) ? (a = lo) : (a > hi) ? (a = hi) : a;
    void main(int argc, char* args[]) {
    	FILE *srcfile = fopen(argc > 1 ? args[1] : "", "r");
    	(!srcfile) ? exit(0) : fseek(srcfile, 0, SEEK_END);
    	unsigned char bytes[1024], *byte = bytes;
    	int x = ftell(srcfile), bs = sizeof(bytes);
    	rewind(srcfile);
    	char *source = new char[x + 1], *token = source, *ret = token;
    	fread(source, sizeof(char), x, srcfile);
    	memset(&bytes, source[x] = (char)fclose(srcfile), bs--);
    	do { 
    		switch(*token) {
    			caseop('+', ++(*byte));
    			caseop('-', --(*byte));
    			caseop('.', std::cout << *byte);
    			caseop(':', std::cout << (int)*byte);
    			caseop(',', std::cin >> *byte);
    			caseop('>', clamp(++byte, bytes, &bytes[bs]));
    			caseop('<', clamp(--byte, bytes, &bytes[bs]));
    			caseop('[', if (*byte == (x = 1) - 1) while ((*token++) && (x += *token == '[' ? 1 : *token == ']' ? -1 : 0)); else ret = token);
    			caseop(']', if (*byte) token = ret);
    		}
    	} while(*token++);
    	delete source;
    }

    Интерпретатор брэинфака

    hexman, 14 Марта 2012

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

    +149

    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
    <?PHP 
    ##### ПРОВЕРКА ДАННЫХ #####
    $admin=0;
    //тут может быть еще что-нибудь предварительное
    $admin=$_REQUEST['admin'];
    if($admin)
    {
       //..функционал админа
    }
    else
    {
       //что-то еще
    }
    
    
    ##### АВТОРИЗАЦИЯ #####
     
    $login=$_POST['login'];
    $password=$_POST['password'];
    //предполагаем соединение с БД установленным
    $result=mysql_query("SELECT user_id FROM users WHERE login=$login AND password=$password");
    if(mysql_num_rows($result))
    {
       //все хорошо - пользователь найден, выполняем процедуру его логина
    }
    else
    {
       //какая-то ошибка для пользователя
    }
    ?>

    Примеры "супер" безопасности с того же PHP.su

    Julike, 14 Марта 2012

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