1
Урочище Флуда / Логи jabber-конференции не работают
« : Июнь 09, 2015, 11:20:14 am »
Subj
Онлайн компилятор Oberon-07/11
Путеводитель по Оберон-проектам.
Логи jabber-конференции.
Онлайн исходники BlackBox: тут:WeBB и на github
Исходники Project Oberon V4 на github.
Сборник решений задач книги "Современное программирование с нуля!" тут. А обсуждение здесь.
В этом разделе можно просмотреть все сообщения, сделанные этим пользователем.
В самом начале разработки WPF мы задались целью устранить зависимость от модели с однопотоковым контейнером (STA). Для многих элементов управления ActiveX и других служб на основе COM необходима именно потоковая модель STA, требующая, чтобы в каждый момент времени код компонента исполнялся только в одном потоке, причем всегда одном и том же. В настоящее время почти все пользовательские интерфейсы в Windows работают в предположении модели STA.
Проблема STA заключается в том, что все объекты привязаны к единственному потоку и не могут переместиться ни в какой другой. Требование о том, чтобы некий фрагмент кода исполнялся одним потоком, – это очень эффективное упрощение, но раз и навсегда привязывать исполнение к единственному потоку, – пожалуй, чересчур. Увы, когда версия «Longhorn» превратилась в Vista, мы осознали, что для того, чтобы WPF могла работать с существующими службами (буфер обмена, Internet Explorer и т. д.), нам придется поддержать STA. Поэтому мы решили создать одну потоковую модель, а не поддерживать несколько.
Поэтому, к моему величайшему сожалению, я вынужден сообщить, что WPF требует потоковой модели STA.
Инвариант для цикла Info21: в просмотренной области нет последовательности 00 и переменная oneZero имеет значение: последний элемент просмотренной области есть 0.В конце файла добавлен мусор, т.к. крошечный размер файла – сама по себе информация.
Инвариант для цикла в последнем решении Александр Шостак: в переменной ChainLen лежит длина хвоста просмотренной области, состоящего из нулей.
i := 0;
oneZero := FALSE; (*oneZero = перед i стоит нуль*)
WHILE (i < LEN(a)) & ~oneZero DO
oneZero := a[i] = 0;
INC(i);
ELSIF (i < LEN(a)) & (a[i] # 0) DO
oneZero := FALSE;
INC(i);
END;
CONST
CHAIN_LEN = 7;
CHAIN_BYTE = 0;
ChainLen := 0;
i := 0;
WHILE (i < LEN(a)) & (ChainLen < CHAIN_LEN) DO
IF a[i] = CHAIN_BYTE THEN
INC(ChainLen);
ELSE
ChainLen := 0;
END;
INC(i);
END;
Другое дело алгоритмы планирования. Это был уникальный случай - сменилось три разработчика, прежде чем, производство заработало так, как задумывалось. То, что видно на "экранке" - это один из первых работоспособных вариантов с массой опций. Работал медленно и ошибался. Но, для общего представления, его вполне достаточно. Материала по планированию было наработано столько, что хватило бы на десяток кандидатских диссертаций. Тема, работы на графах вообще очень интересная... если не сводить её к пресловутому "циклу Дейкстры"...Это мне напомнило борьбу с MSProject. Он использовался для планирования и было большое желание от него избавиться. Я написал расчет критического пути, но оказалось, что нужно было выравнивать задачи по ресурсам.
А что касается отклонений от темы, то это, по-моему, лежит в природе человека. Бороться с этим силами самих участников видимо бесполезно.Вдумайтесь в то, что пишете.