• «Магическая константа» 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.

    Да, понадобится немного математики, но школьного курса будет более, чем достаточно.
    Читать дальше →
  • У нас длинные руки: 7 зарубежных площадок, на которых можно найти удалённую работу

      Развитие телекоммуникационных технологий — это win-win для работодателей и работников: компании могут находить таланты по всему миру, а люди могут работать откуда угодно, лишь бы был Wi-Fi. И популярность удалённой работы лишь растёт. К примеру, согласно отчёту Gallup, в 2015 году 37% респондентов ответили, что работают удалённо частично или весь рабочий день. Это было на 7 процентных пунктов больше, чем в 2008. И нет причин считать, что эта тенденция сегодня изменилась.

      Чем больше людей обращаются к подработке, фрилансу или удалённой работе на полную ставку, тем чаще возникает вопрос: где именно мне найти работу, которая позволит отказаться от поездок в офис? Предлагаем вашему вниманию семь зарубежных площадок, на которых можно найти удалённую работу.
      Читать дальше →
    • Закон об онлайн-кассах: давайте ставить точки? Электронные деньги и агрегаторы

        Сегодня анализировал toster, несколько форумов и блогов, где обсуждаются вопросы ФЗ №54 об онлайн-кассах (как ККТ) и пришёл к выводу, что абсолютное большинство онлайн-предпринимателей до сих пор не сделало выводов о том, что именно предписывает данный акт.

        Ниже вы узнаете:

        нужна ли ККТ при приёме пластиковых карт и электронных денег?
        нужна ли ККТ при приёме платежей через агрегаторов?

        Дабы не повторяться — остальные аспекты можно посмотреть тут и тут, или даже вот здесь. И да — ещё ликбез.



        Итак, электронные деньги (Яндекс, Qiwi, PayPal, но — внимание! — не WebMoney).

        Начинаем, как учат всех юристов-первокурсников с названия: ФЗ называется «О контрольно-кассовой технике при осуществлении наличных денежных расчетов и (или) расчетов с использованием электронных средств платежа».

        Далее открываем мой «любимый» ФЗ №161 «О национальной платёжной системе», а именно — ст. 3 и читаем: «электронное средство платежа — средство и (или) способ, позволяющие клиенту оператора по переводу денежных средств составлять, удостоверять и передавать распоряжения в целях осуществления перевода денежных средств в рамках применяемых форм безналичных расчетов с использованием информационно-коммуникационных технологий, электронных носителей информации, в том числе платежных карт, а также иных технических устройств».

        Идём дальше и читаем ст. 1.2 ФЗ №54 (тот, что о ККТ): «Контрольно-кассовая техника применяется на территории Российской Федерации в обязательном порядке всеми организациями и индивидуальными предпринимателями при осуществлении ими расчетов, за исключением случаев, установленных настоящим Федеральным законом». О сроках и субъектах уже говорил, поэтому акцентируемся на другом.
        пояснение про исключения
      • Игры, в которых нужно писать код: Grid Garden, Elevator Saga и другие


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

          Читать дальше →
        • Английский для собеседований в IT-компании: что нужно для старта карьеры?

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


            Читать дальше →
          • Дерек Сиверс: «Метод интервального повторения — лучший способ изучения языков программирования»

            • Перевод
            Краткая справка: в 1998 году Дерек Сиверс основал компанию CD Baby и превратил ее в крупнейшего онлайн-продавца независимой музыки. В 2008-ом вырученные от продажи компании $22 миллиона Дерек передал в благотворительный траст на нужды музыкального образования.
            Речи Дерека на TED просмотрели более 5 миллионов раз, а его собственная книга занимала первую строку в чарте книг для предпринимателей на Amazon.
            Сам себя Дерек считает «вечным учеником».


            Я уже год использую этот метод обучения и могу сказать, что он – самый эффективный из тех, с которыми мне довелось столкнуться за 14 лет изучения программирования.
            Читать дальше →
          • 14 полезных сервисов и приложений для изучения английского

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


              Читать дальше →
            • Раскрываем тему WebAssembly с Бренданом Айком

              • Перевод
              (Прим. перев.: технологии asm.js и WebAssembly ещё не вышли в практическую плоскость, о них регулярно идут сдержанные сигналы с самых верхов Олимпа разработки веб-технологий (Mozilla, Microsoft, Google), но многие об их состоянии знают мало. Значит, самое время — узнать о них сейчас.

              Представлено интервью Брендана Айка, сделанное 31 марта 2017 года Оно — на 1.5 часа, но 2-я половина — про проект браузера Brave, не относится к компиляторам JS), создателя Javascript и журналистов из SE Daily.

              Читать дальше →
            • 90+ бесплатных ресурсов для самостоятельного обучения онлайн

              • Tutorial

              Хочу поделиться списком полезных образовательных ресурсов, среди которых каждый найдет для себя что-то интересное и новое. Главное рассмотрим в начале — IT и иностранные языки. А следом будет подборка сервисов и ютуб-каналов, связанных с наукой, образованием в целом, бизнесом и творчеством.


              image
              Читать дальше →
            • CrateDB: снаружи как PostgreSQL, а внутри Elasticsearch

                С моей прошлой публикации о распределенной базе данных CrateDB прошло около года. Проект на основе Elasticsearch и PrestoDB написан на Java. Он за это время активно развивался и обрастал новым функционалом в github репозитарии:

                • поддержка outer join;
                • case when… then… end в запросах;
                • функции для работы с пространственными(Geospatial) данными;
                • возможно отображение данных временных рядов (Time Series) в Grafana;
                • ограниченная поддержка подзапросов;
                • узлы кластера работающие в режиме только чтения;
                • эмуляцией подмножества протокола PostgreSQL 9.5;


                Приятной неожиданностью было обнаружить в github проекта, что в команде CrateDB есть русскоговорящий разработчик Руслан. Достаточно быстро получил от него ответ на вопросы про внутреннее устройство и зависимости проекта.
                Читать дальше →
                • +14
                • 6,1k
                • 4