Открыть список
Как стать автором
Обновить
103.5
Карма
0
Рейтинг
Максим Васильев @qmax

Инженер

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

Работа с 3D-графикой


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

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

мегабайты монохромных картинок под катом!
Всего голосов 35: ↑34 и ↓1 +33
Просмотры15.9K
Комментарии 11

Скрипт: монтирование 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
Читать дальше →
Всего голосов 2: ↑1 и ↓1 0
Просмотры2.4K
Комментарии 1

дзен коан для gamedev

Игры и игровые приставки


У-Мэнь заметит:
Как бы ни были мудры разработчики,
им не предусмотреть всех ситуаций.
Реалистичность в играх —
погоня иллюзий за иллюзиями.
Всего голосов 176: ↑156 и ↓20 +136
Просмотры518
Комментарии 46

Визуализация модели данных

Google App Engine
Для 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. наслаждаться неземной красотой
Всего голосов 44: ↑40 и ↓4 +36
Просмотры2.7K
Комментарии 8

Полезные мелочи: перекодировка неправильной раскладки

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

Способ автоматически перенабирать текст.
Всего голосов 43: ↑37 и ↓6 +31
Просмотры6K
Комментарии 79

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

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

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

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

подробности разработки
Всего голосов 11: ↑10 и ↓1 +9
Просмотры212
Комментарии 27

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

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

перевод Best Practices for Architecting GWT App

Чулан
Группа HabraTranslation
взялась за перевод презентации
(Google I/O 2009) Best Practices for Architecting GWT App.

Приглашаю присоединиться желающих, знакомых с спецификой Java, Web-разработок и слэнгом программистов.
Всего голосов 3: ↑3 и ↓0 +3
Просмотры474
Комментарии 2

IO-2009: Google Wave: Under the Hood теперь по-русски

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

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

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

Отдельное спасибо ruguevara и сервису translated.by.
Всего голосов 40: ↑36 и ↓4 +32
Просмотры280
Комментарии 16

контакты из вконтакта

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

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

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

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

Upd.
возможно расширение функционала скрипта в формате расширения/аддона к файрфоксу.
предложения уже обсуждаются в комментах
Всего голосов 112: ↑83 и ↓29 +54
Просмотры3.1K
Комментарии 85

средства для совместного он-лайн перевода

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

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

По этим пунктам, ИМХО, и стоит рассматривать доступные средства.
Читать дальше →
Всего голосов 7: ↑5 и ↓2 +3
Просмотры4.2K
Комментарии 12

русский перевод презентации Google Wave

IT-компании
Завершён перевод на русский субтитров к 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
ролик со встроенными субтитрами на рутюбе
Всего голосов 93: ↑82 и ↓11 +71
Просмотры540
Комментарии 88

Перевод на русский презентации 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

детали реализации
Всего голосов 44: ↑36 и ↓8 +28
Просмотры1.1K
Комментарии 36

стерео-тетрис

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

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

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

P.S. 2
zlogic нашёл ещё и sird-версию quake.
но это уже полный фейерверк! :)
Всего голосов 45: ↑39 и ↓6 +33
Просмотры395
Комментарии 78

4ёх-мерные игры

Игры и игровые приставки
В топике о десятимерном пространстве, помимо идей об употреблении веществ и всяких астральных проекциях, высказывались идеи о четырёхмерной игре, чтобы «посмотреть, как это выглядит».
Тут имеется ввиду 4 пространственных измерения.
Фокусы с ветвлением и наложением во времени есть в играх типа Chronotron и аналогичных.
обзор существующих игр и соображения по реализации
Всего голосов 60: ↑56 и ↓4 +52
Просмотры8.7K
Комментарии 110

генерация читабельной абракадабры

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

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

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

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


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

Идея довольно проста — она заключается в том, чтобы генерировать текст по буквам, с учётом их сочетаемости в русском языке.
Читать дальше →
Всего голосов 21: ↑17 и ↓4 +13
Просмотры1.1K
Комментарии 24

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

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

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

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

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

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

На сайте effbot.org приводится подробная реализация на питоне.
Там же есть ссылки для жаваскрипта и схемы.
наглядный пример на питоне
Всего голосов 38: ↑36 и ↓2 +34
Просмотры4.6K
Комментарии 15

континуации и stateful веб-программирование (Updated!)

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

Она заключается в том, чтобы использовать континуации (continuations) для магического превращения RESTful (stateless) веб-приложений в более удобный и привычный stateful формат.
Читать дальше →
Всего голосов 44: ↑37 и ↓7 +30
Просмотры2.3K
Комментарии 95

Кабельное хозяйство

Системное администрирование
По индукции на статью arxontа.

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

Опишу правила, которых мы придерживаемся (стараемся придерживаться) в нашей конторе (~80 компов, ~80 телефонов, 8 камер наблюдения, 4 сервера, 8 VoIP шлюзов, 1 стойка, полтора провайдера, полтора сисадмина)
Читать дальше →
Всего голосов 51: ↑43 и ↓8 +35
Просмотры10K
Комментарии 68

Информация

В рейтинге
5,830-й
Откуда
Новосибирск, Новосибирская обл., Россия
Зарегистрирован
Активность