1. Список говнокодов пользователя SanityIO

    Всего: 12

  2. Perl / Говнокод #5244

    −116

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    9. 9
    sub child_handler {
            #wait end of the child process
            my $waitedpid = wait;
            delete $my_childs{$waitedpid};
            $SIG{CHLD} = \&child_handler;
            LOG ("ripped $waitedpid" . ($? ? " with exit $?" : '')) if ($main::DEBUG>0);
    }
    
    $SIG{CHLD} = \&child_handler;

    Тарификатор плодящий зомби.
    Автор не поленился переустановить обработчик для сигнала.. хотя это не нужно. Всем читать учебники - как правильно рипать чайлдов в цикле.
    (с) Руслан Залата

    SanityIO, 12 Января 2011

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

    −126

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    if(syswrite($sock, $buf, length($buf)) > 0) {
         ...
    }
    else{
          # здесь автор считает что сокет сдох и закрывает его
           client_process_except($sock);
    }

    Но мы то с вами знаем что syswrite может вернуть 0
    (c) Руслан Залата

    SanityIO, 12 Января 2011

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

    −123

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    my $s = select($rout = $rin, $wout = $win, $eout = $ein, 10);
    
    # ...
    if( !$WORK_DONE) {
              LOG("SLEEP");
              sleep(1);
    }
    $WORK_DONE = 0;

    Высоко нагруженный процесс требующий минимального времени реакции.
    (с) Руслан Залата

    SanityIO, 12 Января 2011

    Комментарии (0)
  5. SQL / Говнокод #5239

    −853

    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
    billats=# select * from t_month_names order by m_begin desc limit 10;
        month    |  m_begin   |   m_end    
    -------------+------------+------------
     Декабрь 04  | 2004-12-01 | 2004-12-31
     Ноябрь 04   | 2004-11-01 | 2004-11-30
     Октябрь 04  | 2004-10-01 | 2004-10-31
     Сентябрь 04 | 2004-09-01 | 2004-09-30
     Август 04   | 2004-08-01 | 2004-08-31
     Июль 04     | 2004-07-01 | 2004-07-31
     Июнь 04     | 2004-06-01 | 2004-06-30
     Май 04      | 2004-05-01 | 2004-05-31
     Апрель 04   | 2004-04-01 | 2004-04-30
     Март 04     | 2004-03-01 | 2004-03-31

    это не шутка.

    SanityIO, 12 Января 2011

    Комментарии (11)
  6. SQL / Говнокод #5237

    −858

    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
    billats=# select * from lists limit 40;
     type_ |        name        |        value
    -------+--------------------+----------------------
       102 | debt_list_progress | 0
       102 | debt_size          | 0
         5 | 0                  | Тюменьпрофбанк
        10 | 1                  | Физ. лицо
        10 | 2                  | Юр. лицо
        10 | 3                  | Бюджет. орг.
        11 | 0                  | Все группы
        11 | 1                  | Приход. ордер
        11 | 3                  | Расч. счет
        11 | 4                  | Касса
        11 | 6                  | Взаимозачеты
        20 | 1                  | Установка
        20 | 2                  | Ремонт
        20 | 3                  | Задание
        20 | 4                  | Сообщение
        20 | 5                  | Авария
        21 | 1                  | Ген.директор
        21 | 12                 | Дежурный оператор
        21 | 3                  | Гл.бухгалтер
        21 | 5                  | Нач. абон.отдела
        21 | 6                  | Линейщик
        21 | 7                  | Инженер АТС
        21 | 9                  | Кассир
        22 | boss               | 1
        22 | irina              | 3
        22 | serg               | 100
        22 | tanya              | 9
        22 | ugin               | 100
        23 | 001                | сегодня
        23 | 002                | завтра
        23 | 003                | послезавтра
        23 | 010                | на этой неделе
        23 | 011                | 1 неделя
        23 | 012                | 2 недели
        23 | 020                | в этом месяце
        23 | 021                | 1 месяц
        23 | 022                | 2 месяца
        25 | ugin               | [email protected]
        30 | 103                | Прямая линия
        30 | 110                | 2-х мегабитный канал

    Все есть объект.

    SanityIO, 12 Января 2011

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

    −861

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    CREATE FUNCTION "insert_payment" (integer) RETURNS integer AS '                                                                                                                     
    DECLARE                                                                                                                                                                             
            l_payment       integer;                                                                                                                                                    
    BEGIN                                                                                                                                                                               
            INSERT INTO payments (client,type_,pdate,number_)                                                                                                                           
            VALUES ($1,4,current_date,nextval_(''payments_number_1_seq''));                                                                                                             
                                                                                                                                                                                        
            SELECT INTO l_payment last_value FROM payments_id_seq;                                                                                                                      
            RETURN l_payment;                                                                                                                                                           
    END;' LANGUAGE 'plpgsql';

    Функция должна вставлять платеж и возвращать его id.
    Под нагрузкой конечно же 8 строка возвращает нен тот id. (когда несколько параллельных транзакций успевают сделать вставку.)
    Что интересно - возвращаемый функцией id используется другой хранимкой для проставления суммы платежа. И это пости всегда работает :)
    Перл от "отцов основателей".

    SanityIO, 12 Января 2011

    Комментарии (6)
  8. Perl / Говнокод #5233

    −119

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    $max_conn = 150;
    # ...
    
    socket(SERVER, PF_INET, SOCK_STREAM, getprotobyname('tcp') )  || LOG_FLUSH && die "socket: $!";
    setsockopt(SERVER, SOL_SOCKET, SO_REUSEADDR, 1)   || LOG_FLUSH && die "setsockopt: $!";
    bind(SERVER, sockaddr_in($port, inet_aton($interface))) ||  LOG_FLUSH && die "bind: $!";
    listen(SERVER,$max_conn) || LOG_FLUSH && die "listen: $!";

    Перл от создателя. $max_conn - это якобы должно быть максимальное число дочерних процессов (причем количество child процессов не проверяется). хотя все знаю что должно передаваться как аргумент backlog :)

    SanityIO, 12 Января 2011

    Комментарии (0)
  9. JavaScript / Говнокод #5232

    +159

    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
    function calls() {                                                                                                                                                                  
            //document.frm_param.form.value="client_calls";
            //document.frm_param.title_.value="Работа с клиентом | Звонки";
            s_url="$bill_cgi$?form=calls"+
                    "&date_begin=01.01.1990"+
                    "&date_end=01.01.2010"+
                    "&call_type=100"+
                    "&phone="+
                    "&to_phone="+
                    "&client=$client$"+
                    "&town_code="+
                    "&direction="+
                    "&zone="+
                    "&order_by=date_"+
                    "&order_by2="+
                    "&group_by="+
                    "&calls_recalc="+
                    "&calls_print=1";
    
            window.top.location=s_url;
    
    }

    (c) Руслан Залата

    SanityIO, 12 Января 2011

    Комментарии (3)
  10. Perl / Говнокод #5231

    −116

    1. 1
    2. 2
    3. 3
    4. 4
    $answer=~ s/\\/\\\\/g;                                                                                                                                                      
    $answer=~ s/\'/\\\'/g;
    # ...
    $dbh->do("INSERT INTO docflow_rules (type_,state1,state2,p,entity,subj_require,comm_require) VALUES ($doctype,$from_,$to_,'$answer',$entity,$subj_r,$comm_r)");

    Еще от неизменного автора.

    SanityIO, 12 Января 2011

    Комментарии (2)
  11. Perl / Говнокод #5230

    −118

    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
    if(
        ( $session_begin ge $tariff_ref->{date} ) &&
        ( !$tariff_ref->{date_end} || $session_begin le $tariff_ref->{date_end} ) &&
        ( !$tariff_ref->{nas_id} || $tariff_ref->{nas_id} eq $nas_id) &&
        ( !$tariff_ref->{ppp_type} || $tariff_ref->{ppp_type} eq $ppp_type) &&
        ( $notariffzone || !$tariff_ref->{tariff_zone} ||
                        $tariff_ref->{tariff_zone} eq $tariff_zone) &&
        ( !$tariff_ref->{client_type} || $tariff_ref->{client_type} eq $client_type) &&
        ( !$tariff_ref->{day_type} || $tariff_ref->{day_type} eq
                        &common::type_of_day($oper_id,$session_begin) ) &&
    
        (
                (!$divide_by_time_zone &&
                        (!$tariff_ref->{time_from} || !$tariff_ref->{time_to}  ||
                                &common::check_time_zone(
                                $session_begin,
                                $tariff_ref->{time_from},
                                $tariff_ref->{time_to}
                                )
                        )
                ) ||
                ($divide_by_time_zone &&
                        (!$tariff_ref->{time_from} || !$tariff_ref->{time_to}  ||
    
                                &common::check_time_zone(
                                $session_begin,
                                $tariff_ref->{time_from},
                                $tariff_ref->{time_to}
                                ) ||
    
                                &common::check_time_zone(
                                $session_end,
                                $tariff_ref->{time_from},
                                $tariff_ref->{time_to}
                                ) ||
    
                                &common::check_time_zone(
                                $tariff_ref->{time_from},
                                common::get_time_from_str($session_begin),
                                common::get_time_from_str($session_end),
                                )
                        )
    
    
                    )
        ) &&
    
        (
                (!$divide_by_counter &&
                        (!defined($tariff_ref->{counter1_from}) || !defined($tariff_ref->{counter1_to})
    
                                || ($tariff_ref->{counter1_from} <= $resource_begin &&
                                $resource_begin < $tariff_ref->{counter1_to} )
                        )
                ) ||
                ($divide_by_counter &&
                            (!defined($tariff_ref->{counter1_from}) || !defined($tariff_ref->{counter1_to})
                                || ($tariff_ref->{counter1_from} <= $resource_begin &&
                                $resource_begin < $tariff_ref->{counter1_to} )
    
                                || ($tariff_ref->{counter1_from} <= $resource_end  &&
                                $resource_end < $tariff_ref->{counter1_to} )
    
                                || ($resource_begin <= $tariff_ref->{counter1_from} &&
                                $tariff_ref->{counter1_from} < $resource_end)
                        )
    
                )
    
    
        )
    
    
    ) {

    Один if от создателя :) Еще (с) Руслан Залата

    SanityIO, 12 Января 2011

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