1. C++ / Говнокод #13944

    +10

    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
    void ImageArea::saveConf(bool def)
    {
        static bool fp = true;
        static QString filename = QString("default.conf");
        if(!def){
            filename = QFileDialog::getSaveFileName(this, tr("Save config"), "", tr("Config files (*.conf)"));
            if(fp){
                QFile file(filename);
                if(file.open(QFile::WriteOnly)){
                    QTextStream str(&file);
                    str << crop[0].x() << " " << crop[0].y() << "\n";
                    str << crop[1].x() << " " << crop[1].y() << "\n";
                    str << square[0].x() << " " << square[0].y() << "\n";
                    str << square[1].x() << " " << square[1].y() << "\n";
                    str << square[2].x() << " " << square[2].y() << "\n";
                    QMessageBox::information(this, tr("Next step"), tr("Put 3 points then press Save again"));
                }else{
                    QMessageBox::warning(this, tr("Error"), tr("Can not open a file"));
                }
                fp = false;
            }else{
                QFile file(filename);
                if(file.open(QFile::Append)){
                    QTextStream str(&file);
                    str << square[0].x() << " " << square[0].y() << "\n";
                    str << square[1].x() << " " << square[1].y() << "\n";
                    str << square[2].x() << " " << square[2].y() << "\n";
                }else{
                    QMessageBox::warning(this, tr("Error"), tr("Can not open a file"));
                }
                fp = true;
            }
        }else{
            QFile file(filename);
            if(file.open(QFile::WriteOnly)){
                QTextStream str(&file);
                str << conf.crop[0].x() << " " << conf.crop[0].y() << "\n";
                str << conf.crop[1].x() << " " << conf.crop[1].y() << "\n";
                str << conf.square[0].x() << " " << conf.square[0].y() << "\n";
                str << conf.square[1].x() << " " << conf.square[1].y() << "\n";
                str << conf.square[2].x() << " " << conf.square[2].y() << "\n";
                str << conf.square0[0].x() << " " << conf.square0[0].y() << "\n";
                str << conf.square0[1].x() << " " << conf.square0[1].y() << "\n";
                str << conf.square0[2].x() << " " << conf.square0[2].y() << "\n";
            }
        }
    }

    Сохраняем конфиг в джва захода.

    Abbath, 14 Октября 2013

    Комментарии (0)
  2. C++ / Говнокод #13942

    +13

    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
    if(ortho){
                if( abs(e->x() - line.p1().x() ) * 2 < abs( e->y() - line.p1().y() ) ){
                    y = e->y();
                    x = line.p1().x();
                }else if(abs(e->x() - line.p1().x() ) > 2 * abs( e->y() - line.p1().y() )){
                    x = e->x();
                    y = line.p1().y();
                }else if(abs(e->x() - line.p1().x() ) * 2 > abs( e->y() - line.p1().y() ) &&
                         abs(e->x() - line.p1().x() ) < abs( e->y() - line.p1().y() )){
                    if((e->x() < line.p1().x() && e->y() < line.p1().y()) || (e->x() > line.p1().x() && e->y() < line.p1().y())){
                        x = e->x();
                        y = line.p1().y() - abs(line.p1().x() - e->x());
                    }else if((e->x() > line.p1().x() && e->y() > line.p1().y()) || (e->x() < line.p1().x() && e->y() > line.p1().y())){
                        x = e->x();
                        y = line.p1().y() + abs(line.p1().x() - e->x());
                    }
                }else if(abs(e->x() - line.p1().x() ) < 2 * abs( e->y() - line.p1().y() ) &&
                         abs(e->x() - line.p1().x() ) > abs( e->y() - line.p1().y() )){
                    if((e->x() < line.p1().x() && e->y() < line.p1().y()) || (e->x() < line.p1().x() && e->y() > line.p1().y())){
                        y = e->y();
                        x = line.p1().x() - abs(line.p1().y() - e->y());
                    }else if((e->x() > line.p1().x() && e->y() > line.p1().y()) || (e->x() > line.p1().x() && e->y() < line.p1().y())){
                        y = e->y();
                        x = line.p1().x() + abs(line.p1().y() - e->y());
                    }
                }else{
                    x = e->x();
                    y = e->y();
                }

    Abbath, 14 Октября 2013

    Комментарии (34)
  3. C++ / Говнокод #13914

    +8

    1. 1
    2. 2
    3. 3
    4. 4
    n = strlen(pName);
    name = new char[n + 1];
    memset(name, 0, n + 1);
    memcpy(name, pName, n);

    боянчик. std::string наверное религия не позволяет. а strdup() слишком С. oh wait...

    Dummy00001, 09 Октября 2013

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

    −4

    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
    static Singleton * g_pInstance = NULL;
    
    Singleton* Singleton::sharedInstance()
    {
        if (g_pInstance)
            return g_pInstance;
        else {
            g_pInstance = new Singleton();
            if (g_pInstance->init()) {
                return g_pInstance;
            } else {
                delete g_pInstance;
                g_pInstance = NULL;
            }
            return g_pInstance;
        }
    }

    Ещё из жизни синглтонов. Даёшь больше return'ов!

    Deacon, 08 Октября 2013

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

    +16

    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
    // in .h file
    class Singleton
    {
    public:
        Singleton();
        ~Singleton();
    private:
        static Singleton* m_Instance;
        friend Singleton& GetInstance();
    };
    
    inline Singleton& GetInstance()
    {
        assert(Singleton::m_Instance);
        return *Singleton::m_Instance;
    }
    
    // in .cpp file
    Singleton* Singleton::m_Instance = NULL;
    
    Singleton::Singleton()
    {
        assert(!m_Instance);
        m_Instance = this;
    }
    
    Singleton::~Singleton()
    {
        m_Instance = NULL;
    }

    Вот такую реализацию синглтона увидел в одном проекте.
    ЗЫ: Для его корректной работы, в main было написано конечно же:
    main() {
    Singleton* s = new Singleton;
    ...
    delete s;
    }

    Deacon, 08 Октября 2013

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

    +8

    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
    void SaveEncryptedFile( const char *text, int len, const char* filename )
    {
    	char* pEncryptedText = new char[strlen(text)+1];
    	string x1 = "you'll";
    	string x2 = "never";
    	string x3 = "get a";
    	string x4 = "password";
    	char l_pBuf[255];
    	sprintf(l_pBuf,"%d",30*11/3);
    	string result = x1+x2+x2+x1+l_pBuf+x3;
    	encryptString(text,pEncryptedText,result.c_str(),strlen(text),result.length()); // там внутри xor
    
    	FILE* pFile = fopen(filename, "wb");
    	if (pFile)
    	{
    		fwrite(pEncryptedText,sizeof(char),len,pFile);
    		fclose(pFile);
    	}
    
    	delete[] pEncryptedText;
    }

    Нашёл в рабочем проекте. Для "расшифровки" файла используется ещё одна такая же функция.

    Deacon, 07 Октября 2013

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

    +8

    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
    const Registry & Registry::getInstance()
    {
    	Registry *instance = RegistrySingleton::instance();
    	if (!instance->mRootNode) {
    		instance->load();
    	}
    	return *instance;
    }
    
    void Registry::load()
    {
    	try {
    		// ...
    		if (!mReader) {
    			mReader = XMLReaderFactory::createXMLReader();
    		}
    		// ...
    		mReader->parse( ... );
    	} catch (...) {
    		// ...
    		throw; // удачи всем пользователям обрабатывать исключения xerces...
    	}
    }

    боян синглтонно-абстрактный для чтения xml конфигурации с помощью xerces.

    и не только ошибки не обрабатаешь (потому что getInstance() их бросает, угадай какой именно вызов из сотен загружает конфигурацию), но и в добавок народ не впечатал как многопоточность сделать правильно (RegistrySingleton это специализация шаблона который синхронизирует инициализацию mInstance переменной, и только).

    Dummy00001, 07 Октября 2013

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

    +4

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    int eval (const Expr& e)
    {
        Match(e)
        Case(const Value& x) return x.value;
        Case(const Plus& x) return eval (x.e1)+eval(x.e2);
        Case(const Minus& x) return eval(x.e1)−eval(x.e2);
        Case(const Times& x) return eval(x.e1)∗eval(x.e2);
        Case(const Divide& x) return eval(x.e1)/eval (x.e2);
        EndMatch
    }

    Бьёрн Страуструп выбирает борщ.
    http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2012/n3449.pdf
    http://www.linux.org.ru/forum/development/9525806

    Заметим, что не только Страуструп раскаялся в прошлом. Кармак с энтузиазмом рассказывает, как с головой погрузился в Haskell и Scheme, объясняет, почему хаскель невероятно крут и почему сегодня он бы, вероятно, сделал QuakeScheme вместо QuakeC. Он пишет на хаскеле порт wolf3D.

    LispGovno, 05 Октября 2013

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

    +61

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    УЧИМСЯ ТРАЛИРОВАТЬ ВМЕСТИ С PragramistOtBoga
    
      PragramistOtBoga: ЗДАРОВА ЛАЛКА АЗАЗА
      ЛАЛАКА ПРАГРАМИСТ: ПРевет не тралируй миня пажалузта!!!!!!
      PragramistOtBoga: Ты лах карочи))0))нульскопка Мамку С++ и бал азазазаза лалка затарлин))0
      ЛАЛАКА ПРАГРАМИСТ: Супкпздц((9 миня апять затралил гиниальный траль PragramistOtBoga

    Сиводня маэстра тралинга PragramistOtBoga научит вас тралиравать лалак
    Штобы к завтра дамашку зделали! Смарите у миня праверю))0

    PragramistOtBoga, 04 Октября 2013

    Комментарии (2)
  10. C++ / Говнокод #13894

    +1

    1. 1
    std::AIDS

    an0nym, 04 Октября 2013

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