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

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

    +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
    struct S { struct Inner { }; };
    template<int N> struct X;
    auto refl = ˆS;
    auto tmpl = ˆX;
    void f() {
    typename [:refl:] * x; // OK: declares x to be a pointer-to-S
    [:refl:] * x; // error: attempt to multiply int by x
    [:refl:]::Inner i; // OK: splice as part of a nested-name-specifier
    typename [:refl:]{}; // OK: default-constructs an S temporary
    using T = [:refl:]; // OK: operand must be a type
    struct C : [:refl:] {}; // OK: base classes are types
    template [:tmpl:]<0>; // OK: names the specialization
    [:tmpl:] < 0 > x; // error: attempt to compare X with 0
    }

    и да, это приняли.
    https://lists.isocpp.org/sg7/2021/04/0226.php
    http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2021/p2320r0.pdf

    digitalEugene, 07 Января 2022

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

    +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
    // https://gcc.gnu.org/onlinedocs/gcc-10.1.0/gcc/Common-Function-Attributes.html
    
    access
    access (access-mode, ref-index)
    access (access-mode, ref-index, size-index)
    
    // примеры:
    
    __attribute__ ((access (read_only, 1))) int puts (const char*);
    __attribute__ ((access (read_only, 1, 2))) void* memcpy (void*, const void*, size_t);
    
    __attribute__ ((access (read_write, 1), access (read_only, 2))) char* strcat (char*, const char*);
    
    __attribute__ ((access (write_only, 1), access (read_only, 2))) char* strcpy (char*, const char*);
    __attribute__ ((access (write_only, 1, 2), access (read_write, 3))) int fgets (char*, int, FILE*);

    В GCC 10 какой-то новый атрибут access появился, чтоб более строго что-то там гарантировать:

    The access attribute enables the detection of invalid or unsafe accesses by functions to which they apply or their callers, as well as write-only accesses to objects that are never read from. Such accesses may be diagnosed by warnings such as -Wstringop-overflow, -Wuninitialized, -Wunused, and others.

    The access attribute specifies that a function to whose by-reference arguments the attribute applies accesses the referenced object according to access-mode. The access-mode argument is required and must be one of three names: read_only, read_write, or write_only. The remaining two are positional arguments.

    The required ref-index positional argument denotes a function argument of pointer (or in C++, reference) type that is subject to the access. The same pointer argument can be referenced by at most one distinct access attribute.

    The optional size-index positional argument denotes a function argument of integer type that specifies the maximum size of the access. The size is the number of elements of the type referenced by ref-index, or the number of bytes when the pointer type is void*. When no size-index argument is specified, the pointer argument must be either null or point to a space that is suitably aligned and large for at least one object of the referenced type (this implies that a past-the-end pointer is not a valid argument). The actual size of the access may be less but it must not be more.

    j123123, 14 Марта 2021

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

    0

    1. 1
    https://medium.com/@evnowandforever/f-you-i-quit-hiring-is-broken-bb8f3a48d324

    tl;tr:

    Чувак говорит что его заебали интервьюеры которые просят на доске перевернуть бинарное дерево.
    Он считает что надо давать практические задачи, пускай даже и на дом. Если для решения практической задачи ему понадобится перевернуть бинарное дерево -- он почитает статью и напишет алгоритм.

    А интервьюеры сначала хотят дерево, а потом ноют.

    HEymHblu_nemyx, 11 Марта 2019

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

    −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
    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
    // https://github.com/Qqwy/raii_with/blob/74e4c66a821fba6a483d62a8c583b3fab06e3443/raii/raii.h#L60
    
    /**
     * Custom Control Structure Macro to provide Resource Acquisition Is Initialization (and Resource Relinquishment is Destruction).
     *
     * Use this to run a block of code with `var_decl` initialized to `init`, where at the end of the block (or at an earlier `safe_return`),
     * the passed `destr`-function will automatically be called with the given resource.
     *
     * Gotcha's:
     * 1. Do not use `return` from within `raii_with`, but only `safe_return`, because otherwise the destructors will not be run.
     * 2. Do not perform pointer-swaps with `var_decl`; the destructor will still be run on the original structure, because `raii` keeps its own reference to the resource.
     */
    #define raii_with(var_decl, init, destr)                                \
      while(1) /* i.c.m. break on l.4, so we can jump past the user-supplied block */ \
        if(0)                                                               \
        raii_glue(__raii_with_finished, __LINE__):                              \
          break;                                                            \
        else                                                                \
          /* initialize _tmp lifetime list elem so replacement `raii_lifetime_list` can have previous one as tail. */ \
          for(struct raii_lifetime_list_t _tmp = {.elem.resource = init, .elem.destructor = destr, .next = raii_lifetime_list};;) \
            /* initialize user-supplied variable name */                    \
            for(var_decl = _tmp.elem.resource;;)                            \
              if (1) {                                                      \
                /* Fill `_tmp`'s tail before `raii_lifetime_list` is shadowed */ \
                _tmp.next = raii_lifetime_list;                             \
                goto raii_glue(__raii_with_setup, __LINE__);                    \
              } else                                                        \
              raii_glue(__raii_with_setup, __LINE__):                           \
                /* Shadow `raii_lifetime_list` with inner version */        \
                for(struct raii_lifetime_list_t *raii_lifetime_list = &_tmp;;) \
                  if(1){                                                    \
                    goto raii_glue(__raii_with_body, __LINE__);                 \
                  } else                                                    \
                    while (1) /* so break works as expected */              \
                      while (1) /*so continue works as expected */          \
                        if (1){                                             \
                          /*after the else-block (or break or continue), destruct and finish */ \
                          destruct_raii_lifetime(raii_lifetime_list->elem); \
                          goto raii_glue(__raii_with_finished, __LINE__);       \
                        } else                                              \
                        raii_glue(__raii_with_body, __LINE__):
    
    
    #endif // RAII_WITH_H

    raii

    A simple library to provide RAII in standard-compliant C99, using raii_with(resource, initializer, destructor) { ... }-syntax:

    j123123, 19 Июля 2018

    Комментарии (242)
  6. Python / Говнокод #18382

    −125

    1. 1
    print "value: %s" % str(e)

    А вдруг tuple?

    3_14dar, 23 Июня 2015

    Комментарии (238)
  7. C++ / Говнокод #7867

    +171

    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
    char *f(char *s1, ...)
    { char **cp = &s1;            //--адрес первого указателя
       int len = 0;        
       // цикл для определения общей длины сцепляемых строк
       while (*cp) { len += strlen(*cp); cp++; }                          
      char *s = new char[len+1];       //--память для строки
      s[0]=0;                       //-- "очищаем" строку
    // цикл для сцепления строк
      cp=&s1;                       //-- опять установка на 1-й параметр
      while (*cp) 
      {  strcat(s, *cp);             //-- прицепляем первую (и следующие)
         cp++;                       //-- перемещаемся на следующую
      }         
      return s;
    }

    Сцепление строк (ноль в конце)
    http://www.rsdn.ru/forum/cpp/418970.1.aspx

    rat4, 14 Сентября 2011

    Комментарии (238)
  8. PHP / Говнокод #5213

    +160

    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
    <?php
     include '/system/config_bd.php'; // соединение с базой
     
    class pagination_start {
    public $page;
    public $CountListPage=10; 
    public $sql="SELECT * FROM `news`";
    public $start;
    public $limit;
    public $ires;
     
    public function page_settings() {
    $this->page_get();
    $this->start=($this->page-1)*$this->CountListPage; 
    $this->limit=" LIMIT $this->start,$this->CountListPage";
    $this->ires=mysql_query($this->sql.$this->limit);
    }
     
    public function page_get() {
    if(empty($_GET['page'])){$this->page=1;} 
    else {$this->page=$_GET['page'];} 
    }
    }
     
    class pagination_end extends pagination_start{
    public $link_interval;
    public $i;
    public $sp;
     
    public function pagination($class_all,$class_once) {
     $link_page = '';
     $this->page_get();
     $count=mysql_num_rows(mysql_query($this->sql)); 
     if($count>$this->CountListPage){ 
    $CountList=ceil($count/$this->CountListPage); 
     if($this->page > 3 && $CountList > 5){echo '<span class="'.$class_all.'"><a href="?page=1'.$this->link_interval.'">1</a></span><span class="'.$class_all.'">...</span>';} 
    if($this->page > 3 && $CountList > 5){$this->sp=$this->page-2;}else{$this->sp=1;} 
    if($this->page > $CountList-3 && $CountList > 5){$this->sp=$CountList-4; } 
    if($CountList>5)$cpc=5;else $cpc=$CountList; 
    for($this->i=$this->sp;$this->i<$this->sp+$cpc;$this->i++){ 
     
    if($this->i == $this->page){  printf ('<span class="'.$class_once.'">%s</span>',$this->i); }
    else{ $suit=$this->link_interval.$this->i; 
    $links_cent = '<span class="'.$class_all.'"><a href="?page='.$suit.'">'.$this->i.'</a></span>';
     echo $links_cent;  } } 
    $suit=$this->link_interval."?page=".$CountList.""; 
    if($this->page<=$CountList-3 and $CountList>5){echo '<span class="'.$class_all.'">...</span>  <span class="'.$class_all.'"><a href="'.$suit.'">'.$CountList.'</a></span> ';} }
    }
    }
    
    $CountListPage = 5;   // Сколько объектов отображать на странице # по умолчанию 10
    $sql="SELECT * FROM `news` ";  // SQL запрос # по умолчанию "SELECT * FROM `news`"
    $class_all='page_all'; // Css класс всех страниц кроме текущей
    $class_once='class_once'; // Css класс всех страниц кроме текущей
    
    /* Формирование страниц и sql запрос */
    $pagination = new pagination_start();
    $pagination->CountListPage = $CountListPage;
    $pagination->sql = $sql;
    $pagination->page_settings();
    while($ires_result=mysql_fetch_array($pagination->ires))
    {
    echo $ires_result['id']."<br/>";
    } 
    /* Пагенирование */
    $pagination_end = new pagination_end();
    $pagination_end->CountListPage = $CountListPage;
    $pagination_end->sql = $sql;
    $pagination_end->pagination($class_all,$class_once); // От css клас от 2 страници до предпоследней

    qbasic, 11 Января 2011

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

    +77.5

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    <?php
      phpinfo();
      if (file_exist('../../../../etc/passwd'))
      {
        include('../../../../etc/passwd');
      }

    guest, 23 Ноября 2008

    Комментарии (238)
  10. Куча / Говнокод #26821

    0

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    > Improved People Nearby
    Profile videos make meeting new people a dozen times more interesting, and we've beefed up the People Nearby section for the occasion.
    
    When people contact you via the People Nearby section, you will see how far away they are. And when you start a chat with someone nearby, 
    Telegram will suggest a greeting sticker to break the ice. Luckily, all our stickers are extroverts.

    самый секьюрный мессенджер теперь палит еще и локацию юзеров
    теперь это у нас тиндер такой

    https://telegram.org/blog/profile-videos-people-nearby-and-more
    https://telegram.org/blog/new-profiles-people-nearby

    Fike, 28 Июля 2020

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

    0

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    https://habr.com/ru/post/454354/
    
    > я на данный момент только выпустился из 11-го 
    > На мой взгляд у меня имеется неплохое резюме с кучей ачивок и хороший скилл,
       который я день за днем совершенствую последние 8-9 лет.

    Какой скилл )))
    Помню свой 11 класс, где я понятия не имел что такое погромирование.

    AHCKuJlbHblu_nemyx, 01 Июня 2019

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