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

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

    +73

    1. 1
    2. 2
    String format = String.format("%%0%dd", 2); // format = "%02d";
    String seconds = String.format(format, milTime % 60);

    nikanmf, 06 Сентября 2013

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

    +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
    log_info('= Выгрузка метаданных =');
    $cnt = $x->metaCurrencies('/gooddata/'.$folder.'/'.$subfolder.'/x/currencies');
    $cnt = $x->metaRegions('/gooddata/'.$folder.'/'.$subfolder.'/x/regions');
    $cnt = $x->metaCountries('/gooddata/'.$folder.'/'.$subfolder.'/x/countries');
    $cnt = $x->metaSources('/gooddata/'.$folder.'/'.$subfolder.'/x/sources');
    $cnt = $x->metaGroups('/gooddata/'.$folder.'/'.$subfolder.'/x/groups');
    $cnt = $x->metaProviders('/gooddata/'.$folder.'/'.$subfolder.'/x/providers');
    $cnt = $x->metaPS('/gooddata/'.$folder.'/'.$subfolder.'/x/paymentsystems');
    $cnt = $x->metaProjects('/gooddata/'.$folder.'/'.$subfolder.'/x/projects');
    $cnt = $x->metaPayments('/gooddata/'.$folder.'/'.$subfolder.'/x/payments');
    $cnt = $x->metaGeotypes('/gooddata/'.$folder.'/'.$subfolder.'/x/geotypes');
    $cnt = $x->metaPartners('/gooddata/'.$folder.'/'.$subfolder.'/x/partners');
    $cnt = $x->metaEmployees('/gooddata/'.$folder.'/'.$subfolder.'/x/employees');
    $cnt = $x->metaForecast('/gooddata/'.$folder.'/'.$subfolder.'/x/forecast');
    $cnt = $x->metaClusters('/gooddata/'.$folder.'/'.$subfolder.'/x/clusters');
    $cnt = $x->metaPSContr('/gooddata/'.$folder.'/'.$subfolder.'/x/pspartners');
    $cnt = $x->metaClustersMatrix('/gooddata/'.$folder.'/'.$subfolder.'/x/clustersmatrix');
    $cnt = $x->metaAccounts('/gooddata/'.$folder.'/'.$subfolder.'/x/accounts');
    $cnt = $x->metaBalanceType('/gooddata/'.$folder.'/'.$subfolder.'/x/balancetypes');
    $cnt = $x->metaBalanceGame('/gooddata/'.$folder.'/'.$subfolder.'/x/balancegame');
    $cnt = $x->metaBalancePS('/gooddata/'.$folder.'/'.$subfolder.'/x/balanceps');
    $cnt = $x->metaBalancePSContr('/gooddata/'.$folder.'/'.$subfolder.'/x/balancepscontr');
    $cnt = $x->metaBalanceBank('/gooddata/'.$folder.'/'.$subfolder.'/x/balancebank');
    $cnt = $x->metaBalanceLost('/gooddata/'.$folder.'/'.$subfolder.'/x/balancelost');
    $cnt = $x->metaStatuses('/gooddata/'.$folder.'/'.$subfolder.'/x/statuses');
    $cnt = $x->metaTypes('/gooddata/'.$folder.'/'.$subfolder.'/x/types');
    $cnt = $x->metaSupervisors('/gooddata/'.$folder.'/'.$subfolder.'/x/supervisors');
    $cnt = $x->metaGames('/gooddata/'.$folder.'/'.$subfolder.'/x/games');
    $cnt = $x->metaProjectStatus('/gooddata/'.$folder.'/'.$subfolder.'/x/projectstatuses');
    
    log_info('= Создание временных папок на Webdav =');
    $path = $folder;
    $res = simple_request(GOODDATA_WEBDAV.'/'.$path,'MKCOL',array());
    $path.= '/'.$subfolder;
    $res = simple_request(GOODDATA_WEBDAV.'/'.$path,'MKCOL',array());
    $path.= '/x';
    $res = simple_request(GOODDATA_WEBDAV.'/'.$path,'MKCOL',array());
    
    log_info('= Создание папок сетов =');
    $res = simple_request(GOODDATA_WEBDAV.'/'.$path.'/currencies','MKCOL',array());
    $res = simple_request(GOODDATA_WEBDAV.'/'.$path.'/regions','MKCOL',array());
    $res = simple_request(GOODDATA_WEBDAV.'/'.$path.'/countries','MKCOL',array());
    $res = simple_request(GOODDATA_WEBDAV.'/'.$path.'/sources','MKCOL',array());
    $res = simple_request(GOODDATA_WEBDAV.'/'.$path.'/groups','MKCOL',array());
    $res = simple_request(GOODDATA_WEBDAV.'/'.$path.'/providers','MKCOL',array());
    $res = simple_request(GOODDATA_WEBDAV.'/'.$path.'/paymentsystems','MKCOL',array());
    $res = simple_request(GOODDATA_WEBDAV.'/'.$path.'/projects','MKCOL',array());
    $res = simple_request(GOODDATA_WEBDAV.'/'.$path.'/payments','MKCOL',array());
    $res = simple_request(GOODDATA_WEBDAV.'/'.$path.'/geotypes','MKCOL',array());
    $res = simple_request(GOODDATA_WEBDAV.'/'.$path.'/partners','MKCOL',array());
    $res = simple_request(GOODDATA_WEBDAV.'/'.$path.'/employees','MKCOL',array());
    $res = simple_request(GOODDATA_WEBDAV.'/'.$path.'/forecast','MKCOL',array());
    $res = simple_request(GOODDATA_WEBDAV.'/'.$path.'/clusters','MKCOL',array());
    $res = simple_request(GOODDATA_WEBDAV.'/'.$path.'/pspartners','MKCOL',array());
    $res = simple_request(GOODDATA_WEBDAV.'/'.$path.'/clustersmatrix','MKCOL',array());
    $res = simple_request(GOODDATA_WEBDAV.'/'.$path.'/accounts','MKCOL',array());
    $res = simple_request(GOODDATA_WEBDAV.'/'.$path.'/balancetypes','MKCOL',array());
    $res = simple_request(GOODDATA_WEBDAV.'/'.$path.'/balancegame','MKCOL',array());
    $res = simple_request(GOODDATA_WEBDAV.'/'.$path.'/balanceps','MKCOL',array());
    $res = simple_request(GOODDATA_WEBDAV.'/'.$path.'/balancepscontr','MKCOL',array());
    $res = simple_request(GOODDATA_WEBDAV.'/'.$path.'/balancebank','MKCOL',array());
    $res = simple_request(GOODDATA_WEBDAV.'/'.$path.'/balancelost','MKCOL',array());
    $res = simple_request(GOODDATA_WEBDAV.'/'.$path.'/types','MKCOL',array());
    $res = simple_request(GOODDATA_WEBDAV.'/'.$path.'/statuses','MKCOL',array());
    $res = simple_request(GOODDATA_WEBDAV.'/'.$path.'/supervisors','MKCOL',array());
    $res = simple_request(GOODDATA_WEBDAV.'/'.$path.'/games','MKCOL',array());
    $res = simple_request(GOODDATA_WEBDAV.'/'.$path.'/projectstatuses','MKCOL',array());
    
    log_info('= Выгрузка данных =');
    $cnt = $x->exportCurrencies('dataset.currencies','/gooddata/'.$folder.'/'.$subfolder.'/x/currencies');
    log_info(' - currencies');
    $cnt = $x->exportRegions('dataset.regions','/gooddata/'.$folder.'/'.$subfolder.'/x/regions');
    log_info(' - regions');
    $cnt = $x->exportCountries('dataset.countries','/gooddata/'.$folder.'/'.$subfolder.'/x/countries');
    log_info(' - countries');
    $cnt = $x->exportSources('dataset.sources','/gooddata/'.$folder.'/'.$subfolder.'/x/sources');
    log_info(' - sources');
    //и дальше в таком же духе 600 строк

    Цыклы, массивы? Не, не слышал

    dimkich, 04 Сентября 2013

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

    +8

    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
    template<int ID> struct typeof_access
    {
        struct id2type; //not defined
    };
    
    template<class T, int ID> struct typeof_register : typeof_access
    {
        // define base's nested class here
        struct typeof_access::id2type
        {
            typedef T type;
        };
    };
    
    //Type registration function 
    typeof_register<T, compile-time-constant> register_type(const T&);
    
    //Actually register type by instantiating typeof_register for the correct type
    sizeof(register_type(some-type));
    
    //Use the base class to access the type.
    typedef typeof_access::id2type::type type;

    Igor Chesnokov discovered a method that allows to implement typeof on the VC series of compilers. It uses a bug in the Microsoft compiler that allows a nested class of base to be defined in a class derived from base.

    http://www.boost.org/doc/libs/1_54_0/doc/html/typeof/other.html

    LispGovno, 03 Сентября 2013

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

    +151

    1. 1
    2. 2
    3. 3
    if (!$start) {
        $this->_select()->where('1 != ? ', 1);
    }

    Наткнулись на такую какулю, непонятно, зачем? Да и в принципе если вторую 1-цу экрунируем, почему первую нет??

    index0h, 02 Сентября 2013

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

    +155

    1. 1
    2. 2
    3. 3
    $tags = explode(",", $item['tags']);
    $tags = array_map("trim",$tags);
    $tags = implode(", ",$tags);

    Tairesh, 30 Августа 2013

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

    +160

    1. 1
    if($this->rollbackFilter == 3) $this->draftId ? $this->rollbackFilter : 0;

    бессмысленный и беспощадный код

    dimkich, 26 Августа 2013

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

    +82

    1. 1
    2. 2
    3. 3
    Stertor, TThreadList - список указателей и предназначен для хранения TThread. 
    Для хранения объектов используйте TObjectList, там есть метод IndexOf 
    который сравнивает объекты списка, наследуйте свой класс от его и перепишите методы на свой лад с контролем дубликатов.

    Так говорил Лажаратустра.

    Stertor, 03 Августа 2013

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

    +141

    1. 1
    2. 2
    3. 3
    //index.php
    
    die('+php works');

    вся суть PHP в одной строчке

    problem, 29 Июля 2013

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

    +129

    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
    /*
     * 		Пример программы шифрующей данные симметрично по ключу.
     *
     *		Параметры командной строки:
     * 
     * /program_path [source file path] [destenation file path] [key] [type]
     * 
     *		[key] - кодовое слово длинной не более 255 символов.
     *		[key] - принимает два параметра cript и uncript (шифровать/расшифровать)
     * 
     *		Пример использования аргументов:
     * 
     * "/home/aleksandr/Рабочий стол/Крипт/s_cript" "/home/aleksandr/Рабочий стол/Крипт/simple_file_1.txt" "/home/aleksandr/Рабочий стол/Крипт/simple_file_2.txt" simplekey cript
     * "/home/aleksandr/Рабочий стол/Крипт/s_cript" "/home/aleksandr/Рабочий стол/Крипт/simple_file_2.txt" "/home/aleksandr/Рабочий стол/Крипт/simple_file_3.txt" simplekey uncript
     *
     * 		:P
     *  
     */
    
    #include <stdio.h>
    #include <limits.h>
    #include <string.h>
    
    void cript_uncript(FILE* src_fp, FILE* dst_fp, char* key_X, char* block, _Bool type)
    {
    	unsigned char i, real;
    	
    	while((real = fread(block, sizeof(char), UCHAR_MAX, src_fp)) > 0){
    		for(i = 0; i < real; i++){
    			if(type == 0)
    				block[i] = block[i] + key_X[i];
    			else if(type == 1)
    				block[i] = block[i] - key_X[i];
    		}
    		
    		fwrite(block, sizeof(char), real, dst_fp);
    	}
    }
    
    void generate_key(char* key, char* key_X){
    	unsigned char len, i, n = 0;
    	
    	len = strlen(key) - 1;
    	
    	for(i = 0; i < UCHAR_MAX; i++)	{
    		key_X[i] = key[n];
    		if(n++ == len) n = 0;
    	}
    }
    
    int main(int argc, char* argv[]){
    	FILE* src_fp;
    	FILE* dst_fp;
    	
    	char key[UCHAR_MAX], block[UCHAR_MAX], key_X[UCHAR_MAX], s[UCHAR_MAX];
    	char src_path[1024], dst_path[1024];
    	
    	if(argc < 4){
    		puts("not enough arguments\n");
    		return -1;
    	}
    	else{
    		strcpy(src_path, argv[1]);
    		strcpy(dst_path, argv[2]);
    		strcpy(key, argv[3]);
    		strcpy(s, argv[4]);
    	}
    	
    	if((src_fp = fopen(src_path, "rb")) != NULL){
    		if((dst_fp = fopen(dst_path, "wb")) != NULL){
    			generate_key(key, key_X);
    			
    			if(strcmp(s, "cript") == 0)
    				cript_uncript(src_fp, dst_fp, key_X, block, 0);
    			if(strcmp(s, "uncript") == 0)
    				cript_uncript(src_fp, dst_fp, key_X, block, 1);
    		}
    		else return -1;
    		
    		fclose(src_fp);
    	}
    	else return -1;
    	
    	fclose(dst_fp);

    Пример программы шифрующей данные симметрично по ключу

    Stertor, 27 Июля 2013

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

    +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
    if (!class_exists($module, false))
    {
    // Get content from php file
    $filepath = _PS_MODULE_DIR_.$module.'/'.$module.'.php';
    $file = trim(file_get_contents(_PS_MODULE_DIR_.$module.'/'.$module.'.php'));
    if (substr($file, 0, 5) == '<?php')
    	$file = substr($file, 5);
    if (substr($file, -2) == '?>')
    	$file = substr($file, 0, -2);
    
    // If (false) is a trick to not load the class with "eval".
    // This way require_once will works correctly
    if (eval('if (false){	'.$file.' }') !== false)
    	require_once( _PS_MODULE_DIR_.$module.'/'.$module.'.php' );
    else
    	$errors[] = sprintf(Tools::displayError('%1$s (parse error in %2$s)'), $module, substr($filepath, strlen(_PS_ROOT_DIR_)));
    }

    Это оригинал кода из знаменитого Prestashop ...
    Попросили написать модуль. Долго мучался, почему валидный код не работает. Потом нашел.
    Смысл логики в строках 13-17 : мы не хотим принимать файлы модулей с eval функцией.
    Поэтому мы сначала проверяем, есть ли eval в файле.
    Как проверяем?
    А давайте его просто выполним!
    Если выполнится - тогда - require_once
    В общем я О....ЕЛ! Других слов просто нет.
    Мало того, так еще нужно следить, чтобы ваш файл модуля был валидным для eval функции.
    Иначе - Parse error: syntax error ...

    corner578, 17 Июля 2013

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