Страница 2 из 3

Интерполяция высоты по трём точкам

Недавно возникла необходимость в «реальном времени» увеличивать разрешение карты высот для одной разрабатываемой игры. По существу, задача сводится к трёхмерной линейной интерполяции: берем уравнение плоскости, выражаем высоту (Z), т.е. приводим уравнение к виду z = f(x_1, y_1, z_1, x_2, y_2, z_2, x_3, y_3, z_3, x, y), подставляем туда координаты трёх известных точек и две координаты искомой и получаем результат.

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

\begin{vmatrix}x-x_1&y-y_1&z-z_1\\ x_2-x_1&y_2-y_1&z_2-z_1\\ x_3-x_1&y_3-y_1&z_3-z_1\end{vmatrix}=0

Читать далее

Подводные камни исключений

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

Логика работы веб-сервера такова, что если он не находит для заданного пути нужный обработчик, выбрасывается исключение, которое перехватывается вышестоящим обработчиком соединения, который, в свою очередь, отсылает клиенту ошибку 404. Время выполнения запроса1)Использовался горячий старт, когда перед контрольным замером проводилось несколько аналогичных запросов. представлено на нотариально заверенных скриншотах ниже.

Читать далее

Заметки   [ + ]

1. Использовался горячий старт, когда перед контрольным замером проводилось несколько аналогичных запросов.

PowerShell для Linux

Сегодня я начну издалека. Давно-давно у операционных систем семейства DOS был простой интерпретатор командной строки под названием COMMAND.COM, а у зародившегося в 70-х годах прошлого века семейства UNIX — командная оболочка Bourne Shell (sh). Шло время, для Unix/Linux устаревший sh сменил более совершенный bash, по сей день являющийся стандартным интерпретатором на всех -nix системах.

В среде Windows тоже произошла небольшая революция — появилось новое ядро Windows NT, которое, несмотря на полное техническое избавление от наследия DOS-эпохи, имело стандартным интерпретатором команд новый cmd.exe, который был… функционально просто повторением COMMAND.COM, только без DOS. Во имя обратной совместимости, ага. То есть, в то время, как линуксоиды могли автоматизировать ОС используя довольно современный (на тот момент) скриптовый язык bash, пользователям (ну, администраторам) Windows предлагалось продолжать долбиться в древний COMMAND.COM.

Читать далее

Как соврать с помощью статистики

Тема про то, как врать с помощью статистики далеко не нова и, признаться, довольно избита. Например, есть хорошая статья на Хабре, где подробно разбираются основные случаи неверного толкования статистических данных. Однако, СМИ всё равно не успокаиваются и зачастую выдают результаты статистических исследований за причинно-следственные, обнажая шокирующую правду-матку о том, что, например, голубые глаза являются фактором риска алкоголизма, да. Мало того, другие важные данные исследования намеренно опускаются. Ну в самом деле, кому интересны какие-то там скучные проценты и стрёмные слова вроде «корреляции» и «стратификации»?

ScienceNewsCycle

Очевидное — коррелированное

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

Более того. В мире существует куча явлений, которые, очевидно, вообще не связаны друг с другом, но при этом, с точки зрения статистики, имеют очень тесное взаимоотношение (с очень высокой корреляцией). Вот, например, график, показывающий траты США на науку и космос по отношению к количеству суицидов путём повешения (в США). Связь очевидна! Корреляция больше 99%!

Statistics_Suicide

На сайте Тайлера Вигена представлены ещё тонны таких абсурдных статистических взаимосвязей. При этом всём, конечно, нельзя бросаться в другую крайность и утверждать, что статистика бесполезна. Это, очевидно, не так, но к результатам статистических исследований надо относится очень осторожно.

Читать далее

Первая премия Гудини для экстрасенсов

Утром, за чашкой кофе, меня застала отличная новость: наконец, супротив бесконечных парадов экстрасенсов и прочих одарённых личностей в СМИ у нас, в России, в этом месяце был учреждён аналог премии Джеймса Рэнди — премия Гудини. Организаторы премии обещают 1.000.000 рублей любому, кто сможет доказать свои паранормальные/экстрасенсорные/сверхчеловеческие способности в условиях корректно поставленного научного эксперимента перед группой учёных-экспертов. Приём заявок от экстресенсорных дарований открыт до 31 декабря 2015 года.

Это событие, на мой взгляд, небольшая веха в популяризации науки и развеивании культа экстрасенсов в нашей стране.

Наша премия для магов и колдунов только основана, но интересно посмотреть на почти двадцатилетнюю статистику премии фонда Джеймса Рэнди. Соискателей этой премии в 1.112.000 долларов было очень немало. Приходили и лохозодцы, и предсказатели, и люди с «кожным зрением», маги, пилоты астрала — кого там только не было. Но ни один из них за все 20 лет не смог в условиях научного эксперимента доказать свои сверхспособности — обычно люди либо пытались откровенно обмануть комиссию, либо искренне верили в способности, которых у них нет. Премия так и осталась нетронутой.

Конечно, многие из экстрасенсов просто не идут на проверку, говоря, что «настоящая сила в проверках не нуждается» или придумывая ещё сто причин, но мы-то с вами знаем…

Регулярные выражения: история о длине

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

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

Читать далее

Модельки Третьего Рейха

В связи с возбуждением уголовного (!) дела о продаже моделек солдат Третьего Рейха в Детском мире на Лубянке (они же там ещё и модели танков Вермахта продают, кощунники!), предлагаю пойти совсем чуть-чуть дальше и ввести запрет вообще на любые изображения всего, что связано с Нацистской Германией.

В фильмах о Великой Отечественной Войне доблестные солдаты РККА будут сражаться с неясными замазанными фигурками, героически штурмовать чёрные прямоугольники ДЗОТов, самоотверженно бросаться с гранатами под зацензуренную технику неизвестной принадлежности. И вот уже всего через поколение дети перестанут понимать, с кем же, собственно, сражался СССР и Союзники во Второй Мировой Войне. А было ли это вообще?..

Предлагаю немного пофантазировать на эту тему.

Читать далее

Несвидомая история Украины

Сегодня никаких соплей, разжевывания и словесного онанизма, всё быстро и по жести.

 

Миф 1. Украина — древнее название земли укров. Оно никогда не пересекалось в значении со словом «окраина».

Как бы не хотелось всем свидомым в мире, слово «украина» исторически имело точно такой же смысл как и слово «окраина», и в значении конкретной территории на юге России закрепилось только с середины XIX века. Именно поэтому нормой русского языка является запись «на Украине», как и «на краю».

Читать далее

Charlie Hebdo и яйца

Вчера, 7 января, в центре Парижа трое (как заявили СМИ) профессионалов (как видно из видео) с криками «Аллаху Акбар!» и «Отомстим за пророка!» ворвались в офис сатирического журнала Шарли Эбдо и устроили зачистку сатириков по законам военного времени. Журнал этот, в частности, занимался публикацией карикатур на пророка Мухаммеда, священного среди мусульман. Вообще, этот журнал давно занимается очень толстым троллингом окружающих и слово «сатира» плохо к нему применимо.

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

Удивило, однако, другое — начался очередной раунд подмены понятий. Господа, как вы думаете, если бы шутников из Charlie Hebdo посадило бы французское правительство лет на пять за такие карикатуры, они бы остались живы? А те убитые полицейские? А те совершенно случайные мирные люди, которых фанатики убили в прошлый раз? С каких пор свобода слова тождественна публичному сортирному (погуглите их творчество) оскорблению веры как минимум 15% населения Парижа?

Огромное количество людей в ночь с 7 на 8 января вышли на улицы Франции, чтобы выразить свою солидарность с Charlie Hebdo и поддержать их творчество. Заметьте, в большинстве своём они митинговали не против терроризма и насилия, хотя, конечно, это подразумевается, не в знак солидарности с жертвами, а именно с самой конторой Charlie Hebdo и их хьюморком. Наш Ходорковский тоже предложил всем солидарным с трагедией изданиям выпустить свои карикатуры на Мухаммеда. Говорят, что теперь исламские радикалы ограничивают свободу слова и они этого не потерпят. Нет, то есть они не потерпят не насилия над людьми, а ограничение свободы публиковать похабные карикатуры. Серьёзно? Скажите, а давно ли вам приходилось выпускать комикс про Мухаммеда? Или про Святую Троицу? Вы серьёзно от этого страдаете?

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

Кроме того, надо отчётливо понимать, что Charlie Hebdo — не альтруисты. Эта контора зарабатывает деньги на высмеивании и оскорблении людей, политических партий и религий, и чем больше угара для них — тем лучше. На мой взгляд шутники дошутились, неправильно то, что из них теперь делают мучеников.

P.S. Подзаголовок издания Charlie Hebdo: «Journal irresponsable» (фр. «Безответственный журнал»).

P.P.S. Исламизация Европы — это совершенно отдельный вопрос и в контексте заметки является объективной данностью.

Герои Украины: наследие Степана Бандеры и ОУН

Степан Бандера (1/I 1909 — 15/X 1959) — пожалуй, самый видный и известный аватар современного украинского национализма, незалежності i державності. Борцы с кровавой Россиюшкой (а также, изначально, с кровавой Польшей) водружают его светлый образ на свой щит уже больше пятидесяти лет и особенно в последнее время, в связи с недавними известными событиями в/на Украине. Вчера, 1 января, в честь дня рождения Бандеры по улицам Киева даже прошло настоящее fackelzug (нем. «факельное шествие»). Кажущееся сходство с похожим факельным шествием в Третьем Рейхе, разумеется, только кажущееся; факелы давно используют в ритуальных обрядах и вообще это просто по приколу.

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

Читать далее

С новым 2015 годом!

Чтож, поздравляю всех с наступающим 2015 годом!

Предлагаю всем подумать о том, насколько огромна наша страна — на Камчатке 1 января наступит уже через час!

Разница между «равно» и присваиванием

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

Квантор «=» в математике и других науках имеет значение «равно». То есть это не операция, а высказывание, констатация факта. «A = B » означает именно что «A равно B», а не «А теперь имеет значение B». «f(x)=x^2+2x+1 » означает, что f — тоже самое, что x^2+2x+1 , как макрос. Аналогом математического равенства в программировании (в Си-подобных языках) является логическое выражение «==».

Опасность смешения этих понятий при чтении алгоритмов заключается в том, что в таком случае выражение «A = B » толкуется как «на этом шаге А и В равны», что не дает понимания, как именно они должны стать равны — то ли А должно стать В, то ли наоборот.

Именно поэтому в некоторых языках программирования решили выпендриться и заменить оператор присваивания с удобного для набора знака «=» на, например, «:=» в Паскале, что, вообще говоря, раздражает. Однако, по негласной международной норме при описании алгоритмов на псевдоязыке для присваивания используется однозначный символ «←»: «A \gets B » — теперь всем всё понятно.

День начала квантовой механики

В этот день, 14 декабря 1900 года Макс Планк на заседании Немецкого физического общества представил свой труд по излучению абсолютно черного тела, который разрешал парадокс классической термодинамики — ультрафиолетовую катастрофу Рэлея-Джинса.

В 1905 году британский учёный Джинс уточнил расчёты другого британского учёного-лорда Рэлея и получил формулу для расчёта плотности излучения тела в зависимости от длины волны этого излучения и температуры тела:

u(\omega,T) = kT \frac{\omega^2 }{\pi^2 c^3}.

Эта формула (и соответствующий закон) были идеальны с точки зрения классической термодинамики, однако на деле получалось, что при такой зависимости тела должны были излучать бесконечное количество энергии в ультрафиолетовом диапазоне и дальше, что, очевидно, чушь. Закон Рэлея-Джинса согласовался с практикой лишь для малый частот.

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

Планк же предположил, что энергия испускается телом не непрерывно, как в представлениях классической механики, а отдельными «пучками»-квантами. Полученная им на основе этого предположения формула идеально сошлась с экспериментом.

u(\lambda,T) = {2 h {c^2}\over \lambda^5}{1\over e^{h c/\lambda kT}-1}.

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

Сервер TCP-эха на C

Очень часто при проектировании и начальной отладке сетевых протоколов, особенно для встраиваемых систем нужна утилита, которая просто принимает входящие сетевые данные и записывает их обратно. Подобных решений мало, а те, что я в своё время смог найти неоправданно громоздки. Так что как и в случае с логом, я решил сам написать максимально простой TCP-эхо сервер на С, который работает как с Windows, так и с Linux. Чем, собственно, и делюсь.

Утилита максимально простая и состоит из одного файла (и еще двух файлов модуля лога). Исходники файлами и скомпилированные бинарные образы для Windows в конце поста.

Читать далее

Маленький журнал: простейший лог на C

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

Представляю простейший в мире логгер для С, который поддерживает вывод как в файл, так и в консоль и форматированную запись. Под катом представлен исходный код H и C файлов, а также архивчик с исходником. Кроме того, он поддерживает вывод в стандартный syslogd для Linux.

Читать далее