1. C# / Говнокод #23243

    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
    internal static object CreateDefaultEqualityComparer(Type type)
            {
                Debug.Assert(type != null && type is RuntimeType);
    
                object result = null;
                var runtimeType = (RuntimeType)type;
    
                // Specialize for byte so Array.IndexOf is faster.
                if (type == typeof(byte))
                {
                    result = new ByteEqualityComparer();
                }
                // If T implements IEquatable<T> return a GenericEqualityComparer<T>
                else if (typeof(IEquatable<>).MakeGenericType(type).IsAssignableFrom(type))
                {
                    result = CreateInstanceForAnotherGenericParameter((RuntimeType)typeof(GenericEqualityComparer<int>), runtimeType);
                }
                // Nullable does not implement IEquatable<T?> directly because that would add an extra interface call per comparison.
                // Instead, it relies on EqualityComparer<T?>.Default to specialize for nullables and do the lifted comparisons if T implements IEquatable.
                else if (type.IsGenericType)
                {
                    if (type.GetGenericTypeDefinition() == typeof(Nullable<>))
                    {
                        result = TryCreateNullableEqualityComparer(runtimeType);
                    }
                }
                // The equality comparer for enums is specialized to avoid boxing.
                else if (type.IsEnum)
                {
                    result = TryCreateEnumEqualityComparer(runtimeType);
                }
                
                return result ?? CreateInstanceForAnotherGenericParameter((RuntimeType)typeof(ObjectEqualityComparer<object>), runtimeType);
            }

    Код взят из CoreCLR mscorlib сырцов.

    Внимание вопрос. Нахерна было писать эту обосгость когда данный метод легко делается генериком без какого либо вызова "невидимого" кода?

    вот пример как все должно было быть

    ```
    internal static object CreateDefaultEqualityComparer<T>()
    {
    // Specialize for byte so Array.IndexOf is faster.
    if (typeof(T) == typeof(byte))
    {
    result = new ByteEqualityComparer();
    }
    // If T implements IEquatable<T> return a GenericEqualityComparer<T>
    else if (typeof(IEquatable<T>).IsAssignableFrom( typeof(T)))
    {
    result new GenericEqualityComparer<T>();
    }
    // Nullable does not implement IEquatable<T?> directly because that would add an extra interface call per comparison.
    // Instead, it relies on EqualityComparer<T?>.Default to specialize for nullables and do the lifted comparisons if T implements IEquatable.
    else if (typeof(T).IsGenericType)
    {
    if (typeof(T).GetGenericTypeDefinition() == typeof(Nullable<>))
    {
    result = new NullableEqualityComparer<T>();
    }
    }
    // The equality comparer for enums is specialized to avoid boxing.
    else if (typeof(T).IsEnum)
    {
    result = TryCreateEnumEqualityComparer<T>();
    }

    return result ?? new ObjectEqualityComparer<T>();
    }
    ```

    ASD_77, 07 Августа 2017

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

    +3

    1. 1
    http://blog.extremehacking.org/blog/2017/07/31/hungarian-hacker-arrested-pressing-f12/

    Вкратце: в Будапеште за миллион баксов набыдлокодили систему продажи билетов на общественный транспорт с кучей багов, как например поле с суммой было readonly, но если поправить html в браузере, то можно цену поменять, а на бэкенде никто не стал проверку суммы делать. Пацанчик этот баг нашел, написал в саппорт, а через 2 недели его мусора загребли.

    j123123, 05 Августа 2017

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

    +1

    1. 1
    2. 2
    3. 3
    CoolIntf::GetInstance().DoSomething();
    CoolIntf::GetInstance().DoSomethingElse();
    CoolIntf::GetInstance().DoAnything()

    для случая когда GetInstance() не инлайнится, кто-нибудь в крестах какое решение (без ручного введения временной переменной) для такого кода придумал?
    единственное что нашел это вот это: https://stackoverflow.com/a/2279253 .
    потому что "with" слишком общее слово которое в ж не гуглится.

    Dummy00001, 04 Августа 2017

    Комментарии (38)
  4. Java / Говнокод #23240

    +8

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    Объявление метода в интерфейсе:
    
    @NotNull
    List<ServicePojo> getAvailableServices(boolean withoutOffer);
    
    реализация:
    
    @NotNull
    @Override
    public List<ServicePojo> getAvailableServices(boolean withOfferService) {
    ...
    }

    moonson, 04 Августа 2017

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

    −1

    1. 1
    2. 2
    3. 3
    4. 4
    internal static object CopyImmutableSortedDictionary<K, V>(object original, ICopyContext context)
    {
                return original;
    }

    Microsoft Orleans https://github.com/dotnet/orleans

    Копирование объекта в 2к17

    ClockworkAlex, 04 Августа 2017

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

    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
    public void GetMapping(DbObject obj, IEnumerable<DbObject> map = null, params string[] additional)
    {
        Mapper m = Mapper.Get(obj.DialectType);
        switch (m.MapperType)
        {
            case MapperType.SST:
                m.Initialize(null, additional);
                break;
            case MapperType.SSM:
                m.Initialize(null, additional);
                break;
            default:
                throw new ArgumentException();
        }
        // применение: этот метод возвращает List<Tupple<DbObject, DbObject>>
        m.GetMappingByDialect(obj, map);
    }
    
    public enum MapperType
    {
        SST,
        SSM,
    }

    Во-вторник - этот код, выбил меня из рабочего процесса на весь день ...

    spyrytus, 04 Августа 2017

    Комментарии (0)
  7. Си / Говнокод #23237

    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
    #include <stdio.h>
    #include <string.h>
    #include <http_fetcher.h>
    #include <stdlib.h>
    
    int main(int argc, char *argv[])
    {
      if(argc != 2) { printf("Using: %s [url]\n", argv[0]); return 1; }
      http_setTimeout(15);
      if( http_setUserAgent("Mozilla/5.0 (Linux; Android 7.0; Pixel C Build/NRD90M; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/52.0.2743.98 Safari/537.36") == -1)
        http_perror("setUserAgent");
      http_setRedirects(15);
      http_setReferer("http://no-site.ru/");
      
      char *file_name = "";
      if( http_parseFilename(argv[1], &file_name) == -1)
        { http_perror("parseFilename"); return 1; }
      
      printf("Download file: %s\n", file_name);
      
      char *buff = malloc(5000);
      
      if( http_fetch(argv[1], &buff) == -1)
        { http_perror("fetch"); return 1; }
        
      printf("Write on file..\n");
      
      FILE *f = fopen(file_name, "a");
      fprintf(f, "%s", buff);
      fclose(f);
      printf("Successfully written to file \"%s\"\n", file_name);
      
      return 0;
    }

    Блять писал программу а она нихуя не контачит, ёбанная библиотека https не поддерживает!
    Не используйте эту говно библиотеку

    Bro-C, 03 Августа 2017

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

    +2

    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
    #define UM8(CONST_FLOAT,CHISLO_INT) \
                     ((CONST_FLOAT+1.0/16)<(1.0/8))?((CHISLO_INT*0)>>3):\
                      (((CONST_FLOAT+1.0/16)<(2.0/8))?((CHISLO_INT*1)>>3):\
                        (((CONST_FLOAT+1.0/16)<(3.0/8))?((CHISLO_INT*2)>>3):\
                          (((CONST_FLOAT+1.0/16)<(4.0/8))?((CHISLO_INT*3)>>3):\
                            (((CONST_FLOAT+1.0/16)<(5.0/8))?((CHISLO_INT*4)>>3):\
                              (((CONST_FLOAT+1.0/16)<(6.0/8))?((CHISLO_INT*5)>>3):\
                                (((CONST_FLOAT+1.0/16)<(7.0/8))?((CHISLO_INT*6)>>3):\
                                  (((CONST_FLOAT+1.0/16)<(8.0/8))?((CHISLO_INT*7)>>3):\
                                    (CHISLO_INT)\
                                   )\
                                 )\
                               )\
                             )\
                           )\
                         )\
                       )

    https://habrahabr.ru/post/334758/

    inho, 02 Августа 2017

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

    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
    #include <stdio.h>
    #include <sys/types.h>
    #include <sys/stat.h>
    #include <fcntl.h>
    #include <unistd.h>
    
    int checkFile(char *s)
    {
    	return ( open(s, O_RDONLY, 0) == -1) ? 0 : 1;
    }
    
    int main(int argc, char *argv[])
    {
    	if(argc != 2) { printf("Тут один аргумент важен хуле\n"); return 1; }
    	if(checkFile(argv[1]))
    	{
    		int fd = open(argv[1], O_RDONLY, 0);
    		char buffer[1024];
    		read(fd, &buffer, sizeof(buffer));
    		printf("%s\n", buffer);
    		if( close(fd) == -1) perror("close");
    	}
    	else
    		printf("Файл не существует\n");
    	return 0;
    }

    Моя альтернатива программе cat, отсасывай cat ябучий!!

    Bro-C, 02 Августа 2017

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

    +1

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    Если ЭтоНовыйОбъект Тогда
    		Если Найти(НРег(ЭтотОбъект.ТекстЗаявки),"принтер") > 0 Тогда
    			ЭтотОбъект.ВидОбращения = Справочники.ИТ_ПричинаОбращения.НайтиПоНаименованию("Принтер");
    		КонецЕсли;
    	КонецЕсли;

    Если в тексте заявки есть "принтер", значит это по принтеру, если в тексте "Замените картридж" - peaceDa рулю.

    M1CE, 02 Августа 2017

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