1. Си / Говнокод #25013

    +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>
    #include <stdalign.h>
    #include <inttypes.h>
    #include <string.h>
    
    float sum_f(const float arr[], const size_t len);
    int32_t sum_i32t(const int32_t arr[], const size_t len);
    
    #define sum(a, b) _Generic((a), float*:   sum_f, \
                                 const float*:   sum_f, \
                                 int32_t*: sum_i32t,\
                                 const int32_t*: sum_i32t)(a, b)
    
    
    // foldl (+) 0 arr
    float sum_f(const float arr[], const size_t len)
    {
      return (len != 0) ? ( sum(arr+1, len-1) + arr[0] ) : 0;
    }
    
    int32_t sum_i32t(const int32_t arr[], const size_t len)
    {
      return (len != 0) ? ( sum(arr+1, len-1) + arr[0] ) : 0;
    }
    
    enum { we_want_int, we_want_float } what_we_want;
    
    void test(int www)
    {
      void *a;
      if (www == we_want_int)
      {
        uint8_t buf[sizeof(int32_t[10])] __attribute__ ((aligned (alignof(int32_t[10]))));
        a = (void *) buf;
        memcpy ( a, (int32_t[10]){1,2,3,4,5,6,7,8,9,10},
                 sizeof((int32_t[10]){1,2,3,4,5,6,7,8,9,10})
                );
        printf("%" PRIi32 "\n", sum((int32_t *)a, 10));
      }
      else if (www == we_want_float)
      {
        uint8_t buf[sizeof(float[10])] __attribute__ ((aligned (alignof(float[10]))));
        a = (void *) buf;
        memcpy ( a, (float[10]){1,2,3,4,5,6,7,8,9,10},
                 sizeof((float[10]){1,2,3,4,5,6,7,8,9,10})
                );
        printf("%f\n", sum((float *)a, 10));    
      }
    }
    
    int main(void)
    {
      test(we_want_int);
      test(we_want_float);
      return EXIT_SUCCESS;
    }

    https://wandbox.org/permlink/TwbKHE8l7ZJc6PNI
    https://govnokod.ru/25005#comment436646
    https://i.imgur.com/yFYfuED.jpg

    j123123, 23 Октября 2018

    Комментарии (454)
  2. C++ / Говнокод #25009

    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
    /*
    https://habr.com/post/246009/
    
    Это вторая статья в цикле «Теория категорий для программистов».
    
    ...
    
    Я хотел бы сказать вам, что есть шаблон в стандартной библиотеке С++,
    который принимает две функции и возвращает их композицию, но такого
    нет.
    
    Примечание переводчика: но такой не сложно написать на С++14 (я опускаю
    тонны деталей владения и шаблонной магии для проверок, что эти функции
    и тип аргумента действительно можно компоновать):
    */
    
    template <typename T>
    struct function_arg: public function_arg<decltype(&T::operator())> {};
    
    template<typename ReturnType, typename Arg>
    struct function_arg<ReturnType(Arg) const> {
    	using type = Arg;
    };
    
    template<typename ClassType, typename ReturnType, typename Arg>
    struct function_arg<ReturnType(ClassType::*)(Arg) const> {
    	using type = Arg;
    };
    
    template<typename T>
    using function_arg_t = typename function_arg<T>::type;
    
    template<typename F, typename G>
    auto compose(F&& f, G&& g) {
    	return [f = std::forward<F>(f), g = std::forward<G>(g)]
    		(function_arg_t<F>&& a) {return g(f(std::forward<function_arg_t<F>>(a)));};
    }

    Поэтому я за C++

    j123123, 22 Октября 2018

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

    0

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    #include <iostream>
    #include <tuple>
    using namespace std;
    
    int main() {
        int a = 5, b = 6;
        tie(a, b) = make_pair(b, a);
        cout << a << " " << b << endl;
        return 0;
    }

    https://ideone.com/9gzogv

    guestinxo, 21 Октября 2018

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

    +1

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    Что-то я давно не обсирал тут хуиту, которую пишут про 
    плюсы на хабре
    
    https://habr.com/post/426965/
    
    Идеального способа для обработки ошибок не существует. 
    До недавнего  времени в С++ были почти все возможные 
    способы обработки ошибок кроме  монад.

    В этой замечательной статье забыли упомянуть setjmp/longjmp(std::longjmp если угодно), который хоть и из Си, но в C++ его никто не запрещал.
    А еще signal (std::signal, если угодно), который хоть и из Си, но в C++ его никто не запрещал.
    А еще goto (почему нет std::goto? Запилите быстраблядь!), который хоть и из Си, но в C++ его никто не запрещал.

    А вообще, зачем иметь в языке такое количество говна в СТАНДАРТНОЙ БИБЛИОТЕКЕ для такой хуиты?

    Вот еще в тему: https://video.twimg.com/tweet_video/De78Qn2XcAAQqfS.mp4

    j123123, 20 Октября 2018

    Комментарии (174)
  5. PHP / Говнокод #25004

    +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
    63. 63
    64. 64
    65. 65
    66. 66
    67. 67
    68. 68
    69. 69
    70. 70
    /* Сортировка начало */
            if (Yii::$app->request->get('sort_number') && strlen(Yii::$app->request->get('sort_number')) === 4) {
                $model->orderBy([
                    'number' => SORT_DESC,
                ]);
            } else {
                if (Yii::$app->request->get('sort_number') && strlen(Yii::$app->request->get('sort_number')) === 5) {
                    $model->orderBy([
                        'number' => SORT_ASC,
                    ]);
                }
            }
            if (Yii::$app->request->get('sort_domain_name') && strlen(Yii::$app->request->get('sort_domain_name')) === 4) {
                $model->orderBy([
                    $company_name => SORT_DESC,
                ]);
            } else {
                if (Yii::$app->request->get('sort_domain_name') && strlen(Yii::$app->request->get('sort_domain_name')) === 5) {
                    $model->orderBy([
                        $company_name => SORT_ASC,
                    ]);
                }
            }
            if (Yii::$app->request->get('sort_domain_id') && strlen(Yii::$app->request->get('sort_domain_id')) === 4) {
                $model->orderBy([
                    'domain_id' => SORT_DESC,
                ]);
            } else {
                if (Yii::$app->request->get('sort_domain_id') && strlen(Yii::$app->request->get('sort_domain_id')) === 5) {
                    $model->orderBy([
                        'domain_id' => SORT_ASC,
                    ]);
                }
            }
            if (Yii::$app->request->get('sort_id') && strlen(Yii::$app->request->get('sort_id')) === 4) {
                $model->orderBy([
                    'id' => SORT_DESC,
                ]);
            } else {
                if (Yii::$app->request->get('sort_id') && strlen(Yii::$app->request->get('sort_id')) === 5) {
                    $model->orderBy([
                        'id' => SORT_ASC,
                    ]);
                }
            }
            /* Сортировка конец */
    
            /* Поиск начало */
            if (Yii::$app->request->get('id') && strlen(Yii::$app->request->get('id')) >= 1) {
                $model->andWhere([
                    'id' => Yii::$app->request->get('id'),
                ]);
            }
            if (Yii::$app->request->get('number') && strlen(Yii::$app->request->get('number')) >= 3) {
                $model->andWhere(['number' => Yii::$app->request->get('number'),
                ]);
            }
            if (Yii::$app->request->get('domain_name') && strlen(Yii::$app->request->get('domain_name')) >= 3) {
                $model->andWhere([$company_name => Yii::$app->request->get('domain_name'),
                ]);
            }
            if (Yii::$app->request->get('domain_id') && strlen(Yii::$app->request->get('domain_id')) >= 3) {
                $model->andWhere(['domain_id' => Yii::$app->request->get('domain_id'),
                ]);
            }
            if (Yii::$app->request->get('appointment') && strlen(Yii::$app->request->get('appointment')) >= 3) {
                $model->andWhere(['appointment' => Yii::$app->request->get('appointment'),
                ]);
            }
            /* Поиск конец */

    Джуна отправили в свободное плавание... как вам?

    ZeiZ, 20 Октября 2018

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

    0

    1. 1
    GET

    guest, 19 Октября 2018

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

    +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
    public class TransactionRequestViewModel
    {
            public string X_login { get; set; }
    
            public double X_amount { get; set; }
    
            public int X_fp_sequence { get; set; }
    
            public int X_fp_timestamp { get; set; }
    
            public string X_fp_hash { get; set; }
    
            public string X_show_form { get; set; }
    
            public string X_receipt_link_method { get; set; }
    
            public string X_receipt_link_text { get; set; }
    
            public string X_receipt_link_url { get; set; }
    
            public string X_currency_code { get; set; }
    
            public string X_line_item { get; set; }
    }

    Этот "Х" добавляет +80 к читаемости.

    Moses, 19 Октября 2018

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

    +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
    <?php
    define('+1', 16384);
    ${'*.'} = function ($a, $b) {
        return floor($a * $b / constant('+1'));
    };
    
    ${'/.'} = function ($a, $b) {
        return floor($a * constant('+1') / $b);
    };
    
    echo ${'/.'}(1, 1) . "\n";
    echo ${'/.'}(1, 2) . "\n";
    echo ${'/.'}(7, 34) + ${'/.'}(23, 99) . "\n";

    Где-то за кулисами прячется факт, что в "PHP" в качестве имён констант и переменных можно использовать произвольные строки.

    https://ideone.com/3MCnCW

    4EPTA_KyJIuC, 19 Октября 2018

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

    +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
    public function index(Request $request)
        {
            $user = User::find(Auth::user()->id);
    
            if($request->method() == 'POST') {
                $user->username = $request->post('username');
                $user->email = $request->post('email');
                $user->save();
                return redirect()->to(route('account.settings'));
            }
            return view('Account::settings.index', ['user' => $user]);
        }

    bearma, 19 Октября 2018

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

    −1

    1. 1
    Грядет конец PHP

    В общем вот:

    https://www.linux.org.ru/forum/talks/14542930

    Компания Rogue Wave, финансовая основа разработки PHP, решила забить на развитие PHP, сосредоточившись на одном конкретном продукте на его основе - Zend Server. Два года назад из нее ушел первый сооснователь Zend. Теперь же... Ядро команды, включая второго сооснователя Zend, уходит из компании. Они заранее написали в своих бложиках обращение с просьбой взять их под свое крыло для разработки ядра PHP 8.

    Как-то это мрачновато звучит. Похоже, похапэ-капец настал.

    Подробности по-русски на Хабре: https://habr.com/post/426809/

    Elvenfighter, 18 Октября 2018

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