Pull to refresh
11
0
Николай Петровский @nickpetrovsky

User

Send message

Свой VPN с поддержкой IPv6 на базе Wireguard

Level of difficultyMedium
Reading time8 min
Views15K

Иногда возникает необходимость получить доступ к сайтам, например, https://refactoring.guru или https://leafletjs.com, но по каким-то причинам эти сайты заблокирован в вашей стране. Выходом может стать VPN. Однако покупать VPN где-то на стороне при наличии собственного VPS сервера, где интернет работает нормально, просто лишняя трата денег. В таком случае возникает вопрос: а как, собственно, организовать этот самый VPN? В интернете есть множество инструкций, но они обычно не затрагивают тему протокола IPv6 или затрагивают, но там используются спорные решения.

Одним из популярных вариантов организации VPN является Wireguard. Сам по себе, Wireguard, довольно прост, но при этом его можно использовать в любых схемах: «точка-точка», «звезда» и даже mesh-сеть. В дальнейшем будет использоваться схема «звезда», которая подразумевает использование отдельного сервера и наличие, минимум, одного или нескольких клиентов.

Читать далее
Total votes 10: ↑9 and ↓1+8
Comments30

Как развитие алгоритмов сжатия остановилось 20 лет назад, или о новом конкурсе на 200 тысяч евро

Reading time18 min
Views70K

В октябре прошлого года я опубликовал статью «О талантах, деньгах и алгоритмах сжатия данных», где с юмором описал, как «изобретают» новые алгоритмы сжатия люди, не имеющие достаточно навыков для реализации своих идей. А заодно рассказал про существующие конкурсы по новым алгоритмам, в том числе двигавшийся тогда к завершению конкурс алгоритмов сжатия с призовым фондом 50 тысяч евро.

Пост набрал 206 «плюсов», вышел на 2 место топа недели и вызвал оживленную дискуссию, в которой мне больше всего понравился комментарий: «Коммерческого интереса эффективность по сжатию алгоритмов сжатия без потерь сегодня не представляет, в силу отсутствия принципиально более эффективных алгоритмов. Деньги сегодня — в сжатии аудио-видео. И там и алгоритмы другие. Тема сжатия без потерь удобна именно лёгкостью верификации алгоритма, и не слегка устарела. Лет на 20.» 

Поскольку я сам уже 20 лет в области сжатия видео, с ее бурным развитием мне спорить сложно. А вот что сжатие без потерь развиваться перестало… Хотя логика тут понятна каждому. Я до сих пор пользуюсь ZIP, все мои друзья пользуются ZIP с 1989 года — значит, ничего нового не появляется. Так ведь? Похоже рассуждают сторонники плоской земли. ))) Я не видел, знакомые не видели, и даже некоторые авторитеты утверждают, значит, это так! 

О том, как Intel просили меня не прекращать читать курс по сжатию, ибо людей нет новые алгоритмы делать, я в прошлый раз писал. Но тут и Huawei в ту же дуду дует! Вместо того, чтобы раздать призы и должности победителям, а затем успокоиться, поскольку развитие давно встало, эти эксцентричные люди посчитали конкурс крайне успешным и запустили новый с призовым фондом 200 тысяч EUR.

Развивались ли алгоритмы сжатия без потерь в последние 20 лет? Чем закончился прошлый конкурс и на сколько опередили baseline? Сколько денег получили русские таланты, а сколько зарубежные? И есть ли вообще жизнь на Марсе в сжатии без потерь? 

Кому интересно — добро пожаловать под кат! 
Читать дальше →
Total votes 259: ↑258 and ↓1+257
Comments134

Разбираем RF-backscatter на коленке

Reading time8 min
Views3.2K
Являясь крупнейшим русскоязычным агрегатором различных статей технического характера, Хабр как-то не добирает «массы» в области разработки цифровой электроники — ПЛИС/FPGA, ASIC, HDL в целом. Хотя пласт технологий в данном случае просто огромный, и я бы сказал, что требуемые знания здесь — это настоящая full-stack разработка: схемотехника, электроника, топология, цифровая логика, синтез и цифровая трассировка, прототипирование в ПЛИС, затем — схемотехника тестовых плат, а если это что-то сложнее простого регистрового управления аналоговым трактом, то еще и низкоуровневое программирование, да и без написания прикладных приложений для управления всем этим тоже по итогу не обходится.

Говорят, критикуя — предлагай, поэтому вниманию читателей предоставляется небольшой экскурс в один из рабочих проектов, а именно — оцифровка и декодирование данных в сфере пассивных RFID-HF устройств.
Читать дальше →
Total votes 26: ↑26 and ↓0+26
Comments4

Быстрая регистрация особых точек изображений с помощью голосования биграфа

Reading time2 min
Views7.6K
Детектирование и регистрация особенностей изображений имеет много приложений в робототехнике, видео компрессии и т.д. Быстрая и аккуратная регистрация — пока недостижимая мечта многих программистов и пользователей. Она или быстрая, или аккуратная…
Читать дальше →
Total votes 28: ↑28 and ↓0+28
Comments8

Многоядерный DSP TMS320C6678. Операционные ядра: вычислительные ресурсы процессора

Reading time7 min
Views4.8K
Продолжаем рассматривать устройство многоядерного DSP TMS320C6678. Данная статья посвящена устройству операционных ядер процессора. Архитектура ядер описывается кратко с акцентом на сравнении платформы С66х с более ранними хорошо известными моделями С6000.

Операционное ядро сигнального процессора – это основной элемент, непосредственно реализующий вычислительные действия, направленные на осуществление обработки сигнала в соответствии с алгоритмом, диктуемым заложенной в процессор программой. Многоядерные процессоры семейства TMS320C66xх содержат набор операционных ядер, что является предпосылкой соответствующего роста вычислительной производительности устройства по сравнению с одноядерными процессорами. Далее будет рассмотрено одно типовое ЦСП-ядро процессора TMS320C66хх.
Читать дальше →
Total votes 11: ↑11 and ↓0+11
Comments0

Многоядерный DSP TMS320C6678. Обзор архитектуры процессора

Reading time4 min
Views12K
Данная статья открывает серию публикаций, посвященных многоядерным цифровым сигнальным процессорам TMS320C6678. В статье дается общее представление об архитектуре процессора. Статья отражает лекционно-практический материал, предлагаемый слушателям в рамках курсов повышения квалификации по программе «Многоядерные процессоры цифровой обработки сигналов C66x фирмы Texas Instruments», проводимых в Рязанском государственном радиотехническом университете.
Читать дальше →
Total votes 5: ↑4 and ↓1+3
Comments46

Многоядерный DSP TMS320C6678. Организация памяти ядра

Reading time22 min
Views4.9K
Продолжаем серию статей, посвященных многоядерным цифровым сигнальным процессорам TMS320C6678. В данной статье будет рассмотрена подсистема памяти ядра. Архитектура памяти процессора — один из ключевых моментов, напрямую влияющих на его эффективность. Знание особенностей организации архитектуры памяти позволяет разработчику более рационально использовать ресурсы DSP. Современные процессоры имеют достаточно сложную архитектуру памяти, включающую несколько уровней и контроллеры кэш. При этом в случае DSP работа с памятью усложняется наличием свободы выбора объемов кэш-памяти на разных уровнях, а для многоядерных процессоров характерна проблема синхронизации кэш разных ядер.
Читать дальше →
Total votes 16: ↑16 and ↓0+16
Comments0

Использование TCL в разработке на FPGA

Reading time11 min
Views36K
Всем привет! Давно не писал статьи на любимую тематику и наконец-то созрел на что-то более-менее приличное и стоящее. В этой статье речь пойдет об очень интересной задаче, с которой инженер-разработчик сталкивается чуть ли не каждый день. Предлагаю вам посмотреть, каким образом можно использовать всю мощь и простоту TCL скриптов для проектирования на FPGA. В данной статье описание базируется на ПЛИС фирмы Xilinx, но это не отменяет возможностей TCL скриптов для кристаллов ПЛИС других производителей.


Интересно? Поехали…
Читать дальше →
Total votes 28: ↑26 and ↓2+24
Comments27

Детектирование и отслеживание множественных объектов в видеопотоке на FPGA

Reading time16 min
Views13K

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

Следуя целям, поставленным в первой статье, я решил реализовать алгоритм отрисовки рамки вокруг обнаруженного объекта. В процессе выполнения этой задачи, я столкнулся с вопросом: а вокруг какого именно объекта надо рисовать рамку? Объектов, попавших в кадр после фильтрации, может оказаться множество: одни из них маленькие, а другие большие. Если рисовать одну рамку вокруг всех объектов, попавших в кадр, то это делается не сложно, но результат работы такой системы вряд ли кому будет интересен.
Читать дальше →
Total votes 36: ↑36 and ↓0+36
Comments4

Приведение типов

Reading time4 min
Views203K
Будучи на конференции Qt Developer Days 2010 я узнал, что одним из самых популярных вопросов на собеседовании в разные зарубежные компании, работающие с Qt библиотекой, является вопрос о различиях в способах приведения типов в C++. Поэтому здесь я рассмотрю основные различия между static_cast, dynamic_cast, const_cast, reinterpret_cast, C-style cast, qobject_cast и qvariant_cast

Читать дальше →
Total votes 51: ↑48 and ↓3+45
Comments59

Повышаем производительность кода: сначала думаем о данных

Reading time20 min
Views62K


Занимаясь программированием рендеринга графики, мы живём в мире, в котором обязательны низкоуровневые оптимизации, чтобы добиться GPU-фреймов длиной 30 мс. Для этого мы используем различные методики и разработанные с нуля новые проходы рендеринга с повышенной производительностью (атрибуты геометрии, текстурный кеш, экспорт и так далее), GPR-сжатие, скрывание задержки (latency hiding), ROP…

В сфере повышения производительности CPU в своё время применялись разные трюки, и примечательно то, что сегодня они используются для современных видеокарт ради ускорения вычислений ALU (Низкоуровневая оптимизация для AMD GCN, Быстрый обратный квадратный корень в Quake).


Быстрый обратный квадратный корень в Quake

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

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

В статье мы рассмотрим кеширование, векторное программирование, чтение и понимание ассемблерного кода, а также написание кода, удобного для компилятора.
Читать дальше →
Total votes 141: ↑133 and ↓8+125
Comments103

Программирование многоядерных DSP-процессоров TMS320C66x с использованием OpenMP

Reading time24 min
Views18K
В статье описывается подход к программированию многоядерных сигнальных процессоров на основе OpenMP. Рассматриваются директивы OpenMP, разбирается их смысл и варианты использования. Делается акцент на цифровых сигнальных процессорах. Примеры применения директив OpenMP выбраны приближенными к задачам цифровой обработки сигналов. Реализация проводится на процессоре TMS320C6678 фирмы Texas Instruments, включающем 8 DSP-ядер. В части I статьи рассматриваются основные директивы OpenMP. Во II части статьи планируется дополнить список директив, а также рассмотреть вопросы внутренней организации работы OpenMP и вопросы оптимизации программного обеспечения.

Данная статья отражает лекционно-практический материал, предлагаемый слушателям в рамках курсов повышения квалификации по программе «Многоядерные процессоры цифровой обработки сигналов C66x фирмы Texas Instruments», проводимых ежегодно в Рязанском радиотехническом университете. Статья планировалась к публикации в одном из научно-технических журналов, но в силу специфики рассматриваемых вопросов было принято решение о накоплении материала для учебного пособия по многоядерным DSP-процессорам. А пока данный материал будет копиться, он вполне может полежать на страницах Интернета в свободном доступе. Отзывы и пожелания приветствуются.
Читать дальше →
Total votes 23: ↑23 and ↓0+23
Comments26

Компенсация погрешностей при операциях с числами с плавающей запятой

Reading time8 min
Views52K
Работа посвящена погрешностям округления, возникающим при вычислениях у чисел с плавающей запятой. Здесь будут кратко рассмотрены следующие темы: «Представление вещественных чисел», «Способы нахождения погрешностей округления у чисел с плавающей запятой» и будет приведен пример компенсации погрешностей округления.

В данной работе примеры приведены на языке програмиирования C.
Читать дальше →
Total votes 45: ↑44 and ↓1+43
Comments17

Кто ты по професии: Разница между «Programmer», «Software Engineer» и «Computer Scientist»

Reading time6 min
Views172K
Как только сегодня ни называют программистов, особенно в зарубежных СМИ. Да и у нас, в частности, при поиске работы, можно встретить абсолютно разные описания должностных обязанностей.

Меняется ли от этого суть работы? Мы в 1cloud попробовали разобраться в том, какую работу подразумевают такие специализации как «Programmer», «Software Engineer» и «Computer Scientist».

Читать дальше →
Total votes 24: ↑22 and ↓2+20
Comments71

Как решать простые задачи оптимизации на питоне с помощью cvxpy

Reading time3 min
Views16K
Всем доброго времени суток! Простым поиском я не сумел обнаружить упоминание модуля cvxpy и потому решил написать обучающий материал по нему – просто примеры кода, по которым в дальнейшем новичку будет проще использовать этот модуль для своих задач. cvxpy предназначен для решения задач оптимизации – нахождения минимумов/максимумов функций при определённых ограничениях. Если вам интересна эта тема – прошу под кат.
Читать дальше →
Total votes 24: ↑24 and ↓0+24
Comments5

learnopengl. Урок 1.6 — Текстуры

Reading time15 min
Views129K

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


Читать дальше →
Total votes 26: ↑26 and ↓0+26
Comments6

Наконец-то приличный отечественный процессор ЦОС – 1967BH28

Reading time3 min
Views48K
image

Несмотря на стремительное развитие процессоров общего назначения (ARM, x86 и более экзотических), не теряют своей актуальности специализированные процессоры цифровой обработки сигналов (ЦОС). Одним из самых популярных процессоров ЦОС с плавающей точкой в родном отечестве стал процессор ADSP-TS201S фирмы Analog Devices. В свое время (10-15 лет назад) этот процессор не знал себе равных в высокопроизводительных системах ЦОС, работающих в реальном времени. Его основные характеристики:

  • Частота процессора – 600 MГц
  • Объем внутренней памяти – 3 МБайта
  • 4 высокоскоростных порта – 600 Мбайт/сек
  • Внешняя шина – 100 МГц
  • Каналы DMA – 12 каналов

Решения на процессоре ADSP-TS201S хорошо себя зарекомендовали в широком классе аппаратуры как гражданского, так и не очень гражданского назначения. Но всему хорошему приходит сами знаете что конец.
Читать дальше →
Total votes 69: ↑63 and ↓6+57
Comments90

Советы о том, как писать на С в 2016 году

Reading time20 min
Views90K

Если бы язык С был оружием

От автора: Наброски для этой статьи появились еще в начале 2015 года, правда, до публикации материалов дело так и не дошло. Наконец, решив, что в ящике моего письменного стола от вышеупомянутого «черновика» не будет никакой пользы, представляю его вашему вниманию в исходном виде. Единственное, что изменилось в тексте – год, с 2015 на 2016.

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

Итак, статья ...


Первое правило программирования на С – не используйте его, если можно обойтись другими инструментами.

Когда найти альтернативный метод не удается, самое время вспомнить о современных заповедях программиста.
Читать дальше →
Total votes 92: ↑84 and ↓8+76
Comments80

Как перезагрузить зависшую систему

Reading time1 min
Views17K
Бывает такое, что система зависает. Или иксы не выходят из свопа, или некий процесс отъел всю память и обработчик клавиатуры не может получить управление, или придётся
Читать дальше →
Total votes 32: ↑28 and ↓4+24
Comments94

Android JNI + Intelij Idea + Gradle. Полная автоматизация процесса

Reading time4 min
Views13K
Доброго времени суток!
Данный пост является небольшим руководством, по автоматизации компиляции нативного кода в среде Intellij Idea с использованием Gradle. Gradle предоставляет достаточно большой функционал для автоамтизации сборки проектов. Но даже подключение нативных библиотек к Android проекту требует дополнительных усилий со стороны разработчика.

Предыстория


Недавно я сменил место работы и устроился работать в компанию, занимающуюся разработкой собственного мобильного программного обеспечения. Мы с моими новыми коллегами по работе решили перейти с Eclipse (на котором до этого велась вся разработка) на Intellij Idea, и в добавок с Ant на Gradle. У нас достаточно большой проект, с приличным количеством кода, в том числе с использованием нативного C и C++ кода, как самописного так и уже готовых библиотек.

Тех, кто занимается разработкой Android проектов с использованием Android NDK в среде Intellij Idea + Gradle прошу под кат.
Читать дальше →
Total votes 15: ↑13 and ↓2+11
Comments6

Information

Rating
Does not participate
Location
Минск, Минская обл., Беларусь
Date of birth
Registered
Activity