Pull to refresh
19
0
Сергей @milex

User

Send message

Почему в WiMax и LTE используют OFDM

Reading time 18 min
Views 119K


Аббревиатура OFDM расшифровывается как Orthogonal frequency-division multiplexing. В русскоязычной литературе встречается несколько различных переводов, несущих, в принципе, один смысл: OFDM — это механизм мультиплексирования (уплотнения) посредством ортогональных поднесущих.



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





Иллюстраций: 18, символов: 27 399, строк кода: 99.



Читать дальше →
Total votes 273: ↑269 and ↓4 +265
Comments 61

Software Defined Radio — как это работает? Часть 7

Reading time 25 min
Views 16K
Привет, Хабр.

В предыдущей части про передачу в GNU Radio был задан вопрос о том, можно ли декодировать протокол LoRa (передача данных для устройств с низким энергопотреблением) с помощью SDR. Мне эта тема показалась интересной, тем более что и сам сигнал у LoRa довольно-таки необычный — так называемая Chirp Spread Spectrum modulation, или «модуляция чирпами».



Как это работает, продолжение под катом.
Читать дальше →
Total votes 43: ↑43 and ↓0 +43
Comments 32

PyBrain работаем с нейронными сетями на Python

Reading time 8 min
Views 164K

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

PyBrain — одна из лучших Python библиотек для изучения и реализации большого количества разнообразных алгоритмов связанных с нейронными сетями. Являет собой удачный пример совмещения компактного синтаксиса Python с хорошей реализацией большого набора различных алгоритмов из области машинного интеллекта.

Предназначен для:

  • Исследователей — предоставляет единообразную среду для реализации различных алгоритмов, избавляя от потребности в использовании десятков различных библиотек. Позволяет сосредоточится на самом алгоритме а не особенностях его реализации.
  • Студентов — с использованием PyBrain удобно реализовать домашнее задание, курсовой проект или вычисления в дипломной работе. Гибкость архитектуры позволяет удобно реализовывать разнообразные сложные методы, структуры и топологии.
  • Лекторов — обучение методам Machine Learning было одной из основных целей при создании библиотеки. Авторы будут рады, если результаты их труда помогут в подготовке грамотных студентов и специалистов.
  • Разработчиков — проект Open Source, поэтому новым разработчикам всегда рады.

Читать дальше →
Total votes 95: ↑92 and ↓3 +89
Comments 22

Внутренние механизмы ТСР, влияющие на скорость загрузки: часть 1

Reading time 6 min
Views 44K

Ускорение каких-либо процессов невозможно без детального представления их внутреннего устройства. Ускорение интернета невозможно без понимания (и соответствующей настройки) основополагающих протоколов — IP и TCP. Давайте разбираться с особенностями протоколов, влияющих на скорость интернета.

IP (Internet Protocol) обеспечивает маршрутизацию между хостами и адресацию. TCP (Transmission Control Protocol) обеспечивает абстракцию, в которой сеть надежно работает по ненадежному по своей сути каналу.

Протоколы TCP/IP были предложены Винтом Серфом и Бобом Каном в статье «Протокол связи для сети на основе пакетов», опубликованной в 1974 году. Исходное предложение, зарегистрированное как RFC 675, было несколько раз отредактировано и в 1981 году 4-я версия спецификации TCP/IP была опубликована как два разных RFC:

  • RFC 791 – Internet Protocol
  • RFC 793 – Transmission Control Protocol
Читать дальше →
Total votes 30: ↑26 and ↓4 +22
Comments 7

Внутренние механизмы ТСР, влияющие на скорость загрузки: часть 2

Reading time 14 min
Views 34K


В первой части мы разобрали «тройное рукопожатие» TCP и некоторые технологии — TCP Fast Open, контроль потока и перегрузкой и масштабирование окна. Во второй части узнаем, что такое TCP Slow Start, как оптимизировать скорость передачи данных и увеличить начальное окно, а также соберем все рекомендации по оптимизации TCP/IP стека воедино.
Читать дальше →
Total votes 14: ↑14 and ↓0 +14
Comments 6

Как ядро управляет памятью

Reading time 8 min
Views 44K
Ранее мы увидели как организована виртуальная память процесса. Теперь рассмотрим механизмы, благодаря которым ядро управляет памятью. Обратимся к нашей программе:

image
Читать дальше →
Total votes 41: ↑36 and ↓5 +31
Comments 6

Пишем плагин-диссектор для Wireshark

Reading time 14 min
Views 24K
imageWireshark — одна из незаменимых утилит для «прослушки» сети, при работе с сетевыми протоколами. В состав программы уже входит некое количество диссекторов1, которое помогают детально рассмотреть пакеты базовых протоколов. Но при работе над проприетарным протоколом компании Nortel я столкнулся с отсутсвием подходящего диссектора. А нужен он был как воздух. Выход был очевиден — написать свой. Что я и сделал.
Таким образом, имея небольшой опыт написания плагина «анатома» под Wireshark, я решил поделиться знаниями и опытом с сообществом. Ну и для себя записать, на случай, если в будущем понадобится.

Диссекция — лат. dissectio, от dissecare, рассекать
Читать дальше →
Total votes 74: ↑74 and ↓0 +74
Comments 18

Интерфейс JTAG? — Это очень просто

Reading time 6 min
Views 246K
Многие знакомы со словом «JTAG», но знакомство это скорее всего поверхностное. В этой статье я хочу перевести Вас на новый уровень, так сказать «во френдзону». Возможно, для многих я не открою ничего нового, но надеюсь тем, кто давно хотел ознакомиться, будет интересно почитать. Итак, от винта.
image

Запустить JTAG тестирование
Total votes 90: ↑86 and ↓4 +82
Comments 17

Pivoting или проброс портов

Reading time 3 min
Views 29K
Наткнулся на статью "SSH-туннели — пробрасываем порт" и захотелось ее дополнить.

Итак, какие еще способы тунеллирования есть:

1. Динамический доступ через SSH


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

Тут может пригодиться динамический доступ через SSH. Для его конфигурации используется опция ssh -D.

ssh -D 127:0.0.1:2222 user@remotehost

После подключения вы получите динамический socks4 прокси-сервер, слушающий на своей машине на порту 2222 и предоставляющий доступ к удаленной сети.

Как воспользоваться этим доступом? Один из вариантов — использовать proxychains.

  • Устанавливаем Proxychains:

    apt-get proxychains
    

  • Конфигурируем proxychains для использования порта 2222 (на нем слушает наш прокси). Для этого редактируем файл /etc/proxychains.conf и меняем текущую конфигурацию в разделе [ProxyList] с socks4 127.0.0.1 9050 на socks4 127.0.0.1 2222
  • Теперь мы можем использовать proxychains с (почти) любой утилитой. Например, можно запустить сканирование всей удаленной сети при помощи nmap:

    proxychains nmap -sT -sV -v -P0 адрес_подсети маска_подсети
    

Читать дальше →
Total votes 18: ↑15 and ↓3 +12
Comments 7

Взлом Equation Group: файлы создателей Stuxnet, Duqu и Flame продаются на аукционе

Reading time 2 min
Views 21K
image

Неизвестные выложили в открытый доступ часть наработок state sponsored APT группы Equation, ответственной за проведение масштабных и технологически сложных кибератак, таких как Stuxnet, Duqu, Flame, Duqu2. Основная часть похищенных в ходе взлома файлов будет продана на специализированном аукционе.
Читать дальше →
Total votes 34: ↑32 and ↓2 +30
Comments 5

PE (Portable Executable): На странных берегах

Reading time 18 min
Views 149K


Эта статья представляет из себя рассказ о том как устроены исполняемые файлы (в точку! Это именно те штуки, которые получаются после компиляции приложений с расширением .exe). После того, как написан код, подключены библиотеки, подгружены к проекту ресурсы (иконки для окон, какие-либо текстовые файлы, картинки и прочее) всё это компонуется в один единственный исполняемый файл, преимущественно с расширением .exe. Вот именно в этот омут мы и погрузимся.
*Статья находится под эгидой «для начинающих» поэтому будет изобиловать схемами и описанием важных элементов загрузки.
На палубу
Total votes 37: ↑32 and ↓5 +27
Comments 22

Хочется взять и расстрелять, или ликбез о том, почему не стоит использовать make install

Reading time 5 min
Views 169K
К написанию сей заметки меня сподвигло то, что я устал делать развёрнутые замечания на эту тему в комментариях к статьям, где в качестве части инструкции по сборке и настройке чего-либо для конкретного дистра предлагают выполнить make install.
Суть сводится к тому, что эту команду в виде «make install» или «sudo make install» использовать в современных дистрибутивах нельзя.

Но ведь авторы программ в руководствах по установке пишут, что нужно использовать эту команду, возможно, скажете вы. Да, пишут. Но это лишь означает, что они не знают, какой у вас дистрибутив, и дистрибутив ли это вообще, может, вы вступили в секту и обкурилисьчитались LFS и теперь решили под свою хтоническую систему скомпилять их творение. А make install является универсальным, хоть и зачастую неправильным способом это сделать.

Читать дальше →
Total votes 385: ↑339 and ↓46 +293
Comments 185

Как написать фильтр Блума в C ++

Reading time 3 min
Views 21K
Фильтр Блума представляет собой структуру данных, которая может эффективно определить является ли элемент возможным элементом набора или определенно не относится к нему. Эта статья продемонстрирует простую реализацию фильтра Блума в C++.

Читать полный перевод
Total votes 23: ↑22 and ↓1 +21
Comments 31

90 рекомендаций по стилю написания программ на C++

Reading time 20 min
Views 407K
От переводчика. Искал в интернете простой и легко применимый гайдлайн по написанию программ на C++. Мне понравился один из вариантов, и я решил его перевести и опубликовать. Если хабрапользователи хорошо встретят этот топик, могу перевести и другие связанные документы, а также гайдлайны по написанию кода от других компаний.

1 Введение


Настоящий документ содержит рекомендации по написанию программ на языке C++.

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

Но для появления ещё одного списка рекомендаций, помимо указанных источников, есть несколько причин. Основная причина — их излишняя обобщённость, поскольку зачастую требуется задать частные правила (в особенности правила именования). Данный документ содержит комментарии, что делает его более удобным в использовании при проведении ревизий кода, чем другие уже существующие документы. К тому же, рекомендации по программированию обычно вперемешку содержат описания проблем стиля и технических проблем, что не совсем удобно. Этот документ не содержит каких-либо технических рекомендаций по C++, делая упор на вопросах стиля.
Читать дальше →
Total votes 181: ↑137 and ↓44 +93
Comments 213

libuniset2 — библиотека для создания АСУ. Лучше один раз увидеть…Часть 1

Reading time 13 min
Views 20K
Когда-то давным-давно… Мной была написана статья «Знакомство с libuniset — библиотекой для создания АСУ», были планы по написанию продолжения, но не сложилось. С тех пор, библиотека значительно «подросла» и даже уже вышла версия 2.0, в которой появилось много новых возможностей: удалённый просмотр логов и программных переменных, поддержка различных полезных и не очень протоколов и баз, есть даже «time-machine», но об этом если до этого дойдёт…

Вообщем я собрался силами и решил, что лучше всё это «один раз увидеть» на конкретном примере.

Поэтому, кому ещё интересно, прошу.
Читать дальше →
Total votes 10: ↑10 and ↓0 +10
Comments 5

Байесовская нейронная сеть — потому что а почему бы и нет, черт возьми (часть 1)

Reading time 16 min
Views 90K
То, о чем я попытаюсь сейчас рассказать, выглядит как настоящая магия.

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

Итак, магия:


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

Читать дальше →
Total votes 83: ↑82 and ↓1 +81
Comments 64

Математика на пальцах: методы наименьших квадратов

Reading time 8 min
Views 224K

Введение




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

Но я научился говорить, что я не знаю, что такое умножение. Да, я не знаю, что такое подалгебра над алгеброй Ли. Да, я не знаю, зачем нужны в жизни квадратные уравнения. К слову, если вы уверены, что вы знаете, то нам есть над чем поговорить! Математика — это серия фокусов. Математики стараются запутать и запугать публику; там, где нет замешательства, нет репутации, нет авторитета. Да, это престижно говорить как можно более абстрактным языком, что есть по себе полная чушь.
Математика для программистов!
Total votes 125: ↑115 and ↓10 +105
Comments 398

Криптоанализ хэш-функции ГОСТ Р 34.11-2012

Reading time 19 min
Views 57K
В конце 2013 г. Технический комитет по стандартизации «Криптографическая защита информации» (ТК 26), Академия криптографии Российской Федерации и ОАО «ИнфоТеКС» объявили о проведении конкурса по криптоанализу отечественного стандарта хэширования ГОСТ Р 34.11-2012. Подробное описание условий конкурса опубликовано на сайте www.streebog.info. Таким образом, можно считать, что существующие работы по анализу данного криптостандарта стали предметом повышенного интереса криптоаналитиков, поскольку они являются отправной точкой для дальнейших исследований алгоритма ГОСТ Р 34.11-2012.
На текущий момент известно несколько работ, посвященных криптоанализу ГОСТ Р 34.11-2012. Но именно в работе Zongyue Wang, Hongbo Yu и Xiaoyun Wang «Cryptanalysis of GOST R Hash Function» предложены наиболее эффективные атаки на данный алгоритм. Поэтому, на мой взгляд, именно эта работа представляет наибольший интерес среди работ по данной теме; ее перевод я и предлагаю вашему вниманию.
В переводе сохранены авторские названия стандартов хэширования: под названием «ГОСТ» имеется в виду стандарт 1994 года ГОСТ Р 34.11-94, а «ГОСТ Р» обозначает исследуемый в работе алгоритм ГОСТ Р 34.11-2012.
Работа переведена и публикуется на русском языке с разрешения ее авторов.

Перевод здесь
Total votes 83: ↑79 and ↓4 +75
Comments 29

Как HTTPS обеспечивает безопасность соединения: что должен знать каждый Web-разработчик

Reading time 9 min
Views 356K


Как же все-таки работает HTTPS? Это вопрос, над которым я бился несколько дней в своем рабочем проекте.

Будучи Web-разработчиком, я понимал, что использование HTTPS для защиты пользовательских данных – это очень и очень хорошая идея, но у меня никогда не было кристального понимания, как HTTPS на самом деле устроен.

Как данные защищаются? Как клиент и сервер могут установить безопасное соединение, если кто-то уже прослушивает их канал? Что такое сертификат безопасности и почему я должен кому-то платить, чтобы получить его?
Читать дальше →
Total votes 173: ↑163 and ↓10 +153
Comments 56

Первые несколько миллисекунд HTTPS соединения

Reading time 10 min
Views 167K
После нескольких часов чтения обзоров, Боб с нетерпением нажал на кнопку перехода к оформлению заказа на галлон цельного молока, и…
Воу, что только что произошло?


Интересно? Прошу под кат
Total votes 242: ↑237 and ↓5 +232
Comments 36

Information

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