Pull to refresh
103
0
Максим Васильев@qmax

Инженер

Send message

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

Reading time3 min
Reach and readers17K


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

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

мегабайты монохромных картинок под катом!

Скрипт: монтирование vdi виртуалок на Dom0 в XenServer 6

Reading time1 min
Reach and readers2.9K
Время от времени возникает необходимость залезть в файловую систему виртуалки извне самой виртуалки.
Например, пофиксить рухнувшую систему, или залить содержимое из другого источника.

Наиболее универсальный, независящий от способа хранения, метод доступа к ним — это подмонтировать их в виртуалке управляющего домена 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
Читать дальше →

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

Reading time1 min
Reach and readers4.2K
Для 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. наслаждаться неземной красотой

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

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

Способ автоматически перенабирать текст.

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

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

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

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

подробности разработки

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

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

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

Reading time1 min
Reach and readers1.2K
Группа HabraTranslation
взялась за перевод презентации
(Google I/O 2009) Best Practices for Architecting GWT App.

Приглашаю присоединиться желающих, знакомых с спецификой Java, Web-разработок и слэнгом программистов.

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

Reading time1 min
Reach and readers760
В видео презентации добавлен русский перевод субтитров.

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

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

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

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

Reading time1 min
Reach and readers4.9K
Случилось мне недавно потерять телефон. Вместе с телефонной книгой.
И бэкапов, по закону подлости, не было.

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

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

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

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

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

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

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

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

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

Reading time1 min
Reach and readers1.4K
Завершён перевод на русский субтитров к 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

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

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

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

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

детали реализации

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

Reading time3 min
Reach and readers6.4K
В тему компиляций и вычислений выражений.

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

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

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

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

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

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

Reading time5 min
Reach and readers2.8K
Идея совсем не нова. Идея древна.
Однако большинство наблюдаемых вокруг веб-фреймворков упорно игнорируют эту идею.

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

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

Reading time4 min
Reach and readers12K
По индукции на статью arxontа.

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

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

Information

Rating
Does not participate
Location
Новосибирск, Новосибирская обл., Россия
Registered
Activity