1. PHP / Говнокод #5247

    +166

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    $res['descr'] = str_replace("\n\n\n", "<br>", $res['descr']);
    $res['descr'] = str_replace("\n\n", "<br>", $res['descr']);
    $res['descr'] = str_replace("<br><br><br>", "<br>", $res['descr']);
    $res['descr'] = str_replace("<br><br>", "<br>", $res['descr']);
    $res['descr'] = str_replace("<br><br>", "<br>", $res['descr']);

    Конвертируем переносы строк типа.

    govnozmey, 12 Января 2011

    Комментарии (9)
  2. Java / Говнокод #5246

    +74

    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
    @Name("solr")
    @AutoCreate
    public class SolrClient {
        @Create
        public void init() {
            try {
                server = startRemoteSolr();
            } catch (Exception e) {
                log.error(e, e);
            }
        }
    
        public SolrServer startRemoteSolr() throws MalformedURLException, SolrServerException {
            CommonsHttpSolrServer solr = new CommonsHttpSolrServer("http://localhost:8983/solr");
            solr.setRequestWriter(new BinaryRequestWriter());
            return solr;
        }
    
    }

    Seam. Перевод для непричастного: на старте сайта вызывается метод startRemoteSolr(). Solr - это поисковый движок. Если он не запустится, на сайте не будет работать поиск. И если на запуске Solr будет ошибка, то в лог она попадёт просто как exception + stack trace.

    Что не так в коде? Очевидно, его писали люди, не задумываясь об эксплуатации, что свойственно новичкам. А ведь устранение проблем в рабочем сайте - это приоритет номер один. Сама разработка сайта, сидя в удобном кресле с кашкой кофе - где-то сильно ниже.

    Так вот, что не так?

    1. При выводе ошибок надо писать - что это за ошибка. В данном случае: "Запуск поисковика неудался, ПОИСК НА САЙТЕ РАБОТАТЬ НЕ БУДЕТ." И уже потом - stack trace.

    2. Если некая ошибка связана с ресурсами - сетевыми, или на файловой системе, в логе надо также описывать этот ресурс. Т.е. "Не удалось запустить клиент поисковика по адресу http://localhost:8983/solr". Что бы из логов сразу было видно, что порт указан правильно или нет, хост и тд.

    Но выпускникам ВМК МГУ такие вещи неведомы, они слишком крутые что бы опускаться до таких мелочей. Чайники, хуле.

    yvu, 12 Января 2011

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

    +171

    1. 1
    @flush();@ob_flush();@flush();

    Я сказал flush(), сука! Эта фигня встречается в одном .php файле раз 20

    govnozmey, 12 Января 2011

    Комментарии (5)
  4. 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)
  5. 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)
  6. 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)
  7. PHP / Говнокод #5241

    +157

    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
    session_start();
    $value = array(
           "severity" => $severity,
           "message" => $message,
           "filepath" => $filepath,
           "line" => $line
    );
    if(empty($_SESSION['data']))
    {
        $_SESSION['data'] = serialize($value);
    }
    else
    {
        unset($_SESSION['data']);
        $_SESSION['data'] = serialize($value);
    }
    header("Location: ".BASE_URL."/error/php_error/");

    Вот обработчик ошибок из уже упомянутого мною проекта. Тот же самый кодер обрабатывает ошибки. При более чем одной ошибке валиться весь проект, из-за того что сессия уже стартовала. Увидев это у меня возник facepalm.

    bazyaka, 12 Января 2011

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

    +145

    1. 1
    2. 2
    3. 3
    #ifndef UTF8_ONLY
        I HATE YOU!!!!
    #endif

    Говногость, 12 Января 2011

    Комментарии (3)
  9. 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)
  10. C# / Говнокод #5238

    +117

    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
    public class A
    {
        private int field;
        public int Field { get { return field; } }
    
        public void Foo()
        {
             B.CreateInstance().A.field = 4;
        }
    }
    
    public class B
    {
        private static _b = null;
        private A _a = new A();
        public A { get { return _a; } }
    
        private B() {}
        public static B CreateInstance()
        {
             if (_b == null)
             {
                  _b = new B();
             }
             return _b;
        }
    }

    Встретил сегодня. Не мог не поделиться. Кода там много, поэтому выписал суть. CreateInstance() - это реальное название метода.

    t36, 12 Января 2011

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