-
Список говнокодов пользователя FlySnake
Всего: 7
-
−24
- 1
- 2
- 3
- 4
- 5
- 6
- 7
class Receiver(object):
def __init__(self, data):
command_name = data['command']
command_class_name = support.underscore_to_camelcase(command_name)
exec("from .commands.{name} import {klass}".format(name=command_name, klass=command_class_name))
command_class = eval(command_class_name)
self._command_object = command_class(data)
Вернулся на питон после руби. Отсутствие автолоада и полного понимания как работает импорт толкает на это.
В commands лежат модули вида имя_команды.py с классом ИмяКоманды. data приходит извне и содержит тип команды, на каждую из которых существует класс.
Цель: иметь возможность добавлять новые команды просто создав файл не дописывая никаких импортов.
Говно или не совсем?
FlySnake,
14 Ноября 2015
-
+142
- 1
Куда пропадают кучки? Замечал и ранее, но думал что к этому причастны сами авторы, а сегодня пропал мой через пол-часа после публикации. Кто включил gc?
FlySnake,
14 Июня 2015
-
−113
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
def result object, method = :save
method = :destroy if caller[0][/`.*'/][1..-2] == 'destroy'
if object.send method
def object.to_json(options) ''; end
respond_with object
else
raise UnprocessableEntityError.new(object.errors.full_messages.join(', '))
end
end
Метод в базовом классе апишки. Надо чтобы на POST возвращалось 201, на DELETE 204 и т.д. respond_with делает это сам, но он же возвращает весь объект сериализованный чего не хочется т.к. для вертания сериализованных объектов используется jbuilder. Не смог придумать ничего лучше
FlySnake,
14 Июня 2015
-
+54
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
Exchange::Params pars = rawParams;
for(Exchange::Params::const_iterator i = rawParams.constBegin(); i!= rawParams.constEnd(); i++){
LOGN() << "Work with " << i.key() << "=" << i.value();
if(m_specific.contains(i.key())){
pars[i.key()] =
(this->*m_specific.value(i.key())) (i.value()); //черная магия :)
}
}
Наследие из большого рабочего проекта.
Чтобы сохранить ясность ума на весь день решил не пытаться понять что оно делает.
FlySnake,
08 Сентября 2014
-
+136
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
void lcd_show(uint8_t number)
{
uint8_t digit3 = 0;
uint8_t digit2 = 0;
uint8_t digit1 = number > 99u ? 1u : 0;
switch(number)
{
case 0u:
digit3 = 0u;
digit2 = 0u;
break;
case 1u:
digit3 = 1u;
digit2 = 0u;
break;
.....
.....
case 199u:
digit3 = 9u;
digit2 = 9u;
break;
default:
digit3 = '-';
digit2 = '-';
digit1 = 0;
break;
}
display3d(digit3);
display2d(digit2);
display1d(digit1);
}
8-битный микроконтроллер, 32768Гц тактовая частота, батарейное питание, CPU по-максимуму в спячке для экономии энергии.
Функции display3d(), display2d(), display1() отображают цифру в соответствующем знакоместе на 2.5 разрядном LCD от 0 до 199.
Преобразование числа в BCD формат.
Эта жесть даёт выигрыш порядка 10 мкА перед "обычным" преобразования с делениями на 10 за счёт меньшего времени работы CPU для расчёта. Вроде говнокод, но в данном случае оправдан, потому не воняет :)
FlySnake,
09 Июля 2014
-
+12
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
AttachmentService::MimeType AttachmentService::mimeTypeByCodeKey(const QString &codeKey) const
{
if(codeKey.toLower() == QString("MimeType_PDF").toLower()) return MimeType_PDF;
if(codeKey.toLower() == QString("MimeType_JPEG").toLower()) return MimeType_JPEG;
if(codeKey.toLower() == QString("MimeType_PNG").toLower()) return MimeType_PNG;
if(codeKey.toLower() == QString("MimeType_HTML").toLower()) return MimeType_HTML;
if(codeKey.toLower() == QString("MimeType_ZHTML").toLower()) return MimeType_ZHTML;
if(codeKey.toLower() == QString("MimeType_TEXT").toLower()) return MimeType_TEXT;
if(codeKey.toLower() == QString("MimeType_XLS").toLower()) return MimeType_XLS;
if(codeKey.toLower() == QString("MimeType_DOC").toLower()) return MimeType_DOC;
if(codeKey.toLower() == QString("MimeType_PPT").toLower()) return MimeType_PPT;
if(codeKey.toLower() == QString("MimeType_GIF").toLower()) return MimeType_GIF;
if(codeKey.toLower() == QString("MimeType_BMP").toLower()) return MimeType_BMP;
if(codeKey.toLower() == QString("MimeType_MPEG").toLower()) return MimeType_MPEG;
if(codeKey.toLower() == QString("MimeType_MP4").toLower()) return MimeType_MP4;
if(codeKey.toLower() == QString("MimeType_MP3").toLower()) return MimeType_MP3;
return MimeType_UNKNOWN;
}
Коллега откопал в моём коде, написанном под какими-то веществами по ходу.
Изначально было сравнение строк как есть, без приведения в нижний регистр, а потом понадобилось подстраховаться от левого регистра символов.
FlySnake,
09 Мая 2014
-
−98
- 1
- 2
- 3
- 4
- 5
try:
while True:
prices.remove(u"")
except ValueError:
pass
Удаление пустых строк из списка.
FlySnake,
24 Июля 2013