Почитал на досуге Спортивный кодекс РАФ

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

Wonderlic test

По на водке [info]avva прошел этот тест на IQ:

http://wonderlictestsample.com/wonderlic-test-sample/50-question-wonderlic-test/

Получил 62%, или 31 правильно отвеченный вопрос. Если верить википедии, это больше, чем средний результат программиста или инженера, но меньше, чем таковой же для системного аналитика. Извиняет меня лишь одно — перед прохождением теста я выжрал литра три пива.

Интересно, а есть ли исследования по прохождению тестов на IQ ужратыми в разной степени респондентами?

PS А как вы готовитесь к финалу Чемпионата Московской области по ралли?

UPD Финал слит, чемпионат выигран, на трезвую голову я набираю 39 очков (78%).

Ретро-ралли и современная электроника

Заказал недавно с Aliexpress в очередной раз партию Bluetooth-модулей HC-05 (думаю, вы уже догадались, зачем). Приехали десять модулей — из них 8 те самые HC-05, а оставшиеся два — какие-то мне неизвестные, на TI CC2541.

Ну, с HC-05 все понятно — конфигурируем модуль десятком-другим AT-команд, прицепляем к нашему девайсу и пользуемся, как удлинителем UART. Все довольно просто и неприлично тупо. А вот модули на CC2541 — это что-то новое. Во-первых, у них другой набор команд — хотя кое-какая информация довольно быстро нагугливается. Самое неприятное — это то, что эти модули не поддерживают старый добрый Bluetooth 2.1, а, стало быть, для меня пока что совершенно бесполезны.

Но на кое-какие мысли меня эти модули натолкнули. На днях я почитал регламент ретро-ралли «ГУМ-авторалли Gorkyclassic 2017«, а точнее — пункт про использование «профессионального штурманского оборудования». Формулировка — совершенно замечательная:

Использование профессионального штурманского оборудования, приборов и устройств, установленных на автомобиле, запрещено. «…» Использование любых навигационных программ в мобильных устройствах (смартфонах, планшетах и т. п.) не запрещается.

Что такое «профессиональное штурманское оборудование» — вопрос, конечно, интересный. По услышанной мной недавно версии, к таковому относятся приборы вроде Терратрипа — мол, наличие такого серьезного и недешевого девайса отпугивает новичков (равно как и висящие на лобовом стекле пара навигаторов, антирадар и еще какая-нибудь фигня), поэтому всех надо заставить ехать по штатному одометру. GPS на московских ретро-ралли — не помощник, два круга по Кремлевской набережной, заезд в Лефортовский тоннель — и любой счетчик расстояния покажет чушь.

Относится ли к запрещенному «профессиональному штурманскому оборудованию» или же к разрешенным «навигационным программам в мобильных устройствах» древний «Чайный навигатор» — вопрос, конечно, дискуссионный, и было бы очень интересно услышать мнение официальных лиц на эту тему — но меня заинтересовал другой вопрос. Моя программа TSD Navigator — безусловно, «навигационная программа в мобильном устройстве». Но у нее есть важное отличие от банального «Навитела» — она умеет работать с беспроводным адаптером для датчика пробега, которому не страшны любые сбои в работе GPS.

Конечно, в нынешнем виде этот адаптер далеко не идеален — но по отзывам пользователей, со своими функциями справляется неплохо. Фактически, по точности измерения расстояний (а это основной показатель качества штурманского прибора в любительском ралли) TSD Navigator с адаптером не уступает тому же Терратрипу. Проблема одна — габариты. Пытливый техинспектор сможет обнаружить «серую коробочку» и потребовать, согласно регламента соревнования, обернуть ее непрозрачной тканью.

Несомненно, в следующем году в регламент добавят обертывание всяких подозрительных коробочек в фольгу — и я начал прикидывать варианты, как бы поглубже спрятать аналогичное по функциональности устройство. Для начала — хорошо бы отказаться от адаптеров типа HC-05. Если не писать к HC-05 свою прошивку — а это тот еще геморрой — то нужен как минимум еще один микроконтроллер, а это лишняя плата, кое-какая обвязка и вообще куча проблем. И вот тут мне на глаза попался этот китайский адаптер с CC2541.

Чем он отличается в лучшую сторону от HC-05? Чипы от Texas Instruments неплохо документированы, в отличие от микросхем Cambridge Silicon Radio в HC-05. Они поддерживается тем же IAR’ом, для них есть многочисленные примеры — так что, возможно, имеет смысл написать и собственную прошивку для CC2541 — благо китайский модуль с распаянной на нем микросхемой и обвязкой стоит смешных денег. Но что самое важное — это габариты устройства. Я прикинул, что используя даже обычный китайский модуль, можно запихнуть его внутрь корпуса «проходного датчика скорости» от ВАЗ — который легко устанавливается на большинство отечественных янг- и олдтаймеров. Естественно, что здесь можно предусмотреть и всю необходимую обвязку — какой-нибудь преобразователь питания и датчик Холла. Если не заморачиваться с установкой датчика на трос спидометра, а, скажем, прицепить его в районе болтов кардана или на тормозной щит — то можно побаловаться и с другими вариантами корпуса.

В общем, в будущем сезоне можно будет поиграть в увлекательную игру «надури техинспекцию» :)

Про мобильники

В ожидании тачскрина взамен разбитого решил посмотреть Яндекс.Маркет на предмет современных мобильников. Естественно, начал с определения ТЗ. Хочется мне смартфон, с относительно свежим и не загаженным Android, двумя симками, камерой, WiFi, Bluetooth, GPS — в общем, пока все стандартно. Нестандартная часть начинается отсюда — и похоже, что на сегодняшний день это самое жесткое требование: размер «по вертикали» не должен превышать 125 мм.

mobiles

Как я его определил? Да очень просто — прикинул размеры всех своих мобильников и взял ближайшее «верхнее» значение из ряда Ra10 по ГОСТ 6636-69 :) А если серьезно — мне кажется, что таскать в кармане что-то больше моего нынешнего мобильника (123x64x10 мм) уже проблематично, более крупные аппараты все равно выглядят «лопатами».

Но… Ассортимент смартфонов в Яндекс.Маркете, удовлетворяющих этим требованиям, оргазма не вызывает — это такой отстойный Китай, что хочется пройти мимо — за исключением, разве что, Samsung Galaxy J1 Mini, да и он от китайцев недалеко ушел. «Компактными смартфонами» в нынешних обзорах называют модели размером 130×65 (еще куда ни шло), 135×66 и даже 141×69 мм. Неужто надо смотреть в сторону iPhone SE (124×59 мм)?

Уточнять «андроидное» ТЗ такими опциями, как «приличный экран», «нормальная камера» и так далее вообще бессмысленно — добавив хоть одно дополнительное требование, вместо десятка «китайцев» получим ноль без палочки. В общем, печально все это.

Вы делаете это неправильно

По-моему, почти в каждый курс программирования входит задачка вроде «напишите программу, решающую квадратные уравнения». Обычно это второе или третье задание после «Hello, world!» — считается, что это хороший способ продемонстрировать нетривиальные инструкции ветвления. «Хорошее» решение сводится к вычислению дискриминанта и в случае, если он неотрицательный — вычислению корней квадратного трехчлена ax2+bx+c по формуле, известной из курса алгебры за седьмой, что ли, класс:

square1

Вот такой вариант решения обычно считается более-менее приемлемым (хотя его можно/нужно обвешать еще несколькими проверками — например, не равен ли коэффициент a нулю?):

int solve(double a, double b, double c, double *x1, double *x2){
	double d = b*b - 4.*a*c;
	if( d >= 0 ){
		d = sqrt(d);
		*x1 = (-b + d)/(2.*a);
		*x2 = (-b - d)/(2.*a);
		return 0;
	}
	return -1;
}

В чем проблема? На первый взгляд все более-менее хорошо, но… Давайте для тестирования будем подсовывать уравнения с известными корнями — используя для этого теорему Виета. А именно, зафиксируем коэффициент a=1, тогда уравнение с корнями x1 и x2 будет иметь коээффициенты b=-(x1+x2) и c=x1x2. Сравнивая корни, полученные при решении уравнения, с известными нам, оценим «качество» решения.

Если корни «нормальные» — те, с которыми справится шестиклассник — то все хорошо. Но что будет, если взять два «нехороших» корня — к примеру, x1=1, x2=10-14 (это для double; если вы пользуетесь float — то возьмите второй корень, равный 10-5)? Проверьте — не забыв включить вывод максимально возможного количества значащих цифр (в printf лучше всего использовать форматный спецификатор %g, при использовании вывода в стиле C++, через iostream, такой вывод включен по умолчанию). Ошибка при вычислении второго корня возникнет уже в четвертой значащей цифре, это, на самом деле, уже довольно неприлично.

В чем дело? Если обратить внимание на «обычную» формулу для вычисления корней квадратного уравнения, то мы увидим, что при вычислении меньшего корня корень из дискриминанта вычитается из b — а так как они в этом случае очень близки, то возникающая при этом вычислительная ошибка оказывается слишком большой.

Метод, разумеется, можно улучшить. Для начала — можно вспомнить о существовании еще одной формулы для корней квадратного уравнения:

square2

Выводится она абсолютно аналогичным образом, от «классической» отличается тем, что «не работает» при c=0.

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

— вычисляем дискриминант D=b2-4ac
— если дискриминант неотрицателен, то вычисляем

q

— корни уравнения равны q/a и c/q.

Как реализовать это в программе — довольно очевидно, это особо ее не усложнит.

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

Продолжим про скульпторов

В википедической статье про Арно Брекера было написано примерно следующее:

Две скульптуры «Провозвестник» и «Призвание» из ателье в Йекельсбрухе были позже установлены в Эберсвальде на стадионе 20-й армии Группы советских войск в Германии. Вместе с двумя женскими статуями Фрица Климша, а также двумя скульптурами коней Йозефа Торака из сада рейхсканцелярии они стояли там до лета 1989 года.

Как-то недосказанно получилось — что за статуи, куда они делись летом 1989, ну и так далее. Начал разбираться — и на форуме «Назад в ГСВГ» нашел две фотографии из Эберсвальде:

eberswalde2

eberswalde1

По словам форумчан, когда ГДР «дышал на ладан», бронзовые статуи (а это были не только статуи Брекера с этих фото, но и две женские фигуры работы Фрица Климша, и статуи коней Йозефа Торака) сдали в переплавку. С одной стороны — странно, мне так кажется, что их ценность все более-менее осознавали; с другой — а фиг поймешь этих немцев, когда дело касается «любимого скульптора Гитлера».

Но у истории есть продолжение — оказывается, в 2015 году в Бад-Дюркхайме нашли статуи из Эберсвальде — тут пишут про коней Йозефа Торака, но я встречал и упоминания работ Брекера, например, по второй ссылке:

http://p.dw.com/p/1FTED
http://artguide.com/posts/1167#footnote-4

Особенно, конечно, порадовали статьи в немецкой прессе — например, эта:

http://www.sueddeutsche.de/kultur/kunstobjekte-aus-dem-dritten-reich-ausstellen-nicht-verstecken-1.2492736

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

fritz-klimsch-olympia

Передовое штурманское оборудование

odometer-boards

Приехали платы для «серой коробочки» — и что интересно, почти все устройства уже «предзаказаны».

И про искусство

Прочитал в ЖЖ [info]babs71 про мемуары Вернера Ланге «Художники во Франции во время оккупации». Заинтересовался историей про Дину Верни, натурщицу Аристида Майоля, и загуглил, за что ее упекли в гестапо. Загуглил, узнал много нового и интересного — не только про французов, но и про Арно Брекера, например. Не откажите себе в удовольствии, походите хотя бы по ссылкам из педивикии.

Для состоятельных парней

Проперла монетизация в программке для учета личных финансов Coin Keeper:

coinkeeper

Добавить дополнительный источник дохода могут только состоятельные парни, отбашлявшие авторам программы :)

Пьяные командиры из теплых бункеров в глубоком тылу гнали бойцов в атаку!

http://inosmi.ru/social/20170626/239657112.html

Забыл добавить, что это про финнов.