• Формула белогривых лошадок: 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. наслаждаться неземной красотой
        • +36
        • 2,1k
        • 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 приводится подробная реализация на питоне.
                                  Там же есть ссылки для жаваскрипта и схемы.
                                  наглядный пример на питоне