Search
Write a publication
Pull to refresh
52
0
Send message

Энтропия и WinRAR — развернутый ответ

Reading time4 min
Views33K
Несколько дней назад на Хабре была опубликована статья Энтропия и WinRAR. В ней замечены некоторые неточности, на которые хочется дать развернутый ответ.

Начну с простого — картинка «степень сжатия различных данных». Вот она:

image

Удивительно, что случайная последовательность чисел сжимается где-то до 60% от исходного объема. Я точно помню, в молодости пытался зиповать сжатое видео и картинки в jpg. Архивы получались практически такого же объема, как оригинал, а иногда и на пару процентов больше! К сожалению, автор статьи не очень подробно описал, как именно он получил свой результат. Степень сжатия его последовательности случайных чисел подозрительно похожа на отношение 10/16 = 0.625.

Я попробовал воспроизвести эксперимент своими силами. Я генерировал файл со случайными символами, а потом сжимал его тем самым winRar’ом, упомянутым в заголовке. Результат таков:
Читать дальше →

Энтропия и WinRAR

Reading time5 min
Views51K
image
Понятие энтропии используется практически во всех областях науки и техники,
от проектирования котельных до моделей человеческого сознания.
Основные определения как для термодинамики, так и для динамических систем и способы вычисления понять не сложно. Но чем дальше в лес — тем больше дров. Например, недавно выяснил (благодаря Р. Пенроуз, «Путь к реальности», стр 592-593), что для жизни на Земле важна не просто солнечная энергия, а её низкая энтропия.

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

Необыкновенный способ генерации лабиринтов

Reading time6 min
Views87K
В этой статье я расскажу об одном необычном подходе к генерации лабиринтов. Он основан на модели Амари́ нейронной активности коры головного мозга, являющейся непрерывным аналогом нейронных сетей. При определенных условиях она позволяет создавать красивые лабиринты очень сложной формы, подобные тому, что приведен на картинке.

Вас ждет много анализа и немного частных производных. Код прилагается.
Прошу под кат!

Читать дальше →

Создание LXC-контейнеров с общей файловой базой

Reading time7 min
Views28K
Применение легковесных контейнеров LXC в настоящий момент довольно ограничено главным образом по причине их «сырости». Применять их в production – удел настоящих джедаев. Под production в данном случае подразумевается непосредственное предоставление услуг клиентам.

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

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

Читать дальше →

Использование IAM ролей с Powershell утилитами AWS

Reading time1 min
Views3.6K
Привет! image

Вчера мой коллега написал статью об использование s3cmd на Windows. Более лёгкого решения вне AWS не найти. Да и привычно, не так ли?

Но вот вспомнилась мне моя статья о PowerShell утилитах от AWS, и возможность использования ролей серверов. И я понял, что внутри AWS из Windows работа с S3, да и со всеми остальными сервисами AWS крайне проста. Об IAM ролях вы можете почитать здесь.

Коротко, роль сервера даёт нам возможность автоматически получать ключи доступа к ресурсам AWS.

Итак, от изобилия ссылок, перейдём к процессу создания роли, ну и работы с ней.
Читать дальше →

Как Яндекс распознаёт музыку с микрофона

Reading time10 min
Views161K
Поиск по каталогу музыки — это задача, которую можно решать разными путями, как с точки зрения пользователя, так и технологически. Яндекс уже довольно давно научился искать и по названиям композиций, и по текстам песен. На сказанные голосом запросы про музыку мы тоже умеем отвечать в Яндекс.Поиске под iOS и Android, сегодня же речь пойдёт о поиске по аудиосигналу, а если конкретно — по записанному с микрофона фрагменту музыкального произведения. Именно такая функция встроена в мобильное приложение Яндекс.Музыки:

image

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

Использование S3cmd в Windows

Reading time2 min
Views14K

Я давно знаком с утилитой s3cmd, но всегда использовал её только под Linux системами. О том, что её можно использовать под Windows, я даже не думал.
А почему бы и нет? Она реализована на python, а значит вполне кроссплатформенна. Нужно только установить Python на Windows машину.
Читать дальше →

Генерация текстовых версий писем из HTML с помощью lynx

Reading time2 min
Views8.1K

Введение


Email-рассылки, отправляемые через Печкин, в большинстве своем содержат как html-версию письма, так и plain-text версию. Отправить рассылку без HTML-версии можно, а вот, отправив ее без plain-text, вы рискуете лишиться ряда подписчиков, почтовые клиенты которых без сожаления вырезают html-версии писем в целях безопасности. Особенно этим отличаются корпоративные аккаунты, почтовые администраторы которых заботятся о защите своих подопечных от спама и вирусов.

Ставим задачу


Итак, plain-text версия письма необходима, это факт. Но как же сложно заставить себя написать ее, если вы только что потратили кучу времени на создание html-версии своей рассылки. Очевидно, что Печкин должен снимать эту нагрузку и автоматически генерировать текстовую версию писем для наших клиентов. Но как это сделать?

Мы перепробовали многое:
  • разнообразные регулярные выражения
  • кучу разных библиотек для парсинга html


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

Как Печкин реализовал быструю конвертацию html в plain text?

Динамические Linq-запросы или приручаем деревья выражений

Reading time4 min
Views23K

Введение


Linq to Entity позволяет очень выразительно со статической проверкой типов писать сложные запросы. Но иногда надо нужно сделать запросы чуть динамичнее. Например, добавить сортировку, когда имя колонки задано строкой.
Т.е. написать что то вроде:
var query = from customer in context.Customers
    select customer;
//ошибка! не компилируется.
query = query.OrderBy("name");
var data = query.ToList();

На помощь в этом случае придет динамическое построение деревьев выражений (expression trees). Правда одних выражений будет недостаточно, потребуется динамически находить и конструировать шаблонные методы. Но и это не так сложно. Подробности ниже.
Читать дальше →

DOOM 3 BFG — обзор исходного кода: введение (часть 1 из 4)

Reading time6 min
Views74K
Часть 1: Введение.
Часть 2: Многопоточность
Часть 3: Рендеринг (Прим. пер. — в процессе перевода)
Часть 4: Doom classic — интеграция (Прим. пер. — в процессе перевода)

26 ноября 2012 ID Software выпустила исходный код Doom 3 BFG edition (всего через месяц после появления игры на прилавках магазинов). Движок idTech4, которому уже почти 10 лет, был обновлен решениями, используемыми в idTech 5 (Rage — первая игра на этом движке), и с его исходным кодом ознакомиться было очень интересно.

Я бы назвал движок «idTech4 улучшенный», т.к. по сути это idTech4, но с использованием элементов idTech5:
  • Систему управления потоками (Threading system)
  • Звуковую систему (Sound system)
  • Систему управления ресурсами (Resources system)

Подробности

«Охота на тайл» — тайлящаяся текстура за 5 минут на базе фотографии (цикл: Работа с текстурами и изображениями)

Reading time8 min
Views44K


Вступление


Чтобы уравновесить кислотно-щелочной баланс после моей предыдущей, скорей всего неудачной, с точки зрения зрительских симпатий, публикации и чтобы принести ресурсу больше пользы, чем вреда – я публикую новый туториал. В отличие от всех предыдущих уроков он будет короче и будет напоминать по длине вот эту статью. Скажу даже более, он будет ей вторить, словно подпевая вполголоса. Надеюсь нам удастся спеться и вместе мы выдадим слаженный дует. Там речь шла о блендинге тайлов – здесь же речь пойдет о самих тайлах. О создании тайлящейся текстуры на базе любой фотографии. Это базовые знания, еще базовей чем это может быть только изучение интерфейса пакета Photoshop. В случае если мой тенор будет фальшивить — гоните его долой.

Итак, главный вопрос сегодняшней ночи – как сделать качественную тайл-текстуру за 5 минут? Хороший вопрос я думаю, и на него вполне можно потратить 5-10 минут вашего времени. Возможно после этого для ваших собственных прототипов вы будете использовать оригинальные тайлы, созданные вашими руками, не тратя времени на поиск художника или текстурщика, который смог бы вам помочь. Заманчиво?

Первым делом находим удовлетворяющую вас фотографию из тех, что не имеет копирайта (как правило на полях или по центру изображения). Внимательно следите за этим, потому что игровая индустрия богата курьезными ситуациями и эта далеко не последняя из могущих произойти с вами. Хотя. Что может быть веселее забыть в пред-релизной версии текстурной даты текстуру от игры Unreal Tournament? И такое случалось. Правда я не видел на лицах людей улыбок и не слышал их радостного смеха.

Приступим. 5 минут. Все по честному. Ваш процесс обучения займет немногим больше. Вы получите из фотографии слева — тайловую текстуру справа. Уже классически все это будет подано с соусом из юмора и маленькими мини-индустриальными-историями.


Читать дальше →

AndroidLost: удалённое управление утерянным смартфоном

Reading time3 min
Views182K
Никто не застрахован от утери мобильного устройства, которое ценно не только собственной стоимостью, но и содержащейся на нём информацией.
В этой статье я опишу функционал программы, которой я пользуюсь вот уже год на двух своих устройствах на базе ОС Android.

Поводом к написанию данной статьи стал комментарий хабраюзера Kapustos в статье Сотрудники Symantec потеряли 50 мобильников. Не находили?. Он просил посоветовать софт, функционал которого схож с описанным в статье. Подробности под хабракатом.

Читать дальше →

Смешивание текстур ландшафта

Reading time3 min
Views91K


В данной статье я расскажу об алгоритме смешивания текстур, который позволяет привести внешний вид ландшафта ближе к естественному. Этот алгоритм легко может быть использован как в шейдерах 3D игр, так и в 2D играх.

Статья рассчитана на начинающих разработчиков игр.
Читать дальше →

Эластичное избыточное S3-совместимое хранилище за 15 минут

Reading time6 min
Views60K
S3 сегодня не удивишь наверное никого. Его используют и как бэкенд хранилище под веб сервисы, и как хранилище файлов в медиа индустрии, так и как архив для бэкапов.



Рассмотрим небольшой пример развертывания S3-совместимого хранилища на основе объектного хранилища Ceph
Читать дальше →

Добавление Google Apps в эмулятор Android (Intel x86 Atom System Image)

Reading time2 min
Views39K


Все разработчики под Android знают, насколько медленно работает эмулятор. В июне прошлого года Intel представила Android, который работает в режиме x86 (без эмуляции ARM). И конечно, скорость эмулятора стала потрясающая. Но в системных образах этих эмуляторов отсутствуют Google Apps (Maps, GMail, Calendar, Google Play, аккаунт Google, ...).

В этой статье мы добавим приложения от Google.
Читать дальше →

Рисунки в MS Excel при помощи Apache POI

Reading time4 min
Views19K
Некоторое время тому на хабре появилась статья о художнике, который рисует картины в MS Excel, используя его векторные возможности. Но задолго до этого я натыкался на истории о феноменальных растровых рисунках в том же экселе, идея которых базируется на пиксель-арте. Т.е. кто-то попросту уменьшает размеры ячеек и использует заливку цветом для получения своеобразной мозаики. Выглядит довольно впечатляюще, хотя до векторных рисунков по качеству, конечно, не дотягивает.

Увидев такие картины я, конечно же, усомнился в том, что кому-то хватит усидчивости для создания их в ручном режиме и решил поискать способ автоматизировать «офисное творчество». Задача оказалась несложной для реализации на языке Java при условии использования библиотеки Apache POI, предназначенной для работы с проприетарными форматами Microsoft Office. Подробности под катом.
Читать дальше →

Изображения: форматы и сжатие (1/3)

Reading time9 min
Views55K
Схематичное изображение PCX, GIF и PNG

На что при загрузке сайта расходуется больше трафика? Чаще всего это картинки, и их суммарный «вес» частенько в несколько раз больше, чем у разметки, скриптов и стилей. В файлах изображений распространенных форматов растровые данные хранятся в сжатом виде, и это значительно лучше, чем несжатый BMP. А если хочется ещё лучше? Ведь в достаточно крупных проектах каждый байт на счету (например, в TradingView, чего уж там скромничать).

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

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

Свой облачный бэкенд в одну строчку кода. Обзор BaaS платформы «Backendless»

Reading time8 min
Views49K
Привет Хабр!

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



(Осторожно: под катом много примеров простого кода. Любителям «велосипедов» читать не рекомендуется. После роста популярности данного сервиса ожидается ликвидация угрозы глобального потепления массовое сокращение депрессий от рутинных задач при написании серверной части.)
Проверим

Ресурсы, о которых должен знать каждый Android-разработчик

Reading time6 min
Views189K
Сегодня я хочу поделиться с вами моим вольным переводом статьи, написанной Сергеем Повзнером (Sergey Povzner). Сергей ведёт блог bongizmo.com и занимается разработкой туристических гидов под общим названием Citybot.

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

Статья будет полезна как новичкам, так и опытным разработчикам. Это гид по миру Android-разработки.
Читать дальше →

Псевдо 3D: Анимация вращения планет и других шароподобных объектов

Reading time2 min
Views20K
Описание небольшого трюка по анимации вращения планет или других шарообразных штуковин. На написание этой статьи меня натолкнула статья Сфера из двух треугольников (стоит почитать). А сам трюк основан на весьма простом способе создания в Photoshop псевдо-объемной картинки из плоской, который описан под катом.

микродемо


Читать дальше →

Information

Rating
Does not participate
Registered
Activity