1. Си / Говнокод #26333

    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
    switch (pattern)
                {
                    case 0:
                    case 1:
                    case 4:
                    case 32:
                    case 128:
                    case 5:
                    case 132:
                    case 160:
                    case 33:
                    case 129:
                    case 36:
                    case 133:
                    case 164:
                    case 161:
                    case 37:
                    case 165:
                        {
                            PIXEL00_20
                            PIXEL01_60
                            PIXEL02_60
                            PIXEL03_20
                            PIXEL10_60
                            PIXEL11_70
                            PIXEL12_70
                            PIXEL13_60
                            PIXEL20_60
                            PIXEL21_70
                            PIXEL22_70
                            PIXEL23_60
                            PIXEL30_20
                            PIXEL31_60
                            PIXEL32_60
                            PIXEL33_20
                            break;
                        }
                    case 2:
                    case 34:
                    case 130:
                    case 162:
                        {
                            PIXEL00_80
                            PIXEL01_10
                            PIXEL02_10
                            PIXEL03_80
                            PIXEL10_61
                            PIXEL11_30
                            PIXEL12_30
                            PIXEL13_61
                            PIXEL20_60
                            PIXEL21_70
                            PIXEL22_70
                            PIXEL23_60
                            PIXEL30_20
                            PIXEL31_60
                            PIXEL32_60
                            PIXEL33_20
                            break;
                        }
                    case 16:
                    case 17:
                    case 48:
                    case 49:
                        {
                            PIXEL00_20
                            PIXEL01_60
                            PIXEL02_61
                            PIXEL03_80
                            PIXEL10_60
                            PIXEL11_70
                            PIXEL12_30
                            PIXEL13_10
                            PIXEL20_60
                            PIXEL21_70
                            PIXEL22_30
                            PIXEL23_10
                            PIXEL30_20
                            PIXEL31_60
                            PIXEL32_61
                            PIXEL33_80
                            break;
                        }

    Отсюда:
    https://github.com/grom358/hqx/blob/master/src/hq4x.c

    HoBorogHuu_nemyx, 09 Января 2020

    Комментарии (16)
  2. Куча / Говнокод #26332

    0

    1. 1
    2. 2
    Вчерась обнаружил в списке стандартных программ "Ножницы"
    Это скринго, если кто не знает.

    Ёбля с PrintWindow, BitBlt и GetDC была напрасной.

    MEJlOMAH, 09 Января 2020

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

    0

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    0 1  2 3  4 5  6 7  8 9  a b  c d  e f
    00800060: 424f 4f54 2020 2020 4249 4e20 0057 7a99  BOOT    BIN .Wz.             
    00800070: 954f 2250 0000 1c87 954f 0700 bc00 0000  .O"P.....O......
    
    file boot.bin
    00828000: - file start (0c94 3400 0c94 3e00 0c94 3e00 0c94 3e00)

    Lis, 08 Января 2020

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

    +3

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    while ( port->available() )
            {
                au8Buffer[ u8BufferSize ] = port->read();
                u8BufferSize ++;
    
                if (u8BufferSize >= MAX_BUFFER) bBuffOverflow = true;
            }

    Если буфер переполнился – попробуем это запомнить и... продолжим затирать память! Реальный кусок из библиотеки работы с RS485 – протоколом, применяющимся в промышленных контроллерах и все такое.

    smart, 08 Января 2020

    Комментарии (20)
  5. Куча / Говнокод #26327

    +1

    1. 1
    2. 2
    3. 3
    4. 4
    См. что пишут на лОре:
    
    "... на сайте царила приятная атмосфера олдскульности, а контент был не хуже, чем на Хабре. [...]
     неадекватный человек, который много лет спамит и оскорбляет участников. Из -за него а также из-за бездействия админа ушли многие участники и сайт запустел :("

    AnalBoy, 07 Января 2020

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

    −3

    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
    1)
    const
      OUT_OF_BOUNDS:TPoint=(X:-1; Y:-1);
    var
      INT_OUT_OF_BOUNDS:Integer absolute OUT_OF_BOUNDS;
    
    TargetForm.Perform(WM_LBUTTONUP,0,INT_OUT_OF_BOUNDS);
    
    2)
    const
      ZERO_ZERO:TPoint=(X:0; Y:0);
    var
      INT_ZERO_ZERO:Integer absolute ZERO_ZERO;
    
    TargetForm.Perform(WM_LBUTTONUP,0,INT_ZERO_ZERO);
    
    3)
    TargetForm.Perform(WM_LBUTTONUP,0,0);

    Болею. Стояла задача воспроизвести системное меню. Но оказалось, что при клике на элемент фейкового системного меню, форме не посылается WM_LBUTTONUP и кнопка-иконка не перекрашивается в ненажатый вид. Решил перформить WM_LBUTTONUP прямо при клике, но туда нужно передавать координаты мышки куда был совершён клик в High(lParam) и Low(lParam). Сначала хотел передавать -1;-1 но подумал что передавать туда $FFFFFFFF как-то некрасиво, а прямое приведение типов а-ля Integer(Point(-1,-1)) оно у меня хавать не захотело, и поэтому красоты ради наговнокодил первый вариант кода. Потом подумал, а что если там только положительные значения, будет же 65535;65535 непорядок, лучше буду передавать нули. Впихнуть туда просто 0 сразу в голову не пришло (болею же, башка квадратная) и наговнокодил второй вариант.

    Потом, конечно же, написал всё по нормальному.

    KOTOM, 07 Января 2020

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

    +3

    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
    template <typename T>
    void f() {
         if constexpr (std::is_arithmetic_v<T>)
             // ...
         else
           static_assert(false, "Must be arithmetic"); // ill-formed: invalid for every T
    }
    
    // The common workaround for such a catch-all statement is a type-dependent expression that is always false:
    template<class T> struct dependent_false : std::false_type {};
    template <typename T>
    void f() {
         if constexpr (std::is_arithmetic_v<T>)
             // ...
         else
           static_assert(dependent_false<T>::value, "Must be arithmetic"); // ok
    }

    То есть «static_assert(false)» в шаблоне — это UB. Чтобы оно было не UB и можно было спокойно отключать ненужные специализации — надо городить ёбанный костыль. Пиздец. Почему стандартизаторы не могут просто взять и сделать что-то удобное? Что-то, для чего не требуется городить по десятку костылешаблонов, заставляющих его работать? Что-то без ёбанной явной специализации для bool? Почему любой высер крестокомитета обязательно должен быть максимально сложным, вербозным, неочевидным говном с кучей подводных камней и UB?

    gost, 06 Января 2020

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

    0

    1. 1
    2. 2
    std::tuple<int, int, int, bool> cock;
    std::get<bool>(cock)

    Сначала не понимал нахуй нужен геттер по типу, но при очередном добавлении нового int и забытии поменять индекс у була, заюзал его.

    Бтв, почему нету cock.get<0>?

    AHCKuJlbHblu_nemyx, 06 Января 2020

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

    −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
    #include <boost/hana.hpp>
    #include <boost/hana/ext/std/tuple.hpp>
    #include <cstdint>
    
    namespace hana = boost::hana;
    using namespace hana::literals;
    using hana::transform, hana::decltype_, hana::to_set, hana::type_c;
    
    auto copy = [](uint8_t * in, uint8_t * out, auto n, auto s) {
      
      n.times.with_index([&](auto x) {
        
        if constexpr(x == s) {
          ++in;
        } else {
          *(uint16_t *)out = *(uint16_t *)in;
          out +=2; in += 2;
        }
        
      });
      
      return in;
    };
    
    auto f(uint8_t * in, uint8_t * out) {
        return copy(in, out, 33_c, 15_c);
    }

    https://habr.com/ru/post/482834/#comment_21094618
    > Простая задача, самый базовый вариант https://godbolt.org/z/5F5mt9 — повторите.

    Очередные набросы крестоговна на хабр от царя.

    Найдите UB.

    j123123, 06 Января 2020

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

    −3

    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
    99. 99
    void push_stack(node *topPTR, int value) {
    	node newPTR = malloc(sizeof(Stack));
    
    	if (newPTR != NULL) {
    
    		newPTR->alpha = value;
    		newPTR->nxtPTR = *topPTR;
    		*topPTR = newPTR;
    	}
    	else {
    
    		puts("error");
    	}
    }
    
    void push_stack_2(node_2 *topPTR_2,  double value) {
    
    	node_2 newPTR = malloc(sizeof(Stack_2));
    
    	if (newPTR != NULL) {
    
    		newPTR->alpha = value;
    		newPTR->nxtPTR_2 = (void *)  *topPTR_2;
    		*topPTR_2 = newPTR;
    
    	}
    	else {
    
    		puts("error");
    	}
    }
    
    int pop(node *fix) {
    	
    	int  value = 0;
    	node temp = *fix;
    	value = (*fix)->alpha;
    	*fix = (*fix)->nxtPTR;
    	free(temp);
    return value;
    }
    
    double pop_2(node_2 *fix) {
    	double  value = 0;
    	node_2 temp = *fix;
    	value = (*fix)->alpha;
    	*fix = (void *)   (*fix)->nxtPTR_2;
    	free(temp);
    return value;
    }
    
    char check_stack(node data) {
    	return data->alpha   ==  0  ;
    }
    
    int isOperator(char c) {
    	return c == '/' || c == '*' || c == '-' || c == '+' || c == '^' ;
    }
    
    int precedence(char data_1, char  data_2) {
    		
    		switch(data_1){
    		case '(':	
    		return -1;
    		case '^':
    	
    			if(data_2 == '^' ){
    					return    0;
    			} 
    			 else if (data_2 == '*' || data_2 == '/' || data_2 == '+' || data_2 == '-'   ){
    			 	
    			 }
    	 		
    	 	case 	'/' : 
            case 	'*':        
    			
    			if(data_2 == '^' ){
    					return    -1;
    				} 
    					else if( data_2 == '/' || data_2 == '*'     ){
    						return    0;
    					}	
    				
    			else if( data_2 == '+' || data_2 == '-'     ){
    						return     1;
    		
    		}
    		
    		case  '+':
    		case  '-':		
    		
    		if(data_2 == '^'  || data_2 == '/' || data_2 == '*'        ){
    			return    -1;
    				} 
    		else{
    			return     0;
    			 }
    		}
    }

    calc 3

    tyrin, 05 Января 2020

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