Вообще, поправьте меня, если я не прав, но сигналы/слоты с QueuedConnection само по себе асинхронны. Так что виджеты буду отображать асинхронные события. Или я опять не то понял?
Плюс, если использовать std::atomic, то точно ничего не сломается/не вернётся назад во времени или значении) Если же вам нужны контейнеры STL, то да, они не безопасны, но на то есть std::mutex, например.
Так а std::atomic?
Помнится, в C++11 подвезли стандартизированную модель памяти с атомарными операциями которые потокобезопасны. Уже 2019-й и вышел C++17, так что 11-й стандарт вполне можно брать за минимум, если это не какой-то жуткий легаси, под который, кстати, Qt 5 тоже не соберётся, т.к. там как раз за основу C++11 принят
А вам не приходилось разбираться с "пропажей" дискретного видео, LAN, картридера и WiFi после перепрошивка БИОСа? У меня года полтора назад случилось "счастье" при установке Ubuntu 17.10 — заложило БИОС от изменения настроек. Понёс у сервис, перепрошили, естественно не сохранив дамп старого. В итоге теперь ни Винда, ни Линукс не видят дискретную видеокарту, сетевую карту, картридер и WiFi-Bluetooth модуль (всех жителей PCI-e). Недавно наткнулся на каком-то форуме на инфу о том что дело может быть именно в биосе т.к. там тоже после перепрошивки они пропадали и "возвращались" только если накатить старый дамп. Вот теперь ищу в какую сторону капать
ИМХО, товарищ DrunkBear выдал замечательный тест. Если взять 2 оригинальных айфона и самостоятельно обменять в них батареи, то можно точно сказать, относиться ли данное предупреждение в целом к замене вне сервиса или конкретно к замене на не оригинальные детали. Если первое, то безусловно, я был о них лучшего мнения. Если же второе, то это логичное поведение.
А давайте взглянем на это с другого угла. Если вы установили в своё устройство непонятно что, Apple не гарантирует что это непонятно что будет выдавать такой-же результат, как и сертифицированная батарея. Звучит более чем логично, не так ли?
Т.е. вы купили себе машину, засунули в неё детали непонятно откуда и хотите чтоб производитель вам её обслуживал как оригинальную? Удобно конечно, но в реальном мире оплата товара не значит что вам обязаны потом бесплатно все сопутствующие услуги поставлять. Иначе к принтерам картриджи и бумага шли бы бесплатно)
Быстродействие быстродействием. Но справедливости ради, если брать open-source лицензию Qt, то я готов жертвовать быстродействием ради экономии ~30Мб места (и это с отбрасыванием ненужных модулей/плагинов). Под мобильные платформы, как мне кажется, экономия по памяти важнее экономии по скорости
Очень рад был бы ознакомиться именно с алгоритмами. И буду благодарен если посоветуете с чем можно ознакомиться по этой тематике в районе начального/среднего уровня. Спасибо
Перегружать operator= как раз таки моветон, потому что выплывет именно то, о чём я говорил — неочевидность написанного кода для того кто будет его читать (возможно, для Вас самого спустя пол года работы над другой частью проекта)
Я согласен с вашими словесными формулировками сути, но в корне не согласен с синтаксисом этих формулировок в виде ЯП. Такие моменты должны быть «прозрачны» (очевидны) в первую очередь для того кто читает/пишет код, а не для интерпретатора или компилятора.
Простите, я вот может пропустил, но вроде не было сцены где «водолазы» (на самом деле, инженеры станции) после слива воды погибли. Нам показали как они вышли из подвала и их встретили как героев. Вы, сударь, забываете законы кино — если смерть персонажа (или её последствия) не показана на экране, значит он не умер.
С такой точки зрения да, это удобно программисту который работает над проектом сейчас. Но если на его место придёт другой, который продолжит поддержку — его явно не обрадует сеттер с условиями, скрывающийся за обычным c.x = 5. Поэтому я и пытаюсь сказать что словосочетание «правильный подход» в данном случае довольно субъективно
Логично, в статье указано что все члены класса открыты. Но без дополнительной логики аналогичное поведение у полей struct в C/C++ — их поля по умолчанию открыты. Тоже не нужно писать ни строчки шаблонного кода.
@property
def x(self):
return self._x
@x.setter
def x(self, val):
if val > 10:
self._x = val
else:
raise ValueError('x should be greater than 10')
...
c.x = 5
геттер/сеттер на С++
int SomeClass::getX() const {
return this->x;
}
void SomeClass::setX(const int val) {
if (val > 10)
this->x = val;
else
std::cout << "x should be greater than 10/n";
}
...
c.setX(5);
Объём работы по написанию кода примерно одинаков.
Хотя из преимуществ вижу «подкапотную» проверку, которая выполняется для x в Питоне.
Спорное удобство лично для меня т.к. привычней когда = является = без лишних проверок. В сеттере-же я буду ожидать с 50% вероятностью проверку значения на попадание в некий интервал
Плюс, если использовать std::atomic, то точно ничего не сломается/не вернётся назад во времени или значении) Если же вам нужны контейнеры STL, то да, они не безопасны, но на то есть std::mutex, например.
Зачем переизобретать велосипед?
Или я не понял сути вашего вопроса?
Так а std::atomic?
Помнится, в C++11 подвезли стандартизированную модель памяти с атомарными операциями которые потокобезопасны. Уже 2019-й и вышел C++17, так что 11-й стандарт вполне можно брать за минимум, если это не какой-то жуткий легаси, под который, кстати, Qt 5 тоже не соберётся, т.к. там как раз за основу C++11 принят
Так а как повреждение при крепеже может вызвать пожар при эксплуатации?
Может всё-же совместно слегка, а не слегка совместно? Как по мне, первый вариант в разы легче воспринимается т.к. более привычен уху
А вам не приходилось разбираться с "пропажей" дискретного видео, LAN, картридера и WiFi после перепрошивка БИОСа? У меня года полтора назад случилось "счастье" при установке Ubuntu 17.10 — заложило БИОС от изменения настроек. Понёс у сервис, перепрошили, естественно не сохранив дамп старого. В итоге теперь ни Винда, ни Линукс не видят дискретную видеокарту, сетевую карту, картридер и WiFi-Bluetooth модуль (всех жителей PCI-e). Недавно наткнулся на каком-то форуме на инфу о том что дело может быть именно в биосе т.к. там тоже после перепрошивки они пропадали и "возвращались" только если накатить старый дамп. Вот теперь ищу в какую сторону капать
Т.е. вы купили себе машину, засунули в неё детали непонятно откуда и хотите чтоб производитель вам её обслуживал как оригинальную? Удобно конечно, но в реальном мире оплата товара не значит что вам обязаны потом бесплатно все сопутствующие услуги поставлять. Иначе к принтерам картриджи и бумага шли бы бесплатно)
Быстродействие быстродействием. Но справедливости ради, если брать open-source лицензию Qt, то я готов жертвовать быстродействием ради экономии ~30Мб места (и это с отбрасыванием ненужных модулей/плагинов). Под мобильные платформы, как мне кажется, экономия по памяти важнее экономии по скорости
Очень рад был бы ознакомиться именно с алгоритмами. И буду благодарен если посоветуете с чем можно ознакомиться по этой тематике в районе начального/среднего уровня. Спасибо
Ожидал увидеть памятник в виде "Hello, World!" на BASIC'е
геттер/сеттер на С++
Объём работы по написанию кода примерно одинаков.
Хотя из преимуществ вижу «подкапотную» проверку, которая выполняется для x в Питоне.
Спорное удобство лично для меня т.к. привычней когда = является = без лишних проверок. В сеттере-же я буду ожидать с 50% вероятностью проверку значения на попадание в некий интервал
Томми Вайсо дорвался и до программирования?!)