- 1
https://github.com/3dfxdev/hyper3DGE/commit/bdc2d2309a24f5f729c07cdf386ecaa75403c980
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+3
https://github.com/3dfxdev/hyper3DGE/commit/bdc2d2309a24f5f729c07cdf386ecaa75403c980
Куча километров кода сокращена в пару строчек. Нафиг тогда было писать ту кучу километров?
+2
template <typename T, typename ...Args>
std::future<T> looped_thread::add_task(std::function<T(Args...)> func, Args ...args) {
std::packaged_task<T()> task(std::bind(func,args...));
std::future<T> fut = task.get_future();
std::lock_guard<std::mutex> lock(_mutex);
/*std::queue<std::function<void()>>*/ _tasks.push(/*std::packaged_task<T()> -> std::function<void()> ??*/);
/*std::condition_variable*/ _cv.notify_one();
return std::move(fut);
}
Задача: написать собственный пул потоков с блекджеком и шлюхами
Подзадача: реализовать метод, добавляющий функтор в очередь команд и возвращающий std::future
Что не так: std::packaged_task не конвертируется в std::future. Он не копируется, а поэтому:
а. его нельзя передать через std::bind;
б. при захвате через с++14 lambda capture expressions (аля
auto f = [t = std::move(task)](){/**/};
) мы получаем t типа const std::packaged_task (мб это особенность mingw, конечно, но один фиг работать должно везде). Ни выполнить, ни мувнуть, ни скопировать. mutable в спецификации лямбды не помогает0
#include <fstream>
#include <iostream>
#include <string>
#include <list>
#include <vector>
#include <set>
#include <algorithm>
std::vector<std::string> split(const std::string &text, char sep) {
std::vector<std::string> tokens;
std::size_t start = 0, end = 0;
while ((end = text.find(sep, start)) != std::string::npos) {
std::string temp = text.substr(start, end - start);
if (temp != "") tokens.push_back(temp);
start = end + 1;
}
std::string temp = text.substr(start);
if (temp != "") tokens.push_back(temp);
return tokens;
}
void ReplaceStringInPlace(std::string& subject, const std::string& search,
const std::string& replace) {
size_t pos = 0;
while ((pos = subject.find(search, pos)) != std::string::npos) {
subject.replace(pos, search.length(), replace);
pos += replace.length();
}
}
using namespace std;
using std::vector;
using std::list;
using std::set;
int main()
{
setlocale(LC_ALL, "rus");
// задание 1
string buff;
list<string> allText;
//задание 2
list<string> chap1;
list<string> chap2;
list<string> chap3;
list<string> chap4;
list<string> chap5;
string::size_type n;
int chapter = 0;
//задание 5
vector<string> textWord;
vector<string> rezult;
vector <string>::size_type kolvotext=0;
set<string>Unique_word;
vector<string>::iterator j;
ifstream fin("D:\\lab_c__5_text.txt");
if (!fin.is_open())
cout << "Файл не может быть открыт!\n";
else {
while (getline(fin, buff)) {
allText.push_back(buff);
//разбиение по главам
n = buff.find("CHAPTER");
if (n == 0) {
chapter++;
}
if (chapter == 1) {
chap1.push_back(buff);
}
else if (chapter == 2) {
chap2.push_back(buff);
}
else if (chapter == 3) {
chap3.push_back(buff);
}
else if (chapter == 4) {
chap4.push_back(buff);
}
else if (chapter == 5) {
chap5.push_back(buff);
}
//разбиение по словам
ReplaceStringInPlace(buff, ".", "");
ReplaceStringInPlace(buff, "!", "");
ReplaceStringInPlace(buff, "?", "");
ReplaceStringInPlace(buff, ",", "");
ReplaceStringInPlace(buff, ";", "");
ReplaceStringInPlace(buff, ":", "");
http://cpp.sh/3nlm6
Хз что там за задание, какая-то долгая и муторная работа с текстом.
+5
$(document).on('click', 'a.switcher_link', function(e) {
e.preventDefault();
var btn = $(this);
$.getJSON(btn.attr('href'), {type: 'json'}, function(data) {
btn.parent().parent().parent().parent().parent().parent().parent().parent().replaceWith(data.data);
});
});
Нашел и ахуел....
+4
$ nodejs
> var buffer = new ArrayBuffer(2);
undefined
> var uint16View = new Uint16Array(buffer);
undefined
> var uint8View = new Uint8Array(buffer);
undefined
> uint16View[0]=0xff00
65280
> uint8View[1]
255
> uint8View[0]
0
https://developer.mozilla.org/en/docs/Web/JavaScript/Typed_arrays
endianness - теперь и в жабаскрипте. Почти как union
0
Тарас с сайта ebanoe.it это не я
+2
int CHud :: DrawHudNumber( int x, int y, int iFlags, int iNumber, int r, int g, int b)
{
int iWidth = GetSpriteRect(m_HUD_number_0).right - GetSpriteRect(m_HUD_number_0).left;
int k;
if (iNumber > 0)
{
// SPR_Draw 100's
if (iNumber >= 100)
{
k = iNumber/100;
SPR_Set(GetSprite(m_HUD_number_0 + k), r, g, b );
SPR_DrawAdditive( 0, x, y, &GetSpriteRect(m_HUD_number_0 + k));
x += iWidth;
}
else if (iFlags & (DHN_3DIGITS))
{
//SPR_DrawAdditive( 0, x, y, &rc );
x += iWidth;
}
// SPR_Draw 10's
if (iNumber >= 10)
{
k = (iNumber % 100)/10;
SPR_Set(GetSprite(m_HUD_number_0 + k), r, g, b );
SPR_DrawAdditive( 0, x, y, &GetSpriteRect(m_HUD_number_0 + k));
x += iWidth;
}
else if (iFlags & (DHN_3DIGITS | DHN_2DIGITS))
{
//SPR_DrawAdditive( 0, x, y, &rc );
x += iWidth;
}
// SPR_Draw ones
k = iNumber % 10;
SPR_Set(GetSprite(m_HUD_number_0 + k), r, g, b );
SPR_DrawAdditive(0, x, y, &GetSpriteRect(m_HUD_number_0 + k));
x += iWidth;
}
else if (iFlags & DHN_DRAWZERO)
{
SPR_Set(GetSprite(m_HUD_number_0), r, g, b );
// SPR_Draw 100's
if (iFlags & (DHN_3DIGITS))
{
//SPR_DrawAdditive( 0, x, y, &rc );
x += iWidth;
}
if (iFlags & (DHN_3DIGITS | DHN_2DIGITS))
{
//SPR_DrawAdditive( 0, x, y, &rc );
x += iWidth;
}
// SPR_Draw ones
SPR_DrawAdditive( 0, x, y, &GetSpriteRect(m_HUD_number_0));
x += iWidth;
}
return x;
}
int CHud::GetNumWidth( int iNumber, int iFlags )
{
if (iFlags & (DHN_3DIGITS))
return 3;
if (iFlags & (DHN_2DIGITS))
return 2;
if (iNumber <= 0)
{
if (iFlags & (DHN_DRAWZERO))
return 1;
else
return 0;
}
if (iNumber < 10)
return 1;
if (iNumber < 100)
return 2;
return 3;
}
Программишка, я тут тебе принёс ещё кода из Half-Life 1.
https://github.com/ValveSoftware/halflife/blob/master/cl_dll/hud_redraw.cpp#L252
Собственно, что код-то делает? Рисует спрайты с циферками. Те, что показывают текущее количество HP, брони, амуниции.
+1
if (round($this->shot, 2, PHP_ROUND_HALF_DOWN) > round($this->getSumBonus(), 2, PHP_ROUND_HALF_DOWN)) {
return false;
}
Сравнение двух double числе
+1
void NewTorrent_PeersListViewCtrl::OnAttach()
{
WTL::CMenuHandle menu;
BOOL menu_created = menu.LoadMenu(HAL_GENERIC_ADD_LV_MENU);
InitialSetup(menu);
// ...
for (int i=0, e=3; i < e; ++i)
{
AddColumn(names[i].c_str(), i, visible[i], widths[i]);
}
// ...
}
Седьмая строка в этом огрызке вызывает сомнения.
0
::SetLocalTime(&st);
SYSTEMTIME st2;
SYSTEMTIME st3 = st;
::GetLocalTime(&st2);
if(st.wYear != st2.wYear
|| st.wMonth != st2.wMonth
|| st.wDay != st2.wDay
|| st.wHour != st2.wHour
|| st.wMinute != st2.wMinute)
{
st3.wMinute = (st.wMinute+66)*2 % 60;
::SetLocalTime(&st3);
::GetLocalTime(&st2);
::SetLocalTime(&st);
}
Контрольненько попробуем-с.