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



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

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

      мегабайты монохромных картинок под катом!
    • Визуализация модели данных

        Для 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. наслаждаться неземной красотой
      • Полезные мелочи: перекодировка неправильной раскладки

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

          Способ автоматически перенабирать текст.
        • Игровая алхимия и алхимическая онтология

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

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

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

            идеи и размышления по реализации
          • мои первые игрушки: волновой гаджет «Meeting Time Matcher»

              Собираться группами по трое и больше — обычная практика для людей.
              Иногда можно созвониться и договориться о месте и времени встречи, иногда можно объявить о встрече у себя в блоге.
              Однако, ситуация может заметно осложниться, если вы собираете не тусовку на свой день рождения в родной деревне, а онлайновую встречу с участниками из разных концов света и, как следствие, в разных часовых поясах, которых только в России 11. Так, что когда у вас среда, у кого-то может быть уже четверг, и выбрать оптимальное время для встречи может оказаться нетривиально

              Сделанный мной гаджет предназначается какраз для таких ситуаций.
              • организатор вставляет в объявление гаджет и обозначает даты, когда предполагается встреча;
              • участники отмечают в табличке время, когда они в эти дни свободны, и их выбор запоминается;
              • гаджет показывает, сколько участников могут быть в онлайне для каждого интервала времени;
              • все участники видят табличку в своём родном часовом поясе, но при желании могут переключиться на чужой, посмотреть «сколько это у него времени будет»;

              image
              Посмотреть в действии можно в этой волне
              URL гаджета для вставки в волны кнопкой «install gadget by URL» есть во вкладке «help».
              А в отдельной волне есть инсталятор с удобной кнопкой, чтоб не париться с URLами.

              подробности разработки
            • Использование ГуглоГрупп для ограничения доступа к волнам

                Вольный и немного дополненный перевод из Groups: The Google Groups Solution (Elliot Cable et al)
                Это до сих пор не упоминается нигде в публичных волнах или документах, и, наверное самое время обозначить этот момент. Особенно с учётом уязвимости публичных волн.
                Сервер ГуглоВолны имеет поддержку групп и минимальные средства ограничения доступа на их основе.Они просто забыли нам об этом сказать.
                Реализовано это с помощью уже существующего сервиса — Google Groups.
                В будущем, волны будут иметь свои собственные средства управления доступом, но пока это единственно доступное временное решение.
                Читать дальше →