December 3rd, 2014

green_fr

Солнечные часы на Инвалидах

Проходили с Анютой через двор дома Инвалидов, случайно обратили внимание на солнечные часы — их там, оказывается, 7, очень оригинальные. Без подсказки я сам бы понял где-то с половину...

На северном фасаде двора сразу 4 циферблата:



Два верхних совершенно идентичны, пишут, установлены в 1679 году (сам Дом построен в 1671). Читаются слева направо — 7 и 8 часов утра слева, 4 и 5 вечера справа. Пропущенные часы отрисованы на двух нижних циферблатах (пишут, их добавили в 1770 году). Мы какое-то время воспринимали эти два циферблата как две части одного и того же, и не понимали, как получилась дырка посередине. На самом деле, конечно же, это два независимых циферблата, у каждого свой стержень (узнал новое слово — гномон), своя тень.

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

Proust project

На работе в какой-то момент заметили, что программа начала ужасно тормозить. Часов так 10 лишних. Начали искать, в чём проблема.
Нашли версию, которая ещё была быстрой. Простой просмотр изменений с этой версии ничего не дал. Методом деления пополам (8 итераций) нашли, наконец-то, правку, которая чуть ли не удвоила время расчёта. Строчка тупая до безобразия — накопительные контракты нашего портфеля в какой-то момент (по достижении пенсионного возраста) пересчитываются в ренту, и одна из процентных ставок формулы пересчёта долгое время была фиксированной. Нас заставили переписать фиксированную ставку на динамическую (привязка к 10-летней ставке центробанка), мы это сделали, в этот момент потеряли примерно час расчёта. А потом обнаружили небольшую ошибку в формуле 10-летней ставки (грубо говоря, забыли разделить на 10), исправили её — и теряем 10 часов. Очевидно, что само исправление (операция деления на 10) занимает существенно меньше времени, чем 10 часов. Отгадка оказалась в том, что упомянутая процентная ставка законом ограничена сверху. И до деления на 10 практически всегда мы брали значение этого потолка. Что позволяло нам группировать расчёты в разных экономических сценариях. А после деления всё гораздо хуже — сколько сценариев, столько и возможных ставок, лишь изредка вылезает значение потолка.
Красивая иллюстрация того, что полный тест (и значения, и время расчёта — всё проверять!) нужно запускать после каждой правки. Чуть ли не после исправленного комментария.
Ну и отдельные лучи поддержки товарищу, ответственному за контроль результатов этой модификации...
P.S. Папку со всеми этими версиями назвали «Пруст», потому что «В поисках потерянного времени» :-)