mercury13_kiev


Это не баг, это фича!


[sticky post]О моём ЖЖ
mercury13_kiev
Буду краток.

1. Подзамочных постов нет.
2. Здесь будут большей частью мои скромные околокомпьютерные мысли.
3. Писать буду не часто, могу и месяцами не писать.

Остановка курильщика, остановка здорового человека
mercury13_kiev

Вот такую трамвайную остановку сделали нам на днях. Перед нами неоживлённая дорога 2+2 с трамвайными путями посередине. Все светофоры вызывного действия и работают синхронно. Что здесь неверно?

Через неоживлённую 2+2 отлично работает нерегулируемый переход с островком безопасности. В роли островка — остановка. Убираем четыре светофора, заменяем их «зёброй».

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

Ну и, наконец, два турникета — мало. Вечно случаются человеческие пробки. Ждём появления электронных билетов?


Страйкбольные привычки, способные навредить в бою
mercury13_kiev

  1. Прятаться за неабсолютными укрытиями (некапитальными постройками, небольшими деревьями).
  2. Ходить в полный рост уже на расстоянии 100 м (дальность страйкбольного ружья ≈70 м).
  3. Не взводить оружие (впрочем, бывает наоборот: служивший машинально передёргивает шторку привода).
  4. Не пользоваться прицелом, целиться по снарядам.

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


Ещё немного весеннего макро
mercury13_kiev

На сей раз взял 20-мм кольцо и снял покрупнее.


Весеннее макро
mercury13_kiev

Как жаль, что взял на прогулку только самое маленькое макрокольцо…


Я выступаю, часть 2
mercury13_kiev

Ушла оплата участия. Так что могу сказать, где и когда я катаюсь.

12 или 13 мая, на выходных.

Адрес тот же: Киев, ул. Города Шалетт, 6, спорткомплекс «Большая крижинка». Не путать с «Малой Крижинкой» в парке Победы!

Та же музыка, тот же «бэушный» костюм, серьёзно другая программа. Я «косплею Ягудина», как я выражаюсь, на всю катушку.


Ольга Шаврина. Об иллюстрациях в интерфейсе [реферат]
mercury13_kiev

Полная статья с примерами

Для чего?

1. Пустые состояния — там, где (пока) нет контента.

2. Онбординг — там, где мы подсаживаем пользователя на нашу программу/службу.

3. Уведомления — извещаем о событиях, добавляем эмоций в сообщение.

4. Индикация прогресса — отражаем текущий статус пользователя или системы.

5. Облегчение выбора — картинкой уменьшаем количество текста.

Как?

1. Различать украшение и иллюстрацию. Украшения лучше выкинуть (или на худой конец сделать ненавязчивыми).

2. Не отвлекать от интерфейса. Если из-за иллюстрации люди перестали видеть кнопку, это плохо.

3. Учитывать стиль и бренд. Цвета, плоское/объёмное, шрифты…

4. Придерживаться единого стиля. Как и с иконками, в иллюстрациях нежелателен разнобой стилей.


100 советов фотографу от Эрика Кима (калифорнийского мастера уличной фотографии)
mercury13_kiev

1. То, что у кого-то дорогая камера, еще не значит, что он — хороший фотограф.

2. Всегда снимайте в RAW. Всегда.

3. Объективы с постоянным фокусным расстоянием помогают научиться лучше фотографировать.

4. Редактирование снимков — уже само по себе искусство.

5. «Правило третей» работает в 99% случаев.

6. Макрофотография — не для всех.

7. Ультрафиолетовый фильтр может заменить и крышку объектива.

8. Выходите и фотографируйте, вместо того чтобы часами сидеть на фотофорумах в Интернет.

9. Найдите красоту в повседневном, и Вы — победитель.

10. Пленка не лучше цифры.

11. Цифра не лучше пленки.

12. Не существует «волшебных» камер или объективов.

13. Лучшие объективы не создадут вам лучших фотографий.

14. Меньше времени тратьте, рассматривая работы других людей, а больше снимайте сами.

15. Не берите зеркалку на вечеринки.

16. Девушки западают на фотографов.

17. Преобразование снимка в черно-белый не сделает его автоматически «художественным».

18. Люди не доверяют вашей работе, если вы говорите, что обрабатываете снимки в Photoshop. Лучше говорить, что проявляете их в «цифровой лаборатории».

19. Незачем фотографировать всё подряд.

20. Храните как минимум 2 резервных копии всех снимков. Как говорится, два — это один, одного нет вовсе.

21. Выкиньте плечевой ремень, пользуйтесь ручным.

22. Подойдите ближе. Зачастую это улучшит результат.

23. Будьте участником, а не любопытствующим.

24. Присядьте. Частенько такой кадр выглядит интереснее.

25. Меньше беспокойтесь о технических тонкостях — концентрируйтесь на композиции снимка.

26. Если заклеить все блестящие эмблемы на камере чёрной изолентой, вы будете привлекать куда меньше внимания.

27. Всегда недодерживайте кадр на 2/3 стопа, если снимаете при открытом дневном освещении.

28. Чем больше вы фотографируете, тем лучше результаты.

29. Не бойтесь делать несколько снимков одной и той же сцены с разной экспозицией, углом, глубиной резкости.

30. Показывайте только свои лучшие снимки.

31. Компакт — это тоже камера.

32. Участвуйте в фотофорумах в Интернет.

33. Оценивайте работу других.

34. Думайте до того, как нажать на кнопку спуска затвора.

35. Хорошая фотография не нуждается в пояснениях (хотя основная информация нередко сопровождает изображение).

36. Спиртное и фотосъемка — плохой коктейль.

37. Вдохновляйтесь работами мастеров фотографии, но не поклоняйтесь им.

38. Зерно прекрасно.

39. Забросьте фоторюкзак и возьмите сумку. Доставать камеру и объективы станет гораздо проще.

40. Простота — вот ключевой секрет.

41. Фотография — это «рисование светом». Сделайте свет своим помощником.

42. Найдите свой стиль в фотографии и придерживайтесь его.

43. Для обработки второй монитор — замечательная штука.

44. Silver EFEX pro лучше всего преобразует фото в черно-белое.

45. Носите свою камер у с собой повсюду. Да, повсюду.

46. Не позволяйте фотографии мешать вам наслаждаться жизнью.

47. Не «балуйте» свою камеру, используйте ее по максимуму.

48. Делайте честные снимки.

49. Снимайте уверенно.

50. Сопоставление — лучший друг фотографии.

51. Печатайте свои снимки большим форматом. Они доставят вам удовольствие.

52. Дарите фотографии друзьям.

53. Дарите их прохожим.

54. Не забывайте об обрамлении.

55. Печать в фотосервисе [у автора — Costco] дешева и дает неплохие результаты.

56. Выходите на улицу фотографировать с друзьями.

57. Вступите в фотоклуб или организуйте его сами.

58. Фотография — отличный подарок.

59. Фотосъемка прохожих щекочет нервы.

60. Непринужденный > Постановочный.

61. Естественный свет — лучший свет.

62. 35 мм (в эквиваленте для полного кадра) лучшее «со всех сторон» фокусное расстояние.

63. Не бойтесь увеличивать ISO, когда это необходимо.

64. Вам не нужно таскать с собой треногу повсюду (чёрт, у меня его вообще нет).

65. Всегда лучше недоэкспонировать, чем переэкспонировать

66. Фотосъемка бездомных ради стремления к «художественности» — злоупотребление.

67. Лучшие возможности для съемки — там, где меньше всего ожидаете.

68. Снимки всегда более интересны, если в них присутствуют люди. [Животные способны привлечь даже больше внимания.— Прим. перев.]

69. Photoshop не сможет превратить плохой снимок в хороший.

70. Сейчас каждый — фотограф.

71. Не обязательно лететь в Париж, чтобы сделать хорошие снимки; лучшие места — рядом с вами.

72. Люди с зеркалками, которые для вертикального кадра поворачивают камеру «наплывом» [кнопка спуска затвора] вниз, выглядят глупо.

73. Камеры — инструменты, а не игрушки.

74. С точки зрения композиции фотография и живопись не очень-то различаются.

75. Фотография — это не хобби. Это стиль жизни.

76. Занимайтесь снимками, а не поиском причин их не делать.

77. Будьте оригинальны. Не пытайтесь копировать чужой стиль.

78. Лучшие фотографии рассказывают больше, чем ожидает зритель.

79. Камера иного цвета, чем черный, привлекает слишком много внимания.

80. Чем больше оборудования вы носите с собой, тем меньше удовольствия получаете от фотографии.

81. Хороший автопортрет снять намного сложней, чем кажется.

82. Смех всегда проявляет в снимке истинный характер человека.

83. Не возбуждайте подозрений при съемке — «маскируйтесь под местность».

84. Пейзажная фотография может со временем наскучить.

85. Наслаждайтесь съемкой.

86. Никогда не удаляйте снимки.

87. Будьте вежливы, снимая людей и события.

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

89. Путешествие и фотография — отличная пара.

90. Учитесь читать гистограмму.

91. Шумный снимок лучше смазанного.

92. Не бойтесь фотографировать в дождь.

93. Учитесь пользоваться моментом, а не бесконечно стремиться к идеалу.

94. Не занимайтесь фотосъемкой на пустой желудок.

95. Фотографируйте — и узнаете много нового о себе.

96. Не прячьте ваши снимки — делитесь ими с миром.

97. Не бросайте фотографировать.

98. Фотография — больше чем просто получение снимков, это философия жизни.

99. Ловите решающий момент.

100. Напишите свой собственный список.


Джеймс Хэг. Строка прогресса — это сложно
mercury13_kiev

Оригинал: Progress Bars are Surprisingly Difficult

Жаль, что такой необычный блог официально остановился. Но на нём появилась ещё парочка новых статей.

Мы все видели строки прогресса, которые сначала идут медленно 20 минут, потом быстро заполняются за 30 секунд. Или наоборот, строка, которая резво шла к концу, покрыла последние пиксели за 50 % времени. Не редкость даже строки, которые ползут назад.

Месяц назад, когда я установил MacOS Sierra, процесс закончился, когда строка была полна на 2/3. В Doom (2016) круглый измеритель прогресса с цифрой в центре, и она часто засиживается на 0 %, потом на 74 и 99, а иногда заканчивается где-то за 90, не доходя до 100 %.

Явно это не тривиальная задача, иначе бы мы не видели столько глюков.

Концептуально идеальную строку прогресса сделать просто. Всё, что нужно знать — это сколько длится всё вычисление, и обновлять строку в отдельном потоке, чтобы анимация была плавной. Просто! Почему разработчики так не могут? Всё, что нужно знать,— это сколько точно…

Ой!

Можно измерить эту цифру по секундомеру и использовать, но это предполагает, что ваша система «стандартная». У других будут быстрее или медленнее процессоры, диски и интернет. Можно запустить небольшой тест скорости, но всё равно слишком много факторов. Можно уточнить оценку в процессе, но именно по этой причине строки вдруг отскакивают назад. Всё крутится вокруг факта, что нельзя наперёд узнать, как быстро строка проскочит от пустого к полному.

Есть аналогичный вопрос в диспетчеризации программ. Нужно автоматически последовательно запустить несколько программ: запускаем одну, дожидаемся окончания, затем другую. Если цель — иметь минимальное среднее время до окончания всех программ, то лучший критерий — исполнить все программы от короткой к длинной (см. «Кратчайшая работа следующей»). Но для этого нужно знать наперёд, как долго будет выполняться каждая из программ, и в общем случае это невозможно.

И хотя точная строка прогресса никогда не будет достижима, полезны даже такие, как установил Брэд Аллан Мейерс в 1985 году в статье «Важность индикаторов процента в человека-компьютерных интерфейсах». Но процент чего? Несложно превратить загрузку десятка сходных по размеру файлов в процент готовности. Не так просто — когда закачка и локальная обработка объединяются в одно число. И тут индикатор прогресса теряет весь смысл, кроме одного: идёт какое-то движение к цели и, скорее всего, программа не застряла.


Ольга Шаврина. Ищем те 80% функций, которые никто не использует [реферат]
mercury13_kiev

Полная статья на блоге Ольги

Как известно, средний пользователь использует 20 % функциональности. Есть несколько признаков, по которым надо вырезать ненужную функциональность.

А стоит ли вообще вырезать? Это надо делать осторожно.

1. У сложных профессиональных программ (Photoshop) есть профессиональные дорогие пользователи, которые используют процент функций, приближающийся к 100. С ними надо поосторожнее.

2. Нашли непопулярную функцию — можно спрятать подальше, не вырезая.

3. Иногда функцией не пользуются, потому что не знают о её существовании. Далеко спрятана, непривычно называется или не задокументирована.

Способ 1. Аналитика. Для программиста это просто: добавить систему аналитики. Если есть действующая служба, пишется за день. Но есть вопросы.

Пользуется ли человек кнопкой «Лайк», если нажимает её раз в неделю? А есть функциональность, не требующая прямых действий: он может настроить рассылку год назад и она всё ещё работает. Или насколько важен тот или иной индикатор на статус-строке?

Способ 2. Скрыть и посмотреть. Метод жёсткий, применять с осторожностью. Ольга рассматривает две функции: продвинутую аналитику и push-уведомления, обе требовали много внимания со стороны программистов (а push — ещё и правильно настроенный браузер). Первую без вопросов убрали, вторую стали просить так, что пришлось исправить.

Способ 3. Ошибки. Если в функции критичная ошибка и никто о ней не сообщил — значит, она не слишком-то и нужна?

Способ 4. Спросить. Важно: правильно сформулируйте вопрос. Нельзя: «Что бы вы хотели поменять в зелёной кнопке? Вы не против, если мы уберём зелёную кнопку?» Можно: «Как конкретно вы используете зелёную кнопку? Что вы не сможете сделать, если мы уберём зелёную кнопку?»


Зимнее
mercury13_kiev


DSC_0070_DxO.jpg


DSC_0055_DxO.jpg


DSC_0044_DxO.jpg


Я снова выступаю!
mercury13_kiev

Всем киевлянам, кто на меня подписан!

Через полтора месяца, предположительно 10…13 мая, выступаю. Класс и программа те же, но хореография и вращения намного сложнее. Потому катаюсь «на поражение», для опыта: есть немалая вероятность что-то зафакапить и набрать меньше очков, чем на простой программе.

Моя фирменная «раскоряка назад-внутрь» тоже будет.

Кто хочет меня поддержать и будет в Киеве в середине мая, отпишитесь!

Обещаю отписаться ещё трижды. 1) Когда уйдёт регистрационный взнос; 2) Когда взносы будут закрыты и выйдет предварительное расписание; 3) Когда я увижу их сайт (или бумагу, вывешенную на стене катка) с окончательным расписанием.


КДПВ и иллюстрация
mercury13_kiev

Примерно то же у Максима Ильяхова

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

КДПВ — яркая (иногда яркая до провокации) картинка, предназначенная, чтобы привлечь внимание к статье, выделить её из ленты.

Иллюстрация — единица информации (картинка, схема, таблица, чертёж, диаграмма, видео, компьютерный код, даже текст — скажем, цитата), призванная раскрыть мысль текста.

Иллюстраций должно быть столько, сколько нужно, и они должны располагаться там, где раскрывают мысль, со скидкой на формат издания: в книге чёрно-белые иллюстрации лучше прижимать к краям листа, даже если они будут вдалеке от текста, а цветные — отдельной тетрадью, что делать…

Количество и положение КДПВ определяется форматом издания. В печатных изданиях роль КДПВ может играть шапка или фронтиспис. В вебе принята одна КДПВ перед текстом. Она же показывается до «ката», если в блоге таковой есть.

Одна и та же картинка с прыжком фигурного катания (источник — книга Алексея Мишина, цветные линии мои) у меня дважды: в статьях «Как различать прыжки фигурного катания» и «Задача: Фигурное катание». В первой статье она показывает присед, стартовую дугу, шаг в воздух и выезд — это иллюстрация. Во второй — это просто прыжок, это КДПВ.

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

В художественных изданиях КДПВ одновременно будет и иллюстрацией; выбор сюжета диктуется двумя требованиями: быть ярким и не спойлерить раньше времени. Если в информационной статье можно объединить КДПВ и иллюстрацию — иллюстрация будет достаточно яркой, чтобы быть КДПВ, и может находиться в начале по формату и смыслу — большое везение.

Разумеется, КДПВ много в детских изданиях, и настоящий детский иллюстратор размоет грань между КДПВ и иллюстрацией: каждая КДПВ будет иллюстрировать, а каждая иллюстрация будет КДПВ.

А вот в настоящих информационных статьях ставить КДПВ на месте иллюстраций — это принимать публику за детей. Никому такое отношение не нравится. А если статья такая плохая, что без КДПВ она не читается, фтопку такую статью!

UPD. Что тут у меня сверху, КДПВ или иллюстрация? КДПВ, конечно, это видно по коллажной вёрстке. Но отдалённо иллюстрирующая смысл текста.


Фигурное катание, ответ
mercury13_kiev

Текст задачи

Эти данные неплохо приближаются квадратичный кривой и, в зависимости от метода аппроксимации, получается от 13 до 17 при реальном 15. Простая аппроксимация из LibreOffice даёт 15,5.

Квадратичная кривая имеет такую физическую подоплёку. Есть две формулы h=gt²/2, E=mgh — таким образом, с повышением оборотности (а значит, времени) прыжка его высота (а значит, и энергия) повышается квадратично.

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

Александра. 13-летняя звезда фигурного катания, вторая исполнительница четверных прыжков после Мики Андо. Скажем, исполнила четверной тулуп со стоимостью 10,3. А вот с артистизмом она всё ещё очень детская, потому всего 7,5 — не так много для фигуристки мирового класса. Её элементы и артистизм соотносятся как 3:2 — так что, если откалибровать под неё нашу систему, получается, что коэффициент для артистизма 0,9.

Оксана. Простая любительница с нашего катка. Где-то на стороне освоила перекидной и лихо прыгает, но в плане красоты движений всё ещё корявая. Судьи поставили бы ей единичку за артистизм. Вместе с перекидным за 0,2 — 1,1 очка.

Юлия. Очаровательная студенточка, два месяца на коньках. Всем миром нашли ей подержанные коньки, после чего она стала показывать чудеса, но что-то продвинутое пока не могёт. С уверенным катанием судьи бы ей поставили на шажок больше, 1,25, и она выиграет у Оксаны с 1,13 очками.

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

Как калибруют систему под тех или иных фигуристов? Один способ — подкрутить коэффициенты. Второй таков: «разных сторон проката» (компонентов) не одна, а целых пять. В слабых классах делают меньше компонентов, а самых маленьких оценивают именно что одним компонентом, артистизмом.

И самое противное: система, откалиброванная под мастеров спорта международного класса, начала отказывать на чемпионах. Ещё на противостоянии Сотникова-Ким (2014) всё решила техника. Противостояние Медведева-Загитова (2018) вообще сделало из катания фарс: Загитова выиграла, выжав из технической оценки всё, что можно. Правилами фигурного катания разрешены семь четверных прыжков в одной программе, шесть кое-кто из мужчин уже исполняет.

Подобная смена акцентов на пути от новичка к профессионалу — обычное дело. Игроки в Call of Duty придумали понятие «нубская труба» — подствольный гранатомёт, которым легко делать фраги. Начинающим игрокам в Dota всерьёз рекомендуют брать пятерых самодостаточных персонажей и навалиться толпой. Это, повторяю, нормально.

Проблема, когда на том или ином уровне игра становится однобокой. Как ни пытались сделать из Team Fortress 2 киберспорт — получалось плохо. Солдат объективно лучше пулемётчика (подвижнее и дальнобойнее), а шпион, хоть раз проявивший себя, быстро уничтожается.

В той же Dota есть Каолин, Дух Земли, который имеет процент побед меньше 40, настолько он сложен. Но есть люди, которые им делают какие-то нереальные чудеса, и потому после каждого чемпионата мира этого Каолина «режут». Всё режут и режут, а виртуозы не переводятся.

Почему бридж — спорт, а преферанс — нет? Умелые преферансисты принимают единственно правильное решение, и если играть как в спортивный бридж, то три стола с большой вероятностью покажут одинаковые партии. А если просто так, без уравниловки — всё решит «карта пошла».

Эти примеры показывают, как сложно сделать систему, которая действует и для начинающих, и для чемпионов. Но если уж мы делаем спорт — с приставкой «кибер-» или без — это надо. Пускай даже с искусственными модификациями и калибровками.

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


Как сделать палитру из одного цвета
mercury13_kiev

Эрик Кеннеди пишет, как делают вариации одного цвета.

Часто программа или сайт делается в одном цвете: так, например, работает Мордокнига.

Не совсем в одном: есть светлые и тёмные версии этого цвета. Их делают вот так.

Чтобы сделать темнее:

  • Уменьшить яркость (B)
  • Увеличить насыщенность (S)
  • Часто: сдвинуть цветность (H) в сторону чистого (красный/зелёный/синий)

Чтобы сделать светлее:

  • Увеличить яркость (B)
  • Уменьшить насыщенность (S)
  • Часто: сдвинуть цветность (H) в сторону смешанного (жёлтый/голубой/пурпурный)


Корзина на рабочем столе: как правильно и почему так не делают
mercury13_kiev

Насколько мне известно, корзина впервые сделана в компьютере «Лиза» фирмы Apple. В DOS/Windows она появилась под названием Delete Sentry, а Windows 95 сделала собственно корзину.

Корзина (или урна, как я её люблю называть) защищает файл от случайного удаления и реализует метафору полного отката: любое действие можно отменить, даже удаление файла. Однако настоящей корзины так и не смогли сделать. Потому что настоящая корзина должна обладать кучей функций.

Дисковое место, занятое файлами в корзине, считается свободным. То есть: удаляем файл на гигабайт — появился гигабайт свободного места. Но файл остаётся на диске, пока свободное место не упадёт до этого самого гигабайта.

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

Очистка корзины — уничтожение компромата, и только. Так что без этой функции, к сожалению, не обойтись.

Выброс файла в корзину должен быть быстр. Иначе большие кучи файлов люди будут удалять в обход урны.

Если человек удалил несколько файлов одним махом, они должны отображаться в корзине одним объектом. При этом можно восстанавливать как весь объект (каталог, несколько каталогов, кучу файлов), так и один файл из этой кучи.

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

Вопросов всё ещё много. Есть ли какие-то правила, что удалять безвозвратно, а что — в корзину? Удалили большой фильм и скачали новый — как сказать компьютеру, что надо выкинуть из корзины старый фильм, а не мелкие документы? (Есть мысль: задания более 30% объёма корзины считаются низкоприоритетными и удаляются первыми.) Как быть со съёмными и сетевыми дисками?

Почему такой корзины нет? В первую очередь потому, что такая корзина должна строиться всеобъемлюще: это файловая система, API ОС и её фоновые службы. Пока, как минимум в Windows, корзина выглядит чем-то прикрученным сбоку. В файловой системе нет понятия «корзина», потому приходится переименовывать по файлу, а затем дописывать какую-то БД — это медленно. По той же причине корзина считается занятым местом, и её нужно чистить, если места мало.

Интересный факт: в 90-е годы кто-то придумал программу для MacOS «Оскар Ворчун» (в честь героя кукольного шоу «Улица Сезам»). Этот Оскар сидел в корзине и пел «I love trash», когда её очищали. Дети любили эту программу, потому файлы родителей часто оказывались стёртыми. Вот уж профанация функции корзины! А прикрыли её… когда нажаловался правоторговец шоу!


Занимательная задача: Фигурное катание
mercury13_kiev

Задача №1. В современном фигурном катании полуоборотный прыжок «перекидной» является незачётным, однако детям его оценивают в 0,2 или 0,3 очка. Прыжок «аксель» в полтора оборота — 1,1 очка. Аксель в 2,5 оборота — 3,3 очка. Аксель в 3,5 оборота — 8,5 очка.

Прикиньте, во сколько оценивают гипотетический (никем не исполнявшийся) аксель в 4,5 оборота. Объясните, какая физика стоит за нашей экстраполяцией. Как вы думаете, реальный балл будет больше или меньше нашей оценки?

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

Задача №2. По первой части вы примерно поняли, как оценивается техника. Артистизм оценивается крайне просто: различные стороны проката (владение коньком, связующие элементы и т.д.) оценивают по шкале от 0 до 10, умножают на какой-то коэффициент (1,6 для женщин, 2,0 для мужчин) и прибавляют к оценке за технику.

Объясните, в чём такое оценивание артистизма глубоко ущербно. Попытайтесь понять, какие коррективы делают, чтобы оно как-то работало. Подсказка: чемпионаты мира и Олимпийские игры — малая часть фигурного катания. Хотя уже и на Олимпийских играх эта система начинает отказывать и что-то да и предпримут.

Ответ


Странная ошибка
mercury13_kiev

Не так давно на работе случилась странная ошибка. При переходе на x64 самодельная библиотека XLSX отказала при попытке импорта. Забавная, но на задачу не тянет. Проблема была вот в чём.

В компьютерах есть две стратегии работы с многобайтовыми числами. Число 90AB16 может записать в два байта как 90 AB (порядок Motorola, или big-endian), или AB 90 (порядок Intel, или little-endian). x86 и x64 относятся ко вторым, раз уж они Intel.

А ещё некоторые машины для упрощения схемы не могут обращаться к 4-байтовым числам, чей адрес не кратен четырём. То есть по адресам 0 и 4 могут, а по адресам 1, 2, 3 — уже нет. Машины x86 и x64 свободны от такого ограничения (правда, по некратным адресам обращение несколько медленнее), а вот у несовместимого с ними Itanium это ограничение есть.

Задача: сравнить пять байтов с «xmlns». Неоптимальный способ: сравнивать по байту или вызвать стандартную функцию сравнения. Оптимальный: сравнить четыре байта с «xmln» и пятый с «s». Но для этого нужно, чтобы эти четыре байта схватило одним махом (нет ограничения на адреса). И, разумеется, константа «xmln» по-разному переводится в число в зависимости от того, Intel машина или Motorola. На Intel старший байт «n», на Motorola — «x».

Код такой (простите, не хочу проверять, как в ЖЖ работают хэштэги — потому пускай будет «собака»).

@ifdef _M_IX86
  @define LITTLE_ENDIAN
  @define UNALIGNED
@endif
// аналогично для x64, проверяется макрос _M_IX64

@ifdef UNALIGNED
  @ifdef LITTLE_ENDIAN
    // Константа для порядка байтов Intel
  @else
    // Константа для порядка байтов Motorola
  @endif
  // Оптимальный вариант
@else
  // Неоптимальный вариант
@endif

Ошибка случилась двойная. Макрос проверки на машину x64, _M_IX64, оказался неверным (вроде правильно _M_AMD64), но где-то глубоко в хедерах MinGW определён макрос UNALIGNED. А теперь посмотрите на вторую часть кода. Макрос UNALIGNED есть — включается оптимизация. Макроса LITTLE_ENDIAN нет — оптимизация под порядок байтов Motorola. Вот и говорит, что в XML нет пространств имён: вместо префикса «xmlns» искало «nlmxs».

Как исправить? Уже замена UNALIGNED → MACHINE_UNALIGNED (и аналогично для LITTLE_ENDIAN) всё решает методом выключения оптимизации. Ну и _M_IX64 → _M_AMD64, чтобы оптимизация-то включилась.

Выводы. 1) Макросы — зло, но замены этому злу пока не придумали. 2) По-хорошему, все системные макросы должны иметь такие префиксы, чтобы с ними было сложно пересечься. 3) Хотелось бы иметь в языке возможность преобразовать несколько символов в число на уровне компилятора, с учётом порядка байтов. В Турбо-Паскале было, но в плохом виде было: машина x86 всё-таки Intel, и чтобы одним махом сравнить два байта, надо было писать 'mx', а не 'xm'. 4) Если ты придумал ветку под какую-то машину, но не можешь её проверить, поскольку этой машины нет — ставь аварийный останов с сообщением: «Ветка не проверена, испытывайте на свой риск».


Интересные геймдизайнерские решения
mercury13_kiev

Геймдизайнер — это режиссёр компьютерной игры. В большом фильме много режиссёров, в большой игре много дизайнеров: кто-то занимается механикой, кто-то постановкой боёв, кто-то интерфейсом, кто-то руководит построением уровней.

Геймдизайнеру иногда приходится решать интересные задачи. Некоторые из этих задач дошли и до нас.

Donkey Kong / Сигэру Миямото

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

Prince of Persia 2: The Shadow and the Flame / Джордан Мехнер

Prince of Persia хорошо работал на компьютерах класса 80286 (на «Поисках» с аналогом 8086, по опыту, дико тормозил). Ограничением движка был один сарацин на комнату. Во второй части сарацины уже пёрли буром. Бывали комнаты, где на Принца нападали девятеро: не толпой, правда, а поодиночке или по два.

Игра отлично работала на тех же «двойках» (проверено!), в том числе благодаря интересному решению. Когда в комнате нет трупов, сарацин с вероятностью 75% падает трупом, с вероятностью 25% с криком срывается вниз. Если есть один труп — вероятность уже 50:50. Если два — вероятность 25:75. Когда в комнате три трупа, все сарацины падают вниз.

Doom / Джон Ромеро

Сейчас-то правилами deathmatch’а никого не удивишь. Но был же кто-то, кто их придумал, и это Джон Ромеро. Правила вырабатывались долго и нудно, и в режиме «Deathmatch» поступили как в кооперативной игре: подобранное оружие оставалось, и его нельзя было подобрать второй раз. Патроны разово подбирались и исчезали навсегда. Позднее придумали режим «Deathmatch 2.0»: оружие и патроны подбирались и исчезали, но вскоре воскресали.

Неизвестно, кто (скорее всего, Quake) придумал комбинацию того и другого: оружие как в Deathmatch 1.0, а патроны как в Deathmatch 2.0. Это позволяет случайно убитому не остаться со стартовым пистолетом: в любом случае ему перепадёт какая-то ружбайка.

Deathmatch обрастал правилами: толком отбалансировали оружие только в «чисто мультиплеерных» Unreal Tournament и Quake III. В более поздних играх сделали, чтобы большие бонусы вроде усиленного урона появлялись только через некоторое время — тогда тот, кто первым добежит до бонуса, не будет «на коне».

Dota 2 / Абдул Измаил (IceFrog)

В Dota очень много интересных геймдизайнерских решений. Например, было время, когда у девяти героев было по кинжалу телепортации, а десятый — Акаша, королева боли с врождённой телепортацией (и это решили, переработав кинжал). Я расскажу только про одно решение из многих.

В середине карты сидит большой монстр по имени Рошан. Убийство Рошана даёт большой бонус. Сделали, чтобы убитый Рошан воскресал через случайное время: большое побоище по таймеру за право убить Рошана второй раз — не лучшее дело. Ну а если по какой-то причине одна команда вынуждена не явиться к часу Ч — это её серьёзно убивает.

Team Fortress 2 / Робин Уокер

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

В первых версиях Team Fortress был режим «сопровождение гражданского». Игра за гражданского была сложна и скучна, потому от персонажа в пиджаке с зонтиком отказались. В более поздних версиях игроки вели не хрупкого гражданского, а неубиваемую тележку.

Убитый проводит некоторое время вне игры. Чтобы игроки не умирали поодиночке, убитые воскресают пачками. Потому время вне игры зависит от везения, 10…20 секунд: смотря в какую пачку попадёшь.

И даже мультяшный стиль сделали, чтобы классы игроков хорошо читались. Рабочие версии TF2 были в более реалистичном антураже.

Bastion / Амир Рао

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


Ребус Генри Форда, усложнённая версия
mercury13_kiev

Текст задачи, решение упрощённого варианта

DONALD + GERALD = ROBERT, ничего не дано. Что делать?

На самом деле у нас очень много информации. O + E = O (возможно, с переносом), это главная зацепка. 2A = E, это даст вторую цифру. Цифра N + R = B вряд ли много даст, однако вначале наложит границы на очень частую букву R, а в конце — отбросит ложную ветвь.

Очевидно, E = 0 или 9. Пойдём по ложному пути, E=0.

Посмотрим, чему может равняться R. Цифры D, G и L < R, так что отпадают 1…3. Тогда третья цифра говорит, что N<5, так что отпадает и четвёрка. Из той же третьей цифры R≤7. Так что остались два варианта.

Ложный вариант 1. R=6, отсюда D=4, G=2, Т=8, L=3, и на пару N/B не остаётся свободных цифр. Либо 1/8, либо 2/9, но 2 и 8 заняты.

Ложный вариант 2. R=7, N=1. Тогда B=9, L=8. С переносом в десятки D=6, G=1. Конфликт.

Так что E=9, и точка.

Если A≠9, значит это 4.

R лежит в пределах 5…7 (первое — из сотен тысяч с занятой четвёркой, второе — из тысяч с занятой девяткой).

Ложный вариант 3. R=6. Тогда L=8, N=1, B=7, на чётное T без переноса в десятки остаётся только двойка, D=1. Конфликт.

С явно нечётным R наш новый рисунок отличается всего одной цифрой, переносом в десятки. Но это важно.

А теперь самое интересное: D<R, но 2D даёт перенос в десятки. Получаем D=5, R=7 и наш ответ.

donald1.png

Итого выходят (на случай, если картинки затрутся) всё те же 526485 + 197485 = 723970.


?

Log in

No account? Create an account