Pull to refresh
6
0

Небесный механик

Send message

Вопрос: насколько будет это безопасно делать в туннеле на пять полос из крайне левой?

Туше. Прошу простить мой тон.

И хотя, как мне кажется, я был гораздо ближе к ситуации чем Вы, но денег не переводил и не получал тоже. И если честно, очень странно слышать заявление от Роскосмоса, что все деньги получены, т.к. схема договоров у него такая, как я вам описал (тут точно).

И я мог бы предположить, что Арианспейс купил именно ракету, но запуски шли с Байконура, а не с Куру... все это очень странно.

Что до запуска военных спутников уже готовыми ракетами, то кандидатов я вижу 2: те, что раньше мая вне подозрений, их просто не успели бы подготовить, под Глонасс ракета есть всегда, под Гонец тоже. Итого остались запуски от 2 ноября и 1 декабря.

Под крупные проекты, обычно, выдаются фин гарантии. Это позволяет предприятию-исполнителю взять кредит под эти гарантии. Но физически деньги еще не перевели.

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

Вы как-то проигнорировали мое сообщение. Повторюсь еще раз: в таких проектах полной оплаты вперед нет. Это пункт номер раз. Договор составляется не на покупку ракеты, а на пусковые услуги. Это два.

Из всей суммы перед запуском выплата идет за расчет полетного задания, но в с OneWb оно могло быть одно на все, т.к. запуски типовые.

Подавляющая же часть суммы выплачивается уже после решения комиссии признать или не признать запуск успешным.

Производится изделие за счет же предприятия.

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

В итоге Роскосмос успел произвести только 13 из 21 запуска

В таких проектах полной оплаты вперед никогда не бывает.

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

Кстати, хорошая иллюстрация почему в соглашении Qt прописано, чтобы конструктор не кидал исключений.

Моя больная голова наконец сообразила, чего вы хотите.

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

Оки доки. Но вторая схема принципиально не меняется. Обработка ошибок может быть именно такой, без match.

Appends a new element to the end of the container. The element is constructed through std::allocator_traits::construct, which typically uses placement-new to construct the element in-place at the location provided by the container. The arguments args... are forwarded to the constructor as std::forward<Args>(args)...

Взял отсюда. Т.е. это вот совсем не гарантированное поведение.

В третий раз говорю, что я не знаю вашей задачи. Немногим выше вы использовали emplace_back, т.е. добавляли в конец контейнера новый элемент. Потом выяснилось, что нужно использовать область памяти уже выделенную вектором.

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

Но еще раз хочу написать: раст заставляет задуматься о шаблонах в своей голове.

Повторюсь, я даже приблизительно не знаю логику вашей задачи, но можно пробовать такие варианты:

let mut v: Vec<SomeBuf>;
......
for buf in v.iter_mut
{
  if Err(why) = f.read(buf){
      .....
  }
}

Покажите пример "хорошего идиоматичного кода на Раст", чтобы в аналогичной ситуации объект создавался сразу в области памяти вектора, ну и ошибки пробрасывались вверх и обрабатывались. Words are cheap. Или это тоже "не нужно"?

Я же сказал, что не знаю, какую задачу вы решаете, но я бы пробовал вариант:

let mut v: Vec<SomeFile>;
......
while ...
{
  match f.read() {
    Err(why) => [...],
    Ok(buf) => v.push(buf),
  }
}

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

Не знаю зачем вам такая структура, но первое что напрашивается - это создать trait, а потом его имплимитировать для SomeFile.

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

Уточнение орбит при большом количестве измерений, но я говорил про вообще существовании матриц подобного размера.

А так да, перемножение такого размера матриц в астродинамике на моей практике не встречалось.

В астродинамике подобные матрицы возникают, например, при уточнении орбиты.

Ну, то есть, спора по поводу явной большей семантической корректности Сишного и Плюсового кода нет?

А я разве спорил с этим? Указанная мной проблема характерна для обоих языков.

Ставя эквивалент между restrict и ссылками раста вы делаете ошибку.

Да, согласен предложенный вариант iCpu быстрее, но в потенциале приводит к очень неприятной вещи.

Если вы считаете, что код на расте, как вы говорите, "явно" дырявый - так покажите это на простом и явном примере. Вот возьмите и напишите его.

все остальное" по сути - это пометить некий участок в памяти как свободный, для этого вовсе необязательно его целиком "пробегать", а фрагментация памяти при выделении кусков одного и того же размера в цикле весьма маловероятна, аллокатор переиспользует только что освобожденный

В общем случае в цикле будет такая ситуация: аллокация выходного массива ->начало цикла->другие вычисления->аллокация выходного->перемножение матриц->обмен->высвобождение->новый виток.

Так вот в ходе других вычислений, как и здесь, тоже может выделяться память, вот именно в этот момент фрагментируется память.

Нет-нет, вы стали критиковать код приведенный для примера (хотя и взятый из реального проекта), как код идущий на продакшен. Поэтому и ваше решение будет рассматриваться так же.

И да, в расте это возможно, но если где-то четвертые руки переходят на небезопасное подмножество.

Information

Rating
Does not participate
Location
Монино, Москва и Московская обл., Россия
Registered
Activity