1. JavaScript / Говнокод #25758

    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
    // где-то в классе MyTable
    
    public next() {
      if (this.firstVisibleRow + this.currentRow < this.sortedData.length) {
        this.firstVisibleRow = this.firstVisibleRow + this.currentRow;
      }
      this.sortTable();
    }
    
    public prev() {
      if (this.firstVisibleRow - this.currentRow > 0) {
        this.firstVisibleRow = this.firstVisibleRow - this.currentRow;
      } else {
        this.firstVisibleRow = 0;
      }
      this.sortTable();
    }
    
    public sortTable() {
      this.sortedData.forEach((item, index) => {
        for (let i = this.firstVisibleRow; i < (this.firstVisibleRow + this.currentRow); i++) {
          if (i === index) {
            this.visiblilityList[index] = true;
    
            return;
          }
        }
        this.visiblilityList[index] = false;
      });
    }

    Коллега не прекращает удивлять )
    Код компонента Таблица для Vue.
    Кажется, в этом коде прекрасно всё.
    Обратите внимание, как красиво выполняется метод sortTable.
    Здесь visiblilityList используется для определения какие ряды в таблице нужно рисовать при пагинации. Про существование переменных page и rowsPerPage не слышал.
    Удивительно, но это говно работает!
    Планируем нашему коллеге по итогам года подарить грамоту "Качественный говнокод года" )

    igpo, 09 Августа 2019

    Комментарии (6)
  2. JavaScript / Говнокод #25757

    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
    function sortWithIndeces(toSort: any) {
      for (let i = 0; i < toSort.length; i++) {
        toSort[i] = [toSort[i], i];
      }
      toSort.sort(function(left: any[], right: any[]) {
        return left[0] < right[0] ? -1 : 1;
      });
      toSort.sortIndices = [];
      for (let j = 0; j < toSort.length; j++) {
        toSort.sortIndices.push(toSort[j][1]);
        toSort[j] = toSort[j][0];
      }
    
      return toSort;
    }
    
    sortWithIndeces(arr);
    
    arr.sortIndices.forEach((item: any, index: number) => {
      result[index] = data[item];
    });

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

    igpo, 09 Августа 2019

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

    +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
    Я заведую информ. отделом. 
    В подчинении у меня четверо сотрудниц разных возрастов.
    Но, вне зависимости от возраста, все они - тэпэ, слепо верящие в авторитет прежнего шефа.
    А он был своего рода звездой... После его рукожопства мне приходится в одиночку поднимать всю техническую базу. 
    Хуже некуда: болтающиеся кулера, горелые адаптеры, принтеры с выработанным на 101% ресурсом, дряблые мониторы с корябанными, вздутыми емкостями. 
    Даже провода витой пары приходится соединять пайкой. Всем стараюсь помогать, общаюсь с техподдержкой.
    Но коллектив меня ненавидит.
    
    Вчера поспорил с наиболее молодой тэпэшкой - она с пеной у рта доказывала, что отключать системник кнопкой - опасно, якобы это вызывает сбои. 
    По ее мнению, нужно программно - из меню "пуск". Я посоветовал ей почитать про ACPI, после чего демонстративно выключил кнопкой.
    Видели бы Вы, как они работают - напоминает ритуал по вызову дождя. Подозреваю, что дипломы у них купленные. Не может оператор быть таким нубом.
    
    Вот такая грустная история.

    Свалю я наверно.

    cmepmop, 08 Августа 2019

    Комментарии (118)
  4. PHP / Говнокод #25755

    −1

    1. 1
    Как так получается, что после json_encode($massiv) у меня то "{}", то "[]"?

    OCETuHCKuu_nemyx, 08 Августа 2019

    Комментарии (7)
  5. Python / Говнокод #25754

    −3

    1. 1
    2. 2
    3. 3
    import shutil
    shutil.rmtree('/')
    print('Me POshutil ))))))))0')

    Шутка на языке Python! )))0

    krokodil_910, 08 Августа 2019

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

    −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
    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
    #include <stdio.h>
    #include <stdlib.h>
    
    int main ()
    {
    int a=120;
    printf("%i\n",*&*&*&*&*&
    *&*&*&*&*&*&*&*&*&*&*&*&
    *&*&*&*&*&*&*&*&*&*&*&*&
    *&*&*&*&*&*&*&*&*&*&*&*&
    *&*&*&*&*&*&*&*&*&*&*&*&
    *&*&*&*&*&*&*&*&*&*&*&*&
    *&*&*&*&*&*&*&*&*&*&*&*&
    *&*&*&*&*&*&*&*&*&*&*&*&
    *&*&*&*&*&*&*&*&*&*&*&*&
    *&*&*&*&*&*&*&*&*&*&*&*&
    *&*&*&*&*&*&*&*&*&*&*&*&
    *&*&*&*&*&*&*&*&*&*&*&*&
    *&*&*&*&*&*&*&*&*&*&*&*&
    *&*&*&*&*&*&*&*&*&*&*&*&
    *&*&*&*&*&*&*&*&*&*&*&*&
    *&*&*&*&*&*&*&*&*&*&*&*&
    *&*&*&*&*&*&*&*&*&*&*&*&
    *&*&*&*&*&*&*&*&*&*&*&*&
    *&*&*&*&*&*&*&*&*&*&*&*&
    *&*&*&*&*&*&*&*&*&*&*&*&
    *&*&*&*&*&*&*&*&*&*&*&*&
    *&*&*&*&*&*&*&*&*&*&*&*&
    *&*&*&*&*&*&*&*&*&*&*&*&
    *&*&*&*&*&*&*&*&*&*&*&*&
    *&*&*&*&*&*&*&*&*&*&*&*&
    *&*&*&*&*&*&*&*&*&*&*&*&
    *&*&*&*&*&*&*&*&*&*&*&*&
    *&*&*&*&*&*&*&*&*&*&*&*&
    *&*&*&*&*&*&*&*&*&*&*&*&
    *&*&*&*&*&*&*&*&*&*&*&*&
    *&*&*&*&*&*&*&*&*&*&*&*&
    *&*&*&*&*&*&*&*&*&*&*&*&
    *&*&*&*&*&*&*&*&*&*&*&*&
    *&*&*&*&*&*&*&*&*&*&*&*&
    *&*&*&*&*&*&*&*&*&*&*&*&
    *&*&*&*&*&*&*&*&*&*&*&*&
    *&*&*&*&*&*&*&*&*&*&*&*&
    *&*&*&*&*&*&*&*&*&*&*&*&
    *&*&*&*&*&*&*&*&*&*&*&*&
    *&*&*&*&*&*&*&*&*&*&*&*&
    *&*&*&*&*&*&*&*&*&*&*&*&
    *&*&*&*&*&*&*&*&*&*&*&*&
    *&*&*&*&*&*&*&*&*&*&*&*&
    *&*&*&*&*&*&*&*&*&*&*&*&
    *&*&*&*&*&*&*&*&*&*&*&*&
    *&*&*&*&*&*&*&*&*&*&*&*&
    *&*&*&*&*&*&*&*&*&*&*&*&
    *&*&*&*&*&*&*&*&*&*&*&*&
    *&*&*&*&*&*&*&*&*&*&*&*&
    *&*&*&a);
    }

    killer1804, 08 Августа 2019

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

    +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
    namespace detail
    {
    template <typename Function, typename Tuple, std::size_t... i>
    void applyForEach(Function&& f, Tuple&& t, std::index_sequence<i...>)
    {
      (static_cast<void>(std::invoke(f, std::integral_constant<std::size_t, i>{}, std::get<i>(t))), ...);
    }
    } // namespace detail
    
    template <typename Function, typename Tuple>
    void applyForEach(Tuple&& tuple, Function&& function)
    {
      using Indexes = std::make_index_sequence<std::tuple_size_v<Tuple>>;
      detail::applyForEach(std::forward<Function>(function), std::forward<Tuple>(tuple), Indexes{});
    }

    Строка 6. Мы тут сделали синтаксис для fold expression, только вам его не дадим: у вас документов нет.

    Clang: https://wandbox.org/permlink/lNOFu1sOV9bA2LJF
    GCC: https://wandbox.org/permlink/yqeiYHTgZOz9NkkJ

    Elvenfighter, 07 Августа 2019

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

    +1

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    Пост SQL-проблем.
    
    Собственно, никогда за весь свой опыт я не использовал join. Большое кол-во выпускников гикбрейнсов говорит, "бла бла бла, джойн даёт нихуёвый перформанс по сравнению с этими вашими инлайн выборками".
    Но конечно гикбрейнсы не понимают, что джойн - не панацея, и блочить реляционку пока она тебе не найдет все связи - по меньшей мере тупо. Ровно как и не понимают, что перформанс им даст нормальный кэш
    который джуны так не любят использовать, или используют криво(кэшируют целые запросы, а не возвращаемые объекты).
    
    Уважаемые говнокодеры, как вам данный высер?

    monobogdan, 07 Августа 2019

    Комментарии (102)
  9. Куча / Говнокод #25750

    0

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    Чем полностью стереть файл\каталог с NTFS? 
    Имею ввиду удалить не только сам файл\каталог, но и перезатереть его запись в каталоге?
    Хотя логично предположить, что если запись содержимого каталога сортируется, то она перезапишется.
    Содержимое каталога хранится вне MFT, записи о каталогах хранятся в ней.
    Также в NTFS есть журнал транзакций, значит надо тереть и оттуда?
    
    Я так понял, в ext3\4 обычный шреддинг тоже не поможет.

    OlegUP, 06 Августа 2019

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

    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
    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
    <?
    error_reporting(E_ALL ^ E_DEPRECATED);
    defined('_SECUR_GAMES') or die('Unknown Error!');
      function bbcode($var = "") {
            $var = preg_replace('#\[b\](.*?)\[/b\]#si', '<span style="font-weight: bold;">\1</span>', $var);
            $var = preg_replace('#\[i\](.*?)\[/i\]#si', '<span style="font-style:italic;">\1</span>', $var);
            $var = preg_replace('#\[u\](.*?)\[/u\]#si', '<span style="text-decoration:underline;">\1</span>', $var);
            $var = preg_replace('#\[s\](.*?)\[/s\]#si', '<span style="text-decoration: line-through;">\1</span>', $var);
            $var = preg_replace('#\[big\](.*?)\[/big\]#si', '<big>\1</big>', $var);
            $var = preg_replace('#\[small\](.*?)\[/small\]#si', '<small>\1</small>', $var);
            $var = preg_replace('#\[center\](.*?)\[/center\]#si', '<center>\1</center>', $var);
            $var = preg_replace('#\[right\](.*?)\[/right\]#si', '<span class="right">\1</span>', $var);
            $var = preg_replace('#\[hr\](.*?)\[/hr\]#si', '<hr>\1</hr>', $var);
            $var = preg_replace('#\[br\](.*?)\[/br\]#si', '<br>\1</br>', $var);
            $var = preg_replace('#\[p\](.*?)\[/p\]#si', '<p>\1</p>', $var);
            $var = preg_replace('#\[gold\](.*?)\[/gold\]#si', '<span style="color:gold">\1</span>', $var);       
          return $var;
        }
        function calculate_age($birthday) {
          $birthday_timestamp = strtotime($birthday);
          $age = date('Y') - date('Y', $birthday_timestamp);
          if (date('md', $birthday_timestamp) > date('md')) {
            $age--;
          }
          return $age;
        }
    	function generatePassword($length=8){
    	  $chars = 'qwedazxscvfrtgnbhyujmkiolp1234567890WEDAZXSCVFRTGNBHYUJMKIOLP';
    	  $numChars = strlen($chars);
    	  $string = '';
    	  for ($i = 0; $i < $length; $i++) {
    	    $string .= substr($chars, rand(2, $numChars) - 1,2);
    	  }
    	  return $string;
    	}
    	function generatePass_word($length=8){
    	  $chars = 'qcvfrtgnbhyujmlp567890WEDAZXSCVFRBHYIOLP';
    	  $numChars = strlen($chars);
    	  $string = '';
    	  for ($i = 0; $i < $length; $i++) {
    	    $string .= substr($chars, rand(2, $numChars) - 1,2);
    	  }
    	  return $string;
    	}
    	function generateLogin($length=8){
    	  $chars = 'qweascv8fjmk6iolp123450WEXSCVFRTGNUOLP';
    	  $numChars = strlen($chars);
    	  $string = '';
    	  for ($i = 0; $i < $length; $i++) {
    	    $string .= substr($chars, rand(2, $numChars) - 1,2);
    	  }
    	  return $string;
    	}
    	function check($str)
    	{
    		$str = htmlentities($str, ENT_QUOTES, 'UTF-8');
    		$str = str_replace("\'", "&#39;", $str);
    		$str = str_replace("\r\n", "<br/>", $str);
    		$str = strtr($str, array(chr("0") => "", chr("1") => "", chr("2") => "", chr("3") => "", chr("4") => "", chr("5") => "", chr("6") => "", chr("7") => "", chr("8") => "", chr("9") => "", chr("10") => "", chr("11") => "", chr("12") => "", chr
    		("13") => "", chr("14") => "", chr("15") => "", chr("16") => "", chr("17") => "", chr("18") => "", chr("19") => "", chr("20") => "", chr("21") => "", chr("22") => "", chr("23") => "", chr("24") => "", chr("25") => "", chr("26") => "", chr("27") =>
    		"", chr("28") => "", chr("29") => "", chr("30") => "", chr("31") => ""));
    		$str = str_replace('\\', "&#92;", $str);
    		$str = str_replace("|", "I", $str);
    		$str = str_replace("||", "I", $str);
    		$str = str_replace("/\\\$/", "&#36;", $str);
    		$str = str_replace("[l]http://", "[l]", $str);
    		$str = str_replace("[l] http://", "[l]", $str);
    		$str = mysql_real_escape_string($str);
    		return $str;
    	}
    	class PAGINGS
    	{
    		public $total;
    		private $total_pages;
    		private $page;
    		private $start;
    		private $end;
    		public $get;
    		public $count_get;
    
    		public function __construct($size, $query)
    		{
    			$this->total = mysql_result(mysql_query(preg_replace('~SELECT (.*?) FROM~isU', 'SELECT COUNT(*) FROM', $query).' ;'), 0);
    			$this->total_pages = ceil($this->total / $size);
    			$this->page = isset($_POST['page']) ? $_POST['page'] : $_GET['page'];
    			$this->page = !empty($this->page) && ctype_digit($this->page) && $this->page >= 1 && $this->page <= $this->total_pages ? $this->page : 1;
    			$this->start = ($this->page * $size) - $size;
    			$this->end = $this->start + $size < $this->total ? $this->start + $size : $this->total;
    			$this->get = mysql_query($query.' LIMIT '.$this->start.', '.htmlspecialchars(stripslashes(addslashes(strip_tags(mysql_real_escape_string(trim($size)))))).' ;');
    			$this->count_get = @ mysql_num_rows($this->get);
    		}

    Взял перл из спора с каким-то мамкиным экспертом, утверждавшим "функциональщина - сраный легаси, ооп - наше всё". Здесь ещё куча алмазиков:
    https://bymas.ru/downloads/view/77400

    monobogdan, 05 Августа 2019

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