All streams
Search
Write a publication
Pull to refresh
230
200.4
Андрей Дмитриев @AndreyDmitriev

Пользователь

Send message
Про термины — оно понятно, конечно. Просто если не очень часто встреваешь в эту область, то надо ещё додумать что за что отвечает. Эта статья подразумевает достаточно высокий уровень владения материалом. Но она даёт определённую пищу для размышлений и это хорошо.

А что касается форматирования, то вот есть такая штука: highlight.hohli.com/.
Ещё был обзор habrahabr.ru/blogs/webdev/58391/.
А я обычно просто png картинками небольшие участки кода вставляю.
Спасибо за перевод! Сразу видно — писал доктор.

Два с половиной примера для этого материала — безумно мало, это во-первых.

Сишные примеры должны сопровождаться листингом на ассемблере (в данном многопоточном случае это может быть не так просто, но тем не менее). Там сразу станет видно (по крайней мере более наглядно, как мне кажется), что в какой регистр попадает, где оно мимо кэша промахивается и т.д., это во-вторых.

Ну и термины желательно расшифровывать. А то выражения типа Bus Latency = BUS_REQUEST_OUSTANDING.SELF/(BUS_TRANS_BRD.SELF — BUS_TRANS_IFETCH.SELF) несколько напрягают.

Ну и до кучи — форматирование примеров хромает.
Круто и спасибо за схему!
Коллега cbx, а расскажите, пожалуйста, в нескольких словах: каким образом и в чём создаётся прошивка и каким образом она загружается в микроконтроллер? Я в курсе, что можно доки почитать, просто любопытно, как это практически выглядит. Спасибо.
Хороший вопрос. На самом деле здесь чуть иной случай. Не забывайте, всё происходит в частотной области. А происходит вот что. Итак, у нас есть резкая исходная картинка. Мы делаем двумерное Фурье, получая её представление в частотной области — мы уже в области комплексного переменного, естественно. (Если немедленно выполнить обратное Фурье, то получится изначальная картинка за вычетом незначительных погрешностей). Теперь возьмём частотное представление и переменожим его с Гауссовой функцией — она похожа на колокольчик — в центре единица, плавно спадающая по краям. Происходит грубо говоря просто ослабление высоких частот. Выполнив обратное Фурье, получим размытую картинку — она и приведена выше как исходная. Теперь повторим весь процесс, с той лишь разницей, что будем усиливать ослабленные на предыдущем шаге частоты так, чтобы попасть в исходный спектр Фурье. Так и получается исходная картинка (опять таки с некоторой погрешностью, конечно).
Совершенно верно, муар именно из-за фильтра. Если уменьшить размытие, то муар практически исчезнет, но и wow-эффект тоже уменьшится.
Ну почему же? Это немножко похоже на магию, но это работает.
Текстура шляпки и детали как бы размазаны по всей картинке — их не видно, но они есть. Размывание я тоже сделал в частотной области (Фурье-Гаусс размытие-инверсное Фурье). Поскольку я знаю функцию размытия, то обратное преобразование восстанавливает картинку почти один в один. Конечно, с известной точностью. В данном примере блюр/деблюр сделаны с тремя сигмами, и это практически предел. Если увеличивать размытие, то точности уже не хватит, появятся артефакты. В примере используется двойная точность, но если уменьшать размытие, то исходная картинка может быть и целочисленной.

У меня есть исходники — этот пример сделал я сам (правда, всё это в LabVIEW).
Вот так это выглядит для серой картинки, если интересно:



Там всё примитивно просто — два вложенных for цикла да простенькая формула.
Для цветной — то же самое, просто по трём каналам.
В реальной жизни, конечно, функция размытия неизвестна, её надо подбирать, либо хитро вычислять, так что таких результатов будет не добиться, однако поднять резкость или скомпенсировать размытие из-за движения вполне возможно. На хабре уже проскакивал материал о том, как камеру оборудовали акселерометрами — это из этой же области.
Ну что касается повышения резкости, то фильтр Винера в общем-то известен достаточно давно. Если знать функцию, по которой картинка размывалась (или размазывалась за счёт съёмки в движении), то восстановить её в общем-то несложно. Вот смотрите, правая картинка честно восстановлена из левой:

С другой стороны, для этого преобразования требуется взять Фурье, провести преобразование спектра обратной размывающей функцией и выполнить обратное Фурье. Сомнительно, чтобы этот алгоритм был заложен в демонстрируемом примере, так что определённый элемент «фейковости», видимо присутствует. Не в смысле, что видео — фейк, а в смысле подачи более-менее красивых результатов для телевидения, конечно.
«Если тестировщики игнорируют какие-то предложения, или идеи, или шаги, или целые тесты — просто выбросьте их.»

Поддерживаю (в пределах разумного). Я бы дополнил — а если тестировщики, как роботы, слепо следуют пошаговой инструкции, ни на шаг не отступая, то выбросите таких тестировщиков.

Мы строим тесты в основном на основе требований ПО, чтобы максимально покрыть тестами все возможные ситуации + некоторые спец тесты для покрытия кода. Беда в том, что коллектив не очень большой и писать сценарии тестов приходится самим программистам, и не всё можно автоматизировать. Вот, допустим, где-то пользователь должен сохранить данные в файл. Я предпочёл бы написать просто: «проверить сохранение в файл там-то». Хороший думающий тестировщик проверит при этом: как ведёт себя программа при отмене диалога, при записи файла с тем же именем, при записи на защищённый от записи или заполненный диск, и т.д. и т.п. Он достроит самостоятельно все возможные ситуации. От такого тестировщика и баг-репорты — сплошное удовольствие: сделал то-то и то-то, получил то-то, а ожидалось вот что. Однако встречаются тестировщики, которые работают как «роботы». Им просто необходимо разжёвывать тесты до каждого щелчка мыши, иначе ничего оттестировано не будет. Как правило после таких тестов отловленных багов — кот наплакал при меньшем покрытии кода (при том, что дорогостоящий программист убил неделю на Mercury, а тестировщик за полдня нащёлкал все тесты и бодро отчитался о проделанной работе короткими Pass/Fail безо всяких деталей).
Ну, иной раз астрономы-любители могут и «переплюнуть» НАСА с Хабблами и другие обсерватории. Не часто, но случается.
Реклама, конечно, есть, но не по всем каналам. Те, которые спонсируются из денег налога рекламу не ставят, во всяком случае посередине программы (с другой стороны там и смотреть/слушать почти нечего, за исключением наполовину французского Arte, пожалуй). Почему не сделать что-то типа Pay-TV поканально вместо этого дурацкого налога — за гранью моего понимания.
И вот тут я пару слов об этом писал.
Ну, скажем так, почти так. Этот налог платится за компьютеры (и за мобильные телефоны, если уж быть более точным), подключённые к интернет, если память не изменяет с начала 2007 года. По терминам GEZ компьютеры являются «Neuartige Rundfunkempfangsgeräte» — хрен знает, как адекватно перевести на русский — ну, типа модерновое приёмное устройство, на котором теоретически можно принимать всякие программы от ARD, ZDF и иже с ними. Пара студентов утверждала, что ни для приёма радио, ни для других программ компьютеры не использовались, значит налог платить не надо, однако дело проиграли. Если же в хозяйстве уже есть минимум одно устройство, за которое налог уплачивается, то за компьютер платить не надо. У меня нет телевизора, так что я плачу только за радио (в авто установлено) 5,76 в месяц. Если нет радио и телевизора, а есть только компьютер, то тоже 5,76. Просто сумма одна и та же. Халява, похоже действует до 2013 года. С 2013 начинается полный идиотизм. налог собираются вводить не на устройство как сейчас, а на домохозяйство, причём похоже платить придётся даже если устройств в наличии нет (типа за теоретическую возможность иметь это устройство). С размером налога пока не определились, но, похоже те же 17-18 евро в месяц сдерут.
Вот если бы вы собрали такую небольшую портативную программку со всеми возможными VEN_****&DEV_**** но без драйверов, то было бы здорово. Чтобы не полтора-два гигабайта ненужных драйверов скачивать, а просто базу данных по всем вендорам. Её можно было бы на флешке таскать. Где чего не определилось — запустил, а она сказала бы, мол устройство такое-то, драйвер там-то. А я бы уже сам решил, скачивать по предложенной ссылке, или на сайт производителя отправиться.
Коллега StopKran, если уж Вы сравниваете язык с отвёрткой, то просто не могу не заметить, что любой инструмент надо содержать должным образом, а вот Ваша отвёртка имеет изрядный налёт ржавчины.
Ой, thg.ru осерчал от ссылки на хабре… Вот другая картинка:
Ну поскольку выше дано много альтернативных вариантов, то и я один добавлю.
Я года четыре назад купил себе Altec Lansing MX-5021 и доволен как слон. Сам такого звука не ожидал (впрочем они THX сертифицированы). Потратил тогда полторы сотни евро, о чём до сих пор ни разу не пожалел (хотя и не слушал их перед покупкой).



Обзор раз, обзор два. Эта модель, конечно, уже устарела (хотя сильно дешевле от этого не стала), но и другие от той же фирмы могут оказаться вполне достойными.
Там дело не только в маленькой базе. Если, например, перевернуть картинку на 180 градусов, то сервис её уже не находит, то есть дело также и в алгоритме — он должен быть опционально нечувствителен к искажениям. Ну и было бы здорово задавать «степень похожести» картинки.

Несколько лет назад занимался похожей проблемой, хотя и не в таких масштабах. Надо было сделать систему распознавания деталей для конвейера. С камеры поступала картинка, и требовалось определить тип детали по сохранённым в базе картинкам (несколько сотен). Причём поиск должен быть осуществлён за время порядка 0,2 — 0,3 секунд (потому что конвейер). Плюс задача усложнялась тем, что это были детали необработанные, только что вышедшие из машины литья с технологическим приливами и т.п. — то есть не было совершенно одинаковых деталей. Задача была решена «трёхуровневой» системой распознавания — вначале из рассмотрения отбрасывались заведомо не подходящие по геометрическим параметрам детали, затем анализировались контура, ну а потом сравнивались фурье спектры картинок. За счёт этого и скорость была приличная — сами референсные картинки в базе не сохранялись, а лишь геометрия и пики фурье спектра.
А как насчёт реверсивного поиска? Я имею ввиду — чтобы загрузить туда свою картинку, а сервис нашёл бы такие же или очень похожие. Реально работающего такого сервиса я ещё не видел… Ну разве что tineye.com, но там всё ещё весьма далеко от идеала…
Ну если говорить о Германии, то это не уточняется. Правообладатели — это просто «музыканты, авторы и другие творческие личности». Всё, что обладает функциями копирования — приводы, болванки, сканеры, копировальные аппараты — так или иначе облагается некоторым налогом. Вообще ситуация с подобным законом в Германии ненамного отличается от России — в законе куча весьма расплывчатых формулировок. Конечный потребитель также не уверен, может ли он скопировать себе оригинальный носитель и сколько копий можно сделать и т.д. и т.п.

Вот нашёл точные цифры по сборам с болванок в Германии, если верить Chip.de:

CD-R: 0,062 Euro за штуку
CD-RW: 0,197 Euro
DVD±R 4,7 GB: 0,139 Euro
DVD±RW 4,7 GB: 0,271 Euro
DVD-RAM 4,7 GB: 0,550 Euro
DVD-RAM 9,4 GB: 1,264 Euro
Blue-Ray 25 GB: 3,573 Euro
Флешки, карточки, жёсткие диски: 0,1 Euro

То есть при покупке 50 штук DVD на шпинделе за 17 Euro будет уплачено 6,95 Euro налога (40 процентов)
И в этом случае тоже. Либо придётся долго и нудно доказывать, что тарелка не имеет возможности принимать сигнал немецких каналов… Кстати, компьютер сам по себе (будучи подключённым к Интернет) также облагается налогом в размере 5,76 евро в месяц — ведь теоретически на нём можно смотреть tv каналы, вещающие в сеть (ссылка — нем.).

Information

Rating
28-th
Location
Ahrensburg, Schleswig-Holstein, Германия
Date of birth
Registered
Activity