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

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

    −4

    1. 1
    2. 2
    3. 3
    Как называется физическая сеть, разбитая на подсети?
    
    (man dhcpd.conf)

    OlegUP, 01 Сентября 2018

    Комментарии (3)
  3. Python / Говнокод #24706

    −2

    1. 1
    if type(colType) == type(0): # it's a length

    Библиотека csv, встроенная в питон.

    syoma, 01 Сентября 2018

    Комментарии (3)
  4. Си / Говнокод #24697

    −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
    //+-------------------------------------------------------------------------
    //
    //  Function:   GetNumberOfType
    //              SetNumberOfType
    //
    //  Synopsis:   Helpers to get/set an integer value of given variant type
    //              by dereferencing a pointer
    //
    //              pv - pointer to dereference
    //              vt - variant type
    //
    //--------------------------------------------------------------------------
    
    // BUGBUG: The VC 5 compiler flags this as an error because VT_BOOL4 is not
    // a valid VARENUM value.  Disable the warning for now.
    #pragma warning(disable:4063)       // case '254' is not a valid value for switch of enum 'VARENUM'
    
    long
    GetNumberOfType (void * pv, VARENUM vt)
    {
        switch(vt)
        {
            case VT_I2:
            case VT_BOOL:
                return * (SHORT*) pv;
    
            case VT_I4:
            case VT_BOOL4:
                return * (LONG*) pv;
    
            default:
                Assert(FALSE);
                return 0;
        }
    }
    
    void
    SetNumberOfType (void * pv, VARENUM vt, long l)
    {
        switch(vt)
        {
            case VT_BOOL:
                l = l ? VB_TRUE : VB_FALSE;
                //  vvvvvvvvvvv  FALL THROUGH vvvvvvvvvvvvv
    
            case VT_I2:
                Assert(l >= SHRT_MIN && l <= SHRT_MAX);
                * (SHORT*) pv = SHORT(l);
                break;
    
            case VT_BOOL4:
                l = l ? VB_TRUE : VB_FALSE;
                //  vvvvvvvvvvv  FALL THROUGH vvvvvvvvvvvvv
    
            case VT_I4:
                * (LONG_UNALIGNED *) pv = l;
                break;
    
            default:
                Assert(FALSE);
        }
    }

    Опять какая-то сранина известно откуда.

    CCAHA9I_CPAHIHA, 31 Августа 2018

    Комментарии (3)
  5. C++ / Говнокод #24688

    0

    1. 1
    2. 2
    #define ONE_GB 1024
    #define FIVE_GB 5115

    Написано в очень известной Калифорнийской конторе

    Starl1ght, 30 Августа 2018

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

    +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
    class TaxStorage {
    public:
      using TaxCode = Code<3>; // Code<int N, typename Storage = uint32_t> тип для маленьких строк
      using TaxType = Code<3>;
      using TaxId = std::tuple<TaxCode, TaxType>;
      using TaxMap = std::map<TaxId, int>
    
      using CityId = int;
      using TaxPointMap = std::unordered_map<CityId, TaxMap>;
    
      TaxMap forCityOrOther(const TaxPointMap& map, const CityId cityId) const {
        const auto found = map.find(cityId);
        return found == map.cend() ? map.at(OTHER_CITY) : *found; // должно быть found->second
      }
    }

    Dev: Ok GCC, tell me what is wrong.
    GCC: /home/whatever/project/TaxStorage.h:102: error: incompatible operand types ('const std::unordered_map<int, std::map<std::tuple<Code<3, unsigned int>, Code<3, unsigned int> >, std::vector<unsigned long, std::allocator<unsigned long> >, std::less<std::tuple<Code<3, unsigned int>, Code<3, unsigned int> > >, std::allocator<std::pair<const std::tuple<Code<3, unsigned int>, Code<3, unsigned int> >, std::vector<unsigned long, std::allocator<unsigned long> > > > >, std::hash<int>, std::equal_to<int>, std::allocator<std::pair<const int, std::map<std::tuple<Code<3, unsigned int>, Code<3, unsigned int> >, std::vector<unsigned long, std::allocator<unsigned long> >, std::less<std::tuple<Code<3, unsigned int>, Code<3, unsigned int> > >, std::allocator<std::pair<const std::tuple<Code<3, unsigned int>, Code<3, unsigned int> >, std::vector<unsigned long, std::allocator<unsigned long> > > > > > > >::mapped_type' (aka 'const std::map<std::tuple<Code<3, unsigned int>, Code<3, unsigned int> >, std::vector<unsigned long, std::allocator<unsigned long> >, std::less<std::tuple<Code<3, unsigned int>, Code<3, unsigned int> > >, std::allocator<std::pair<const std::tuple<Code<3, unsigned int>, Code<3, unsigned int> >, std::vector<unsigned long, std::allocator<unsigned long> > > > >') and 'const std::pair<const int, std::map<std::tuple<Code<3, unsigned int>, Code<3, unsigned int> >, std::vector<unsigned long, std::allocator<unsigned long> >, std::less<std::tuple<Code<3, unsigned int>, Code<3, unsigned int> > >, std::allocator<std::pair<const std::tuple<Code<3, unsigned int>, Code<3, unsigned int> >, std::vector<unsigned long, std::allocator<unsigned long> > > > > >')

    ДОКОЛЕ?!!

    Elvenfighter, 24 Августа 2018

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

    −1

    1. 1
    2. 2
    $query  = "SELECT * FROM archivo_mhora WHERE id_aparato=" . $aparatos_row->id;
    $query .= " && DATE_FORMAT(fecha, '%Y.%m.%d')='" . date('Y.m.d', $cur_fecha) . "' ORDER BY energy";

    Я не знаю, к какой секции следует отнести этот высер:
    1) Автор решил учить испанский. Таблицы имеют имена `aparatos`, `abonandos`, etc
    2) Само собой, SQL injection
    3) Порнография при работе с датой

    kai, 23 Августа 2018

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

    −1

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    #include <stdio.h>
    #include <inttypes.h> 
    
    int main(void) {
    	float a = 0;
    	float b = -9.8 * 0;
    	uint32_t* pa = (void*)&a;
    	uint32_t* pb = (void*)&b;
    	printf("%li %li %i %f %f\n",pa[0] , pb[0], pb[0]>>31, b+0, b);
    	return 0;
    }

    Нолик со взведенным знаковым битом. Вот зачем он нужен?

    Psionic, 16 Августа 2018

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

    −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
    try
    {
        ...
    }
    #if DEBUG
          catch
    #else
          catch
    #endif
    {
          ...
    }

    delpher, 18 Июля 2018

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

    +2

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    Попытка
    
       Если Найти( ОформлениеСтроки.ДанныеСтроки.Загружен, Истина ) Тогда
          // раскраска строки
       КонецЕсли;
    
    Исключение
    КонецПопытки

    На первый взгляд возникает вопрос: WTF???7семь
    На десятый взгляд меня посетили сомненья, ведь код а) рабочий, и 2) гениален!
    Смотрите сами.

    Вместо "Если ОформлениеСтроки.ДанныеСтроки.Загружен Тогда"

    гений с большой буквы "Г" делает финт ушами с наподвыподвертом:
    Так как функция "Найти" работает со строками и 1С автоматически преобразует, где возможно, типы, булево значение ОформлениеСтроки.ДанныеСтроки.Загружен приводится к строке, равной "Истина" или "Ложь". Второй аргумент также приводится к строке, равной "Истина". Далее функция "Найти" выполняет поиск подстроки (аргумент №2) в строке (аргумент №1) и возвращает позицию найденной подстроки, в результате имеем 1 если ОформлениеСтроки.ДанныеСтроки.Загружен = Истина, или 0 в противном случае.
    Получается

    Если 1 Тогда....
    или
    Если 0 Тогда....

    где 1 или 0 автоматически приводится 1Ской к типу булево, где Булево(1) = Истина, и Булево(0) = Ложь.

    ИГОГО:
    Условие выполняется, а гений с большой буквы "Г"... пугает меня, если честно, одним своим существованием о_О

    whiledoman, 17 Июля 2018

    Комментарии (3)
  11. C++ / Говнокод #24487

    +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
    // https://habr.com/post/417027/
    // Как я стандартную библиотеку C++11 писал или почему boost такой страшный
    // https://github.com/oktonion/stdex/blob/1472fd5e2f5e0d10a136518631055c3aad2e1cfd/stdex/include/thread.hpp#L51
    
    
    		template<class R, class T1>
    		struct _function_traits<R(*)(T1)>
    		{
    			typedef R result_type;
    			typedef T1 arg1_type;
    			typedef T1 argument_type;
    		};
    
    		template<class R, class T1, class T2>
    		struct _function_traits<R(*)(T1, T2)>
    		{
    			typedef R result_type;
    			typedef T1 arg1_type;
    			typedef T2 arg2_type;
    			
    			
    		};
    
    		template<class R, class T1, class T2, class T3>
    		struct _function_traits<R(*)(T1, T2, T3)>
    		{
    			typedef R result_type;
    			typedef T1 arg1_type;
    			typedef T2 arg2_type;
    			typedef T3 arg3_type;
    		};
    
    		template<class R, class T1, class T2, class T3, class T4>
    		struct _function_traits<R(*)(T1, T2, T3, T4)>
    		{
    			typedef R result_type;
    			typedef T1 arg1_type;
    			typedef T2 arg2_type;
    			typedef T3 arg3_type;
    			typedef T4 arg4_type;
    		};
    
    		template<class R, class T1, class T2, class T3, class T4,
    			class T5>
    		struct _function_traits<R(*)(T1, T2, T3, T4, T5)>
    		{
    			typedef R result_type;
    			typedef T1 arg1_type;
    			typedef T2 arg2_type;
    			typedef T3 arg3_type;
    			typedef T4 arg4_type;
    			typedef T5 arg5_type;
    		};
    
    		template<class R, class T1, class T2, class T3, class T4,
    			class T5, class T6>
    		struct _function_traits<R(*)(T1, T2, T3, T4, T5, T6)>
    		{
    			typedef R result_type;
    			typedef T1 arg1_type;
    			typedef T2 arg2_type;
    			typedef T3 arg3_type;
    			typedef T4 arg4_type;
    			typedef T5 arg5_type;
    			typedef T6 arg6_type;
    		};
    
    		template<class R, class T1, class T2, class T3, class T4,
    			class T5, class T6, class T7>
    		struct _function_traits<R(*)(T1, T2, T3, T4, T5, T6, T7)>
    		{
    			typedef R result_type;
    			typedef T1 arg1_type;
    			typedef T2 arg2_type;
    			typedef T3 arg3_type;
    			typedef T4 arg4_type;
    			typedef T5 arg5_type;
    			typedef T6 arg6_type;
    			typedef T7 arg7_type;
    		};
    
    ...

    > На дворе был 2017 год! Уже C++ 17 активно вводился в GCC, clang, Visual Studio, везде был decltype (since C++ 11), constexpr (since C++ 11, но существенно доработан), модули уже почти на подходе, хорошее время было. Я же находился на работе и с некоторым неодобрением смотрел на очередной Internal Compiler Error в своем Borland C++ Builder 6.0, а так же на множество ошибок сборки с очередной версией библиотеки boost. Думаю, теперь вы понимаете, откуда взялась эта тяга к велосипедостроению. У нас использовался Borland C++ Builder 6.0 и Visual Studio 2010 под Windows, g++ версии 4.4.2 или ниже под QNX и под некоторые unix системы. От MacOS мы были избавлены, что несомненно было плюсом. Ни о каких других компиляторах (под C++ 11 в том числе) речи даже быть не могло по соображениям, которые мы оставим за пределами данной статьи.

    > «А что там может быть на столько сложного» — закралась мысль в мой измученный попытками завести boost под старый-добрый builder мозг. «Мне всего то нужно type_traits, thread, mutex, возможно chrono, nullptr было бы еще неплохо.» — рассудил я и принялся за работу.

    j123123, 13 Июля 2018

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