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

    Всего: 338

  2. Си / Говнокод #20090

    −48

    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
    # define l2cn(l1,l2,c,n) { \
                            c+=n; \
                            switch (n) { \
                            case 8: *(--(c))=(unsigned char)(((l2)>>24L)&0xff); \
                            case 7: *(--(c))=(unsigned char)(((l2)>>16L)&0xff); \
                            case 6: *(--(c))=(unsigned char)(((l2)>> 8L)&0xff); \
                            case 5: *(--(c))=(unsigned char)(((l2)     )&0xff); \
                            case 4: *(--(c))=(unsigned char)(((l1)>>24L)&0xff); \
                            case 3: *(--(c))=(unsigned char)(((l1)>>16L)&0xff); \
                            case 2: *(--(c))=(unsigned char)(((l1)>> 8L)&0xff); \
                            case 1: *(--(c))=(unsigned char)(((l1)     )&0xff); \
                                    } \
                            }

    https://github.com/openssl/openssl/blob/6218a1f57e7e25a6b9a798f00cf5f0e56a02ff31/crypto/des/des_locl.h#L151
    Интересно, на кой им делать там &0xff если оно в unsigned char скастовано и лишние биты там уже обрезаны? Или они там предполагают что unsigned char может быть не 8-битным? И вообще, это какая-то херня, почему б просто не узнать endian и не сделать memcpy предварительно развернув байты в случае необходимости? Другого макроговна там тоже хватает

    j123123, 28 Мая 2016

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

    0

    1. 1
    2. 2
    3. 3
    4. 4
    <div style="color: red; width: 100%; height:14pt; font-weight: bold;">STOP RUSSIAN AGGRESSION AGAINST 
    <span style="position: absolute; color: yellow; text-shadow: 1px 1px darkred;">
    <span style="position: absolute; height: 50%; color: blue; overflow: hidden;">UKRAINE!</span>UKRAINE!</span>
    </div>

    Какой хитрый дизайнерский ход! Это было обнаружено на http://vxheaven.org/
    пороюсь еще в исходниках вирусни которую там выкладывают, наверняка там много говна
    предлагаю добавить html в список допустимых языков на говнокоде

    j123123, 28 Мая 2016

    Комментарии (186)
  4. Куча / Говнокод #20044

    +6

    1. 1
    2. 2
    Что вообще за херня, почему для каждого язычка(рантайма) делают свой пакетный менеджер? pip, npm, cabal, Quicklisp, opam, nuget, NPMчо там еще?
    И притом все они считают что для языка %LanguageName% всенепременно надо писать пакетный менеджер на нем самом.

    Вот например когда я что-то устанавливл через pip, какая-то там херня требует openssl-devel. И узнаю я это только по ошибкам компиляции, ну т.е. там какая-то поебень криптографическая вызывается из питона, оно при установке компилирует через GCC некое говно которое инклудит какое-то .h говно от openssl, но поскольку этого .h нет, оно обламывается на этапе компиляции. Какого хера я про это должен узнавать только на этапе компиляции блядь? Какого хера я должен вручную разруливать эти говнозависимости? А если например будет программа на руби которая использует программу на лиспе, которая использует программу на хаскеле использующую программу на окамле, то что мне, всю эту поеботу тоже руками разруливать по цепочке?

    https://blog.versioneye.com/2014/01/15/which-programming-language-has-the-best-package-manager/

    какие-то уебни еще сравнивают, какой язык имеет лучший пакетный менеджер... Мудачье! Кто вам сказал что делать для каждого ёбаного языка свой пакетный менеждер это хорошая идея и что среди них может быть "лучший"? Они все говно по определению. Нужно или некое стандартное API для общения между разными пакетными менеджеры разных языков, или один единый пакетный менеджер для всего и под все ОС(а не только Gentoo).

    j123123, 19 Мая 2016

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

    +1

    1. 1
    http://pastebin.com/xww1EKP1

    http://map.vmr.gov.ua/scripts/__RasPil.js - было тут

    j123123, 18 Мая 2016

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

    −47

    1. 1
    2. 2
    3. 3
    4. 4
    int cmpfunc (const void * a, const void * b)
    {
       return ( *(int*)a - *(int*)b );
    }

    в догонку к http://govnokod.ru/19968
    http://www.tutorialspoint.com/c_standard_library/c_function_qsort.htm
    Переполнение знаковых целых чисел - не, не слышал

    j123123, 14 Мая 2016

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

    +4

    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
    $ nodejs
    > var buffer = new ArrayBuffer(2);
    undefined
    > var uint16View = new Uint16Array(buffer);
    undefined
    > var uint8View = new Uint8Array(buffer);
    undefined
    > uint16View[0]=0xff00
    65280
    > uint8View[1]
    255
    > uint8View[0]
    0

    https://developer.mozilla.org/en/docs/Web/JavaScript/Typed_arrays
    endianness - теперь и в жабаскрипте. Почти как union

    j123123, 11 Мая 2016

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

    −47

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    static inline int int_cmp(const void *a, const void *b) { 
    	const ut64 va = *(const ut64 *)a;
    	const ut64 vb = *(const ut64 *)b;
    	if (va > vb) return 1;
    	if (va < vb) return -1;
    	return 0;
    }

    j123123, 10 Мая 2016

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

    −48

    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
    // https://github.com/vk-com/kphp-kdb/blob/ce1ac4fbde2d3b546936ad07d6a748958f6d2198/net/net-http-server.c#L253
                if (D->wlen == 3 && !memcmp (D->word, "GET", 3)) {
                  D->query_type = htqt_get;
                } else if (D->wlen == 4) {
                  if (!memcmp (D->word, "HEAD", 4)) {
                    D->query_type = htqt_head;
                  } else if (!memcmp (D->word, "POST", 4)) {
                    D->query_type = htqt_post;
                  }
                }
    //...
                if (D->wlen != 0) {
                  /* HTTP/x.y */
                  if (D->wlen != 8) {
                    c->parse_state = htqp_skiptoeoln;
                    D->query_flags |= QF_ERROR;
                  } else {
                    if (!memcmp (D->word, "HTTP/1.0", 8)) {
                      D->http_ver = HTTP_V10;
                    } else if (!memcmp (D->word, "HTTP/1.1", 8)) {
                      D->http_ver = HTTP_V11;
                    } else {
                      c->parse_state = htqp_skiptoeoln;
                      D->query_flags |= QF_ERROR;
                    }
                  }
                }
    ...
              if (D->wlen == 4 && !strncasecmp (D->word, "host", 4)) {
                D->query_flags |= QF_HOST;
              } else if (D->wlen == 10 && !strncasecmp (D->word, "connection", 10)) {
                D->query_flags |= QF_CONNECTION;
              } else if (D->wlen == 14 && !strncasecmp (D->word, "content-length", 14)) {
                D->query_flags |= QF_DATASIZE;
              } else {
                D->query_flags &= ~(QF_HOST | QF_DATASIZE | QF_CONNECTION);
              }
    //...

    Великие олимпиадники-оптимизаторы, разработчики kPHP. Лучше сначала проверить длину строки, и только потом, если длина строки подходящая, проверять строку через strncasecmp (очень дорогостоящая операция)
    Об их мегагениальных оптимзациях я уже ранее писал: http://govnokod.ru/15406
    Но тут наверняка ж можно намного лучше заоптимизировать. Давайте подумаем, как можно улучшить сие творение истинных гениев

    j123123, 19 Апреля 2016

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

    −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
    42. 42
    43. 43
    44. 44
    45. 45
    46. 46
    47. 47
    48. 48
    printf(fmt,x1,x2,x3,x4,x5,x6,x7,x8,x9)
    	char fmt[];
    	{
    	extern printn, putchar;
    	char s[];
    	auto adx[], x, c;
    
    	adx = &x1; /* argument pointer */
    loop:
    	while((c = *fmt++) != '%') {
    		if(c == '\0')
    			return;
    		putchar(c);
    	}
    	x = *adx++;
    	switch (c = *fmt++) {
    
    	case 'd': /* decimal */
    	case 'o': /* octal */
    		if(x < 0) {
    			x = -x;
    			if(x<0) {  	/* is - infinity */
    				if(c=='o')
    					printf("100000");
    				else
    					printf("-32768");
    				goto loop;
    			}
    			putchar('-');
    		}
    		printn(x, c=='o'?8:10);
    		goto loop;
    
    	case 'c': /* char */
    		putchar(x);
    		goto loop;
    
    	case 's': /* string */
    		s = x;
    		while(c = *s++)
    			putchar(c);
    		goto loop;
    	}
    	putchar('%');
    	fmt--;
    	adx--;
    	goto loop;
    }

    from http://minnie.tuhs.org/cgi-bin/utree.pl?file=V2/lib/printf.c

    j123123, 06 Апреля 2016

    Комментарии (32)
  11. Куча / Говнокод #19677

    −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
    (* basic power axiom
    safe_comp_power x y =
        case
            (x = 0) and (y <> 0) -> 1
            (x = 1) -> x
            ((x <> 0) and (y >= 0)) or ((x = 0) and (y > 0)) -> x * (safe_comp_power x (y - 1))
    *)
    
    logic safe_comp_pow : int, int -> int
    
    axiom safe_comp_pow_int_A_1 : forall x : int. (x <> 0) -> safe_comp_pow(x, 0) = 1
    
    axiom safe_comp_pow_int_A_2 : forall x : int. safe_comp_pow(x, 1) = x
    
    axiom safe_comp_pow_int_A_3 : forall x,y : int. ((x <> 0) and (y >= 0)) or ((x = 0) and (y > 0)) -> safe_comp_pow(x, y) = x*(safe_comp_pow(x,y-1))
    
    
    goal g_1 :
      forall a,n : int.
      a <> 0 -> n >= 0 ->
      safe_comp_pow(a,n+1) = safe_comp_pow(a,n)*a

    Язык для SMT солвера alt-ergo https://alt-ergo.ocamlpro.com/try.php . Аксиомы для возведения в степень. Возводить в отрицательную степень нельзя. Ноль в степени ноль - нельзя. Логика первого порядка. Должна быть справедлива для целых. Правда в одной аксиоме я допустил баг. Я его уже нашел. Можете тоже попробовать найти его

    j123123, 22 Марта 2016

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