• Насколько маленьким может быть ядро linux?

      Некоторое время назад я научился конвертировать виртуальные машины в oracle cloud из ubuntu 20.04 в gentoo. Машины предоставляемые в рамках always free tier весьма маломощны. Это в частности приводит к тому, что перекомпиляция ядра превращается в достаточно длительный процесс. У исходного ядра ubuntu 20.04 в конфиге было 7904 параметра. После того, как я сделал:

      make localmodconfig && make localyesconfig

      число параметров уменьшилось до 1285. Мне стало интересно попробовать выбросить из ядра все лишнее и посмотреть, что получится.
      Читать дальше →
    • Как я собирал ЧПУ фрезер, и в каких моментах не стоит за мной повторять

      Всем привет.

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

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

      Читать далее
    • Гидропоника. Выращиваем сверхострый чили и заставляем всех его есть


        Полтора килограмма термоядерного Тринидадского Скорпиона я в итоге собрал с одного куста на гидропонике.


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


        Небольшая часть урожая


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


        Сегодня в меню


        1. Что такое гидропоника и почему она гораздо проще, чем почва с червячками
        2. Никаких дорогих бутылочек. Мешаем компоненты по три рубля за ведро
        3. Питание растения как алгоритм
        4. Как быстро собрать прототип гидропонной установки
        5. Что такое capsicum chinense и как выжить при дегустации
        Читать дальше →
      • SDR DVB-T2 receiver на C++

        Software Defined Radio (программно-определяемая радиосистема) — это метод замены работы по металлу (что, в принципе, полезно для здоровья) на головную боль программирования. SDR пророчат большое будущее и основным достоинством считается снятие ограничений в реализации радиопротоколов. Примером является метод модуляции OFDM (Orthogonal frequency-division multiplexing), которая стала возможна только методом SDR. Но есть в SDR и еще одна, чисто инженерная возможность, — это возможность контролировать и визуализировать сигнал в любой произвольной точке с наименьшими усилиями.


        Одним из интересных стандартов связи является наземное эфирное телевидение DVB-T2.
        Зачем? Конечно, можно просто не вставая включить телевизор, но смотреть там абсолютно нечего и это уже не моё мнение, а медицинский факт.


        Если серьёзно, DVB-T2 разработан с очень широкими возможностями, в том числе:


        • indoor применение
        • модуляция от QPSK до 256QAM
        • полоса пропускания от 1,7MHz до 8MHz
        Читать дальше →
      • Полное руководство по сезонной депрессии (SAD). 7 видов светотерапии



          Я проделал большую работу по исследованию англоязычной литературы на тему «рекуррентное депрессивное расстройство (F33) с сезонным паттерном». В этой статье я системно изложу всю найденную информацию.

          Почему эта статья важна:

          1. Лучшая книга по сезонной депрессии (Winter Blues) за все 27 лет её существования не была переведена на русский язык, а англоязычную версию не найти в открытом доступе. Я купил и прочитал книгу через Kindle, а также внедрил 70% описанных в ней методик в жизнь. Моя статья будет, по сути, пересказом книги и её адаптации под российские реалии
          2. Полное непонимание сезонной депрессии как обывателями, так и некоторыми профессиональными врачами в России, хотя эта страна находится в группе риска
          3. Низкое качество статей рунета в целом и статей по здоровью в частности. А статьи на Хабре, имеющие отношение к SAD, можно пересчитать по пальцам, и они не дают общей картины
          4. Производители ламп яркого света используют хитрые манипуляции, маркируя слабенькие лампы как дающие 10 000 люкс, но достигая этой яркости на расстоянии около 10 сантиметров от лампы до хрусталика глаза
          Читать дальше →
        • Модель Акторов и C++: что, зачем и как?

            Данная статья является доработанной текстовой версией одноименного доклада с конференции C++ CoreHard Autumn 2016, которая проходила в Минске в октябре прошлого года. Желание сделать эту статью возникло под впечатлением о том, что в мире C++ разработчики как бы делятся на два больших и не пересекающихся лагеря. В первом лагере находятся матерые спецы, которые все видели, все знают и все умеют, за плечами у которых десятки собственноручно написанных реализаций Модели Акторов, внутрях у которых хитрые, конечно же самостоятельно сделанные, lock-free очереди и state-of-the-art механизмы обслуживания сообщений. Такие проффи сами часами могут рассказывать про тонкости многопоточного программирования (только почему-то редко это делают). Во втором лагере — зеленые новички, которых волею судьбы занесло в мир C++, которые пока слабо представляют себе различия между unique_ptr и shared_ptr, про шаблоны только слышали, а в области многопоточности имеют поверхностное впечатление только о std::thread, std::mutex и, может быть, std::condition_variable. Для людей из первого лагеря я вряд ли что-нибудь интересное расскажу, а вот разработчикам из второго лагеря попробую вкратце рассказать о том, что Модель Акторов в C++ — это нормально. И что есть ряд готовых инструментов, на примере которых можно увидеть, что же это такое.

            Читать дальше →
          • Преобразование обычного класса в странно повторяющийся шаблон

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

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

            Итого имеем следующие дополнительные затраты:

            1) Дополнительный указатель в классе (указатель на таблицу виртуальных методов);
            2) Дополнительный код в конструкторе класса (для инициализации виртуального табличного указателя);
            3) Дополнительный код при каждом вызове виртуального метода (разыменование указателя на таблицу виртуальных методов и поиск по таблице нужного адреса виртуального метода).
            Читать дальше →
          • Что в Белизне тебе моей или Справочное пособие по гипохлориту натрия («хлорке»)

            • Tutorial
            Не передать, насколько мне приятно это писать. Данная статья полностью профинансирована подписчиками канала LAB66. Ни один производитель описанных в тексте средств -  своего участия не проявил, так что никакой скрытой рекламы, чиcтый альтруизм и потребительский интерес :)

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


            Даешь нормальную Белизну!
          • Xiaomi Gateway 2 можно и не паять



              Привет Хабр! В предыдущих сериях я:

              • Накупил устройств от Xiaomi для умного дома и посредством паяльника заставил их работать в увлекательнной манере без родных серверов через home assistant (ссылка на пост)
              • Завернул web interface от home assistant в electron (ссылка на пост) с поддержкой нотификаций, менюшек, точбара итд (код тут)

              Но по мере появления всё новых устройств стало вскрываться странное…

              Например, что поддержки Aqara Wireless Relay 2ch (LLKZMK11LM) в интеграции xiaomi_aqara нет, а на открытие Issues в GitHub владельцы кода отвечали, что поддержать это реле невозможно без обновления прошивки устройства. «Что-то тут не так» — подумал я и пошел разбираться по коду, как так вышло. И так увлекся, что запилил интеграцию сначала для работы с реле через xiaomi_miio (ссылка), а затем реализовал поддержку кубика и кнопки Xiaomi для этой интеграции (ссылка), а теперь расскажу зачем и как.
              Читать дальше →
            • Умный дом без пультов, но с кубиком

              Проблема



              На время ремонта новой квартиры я вернулся в квартиру, в которой не жил 10 лет и решил поупражняться в дисциплине “Умный дом”, чтобы со знанием дела обустраивать уже новую квартиру. Техника в этой квартире тоже не самая умная и не самая новая, ибо была произведена ~10 лет назад. Больше всего в квартире меня напрягало обилие инфракрасных пультов, они терялись и нагружали мозг подбором нужного. До недавнего времени было принято на пультах делать огромное количество малоиспользуемых кнопок. А еще пульты не эстетичны и не гигиеничны, одни угловатые, другие с скруглёнными гранями, кнопки желтеют, в них копятся остатки жизнедеятельности обитателей на которых образуется «подкнопочный биоценоз». В итоге по дому разбросано десяток пультов с кучей ненужных кнопок, для простой операций приходилось искать по две-три штуки, их вид царапает взор, хотелось удобного тактильного и модного голосового управления.

              Читать дальше →
            • Открытие портов 4321 и 9898 на шлюзе Xiaomi Gateway 2

                Введение


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

                После часов поисков я решил, что мне подходит Home Assistant. Строить всё на начальном этапе я решил с использованием Raspberry Pi 4 Model B (2GB) и датчиков от Xiaomi. Купив шлюз (нужна версия с артикулом DGNWG02LM) и включив протокол связи локальной сети, я столкнулся с тем, что порты 4321 и 9898, необходимые для интеграции в Home Assistant, по-прежнему остались закрытыми.
                Читать дальше →
              • О смерти двойной загрузки и о единстве Windows и Linux

                • Перевод
                Раньше моей рабочей машиной был ноутбук, созданный Apple. Я мог делать на нём практически всё что угодно: разрабатывать программы, писать тексты, сочинять музыку, да и много чего ещё. Но мне не давали покоя мысли о том, что я привязан к экосистеме Apple, о том, что я зависим от прихотей этой компании. Поэтому я приступил к поискам чего-то нового.

                Я начал собирать рабочую станцию под задачи машинного обучения. Поставил в неё, кроме прочего, отличный процессор, много памяти, достойную видеокарту. Практически все мои задачи я решал в Ubuntu. Правда, для работы с текстами мне нужен был Microsoft Office. Онлайновый Office тогда ещё не появился, и, давайте называть вещи своими именами, LibreOffice — это просто ужас какой-то. Для меня решением стала двойная загрузка в конфигурации Ubuntu — Windows 10. Мне невероятно понравилось то ощущение свободы, которое испытываешь, переходя с ОС от Apple на Ubuntu. А возможности, которые открываются перед тем, кто сам собирает свой компьютер, практически бесконечны.



                Двойная загрузка в течение долгого времени полностью меня устраивала. А когда я миллион раз ей воспользовался, появилась технология WSL (Windows Subsystem for Linux, подсистема Windows для Linux). Когда это случилось, я начал решать некоторые свои Linux-задачи в Windows. Правда, даже так, многого для полноценной работы мне ещё не хватало. Но теперь, с выходом WSL 2, у меня возникает такое ощущение, что новая версия WSL способна кардинальным образом изменить ситуацию. Сегодня я предлагаю поговорить о том, как, с помощью WSL 2, перенести задачи по разработке программ из Linux в Windows 10. Я расскажу о новых возможностях WSL 2, и о том, что можно ожидать от этой подсистемы в будущем.
                Читать дальше →
              • Интернет для дачника. Добываем максимальную скорость в сетях 4G. Часть 2. Выбор внешней антенны

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

                  Читать дальше →
                • Интернет для дачника. Добываем максимальную скорость в сетях 4G. Часть 1. Выбор правильного роутера

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


                    Читать дальше →
                  • Отображение данных в формате json на структуру C++

                    В идеале хотелось бы определить структуру С++


                    struct Person {
                     std::string name;
                     int age;
                     bool student;
                    } person;

                    передать экземпляр person в метод отображения вместе с данными json_data


                    map_json_to_struct(person, json_data)

                    после чего просто пользоваться заполненной структурой


                    std::cout << person.name << " : " << person.age;

                    StructMapping пытается решить эту задачу.

                    Читать дальше →
                  • Коронавирус 2019-nCoV. FAQ по защите органов дыхания и дезинфекции

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


                    Стоп! 2019-nCoV
                  • Задержать COVID-19. Все про фильтрацию воздуха на случай пандемии

                    • Tutorial
                    По материалам из телеграм-канала LAB66 и присоединенного к нему чата.

                    Это время для фактов, а не для страха. Это время для науки, а не слухов. Это время солидарности, а не охоты на ведьм…
                    директор ВОЗ Tedros Adhanom Ghebreyesus про эпидемию COVID-19
                    Прошло немного времени с момента публикации моей статьи про респираторную защиту во время эпидемии. За это время, отчасти благодаря активному обсуждению в «приканальном» чате выработалась некоторая система, которой бы я хотел поделится и с читателями хабра. Вынудило меня написать эту статью то, что из-за коронавируса поднялся нездоровый хайп, на волне которого на поверхность начала всплывать совсем не та информация, которая всплывать должна была бы (равно как и внезапно подскочили до х40 раз цены на респираторы, притом все без разбора). Так что нужно расставить точки над i. Под катом читаем про подбор правильного респиратора, про сборку кастомных фильтров и стерилизацию зараженных средств защиты. Ответы на вопросы.

                    Грантовая поддержка исследования
                    Фактически, в роли «научного грантодателя» для этой статьи выступают мои «меценаты» с Patreon. Благодаря им все и пишется. Поэтому и ответ они могут получить раньше всех других, и черновики увидеть, и даже предложить свою тему статьи. Так что, если интересно то, о чем я пишу и/или есть что сказать — поспешите стать моим «патроном» (картинка кликабельна):



                    Статью же настоятельно рекомендую «в закладки». Буду рад любому посильному распространению статьи. Краткий итоговый FAQ — в конце статьи.


                    Собираем полумаску под себя!
                  • Реверс-инжиниринг домашнего роутера с помощью binwalk. Доверяете софту своего роутера?

                    • Перевод
                    • Tutorial


                    Несколько дней назад, я решил провести реверс-инжиниринг прошивки своего роутера используя binwalk.


                    Я купил себе TP-Link Archer C7 home router. Не самый лучший роутер, но для моих нужд вполне хватает.


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


                    Скачав себе OpenWRT, я так же скачал последний образ прошивки под мой новый Archer C7 с официального сайта и решил проанализировать его. Чисто ради фана и рассказать о binwalk.

                    Читать дальше →
                  • GPS антенна своими руками за 5 минут

                      Для приема GPS сигналов, можно изготовить несложную антенну, которая по своим возможностям будет соответствовать маленькой патч-антенне.

                      Предлагаемая антенна — диполь, пассивная, поэтому небольшой выигрыш в токе потребления GPS модуля достигается.

                      Принимаем центральную частоту GPS сигнала равной 1575.42 МГц, находим длину одного плеча антенны L/4 = 47.7 мм. Цифра справедлива для провода без изоляции. Провод в изоляции должен быть чуть короче. Длина плеч диполя и монополя отсчитывается от грани оплетки кабеля.

                      Если половинка диполя одна, то это уже монополь. Я подготовил диполь и монополь.



                      Антенны крепятся на короткий коаксиал с разъемом типа IPX.В качестве эталонной антенны используем активную маленькую патч-антенну. GPS-модуль NEO6.


                      Читать дальше →
                    • Курс лекций «Основы цифровой обработки сигналов»

                        Всем привет!

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

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


                        Читать дальше →