Pull to refresh
77
0
Дмитрий Калугин-Балашов @rvncerr

User

Send message

Строим свой Gmail с куртизанками и преферансом

Reading time7 min
Views204K

Вместо предисловия


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

Итак, в этой статье я расскажу о том, как я поднимал и настраивал на своем сервере почту, календарь, контакты, RSS-аггрегатор и, в качестве бонуса, хранилище файлов.

Читать дальше →
Total votes 155: ↑135 and ↓20+115
Comments139

Простыми словами о преобразовании Фурье

Level of difficultyMedium
Reading time14 min
Views1.1M
Я полагаю что все в общих чертах знают о существовании такого замечательного математического инструмента как преобразование Фурье. Однако в ВУЗах его почему-то преподают настолько плохо, что понимают как это преобразование работает и как им правильно следует пользоваться сравнительно немного людей. Между тем математика данного преобразования на удивление красива, проста и изящна. Я предлагаю всем желающим узнать немного больше о преобразовании Фурье и близкой ему теме того как аналоговые сигналы удается эффективно превращать для вычислительной обработки в цифровые.

image (с) xkcd

Без использования сложных формул и матлаба я постараюсь ответить на следующие вопросы:
  • FT, DTF, DTFT — в чем отличия и как совершенно разные казалось бы формулы дают столь концептуально похожие результаты?
  • Как правильно интерпретировать результаты быстрого преобразования Фурье (FFT)
  • Что делать если дан сигнал из 179 сэмплов а БПФ требует на вход последовательность по длине равную степени двойки
  • Почему при попытке получить с помощью Фурье спектр синусоиды вместо ожидаемой одиночной “палки” на графике вылезает странная загогулина и что с этим можно сделать
  • Зачем перед АЦП и после ЦАП ставят аналоговые фильтры
  • Можно ли оцифровать АЦП сигнал с частотой выше половины частоты дискретизации (школьный ответ неверен, правильный ответ — можно)
  • Как по цифровой последовательности восстанавливают исходный сигнал


Я буду исходить из предположения что читатель понимает что такое интеграл, комплексное число (а так же его модуль и аргумент), свертка функций, плюс хотя бы “на пальцах” представляет себе что такое дельта-функция Дирака. Не знаете — не беда, прочитайте вышеприведенные ссылки. Под “произведением функций” в данном тексте я везде буду понимать “поточечное умножение”

Итак, приступим?
Total votes 203: ↑192 and ↓11+181
Comments190

Доступ к Skype API используя PHP на *nix системах

Reading time4 min
Views41K
Еще давно я хотел иметь свой автоответчик или бота для скайпа, называйте как вам угодно. В гугле я ничего найти не мог, да еще из-за того, что я пользуюсь Ubuntu, задача становилась сложнее в несколько раз. А если учесть, что я знаю только PHP, и то, не очень хорошо, моя мечта становилась нереальной.

Но недавно, просматривая официальную документацию по API скайпа, я обратил внимание на «D-BUS messaging», не знаю, почему я раньше не обращал на него внимание. Разобравшись со всем, я наконец сделал то, что давно хотел! Я получил доступ к Skype API на PHP. Об этом я и хочу рассказать в своей статье.

Читать дальше →
Total votes 113: ↑98 and ↓15+83
Comments23

Как мы строили авиатренажер: бесценный опыт

Reading time10 min
Views131K
Привет всем!

Чуть менее года назад я включился в процесс строительства устройства, которое находится где-то между авиасимулятором и профессиональным авиатренажером. Это был не первый опыт — в 2009 году мы уже решали такую задачу, поэтому приступая к реализации весьма амбициозной мечты мы постарались не наступить на все возможные грабли. Тут я опишу предысторию с «первым блином», и как она повлияла на второй. Если будет интересно, напишу подробно про наш второй тренажер.

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

Осторожно, много картинок, вызывающих нервный тик у любителей авиации и инженеров.
Итак…

Читать дальше →
Total votes 134: ↑129 and ↓5+124
Comments107

Основные принципы цифровой беспроводной связи. Ликбез

Reading time8 min
Views135K

Всем привет. В этой статье я хотел бы рассказать немного об основных приемах и идеях современной цифровой беспроводной связи — на примере стандарта IEEE 802.11. В наше время очень часто люди живут на довольно высоких уровнях абстракции, плохо представляя как именно работают окружающие нас вещи. Ну что ж — попытаюсь принести в массы свет просвещения. В статье будут использоваться вещи и терминология, объясненные в этой статье. Так что людям, далеким от радиотехники рекомендуется сначала прочитать её.
DANGER: в статье присутствует матан — особо впечатлительным не нажимать на эту кнопку:
Эта кнопка
Total votes 67: ↑66 and ↓1+65
Comments36

Как узнать все платежи в системе Яндекс.Деньги?

Reading time1 min
Views69K


Безопасен ли сервис «Яндекс.Деньги»?
Да. Мы делаем всё, чтобы сервис был надежным и безопасным.

Яндекс.Деньги

Ответ на вопрос в заголовке под катом.
Читать дальше →
Total votes 234: ↑215 and ↓19+196
Comments299

Fault tolerance: как предоставлять надежный сервис в случае сбоя оборудования

Reading time7 min
Views13K
Обеспечение устойчивости к сбоям — задача нетривиальная. Для нее нет стандартного решения. Есть некие общие паттерны, компоненты. Но даже в рамках одной организации для обеспечения фолт-толерантности разных узлов применяются разные решения. Что уж говорить о сравнении подходов в разных организациях.

Кто-то оставляет проблему на «авось», кто-то вешает баннер на «пятисотку» и пытается зарабатывать на сбоях деньги. Кто-то пользуется стандартными решениями от поставщиков баз данных или сетевых устройств. А кто-то уходит в модные нынче «облака».



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

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

Читать дальше →
Total votes 67: ↑58 and ↓9+49
Comments20

Git rebase «по кнопке»

Reading time9 min
Views23K

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

В нашем случае налицо лимит по времени: релизы формируются, тестируются и выкатываются на продакшн-сервер два раза в день. При ограниченных сроках в жизненном цикле релиза процесс удаления (отката) из релизной ветки задачи, содержащей ошибку, имеет важное значение. Для её выполнения мы используем git rebase. Так как git rebase ― это полностью ручная операция, которая требует внимательности и скрупулезности и занимает продолжительное время, мы автоматизировали процесс удаления задачи из релизной ветки.
Читать дальше →
Total votes 73: ↑72 and ↓1+71
Comments13

Ноль без палочки?

Reading time15 min
Views26K
Опубликовано в журнале Хакер #171 (апрель 2013)

Со временем некоторые вредоносные программы становятся своеобразными брендами в среде киберандеграунда. Как правило, они имеют широкое распространение по сравнению с другими вредоносами и используют различные технологичные фишки. К таковым можно отнести семейства Sality, Conficker, Waledac, Zeus, TDL и множество других. Как бы ни боролись с такими угрозами антивирусные компании, как говорится — иногда они возвращаются. В логичности использования раскрученного имени злоумышленникам не откажешь. Разбирая функционал очередной «зверушки», невольно задаешь себе вопрос — а когда это все началось? И выясняется, что и ни год, и ни два назад. Об одном таком семействе и будет рассказано далее.
Читать дальше →
Total votes 55: ↑49 and ↓6+43
Comments5

Алгоритм Self-Organizing Incremental Neural Network (SOINN)

Reading time7 min
Views23K

Введение


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

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

В данной статье рассматривается алгоритм SOINN, который частично решает озвученные выше проблемы.
Читать дальше →
Total votes 32: ↑31 and ↓1+30
Comments7

Форматы электронной подписи

Reading time6 min
Views100K
Статья посвящена обзору стандартов СMS (Cryptographic Message Syntax) для подписанных сообщений.

Для чего нужен CMS


Стандарт CMS описывает структуру криптографических сообщений, включающих в себя защищенные данные вместе со сведениями, необходимыми для их корректного открытия или использования. Например, в сообщении размещаются защищенные данные, информация об алгоритме хеширования и подписи, времени подписи, сертификате открытого ключа, цепочке сертификации и т.д. Некоторые из указанных атрибутов носят опциональный характер, но приложение может само определить необходимость их наличия. У каждого алгоритма есть набор параметров, который должен быть согласован на обеих сторонах: для ГОСТ 34.10-2001, помимо открытого ключа, это модуль p, коэффициенты эллиптической кривой a и b и порядок циклической подгруппы точек эллиптической кривой q. И все это нужно каким-то образом передать адресату сообщения.
Читать дальше →
Total votes 21: ↑19 and ↓2+17
Comments8

Изучаем Tarantool + Lua

Reading time6 min
Views26K
logo
Хочу поделиться опытом изучения Tarantool. Про все преимущества и особенности самого Тарантула я писать не буду, на эту тему было много статей (например, эта, эта и эта). Этот пост рассказывает о том, как начать работать с тарантулом и про некоторые особенности и вкусности которые можно получить из коробки.
Далее
Total votes 67: ↑60 and ↓7+53
Comments13

Алгоритм генерации судоку

Reading time9 min
Views138K
sudoku250title
Доброго времени суток!

Думаю, головоломка Судоку не нуждается в представлении. Многие из нас проводят за её решением достаточно много времени. Например, когда нужно убить время в дороге или просто поворочать мозги, чтобы не сохли. На хабре есть довольно много постов о решении головоломки. Но когда человек решает с десяток, а может и сотню головоломок, то найдётся пытливый ум, который задаст себе вопрос «А как же получается таблица Судоку, имеющая единственное решение? И как можно описать алгоритм для сетки 9x9?».

Приведённый алгоритм является вполне логичным. Но моей задачей было описание и реализация. Обо всём этом написано под катом.

Читать дальше →
Total votes 60: ↑54 and ↓6+48
Comments23

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

Reading time12 min
Views105K
Сонары используются для обнаружения и исследования подводных объектов, в то время как похожие устройства, называемые радары — для исследования надводных, наземных, воздушных и космических объектов. Многое из того, что сказано ниже про сонары, справедливо и для радаров, либо имеет очевидные сходства.

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

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

IMAP на boost::asio

Reading time7 min
Views11K
Изначально в нашем IMAP-сервере использовался epoll-реактор собственной разработки. Как всегда, в процессе эксплуатации и роста нагрузки потихоньку набегают замечания, в результате чего со временем начинает накапливаться технический долг и замедляться разработка.

В нашем случае были также изначальные архитектурные замечания.

  • Поток, обслуживающий реактор, никак не контролировался и при поступлении контрольных сигналов мог произойти race-condition. С другой стороны, останавливать или замедлять этот поток нельзя, поэтому возможные пути обхода выглядели неприемлемыми.
  • Реактор не умел работать в full-duplex режиме. Это ограничивало его использование только интерактивными протоколами, каким является IMAP. Однако между серверами мы часто используем протокол IProto, который подразумевает full-duplex связь.


Лирическое отступление про IProto: протокол очень простой: заголовок из трёх полей типа uint32_t: команда, номер пакета, длина данных. За счет поля «номер пакета» сервер может отвечать на запросы в любом порядке, а клиент может ждать ответа в асинхронном стиле и слать следующий запрос. В Mail.Ru Group он используется повсеместно — начиная с нашей Tarantool, и заканчивая сервисом антибрутфорса.

Поэтому было решено сделать тестовую версию, используя boost::asio. В этом посте я расскажу о переезде на реактор boost::asio, о его преимуществах и о подводных камнях, с которыми мы столкнулись.

Читать дальше →
Total votes 66: ↑64 and ↓2+62
Comments9

Измеряем качество поиска в Почте

Reading time4 min
Views5K
В январе в этом посте я рассказывал о полнотекстовом поиске в Почте Mail.Ru.

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

Для начала рассмотрим общую схему исполнения поискового запроса.

image

Основной параметр качества поиска – это его скорость. Ее удобнее всего измерять на стороне фронтенда примерно вот таким образом:

$mailsearch_start = Time::HiRes::time();
$answer = MailSearch::Query($request);
$mailsearch_end = Time::HiRes::time();
Читать дальше →
Total votes 57: ↑47 and ↓10+37
Comments13

Релиз SDL 2.0

Reading time2 min
Views27K
imageПосле нескольких лет разработки наконец-то состоялся релиз библиотеки SDL 2.0.0. Слухи о разработке второй версии SDL шли уже давно, но обширный список нововведений отчасти объясняет столь долгую разработку.

Библиотека SDL предоставляет такие средства, как быстрый вывод 2D-графики, обработку ввода, проигрывание звука, вывод 3D через OpenGL и другие операции, причем делает это кросплатформенно. Список платформ обширный: Linux, Windows, Windows CE, BeOS, Mac OS X, FreeBSD, NetBSD, OpenBSD, BSD/OS, Solaris, IRIX и QNX — и вдобавок есть неофициальные порты на другие системы.

Сама библиотека написана на C и поддерживает C++, однако есть биндинги к большинству популярных языков. Автор libsdl был нанят компанией Valve, программные продукты которой активно используют библиотеку. К тому же, теперь библиотека выходит под лицензией zlib, а не LGPLv2, как было раньше, и SDL 2.0 можно использовать в любых своих приложениях — хотя вполне возможно, что сделано это было для того, чтобы Valve смогла включить ее в Steam для Linux.
Читать дальше →
Total votes 57: ↑56 and ↓1+55
Comments23

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

Reading time5 min
Views202K
Как показывает мировая практика успешно проведённых взломов (успешно для атакующих, разумеется), большая часть проблем связана именно с проблемами с людьми. Если быть более точным — дело в их способности выдать любую информацию и совершать совершенно дурацкие действия.

Думаю, IT-примеры вам и так прекрасно знакомы, поэтому напомню пример из книги «Психология влияния»: психологи обзванивали медсестёр в больницах, а затем представлялись врачом и отдавали распоряжение ввести смертельную дозу вещества пациенту. Сестра знала, что делает, но в 95% случаев выполняла команду (её останавливали на входе в палату ассистенты психолога). При этом врач даже не был хоть как-то авторизован. Почему сестра так делала? Просто потому, что она привыкла слушаться авторитета.

Давайте ещё раз: в примере благодаря грамотной социальной инженерии 95% больниц оказались критически уязвимы.
Читать дальше →
Total votes 124: ↑117 and ↓7+110
Comments82

Договор на разработку сайта: так, а не иначе

Reading time29 min
Views152K
Присылает нам заказчик (Газпром) свою версию договора.
Понимаем — нашу они не подпишут,
вносим реквизиты и отправляем обратно.
Пропадают на две недели… возвращают протокол разногласий к договору.


Последняя неделя выдалась жаркой на переговоры с юристами заказчиков. Проекты я не веду, но так уж получилось, что все договора проходят через меня. Соответственно, я участвую в их согласовании.
Читать дальше →
Total votes 135: ↑129 and ↓6+123
Comments78

Настоящий многопоточный веб-сервер на ассемблере под Linux

Reading time7 min
Views74K
Добрый день, хабр!
Сегодня я вам расскажу как написать свой настоящий веб-сервер на асме.

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

Уже только ленивый не писал подобных статей, — сервер на perl, node.js, по-моему даже были попытки на php.

Вот только на ассемблере еще не было, — значит нужно заполнить пробелы.
Читать дальше →
Total votes 195: ↑183 and ↓12+171
Comments91

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Works in
Date of birth
Registered
Activity