-
Лучший говнокод
- В номинации:
-
- За время:
-
-
+18
- 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
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
- 79
- 80
class Mutex
{
HANDLE m_Mutex;
public:
Mutex()
{
m_Mutex = CreateMutex(0, false, 0);
}
~Mutex()
{
ReleaseMutex(m_Mutex);
CloseHandle(m_Mutex);
}
void Lock()
{
auto lv_WaitResult = WaitForSingleObject(m_Mutex, 10000);
assert(lv_WaitResult != WAIT_TIMEOUT);
}
void Unlock()
{
ReleaseMutex(m_Mutex);
}
};
template<int C>
struct GLocker
{
static Mutex m_Mutex;
};
template<int C> Mutex GLocker<C>::m_Mutex;
class Locker
{
Mutex *m_Mutex;
public:
Locker(Mutex &_Mutex)
{
m_Mutex = &_Mutex;
m_Mutex->Lock();
}
virtual ~Locker()
{
m_Mutex->Unlock();
}
};
class ThreadCreator
{
protected:
static void NewThread(void *_Func)
{
(*(std::function<void()>*)_Func)();
delete (std::function<void()>*)_Func;
}
public:
static ThreadCreator g_ThreadCreator;
HANDLE operator=(const std::function<void()> &_Func)
{
std::function<void()> *lv_Func = new std::function<void()>(_Func);
return (HANDLE)_beginthread(ThreadCreator::NewThread,0,(void*)lv_Func);
}
};
ThreadCreator ThreadCreator::g_ThreadCreator;
#define LOCK const Locker _Lock##__LINE__##__COUNTER__ = GLocker<9000 + __COUNTER__>::m_Mutex // 9000 является запасом для пользовательских номеров.
#define LOCK_EX(Port) const Locker _Lock##__LINE__##__COUNTER__ = GLocker<Port>::m_Mutex // блокирует определённый мьютекс, полезно когда нужно делать синхронизацию из разных мест.
#define GO_FUNC ThreadCreator::g_ThreadCreator =
#define GO_EX(...) GO_FUNC [__VA_ARGS__]() mutable -> void
#define GO GO_FUNC []() -> void
Подсказка сайта:
http://www.gamedev.ru/code/tip/tread_creation
LispGovno,
25 Апреля 2013
-
−97
- 1
- 2
- 3
- 4
- 5
@render_to_json()
def view(request):
# ...
return {'name':obj.name for obj in
Company.objects.filter(id=cid, is_valid=True)}
Не, ну а чё? )
Crazyzubr,
11 Апреля 2013
-
+14
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
void ThumbnailAdapter::clearCache(size_t index) {
if ((size_t)-1 == index) {
mImages.clear();
} else {
ImagesMap::iterator it = mImages.find (index);
if (mImages.end() != it) {
mImages.erase(it);
}
}
}
годная очистка map'ы
shomeser,
12 Марта 2013
-
+113
- 1
http://habrahabr.ru/post/172129/
«Мне нужен был online-сервис для генерации GUID»
Пожалуйста, подключитесь к интернету, чтобы сгенерировать гуид. Что дальше? Конкатенация строк через RESTful сервер в облаке амазона?
vse_govno,
10 Марта 2013
-
+96
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
procedure TForm1.FormCreate(Sender: TObject);
var formattedDateTime : string; S: TSearchRec; sf : Int64;
begin
Application.OnException := MyHandler;
if IsRunningEXEName(ExtractFileName(Application.ExeName)) = true then
begin
Application.Terminate;
Exit;
end;
Попытка запретить запуск копии программы. Неудачная.
increazon,
09 Марта 2013
-
+139
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
long __stdcall wndproc(HWND wnd, unsigned int message, WPARAM wparam, LPARAM lparam)
{
switch(message)
{
case WM_USER + 100:
{
char data[128];
fill_data(data);
PostMessage(wnd, WM_USER + 666, 0, (LPARAM)data);
return 0;
}
case WM_USER + 666:
{
char * data = (char *)lparam;
use_data(data);
return 0;
}
//etc
Wandering of the pointer или как выжить вне стека.
Xom94ok,
05 Февраля 2013
-
+57
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
// Просто удаляет элемент из массива
function delElement($arr, $index)
{
$result = Array();
for($i=0;$i<count($arr);$i++)
if($index != $i) $result[] = $arr[$i];
return $result;
}
- Ваше мнение, коллега?
- Кал молодой особи пыхаписта, коллега. Очень ярко выражены типичные признаки.
clauclauclau,
14 Декабря 2012
-
−100
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
size = 3
lines = ["___", "bcd", "___"]
board = [[None]*size]*size
for x in range(0, size):
for y in range(0, size):
if lines[x][y] != '_':
board[x][y] = lines[x][y]
print(board)
я бы, очевидно, хотел видеть результат:
[[None, None, None], ['b', 'c', 'd'], [None, None, None]]
но питоша выводит:
[['b', 'c', 'd'], ['b', 'c', 'd'], ['b', 'c', 'd']]
serpinski,
24 Ноября 2012
-
+120
- 1
clearScreen = putStr $ take 50 (repeat '\n')
Написано нормально, но вот задумка...
Fai,
10 Ноября 2012
-
+124
- 1
- 2
- 3
- 4
main =do
let b = 56
let b = b+1
print b
Зачем есть возможность задавать переменные с однаковыми именами, если их использовать ниже всё равно нельзя?
http://ideone.com/b1DGYF
LispGovno,
09 Ноября 2012