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



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

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

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



        У-Мэнь заметит:
        Как бы ни были мудры разработчики,
        им не предусмотреть всех ситуаций.
        Реалистичность в играх —
        погоня иллюзий за иллюзиями.
      • Визуализация модели данных

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

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

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

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

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

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

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

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

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

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

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

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

                    В видео презентации добавлен русский перевод субтитров.

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

                    Перевод совершался совместными усилиями команды HabraTranslation:
                    hellt, ruguevara, Wit, qmax, djvu, Helpa, Вадим Барсуков, nashev
                    Им помогали: Марина Оганян, Юлия Папелис, delorfin, GigaByTe26

                    Отдельное спасибо ruguevara и сервису translated.by.
                  • контакты из вконтакта

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

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

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

                      Теперь я снова в контакте.

                      Upd.
                      возможно расширение функционала скрипта в формате расширения/аддона к файрфоксу.
                      предложения уже обсуждаются в комментах
                    • средства для совместного он-лайн перевода

                        Disclamer: Это незавершённая статья о средствах для совместной работы. Вы можете помочь сообществу, исправив и дополнив её :)
                        (статья публикуется для аггрегации мнений и опыта онлайн перевода)

                        В целом, при совместном переводе актуальны следующие моменты:
                        • формат представления: разбивка текста на отдельные блоки — предолжеиня/параграфы
                        • средства редактирования и импорта/експорта, возможность альтернативных переводов
                        • доступ к словарю, автоматическому переводу
                        • координация совместной деятельности
                        • контроль состояния процесса:
                          • обозначение статуса каждого переведённого блока (подстрочный перевод, литературизированный, спорный момент, окончательный вариант, итп)
                          • индикатор завершённости
                          • история изменений
                        • предоставление доступа

                        По этим пунктам, ИМХО, и стоит рассматривать доступные средства.
                        Читать дальше →
                      • русский перевод презентации Google Wave

                          Завершён перевод на русский субтитров к Google Wave Developer Preview.
                          Перевод доступен формате srt.
                          (в субтитрах много нахлёстов, которые не все плэеры умеют корректно отображать. mplayer показывает их с опцией -overlapsub).

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

                          Перевод осуществлён совместными усилиями команды HabraTranslation:
                          qmax, tom, nc00x, Voidus, sfunx, @P_r_i_m_a_t, Nashev, djvu, hellt, david_mz, (а также поприветствуем новых хабраюзеров: ) stok_man, terre, Moran, karlicos, cr_az, andrew.shyn.

                          Также выражаем благодарность ArMikael и DileSoft за привлечение ресурсов.
                          И разработчикам Google Docs за средства совместной работы, которыми вы воспользовались :)

                          P.S.
                          Неактуальные ссылки:
                          посмотреть на overstream
                          ролик со встроенными субтитрами на рутюбе
                        • Перевод на русский презентации Google Wave Developer Preview на Google IO 2009

                            На конференции Google IO, состоявшейся в конце мая 2009,
                            Гугл презентовал революционную технологию Google Waves.
                            Это одна из немногих и самая первая презентация технологии.
                            Но презентация, как и другие материалы, доступны толко на английском.
                            (Upd: перевод статьи Тима О'Рейли)
                            Многие в IT сфере хорошо владеют английским, но далеко не у всех есть практика восприятия живой речи.

                            В связи с этим предлагаю совместными усилиями сделать перевод текста этого выступления.

                            Upd: При хорошем раскладе, можно будет сделать субтитры и предложить их гуглу, или самим залить на ютюб.

                            Целей у затеи можно усмотреть несколько:
                            1. Дать возможность более полно ознакомиться с презентацией тем, кто плохо воспринимает английский на слух, или же вовсе не понимает его.
                            2. Попрактиковаться в аудировании и переводе с английского.
                            3. Поиграть с уже существующими средствами совместной работы, предоставляемыми Гуглом в виде GoogleDocs (Upd: и google groups)
                            4. ?????
                            5. just fun

                            детали реализации
                          • стерео-тетрис

                              Технология SIRDS (Single Image Random Dot Stereograms) — это способ создания изображений, которые выглядят рельефными при разглядывании с фокусированием взгляда за плоскостью изображения.
                              Тысячи их можно найти в сети.
                              Можно даже найти анимированные.

                              Так вот, а это — стереотетрис.

                              P.S.
                              возможно, будет проще, если поставить монитор поближе.
                              P.P.S.
                              и мышку отодвинуть.

                              P.S. 2
                              zlogic нашёл ещё и sird-версию quake.
                              но это уже полный фейерверк! :)
                            • 4ёх-мерные игры

                                В топике о десятимерном пространстве, помимо идей об употреблении веществ и всяких астральных проекциях, высказывались идеи о четырёхмерной игре, чтобы «посмотреть, как это выглядит».
                                Тут имеется ввиду 4 пространственных измерения.
                                Фокусы с ветвлением и наложением во времени есть в играх типа Chronotron и аналогичных.
                                обзор существующих игр и соображения по реализации
                              • генерация читабельной абракадабры

                                  На просторах интернета можно найти сервисы для генерации бессмысленных текстов, известных также как «Lorem Ipsum».
                                  Обычно они используются в качестве «рыбы» для заполнения всяких макетов дизайна.
                                  Как вариант — можно использовать их в качестве текстов для клавиатурных тренажёров.

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

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

                                  Примерно такого рода:
                                  проверь понечеромым трядом дробления нам людейских поезжайшегорьких хоченьки пальнюю требит мой летах рвал зары всего моженские имендующим тобы междем общил кармию в совкостия по был отец не ревождели был на им будет это его персон прекарту его в пел знаю за не светним нарк лежаться свадцатили архия стебя друг друг кто надостественностно цификся и месть своих руки к я котовые года на их полтай уда в ночь до останцуз друглые перь без увидим выне дем ее пенокль тысячий фея за худовороездке дня паспоказатянул волько на и стем пал в же продобретных из идела профессет и насмешок горкульто неволет тера


                                  На мой вкус, это гораздо веселее.

                                  Идея довольно проста — она заключается в том, чтобы генерировать текст по буквам, с учётом их сочетаемости в русском языке.
                                  Читать дальше →
                                • Prett Parsing — метод Вогана Пратта для разбора выражений

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

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

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

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

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

                                    На сайте effbot.org приводится подробная реализация на питоне.
                                    Там же есть ссылки для жаваскрипта и схемы.
                                    наглядный пример на питоне