- 1
- 2
- 3
Если у меня есть приватный метод, то зачем мне его объявлять в .h-файле?
Хочу только в .cpp написать вспомогательный метод и только там его использовать.
А вынужден копипастить сигнатуру ещё и в .h.
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
−1
Если у меня есть приватный метод, то зачем мне его объявлять в .h-файле?
Хочу только в .cpp написать вспомогательный метод и только там его использовать.
А вынужден копипастить сигнатуру ещё и в .h.
−103
Остались ли среди созидателей Ынтерпрайзного гуано не познавшие вкус хуйца своего шефа?
Cолгите ещё один раз. Обманите себя, сказав что Ваш рот девственен.
+133
if (strcmp(request_name, REQUEST_1) == 0)
function_1();
else if (strcmp(request_name, REQUEST_2) == 0)
function_2();
else if (strcmp(request_name, REQUEST_3) == 0)
function_3();
/* И так далее */
else if (strcmp(request_name, REQUEST_N) == 0)
function_n();
Собственно, как можно ЭТО рефакторить в более приемлемый вид и можно ли заменить на branchless?
+138
persjempre <[email protected]>,Akka Knebekaize <[email protected]>
Значит слушай внимательно, тупица, что я тебе скажу.
Никакой ты не крутой пацан, ты сосунок, который нарывается на ссору с
органами. В предыдущем письме ты четко сдал себя со всеми потрохами,
указав двух свидетелей твоего беспредела. 30 лет работы в прокуратуре
меня кое-чему научили. Я не поленился найти этого паренька,
администратора того форума программистов и пообщаться с ним. Виталий
оказался примилейшим человеком, и показал мне вашу с ним перепалку.
Да, я много гопоты повидал, и ты пожалуй один из немногих уникалов,
который повеселил и меня и наш отдел по защите персональной
информации. С тебя ржали все мои бойцы, сказали что давно такого
детского сада не видели. Это же надо - упорно месить грязь под разными
именами с разных каналов! Вот молодец. Мало того, что засветился как
свеча в темной комнате, мне даже не потребуется делать усиленных
телодвижений для вычисления твоего адреса места проживания, так еще и
упорно плодишь кучу доказательств своей неправоты. Слышал такую
пословицу: "Язык до Киева доведет"? Не? Поясняю - твоя клевета и
оскорбления обязательно будут доведены до криминала, если будешь
продолжать с таким же упорством кричать в публичных местах интернета,
демонстрируя свою храбрость и безнаказанность. Как человек с
многолетним опытом, наблюдавший не один десяток таких дел скажу -
найдет твоя коса на каменюку, обязательно.
Значит слушай теперь, малыш, внимательно. Зовут меня Вениамин
Валентинович, и работаю я прокурором. Прикинь, прокуроры тоже умеют
пользоваться интернетом, и соблюдать нетикет (хотя вряд ли ты о нем
слышал, твои понятия морали судя по твоему языку на нуле). Я
предупредил Виталия, что если он или кто-то из них пострадает от
твоего грязного рта, пусть они мне напишут, предоставив твои слова. Я
постараюсь помочь честным людям наказать обидчика. Я дам ход
"плавному" делу. Поверь мне выписать ордер мне ничего не стоит, и
любая организация, занимающаяся связью с радостью мне поможет,
предоставив журнал связи абонентов. А учитывая твой многоликий янус,
следы которого остались как оказалось не только на том сайте, пробить
по совпадениям твой адрес прописки легче простого.
Если ты еще не в курсе, или попросту в школе не учился поясняю:
"Преступления в сфере информационных технологий включают как
распространение вредоносных вирусов, взлом паролей, кражу номеров
кредитных карточек и других банковских реквизитов (фишинг), так и
распространение противоправной информации (клеветы, материалов
порнографического характера, материалов, возбуждающих межнациональную
и межрелигиозную вражду и т.п.) через Интернет, коммунальные
объекты[1]."
К твоему вниманию перечитывать до полного просветления слова "Клевета"
и "межнациональная вражда". Сюда же относится и оскорбления по половым
признакам, а они в твоих постах есть. Будь уверен при необходимости
особое внимание суд уделит именно им, как показаниям зачинщика
преступления, т.е. основной первопричины.
Учитывая твои угрозы мы так уж и быть сошлемся на статью 273 УК. А
так же ст. 130. И все они будут направленны прежде всего на тебя как
на инициатора, и главного организатора беспредела.
Советую тебе сразу искать крутого адвоката, если нет желания забиться
в угол и перестать терроризировать интернет. Я обязательно попрошу еще
своих бойцов проверить тебя на сайте xaker.ru, где вполне можно
прихватить за взломы.
В общем мой тебе добрый совет, не ломай свою жизнь, я уверен что ты
еще молодой, и схлопотать срок, пусть даже условный не желаешь. Даже
административные наказания не пройдут тебе даром, если ты
несовершеннолетний то для твоих родителей.
Кончай баловаться с огнем! Я тебя предупредил - еще раз выскажешься
неадекватно в мою сторону, или Виталий (или любой другой) пожалуется
на тебя, будешь иметь дело с правоохранительными органами, это я тебе
обещаю.
<[email protected]>
Ваш унылый троллинг все больше напоминает попытки запихнуть штепсель от холодильника в USB разъем. Я на такое не ведусь.
Вот какой он, суровый дядя прокурор с Программерсфорума)
Реально же эта писанина принадлежит одной пизде-мордераторше с programmersforum.ru (Ice Valery)
0
// https://github.com/WebKit/WebKit/blob/31b77296cf6d85c40313812d9f65a003cf41f440/Source/WebCore/page/Quirks.cpp#L330
bool Quirks::isGoogleMaps() const
{
auto& url = m_document->topDocument().url();
return topPrivatelyControlledDomain(url.host().toString()).startsWith("google.") && url.path().startsWithIgnoringASCIICase("/maps/");
}
bool Quirks::shouldDispatchSimulatedMouseEvents() const
{
if (RuntimeEnabledFeatures::sharedFeatures().mouseEventsSimulationEnabled())
return true;
if (!needsQuirks())
return false;
auto doShouldDispatchChecks = [this] () -> bool {
auto* loader = m_document->loader();
if (!loader || loader->simulatedMouseEventsDispatchPolicy() != SimulatedMouseEventsDispatchPolicy::Allow)
return false;
if (isAmazon())
return true;
if (isGoogleMaps())
return true;
auto& url = m_document->topDocument().url();
auto host = url.host().convertToASCIILowercase();
if (host == "wix.com" || host.endsWith(".wix.com")) {
// Disable simulated mouse dispatching for template selection.
return !url.path().startsWithIgnoringASCIICase("/website/templates/");
}
if ((host == "desmos.com" || host.endsWith(".desmos.com")) && url.path().startsWithIgnoringASCIICase("/calculator/"))
return true;
if (host == "figma.com" || host.endsWith(".figma.com"))
return true;
if (host == "trello.com" || host.endsWith(".trello.com"))
return true;
if (host == "airtable.com" || host.endsWith(".airtable.com"))
return true;
if (host == "msn.com" || host.endsWith(".msn.com"))
return true;
if (host == "flipkart.com" || host.endsWith(".flipkart.com"))
return true;
if (host == "iqiyi.com" || host.endsWith(".iqiyi.com"))
return true;
if (host == "trailers.apple.com")
return true;
if (host == "soundcloud.com")
return true;
if (host == "naver.com")
return true;
if (host == "nba.com" || host.endsWith(".nba.com"))
return true;
if (host.endsWith(".naver.com")) {
// Disable the quirk for tv.naver.com subdomain to be able to simulate hover on videos.
if (host == "tv.naver.com")
return false;
// Disable the quirk for mail.naver.com subdomain to be able to tap on mail subjects.
if (host == "mail.naver.com")
return false;
// Disable the quirk on the mobile site.
// FIXME: Maybe this quirk should be disabled for "m." subdomains on all sites? These are generally mobile sites that don't need mouse events.
if (host == "m.naver.com")
return false;
return true;
}
return false;
};
if (!m_shouldDispatchSimulatedMouseEventsQuirk)
m_shouldDispatchSimulatedMouseEventsQuirk = doShouldDispatchChecks();
return *m_shouldDispatchSimulatedMouseEventsQuirk;
}
Дааа блядь, давайте в движке браузера захардкодим какие-то говнодомены, что типа вот для них какая-то там блядь симуляция событий мыши работала каким-то таким образом. Охуенно!
+128
(defun primes-under (limit &optional (filter-depth (truncate (log limit))))
(labels ((%purge (prefix table depth)
(iter
(for (key value) :in-hashtable table)
(for mul := (* key prefix))
(while (< mul limit))
(when (> depth 0) (%purge mul table (1- depth)))
(remhash mul table))))
(let ((primes (iter
(with p := (make-hash-table))
(for i :from 2 :below limit)
(setf (gethash i p) t)
(finally (return p)))))
(iter
(for (key value) :in-hashtable primes)
(%purge key primes filter-depth)
(finally
(return
(iter
(for (key value) :in-hashtable primes)
(reducing key :by #'+))))))))
Вопрос к знатокам: почему так работает? (у меня чисто случайно получилось)
Для тех, кому влом разбираться:
Задача выше - код из Прожект Ойлер. Нужно найти сумму всех простых чисел меньше 2000000 (двух миллионов).
Методом подбора было установлено, что если из всех чисел меньше N последовательно удалять их произведения N_0 * N_1 * ... * N_m, где m = floor(log(N)), то, по крайней мере на сколько меня хватило посчитать, не-простых чисел не остается.
Вопрос, как связан log(N), и можно ли вообще надеятся на то, что это правило - универсально (например, что степени двойки никогда не будут меньше N).
+157
function timeToString(year, month, day, hour, minute, sec, msec) {
var date = new Date(year, month, day, hour, minute, sec, msec);
var now = new Date();
var msec = now.getTime() - date.getTime(); // Миллисекунды
var sec = Math.round(msec / 1000);
var years = Math.floor(sec / (86400 * 365));
var days = Math.floor((sec - years * 86400 * 365) / 86400);
var hours = Math.floor((sec - years * 86400 * 365 - days * 86400) / 3600);
var minutes = Math.floor((sec - years * 86400 * 365 - days * 86400 - hours * 3600) / 60);
var seconds = sec - years * 86400 * 365 - days * 86400 - hours * 3600 - minutes * 60;
// Проверяем, были ли високосные года?
var i;
for(i = date.getFullYear(); i <= now.getFullYear(); i++) {
if(i % 4 === 0) {
if(i === now.getFullYear()) {
if(now.getMonth > 2) {
days++;
}
elseif(now.getMonth === 2) {
if(now.getDay === 28) {
days++;
}
}
}
else
{
days++;
}
}
var yearName;
var yearOst = years % 10;
if(years === 1 || (yearOst === 1 && years > 20))
{
yearName = 'год'
}
else if((years === 2 || years === 3 || years === 4) || ((yearOst === 2 || yearOst === 3 || yearOst === 4) && years > 20))
{
yearName = 'года';
}
else
{
yearName = 'лет';
}
var hourName;
var hourOst = hours % 10;
if(hours === 1 || (hourOst === 1 && hours > 20))
{
hourName = 'час'
}
else if((hours === 2 || hours === 3 || hours === 4) || ((hourOst === 2 || hourOst === 3 || hourOst === 4) && hours > 20))
{
hourName = 'часа';
}
else
{
hourName = 'часов';
}
var dayName;
var dayOst = days % 10;
if(days === 1 || (dayOst === 1 && days > 20))
{
dayName = 'день'
}
else if((days === 2 || days === 3 || days === 4) || ((dayOst === 2 || dayOst === 3 || dayOst === 4) && days > 20))
{
dayName = 'дня';
}
else
{
dayName = 'дней';
}
var minuteName;
var minuteOst = minutes % 10;
if(minutes === 1 || (minuteOst === 1 && minutes > 20))
{
minuteName = 'минута'
}
else if((minutes === 2 || minutes === 3 || minutes === 4) || ((minuteOst === 2 || minuteOst === 3 || minuteOst === 4) && minutes > 20))
{
minuteName = 'минуты';
}
else
{
minuteName = 'минут';
}
var secondName;
var secondOst = seconds % 10;
if(seconds === 1 || (secondOst === 1 && seconds > 20))
{
secondName = 'секунда'
}
else if((seconds === 2 || seconds === 3 || seconds === 4) || ((secondOst === 2 || secondOst === 3 || secondOst === 4) && seconds > 20))
{
secondName = 'секунды';
}
else {
secondName = 'секунд';
}
document.getElementById("time").innerHTML = years + " " + yearName + ", " + days + " " + dayName + ", " + hours + " " + hourName + ", " + minutes + " " + minuteName + ", " + seconds + " " + secondName;
}
Функция для подсчета того, сколько времени прошло с указанной даты.
JavaScript начал изучать вчера. Чувствую, что уже можно заканчивать.
Пришлось код урезать, чтобы вместиться в 100 строк. Более-менее читаемый тут: http://dumpz.org/573381/
+18
#include <iostream>
int main() {
// Инициализируй меня... полностью.
void (*(&(*omg[])())[1]) (void (*)(void (*(*[])())())) = { [] () ->
void (*(&)[1]) (void (*)(void (*(*[])())())) { static void (*f[])
(void (*)(void (*(*[])())())) = { [] (void (*f)(void (*(*[])())())) {
static void (*(*ff[])())() = { [] () -> void (*)() { return [] () {
std::cout << "Test OK" << std::endl; }; } }; f(ff); } }; return f; } };
// Вызывай, вызывай меня... полностью.
omg[0]()[0]([] (void (*(*f[])())()) { f[0]()(); });
return 0;
}
http://ideone.com/gvg1B7
Говнокоду http://govnokod.ru/12066 посвящается.
Инициализация массива указателей на функции, возвращающих ссылку на массив указателей на функции принимающие указатель на функцию, принимающую массив указателей на функции, возвращающих указатель на функцию ничего не принимающую и ничего не возвращающую.
С++ это простой и наглядный язык.
+101
i := -7; // если после этой строчки загнать в отладчик i shr 1, то отладчик покажет -4
i := i shr 1; // после этой строчки i становится равно 2147483644
i := (-7) shr 1; // после этой строчки i становится равно 4
Delphi7 такой Delphi7...
http://www.gamedev.ru/code/forum/?id=138759&page=25#m367Тарас любит дельфи.
+1
#include <stdio.h>
#define new(class) _##class##_##new
#define impl(class, method) _##class##_##method
struct Calculate
{
int(*getOne)(struct Calculate*);
};
int impl(Calculate, getOne)(struct Calculate* this) { return 1; }
void* new(Calculate)(void)
{
struct Calculate* class = malloc(sizeof(struct Calculate));
class->getOne = impl(Calculate, getOne);
return class;
}
struct CalculateProxy
{
struct Calculate;
};
int impl(CalculateProxy, getOne)(struct Calculate* this)
{
printf("Method call!\n");
return impl(Calculate, getOne)(this);
}
void* new(CalculateProxy)(void)
{
struct CalculateProxy* class = malloc(sizeof(struct CalculateProxy));
class->getOne = impl(CalculateProxy, getOne);
return class;
}
int main(void)
{
struct Calculate* calc = new(CalculateProxy)();
printf("%X!\n", calc->getOne(calc));
}
жавашок попросил реализовать паттерн прокси на Си