Как стать автором
Обновить
0
0

Пользователь

Отправить сообщение

Вычисление N-го знака числа Пи без вычисления предыдущих

Время на прочтение4 мин
Количество просмотров134K
С недавних пор существует элегантная формула для вычисления числа Пи, которую в 1995 году впервые опубликовали Дэвид Бэйли, Питер Борвайн и Саймон Плафф:
image

Казалось бы: что в ней особенного — формул для вычисления Пи великое множество: от школьного метода Монте-Карло до труднопостижимого интеграла Пуассона и формулы Франсуа Виета из позднего Средневековья. Но именно на эту формулу стоит обратить особое внимание — она позволяет вычислить n-й знак числа пи без нахождения предыдущих. За информацией о том, как это работает, а также за готовым кодом на языке C, вычисляющим 1 000 000-й знак, прошу под хабракат.
Читать дальше →
Всего голосов 118: ↑111 и ↓7+104
Комментарии95

Про автоматизацию подбора аккордов

Время на прочтение17 мин
Количество просмотров59K
Меня давно занимал вопрос: «а что, если попробовать прогнать цифровую запись песни через преобразование Фурье, посмотреть зависимость спектра от времени и попытаться вытащить из полученной информации аккорды песни?». Вот, наконец, нашел время попробовать…
Читать дальше →
Всего голосов 137: ↑135 и ↓2+133
Комментарии42

Стеганография в .NET приложениях или водяные знаки

Время на прочтение7 мин
Количество просмотров15K
enigma
Представьте, что Ваше приложение нагло крадут и выкладывают в сеть. И никак не понять, кто из честнейших клиентов допускает утечку. Выход ясен: достаточно просто выдавать клиентам приложения с различными версиями и по версии определять утечку.

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

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

Самый лучший Watermark


Прекрасный способ внедрения Watermark в приложение – это пофантазировать и придумать место, где никакой хакер Вашу вотермарку искать не будет: просто побоится потонуть в тоннах кода и забросит это дело. Если Вы разрабатываете визуальное приложение, то ничего не мешает менять цвет пикселя спрятанного в углу какой-нибудь кнопки в Богом забытом диалоговом окне. Цвет пикселя и будет вотермаркой. К сожалению такой случай не всегда приемлем и разработчикам удобнее воспользоваться каким-нибудь универсальным решением для внедрения вотермарки в уже скомпилированное приложение. Традиционно такую функцию встраивают в обфускаторы.
Читать дальше →
Всего голосов 33: ↑26 и ↓7+19
Комментарии24

Создаем резюме на LaTeX — как и зачем?

Время на прочтение5 мин
Количество просмотров91K
Многие документы я подготавливаю в LaTeX, а не в Word. И к моменту, когда я определяюсь со следующим местом работы, я подвожу итоги сделанного, и, уж чтобы не пропадало, фиксирую их в документах, составляющих каркас моего CV. По моему личному убеждению, тщательность в создании документов для будущего работодателя нужна не столько для коммуникаций с «эйчарами», сколько для осмысления дороги, по которой идешь, и направления, в котором решаешь двигаться дальше. Итак, почему я для резюме выбрал LaTeX?

Читать дальше →
Всего голосов 125: ↑99 и ↓26+73
Комментарии71

Эллиптическая криптография: практика

Время на прочтение10 мин
Количество просмотров72K
image
Привет, %username%!

Пару недель назад я опубликовал пост Эллиптическая криптография: теория, в котором постарался описать основные аспекты использования эллиптических кривых в криптографии. Тот мой пост носил исключительно ознакомительный характер, и не предусматривал никакой иной работы с компилятором, кроме созерцательной. Но что за теория без практики? С целью исправить это упущение я, собравшись с духом, ринулся в бой с ГОСТ-ом 34.10-2012, схемой ЭЦП на эллиптических кривых. Если вам интересно посмотреть что из всего этого получилось, тогда добро пожаловать под кат.
Читать дальше →
Всего голосов 40: ↑40 и ↓0+40
Комментарии13

Контест «Пятница, 13-ое, День Программиста»

Время на прочтение1 мин
Количество просмотров8.8K
Позвольте предложить еще один способ отметить наш профессиональный праздник — поучаствовать в одноименном контесте, который состоится 13 сентября в 19:30 по московскому времени.

Этот контест — очередной из серии Surprise/Unknown Language Round-ов. В таких раундах участники решают задачи только на одном языке программирования, который недоступен в обычных раундах и неизвестен большинству спортивных программистов. Язык объявляется в начале контеста, после чего за два часа нужно его освоить и применить к задачам (относительно простым и не требующим продвинутых алгоритмов). В прошлых раундах фигурировали Tcl, Io, Pike, Befunge, COBOL, Factor и Roco. Я надеюсь, что язык этого раунда станет таким же сюрпризом, каким были все предыдущие.

Правила и обсуждение
Всего голосов 28: ↑20 и ↓8+12
Комментарии7

Коктейли ко дню программиста

Время на прочтение5 мин
Количество просмотров188K
Здравствуй, Хабр!

Осталось несколько дней до дня программиста и, конечно, в эту 13-ю пятницу, многие из пользователей хабра буду отмечать этот праздник. Буду отмечать и я.

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

Все началось вот с чего: моя супруга увлекается кулинарией и ведет небольшой кулинарный блог. В прошлом году на мой день рождения она пригласила к нам в гости на кухню настоящего бармена из барного startup-проекта БАРаДОМа.нет. С момента знакомства с Артёмом (барменом который превратил мой день рождения в домашнюю барную вечеринку), у меня появилась идея: найти рецепты (или придумать самим) коктейлей, которые бы вписались в IT-тематику.

Итогом нескольких дней активной переписки с Артёмом стала вот такая небольшая коктейльная карта:

  • Ruby
  • Python
  • Суровый Perl
  • JMP (aka Assembler)
  • Profit!
  • Epic fail
  • Memory leak


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

Чин-чин!
Всего голосов 240: ↑217 и ↓23+194
Комментарии109

Южный полюс Марса: фото высокого разрешения

Время на прочтение1 мин
Количество просмотров30K
image

И еще одна небольшая заметка, связанная с космосом, на сегодня :) Дело в том, что Европейское Космическое агентство выложило в Сеть фото Южного Полюса Марса в высоком разрешении. Фотография была получена из отдельных кадров, при этом использовалась сьемка в инфракрасных, голубых и зеленых лучах.

Читать дальше →
Всего голосов 48: ↑41 и ↓7+34
Комментарии34

История развития связи. Почта

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



Со временем менялись средства и формы связи — те, кто поумней, чуть позже придумали письменность и стали передавать информацию в письменном виде. С тех пор информация стала передаваться в более долгоиграющем виде и особенно интенсивно, а первую её пересылку можно смело считать днём рождения почты.
Читать дальше →
Всего голосов 45: ↑41 и ↓4+37
Комментарии32

Недокументированные возможности недокументированных возможностей: Передача ref в другой поток

Время на прочтение5 мин
Количество просмотров12K
Никогда не приходил в голову вопрос: "а как сохранить/передать в другой поток ссылку на поле?"? Логичным предположением будет «передам ref в метод и сохраню. Стоп, oh shi~». Да, ref не сохраняются (а ещё, нельзя использовать на них замыкания, так что создать функцию внутри такого метода и создать из её поток тоже не получится). Но зато можно превратить ref в TypedReference с помощью недокументированного ключевого слова __makeref. Увы, TypedReference нельзя напрямую сохранить в поле и не наследует от System.Object, так что каст привычными методами тоже невозможен (да и вообще на их использование наложена целая куча ограничений). Казалось бы, тупик. Но это ещё не всё — есть ещё RuntimeArgumentHandle, который обладает свойствами TypedReference, за одним исключением — после хитрого каста в System.Object его ещё можно использовать до тех пор, пока жив кадр стека, в котором он был создан. Об этом этот пост.
Читать дальше →
Всего голосов 47: ↑41 и ↓6+35
Комментарии12

Принципы работы сонаров и подводная акустика: как, зачем и почему

Время на прочтение12 мин
Количество просмотров105K
Сонары используются для обнаружения и исследования подводных объектов, в то время как похожие устройства, называемые радары — для исследования надводных, наземных, воздушных и космических объектов. Многое из того, что сказано ниже про сонары, справедливо и для радаров, либо имеет очевидные сходства.

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

Задолго до того, как Шелдон поможет разобраться с эффектом Доплера, мы погружаемся под воду, чтобы начать знакомство с тем, как происходит и от чего зависит распространение звуковых волн в водной среде.
Осторожно: знания!
Всего голосов 66: ↑62 и ↓4+58
Комментарии19

Mailpile собрал $120K на разработку open source криптопочты

Время на прочтение1 мин
Количество просмотров20K
За две недели до окончания срока cбора средств на краудфандинговом сайте Indiegogo разработчики почтового веб-сервера Mailpile собрали необходимые $100 тыс. на его создание, и даже больше: на данный момент собрано $120 631.

Суть проекта заключается в создании почтового open source веб-сервера, которое работает на личных компьютерах пользователей и абсолютно защищено от внешней прослушки с помощью стойкой криптографии c поддержкой OpenPGP. Оно создано для пользователей, которые хотят избавиться от проблем, связанных с использованием Gmail, Hotmail и прочих прослушиваемых сервисов. Людям нужно встроенное шифрование, отсутствие рекламы, скорость работы, собственный хостинг, но при этом они хотят сохранить удобство интерфейса, полнотекстовый поиск, теги, аттачменты и другие привычные функции.

Такая простая концепция вызвала живой отклик у сообщества, и оно довольно быстро профинансировало разработку проекта. Теперь дело за реализацией.
Читать дальше →
Всего голосов 56: ↑53 и ↓3+50
Комментарии23

Представление чисел суммой двух квадратов и эллиптические кривые

Время на прочтение10 мин
Количество просмотров44K
Пусть p — нечётное простое число. Довольно широко известно, что p представимо в виде суммы двух квадратов целых чисел p=a2+b2 тогда и только тогда, когда p при делении на 4 даёт остаток 1: 5=12+22, 13=32+22, 17=12+42, ...; 3, 7, 11,… непредставимы. Куда менее известно, что a и b можно записать красивой формулой, имеющей непосредственное отношение к одной эллиптической кривой. Об этом результате 1907 года за авторством немца по фамилии Jacobsthal и о связанных вещах мы сегодня и поговорим.

Совсем легко понять, почему 3, 7, 11 и прочие числа, дающие при делении на 4 остаток 3, непредставимы в виде a2+b2: квадрат чётного числа всегда делится на 4, квадрат нечётного числа всегда даёт остаток 1 при делении на 4, сумма двух квадратов при делении на 4 может давать остатки 0, 1 или 2, но никак не 3. Представимость простых чисел вида 4k+1 неочевидна (особенно если заметить, что простота существенна: число 21 хотя и имеет нужный остаток, но суммой двух квадратов не представляется).

Читать дальше →
Всего голосов 51: ↑45 и ↓6+39
Комментарии18

Ещё немного автоматической генерации музыки

Время на прочтение3 мин
Количество просмотров26K

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

Итак, мы хотим написать нечто достаточно музыкальное.
С чего начать?
Всего голосов 37: ↑35 и ↓2+33
Комментарии42

Работа с цветом: полезные инструменты, книги, статьи для веб-дизайнеров

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

Инструменты




Colour Lovers — старый и функциональный инструмент для подбора цветовых схем. Аналоги — Colourcode, Color Scheme Designer и конечно Kuler. Подобных сайтов великое множество, но эти, на мой взгляд, самые удобные.
Читать дальше →
Всего голосов 67: ↑66 и ↓1+65
Комментарии8

Архив Рекурсивный.7z: какой-то файл и архив Рекурсивный.7z

Время на прочтение8 мин
Количество просмотров34K
Формат архивов 7-Zip довольно гибкий и позволяет, например, включать весь архив как один из файлов внутри самого архива, лишь немного считерив. Разберём формат на примере: создадим почти вручную архив с именем «Рекурсивный.7z», содержащий два файла: «Какой-то файл.txt» с содержимым «Hello, Habrahabr!» и «Рекурсивный.7z», копию самого себя.

Краткая документация по формату входит в LZMA SDK. Архив начинается со следующей структуры размером 32 байта. Все позиции внутри архива кодируются как смещения относительно конца этой структуры.
сигнатура, 6 байт: { '7', 'z', 0xBC, 0xAF, 0x27, 0x1C };
версия формата, два байта { Major, Minor }, 7-Zip 9.20 пишет сюда { 0, 3 };
CRC следующих трёх полей, 4 байта;
смещение основного заголовка относительно конца этой структуры, 8 байт;
размер основного заголовка, 8 байт;
CRC основного заголовка, 4 байта.

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

Основной заголовок может быть сам по себе упакован (а также зашифрован). Поскольку он содержит структурированные данные (типа имён файлов), коэффициент сжатия достаточно неплохой. Именно для возможности подобного сжатия вся информация о файлах в 7z собрана в одном заголовке и полностью отделена от сжатых данных файлов. Признак упакованности — первый байт основного заголовка: он должен быть равен 1 у неупакованного заголовка и 0x17 у упакованного. Для создания архива вручную мы не будем ничего сжимать.

Читать дальше →
Всего голосов 95: ↑91 и ↓4+87
Комментарии22

Вероятностные модели: искусство расставлять скобки

Время на прочтение5 мин
Количество просмотров26K
После большого перерыва продолжаем цикл о графических вероятностных моделях (часть 1, часть 2). Сегодня мы наконец-то от постановок задач перейдём к алгоритмам; поговорим мы о самом простом, но часто полезном алгоритме вывода на фактор-графах – алгоритме передачи сообщений. Или, как его ещё можно назвать, алгоритме правильной расстановки скобок.


by sergey-lesiuk
Читать дальше →
Всего голосов 51: ↑48 и ↓3+45
Комментарии2

Делаем качественный переплёт для любимой книги

Время на прочтение7 мин
Количество просмотров206K

Вступление


Приветствую всех.

Люди любят читать. Но не все, и не всё. А то, что любят, не всегда можно найти в магазинах. А если и можно найти, то не всегда это по карману. Из этого следует один элементарный факт: что-то с этим надо делать. Конечно, можно читать с экрана монитора/ноутбука/телефона. Или распечатать и читать в разрозненных, пусть и упорядоченных, листочках. Кроме того (это более затратный вариант, но для любителя чтения он лучше), можно купить специализированную читалку на электронных чернилах. Да, она решает проблему, но… Спустя какое-то время начинаешь скучать по весу настоящей книги, по шелесту перелистывания бумажных страниц, и по кипе других подобных маловажных, но таких приятных сердцу мелочей.
И из этой неприятности тоже есть свой выход. Просто-напросто надо самому сделать нужную книгу.
Осторожно, под катом очень много фотографий.
Читать дальше →
Всего голосов 310: ↑294 и ↓16+278
Комментарии157

Делаем твёрдый переплёт для любимых книжек

Время на прочтение6 мин
Количество просмотров531K
Небольшое вступление

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

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

Большое вступление

Некоторое время назад мне захотелось прочитать цикл Дугласа Адамса «Автостопом по галактике». Я попробовал почитать несколько переводов и не один меня не устроил. Поэтому было принято решение — читать на английском! Найти эти книги в оригинале в наших книжных магазинах довольно сложно. А если и есть, то только первая часть цикла. В электронном виде найти несколько проще. Но я предпочитаю читать с бумаги (читалку на E-ink куплю обязательно — очень нравятся), поэтому книги я распечатываю.

Первые две книги выглядели так:
image

Я их прочитал с огромным удовольствием, но выглядели они не очень хорошо. И я решил, что «Life, the Universe, and Everything» нужно делать книжкой.

Процесс с картинками и комментариями под катом. Осторожно, действительно много картинок.
Читать дальше →
Всего голосов 348: ↑337 и ↓11+326
Комментарии142

19 команд ffmpeg для любых нужд

Время на прочтение3 мин
Количество просмотров570K
От переводчика:
Многие знают, что ffmpeg — это сила, но не все знают, какая именно. Он многогранен и безграничен, а его man объёмен и местами малопонятен, лишь немногие постигли дао профессиональной работы с ним. И тем не менее, этот инструмент может быть полезен почти всем, кто хоть иногда работает с видео и звуком, даже на бытовом уровне. О некоторых полезных консольных командах ffmpeg и пойдёт речь в статье. В некоторых местах я взял на себя смелость вставить ссылки на поясняющие статьи.


ffmpeg — это кроссплатформенная open-source библиотека для обработки видео- и аудиофайлов. Я собрал 19 полезных и удивительных команд, покрывающих почти все нужды: конвертация видео, извлечение звуковой дорожки, конвертирование для iPod или PSP, и многое другое.

1. Получение информации о видеофайле

ffmpeg -i video.avi

2. Превратить набор картинок в видео

ffmpeg -f image2 -i image%d.jpg video.mpg

Эта команда преобразует все картинки из текущей директории (названные image1.jpg, image2.jpg и т.д.) в видеофайл video.mpg

(примечание переводчика: мне больше нравится такой формат:
ffmpeg -r 12 -y -i "image_%010d.png" output.mpg

здесь задаётся frame rate (12) для видео, формат «image_%010d.png» означает, что картинки будут искаться в виде image_0000000001.png, image_0000000002.png и тд, то есть, в формате printf)
Читать дальше →
Всего голосов 222: ↑214 и ↓8+206
Комментарии107

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность