- 1
//без комментариев
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+49
//без комментариев
+139
char* xml_compose_simple_response(char* response, int code, char* description, char* additional_data)
{
size_t resp_length = 0;
char* buff = NULL;
resp_length += strlen(RESPONSE_HEADER_PREFIX);
resp_length += strlen(session_type);
resp_length += strlen(transaction_id);
resp_length += strlen(response) + strlen(EMPTY_TAG);
if(NULL != additional_data)
{
resp_length += strlen(additional_data);
}
resp_length += strlen(description) + strlen(RESULT_INT) + sizeof(int) * 8;
resp_length += strlen(RESPONSE_HEADER_SUFFIX);
resp_length += 1;
if(NULL != (buff = malloc(resp_length)))
{
buff[0] = '\0';
sprintf(buff, RESPONSE_HEADER_PREFIX""EMPTY_TAG, session_type, transaction_id, response);
if (additional_data != NULL)
{
char tmp_desc[_2K];
sprintf(tmp_desc, description, additional_data);
sprintf(&buff[strlen(buff)], RESULT_INT, code, tmp_desc);
}
else
{
sprintf(&buff[strlen(buff)], RESULT_INT, code, description);
}
strcat(buff, RESPONSE_HEADER_SUFFIX);
}
else
{
mng_report_memory_failure_location_and_exit();
}
return buff;
}
XML вручную собирай @ на кавычкай падай. Никакого АПИ, только хардкор.
+135
return (true == is_break) ? resource : NULL;
Вонъ изъ профессiи!
+49
#include <stdio.h>
#include <math.h>
#include "determinant.h"
double det(double **matrix, int size)
{
if(size==2)
{
return matrix[0][0]*matrix[1][1]-matrix[0][1]*matrix[1][0];
}
else if(size==1)
{
return matrix[0][0];
}
int result = 0;
for(int j=0; j<size; j++)
{
if(matrix[0][j]!=0)
{
result+=matrix[0][j]*(unsigned)pow(-1.f,(unsigned)j)*det(minor(matrix, size, 0, j), size-1);
}
}
return result;
}
double **minor(double **matrix, int size, int str, int col)
{
double **minor=new double *[size-1];
int m_str = 0;
int m_col;
for(int i=0; i<size; i++)
{
if(i!=str)
{
m_col = 0;
minor[m_str]=new double[size-1];
for(int j=0; j<size; j++)
{
if(j!=col)
{
minor[m_str][m_col]=matrix[i][j];
m_col++;
}
}
m_col++;
}
}
return minor;
}
Считаю определитель рекурсией, во время теста в этом сорце вылетает ошибка EXC_BAD_ACCESS(code=1, access=0x8),
после одного прохода рекурсии, с чем это связано? Помогите разобраться :)
+53
class ParseError : public std::exception{
string s;
explicit ParseError(const std::string& s) : s(s) {}
const char* what() const throw() { return s.c_str(); }
};
Это мне нужно в своём исключении-потомке обязательно перегрузить what и добавить свою строку для хранения, чтобы данные, переданные в конструктор s по указателю обязательно выжили после размотки стека.
+162
public static function QFV($query_input, $row, $field_name, $linkname)
{
$qres = self::Q($query_input, $linkname);
$ret = self::FV($qres, $row, $field_name);
self::FreeRes($qres);
return $ret;
}
public static function QFA($query_input, $linkname) {
$qres = self::Q($query_input, $linkname);
$ret = self::FA($qres);
self::FreeRes($qres);
return $ret;
}
public static function QFO($query_input, $linkname) {
$ret = NULL;
$qres = self::Q($query_input, $linkname);
if ($qres->result) {
$ret = self::FO($qres);
self::FreeRes($qres);
}
return $ret;
}
public static function QFOL($query_input, $num, $linkname)
{
$ret = NULL;
$qres = self::Q($query_input, $linkname);
if ($qres) {
$ret = self::FOL($qres, $num);
self::FreeRes($qres);
}
return $ret;
}
public static function QFFF($query_input, $linkname)
{
$qres = self::Q($query_input, $linkname);
$res = self::FFF($qres);
self::FreeRes($qres);
return $res;
}
// И ещё несколько десятков безымянных функций без каких-либо комментариев
Абстрактный слой работы с базой.
+169
this.value = this.value.replace(/./g, '');
//гениальное обнуление строки
+157
function report1(req, res, next, type) {
if (!req.query || !req.query.name) {
var ct = "Income statement";
if (type == 'pieflow')
ct = 'Pie flow chart';
else if (type == 'barflow')
ct = 'Bar flow chart';
res.redirect(req.url + "?name=" + ctx.i18n(req.session.apiToken, 'cash', ct));
return;
}
var pid = "reports-" + type + "-" + req.query.name;
var vtabs,data,reportSettings;
async.waterfall([
function (cb1) {
async.series([
function(cb2) {
webapp.guessTab(req, {pid: pid, name:req.query.name, url:req.url}, cb2);
},
function(cb2) {
webapp.getTabSettings(req.session.apiToken, pid, cb2);
}
],
function (err, results) {
cb1(null, results[0], results[1]);
});
},
function (vtabs_, reportSettings_, cb1) {
vtabs = vtabs_;
reportSettings = reportSettings_;
if (_.isEmpty(reportSettings) || !reportSettings.version || (reportSettings.version != reportSettingsVersion)){
reportSettings = getDefaultSettings(req.query.name);
webapp.saveTabSettings(req.session.apiToken, pid, reportSettings, function(err){
if (err) console.log(err);
});
}
calculateGraphData(req.session.apiToken,type,reportSettings,cb1);
},
function(data_,cb1){
data = data_;
cb1()
},
function(){
data.tabs = vtabs;
data.pmenu = {name:req.query.name,
items:[{name:webapp.ctx.i18n(req.session.apiToken, 'cash','Page settings'),id:"settings",href:"#"}]}
data.reportSettings = reportSettings;
res.render(__dirname+"/../res/views/report", data);
}],
next
);
};
Прислали мне, значит, вступительное задание на должность разработчика node.js, а там гигантский проект, в который нужно дописать модуль, который выглядит весь так же ужасно, как эта функция. Долго порывался написать, что это самый ужасный код, который я когда-либо видел. http://pastebin.com/4NYccg3Y вот ссылка на весь файл, кому интересно, весь проект палить не буду, но скажу, что он большой и ужасный.
−117
class DictOfLists(defaultdict): # it's possible to use dict instead
def __init__(self, *args, **kwds):
__args=self.__check_args(*args)
self.__check_kwds(**kwds)
defaultdict.__init__(self,(lambda:[]), *__args, **kwds)
# dict.__init__(self, *__args, **kwds)
def __is_valid_item(self,item):
if len(item)==2 and not hasattr(item[0],"__iter__") and hasattr(item[1],"__iter__"):
return True
return False
def __check_args(self,*args):
if len(args)>1:
if type(args) == tuple and self.__is_valid_item(args):
return [args,] # tuple of key and list of values
else:
raise TypeError("Item of %s must be a tuple of (key,IterableValue) but %s=%s is not"%\
(self.__class__.__name__,
args.__class__.__name__,
repr(args)))
if len(args) != 1: return args
if isinstance(args[0], DictOfLists): return args
if hasattr(args[0],"__iter__"):
if len(args[0]) == 0: return args # empty iterator
items = args[0].items() if type(args[0]) == dict else args[0]
if self.__is_valid_item(items):
return [args,] # tuple of key and list of values
for v in items:
if not (type(v) == tuple and len(v)==2):
raise TypeError("Item of %s must be a tuple of (key, IterableValue) but %s=%s is not"%\
(self.__class__.__name__,
v.__class__.__name__,
v))
if not hasattr(v[1],"__iter__"):
raise TypeError("Value of %s must be iterable but %s(%s) is not"%\
(self.__class__.__name__,
v[1].__class__.__name__,
repr(v[1])))
else: raise TypeError(" %s must be initialized by {},[],() or %s but %s is not"%\
(self.__class__.__name__,
self.__class__.__name__,
args[0].__class__.__name__))
return args
def __check_kwds(self, **kwds):
for v in kwds.itervalues():
if not hasattr(v,"__iter__"):
raise TypeError("Value of %s must be iterable but %s(%s) is not"%\
(self.__class__.__name__,
v.__class__.__name__,
repr(v)))
def walk(self):
for k, v in self.iteritems():
for x in v:
yield k, v, x
raise StopIteration
def __setitem__(self, *args, **kwargs):
self.__check_args(*args)
self.__check_kwds(**kwargs)
return dict.__setitem__(self, *args, **kwargs)
def update(self, *args, **kwds):
_args=self.__check_args(*args)
self.__check_kwds(**kwds)
dict.update(self,*_args, **kwds)
correct = [ {}, [], (), # empty iterable
{'k2':[], 'k22':[]}, # multipe items dict
[('k3',[]),('k32',[])], # array tuples key list val
(('k4',[]),('k42',[])), # tuple of tuples key list val
('k5',[]) # tuple of key list val
]
strange = [('e0','12'), ('e1','123')]
import inspect
def init_tester(dict_class,t_array,cs):
print "\n%s %s %s"%( inspect.currentframe().f_code.co_name, dict_class().__class__.__name__, cs )
for i in t_array:
try:
print repr(i).ljust(26), repr(dict_class(i)).ljust(74),
print ' work '.ljust(8)
except Exception,e:
print "dosn't work ",
print e
continue
print "------------------------------"
if __name__ == '__main__':
init_tester( DictOfLists, correct, "correct")
init_tester( dict, correct, "correct")
init_tester( DictOfLists, strange, "strange")
init_tester( dict, strange, "strange")
Вот такой вот словарь, значениями элементов которого могут быть только списки. В принципе легко его доделать, чтобы знаечениями были все iterable, но не строки. Кроме этого, он внимательнее проверяет агрументы. Например если ему послать ('k5',[]), он воспримет это как: k5 - key, [] - value. Build-in dict например воспринимает ('12','34') как 1 - key, 2 - value, 3 - key, 4 - value. Соответственно если ему послать ('12','345'), он ругнется. Мне показалось, что это немного странное поведение, трактовать 2-х символьные строки, как key-value. Покритикуйте please. В том числе "стиль" и "красоту".
+163
$('.vse-zaeblo').click(function() {
$.fancybox($(this));
return false;
});
Получил задачу пофиксить сайт созданный другой компанией, заглянул в код и увидел самую первую функцию