• Черная магия голубой таблетки (делаем программатор Black Magic Probe из модуля на базе STM32F103)

    Зачем?


    В эпоху Arduino UNO и Atmega328 я вполне обходился без программатора, прошивая микроконтроллер сначала загрузчиком Arduino через другую Arduino (Arduino as ISP), а потом через обычный последовательный порт, и лишь после появления поддержки Arduino для модулей на основе Nordic Semiconductor nrf51822 и nrf52832 для меня впервые стало актуальным наличие swd-программатора, ибо никаким другим способом прошивку в голый китайский модуль не зальешь.

    Стандартом де-факто в данной области являются программаторы Jlink немецкой компании Segger Microcontroller System, известные не только своими прекрасными ТТХ, но и заоблачной ценой (около $500-600). Надо отдать должное компании Segger, для некоммерческого использования выпускается EDU версия, полностью идентичная Jlink Base, но даже она стоит в России в районе 3000 руб. Любимый Aliexpress полон китайских клонов, однако и они относительно недешевы, не говоря уж о прочем.

    Есть еще ST-LINK/V2 от ST Microelectronics, правда, под вопросом их совместимость с микроконтроллерами производства не самой STMicro.

    В итоге, мой взгляд неминуемо пал на JTAG/SWD программатор Black Magic Probe (BMP), собравший на Kickstarter более $47,000 при заявленной цели в $10,000.
    Читать дальше →
  • Игры для программистов, часть вторая

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

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

      Infinifactory


      image
      И что же это за майнкрафт такой?
    • «Магическая константа» 0x5f3759df

      • Перевод
      В этой статье мы поговорим о «магической» константе 0x5f3759df, лежащей в основе элегантного алгоритмического трюка для быстрого вычисления обратного квадратного корня.

      Вот полная реализация этого алгоритма:

      float FastInvSqrt(float x) {
        float xhalf = 0.5f * x;
        int i = *(int*)&x;  // представим биты float в виде целого числа
        i = 0x5f3759df - (i >> 1);  // какого черта здесь происходит ?
        x = *(float*)&i;
        x = x*(1.5f-(xhalf*x*x));
        return x;
      }

      Этот код вычисляет некоторое (достаточно неплохое) приближение для формулы

      image

      Сегодня данная реализация уже хорошо известна, и стала она такой после появления в коде игры Quake III Arena в 2005 году. Её создание когда-то приписывали Джону Кармаку, но выяснилось, что корни уходят намного дальше – к Ardent Computer, где в середине 80-ых её написал Грег Уолш. Конкретно та версия кода, которая показана выше (с забавными комментариями), действительно из кода Quake.
      В этой статье мы попробуем разобраться с данным хаком, математически вывести эту самую константу и попробовать обобщить данный метод для вычисления произвольных степеней от -1 до 1.

      Да, понадобится немного математики, но школьного курса будет более, чем достаточно.
      Читать дальше →
    • 10 приёмов работы в терминале Linux, о которых мало кто знает

      • Перевод
      Близкое знакомство с возможностями терминала — один из признаков человека, который хорошо разбирается в Linux. Хотя некоторые вещи запомнить сложно, есть довольно-таки простые, но эффективные приёмы, которые способны повысить качество и скорость работы в терминале. Пожалуй, каждый пользователь Linux рано или поздно обзаводится собственным списком ценных мелочей. Надеемся, некоторых из тех десяти приёмов работы в командной строке Linux, которыми мы хотим с вами поделиться, попадут в ваш личный список полезных команд.

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

        Ксения Каланова, выпускница нашего курса по копирайтингу и маркетолог в MERA, написала колонку для блога Нетологии о том, как заставить текст звучать «по-английски», даже когда до уровня Advanced еще далеко.

        Вся моя жизнь связана с английским языком: школьные олимпиады, подготовка к вступительным экзаменам в вуз, пять лет на переводческом факультете, лето в США и путешествия по миру. В студенческие годы я работала письменным переводчиком, а сразу после выпуска — устным.

        С тех пор как я устроилась маркетологом в международную IT-компанию, ко мне все чаще обращаются с просьбами написать или отредактировать англоязычные тексты IT-тематики.

        Если бы не опыт работы переводчиком, меня такие просьбы поставили бы в ступор. Ведь мой текст увидят иностранцы — клиенты компании, руководители!



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

        • Tutorial

        1. Введение


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



        Я тоже довольно долго изучал эти вопросы. Российское законодательство по этим вопросам сильно зарегулировано, и все эти законы и правила причиняют массу проблем фрилансерам, работающим на зарубежный рынок. В итоге я принял решение перевести свой «бизнес» в другую юрисдикцию. Изучив все возможные варианты, я выбрал такой путь — зарегистрировать фирму ООО в Латвии, и принимать платежи от заказчиков на эту фирму. То есть просто переместить свой бизнес из России в Латвию.

        Я уже год работаю в таком формате, я сталкивался с разными проблемами и оценил плюсы и минусы. В итоге я решил, что в сумме я выиграл от такого решения. В комментариях к статьям о фрилансе я периодически читаю вопросы типа «как работать на заказчиков из США», «Как платить налоги на платежи с Upwork-а», и поэтому я решил поделится своим опытом, тем более что подобных статей я еще нигде не видел.
        Читать дальше →
      • Стоимость недвижимости на тепловых картах

        В статье рассказано о процессе создания тепловой карты цен по продаже недвижимости для Москвы и Санкт-Петербурга.


        Тепловая карта цен Москвы


        Меня зовут Дмитрий, я программист из Санкт-Петербурга и у меня есть хобби — это портал по недвижимости которым я занимаюсь в свободное от работы время вот уже почти 5 лет. Сайт авторский, и это дает достаточный уровень свободы для экспериментирования и реализации любых идей на нем. И одной из давних идей было создание тепловой карты цен.

        Читать дальше →
      • Не Роскомнадзором единым

          Пять лет я наблюдаю за дискуссиями вокруг действительности Роскомнадзора по всему рунету и по-прежнему отмечаю, что часть IT-сообщества плохо представляет себе, как функционируют блокировки, и почему они функционируют именно так. Вопрос это юридический, и далее я попробую вас с ним познакомить. Предупреждаю, чтиво совсем не пятничное.
          Читать дальше →
        • CDC+MSC USB Composite Device на STM32 HAL

          • Tutorial
          image

          Мне хотелось бы верить, что хотя бы половина читателей может расшифровать хотя бы половину названия статьи :) Кто не в курсе — поясню. Мое устройство должно реализовывать сразу две USB функции:

          • Mass Storage Device (он же Mass Storage Class — MSC). Я хочу, чтобы мой девайс прикидывался обычной флешкой и отдавал файлики с данными, которые лежат на SD карте.
          • Другая функция это виртуальный COM порт (он же в терминологии USB называется Communication Device Class — CDC). Через этот канал у меня идет всякий дебажный вывод, который удобно смотреть обычным терминалом.

          В большинстве примеров по работе с USB реализуется только один тип устройства — флешка, мышка, кастомное HID устройство или виртуальный COM порт. А вот найти вменяемое объяснение как реализовать хотя бы две функции одновременно оказалось не так просто. В своей статье я хотел бы восполнить этот пробел.

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

          Итак, поехали!
          Читать дальше →
        • Буратор. Сверлильный станок для печатных плат

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

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

            Читать дальше →
          • Знай сложности алгоритмов

            • Перевод
            Эта статья рассказывает о времени выполнения и о расходе памяти большинства алгоритмов используемых в информатике. В прошлом, когда я готовился к прохождению собеседования я потратил много времени исследуя интернет для поиска информации о лучшем, среднем и худшем случае работы алгоритмов поиска и сортировки, чтобы заданный вопрос на собеседовании не поставил меня в тупик. За последние несколько лет я проходил интервью в нескольких стартапах из Силиконовой долины, а также в некоторых крупных компаниях таких как Yahoo, eBay, LinkedIn и Google и каждый раз, когда я готовился к интервью, я подумал: «Почему никто не создал хорошую шпаргалку по асимптотической сложности алгоритмов? ». Чтобы сохранить ваше время я создал такую шпаргалку. Наслаждайтесь!
            Читать дальше →
          • Миф и реальность глобального потепления



              С этой теорией заговора может сравниться разве что история про фейковый полет на Луну. Её сторонники верят, убеждают других, бьют себя в грудь… Но понимаете ли вы, реальность или миф — глобальное потепление? Если нет, то обязательно посмотрите наш новый выпуск с Александром Сергеевым про миф и реальность глобального потепления. А под катом вы найдёте расшифровку этого видео, максимально адаптированную для чтения.
              Читать дальше →
            • Пошаговый мануал как ввезти технику, на которую отсутствует нотификация ФСБ

              Заметил, что на Хабре (да и в Рунете), практически нет инструкций о том, что делать, если на технику, заказанную из-за рубежа, отсутствует нотификация ФСБ. Хотел бы поделиться опытом, приобретенным в процессе доставки ноутбука из Америки. Инструкция под катом.

              Читать дальше →
            • Снимаем «4D видео» с помощью depth-сенсора и триангуляции Делоне



              Привет Хабр! Это заметка о небольшом хобби-проекте, которым я занимался в свободное время. Я расскажу, как с помощью несложных алгоритмов превращать карты глубины от depth-сенсоров в забавный вид контента — динамические 3D сцены (их ещё называют 4D video, volumetric capture или free-viewpoint video). Моя любимая часть в этой работе — алгоритм триангуляции Делоне, который позволяет превращать разреженные облака точек в плотную полигональную сетку. Приглашаю всех, кому интересно почитать про алгоритмы, самописные велосипеды на C++11, и, конечно же, посмотреть на трёхмерных котиков.

              Для затравки: вот что получается при использовании RealSense R200: skfb.ly/6snzt (подождите несколько секунд для загрузки текстур, а затем используйте мышку, чтобы поворачивать сцену). Под катом есть ещё!
              Обладатели лимитированных тарифов, будьте осторожны. В статье много разных изображений и иллюстраций.
              Читать дальше →
            • Защищаем сайт с помощью ZIP-бомб

              • Перевод

              Старые методы по-прежнему работают


              [Обновление] Теперь я в каком-то списке спецслужб, потому что написал статью про некий вид «бомбы», так?

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

              Когда я в возрасте 13 лет впервые захостил свою маленькую Linux-коробочку с доступом по SSH, я смотрел логи и каждый день видел IP-адреса (в основном, из Китая и России), которые пытались подключиться к моей сладенькой маленькой коробочке (которая на самом деле была старым ноутом ThinkPad T21 со сломанным дисплеем, жужжавшим под кроватью). Я сообщал эти IP их провайдерам.

              На самом деле если у вас Linux-сервер с открытым SSH, то можете сами посмотреть, сколько попыток подключений происходит ежедневно:

              grep 'authentication failures' /var/log/auth.log
              Читать дальше →
            • Введение в процедурную анимацию

              • Перевод
              image

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

              GIF

              Серия будет состоять из следующих частей:

              Читать дальше →
              • +44
              • 28,6k
              • 3
            • Три дня как все кассы в стране должны стать онлайн (на самом деле нет)


                Теперь так делать нельзя

                Старая логика такая: внутри кассы есть некая постоянная write-only память, в которую касса пишет каждый пробитый чек. Это реализовано в виде ЭКЛЗ — электронной контрольной защищённой ленты, которая уже давно не лента, а плата. Это устройство требует много геморроя — там целый квест с заменой, заведением новой кассы и так далее.

                В цифровом мире такие проблемы очень давно решаются сертификатами. Именно эту плюшку даёт нам ФЗ-54, который описывает онлайн-отправку чеков. Он же запрещает с 1 февраля 2017 заводить новые кассы старого типа, а с 1 июля 2017 (то есть уже) — вообще использовать такие кассы. То есть если в феврале планировалось открытие нового магазина, то в нём уже должна быть онлайн-касса. С 1 июля 2017 все кассы должны быть онлайн.

                Мелкие бизнесы (ИП, ЕНВД и патентное налогообложение) могли перетоптаться до 1 июля вообще без кассы, но потом даже для торговых автоматов они стали обязательными. На самом деле это нереально круто для страны, но…

                … реализация породила целую гору проблем. Первая и главная — фактическая спекуляция новым оборудованием, потому что потребность в нём была больше, чем производители успевали выставлять на полки.
                Читать дальше →
              • Два в одном: как пользоваться Vim и Nano?

                Upd. 9.7.2017: обновлён раздел про vim. Спасибо вимерам за ценные дополнения.

                Вступительное слово


                Зачем нужна ещё одна, 1001я публикация на эту тему? Статей про vim и nano написано огромное количество, но как правило они касаются только одного из редакторов, либо представляют из себя общий обзор. Чтобы в одной были сжато описаны оба редактора, но при этом без углубления в дебри приведены все основные клавиши управления для полноценной работы, я не не нашёл. Поэтому, почитав найденные материалы, я начал их конспектировать, так и родилась эта статья.


                Любой текстовый редактор можно освоить «методом тыка». Но только не vim.
                Чем nano лучше vim?
                Из nano можно выйти без reset'а! (с) Интернет


                Изначально я не планировал писать об обоих редакторах, а хотел сделать краткую справку только по nano, но в процессе сбора информации накопились данные и по vim тоже. Тут я обнаружил, что Vim не так уж и страшен, если знать команды и концепцию его использования.

                Читать дальше →
              • Для ИТ-ишников. Если у вас устают глаза, покраснения, раздражение. Возможно эта статья для вас



                  Я с 2004 года работаю в ИТ-сфере. Как и вы я провожу много времени за экраном монитора (даже двух). А если это релиз, дедлайн или срочный вопрос, то время работы за компьютером плавно перерастает в большую часть суток.

                  Недавно меня спросил один знакомый, как это все выдерживают мои глаза и зрение остается хорошим?! Я всегда отвечаю, что годы тренировок помогают. Думаете это сарказм? Только отчасти:) На самом деле это тренировки.
                  Читать дальше →
                • Фантастика и фентези за два с половиной года, почти сто хороших книг

                  На этот пост меня подтолкнула публикация «Почему я ворую книги, бедные авторы, и как это исправить», а именно — скепсис и возражения на мой комментарий о том, что я не читаю плохие книги. Мне предложили рассказать, как я выбираю книги для чтения и что именно читаю. Ну я и повелся.
                  Оформить список было сравнительно просто, FBReader любезно хранил на GoogleDrive все скачанные книги с того момента, как там появилась эта услуга. Предлагаю вашему вниманию список прочитанного мной за 2,5 года из жанров фентези и фантастики.
                  Читать дальше →