- 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
да что вы знаете о форматировании.