• Гальваническая развязка. Кто, если не оптрон?


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

      Статья под катом посвящена различным способам гальванической развязки цифровых сигналов. Расскажем зачем оно вообще нужно и как производители реализуют изоляционный барьер «внутри» современных микросхем.
      Читать дальше →
    • Грандиозное тестирование аккумуляторов AA/AAA

        После моего грандиозного тестирования батареек многие просили провести такие же основательные тесты NiMh-аккумуляторов. За четыре месяца я протестировал 198 аккумуляторов (44 модели AA и 35 моделей AAA).



        Читать дальше →
      • Steam Protocol v2

          Steam Logo

          Завершающая статья цикла, самая интересная и самая объемная:


          В статье будут рассмотрены протоколы обмена данными клиента Steam с различными серверами:


          В очередной раз напомню, что рассматриваемые протоколы устарели и в настоящее время не используются (за исключением GDS и Config — для совместимости).

          Все алгоритмы представлены в моем репозитории.
          Читать дальше →
        • Портативная походная метеостанция MiniBTH2/2M

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


            Читать дальше →
          • Как я, в итоге, написал новую RTOS, протестированную и стабильную

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

              image


              Процессоры, используемые в наших продуктах — это, в основном, 16- и 32-битные микроконтроллеры Microchip, имеющие RAM от 8 до 32 кБ, и ROM от 128 до 512 кБ, без MMU. Иногда, для самых простых устройств, используются еще более скромные 8-битные чипы.

              Очевидно, что у нас нет (разумных) шансов использовать ядро Linux. Так что нам нужна какая-нибудь RTOS (Real-Time Operating System). Находятся даже люди, которые не используют никаких ОС в микроконтроллерах, но я не считаю это хорошей практикой: если железо позволяет мне использовать ОС, я ее использую.

              Несколько лет назад, когда мы переходили с 8-битников на более мощные 16-битные микроконтроллеры, мои коллеги, которые были гораздо более опытными, чем я, рекомендовали вытесняющюю RTOS TNKernel. Так что это — та ОС, которую я использовал в разных проектах в течение пары лет.

              Не то, чтобы я был очень доволен ею: например, в ней нет таймеров. И она не позволяет потоку ждать сообщения сразу из нескольких очередей. И в ней нет программного контроля переполнения стека (это действительно напрягало). Но она работала, так что я продолжал ее использовать.
              Читать дальше →
            • Big Data от А до Я. Часть 1: Принципы работы с большими данными, парадигма MapReduce

              • Tutorial

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



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



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


              Читать дальше →
            • О безопасности UEFI, части нулевая и первая

                Когда-то давно, в начале 2014 года, я назвал состояние безопасности большинства реализаций UEFI "полумифическим". С тех пор минуло полтора года, дело осторожно двигается с мертвой точки, но до сих пор очень многие производители ПК для конечного пользователя не обращают на эту самую безопасность почти никакого внимания — «пипл хавает».
                В этой статье речь пойдет о модели угроз и векторах атаки на UEFI, а также о защитах от перезаписи содержимого микросхемы BIOS — самой разрушительной по возможным последствиям атаки.
                Если вам интересно, как устроена защита UEFI и какие именно уязвимости в ней так и остаются неисправленными на большинстве современных систем — добро пожаловать под кат.
                Читать дальше →
              • Как работает реляционная БД

                • Translation
                • Tutorial
                Реляционные базы данных (РБД) используются повсюду. Они бывают самых разных видов, от маленьких и полезных SQLite до мощных Teradata. Но в то же время существует очень немного статей, объясняющих принцип действия и устройство реляционных баз данных. Да и те, что есть — довольно поверхностные, без особых подробностей. Зато по более «модным» направлениям (большие данные, NoSQL или JS) написано гораздо больше статей, причём куда более глубоких. Вероятно, такая ситуация сложилась из-за того, что реляционные БД — вещь «старая» и слишком скучная, чтобы разбирать её вне университетских программ, исследовательских работ и книг.

                На самом деле, мало кто действительно понимает, как работают реляционные БД. А многие разработчики очень не любят, когда они чего-то не понимают. Если реляционные БД используют порядка 40 лет, значит тому есть причина. РБД — штука очень интересная, поскольку в ее основе лежат полезные и широко используемые понятия. Если вы хотели бы разобраться в том, как работают РБД, то эта статья для вас.
                Читать дальше →
              • PE (Portable Executable): На странных берегах



                Эта статья представляет из себя рассказ о том как устроены исполняемые файлы (в точку! Это именно те штуки, которые получаются после компиляции приложений с расширением .exe). После того, как написан код, подключены библиотеки, подгружены к проекту ресурсы (иконки для окон, какие-либо текстовые файлы, картинки и прочее) всё это компонуется в один единственный исполняемый файл, преимущественно с расширением .exe. Вот именно в этот омут мы и погрузимся.
                *Статья находится под эгидой «для начинающих» поэтому будет изобиловать схемами и описанием важных элементов загрузки.
                На палубу
              • King's Bounty III: расширенный римейк оригинальной игры под DOS на Javascript/HTML5

                Предпосылки и философские размышления


                Как и у многих моих коллег по программистскому цеху, особенно у тех, кто рано начал пробовать свои силы в области компьютерных технологий, у меня где-то на задворках сознания хранится набор самых тёплых и романтических воспоминаний о первых опытах. Когда-то, в далёком 1987 году, отец впервые взял меня в выходной к себе на работу, где торжественно усадил на стул перед гудящей «Искрой-1030-11». Примерно тогда я твёрдо понял, чем хочу заниматься в своей дальнейшей жизни.

                image
                Читать дальше →
              • Как научиться делать игры: полезные ресурсы

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

                  image
                  Читать дальше →
                • Уязвимости прошивки беспроводных дисков Seagate позволяют удаленно загружать и скачивать файлы



                    Как сообщает CERT.org, беспроводные накопители Seagate открывают Telnet-сервис воспользоваться которым можно с помощью зашитого в коде пароля. Это позволяет злоумышленникам осуществить скачивание файлов с накопителя. Еще одна ошибка безопасности позволяет удаленно загружать любые файлы в директорию, по умолчанию использующуюся для общего доступа.
                    Читать дальше →
                    • +8
                    • 11.1k
                    • 7
                  • Github добавил настройки доступа к веткам (protected branches)

                      imageГитхаб — великолепный агрегатор репозиториев и инструмент для коллективной работы. К сожалению, многие возможности конфигурирования на стороне сервера (вроде коммит хуков) остаются недоступными. Но ситуация постепенно меняется в лучшую сторону.

                      Случилось то, чего многие ждали довольно долго. А именно: недавно была анонсирована фича, под названием protected branches, которая позволяет настроить правила работы с ветками в рамках репозитория. Да, теперь можно запретить force push в master!

                      Под катом скриншоты и выдержки из блога разработчиков.
                      Читать дальше →
                      • +43
                      • 26.9k
                      • 8
                    • Создание искусственного интеллекта для игр — от проектирования до оптимизации

                      • Translation

                      Сегодня – первое сентября. А значит, многие читатели хабры начинают прохождение нового уровня одной древней известной игры – той самой, в которой требуется прокачать интеллект, и, в итоге, получить магический артефакт – аттестат или диплом, подтверждающий ваше образование. К этому дню мы сделали реферативный перевод статьи про реализацию искусственного интеллекта (ИИ) для игр – от его проектирования до оптимизации производительности. Надеемся, что она будет полезна как начинающим, так и продвинутым разработчикам игр.
                      Читать дальше →
                      • +40
                      • 111k
                      • 3
                    • Intel Parallel Studio XE 2016: новые возможности компилятора C/C++


                        На прошлой неделе вышла новая версия компилятора С/С++ от Intel — 16.0 aka Parallel Studio XE Composer Edition for C++. Существенно расширилась поддержка новых стандартов (C11, C++14, OpenMP 4.1), возможности по работе с Xeon Phi, вышли новые версии библиотек и ещё много всего «вкусного». Давайте более подробно посмотрим на то, что появилось в последнем релизе. Поехали!
                        Читать дальше →
                      • Чудо свершилось. Вышла «отвязанная» версия Arduino Mega Server

                          image

                          Революция о которой так долго говорили большевики свершилась. Теперь вы можете взять карточку памяти microSD, записать на неё файлы дистрибутива AMS и ваша Arduino превратиться в маленькое (или большое, это как посмотреть) чудо. Вам больше не нужны «костыли» с поддержкой стороннего сервера, Arduino Mega Server стал полностью автономным и вполне «юзабельным» в одиночном режиме работы. И это открывает для всех нас очень интересные перспективы.
                          Читать дальше →
                        • Настройка сервера и деплоя: rvm, rails, puma, nginx, mina

                          Предыстория


                          На создание этой статьи меня толкнула недавняя публикация о деплое. В приведённой статье описан способ разворачивания проекта на основе rbenv, я же опишу ситуацию с rvm и настройкой upstart.

                          Задачи и требования


                          Итак, дано: простейшее RubyOnRails-приложение. В случае разворачивания своего проекта я ставил перед собой следующие задачи:
                          • ОС Ubuntu LTS 14.04;
                          • Веб-сервер Nginx;
                          • Сервер приложения Puma;
                          • Использование RVM для установки ruby требуемой версии;
                          • Автоматический запуск приложения при запуске VPS-сервера, возможность управлять приложением как службой;
                          • Автоматизация процесса деплоя с помощью mina;

                          Почему Ubuntu?
                          Просто я к ней привык (точнее к её производной — Linux Mint).

                          Почему puma, а не unicorn или passenger?
                          О пуме я слышал неплохие отзывы, а у unicron страшненький сайт. Passenger, на мой взгляд, нарушает принцип единственной обязанности — я хочу иметь веб-сервер и приложение-сервер.

                          Почему RVM?
                          Я к нему привык — у меня он установлен на локальной машине, хочу его видеть и на production.

                          Почему mina?
                          Она действительно проще чем capistrano и при этом быстрее. Скорость достигается за счёт того, что для каждой задачи capistrano создаёт отдельное ssh-соединение. Mina же формирует shell-скрипт и выполняет его в рамках одного соединения.

                          В данном случае задача легко разбивается на 3 этапа:
                          1. Убедиться, что приложение корректно запускается (пока без автоматизации);
                          2. Настроить сервер так, чтобы наше rails-приложение работало как полноценная служба;
                          3. На основе этого настроить автоматизированное разворачивание с помощью mina.

                          Читать дальше →
                          • +12
                          • 8.8k
                          • 7
                        • Практика настройки Mikrotik для чайников

                          UPD: 01/08/2018

                          Есть задача: настроить устройство на базе RouterOS в качестве замены SOHO роутера для дома или небольшого офиса. Это HOWTO, потому технических подробностей будет минимум, Next-Next-Next-Ok и вы получаете готовое к работе устройство, так что приступаем.
                          Читать дальше →
                        • Две книги, которые изменили жизнь Сергея Брина

                            В 1996 году аспиранты Стэнфордского университета Сергей Брин и Ларри Пейдж начали разработку компьютерной программы, которая впоследствии станет известна миру как поисковая система Google.

                            Сегодня Google (Alphabet) — крупнейшая корпорация с рыночной капитализацией $450 млрд. Сергей Брин сосредоточил усилия на перспективных научно-исследовательском подразделении GoogleX, которое занимается революционными разработками вроде беспилотных автомобилей.

                            В одном из интервью в 2000 году Сергей Брин рассказал, какие книги вдохновили его посвятить карьеру технологиям, где смешаны наука и творчество.
                            Читать дальше →
                          • Где регистрировать домен. Сравнение цен

                              До недавнего времени у меня было три проблемы с регистрацией доменов:

                              • Выбрать домен и быстро проверить его занятость.
                                Любой регистратор доменных имен предлагает вам форму, в которую вы вводите желаемое слово, просит ее отправить, подождать несколько секунд, узнать свободно ли имя. Затем повторить. Если вы в высококонкурентной нише, где все словарные имена заняты, то провести за этим увлекательным занятием можно несколько часов. Эту проблему для меня несколько лет подряд решал domainr, который проверяет домены как только ты вводишь их названия.

                              • Отложить несколько удачных доменов, чтобы после выбрать лучший.
                                Это невероятно, но практически ни один сервис, кроме namemesh, не дает добавить домены в избранное. К сожалению, он просит зарегистрироваться, как мы все это любим. На сайтах регистраторов задача решается при помощи корзины. Сначала добавляем все в заказ, затем выкидываем лишнее. Долго, неудобно, нет вариантов перед глазами.

                              • Купить домен там, где его продают и где он дешевле.
                                Проблема аккредитации регистраторов касается в первую очередь newTLD-доменов (.bike, .restaurant, .tools и прочие). У вашего любимого регистратора легко может быть .travel, но отсуствовать .work. Узнать, кто может зарегистрировать для вас уже привычный домен .io нетривиальная задача, не говоря уже о том, чтобы найти место, где сделать это дешевле.

                                Задача регистратора в том, чтобы внести запись о домене в единую базу данных и предоставить набор сервисных услуг, связанных с адресом (DNS, SSL и прочие). Текущие реалии таковы, что почти все регистраторы предлагают одинаковые услуги, но берут за это совершенно разные деньги. И если разница в 300 рублей на покупку .ru-домена у разных регистраторов не особенно принципиальна, то зарегистрировать десяток typo-доменов в зоне .net может стоить от 3 000 до 13 000 рублей в зависимости от регистратора ($8.99 / 650 р / $34.99).

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