Русский
Русский
English
Статистика
Реклама

Edisonsoftware

Перевод Нет Cookies, нет проблем использование ETag для отслеживания пользователей

03.07.2020 22:11:07 | Автор: admin
Работая старшим консультантом по дижитал-аналитике в ведущем международном аналитическом агентстве, с огромным интересом наблюдаю за нынешним крестовым походом современных веб-браузеров против технологии cookie.

Оказывается, есть способ отслеживать отдельных не вошедших в систему пользователей без использования файлов cookie. Я тоже реализовал это. Сейчас покажу как.


Для наглядности я создал демо-сайт. Вот он.

Нажмите на каждую из трёх кнопок Page На всех трёх один и тот же идентификатор.
Закройте окно браузера и снова откройте сайт Идентификатор не поменялся.
Выключите компьютер и зайдите на эту веб-страницу завтра Идентификатор всё тот же.
Проверьте ваши куки Демо-сайт не записывает куки и не считывает их.
Проверьте URL Сомнительные строки запроса отсутствуют.

Итак, как именно я могу хранить идентификатор и узнавать, что вы с определённого устройства возвращаетесь на сайт, при этом без входа в систему и без использования куки?
EDISON Software - web-development
Мы в EDISON со всеми этими нюансами приватности сталкиваемся постоянно.


Наш новый выполненный проект Резидент Такси в котором мы связали в единое целое сайт агрегатора-такси, CRM-систему, блок контроля водителей и автомобилей, мобильные приложения для iOS и Android.

Однако, всегда учитываем: безопасность каждого пользователя это святое ;-)

Cookies используются всё меньше


Если вы достаточно активный пользователь интернета, вы наверняка так или иначе сталкивались с бесконечными дискуссиями относительно файлов cookie и о том, как они используются. В настоящее время браузерные технологии всё чаще отказываются от куки тем паче что сейчас всё строго зарегламентировано правилами конфиденциальности, такими как GDPR или CCPA. Хотя это, безусловно, прогресс, так как является важным шагом на пути к более ориентированному на конфиденциальность интернету, однако с другой стороны также наносит огромный урон основной функциональности большинства веб-сайтов, их UX, экономической структуре интернета и индустрии дижитал-аналитики. Хотя в техническом аспекте использование cookie-файла браузером в качестве идентификатора для возвращающегося пользователя весьма надёжно, есть и другие веб-технологии, основанные на хранении информации на локальном компьютере.

Роль кэша


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

Кэширование может быть выполнено с использованием ETag. Это такие идентификаторы, которые прикрепляются к каждому ресурсу, предоставляемому сервером (например, веб-странице или изображению). Таким образом сервер выясняет, кэшировал ли пользователь самую новую версию ресурса. Когда ресурс на сервере изменяется, для этого ресурса создается новый идентификатор ETag.

  • Понедельник.
    Пользователь заходит на веб-сайт впервые. В запросе отсутствует ETag. Страница сайта отправляется в браузер с ETag 123. Сайт сохраняется (кэшируется) на локальном устройстве.
  • Вторник
    Пользователь снова заходит на тот же сайт ETag 123 включён в исходящий запрос Сервер проверяет, изменился ли ресурс (Идентификатор ETag остается прежним?) Если ETag не изменился, сервер инструктирует браузер: просто используйте сайт, который был уже доставлен и кэширован в понедельник. Нет необходимости веб-ресурс пересылать повторно, время и трафик экономятся. Profit.


Использование технологии кэширования для отслеживания и идентификации пользователей


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

Вот как это сделал я в моём примере:

  • Создаётся простой сайт с тремя страницами.
  • Вставляется один и тот же iFrame на каждую страницу. Этот iFrame просто белый пиксель 1x1, который невидим для пользователя.
  • Когда запрашивается этот веб-ресурс iFrame, с помощью PHP генерируется случайный идентификатор на стороне сервера. Я использую этот идентификатор, чтобы переопределить идентификатор ETag для iFrame, который обычно сервером выдаётся автоматически.
  • Каждый раз, когда пользователь запрашивает одну из трёх страниц (и, следовательно, запрашивает iFrame), мой идентификатор ETag включается в запрос. Затем проверяется на стороне сервера, существует ли этот идентификатор или это первый запрос без ETag.
  • Если ETag существует: значит, это вернувшийся посетитель. Можно зафиксировать как удостоверение его личности.
  • Если ETag не существует: это новый посетитель. Новый ID. С этого момента этот идентификатор будет включен во все заголовки запросов устройства этого пользователя на сайте.
  • В качестве последнего шага вот как этот ETag ID попадает в аналитику:
    я беру ID из заголовков запроса/ответа в iFrame на стороне сервера. Невидимый для пользователя, этот iFrame теперь содержит идентификатор пользователя. Затем я использую JavaScript на стороне клиента и просто включаю этот идентификатор в свой запрос отслеживания аналитики вместо идентификатора файла cookie.



Поиск ETag ID iFrame с помощью Chrome DevTools.

Как предотвратить отслеживание с помощью ETag


Это может быть достаточно непросто. Здесь не используются куки или локальное хранилище браузера. Работает без участия JavaScript. И не используется User-Agent.

Однако у пользователей есть несколько вариантов защиты от отслеживания ETag:

  • Отключите в настройках браузера кеширование.
    Тут следует соблюдать осторожность как пояснялось выше, кеширование может быть очень полезным и имеет много преимуществ.
  • Модифицируйте заголовки headers с помощью надстройки браузера.
    Хотя большинство браузеров изначально не предоставляют возможность изменять headers, для этой задачи существует множество доступных расширений браузера, таких как ModHeader. Почему это работает? Функциональность ETag опирается на заголовки запроса и ответа для обмена идентификатором. Например, если пользователь перезаписывает заголовок If-None-Match, чтобы он был пустым при каждом запросе, новое значение ETag будет генерироваться при каждом запросе страницы. Это предотвращает идентификацию устройства пользователя.




Почему это важно


Почему я проверяю эти вещи? Почему я написал эту статью? Я, разумеется, не намерен использовать это в широких масштабах. Но хотя ETag может использоваться и нехорошими людьми, этот пример демонстрирует важную мысль: как и большинство других технологий, по умолчанию ETag не обязательно вреден. В зависимости от того, для каких целей это используется.

Я считаю, что для всех важно знать, про существование подобных методов. И что они могут быть использованы. Было довольно много случаев, когда сайты использовали ETag незаконно. Некоторые из этих инцидентов были даже урегулированы в суде. И вполне вероятно, что подобные методы будут всё чаще использоваться перепуганной рекламной индустрией, которая наблюдает за тем, как рушится один из её столпов: coockie.

Один из многих (безопасных) примеров ETag в интернете можно найти, к примеру, в политике конфиденциальности сети быстрого питания Wendy в отношении файлов cookie и технологий отслеживания:


С помощью ETag можно генерировать уникальные значения отслеживания, даже если пользователь блокирует файлы cookie HTTP, Flash и/или HTML5.

Подобное объявление, похоже, является примером того, как многие сайты используют ETag в своей политике конфиденциальности. Чтобы было ясно: это само по себе не является ни плохим, ни незаконным. Конечно, значения ETag должны быть уникальными. В этом весь смысл их работы в целях кэширования. Однако этот раздел сформулирован очень расплывчато и неоднозначно, особенно когда речь идет о том, используются ли эти значения ETag для отслеживания или нет. И лично я считаю это проблемой. При запросе в отдел конфиденциальности Wendy, они ответили стандартным электронным copy-paste письмом, подтверждающим, что ETag не используются для отслеживания. Политика конфиденциальности, однако, оставляет эту дверь широко открытой. И это то, что меня беспокоит.

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

Всегда есть нюансы. Я твёрдо верю в законность и важность серьёзной дижитал-аналитики до тех пор, пока она выполняется с должным уровнем соблюдения конфиденциальности. Что происходит после, когда магазин законно идентифицировал посетителя? ETag, безусловно, можно использовать в разных целях. Но одно можно сказать наверняка: эта тема никогда не станет скучной.
Подробнее..

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

16.06.2020 14:11:48 | Автор: admin
Разбираясь с вопросами, которые ставят перед наукой экстремальные чёрные дыры, физики выявили удивительную и универсальную связь между энергией и энтропией.


Экстремальные чёрные дыры содержат столько электрического заряда, сколько возможно. Это привлекло пристальное внимание физиков-теоретиков.

Физики любят крайности, говорит Гарретт Гун, физик из Университета Карнеги-Меллона. Если не получается двигаться дальше, что-то изменилось, застопорилось значит, там кроется что-то интересное.
EDISON Software - web-development
Компания EDISON всегда рада помочь в исследовательских бизнес-проектах.


На протяжении многих лет мы делаем инвестиции в стартапы, помогая средствами и технической поддержкой в реализации свежих нестандартных идей.

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

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

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

Чёрная дыра становится электрически заряженной, если в неё падает заряженная материя. Физики рассчитали, что чёрные дыры имеют так называемый экстремальный предел, точку насыщения, когда они хранят максимальное количество электрического заряда для своего размера. Когда заряженная чёрная дыра сжимается под воздействием излучения Хокинга, она в конечном итоге достигает данного экстремального предела. Он будет настолько мал, насколько это возможно, с учётом величины заряда. Дальнейшее испарение невозможно.

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


Итак. Есть вопрос, как сказала Сера Кремонини из Университета Лихай: Что происходит со всеми этими экстремальными чёрными дырами?

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

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

Затем, два года назад, Реммен и его коллеги Клиффорд Чунг и Джунью Лю из Калифорнийского технологического института обнаружили, что способность распадаться экстремальных чёрных дыр напрямую зависит от другого ключевого свойства черных дыр: их энтропии мере того, сколькими различными способами составные части объекта могут быть переставлены. Энтропия одна из наиболее изученных особенностей чёрных дыр, но до этого она не имела ничего общего с их экстремальным пределом. Это прям вау, отлично, что две очень крутые вещи оказались взаимосвязаны, говорит Чунг.

И что окончательно поразило, эта взаимосвязь, как оказалось, характерна для любых природных явлений. В статье, опубликованной в марте в Physical Review Letters, Гун и Риккардо Пенко обобщили выводы своей предыдущей работы, доказав простую универсальную формулу, связывающую энергию и энтропию. Новая формула была применена к газообразной системе, а также к чёрной дыре.


Риккардо Пенко (слева) и Гаррет Гун (справа) на примере экстремальных чёрных дыр доказали универсальную связь между энергией и энтропией.
Университет Карнеги Меллон; Фото Кристин Гун


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

Экстремальность чёрных дыр


Для физиков достаточно очевидно, что заряженные чёрные дыры имеют экстремальный предел. Объединяя уравнения Эйнштейна и уравнения Максвелла, они рассчитали, что заряд Q чёрной дыры, никогда не превзойдёт её массу M, если их преобразовать в одни и те же фундаментальные единицы измерения. Вместе масса и заряд чёрной дыры определяют её размер радиус горизонта событий. Между тем, заряд чёрной дыры также создает второй внутренний горизонт, скрытый за горизонтом событий. По мере увеличения Q внутренний горизонт чёрной дыры расширяется, а горизонт событий сжимается до тех пор, пока при Q = M оба горизонта не совпадут.

Если Q увеличится ещё больше, радиус горизонта событий станет комплексным числом (содержащий квадратный корень из отрицательного числа), а не вещественным. Это нефизично (This is unphysical). Итак, согласно простому сочетанию теории электромагнетизма и эйнштейновской гравитации, состояние Q = M должно быть пределом.

Когда чёрная дыра достигнет этой точки, простым вариантом для дальнейшего разделения было бы распад на две меньшие чёрные дыры. Однако для того, чтобы подобное расщепление было возможно, законы сохранения энергии и сохранения заряда требуют, чтобы в одном из дочерних объектов в итоге заряд превалировал над массой. Исходя из уравнений Эйнштейна и Максвелла, это невозможно.


Инфографика от 5W для журнала Quanta

Но, в конце концов, разделение экстремальных чёрных дыр на две части возможно, как указали в 2006 году Нима Аркани-Хамед, Любос Мотл, Альберто Николис и Кумрун Вафа. Они отметили, что объединённые уравнения Эйнштейна и Максвелла не работают для маленьких, сильно искривлённых чёрных дыр. В меньших масштабах дополнительные нюансы, связанные с квантово-механическими свойствами гравитации, приобретают большую важность. Эти детали вносят поправки в уравнения Эйнштейна-Максвелла, корректируя прогнозируемый экстремальный предел. Четыре физика показали, что чем меньше чёрная дыра, тем весомее эти поправки, в результате чего экстремальный предел смещается всё дальше и дальше от Q = M.


Исследователи также отметили, что если корректировки имеют нужный знак положительный, а не отрицательный тогда маленькие чёрные дыры могут содержать больше заряда, чем массы. Для них Q > M, и это именно то, что нужно для распада больших экстремальных чёрных дыр.

Если это так, то не только чёрные дыры могут распасться. Аркани-Хамед, Мотл, Николис и Вафа отметили, что из этого следует еще один факт о природе: гравитация должна быть самой слабой силой. Заряд объекта Q это его чувствительность к любому взаимодействию, кроме силы тяжести. Его масса М это его чувствительность к гравитации. Таким образом, Q > M означает, что из обеих сил гравитация является слабейшей.

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

Эта гипотеза слабой гравитации получила широкое распространение, поддерживая ряд других идей о квантовой гравитации. Но Аркани-Хамед, Мотл, Николис и Вафа не доказали, что Q > M или что экстремальные чёрные дыры могут распадаться. Поправки квантовой гравитации к экстремальному пределу могут быть отрицательными, и в этом случае маленькие чёрные дыры могут нести даже меньший заряд на единицу массы, чем большие. Экстремальные чёрные дыры не распались бы, и гипотеза о слабой гравитации не оправдалась.

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

Беспорядок повсюду


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

Почти 50 лет назад ныне покойные физики Джейкоб Бекенштейн и Стивен Хокинг независимо друг от друга обнаружили, что энтропия чёрной дыры прямо пропорциональна площади её поверхности. Энтропия, обычно рассматривается как мера беспорядка, она оценивает количество способов, которыми внутренние части объекта могут быть перестроены без какого-либо изменения общего состояния. (Если комната грязная, т.е., с высокой энтропией, вы можете перемещать предметы случайным образом, и комната останется настолько же грязной; в противоположном случае, если комната чистая, т.е. с низкой энтропией, перемещение предметов сделает её менее аккуратной.) Перебросив мостик между энтропией чёрной дыры, которую определяют её внутренние микроскопические компоненты, и её геометрической площадью поверхности, закон энтропии Бекенштейна и Хокинга стал одной из самых сильных опор физиков для изучения чёрных дыр и квантовой гравитации.

Бекенштейн и Хокинг вывели свой закон, применив уравнения гравитации Эйнштейна (вместе с законами термодинамики) к поверхности чёрной дыры. Они рассматривали эту поверхность как гладкую и игнорировали любые структуры, существующие в микроскопических масштабах.

В 1993 году физик Роберт Уолд из Чикагского университета показал, что можно добиться большего. Уолд нашёл хитрые лазейки для получения небольших эффектов, получаемых от более микроскопических уровней реальности, не зная, каково полное описание этого более глубокого уровня. Его тактика, впервые применённая физиком Кеннетом Уилсоном в другом контексте, заключалась в том, чтобы описывать все возможные физические эффекты. В уравнениях Эйнштейна Уолд показал, как добавить ряд дополнительных факторов любых, имеющих правильные размерности и единицы измерения, построенные из всех физически значимых переменных, которые могли бы описывать неизвестные свойства чёрной дыры на близкой дистанции к её поверхности. Вы можете описать наиболее общий набор элементов, которые у вас могут быть в принципе, которые описывают кривизну [чёрной дыры] определённого размера, сказал Кремонини.


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

Уолд проделал это в 1993 году, рассчитав, как квантовые гравитационные эффекты на малых расстояниях корректируют закон энтропии Бекенштейна-Хокинга. Эти поправки смещают энтропию чёрной дыры, таким образом, что она становится не точно пропорциональна площади. И хотя невозможно вычислить энтропийный сдвиг напрямую участвуют переменные с неизвестными значениями ясно, что поправки тем значительнее, чем меньше чёрная дыра, и, следовательно, тем больше энтропийный сдвиг.

Три года назад Чунг, Лю и Реммен применили один и тот же базовый подход Уолда к изучению заряженных чёрных дыр и экстремального предела. Они модифицировали уравнения Эйнштейна-Максвелла серией дополнительных членов, возникающих из-за эффектов на близком расстоянии, и решили новые уравнения, чтобы вычислить новый скорректированный экстремальный предел. Это привело к удивительному результату: поправки к экстремальному пределу заряженной чёрной дыры точно соответствовали поправкам к её энтропии, рассчитанным по формуле Уолда; квантовая гравитация неожиданно сдвигает обе величины одинаково.

Реммен помнит дату, когда они завершили расчет 30 ноября 2017 года потому что это было так увлекательно, вспоминает он. Это было очень захватывающе, когда мы доказали, что эти [дополнительные] элементы дают одинаковые сдвиги и энтропии и экстремальности.


Грант Реммен, Клиффорд Чунг и Джунью Лю обнаружили, что изменение экстремального предела чёрной дыры соответствует изменению её энтропии.

Но одинаковый ли знак у этих сдвигов? Обе поправки зависят от неопределённых переменных, поэтому в принципе они могут быть как положительными, так и отрицательными. В своей статье 2018 года Чунг и его коллеги подсчитали, что энтропийный сдвиг является положительным в большом классе сценариев и моделей квантовой гравитации. Они утверждают, что также интуитивно понятно, что сдвиг энтропии должен быть положительным. Напомним, что энтропия измеряет все возможные внутренние состояния чёрной дыры. Кажется разумным, что учёт более микроскопических деталей поверхности чёрной дыры выявит новые возможные состояния и, следовательно, приведет к большей энтропии, а не к меньшей. Чем больше микросостояний тем более правдоподобной будет теория, сказал Реммен.

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

Но другие исследователи указывают на то, что эти результаты не являются прямым доказательством гипотезы о слабой гравитации. Гэри Шиу, физик-теоретик из Университета Висконсина в Мэдисоне, сказал, что вера в то, что энтропия всегда должна возрастать, когда вы принимаете во внимание квантовую гравитацию, это интуитивный вывод, с которым кто-то согласен, а кто-то нет.

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

А вообще доказать [гипотезу о слабой гравитации] это было бы просто фантастически, добавил Шиу. Именно поэтому мы всё ещё думаем об этой проблеме.


Запретное болотное царство


Гравитация является самой слабой из четырёх фундаментальных взаимодействий в нашей вселенной. Гипотеза о слабой гравитации утверждает, что иначе и быть не могло. Помимо нашей вселенной, гипотеза также, кажется, верна для любых теоретически возможных вселенных, выводимых из теории струн. Кандидат в квантовую теорию гравитации, теория струн, утверждает, что частицы это не точки, а протяженные объекты (т.н. струны), и что пространство-время в микроскопических масштабах также имеет дополнительные измерения. Когда теоретики описывают различные наборы струн, которые могут определять вселенную, они неизменно обнаруживают, что гравитация которая возникает из определённого типа струн всегда является самой слабой силой в этих модельных вселенных. Видеть, что это в конечном итоге происходит раз за разом, очень поразительно, делится Хорхе Сантос, физик из Института перспективных исследований в Принстоне, Нью-Джерси и Кембриджском университете.

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

Если бы исследователи смогли доказать, что гравитация неизбежно является самой слабой (и, как следствие, что чёрные дыры всегда могут разрушиться), то самый важный вывод, по мнению Сантоса, состоит в том, что квантовая гравитация должна стать теорией великого объединения. То есть, если Q и M должны иметь фиксированное соотношение, их связанные силы должны быть частью одной единой математической структуры. Сантос отметил, что единственной существующей теорией, которая объединяет фундаментальные силы в единую структуру, является теория струн. Конкурирующие подходы, такие как петлевая квантовая гравитация, пытаются квантовать гравитацию, разделяя пространство-время на части, не связывая гравитацию с другими силами. Если гипотеза слабой гравитации верна, то такие вещи, как петлевая квантовая гравитация, мертвы, сказал Сантос.

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


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

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

Универсальная Энергия и Беспорядок


Новое исследование может иметь далеко идущие последствия не только в изучении чёрных дыр и квантовой гравитации.

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

Эта взаимосвязь просто прекрасна, говорит Сантос.

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

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

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

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

Сможем ли мы ответить на вопрос: почему гравитация так слаба?- сказал Чунг. Тот факт, что этот вопрос один из главных, тот факт, что на этот вопрос можно чётко ответить, не вдаваясь в философские рассуждения, и тот факт, что он таким окольным путём приводит к энтропии (причём, путём, проверенным временем), в результате всего этого все эти увлекательные вещи о чёрных дырах кажутся каким-то безумием.
Подробнее..

Перевод Пока, Python. Привет, Julia

14.06.2020 22:11:45 | Автор: admin
По мере того, как Python замедляет свой впечатляющий темп, растёт новый сильный конкурент.

image

Не поймите меня превратно. Популярность Python по-прежнему обеспечивается сообществом ученых, дата-сайентистов и специалистов по искусственному интеллекту.

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

Поэтому всё больше программистов-питонщиков осваивают и другие языки лучшими игроками на этом поле являются Julia, Go и Rust. Julia отлично подходит для математических и технических задач, Go для модульных программ, а Rust лучший выбор для системного программирования.

Поскольку эксперты по данным и ИИ занимаются множеством математических задач, чаще всего они выбирают Julia. И даже после самой суровой проверки у Julia обнаруживаются свои плюсы, которые Python не может победить.
EDISON Software - web-development
Так как Python один из лучших языков программирования, мы в EDISON часто используем его в сложных интересных проектах.


Мы разработали приложения и сайты Московского ювелирного завода.

Полное тестирование новой версии сайта было осуществлено на Python и Django.

Дзен Python VS жадности Julia


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

Из этих соображений Гвидо ван Россум создал Python в конце 1980-х для улучшения ABC. ABC был слишком идеален для практического программирования. Хотя жёсткость и требовательность языка облегчала обучение, его было сложно использовать в реальной жизни.

Python, напротив, очень прагматичен. В этом можно убедиться, перечитав Дзен Python, который отражает намерение создателей:
Красивое лучше, чем уродливое.
Явное лучше, чем неявное.
Простое лучше, чем сложное.
Сложное лучше, чем запутанное.
Плоское лучше, чем вложенное.
Разреженное лучше, чем плотное.
Читаемость имеет значение.
Особые случаи не настолько особые, чтобы нарушать правила.
При этом практичность важнее безупречности.
Ошибки никогда не должны замалчиваться.
Если они не замалчиваются явно.
Встретив двусмысленность, отбрось искушение угадать.
Должен существовать один и, желательно, только один очевидный способ сделать это.
Хотя он поначалу может быть и не очевиден, если вы не голландец.
Сейчас лучше, чем никогда.
Хотя никогда зачастую лучше, чем прямо сейчас.
Если реализацию сложно объяснить идея плоха.
Если реализацию легко объяснить идея, возможно, хороша.
Пространства имён отличная штука! Будем делать их больше!
Python по-прежнему сохранял преимущества ABC: такие как, к примеру, удобочитаемость, простота и удобство для начинающих. Но Python гораздо надёжнее и адаптирован к реальной жизни, чем когда-либо был ABC.

Этим же руководствуются создатели Julia: они хотят сохранить хорошее из других языков и отбросить плохое. Но в случае с Julia стоит гораздо более амбициозная задача: вместо того, чтобы заменить какой-то один язык, она хочет превзойти их всех.

Вот что сами говорят создатели языка:
Мы ненасытны: мы хотим большего.

Нам нужен язык с открытым исходным кодом, со свободной лицензией. Мы хотим скорость Си с динамикой Ruby. Мы хотим, чтобы язык был гомоиконическим, с настоящими макросами, такой как Lisp, но с очевидными, знакомыми математическими сущностями, такой как Matlab. Мы хотим настолько же удобное для общего программирования, как Python, такое же простое для статистики, как R, такое же естественное для обработки строк, как Perl, такое же мощное для линейной алгебры, как Matlab, и способное объединять все эти возможности под одной оболочкой. Нечто простое в освоении, но при этом радующее самых серьёзных хакеров. Мы хотим, чтобы язык был интерактивным, и мы хотим, чтобы он был компилируемым.
Julia намерена избавиться от всех своих недостатков, которые у неё пока есть, не обменивая их на недостатки других языков. И хотя Julia является молодым языком, она уже достигла многих целей, поставленных создателями.

За что разработчики любят Julia


Многосторонность


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

Что касается Julia, то она изначально была создана в том числе и для этих задач. По списку снизу вверх.

Скорость


Разработчики Julia хотели получить такой же быстрый язык, как C но то, что они создали, стало ещё быстрее. Несмотря на то, что в последние годы и Python очень заметно ускорился, его производительность пока далека от Julia.

В 2017 году Julia даже вступила в Petaflop Club небольшой клуб языков, которые могут достигать скорости в один петафлоп в секунду при максимальной производительности. Помимо Julia, в клубе сейчас только C, C++ и Fortran.

Сообщество


У Python, с его 30+летним стажем, огромное профессиональное сообщество. Вряд ли существует вопрос, связанный с Python, на который вы не найдёте ответ в рамках беглого Google-поиска.

Сообщество Julia, напротив, довольно мало. Вам, возможно, придётся покопаться немного дольше, чтобы найти ответ, снова и снова связываясь с одними и теми же людьми. Налаживание контактов с сообществом само по себе окажется весьма ценным.

Преобразование кода


Можно даже и не знать ни одной команды Julia, чтобы программировать на этом языке. И не только использовать код на Python и Cи. А даже использовать саму Julia в Python!

Излишне говорить, что это позволяет чрезвычайно легко исправить слабые места вашего кода Python. И оставаться продуктивным, пока вы только знакомитесь с Julia.



Библиотеки


Одна из самых мощных сторон Python миллионы строк в хорошо поддерживаемых библиотеках. У Julia не так много библиотек, и нередки жалобы, что они не поддерживаются на должном уровне (пока).

Но если учесть, что Julia очень молодой язык с ограниченным количеством ресурсов, количество библиотек, которые уже есть, впечатляет. Помимо того, что количество библиотек растёт, язык также может взаимодействовать с библиотеками C и Fortran, например, для обработки графиков.

Динамическая и статическая типизация


Python на 100% динамически типизирован. Это означает, что программа решает во время выполнения, является ли переменная, к примеру, вещественным или целым числом.

Хотя это очень удобно для новичков, в этом же и кроются причины целого ряда возможных ошибок. Код Python необходимо тестировать для всех возможных сценариев неблагодарная задача, отнимающая огромное количество времени.

Поскольку создатели Julia также стремятся к тому, чтобы язык был легко осваиваемым, тут тоже полностью поддерживается динамическая типизация. Однако в отличие от Python, вы можете вводить статические типы, если хотите так, как они представлены, например, в C или в Fortran.
Это может сэкономить кучу времени: вместо придумываний оправданий тому, чтобы не тестировать код, можно указать тип там, где это имеет смысл.

Данные: инвестируйте в небольшие вещи, имеющие большой потенциал



Всё это, конечно, замечательно, однако важно помнить, что Julia пока крошечная по сравнению с Python.

Показательно, к примеру, количество запросов в StackOverflow с тегом python в двадцать раз чаще, чем с julia! Это необязательно означает, что Julia непопулярна скорее, программистам нужно некоторое время, чтобы её принять.

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

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


Подытожим: знание Julia может стать конкурентным преимуществом


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

Точно также и Julia пока ещё нишевая. Но когда она вырастет, раннее принявшие её на вооружение окажутся впереди остальных.

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

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

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

Вы как и другие программисты на Julia будущие рок-звезды, и вы это понимаете (хотя бы подозреваете что-либо подобное в глубине души). Или, как заявили создатели Julia в 2012 году:
Признавая свою непомерную алчность, мы всё также жаждем заполучить всё. Около двух с половиной лет назад мы решили создать язык нашей жадности. Он не завершён, но пришло время для версии 1.0 созданный нами язык называется Julia. Он уже удовлетворяет 90% наших неблагодарных требований, и теперь нужны неблагодарные требования остальных, чтобы развиваться дальше. Итак, если вы также непомерно жадный и излишне требовательный программист, мы хотим, чтобы вы попробовали Julia.
Python до сих пор безумно популярен. Но если вы начнёте осваивать Julia сейчас, позже это может оказаться золотым билетом. И именно в этом контексте звучит заголовок данной статьи: пока, Python, привет Julia!
Подробнее..

Восходящая сортировка кучей

03.07.2020 00:15:20 | Автор: admin

Это заключительная статья из серии про сортировки кучей. В предыдущих лекциях мы рассмотрели весьма разнообразные кучные структуры, показывающих отличные результаты по скорости. Напрашивается вопрос: а какая куча наиболее эффективна, если речь идёт о сортировке? Ответ таков: та, которую мы рассмотрим сегодня.
EDISON Software - web-development
Мы в EDISON в наших проектах используем только лучшие методологии разработки.


Когда мы дорабатывали приложения и сайты Московского ювелирного завода мы сделали полный аудит имеющихся веб-ресурсов, переписали их на Python и Django, внедрили SDK для обращения к видеосервису и рассылки SMS-оповещений, произвели интеграцию с системой электронного документооборота и API 2ГИС.

Мы работаем с ювелирной точностью ;-)
Необычные кучи, которые мы рассматривали ранее это, конечно, прекрасно, однако самая эффективная куча стандартная, но с улучшенной просейкой.

Что такое просейка, зачем она нужна в куче и как она работает описано в самой первой части серии статей.

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



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

Итак, как это работает, давайте посмотрим на конкретном примере.

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

Прежде всего, от того узла, для которого совершается просейка нужно спуститься вниз, по большим потомкам. Куча бинарная то есть у нас левый потомок и правый потомок. Спускаемся в ту ветку, где потомок крупнее. На этом этапе и происходит основное количество сравнений левый/правый потомки сравниваются друг с другом.



Достигнув листа на последнем уровне, мы тем самым определились с той веткой, значения в которой нужно сдвинуть вверх. Но сдвинуть нужно не всю ветку, а только ту часть, которая крупнее чем корень с которого начали.

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



Ну и последний шаг используя буферную переменную сдвигаем значения узлов вверх по ветке.



Теперь всё. Восходящая просейка сформировала из массива сортирующее дерево, в котором любой родитель больше чем его потомки.

Итоговая анимация:



Реализация на Python 3.7


Основной алгоритм сортировки ничем не отличается от обычной heapsort:

# Основной алгоритм сортировки кучейdef HeapSortBottomUp(data):    # Формируем первоначальное сортирующее дерево    # Для этого справа-налево перебираем элементы массива    # (у которых есть потомки) и делаем для каждого из них просейку    for start in range((len(data) - 2) // 2, -1, -1):        HeapSortBottomUp_Sift(data, start, len(data) - 1)     # Первый элемент массива всегда соответствует корню сортирующего дерева    # и поэтому является максимумом для неотсортированной части массива.    for end in range(len(data) - 1, 0, -1):         # Меняем этот максимум местами с последним         # элементом неотсортированной части массива        data[end], data[0] = data[0], data[end]        # После обмена в корне сортирующего дерева немаксимальный элемент        # Восстанавливаем сортирующее дерево        # Просейка для неотсортированной части массива        HeapSortBottomUp_Sift(data, 0, end - 1)    return data

Спуск до нижнего листа удобно/наглядно вынести в отдельную функцию:

# Спуск вниз до самого нижнего листа# Выбираем бОльших потомковdef HeapSortBottomUp_LeafSearch(data, start, end):        current = start        # Спускаемся вниз, определяя какой    # потомок (левый или правый) больше    while True:        child = current * 2 + 1 # Левый потомок        # Прерываем цикл, если правый вне массива        if child + 1 > end:             break         # Идём туда, где потомок больше        if data[child + 1] > data[child]:            current = child + 1        else:            current = child        # Возможна ситуация, если левый потомок единственный    child = current * 2 + 1 # Левый потомок    if child <= end:        current = child            return current

И самое главное просейка, сначала идущая вниз, затем выныривающая наверх:

# Восходящая просейкаdef HeapSortBottomUp_Sift(data, start, end):        # По бОльшим потомкам спускаемся до самого нижнего уровня    current = HeapSortBottomUp_LeafSearch(data, start, end)        # Поднимаемся вверх, пока не встретим узел    # больший или равный корню поддерева    while data[start] > data[current]:        current = (current - 1) // 2        # Найденный узел запоминаем,    # в этот узел кладём корень поддерева    temp = data[current]    data[current] = data[start]        # всё что выше по ветке вплоть до корня    # - сдвигаем на один уровень вниз    while current > start:        current = (current - 1) // 2        temp, data[current] = data[current], temp  

На просторах Интернета также обнаружен код на C
/*----------------------------------------------------------------------*//*                         BOTTOM-UP HEAPSORT                           *//* Written by J. Teuhola <teuhola@cs.utu.fi>; the original idea is      *//* probably due to R.W. Floyd. Thereafter it has been used by many      *//* authors, among others S. Carlsson and I. Wegener. Building the heap  *//* bottom-up is also due to R. W. Floyd: Treesort 3 (Algorithm 245),    *//* Communications of the ACM 7, p. 701, 1964.                           *//*----------------------------------------------------------------------*/#define element float/*-----------------------------------------------------------------------*//* The sift-up procedure sinks a hole from v[i] to leaf and then sifts   *//* the original v[i] element from the leaf level up. This is the main    *//* idea of bottom-up heapsort.                                           *//*-----------------------------------------------------------------------*/static void siftup(v, i, n) element v[]; int i, n; {  int j, start;  element x;  start = i;  x = v[i];  j = i << 1;  /* Leaf Search */  while(j <= n) {    if(j < n) if v[j] < v[j + 1]) j++;    v[i] = v[j];    i = j;    j = i << 1;  }  /* Siftup */  j = i >> 1;  while(j >= start) {    if(v[j] < x) {      v[i] = v[j];      i = j;      j = i >> 1;    } else break;  }  v[i] = x;} /* End of siftup *//*----------------------------------------------------------------------*//* The heapsort procedure; the original array is r[0..n-1], but here    *//* it is shifted to vector v[1..n], for convenience.                    *//*----------------------------------------------------------------------*/void bottom_up_heapsort(r, n) element r[]; int n; {  int k;   element x;  element *v;  v = r - 1; /* The address shift */  /* Build the heap bottom-up, using siftup. */  for (k = n >> 1; k > 1; k--) siftup(v, k, n);  /* The main loop of sorting follows. The root is swapped with the last  */  /* leaf after each sift-up. */  for(k = n; k > 1; k--) {    siftup(v, 1, k);    x = v[k];    v[k] = v[1];    v[1] = x;  }} /* End of bottom_up_heapsort */

Чисто эмпирически по моим замерам восходящая сортировка кучей работает в 1,5 раза быстрее, чем обычная сортировка кучей.

По некоторой информации (на странице алгоритма в Википедии, в приведённых PDF в разделе Ссылки) BottomUp HeapSort в среднем опережает даже быструю сортировку для достаточно крупных массивов размером от 16 тысяч элементов.

Ссылки


Bottom-up heapsort

A Variant of Heapsort with Almost Optimal Number of Comparisons

Building Heaps Fast

A new variant of heapsort beating, on an average, quicksort(if n is not very small)

Статьи серии:



В приложение AlgoLab добавлена сегодняшняя сортировка, кто пользуется обновите excel-файл с макросами.
Подробнее..

Категории

Последние комментарии

  • Имя: Макс
    24.08.2022 | 11:28
    Я разраб в IT компании, работаю на арбитражную команду. Мы работаем с приламы и сайтами, при работе замечаются постоянные баны и лаги. Пацаны посоветовали сервис по анализу исходного кода,https://app Подробнее..
  • Имя: 9055410337
    20.08.2022 | 17:41
    поможем пишите в телеграм Подробнее..
  • Имя: sabbat
    17.08.2022 | 20:42
    Охренеть.. это просто шикарная статья, феноменально круто. Большое спасибо за разбор! Надеюсь как-нибудь с тобой связаться для обсуждений чего-либо) Подробнее..
  • Имя: Мария
    09.08.2022 | 14:44
    Добрый день. Если обладаете такой информацией, то подскажите, пожалуйста, где можно найти много-много материала по Yggdrasil и его уязвимостях для написания диплома? Благодарю. Подробнее..
© 2006-2024, personeltest.ru