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

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

    +164

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    var id;
    
    $(window).resize(function() {
      clearTimeout(id);
      id = setTimeout(doneResizing, 500);
    });
    
    function doneResizing(){
      window.location.reload();   
    }

    На странице элемент, у которого надо менять положение при ресайзе.

    AntonMMF, 18 Декабря 2014

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

    +156

    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
    foreach($this->_logs as $log)
    {
        if($log[1]!==CLogger::LEVEL_PROFILE)
            continue;
        list($message,$level,$category,$timestamp)=$log;
        if(!strncasecmp($message,'begin:',6))
        {
            $log[0]=substr($message,6);
            $stack[]=$log;
        }
        elseif(!strncasecmp($message,'end:',4))
        {
            $token=substr($message,4);
            if(($last=array_pop($stack))!==null && $last[0]===$token)
            {
                $delta=$log[3]-$last[3];
                $this->_timings[]=array($message,$category,$delta);
            }
            else
                throw new CException(Yii::t('yii','CProfileLogRoute found a mismatching code block "{token}". Make sure the calls to Yii::beginProfile() and Yii::endProfile() be properly nested.',
                    array('{token}'=>$token)));
        }
    }

    Yii 1, реализация профайлинга через лог (ну потому что есть же лог, зачем еще сущности плодить, классы же долго грузятся, а у нас самый лайтвейт фреймворк). Чтобы уж точно наверняка, код дублируется в CProfileLogRoute.

    https://github.com/yiisoft/yii/blob/11c3010a82ce2c25332baacce568ff89e451896a/framework/logging/CLogger.php#L294
    https://github.com/yiisoft/yii/blob/11c3010a82ce2c25332baacce568ff89e451896a/framework/logging/CProfileLogRoute.php#L137

    Fike, 11 Декабря 2014

    Комментарии (13)
  4. Си / Говнокод #17227

    +136

    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
    char *stringFromDTM(MDTM *dtm)
    {
        if (dtm->count < 1)
        return "";
        uint32_t size = (sizeof(MDTMPoint) + sizeof(uint32_t)) * dtm->count;
        void *data = calloc(1, size);
        uint32_t *ptr = data;
        *(ptr++) = size;
        uint32_t index;
        for (index = 0; index < dtm->count; index++)
        *(ptr++) = dtm->points[index].x;
        for (index = 0; index < dtm->count; index++)
        *(ptr++) = dtm->points[index].y;
        for (index = 0; index < dtm->count; index++)
        *(ptr++) = dtm->points[index].color;
        for (index = 0; index < dtm->count; index++)
        *(ptr++) = dtm->points[index].tol;
        for (index = 0; index < dtm->count; index++)
        *(ptr++) = dtm->points[index].size;
        for (index = 0; index < dtm->count; index++)
        *(ptr++) = dtm->points[index].x;
        bool *bptr = (bool *)ptr;
        for (index = 0; index < dtm->count; index++)
        *(bptr++) = dtm->points[index].bad;
        uint32_t len = compressBound(size);
        char *buffer = malloc(len);
        if (compress((Bytef *)buffer, (uLongf *)&len, data, size) == Z_OK)
        {
            free(data);
            char *compressed = malloc(len + sizeof(uint32_t));
            *((uint32_t *)(compressed)) = len;
            strcpy(compressed + sizeof(uint32_t), buffer);
            free(buffer);
        }
        free(buffer);
        free(data);
        return "";
    }

    Я так и не раскурил, почему так, а не иначе.

    Cynicrus, 01 Декабря 2014

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

    +134

    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
    protected static DataTable[] ExecuteDataTablesReader(string ProcedureName, SqlParameter[] Params = null) {
    
                SqlConnection cnn = new SqlConnection(ConnectionString);
                SqlCommand cmd = new SqlCommand(ProcedureName, cnn);
                cmd.CommandType = System.Data.CommandType.StoredProcedure;
                if (Params != null && Params.Count() > 0) {
                    cmd.Parameters.AddRange(Params);
                }
                cnn.Open();
                
                IDataReader rd = cmd.ExecuteReader();
                List<DataTable> tables = new List<DataTable>();
                do {
                    DataTable dt = new DataTable();
                    dt.Load(rd);
                    tables.Add(dt);
                } while (rd.NextResult());
    
                return tables.ToArray();
    
            }

    может я чего не понимаю, но какого хера rd.NextResult() кидает мне exception, что ридер закрыт?

    Lokich, 26 Ноября 2014

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

    +159

    1. 1
    $image_type = substr($image_data,strpos($image_data, '/')+1,strpos($image_data, ';')-(strpos($image_data, '/')+1));

    Выдирание типа из заголовка base64-закодированного изображения (data:image/jpeg;base64,......................)

    Anxizzz, 10 Ноября 2014

    Комментарии (13)
  7. Java / Говнокод #17072

    +73

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    @GET
    @Path("/store")
    void getStoreSummary(@QueryParam("id") final String id, final MethodCallback<StoreSummary> callback);
    
    @GET
    @Path("/store")
    void getStoreDetails(@QueryParam("id") final String id, @QueryParam("detailed") final boolean mustBeTrue, final MethodCallback<StoreInfo> callback);

    Есть API-вызов HTTP GET, который по ?detailed=true возвращает расширенный JSON с дополнительными полями.

    И вот в RestyGWT, оказывается, по-другому никак. То есть если бы других параметров запроса не было, можно было бы просто написать

    @Path("/store?detailed=true")
    . Но он не умеет добавлять динамические параметры запроса к захардкоженным. Если попытаться - получается два вопросительных знака: [/code]/store?detailed=true?id=[id][/code].

    someone, 06 Ноября 2014

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

    +135

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    void SoundService::stop(){
        if (mOutputMixObj != NULL) {
            (*mOutputMixObj)->Destroy(mOutputMixObj);
            mOutputMixObj = NULL;
        }
        if(mEngineObj != NULL){
            (*mEngineObj)->Destroy(mEngineObj);
             mEngineObj = NULL; mEngine = NULL;
        }
    }

    Случайно нашёл в книге по Android NDK, открытой на случайной странице.

    tehned, 30 Октября 2014

    Комментарии (13)
  9. C++ / Говнокод #16993

    +42

    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
    class Message {
    public:
        explicit Message(Level level);
        ~Message();
    
        Level level() const { return level_; }
        const time_t& time() const { return time_; }
        std::string text() const { return s_.str(); }
        bool enabled() const { return enabled_; }
    
        template<class T>
        Message& operator << (const T& t)
        {
            if (enabled_)
                s_ << t;
            return *this;
        }                                                                                       
    
        Message(Message& msg) { moveFrom(msg); }
        Message& operator = (Message& msg) { moveFrom(msg); return *this; }
        struct Ref {
            explicit Ref(Message& msg): msg_(&msg) {}
            Message* msg_;
        };                                                                                                                                
        operator Ref() { return Ref(*this); }
        Message(Ref r) { moveFrom(*r.msg_); }
        Message& operator = (Ref r) { moveFrom(*r.msg_); return *this; }
    
    private:
        Level level_;
        time_t time_;
        std::ostringstream s_;
        bool enabled_;
    
        void moveFrom(Message& msg)
        {
            level_ = msg.level_;
            time_ = msg.time_;
            s_.str(msg.s_.str());
            enabled_ = msg.enabled_;
            msg.enabled_ = false;
        }
    };

    move головного мозга

    roman-kashitsyn, 30 Октября 2014

    Комментарии (13)
  10. Java / Говнокод #16915

    +121

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    if (Ints.contains(new int[] { 4, 5 }, statusCode / 100)) {
    	// error response
    } else {
    	// success response
    }

    Насколько я знаю, Apache HTTP Client не содержит "официального" метода для определения категории кода состояния. Приходится так.

    someone, 23 Октября 2014

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

    +153

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    9. 9
    /*рыба*/
                $render['variables']['winter_complite'] = array(
                    'Жилищный фонд'             =>100
                ,'Котельные'                =>100
                ,'Тепловые сети'            =>100
                ,'Водопроводные сети'       =>100
                ,'Канализационные сети'     =>100
                ,'Создание запасов топлива' =>100
                );

    reformat me!

    memclutter, 19 Октября 2014

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