Задать вопрос
  • Как подключить к ПК больше 127 USB устройств?

    NeiroNx
    @NeiroNx
    Программист
    Есть же PCI-E контроллеры - вот через них и подключить.
    Ответ написан
    Комментировать
  • Выбор типа переменной класса в зависимости от параметра шаблона (C++17, if constexpr)?

    @MarkusD Куратор тега C++
    все время мелю чепуху :)
    Ты можешь добиться желаемого используя частную специализацию, например.

    Суть такова. Нужно превратить значения типа перечисления в тип. Сделать мы это можем используя возможность указывать в качестве параметра шаблона значения перечислимых типов.

    Например:
    enum class AllowedTypes : uint8_t
    {
    	Int8	= 0,
    	Uint8,
    	Int16,
    	Uint16,
    };
    
    template< AllowedTypes TYPE >
    struct AllowedType;


    А для того, чтобы конкретное значение перечисления правильно переводилось в тип, шаблон "AllowedType" нужно специализировать.
    spoiler
    template<>
    struct AllowedType<AllowedTypes::Int8>
    {
    	using Type = int8_t;
    };
    
    template<>
    struct AllowedType<AllowedTypes::Uint8>
    {
    	using Type = uint8_t;
    };
    
    template<>
    struct AllowedType<AllowedTypes::Int16>
    {
    	using Type = int16_t;
    };
    
    template<>
    struct AllowedType<AllowedTypes::Uint16>
    {
    	using Type = uint16_t;
    };


    После этого достаточно использовать "typename AllowedType::Type" в нужном тебе месте.
    spoiler
    template< AllowedTypes TYPE >
    struct spi
    {
    	typename AllowedType<TYPE>::Type*	p_tx = nullptr;
    	
    	constexpr spi() {};
    };


    Вот пример работы:
    spoiler
    // Example program
    #include <typeinfo>
    #include <iostream>
    #include <string>
    #include <cstdint>
    
    enum class AllowedTypes : uint8_t
    {
    	Int8	= 0,
    	Uint8,
    	Int16,
    	Uint16,
    };
    
    template< AllowedTypes TYPE >
    struct AllowedType;
    
    template<>
    struct AllowedType<AllowedTypes::Int8>
    {
    	using Type = int8_t;
    };
    
    template<>
    struct AllowedType<AllowedTypes::Uint8>
    {
    	using Type = uint8_t;
    };
    
    template<>
    struct AllowedType<AllowedTypes::Int16>
    {
    	using Type = int16_t;
    };
    
    template<>
    struct AllowedType<AllowedTypes::Uint16>
    {
    	using Type = uint16_t;
    };
    
    template< AllowedTypes TYPE >
    using TypeFor = typename AllowedType<TYPE>::Type;
    
    
    template< AllowedTypes TYPE >
    struct spi
    {
    	TypeFor<TYPE>*	p_tx = nullptr;
    	
    	constexpr spi() {};
    };
    
    int main()
    {
    	spi<AllowedTypes::Int8> spi1;
    	std::cout << typeid( *spi1.p_tx ).name() << " " << sizeof( *spi1.p_tx ) << std::endl;
    	
    	spi<AllowedTypes::Uint16> spi2;
    	std::cout << typeid( *spi2.p_tx ).name() << " " << sizeof( *spi2.p_tx ) << std::endl;
    	
    	return 0;
    }

    cpp.sh/85p6
    Ответ написан
    2 комментария
  • Что PayPal делает с отрицательным балансом?

    @iSergios
    Python-разработчик
    Я не верю, что PayPal будет кому-то продавать такие долги. Они официально зарегистрированы на территории РФ, Ваши данные у них есть. Мы не в Великобритании и не в США. Судебные издержки у нас мизер. Ничто не помешает им при желании просто обратиться с иском. При этом лично никуда ходить не надо, а Ваша вероятность отбиться стремится к нулю. Но сумма маловата. Скорее всего будете в черных списках, пока не погасите, вот и все. Ну плюс процент, но вряд ли конский.

    Ситуация отвратительная, согласен. Но я согласен и с тем, что Вы сами во многом виноваты. То, что я скажу, Вам уже не поможет, но, возможно, поможет кому-то, кто с аналогичной проблемой найдет этот топик.
    PayPal как инструмент невероятно удобен. Для покупателя. Для продавца есть преимущества, да. Однако все эти преимущества заканчиваются ровно там, где начинаются проблемы с покупателем. Диспут на PayPal - это очень мерзкая штука, выиграть которую продавцу очень и очень сложно. Покупатель всегда будет прав. Поэтому диспута на PayPal надо избегать всеми мыслимыми, немыслимыми, разумными, неразумными и даже сказочными способами. Вы рефунд по диспуту штатной процедурой сделали, в этом Ваша фатальная ошибка. Надо всегда помнить, что это аварийный вариант, использующийся только в самом крайнем случае. Я работаю с PayPal c 2007 года, как продавец - с 2011. Как продавец я не выиграл ни одного диспута (было штуки 3, наверное). Немного не Ваш случай, но для оценки степени недоверия к продавцу сойдет: PayPal выносил решение в пользу покупателя даже когда я помимо валидного трек-номера представлял "группе разбора" фотографии посылки упакованной с написанными адресами, ее же на почте после оформления приемки - с трек-номерами и отметками почтовых работников, ее же на фоне чека об оплате отправки (+ подробный скан этого чека). И все равно я ловил решение не свою пользу с обоснованием "продавец не представил достаточных доказательств отправления товара".
    Если Ваш клиент готов решать проблемы только через диспут - нафиг такого клиента. Лучше как можно быстрее свернуть с ним все дела и больше не открывать. Если он всенепременно хочет получить свои деньги взад, ни в коем случае не доводить до диспута и (упаси Боже) решения группы разбора. Иногда есть смысл вернуть ему деньги простым переводом, возможно даже больше, чем должны ему (но это опасно, диспут он все еще может отрыть, но и Вы тоже можете). Но все-таки сомнительных клиентов лучше переводить на всякого рода Scrill или даже Bitcoin (если структура проекта позволяет, разумеется). А лучше с ними и вовсе дела не иметь.
    Ответ написан
    2 комментария
  • Почему MySQL выдает записи быстрее, чем подсчитывает?

    @neol
    Первый запрос пробегает всю таблицу, чтобы посчитать count.
    Второй - находит 25 строк, удовлетворяющих условию, и останавливается.

    Если из первого запроса убрать LIMIT (который автоматически добавляет phpmyadmin), то время выполнения будет вполне нормальным.
    Ответ написан
    7 комментариев
  • Переменные в объектах?

    Taraflex
    @Taraflex
    Ищу работу. Контакты в профиле.
    var img = yourObject.response[0].photo_max;
    Ответ написан
    1 комментарий
  • Как программно разорвать PPPoE соединение и поднять его заново?

    Если у вас роутер раздает инет только для одного клиента, можно роутер перевести в режим моста и поднять PPPoE уже на самом компе.
    Ответ написан
    1 комментарий
  • Как программно разорвать PPPoE соединение и поднять его заново?

    @inkvizitor68sl
    Linux-сисадмин с 8 летним стажем.
    > Я правильно понимаю, что OS на компьютере понятия не имеет, что соединение организовано через PPPoE? Это подтверждается и тем, что RASAPI не находит никаких соединений.
    Да. С точки зрения ОС, вы находитесь в одноранговой сети, в которой есть роутер, задача которого пустить машины сети в интернет. А сами машины ничего дальше торчащего в вашу сеть интерфейса роутера не видят.

    > Я пробовал поднять telnet/ssh соединение
    Если у вас JWNR2000 на чипах Atheros (ревизии 0, 1, 3), то на него можно поставить openwrt. Там уже будет ssh.

    > в веб морде нет интерфейса перезагрузки.
    есть. Ищите что-то в духе "advanced view", чтобы показывать все возможности морды.
    Ну и в последних версиях Netgear GUI аналогично.
    Ответ написан
    3 комментария
  • Виртуальные номера изнутри?

    opium
    @opium
    Просто люблю качественно работать
    Ну старый добрый астериск вам в помощь.
    Ответ написан
    7 комментариев
  • Немного вопросов о условиях?

    Melkij
    @Melkij
    PostgreSQL DBA
    1. ON vs WHERE
    Разницы не замечал (но возможно она от версии к версии есть). Оптимизатор свободно перемещает порядок джойнов, условия.

    2. Порядок
    Оптимизатор всё равно перепишет, приняв во внимание индексы, джойны, having и ещё чего-нибудь.

    3. WHERE 1
    не влияет.

    Можете посмотреть, как оптимизатор переписал запрос выполнив:
    explain extended запрос;
    show warnings;
    

    А так же, может быть интересно, что оптимизатор делает полезного с where: dev.mysql.com/doc/refman/5.1/en/where-optimizations.html
    Ответ написан
    2 комментария