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

    В номинации:
    За время:
  2. Куча / Говнокод #28800

    +1

    1. 1
    Приватный дневник-тред, который никто не прочтёт, чтобы писать сюда всякие секреты.

    Это место для тех, кто устал от публичности социальных сетей.
    Здесь можно взять любой логин, не указывая настоящего имени,
    вести свой дневник, закрыв его от части или всего виртуального
    мира. До 75% записей на сайте подзамочные — для избранных
    читателей. Можно писать в тред, который кроме вас вообще
    никто не прочтет.

    JloJle4Ka, 20 Июня 2023

    Комментарии (266)
  3. Куча / Говнокод #28799

    +1

    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
    // https://github.com/torvalds/linux/blob/b6dad5178ceaf23f369c3711062ce1f2afc33644/rust/alloc/alloc.rs#L376
    pub const fn handle_alloc_error(layout: Layout) -> ! {
        const fn ct_error(_: Layout) -> ! {
            panic!("allocation failed");
        }
    
        fn rt_error(layout: Layout) -> ! {
            unsafe {
                __rust_alloc_error_handler(layout.size(), layout.align());
            }
        }
    
        unsafe { core::intrinsics::const_eval_select((layout,), ct_error, rt_error) }
    }
    
    
    // https://github.com/torvalds/linux/blob/b6dad5178ceaf23f369c3711062ce1f2afc33644/rust/kernel/lib.rs#L96-L103
    fn panic(info: &core::panic::PanicInfo<'_>) -> ! {
        pr_emerg!("{}\n", info);
        // SAFETY: FFI call.
        unsafe { bindings::BUG() };
        // Bindgen currently does not recognize `__noreturn` so `BUG` returns `()`
        // instead of `!`. See <https://github.com/rust-lang/rust-bindgen/issues/2094>.
        loop {}
    }
    
    
    // https://github.com/torvalds/linux/blob/master/include/asm-generic/bug.h#L51-L68
    /*
     * Don't use BUG() or BUG_ON() unless there's really no way out; one
     * example might be detecting data structure corruption in the middle
     * of an operation that can't be backed out of.  If the (sub)system
     * can somehow continue operating, perhaps with reduced functionality,
     * it's probably not BUG-worthy.
     *
     * If you're tempted to BUG(), think again:  is completely giving up
     * really the *only* solution?  There are usually better options, where
     * users don't need to reboot ASAP and can mostly shut down cleanly.
     */
    #ifndef HAVE_ARCH_BUG
    #define BUG() do { \
    	printk("BUG: failure at %s:%d/%s()!\n", __FILE__, __LINE__, __func__); \
    	barrier_before_unreachable(); \
    	panic("BUG!"); \
    } while (0)
    #endif

    О том, как в ядре Linux говнораст обрабатывает ошибку аллокации

    j123123, 19 Июня 2023

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

    +1

    1. 1
    2. 2
    3. 3
    // Всем привет. Я тоже принёс говнокода, но в необычном формате.
    // А именно, я написал мини-книгу "60 антипаттернов для С++ программиста".
    // https://pvs-studio.ru/ru/blog/posts/cpp/1053/

    Там вы найдёте и реальный C++ говнокод и просто вредные советы в духе "Пишите код так, как будто его будет читать председатель жюри IOCCC и он знает, где вы живёте (чтоб приехать и вручить вам приз)".

    Если сразу не понятно почему "совет" вреден, то там есть соответствующий разбор.

    Готов подискутировать про написанное. Ну и приглашаю накидывать в комментариях аналогичные советы.

    P.S. Предупреждаю: там много букв. Сразу запасайтесь кофе/энергетиком. Или попкорном :)

    Andrey_Karpov, 15 Июня 2023

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

    +1

    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
    Функция СоответствиеСодержитКлюч(Соответствие, Ключ)
        
        Если НЕ Соответствие[Ключ] = Неопределено Тогда
            Возврат Истина;
        КонецЕсли;
        
        КоличествоЭлементов = Соответствие.Количество();
        Соответствие.Удалить(Ключ);
        
        Если КоличествоЭлементов = Соответствие.Количество() Тогда
            Возврат Ложь;
        КонецЕсли;
        
        Соответствие.Вставить(Ключ);
        Возврат Истина;
        
    КонецФункции

    Как тебе такое Илон (зачеркнуто) Нуралиев?!

    hujaboy, 16 Мая 2023

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

    +1

    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
    if(pfocus=="Balanced")
    		if(StatRank>=4)
    			if(Age>=4&&Age<=10)
    				Str+=0.4*StrMod*timemult*StatRank*HBTCMod*World_Stat_Mod
    				End+=0.4*EndMod*timemult*StatRank*HBTCMod*World_Stat_Mod
    				Spd+=0.4*SpdMod*timemult*StatRank*HBTCMod*World_Stat_Mod
    				Base_BP+=1*BPMod*timemult*StatRank*HBTCMod*World_Stat_Mod
    				MaxKi+=1*KiMod*timemult*StatRank*HBTCMod*World_Stat_Mod
    			else
    				Str+=4*StrMod*timemult*StatRank*HBTCMod*World_Stat_Mod
    				End+=4*EndMod*timemult*StatRank*HBTCMod*World_Stat_Mod
    				Spd+=4*SpdMod*timemult*StatRank*HBTCMod*World_Stat_Mod
    				Base_BP+=1*BPMod*timemult*StatRank*HBTCMod*World_Stat_Mod
    				MaxKi+=1*KiMod*timemult*StatRank*HBTCMod*World_Stat_Mod
    			if(Age>=10&&Age<=15)
    				Str+=0.4*StrMod*timemult*StatRank*HBTCMod*World_Stat_Mod
    				End+=0.4*EndMod*timemult*StatRank*HBTCMod*World_Stat_Mod
    				Spd+=0.4*SpdMod*timemult*StatRank*HBTCMod*World_Stat_Mod
    				Base_BP+=1*BPMod*timemult*StatRank*HBTCMod*World_Stat_Mod
    				MaxKi+=1*KiMod*timemult*StatRank*HBTCMod*World_Stat_Mod
    			else
    				Str+=4*StrMod*timemult*StatRank*HBTCMod*World_Stat_Mod
    				End+=4*EndMod*timemult*StatRank*HBTCMod*World_Stat_Mod
    				Spd+=4*SpdMod*timemult*StatRank*HBTCMod*World_Stat_Mod
    				Base_BP+=1*BPMod*timemult*StatRank*HBTCMod*World_Stat_Mod
    				MaxKi+=1*KiMod*timemult*StatRank*HBTCMod*World_Stat_Mod
    			if(Age>=15&&Age<=20)
    				Str+=0.4*StrMod*timemult*StatRank*HBTCMod*World_Stat_Mod
    				End+=0.4*EndMod*timemult*StatRank*HBTCMod*World_Stat_Mod
    				Spd+=0.4*SpdMod*timemult*StatRank*HBTCMod*World_Stat_Mod
    				Base_BP+=1*BPMod*timemult*StatRank*HBTCMod*World_Stat_Mod
    				MaxKi+=1*KiMod*timemult*StatRank*HBTCMod*World_Stat_Mod
    			else
    				Str+=4*StrMod*timemult*StatRank*HBTCMod*World_Stat_Mod
    				End+=4*EndMod*timemult*StatRank*HBTCMod*World_Stat_Mod
    				Spd+=4*SpdMod*timemult*StatRank*HBTCMod*World_Stat_Mod
    				Base_BP+=1*BPMod*timemult*StatRank*HBTCMod*World_Stat_Mod
    				MaxKi+=1*KiMod*timemult*StatRank*HBTCMod*World_Stat_Mod
    			if(Age>=20&&Age<=25)
    				Str+=0.4*StrMod*timemult*StatRank*HBTCMod*World_Stat_Mod
    				End+=0.4*EndMod*timemult*StatRank*HBTCMod*World_Stat_Mod
    				Spd+=0.4*SpdMod*timemult*StatRank*HBTCMod*World_Stat_Mod
    				Base_BP+=1*BPMod*timemult*StatRank*HBTCMod*World_Stat_Mod
    				MaxKi+=1*KiMod*timemult*StatRank*HBTCMod*World_Stat_Mod

    и далее ещё 300 строк такого говна. я не думал, что кроме мемов, ещё когда-нибудь с таким столкнусь

    kcalbCube, 09 Апреля 2023

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

    +1

    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
    Statement stmt1 = null;
            ResultSet rs1 = null;
         
            try {
                StringBuilder sb = new StringBuilder(2000);
                String sql = "";
                String ss = "";
                String ss_begin = "";
                String ss_middle = "";
                String ss_end = "";
                int xcount = 0;
                String XXX_ID = "";
                String XXX_NAME = "";
    
    
                if (c.XLANG_ID == 1) {
                    sql = sql + " SELECT  99 , 'Исходные'  FROM dual union all ";
                    sql = sql + " SELECT  1 , 'Непарные исходные'  FROM dual union all ";
                    sql = sql + " SELECT  2 , 'Временная'            FROM dual union all ";
                    sql = sql + " SELECT  3 , 'Встречные'         FROM dual ";
                    //sql = sql +  " SELECT  4 , 'Непарные встречные'         FROM dual ";
                } else if (c.XLANG_ID == 2) {
                    sql = sql + " SELECT  99 , 'Base BPEBs' FROM dual union all ";
                    sql = sql + " SELECT  1 , 'Base BPEBs unpaired' FROM dual union all ";
                    sql = sql + " SELECT  2 , 'Temporary BPEB' FROM dual union all ";
                    sql = sql + " SELECT  3 , 'Generated BPEBs' FROM dual ";
                    //sql = sql +  " SELECT  4 , 'Generated BPEBs unpaired' FROM dual ";
                }
    
                stmt1 = this.con.createStatement();
                rs1 = stmt1.executeQuery(sql);
    
                while (rs1.next()) {
                    xcount = xcount + 1;
                    XXX_ID = rs1.getString(1);
                    XXX_NAME = rs1.getString(2);
    
                    sb = sb.append("<msg>")
                            .append("<xid>").append(XXX_ID).append("</xid>")
                            .append("<xname>").append(vtb.budget.osa.tools.Tools.stringToXML(XXX_NAME)).append("</xname>")
    
                            .append("</msg>");
                }
                rs1.close();
                stmt1.close();
    
                ss_begin = ss_begin + "<xml id='XML_table1'>"
                        + "<tab1>";
    
                ss_end = ss_end
                        + "</tab1>"
                        + "</xml>";
    
                if (xcount == 0) {
                    ss_middle = ss_middle + "<msg>"
                            + "<xid></xid>"
                            + "<xcode></xcode>"
                            + "<xname></xname>"
                            + "</msg>";
                } else {
                    ss_middle = sb.toString();
                }
    
    
                ss = ss_begin + ss_middle + ss_end;
    
                ss_begin = null;
                ss_middle = null;
                ss_end = null;
                sb = null;
    
    
                return ss;
    
            }

    yamert89, 04 Апреля 2023

    Комментарии (35)
  8. JavaScript / Говнокод #28650

    +1

    1. 1
    https://pastebin.com/MarcPuJc

    говно для подтирания важных комментов в вк. Весь не поместился, прилегаю ссылку.

    AnimeGovno, 26 Марта 2023

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

    +1

    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
    private async getNewKey(): Promise<string> {
    		let i: number = 0;
    		let key: string;
    		while (i < 50000) {
    			key = this.generateKey(MIN_REFERRAL_NAME_LENGTH);
    			const inDatabase: number = await ReferralEntity.count({ where: { name: key }, transaction: this._transaction });
    			if (inDatabase === 0) {
    				const inProcess: boolean = newKeyInProcess.has(key);
    				if (!inProcess) {
    					newKeyInProcess.add(key);
    					break;
    				}
    			}
    			i++;
    		}
    		return key;
    	}

    Тайпскрипт. MIN_REFERRAL_NAME_LENGTH = 3
    Как считаете, когда всё приложение встанет колом?

    alek0585, 26 Марта 2023

    Комментарии (2)
  10. Pascal / Говнокод #28644

    +1

    1. 1
    В одном из минувших топиков приподымали тему POP SMDб я тоже решил напейсать генератор паролей к этой игре.

    https://pastebin.com/ANHTMmeM

    на основе исходников roman-pro

    Support, 20 Марта 2023

    Комментарии (7)
  11. Си / Говнокод #28643

    +1

    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
    85. 85
    86. 86
    87. 87
    88. 88
    89. 89
    90. 90
    91. 91
    92. 92
    93. 93
    94. 94
    95. 95
    96. 96
    97. 97
    98. 98
    #include <stdio.h>
    #include <conio.h>
    #include <stdlib.h>
    void PasswordChecker(void);
    void sub_BB4F(unsigned char* Password);//subroutine $BB4F and so on...
    void sub_BB21(void);
    void sub_BBE0(void);
    void sub_BBEA(void);
    void SEC_SBC_6502(unsigned char operand);
    void ADC_6502_simplified(unsigned char operand);
    unsigned char Password[8];//$0766 to $076D in RAM, when a player enters it
    unsigned char Invalidity=0;//$0764 in RAM
    unsigned char Level;//$$0070 in RAM
    unsigned char TimeTens;//$04c5 in RAM
    unsigned char TimeOnes;//$04c6 in RAM
    unsigned char Byte4BF, Byte17, Byte18;
    unsigned char a, x;
    unsigned char c=0;//carry flag
    //former char Byte76A is Password[4] now, former char Byte76C is Password[6] now
    
    void PasswordGenerator(void);
    void BuildORTable(void);
    unsigned char* BuildParticularLevelsArray(unsigned char DesiredLevel);//will think of it later...
    void SimplifiedLevelGenerator(unsigned char* PassToFill,unsigned char Level);//finds just one 2nd,3rd,6th,8th digit combo
    
    int main()
    {
    	int Choice;
    	printf("Enter g if you'd like to generate a new password.\nEnter a to analyze an existing password.\n");
    	Choice=fgetc(stdin);
    	flushall();
    	if (Choice=='a')
    	PasswordChecker();
    	if (Choice=='g')
    	PasswordGenerator();
    	if (Choice=='s')//'level function' is basic when generating a pass
    	BuildORTable();//so here a bit of 'hidden' investigation, which will be useful
    	//if I ever decide to rewrite this prog to output all passes possible, not just one
    	printf("Press any key to quit.\n");
    	getch();
    	return 0;
    }
    
    void PasswordChecker(void)
    {
    	char InputString[9];//one extra byte needed due to fgets
    	int i;
    	printf("Please enter your password to test:\n");
    	fgets(InputString,9,stdin);
    	for(i=0;i<8;i++)
    	{
    		if ((InputString[i]>57)||(InputString[i]<48))
    		{
    			printf("This string contains non-digits.\n");
    			return;
    		}
    		else
    			Password[i]=InputString[i]-48;//ascii to digit
    	}
    	sub_BB4F(Password);
    	if (Invalidity==1)
    	{
    		printf("This password is invalid.\n");
    		return;
    	}
    	printf("%s%d","Level: ",Level);
    	printf("%s%d%d\n"," Time: ",TimeTens,TimeOnes);
    	if (Level==15)
    	printf("Level 15 doesn't exist. So-called level 15 passwords are programming mistakes and cause system hang.\n");
    	if (Level==16)
    	printf("Level 16 doesn't exist. So-called level 16 passwords are programming mistakes and lead you to a buggy screen where Prince can't move.\n");
    	return;
    }
    
    void sub_BB4F(unsigned char* Password)//$BB4F
    {
    	a=0;
    	x=0;
    	while (x<8)
    	{
    		a=a+Password[x];
    		x++;
    	}
    	if(a==0)
    	{
    		Invalidity=1;//$BBC0
    		return;
    	}
    	Byte17=Password[4];//$BB63
    	Byte18=Password[6];
    	Password[4]=0;
    	Password[6]=0;
    	sub_BB21();//$BB72,calculates and writes 1st checksum to Password[4], 2nd checksum to Password[6]
    	if (Password[4]!=Byte17)
    	{
    		Invalidity=1;
    		return;
    	}

    Генератор паролей для игры Prince Of Perisa. Пришлось немного повозиться...


    if (Password[6]!=Byte18)//$BB7C
    {
    Invalidity=1;
    return;
    }
    Invalidity=0;//$BB85
    a=Password[7];
    sub_BBEA();
    a=a&3;//$BB8E
    a=a*4;
    Password[7]=a;
    a=Password[1];
    sub_BBE0();//$BB98
    a=a|Password[7];
    Level=a+1;//+1 is my insertion
    //if (Level!=1)//I chose to omit this $BBA2-$BBA4 code b/c it's unknown what byte at $06EE means
    a=Password[0];
    sub_BBE0();//$BBAA
    TimeTens=a;
    a=Password[3];
    sub_BBEA();
    TimeOnes=a;
    return;//$BBBF
    }

    void SEC_SBC_6502(unsigned char operand)
    {
    c=1;
    if ((a-operand)>=0)
    a=a-operand;
    else
    {
    a=a-operand+256;
    c=0;
    };
    }

    void ADC_6502_simplified(unsigned char operand)
    {
    if ((a+operand)<256)
    a=a+operand;
    else a=a+operand-256;
    }

    void sub_BB21(void)
    {
    x=0;
    BB23: a=Password[4];
    a=a+Password[x];
    if(a<10)
    {
    BB46: Password[4]=a;//$BB46
    x++;
    if (x!=8)
    goto BB23;
    else return;//$BB4E
    }
    else //$BB2E
    {
    Byte4BF=a;
    a=Password[6];
    a++;//we came here b/c c=1
    if (a<10)
    goto BB3D;
    else
    SEC_SBC_6502(10);//can we get here? I doubt...
    BB3D: Password[6]=a;
    a=Byte4BF;
    SEC_SBC_6502(10);//$BB44, no danger of negative result
    goto BB46;
    }
    }

    cepreu_monoJlb, 19 Марта 2023

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