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

    +12

    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
    #include <iostream>
    
    class base
    {
    	virtual void on_create() { }
    public:
    	int value;
    	float another_value;
    
    	void create()
    	{
    		static base test;
    		if(*reinterpret_cast<unsigned int *>(this) != *reinterpret_cast<unsigned int *>(&test))
    		{
    			std::cout << "please, do not override on_create()\n";
    		}
    		on_create();
    	}
    };
    
    class derived : public base
    {
    	virtual void on_create(){}
    };
    
    int main(int argc, char * argv[])
    {
    	std::cout << "base\n";
    	base b;
    	b.create();
    
    	std::cout << "derived\n";
    	derived d;
    	d.create();
    }

    Родилось в попытке ограничить переопределение виртуального метода.
    Работает, цуко.
    http://ideone.com/gUN9OA

    Xom94ok, 20 Ноября 2013

    Комментарии (5)
  2. PHP / Говнокод #14116

    +160

    1. 1
    2. 2
    3. 3
    if(floor($info['http_code'] / 100) >= 4) {
      throw $this->castError($result);
    }

    Библиотека интеграции с Mandrill.

    korchasa, 20 Ноября 2013

    Комментарии (4)
  3. Куча / Говнокод #14115

    +125

    1. 1
    2. 2
    3. 3
    На картинке — классическая древнегреческая статуя «Самсон, поражающий дубиной Бага, покровителя говнокода».
    Древнегреческие программисты считали, что подсчет ссылок — универсальный инструмент, избавляющий от всех ошибок.
    Сейчас мы знаем, что древние ошибались.

    http://habrastorage.org/storage3/036/678/6e4/0366786e4530108f26e3ae9b8551bbad.jpg
    http://habrahabr.ru/company/ifree/blog/202190/

    Что имеет ввиду автор и почему он вообще гонит на RC?

    LispGovno, 20 Ноября 2013

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

    +11

    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
    void run(std::map<QString, QString> params,QTextStream &os) const
    	{
    
    		static int ko=0;
    			ko++;
    			//r->method_="GET";
    			srand(time(0));// без этого числа будут одинаковые
    			QString  randomData="["+ (QString::number(ko))+" , "+ (QString::number(rand()%100))+ "]";
    			//int index= params["idChpu"].toInt();
    			std::list<QString> idsparams=getIdsDataRequest(params["dataRequestIds"]);
    			QString dataInIds="";
    			//for (auto idParam=idsparams.begin();idParam!=idsparams.end();idParam++)
    			for (const auto &idParam : idsparams)
    			{
    				qDebug()<<idParam;
    				auto kokoFunction=[](const std::function<QString()> & function){QString date; for(auto i=0 ;i<10;i++){date+= function()+QString(" , ");} ; return date;};
    				if (idParam==QString("id0"))
    				{dataInIds=dataInIds+QString("\"")+(idParam)+QString("\"")+QString(":[")+kokoFunction([](){return QString::number((ko++));})+QString::number((ko++))+QString("],");}
    				else
    				{dataInIds=dataInIds+QString("\"")+(idParam)+QString("\"")+QString(":[")+kokoFunction([](){return QString::number(rand()%100);})+QString::number(rand()%100)+QString("],");}
    			};
    			QString jsonData=QString("{")+
    						QString("\"idLastKey\":\"10\",")+dataInIds+QString("}");
    
    		qDebug()<<"TgetDataOnRequest run</h1>";
    		os << "HTTP/1.0 200 Ok\r\n"
    				"Content-Type: text/html; charset=\"windows-1251\"\r\n"
    				"\r\n"<<jsonData<<//randomData<<
    				"\n";
    
    //				  << QDateTime::currentDateTime().toString() << connectionSettings.getUrl()<<"\r\n"<<connectionSettings.getViewRequest()<<"\n";
    	}

    Надеюсь это временный код, но очень сомневаюсь.

    laMer007, 20 Ноября 2013

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

    +16

    1. 1
    2. 2
    const TReferenceToConstantStringSlice TFileTransfer::Beginer="<HTML><HEAD><FONT SIZE=6><A HREF='/'>Конфиденциально</A></FONT SIZE></HEAD><BODY><BR>";
    const TReferenceToConstantStringSlice TFileTransfer::Ender="</BODY></HTML>";

    Конфиденциально - это я сейчас стер.

    laMer007, 20 Ноября 2013

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

    +153

    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
    //поменяет src картинки на cid и вернет массив с дополнительными секциями тела письма
    function convert_image_src($text, &$new_section_arr){
    	global $_SERVER;
    	
    	//расчленяем текст на куски по img
    	$new_src_arr=array();//массив путей к картинкам
    	$arrTmp=explode("<img", $text);
    	$explode_str=array("\\\"", "\"", "'");
    	
    	for($i=1; $i<sizeof($arrTmp); $i++){
    		$arrTmp2=explode("src=", $arrTmp[$i]);
    		
    		for($j=1; $j<sizeof($arrTmp2); $j++){
    			for($k=0; $k<sizeof($explode_str); $k++){
    				if(substr($arrTmp2[$j], 0, strlen($explode_str[$k]))==$explode_str[$k]){
    					$arrTmp3=explode($explode_str[$k], $arrTmp2[$j]);
    					
    					//считать можем только картинки с того же сервера  - остальные побоку
    					if(ref_is_server($arrTmp3[1])){
    						$old_src_arr[]=$arrTmp3[1];
    						$new_src_arr[]=convert_url_2_full_server($arrTmp3[1]);
    					}
    				}
    			}
    		}
    	}
    	
    	//теперь формируем новые секции
    	for($i=0; $i<sizeof($new_src_arr); $i++){
    		$file_arr=get_file_content($new_src_arr[$i], true);
    		if(strlen($file_arr[0])>0){
    			//запоминаем секцию
    			$new_section_arr[]=$file_arr[0];
    			//заменяем ссылку на cid
    			$text=str_replace($old_src_arr[$i], "cid:".$file_arr[1], $text);
    		}
    	}
    	
    	return $text;
    }

    Супер функция, которая парсит картинки в тексте и заменяет на, как я понял, новые ссылки уже на собственном сервере.
    Пока пытался разобраться, наступил когнитивный диссонанс.

    oooZinka, 20 Ноября 2013

    Комментарии (0)
  7. 1C / Говнокод #14111

    −165

    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
    Запрос.Текст = ""
    //...
    ГДЕ
    	ВЫБОР
    		КОГДА ЕСТЬNULL(ВТМоделиПоставщика.КодМоделиПоставщика, "") = ""
    			ТОГДА 0
    		ИНАЧЕ 1
    	КОНЕЦ = 0
    //...
    
    Результат = Запрос.Выполнить();
    ВыборкаДетальныеЗаписи = Результат.Выбрать();
    
    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
    		Если  СтрДлина(ВыборкаДетальныеЗаписи.КодМоделиПоставщика) <> 0 Тогда 
                    //...
                    КонецЕсли;
    КонецЦикла;

    Масло масляное. Захочешь нарочно такое придумать - не получится.

    rull9ss, 20 Ноября 2013

    Комментарии (1)
  8. JavaScript / Говнокод #14110

    +153

    1. 1
    http://froland.ru/samodel/myart_js1.html

    Я хотел бы это развидеть.

    nsauk, 20 Ноября 2013

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

    +138

    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
    // прога у нас многопоточная, данный код выполняется в потоке. Создание и настройка Idhttp прописана в конструкторе потока.
    while not terminated do
        begin
           synchronize(ReadProxy);
            if ThreadExit then break;
            try
               memorystream.Position:=0;
              try
                idHTTP.Get(linknew,memorystream);
                idhttp.disconnect;
              except
                idhttp.Disconnect;
              end;
              finally
                temp:=memorystreamtostring(memorystream); // если этого не сделать, память будет утекать.
                memorystream.clear;
              end;

    Я нашел способ предотвратить утечки памяти в Indy, при Get-запросе -
    многие грешат на Indy, мол, нестабильная она в потоках, провоцирует утечки.
    Оказалось, что дело-то в tmemorystream, я его маму бля ебал!!!

    Stertor, 19 Ноября 2013

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

    −168

    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
    Процедура ПараметрНачалоВыбора(Элемент, СтандартнаяОбработка)
    	
    	СтандартнаяОбработка=Ложь;
    	ПараметрВладелец=Справочники.ПараметрыНоменклатуры.ПустаяСсылка();
    	ТипМетаданных = Метаданные.НайтиПоТипу(ТипЗнч(Элемент.Значение));
    	
    	ОткрываемаяФорма  = ПолучитьФорму(ТипМетаданных.ПолноеИмя()+".ФормаВыбора");
    	
    	Отборы = Новый Структура("ТипПараметра,Подчинен",ВидНоменклатуры[Элемент.Имя],ПараметрВладелец);
    	Для Каждого ЭлементСтруктуры из Отборы Цикл
    		ЭлементОтбора = ОткрываемаяФорма.Отбор.Найти(ЭлементСтруктуры.Ключ);
    		Если Не ЭлементОтбора = Неопределено  Тогда
    			ЭлементОтбора.Установить(ЭлементСтруктуры.Значение);
    		КонецЕсли;	
    	КонецЦикла;	
    	ОткрываемаяФорма.НачальноеЗначениеВыбора = Элемент.Значение;
    	ОткрываемаяФорма.ОткрытьМодально(); 	
    	ЭтотОбъект[Элемент.Имя] = ОткрываемаяФорма.ТекущийЭлемент.ТекущаяСтрока;
    	ПараметрПриИзменении(Элемент);
    	
    КонецПроцедуры

    Процедура НачалоВыбора в конфе одного из клиентов. Что-то смущает, но не могу понять что.

    rull9ss, 19 Ноября 2013

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