• Формула белогривых лошадок: perlin noise в картинках



      Наверняка всякий, кто встречался с «перлиновым шумом» (perlin noise), пробовал генерить текстуру облаков.
      Потомучто оно само напрашивается.

      О шуме Перлина на хабре уже была статья, но в ней очень мало картинок.

      мегабайты монохромных картинок под катом!
    • Скрипт: монтирование vdi виртуалок на Dom0 в XenServer 6

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

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

        В общем, алгоритм подключения такой:
        1. узнать uuid нужного vdi (с помощью xe vdi-list)
        2. создать vbd-устройстко с воткнутым в него этим vdi (xe vbd-create)
        3. подключить это усртройство к Dom0-VM (xe vbd-plug)
        4. узнать имя блочного устройства, которое получило это vbd (xe vbd-list)
        5. делать с ним что угодно средствами операционки. (mount, fdisk, etc)
        6. отключить vbd устройство от Dom0 (xe vbd-unplug)
        7. удалить vbd (xe vbd-destroy)

        Для автоматизации всего этого процесса и исключения необходимости копипаста UUIDов я нарисовал небольшой скриптец: serial-experiments-qmax.googlecode.com/svn/xenserver/vdiutil
        Читать дальше →
      • Визуализация модели данных

          Для django есть хорошая утилитка, которая анализирует описание модели данных и рисует её графическое представление в dot-формате graphviz.
          Сегодня переписал эту утилитку под appengine.

          image

          Утилита распознаёт Expando (добавляет многоточие в список атрибутов),
          наследование от PolyModel (рисует стрелки наследования),
          а также ссылочные свойства (в том числе самодельные, типа ManyToManyProperty).

          Как пользоваться:
          1. засунуть скрипт в каталог с sdk
          2. запустить её из корневого каталога приложения, указав аргументами список модулей для анализа (в формате имён дя import):
            python path/to/modelviz.py models.foo models.bar > models.dot
          3. сконвертить полученный dot-файл во что-нибудь более удобное, например, в png:
            dot models.dot -Tpng > models.png
          4. наслаждаться неземной красотой
          • +36
          • 1,6k
          • 8
        • Полезные мелочи: перекодировка неправильной раскладки

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

            Способ автоматически перенабирать текст.
          • 64разрядные грабли

              64битные процессоры появились весьма давно (AMD64 — Апрель 2003г, Intel64 — Июнь 2004г.)
              Однако не всё так гладко в этом королевстве.

              Понятно, что 64разрядная система даёт некоторый прирост производительности (подсчитано, что от 0.6% до 45%).
              Однако при практическом использовании 64битной архитектуры до сих пор вылазят различные грабли.
              И, возможно, для определённого класса пользователей они окажутся принципиальнее, чем производительность.

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

              парочка, для затравки
            • Prett Parsing — метод Вогана Пратта для разбора выражений

                В тему компиляций и вычислений выражений.

                В далёком 1973 году Воган Прэтт (Vaughan Pratt) предложил простой и эффективный метод разбора выражений, не использующий ни автоматы, ни грамматику как таковую.

                Идея заключается в том, что каждый символ (token) наделяется свойствами:
                lbp = приоритет связывания символа слева,
                nud = функция, определяющая результат применения оператора в начале выражения,
                led = функция, определяющая результат применения в середине выражения.

                Основной разбор осуществляется по схеме:
                разбор(приоритет продолжения):
                    вытолкнуть символ из входного потока
                    результат = вызов nud этого символа
                    пока приоритет lbp следующего в потоке символа > приоритета продолжения:
                        вытолкнуть символ из входного потока
                        результат = применени led этого символа к текущему результату
                

                Константы и переменные имеют приоритет связывания 0, а функция nud возвращает их значение (или ссылку). Поэтому применение разбора к константам сразу возратит их значение.
                Для бинарных операторов функция led рекурсивно вызывает продолжение разбора (справа) вплоть до более низкого приоритета, и делает что-нибудь с уже накопленым (слева) результатом, и полученным рекурсивно.
                Результат применения оператора аггрегируется для внешнего вызова.
                Много-арные операторы — получают аргументы дополнительным вызовом функции разбора.
                Префиксные операторы делаются с помощью определения для них функции nud.
                Для правостороннего связывания меняется приоритет продолжения рекурсивного разбора.

                На сайте effbot.org приводится подробная реализация на питоне.
                Там же есть ссылки для жаваскрипта и схемы.
                наглядный пример на питоне
              • континуации и stateful веб-программирование (Updated!)

                  Идея совсем не нова. Идея древна.
                  Однако большинство наблюдаемых вокруг веб-фреймворков упорно игнорируют эту идею.

                  Она заключается в том, чтобы использовать континуации (continuations) для магического превращения RESTful (stateless) веб-приложений в более удобный и привычный stateful формат.
                  Читать дальше →
                • Кабельное хозяйство

                    По индукции на статью arxontа.

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

                    Опишу правила, которых мы придерживаемся (стараемся придерживаться) в нашей конторе (~80 компов, ~80 телефонов, 8 камер наблюдения, 4 сервера, 8 VoIP шлюзов, 1 стойка, полтора провайдера, полтора сисадмина)
                    Читать дальше →