[an error occurred while processing this directive]
 
vremont.by
республиканская сеть компьютерных клиник

ремонт ноутбуков в вашем городе


2011-й. Итоги от К

Стоит сказать, что подводя итоги года, нужно несколько разделить ситуации — на то, что, собственно, происходило в мире, и что было конкретно у нас в стране. Я бы вообще не хотел устраивать круглый стол типа «Белорусский IT-рынок. Реалии и перспективы», «Прекрасное будущее белорусского IT-сектора», потому как на меня самого таковое навеяло бы скуку и зевота напала бы.

Могу сказать одно, что тот же рынок аутсорсинга совсем не такой, как, например, лет пять назад. Армия IT-специалистов год от года становится все больше, и, как мне кажется, нужно просто начинать выпускать брендовые продукты, то есть уметь конкурировать на мировом уровне. Местный рынок не может предложить то, что может дать мировой, к тому же и здесь нужна конкурентоспособная продукция. Поэтому давайте смотреть на все с практической точки зрения.
Итак, по традиции, подводим итоги года, но не стандартно…

3D-пакеты моделирования/анимации

Когда в 2003-2004 гг. здесь и в Москве я начал писать статьи по VR-шлемам и системам стереовидения, для большинства читателей эта тема была «как из сказки». Хотя, хорошо помню, как знакомый привез из парка аттракционов мне в подарок сине-красные очки (до этого использовались самодельные), и мы тупо смотрели на экран, разглядывая немногие выложенные в Сети анаглифные фотографии. В 2011-м ситуация уже абсолютно другая, сине-красные очки у меня почти всегда под рукой в силу рабочей необходимости, а после выхода Cinema4D R13 их можно вообще не снимать. Дело в том, что в программе реализован анаглифный вариант вывода на экран, появился новый элемент стереокамеры. То есть это уже полноценный пакет для создания стереоскопического 3D-контента. Раньше для стереовизуализации применялись различные хитрости, главная из которых — правильно — две объединенные камеры с одним TargetObject.

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

Нужно сказать, что сам рынок создания стереоскопического 3D сейчас пока в зачаточном состоянии. Например, в тех же пакетах 3D-моделирования можно делать стереоскопические спецэффекты, которые потом бы было удобно использовать в рамках видеоряда. Эта продукция сейчас идет «на ура», и ее очень мало.

Во-вторых, уже на рынке фрилансеров можно увидеть заказы по созданию титров для 3D-видео и т.п. То есть, например, для пакетов видеомонтажа уровня Sony Vegas работа со стереоскопическим видеорядом — само собой разумеющееся, но люди, которые с ним работают, обычно не владеют 3D- моделированием. А вспомогательные элементы нужны. В общем, непаханое поле.

Игровые движки

Если говорить о крупных проектах, то почти все сейчас вертится вокруг слова «тесселяция» — технология, которая реализована в OpenGL 4 и DirectX 11. Она подразумевает процесс масштабирования сетки модели с добавлением/уменьшением количества полигонов (скажем так), в зависимости от приближения/отдаления от нее зрителя. Все делается за счет аппаратных ресурсов графического адаптера по специальным программным алгоритмам. То есть, в рамках новых технологий не нужно создавать три и больше вариантов одной и той же модели с различными уровнями детализации (LOD), чтобы движок производил переключение между ними. Достаточно одной. Также новые аппаратные технологии весьма успешно работают с картами смещения, которыми в ряде случаев можно эффективно заменить bump или displacement mapping. Вообще, на самом деле слово «тесселяция» уже становится брендовым, и под ним подразумевается целый ворох технологий. Например, на рекламных скриншотах (рис. 1, 2) показана суть использования карты смещений, хотя она, в принципе, увязана на той же тесселяции, поскольку такая детализация объема нужна только при сильной степени приближения. Что касается движков ААА-класса, то летом этого года появился бесплатный полнофункциональный вариант Cry Engine 3 — великолепная штука. Напомню, что до этого появился и бесплатный вариант UDK (Unreal Development Kit), который также полнофункционален. Многие все это в силу азарта «стали собирать как значки», приговаривая: «Ну, кто следующий вскроется?». На самом деле, лучше не ожидать у моря погоды, а посмотреть на то, что есть. Cry Engine 3 осваивается быстрее UDK, потому как там очень хорошо сделана документация, а также есть ключевые примеры, разобравшись в которых, можно уже делать самостоятельно вполне приличные продукты. UDK, в принципе, также изучается без особенных трудностей. По спектру функциональных возможностей оба варианта идентичны. В целом, можно сказать, что работать есть на чем. И если раньше многие смотрели в сторону open source решений типа Ogre3D, то сейчас, наверное, в этом и не так много смысла. Ну, и что? Сделали программу, показали разработчикам движка, они сказали, какой процент хотят, и все, причем, если идея классная, могут помочь с доработкой и продвижением. Либо как в UDK — платишь $99 и если не заработал на играх, созданных на этой базе, больше $50K, этой фирме ничего больше не должен.

Стандартный пример: тесселяция включена

Довольно знаковым моментом стало летнее удешевление игровых движков Torque практически в 10 раз (до этого один стоил $1000, теперь — $99). В принципе, все можно объяснить, особенно бесплатностью и дешевизной UDK, кои не зацикливаются на одной платформе. Но самое смешное, что на этом фоне подорожал MarmaladeSDK, который ранее, будучи AirSDK, являлся чуть ли не единственным вариантом бесплатной или дешевой разработки приложений для iPhone. Хотя на самом деле, авторы этого движка собрали вокруг себя довольно сильных и понимающих специалистов, и начинающим в геймдеве, наверное, будет наиболее интересна их программа, в рамках которой вы предлагаете идею игры (работает даже на уровне подачи идеи), и в случае принятия игру разработают сразу для нескольких платформ, опубликуют на популярных площадках и возьмут 50% от прибыли (могут больше, если неправильно сторгуетесь:)).

Вообще, вопрос финансов у многих разработчиков движков и конструкторов стоит довольно остро, и каждый из них развивает собственную модель поведения. Например, авторы GameMaker из YoYo в один момент занялись самостоятельным портированием наиболее популярных игр из собственного магазина на другие платформы. Потом начали активно внедрять интеграцию конструктора с HTML5, сделав его дороже, чем любой из вариантов Torque:). В целом, барахтаются, скоро масло взобьют.

Стандартный пример: тесселяция отключена

Что касается Flash-игр, я, как и любой пользователь Интернета, отмечаю целую волну хлама, которая обрушивается при открытии браузера. Причем иногда уровень разработчиков угадывается сразу при взгляде на баннер, а бывает и так: красивая картинка, кликаешь, после чего лицезреешь какие- то жалкие потуги. Знаете, если говорить конкретно о 2D, то разработчикам имеет смысл хотя бы посмотреть на лучшие 2D-игры прошлого, такие как, вспоминая русские названия: «Клиника», «Конструктор», «Фараон», «Индустриальные гиганты» и т.п., не говоря уже о «Старкрафт» и «Warcraft». В принципе, игры этого уровня сейчас не повторяют и на обычных средствах разработки. Например, «Фараон» хорошо идет на любой пользовательской машине офисного типа и ноутбуках не высшего разряда. Навряд ли современные разработчики смогут сделать нечто подобное для тех же требований к ресурсам.

Бесплатная Cry Engine 3 — это, пожалуй, лучшая новость уходящего года.

Ну и, напоследок, говоря об игровых движках, скажу, что я решился на эксперименты. Дело в том, что в следующем году мы начнем делать клипы для моей новой группы, и я хочу поэкспериментировать, а именно, реализовать все в движках, а не в 3D-пакетах.

А в целом, нужно сказать, что рынок геймдева демонстрирует главный момент, который станет наиактуальнейшим в ближайшие годы: главное — это идея! И я, кстати, выступаю за модерацию всего и вся, как в AppStore и т.п.

Звуковая индустрия

Хотелось бы, чтобы этот пункт был прочтен внимательно, причем всеми, кто так или иначе связан с музыкой. Для начала дам ссылки:
. http://audiojungle.net — уже довольно захламлен работами, именно туда «ломанулись» в 2009-2010 гг. россияне.
. http://www.audiomicro.com — аналогично.
. http://www.buystocksound.com — хорошая штука, но пока малоприбыльна (плохо раскручена).
. http://stockfuel.com — выгодна, поскольку там много телевизионщиков и т.п.
. www.productiontrax.com — в принципе, можно получить самые высокие цены за одну покупку трека, живой.
. istockphoto.com — хорошая фирма, авторские выплачивают небольшие, за эксклюзив примерно 45% (а трек там продается около $30), эксклюзив их интересует в первую очередь, но они проверят все, вплоть до сэмплов.
. http://www.revostock.com — очень высокая конкуренция, хотя и посещаемость телевизионщиками приличная.
. http://www.pond5.com — хорошая фишка, правда, конкуренция опять-таки высокая.

Итак, на что эти ссылки? Это «аудио-стоки» (русскоязычное выражение, подменяющее английское audio stocks). Каков смысл? Аудио-стоки — это своеобразные интернет-лэйблы.

Допустим, вы создаете библиотеку звуков, написали свою интересную композицию и так далее. Это можно продавать. Первый вариант — долго искать лэйбл и т.п., второй — обратиться к услугам сайтов аудио-стоков.

Перво-наперво вы должны зарегистрироваться на выбранном ресурсе, указать способ получения денег и отправить композиции/или банк звуков на проверку модератору ресурса. Затем, если вас приняли, обычно сам модератор назначает цену за каждый отдельный трек/или сэмпл.

Аудио-стоки работают по принципу интернет-магазинов, только с отдельной специализацией, они могут продавать права на использование в коммерческих целях при условии только единовременной выплаты (royalty free). Такие сайты активно посещаются представителями телевидения, кино, радио, игровой индустрии, и те ищут, что им нужно. Вариант royalty free им очень выгоден, поскольку не нужно заботиться о постоянных авторских отчислениях от продаж, они просто выплачивают гонорар один раз. Конечно же, аудио-стоки продают треки и обычным пользователям для некоммерческого использования, то есть простого прослушивания, но это стоит намного дешевле. А в целом такой ресурс работает фактически как лэйбл.

Теперь расскажу о разделении прибыли. В рамках договоренностей с такими сайтами обычно предусматриваются две модели взаимодействия: эксклюзивная и не эксклюзивная. В первом случае аудио-сток является единственным из тех, кто может распространять вашу композицию или банк сэмплов (скажем так, загруженные произведения). Не эксклюзивный вариант подразумевает, что вы можете распространять свою продукцию где угодно. В зависимости от этих типов договоренностей предлагается процентные сетки. Например, при эксклюзивном договоре аудио-сток забирает себе 40% прибыли, при не эксклюзивном — 70% (это я обобщенно, у каждого свои расценки). Аудио-стоки в первую очередь просматривают/прослушивают эксклюзивные предложения, поскольку они им более выгодны. На многих ресурсах цену на коммерческое использование можно регулировать самим (можно назначить хоть $5000 :), но в основном рынок колеблется около диапазона цен $70-100).

Пример стандартного аудио-стока — http://www.audiomicro.com. Выгоднее всего работать с гибридными стоками, в которых вместе с аудио продаются другие материалы: фото, видео, флэшки и т.п. Но при этом есть и «дешевые сборники», куда обращаться совсем не нужно.

При этом не обязательно давать фундаментальные композиции, достаточно каких-нибудь небольших зарисовок, которые удобно подойдут для заставок. Кстати, наиболее часто покупаемые треки в аудио-стоках — это не музыка стилей транс или рок-н-ролл, а так называемого Commercial, под которым и подразумевается нечто логотипно-заставочное. В принципе, зайдите на аудио-сток, послушайте и сразу поймете, что к чему.

Теперь поговорим о чистоте авторских прав. Дело в том, что если вы обращаетесь к серьезному ресурсу уровня istockphoto.com, то при первом знакомстве с вами и вашими первыми работами у вас будут проверять все составляющие вплоть до сэмплов. Например, если вы сделали музыку в денсмейкере, собрав ее из кирпичиков/сэмплов, взятых откуда-то, вас, во-первых, могут спросить по авторским правам на эти кирпичики/сэмплы. Могу сразу сказать, что точно такое же отношение и у профессиональных лэйблов, это обычный диалог при первом знакомстве: «Этот тембр откуда?» — «Такой-то синтезатор, это не loop» — «Программный синтезатор?» — «Да, коммерческий, вот лицензия, можете проверить». И так далее. Поэтому многие музыканты/саундпродюсеры всегда в первую очередь изучают бесплатное ПО, которое, кстати, в рамках 2011 года может успешно конкурировать и с платным.

Дело в том, что лэйблы, равно как и заказчики аудио-стоков, готовые платить за треки/сэмплы, работают в странах с развитым медиапространством, в рамках которого авторские права блюдутся строго. На многих сайтах сразу предупреждают об уголовной ответственности. А в целом, везде подход деловой. Например, если вы сказали, что даете эксклюзивное право, и ваш трек или сэмпл больше нигде не распространяется (его нельзя ставить ни на домашней страничке, ни в фэйсбуке), а потом его находят, вежливо просят только один раз (если просят).

Почему в начале этого подраздела я попросил обратить внимание всех, кто так или иначе связан с музыкой? Дело в том, что в Беларуси, в которой местный «шоу-бизнес» разве что ленивый не ругает, многие музыканты просто выкладывают треки (бесплатно!) в Интернет. И не то что треки, а целые альбомы! А потом говорят, что на музыке денег не заработать. С таким подходом — да, сидеть в нищете и при лучине!

Я работал с некоторыми аудио-стоками, хотя у меня не так много есть на продажу через них — все отнимает готовящийся альбом новой группы. В целом, первый вопрос, который я себе задал, поработав с ними: почему наши музыканты до сих пор не там?

Второй вопрос: почему в Беларуси нет своего интернет-лэйбла, который бы продавал музыку местных музыкантов по примеру аудио-стока? Например, он бы мог предложить обычным пользователям песни по 10-20 центов, права royalty free на коммерческое использование по $100-200.

В принципе, саму идею дарю, если кто воспользуется — пойдет всем на благо.

А в целом, аудио-стоков сейчас много, я привел ссылки на самые популярные. Но есть и «серые лошадки», которые особенно не хотят светиться, но при этом отбирают себе лучших музыкантов/саундпродюсеров и работают на «толстых» клиентов. Обычно они даже слово «stock» избегают, хотя работают по тому же принципу. И далеко не всегда предлагают схему royalty-free. Такие «серые лошадки» часто находят музыкантов с сайтов стандартных аудио- стоков. В общем, это уже реальный и вполне развитый бизнес.

Программирование

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

Та-ак… берем первое письмо из папки «Вопросы по C#». Отвечать будем по С#. Читаю…:) Ну вот, кто так на C# пишет код: string stroka1 = TextBox1.Text.ToString()? Как говорится: «аффтар жжот плюсадин». Для тех, кто не понял, разъясню: TextBox1.Text — это уже значение строчного типа string.

А вопрос касается… замены символов в строке, в которую загружен большой объем текста. Я думаю, что написавший уже и сам нашел ответ, пока дожидался моего. В принципе, все просто — в стандартном варианте это делается с помощью метода Replace класса String, хотя, если речь идет не об очень больших текстах, я обычно использую более быстрый Replace от класса String Builder, у него другая структура работы. Читайте MSDN. Для рабочего примера, давайте реализуем функцию, которая бы правильно расставляла пробелы вокруг двоеточий в любом приходящем тексте:

static string EditFunc(string p)
{
StringBuilder b = new StringBuilder(p);
b.Replace(" :", ":");
b.Replace(":", ": ");
b.Replace(" ", " ");
return b.ToString();
}

Следующее письмо интересно, хотя сам код автора не привожу, поскольку он большой:

Помогите, пожалуйста, я делаю программу, работающую с базой данных. Как обойти DBConcurrencyException — исключение, которое вызывается DataAdapter при операции вставки, обновления или удаления, не затронувшей ни одной строки. Посмотрите код, в чем ошибка? Там DataAdapter помещен в lock(), как мне посоветовали, это не помогло, и нужно ли вообще использовать lock()?

М-да, ну, lock() — это, конечно, всегда хорошо. Например, когда я пишу серьезное приложение на C#, то наиболее часто встречаемыми конструкциями в моем коде являются try — catch и lock() (или подобные решения).

Теперь по вашему коду. Во-первых, в чем главная ошибка всех начинающих, работающих с DataGridView и пытающихся изменить содержимое БД программно? Дело в том, что элемент DataGridView только отображает данные таблицы DataTable. Чтобы внести изменения в отображение, вы должны вносить изменения в DataTable. Поэтому программным присваиванием…

dataGridView1.Rows[i].Cells[18].Value = baseId [i];

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

((DataTable)dataGridView1.DataSource).Rows[i][18] = baseId [i];

После делаете Update объекта DataAdapter. Многие путаются в этом вопросе по той причине, что если изменения вносятся вручную пользователем на объекте DataGridView, изменения в DataTable вносятся и обновления идут успешно. Но программно ситуацию нужно решать по-другому.

DBConcurrencyException в большинстве случаев возникает из-за нарушения параллелизма, когда изменения вносятся до фактического обновления объекта DataTable.

При этом DataAdapter после генерации исключения останавливает свою работу и появляется соответствующая ошибка. Обойти это можно, задав свойство DataAdapter. ContinueUpdateDnError как true (по умолчанию оно является false). Затем можно просканировать ошибки в DataTable.HasErrors (см. справочную информацию по нему).

Переходим к следующему вопросу, и он опять… об ошибке…

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

«ContextSwitchDeadlock was detected

Message: The CLR has been unable to transition from COM context 0x159bc0 to COM context 0x1598e0 for 60 seconds…»

У меня вхождения в бесконечный цикл нет, я проверял, таймеры также не использую. Как решить проблему?

Эту ошибку часто именуют ошибкой длительных процессов. Если говорить простыми словами, в данном случае отладчик предполагает, что у вас есть некий неправильный процесс, опираясь на то, как программа себя ведет. В принципе, в большинстве случаев я встречал этот вариант при работе с Excel-файлами:), хотя варианты бывали различными. В вашем случае я бы рекомендовал «как можно меньше Excel’а», например, загрузив его через OleDb в DataGridView, после чего оперируя только данными из этого визуального представления (а не перелопачивая файл), во-вторых, я бы порекомендовал более грамотно обращаться с потоками, например, содержать как можно меньше вычислений в основном рабочем потоке, это же относится и к визуальным компонентам, которые отображают процессы.

Ну, и если вы во всем уверены, что все работает правильно, ContextSwitchDeadlock можно просто отключить в отладчике Debug->Exceptions->Managed Debug Assistants (отключаем птичку напротив ContextSwitchDeadlock).

***

На сим завершаю, год был хороший, рабочий.

Кристофер http://itcs.3dn.ru

© Компьютерная газета :: главная страница