Параллельные прямые в геометрии Лобачевского

Геометрия Лобачевского (147.71КиБ)

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

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

Я далеко не один такой. Заблуждение это столь распространённое, что сегодня в музее-усадьбе Лобачевского (г. Козловка Чувашской республики) директор музея лично его повторил под немой укор портрета бывшего владельца.

Сам я узнал истину только лет пять назад — это была конференция «404», кажется мы сидели в номере Ильи Бирмана и в разговоре затронули эту тему. Меня тогда поправила Таня Бибикова, тогда ещё Танька Мисютина, за что ей спасибо, конечно.

Истина же в том, что даже в геометрии Лобачевского параллельные прямые не пересекаются, но ведут себя несколько иначе, не так как в евклидовой геометрии — у Лобачевского «через точку, не лежащую на заданной прямой, можно провести более одной прямой, параллельной этой заданной прямой». А в евклидовой — только одну. Вот в чём разница.

31 комментарий

Говорящие часы

Часы (53.96КиБ)

Вот очень правильная настройка есть в «Маке» (немногие её включают, а зря!) — компьютер может произносить текущее время каждый час, полчаса или четверть часа. Пользуюсь ей давно, помогает быть продуктивнее в работе.

Во-первых, помогает ориентироваться в собственной скорости (уже 11 часов, а я так мало сделал!), во-вторых, позволяет выйти из состояния «залипания» — когда мысли распозлись, взгляд расфокусировался.

По кнопке «Настроить голос…» открывается меню, в котором можно выбрать русский голос, если это требуется.

Если у вас «Мак», рекомендую включить эту настройку!

8 комментариев

Трип

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

Ехал вчера поездом в Москву с коллегами, смотрели фильм по ноуту. Вероятно он мне что-то навеял и я вспомнил немного странную историю, которая приключилась со мной на позапрошлой конференции «404».

На этой конференции есть некоторое количество друзей и знакомых, которых я вижу раз в год или реже, естественно, общение с ними происходит после содержательной части конференции, поэтому спать я обычно, в продолжение всего «404», ложусь очень поздно, а встаю очень рано. Пробуждению способствует бассейн и сауна в отеле («404» каждый год проходит в «Холидей Инн Самара»).

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

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

6 комментариев

Сами́чка

Посмотрел прекрасный фильм «Игра в имитацию» про взлом шифра «Энигма», использовавшегося фашистами во Вторую Мировую и Алана Тьюринга, решил побольше почитать о предмете и наткнулся на интересную историю одного специфичного термина, связанного с расшифровкой «Энигмы».

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

Это приводило к неким повторениям, которые позже стали называть «females» (буквально — «женщины»). Откуда же такой название? В книге «Decrypted Secrets: Methods and Maxims of Cryptology» Фредриха Л. Бауэра есть объяснение:

В жаргоне Блетчли-парка термин «females» появился как производная от польского каламбура te same («the same») ↔ samiczka («female»). Большинство людей в Блетчли-парке не знали, фактически и не могли знать, польского оригинала и находили собственные объяснения…

То есть поляки из словосочетания «te same» (с польского — «то же самое») сделали жаргонное «сами́чка» (слово, по всей видимости, родственник нашей «самочки»), которую потом американцы перевели совершенно буквально («female»), не вдаваясь в этимологию.

3 комментария

Fitbit Surge

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

Фитбит Сёдж (93.70КиБ)

На борту — ГПС, трёхосевой акселерометр, трёхосевой гироскоп, цифровой компасс, оптический измеритель пульса, высотомер, датчик освещённости и вибрационный мотор.

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

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

Клиент на смартфоне (141.26КиБ)

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

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

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

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

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

Поймал себя на мысли, что стал чаще подниматься с рабочего места, чтобы пройтись до программистов, а то и просто постоять в кабинете, пока размышляю. Это дорогого сто́ит.

7 комментариев

Частичный индекс в «Оракле»

В «Оракле», в отличие от «Постгреса», частичных индексов в чистом виде нет, но есть возможность их сэмулировать — достаточно построить функциональный индекс и возвращать NULL на значениях, которые нам в индексе не нужны. Например:

CREATE INDEX resolution_notice_d_o_r ON resolution_notice(
    CASE WHEN is_send_paper = 1 THEN org_id END,
    TRUNC(rdate)
)

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

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

SELECT …
     FROM …
INNER JOIN resolution_notice rn ON …
    WHERE dn.n = 0
      AND CASE WHEN is_send_paper = 1 THEN dn.org_id END = :org_id
     AND TRUNC(rn.rdate) BETWEEN :start_date AND :end_date
GROUP BY …
ORDER BY rdate DESC, …

Мне стало интересно — если попробовать сунуть условие индекса в сам индекс, догадается ли «Оракл» дальше не дофильтровывать по нему? Ну, то есть, сделать что-то такое:

CREATE INDEX resolution_notice_d_o_r ON resolution_notice(
     org_id,
     TRUNC(rdate),
     CASE WHEN is_send_paper = 1 THEN 1 END
)

А в запрос добавить:

… CASE WHEN is_send_paper = 1 THEN 1 END = 1…

Оказалось, «Оракл» не догадывается (у нас он 11-й, может 12-й тут сможет оптимизацию сделать):

Условие (34.98КиБ)

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

11 комментариев

PHP7: spaceship operator

В ПХП7 вошёл новый оператор — «космический корабль». Я его помню со времён программирования на Перле. Наиболее частое применение он, по всей видимости, найдёт в сортировках:

usort($data, function ($o1, $o2) {
    return $o1->value <=> $o2->value;
});

Комбинация «меньше», «равно» и «больше» — и есть «космический корабль». Результат его выполнения следующий — если левое меньше, получается «-1», если правое — «1», если значение равны, вернётся ноль. Для строк уже сейчас (с чётвертой версии языка) существует функция strcmp, которая делает то же.

Новый оператор сравнивает даже массивы и объекты, в RFC есть соответствующие примеры:

echo [1, 2, 3] <=> [1, 2, 1]; // 1
echo [1, 2, 3] <=> [1, 2, 4]; // -1

$a = (object) ["a" => "b"];
$b = (object) ["a" => "c"];
echo $a <=> $b; // -1
 
$a = (object) ["a" => "c"];
$b = (object) ["a" => "b"];
echo $a <=> $b; // 1
 
// only values are compared
$a = (object) ["a" => "b"];
$b = (object) ["b" => "b"];
echo $a <=> $b; // 0

В общем, какой-то особенной пользы в язык конструкция не принесёт, но в в неких частных случаях читаемость улучшится.

8 комментариев

PHP: бесполезная микрооптимизация

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

Выигрыш был мал, как по мне, но многим и этой разницы было достаточно.

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

Сегодня проверил — примерно так оно и есть (ниже — опкоды ПХП):

line     #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   2     0  E >   ADD_STRING                                       ~0      'double+'
         1        ADD_VAR                                          ~0      ~0, !0
         2        ADD_STRING                                       ~0      ~0, '+quotes'
         3        ECHO                                                     ~0
   4     4      > RETURN

Нет никакой разницы какой вид кавычек использован (в моём примере — двойные с переменной посередине) — внутреннее представление не различается.

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

Оставить комментарий

Toki!

Десять лет назад я, с подачи Ильи Бирмана, выучил смешной язык (не программирования) — «токипона». Я редко о нём вспоминал, но послевкусие он оставил отличное — это был приятный опыт. Язык вполне реально выучить за 2—3 дня целиком, собственно ровно этим он и интересен.

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

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

Обложка книги «Toki Pona: The Language of Good» Соньи Ланг с жёлтым смайликом и рукописная страница с надписью на токипона и подписью «Sonja

Поделился этим с Ильёй, а он (напоминаю — десять лет прошло!) ответил мне на «токепоне», да ещё и удивился, что я ничегошеньки не помню. Заодно помог перевести надпись на книге: «Светлана! Солнце греет нас всех. Люби и твори добро. Соня».

Кстати, мы когда-то внесли свой вклад в язык — придумали слово «неделя» («tenpo pi pali ali»), правда в словари оно не вошло.

7 комментариев

Мир — иллюзия

Платье (78.01КиБ)

Ребята, какого цвета платье? Ближе к бело-золотому или к чёрно-синему? Варианты оставляйте в комментариях.

23 комментария

← сюда туда →