Просмотр сообщений

В этом разделе можно просмотреть все сообщения, сделанные этим пользователем.


Темы - Peter Almazov

Страницы: [1]
2
Урочище Флуда / Что почитать
« : Январь 26, 2015, 03:13:53 pm »
Леонард Млодинов. (Нео)сознанное. Как бессознательный ум управляет нашим поведением.

Честно говоря, начинал знакомиться с книгой с большим скептицизмом и недоверием.
Что может автор (физик-теоретик) сказать умного о лимбической системе после Савельева?
Но, оказалось, есть что сказать. Прочитал с удовольствием.
Recommended, короче.

3
Мне часто приходится выступать в двух ролях – в роли разработчика UI, а затем в роли реализатора того, что разработал. На первом этапе рисую эскизы интерфейсов, используя весь свой опыт и знания. Да и люблю я это дело.

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

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

Рассуждаю как теоретик - я никогда не видел живьем такого специалиста. Видел пару т. н. "бизнес-аналитиков", людей которые не могли программировать. Это были полные дебилы.

У кого какой опыт?

4
Общий раздел / Модель STA и User Interface
« : Июль 12, 2013, 08:25:02 am »
Один из архитекторов WPF, Крис Андерсон, писал:
Цитировать
В самом начале разработки WPF мы задались целью устранить зависимость от модели с однопотоковым контейнером (STA). Для многих элементов управления ActiveX и других служб на основе COM необходима именно потоковая модель STA, требующая, чтобы в каждый момент времени код компонента исполнялся только в одном потоке, причем всегда одном и том же. В настоящее время почти все пользовательские интерфейсы в Windows работают в предположении модели STA.

Проблема STA заключается в том, что все объекты привязаны к единственному потоку и не могут переместиться ни в какой другой. Требование о том, чтобы некий фрагмент кода исполнялся одним потоком, – это очень эффективное упрощение, но раз и навсегда привязывать исполнение к единственному потоку, – пожалуй, чересчур. Увы, когда версия «Longhorn» превратилась в Vista, мы осознали, что для того, чтобы WPF могла работать с существующими службами (буфер обмена, Internet Explorer и т. д.), нам придется поддержать STA. Поэтому мы решили создать одну потоковую модель, а не поддерживать несколько.

Поэтому, к моему величайшему сожалению, я вынужден сообщить, что WPF требует потоковой модели STA.

Т. к. я ни хрена не знаю не обладаю широким кругозором, то вопрос такой: а кто нибудь "в мировом масштабе" ушел от STA в UI?

5
Этот пост адресован тем, кто считает наличие exit/break внутри цикла плохим тоном. В идеале, тем, кто может показать, чем это плохо, но где ж таких возьмешь :)
Те, кто лепит exit/break в теле цикла без малейших колебаний, могут дальше не читать.

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

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

При данных ограничениях мне приходят в голову только решения, использующие exit/break  :(
Некрасиво, но что поделаешь…
Вот решения на псевдокоде, неотличимом от C#.




Я оцениваю ситуацию как неудовлетворительную. С одной стороны, задача банально-тривиальная. C другой стороны, я вынужден морщиться и идти на компромисс.
Все дело в недостатке выразительных средств.

Что предлагается сделать.
Изобрести (или вспомнить где-то реализованную) конструкцию для цикла, которая позволяла бы записать решение без компромиссов, образцово-показательно, эффективно.
ИКР, короче. Идеальный конечный результат.

Не следует ограничивать свою фантазию, речь идет, скорее, о языке мышления.

6
Дублирую новость:

Сайт books.ru начал распродажу по свободной цене более 150 компьютерных книг на русском языке.
Свободная цена - это та, что вы сами назначите, хоть 1 рубль.

Я прикупил кое-что, в частности,
Алан Купер. Об интерфейсе. Основы проектирования взаимодействия.

7
Общий раздел / Задачка для собеседования
« : Ноябрь 04, 2012, 08:26:17 pm »
На форуме по Дракону привели пример "из области автоматного программирования" http://forum.oberoncore.ru/viewtopic.php?p=75830#p75830

К мусору в головах любителей Дракона давно бы уже надо привыкнуть, но он не перестает меня поражать. Ну да, ладно, хрен с ними.

А задачка-то хорошая. Вполне годится для собеседования.
Для простоты можно не требовать выводить непрерывные куски вставок отдельно, а выводить все подряд. При решении можно вспомнить и синтаксические диаграммы, и цикл Дейкстры.

Чтобы не портить удовольствие желающим решить, выкладываю свое решение запароленным.

8
Общий раздел / Инварианты к двум циклам
« : Сентябрь 09, 2012, 03:04:59 pm »
Пароль к посту http://oberspace.dyndns.org/index.php/topic,253.msg6318.html#msg6318 : "ZRL/|EqEr<x<<Y" без кавычек.
Содержимое файла для удобства:
Цитировать
Инвариант для цикла Info21: в просмотренной области нет последовательности 00 и переменная oneZero  имеет значение: последний элемент просмотренной области есть 0.

Инвариант для цикла в последнем решении Александр Шостак: в переменной ChainLen лежит длина хвоста просмотренной области, состоящего из нулей.
В конце файла добавлен мусор, т.к. крошечный размер файла – сама по себе информация.
Если кто-нибудь ожидал увидеть полстраницы математических значков, то будет сильно огорчен.

Тексты программ для удобства:
Info21, http://forum.oberoncore.ru/viewtopic.php?p=72961#p72961
      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;

Александр Шостак, http://forum.oberoncore.ru/viewtopic.php?p=72958#p72958
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;

Мой комментарий:

Info21 разъяснил нам про инвариант, что "он там тривиальный до бессодержательности.
Именно поэтому и не понадобился.
"
Так вот, в решении Александр Шостак инвариант почти такой же тривиальный (дополнение чуть ниже), но он ДРУГОЙ. Разные инварианты – разные программы. Углубляться дальше не буду.

А моя ошибка вот в чем: инвариант для решения  Александр Шостак не полон. Ниоткуда не следует, что найденный кусок будет первым от начала массива. Я заметил, да было уже поздно. Желающие могут попробовать сформулировать недостающую часть.

Кстати, я помню, что, по-моему, albobin записал решение Info21 по человечески, без всяких ЦД. Именно так оно бы и выглядело, если бы рождалось осмысленно. Но не нашел этого куска, неужели опять удалили?

9
Другое дело алгоритмы планирования. Это был уникальный случай - сменилось три разработчика, прежде чем, производство заработало так, как задумывалось. То, что видно на "экранке" - это один из первых работоспособных вариантов с массой опций. Работал медленно и ошибался. Но, для общего представления, его вполне достаточно. Материала по планированию было наработано столько, что хватило бы на десяток кандидатских диссертаций. Тема, работы на графах вообще очень интересная... если не сводить её к пресловутому "циклу Дейкстры"... :)
Это мне напомнило борьбу с MSProject. Он использовался для планирования и было большое желание от него избавиться. Я написал расчет критического пути, но оказалось, что нужно было выравнивать задачи по ресурсам.

Для тех, кто не в теме, поясню на пальцах. Предположим, для решения задачи некоего типа длительностью 1 день нужна 1 единица ресурсов, н-р, 1 человек. При планировании на какой-то день выпало 4 таких задачи. Какие-то две из четырех задач нужно откладывать на потом. Сдвинутые задачи могут начать конфликтовать по ресурсам с другими задачами, опять надо какие-то переносить на потом, и.т.д.

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

Может быть Вы или еще кто-то прокомментирует эту историю.

11
Общий раздел / Правила другого форума
« : Январь 27, 2012, 11:36:14 am »
Поскольку администрация форума forum.oberoncore.ru продолжает маниакально удалять сообщения и целые ветки, отвечу здесь.

А что касается отклонений от темы, то это, по-моему, лежит в природе человека. Бороться с этим силами самих участников видимо бесполезно.
Вдумайтесь в то, что пишете.
Зачем бороться с природой человека?

12
Общий раздел / Вопросы по Haskell
« : Октябрь 11, 2011, 08:22:30 am »
Периодически у меня возникают дурацкие вопросы, с которыми я не решился бы лезть на специализированный форум. Надеюсь, видные хаскелеводы здесь помогут чайнику.

Взял исходный текст задачи Эйнштейна здесь http://habrahabr.ru/blogs/Haskell/122123/ и скормил его WinGHCi 1.0.6. Запускаю Run "main", среда задумывается, потом выдает ответ. Ресурсы: (1.77 secs, 140068460 bytes)
Если запускать еще, то мгновенно выдается ответ, ресурсы (0.00 secs, 0 bytes). Что, вообще, происходит второй и все последующие запуски? Почему так быстро и без затрат памяти?


13
Общий раздел / О дизайне. Форума и не только
« : Февраль 18, 2011, 10:19:46 am »
По моему глубокому убеждению, дизайн этого форума по умолчанию (SMF Default Theme - Core) просто гениален. Его особенность в том, что кажется, что нет никакого дизайна вообще. Просто удобно читать, а все что надо, на своих местах. Где тут дизайн, где рюшечки?
На самом деле за всем этим стоит высочайший профессионализм дизайнеров. Где бы найти таких.
А то от "дизайнерских" изысков и полета "дизайнерской" мысли очень часто тошнит.

Страницы: [1]