• IEEE 1588 Precision Time Protocol (PTP)

    Много статей написано про всем известный Network Time Protocol (NTP), в некоторых из них упоминается про Precision Time Protocol, который якобы позволяет добиться точности синхронизации времени порядка наносекунд (например, тут и тут). Давайте разберемся, что этот протокол собой представляет и как достигается такая точность. А также посмотрим результаты моей работы с данным протоколом.
    Подробности
    • +36
    • 70,2k
    • 7
  • Как устроен Apple Lightning

    • Перевод


    Это моя маленькая статья с описанием (почти) всего, что я знаю об интерфейсе Apple Lightning и связанных с ним технологиях: Tristar, Hydra, HiFive, SDQ, IDBUS и др. Но сначала маленькое предупреждение…

    Читайте эту статью на свой страх и риск! Информация основана на большом количестве внутренних материалов AppleInternal (утечка данных, схем, исходных кодов), которые я прочёл по диагонали. И, конечно, на моих собственных исследованиях. Должен предупредить, что я никогда раньше не проводил подобных исследований. Таким образом, эта статья может использовать неправильные или просто странные термины и оказаться частично или полностью неправильной!
    Читать дальше →
  • Как мы выбирали сервис для электронного документооборота с заказчиками

    Хабровчане, делюсь исследованием. В марте искали лучшего оператора электронного документооборота. Ну, как лучшего. Выбирали того, чей сервис больше подходит именно нашей компании. За неделю пришлось изучить 7 наиболее известных – сравнили их по параметрам: от возможностей интеграции с 1С до качества техподдержки. Но обо всём по порядку…


    image
    Читать дальше →
  • Поиск работы за границей и иммиграция в Канаду

      Всем привет!


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


      TL;DR: Сейчас я живу в городе Виктория, на острове Ванкувер. Это Канада, Британская Колумбия. Свою мечту жить у океана я реализовал, но это заняло 5 лет, и сначала были совершенно другие планы. Более подробно ниже. Ниже картинка моих рабочих мест за последние 10 лет.



      Меня всегда тянуло уехать куда-нибудь. Поначалу было все равно, я хотел лишь находиться в новом для себя месте, желательно не России. Это совершенно не связано с политическим климатом или еще чем-то. Я родился и учился в Москве, и Москва это офигенный город. С карьерой более-менее все хорошо было.


      В студенческие годы мой отец, подсунул мне ссылку на world4u — это волонтерская организация по обмену. В 2007, 2008, 2009 я посетил Германию, Францию и Италию. В среднем программа была по 1-2 месяца и нужно было оплатить только за перелет. Именно эти европейские проекты оказали на меня влияние, я увидел мир, и понял, что это скучно прожить жизнь в одном месте, даже с комфортом. Картинка ниже очень хорошо передает мой основной мотив:



      Это из детского рассказа про Улитку и Кита:


      Начинаем рассказ (занимайте места!)
      Про малютку улитку и великана кита.
      Вот скала,
      Где над морем улитка жила,
      И вздыхала она то и дело:
      -Как мне все надоело!
      Мир огромен, а я тут сижу на скале,
      А могла бы уплыть на большом корабле…
      Читать дальше →
    • Objects without reference cycles and cyclic GC

        Each instance of a class in CPython created using the class syntax is involved in a cyclic GC mechanism. This increases the memory footprint of each instance and can create memory problems in heavily loaded systems.


        Is it possible to use only basic reference counting mechanism when necessary?

        Let's analyze one approach based on recordclass library that will help to create classes whose instances will only be deleted using the reference counting mechanism.


        Note: this is translation from original post (in russian).

        Read more →
      • Запись сверх-широкополосных сигналов стандарта 802.15.4 UWB на почти санкционной технике

          image


          Недавно два совершенно разных мира сошлись в нашей лаборатории: мир недорогих радио-трансиверов и мир дорогущих систем записи широкополосных радио-сигналов.

          Читать дальше →
        • Вывод модели динамической системы дискретного фильтра Калмана для произвольной линейной системы

          Фильтр Калмана (ФК) является оптимальным линейным алгоритмом фильтрации параметров динамической линейной системы при наличии неполных и зашумленных наблюдений. Этот фильтр находит широкое применение в технических системах управления до оценок динамики изменения макроэкономических ситуаций или общественного мнения.

          Данная статья ставит себе целью познакомить читателя со стандартным подходом к переходу от непрерывной модели динамической системы, описываемой системой произвольных линейных дифференциальных уравнений к дискретной модели.
          Читать дальше →
          • +11
          • 3,6k
          • 9
        • Шпаргалка по аббревиатурам C++ и не только. Часть 1: C++

          • Tutorial
          Когда-то я собеседовался на должность C++ разработчика в одну приличную и даже известную контору. Опыт у меня тогда уже кое-какой был, я даже назывался ведущим разработчиком у тогдашнего своего работодателя. Но на вопросы о том, знаком ли я такими вещами, как DRY, KISS, YAGNI, NIH, раз за разом мне приходилось отвечать «Нет».

          Собеседование я с треском провалил, конечно. Но упомянутые аббревиатуры потом загуглил и запомнил. По мере чтения тематических статей и книг, подготовок к собеседованиям и просто общения с коллегами я узнавал больше новых вещей, забывал их, снова гуглил и разбирался. Пару месяцев назад кто-то из коллег небрежно упомянул в рабочем чате IIFE в контексте C++. Я, как тот дед в анекдоте, чуть с печки не свалился и опять полез в гугл.


          Читать дальше →
        • Компактная реализация RSA для встраиваемых применений

          • Tutorial
          RSA является широкоизвестным алгоритмом шифрования с открытым ключом. На его основе, кроме асимметричного шифрования, можно также реализовать электронную подпись (ЭЦП). Эти возможности привлекательны для встраиваемых систем, микроконтроллеров. Сам метод шифрования с виду чрезвычайно прост:
          C = (Me) mod n (1)
          где C,M,e,n — целые числа, M — открытый текст, числа e и n представляют собой открытый ключ, C — шифротекст. mod — остаток от деления.

          Расширование выглядит столь же просто:
          M = (Cd) mod n (2)
          где C,M,n играют ту же роль, что и при шифровании, d — закрытый ключ.

          При этом n=p*q, где p и q — простые числа (секретные), e обычно равно 65537, d вычисляется на основе e, p и q. Криптостойкость основана на том, что для достаточно больших p и q задача разложения n на множители или обращения формулы шифрования без знания p и q не решается за приемлемое время.

          Но эта кажущаяся простота обманчива. За ней скрывается огромное количество деталей и сложностей реализации. Особенно если стоит цель получить эффективную по быстродействию и памяти реализацию, пригодную для применения в микроконтроллерах. Я не нашел в интернете подходящих библиотек, а попытки изучения исходников libgcrypt заводят в такие дебри, из которых не выберешься. Поэтому я написал свою компактную библиотеку, которой и делюсь с уважаемыми читателями.
          Читать дальше →
        • Очень много YouTube-каналов для прокачки английского языка для программистов

          • Tutorial
          Привет, Хабр!

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

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

          Поучить английский


          AJ Hoge. На его канале есть всё: от базовых слов до размышлений о важности языка тела в общении. Чувак пилит видосы уже много лет, материальчик накопился.

          EngVid. Если бы можно было выбрать что-то одно для улучшения английского, то это оно. Разные преподы и тематики, постоянное обновление, бездонный ресурс. Ещё сайт одноимённый крутой, с удобной навигацией — можно найти очень узкую тему по интересам.
          Читать дальше →
        • CMake и C++ — братья навек

          • Tutorial

          Дружба навек


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


          Многие ругают CMake, и часто заслуженно, но если разобраться, то не всё так плохо, а в последнее время очень даже неплохо, и направление развития вполне позитивное.


          В данной заметке я хочу рассказать, как достаточно просто организовать заголовочную библиотеку на языке C++ в системе CMake, чтобы получить следующую функциональность:


          1. Сборку;
          2. Автозапуск тестов;
          3. Замер покрытия кода;
          4. Установку;
          5. Автодокументирование;
          6. Генерацию онлайн-песочницы;
          7. Статический анализ.

          Кто и так разбирается в плюсах и си-мейке может просто скачать шаблон проекта и начать им пользоваться.
          Читать дальше →
        • Оптимальная линейная фильтрация: от метода градиентного спуска до адаптивных фильтров

            Развивая тему конспектов по магистерской специальности "Communication and Signal Processing" (TU Ilmenau), продолжить хотелось бы одной из основных тем курса "Adaptive and Array Signal Processing". А именно основами адаптивной фильтрации.


            Для кого в первую очередь была написана эта статья:

            1) для студенческой братии родной специальности;
            2) для преподавателей, которые готовят практические семинары, но ещё не определились с инструментарием — ниже будут примеры на python и Matlab/Octave;
            3) для всех, кто интересуется темой фильтрации.


            Что можно найти под катом:

            1) сведения из теории, которые я постарался оформить максимально сжато, но, как мне кажется, информативно;
            2) примеры применения фильтров: в частности, в рамках эквалайзера для антенной решетки;
            3) ссылки на базисную литературу и открытые библиотеки (на python), которые могут быть полезны для исследований.


            В общем, добро пожаловать и давайте разбирать всё по пунктам.


            Читать дальше →
            • +19
            • 9,2k
            • 2
          • Про антенны для самых маленьких

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



              Если вы радиоинженер, опытный радиолюбитель-связист или просто хорошо знаете физику, то вам нижеследующее читать строго не рекомендуется во избежание негативных последствий для вашего психического здоровья. Вас предупреждали.
              Читать дальше →
            • Доступно о кватернионах и их преимуществах

              • Перевод

              От переводчика: ровно 175 лет и 3 дня назад были изобретены кватернионы. В честь этой круглой даты я решил подобрать материал, объясняющий эту концепцию понятным языком.

              Концепция кватернионов была придумана ирландским математиком сэром Уильямом Роуэном Гамильтоном в понедельник 16 октября 1843 года в Дублине, Ирландия. Гамильтон со своей женой шёл в Ирландскую королевскую академию, и переходя через Королевский канал по мосту Брум Бридж, он сделал потрясающее открытие, которое сразу же нацарапал на камне моста.

              $i^2=j^2=k^2=ijk=-1$




              Памятная табличка на мосту Брум Бридж через Королевский канал в честь открытия фундаментальной формулы умножения кватернионов.

              В этой статье я постараюсь объяснить концепцию кватернионов простым для понимания образом. Я объясню, как можно визуализировать кватернион, а также расскажу о разных операциях, которые можно выполнять с кватернионами. Кроме того, я сравню использование матриц, углов Эйлера и кватернионов, а затем попытаюсь объяснить, когда стоит использовать кватернионы вместо углов Эйлера или матриц, а когда этого делать не нужно.
              Читать дальше →
            • Git: исправление ошибок и наведение порядка в коммитах

              • Перевод
              Ошибка в коммите… Как её исправить? Беспорядок в истории коммитов… Как привести всё в пристойный вид? Автор статьи, перевод которой мы публикуем сегодня, говорит, что она написана специально для тех, кто задавался такими вопросами. По его словам, изучив методики работы с Git, представленные здесь, можно значительно продвинуться по пути освоения Git.


              Предполагается, что читатель этой статьи уже знаком с основами Git. Если это не так — сначала рекомендуется освоить базу, например, воспользовавшись этим материалом.
              Читать дальше →
              • +23
              • 27,1k
              • 6
            • История моей головной боли

              Содержание


              1. Введение
              2. Первые отчетливые симптомы и поиск лечения в своем городе
              3. Поиск профильных специалистов в других (больших) городах
              4. Кардиоцентр
              5. Аномалия Киари 1.
                5.1 Что это за болезнь?
                5.2 Барселона
              6. Грыжи и узкий позвоночный канал
              7. Итог
              8. Послесловие
              9. Послесловие о проблемах в нашей медицине

              Внимание! Все схемы лечения и назначения лекарственных средств строго индивидуальны для каждого человека. Самодиагностика и самолечение могут привести к опасным последствиям. Статья носит не консультативный, а повествовательный характер. В случае наличия схожих или иных неприятных симптомов обратитесь к врачу!
              Читать дальше →
            • Асимметрия жизни

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

              И науками больше всего нашпигованными фактами без логических объяснений для меня всегда были те, которые связаны с органической жизнью и ее устройством, чтобы убедиться в этом откройте учебник по биологии, например на разделе о ДНК, там будет подробное описание строения и функций ДНК, но ни слова о том, почему это все должно работать именно так и никак иначе. Наверное поэтому в моих знаниях по этим предметам всегда был большой провал. Эта статья о попытках восполнить пробелы и свести факты об органической жизни в логически согласованную систему, которая не только отвечала бы на вопрос «как?» но могла бы еще и давать общее направление, в котором нужно двигаться чтобы ответить на вопрос «почему?». Итак поехали!
              Читать дальше →
            • Английская грамматика как математика. С чего начать тем, у кого не сложилось

                Английская грамматика – удивительна своей простотой. Её очень сложно не любить: почти всё логично, структурировано, понятно, если знать (конечно). Это не русский, где можно что угодно сказать как угодно, но и в этом есть свой шарм. Поэтому мне всегда кажется, что людям с математическим складом ума природа просто кричит в ухо, что английский надо учить и для них это просто. Полно конечно всяких исключений, куда без них, но в общей массе всё логично.
                Допустим, решились, нашли какую-то мотивацию. Так как же начать, с чего подойти? С алфавита? С неправильных глаголов? С произношения? Можно как угодно подходить, но, если ваша цель заговорить, правильнее всего будет подойти к преподавателю. Если к преподавателю лично подойти не можете, подойдите сюда.

                Читать дальше →
              • Системы в корпусе или Что на самом деле находится под крышкой корпуса микропроцессора

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


                  Читать дальше →
                • Как следует писать комментарии к коммитам

                  • Перевод


                  Предисловие от переводчика


                  На протяжении многих лет разработки ПО, будучи участником многих команд, работая с разными хорошими и опытными людьми, я часто наблюдал (да и чего греха таить, до определенного момента — создавал) одну и ту же проблему — тотальный бардак в репозитории. Каждый писал комментарии к коммитам в своем стиле (и хорошо, если постоянно в одном); половина комментариев была бесполезна (из разряда "это мост"), половина оставшейся половины — едва понятна.

                  И вот в один прекрасный момент я увидел данную статью, до перевода которой у меня наконец дошли руки. Всего 7 простых и коротких правил, и — о чудо — смотреть на историю коммитов стало не только полезно, но и приятно. Ничего революционного, все довольно очевидно, но сформулировано и резюмировано просто отлично.
                  Читать дальше →