Всем привет. Подскажите пожалуйста, как на данный момент - можно ли платить на алике создав виртуальную карту QIWI? «Обычную» (не через карту) оплату недавно прикрыли, а работает ли так? Мне нужно зарегиться, верифицироваться, влупить бабла и только потом узнать, что всё зря, слишком сложно.
Привет. Суть такая - есть две анимации одного объекта. Поза в конце первой условно похожа на позу в начале второй. Если их склеить топорно (показывая на одном фоне), то переход слишком явный, как бы сделать его сглаженным? Я бы хотел что-то, что действует по следующему алгоритму - 1 На вход принимает два кадра, и количество кадров, которое нужно сгенерить для перехода; 2 - рассчитывается цвет в каждом пикселе первого и второго кадра; 3 - генерятся промежуточные кадры, где каждый пиксель переходит между двух состояний.
Речь идёт о небольших переходах, которые возникли при удалении кадров. Т.е. я не собраюсь переводить человека из «сидя в стоя».
Всех приветствую. Ребята, допустим хочу - есть картинка и видос на руках, хочу плавно перемещать картинку по экрану по мере воспроизведения фонового ролика. Т.е. есть ли какая-то нода в композиторе вроде Transform, где можно указать x=FramePtr*val?
Приветствую. Решил «поиграться» с хромакеем. Отснял на «зелёнке» фрагмент, где я руками в цветных перчатках двигаю объект. Теперь на ролике присутствуют куски моего тела от которых нужно совсем избавиться. Т.е. нужна какая-то нода в разделе «Compositing», которой можно сказать - начиная с Х по У кадр отреж (сделай прозрачным) область с координатами 0:0-100:100. Ну а потом уже фильтровать по цвету. Как называется нода для обрезки по координатам? Ну или там надо какую-то маску сделать чем-то, чем? Должно быть совсем элементарщина, но я не знаю как загуглить это, разве что просмотреть какой-нибудь многочасовой туториал.
Всех приветствую. Для пример - нахожу в vcpkg libiconv, читаю «Compatibility:✓ x64-windows», делаю vcpkg install, оно пытается скомпилить и падает с ошибкой. В общем я не очень понял - там все сборки «нативные» (раз указано в Compatibility), или же нужно обмазываться mingw? Если нужно тащить какое-то окружение, то дальше рабираться и читать доки не стану (ибо в проекте много всякого std20, сильно сомневаюсь, что скомпилится).
Я не понимаю почему в консоль печатается лишь «f::tick_2»? Ождилаось «f::tick_1 f::tick_2». Так ведут себя Шланг, ГЦЦ, и Мелкомягий.
#include <iostream>
using namespace std;
template <typename T, int I>
struct Ev {
struct DD {
};
template <typename ...Fn>
struct Ovl : Fn... {
using Fn::operator()...;
};
template<typename ...Fn> Ovl(Fn...) -> Ovl<Fn...>;
};
template <typename T, int I, typename V>
struct Tb {
V v;
};
template <typename T, int I, typename V>
void f(Tb<T, I, V> &tb) {
if (requires {tb.v(declval<Ev<T, I>::DD>());}) // #1
cout << "f::tick_1\n";
if (requires (typename Ev<T, I>::DD d){tb.v(d);}) // #2
cout << "f::tick_2\n";
}
int main() {
Ev<char, 3>::Ovl ovl{
[](Ev<char, 3>::DD) {return 1;}
};
Tb<char, 3, decltype(ovl)> tb{ovl};
f(tb);
}
$ g++ -std=c++20 1.cpp
$ ./a.out
f::tick_2
Разница лишь в способе «создания» DD в f::if. Тут немного запутанно, повторил примерно рабочую структуру с существующего кода, с менее хитрыми типами «ошбка» может не проявиться. В коде можно не разбираться сильно, интересна лишь строка #1 и #2. Единодушие компиляторов вызывает сомнение, что мои ожидания имеют основания.
$ lscpu
Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
Address sizes: 36 bits physical, 48 bits virtual
Byte Order: Little Endian
CPU(s): 4
On-line CPU(s) list: 0-3
Vendor ID: GenuineIntel
Model name: Intel(R) Core(TM) i3 CPU M 350 @ 2.27GHz
$ cpupower frequency-info
analyzing CPU 0:
driver: acpi-cpufreq
CPUs which run at the same hardware frequency: 0
CPUs which need to have their frequency coordinated by software: 0
maximum transition latency: 10.0 us
hardware limits: 933 MHz - 2.27 GHz
available frequency steps: 2.27 GHz, 2.13 GHz, 2.00 GHz, 1.87 GHz, 1.73 GHz, 1.60 GHz, 1.47 GHz, 1.33 GHz, 1.20 GHz, 1.07 GHz, 933 MHz
available cpufreq governors: ondemand userspace performance schedutil
current policy: frequency should be within 933 MHz and 1.73 GHz.
The governor "userspace" may decide which speed to use
within this range.
current CPU frequency: Unable to call hardware
current CPU frequency: 931 MHz (asserted by call to kernel)
boost state support:
Supported: no
Active: no
33999 MHz max turbo 4 active cores
33999 MHz max turbo 3 active cores
33999 MHz max turbo 2 active cores
33999 MHz max turbo 1 active cores
$ lscpu -e
CPU NODE SOCKET CORE L1d:L1i:L2:L3 ONLINE MAXMHZ MINMHZ MHZ
0 0 0 0 0:0:0:0 yes 2266.0000 933.0000 930.9420
1 0 0 1 2:2:2:0 yes 2266.0000 933.0000 930.9410
2 0 0 0 0:0:0:0 yes 2266.0000 933.0000 930.9350
3 0 0 1 2:2:2:0 yes 2266.0000 933.0000 930.9390
Можно заметить, что используется драйвер acpi-cpufreq, я безуспешно пытался поднять частоту через cpupower и через прямую запись в /sys/… , назначал различные governor, частота всегда остаётся равной около 900Мгц. BIOS, минимальный, там ничего нельзя.
Есть особенность - ноут не имеет аккумулятора (утерян), может ли влиять? Или же это такой «бонус» за ноутбук и проц всегда работает на минималках? Нагрузка на систему также не влияет на частоту.
#include <functional>
using namespace std;
template <typename T>
struct FTraits;
template <typename R, typename A>
struct FTraits<function<R(A)>> {
using Ret = R;
using Arg = A;
};
struct S {
//S(S&&) = delete;
//S() = default;
// ^^^^ needs to be uncommented ^^^^
};
template <typename T>
void fn(T t) {
using U = typename FTraits<decltype(function(declval<T>()))>::Arg;
//static_assert(U ...);
}
int main() {
fn([](S){});
}
Словами - в fn передаём некий функтор, узнаём тип его аргумента и проверяем соответсвие этого типа каким-то критериям валидности. Всё работает до тех пор, пока тип умеет стандартно копироваться/создаваться (этого хочет std::function).
В данном случае хочу проверить в статик_ассерте, что сигнатура функтора принимает аргумент по ссылке, а не по значению. В принципе, компиляция упадёт и так где-нибудь в недрах в последнем случае, но со своей проверкой вывод будет значительно менее портянообразным, юзеру будет приятней.
Какие-нибудь варианты? Как-то обойтись без std::function и применить какую-нибудь «магию» напрямую к функтору?
я закомментил это, проект скомпилился. Не так чтобы я прям из штанов выпрыгиваю от желания собрать и перелопатил гору инфы по виндокомпиляции, попробовал и какие-то проблемы на ровном месте. Как правильно задать диалект кроссплатформенно?
Приветствую. Хочу прояснить - можно ли вообще и примерно как. Допустим, имет два проекта - main и sub
main
├── CMakeLists.txt
└── sub
└── CMakeLists.txt
main - мой, sub - чужой проект добавленный через git submodule add, например. sub потенциально может содержать любые артефакты - ho library, shared library, … . Могу ли я получить make install цель со следующими свойствами:
Мне не нужно править ни одной строки в подпроекте, просто клонирую и делаю что-то в main для подключения в родительский проект.
Подпроект sub устанавливается в поддиректорию главного проекта.
Для пример - выхлоп от main - исполняемый exe_bin, от sub - libsub.so. После make install полчается:
usr/
└── local
├── bin
│ └── exe_bin
└── libexec
└── main
└── sub
└── usr
└── local
└── lib
└── libsub.so
Т.е. идея в том, что брать на стороне какой-то проект и подключать его и устанавливать полностью локально для конкретного проекта, а не общесистемно.
Пока что крутил ExternalProject_Add(), но пока без успеха (может он вообще не умеет, а я парюсь). Можно ли это сделать? Как (желательно миниальный пример хотя бы с псевдокодом)?
Имеется гит проект, в нём используется субмодуль (не мой), автор там наЮБнул маленько, я ему отправли патч, но какой-то он нерасторопный, проще самому пропатчить локально субмодуль у себя. Сценарий условно такой - я клонирую с субмодулями свой проект, запускаю cmake .., который патчит субмодуль в директории с исходниками.
По идее ExternalProject умеет патчить, но как его заставить исполнить git apply … из директории субмодуля? (ибо выполнить patch некросплатформенно? Всякая винда, чем они там патчат? Какие опции? Хз вообще)
В общем я теоретик, как пропатчить субмодуль правильно?
По всем пунктам подходит boost::locale, но у меня впечатление, что его icu бэкэнд жутко тормозит. У меня на руках что-то вроде текстового редактора, вставка текста из буфера обмена заметно лагает. На самом деле я там могу написать оптимальней - сейчас логика «размечает» буфер текста после вставки каждого символа, надо делать разметку после вставки всех символов. Тем не менее - icu слишком жирна, я бы хотел от неё избавиться (ну а кому нужен 30ти метровый довесок?).
char<->wchar_t я могу конвертить стандартными средствами. По-моему я ищу некую либу, которая внутренне работает на wchar_t, и умеет конверсии между разными utf-N, и не дергает ничего на стороне.
Черт с ним - пусть это даже будет не wchar_t внутренне, но обязана уметь utf конверсии, вряд ли может быть что-то медленнее icu.
Потихоньку трогаю рейнджи, и то ли я прогулял что-то, то ли просто не понял. Почему здесь неоднозначный вызов?
#include <ranges>
#include <utility>
class Ustring {
unsigned char m_markup_state;
friend void swap(Ustring &l, Ustring &r);
};
void swap(Ustring &l, Ustring &r)
{
//using std::ranges::swap; // ok
//using namespace std; // ok
using namespace std::ranges;
swap(l.m_markup_state, r.m_markup_state); // ambiguous call here
}
int main() {
}
$ g++ 1.cpp -std=c++20
1.cpp:14:9: error: reference to ‘swap’ is ambiguous
...concepts:229:43: note: candidates are: ‘constexpr const std::ranges::__cust_swap::_Swap std::ranges::__cust::swap’
1.cpp:9:6: note: ‘void swap(Ustring&, Ustring&)’
Если использовать по старинке std’шный swap() через using namespace std - то неоднозначностей нет. Можно заставить работать и рейнджи через using std::ranges::swap вместо using namespace, но я не понимаю почему оно вот так вот работает, как swap функция для какого-то там Ustring вообще может быть годна для unsigned char?
Приветствую, не хватает нервов, часа два не могу победить эту пустяковую ерунду. Проблема: когда открываю tag в preview окне (через CTRL-W}), то объект в предпросмотре спозиционирован нудачно - в районе центра, низ обрезается, нужно руками сходить в другое окно и сделать zt, это неудобно.
Захотел это исправить и написать своё сочетание, которое должно открыть таг, перейти на превью окно, сделать zt, вернуться обратно. Составные элементы выражения такие:
ptag [tag name] - открыть таг в preview окне
expand('<cexpr>') - id под курсором
<C-w>p - переключиться на предыдущее окно
zt - первая строка окна в позиции курсора
<C-y> - скролл на одну линию
В общем я по всякому пытался собрать это в целое, итог один - не могу
Хотел написать так, чтобы создавался массив размером == шаблонному параметру и все его элементы инициализировались некоторым значением (в момент создания, а не потом обходом, т.к массив юзер типов, надо через конструктор). Написал:
#include <array>
#include <utility>
#include <iostream>
using namespace std;
template <size_t I>
struct Init_val {
static int f(int val) {return val;}
static constexpr int i = 9;
};
template <size_t num>
struct S {
void f(int val) {
[val]<size_t ...I>(index_sequence<I...>) {
array ar{(Init_val<I>::f(val) , ...)};
array ar2{(Init_val<I>::i , ...)};
// check
for (int a : ar)
cout << a;
cout << endl;
for (int a : ar2)
cout << a;
cout << endl;
}(make_index_sequence<num>{});
}
};
int main() {
S<5> s;
s.f(7);
}
шланг и ГЦЦ компилирует без ошибок, но при запуске ожидалось пять семёрок и пять девяток, но:
$ g++ 2.cpp -std=c++20 && ./a.out
7
9
Надо багрепорт писать?
PS: я там два массива сделал, вообще мне нужен тот что с функцией, но т.к. с функцией конструкция шибко хитрая, то написал вариант с константой - тоже не работает.
Господа, достаточно ли одного первого символа юникодной последовательности для определения ширины символа? Т.е. корректно ли предположение, что в юникоде нет никаких модификаторов, которые могут изменить ширину символа? Пример (в функцию передаётся один символ, основа и модификаторы):
#include <wchar.h>
int usym_width(wchar_t *begin, wchar_t *last) {
return wcwidth(*begin);
}
// или же стоит перебдеть невзирая на большую цену:
int usym_width(wchar_t *begin, wchar_t *last) {
return wcswidth(begin, last-begin);
}
возможность передачи в [begin, last) нескольких символов исключена.
Привет. Проблема следующая - есть intel проц c интегрированной видеокартой GMA X4500HD, используемый драйвер - i915. Всё норм за исключением одной боли - при подключении внешнего монитора через HDMI он работает очень криво (постоянно какие-то помехи на картинке, периодически сигнал вовсе пропадает - 5 сек показывает, 3 секунды нет). При этом до загрузки ядра (в биосе, в меню загрузчика) с картинкой всё норм и нет никаких проблем пока ядро не стартанёт (т.е проблема возникает до всяких иксов и вяленных), также всё нормально работало под виндой.
Пробовал включить заливку firmware на карту (оказалось, что не поддерживается), потихоньку включаю/выключаю опции драйвера i915 наугад, пока эффекта нет.
Приветстую. Есть мёртвый ноут, достал с матери флеху с биосом для перепрошивки, слил старый образ, скачал с оф сайта Asus’а новый и срюрприз - размер прошивок разный flashrom говорит, что давай мне полный образ. Забить нулями не проблема, но говорят, что bios от Asus’а не содержит в себе ME region (я так понимаю, что речь про
intel Management Engine).
Подскажите - как мне подготовить валидный образ BIOS’а? Могу ли я взять этот ME с какого-нибудь другого образа, должен ли это быть точно такой же ноут или можно дёрнуть с оф сайта интела? Брать что-то со старого образа - не хочу, там предположительно битые данные.
Чип биоса без панельки, проводить 100500 экспериментов с пайкой - не хочется.
Приветствую.
В процессе своего «творчества» столкнулся с изготовлением одной ерунды, и для уменьшения количества опытных образцов решил просчитать её теоретически. Видимо это из области газодинамики, если привести аналогию с электронной схемой, то в газовой схеме меня интересуют напряжения (давления) и токи в разных её участках. Например, условно так http://0x0.st/-FVM.png, где «R» - это электронный аналог «газодинамичского сопротивления» и не все сопротивления обозначены.
Но такая топорная аналогия с электроникой никуда не годится - например, сопротивление R2 будет непостоянным, а зависимым от тока в питающей линии, а при некотором значении вообще начнёт всасывать газ в обратную сторону. Получается, что я не могу найти сопротивления, пока не найду токи, а токи не найду, пока не найду сопротивления. В общем - здесь мне не резисторы.
Ну а как, собственно, считать подобную ерунду? Может пример какой кто знает, что-то гуглёж ничего толкого не даёт. Ну и если есть какая свободная софтина для моделирования таких процессов, то будет вообще годно.
Привет. Имеется некий плеер, умеет проигрывать всякое mp3 и подобное, принимает в себя SD карты. «Сейчас я быстро форматну под него карточку» - подумал я часов 6 назад.
Вот эта карту плеер принимает (шла в комлекте):
# fdisk -l /dev/mmcblk0
Disk /dev/mmcblk0: 3.69 GiB, 3965190144 bytes, 7744512 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x00000000
Device Boot Start End Sectors Size Id Type
/dev/mmcblk0p1 8192 7744511 7736320 3.7G b W95 FAT32
# fdisk /dev/mmcblk0
Command (m for help): i
Selected partition 1
Device: /dev/mmcblk0p1
Start: 8192
End: 7744511
Sectors: 7736320
Cylinders: 3290
Size: 3.7G
Id: b
Type: W95 FAT32
Start-C/H/S: 1/2/3
End-C/H/S: 960/48/48
# fatlabel /dev/mmcblk0p1
1293
# fatlabel -i /dev/mmcblk0p1
5efa1bb8
А эту нет (говорит что кривая):
# fdisk -l /dev/mmcblk0
Disk /dev/mmcblk0: 29.72 GiB, 31914983424 bytes, 62333952 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x513dc19f
Device Boot Start End Sectors Size Id Type
/dev/mmcblk0p1 8192 62333951 62325760 29.7G b W95 FAT32
# fdisk /dev/mmcblk0
Command (m for help): i
Selected partition 1
Device: /dev/mmcblk0p1
Start: 8192
End: 62333951
Sectors: 62325760
Cylinders: 973841
Size: 29.7G
Id: b
Type: W95 FAT32
Start-C/H/S: 128/0/1
End-C/H/S: 143/3/16
# fatlabel /dev/mmcblk0p1
1293
# fatlabel -i /dev/mmcblk0p1
5efa1bb8
Всё что мог сделал аналогично как у читаемой карты, только хз как поменять «Disk identifier», ну и может «Start-C/H/S» (но пока не знаю достаточно теории для корректной установки). Особенно интересует смена идентификатора диска (Id раздела уже поменял)? Может ещё есть какие-то скрытые от меня моменты?
Хорошо, если ошибусь, но всё больше мне сдаётся, что в лучших традициях российского хай-тека надо пользоваться фирменным софтом какой-нибудь «РаспилЛимитед», ибо прибор выдаётся через соц службы, сбыт обеспечен, а с такой стратегией - и необходимость поддержки тоже, греби бюджет и в ус не дуй.