Pull to refresh
3
0.1

C++ разработчик

Send message

Погуглил, нашёл описание типичных постковидных проблем, которыми и тот же гугл страдает. Плюс они довольно много прибыли родительскому амазону приносят косвенно (продвигая покупки в амазоне и оплачивая AWS).

Я на содержание не обращаю внимания. А вот то, что она проигрывается по несколько раз за видео (прерывая в самом неподходящем месте), звучит гораздо громче самого видео, длится неприлично долго и требует нажимать на пропуск, безумно раздражает.

Мои аргументы такие:

  1. В моём регионе ценник 8.50 евро в месяц за индивидуальную подписку. Не то чтобы большие деньги, но достаточные чтобы задуматься, нужно ли мне это. Как уже писали выше, платные подписки нынче хотят все, а не только ютуб.

  2. Ничего полезного (для меня) кроме отключения рекламы эта подписка не предлагает, зато предлагает какие-то не в тему навязанные доп. услуги (YouTube Music) и отключение каких-то совершенно искусственных ограничений (скачивание видео и проигрывание в бекграунде в официальном приложении на телефоне). С учётом того, что просто используя бесплатные расширения в браузере можно получить всё то же самое и даже больше, ценность подписки ещё больше теряется.

  3. Совершенно непрозрачно то, как ютуб делится этими деньгами с владельцами каналов. Одна из причин почему я без вопросов покупаю подписки на другом похожем сервисе - Twitch, в том, что я понимаю, что существенная часть этих денег дойдёт до автора (если он не в России, конечно).

  4. Реклама на ютубе настолько навязчивая, что вызывает только раздражение, а никак не желание заплатить им денег.

Во-первых, никто не мешает и на C++ с библиотеками написать явно цикл. Во-вторых, библиотеки OpenCV и Eigen ленивые и цепочку операций до приведения к результирующему массиву или матрице сворачивают в один цикл (см. OpenCV, Eigen).

Попробовал запросы из обеих версий, на английском результат в точности как у вас, на русском плашки или ответа в выделенном тексте нет, зато есть блок с похожими вопросами, и там "как узнать длину массива в C++" с ответом про sizeof. Упомянутый результат со стековерфлоу тоже есть, но ниже этого блока.

Нет, функция класса описывалась бы как std::class_name::size, как, например, здесь: https://en.cppreference.com/w/cpp/container/vector/size

std::size это именно свободная функция, которая, в том числе, умеет принимать обычные массивы.

вот если в регистрах, то есть разница.

А с точки зрения языка разницы нет. Компилятор может поместить переменную на стеке, а может сразу в регистре, а может вообще нигде не размещать, а полностью соптимизировать. Указать напрямую вы ему не можете, и от того, используются ли классы, это опять же не зависит.

тогда преимущество конкретной библиотеки будет в том, что ее сделали эти боги

Скорее в том, что это сделали один раз для всех, и программист, который хочет просто сделать фильтрацию изображения окном 3x3, может не вникать в микрооптимизации.

Я говорил именно о скорости исполнения (скорость и удобство написания кода само собой разумеются). Там небольшие матрицы на стеке размещаются. И все операции по возможности через simd инструкции оптимизируются. Использование классов и размещение объектов в куче это вообще ортогональные вещи.

В моей практике для таких задач применялись библиотеки типа Eigen, которые несмотря на использование классов и прочих преимуществ (современных) плюсов, скорее всего будут быстрее чем код, написанный "классическим подходом, без библиотек".

std::size тоже не класс, а функция.

fairphone это вообще что-то другое

Почему? У них как раз легко заменяются отдельные комплектующие (иногда даже с возможностью апгрейда) и доступны альтернативные ОС. Вроде бы ровно то, что вы спрашивали.

Fairphone, Librem 5, Pinephone. Всё нишевые продукты, интересные лишь кучке энтузиастов, но тем не менее живые. А массовому пользователю это не интересно.

первые версии GCC в 90-х годах вообще "Ханойские башни" на девелоперской машине запускали, когда обнаруживали в коде UB

Побуду занудой: там было unspecified behaviour, то есть определяемое платформой, а не стандартом. А конкретно обработка директивы #pragma. UB (undefined behaviour) за исключением очевидных частных случаев вроде int a = *(int*)NULL; вот так вот просто детектировать при компиляции нельзя (было бы иначе - это поведение бы уже давно стандартизировали как ошибку компиляции).

Добавлю свой опыт.

SSD от Samsung на 512Гб - 5 лет работы системным диском в домашнем ПК, до этого 7 или 8 лет стоял 64Гб от OCZ, заменён был исключительно потому что объёма и скорости перестало хватать. Год назад добавился 4Тб SSD от WD.

microSD карточка на 256Гб (кажется Kingston) - 3 года. Основному смартфону 1.5 года, несколько предыдущих тоже продолжают работать, только у большинства сильно деградировала батарейка.

Заменять SSD, SD или смартфон из-за отказа флеш-памяти не приходилось ни разу.

Это хорошее объяснение отсутствия существенного спада миграции, но не резкого роста. Если правда сейчас переезжает втрое больше людей, чем в прошлом году, должно было, как сказали, что-то случиться.

В моём представлении, "несколько" означает 3-9, а про 2-4 я бы скорее сказал "в паре метров". В любом случае, это додумка редактора, в источнике говорят только про две комнаты.

SP500 за последний год почти на 30% вырос, а в среднем за 5 лет давал 13%. А низкорисковый фонд это, например, Fidelity, который даёт как раз около 5%, но ведёт себя гораздо более стабильно.

P.S. Цифры, правда, в чистых долларах, без учёта инфляции.

концепты, SFINAE

Чисто из интереса, зачем вам нужен SFINAE, если вам доступны концепты? Есть какие-то сценарии, которые концептами не покрываются?

Для того, что вы описываете, в стандарте есть отдельное понятие - unspecified behaviour (да, тоже UB, но обычно когда пишут UB, подразумевают undefined behaviour). Наличие в коде unspecified behaviour означает потенциальные проблемы с переносимостью, но просто от обновления компилятора или изменения никак не связанного участка кода ничего не сломается.

А undefined behaviour это именно "программа, допускающая такое поведение, некорректна". Я слышал, что изначально при стандартизации комитет просто не захотел принимать никаких решений о том, какое поведение должно быть в этих ситуациях, а потом компиляторы научились делать крутые агрессивные оптимизации, исходя из того, что UB не может происходить, и в результате наличие в стандарте UB стало принципиальной позицией.

Так вам получается и shared_ptr не подходит, он тоже не проверяет сам, лежит ли в нём nullptr. Вообще, все стандартные контейнеры ориентированы не только на безопасность, но и на возможность извлечь максимальную производительность, причём в случае конфликта обычно отдавая предпочтение последнему.

А если вам не нужна производительность, то зачем вы пишете на плюсах?

Information

Rating
3,428-th
Location
Кипр
Date of birth
Registered
Activity