1. Objective C / Говнокод #18364

    −395

    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
    + (NSArray *)orderDBFilePaths:(NSArray *)paths {
        NSMutableDictionary *dictionary = [NSMutableDictionary new];
        
        for (NSString *path in paths) {
            if ([path hasSuffix:@"-shm"]) {
                [dictionary setObject:path forKey:@2];
            } else if ([path hasSuffix:@"-wal"]) {
                [dictionary setObject:path forKey:@1];
            } else {
                [dictionary setObject:path forKey:@0];
            }
        }
        
        return @[dictionary[@0], dictionary[@1], dictionary[@2]];
    }

    Сортировка фалов *.sqlite* в порядке *.sqlite, *.sqlite-wal, *.sqlite-shm для бэкапа правильного рестора бэкапа в коде 4х летней давности.

    Drenwtc, 18 Июня 2015

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

    +145

    1. 1
    {"Windows 2013", NULL, 0, ACPI_OSI_WIN_8}, /* Windows 8.1 and Server 2012 R2 - Added 01/2014 */

    3 вечера ёбли... 20+ собранных ядер во время бисекта и экспериментов...

    А всё из-за пидорасов из acer, которые воткнули в свою прошивку какой-то костыль для windows 8.1, который ломал все свежие ядра линухи (а если не совсем ломал - то не работал тачпад). И из-за пидорасов из других вендоров, которые вынудили линукс прикидываться свежей виндой.

    bormand, 18 Июня 2015

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

    +144

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    9. 9
    public void checkApply()
            {
                if (((((Parent as StackPanel).Parent as Grid).Parent as ToolControlPanel).Parent as ToolControl).Parent != null)
                {
                    var w = (((((((((Parent as StackPanel).Parent as Grid).Parent as ToolControlPanel).Parent as ToolControl).Parent as DockPanel).Parent as DockPanel).Parent as DockPanel).Parent as Window).Owner as MainWindow);
                    if (w != null)
                        w.EnableApplyNext();
                }
            }

    промолчу... ибо и так все ясно... :)

    Tlk, 18 Июня 2015

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

    +142

    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
    void AttachToParser(Parser* pParser)
    {
    	parser=pParser;
    		
    	static const char* const typeNames[]={"ShaderInterface", "ShaderModule", "ShaderModuleType", "ShaderModulePattern", "ShaderTemplate"};
    	typedef void (ShaderGeneratorParser::* StructureProcessor)();
    	static StructureProcessor processors[]={&ShaderGeneratorParser::ProcessShaderInterface, &ShaderGeneratorParser::ProcessShaderModule,
    		&ShaderGeneratorParser::ProcessShaderModuleType, &ShaderGeneratorParser::ProcessShaderModulePattern, &ShaderGeneratorParser::ProcessShaderTemplate};
    
    	for(uint i=0; i<numof(processors); i++)
    	{
    		auto processor=processors[i];
    		ShaderGeneratorParser mycopy=*this;
    		parser->DeclarationBlockParsers.Append(typeNames[i], [mycopy, processor]() mutable {(mycopy.*processor)();});
    	}
    }

    Делаю парсер конфигов для своего игрового движка. Он готов наверное всего на 10% и представлял собой один класс, который уже разросся. Стало неудобно по нему передвигаться. Решил разбить парсер на модули. Это код того, как один из модулей цепляется к основному классу парсера.
    Этот модуль умеет парсить 5 разных блоков, объединённых общим назначением - сборка шейдеров из модулей. За каждый тип блоков отвечает своя функция. Об этом функция и сообщает основному классу.

    Цель такая, чтобы модуль работал даже после удаления самого экземпляра. Для этого пришлось пропихнуть копию экземпляра внутрь std::function. Более нормального способа, чем через лямбду с замканием, я не нашёл.

    gammaker, 18 Июня 2015

    Комментарии (0)
  5. PHP / Говнокод #18360

    +171

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    мне кажется, до полноценности php не хватает несколько функций:
    alias() - заменяет один код другим кодом при парсинге,
    var_history() - возвращает историю значений переменной в виде массива,
    function_history() - возвращает массив аргументов, которые передавались функции,
    var() - устанавливает и изменяет значение и тип переменной.

    С тостера

    pi3141592653, 18 Июня 2015

    Комментарии (90)
  6. PHP / Говнокод #18359

    +145

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    foreach ($news as $post) {
                if (isset($post->important)) {
                    if($post->important == 1)
                    {
                    $import = $post;
                    break;
                    }
                }
                $import = 0;
            }
    
    if (!is_integer($import)) // ...

    Tairesh, 18 Июня 2015

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

    +142

    1. 1
    2. 2
    3. 3
    return ("" + ((10 - (acn = "229" + acn)
                            .Select((c, с) => (int)(c - '0') * (с % 2 + 1))
                            .Sum(c => c / 10 + c % 10) % 10) % 10)).Insert(0, acn);

    symon, 18 Июня 2015

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

    +145

    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
    public string define(string content)
        {
                    int till;
                    char[] CharArr = content.ToCharArray();
                    for (int i = 0; i < CharArr.Length; i++)
                    {
                        if (CharArr[i] == 'i')
                        {
                            till = i;
                        }
                    }
                    string Re = content.Substring(0,till);
                    return Re;
                }

    С тостера. Я рыдал.

    planaric, 18 Июня 2015

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

    +145

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    protected virtual void OnDisconnected()
    {
    		DispatcherHelper.CheckBeginInvokeOnUI(() =>
    		{
    			...
    			Cameras.ToList().Clear();
    			Meltings.ToList().Clear();
    			Spans.ToList().Clear();
    			...
    		});
    }

    Очищаем коллекции с данными, привязанные на списковые контролы UI. Доступ к свойствам Cameras, Meltings, Spans только через IEnumerable<>. Как же их очистить?

    elmanav, 18 Июня 2015

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

    +144

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    public static class BoolExt
        {
            public static string ToYesNoString(this bool value)
            {
                return value ? "Да" : "Нет";
            }
        }

    alexCoder2007, 17 Июня 2015

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