• OpenCL. Как начать

    • Tutorial

    Тяжелый старт


    Всем привет! Какое-то время назад я начал копать тему с OpenCL под C#. Но наткнулся на трудности, связанные с тем, что не то, что под C#, а вообще по этой теме очень мало материала. Какую-то вводную по OpenCL можно почерпнуть здесь. Так же простой, но работающей старт OpenCL описан вот тут. Ни на йоту не хочу обидеть авторов, но все статьи, что я находил на русском (и на хабре в том числе) страдают одной и той же проблемой — очень мало примеров. Документация есть, её много и как принято для хорошей документации читается сложно. В своей статье (а если всё будет нормально, то и в цикле статей), я постараюсь поподробней описать эту область, с точки зрения человека, который начал её копать с нуля. Думаю такой подход будет полезен тем кто хочет быстро стартовать в высоко производительных вычислениях.
    Дальше
  • Вычисляем баллистические траектории в играх

    • Translation

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

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

    Уравнения движения


    Задача всегда начинается одинаково. У нас есть стреляющий и цель: под каким углом нужно стрелять снарядом, чтобы он поразил цель?

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

      Эта статья является конспектом книги «Маленькая книга о черных дырах». Материал посвящен таким астрономическим объектам, как рентгеновские двойные и квазары.

      В 1960-е и 1970-е годы в понимании черных дыр произошла настоящая революция. Современное теоретическое представление о черных дырах было в целом построено именно тогда благодаря математическим достижениям и глубоким прозрениям многих исследователей. В то же самое время астрономы все глубже и дальше вглядывались во Вселенную, используя все более чувствительные оптические и радиотелескопы. Были открыты два новых класса астрономических объектов: квазары и рентгеновские двойные системы. Именно там, как сейчас думают ученые, и находятся черные дыры.

      Читать далее
      • +42
      • 10.1k
      • 8
    • Как одним движением сжечь 10000$ и получить удар током


        Представим себе в сущности довольно-таки заурядную ситуацию: у вас сломался сетевой источник питания. Вы берете в руки мультиметр и измеряете напряжение на входе и выходе источника. На входе у вас честные 230 В переменного тока из розетки, а на выходе по нулям. Вы знаете, что ваш источник питания – импульсный, и вы в курсе про то, что транзисторами источника управляет ШИМ-контроллер, который очень легко идентифицируется на плате.
        На столе у вас стоит новенький осциллограф Tektronix DPO 7254 или какой-нибудь LeCroy WavePro 7300A ценою более 10000$, и вы решаете посмотреть с его помощью сигналы ШИМ-контроллера, чтобы диагностировать его исправность или неисправность. На щупе осциллографа написано, что его максимально допустимое напряжение равно 1000 В, это с хорошим запасом больше напряжения в розетке. Непосредственно на самом осциллографе рядом с разъемами для подключения щупов написана цифра 400 V, кроме того, у вас щуп с делителем 1:100, что тоже вселяет уверенность, что все будет в порядке. Вы включаете осциллограф и пробуете подключить его щуп к плате источника питания, однако, как только вы касаетесь щупом осциллографа платы источника питания, проскакивает искра и раздается громкий ба-бах. Экран вашего новенького осциллографа безжизненно потухает, сам осциллограф не реагирует ни на какие кнопки, а комнату заполняет характерный запах сгоревшей электроники. Что же произошло? Почему сгорел осциллограф и как такого избежать? Обо всем этом читайте под катом.
        Читать дальше →
      • Как удалить «неудаляемые» приложения со смартфона



          Чтобы увеличить привлекательность смартфонов, производители ставят на них как можно больше разных программ. Это понятно. Просто берём и удаляем ненужное… Стоп.

          Оказывается, некоторые программы невозможно удалить. Например, на отдельных моделях Samsung невозможно удалить Facebook (есть только опция 'disable'). Говорят, на Samsung S9 вдобавок предустановлены «неудаляемые» приложения Microsoft.

          Эти смартфоны приведены для примера. Такая же проблема и на других моделях. На многих есть неудаляемые программы от самого производителя.

          Всё это надо зачистить.
          Читать дальше →
        • 70 лет компьютерной истории, обращенные в музыку

          • Translation

          Реконструкция Colossus в британском Национальном музее вычислительной техники, Блетчли парк

          Поздно ночью в британском Национальном музее вычислительной техники несколько старейших машин пробудились от длительного механического сна. Композитор и саунд-дизайнер Мэтт Паркер сделал 126 записей звучания компьютеров, заключавших в себе 70-летнюю историю развития, чтобы сохранить эти редчайшие голоса и преобразовать их в музыку.
          Читать дальше →
          • +26
          • 3.6k
          • 7
        • Поиск, устранение и предупреждение утечек памяти в C# .NET: 8 лучших практик

          • Translation

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

          Умение обнаруживать, исправлять и предупреждать утечки памяти — очень важный навык. Здесь я перечислю 8 лучших практик, используемых мной и моими коллегами старшими .NET разработчиками, которые и вдохновили меня написать эту статью. Эти методы научат вас определять, когда в приложении возникает утечка памяти, находить и исправлять ее. Наконец, я включил в статью стратегии для мониторинга и отчета об утечках памяти в уже развернутых программах.

          Утечки памяти в .NET
          • +14
          • 6.8k
          • 8
        • Планировщик Windows? Это очень просто

            Реализация одной из ответственных задач моделирования в очередной раз привела к сложностям с операционной системой (ОС). Попытка решить задачу «под Windows», т.е. просто запустить программу, не применяя специальных средств, почти удалась, однако время от времени возникали недопустимые задержки. Эти, возникавшие случайно и редко (раз в несколько минут) задержки никак не удавалось убрать. Например, последовательное снятие всех «лишних» процессов Windows улучшало ситуацию, но, в конце концов, приводило к отказу самой ОС. Положение затрудняло и то, что проведение сравнительно долгого сеанса моделирования не позволяло на все 20-30 минут сеанса установить работающему потоку приоритет «реального времени», так как при этом нормальная работа компьютера нарушалась. Таким образом, несмотря на мощный и гибкий механизм планирования на основе приоритетов, потребовалось особое планирование, не предусмотренное в Windows, а именно: заданный поток в течение определенного периода не должен прерываться по истечению кванта времени, и на время его работы потоки с более низким приоритетом вообще не должны получать управление. Но при этом потоки с изначально более высоким приоритетом должны выполняться как обычно. Поскольку такие высоко приоритетные потоки обычно не занимают весь свой квант времени, время отклика для нужного потока в целом уменьшается и зависит от быстродействия компьютера.

            Встал вопрос: можно ли настроить Windows на такой режим работы и как это сделать?

            Читать далее
          • Программист учится рисовать. Дневник Емели

              Так получилось, что моим основным хобби на лихой 2020-й год стало освоение ремесла рисования.

              Еще в январе я дал себе некое обещание в виде цели к концу года — прокачать навык рисования (звучит конечно абстрактно и совсем не по SMART-у, я думаю, это и повлияло в дальнейшем на то, как я развивал этот навык весь год и что получилось в итоге).

              spoiler
              В конце года я остался доволен собой и окончательно понял, что я хотел бы прокачиваться и дальше!

              image
              Так выглядел мой уровень изобразительных навыков в ноябре предыдущего (2019-го) года

              Формат подачи данной статьи — это на 95% личный дневник, который я вел в гугл-доке, записывая, что я делал каждый месяц, свои ощущения и как-то фиксируя собственный прогресс — смотрел, сколько работ мне удалось нарисовать и какого они были качества — нравились ли они мне лично или были совсем так себе по исполнению.
              Читать дальше →
            • Как связать несвязанное

                Явное лучше неявного.


                В данной статье рассматривается задача пересчета неявных связей элементов графа в явные. В общем-то ответом является одна несложная формула, которая приведена под номером 3. Все остальные слова понадобились для того, чтобы рассказать, откуда она берется, и как ею пользоваться. Я написал данную статью для тех, кто интересуется анализом данных вообще и графов в частности.
                Читать дальше →
              • Использование SEH в 32 разрядных приложениях Windows с компилятором Mingw-W64

                  Что такое SEH


                  Из всех механизмов, предоставляемых операционными системами семейства Windows, возможно наиболее широко используемым, но не полностью документированным, является механизм структурной обработки исключений (он же Structured Exception Handling, или просто – SEH). Структурная обработка исключений — это сервис, предоставляемый операционной системой, механизм обработки программных и аппаратных исключений в операционной системе Microsoft Windows, позволяющий программистам управлять обработкой исключений. Исключение — это событие при выполнении программы, которое приводит к её ненормальному или неправильному поведению.

                  Вся документация по SEH, которую вы, вероятно, найдете, описывает одну лишь компиляторно-зависимую оболочку, созданную функциями библиотеки времени выполнения (Run-Time-Library, RTL) вокруг реализации SEH операционной системы. В ключевых словах _try, _finally, или _except, нет ничего магического. Группы разработчиков из Microsoft, занимающиеся разработкой операционных систем и компиляторов, определили эти ключевые слова, и то, что они делают. Другие поставщики компиляторов просто поддержали эту семантику. Видимые программисту инструменты SEH уровня компилятора призваны скрыть базовый механизм SEH уровня операционной системы, что позволяет не обнародовать детали функционирования последнего. Основные детали базового механизма SEH уровня ОС будут рассмотрены в этой статье. В статье отражены личные взгляды и предпочтения автора.
                  Читать дальше →
                • К вопросу об истории и роли личности в ней (не по Плеханову)

                  • Tutorial

                  Макс Вэйн, Мистер Хьюлет и дождливый воскресный день.


                  Предисловие переводчика – вот тот, в общем то, не слишком частый случай, когда я испытываю жгучую зависть к автору и досаду от того, что родился не там, где следовало бы и не тогда, когда надо было бы. Надеюсь, многие читатели Хабра испытают, по крайней мере, первую половину этих чувств при прочтении этой поистине восхитительной статьи и будут снисходительны к огрехам перевода. Выложить ссылку на оригинал, как положено для перевода, я, к сожалению, не могу, поскольку статья входит в совершенно потрясающую книгу «Analog Circuit Design: Art, Science, and Personalities», где я ее взял, я Вам не скажу, но надеюсь, Вы догадались, где ее можно найти.

                  Ну а теперь собственно перевод. Там будут картинки, но не для привлечения внимание, а просто без них никак.
                  Читать дальше →
                • Пишем простой Path Tracer на старом добром GLSL

                  • Tutorial

                  На волне ажиотажа вокруг новых карточек от Nvidia с поддержкой RTX, я, сканируя хабр в поисках интересных статей, с удивлением обнаружил, что такая тема, как трассировка путей, здесь практически не освящена. "Так дело не пойдет" - сказал я и решил, что неплохо бы запилить что-нибудь небольшое из этой темы, да и так, чтобы другим полезно было. Тут как кстати API собственного движка нужно было протестировать, поэтому решил - запилю-ка я свой простенький path-tracer прямо во фрагментном шейдере. Что из этого вышло, думаю вы уже догадались по превью к этой статье

                  Читать далее
                • Теория инвестиций для начинающих, часть 3

                    Паулюс Поттер. Медвежья охота. 1649 г. Государственный музей, Амстердам.

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

                    • как оценить, насколько успешен портфельный управляющий (посчитать связь доходности портфеля с доходностью рынка);
                    • кто такая «альфа», и почему все её ищут (доход, превышающий обычную премию за систематический риск);
                    • какой из участвовавших в сравнении фондов российских акций показал лучший результат (личный портфель автора!);
                    • какой фокус позволил автору заработать «альфу» (ставка на конкретный систематический риск, который не видит наивная модель).
                    Читать дальше →
                  • Как увидеть ℼ? Нужно швырнуть ℼ в стену

                      Лучший способ объяснить школьникам и самому себе, что такое фазовое (конфигурационное) пространство.

                      image


                      Дано: Два блока массой 1 кг и 100 (10 000, 1 000 000,… 100x) кг. Трение в системе отсутствует, удары абсолютно упругие (потерь энергии нет). Более массивный блок ударяет менее массивный и тот отскакивает от него, а потом от стенки слева. Справа стены нет, тела могут двигаться в бесконечность.

                      Вопрос: Сколько столкновений совершит маленький блок, пока система не придет в состояние, когда столкновения невозможны (скорость маленького тела меньше скорости большого, двигающегося в бесконечность)?

                      Ответ невероятен:

                      image


                      В очередной раз поражаюсь изящности объяснений от 3Blue1Brown. Предлагаю читабельный конспект с небольшими сокращениями и дополнениями.
                      Читать дальше →
                    • Оптическая иллюзия 2020

                        image


                        Я просидел у монитора 15 минут с кусками бумаги, пытаясь разоблачить подвох. Интересно, а если вместо стрелочек использовать слова «влево», «вверх», «вниз» сохранится ли эффект?

                        Оптическую иллюзию выложили в Твиттер 25 ноября и она бомбанула. Тысячи человекочасов потеряны, сотни тысяч листиков приложено к экрану.

                        Для сомневающихся:
                        Читать дальше →
                      • Анатомия GNU/Linux

                        Какое-то время назад на Хабре была небольшая волна постов на тему «Почему я [не] выбрал Linux». Как порядочный фанатик я стриггерился, однако решил, что продуктивнее что-нибудь рассказать о своей любимой системе, чем ломать копии в комментариях.

                        У меня сложилось впечатление, что многие пользователи GNU/Linux слабо представляют, из чего сделана эта операционная система, поэтому утверждают, что она сляпана из попавшихся под руку кусков. В то же время, архитектура большинства дистрибутивов является устоявшейся и регламентируется рядом стандартов, включая стандарт графического окружения freedesktop.org и Linux Standard Base, расширяющий стандарты Unix. Мне при знакомстве с GNU/Linux несколько лет назад для погружения не хватало простой анатомической карты типичного дистрибутива, поэтому я попробую рассказать об этом сам.

                        Читать далее