- 1
Definition WordUpperBound := 65536.Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
0
Definition WordUpperBound := 65536.
+2
template<typename F, typename... CurryArgs>
struct curry {
    F func;
    std::tuple<CurryArgs...> tup{};
    curry(F f) : func(std::move(f)) {}
    template<typename... CtorArgs>
    curry(F f, CtorArgs &&... args) : func(std::move(f)), tup(std::forward<CtorArgs>(args)...) {}
    template<typename Tup1, typename Tup2>
    curry(F f, Tup1 && tup1, Tup2 && tup2) : func(std::move(f)), tup(std::tuple_cat(tup1, tup2)) {}
    template<typename... Args>
    auto operator()(Args &&... args)
    {
        constexpr size_t have_args = sizeof...(Args) + sizeof...(CurryArgs);
        constexpr size_t need_args = detail::functor_traits<F>::args_count;
        if constexpr (have_args > need_args) {
            static_assert(!sizeof(std::tuple_element_t<0, std::tuple<Args...>>*),
                          "Too many arguments.");
        } else if constexpr (have_args == need_args) {
            return std::apply(func, std::tuple_cat(tup, std::tuple(std::forward<Args>(args)...)));
        } else {
            return curry<decltype(func), CurryArgs..., Args...>(func, tup, std::tuple(std::forward<Args>(args)...));
        }
    }
};
int main()
{
    auto f = [](int a, float b, const std::string & c) -> int {
        std::cout << "Functor! a = " << a << ", b = " << b << ", c = " << c << std::endl;
        return a + static_cast<int>(b);
    };
    std::cout << f(16, 42.1f, "Hello") << std::endl;
    auto c0 = curry(f);
    auto c1 = c0(16);
    auto c2 = c1(42.1f);
    c0(16)(42.1f)("Hello");
    c1(42.1f)("Hello");
    c2("Hello");
    c0(16, 42.1f)("Hello");
    c0(16, 42.1f, "Hello");
    c1(42.1f, "Hello");
}
            Каррировали-каррировали, да выкаррировали.
https://wandbox.org/permlink/LPXFUNpWOREcB3wH
        
+2
class Contacts(models.Model):
    GENDER_CHOICES = (('Male', 'male'), ('Female', 'female')) 
    # Мужик должен служить в армии и пахать в поле или на заводе, а баба - варить борщи и рожать детей...
    
    slug = models.SlugField(max_length=250, default='', blank=True)
    FirstName = models.CharField(max_length=50, blank=True, null=True)
    LastName = models.CharField(max_length=50, blank=True, null=True)
    MiddleName = models.CharField(max_length=50, blank=True, null=True)
    Photo = models.ImageField(upload_to='images/contacts/', blank=True, null=True)
    Sex = models.CharField(max_length=50, choices=GENDER_CHOICES, default='Male', blank=True, null=True)
    Birthday = models.DateField(blank=True, null=True)
    BirthdayDay = models.CharField(blank=True, null=True, max_length=2, validators=[validators.validate_date_day])
    BirthdayMonth = models.CharField(blank=True, null=True, max_length=2, validators=[validators.validate_date_month])
    BirthdayYear = models.CharField(blank=True, null=True, max_length=4)
    
    ContactPhone = models.CharField(max_length=50, blank=True, null=True, validators=[validators.validate_phone])
    ContactPhoneCode = models.ForeignKey('PhoneNumberCode', on_delete=models.SET_NULL, related_name='ContactPhoneCode', blank=True, null=True)
    ContactPhoneNumber = models.CharField(max_length=50, blank=True, null=True, validators=[validators.validate_phone_number])
    ContactPhoneLocal = models.BooleanField(default=False)
    
    WorkPhone = models.CharField(max_length=50, blank=True, null=True, validators=[validators.validate_phone])
    WorkPhoneCode = models.ForeignKey('PhoneNumberCode', on_delete=models.SET_NULL, related_name='WorkPhoneCode', blank=True, null=True)
    WorkPhoneNumber = models.CharField(max_length=50, blank=True, null=True, validators=[validators.validate_phone_number])
    WorkPhoneLocal = models.BooleanField(default=False)
    
    MobilePhone = models.CharField(max_length=50, blank=True, null=True, validators=[validators.validate_phone])
    MobilePhoneCode = models.ForeignKey('PhoneNumberCode', on_delete=models.SET_NULL, related_name='MobilePhoneCode', blank=True, null=True)
    MobilePhoneNumber = models.CharField(max_length=50, blank=True, null=True, validators=[validators.validate_phone_number])
    MobilePhoneLocal = models.BooleanField(default=False)
    
    WorkMobilePhone = models.CharField(max_length=50, blank=True, null=True, validators=[validators.validate_phone])
    WorkMobilePhoneCode = models.ForeignKey('PhoneNumberCode', on_delete=models.SET_NULL, related_name='WorkMobilePhoneCode', blank=True, null=True)
    WorkMobilePhoneNumber = models.CharField(max_length=50, blank=True, null=True, validators=[validators.validate_phone_number])
    WorkMobilePhoneLocal = models.BooleanField(default=False)По Birthday была дана задача: "а сделай так, чтобы можно было выбирать не только полную дату, но и только день/только месяц/только год". А вот каким боком потребовалось выделять в отдельные поля составляющие телефонных номеров, даже для меня до сих пор загадка. Возможно, из той же оперы: "нужно, чтобы можно было вводить неполный номер". Как бы там ни было, можно было сделать отдельный custom field (в Джанго тем более для этого есть API - https://docs.djangoproject.com/en/3.2/howto/custom-model-fields/ ) или хотя бы сделать поле CharField-ом и уже в самой модели его парсить как надо (а перед перевыкладкой задампить данные и перегнать их в другой формат). Но нет, надо было нагородить еще полей под каждое место где встречалась дата. П..дец, какой же я макакой был...
+1
function main() {    
    const x = 21;
    let s = "foo";
    const r = `a${x * 2}X${s}X${s}Z`;
    print(r);
}
            Продолжаем будни говно-писания говно-компилятора на LLVM. серия - а ваш говно-компилятор может так...
и результат работы
>> 
C:\temp\MLIR_to_exe>out.exe                                                                                                                                                                                                                                                               
a42XfooXfooZ
        
+1
if constexpr (BusMode::BLOCKING == mode) {
    derived()->send_block(arr, num);
} else if (BusMode::IT == mode){
    derived()->send_it(arr, num);
} else if (BusMode::DMA == mode){
    derived()->send_dma(arr, num);
}
            https://habr.com/ru/post/556144/
> Отладочный вывод на микроконтроллерах: как Concepts и Ranges отправили мой printf на покой
Стреляем себе в ногу при помощи if constexpr.
        
+1
std::ranges::for_each(tasks, [](auto x) {x();});
            а ещё теперь не нужно писать std::begin(), std::end().
c++ будущего.
        
+1
func getTransport(tt string) (iTransport, error) {
	if tt == "scooter" {
		return newElectricScooter(), nil
	}
	if tt == "quadcopter" {
		return newQuadcopter(), nil
	}
	return nil, fmt.Errorf("Wrong type")
}
            https://habr.com/ru/post/556512/
> Factory Method Pattern
> Привет, друзья. С вами Alex Versus. 
> Ранее мы говорили про шаблоны проектирования Одиночка и Стратегия, про тонкости реализации на языке Golang.
> Сегодня расскажу про Фабричный метод.
        
0
#include <stdio.h>
 
int main() {
/*
    puts("Хрюкни");
//*/
	return 0;
}
            Если нужно раскомментировать код, добавляем //
#include <stdio.h>
 
int main() {
///*
    puts("Хрюкни");
//*/
	return 0;
}0
for (auto& key : interruptController.hardwareInterrupts | std::views::keys)
{
	memory[key * 2    ] = 0xFF;
	memory[key * 2 + 1] = 0xFF;
}охуенно.
0
#define MAKE(a1, a2, m1, m2) if(arg1s == a1 && arg2s == a2)\
	sprintf_s(opcode_buffer, format.c_str(), opcodeToString((Opcode)opcode.opcode).c_str(), m1, m2)
	MAKE(I, I, iarg1       ,  iarg2       );
	MAKE(S, I, arg1.c_str(),  iarg2       );
	MAKE(I, S, iarg1       ,  arg2.c_str());
	MAKE(S, S, arg1.c_str(),  arg2.c_str());
#undef MAKEда что вы знаете о форматировании.