1. C# / Говнокод #24515

    −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
    try
    {
        ...
    }
    #if DEBUG
          catch
    #else
          catch
    #endif
    {
          ...
    }

    delpher, 18 Июля 2018

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

    −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
    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
    <?php include "init.php"; ?>
    <?php
    if(trim($_GET['mode'])=='ajax'){
    header('Content-Type: application/json; charset=utf-8');
    if(trim($_POST['action'])==htmlspecialchars(trim($_GET['script']))){
    $result=array();
    $result['errors']=array();
    if(trim($_POST['email'])==''){
    $result['errors']['email']=l('login_error_email_empty');
    } else {
    $check=mysql_query("SELECT * FROM `users` WHERE `email`='"._F($_POST['email'])."' OR (`phone`!='' AND `phone`='"._F(preg_replace('/\D/', '', $_POST['email']))."');");
    if(mysql_num_rows($check)){
    $user=mysql_fetch_assoc($check);
    } else {
    $result['errors']['email']=l('login_error_email_inexists');
    }
    }
    if(trim($_POST['password'])==''){
    $result['errors']['password']=l('login_error_password_empty');
    } elseif(mysql_num_rows($check) && $user['password']!=md5(trim($_POST['password']))){
    $result['errors']['password']=l('login_error_password_incorrect');
    } elseif($user['active']=='0'){
    $result['errors']['form']=l('login_error_account_inactive');
    } elseif($user['active']=='2'){
    $result['errors']['form']=l('login_error_account_removed');
    } elseif($user['active']=='3'){
    $result['errors']['form']=l('login_error_account_banned');
    }
    if(count($result['errors'])==0){
    $_SESSION['userid']=$user['userid'];
    mysql_query("UPDATE `users` SET `login_time`='".$time."' WHERE `userid`='".$_SESSION['userid']."';");
    $result['status']='success';
    } else {
    $result['status']='error';
    }
    echo json_encode($result);
    }
    exit;
    }
    ?>
    <?php
    $pagetitle=l('login_title')." • ".$config['sitename'];
    $pagedesc=$config['description'];
    ?>
    <?php
    if($m){ include "m-login.php"; exit; }
    ?>
    <?php include "inc/header.php"; ?>
    
    <div class="row">
    <div class="col-md-3"></div>
    <div class="col-md-6">
    <h3 class="special-title"><?php echo l('login_title'); ?></h3>
    <div class="auth-box">
    <form action="/<?php echo htmlspecialchars(trim($_GET['script'])); ?>/" method="POST" autocomplete="off" class="ajax-form" data-callback="loginCallBack">
    <input type="hidden" name="action" value="<?php echo htmlspecialchars(trim($_GET['script'])); ?>">
    <div class="form-group">
    <label><?php echo l('login_type_email'); ?></label>
    <div>
    <input type="text" autocomplete="off" class="form-control" name="email" placeholder="<?php echo l('login_email'); ?>" autofocus>
    </div>
    </div>
    <div class="form-group">
    <label><?php echo l('login_type_password'); ?></label>
    <div>
    <input type="password" autocomplete="off" class="form-control" name="password" placeholder="<?php echo l('login_password'); ?>">
    </div>
    </div>
    <button type="submit" class="btn btn-primary"><?php echo l('login_submit'); ?></button>
    <div class="cannot-login">
    <a href="<?php echo $locPrefix; ?>/restore/" class="pull-left"><?php echo l('login_cant_login'); ?></a>
    <a href="<?php echo $locPrefix; ?>/register/" class="pull-right"><?php echo l('login_to_register'); ?></a>
    <div class="clear"></div>
    </div>
    </form>
    </div>
    </div>
    <div class="col-md-3"></div>
    </div>
    
    <div class="social-login-title">
    <?php echo l('login_via_social_network'); ?>
    </div>
    
    <div class="social-login"><a href="/social/vk/<?php if(isset($_GET['ref'])){ ?>?ref=<?php echo urlencode($_GET['ref']); ?><?php } ?>" class="vkontakte"><i class="fa fa-vk"></i></a><a href="/social/ok/<?php if(isset($_GET['ref'])){ ?>?ref=<?php echo urlencode($_GET['ref']); ?><?php } ?>" class="odnoklassniki"><i class="fa fa-odnoklassniki"></i></a><a href="/social/fb/<?php if(isset($_GET['ref'])){ ?>?ref=<?php echo urlencode($_GET['ref']); ?><?php } ?>" class="facebook"><i class="fa fa-facebook"></i></a><a href="/social/gl/<?php if(isset($_GET['ref'])){ ?>?ref=<?php echo urlencode($_GET['ref']); ?><?php } ?>" class="google"><i class="fa fa-google"></i></a></div>
    
    <?php include "inc/footer.php"; ?>

    В среде "PHP"-разработчиков часто слышатся возбуждающие аппетит к ветчине повизгивания о том, что, дескать, без фреймворков не жизнь, чистый "PHP" - говно, и что без "Laravel" охуенный проект не создать. Но взгляните на вышеприведённый код страницы авторизации в одном из разработанных мною движков и задайте себе вопрос: зачем делить один ладненький, компактненький скриптик на контроллеры, модели, шаблоны, интерфейсы, и, как следствие, конское количество директорий, когда и "HTML"-представление, и "AJAX"-обработчик можно впихнуть в один файл на, в данном случае, полтора-два экрана? Чем обусловлена массовая течка по "MVC" и смежным архитектурам (к слову, не только лишь в "PHP", но и, слышно, в "Ruby" и "NodeJS")?

    HornyPorny, 18 Июля 2018

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

    −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
    #lang racket
    (require (for-syntax racket/syntax syntax/to-string))
    (require ffi/unsafe)
    
    (define-for-syntax *method-names*
      ; Given I have hello, one and two methods in my shared lib
      (list "hello"
            "one"
            "two"
            ))
    
    (define-syntax (load-ffi-functions stx)
      (syntax-case stx ()
        [(_ name lib ffi-func)
        (let ([elem->fn-id 
                (λ (elem-str)
                  (display elem-str)
                  (format-id 
                   stx "~a" 
                   (datum->syntax stx (string->symbol elem-str))))]
                )
          (with-syntax ([(_) 
            (elem->fn-id "one")])
            #`(begin
              (define (name)
                  (printf (string->symbol name))
                  (ffi-func name lib (_fun -> _int))
                  )
                )
            )
        )]))
    
    (define rustlib (ffi-lib "./libffitest.dylib"))
    
    (define-syntax (define-ffi-func stx)
      (syntax-case stx ()
        [(_ lib ffi-func)
         (let ([elem->fn-id 
                (λ (elem-str)
                  (format-id 
                   stx "~a" 
                   (datum->syntax stx (string->symbol elem-str))))]
                )
           (with-syntax 
             ([((method name) ...)
               (map 
                (λ (elem)
                  (list (elem->fn-id elem) elem)
                )
                *method-names*)])
             #`(begin
                 (define method
                    (ffi-func name lib (_fun -> _int))
                  )
                 ...)))]))
    
    (define-ffi-func rustlib get-ffi-obj)
    (+ (one) (two) (one))

    Когда мне показали, как это правильно сделать, я немного ох#ел.

    Desktop, 17 Июля 2018

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

    +2

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    Попытка
    
       Если Найти( ОформлениеСтроки.ДанныеСтроки.Загружен, Истина ) Тогда
          // раскраска строки
       КонецЕсли;
    
    Исключение
    КонецПопытки

    На первый взгляд возникает вопрос: WTF???7семь
    На десятый взгляд меня посетили сомненья, ведь код а) рабочий, и 2) гениален!
    Смотрите сами.

    Вместо "Если ОформлениеСтроки.ДанныеСтроки.Загружен Тогда"

    гений с большой буквы "Г" делает финт ушами с наподвыподвертом:
    Так как функция "Найти" работает со строками и 1С автоматически преобразует, где возможно, типы, булево значение ОформлениеСтроки.ДанныеСтроки.Загружен приводится к строке, равной "Истина" или "Ложь". Второй аргумент также приводится к строке, равной "Истина". Далее функция "Найти" выполняет поиск подстроки (аргумент №2) в строке (аргумент №1) и возвращает позицию найденной подстроки, в результате имеем 1 если ОформлениеСтроки.ДанныеСтроки.Загружен = Истина, или 0 в противном случае.
    Получается

    Если 1 Тогда....
    или
    Если 0 Тогда....

    где 1 или 0 автоматически приводится 1Ской к типу булево, где Булево(1) = Истина, и Булево(0) = Ложь.

    ИГОГО:
    Условие выполняется, а гений с большой буквы "Г"... пугает меня, если честно, одним своим существованием о_О

    whiledoman, 17 Июля 2018

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

    −1

    1. 1
    Keyword Substitution

    Котаны, что мы думаем про keyword Substitution?

    Для тех, кто в танке: была в прошлом веке такая VCS RCS.
    В ней можно было в файле указать

    $Id$

    И в момент чекаута эта строчка заменялась на
    pitushok.txt,v 1.41 02.06.1991 petya

    Где 1.41 -- ревизия, дальше дата и login того кто делал checkout.
    Когда ты потом собирал дистрибутив из сырцов то у каждого файла всегда была инфа о том, кто (И когда) последний его трогал.
    Чуваки умели делать
    static char* id ="$id$";

    В результате чего эта инфа сохранялась в бинарниках, ее можно было выдрать через комманду ident ну или вывести как-то иначе.

    Субж перекочевал в CVS, оттуда в SVN, а в gitе он был признан порочной практикой и там так никто не делает.

    Опенбздуны, например, сидящие на CVS, до сих пор имеют профит. Там везде написано
    $OpenBSD: cat.1,v 1.35 2015/11/04 21:28:01 tedu Exp $


    ...а в линуксах -- нет.

    Знаете про keywords subst? Использовали? что думаете?

    roskomgovno, 17 Июля 2018

    Комментарии (16)
  6. PHP / Говнокод #24502

    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
    /* Разработчик  http://webkiev.com/  Тарас КТЛ(Кучинский Тарас Леонидович)  г.Киев ул. Заболотного 26 */
    
    if($count_tovar!=0){
     $count_filtr=count($shop_m_tovar[0]);
    $i=0;while ($i < $count_tovar) {$ii=0; while ($ii < $count_filtr){$shop_filtr[$ii][$i]=$shop_m_tovar[$i][$ii];$ii++;}$i++;}
    if($tovar_sort=="1"){/*сортировка по возрастанию по цене*/
    array_multisort(
    $shop_filtr[6],$shop_filtr[7],$shop_filtr[8],$shop_filtr[9],
    $shop_filtr[10],$shop_filtr[11],$shop_filtr[12],$shop_filtr[13],$shop_filtr[14],$shop_filtr[15],$shop_filtr[16],$shop_filtr[17],$shop_filtr[18],$shop_filtr[19],
    $shop_filtr[20],$shop_filtr[21],$shop_filtr[22],$shop_filtr[23],$shop_filtr[24],$shop_filtr[25],$shop_filtr[26],$shop_filtr[27],$shop_filtr[28],$shop_filtr[29],
    $shop_filtr[30],$shop_filtr[31],$shop_filtr[32],$shop_filtr[33],$shop_filtr[34],$shop_filtr[35],$shop_filtr[36],$shop_filtr[37],$shop_filtr[38],$shop_filtr[39],
    $shop_filtr[40],$shop_filtr[41],$shop_filtr[42],$shop_filtr[43],$shop_filtr[44],$shop_filtr[45],$shop_filtr[46],$shop_filtr[47],$shop_filtr[48],
    $shop_filtr[49],
    $shop_filtr[50],$shop_filtr[51],$shop_filtr[52],$shop_filtr[53],$shop_filtr[54],$shop_filtr[55],$shop_filtr[56],$shop_filtr[57],$shop_filtr[58],$shop_filtr[59],
    $shop_filtr[60],$shop_filtr[61],$shop_filtr[62],$shop_filtr[63],$shop_filtr[64],$shop_filtr[65],$shop_filtr[66],$shop_filtr[67],$shop_filtr[68],$shop_filtr[69],
    $shop_filtr[70],
    $shop_filtr[0],$shop_filtr[1],$shop_filtr[2],$shop_filtr[3],$shop_filtr[4],$shop_filtr[5]
    );
    }
    if($tovar_sort=="2"){/*сортировка на убывание по цене*/
    array_multisort(
    $shop_filtr[6],SORT_DESC, $shop_filtr[7],$shop_filtr[8],$shop_filtr[9],
    $shop_filtr[10],$shop_filtr[11],$shop_filtr[12],$shop_filtr[13],$shop_filtr[14],$shop_filtr[15],$shop_filtr[16],$shop_filtr[17],$shop_filtr[18],$shop_filtr[19],
    $shop_filtr[20],$shop_filtr[21],$shop_filtr[22],$shop_filtr[23],$shop_filtr[24],$shop_filtr[25],$shop_filtr[26],$shop_filtr[27],$shop_filtr[28],$shop_filtr[29],
    $shop_filtr[30],$shop_filtr[31],$shop_filtr[32],$shop_filtr[33],$shop_filtr[34],$shop_filtr[35],$shop_filtr[36],$shop_filtr[37],$shop_filtr[38],$shop_filtr[39],
    $shop_filtr[40],$shop_filtr[41],$shop_filtr[42],$shop_filtr[43],$shop_filtr[44],$shop_filtr[45],$shop_filtr[46],$shop_filtr[47],$shop_filtr[48],
    $shop_filtr[49],
    $shop_filtr[50],$shop_filtr[51],$shop_filtr[52],$shop_filtr[53],$shop_filtr[54],$shop_filtr[55],$shop_filtr[56],$shop_filtr[57],$shop_filtr[58],$shop_filtr[59],
    $shop_filtr[60],$shop_filtr[61],$shop_filtr[62],$shop_filtr[63],$shop_filtr[64],$shop_filtr[65],$shop_filtr[66],$shop_filtr[67],$shop_filtr[68],$shop_filtr[69],
    $shop_filtr[70],
    $shop_filtr[0],$shop_filtr[1],$shop_filtr[2],$shop_filtr[3],$shop_filtr[4],$shop_filtr[5]
    );
    }
    $i=0;while ($i < $count_tovar) {$ii=0; while ($ii < $count_filtr) {$shop_m_tovar[$i][$ii]=$shop_filtr[$ii][$i];$ii++;}$i++;}
    }

    Сортировка товаров на чистом коде

    brevis, 16 Июля 2018

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

    0

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    // https://habr.com/company/JetBrains/blog/249479/
    
    Привет, Хабр!
    
    Некоторое время назад мы объявили конкурс — требовалось продолжить фразу:
    Бьёрн Страуструп создал С++ 36 лет назад, и он до сих пор востребован и пользуется популярностью у разработчиков, потому что...
    
    Спасибо всем участникам за массу положительных эмоций и разнообразные предположения о том, что же сделало C++ таким популярным.

    Посовещавшись, мы выбрали топ-6 ответов:

    j123123, 16 Июля 2018

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

    −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
    Чуваки, давайте тред про книги.
    
    Сейчас как раз хочу выбрать книгу младшему брату (14yo) какое-нибудь интро
    в программирование, такое же волшебное, как книга Ларри, только попроще тех-
    нически, где бы объяснялось, что переменная — это ебучая «ячеечка памяти»,
    и всё такое. Только я подумал лучше сначала дать что-нибудь компилируемое,
    а то потом хрен переучишь, как вы на это смотрите? Сразу на ум приходят книги
    Вирта, но у паскаля сейчас с инфраструктурой пиздец, и на линуксе его компи-
    лить как-то не нативно. (GNU Pascal почил, а заставлять брата патчить кде рано).
    
    У меня у самого опыт перекошенный, я начинал с VB, потом перешел на Pascal,
    но книги попадались отстойные.
    
    Короче, нужен ваш совет.
    Особенно, великих наставшиков roskomgovno, roman-kashitsyn и bormand, и всех
    остальных. Кроме Стертора.

    vistefan, 16 Июля 2018

    Комментарии (332)
  9. Си / Говнокод #24499

    −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
    #include <stdio.h>
    #include <inttypes.h>
         
    int main(void) {
      
    	uint64_t a = 1<<31;
    	uint64_t b = 1<<32;
    	uint64_t c = (uint64_t)1<<32;
         
    	printf("a:%llx\n", a);
    	printf("b:%llx\n", b);
    	printf("c:%llx\n", c);
         
    	return 0;
    }

    a:ffffffff80000000
    b:0
    c:100000000

    Занимался битоёбством и не сразу понял откуда в алгоритме мусор.

    govnokod3r, 16 Июля 2018

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

    +5

    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
    void sort3(uint32_t a[static 3])
    {
      //                   0     1     2     3     4     5     6     7     8
      uint32_t tmp[9] = {a[0], a[1], a[2], a[0], a[1], a[0], a[2], a[1], a[0]};
      uint8_t bits = (a[0] <= a[1]) | ((a[1] <= a[2]) << 1) | ((a[0] <= a[2]) << 2);
      static const uint8_t b[] =
      {
        [0b000] = 6,
        [0b001] = 2,
        [0b010] = 1,
        [0b101] = 5,
        [0b110] = 4,
        [0b111] = 0,
      };
      memcpy(a, tmp+b[bits], 3*sizeof(uint32_t));
    }

    Новая инновационная сортировка на 3 элемента без if-ов
    https://wandbox.org/permlink/pTLXgxKKQuaiVCxb

    j123123, 15 Июля 2018

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