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

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

    +104

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    catch (Exception ex)
    {
      try
      {
        if (ex.Message == "Thread was being aborted.")
        {

    taburetka, 19 Февраля 2014

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

    +63

    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
    int main()
    {
    	server::CServer();
    	return 0;
    }
    
    class CServer {
    public:
        CServer()
        {
            SOCKET listen_sd = socket (AF_INET, SOCK_STREAM, 0);	  CHK_ERR(listen_sd, "socket");
            SET_NONBLOCK(listen_sd);
    
            struct sockaddr_in sa_serv;
            memset (&sa_serv, '\0', sizeof(sa_serv));
            sa_serv.sin_family      = AF_INET;
            sa_serv.sin_addr.s_addr = INADDR_ANY;
            sa_serv.sin_port        = htons (1111);          /* Server Port number */
    
            int err = ::bind(listen_sd, (struct sockaddr*) &sa_serv, sizeof (sa_serv));      CHK_ERR(err, "bind");
            
            err = listen (listen_sd, 5);            CHK_ERR(err, "listen");
    
            while(true)
            {
                    Sleep(1);
    
                    struct sockaddr_in sa_cli;  
                    size_t client_len = sizeof(sa_cli);
    #ifdef WIN32
                    const SOCKET sd = accept (listen_sd, (struct sockaddr*) &sa_cli, (int *)&client_len);
    #else
                    const SOCKET sd = accept (listen_sd, (struct sockaddr*) &sa_cli, &client_len);
    #endif  
                    Callback(sd);
            }
        }
    };

    http://habrahabr.ru/post/211853/

    Бесконечный цикл (event loop) в конструкторе.

    Опущены неинтересные строчки инициализации всякой фигни.

    Про Sleep вместо select/epoll/etc. я вовсе молчу.

    WGH, 08 Февраля 2014

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

    +140

    1. 1
    ЗА РУСЬ!!!

    Horse3, 04 Февраля 2014

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

    +33

    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
    template<typename F, typename... Fns>
    struct Overloaded
    {
      std::tuple<F,Fns...> fns;
      
      // эта и следующая за ней функция нужны для рекурсивного
      // накопления кортежа из всех входящих функций
      template<typename First, typename... Others>
      std::tuple<First,Others...> collect(First f, Others... others) {
        auto t = std::make_tuple(f);
        return std::tuple_cat(t, collect(others...));
      }
      template<typename Single>
      std::tuple<Single> collect(Single f) {
        return std::make_tuple(f);
      }
      
      Overloaded(F f, Fns... others) {
        // сохраняем кортеж функций
        fns = collect(f, others...);
      }
    };
    
    template<typename F, typename... Fns>
    Overloaded<F,Fns...> make_overloaded(F f, Fns... fns) {
      return Overloaded<F,Fns...>(f,fns...);
    }
    
    //...
    
    void F1(int) {}
    void F2(int, float) {}
    // ...
    auto f = make_overloaded(F1, F2);

    Не хочется связываться с бустом ввиду его убогости громоздкости. Поэтому пытаюсь сделать сам на чистом C++11 без макросов.
    Не понятно теперь как перегрузить оператор ()?
    Задействовать enable_if? Ни чего в голову не приходит.
    Есть у кого идеи?

    Оттуда

    LispGovno, 03 Февраля 2014

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

    +15

    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
    #include <vector>
    #include <iostream>
    using namespace std;
    
    // -- tools
    
    // макет времени компиляции определяет количество элементов массива указанного в аргументе
    template<class T, size_t N> char (&Size(  T (&arr)[N] ) )[N];
    
    
    // -- internal closed implementation --
    int data1[] = {0, 1, 2};
    char data2[] = {42};
    
    const int (  &GetMechaData1()  ) [ sizeof( Size(data1) )  ] { return data1; }
    const char(  &GetMechaData2()  ) [ sizeof( Size(data2) )  ] { return data2; }
              
    // -- API
    
    //--- функции возвращают ссылки на массивы: например такого: const int[ sizeof( Size(data1) ]
    const int (  &GetMechaData1()  ) [ sizeof( Size(data1) )  ];
    const char(  &GetMechaData2()  ) [ sizeof( Size(data2) )  ];
    
    
    // client code
    template<class T, size_t N> void ViewArray(const T (&arr)[N])
    {
        cout<<"data stored: \n";
        for( auto& item: arr )
            cout<< "item : "<<item<<endl;
    }
    
    int main()
    {
        ViewArray( GetMechaData1() );
        ViewArray( GetMechaData2() );
        
       return 0;
    }

    http://rextester.com/AEINWM88529

    LispGovno, 18 Января 2014

    Комментарии (7)
  7. ActionScript / Говнокод #14349

    −117

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    //try setting up POST request, if failed settle with GET
            try {
                if (url_variables == null || (params && params.method == URLRequestMethod.GET)) throw new ArgumentError();
                url_request.data = url_variables;
                url_request.method = URLRequestMethod.POST;
            }
            catch(er:Error) {
                url_request.url = url;
                url_request.method = URLRequestMethod.GET;
            }

    Ветвление с помощью try..catch.
    Возьму себе на заметку.

    strax, 13 Января 2014

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

    −90

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    -(BOOL)isGetRest:(CGFloat)page {
        NSString *floatToString = [NSString stringWithFormat:@"%.2f",page];
        NSArray *sepArray = [floatToString componentsSeparatedByString:@"."];
        CGFloat rest = [[sepArray lastObject] floatValue];
        if(rest>0.0){
                 return YES;
        }
        else{
               return NO;
       }
    }

    А вы еще спрашиваете нужно ли программистам знать математику?

    Psionic, 11 Декабря 2013

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

    +154

    1. 1
    2. 2
    $date = date("Y-m-01", strtotime("-1 month"));
    $like = substr($date, 0, 8) . "%";

    а потом $like вставляется в sql-код

    anton0xf, 09 Декабря 2013

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

    +135

    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
    string str = Console.ReadLine();
    int k = str.length; int n = 0;
    
    for (int i = 0; i< k; i=i+1)
    {
    	if (str[i] == ' ')
    		n = n + 1;
    }
    
    string[] arr = new string[n+1]();
    
    for (int i = 0;i<n+1;i=i+1)
    {
    	arr[i]='';
    }
    for (int i = 0;i<n+1;i=i+1)
    {
    	int a = str.IndexOf(' ');
    	string b = str.Substring(0,a);
    	arr[i] = b;
    	if (i != n)
    		str = str.Remove(0,a+1);
    	else
    		str = str.Remove(0,a);
    }
    
    for (int i = 0;i<n+1;i=i+1)
    {
    	str = str + arr[i] + ' ';
    }
    str = str.Remove(k-2,1);

    Православная функция Split() по пробелу:
    1. Объявляем необходимые переменные;
    2. Считаем количество пробелов;
    3. Заполняем массив пустыми строками (ВАЖНО!!!);
    4. Ищем в исходной строке пробелы, записываем в массив подстроку, удалям подстроку с пробелом из исходной строки;
    5. Восстанавливаем исходную строку по эелементам массива (ВАЖНО!!!).

    NitrOxygeN, 05 Декабря 2013

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

    +161

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    $login = $_COOKIE['login'];
      $pass = $_COOKIE['pass'];
      $sec = $_COOKIE['sec'];
    
    
      if ($pass == '')
      {
        header("Location: index.php");
        exit;
      }

    Проверка авторизации в административной части сайта

    santa_microbe, 28 Ноября 2013

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