1. Список говнокодов пользователя gorthauer87

    Всего: 13

  2. Куча / Говнокод #23823

    0

    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
    let src1 = r#"
            __kernel void add1(__global float* A, __global float* BBB, __global float* B, int m, int n) 
            {
                __local float Blo[64];
                int x = get_local_id(0);
                int y = get_local_id(1);
                int i = get_global_id(0);
                int j = get_global_id(1);
                int k = get_global_id(2);
                i += k / 8;
                j += k % 8;
    
                if (i >= n || j >= m) return;
    
    
                Blo[x * 8 + y] = A[i * m + j];
    
    
    
    
                barrier(CLK_LOCAL_MEM_FENCE);
    
                float BB = 0;
    
                for (int xx = 0; xx < 8; ++xx)
                    for (int yy = 0; yy < 8; ++yy)
                    {
        
                            float c = (2 * xx + 1) * x * 3.1415926535 / 16;
                            float cc = (2 * yy + 1) * y * 3.1415926535 / 16;
                            c = cos(c);
                            cc = cos(cc);
                            BB += Blo[xx * 8 + yy] * c * cc;
    
                    }
    
                float Ci, Cj;
                if (x == 0)
                    Ci = 1 / 1.4142135623;
                else
                    Ci = 1;
    
                if (y == 0)
                    Cj = 1 / 1.4142135623;
                else
                    Cj = 1;
                B[k * m * n + i * m + j] = Ci * Cj / 4 * BB;
    
                barrier(CLK_LOCAL_MEM_FENCE);
    
                i = get_global_id(0);
                j = get_global_id(1);
    
                float summ = 0;
                for (int ii = 0; ii < 64; ++ii)
                    summ += B[ii * m * n + i * m + j];
                BBB[i * m + j] = summ / 64;
                
            }
        "#;
    
    
    let pro_que = ProQue::builder().src(src1).dims((hi, wi, 64)).build().unwrap();
    
    
       let matr11 = Buffer::builder()
            .queue(pro_que.queue().clone())
            .flags(MemFlags::new().read_only().use_host_ptr())
            .dims((hi, wi))
            .host_data(&Resr)
            .build().unwrap();
    
            let matg11 = Buffer::builder()
            .queue(pro_que.queue().clone())
            .flags(MemFlags::new().read_only().use_host_ptr())
            .dims((hi, wi))
            .host_data(&Resg)
            .build().unwrap();
    
    ...
    
        let mut kernel;
        {
                let wi = wi as i32;
                let hi = hi as i32;
                kernel = pro_que.create_kernel("add1").unwrap().arg_buf(&matr11).arg_buf(&resr11).arg_buf(&bor1).arg_scl(wi).arg_scl(hi);
                kernel.lws((8, 8)).enq().unwrap();
                kernel = pro_que.create_kernel("add1").unwrap().arg_buf(&matg11).arg_buf(&resg11).arg_buf(&bog1).arg_scl(wi).arg_scl(hi);
                kernel.lws((8, 8)).enq().unwrap();
                kernel = pro_que.create_kernel("add1").unwrap().arg_buf(&matb11).arg_buf(&resb11).arg_buf(&bob1).arg_scl(wi).arg_scl(hi);
                kernel.lws((8, 8)).enq().unwrap();
        }

    Ничего особенного, лаба по opencl, написанная на Rustе

    gorthauer87, 24 Февраля 2018

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

    +3

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    // on every year that is evenly divisible by 4
    // except every year that is evenly divisible by 100
    // unless the year is also evenly divisible by 400
    pub fn is_leap_year(year: usize) -> bool {
        match ((year % 4), (year % 100), (year % 400)) {
            (0, 0, 0) => true,
            (0, 0, _) => false,
            (0, _, _) => true,
            (_, _, _) => false,
        }
    }

    Интересный способ использовать сопоставление с образцом.

    PS
    Добавьте плиз Rust.

    gorthauer87, 07 Июня 2016

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

    +6

    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
    //		implicit_cast< >
    // I believe this was originally going to be in the C++ standard but 
    // was left out by accident. It's even milder than static_cast.
    // I use it instead of static_cast<> to emphasize that I'm not doing
    // anything nasty. 
    // Usage is identical to static_cast<>
    template <class OutputClass, class InputClass>
    inline OutputClass implicit_cast(InputClass input){
    	return input;
    }
    
    //		horrible_cast< >
    // This is truly evil. It completely subverts C++'s type system, allowing you 
    // to cast from any class to any other class. Technically, using a union 
    // to perform the cast is undefined behaviour (even in C). But we can see if
    // it is OK by checking that the union is the same size as each of its members.
    // horrible_cast<> should only be used for compiler-specific workarounds. 
    // Usage is identical to reinterpret_cast<>.
    
    // This union is declared outside the horrible_cast because BCC 5.5.1
    // can't inline a function with a nested class, and gives a warning.
    template <class OutputClass, class InputClass>
    union horrible_union{
    	OutputClass out;
    	InputClass in;
    };
    
    template <class OutputClass, class InputClass>
    inline OutputClass horrible_cast(const InputClass input){
    	horrible_union<OutputClass, InputClass> u;
    	// Cause a compile-time error if in, out and u are not the same size.
    	// If the compile fails here, it means the compiler has peculiar
    	// unions which would prevent the cast from working.
    	typedef int ERROR_CantUseHorrible_cast[sizeof(InputClass)==sizeof(u) 
    		&& sizeof(InputClass)==sizeof(OutputClass) ? 1 : -1];
    	u.in = input;
    	return u.out;
    }

    Боль и страдание шаблонного программирования на С++98. Комменты и названия доставляют.

    gorthauer87, 11 Марта 2016

    Комментарии (17)
  5. Си / Говнокод #18859

    −99

    1. 1
    2. 2
    3. 3
    /*
    удалено по просьбе правообладателя
    */

    god struct mode on.

    Круто, наверное, пытаться её создать на стэке. Всякие if defined в большом количестве тоже доставляют.
    Всё, в общем, наелся говна, пишу заявление об увольнении.

    gorthauer87, 13 Октября 2015

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

    +4

    1. 1
    2. 2
    3. 3
    4. 4
    NDS_U1     946  0.1  0.0      0     0 ?        Zl   00:00   0:00 [SCD_Process] <defunct>
    NDS_U2     950  4.7  0.0      0     0 ?        Zl   00:00   0:27 [MW_Process] <defunct>
    NDS_U3     951  3.1  0.0      0     0 ?        Zl   00:00   0:18 [APP_Process] <defunct>
    NDS_U4     952  0.3  0.0      0     0 ?        Zl   00:00   0:02 [CA_Process] <defunct>

    Все основные процессы в железке выполняются как зомби, утверждается, что это самый дешевый способ демонизации. Но как-то от него сильно попахивает. По крайней мере, в таком виде если я хочу перезапустить хотя бы один из этих процессов, я должен перезагружать коробку. Да и вообще, разве процесс зомби может что-то делать полезное?

    gorthauer87, 12 Октября 2015

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

    +3

    1. 1
    2. 2
    3. 3
    /*
    удалено по просьбе правообладателя
    */

    Люблю такое, там ещё реализовано наследование, vtable и прочие радости жизни. Спрашивается, нафига из чистых си делать недоплюсы? Ладно там хотя бы gobject взяли, но лисапед то зачем с треугольными колесами?

    gorthauer87, 08 Октября 2015

    Комментарии (16)
  8. Си / Говнокод #18837

    −98

    1. 1
    2. 2
    3. 3
    /*
    удалено по просьбе правообладателя
    */

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

    gorthauer87, 08 Октября 2015

    Комментарии (31)
  9. Си / Говнокод #18760

    +14

    1. 1
    2. 2
    3. 3
    /*
    удалено по просьбе правообладателя
    */

    Думал я, что меня уже так просто не удивишь, пока не увидел ЭТО!

    gorthauer87, 24 Сентября 2015

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

    −97

    1. 1
    2. 2
    3. 3
    /*
    удалено по просьбе правообладателя
    */

    macro driven development.

    Тот же цискоиндуский код.

    gorthauer87, 22 Сентября 2015

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

    −97

    1. 1
    2. 2
    3. 3
    /*
    удалено по просьбе правообладателя
    */

    Продолжаю пытаться разобраться в цисковском говнокоде. Охреневаю от количества копипасты, дважды охреневаю от того, что эта простыня не автогенеренная, а написанная ручками.

    gorthauer87, 22 Сентября 2015

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