• Учёные всегда будут доказывать теорему о распределении простых чисел

    • Translation

    Почему математикам нравится доказывать один и тот же результат разными способами?



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

    «Можно не верить в Бога, но нужно верить в Книгу», — сказал как-то венгерский математик Пал Эрдёш. Существующая только в теории «Книга» содержит наиболее элегантные доказательства самых важных теорем. Утверждение Эрдёша намекает на мотивацию математиков, продолжающих искать новые доказательства уже доказанных теорем. Одна из их любимых – это теорема о распределении простых чисел, таких, что делятся только на себя и на 1. И хотя математикам неизвестно, удостоится ли доказательство попадания в «Книгу», за первое место конкурируют два соперника, доказательства, которые одновременно и независимо нашли в 1896 году Жак Адамар и Шарль Жан де Ла Валле-Пуссен.

    Так что же конкретно утверждает эта теорема?
    Читать дальше →
    • +13
    • 5.3k
    • 9
  • SpaceVIL — кроссплатфоремнный GUI фреймворк для разработки на .Net Core, .Net Standard и JVM

    В данной статье я постараюсь рассказать о фреймворке SpaceVIL (Space of Visual Items Layout), который служит для построения пользовательских графических интерфейсов на платформах .Net / .Net Core и JVM.


    SpaceVIL является кроссплатформенным и мультиязычным фреймворком, в его основе лежит графическая технология OpenGL, а за создание окон отвечает библиотека GLFW. Используя данный фреймворк, вы можете работать и создавать графические клиентские приложения в операционных системах Linux, Mac OS X, Windows. Для программистов C# в данное время это особенно актуально, учитывая, что Microsoft не собирается переносить WPF на другие ОС и Avalonia является единственным возможным аналогом. Особенностью же SpaceVIL в этом конкретном случае является мультиязычность, то есть на данный момент фреймворк под .Net Core можно использовать в связке со следующими языками программирования: C#, VisualBasic. Фреймворк под JVM можно использовать в связке с языками Java и Scala. То есть, SpaceVIL можно использовать с любым из этих языков и итоговый код будет выглядеть одинаково, поэтому при переходе на другой язык переучиваться заново не придется.


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

    Читать дальше →
  • О строковом форматировании в современном C++

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

      Читать дальше →
    • Junior FPGA Design Engineer: как стать?

        Всем привет!

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

        Разработка под FPGA (ПЛИС) — это не просто какой-то язык. Это очень объемная область, с огромным количеством подводных камней и нюансов.

        В этой статье вы найдете:
        • список тем, которые должен освоить начинающий разработчик под FPGA
        • рекомендуемую литературу по каждой из тем
        • набор тестовых вопросов и лабораторных работ
        • классические ошибки новичков (и советы по исправлению)

        Добро пожаловать под кат!
        Читать дальше →
      • Разработка интерфейсных плат на SoC Xilinx Zynq 7000 для записи речи в аналоговом и цифровом формате



          В этой статье мы поделимся опытом разработки интерфейсных плат блока сопряжения на базе SoC ARM+FPGA Xilinx Zynq 7000. Платы предназначались для записи речевых сигналов в аналоговом и цифровом формате PRI/BRI (ISDN, E1/T1). Само конечное устройство будет использоваться для фиксации переговоров в гражданской авиации.
          Читать дальше →
        • Модульные спрайтовые персонажи и их анимация

          • Translation
          Эта запись девлога целиком посвящена моей системе анимации персонажей, она наполнена полезными советами и фрагментами кода.

          За последние два месяца я создал целых 9 новых действий игрока (такие забавные вещи как блокировка щитом, уворачивание в прыжке и оружие), 17 новых носимых предметов, 3 набора брони (пластинчатый, шёлковый и кожаный) и 6 видов причёсок. Также я завершил создавать всю автоматизацию и инструменты, поэтому всё уже используется в игре. В статье я расскажу, как этого добился!


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

          Краткое описание


          Изначально я хотел проверить, можно ли совместить наложенные друг на друга спрайты с синхронизованными аниматорами для создания модульного персонажа с заменяемыми причёсками, снаряжением и носимыми предметами. Можно ли объединить нарисованную вручную пиксельную анимацию с по-настоящему настраиваемым персонажем.

          Разумеется, такие функции активно используются в 3D- и 2D-играх с пререндеренными спрайтами или в 2D-играх со скелетной анимацией, но насколько я знаю, существует не так много игр, совмещающих созданную вручную анимацию и модульных персонажей (обычно потому, что процесс оказывается слишком монотонным).
          Читать дальше →
          • +26
          • 9.9k
          • 2
        • Как дебажить переменные окружения в Linux

            Часто бывает так, что приходишь на машину и обнаруживаешь какой-то скрипт, запущенный под системным пользователем неделю назад. Кто его запустил? Где искать этот run.php? Или добавляешь запись в /etc/crontab, а скрипт там падает с ошибкой «command not found». Почему? И что делать? 

            У меня есть ответы на эти вопросы.

            Читать дальше →
          • Улучшаем профиль в LinkedIn перед поиском работы

              На момент написания статьи, в социальной сети LinkedIn размещено порядка 30 миллионов вакансий от 20 миллионов компаний по всему миру. Не удивительно, что 90% рекрутеров используют LinkedIn как один из основных ресурсов поиска кандидатов.

              Правильно оформленный LinkedIn профиль поможет привлечь внимание рекрутеров к вашей кандидатуре. Совместно с командой экспертов по поиску работы за рубежом Relocate.me, мы подготовили короткий гайд по оптимизации профиля LinkedIn перед поиском работы.


              Читать дальше →
            • Сравнение алгоритмов сортировки

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

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

              В данной статье постараемся это выяснить. Для обеспечения наилучших результатов все представленные алгоритмы будут сортировать целочисленный массив из 200 элементов. Компьютер, на котором будет проводится тестирование имеет следующие характеристики: процессор AMD A6-3400M 4x1.4 GHz, оперативная память 8 GB, операционная система Windows 10 x64 build 10586.36.
              Читать дальше →
            • Описание алгоритмов сортировки и сравнение их производительности

              Вступление


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

              Во многом статья посвящена тому, как написать все алгоритмы и протестировать их. Если говорить о самом программировании, то иногда могут возникнуть совершенно неожиданные трудности (во многом благодаря оптимизатору C++). Однако не менее трудно решить, какие именно тесты и в каких количествах нужно сделать. Коды всех алгоритмов, которые выложены в данной статье, написаны мной. Доступны и результаты запусков на всех тестах. Единственное, что я не могу показать — это сами тесты, поскольку они весят почти 140 ГБ. При малейшем подозрении я проверял и код, соответствующий тесту, и сам тест. Надеюсь, что статья Вам понравится.
              Читать дальше →
            • Кросс-компиляция OpenCV 4 для Raspberry Pi и BeagleBone Black

              Всем привет.

              Когда я захотел установить OpenCV на свою малинку для одного проекта, я был сильно разочарован результатом. Оказалось, что для новых версий образов Raspbian с поддержкой Python3.7 невозможно установить из репозитория библиотеку столь привычной командой pip install.
              Читать дальше →
              • +22
              • 7.3k
              • 6
            • Опыт интеграции онлайн кассы Атол с собственной торговой CRM

              • Tutorial
              Вокруг онлайн касс в последнее время дикий ажиотаж, 1 июля 2019 заканчивается последняя отсрочка, поэтому и мне пришлось заняться этим вопросом. Тем, у кого 1С или другая система особо можно не напрягаться, но если у вас собственная самописная система, то на ваши плечи ложится еще и интеграция с онлайн-кассами.

              Мой опыт пригодится для интеграции с кассами Атол в режиме обмена данными по сети, ваша программа может отправлять данные на web-сервер Атол как на локалхост, так и по локальной сети, можно хоть из браузера AJAX отправлять, хоть с сервера через CURL, поэтому, неважно на каком языке написан ваш корпоративный софт, всё кроссплатформенно.
              Читать дальше →
            • Удивительные возможности нейросетей 2019 года



                Кажется, не проходит и дня без того, чтобы в новостях не проскочило сообщение со словами «искусственный интеллект», «нейросеть», «машинное обучение». Это и не удивительно, алгоритмы постоянно совершенствуются, получают новые знания, включая информацию о каждом из нас. И это вырисовывает весьма интересные перспективы будущего, с персонализированными товарами, пищей и развлечениями. Но обо всем по порядку.
                Читать дальше →
              • Удобоваримый вызов Java методов из нативного кода

                Существует довольно много приложений под Android, которые совмещают C++ и Java код. Где Java выступает оберткой/прослойкой, а C++ выполняет всю грязную работу. Пожалуй, ярким примером могут служить игры. В связи с этим часто приходится вызывать Java код из нативного для доступа к системным свойствам и плюшкам, которые предоставляет система (переключится на другую активность, послать или скачать что-либо из интернета). Причин много, а проблема одна: каждый раз приходится писать в лучшем случае 5 строчек кода и помнить, какую сигнатуру функции нужно запихнуть в параметр. Потом еще нужно перевести эти параметры в нужный тип. Стандартный пример из туториалов:

                long f (int n, String s, float g); 
                

                Строка-сигнатура для данного метода будет (ILjava/lang/String;F)J.

                Вам удобно это все запоминать? А переводить С-строки в jstring? Мне — нет. Мне хочется писать:

                CallStaticMethod<long>(className, “f”, 1, 1.2f); 
                

                Подробности под катом
              • Оптимизация поиска в ширину: как обработать граф с 10 миллиардами состояний

                • Translation
                image

                Пару месяцев назад мне наконец пришлось признать, что я недостаточно умён, чтобы пройти некоторые уровни головоломки Snakebird. Единственным способом вернуть себе часть самоуважения было написание солвера. Так я мог бы притвориться, что создать программу для решения головоломки — это почти то же самое, что и решить её самому. Код получившейся программы на C++ выложен на Github. Основная часть рассматриваемого в статье кода реализована в search.h и compress.h. В этом посте я в основном буду рассказывать об оптимизации поиска в ширину, который бы потребовал 50-100 ГБ памяти, чтобы он уместился в 4 ГБ.

                Позже я напишу ещё один пост, в котором будет описана специфика игры. В этом посте вам нужно знать, что мне не удалось найти никаких хороших альтернатив грубому перебору (brute force), потому что ни один из привычных трюков не сработал. В игре множество состояний, потому что есть куча подвижных или толкаемых объектов, при этом важна форма некоторых из них, которая может меняться со временем. Не было никакой пригодной консервативной эвристики для алгоритмов наподобие A*, позволяющих сузить пространство поиска. Граф поиска был ориентированным и заданным неявно, поэтому одновременный поиск в прямом и обратном направлении оказался невозможным. Единственный ход мог изменить состояние множеством несвязанных друг с другом способов, поэтому не могло пригодиться ничего наподобие хеширования Зобриста.

                Приблизительные подсчёты показали, что в самой большой головоломке после устранения всех симметричных положений будет порядка 10 миллиардов состояний. Даже после упаковки описания состояний с максимальной плотностью размер состояния составлял 8-10 байт. При 100 ГБ памяти задача оказалась бы тривиальной, но не для моей домашней машины с 16 ГБ памяти. А поскольку Chrome нужно из них 12 ГБ, мой настоящий запас памяти ближе к 4 ГБ. Всё, что будет превышать этот объём, придётся сохранять на диск (старый и ржавый винчестер).
                Читать дальше →
              • Android NDK: работа с OpenSL ES

                День добрый, Хабражители.

                Я ранее писал про OpenAL. Позже товарищ zagayevskiy написал хорошую статью по OpenSL ES. В одной из наших игр, дабы не переписывать весь код по работе со звуком, мы не стали переписывать всё на OpenSL ES (при порте на Android). В игре использовалось не так много звуков, поэтому проблем с OpenAL не было. А вот в последней игре у нас использовалось много звуков (специфика игры обязывает), вот тут-то мы и столкнулись с большой проблемой (задержки при воспроизведении — меньшая из них). Было решено переписать всё на OpenSL ES. Для этого я написал парочку враперов, про которые уже рассказывал. Решил поделиться этим и на хабре, может кому-то пригодится.

                1. Краткое описание OpenSL ES.
                2. Аудио контент.
                3. Немного про обёртки.
                4. Принцип работы с объектами.
                5. Инициализация библиотеки (контекста).
                6. Работа со звуками.
                7. Проигрывание PCM.
                8. Проигрывание сжатых форматов.
                9. Заключение.
                10. Доп. информация.

                Читать дальше →
                • +16
                • 12.6k
                • 2
              • Более быстрая альтернатива Java Reflection

                • Translation
                Всем привет. Сегодня хотим поделиться с вами переводом статьи, подготовленным специально для студентов курса «Разработчик Java».

                В моей статье Specification Pattern (паттерн Спецификация) я специально не упомянул о лежащем в основе компоненте, который сильно помог в реализации. Здесь я подробнее расскажу о классе JavaBeanUtil, который я использовал, чтобы получить значение поля объекта. В том примере это был FxTransaction.



                Конечно, вы скажете, что для получения того же результата можно использовать Apache Commons BeanUtils или одну из его альтернатив. Но мне было интересно покопаться в этом и то, что я изучил, работает намного быстрее любой библиотеки, построенной на основе широко известного Java Reflection.
                Читать дальше →
              • Введение в Android NDK

                Для разработки приложений под ОС Android, Google предоставляет два пакета разработки: SDK и NDK. Про SDK существует много статей, книжек, а так же хорошие guidelines от Google. Но про NDK даже сам Google мало что пишет. А из стоящих книг я бы выделил только одну, Cinar O. — Pro Android C++ with the NDK – 2012.

                Эта статья ориентирована на тех, кто ещё не знаком (или мало знаком) с Android NDK и хотел бы укрепить свои знания. Внимание я уделю JNI, так как мне кажется начинать нужно именно с этого интерфейса. Так же, в конце рассмотрим небольшой пример с двумя функциями записи и чтения файла. Кто не любит много текста, тот может посмотреть видео версию.
                Читать дальше →
              • Онлайн-кассы как легальный отъем денег у бизнеса

                  Здравствуйте! Думаю, многие в курсе, что с 1 февраля 2017 года контрольно-кассовая техника должна отправлять электронные версии чеков оператору фискальных данных — новые правила установлены в 54-ФЗ ст.2 п.2.

                  ЭКЛЗ нужно было заменить на фискальный накопитель, подключить кассу к интернету, заключить договор с оператором фискальных данных и отправлять чеки в электронном виде в ФНС через оператора фискальных данных.

                  Естественно, части бизнеса (коснулось не всех, многим ИП отсрочили до 1.07.2019) пришлось приобрести новую контрольно-кассовую технику, а старую отложить на склад или вовсе выкинуть.

                  image

                  У бизнеса появились следующие статьи расходов

                  Обязательных расходов:

                  • Приобретение ККТ (Контрольно-кассовая техника)
                  • Приобретение ФН (Фискальный накопитель)
                  • Договор с ОФД (Оператор фискальных данных)

                  Возможных расходов:

                  • Интернет для ККТ
                  • Интеграция в IT-Инфраструктуру
                  Читать дальше →
                • Где взять аудиосемплы для ваших проектов: подборка из девяти тематических ресурсов

                    В прошлый раз мы делали подборку ресурсов с полноценными музыкальными композициями для приложений, игр или видео. Сегодня рассказываем о площадках с библиотеками коротких звуков и семплов, распространяемых в основном по лицензиям класса Creative Commons.

                    Читать дальше →
                    • +29
                    • 9.9k
                    • 5