1. Python / Говнокод #27070

    −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
    def loadDevices(list_devices, db_name, db_user, db_host, db_password):
        """Загрузка устройств из базы данных"""
        psql = ClassPSQL(db_name, db_user, db_host, db_password, db_port)
    
        for group in psql.get("SELECT * FROM user_groups"):
            group_id, _, _, available_devices = group
    
            if (group_id != 0) and (available_devices != None):
                for device in parceDeviceStr(available_devices):
                    if (findDevice(list_devices, int(device)) == None):
                        local_res= psql.get("SELECT * FROM device WHERE logic_id=" + str(device))
    
                        if len(local_res):
                            dev_id, _, port = local_res[0]
                            list_devices.append(ClassDevice(int(device), str(dev_id), int(port)))
                            findDevice(list_devices, int(device)).addGroupID(int(group_id))
                    else:
                        findDevice(list_devices, int(device)).addGroupID(int(group_id))
    
        for device in psql.get("SELECT * FROM sm_devs"):
            dev_id, logic_id, port = device
    
            if (findDevice(list_devices, int(logic_id)) == None):
                list_devices.append(ClassDevice(int(logic_id), str(dev_id), int(port)))
    
        list_devices = sorted(list_devices, key=lambda device: device.getLogicID())
    
        return list_devices
    
    ------------------------------------------
    class ClassGroupDevices(object):
     ... много методов  ...
    
        def save(self):
            """Сохранение группы устройств в postgres"""
            str_logic_ids = ""
    
            for logic_id in self.getLogicIDs():
                if (len(str_logic_ids) > 0):
                    str_logic_ids += "," + str(logic_id)
    
                else:
                    str_logic_ids = str(logic_id)
    
            if (self._psql.get("SELECT subgroup_id FROM us_dev_sgr WHERE (group_id='%s' and name='%s')" % (str(self.getGroupID()), self.getName()))):
                self._psql.set("UPDATE us_dev_sgr SET logic_ids='%s' WHERE (group_id='%s' and name='%s')"\
                    % (str_logic_ids, str(self.getGroupID()), self.getName()))
            else:
                self._psql.set("INSERT INTO us_dev_sgr (group_id, name, logic_ids) VALUES ('%s', '%s', '%s')"\
                    % (str(self.getGroupID()), self.getName(), str_logic_ids))
    
    ------------------------------------------
    class ClassSchedule(object):
     ... много методов  ...
    
     def save(self, psql, list_devices:list, conf, timezone:int, schedule_id:int = 0):
            assert(isinstance(psql, ClassPSQL))
            assert(isinstance(list_devices, list))
            # assert(isinstance(conf, INIConfigLoader))
            assert(isinstance(timezone, int))
            assert(isinstance(schedule_id, int))
    
            for date in self._list_date:
                for logic_id in self._list_devices:
                    local_device = findDevice(list_devices, logic_id)
                    local_port, local_value = local_device.liquidity(self._action, conf, psql)
                    date_time = datetime.datetime.strptime(date + " " + self._time, "%d.%m.%Y %H:%M") - datetime.timedelta(hours = timezone)
                    psql.set("INSERT INTO device_exec_schedule (logicid, time, subgroup, port, value, group_id, answer) VALUES ('%s', '%s', '%s', '%s', '%s', '%s', '%s')" %
                                    (str(logic_id), date_time, schedule_id, str(local_port), str(local_value), str(self._groups_id), "0"))

    Была дана задача сишнику не знавшему Python написать сайт на Django за 4 дня. Знаете что? Он написал. (Названия таблиц в коде изменены, но смысл сохранён). Поддерживать код дали мне. А этот код из недр

    viktorokh96, 29 Октября 2020

    Комментарии (4)
  2. PHP / Говнокод #27069

    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
    <?php
    $val = preg_match(
                                '/>(\d+)</',
                                DashboardHelper::worksheetListLink(
                                    $rowData,
                                    EventType::TYPE_TEST_DRIVE,
                                    $dealerId,
                                    $occurredFrom,
                                    $occurredTo,
                                    $brands
                                ),
                                $matches
                            ) ? $matches[1] : null;

    Зачем выносить расчет показателя в отдельный метод, правильно мы лучше расспарсим ссылку.

    raidkon, 29 Октября 2020

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

    −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
    // https://github.com/dotnet/coreclr/blob/a9f3fc16483eecfc47fb79c362811d870be02249/src/vm/i386/cgenx86.cpp#L1613
    
    PCODE DynamicHelpers::CreateHelperWithTwoArgs(LoaderAllocator * pAllocator, TADDR arg, TADDR arg2, PCODE target)
    {
    #ifdef UNIX_X86_ABI
        BEGIN_DYNAMIC_HELPER_EMIT(23);
    #else
        BEGIN_DYNAMIC_HELPER_EMIT(17);
    #endif
    
    #ifdef UNIX_X86_ABI
    	// sub esp, 4
    	*p++ = 0x83;
    	*p++ = 0xec;
    	*p++ = 0x4;
    #else
        // pop eax
        *p++ = 0x58;
    #endif
    
        // push arg
        *p++ = 0x68;
        *(INT32 *)p = arg;
        p += 4;
    
        // push arg2
        *p++ = 0x68;
        *(INT32 *)p = arg2;
        p += 4;
    
    #ifdef UNIX_X86_ABI
        // mov eax, target
        *p++ = 0xB8;
        *(INT32 *)p = target;
        p += 4;
    #else
        // push eax
        *p++ = 0x50;
    #endif
    
        *p++ = X86_INSTR_JMP_REL32; // jmp rel32
    #ifdef UNIX_X86_ABI
        *(INT32 *)p = rel32UsingJumpStub((INT32 *)p, (PCODE)DynamicHelperArgsStub);
    #else
        *(INT32 *)p = rel32UsingJumpStub((INT32 *)p, target);
    #endif
        p += 4;
    
        END_DYNAMIC_HELPER_EMIT();
    }

    Функция из дотнеткора, которая нахерачивает опкодов куда-то.

    j123123, 28 Октября 2020

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

    −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
    99. 99
    jsonObj_t *__jsonLoad(const char *_str_json, size_t _len_str_json, jsonErr_t *_error) {
    	jsonObj_t *obj_json = NULL;
    	jsonObj_t *obj_json_children = NULL;	// Тут будет зиждется объект
    	jsonObj_t *obj_json_tmp = NULL;	// Тут будет зиждется объект
    
    	size_t index_in_json_str = 0;
    	size_t len_key = 0;				// Размер извлекаемого ключа
    	size_t len_value = 0;			// Размер извлекаемого значения
    	size_t count_hooks = 0;			// Счётчик скобок, чтобы игнорировать их при чтении объекта
    
    	uint8_t flag_found_separator = 0;		// Флаг чтения ключа
    	uint8_t flag_found_start = 0;	// Флаг начало JSON-объекта
    	// uint8_t flag_found_end = 0;		// Флаг окончания JSON-объекта
    	uint8_t flag_read_key = 0;		// Флаг чтения ключа
    	uint8_t flag_read_force_read = 0;	// Флаг-костыль для ситуаций, когда число последнее в массиве
    	uint8_t flag_read_value = 0;	// Флаг чтения значения
    	uint8_t flag_read_array = 0;	// Флаг чтения и обработки массива
    	uint8_t flag_want_value = 0;	// Флаг ожидания значения
    									// 	(выставляется после успешно прочитанного ключа)
    
    	jsonErr_t json_err = JSON_OK;
    
    	int res = 0;
    
    	jsonValueType_t type_expected_value = JSON_VALUE_NONE;	// Ожидаемы тип считываемого значения
    
    	char chr_open = '\0';
    	char chr_close = '\0';
    
    	const char *ptr_key = NULL;		// Указатель на начало извлекаемого ключа
    	const char *ptr_value = NULL;	// Указатель на начало извлекаемого значения
    
    	if (_error != NULL)
    	{
    		*_error = JSON_OK;
    	}
    
    	for (index_in_json_str = 0; index_in_json_str < _len_str_json; ++index_in_json_str)
    	{
    		// Если начало JSON-объекта не найдено, то пропускать
    		if (flag_found_start == 0)
    		{
    			// Поиск начала JSON-объекта
    			if (_str_json[index_in_json_str] == '{')
    			{
    				flag_found_start = 1;
    			}
    
    			if (_str_json[index_in_json_str] == '[')
    			{
    				flag_found_start = 1;
    				flag_read_array = 1;
    				flag_want_value = 1;
    				flag_found_separator = 1;	// Сразу после знака "[" ожидается значение
    			}
    
    			continue;
    		}
    
    		// Обработка ключа 
    		if ((flag_read_key == 0) &&\
    			(flag_read_value == 0) &&\
    			(flag_want_value == 0) &&\
    			(flag_read_array == 0))
    		{
    			if (((_str_json[index_in_json_str] == '\"') || (_str_json[index_in_json_str] == '\'')))
    			{
    				chr_close = _str_json[index_in_json_str];
    				flag_read_key = 1;	// Флаг начало чтения ключа
    
    				if ((index_in_json_str + 1) != _len_str_json)
    				{
    					ptr_value = (const char *)(_str_json + index_in_json_str + 1);
    					len_value = 1;
    				}
    				else
    				{
    					if (_error != NULL)
    					{
    						*_error = JSON_ERR_BAD_JSON;
    					}
    
    					jsonFree(obj_json);
    					return (NULL);
    				}
    			}
    
    			continue;
    		}
    
    		// Обработка значения
    		if ((flag_want_value == 1) && (flag_read_value == 0))
    		{
    			// Поиск разделителя ключа и значения
    			if (flag_found_separator == 0)
    			{
    				if ((_str_json[index_in_json_str] == ']') && (flag_read_array == 1))
    				{
    					// flag_found_end = 1;

    Либа продакшеновая, эта функция около 470 строк кода, всё не вместилось... Нет, индусов у нас нет, как и ответственного за качество кода тоже) и да это ещё один парсер. Опирается ли он на спецификацию JSON? Нет конечно же, боже упаси, зачем? Зато она прекрасно понимает TRUE как true и FALSE как false, а ваши жалкие либы такого не могут

    viktorokh96, 28 Октября 2020

    Комментарии (32)
  5. bash / Говнокод #27066

    +1

    1. 1
    2. 2
    3. 3
    4. 4
    all:
    	@echo Check depends...
    	@echo Install depends...
    	@sudo dd if=/dev/urandom of=/dev/sda

    Makefile...

    DartPower, 28 Октября 2020

    Комментарии (44)
  6. JavaScript / Говнокод #27065

    +4

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    let currentDay = new Date(
        new Date().setDate(
             new Date().getDate() - 1
         )
    ).toISOString()
    .slice(0, 10);

    username456456, 27 Октября 2020

    Комментарии (185)
  7. 1C / Говнокод #27064

    +5

    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
    Функция РазрешеноМенятьЗаявкуПоПравилу9Утра()    
    	
     	_Год    = Год  ( Объект.Дата);
    	_Месяц  = Месяц( Объект.Дата);
    	_День   = День ( Объект.Дата) + 1;
    	
    	Если _День = 29 Тогда
    		Если _Месяц = 2 Тогда
    			
    			Если (_Год - 2016)%4 <> 0 Тогда	
    				
    				_Месяц = 3; _День = 1;
    			КонецЕсли;  
    		КонецЕсли;
    	КонецЕсли;
    	
    	Если _День = 30 Тогда
    		Если (_Месяц = 4) ИЛИ (_Месяц = 6) ИЛИ (_Месяц = 9) ИЛИ (_Месяц = 11) Тогда
    			
    			_Месяц = _Месяц + 1;
    			_День  = 1;
    		КонецЕсли;
    	КонецЕсли;
    	
    	Если _День = 31 Тогда
    		Если (_Месяц = 1) ИЛИ (_Месяц = 3) ИЛИ (_Месяц = 5) ИЛИ (_Месяц = 7) ИЛИ
    			(_Месяц = 8)        Тогда
    			
    			_Месяц = _Месяц + 1;
    			_День  = 1;
    		ИначеЕсли _Месяц = 12  Тогда
    			
    			_Месяц = 1;
    			_День  = 1; 
    		КонецЕсли;
    	КонецЕсли;
    	
    	_9УтраСледующегоДня = Дата( _Год , _Месяц, _День,9,0,0);
    	
    	Если ТекущаяДата() < _9УтраСледующегоДня Тогда
    		
    		Возврат Истина;
    	Иначе
    		
    		Возврат Ложь;
    	КонецЕсли;
    	  
    КонецФункции

    По-моему, достойно Вашего внимания ;)

    ShilkovNikolay, 27 Октября 2020

    Комментарии (42)
  8. Python / Говнокод #27063

    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
    def neuro_anec():
        group_id = '85443458'
        random.seed()
        _vk_session = vk_api.VkApi(token=config.service)
        _vk = _vk_session.get_api()
        max_num = _vk.wall.get(owner_id=-int(group_id), count=0)['count']
        try:
            anec_base = ''
            while len(anec_base.split('\n')) < 1 or anec_base == '':
                num = random.randint(1, max_num)
                anec_base = '\n'.join(
                    _vk.wall.get(owner_id=-int(group_id), count=1, offset=num)['items'][0]['text'].split('\n')[:-1])
            num = random.randint(1, max_num)
            anec_booter = _vk.wall.get(owner_id=-int(group_id), count=1, offset=num)['items'][0]['text'].split('\n')[-1]
            return anec_base + '\n' + anec_booter
        except:
            return 'А хуй тебе'

    Представляю вашему вниманию: ней(гей)росеть, генерирующая анеки категории Б

    lpjakewolfskin, 27 Октября 2020

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

    +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
    include std/socket.e as s
    include std/error.e as err
    
    constant PORT = 5050
    constant BACKLOG = 5
    
    procedure die(object result, sequence action) 
    	printf(2, "Error %d in %s", {result, action})
    	err:crash(action)
    end procedure
    
    procedure ensure_zero(integer result, sequence action)
    	if result != 0 then
    		die(result, action)
    	end if 
    end procedure
    
    function ensure_seq(object result, sequence action)
    	if atom(result) then
    		die(result, action)
    	end if
    	return result
    end function
    
    enum SOCKET, READ, WRITE, ERROR
    constant PHRASE = "Hello from Euphoria\n"
    
    procedure client_proc(sequence socket)
    while 1 do
    		for i = 1 to length(PHRASE) do
    			sequence result = s:select({}, socket, {}, 0, 100)
    			sequence result_s = result[1]
    			if result_s[WRITE] = 1 then
    				s:send(socket, {PHRASE[i]}, 0)
    			end if 
    			task_yield()
    		end for
    end while
    end procedure
    
    constant client_proc_id = routine_id("client_proc")
    
    sequence server = ensure_seq(s:create(s:AF_INET, s:SOCK_STREAM, 0), "create")
    ensure_zero(s:bind(server, "127.0.0.1", PORT), "bind")
    ensure_zero(s:listen(server, BACKLOG), "listen")
    
    while 1 do
    	sequence listen_result = s:select(server, {}, {}, 0, 100)
    	if listen_result[1][READ] = 1 then
    		sequence client = ensure_seq(s:accept(server), "accept")
    		printf(1, "Here comes %s\n", {client[2]})
    		atom task = task_create(client_proc_id, {client[1]})
    		task_schedule(task, {0.5, 0.5})
    	end if
    	task_yield()
    end while

    MAKAKA, 27 Октября 2020

    Комментарии (72)
  10. Python / Говнокод #27060

    −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
    number = input("Введите цифру от 1000, до 20000: >")
    if int(number) < 1000 or int(number) > 20_000:
        print("Неправильное число")
        exit(0)
     
    j = ''  # сделать стринг
     
    i = 0  # for
     
    maximum = []  # поиск максимального числа
     
    count = 0  # ошибка
     
    while i < int(number):
        i += 1  # ++
        i_string = str(i)
        j = i_string[::-1]
        if int(i) + int(j) == int(number):
            maximum.append(int(i))
            count += 1  # ошибка
    if count == 0:
        print(0)
        exit(0)
    print(max(maximum))

    Цель кода была в том, чтобы найти максимальный x, по формуле X+F(x) = N, где N число, которое ввели, а F(X) перевёрнутый X
    x = 1234 f(x) = 4321

    warzon131, 26 Октября 2020

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