• TinyFL — драйвер фонарика на микроконтроллере

    Привет, Habr!


    Хочу рассказать историю о том, как мне в руки попал китайский налобный фонарик на светодиоде Cree XM-L и что дальше с ним стало.


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


      Techlead Skyeng Кирилл Роговой (flashhhh) выступает на конференциях с докладом, в котором рассказывает о навыках, развивать которые стоит каждому хорошему разработчику, чтобы стать лучшим. Я попросил его поделиться этой историей с читателями Хабры, передаю Кириллу слово.


      Миф про хорошего разработчика гласит, что он:


      1. Пишет чистый код
      2. Знает много технологий
      3. Быстрее кодит задачи
      4. Знает кучу алгоритмов и шаблонов проектирования
      5. Умеет отрефакторить любой код по Clean Code
      6. Не тратит время на непрограммистские задачи
      7. 100% мастер своей любимой технологии

      Так видят идеальных кандидатов HRы, и вакансии, соответственно, выглядят тоже так.


      Но мой опыт говорит, что это не сильно соответствует действительности.

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

      • Translation

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

      Я прочитал книгу «Но откуда он знает?» Кларка Скотта с детальным описанием простого 8-битного компьютера: начиная с логических вентилей, ОЗУ, транзисторов процессора, заканчивая арифметико-логическим устройством и операциями ввода-вывода. И мне захотелось реализовать всё это в коде.

      Хотя я не настолько интересуюсь физикой микросхем, но книга просто скользит по волнам и красиво объясняет электросхемы и как биты перемещаются по системе — от читателя не требуется знание электротехники. Но мне недостаточно текстового описания. Я должен видеть вещи в действии и учиться на своих неизбежных ошибках. Так я начал реализацию схем в коде. Путь оказался тернист, но поучителен.
      Читать дальше →
    • Самые нестрашные яды


        И снова привет, %username%!

        Спасибо всем, кто оценил мой опус «Самые страшные яды».

        Было очень интересно почитать комментарии, какими бы они ни были, было очень интересно отвечать.

        Я рад, что «хит-парад» понравился. Если он не понравился — ну что ж, я сделал всё, что мог.

        На написание второй части меня вдохновили именно комментарии и активность.

        Итак, представляю очередную смертельную десятку!
        Читать дальше →
      • Прогнозирование физики на стороне клиента в Unity

        • Translation
        image

        TL;DR


        Я создал демо, показывающее, как реализовать прогнозирование на стороне клиента физического движения игрока в Unity — GitHub.

        Введение


        В начале 2012 года я написал пост о как-бы-реализации прогнозирования на стороне клиента физического движения игрока в Unity. Благодаря Physics.Simulate() тот неуклюжий обходной способ, который я описал, больше не нужен. Старый пост до сих пор является одним из самых популярных в моём блоге, но для современного Unity эта информация уже неверна. Поэтому я выпускаю версию 2018 года.

        Что-что на стороне клиента?


        В соревновательных многопользовательских играх необходимо по возможности избегать читерства. Обычно это значит, что применяется сетевая модель с авторитарным сервером: клиенты отправляют серверу вводимую информацию, а сервер превращает эту информацию в перемещение игрока, а потом отправляет снэпшот получившегося состояния игрока обратно клиенту. При этом возникает задержка между нажатием клавиши и отображением результатом, что неприемлемо для любых активных игр. Прогнозирование на стороне клиента — это очень популярная техника, скрывающая задержку, прогнозируя то, каким будет получившееся движение и сразу показывая его игроку. Когда клиент получает результаты от сервера, он сравнивает их с тем, что спрогнозировал клиент, и если они отличаются, то прогноз был ошибочным и нуждается в коррекции состояния.
        Читать дальше →
        • +26
        • 8.2k
        • 5
      • Шпаргалки для тех, кто делает первые шаги



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

          Шпаргалка по электронным компонентам (PDF, 168Kb)
          Шпаргалка по контроллерам AVR (ч.1) (PDF, 61Kb)
          Шпаргалка по контроллерам AVR (ч.2) (PDF, 61Kb)

          PS: Там же, на сайте, имеется любопытный блог с описанием эффектных электронных поделок. Культура исполнения на высоте, приведены ссылки на open source прошивки.
          • +125
          • 15.9k
          • 42
        • Реверсим «Нейроманта». Часть 4: Звук, анимация, Хаффман, гитхаб

            Привет, как вы уже поняли, это продолжение моей истории реверс-инжиниринга и портирования «Нейроманта».



            Реверсим «Нейроманта». Часть 1: Спрайты
            Реверсим «Нейроманта». Часть 2: Рендерим шрифт
            Реверсим «Нейроманта». Часть 3: Добили рендеринг, делаем игру

            Сегодня начнём с двух хороших новостей:


            • во-первых, я больше не один — к проекту присоединился и уже успел внести ощутимый вклад пользователь viiri;
            • во-вторых, теперь у нас есть открытый репозиторий на github.

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

            Читать дальше →
            • +18
            • 3.8k
            • 5
          • Создание системы терминалов в UE4

            • Translation
            image

            Введение


            Наша команда состоит из двух участников:

            Сертач Оган (Sertaç Ogan)

            Меня зовут Сертач, я занимаюсь программированием геймплея. Я разрабатываю проекты на Unreal Engine уже около 3,5 лет. Хотя моя должность называется «программист геймплея», мне нравится и программировать UI. Я работал и продолжаю работать над различными проектами, опубликованными в Steam.

            Также я организую митапы по Unreal Engine в Турции. За прошлый год я организовал множество мероприятий и продолжаю заниматься их организацией. Наряду с этими мероприятиями я подумываю об организации семинаров о разработке игр совместно с университетами и старшими школами. В Турции много людей, которые хотят заниматься разработкой игр и мне нравится делиться накопленным опытом, потому что когда информацией делишься, её становится больше!
            Читать дальше →
          • Пакетная обработка фотографий в Blender

            • Tutorial


            Всем привет!

            Свободно-распространяемый 3D-редактор Blender обладает потрясающими возможностями по созданию трехмерной графики, но это далеко не все, что он умеет делать. В данном туториале я хочу показать как с помощью этой замечательной программы делать быструю и качественную пакетную обработку фотографий для последующего использования их в создании анимации вращения (облет объекта, демонстрация со всех сторон, фото-360).

            В данном уроке мы не станем углубляться в детальные настройки и будем использовать предварительно созданный шаблон. Никаких специальных знаний потребоваться не должно, будет достаточно небольшого опыта в обработке изображений.
            Читать дальше →
          • Радиоконструктор: FM радио на базе Atmega328-P и RDA5807M

              Добрый день, уважаемые хабражители!

              Меня зовут Михаил Матвеев, и я хотел бы представить Вашему вниманию проект современного «радиоконструктора», основанного на МК Atmega328 и чипе RDA5807M.

              Предыстория


              Я думаю, многие из вас не только слышали, но и непосредственно сталкивались с такой платформой, как Arduino. И как показывает моя личная статистика, очень немногие заходят дальше, чем поморгать светодиодами. Когда я познакомился с Arduino в первый раз, меня останавливало то, что не было идей, как именно я бы мог использовать все возможности того же UNO на «полную катушку». Хватило только на сборку простенького робота на двух колёсах и сигнализации. Вместе с тем, хотелось сделать что-то более основательное.
              Читать дальше →
            • Математический фокус для MP3, JPEG и Гомера Симпсона

              • Translation
              Девять лет назад я посещал курс физики в колледже, и мой профессор рассказал одну вещь, которая поразила меня. Я думаю, не будет преувеличением сказать, что это одно из наиболее широко используемых математических открытий — от оптики до квантовой физики, радиоастрономии, сжатия MP3 и JPEG, рентгеновской кристаллографии, распознавания голоса и МРТ. Этот математический инструмент называется преобразование Фурье, в честь французского физика и математика 18-го века Жозефа Фурье. Им пользовались даже Джеймс Уотсон и Фрэнсис Крик, чтобы декодировать структуру двойной спирали ДНК из рентгенограмм, произведенных Розалиндой Франклин. (Крик был экспертом по преобразованиям Фурье, он в шутку назвал свою книгу «Преобразования Фурье для орнитологов», чтобы объяснить суть Уотсону, заядлому любителю птиц).
              Читать дальше →
            • Окна на чистом WinAPI. Или просто о сложном

                Disclaimer

                Казалось бы, что WinAPI уходит в прошлое. Давно уже существует огромное количество кросс-платформенных фреймфорков, Windows не только на десктопах, да и сами Microsoft в свой магазин не жалуют приложения, которые используют этого монстра. Помимо этого статей о том, как создать окошки на WinAPI, не только здесь, но и по всему интернету, исчисляется тысячами по уровню от дошколят и выше. Весь этот процесс разобран уже даже не по атомам, а по субатомным частицам. Что может быть проще и понятнее? А тут я еще…

                Но не все так просто, как кажется.
                Читать дальше →
              • Подключаем геймпад от PS1/PS2 к Raspberry pi

                  На дворе майские праздники. А значит время есть шашлыки и употреблять различные разливные и бутилированные напитки. А я занимаюсь всякой ерундой. Мысль о данном проекте пришла, ещё до нового года. Но я долго не мог его реализовать. Прикупив первый геймпад (который я выкинул в последствии), и попробовав опросить его, я понял, что тут уже не обойтись простым чтением мануалов, хотя инфы достаточно. Благо, на это 23 февраля я получил в подарок не пену для бритья, упакованную в носки, а 600 р. с пожеланием не отказывать себе ни в чём на aliexpress. Где и была куплена китайская копия логического анализатора Saleae Logic. Те, кому интересно, что из этого получилось, могут ткнуть мышкой по кнопке ниже. А те, кому лень читать могут сразу посмотреть результат вот тут.


                  Читаем далее
                • Backspace Invaders или как подключить светодиодный дисплей 64x64 к Arduino

                  • Tutorial

                  4095 светодиодов и все-все-все

                  Как ни удивительно, с выводом изображения на такой дисплей вполне справляется контроллер ATmega328, что лежит в основе Arduino Uno. Из этого всего получилась «карманная» консоль (весом несколько килограмм), в которую прошита игра по мотивам Space Invaders. В планах придумать что-нибудь ещё, ведь свободной памяти осталось полно.

                  Под катом вы сможете прочитать о том, как такой дисплей устроен и как им можно управлять.
                  Читать дальше →
                • Как подружить Custom View и клавиатуру

                    Введение


                    «МойОфис» работает на большинстве современных платформ: это Web-клиент, настольные версии приложения для Windows, MacOS и Linux, а также мобильные приложения для iOS, Android, Tizen. И если в разработке компьютерных приложений уже давно есть основные правила подхода к дизайну интерфейсов, то при создании приложений для мобильных устройств требуется отдельная проработка многих особенностей.


                    Читать дальше →
                  • Игра HellWorm. История разработки

                    Доброго времени суток! Я хотел бы рассказать про свой опыт создания мобильной игры на Unity под названием HellWorm. Из названия можно понять, что игра про червяка. Ползаем, кушаем монетки, не врезаемся в препятствия. Казалось бы, клон классической игры, на которой большинство из нас выросло. Но, на самом деле, параллель со змейкой на этом заканчивается.


                    Игра же позиционирует себя как бесконечный раннер, в котором идет постоянное движение вперед, без возможности свернуть с вертикального маршрута. А сам червь, при всем при этом, может как угодно извиваться (да-да, и даже проползать через себя). Вследствие чего, хотелось бы заострить внимание на трудностях, которые я испытал пытаясь реализовать движение столь незамысловатого персонажа.
                    Читать дальше →
                  • youtube-dl, или как скачать видео с YouTube в качестве 1080p и выше

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

                      Качество картинки на YouTube варьируется от 144p (144 строчки в прогрессивной развёртке) до 8K 4320p. Последнее видео в четыре раза крупнее 4К 2160p, в шестнадцать — 1080p, в тридцать шесть — 720p, который также называют HD.


                      Мало какой компьютер может проиграть это видео в его полном разрешении, а доступных по цене 8K-мониторов в мире просто нет.

                      Технология MPEG-DASH разбивает контент на куски, а браузер запрашивает эти сегменты автоматически. Логично хранить и отдавать отдельно видео и звук. У DASH есть жирный плюс: адаптивность воспроизведения.

                      Несколько лет назад пользователи YouTube заметили введение DASH по тому, что буферизация видео больше не шла до конца ролика, а ограничивалась примерно минутой. Около того же времени другая проблема возникла у скачивающих видео с YouTube. Внезапно обнаружилось, что ролики с качеством 1080p доступны в виде файлов без звука. Сайты-сервисы, которые раньше выдавали ссылки на скачивание видео, отдавали лишь 720p, не выше. Около 1080p стояло «без звука» или «только видео».
                      Читать дальше →
                    • Создание World of Tanks Blitz на базе собственного движка DAVA

                        image

                        Пролог


                        Эта история началась более трех лет назад. Наша небольшая компания DAVA стала частью Wargaming, и мы начали обдумывать, какие проекты делать дальше. Чтобы напомнить, каким был мобайл три года назад, скажу, что тогда не было ни Clash Of Clans, ни Puzzle & Dragons, ни многих очень известных сегодня проектов. Mid-core тогда только-только начинался. Рынок был в разы меньше сегодняшнего.

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

                        Тогда в разработке у нас находилось несколько игр. Одна из них носила рабочее название «Sniper». Основной геймплей-идеей была стрельба в снайперском режиме из стоящего в обороне танка, по другим танкам, которыми управлял AI и которые могли атаковать в ответ.

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

                        С этого все и началось!

                        Когда мы начинали разработку “Снайпера”, то рассматривали технологии, которые тогда были доступны для мобильных платформ. На тот момент Unity был еще на достаточно ранней стадии своего развития: по сути, необходимых нам технологий еще не было.

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

                        Также мы понимали, что на C# мы не сможем выжать максимум из устройств, под которые мы разрабатываем, и всегда будем ограничены.
                        Unreal Engine 3 тоже не подходил по ряду похожих причин.

                        В итоге, мы решили дорабатывать свой движок!
                        Читать дальше →
                      • 2D магия в деталях. Часть третья. Глобальное освещение


                          Глобальное освещение, динамический свет и декали (да, есть такое слово :) ) в действии.


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

                          Читать дальше →
                        • Внимание, радиация. Строим свой интенсиметр* в ожидании Doomsday

                            Однажды в телевизоре появился бледный как смерть Министр Финансов и заявил:

                            — Финансовый кризис нас не затронет. Потому что. Я вам точно говорю.
                            Население, знающее толк в заявлениях официальных лиц, выматерилось негромко и отправилось закупать соль, спички и сахар.
                            М.Жванецкий

                            В последнее время в американских (и не только) СМИ популярна тема грядущей Третьей мировой войны. Некоторые даже догадываются, что она будет атомная (типичный пример The United States and Russia Are Prepping for Doomsday) и произойдет в ближайшие полгода или около того. Если вы уже проверили аптечку, купили крупы, мыло, соль, спички и сахар, то пора подумать о таком важном атрибуте встречи Doomsday, как дозиметр. Предлагаемая схема дозиметра отличается высокой чувствительностью и простотой изготовления из-за отсутствия необходимости наматывать трансформатор высокого напряжения. Также к достоинствам конструкции относится применение широко распространенных деталей, и возможность работать от разных источников питания (надеюсь все помнят как сделать батарейки из картошки), поэтому с ремонтом и эксплуатацией в постапокалиптическом мире будет не слишком сложно.



                            *Интенсиметр — дозиметр плотности потока энергии ионизирующих частиц.
                            Читать дальше →