Январь 2009

Зря, батенька, я там такую отверточку спиз....

screwdriver.jpg Купил набор отверток и в целях их опробования пересадил свои кэноновские тильт-шифты на тильт и шифт в одной плоскости.

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

Желающим повторить сей нехитрый трюк спешу сообщить:

  • Вам нужна "филлипсовская" отвертка номер 000 с хорошей ухватистой ручкой и никакая другая. Попытка использовать негодный инструмент скорее всего приведет к повреждению шлицов у винтов и все.
  • Технология тривиальная: отвинчиваете 4 винта, крепящие shift-часть к tilt-части, поворачиваете shift-часть на 90 градусов против часовой стрелки, завинчиваете 4 винта. Между контактами на байонете (в shift-части) и диафрагмой (в tilt-части) идет гибкий шлейф управления диафрагмой, не порвите его.

Canon сажает эти винты на краску, чего и вам желаю.

LibRaw 0.7.0 Alpha5

Спешу анонсировать LibRaw 0.7.0-Alpha-5

Эта альфа завершает цикл крупных изменений, затеянных в версии 0.7. В последней версии новая схема чтения, реализованная поверх C++-враппера, коий враппер каждый может заточить под свои нужды (одна из высказанных пользователями нужд, например, это извлечение метаданных из начала файла, который качается по PTP).

Как обычно, я очень заинтересован в фидбеке, особенно от разработчиков использующих LibRaw, но и просто проблемные файлы (если у вас что-то упало или не так раскодировалось) весьма интересны.

Фотокнижки

Не могу удержаться и не попиарить ЖЖ-community fotobooks (Библиотека Фотографа).

Конечно, это полное пренебрежение авторским правом и вообще нехорошо, однако там попадаются всяческие жемчуга, коих я больше нигде не видел.

Цилиндрические панорамы (Q)

А какой-нибудь софт умеет одним проходом склеивать панорамы, которые сняты "цилиндрическим" образом в несколько рядов:

  • В горизонтальной плоскости крутим вокруг нодальной точки.
  • В вертикальной плоскости делаем сдвиг с помощью шифт-объектива (3 кадра).

Понятно, что можно склеить тройки, обозвать все это кадром 58x24 (или 44x36) и дальше клеить обычную однорядку, но это же ручной работы сильно больше.....

Update. Что-то ответы, которые пишут - какие-то разочаровывающие. Так недолго и мизантропом стать. Разжую помельче:

  • Я знаю слова PTGui, Panorama Tools, Realviz, Autopano и много других страшных слов. Мне не надо их вываливать списком.
  • Я снимал и склеивал панорамы "обычным способом" (несколько рядов с вращением вокруг нодальной точки или просто как получится).
  • Вопрос выше - это про довольно специальную методику съемки, когда горизонтальный охват обеспечивается вращением, а вертикальный - сдвигом объектива (shift-оптика).
  • Более всего мне интересно мнение людей, которые так уже делали. Общие соображения тоже интересны, хотя и меньше.
  • Вообще, просто склейка трех кадров снятых шифтом - довольно неприятное испытание для панорамного софта. Для плоской проекции не нужно вообще никаких геометрических преобразований, а обсуждаемый софт так не умеет (в смысле автоподбора параметров, естественно).

Вопрос про firmware ф/а Canon

Граждане читающие,

А может кто знает:

  • Позволяют ли DSLR Canon даунгрейд прошивки (скажем, стоит 1.06, могу ли я обновиться до 1.05)? Камера - 5D Mark II, но я думаю что это для всех свежих одинаково.
  • (при положительном ответе на первый вопрос) - где взять образ прошивки 1.06 для вышеупомянутой камеры? Может быть ее можно как-то из камеры списать? На официальном сайте лежит, естественно, только последняя, 1.07

Очень хочу поизучать черные точки и что с ними сделали в прошивке 1.07, но хочется иметь возможность откатиться назад, если "что с ними сделали" мне не понравится.... (на руках камера с прошивкой 1.06)

Записки разработчика RAW-обработчика

bug3.jpg Поправил сегодня серьезную багу в LibRaw, что заставило меня призадуматься о жизни. Если в подробностях, то:

  • У некоторых мыльниц (ряд моделей Nikon, Pentax, Samsung, Casio) режим RAW включается через инженерное (скрытое) меню.
  • В этих RAW нет никаких метаданных, а только данные с сенсора, обычно просто дамп байтов в каком-то некомпрессированном формате.
  • Метаданные сохраняются в JPEG-файле с обычным снимком, который записывается рядом (с тем же именем файла и другим расширением или же с другим номером файла).
  • В dcraw, а оттуда и в LibRaw есть поддержка этого составного формата: вычисляется имя файла, открывается, загружается EXIF.

И вот эта вот поддержка - категорически не работала. Даже хуже: наличие JPEG с метаданными приводило к неправильной распаковке собственно RAW, а отсутствие этого файла - к падениям.

Эта ошибка была начиная с LibRaw 0.0 и до сегодняшнего дня. И ни одна зараза - не заметила. Несмотря на то, что LibRaw уже несколько месяцев используется в digiKam и Krita, а у этих программ должны быть десятки тысяч пользователей, если не больше.

Смерть Кащея

Смерть Кащея в игле, игла в яйце, яйцо в утке, утка в зайце, заяц в шоке!

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

Не хочу (сначала хотел, потом передумал) разбирать конкретный код, просто замечу, что возможность сделать список указателей на "слово с атрибутами", причем "слово с атрибутами" - содержит список основ с флагами, а каждая основа - это std::string - это отличная возможность.

Я бы такую сложную структуру руками запрограммировать бы быстро не сумел (да и не стал бы), а несколько дней выпиливал бы какое-нибудь zero-copy решение, которое копий строк не содержит (или по-возможности не содержит).

Но вторая сторона проблемы остается забытой: на 32-битной архитектуре каждый vector - это 12 байт, список - 8 (плюс 8 на каждый элемент), строка - 4 (ну хоть тут нет оверхеда). Когда мы это намешаем в кучу - получим десятки байт оверхеда на каждый элемент. А элементов может быть много. И когда их становятся первые миллионы - оверхед вдруг становится первыми сотнями мегабайт и это уже после утаптывания кода.

Потом, все это нужно аллоцировать/деаллоцировать. И Malloc Trace мне гордо сообщает, что при обработке 60 тысяч входных элементов в трейс записались 2 миллиона событий. Понятно, отчего все так хотят быстрый malloc.

Ну и не забываем, что просто побегать по плотному массиву (пусть и аллоцированному с небольшим запасом), особенно выровненому на 32 байта - это одно. А 3-4 dereference на каждый элемент - совсем другое, кэш не резиновый.

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

Fuji SuperCCD: сложно о сложном

Расположение пикселов разной чувствительности и цвета на сенсоре SuperCCD, помимо того, что маркетинг Fuji изрядно запудрил всем уши, само по себе нетривиально. Я не уверен, что у меня получится легко про него рассказать (хотя это уже третий пост на данную тему), но буду пробовать.

Во-первых, диагональность. Диагонали на это сенсоре есть в том смысле, что классическое байеровское чередование G-R-G-R в одной строке и B-G-B-G в другой имеется именно по диагоналям. Если ходить по строкам и столбцам, то...

Девальвация доменов

RU-Center прислал очень любезное письмо, дескать с 29 января повышаем цену за регистрацию-продление иностранных доменов (.NET, .COM, .ORG, .BIZ, INFO, .CC, .TV, .ME). А на календаре - 20-е.

Разница для COM/ORG - почти 40 процентов удорожания, для остальных доменов не смотрел.

У кого есть свободные электрические (да и обычные) рубли, тот еще может поиграть в игру "защитись от девальвации" и даже немножко выиграть: продлевать NET/COM/ORG можно на любое количество лет, сколько денег не жалко.

Ру-центру, естественно, тоже приятно, они ваши деньги получат сейчас, а не через несколько лет.

SAS vs SATA

dataloss.jpg Меж тем, SAS-овские барракуды вроде как оказались незатронутыми сигейтовским багом с универсальной прошивкой.

Попустило.

Остальным собственникам 7200.11 с прошивкой SD15 рекомендуется обновиться.

Прошивки берут отсюда: http://seagate.custkb.com/seagate/crm/selfservice/search.jsp?DocId=207931, только что-то у меня там сейчас пустая страница, хотя утром еще была жизнь.

Pages