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

    В номинации:
    За время:
  2. PHP / Говнокод #27036

    0

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    9. 9
    $users = new Users();
    
     $users->findBySql("SELECT * FROM `users`");
    
    foreach($users as $user) {
    
          echo $user['email'] . "<br>";
    
    }

    Task framework основан на MVC парадигме с удобством использования и минимум функционала для решения простых задач.
    В отличие от стандартных решений вместо контроллера тут используется задача (task)


    h/523828

    gost, 17 Октября 2020

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

    +3

    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
    template <typename T>
    void f() {
         if constexpr (std::is_arithmetic_v<T>)
             // ...
         else
           static_assert(false, "Must be arithmetic"); // ill-formed: invalid for every T
    }
    
    // The common workaround for such a catch-all statement is a type-dependent expression that is always false:
    template<class T> struct dependent_false : std::false_type {};
    template <typename T>
    void f() {
         if constexpr (std::is_arithmetic_v<T>)
             // ...
         else
           static_assert(dependent_false<T>::value, "Must be arithmetic"); // ok
    }

    То есть «static_assert(false)» в шаблоне — это UB. Чтобы оно было не UB и можно было спокойно отключать ненужные специализации — надо городить ёбанный костыль. Пиздец. Почему стандартизаторы не могут просто взять и сделать что-то удобное? Что-то, для чего не требуется городить по десятку костылешаблонов, заставляющих его работать? Что-то без ёбанной явной специализации для bool? Почему любой высер крестокомитета обязательно должен быть максимально сложным, вербозным, неочевидным говном с кучей подводных камней и UB?

    gost, 06 Января 2020

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

    +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
    18. 18
    Дали тестовое задание.
    Написать хеш таблицу с открытой адресацией. Главное качество, а не скорость, сказали.
    Реализовал на C++.
    Самая тягомотина - это тестирование многопоточности.
    Есть операции: 
    find, equalRange, operator [] - тот же equalRange, но возвращает все найденные вхождения, insert, remove, extend, size, capacity.
    
    И вот надо каждую относительно другой проверять.  
    Только это выходит (9 - 1)^2 тестов. Помимо остальных, уже реализованных.
    
    у меня проверка на значения только в операциях поиска относительно вставки, то бишь, нашелся ли в многопоточном исполнении элемент, или нет.
    относительно удаления проверять - это муторно, потому что после удаления на той же позиции встает соседняя пара, и это случайно, проверено 
    экспериментально.
    
    Сойдет ли просто проверять время блокировки (shared_lock, и lock_guard) 
    каждого параллельного текущему потоку относительно времени блокировки\старта\окончания блокировки текущего?
    кроме связки (access - insert)?
    Тем более, что операции записи\чтения проверяются в немногопоточном исполнении?

    OlegUP, 08 Ноября 2019

    Комментарии (31)
  5. Куча / Говнокод #25922

    +1

    1. 1
    Хочу, чтобы  3.14159265, 1024--, vistefan, kegdan, bormand вернулись в новогоднюю ночь.

    OCETuHCKuu_nemyx, 09 Октября 2019

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

    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
    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
    static F1(jtdrr){PROLOG(0055);A df,dg,hs,*x,z;B b,ex,xop;C c,id;I fl,*hv,m;V*v;
     RZ(w);
     // If the input is a name, it must be from ".@'name' which turned into ".@(name+noun)  - or in debug, but that's discarded
     if(AT(w)&NAME){RZ(w=sfn(0,w));}
     // If noun, return the value of the noun.
     if(AT(w)&NOUN)R w;  // no quotes needed
     // Non-nouns and NMDOT names carry on
     v=FAV(w); id=v->id; fl=v->flag;
     I fndx=(id==CBDOT)&&!v->fgh[0]; A fs=v->fgh[fndx]; A gs=v->fgh[fndx^1];  // In verb for m b., if f is empty look to g for the left arg.  It would be nice to be more general
     hs=v->fgh[2]; if(id==CBOX)gs=0;  // ignore gs field in BOX, there to simulate BOXATOP
     if(fl&VXOPCALL)R drr(hs);
     xop=1&&VXOP&fl; ex=id==CCOLON&&hs&&!xop;
     b=id==CHOOK||id==CADVF; c=id==CFORK;
     m=!!fs+(gs||ex);
     if(!m)R spella(w);
     if(evoke(w))R drr(sfne(w));  // turn nameref into string or verb; then take rep
     if(fs)RZ(df=fl&VGERL?every(fxeach(fs),0L,jtdrr):drr(fs));
     if(gs)RZ(dg=fl&VGERR?every(fxeach(gs),0L,jtdrr):drr(gs));
     if(ex)RZ(dg=unparsem(num[0],w));
     m+=!b&&!xop||hs&&xop;
     GATV0(z,BOX,m,1); x=AAV(z);
     RZ(x[0]=rifvs(df));
     RZ(x[1]=rifvs(b||c||xop?dg:fl&VDDOP?(hv=AV(hs),link(sc(hv[0]),link(spellout(id),sc(hv[1])))):spellout(id)));
     if(2<m)RZ(x[2]=rifvs(c||xop?drr(hs):dg));
     EPILOG(z);
    }
    
    F1(jtdrep){A z=drr(w); R z&&AT(z)&BOX?z:ravel(box(z));}
    
    
    F1(jtaro){A fs,gs,hs,s,*u,*x,y,z;B ex,xop;C id;I*hv,m;V*v;
     RZ(w);
     if(FUNC&AT(w)){
      v=FAV(w); id=v->id;
      I fndx=(id==CBDOT)&&!v->fgh[0]; fs=v->fgh[fndx]; gs=v->fgh[fndx^1];  // In verb for m b., if f is empty look to g for the left arg.  It would be nice to be more general
      hs=v->fgh[2]; if(id==CBOX)gs=0;  // ignore gs field in BOX, there to simulate BOXATOP
      if(VXOPCALL&v->flag)R aro(hs);
      xop=1&&VXOP&v->flag;
      ex=hs&&id==CCOLON&&!xop;
      m=id==CFORK?3:!!fs+(ex||xop&&hs||!xop&&gs);
      if(!m)R spella(w);
      if(evoke(w)){RZ(w=sfne(w)); if(FUNC&AT(w))w=aro(w); R w;}  // keep nameref as a string, UNLESS it is NMDOT, in which case use the (f.'d) verb value
     }
     GAT0(z,BOX,2,1); x=AAV(z);
     if(NOUN&AT(w)){RZ(x[0]=rifvs(ravel(scc(CNOUN)))); if(AT(w)&NAME)RZ(w=sfn(0,w)); x[1]=INCORPNA(w); RETF(z);}  // if name, must be ".@'name', format name as string
     GATV0(y,BOX,m,1); u=AAV(y);
     if(0<m)RZ(u[0]=rifvs(aro(fs)));
     if(1<m)RZ(u[1]=rifvs(aro(ex?unparsem(num[0],w):xop?hs:gs)));
     if(2<m)RZ(u[2]=rifvs(aro(hs)));
     s=xop?aro(gs):VDDOP&v->flag?(hv=AV(hs),aro(foreign(sc(hv[0]),sc(hv[1])))):spellout(id);
     RZ(x[0]=rifvs(s)); x[1]=INCORPNA(y);
     R z;
    }
    
    F1(jtarep){R box(aro(w));}
    
    // Create A for a string - name~, a primitive, or the boxed string
    static DF1(jtfxchar){A y;C c,d,id,*s;I m,n;
     n=AN(w);
     ASSERT(1>=AR(w),EVRANK);  // string must be an atom or list
     ASSERT(n,EVLENGTH);
     s=CAV(w); c=*(s+n-1);
     DO(n, d=s[i]; ASSERT((C)(d-32)<(C)(127-32),EVSPELL););  // must be all ASCII
     if(CA==ctype[(UC)*s]&&c!=CESC1&&c!=CESC2)R swap(w);  // If name and not control word, treat as name~, create nameref
     ASSERT(id=spellin(n,s),EVSPELL);  // not name, must be control word or primitive.  Also classify string 
     if(id!=CFCONS)y=ds(id); else{m=s[n-2]-'0'; y=FCONS(CSIGN!=*s?scib(m):2==n?ainf:scib(-m));} // define 0:, if it's that, using boolean for 0/1
     ASSERT(y&&RHS&AT(y),EVDOMAIN);   // make sure it's a noun/verb/adv/conj
     if(!self || AT(y)

    Arbatan_Pokrovan, 12 Сентября 2019

    Комментарии (31)
  7. PHP / Говнокод #25760

    0

    1. 1
    Есть ли какие-нибудь соревнования для PHP разработчиков?

    Perevedi_na_PHP, 09 Августа 2019

    Комментарии (31)
  8. JavaScript / Говнокод #25494

    −2

    1. 1
    Веб Программирование - это такая хуйня.

    OlegUP, 01 Апреля 2019

    Комментарии (31)
  9. Assembler / Говнокод #25491

    +3

    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
    Решил я значит от нехуй делать нарисовать свой пиксельный шрифт
    (кому интересно - вот промежуточный результат https://i.imgur.com/2vIJoio.png)
    и решил посмотреть, какие там вообще бывают под GNU/Linux редакторы для
    шрифтов, и какие вообще шрифты бывают
    Так вот, нашел я вот такую хрень http://mensis.sourceforge.net/overview.html
    Вижу, что там какой-то ассемблер http://mensis.sourceforge.net/ttfcv-all.png или
    байткод ебаный. Погуглил по этим говноинструкциям со скриншота:
    Оказывается в TTF шрифтах есть встроенный тьюринг-полный ЯП, используемый
    для всяких там подсказок, типа "куда дорисовать пиксель вот при таком-то условии"
    и прочая подобная херота
    А еще в шиндошс (до Windows 10) этот шрифтоговнобайткод интерпретировался в
    пространстве ядра (ну тупыыые..) и разумеется таким образом удалось винду хакнуть
    https://security.stackexchange.com/a/91395 (разве могло быть иначе?)
    
    про шрифтоговнобайткод можно почитать например тут
    https://docs.microsoft.com/en-us/typography/opentype/spec/tt_instructions
    https://developer.apple.com/fonts/TrueType-Reference-Manual/RM05/Chap5.html#instructions
    
    На кой вообще хер делать тьюринг-полный язык для отрисовки глифов? Ну и раз вы его уже
    делаете, то заебошьте там что-нибудь на основе LLVM байткода, чтоб JIT, или вообще все глифы
    сразу компилировать в натив, или даже (чего мелочиться) под GPU. Типа мы хотим
    нарисовать какую-то букву с размером 10 - вызываем функцию
    drawA(10, bufptr, x, y); - рисуется десятого размера буква в буфер. И никаких непонятных
    говнобайткодов. Четко и дерзко!

    j123123, 01 Апреля 2019

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

    +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
    if($form_action=="register") {
       if($coo_coo=="tootoo") {
       if($myusername) {
          if($mypassword) {
             if($mypassword==$myrepeat) {
                $uLength = strlen($myusername);
                $pLength = strlen($mypassword);
                if($uLength >= 3 && $uLength <= 30) {
                   $return_error = "";
                } else {
                   $return_error = "Username must be between 3 and 30 characters.";
                }
                if($pLength >= 3 && $pLength <= 30) {
                   $return_error = "";
                } else {
                   $return_error = "Password must be between 3 and 30 characters.";
                }
                if($return_error == "") {
                   if($db_found) {
                      $mypassword = md5($mypassword);
                      $SQL = "SELECT * FROM users WHERE username='$myusername'";
                      $result = mysql_query($SQL);
                      $num_rows = mysql_num_rows($result);
                      if($num_rows==1) {
                         $return_error = "Username already taken.";
                      } else {
                         if(!mysql_query("INSERT INTO users (id,date,ip,username,password) VALUES ('','$date','$ip','$myusername','$mypassword')")){
                            $return_error = "System error.";
                         } else {
                            $return_error = "Logged in.";
                            $_SESSION['user_session'] = $myusername;
                            header ("Location: index.php");
                         }
                      }
                   }
                }
             } else {
                $return_error = "Passwords did not match";
             }
          } else {
             $return_error = "No password was entered.";
          }
       } else {
          $return_error = "No username was entered.";
       }
       } else {
          $return_error = "Registrations are disabled.";
       }
    }

    "Сам кусок регистрации"
    Ошибка начинается с первой строки...

    MouseZver, 21 Декабря 2018

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

    −3

    1. 1
    2. 2
    Надобно бы реализовать здесь такое же подтверждение аккаунта, как во влажном "Google Adsense" - путём отправки
    бумажного письма по физическому адресу пользователя - дабы местный шизофреник не вёл диалоги сам с собою.

    0BEH, 27 Октября 2018

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