- 1
http://cs409725.vk.me/v409725134/612b/bo_sT8EuYK4.jpg
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+120
http://cs409725.vk.me/v409725134/612b/bo_sT8EuYK4.jpg
+13
//Сегодня QuestionGovno.
//Допустим есть код:
#include <iostream>
using namespace std;
class T{};
struct M{M(T){}};
struct G{G(T){}};
int f(M){return 0;}
bool f(G){return 0;}
int main() {
bool a(f(T()));
return 0;
}
Казалось бы должна быть неоднозначность при компиляции, так как компилятор не знает какую перегрузку f бы выбрать.
И как бы так оно и есть:
http://ideone.com/o21NDg
Логично? Логично.
Но стандарт считает по другому:
http://en.cppreference.com/w/cpp/language/overload_resolution
Смотрите пункт:
Best viable function
F1 is determined to be a better function than F2 if implicit conversions for all arguments of F1 are not worse than the implicit conversions for all arguments of F2, and
...
2) or. if not that, (only in context of non-class initialization by conversion), the standard conversion sequence from the return type of F1 to the type being initialized is better than the standard conversion sequence from the return type of F2
Как мне повторить поведение, которое указано в стандарте?
+65
public class Path {
private String path;
private char winSep = '\\';
private char unixSep = '/';
public void set(String path){
if(!path.endsWith(File.separator)){
path.concat(File.separator);
}
this.path = path;
if(File.separatorChar == winSep && path.charAt(0) == unixSep){
this.path = path.replace(unixSep, winSep).substring(1);
}
}
public String get(){
String path = new String(this.path);
return path;
}
public String getRoot(){
String root = null;
if(File.separatorChar == unixSep){
root = "/";
}
if(File.separatorChar == winSep){
root = this.path.substring(0, this.path.indexOf(winSep)+1);
}
return root;
}
}
в 6 йаве нету класса Path, пришлось самому делать костыль-велосипед. тут где-то ошибочка есть, пока не смотрел.
+130
List<KeyValuePair<string, string>> documentList = GetList();
использование списка пар ключ-значение вместо словаря (Dictionary<string, string>)
+159
/*
-----------------------------------------------------------------
Отмечаем все темы как прочитанные
-----------------------------------------------------------------
*/
$req = mysql_query("SELECT `forum`.`id`
FROM `forum` LEFT JOIN `cms_forum_rdm` ON `forum`.`id` = `cms_forum_rdm`.`topic_id` AND `cms_forum_rdm`.`user_id` = '$user_id'
WHERE `forum`.`type`='t'
AND `cms_forum_rdm`.`topic_id` Is Null");
while ($res = mysql_fetch_assoc($req)) {
mysql_query("INSERT INTO `cms_forum_rdm` SET
`topic_id` = '" . $res['id'] . "',
`user_id` = '$user_id',
`time` = '" . time() . "'");
}
$req = mysql_query("SELECT `forum`.`id` AS `id`
FROM `forum` LEFT JOIN `cms_forum_rdm` ON `forum`.`id` = `cms_forum_rdm`.`topic_id` AND `cms_forum_rdm`.`user_id` = '$user_id'
WHERE `forum`.`type`='t'
AND `forum`.`time` > `cms_forum_rdm`.`time`");
while ($res = mysql_fetch_array($req)) {
mysql_query("UPDATE `cms_forum_rdm` SET
`time` = '" . time() . "'
WHERE `topic_id` = '" . $res['id'] . "' AND `user_id` = '$user_id'");
}
Один из самых популярных мобильных движков - JohnCMS.
Скрипт отмечает темы форума как прочтенные. Частенько бывает за сотню непрочитанных тем. А я посещаю редко, так у меня вообще за тысячу переваливает иногда.
+18
class figure
{
//...
};
class triugolnik: public figure
{
//...
};
class kvadrat: public figure
{
//...
};
#define PAIR(f0, f1) std::make_tuple(std::type_index(typeid(f0)), std::type_index(typeid(f1)))
int PloshadTrehFigur(const figure& f0, const figure& f1, const figure& f2);//forward declaration
int PloshadDvuhFigur(const figure& f0, const figure& f1)
{
static const std::unordered_map<
std::tuple<std::type_index, std::type_index>, std::function<int(const figure&, const figure&)>
> caller
{
{PAIR(triugolnik, kvadrat), ploshadTriugolnikIKvadrat},
{PAIR(kvadrat, triugolnik), lispGovno::flip(ploshadTriugolnikIKvadrat)},
{PAIR(kvadrat, kvadrat), ploshadKvadratIKvadrat},
{PAIR(triugolnik, triugolnik), ploshadTriugolnikITriugolnik}
};
const auto& f = caller.find(PAIR(f0, f1));
assert(f!=caller.end());
f(f0, f1);
}
#undef PAIR
Наш ответ Чемберлену:
http://govnokod.ru/13933
lispGovno::flip - flip такой же как в хаскель из моей особой мегабиблиотеки победителя каждый день.
Шах и мат господа присяжные засидатели. Мультиметоды в крестах есть и реализуются за 5 минут.
В сишке аналогично. Все анскилябры залезли под кровати.
Визитары размазанные по коду сосут и трудно поддерживаются.
+12
#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
+160
if(floor($info['http_code'] / 100) >= 4) {
throw $this->castError($result);
}
Библиотека интеграции с Mandrill.
+125
На картинке — классическая древнегреческая статуя «Самсон, поражающий дубиной Бага, покровителя говнокода».
Древнегреческие программисты считали, что подсчет ссылок — универсальный инструмент, избавляющий от всех ошибок.
Сейчас мы знаем, что древние ошибались.
http://habrastorage.org/storage3/036/678/6e4/0366786e4530108f26e3ae9b8551bbad.jpg
http://habrahabr.ru/company/ifree/blog/202190/
Что имеет ввиду автор и почему он вообще гонит на RC?
+11
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";
}
Надеюсь это временный код, но очень сомневаюсь.