Архив за 23 апреля 2018

Проблема.

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

Какие пути решения сразу приходят на ум? Самое простое, наверное, создать подобный alias (если вы в *nix):

alias create-project="cp -r project/ new-project/ && cd new-project/ && composer install"

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

Читать полностью »

Решаем загадку круглых чисел на графике выборов 2018 - 1

Данная статья является ответом на вот эту статью (Анализ результатов президентских выборов 2018 года. На федеральном и региональном уровне).

В той статье меня удивила фраза автора:

Вместо нормального или логнормального распределения мы видим интересную кривую, с очень странными пиками на круглых значениях (70%, 75%, 80% и т.д.), возрастающую на около-100% явке и уходящей далеко вверх на 100%.

Сразу возникают вопросы:
Почему автор считает, что вместо «странных» пиков должно быть нормальное или логнормальное распределение?
Почему вообще пики считаются «странными»?
Откуда могут появиться «естественные» пики на круглых значениях?

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

А в качестве бонуса, в конце статьи будет выложен ключ к решению загадки «круглых чисел» на графике выборов 2018.

Читать полностью »

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

Вопросы блокировки сайтов рассматривались Европейским Судом в нескольких делах. Большинство дел касается блокировок в Турции, хотя в последнее время стали появляться жалобы против России.

В целом подход Суде следующий. Читать полностью »

Оптимальная игра в 2048 с помощью марковского процесса принятия решений - 1

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

В этом посте мы используем математический аппарат под названием «марковский процесс принятия решений» для нахождения доказуемо оптимальных стратегий игры 2048 для полей размером 2x2 и 3x3, а также на доске 4x4 вплоть до тайла 64. Например, вот оптимальный игрок в игру 2x2 до тайла 32:

GIF

Оптимальная игра в 2048 с помощью марковского процесса принятия решений - 2

Случайное начальное число (random seed) определяет случайную последовательность тайлов, добавляемых игрой на поле. «Стратегия» игрока задаётся таблицей, называемой алгоритмом (policy). Она сообщает нам, в каком направлении нужно сдвигать тайлы в любой возможной конфигурации поля. В этом посте мы рассмотрим способ создания алгоритма, оптимального в том смысле, что он максимизирует шансы игрока на получение тайла 32.

Оказывается, что в игре 2x2 до тайла 32 очень сложно выиграть — даже если играть оптимально, игрок выигрывает только примерно в 8% случаев, то есть игра оказывается не особо интересной. Качественно игры 2x2 сильно отличаются от игр 4x4, но они всё равно полезны для знакомства с основными принципами.

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

Однако мы можем найти оптимальный алгоритм для укороченной игры 4x4 до тайла 64, и, к счастью, мы увидим, что оптимальная игра на полях 3x3 качественно выглядит похожей на некоторые успешные стратегии полной игры.

Код (исследовательского качества), на котором основана эта статья, выложен в открытый доступ.
Читать полностью »

Следователи без ордера зашли в похоронное бюро, чтобы разблокировать телефон пальцем покойного. Закон не нарушен - 1Если во время следствия по уголовного делу следователи просят у подозреваемого или свидетеля предоставить пароль для доступа к компьютеру или разблокировки телефона, он имеет право отказать. Никто не обязан свидетельствовать против себя самого, своего супруга и близких родственников — это право закреплено в Конституции РФ (статья 51) и в Пятой поправке к Конституции США.

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

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

3 недели с Теслой - 1

После того, как моя последняя публикация про автомобиль компании Тесла набрала больше просмотров, чем любая из предыдущих, и больше, чем излияния моей души в цикле из 3х статей про создание игры для айфона, я почувствовал себя обязанным опубликовать отчет о том, как мы с семьей съездили на самой дешевой из доступных на данный момент моделей Теслы (Model 3 считаю недоступной, ибо просто прийти в салон Тесла и купить ее нельзя) на юг Франции и обратно. Общий пробег составил немногим менее 2 тыс км.

Поехали?Читать полностью »

в 18:49, , рубрики: hypothesis, pytest, python, testing tools, unit test

Добро пожаловать в Hypothesis!

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

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

Читать полностью »

Краткое руководство

Этот документ должен рассказать вам обо всем, что вам нужно, чтобы начать работу с hypothesis.

Читать полностью »

Deezer теперь создает личные плейлисты

Не отставая от конкурентов, Deezer настраивает функцию потока музыки. Последнее обновление приложения дополняет автоматический плейлист, который включает в себя композиции от артистов, связанные с тем, что вы слушаете. Об этом сообщает сам сервис.

Поток будет иметь ежедневные рекомендации в дополнение к жанровым станциям, и, как и следовало ожидать, вы можете выбрать песню и добавлять ее в новый или существующий список воспроизведения.

Читать полностью »

Бот для ВКонтакте. Где-то недели 3-4 назад я решился написать своего бота для ВКонтакте. Это была старая-престарая моя мечта. Естественно, язык программирования для бота выбрал Python3.

image
Читать полностью »