Это отличное поведение раста по умолчанию, когда надо с внешним миром взаимодействовать то там через атрибуты можно четко зафиксировать бинарный формат, а внутри всем больше нравится экономить память, а дебагер как то справляется с этим из коробки.
Так вы не сможете на стадии написания кода. Почему? Да просто замените дабл инт и чар на хз1, хз2 и хз3 и не забудьте о том, что в разных ревизиях их размеры тоже могут быть разными.
Там выше кто то на отладку жалуется, но целый Раст так делает из коробки вообще во всех структурах по умолчанию и всем норм, а на с++ значит не норм?
Мне нравится ваш сарказм, и пример хороший. Только вот этот пример точно также можно предъявить и оппонентам, как то же власть надо менять когда правительство плохо работает, а когда других способов нет то вот так как в Колумбии.
С другой стороны там Колумбия судя по Вики такой канонический фэйлед стэйт. Хотелось бы увидеть пример немного другой. Вот было государство было все норм, потом подвезли сменяемость и стало как в Колумбии если сравнение с берёзками тяжело воспринимается.
Ну вот пока другой механизм не завезли, то надо юзать тот который вы карго культом называете - без доказательств кстати. Покажите где есть сменяемость, а х..о так же как во внеобьятной.
Ну не у всех, я в стрессе ем за двоих, именно наблюдая за тем сколько я ем я и понимаю что у меня стресс. Как говорится, без единого разрыва, в самолёте жру как не в себя хотя еда там точно на вкус не очень, но мозг говорит какая нямка дайте 3.
Мне лично всё понятно, что и как у вас со скулайтом сегодня это явно не ваш сегодняшний основной инструмент. Возможно, 20 лет назад было сильно лучше чем сейчас.
Ну вы как начнёте использовать скулайт, а не просто читать его доки, что бы мне что то доказать тогда и поймёте почему, то что вы говорите это ерунда.
Рид анкомитед уровень изоляции для всех без разбора коннекций - я желаю вам удачи в вашем проекте, но там где я ответственный такое не случится. То о чем вы на самом деле говорите называется вол мод в скулайте. У нас есть причины его не использовать точнее с ним все в порядке мы просто не можем в данный момент. Это существенно лучше конечно, но все равно недостаточно, чтобы не задумываясь оборачивать циклы в транзакцию. А ещё в скулайте нету колбэков на начало транзакции.
Ну и самое главное я уже написал - идея обрывать транзакции по тайм-ауту плохая сама по себе если только у вас нет очень хорошей мотивации на гарантию лэтенси. Залогировать можно, но пользы будет не много, точнее польза будет отрицательная т.к. нужно будет тратить время на анализ почему раз в пятилетку какие то рандомные транзакции исполняются сильно дольше чем обычно - да потому что гладиолус, причин очень много и чаще всего они в окружении, а не в коде. Вот недавно я нашёл один такой гладиолус, у нас автотесты очень много удаляют и копируют файлов перед каждым запуском, а на маке фс старается выглядеть более быстрой чем она на самом деле и у нее даже получается часто, но не всегда и вот иногда когда уже нельзя откладывать гарбэдж колекшен и всякие там тримы и эсэлси кэши уже переполнены ссд встаёт колом прям посреди авто теста и все транзакции становятся очень длинными. Пришлось втыкать фсинк в тест ранере перед каждым тестом после подготовки - код не причем.
Большую транзакцию и так заметят тестеры или юзеры, но позже конечно.
Не стоит гадать по юзерпику о СУБД все равно не угадаете:
В Скулайте все транзакции блокирующие, и не просто блокирующие, а полностью блокирующие все базы приаттаченные к коннекции
В Скулайте нет возможности запретить/оборвать длинные транзакции, т.к. движок не отслеживает их длительность. Есть решение для обратной задачи - авторетрай начала транзакции заданный промежуток времени. Я вот только на прошлой неделе смержил самописный детектор длинных бази вэйтов, но по другой причине это по сути умный логер, а не вотчдог. Искал причину другой проблемы, оказалась не в базе, но код полезный и я его все равно смержил. Это не тоже самое - нет конкуретной транзакции тогда мы вообще в принципе не узнаем есть у нас длинные транзакции или нет.
Во первых это не авто тест, а перформанс/бенчмарк тест. Разница серьезная. Не в коде теста, а в том где его запускать и как интерпретировать результат. Запускать такие тесты надо либо на однотипном железе либо на виртуалках с точными лимитами на ресурсы и строго изолированно (по ресурсам) иначе тесты будут флаки и просто удалены. Интерпретировать тоже просто так не выйдет нужна история запусков ибо если внезапно начало не проходить то это не 100% проблемы кода, чаще что то поменялось в окружении и надо чинить изоляцию или увеличивать тайм-аут.
Во вторых такие тесты есть, но не на успех импорта, а на его длительность собственно так проблема и была обнаружена, но так как интерпретация результатов задача не тривиальная/ручная сама по себе то и тикет был создан с задержкой.
В третьих, когда у девелопера стоит выбор разбираться почему транзакция стала работать дольше чем раньше и поэтому тест упал или свалить все на окружение и просто увеличить тайм-аут, то как вы наверное уже догадались выбора как такового просто не существует - сама вселенная диктует, что тайм-аут был не обоснованно занижен, а то что повышать тайм-ауты просто так нельзя это всего лишь мое мнение.
Транзакций в коде у нас мало не более 2х десятков, поэтому все мониторятся вручную на ревью, новые пишутся очень редко. Есть более древняя и поэтому популярная альтернатива батч апдэйты/инсерты где разбивка на блоки сделана автоматически, но эта опция намного более инвазивная(требуется существенный рефакторинг) чем транзакции
В общем, в реальной жизни длинные транзакции не могут быть автоматически оборваны по многим причинам сразу. Это я к тому, что даже если бы у нас был не скулайт, а что то другое где есть такой функционал, то значение обсалютной величины тайм-аута это политический, а не технический вопрос. Да и сама идея обрывать транзакцию просто потому, что она "длинная", но по факту может никому не мешать в большинстве случаев(если у вас нет требований по лэтенси) - не взлетит, но это так же и не значит, что их нужно игнорировать. Ну и как вывод тесты не способны заменить ревью.
А где в этом всём польза (в деньгах) собственно разработчику?
В деньгах вряд-ли разве, что у вас какая то инопланетянская система оплаты, а вот если заменить деньги на репутацию, то все становится на свои места.
Пример. Проблема: импорт данных стал занимать много времени после очередного релиза. Причина ясна и не может быть откатана назад (фикс другой очень важной проблемы). Я даю совет вместо импорта в базу по одной строчке использовать транзакции - человек не долго думаю оборачивает основной цикл (с походами в ФС и чтением ид3 тэгов включая формирование превью картинок из муз файлов и вызовом внутренних нотификаций/коолбэков об изменении таблиц) во, внимание, единственную транзакцию и рапортует о 100х улучшении.
На ревью такое я завернул с просьбой побить цикл на блоки и вынести всю пред и пост обработку из транзакции потому, что я чувствую ответственность за свои советы когда им следует, с другой стороны очень не люблю когда совет просят, а потом делают все равно по своему. Просить совет это такая же ответственность как и давать его, но это всего лишь мое мнение.
И это не джун и даже не сеньор, это тим лид и нет не такой который пишет иногда, а такой который пишет много. Нет не глупый, а просто такой который стремится делать все быстро и без переусложнений. Тот который привык решать все проблемы по мере их поступления и не загадывать на перед.
У меня есть свое правило, я не начинаю дискашены на ревью до тех пор пока не увижу в МР первую критическую проблему, по типу как в примере или УБ коего в с++ чуть более чем везде и дофига много или если ПО накосячил с требованиями в тикете, что я уже вижу в коде (да, такое тоже бывает). После первый критической проблемы я добавляю уже и стилистические дискашены это не про форматирование, а про выбор способа сделать тоже самое (по сути), но другим синтаксисом, алгоритмом, структурой данных. Если крит проблем нет, то я апрувлю не смотря на то, что почти всегда могу накидать стилистических дискашенов ибо они найс ту фикс.
Такие ревью в коде делаю только я в своей конторе. Причин почему другие так не делают много, но самая глубокая это банально навык понимания кода который видишь первый раз в жизни - это по факту очень сложно, люди просто не могут понять код в течении ревью, не могут увидеть проблемы, мозг закипает и они просто апрувят.
Я кинетик специально брал и просил друга отправить мне в НЗ, 5 лет полет идеальный и по цене тоже отлично. Жду когда они 6е модель сделают на апгрейд, а то уже все смарты поддерживает и только роутер не умеет в 6 ГГц.
Если вы собираете ее из исходников (а иначе как вы получите проблему с бомом) то удаление бома и/или конвертация в утф8 файлов не нарушает вообще никаких лицензий в принципе. Не хотите морочиться с комитами в репе сделайте патч и накатывайте при каждой сборке, симэйк фетч контент делает это из коробки, но это самое вы начинаете придумывать проблемы которых нет ни у вас ни у кого то другого, так просто ради развлечения.
Смотрите, фикс вашей проблемы тривиален. Шланг и гцц и так по умолчанию считают все файлы в кодировке утф8, проблема только с мсвц. Но она решается с помощью одного простого ключика - /utf-8. Все мсвц тоже считает ваши файлы в утф8 и это самое НИКАКИХ бомов даже на пушечный выстрел подпускать нельзя.
Затем что фокус ввода может быть не там где ожидается, а ещё за тем что сама вин+р может не отработать например в случае заблокированного экрана и т.д. и т.п. нужно знать состояние системы что бы это сработало хотя бы в теории.
Этот скрипт сначало нужно набрать в каком либо редакторе или консоли, а для этого уже нужно понимать, что на экране происходит. Если впадать в грех аналогий то это как слепому сделать то же самое руками только 0 обратной связи ни звука ни понимания в каком состоянии находится систем. Возможно? В теории да, на практике нет.
Повторюсь это точно не основной способ - если он вообще существует.
Обождите, вы описали макрос прошитый в эмуляторе который просто выполняет пользовательский ввод. Доступа к тому что находится на экране у усб устройства нету, ну ладно можно просто двинуть курсор по тайм-ауту в захардкоженную позицию и кликнуть кнопку, но это же нефига не скрытное воздействие и совершенно не понятно какой нужно выставить тайм-аут что бы оно хотя бы сработало. Мало того антивирус тут вообще никак не поможет, вот настройки безопасности, а точнее запрет на запуск пш достаточен что вообще то из коробки сделано.
Т.е. как гипотетический сценарий наверное можно зачесть, но это точно не основной способ
Это не статья для хабра про безопасность, а промывание мозгов. Каким именно образом эмитатор/физическое устройство работающее по протоколу хид может скомпрометировать комп (основных способов достаточно)? Какие для этого должно быть предусловия или по другому вкаких случаях этого не произойдет? Каким именно образом антивирус или настройки безопасности помешает этому?
По-моему этот текст откровенное запугивание с целью вымогательства и по сути п****ж.
Просвятите - техническое == по сути учебник или бывает какой то иной технический жанр или вы таким образом научпоп называете, короче что именно вы перестали писать? Ну само собой есть научные папиры, но у меня создалось впечатление, что это не ваш случай.
Опять же говорю за себя - я перестал пользоваться учебниками лет 20 назад потому что эффективнее найти папир или какой другой открытый источник по конкретному вопросу чем читать учебник ну и за открытые источники денег платить не надо. Это не значит что они не нужны я думаю они нужны и по фундаментальным вещам / основам до определенного времени, а потом нет - когда есть база учебник больше не нужен. Только учебников и так полно и написать что то получше очень сложно, а новое оно скорее всего не фундаментальное - не нужны учебники ради учебников.
Обязательно найдется кто то кто с этим не согласен это нормально, но гпт как раз очень неплохо так заменяет мне учебники в тех областях где у меня нет базы так что мне кажется эта ниша вот прям умирает на глазах и ничего с этим не надо делать - по-моему это хорошо.
Я выскажу только свое мнение, но честное - да всем пофиг, что вы или более известный автор перестали писать - это ваше дело и причин по которым вы это перестали делать существует больше чем звёзд на небе, ну появилась ещё одна и чё? Хотите пишите не хотите не пишите, а деньги - ну как повезет и ведь согласитесь деньги это НЕ то ради чего вы пишите, но отрицать что они важны и их всегда хочется больше я не буду.
У человеков уже давно есть ответ на все вопросы про деньги - рыночек порешает вот и всё. А если вам именно писать/публиковаться хочется то тут ничего не поменялось. Не хотите публиковаться без денег - ну на нет и суда нет - будем жрать искусственное с культурного голоду не по мрем. Как то так я считаю.
А разве в примере с фором по знаковому индексу с применением ссайз не будет ворнинга на преобразование знакового индекса в сайзт в операторе сабскрипт?
Если там ворнинг то этот ссайз как третья нога - у многих стоит тритить ворнинги как ошибки и значит там везде надо касты расстовлять, а никто не любит их расстовлять, т.е ссайз без соответствующего знакового сабскрипта везде это как пиво без водки - деньги на ветер.
Сами проверьте, что написать тернарник с проверкой размера массива при инициализации индекса в форе намного проще чем все эти касты и никакой ссайз не нужен.
for (auto i = arr.empty()?-1:0u; i < arr.size()-1; i++)
Но да когда завезут где то в с++32 знаковые сабскрипты вот тогда и начнем использовать ссайз как в вашем примере без лишних приседаний.
Хорошо пусть будет только в основном, тогда вопрос звучит так - а как мне сказать Вивальди, что именно вот это окно я считаю основным, потому что после закрытия основного окна Вивальди произвольно назначает любое другое окно основным - это нормально, но не нормально то что я не могу сам переназначить основное окно ну и само собой основное окно никаким образом не сообщает, что оно основное.
Это отличное поведение раста по умолчанию, когда надо с внешним миром взаимодействовать то там через атрибуты можно четко зафиксировать бинарный формат, а внутри всем больше нравится экономить память, а дебагер как то справляется с этим из коробки.
Так вы не сможете на стадии написания кода. Почему? Да просто замените дабл инт и чар на хз1, хз2 и хз3 и не забудьте о том, что в разных ревизиях их размеры тоже могут быть разными.
Там выше кто то на отладку жалуется, но целый Раст так делает из коробки вообще во всех структурах по умолчанию и всем норм, а на с++ значит не норм?
Мне нравится ваш сарказм, и пример хороший. Только вот этот пример точно также можно предъявить и оппонентам, как то же власть надо менять когда правительство плохо работает, а когда других способов нет то вот так как в Колумбии.
С другой стороны там Колумбия судя по Вики такой канонический фэйлед стэйт. Хотелось бы увидеть пример немного другой. Вот было государство было все норм, потом подвезли сменяемость и стало как в Колумбии если сравнение с берёзками тяжело воспринимается.
Ну вот пока другой механизм не завезли, то надо юзать тот который вы карго культом называете - без доказательств кстати. Покажите где есть сменяемость, а х..о так же как во внеобьятной.
Ну не у всех, я в стрессе ем за двоих, именно наблюдая за тем сколько я ем я и понимаю что у меня стресс. Как говорится, без единого разрыва, в самолёте жру как не в себя хотя еда там точно на вкус не очень, но мозг говорит какая нямка дайте 3.
Мне лично всё понятно, что и как у вас со скулайтом сегодня это явно не ваш сегодняшний основной инструмент. Возможно, 20 лет назад было сильно лучше чем сейчас.
Ну вы как начнёте использовать скулайт, а не просто читать его доки, что бы мне что то доказать тогда и поймёте почему, то что вы говорите это ерунда.
Рид анкомитед уровень изоляции для всех без разбора коннекций - я желаю вам удачи в вашем проекте, но там где я ответственный такое не случится. То о чем вы на самом деле говорите называется вол мод в скулайте. У нас есть причины его не использовать точнее с ним все в порядке мы просто не можем в данный момент. Это существенно лучше конечно, но все равно недостаточно, чтобы не задумываясь оборачивать циклы в транзакцию. А ещё в скулайте нету колбэков на начало транзакции.
Ну и самое главное я уже написал - идея обрывать транзакции по тайм-ауту плохая сама по себе если только у вас нет очень хорошей мотивации на гарантию лэтенси. Залогировать можно, но пользы будет не много, точнее польза будет отрицательная т.к. нужно будет тратить время на анализ почему раз в пятилетку какие то рандомные транзакции исполняются сильно дольше чем обычно - да потому что гладиолус, причин очень много и чаще всего они в окружении, а не в коде. Вот недавно я нашёл один такой гладиолус, у нас автотесты очень много удаляют и копируют файлов перед каждым запуском, а на маке фс старается выглядеть более быстрой чем она на самом деле и у нее даже получается часто, но не всегда и вот иногда когда уже нельзя откладывать гарбэдж колекшен и всякие там тримы и эсэлси кэши уже переполнены ссд встаёт колом прям посреди авто теста и все транзакции становятся очень длинными. Пришлось втыкать фсинк в тест ранере перед каждым тестом после подготовки - код не причем.
Большую транзакцию и так заметят тестеры или юзеры, но позже конечно.
Не стоит гадать по юзерпику о СУБД все равно не угадаете:
В Скулайте все транзакции блокирующие, и не просто блокирующие, а полностью блокирующие все базы приаттаченные к коннекции
В Скулайте нет возможности запретить/оборвать длинные транзакции, т.к. движок не отслеживает их длительность. Есть решение для обратной задачи - авторетрай начала транзакции заданный промежуток времени. Я вот только на прошлой неделе смержил самописный детектор длинных бази вэйтов, но по другой причине это по сути умный логер, а не вотчдог. Искал причину другой проблемы, оказалась не в базе, но код полезный и я его все равно смержил. Это не тоже самое - нет конкуретной транзакции тогда мы вообще в принципе не узнаем есть у нас длинные транзакции или нет.
Во первых это не авто тест, а перформанс/бенчмарк тест. Разница серьезная. Не в коде теста, а в том где его запускать и как интерпретировать результат. Запускать такие тесты надо либо на однотипном железе либо на виртуалках с точными лимитами на ресурсы и строго изолированно (по ресурсам) иначе тесты будут флаки и просто удалены. Интерпретировать тоже просто так не выйдет нужна история запусков ибо если внезапно начало не проходить то это не 100% проблемы кода, чаще что то поменялось в окружении и надо чинить изоляцию или увеличивать тайм-аут.
Во вторых такие тесты есть, но не на успех импорта, а на его длительность собственно так проблема и была обнаружена, но так как интерпретация результатов задача не тривиальная/ручная сама по себе то и тикет был создан с задержкой.
В третьих, когда у девелопера стоит выбор разбираться почему транзакция стала работать дольше чем раньше и поэтому тест упал или свалить все на окружение и просто увеличить тайм-аут, то как вы наверное уже догадались выбора как такового просто не существует - сама вселенная диктует, что тайм-аут был не обоснованно занижен, а то что повышать тайм-ауты просто так нельзя это всего лишь мое мнение.
Транзакций в коде у нас мало не более 2х десятков, поэтому все мониторятся вручную на ревью, новые пишутся очень редко. Есть более древняя и поэтому популярная альтернатива батч апдэйты/инсерты где разбивка на блоки сделана автоматически, но эта опция намного более инвазивная(требуется существенный рефакторинг) чем транзакции
В общем, в реальной жизни длинные транзакции не могут быть автоматически оборваны по многим причинам сразу. Это я к тому, что даже если бы у нас был не скулайт, а что то другое где есть такой функционал, то значение обсалютной величины тайм-аута это политический, а не технический вопрос. Да и сама идея обрывать транзакцию просто потому, что она "длинная", но по факту может никому не мешать в большинстве случаев(если у вас нет требований по лэтенси) - не взлетит, но это так же и не значит, что их нужно игнорировать. Ну и как вывод тесты не способны заменить ревью.
В деньгах вряд-ли разве, что у вас какая то инопланетянская система оплаты, а вот если заменить деньги на репутацию, то все становится на свои места.
Пример. Проблема: импорт данных стал занимать много времени после очередного релиза. Причина ясна и не может быть откатана назад (фикс другой очень важной проблемы). Я даю совет вместо импорта в базу по одной строчке использовать транзакции - человек не долго думаю оборачивает основной цикл (с походами в ФС и чтением ид3 тэгов включая формирование превью картинок из муз файлов и вызовом внутренних нотификаций/коолбэков об изменении таблиц) во, внимание, единственную транзакцию и рапортует о 100х улучшении.
На ревью такое я завернул с просьбой побить цикл на блоки и вынести всю пред и пост обработку из транзакции потому, что я чувствую ответственность за свои советы когда им следует, с другой стороны очень не люблю когда совет просят, а потом делают все равно по своему. Просить совет это такая же ответственность как и давать его, но это всего лишь мое мнение.
И это не джун и даже не сеньор, это тим лид и нет не такой который пишет иногда, а такой который пишет много. Нет не глупый, а просто такой который стремится делать все быстро и без переусложнений. Тот который привык решать все проблемы по мере их поступления и не загадывать на перед.
У меня есть свое правило, я не начинаю дискашены на ревью до тех пор пока не увижу в МР первую критическую проблему, по типу как в примере или УБ коего в с++ чуть более чем везде и дофига много или если ПО накосячил с требованиями в тикете, что я уже вижу в коде (да, такое тоже бывает). После первый критической проблемы я добавляю уже и стилистические дискашены это не про форматирование, а про выбор способа сделать тоже самое (по сути), но другим синтаксисом, алгоритмом, структурой данных. Если крит проблем нет, то я апрувлю не смотря на то, что почти всегда могу накидать стилистических дискашенов ибо они найс ту фикс.
Такие ревью в коде делаю только я в своей конторе. Причин почему другие так не делают много, но самая глубокая это банально навык понимания кода который видишь первый раз в жизни - это по факту очень сложно, люди просто не могут понять код в течении ревью, не могут увидеть проблемы, мозг закипает и они просто апрувят.
Я кинетик специально брал и просил друга отправить мне в НЗ, 5 лет полет идеальный и по цене тоже отлично. Жду когда они 6е модель сделают на апгрейд, а то уже все смарты поддерживает и только роутер не умеет в 6 ГГц.
Если вы собираете ее из исходников (а иначе как вы получите проблему с бомом) то удаление бома и/или конвертация в утф8 файлов не нарушает вообще никаких лицензий в принципе. Не хотите морочиться с комитами в репе сделайте патч и накатывайте при каждой сборке, симэйк фетч контент делает это из коробки, но это самое вы начинаете придумывать проблемы которых нет ни у вас ни у кого то другого, так просто ради развлечения.
БОМ маст дай.
Смотрите, фикс вашей проблемы тривиален. Шланг и гцц и так по умолчанию считают все файлы в кодировке утф8, проблема только с мсвц. Но она решается с помощью одного простого ключика - /utf-8. Все мсвц тоже считает ваши файлы в утф8 и это самое НИКАКИХ бомов даже на пушечный выстрел подпускать нельзя.
Неблагадорите.
Затем что фокус ввода может быть не там где ожидается, а ещё за тем что сама вин+р может не отработать например в случае заблокированного экрана и т.д. и т.п. нужно знать состояние системы что бы это сработало хотя бы в теории.
Этот скрипт сначало нужно набрать в каком либо редакторе или консоли, а для этого уже нужно понимать, что на экране происходит. Если впадать в грех аналогий то это как слепому сделать то же самое руками только 0 обратной связи ни звука ни понимания в каком состоянии находится систем. Возможно? В теории да, на практике нет.
Повторюсь это точно не основной способ - если он вообще существует.
Обождите, вы описали макрос прошитый в эмуляторе который просто выполняет пользовательский ввод. Доступа к тому что находится на экране у усб устройства нету, ну ладно можно просто двинуть курсор по тайм-ауту в захардкоженную позицию и кликнуть кнопку, но это же нефига не скрытное воздействие и совершенно не понятно какой нужно выставить тайм-аут что бы оно хотя бы сработало. Мало того антивирус тут вообще никак не поможет, вот настройки безопасности, а точнее запрет на запуск пш достаточен что вообще то из коробки сделано.
Т.е. как гипотетический сценарий наверное можно зачесть, но это точно не основной способ
Это не статья для хабра про безопасность, а промывание мозгов. Каким именно образом эмитатор/физическое устройство работающее по протоколу хид может скомпрометировать комп (основных способов достаточно)? Какие для этого должно быть предусловия или по другому вкаких случаях этого не произойдет? Каким именно образом антивирус или настройки безопасности помешает этому?
По-моему этот текст откровенное запугивание с целью вымогательства и по сути п****ж.
Просвятите - техническое == по сути учебник или бывает какой то иной технический жанр или вы таким образом научпоп называете, короче что именно вы перестали писать? Ну само собой есть научные папиры, но у меня создалось впечатление, что это не ваш случай.
Опять же говорю за себя - я перестал пользоваться учебниками лет 20 назад потому что эффективнее найти папир или какой другой открытый источник по конкретному вопросу чем читать учебник ну и за открытые источники денег платить не надо. Это не значит что они не нужны я думаю они нужны и по фундаментальным вещам / основам до определенного времени, а потом нет - когда есть база учебник больше не нужен. Только учебников и так полно и написать что то получше очень сложно, а новое оно скорее всего не фундаментальное - не нужны учебники ради учебников.
Обязательно найдется кто то кто с этим не согласен это нормально, но гпт как раз очень неплохо так заменяет мне учебники в тех областях где у меня нет базы так что мне кажется эта ниша вот прям умирает на глазах и ничего с этим не надо делать - по-моему это хорошо.
Я выскажу только свое мнение, но честное - да всем пофиг, что вы или более известный автор перестали писать - это ваше дело и причин по которым вы это перестали делать существует больше чем звёзд на небе, ну появилась ещё одна и чё? Хотите пишите не хотите не пишите, а деньги - ну как повезет и ведь согласитесь деньги это НЕ то ради чего вы пишите, но отрицать что они важны и их всегда хочется больше я не буду.
У человеков уже давно есть ответ на все вопросы про деньги - рыночек порешает вот и всё. А если вам именно писать/публиковаться хочется то тут ничего не поменялось. Не хотите публиковаться без денег - ну на нет и суда нет - будем жрать искусственное с культурного голоду не по мрем. Как то так я считаю.
А разве в примере с фором по знаковому индексу с применением ссайз не будет ворнинга на преобразование знакового индекса в сайзт в операторе сабскрипт?
Если там ворнинг то этот ссайз как третья нога - у многих стоит тритить ворнинги как ошибки и значит там везде надо касты расстовлять, а никто не любит их расстовлять, т.е ссайз без соответствующего знакового сабскрипта везде это как пиво без водки - деньги на ветер.
Сами проверьте, что написать тернарник с проверкой размера массива при инициализации индекса в форе намного проще чем все эти касты и никакой ссайз не нужен.
Но да когда завезут где то в с++32 знаковые сабскрипты вот тогда и начнем использовать ссайз как в вашем примере без лишних приседаний.
Хорошо пусть будет только в основном, тогда вопрос звучит так - а как мне сказать Вивальди, что именно вот это окно я считаю основным, потому что после закрытия основного окна Вивальди произвольно назначает любое другое окно основным - это нормально, но не нормально то что я не могу сам переназначить основное окно ну и само собой основное окно никаким образом не сообщает, что оно основное.