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

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

    0

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    9. 9
    std::map<int,bool> usedIds;
    ...
    int SomeClass::GetNewId()
    {
      int nId = 1;
      while( usedIds.find( nId ) != usedIds.end() ) nId++;
      usedIds[nId] = true;
      return nId;
    }

    Таких map'ов несколько. Ищем неиспользованные циферки...

    FataLL, 02 Декабря 2022

    Комментарии (18)
  3. Java / Говнокод #28142

    0

    1. 1
    public static final String EMPTY = "";

    Tan seme? Tan seme?!!

    Stallman, 28 Апреля 2022

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

    +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
    #include <iostream>
    
    int main(void)
    {
    char sep = '\n'  /1\
    ; int i = 68    /1  \
    ; while (i  ---      1\
                           \
                           /1/1/1                               /1\
                                                                /1\
                                                                /1\
                                                                /1\
                                                                /1\
                                /           1\
                               /            1 \
                              /             1  \
                             /              1   \
                             /1            /1    \
                              /1          /1      \
                               /1        /1        /1/1> 0) std::cout \
                                  <<i<<                               sep;
        return 0;
    }

    https://stackoverflow.com/a/65856842

    digitalEugene, 05 Февраля 2022

    Комментарии (18)
  5. C++ / Говнокод #27536

    +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
    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
    class Solution {
    public:
        std::vector<std::vector<int>> diagonalSort(std::vector<std::vector<int>> & mat) {
            if (!mat.size()) return mat;
            
            const size_t rl = mat[0].size();
            const size_t cl = mat.size();
            
            sort(mat, rl, cl, 0, 0);
            for (size_t i = 1; i < rl; ++i) {
                sort(mat, rl, cl, 0, i);
            }
            for (size_t i = 1; i < cl; ++i) {
                sort(mat, rl, cl, i, 0);
            }
            
            return mat;
        }
    private:
        void sort(std::vector<std::vector<int>> & mat, size_t rl, size_t cl, size_t i, size_t j) {
            const size_t len = std::min(rl - j, cl - i);
            const size_t endj = j + len;
            const size_t endi = i + len;
            std::sort(diag_iter<false>{&mat, i, j}, diag_iter<false>{&mat, endi, endj});
        }
        
        template <bool isConst>
        class diag_iter {
            std::vector<std::vector<int>> *base;
            size_t i, j;
            using T = int;
        public:
            using iterator_category = std::forward_iterator_tag;
            using difference_type   = std::ptrdiff_t;
            using value_type        = T;
            using pointer           = T*;
            using reference         = typename std::conditional<isConst, const T&, T&>::type;
            diag_iter(std::vector<std::vector<int>> *base, size_t i, size_t j) : base(base), i(i), j(j) { }
            diag_iter(const diag_iter&) = default;
            diag_iter& operator=(const diag_iter&) = default;
            ~diag_iter() = default;
            reference operator*() const { return (*base)[i][j]; }
            diag_iter& operator++() { i++; j++; return *this; }
            friend bool operator== (const diag_iter& a, const diag_iter& b) { return a.i == b.i && a.j == b.j; };
            friend bool operator!= (const diag_iter& a, const diag_iter& b) { return !(a == b); };
            pointer operator->() const { return &(this->operator*()); }
            diag_iter operator++(int) { diag_iter tmp = *this; ++(*this); return tmp; }
            diag_iter() = default;
            diag_iter& operator--() { i--; j--; return *this; }
            diag_iter operator--(int) { diag_iter tmp = *this; --(*this); return tmp; }
            diag_iter& operator+=(difference_type n) { i += n; j += n; return *this; }
            friend diag_iter operator+(diag_iter it, difference_type n) { return it += n; }
            diag_iter& operator-=(difference_type n) { i -= n; j -= n; return *this; }
            diag_iter operator-(difference_type n) const { return diag_iter(*this) -= n; }
            friend difference_type operator-(const diag_iter& a, const diag_iter& b) { return (b.j * b.base->size() + b.i) - (a.j * a.base->size() + a.i); }
            reference operator[](difference_type n) const { return *(*this + n); }
            friend bool operator<(const diag_iter& a, const diag_iter& b) { return b - a > 0; }
            friend bool operator>(const diag_iter& a, const diag_iter& b) { return b < a; }
            friend bool operator>=(const diag_iter& a, const diag_iter& b) { return !(a < b); }
            friend bool operator<=(const diag_iter& a, const diag_iter& b) { return !(a > b); }
        };
    };

    https://leetcode.com/problems/sort-the-matrix-diagonally/

    Сортировка через итераторы оказалась примерно в три раза медленнее, чем через копирование в вектор, сортировку его и копирование обратно.

    grillow1337, 25 Июля 2021

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

    +1

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    s=79; cur=[s//2,s//2]; prio=[[0,1],[1,0],[0,-1],[-1,0]]
    spiral = [[0 for i in range(0,s)] for l in range(0,s)]
    for cor in enumerate([[0,0]]+[prio[c] for c in [int(c) for c in ''.join([str(p%4)*((p+2)//2) for p in range(0,s**2//2)])]][:s**2-1],start=1):
        n=cor[0];cur=[cur[0]+cor[1][0],cur[1]+cor[1][1]];spiral[cur[0]][cur[1]]=n
    for c in spiral: print(str(('{:>'+str(len(str(s**2))+1)+'}')*len(c)).format(*c))

    А теперь попробуй повтори этот шедевр своими трясущимися ручками-веточками на своём С++

    pl7ofit, 29 Июня 2021

    Комментарии (18)
  7. Java / Говнокод #27470

    0

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    9. 9
    /**
      * Gets a customer
      *
      * @param customerId customer's id
      * @return Customer 
      */
    Customer getCustomer(int customerId) {
          . . .
    }

    В джава-джава-городе, на джава-джава-улице, живёт джавамен и пишет JAVADOC *шокирующий писк*

    JloJle4Ka, 16 Июня 2021

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

    +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
    using Headbin=System;
    
    namespace NVidiaOptimizer
    {
    	class NVO
    	{
    		[Headbin.STAThread]
    		static unsafe void Main(string[]args)
    		{
    			while (true)
    			{
    				Headbin.Runtime.InteropServices.Marshal.PrelinkAll(typeof(NVO));
    				float piz = (float)Headbin.Runtime.InteropServices.Marshal.AllocHGlobal(sizeof(float) * 45);
    			}
    		}
    	}
    }

    Утечка ОЗУ наглядно...
    (Осторожно, утекает быстро, как в речке)

    DartPower, 25 Мая 2021

    Комментарии (18)
  9. Pascal / Говнокод #27324

    +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
    program square;
    
    var sep, input: string;
      i, j, n, m : integer;
      
    
    begin
      write('sep:');
      readln(sep);
      
      write('str:');
      readln(input);
      
      for i:=1 to length(input) do write(input[i], ' ');
      writeln();
      for i:=2 to length(input)-1 do begin
        write(input[i]);
        for j:=1 to length(input)*2-3 do write (sep);
        writeln(input[length(input) - i + 1]);
      end;
      for i:=0 to length(input)-1 do 
        write(input[length(input)-i], ' ');
    end.

    Написала на скучной лекции программку на телефоне, чтобы распечатывать

    Х У Й
    У У
    Й У Х


    и прочие интересности UwU

    Пользуйтесь на здоровье, лицензия GNU GPL V3!

    KoWe4Ka_l7porpaMMep, 28 Марта 2021

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

    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
    static int callback_from_db_message(void *data, int argc, char **argv, char **azColName) {
        int *userSocket = data;
        long time = atol(argv[1]);
        bool edit = atoi(argv[2]);
        char *sTime = mx_strnew(26);
        ctime_r(&time, sTime);
        char *buffer = new_messageClient1(argv[0], argv[3],sTime,edit);
        usleep(10000);
        int receive = send(*userSocket, buffer, mx_strlen(buffer), 0);
    
        return argc - argc + mx_strlen(azColName[0] ? "" : "0") - mx_strlen(azColName[0] ? "" : "0");
    }

    Компилятор жалуется, что не используется переменная?
    И при быстром отправке в сокет, сообщения соединяются в один?
    Вот решение!

    lord_c, 17 Февраля 2021

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

    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
    Объясните, как правильно разрабатывать в 2021 году
    
    Есть один продукт, состоящий из сайта, сервера и БД, связывающей их.
    Сайт на PHP, с микрофреймворком, устанавливаемым через composer, отображающий данные из БД
    Сервер - программа, слушающая порт из свой конфигурации и записывающая в БД
    
    Таковы потребности, что на один сервер может быть установлено одна и более изолированных копий этого продукта (сервер + сайт + БД), а серверов несколько.
    Сайты разделяют через виртуальные хосты nginx, сервера по портам, БД по имени.
    Может случиться такое, что нужно остановить сайт или сервер, оставив второе работать.
    
    Проблема в том, что развёртывание делается вручную переносом копий файлов, что доставляет страданий.
    На серверах за всё время образовался бардак в конфигурациях
    
    Что здесь нужно? Kubernetes, swarm, docker, docker-compose?
    
    Проблема в том, что никогда не приходилось внедрять такое самостоятельно.
    Смотрю в сторону docker-compose, но везде инструкции только для одного экземпляра продукта на одном сервере (или я чего-то не понимаю)
    
    Объясните, пожалуйста, по-хорошему, что делать в таком случае

    Крендель, 11 Февраля 2021

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