• Нормали и обратное транспонирование, часть 2: сопряжённые пространства

    • Translation

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


    Но некоторые вопросы были заметены под ковёр.

    Читать дальше →
  • Как определить, что в жестком диске применена технология SMR



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

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

      Для определения того что в диске, лежащем на полке магазина, применена технология SMR, если эта информация не указывается производителем явно, требуется знать модельные ряды и их особенности. По другому, похоже, никак. Не получится со 100% вероятностью определить это и по заявленным характеристикам диска.

      Но если диск уже попал к вам в руки, определить использование технологии SMR можно достаточно просто. Далее я расскажу о том, как это сделать.
      Читать дальше →
    • Задача о ранце в криптографии (Knapsack problem in cryptography)

      Задача о рюкзаке (или Задача о ранце) в криптографии (англ. Knapsack problem) — это задача, на основе которой американские криптографы Ральф Меркл и Мартин Хеллман разработали первый алгоритм шифрования с открытым ключом.

      Далее в программе

      • Формулировка задачи о рюкзаке (+почему рюкзак?)
      • Легкая и трудная проблемы
      • Примеры
      • История
      Читать дальше →
      • +15
      • 3.8k
      • 5
    • Быстрый поиск касательных и пересечений у выпуклых многоугольников


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


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

        Читать дальше →
      • 13 инструментов для обработки текста в командной оболочке

        • Translation
        • Tutorial
        Здесь представлен фрагмент будущей книги «Основные инструменты и практики для начинающего разработчика программного обеспечения» Бальтазара Рубероля и Этьена Броду. Книга должна помочь образованию подрастающего поколения разработчиков. Она охватит такие темы, как освоение консоли, настройка и эффективная работа в командной оболочке, управление версиями кода с помощью git, основы SQL, инструменты вроде Make, jq и регулярные выражения, основы сетевого взаимодействия, а также лучшие практики разработки программного обеспечения и совместной работы. В настоящее время авторы упорно работают над этим проектом и приглашают всех поучаствовать в списке рассылки.

        Содержание


        Читать дальше →
      • Утилиты командной строки могут быть в 235-раз быстрее вашего Hadoop кластера

        • Translation
        Примечания tsafin:

        Перед публикацией своего цикла статей по MapReduce в Caché, мне показалось важным озвучить данную прошлогоднюю точку зрения из статьи Адама Дрейка «Command-line tools can be 235x faster than your Hadoop cluster». К сожалению оригинальная статья Тома Хайдена, на которую он ссылается стала уже недоступна на сайте Тома, но её, по-прежнему, можно найти в архивах. Для полноты картины предлагаю ознакомиться и с ней тоже.

        Введение


        Посещая в очередной раз свои любимые сайты, я нашел крутую статью Тома Хайдена об использовании Amazon Elastic Map Reduce (EMR) и mrjob для вычисления статистики отношения выигрыш/проигрыш в наборе данных со статистикой по шахматным матчам, которую он скачал с сайта millionbase archive, и c которой он начал играться используя EMR. Так как объем данных был всего 1.75GB, описывающий 2 миллиона шахматных партий, то я скептически отнесся к использованию Hadoop для данной задачи, хотя были и понятны его намерения просто поиграться и изучить плотнее, на реальном примере, утилиту mrjob и инфраструктуру EMR.
        Читать дальше →
      • Dell Precision 7550: мощная и портативная рабочая станция для дизайнеров и видеографов

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


          Для таких профессионалов существуют рабочие станции Dell Precision. Новые 15- и 17-дюймовые модели Precision 7550 и 7750 получили мощное железо, но при этом, довольно эргономичный дизайн, за счёт чего с ними удобно работать в офисе и дома, и даже брать в командировку. Шутка ли, но тут 64 ГБ памяти, процессор Intel Xeon и дискретная видеокарта NVIDIA Quadro RTX 3000.
          Читать дальше →
        • 7 слов в английском, которые встречаются в СМИ реже чем 3 случая на 100 миллионов



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

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

            Но большинство все же считаются активными — их используют не часто, но они живы. В этой статье мы расскажем о самых редких словах, которые используются в современных СМИ и литературе реже чем 3 случая на 100 миллионов. То есть, не чаще одного раза во всех газетах и журналах США за весь год. Поехали.
            Читать дальше →
          • Факторизация и эллиптическая кривая. Часть III




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

              Если пройтись по Интернету и по статьям об ЭК на Хабре, то после этого возникает мысль, что существует определенный пробел всех без исключения публикаций, включая и объемные бумажные книги. Авторы почему-то считают само-собой разумеющимся понимание природы ЭК и ее аддитивной группы, ее появление. На самом деле ЭК и ее группа (мое мнение) — это чудо!

              Группа точек плоскости, множество которых замкнуто по операции сложения, оказалась каким-то образом встроена в ЭК и мы об этом до сего дня не знали бы, не располагая теорией групп, и даже при наличии теории групп, без гения Эйлера и Пуанкаре, которые нам эту группу открыли. В свое время Иоганн Кеплер открыл человеку законы движения Планет и качественно описал их траектории, но только гений Ньютона смог объяснить природу этих законов.

              Правда для этого ему пришлось открыть свои законы движения/тяготения и изобрести дифференциальное и интегральное исчисления. Задача взятие двукратного интеграла от второго закона Ньютона, в котором ускорение — вторая производная пути, решением имеет плоскую кривую второго (не третьего, не путать эллипсы — траектории планет, спутников и эллиптические кривые в криптологии) порядка, что до И. Ньютона было открыто И.Кеплером.
              Читать дальше →
            • Новый алгоритм проверки пересечений в графах прятался на виду

              • Translation

              Два специалиста по информатике нашли в весьма неожиданном месте идею, которая как раз пригодилась им для прорыва в теории графов




              В октябре 2019 Якоб Хольм и Ева Ротенберг пролистывали работу, опубликованную ими за несколько месяцев до этого – и вдруг поняли, что наткнулись на нечто серьёзное.

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

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

              В своей предыдущей статье упоминалось об общем решении диофантового уравнения.


              На сегодня существует несколько алгоритмов нахождения общего решения.


              Один из них размещен на сайте кафедры теории чисел мехмата МГУ.


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


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


              Для решения нам понадобится только явная формула решения диофантового уравнения с двумя переменными.


              $\begin{cases}x_k=ca^{\phi(b)-1}+bk,\\y_k=c\frac{1-a^{\phi(b)}}{b}-ak,\end{cases}\\k\in\mathbb{R}$


              где

              $\phi()$


              — функция Эйлера
              Решение состоит из двух этапов.
              Читать дальше →
              • +10
              • 1.4k
              • 4
            • Что покупать для глубокого обучения: личный опыт и советы использования GPU

              • Translation
              Перевод статьи Тима Деттмерса, кандидата наук из Вашингтонского университета, специалиста по глубокому обучению и обработке естественного языка

              Глубокое обучение (ГО) – область с повышенными запросами к вычислительным мощностям, поэтому ваш выбор GPU фундаментально определит ваш опыт в этой области. Но какие свойства важно учесть, если вы покупаете новый GPU? Память, ядра, тензорные ядра? Как сделать лучший выбор по соотношению цены и качества? В данной статье я подробно разберу все эти вопросы, распространённые заблуждения, дам вам интуитивное представление о GPU а также несколько советов, которые помогут вам сделать правильный выбор.

              Статья написана так, чтобы дать вам несколько разных уровней понимания GPU, в т.ч. новой серии Ampere от NVIDIA. У вас есть выбор:

              1. Если вам не интересны детали работы GPU, что именно делает GPU быстрым, чего уникального есть в новых GPU серии NVIDIA RTX 30 Ampere – можете пропустить начало статьи, вплоть до графиков по быстродействию и быстродействию на $1 стоимости, а также раздела рекомендаций. Это ядро данной статьи и наиболее ценное содержимое.
              2. Если вас интересуют конкретные вопросы, то наиболее частые из них я осветил в последней части статьи.
              3. Если вам нужно глубокое понимание того, как работают GPU и тензорные ядра, лучше всего будет прочесть статью от начала и до конца. В зависимости от ваших знаний по конкретным предметам вы можете пропустить главу-другую.

              Каждая секция предваряется небольшим резюме, которое поможет вам решить, читать её целиком или нет.
              Читать дальше →
            • Поиск родственников через тест ДНК. Часть 2 — Какой тест ДНК купить и как?

                Я уже рассказывал о пользе ДНК-тестирования при поиске родственников и составлении генеалогического древа, а теперь расскажу как выбрать и купить тест и как его отправить обратно. Уже потом будут получение результата и его анализ, но сначала надо купить сам тест и сдать биоматериал, а также отправить тест обратно.

                Как наша ДНК сохраняет информацию о наших предках


                Я уже рассказывал подробно в другой статье, но надо повториться.

                Каждому ребёнку передаются хромосомы от родителей: Y-хромосома только от отца к сыну, а X-хромосома от матери к сыновьям и к дочерям, но сыновья X-хромосому дальше уже не передают, точнее сыновья передают своим дочерям X-хромосому своей матери (бабушки дочерей) но далее при передаче потомкам эта «отцовская» X-хромосома инактивируется. И каждая ДНК несёт в себе информацию о всех ваших предках независимо от пола, но с каждым новым поколением процентное содержание информации о более старых предках разбавляется информацией о новых, условно каждый раз делится на два. Отсюда следует возможность сделать тест и выявить совпадения частичек ДНК между разными людьми. Собственно, об этом и пойдёт речь ниже.

                Какие тесты ДНК бывают?


                Тесты ДНК можно разделить на 3 типа: тест мужской линии (Y-ДНК), тест женской линии (Mt-ДНК), аутосомный тест (AU-днк).

                image
                Читать дальше →
              • Как нарисовать звезду (и не только) в полярных координатах

                  Вопрос о формуле для многоугольника в полярных координатах регулярно возникает на тематических ресурсах — и так же регулярно остаётся без внятного ответа. В лучшем случае попадается решение через функцию остатка от деления — что не является «чистым» с математической точки зрения, поскольку не позволяет производить над функцией аналитические преобразования. Видимо, настоящие математики слишком заняты решением проблем тысячелетия и поисками простого доказательства теоремы Ферма, чтобы обращать внимание на подобные банальные задачи. К счастью, в этом вопросе воображение важнее знания, и для решения этой задачи не нужно быть профессором топологических наук — достаточно знания школьного уровня.
                  Дальше больше картинок
                • Код Рида-Соломона


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

                  Так, например, для определенного Рида-Соломона кода (РС-кода) необходимо установить:

                  • длину n кодового слова (блока);
                  • количество k информационных и N-k проверочных символов;
                  • неприводимый многочлен р(х), задающий конечное поле GF(2r);
                  • примитивный элемент α конечного поля;
                  • порождающий многочлен g(x);
                  • параметр j кода;
                  • используемое перемежение;
                  • последовательность передачи кодовых слов или символов в канал и еще некоторые другие.

                  Здесь в работе рассматривается несколько другая частная задача — моделирование собственно РС-кода, являющаяся центральной основной частью названной выше задачи анализа кода.
                  Читать дальше →
                  • +12
                  • 4.6k
                  • 7
                • Как писать книгу по физике в LaTeX. Cтатья 1

                  • Tutorial
                  Это моя первая статья на Хабре.

                  Глава 1. Введение


                  1.1 Позвольте представиться и почему я это пишу

                  Я — научный сотрудник, физик. Недавно выпустил книгу по спектроскопии объемом 880 страниц и весом 1560 грамм. Эту книгу я писал 9 лет, параллельно читая лекции по ее содержимому. Она отняла у меня очень много времени, что естественно. Что не естественно — это то, что громадная часть потраченного времени ушла на оформление, то есть на изучение языка Латех. И это при том, что я на Латехе пишу всю жизнь, лично написал и опубликовал около 50 статей в разных издательствах.

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

                  После публикации книги (пока, увы, только на русском языке) у меня возникло громадное желание написать ещё книгу "Как написать книгу по физике в Латехе"
                  Читать дальше →
                • std::atomic. Модель памяти C++ в примерах

                    Для написания эффективных и корректных многопоточных приложений очень важно знать какие существуют механизмы синхронизации памяти между потоками исполнения, какие гарантии предоставляют элементы многопоточного программирования, такие как мьютекс, join потока и другие. Особенно это касается модели памяти C++, которая была создана сложной таковой, чтобы обеспечивать оптимальный многопоточный код под множество архитектур процессоров. Кстати, язык программирования Rust, будучи построенным на LLVM, использует модель памяти такую же, как в C++. Поэтому материал в этой статье будет полезен программистам на обоих языках. Но все примеры будут на языке C++. Я буду рассказывать про std::atomic, std::memory_order и на каких трех слонах стоят атомики.

                    Читать далее
                  • Исправление кратных ошибок при кодировании сообщений



                      В информационных системах обмен сообщениями в сетях связи или вычислительных сопровождается возмущающими воздействиями среды или нарушителя, что приводит к появлению искажений сигналов и к ошибкам в символах при цифровой передаче. Борьбу с этим явлением ведут, используя корректирующие коды. Ранее я описывал код Хемминга, и показал как исправляется одиночная ошибка в кодовом слове. Естественно возник вопрос и о ситуациях с большим количеством ошибок. Сегодня рассмотрим случай двух ошибок в кодовом слове (кратную ошибку). С одной стороны, все в теории более менее просто и понятно, но с другой — совершенно не очевидно. Изложение материала выполнено на основе работ Э. Берлекемпа.
                      Читать дальше →
                    • Лучшие практики bash-скриптов: краткое руководство по надежным и производительным скриптам bash

                      • Translation

                      Shell wallpaper by manapi

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

                      Команда Mail.ru Cloud Solutions перевела статью с рекомендациям, благодаря которым вы сможете лучше писать, отлаживать и поддерживать свои сценарии. Хотите верьте, хотите нет, но ничто не может сравниться с удовлетворением от написания чистого, готового к использованию bash-кода, который работает каждый раз.

                      В статье автор делится тем, что узнал за последние несколько лет, а также некоторыми распространенными ошибками, которые заставали его врасплох. Это важно, потому что каждый разработчик программного обеспечения в определенный момент своей карьеры работает со сценариями для автоматизации рутинных рабочих задач.
                      Читать дальше →
                    • Использование таймеров systemd вместо заданий cron

                      • Translation
                      Сейчас я занимаюсь заменой моих cron-заданий на таймеры systemd. Я пользовался таймерами несколько лет, но обычно в тонкости их применения особо не углублялся, разбираясь лишь с тем, что нужно было для выполнения интересующей меня задачи. Недавно я работал над серией материалов про systemd и узнал о том, что systemd-таймеры обладают некоторыми очень интересными возможностями.



                      Эти таймеры, как и задания cron, могут, в заданное время, вызывать выполнение различных действий в системе. Например — запуск скриптов командной оболочки или программ. Таймеры могут срабатывать, например, раз в день, причём — только по понедельникам. Ещё один пример — срабатывание таймера каждые 15 минут в рабочее время (с 8 утра до 6 вечера). Но таймеры systemd могут кое-что такое, что недоступно заданиям cron. Например, таймер может вызвать скрипт или программу через заданное время после некоего события. Таким событием может быть загрузка системы или запуск systemd, завершение предыдущей задачи или даже завершение работы сервиса, вызванного ранее по таймеру.
                      Читать дальше →