All streams
Search
Write a publication
Pull to refresh
4
0
Игорь Баклыков @IGR2014

Software engineer

Send message
А, Вы рисуете те, которыми владеете лично? Тогда пардон, упустил из виду этот момент. Но экскурс крутой. Люблю кино и технологии)
Вообще, поправьте меня, если я не прав, но сигналы/слоты с QueuedConnection само по себе асинхронны. Так что виджеты буду отображать асинхронные события. Или я опять не то понял?
Плюс, если использовать std::atomic, то точно ничего не сломается/не вернётся назад во времени или значении) Если же вам нужны контейнеры STL, то да, они не безопасны, но на то есть std::mutex, например.
А зачем, если std::future:get() и так ожидающий/блокирующий?
Зачем переизобретать велосипед?
Или я не понял сути вашего вопроса?
Вижу слова
культовые мобильники
но не вижу Nokia «банан» 8110 из Матрицы

Так а 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Мб места (и это с отбрасыванием ненужных модулей/плагинов). Под мобильные платформы, как мне кажется, экономия по памяти важнее экономии по скорости

Очень рад был бы ознакомиться именно с алгоритмами. И буду благодарен если посоветуете с чем можно ознакомиться по этой тематике в районе начального/среднего уровня. Спасибо

Ожидал увидеть памятник в виде "Hello, World!" на BASIC'е

Перегружать 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% вероятностью проверку значения на попадание в некий интервал
«OH, HI MARK»

Томми Вайсо дорвался и до программирования?!)

Information

Rating
Does not participate
Location
Одесса, Одесская обл., Украина
Date of birth
Registered
Activity