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

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

    +52

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    // round up the blockSize to fit an integer number of pointers...
    m_blockSize = static_cast<QMPoolSize>(sizeof(QFreeBlock));//start with one
    uint_fast16_t nblocks = uf16_1; //# free blocks in a memory block
    while (m_blockSize < static_cast<QMPoolSize>(blockSize)) {
        m_blockSize += static_cast<QMPoolSize>(sizeof(QFreeBlock));
        ++nblocks;
    }

    в догонку к #17616. делим на 4 с округлением, с помощью цикла.

    P.S. касты и цикл само собой разумеется в ж не нужны:
    m_blockSize = (blockSize + sizeof(QFreeBlock)-1) & ~(sizeof(QFreeBlock)-1);
    nblocks = m_blockSize / sizeof(QFreeBlock);

    Dummy00001, 12 Февраля 2015

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

    +157

    1. 1
    2. 2
    3. 3
    4. 4
    $var = null;
    
    // Не вызовет: "Notice: Undefined Index 0"
    var_dump($var[0][1][2][3]['route']); // NULL

    PHP не показывает Notic'ы если переменная или значение является NULL'ом при попытки получить доступ к элементам массива (заметил это когда функция могла возвратить null или массив). Нашел это интересным.

    volter9, 05 Февраля 2015

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

    +97

    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
    if (!File.Exists(comboBox1.Text + ".pck"))
                {
                    MessageBox.Show("Файла " + comboBox1.Text + ".pck не существует!", "Ошибка");
                }
                else
                {
                    StreamWriter writer = new StreamWriter("Extract.bat");
                    writer.WriteLine("sPCK.exe -pw -x " + comboBox1.Text + ".pck" + Environment.NewLine + "del Extract.bat");
                    writer.Close();
                    System.Diagnostics.Process.Start("Extract.bat");
                    Thread.Sleep(1000);
                    if (File.Exists(comboBox1.Text + ".pck.files"))
                    {
                        //Lol
                    }
                    else
                    {
                        if (checkBox1.Checked)
                        {
                            System.Diagnostics.Process.Start(comboBox1.Text + ".pck.files");
                        }
                        else
                        {
                            //LoL
                        }
                    }
                }

    Решил я значить узнать почему рядом с одной из программ создается .bat файл

    skydev, 30 Января 2015

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

    +50

    1. 1
    2. 2
    3. 3
    if ( !log.append(log_line) )
    
    log.append("Can't append to log");

    laMer007, 23 Января 2015

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

    +135

    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
    private static string GetMultipartFileContentType(string file)
    {
        var ext = file.Split('.').Last().ToLower();
    
        var types = new[]
        {
            new[] {"application/envoy","evy"},
            new[] {"application/fractals","fif"},
            new[] {"application/futuresplash","spl"},
            new[] {"application/hta","hta"},
            new[] {"application/internet-property-stream","acx"},
            new[] {"application/mac-binhex40","hqx"},
            new[] {"application/msword","doc"},
            new[] {"application/msword","dot"},
            new[] {"application/octet-stream","*"},
            new[] {"application/octet-stream","bin"},
            new[] {"application/octet-stream","class"},
            new[] {"application/octet-stream","dms"},
            new[] {"application/octet-stream","exe"},
            new[] {"application/octet-stream","lha"},
            new[] {"application/octet-stream","lzh"},
            new[] {"application/oda","oda"},
            // Многобукв...
            new[] {"x-world/x-vrml","xof"}
        };
    
        var toReturn = types.FirstOrDefault(t => t[1] == ext);
    
        return toReturn != null ? toReturn[0] : "application/octet-stream";
    }

    pushistayapodmyshka, 05 Января 2015

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