• Реверс-инжиниринг одной строчки JavaScript

    • Перевод
    Несколько месяцев назад я получил от друга такое письмо:



    Тема: Можешь объяснить мне эту одну строчку кода?

    Текст: Считай меня тупым, но… я не понимаю её и буду благодарен, если растолкуешь подробно. Это трассировщик лучей в 128 символах. Мне кажется, он восхитительный.

    <pre id=p><script>n=setInterval("for(n+=7,i=k,P='p.\\n';i-=1/k;P+=P[i%2?(i%2*j-j+n/k^j)&1:2])j=k/i;p.innerHTML=P",k=64)</script>



    Эта строчка JavaScript отрисует анимацию, которая показана на изображении под катом. В браузере она запускается здесь. Скрипт написан автором www.p01.org, где вы можете найти эту и много других классных демок.
    Читать дальше →
  • Как мы упоролись и откалибровали кофе-машину на спектрофотометре



      Однажды, посреди рабочего дня мы внезапно осознали, что мы больше не можем так жить. Душа требовала совершить что-то бессмысленное и беспощадное во имя науки. И мы решили откалибровать кофе-машину. Нормальные люди тыкают в дефолтную кнопку и пьют все, что вытечет из кофеварки. Чуть более продвинутые для этого открывают инструкцию и тщательно ей следуют. Может быть еще читают рекомендации обжарщика, если конечно это не прогорклые noname зерна, которые пару лет лежали на безымянном складе. Нас к нормальным можно отнести с большой натяжкой, поэтому мы решили идти своим путем. Короче говоря, под легкой кофеиновой интоксикацией от седьмой чашки эспрессо мы решили задействовать весь возможный арсенал лаборатории, чтобы получить эталонный напиток.

      Добро пожаловать в мир безумия, ультрацентрифуг, спектрофотометрии кофе в специальных планшетах и небольшого количества python, pandas и seaborn, чтобы визуализировать все это безобразие.
      Читать дальше →
    • Хабра-граф, -сообщества и куда же делась вся карма

        Вступление


        Cегодня мы вместе с анализом графов, data mining, subgroup discovery и всеми веселыми штуками взглянем на Хабр. Весь код и данные прилагаются — каждый может взглянуть на них самостоятельно, легко повторить рассчеты из статьи и найти что-то интересное самостоятельно.




        (это не просто картинка для привлечения внимания, а — граф связей ~45000 пользователей Хабра по тому, кто на кого подписан; размер вершины пропорционален числу подписчиков; все картинки кликабельны; подробности далее)



        Обсуждаемые проблемы возникли, конечно же, далеко не вчера, но некоторые их аспекты кажутся мне достаточно новыми и поэтому достойными дискуссии, основанной на непредвзятых и репрезентативных данных. Например в комментариях этой статьи, увидел интересное утверждение:

        Тут проблема в том, что на всем хабре за сегодня не насчитать больше 50-80 человек, которые вообще могут голосовать. У 90% пользователей карма просто ниже 5. Как итог оценивают комментарии и статьи только избранные. Это как жюри выходит такое.

        И решил, что стоить его сформулировать в виде гипотезы и проверить:

        Q1: Правда ли, что Хабр превратился в жюри-based сообщество, где два с половиной человека голосуют за статьи?

        Вот в этой статье к нам вернулись "железные" Хабы и стало интересно, а как вообще представлены разные сообщества внутри Хабра? Формулируем в виде гипотезы:

        Q2: Как сегментировано сообщество, или проще говоря сколько у нас здесь групп по интересам и соотвествуют ли они имеющимся хабам?

        Последнее, но не менее интересное наблюдение, что активность на Хабре упала (по данным Хабра-пульса и моим субъективным наблюдениям), что даже решили ввести аккаунты "read & comment". Поэтому решил оценить активность сообщества и продумать, как информация о структуре сообщества может нам помочь:
        Q3: Насколько активно сообщество и как нам может помочь структура внутренних групп?


        За подробностями добро пожаловать под кат.

        Структура статьи

        Читать дальше →
      • О том, как рисовать кривые графики в стиле XKCD

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


          Читать дальше →
        • Детальный анализ Хабрахабра с помощью языка Wolfram Language (Mathematica)


            Скачать пост в виде документа Mathematica, который содержит весь код использованный в статье, вместе с дополнительными файлами, можно здесь (архив, ~147 МБ).

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

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

            В посте будут рассматриваться статьи, относящиеся к хабам, всего в анализе участвовало 62000 статей из 264 хабов. Статьи, написанные только для корпоративных блогов компаний в посте не рассматривались, а также не рассматривались посты, не попавшие в группу «интересные».

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

            Оглавление


            Импорт списка хабов
            Импорт ссылок на все статьи Хабрахабра
            Импорт всех статей Хабрахабра
            Функции извлечения конкретнных данных из символьного XML представления поста
            Создание базы данных постов Хабрахабра с помощью Dataset
            Результаты обработки данных
            Краткий анализ хабов
            Граф связей хабов на Хабрахабре
            Количество статей в зависимости от времени
            Количество изображений (видео), используемых в постах в зависимости от времени
            Облака ключевых слов Хабрахабра и отдельных хабов
            Сайты, на которые ссылаются в статьях на Хабрахабре
            Коды, которые приводят в статьях на Хабрахабре
            Частота встречи слов
            Рейтинг и числа просмотров постов, а также вероятность достижения их определенных значений
            Зависимость рейтинга и числа просмотров поста от времени публикации
            Зависимость рейтинга поста от его объема
            Заключение
            Читать дальше →
          • Раздача научного софта. Бесплатно


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

              Я бы хотел совершенно безвозмездно поделиться частью своих наработок (тем, что не очень стыдно показать) с хабрасообществом, в надежде, что они могут оказаться полезными для молодых (и не очень) ученых, аспирантов и студентов, и кто-то сможет использовать их в своей работе. Вашему вниманию предлагается следующее (в порядке возрастания специфичности):
              • SciRef — менеджер цитирований.
              • AFM Vision — удобная визуализация данных атомно-силовой микроскопии.
              • Raman 2D — построение карты распределения интенсивности Рамановского излучения.
              • X-Ray Calc — симуляция рентгеновской дифракции тонких пленок.

              Подробное описание возможностей, скриншоты (много) и ссылки — под катом.
              Читать дальше
            • Реклама помогает поддерживать и развивать наши сервисы

              Подробнее
              Реклама
            • Гармонические колебания

                На хабре было несколько статей по преобразованию Фурье и о всяких красивостях типа Цифровой Обработки Сигналов (ЦОС), но неискушённому пользователю совершенно не понятно, зачем всё это нужно и где, а главное как это применить.


                АЧХ шума.

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



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

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

                  На днях специалисты Neuroscape Lab создали 3D-визуализацию работы мозга. Видео получено следующим образом: вначале мозг добровольца сканировался на MRI, затем подключаются электроды электроэнцефалографа, и проводится мониторинг работы мозга, визуализация чего накладывается на ранее отсканированную модель мозга.

                  Читать дальше →
                • Простыми словами о преобразовании Фурье

                  Я полагаю что все в общих чертах знают о существовании такого замечательного математического инструмента как преобразование Фурье. Однако в ВУЗах его почему-то преподают настолько плохо, что понимают как это преобразование работает и как им правильно следует пользоваться сравнительно немного людей. Между тем математика данного преобразования на удивление красива, проста и изящна. Я предлагаю всем желающим узнать немного больше о преобразовании Фурье и близкой ему теме того как аналоговые сигналы удается эффективно превращать для вычислительной обработки в цифровые.

                  image (с) xkcd

                  Без использования сложных формул и матлаба я постараюсь ответить на следующие вопросы:
                  • FT, DTF, DTFT — в чем отличия и как совершенно разные казалось бы формулы дают столь концептуально похожие результаты?
                  • Как правильно интерпретировать результаты быстрого преобразования Фурье (FFT)
                  • Что делать если дан сигнал из 179 сэмплов а БПФ требует на вход последовательность по длине равную степени двойки
                  • Почему при попытке получить с помощью Фурье спектр синусоиды вместо ожидаемой одиночной “палки” на графике вылезает странная загогулина и что с этим можно сделать
                  • Зачем перед АЦП и после ЦАП ставят аналоговые фильтры
                  • Можно ли оцифровать АЦП сигнал с частотой выше половины частоты дискретизации (школьный ответ неверен, правильный ответ — можно)
                  • Как по цифровой последовательности восстанавливают исходный сигнал


                  Я буду исходить из предположения что читатель понимает что такое интеграл, комплексное число (а так же его модуль и аргумент), свертка функций, плюс хотя бы “на пальцах” представляет себе что такое дельта-функция Дирака. Не знаете — не беда, прочитайте вышеприведенные ссылки. Под “произведением функций” в данном тексте я везде буду понимать “поточечное умножение”

                  Итак, приступим?
                • Алгоритм Х или что общего между деревянной головоломкой и танцующим Линком?



                  Предисловие


                  Как-то в гостях мне в руки попалась головоломка, в которой из 25 одинаковых фигурок требовалось собрать куб. Я провозился с ней почти весь вечер, и как можно догадаться, абсолютно безрезультатно. Тем не менее, я не мог сдаться просто так.

                  Не можешь сам — заставь компьютер. Сказано — сделано. В результате написанному по наитию алгоритму пришлось работать всю ночь, чтобы найти все 4 уникальных решения. В процессе гугления решений для сравнения, я нашёл программу Burr Tools, которая справилась с этой задачей за 3 минуты на моём ноутбуке.

                  Такая разница в скорости заставила меня разобраться, как решается эта задача и ещё целый класс подобных.

                  Так как же решается эта задача и ещё целый класс подобных?
                Самое читаемое