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

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

    +4

    1. 1
    2. 2
    Минск 2
    Встреча говнокодеров.

    #1: https://govnokod.ru/25937 https://govnokod.xyz/_25937

    guestinxo, 28 Февраля 2020

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

    +3

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    9. 9
    «Специалист по кибербезопасности» едет в питер учить несмышленышей об опасностях в сети.
    Едет он из эстонии, где и живет, потому что парень неглупый и понимает, что в россии таким людям делать 
    нечего, но необходимость дать неокрепшим умам хоть какое-то представление о безопасности конечно 
    сильнее всех, неурядиц, которые могут подстерегать в этой стране.
    Между эстонией и питером, как известно, располагается екатеринбург, куда он и двигает - потусить с какой-то 
    инстаграмной барышней, которую он до этого никогда вживую не видел. На барышню надо произвести 
    впечатление, для чего заказывается метамфетаминовая закладка, и где-то там в этой всей неразберихе 
    появляются менты, которые и принимают «специалиста по кибербезопасности».
    Ну хоть сервак не взломали.

    https://www.znak.com/2020-02-24/sozdatel_krasnoy_knopki_litreev_priznal_ vinu_po_delu_o_nezakonnom_oborote_narkot ikov

    Fike, 24 Февраля 2020

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

    +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
    struct Test
    {
    	Array<int> intArray;
    	int fixedIntArray[3];
    	bool booleanVal;
    	float flt;
    	Array<string> stringArray;
    
    	ADD_REFLECTION(Test, intArray, fixedIntArray, booleanVal, flt, stringArray);
    };
    
    struct SuperTest
    {
    	Array<string> strArr;
    	int foo;
    	string str;
    	Array<short> vals;
    	double dbl;
    	Test tests[3];
    	ushort bar;
    
    	ADD_REFLECTION(SuperTest, strArr, foo, str, vals, dbl, tests, bar);
    };
    
    int main()
    {
    	StringView structText = R"({
    		.strArr = {"str1", "ergvwr", "brt"},
    		.foo = 5,
    		.str = "gammaker",
    		.vals = {-4, 66, 432, -95},
    		.dbl = 3.1415926535897932384626433832795,
    		{
    			{
    				.fixedIntArray = {9, 4, 85},
    				.stringArray = {"test 0 A", "test 0 B", "test 0 C"},
    				.booleanVal = true,
    				.intArray = {43, 54, 36, 76},
    				.flt = 1.23456,
    				.flt = 2.34567
    			},
    			{
    				.intArray = {},
    				.fixedIntArray = {3655456, 234, 3},
    				.booleanVal = false,
    				.flt = 2.718281828,
    				.stringArray = {"test 1 A", "test 1 B"}
    			},
    			{
    				.intArray = {1531, 1253, 16, 634, 236462363},
    				.fixedIntArray = {9435, 435, 8355},
    				.booleanVal = false,
    				.flt = 123.65,
    				.stringArray = {"test 2 A", "test 2 B", "test 2 C", "test 2 D"}
    			}
    		},
    		.bar = 1025
    	})";
    
    	Data::TextDeserializer deserializer(Data::DataLanguageParams::CStructInitializer, structText);
    	SuperTest test = deserializer.Deserialize<SuperTest>();
    
    	char charBuf[5000];
    	Data::TextSerializer serializer(Data::DataLanguageParams::Json, Data::TextSerializerParams::Verbose, ArrayRange<char>(charBuf, 5000));
    	serializer.NestingLevel=-1;
    	serializer.Serialize(test);
    	Console.PrintLine(serializer.GetString());
    
    	Data::DataLanguageParams rusML;
    	rusML.RequireFieldAssignments = false;
    	rusML.AddFieldNameAfterAssignment = false;
    	rusML.LeftAssignmentOperator = "равно";
    	rusML.FieldSeparator = " следующее поле";
    	rusML.LeftFieldNameBeginQuote = null;
    	rusML.LeftFieldNameEndQuote = null;
    	rusML.RightFieldNameBeginQuote = null;
    	rusML.RightFieldNameEndQuote = null;
    	rusML.StructInstanceOpen = "начало структуры";
    	rusML.StructInstanceClose = " структура кончилась";
    	rusML.OneLineCommentBegin = "комментарий:";
    	rusML.StringQuote="\"";
    	rusML.CharQuotes = "";
    	rusML.ArrayOpen = " массив начался ";
    	rusML.ArrayClose = " кончился массив ";
    	rusML.ArrayElementSeparator = " дальше";
    	rusML.FalseTrueNames[0] = "нет";
    	rusML.FalseTrueNames[0] = "да";
    	rusML.DecimalSeparator = ',';
    
    	serializer = Data::TextSerializer(rusML, Data::TextSerializerParams::Verbose, ArrayRange<char>(charBuf, 5000));
    	serializer.NestingLevel=-1;
    	serializer.Serialize(test);
    	Console.PrintLine(serializer.GetString());
    
    	return 0;
    }

    Сделал автоматический сериализатор с кучей параметров, используя которые можно описать JSON, инициализаторы C'шных и D'шных структур, подмножество XML или какой-нибудь свой кастомный формат. Здесь показана десериализация сишного инициализатора с designated initializers, который почему-то не добавили в C++. Затем полученная структура сериализуется в JSON (его описание в моём хидере, и здесь не приведено), а затем в придуманный мной ради прикола язык разметки rusML, описание которого можно видеть в коде.

    Выводит (табы порезались):

    {
    "strArr" : ["str1", "ergvwr", "brt"],
    "foo" : 5,
    "str" : "gammaker",
    "vals" : [-4, 66, 432, -95],
    "dbl" : 3.141592653589789,
    "tests" : [
    {
    "intArray" : [43, 54, 36, 76],
    "fixedIntArray" : [9, 4, 85],
    "booleanVal" : true,
    "flt" : 2.3456699,
    "stringArray" : ["test 0 A", "test 0 B", "test 0 C"]
    },
    {
    "intArray" : [],
    "fixedIntArray" : [3655456, 234, 3],
    "booleanVal" : false,
    "flt" : 2.7182817,
    "stringArray" : ["test 1 A", "test 1 B"]
    },
    {
    "intArray" : [1531, 1253, 16, 634, 236462363],
    "fixedIntArray" : [9435, 435, 8355],
    "booleanVal" : false,
    "flt" : 123.6499938,
    "stringArray" : ["test 2 A", "test 2 B", "test 2 C", "test 2 D"]
    }
    ],
    "bar" : 1025
    }

    начало структуры
    strArr равно массив начался "str1" дальше "ergvwr" дальше "brt" кончился массив следующее поле
    foo равно 5 следующее поле
    str равно "gammaker" следующее поле
    vals равно массив начался -4 дальше 66 дальше 432 дальше -95 кончился массив следующее поле
    ...

    gammaker, 30 Июля 2016

    Комментарии (173)
  5. Java / Говнокод #16233

    +75

    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
    import java.lang.reflect.Field; 
    
    public class Main {
        public static void main(String[] args) throws Exception {
            Class cache = Integer.class.getDeclaredClasses()[0];
            Field c = cache.getDeclaredField("cache");
            c.setAccessible(true);
            Integer[] array = (Integer[]) c.get(cache);
            array[132] = array[133];
    
            System.out.printf("%d",2 + 2);
        }
    }

    Джаважды джва равно пять

    http://ideone.com/1Ap0wW

    TarasB, 25 Июня 2014

    Комментарии (173)
  6. Куча / Говнокод #10265

    +115

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    9. 9
    count c l = length $ filter (c==) l
     
    main = do 
            l <- getLine
            let
                    f = count '(' l
                    s = count ')' l
            in
            print $ f s (f==s)

    Посоны, как смешивать монадический код и не монадический?
    http://ideone.com/yRGDk
    Чистый код let in не хочет в монду.

    HaskellGovno, 14 Мая 2012

    Комментарии (173)
  7. JavaScript / Говнокод #6460

    +206

    1. 1
    ... else document.write("Ваш браузер не поддерживает JavaScript<br>");

    просто нет слов :)

    jQuery, 23 Апреля 2011

    Комментарии (173)
  8. Куча / Говнокод #27680

    +3

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    Тред в котором я после обновления rt ядра на обычное нереалтаймовое чиню связку jack2, jack2-dbus и pulseaudio-jack
    
    Задача в том, чтобы корректно стартовал jack_control start, показывался pulseaudio-jack-sink и можно было прокинуть звук из па приложений в джек.
    
    На данный момент утрачена возможность старта, какая-то хуйня с правами или чем-то таким. Юзер у меня задобавлен в группы audio и realtime, для него
    написаны какие-то повышенные привилегии. С rt-ядром это работало. Сейчас хуй знает почему, но запущенный от юзера QJackCtl не имеет доступа к
    сокетам джек-сервера в /dev/shm, которые все root root.

    vistefan, 25 Сентября 2021

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

    +10

    1. 1
    2. 2
    3. 3
    4. 4
    #ifdef _MSC_VER
    template<typename> using void_t = void;
    __if_exists(void_t<int>) {}
    #endif

    Эти строчки превратят Visual Studio 2015 в блокнот с подсветкой синтаксиса.
    Для максимального эффекта их следует поместить в stdafx.h или любой другой повсеместно используемый заголовок.
    Предположительно, на более старых студиях будет тот же эффект, но я не проверял.

    gammaker, 05 Августа 2016

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

    +139

    1. 1
    #define LIFMT(X) (long int) (X)

    Всё тот же квантовохимический пакет. Что характерно, от обычных кастов дальше никто не отказывается.

    dxd, 20 Марта 2015

    Комментарии (172)
  11. Assembler / Говнокод #11319

    +146

    1. 1
    huiX5uiPH5;;P5;@@5HH4XPPDXDPhuiX5fiTГ

    Было запощено в 11315, но, мне кажется, что этот ГК заслуживает отдельного топика.

    Когда-то давно пытался на ассемблере включить видеорежим 320x200x256 (13h) и порисовать. Но XP сменив режим потеряла управление. Помог только ребут. В тот день, матерясь на MS, я и решил написать эту строчку так, чтобы ее можно было вводить с помощью обычного блокнота на любой машине...

    Системные требования: Windows XP
    Текст набирается в кодировке CP1251. Файл должен иметь расширение COM.

    bormand, 29 Июня 2012

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