<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Life_c0d3r's Weblog</title>
	<atom:link href="http://lc0d3r.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://lc0d3r.wordpress.com</link>
	<description>“У меня нет решения, но я восхищен проблемой” - Эшли Брильянт</description>
	<lastBuildDate>Tue, 03 Nov 2009 23:51:03 +0000</lastBuildDate>
	<generator>http://wordpress.com/</generator>
	<language>ru</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<cloud domain='lc0d3r.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://www.gravatar.com/blavatar/de6e9264dbf633e6173889640f7ec51a?s=96&#038;d=http://s.wordpress.com/i/buttonw-com.png</url>
		<title>Life_c0d3r's Weblog</title>
		<link>http://lc0d3r.wordpress.com</link>
	</image>
			<item>
		<title>Сравнение Qt и Java</title>
		<link>http://lc0d3r.wordpress.com/2009/11/03/%d1%81%d1%80%d0%b0%d0%b2%d0%bd%d0%b5%d0%bd%d0%b8%d0%b5-qt-%d0%b8-java/</link>
		<comments>http://lc0d3r.wordpress.com/2009/11/03/%d1%81%d1%80%d0%b0%d0%b2%d0%bd%d0%b5%d0%bd%d0%b8%d0%b5-qt-%d0%b8-java/#comments</comments>
		<pubDate>Tue, 03 Nov 2009 23:49:51 +0000</pubDate>
		<dc:creator>lc0d3r</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[qt]]></category>
		<category><![CDATA[с++]]></category>
		<category><![CDATA[c++]]></category>
		<category><![CDATA[Java]]></category>

		<guid isPermaLink="false">http://lc0d3r.wordpress.com/?p=163</guid>
		<description><![CDATA[A Comparison of Qt and Java
Автор: Matthias Kalle Dalheimer
Перевод: Andi Peredri
В этой статье сравнивается эффективность использования C++/Qt и Java/AWT/Swing для разработки программного обеспечения с пользовательским графическим интерфейсом.
1. Что мы сравниваем?
При выборе средств для разработки крупного программного проекта необходимо учесть множество различных аспектов, наиболее важнейшим из которых является язык программирования, потому что он в значительной степени [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=lc0d3r.wordpress.com&blog=3938050&post=163&subd=lc0d3r&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p style="text-align:right;">A Comparison of Qt and Java<br />
Автор: Matthias Kalle Dalheimer<br />
Перевод: Andi Peredri</p>
<p style="text-align:center;"><strong>В этой статье сравнивается эффективность использования C++/Qt и Java/AWT/Swing для разработки программного обеспечения с пользовательским графическим интерфейсом.</strong></p>
<p><strong>1. Что мы сравниваем?</strong></p>
<p>При выборе средств для разработки крупного программного проекта необходимо учесть множество различных аспектов, наиболее важнейшим из которых является язык программирования, потому что он в значительной степени определяет другие доступные средства. Например, для разработки пользовательского графического интерфейса разработчикам необходима GUI-библиотека, предоставляющая готовые элементы интерфейса, такие, как кнопки и меню. Так как выбор GUI-библиотеки оказывает большое влияние на разработку проекта, часто ее выбор осуществляется первым, а язык программирования определяется из числа доступных для этой библиотеки языков. Обычно, язык программирования определяется библиотекой однозначно.</p>
<p>Другие компоненты средств разработки, такие, как библиотеки доступа к базам данных или библиотеки коммуникаций, также должны быть приняты во внимание, но они не оказывают такого влияния на разработку проекта, как библиотеки GUI.</p>
<p>Целью этой статьи является сравнение C++/Qt и Java/AWT/Swing. Чтобы это сделать наиболее точно, мы сначала сравним языки программирования, то есть C++ и Java, а потом две GUI-библиотеки: Qt для C++ и AWT/Swing для Java.<span id="more-163"></span></p>
<p><strong>2. Сравнение C++ и Java</strong></p>
<p>Часто при обсуждении преимуществ и недостатков различных языков программирования дебаты сводятся к аргументам, основанным скорее на личном опыте и предпочтениях, чем на объективных критериях. Конечно же, при выборе языка программирования личные предпочтения и опыт разработчика должны быть учтены, но так как эти критерии субъективны, они здесь не принимаются во внимание. Вместо этого мы будем рассматривать продуктивность программирования, производительность работы приложения и эффективность использования памяти, потому что эти критерии могут быть определены количественно и могут быть исследованы с научной точки зрения, хотя мы также учтем информацию, полученную из опыта разработки проектов в нашей компании.</p>
<p><strong>2.1. Продуктивность программирования</strong></p>
<p>Продуктивность программирования определяет, насколько эффективно (т.е. быстро и точно) программист с определенным опытом и знаниями может решить поставленную перед ним задачу, используя заданный язык программирования. Так как оклад разработчика является главной составляющей стоимости разработки любого программного проекта, продуктивность программирования имеет большое значение. Также в определенной степени продуктивность программирования определяется доступными инструментальными средствами.</p>
<p>Отличительной особенностью Java в сравнении с другими языками программирования общего назначения является обеспечение высокой продуктивности программирования, нежели производительность работы приложения или эффективность использования им памяти.</p>
<p>Для этого язык Java наделен некоторыми дополнительными возможностями. Например, в отличие от C++ (или C), программист не должен в явном виде &laquo;освобождать&raquo; (возвращать) выделенную память операционной системе. Освобождение неиспользуемой памяти (сборка &laquo;мусора&raquo;) автоматически обеспечивается средой выполнения Java в ущерб производительности и эффективности использования памяти (см. далее). Это освобождает программиста от утомительной задачи по слежению за освобождением памяти &#8211; главного источника ошибок в приложениях. Одна эта возможность языка должна значительно увеличить продуктивность программирования в сравнении с C++ (или C).</p>
<p>Однако проведенное исследование показывает, что на практике сборка &laquo;мусора&raquo; и другие возможности Java не оказывают большого влияния на продуктивность программирования. Одна из классических моделей оценки программного обеспечения CoCoMo, предложенная Barry Boehm, предопределяет стоимость и сроки разработки программного продукта на основе стоимостных коэффициентов, которые учитывают такие факторы, как суммарный опыт программирования разработчика, опыт программирования на заданном языке, желаемая надежность программы и т.д. Boehm пишет, что независимо от уровня используемого языка, начальные трудозатраты всегда высокие. Подобная методика подсчета использовалась в другом исследовании, проведенном C.E.Walston и C.P.Felix, IBM, Метод измерения и оценки программирования (A method of programming measurement and estimation) .</p>
<p>Оба приведенных здесь исследования появились задолго до создания Java, но несмотря на это, они демонстрируют общий принцип: сложность языка программирования общего назначения по сравнению с другими аспектами, такими как квалификация разработчика, не оказывает существенного влияния на полную стоимость разработки проекта.</p>
<p>Существует более позднее исследование, которое явно включает Java и которое подтверждает эту гипотезу. В Эмпирическом сравнении C, C++, Java, Perl, Python, Rexx и Tcl (An empirical comparison of C, C++, Java, Perl, Python, Rexx, and Tcl) Lutz Prechelt из университета Karlsruhe описывает проведенный им эксперимент, в котором студентам информатики поручили выполнить определенный проект и выбрать для его реализации, руководствуясь личными предпочтениями, один из языков программирования: C, C++ или Java (остальные языки были рассмотрены в другой части исследования). Собранные данные показали почти одинаковые результаты для C++ и Java (C был на третьем месте по многим параметрам). Эти результаты подтверждаются нашим собственным опытом: если программисты вольны в самостоятельном выборе языка программирования (чаще руководствуясь при этом своим опытом), программисты с равным опытом работы (например, измеренным в годах) достигают одной и той же продуктивности. Второй интересный аспект, который бы мы хотели отметить (но который не имеет формального экспериментального подтверждения), заключается в том, что менее опытные разработчики достигают лучших результатов с Java, разработчики со средним опытом разработки достигают одинаковых результатов с обоими языками программирования, опытные разработчики достигают лучших результатов с C++. Эти наблюдения могут быть объяснены тем, что для C++ доступны более совершенные средства разработки; и этот факт тоже должен быть принят во внимание.</p>
<p>Интересный способ определения продуктивности программирования предлагает метод функциональных единиц (Function Point), разработанный Capers Jones. Функциональная единица &#8211; это метрика программного обеспечения, которая зависит лишь от его функциональности, а не от конкретной реализации. Эта метрика позволяет использовать в качестве критерия оценки продуктивности программирования число строк кода, необходимых для обеспечения одной функциональной единицы, в свою очередь, уровень языка определяется числом функциональных единиц, которые могут быть созданы за определенное время. Интересно, что обе величины: число строк кода на единицу функциональности и уровень языка одинаковы для обоих языков (уровень языка: C++ и Java &#8211; 6, C &#8211; 3.5, Tcl &#8211; 5; число строк кода на единицу функциональности: C++ и Java &#8211; 53, C &#8211; 91, Tcl &#8211; 64).</p>
<p>Подводя итог: оба исследования и практика опровергают утверждение, что Java обеспечивает программистам лучшую продуктивность программирования, нежели C++.</p>
<p><strong>2.2. Производительность работы приложений</strong></p>
<p>Мы увидели, что преимущества продуктивности программирования на Java оказались иллюзорными. Теперь мы исследуем производительность работы приложений.</p>
<p>И снова Prechelt предоставляет интересные сведения. Объем предлагаемой им информации огромен, но в конечном итоге он приходит к заключению, что &laquo;Java-программы выполняются по крайней мере в 1.22 раза медленнее C/C++ программ&raquo;. Заметьте, что он сказал по крайней мере; средняя же скорость работы Java-программ гораздо меньше. Наш собственный опыт показывает, что Java-программы выполняются приблизительно в 2-3 раза медленнее своих C/C++ аналогов. На задачах, ориентированных на интенсивное использование процессора, Java-программы проигрывают еще сильнее.</p>
<p>В случае программ с пользовательским графическим интерфейсом увеличение времени отклика интерфейса является более критичным, чем низкая производительность программы. Проведенные исследования показывают, что пользователи более терпимы к задачам, выполняющимся в течение двух или трех минут, чем к программам, которые не реагируют мгновенно на их воздействия, например, на нажатия кнопок. Эти исследования показывают, что если время отклика программы больше, чем 0,7 секунды, пользователи считают ее медленной. Мы вернемся к этой проблеме, когда будем сравнивать пользовательский графический интерфейс в программах Java и C++.</p>
<p>Объяснение того, почему Java-программы медленнее C++ программ, заключается в следующем. C++ программы компилируются компилятором C++ в двоичный формат, который затем исполняется непосредственно процессором; таким образом, выполнение программы осуществляется аппаратными средствами. (Это несколько упрощенно, так как большинство современных процессоров выполняют микрокод, но это не принципиально при обсуждении данного вопроса.) С другой стороны, компилятор Java компилирует исходный код в &laquo;байт-код&raquo;, который непосредственно исполняется не процессором, а с помощью другого программного обеспечения, виртуальной машины Java (Java Virtual Machine, JVM). В свою очередь, JVM исполняется процессором. Таким образом, выполнение байт-кода Java-программ осуществляется не быстрыми аппаратными средствами, а с помощью более медленной программной эмуляции.</p>
<p>Для повышения производительности работы Java-программ были разработаны &laquo;Just in Time&raquo; (JIT) компиляторы, но универсального решения этой проблемы не существует.</p>
<p>На первый взгляд, полуинтерпретируемая природа Java-программ обеспечивает выполнение принципа &laquo;скомпилированный однажды код выполняется везде&raquo;. Однажды скомпилированная в байт-код Java-программа может выполняться на любой платформе, для которой доступна JVM. На практике же, это не всегда так из-за отличий в реализациях разных JVM и из-за необходимости иногда наряду с Java-программами использовать родной, не-Java код, обычно написанный на C или C++.</p>
<p>Но разве использование платформенно-независимого байт-кода является верным подходом в создании кросс-платформенных приложений? С хорошим кросс-платформенным инструментарием, наподобие Qt, и хорошими компиляторами для различных платформ программисты могут достичь почти той же цели компиляцией своего исходного кода один раз для каждой из платформ: &laquo;написанный однажды код компилируется везде&raquo;. Можно возразить, что для этого разработчикам потребуется доступ ко всем поддерживаемым платформам, в то время, как с Java, теоретически, разработчикам необходим доступ только к одной из платформ, имеющей средства разработки для Java и JVM. На практике же ни один из ответственных производителей программного обеспечения не будет сертифицировать свои программные продукты для платформ без предварительного их тестирования, поэтому в любом случае производителям будет необходим доступ ко всем поддерживаемым платформам.</p>
<p>Возникает вопрос, зачем использовать программную реализацию виртуальной машины Java, если такую же функциональность можно получить с помощью аппаратной реализации? Именно так рассуждали разработчики при создании языка Java; они предполагали, что вопрос низкой производительности будет решен, когда станет доступной аппаратная реализация JVM в виде Java-процессоров. Однако даже по прошествии пяти лет Java-процессоры не получили широкого распространения. Существуют проектные экземпляры и даже работающие прототипы Java-процессоров, однако понадобится еще немало времени, чтобы стало возможным их приобрести.</p>
<p><strong>2.3. Эффективность использования памяти</strong></p>
<p>Java и C++ используют различные подходы в управлении памятью. В C++ управление памятью полностью осуществляется программистом, т.е. по мере необходимости распределение и освобождение памяти должно выполняться программистом. Если программист забывает освободить ранее полученную память, возникает &laquo;утечка памяти&raquo;. Если во время работы приложения произойдет лишь одна такая утечка, проблем не возникнет, так как после завершения работы приложения операционная система освободит всю ранее использованную им память. Но если утечки памяти будут происходить постоянно (например, если пользователь будет периодически выполнять определенные действия), использование памяти приложением будет расти вплоть до полного ее расхода с последующим возможным отказом системы.</p>
<p>Java обеспечивает автоматическое освобождение неиспользуемой памяти. Наряду с распределением памяти программистом JVM ведет учет всех используемых блоков памяти и указателей на них. Если блок памяти больше не используется, он может быть освобожден. Это обеспечивает процесс, который называется &laquo;сборкой мусора&raquo;. Он периодически вызывается JVM, проверяет все используемые блоки памяти и освобождает те из них, на которые отсутствуют указатели.</p>
<p>Сборка мусора очень удобна, но за ее использование приходится расплачиваться большим потреблением памяти и низкой производительностью&#8230; Программисты C++ могут (и должны) освобождать блоки памяти сразу после того, как они перестали быть нужны. С Java блоки не освобождаются до очередного вызова сборщика мусора, периодичность работы которого зависит от использумой реализации JVM. Prechtelt предоставляет цифровые данные, утверждая, что в среднем, (&#8230;) и с вероятностью 80% Java-программы используют на 32 MB (или 297%) памяти больше, чем C/C++ программы (&#8230;). Вдобавок к большому расходу памяти процесс сборки мусора требует дополнительной процессорной мощности, которая в результате становится недоступной приложению, и это приводит к замедлению его работы. Поэтому периодическая работа сборщика мусора может приводить к &laquo;замораживанию&raquo; Java-программы на несколько секунд. Лучшие реализации JVM минимизируют такие замораживания, но не устраняют их полностью.</p>
<p>При работе с внешними программами и устройствами, например, во время ввода/вывода или при взаимодействии с базой данных, желательно закрыть файл или соединение с базой данных сразу же после того, как они перестали быть нужны. Благодаря деструкторам C++ это происходит сразу после вызова delete. В Java закрытие произойдет лишь во время следующего цикла работы сборщика мусора. В лучшем случае это может привести к излишней блокировке ресурсов, в худшем &#8211; к нарушению целостности открытых ресурсов.</p>
<p>Тот факт, что Java-программы используют блоки памяти большие, чем необходимо, является особенно критичным для встраиваемых устройств, объемы памяти которых невелики. Неслучайно, что до сих пор (на время написания этой статьи) не существует полной реализации Java-платформы для встраиваемых устройств, а лишь ее частичные реализации.</p>
<p>Главная причина, по которой сборка мусора является более дорогостоящей, чем непосредственное управление памятью программистом, &#8211; это утрата информации. В C++ программе программист знает и местонахождение своих блоков памяти (сохраняя указатели на них), и когда они перестанут быть ему нужными. В Java-программе последняя информация недоступна для JVM (даже если она известна программисту), поэтому JVM должна перебирать все блоки на предмет отсутствующих указателей. Для того, чтобы вызвать сборку мусора вручную, Java-программист может удалить все указатели на больше ненужные ему блоки памяти. Но со стороны программиста это потребует больше усилий, чем непосредственное управление памятью в C++; и, тем не менее, во время сборки мусора JVM все равно придется проверить все блоки памяти, чтобы освободить неиспользуемые.</p>
<p>С технической точки зрения, нет ничего такого, что бы мешало реализовать сборку мусора в C++ программах. Существуют обеспечивающие это коммерческие программы и библиотеки. Но из-за перечисленных выше недостатков немногие C++ программисты используют их. Инструментарий Qt использует более эффективный подход для упрощения задачи управления памятью: при удалении объекта все зависящие от него объекты также автоматически удаляются. Подход Qt не мешает программистам по желанию самостоятельно удалять объекты.</p>
<p>Так как управление памятью в C и C++ обременительно для программиста, созданное с помощью этих языков программное обеспечение обвиняется в нестабильной работе и подверженности ошибкам. Хотя некорректная работа с памятью в C и C++ может привести к более критичным ошибкам (обычно приводящим к аварийному завершению программы), хорошие знания, инструментарий и опыт могут значительно уменьшить связанный с этим риск. Изучению управления памятью должно уделяться достаточно внимания. Также существует большое число коммерческих и свободных инструментов, позволяющих программистам обеспечить отсутствие в программах ошибок при работе с памятью; например, Parasoft Insure++, Rational Purify и Electric Fence. Гибкая система управления памятью в C++ делает возможным создавать адаптированные для любого типа приложений профилировщики памяти.</p>
<p>В результате этого обсуждения мы убедились в том, что при сравнимой продуктивности программирования C++ обеспечивает приложениям гораздо лучшие, чем Java, производительность работы и эффективность использования памяти.</p>
<p>2.4. Доступные библиотеки и инструментарий</p>
<p>Java-платформа предлагает внушительное число пакетов, насчитывающих сотни классов для любых задач, включая пользовательский графический интерфейс, безопасность, поддержку сети и прочие. Это несомненное преимущество Java-платформы. Любому Java-пакету соответствует, как минимум, одна C++ библиотека, хотя иногда бывает очень трудно собрать в одном C++ проекте множество библиотек и заставить их вместе правильно работать.</p>
<p>Однако это преимущество Java является также ее недостатком. Разобраться в огромном API программисту становится все сложнее. Можете быть наверняка уверены, что для любой задачи всегда найдется уже готовое решение или, по крайней мере, решение, облегчающее выполнение этой задачи. Но найти пригодный для этого пакет и класс становится все труднее. Также с увеличением числа пакетов стремительно растет размер Java-платформы. В результате стали возникать ее &laquo;урезанные&raquo; версии, утратившие преимущества готовых решений. Таким образом, размер Java-платформы делает практически невозможным создание Java-систем небольшими производителями независимо от создателя Java Sun Microsystems, что ослабляет конкуренцию.</p>
<p>Если преимущества Java заключаются в доступных библиотеках, то явные преимущества C++ &#8211; в имеющихся средствах разработки. За все время существования семейства языков C и C++ было создано огромное количество самых разнообразных средств разработки, включая инструменты для дизайна, отладки и профилирования. Имеющиеся средства разработки для Java часто уступают по возможностям своим C++ -аналогам. Это справедливо даже для инструментов от одного производителя; например, сравните Java и C/C++ -версии профилировщика Rational Quantify.</p>
<p>Самым важным инструментом для любого разработчика, использующего компилируемые языки, является компилятор. Основным достоинством компиляторов C++ является скорость работы. Для обеспечения кросс-платформенности своих компиляторов (и других средств разработки) производители Java-инструментов часто сами используют Java, со всеми вытекающими отсюда проблемами производительности и эффективности использования памяти. Иногда встречаются Java-компиляторы, написанные на C/C++ (например, IBM Jikes), но это редкость.</p>
<p><strong>3. Сравнение AWT/Swing и Qt</strong></p>
<p>До сих пор мы сравнивали лишь языки программирования Java и C++. Но, как мы упомянули в начале этой статьи, язык программирования является лишь одним из аспектов, принимаемых во внимание при разработке GUI. Теперь мы сравним пакеты для разработки GUI, которые поставляются вместе с Java, т.е. AWT и Swing, и кросс-платформенный инструментарий Qt от норвежского производителя Trolltech. В сравнении мы ограничились лишь одним инструментарием C++, потому что в отличие от MFC (Microsoft Foundation Classes) и других подобных библиотек, Qt поддерживает все 32-битные Windows-платформы (кроме NT 3.5x), большинство разновидностей Unix, включая Linux, Solaris, AIX и Mac OS X, и встраиваемые платформы. Это позволяет максимально близко сопоставить платформы Java/AWT/Swing и C++/Qt.</p>
<p><strong>3.1. Описание AWT, Swing и Qt</strong></p>
<p>Инструментарий AWT (Abstract Windowing Toolkit) начал поставляться с самой первой версией Java. Он использует родные для платформ компоненты GUI (т.е. Win32 API для Windows и библиотеку Motif для Unix), обеспечивая таким образом переносную обертку. Это значит, что внешний вид и поведение AWT-программ будет отличаться на различных платформах, потому что именно они занимаются отрисовкой и управлением компонентов GUI. Это противоречит кросс-платформенной философии Java и может быть объяснено тем, что первая версия AWT была разработана за четырнадцать дней.</p>
<p>По этой и другим причинам AWT был дополнен инструментарием Swing. Swing использует AWT (и, следовательно, низкоуровневые библиотеки) только лишь для базовых операций: создания прямоугольных окон, управления событиями и отрисовки графических примитивов. Всем остальным, включая отрисовку компонентов GUI, занимается Swing. Это решает проблему отличающегося внешнего вида и поведения приложений на различных платформах. Но из-за реализации Swing-инструментария средствами Java его производительность оставляет желать лучшего. В результате Swing-программы медлительны не только во время интенсивных вычислений, но и при отрисовке элементов пользовательского интерфейса. Как уже говорилось, ничто не вызывает у пользователей такого раздражения, как большое время отклика интерфейса программ. Странно наблюдать за медлительностью перерисовки Swing -кнопки на современном оборудовании. Хотя с ростом производительности оборудования эта ситуация будет постепенно улучшаться, сложным пользовательским интерфейсам, созданным с помощью Swing, всегда будет свойственна медлительность.</p>
<p>При разработке инструментария Qt был использован тот же самый подход: низкоуровневые библиотеки используются только лишь для базовых операций, а отрисовкой элементов GUI занимается непосредственно Qt. Благодаря этому инструментарий Qt приобретает все преимущества Swing (например, схожесть поведения и внешнего вида приложений на различных платформах), и не имеет проблем, связанных с низкой производительностью, так как разработан на C++ и откомпилирован в машинный код. Интерфейс, созданный с помощью Qt, отличается быстрой работой, и, благодаря использованию кэширования, может быть быстрее интерфейса, разработанного стандартными средствами. Теоретически, оптимизированная не-Qt программа должна быть быстрее аналогичной Qt-программы; но на практике для оптимизации не-Qt программы потребуется больше усилий и мастерства, чем для создания оптимизированной Qt-программы.</p>
<p>И Qt, и Swing поддерживают технику стилей, которая позволяет программам независимо от платформы использовать один из стилей интерфейса. Это становится возможным благодаря тому, что отрисовкой элементов GUI занимаются непосредственно Qt и Swing. Вместе с Qt поставляются стили, которые эмулируют внешний вид Win32, Motif, MacOS X Aqua (в Macintosh-версии), и даже стиль, эмулирующий внешний вид Swing-программ.</p>
<p>3.2. Парадигмы программирования в Qt и Swing</p>
<p>Несмотря на то, что оценка API в определенной степени является делом личных предпочтений программиста, среди API-интерфейсов можно выделить такие, которые сделают ваш код более простым, кратким, элегантным и читаемым, чем другие. Ниже мы приводим два примера кода: первый с использованием Java/Swing, а второй с использованием C++/Qt, в которых реализуется вставка нескольких элементов в иерархическое дерево. Swing-код:</p>
<p>&#8230;<br />
DefaultMutableTreeNode root = new DefaultMutableTreeNode( &laquo;Root&raquo; );<br />
DefaultMutableTreeNode child1 = new DefaultMutableTreeNode( &laquo;Child 1&#8243; );<br />
DefaultMutableTreeNode child2 = new DefaultMutableTreeNode( &laquo;Child 2&#8243; );<br />
DefaultTreeModel model = new DefaultTreeModel( root );<br />
JTree tree = new JTree( model );<br />
model.insertNodeInto( child1, root, 0 );<br />
model.insertNodeInto( child2, root, 1 );<br />
&#8230;<br />
Этот же код с использованием Qt:</p>
<p>&#8230;<br />
QListView* tree = new QListView;<br />
QListViewItem* root = new QListViewItem( tree, &laquo;Root&raquo; );<br />
QListViewItem* child1 = new QListViewItem( root, &laquo;Child 1&#8243; );<br />
QListViewItem* child2 = new QListViewItem( root, &laquo;Child 2&#8243; );<br />
&#8230;<br />
Как видите, Swing использует архитектуру Model-View-Controller (MVC), в то время как Qt ее поддерживает, но не навязывает использовать. Поэтому Qt-код более интуитивен. К такому же результату приводит сравнение кода для создания заполненной таблицы или других сложных компонентов GUI.</p>
<p>Вторым интересным моментом является то, как различные инструментарии связывают воздействие пользователя (например, выбор элемента в выше созданном дереве) с определенной функциональностью (вызовом функции или метода). Синтаксически в Java/Swing и C++/Qt это выглядит по-разному, но основной принцип общий. Трудно сказать, какой код является более ясным и элегантным, Swing-код:</p>
<p>&#8230;<br />
tree.addTreeSelectionListener( handler );<br />
&#8230;<br />
или Qt-код:</p>
<p>&#8230;<br />
connect( tree, SIGNAL( itemSelected( QListViewItem* ) ),<br />
handler, SLOT( handlerMethod( QListViewItem* ) ) );<br />
&#8230;<br />
С одной стороны, Swing-код выглядит проще, а с другой &#8211; Qt-код более гибок. Qt позволяет программисту использовать для управляющей функции любое имя, в то время, как Swing обязывает использовать в качестве имени valueChanged() (вот почему в приведенном выше Swing-примере оно не было указано явно). Также Qt позволяет связывать событие (сигнал в терминологии Qt) с любым числом управляющих функций (слотов).</p>
<p>Таким образом, и Java/AWT/Swing, и C++/Qt одинаково хорошо подходят для разработки сложного пользовательского интерфейса. Главным недостатком Swing-интерфейса является низкая производительность Java.</p>
<p><strong>4. Заключение</strong></p>
<p>Мы сравнили две платформы: Java/AWT/Swing и C++/Qt, оценив их пригодность для эффективной разработки высокопроизводительных приложений с пользовательским графическим интерфейсом. В то время, как Java-платформа обеспечивает разработчикам сравнимую продуктивность программирования, платформа C++/Qt обеспечивает приложениям лучшую производительность и эффективность использования памяти. Также C++ выигрывает за счет более лучших средств разработки.</p>
<p>Что касается сравнения GUI-библиотек, Swing и Qt, то видно, что более худшая производительность Java-программ делает платформу Java/Swing менее подходящей для разработки GUI-приложений, даже при сравнимом опыте программирования. В отличие от Swing, Qt не навязывает программисту парадигму программирования Model-View-Controller, поэтому в результате Qt-программы получаются более краткими.</p>
<p>Независимое научное исследование и полученный практический опыт эксплуатации показывают, что предпочитаемость использования Java во многих случаях чаще всего неоправданна, а комбинация C++/Qt является более лучшей. Главными причинами этого являются более низкие производительность и эффективность использования памяти в Java (особенно при использовании инструментария Swing) при такой же обеспечиваемой продуктивности программирования. Во многих выполненных нами проектах начинающие программисты осваивали быстрее Java, более опытные и профессиональные разработчики (занимающиеся проектированием приложений и реализацией критичных участков программ) достигали быстрее лучших результатов с помощью C++.</p>
<p>Java/Swing может подойти для разработки некоторых программ, особенно если они без GUI-интерфейса или с ограниченной GUI-функциональностью. В целом, C++/Qt является более лучшим решением, в особенности для разработки GUI-приложений.</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/lc0d3r.wordpress.com/163/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/lc0d3r.wordpress.com/163/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/lc0d3r.wordpress.com/163/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/lc0d3r.wordpress.com/163/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/lc0d3r.wordpress.com/163/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/lc0d3r.wordpress.com/163/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/lc0d3r.wordpress.com/163/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/lc0d3r.wordpress.com/163/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/lc0d3r.wordpress.com/163/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/lc0d3r.wordpress.com/163/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=lc0d3r.wordpress.com&blog=3938050&post=163&subd=lc0d3r&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://lc0d3r.wordpress.com/2009/11/03/%d1%81%d1%80%d0%b0%d0%b2%d0%bd%d0%b5%d0%bd%d0%b8%d0%b5-qt-%d0%b8-java/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/3852e31b2e16f793e3a0f45319ee3d10?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">lc0d3r</media:title>
		</media:content>
	</item>
		<item>
		<title>&#171;Правильное&#187; образование</title>
		<link>http://lc0d3r.wordpress.com/2009/10/30/%d0%bf%d1%80%d0%b0%d0%b2%d0%b8%d0%bb%d1%8c%d0%bd%d0%be%d0%b5-%d0%be%d0%b1%d1%80%d0%b0%d0%b7%d0%be%d0%b2%d0%b0%d0%bd%d0%b8%d0%b5/</link>
		<comments>http://lc0d3r.wordpress.com/2009/10/30/%d0%bf%d1%80%d0%b0%d0%b2%d0%b8%d0%bb%d1%8c%d0%bd%d0%be%d0%b5-%d0%be%d0%b1%d1%80%d0%b0%d0%b7%d0%be%d0%b2%d0%b0%d0%bd%d0%b8%d0%b5/#comments</comments>
		<pubDate>Fri, 30 Oct 2009 19:24:35 +0000</pubDate>
		<dc:creator>lc0d3r</dc:creator>
				<category><![CDATA[образование]]></category>
		<category><![CDATA[социум]]></category>
		<category><![CDATA[дети]]></category>
		<category><![CDATA[обучение]]></category>
		<category><![CDATA[талант]]></category>

		<guid isPermaLink="false">http://lc0d3r.wordpress.com/?p=156</guid>
		<description><![CDATA[что-то вордпресс криво парсит теги объекта, посему, ссылка http://www.ted.com/talks/view/id/66
добавил с ютуба

       <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=lc0d3r.wordpress.com&blog=3938050&post=156&subd=lc0d3r&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>что-то вордпресс криво парсит теги объекта, посему, ссылка http://www.ted.com/talks/view/id/66</p>
<p>добавил с ютуба</p>
<p><span style="text-align:center; display: block;"><a href="http://lc0d3r.wordpress.com/2009/10/30/%d0%bf%d1%80%d0%b0%d0%b2%d0%b8%d0%bb%d1%8c%d0%bd%d0%be%d0%b5-%d0%be%d0%b1%d1%80%d0%b0%d0%b7%d0%be%d0%b2%d0%b0%d0%bd%d0%b8%d0%b5/"><img src="http://img.youtube.com/vi/iG9CE55wbtY/2.jpg" alt="" /></a></span></p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/lc0d3r.wordpress.com/156/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/lc0d3r.wordpress.com/156/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/lc0d3r.wordpress.com/156/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/lc0d3r.wordpress.com/156/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/lc0d3r.wordpress.com/156/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/lc0d3r.wordpress.com/156/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/lc0d3r.wordpress.com/156/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/lc0d3r.wordpress.com/156/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/lc0d3r.wordpress.com/156/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/lc0d3r.wordpress.com/156/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=lc0d3r.wordpress.com&blog=3938050&post=156&subd=lc0d3r&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://lc0d3r.wordpress.com/2009/10/30/%d0%bf%d1%80%d0%b0%d0%b2%d0%b8%d0%bb%d1%8c%d0%bd%d0%be%d0%b5-%d0%be%d0%b1%d1%80%d0%b0%d0%b7%d0%be%d0%b2%d0%b0%d0%bd%d0%b8%d0%b5/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/3852e31b2e16f793e3a0f45319ee3d10?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">lc0d3r</media:title>
		</media:content>

		<media:content url="http://img.youtube.com/vi/iG9CE55wbtY/2.jpg" medium="image" />
	</item>
		<item>
		<title>Нумерация версий ПО</title>
		<link>http://lc0d3r.wordpress.com/2009/10/12/%d0%bd%d1%83%d0%bc%d0%b5%d1%80%d0%b0%d1%86%d0%b8%d1%8f-%d0%b2%d0%b5%d1%80%d1%81%d0%b8%d0%b9-%d0%bf%d0%be/</link>
		<comments>http://lc0d3r.wordpress.com/2009/10/12/%d0%bd%d1%83%d0%bc%d0%b5%d1%80%d0%b0%d1%86%d0%b8%d1%8f-%d0%b2%d0%b5%d1%80%d1%81%d0%b8%d0%b9-%d0%bf%d0%be/#comments</comments>
		<pubDate>Mon, 12 Oct 2009 18:32:10 +0000</pubDate>
		<dc:creator>lc0d3r</dc:creator>
				<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://lc0d3r.wordpress.com/?p=151</guid>
		<description><![CDATA[Нумерация версий ПО
Версия программного обеспечения нумеруется согласно схеме A.B.C.D, где:
A — мажорная версия (major version) программного обеспечения;
B — минорная версия (minor subversion, промежуточная версия) программного обеспечения;
C — релиз (release) программного обеспечения;
D — сборка (build) программного обеспечения.
Также может использоваться простой номер программного обеспечения — A.B (например, при указании в эксплуатационных, рекламных и маркетинговых документах, на веб-сайте [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=lc0d3r.wordpress.com&blog=3938050&post=151&subd=lc0d3r&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><h3><a href="http://blog.m0n0.ru/2008/10/blog-post.html">Нумерация версий ПО</a></h3>
<div>Версия программного обеспечения нумеруется согласно схеме <span style="font-weight:bold;">A.B.C.D</span>, где:<br />
<span style="font-weight:bold;">A</span> — мажорная версия (major version) программного обеспечения;<br />
<span style="font-weight:bold;">B </span>— минорная версия (minor subversion, промежуточная версия) программного обеспечения;<br />
<span style="font-weight:bold;">C </span>— релиз (release) программного обеспечения;<br />
<span style="font-weight:bold;">D </span>— сборка (build) программного обеспечения.<br />
Также может использоваться простой номер программного обеспечения — A.B (например, при указании в эксплуатационных, рекламных и маркетинговых документах, на веб-сайте и т.д.).</p>
<p><span style="font-weight:bold;">Мажорная версия программного обеспечения</span><br />
Изменение номера мажорной версии программного обеспечения происходит при глобальном<br />
изменении функциональности продукта (при введении нового порядка функциональности).<br />
Первая мажорная версия продукта = 1. Мажорная версия продукта может быть = 0 в версии для внутреннего использования и тестирования в рамках компании, а также программы бета &#8211; тестирования нового продукта.<br />
<span style="font-style:italic;"><span id="more-151"></span><br />
Изменения в сопровождении продукта</span><br />
При переходе на новую мажорную версию может быть:</p>
<ul>
<li>изменен весь спектр документации;</li>
<li>изменены все маркетинговые материалы (включая листовки, краткие описания, информацию на сайте и проч.);</li>
<li>изменен дизайн продуктов;</li>
<li>введена новая позиция в прайс-листе.</li>
</ul>
<p><span style="font-style:italic;">Правила использования номера</span><br />
При составлении ряда общих маркетинговых документов (листовок, перечня продукта, прайс-листов) допускается сокращение полного номера версии продукта до номера версии.<br />
Переход на новую версию для пользователей — платный (за исключением пользователей, имеющих действующий контракт на получение новых мажорных версий программного обеспечения).<br />
Вопрос перехода на новую мажорную версию решается руководством компании, отделом маркетинга и разработки.</p>
<p><span style="font-weight:bold;">Минорная версия программного обеспечения</span><br />
Изменение номера минорной версии программного обеспечения происходит при:</p>
<ul>
<li>введении в продукт новой функциональности, ведущей к программной несовместимости с старой версией (несовместимость на уровне данных);</li>
<li>изменений в схеме функционирования продукта (прежде всего — с точки зрения пользователя);</li>
<li>значительных изменений (расширения, добавления новой) функциональности, появления в</li>
<li>продукте новых конкурентных преимуществ.</li>
</ul>
<p>Первая минорная версия = 0 (версия 1.0 – первый выход продукта на рынок.). При выходе новой версии продукта нумерация минорной версии сбрасывается в нулевое значение.</p>
<p><span style="font-style:italic;">Изменения в сопровождении продукта</span><br />
Изменения, вошедшие в минорную версию, должны отражаться в документации по продукту, в том числе печатной. При выпуске коробочных продуктов возможна индикация номера минорной версии с помощью наклеек (к примеру &laquo;Версия 3.1&#8243;), или других средств, не меняя общий дизайн.<br />
Минорная версия продукта может отражаться в части маркетинговых материалов, информации на сайте.<br />
При выходе новой минорной версии должны информироваться партнеры компании, список<br />
изменений публикуется на сайте.</p>
<p><span style="font-style:italic;">Правила использования номера</span><br />
При составлении маркетинговых документов (расширенные таблицы, сравнения, листовки), всей бумажной документации по продукту и части электронной документации допускается сокращение полного номера версии продукта до номера минорной версии (3.1, он же &#8211; простой номер версии программного продукта).<br />
Переход на новую минорную версию для пользователей — бесплатный.<br />
Вопрос перехода на новую минорную версию решается отделом разработки (и техн. поддержки), при обязательном информировании отдела маркетинга.</p>
<p><span style="font-weight:bold;">Релиз программного обеспечения</span><br />
Изменение номера релиза программного обеспечения происходит при каждом публичном выпуске обновления программного обеспечения, не обозначенном выше. Номерами релизов обозначаются выходы исправлений ошибок, не вносящие изменений в схему функционирования продукта и не влекущих несовместимость на уровне файлов данных (для обновления программного обеспечения не требуется специальных процедур конвертации/преобразования данных).<br />
Нумерация релизов продукта начинается с 0 (версия 1.0.0 — первый выход продукта на рынок.).<br />
При выходе новой промежуточной версии продукта нумерация релиза сбрасывается в нулевое значение.<br />
При этом возможен выпуск релизов для предыдущих промежуточных версий продукта (по тем или иным техническим причинам, для поддержки пользователей).</p>
<p><span style="font-style:italic;">Изменения в сопровождении продукта</span><br />
Изменения, вошедшие в продукт, должны отображаться в документе &laquo;Замечания по версии&raquo; (Release Notes) и, возможно, в электронной документации (руководство пользователя).<br />
Новый релиз размещается на сайте в разделе &laquo;Скачать&raquo; (Download), обновляется текущая версия дистрибутива. Отдел технической поддержки рекомендует пользователям совершить переход на данную версию. Возможна информационная рассылка пользователям по линии техподдержки и партнерам компании. Также, возможно создание установочных файлов, предназначенных специально для обновления программного обеспечения в пределах релиза.</p>
<p><span style="font-style:italic;">Правила использования номера</span><br />
В любых документах, передающихся пользователю и не описанных выше (описание файлов на сайте в разделе &laquo;Скачать&raquo; (Download), документ &laquo;Замечания по версии&raquo;, информационные рассылки по линии техподдержки) полная версия продукта сокращается до номера релиза (3.1.5).<br />
Переход на новый релиз для пользователей бесплатный.<br />
Вопрос создания нового релиза решается отделом разработки.</p>
<p><span style="font-weight:bold;">Номер сборки программного обеспечения</span><br />
Изменение номера сборки программного обеспечения происходит при любой новой сборке продукта (компиляции программного обеспечения для внутренних целей).<br />
Нумерация сборок продукта начинается с 1 (0.0.0.1 — первая сборка прототипа продукта). Номер сборки может сбрасываться при выходе новой версии продукта (по решению отдела разработки).</p>
<p><span style="font-style:italic;">Изменения в сопровождении продукта</span><br />
Изменений в сопровождении продукта не происходит.</p>
<p><span style="font-style:italic;">Правила использования номера</span><br />
Использовать номера сборки допускается только &#8211; во всей внутренней документации компании, системной информации по версиям файлов, окне &laquo;О программе&raquo;, в частных случаях информационных рассылок по линии техподдержки.<br />
Переход на новый номер сборки для пользователей возможен в случае проведения бета-<br />
тестирования, решения частных технических проблем совместно с отделом технической поддержки.<br />
Вопрос создания нового билда решается отделом разработки совместно с отделом тестирования.</p>
<p><span style="font-style:italic;">Статья взята отсюда: </span><a style="font-style:italic;" href="http://www.free-lance.ru/users/shupruta/upload/fileqZud2j.pdf">http://www.free-lance.ru/users/shupruta/upload/fileqZud2j.pdf</a></p>
<p><span style="font-size:130%;"><span style="font-weight:bold;">Совет по нумерации версий ПО найденный в интернете:</span></span></p>
<p>Весь процесс делю на чекпоинты.<br />
При достижении очередного чекпоинта увеличивается минорный номер. Проект имеет пометку dev<br />
Как только достигается заявленный функционал и начинается бета-тестирование &#8211; пометка dev убирается, увеличивается мажорный номер, минорный обнуляется и появляется пометка RC.<br />
Номера RC увеличиваются в процессе тестирования (на практике крайне редко доходит до трех. Обычно RC1, гораздо реже добавляется RC2)<br />
Как только система проходит все тесты и достигает заявленного функционала &#8211; то релиз.<br />
Можно писать ТЗ на дальнейшее расширение функциональности и начинать все заново.</p>
</div>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/lc0d3r.wordpress.com/151/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/lc0d3r.wordpress.com/151/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/lc0d3r.wordpress.com/151/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/lc0d3r.wordpress.com/151/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/lc0d3r.wordpress.com/151/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/lc0d3r.wordpress.com/151/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/lc0d3r.wordpress.com/151/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/lc0d3r.wordpress.com/151/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/lc0d3r.wordpress.com/151/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/lc0d3r.wordpress.com/151/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=lc0d3r.wordpress.com&blog=3938050&post=151&subd=lc0d3r&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://lc0d3r.wordpress.com/2009/10/12/%d0%bd%d1%83%d0%bc%d0%b5%d1%80%d0%b0%d1%86%d0%b8%d1%8f-%d0%b2%d0%b5%d1%80%d1%81%d0%b8%d0%b9-%d0%bf%d0%be/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/3852e31b2e16f793e3a0f45319ee3d10?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">lc0d3r</media:title>
		</media:content>
	</item>
		<item>
		<title>Validation</title>
		<link>http://lc0d3r.wordpress.com/2009/10/07/validation/</link>
		<comments>http://lc0d3r.wordpress.com/2009/10/07/validation/#comments</comments>
		<pubDate>Wed, 07 Oct 2009 21:22:05 +0000</pubDate>
		<dc:creator>lc0d3r</dc:creator>
				<category><![CDATA[короткометражки]]></category>
		<category><![CDATA[фильмы]]></category>
		<category><![CDATA[life]]></category>
		<category><![CDATA[smile]]></category>
		<category><![CDATA[TJ  Thyne  Bones  Fox  Kurt  Kuenne  Validation  Vicki  Davis  Dave  Kuhr  Parking  Attendant  Theatre  Junkies]]></category>
		<category><![CDATA[video]]></category>

		<guid isPermaLink="false">http://lc0d3r.wordpress.com/?p=147</guid>
		<description><![CDATA[
&#171;Validation&#187; is a fable about the magic of free parking.
Starring TJ Thyne &#38; Vicki Davis.
Writer/Director/Composer &#8211; Kurt Kuenne.

Winner &#8211; Best Narrative Short, Cleveland Int&#8217;l Film Festival, Winner &#8211; Jury Award, Gen Art Chicago Film Festival, Winner &#8211; Audience Award, Hawaii Int&#8217;l Film Festival, Winner &#8211; Best Short Comedy, Breckenridge Festival of Film, Winner &#8211; Crystal [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=lc0d3r.wordpress.com&blog=3938050&post=147&subd=lc0d3r&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p><span style="text-align:center; display: block;"><a href="http://lc0d3r.wordpress.com/2009/10/07/validation/"><img src="http://img.youtube.com/vi/Cbk980jV7Ao/2.jpg" alt="" /></a></span></p>
<p>&laquo;Validation&raquo; is a fable about the magic of free parking.<br />
Starring TJ Thyne &amp; Vicki Davis.<br />
Writer/Director/Composer &#8211; Kurt Kuenne.</p>
<p><span id="more-147"></span><br />
Winner &#8211; Best Narrative Short, Cleveland Int&#8217;l Film Festival, Winner &#8211; Jury Award, Gen Art Chicago Film Festival, Winner &#8211; Audience Award, Hawaii Int&#8217;l Film Festival, Winner &#8211; Best Short Comedy, Breckenridge Festival of Film, Winner &#8211; Crystal Heart Award, Best Short Film &amp; Audience Award, Heartland Film Festival, Winner &#8211; Christopher &amp; Dana Reeve Audience Award, Williamstown Film Festival, Winner &#8211; Best Comedy, Dam Short Film Festival, Winner &#8211; Best Short Film, Sedona Int&#8217;l Film Festival.</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/lc0d3r.wordpress.com/147/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/lc0d3r.wordpress.com/147/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/lc0d3r.wordpress.com/147/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/lc0d3r.wordpress.com/147/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/lc0d3r.wordpress.com/147/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/lc0d3r.wordpress.com/147/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/lc0d3r.wordpress.com/147/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/lc0d3r.wordpress.com/147/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/lc0d3r.wordpress.com/147/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/lc0d3r.wordpress.com/147/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=lc0d3r.wordpress.com&blog=3938050&post=147&subd=lc0d3r&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://lc0d3r.wordpress.com/2009/10/07/validation/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/3852e31b2e16f793e3a0f45319ee3d10?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">lc0d3r</media:title>
		</media:content>

		<media:content url="http://img.youtube.com/vi/Cbk980jV7Ao/2.jpg" medium="image" />
	</item>
		<item>
		<title>21 грамм, How much does guilt weigh?, Алехандро Гонсалес Иньярриту</title>
		<link>http://lc0d3r.wordpress.com/2009/07/15/21-%d0%b3%d1%80%d0%b0%d0%bc%d0%bc-how-much-does-guilt-weigh-%d0%b0%d0%bb%d0%b5%d1%85%d0%b0%d0%bd%d0%b4%d1%80%d0%be-%d0%b3%d0%be%d0%bd%d1%81%d0%b0%d0%bb%d0%b5%d1%81-%d0%b8%d0%bd%d1%8c%d1%8f%d1%80/</link>
		<comments>http://lc0d3r.wordpress.com/2009/07/15/21-%d0%b3%d1%80%d0%b0%d0%bc%d0%bc-how-much-does-guilt-weigh-%d0%b0%d0%bb%d0%b5%d1%85%d0%b0%d0%bd%d0%b4%d1%80%d0%be-%d0%b3%d0%be%d0%bd%d1%81%d0%b0%d0%bb%d0%b5%d1%81-%d0%b8%d0%bd%d1%8c%d1%8f%d1%80/#comments</comments>
		<pubDate>Wed, 15 Jul 2009 22:14:14 +0000</pubDate>
		<dc:creator>lc0d3r</dc:creator>
				<category><![CDATA[фильмы]]></category>

		<guid isPermaLink="false">http://lc0d3r.wordpress.com/?p=143</guid>
		<description><![CDATA[Есть фильмы хорошие, а есть плохие&#8230; есть интересные и не очень; есть те которые смотришь один раз,  есть те которые хочешь пересмотреть много раз..
А есть те фильмы, о которых много думаешь, и не можешь молчать. Гонсалес Иньярриту талантливый режиссер и его фильмы всегда оставляют после себя след, чего только стоит его фильм &#171;Сука-любовь&#187; (Amores perros), [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=lc0d3r.wordpress.com&blog=3938050&post=143&subd=lc0d3r&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Есть фильмы хорошие, а есть плохие&#8230; есть интересные и не очень; есть те которые смотришь один раз,  есть те которые хочешь пересмотреть много раз..</p>
<p><span id="more-143"></span>А есть те фильмы, о которых много думаешь, и не можешь молчать. Гонсалес Иньярриту талантливый режиссер и его фильмы всегда оставляют после себя след, чего только стоит его фильм &laquo;Сука-любовь&raquo; (Amores perros), что входит в топ-250 имбд(128 место), который еще многие дни после просмотра не покидает зрителя.  Но сегодня я, наконец-то, посмотрел его другой фильм, который уже давно хотел посмотреть &#8211; &laquo;21 грамм &laquo;. Данная картина на протяжении всего фильма держит зрителя возле себя, заставляет чувствовать всё что переживают герои. Да что там на протяжении всего фильма, даже после, ходишь и думаешь, думаешь о всём&#8230; 21 грамм &#8211; один с тех фильмов которые изменяют нас раз и навсегда, которые невозможно забыть&#8230; да что тут говорить, смотрите <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p style="text-align:center;"><img class="aligncenter" src="http://videoefir.ru/uploads/posts/2008-05/1210823068_1210107272_21_grams-cdcovers_cc-front.jpg" alt="" /></p>
<p><strong>How much does guilt weigh?</strong></p>
<blockquote><p>Говорят, что каждый человек в момент смерти теряет 21 грамм. Столько весит горстка монет в пять центов, плитка шоколада, птица колибри…</p>
<p>«21 грамм» — это история о надежде и человечности, жизнелюбии и выживании. Независимо от того, боитесь вы смерти или нет, она приходит, и в этот момент ваше тело становится на 21 грамм легче. Быть может, это вес человеческой души?</p></blockquote>
<p>отличный актёрский состав:</p>
<blockquote><p><strong> </strong>В такие картины без таланта не попадешь. Да и награды венецианского кинофестиваля обо всем говорят сами: «Лучший актер» — Шон Пенн; «Лучшая актриса (зрительские симпатии) » — Наоми Уоттс; «Лучший актер (зрительские симпатии) » — Бенисио Дель Торо. Тут и говорить больше ничего не следует, все уже сказано множеством слов до меня.</p></blockquote>
<p>более подробную информацию можете посмотреть на кинопоиске<br />
<a href="http://www.kinopoisk.ru/level/1/film/9393/">http://www.kinopoisk.ru/level/1/film/9393/</a></p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/lc0d3r.wordpress.com/143/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/lc0d3r.wordpress.com/143/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/lc0d3r.wordpress.com/143/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/lc0d3r.wordpress.com/143/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/lc0d3r.wordpress.com/143/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/lc0d3r.wordpress.com/143/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/lc0d3r.wordpress.com/143/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/lc0d3r.wordpress.com/143/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/lc0d3r.wordpress.com/143/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/lc0d3r.wordpress.com/143/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=lc0d3r.wordpress.com&blog=3938050&post=143&subd=lc0d3r&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://lc0d3r.wordpress.com/2009/07/15/21-%d0%b3%d1%80%d0%b0%d0%bc%d0%bc-how-much-does-guilt-weigh-%d0%b0%d0%bb%d0%b5%d1%85%d0%b0%d0%bd%d0%b4%d1%80%d0%be-%d0%b3%d0%be%d0%bd%d1%81%d0%b0%d0%bb%d0%b5%d1%81-%d0%b8%d0%bd%d1%8c%d1%8f%d1%80/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/3852e31b2e16f793e3a0f45319ee3d10?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">lc0d3r</media:title>
		</media:content>

		<media:content url="http://videoefir.ru/uploads/posts/2008-05/1210823068_1210107272_21_grams-cdcovers_cc-front.jpg" medium="image" />
	</item>
		<item>
		<title>Простой JavaScript toolTip</title>
		<link>http://lc0d3r.wordpress.com/2009/07/14/simple-javascript-tooltip/</link>
		<comments>http://lc0d3r.wordpress.com/2009/07/14/simple-javascript-tooltip/#comments</comments>
		<pubDate>Tue, 14 Jul 2009 21:28:08 +0000</pubDate>
		<dc:creator>lc0d3r</dc:creator>
				<category><![CDATA[js/ajax]]></category>
		<category><![CDATA[web-development]]></category>
		<category><![CDATA[всплывающая подсказка]]></category>
		<category><![CDATA[подсказка html]]></category>
		<category><![CDATA[html tooltip]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[javascript tooltip]]></category>

		<guid isPermaLink="false">http://lc0d3r.wordpress.com/?p=135</guid>
		<description><![CDATA[Иногда нужно использовать подсказку с хтмл, тогда начинаем придумывать разные методы с использование тех или иных фреймворком, а чуть позже бороться с совместимостью в браузерах и иных проблемах. Для уменьшения времени на поиски удобного, компактного и, главное, кроссбраузерного решения я и пишу данную заметку. итак приступаем к реализации:

стили элемента

1 #ns_tt{
 2 position: absolute;
 3 border: [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=lc0d3r.wordpress.com&blog=3938050&post=135&subd=lc0d3r&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Иногда нужно использовать подсказку с хтмл, тогда начинаем придумывать разные методы с использование тех или иных фреймворком, а чуть позже бороться с совместимостью в браузерах и иных проблемах. Для уменьшения времени на поиски удобного, компактного и, главное, кроссбраузерного решения я и пишу данную заметку.<span id="more-135"></span> итак приступаем к реализации:</p>
<ul>
<li>стили элемента</li>
</ul>
<blockquote><p><span style="color:#008080;">1</span> <span style="color:#800000;">#ns_tt</span><span style="color:#000000;">{</span><span style="color:#FF0000;"><br />
</span><span style="color:#008080;"> 2</span> <span style="color:#FF0000;">position</span><span style="color:#000000;">:</span><span style="color:#0000FF;"> absolute</span><span style="color:#000000;">;</span><span style="color:#FF0000;"><br />
</span><span style="color:#008080;"> 3</span> <span style="color:#FF0000;">border</span><span style="color:#000000;">:</span><span style="color:#0000FF;"> solid #AAAAAA 1px</span><span style="color:#000000;">;</span><span style="color:#FF0000;"><br />
</span><span style="color:#008080;"> 4</span> <span style="color:#FF0000;">background-color</span><span style="color:#000000;">:</span><span style="color:#0000FF;"> #DDDDDD</span><span style="color:#000000;">;</span><span style="color:#FF0000;"><br />
</span><span style="color:#008080;"> 5</span> <span style="color:#FF0000;">font-family</span><span style="color:#000000;">:</span><span style="color:#0000FF;"> Tahoma, sans-serif</span><span style="color:#000000;">;</span><span style="color:#FF0000;"><br />
</span><span style="color:#008080;"> 6</span> <span style="color:#FF0000;">font-size</span><span style="color:#000000;">:</span><span style="color:#0000FF;"> 11px</span><span style="color:#000000;">;</span><span style="color:#FF0000;"><br />
</span><span style="color:#008080;"> 7</span> <span style="color:#FF0000;">line-height</span><span style="color:#000000;">:</span><span style="color:#0000FF;"> 16px</span><span style="color:#000000;">;</span><span style="color:#FF0000;"><br />
</span><span style="color:#008080;"> 8</span> <span style="color:#FF0000;">padding</span><span style="color:#000000;">:</span><span style="color:#0000FF;"> 2px 5px</span><span style="color:#000000;">;</span><span style="color:#FF0000;"><br />
</span><span style="color:#008080;"> 9</span> <span style="color:#FF0000;">overflow</span><span style="color:#000000;">:</span><span style="color:#0000FF;"> hidden</span><span style="color:#000000;">;</span><span style="color:#FF0000;"><br />
</span><span style="color:#008080;">10</span> <span style="color:#FF0000;">margin</span><span style="color:#000000;">:</span><span style="color:#0000FF;"> 25px 0px 0px 5px</span><span style="color:#000000;">;</span><span style="color:#FF0000;"><br />
</span><span style="color:#008080;">11</span> <span style="color:#000000;">}</span></p></blockquote>
<p><span style="color:#000000;">Создаём js файл.<br />
Вот тут самое интересное.<br />
Создаём переменные отвечающие за левую и верхнюю позицию подсказки:</p>
<blockquote><p><span style="color:#0000FF;">var</span><span style="color:#000000;"> l </span><span style="color:#000000;">=</span><span style="color:#000000;"> </span><span style="color:#000000;">0</span><span style="color:#000000;">, t </span><span style="color:#000000;">=</span><span style="color:#000000;"> </span><span style="color:#000000;">0</span></p></blockquote>
<p>Проверяем браузер. Если это Internet Explorer, то он будет понимать document.all и соответственно у него другие понятия о событиях и значениях которые они возвращают.</p>
<blockquote><p><span style="color:#0000FF;">var</span><span style="color:#000000;"> IE </span><span style="color:#000000;">=</span><span style="color:#000000;"> document.all</span><span style="color:#000000;">?</span><span style="color:#0000FF;">true</span><span style="color:#000000;">:</span><span style="color:#0000FF;">false</span></p></blockquote>
<p>При движении мыши запускаем функцию, которую опишем ниже:</p>
<blockquote><p><span style="color:#000000;">document.onmousemove = getMouseXY</span></p></blockquote>
<p>Создаём элемент div который у нас будет являться подсказкой:</p>
<blockquote><p><span style="color:#0000FF;">var</span><span style="color:#000000;"> ns_tt </span><span style="color:#000000;">=</span><span style="color:#000000;"> document.createElement(</span><span style="color:#000000;">&laquo;</span><span style="color:#000000;">div</span><span style="color:#000000;">&laquo;</span><span style="color:#000000;">)</span></p></blockquote>
<p>А эта функция будет изменять положение подсказки относительно положения курсора мыши:</p>
<blockquote><p><span style="color:#0000FF;">function</span><span style="color:#000000;"> getMouseXY(e) {<br />
</span><span style="color:#0000FF;">if</span><span style="color:#000000;"> (IE) {<br />
l </span><span style="color:#000000;">=</span><span style="color:#000000;"> event.clientX </span><span style="color:#000000;">+</span><span style="color:#000000;"> document.body.scrollLeft<br />
t </span><span style="color:#000000;">=</span><span style="color:#000000;"> event.clientY </span><span style="color:#000000;">+</span><span style="color:#000000;"> document.body.scrollTop<br />
}<br />
</span><span style="color:#0000FF;">else</span><span style="color:#000000;"> {<br />
l </span><span style="color:#000000;">=</span><span style="color:#000000;"> e.pageX<br />
t </span><span style="color:#000000;">=</span><span style="color:#000000;"> e.pageY<br />
}<br />
ns_tt.style.left </span><span style="color:#000000;">=</span><span style="color:#000000;"> l </span><span style="color:#000000;">+</span><span style="color:#000000;"> </span><span style="color:#000000;">&laquo;</span><span style="color:#000000;">px</span><span style="color:#000000;">&laquo;</span><span style="color:#000000;"><br />
ns_tt.style.top </span><span style="color:#000000;">=</span><span style="color:#000000;"> t </span><span style="color:#000000;">+</span><span style="color:#000000;"> </span><span style="color:#000000;">&laquo;</span><span style="color:#000000;">px</span><span style="color:#000000;">&laquo;</span><span style="color:#000000;"><br />
</span><span style="color:#0000FF;">return</span><span style="color:#000000;"> </span><span style="color:#0000FF;">true</span><span style="color:#000000;"><br />
}</span></p></blockquote>
<p>Как вы видели мы проверяли наличие браузера IE. Дело в том что IE во-первых: положение курсора мыши понимает из объекта event в частности его значений clientX и clientY; во-вторых: координаты мыши отсчитываются от левого верхнего угла окна браузера, а когда пользователь использует прокрутку то в IE координата смещается, чего нет в других браузерах.</p>
<p>Следующая функция помещает в body нашу подсказку, вставляет текст переданый в качестве параметра и даёт ей уникальное имя, по которой в последствии мы будем её искать для удаления:</p>
<blockquote><p><span style="color:#0000FF;">function</span><span style="color:#000000;"> AddTT(tt_text){<br />
document.body.appendChild(ns_tt)<br />
ns_tt.id </span><span style="color:#000000;">=</span><span style="color:#000000;"> </span><span style="color:#000000;">&laquo;</span><span style="color:#000000;">ns_tt</span><span style="color:#000000;">&laquo;</span><span style="color:#000000;"><br />
ns_tt.innerHTML </span><span style="color:#000000;">=</span><span style="color:#000000;"> tt_text<br />
}</span></p></blockquote>
<p>Последняя функция удаляет подсказку:</p>
<blockquote><p><span style="color:#0000FF;">function</span><span style="color:#000000;"> RemoveTT() {<br />
document.body.removeChild(document.getElementById(</span><span style="color:#000000;">&laquo;</span><span style="color:#000000;">ns_tt</span><span style="color:#000000;">&laquo;</span><span style="color:#000000;">))<br />
}</span></p></blockquote>
<p><span style="color:#000000;"> </span></p>
<ul>
<li><span style="color:#000000;">весь JavaScript </span></li>
</ul>
<blockquote>
<div><!-- Code highlighting produced by Actipro CodeHighlighter (freeware) http://www.CodeHighlighter.com/ --><span style="color:#008080;"> 1</span> <span style="color:#0000FF;">var</span><span style="color:#000000;"> l </span><span style="color:#000000;">=</span><span style="color:#000000;"> </span><span style="color:#000000;">0</span><span style="color:#000000;">, t </span><span style="color:#000000;">=</span><span style="color:#000000;"> </span><span style="color:#000000;">0</span><span style="color:#000000;"><br />
</span><span style="color:#008080;"> 2</span> <span style="color:#0000FF;">var</span><span style="color:#000000;"> IE </span><span style="color:#000000;">=</span><span style="color:#000000;"> document.all</span><span style="color:#000000;">?</span><span style="color:#0000FF;">true</span><span style="color:#000000;">:</span><span style="color:#0000FF;">false</span><span style="color:#000000;"><br />
</span><span style="color:#008080;"> 3</span> <span style="color:#000000;">document.onmousemove </span><span style="color:#000000;">=</span><span style="color:#000000;"> getMouseXY<br />
</span><span style="color:#008080;"> 4</span> <span style="color:#0000FF;">var</span><span style="color:#000000;"> ns_tt </span><span style="color:#000000;">=</span><span style="color:#000000;"> document.createElement(</span><span style="color:#000000;">&laquo;</span><span style="color:#000000;">div</span><span style="color:#000000;">&laquo;</span><span style="color:#000000;">)<br />
</span><span style="color:#008080;"> 5</span> <span style="color:#0000FF;">function</span><span style="color:#000000;"> getMouseXY(e) {<br />
</span><span style="color:#008080;"> 6</span> <span style="color:#000000;"> </span><span style="color:#0000FF;">if</span><span style="color:#000000;"> (IE) {<br />
</span><span style="color:#008080;"> 7</span> <span style="color:#000000;"> l </span><span style="color:#000000;">=</span><span style="color:#000000;"> event.clientX </span><span style="color:#000000;">+</span><span style="color:#000000;"> document.body.scrollLeft<br />
</span><span style="color:#008080;"> 8</span> <span style="color:#000000;"> t </span><span style="color:#000000;">=</span><span style="color:#000000;"> event.clientY </span><span style="color:#000000;">+</span><span style="color:#000000;"> document.body.scrollTop<br />
</span><span style="color:#008080;"> 9</span> <span style="color:#000000;"> }<br />
</span><span style="color:#008080;">10</span> <span style="color:#000000;"> </span><span style="color:#0000FF;">else</span><span style="color:#000000;"> {<br />
</span><span style="color:#008080;">11</span> <span style="color:#000000;"> l </span><span style="color:#000000;">=</span><span style="color:#000000;"> e.pageX<br />
</span><span style="color:#008080;">12</span> <span style="color:#000000;"> t </span><span style="color:#000000;">=</span><span style="color:#000000;"> e.pageY<br />
</span><span style="color:#008080;">13</span> <span style="color:#000000;"> }<br />
</span><span style="color:#008080;">14</span> <span style="color:#000000;"> ns_tt.style.left </span><span style="color:#000000;">=</span><span style="color:#000000;"> l </span><span style="color:#000000;">+</span><span style="color:#000000;"> </span><span style="color:#000000;">&laquo;</span><span style="color:#000000;">px</span><span style="color:#000000;">&laquo;</span><span style="color:#000000;"><br />
</span><span style="color:#008080;">15</span> <span style="color:#000000;"> ns_tt.style.top </span><span style="color:#000000;">=</span><span style="color:#000000;"> t </span><span style="color:#000000;">+</span><span style="color:#000000;"> </span><span style="color:#000000;">&laquo;</span><span style="color:#000000;">px</span><span style="color:#000000;">&laquo;</span><span style="color:#000000;"><br />
</span><span style="color:#008080;">16</span> <span style="color:#000000;"> </span><span style="color:#0000FF;">return</span><span style="color:#000000;"> </span><span style="color:#0000FF;">true</span><span style="color:#000000;"><br />
</span><span style="color:#008080;">17</span> <span style="color:#000000;">}<br />
</span><span style="color:#008080;">18</span> <span style="color:#000000;"><br />
</span><span style="color:#008080;">19</span> <span style="color:#0000FF;">function</span><span style="color:#000000;"> AddTT(tt_text){<br />
</span><span style="color:#008080;">20</span> <span style="color:#000000;"> document.body.appendChild(ns_tt)<br />
</span><span style="color:#008080;">21</span> <span style="color:#000000;"> ns_tt.id </span><span style="color:#000000;">=</span><span style="color:#000000;"> </span><span style="color:#000000;">&laquo;</span><span style="color:#000000;">ns_tt</span><span style="color:#000000;">&laquo;</span><span style="color:#000000;"><br />
</span><span style="color:#008080;">22</span> <span style="color:#000000;"> ns_tt.innerHTML </span><span style="color:#000000;">=</span><span style="color:#000000;"> tt_text<br />
</span><span style="color:#008080;">23</span> <span style="color:#000000;">}<br />
</span><span style="color:#008080;">24</span> <span style="color:#000000;"><br />
</span><span style="color:#008080;">25</span> <span style="color:#0000FF;">function</span><span style="color:#000000;"> RemoveTT() {<br />
</span><span style="color:#008080;">26</span> <span style="color:#000000;"> document.body.removeChild(document.getElementById(</span><span style="color:#000000;">&laquo;</span><span style="color:#000000;">ns_tt</span><span style="color:#000000;">&laquo;</span><span style="color:#000000;">))<br />
</span><span style="color:#008080;">27</span> <span style="color:#000000;">}</span></div>
</blockquote>
<p></span></p>
<p>используем всё следующим образом:</p>
<blockquote><p><span style="color:#0000FF;">&lt;</span><span style="color:#800000;">div </span><span style="color:#FF0000;">onmouseover</span><span style="color:#0000FF;">=&raquo;AddTT(&#8216;это наша подсказка,&lt;br /&gt; в которой мы можем использовать &lt;b&gt;html&lt;/b&gt;&#8217;);&raquo;</span><span style="color:#FF0000;"> onmouseout</span><span style="color:#0000FF;">=&raquo;RemoveTT();&raquo;</span><span style="color:#0000FF;">&gt;</span><span style="color:#000000;"><br />
Текст, картинка, блок, то что требует подсказки <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </span><span style="color:#0000FF;">&lt;/</span><span style="color:#800000;">div</span><span style="color:#0000FF;">&gt;</span></p></blockquote>
<p><strong>Тестировано в</strong>: IE 6, IE 7, Opera 9.02, Firefox 2.0.0.1</p>
<p>первоисточник и пример: http://seleckis.lv/wp-content/uploads/File/scripting/ns_tooltip.html</p>
<p>p.s. а вы знаете, что уже прошла половина лета? (:</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/lc0d3r.wordpress.com/135/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/lc0d3r.wordpress.com/135/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/lc0d3r.wordpress.com/135/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/lc0d3r.wordpress.com/135/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/lc0d3r.wordpress.com/135/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/lc0d3r.wordpress.com/135/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/lc0d3r.wordpress.com/135/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/lc0d3r.wordpress.com/135/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/lc0d3r.wordpress.com/135/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/lc0d3r.wordpress.com/135/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=lc0d3r.wordpress.com&blog=3938050&post=135&subd=lc0d3r&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://lc0d3r.wordpress.com/2009/07/14/simple-javascript-tooltip/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/3852e31b2e16f793e3a0f45319ee3d10?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">lc0d3r</media:title>
		</media:content>
	</item>
		<item>
		<title>ни о чем</title>
		<link>http://lc0d3r.wordpress.com/2009/07/09/%d0%bd%d0%b8-%d0%be-%d1%87%d0%b5%d0%bc/</link>
		<comments>http://lc0d3r.wordpress.com/2009/07/09/%d0%bd%d0%b8-%d0%be-%d1%87%d0%b5%d0%bc/#comments</comments>
		<pubDate>Thu, 09 Jul 2009 00:15:22 +0000</pubDate>
		<dc:creator>lc0d3r</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[google chrome]]></category>
		<category><![CDATA[google os]]></category>
		<category><![CDATA[сервис]]></category>
		<category><![CDATA[php 5.3]]></category>

		<guid isPermaLink="false">http://lc0d3r.wordpress.com/?p=126</guid>
		<description><![CDATA[Давно я не писал в блог,  поэтому решил оставить маленькую заметку 
внутри вы прочитаете о гугло Ос, пхп 5.3 и еще некоторых новостях. Вообщем, велком инсайд (:
глобальные новости:
гугл заявил о выпуске своей оси, которая, цитирую:
Она станет логическим продолжением браузера Chrome и попыткой изменить представление о том, какой должна быть операционная система.
Ожидаемый ход от гугла, [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=lc0d3r.wordpress.com&blog=3938050&post=126&subd=lc0d3r&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Давно я не писал в блог,  поэтому решил оставить маленькую заметку <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /><br />
внутри вы прочитаете о гугло Ос, пхп 5.3 и еще некоторых новостях. Вообщем, велком инсайд (:<span id="more-126"></span></p>
<p>глобальные новости:<br />
<em><strong>гугл заявил о выпуске своей оси</strong>,</em> которая, цитирую:</p>
<blockquote><p>Она станет логическим продолжением браузера Chrome и попыткой изменить представление о том, какой должна быть операционная система.</p></blockquote>
<p>Ожидаемый ход от гугла, ну что же посмотрим, что из этого всего выйдет. Но здравая конкуренция еще никому не вредила, плюс к этому всему гугл обещает сделать её опенсорс и вот еще:</p>
<blockquote><p>Для разработчиков приложений платформой будет являться веб. Все существующие веб-приложения будут работать на ОС Google Chrome автоматически, а новые можно будет писать с использованием любой веб-технологии. И, конечно, эти приложения будут работать не только на Google Chrome ОС, но и в любых браузерах стандартных ОС: Windows, Mac и Linux, предоставляя разработчикам самую большую базу пользователей всех платформ.</p></blockquote>
<p>полный текст новости можно прочесть на их офф блоге:<br />
http://googlerussiablog.blogspot.com/2009/07/google-chrome.html</p>
<p><em><strong>еще одной интересной новостью стал выход php 5.3 </strong></em>в котором реализовали много того, что должно было выйти в php6</p>
<ul>
<li>Обновлены bundled версии sqlite и pcre</li>
<li>следующие расширения были перемещены в PECL</li>
</ul>
<blockquote><p>ext/dbase<br />
ext/fbsql<br />
ext/fdf<br />
ext/ncurses<br />
ext/mhash (слой BC теперь полностью находится в ext/hash)<br />
ext/ming<br />
ext/msql<br />
ext/sybase (более не поддерживается, используйте вместо него sybase_ct)</p></blockquote>
<ul>
<li>Несколько изменен синтакс php.ini для удобства и улучшения его читабельности</li>
<li>Расширения SPL, PCRE, Reflection теперь включены по умолчанию. Режим FastCGI, к тому же, не может быть отключен</li>
<li>Добавлены лямбда-функции и замыкания, оператор &laquo;jump label&raquo;, cинтаксисы NOWDOC, HEREDOC, несколько новых констант</li>
<li>Добавлена поддержка пространств имен, добавлена улучшенная обработка исключений (exceptions linking, exceptions in destructors,</li>
<li>Улучшена производительность и оптимизировано потребление памяти.</li>
<li>Появился сборщик мусора</li>
<li>Улучшена поддержка Windows, в том числе и Windows 7</li>
<li>Улучшения в расширениях streams, dns api, hash, imap, mbstring, osi8, openssl, pcntl, soap, spl.</li>
<li>Новые расширения — enchant (проверка орфографии), fileinfo, intl, mysqlnd, phar (архивы php), sqlite3</li>
<li>Многочисленные изменения и улучшения в функциях PHP, исправления ошибок и многое другое</li>
</ul>
<p>Вообщем это одно из самых сильных изменений в пхп за последние лет 5, точно.</p>
<p>Более подробно можно почитать на хабре:<br />
http://habrahabr.ru/blogs/php/63926/<br />
+ еще интересно тут:<br />
http://www.slideshare.net/tobias382/new-spl-features-in-php-53</p>
<p style="text-align:center;">з.ы. мне попалась ссылка на какой-то тест на пхп-разработчика <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /><br />
<a href="http://www.corp.mamba.ru/test/promo.phtml"><img class="aligncenter" src="http://www.corp.mamba.ru/test/widget.phtml?id=39570" border="0" alt="" /></a></p>
<p>з.з.ы. я наконец-то начал переделывать сервис, глобальные изменения начаты скоро всё изменится, следите за новостями (кстати, нужно будет сделать рсс на сайте, пока только есть чейджлог <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> )</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/lc0d3r.wordpress.com/126/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/lc0d3r.wordpress.com/126/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/lc0d3r.wordpress.com/126/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/lc0d3r.wordpress.com/126/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/lc0d3r.wordpress.com/126/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/lc0d3r.wordpress.com/126/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/lc0d3r.wordpress.com/126/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/lc0d3r.wordpress.com/126/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/lc0d3r.wordpress.com/126/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/lc0d3r.wordpress.com/126/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=lc0d3r.wordpress.com&blog=3938050&post=126&subd=lc0d3r&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://lc0d3r.wordpress.com/2009/07/09/%d0%bd%d0%b8-%d0%be-%d1%87%d0%b5%d0%bc/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/3852e31b2e16f793e3a0f45319ee3d10?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">lc0d3r</media:title>
		</media:content>

		<media:content url="http://www.corp.mamba.ru/test/widget.phtml?id=39570" medium="image" />
	</item>
		<item>
		<title>Bell Labs сворачивают фундаментальные исследования</title>
		<link>http://lc0d3r.wordpress.com/2009/05/27/bell_lab/</link>
		<comments>http://lc0d3r.wordpress.com/2009/05/27/bell_lab/#comments</comments>
		<pubDate>Wed, 27 May 2009 23:43:39 +0000</pubDate>
		<dc:creator>lc0d3r</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Bell Labs]]></category>
		<category><![CDATA[наука]]></category>

		<guid isPermaLink="false">http://lc0d3r.wordpress.com/?p=90</guid>
		<description><![CDATA[По информации журналов Nature и Wired, легендарный исследовательский центр Bell Labs в скором времени радикальным образом сократит фундаментальные исследования в области материаловедения и физики полупроводников — в тех самых направлениях, что подарили миру такие открытия, как транзистор, лазер и ряд других, за которые 11 учёных центра были удостоены шести Нобелевских премий.
Материнская компания Alcatel-Lucent, переживающая сейчас [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=lc0d3r.wordpress.com&blog=3938050&post=90&subd=lc0d3r&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>По информации журналов Nature и Wired, легендарный исследовательский центр Bell Labs в скором времени радикальным образом сократит фундаментальные исследования в области материаловедения и физики полупроводников — в тех самых направлениях, что подарили миру такие открытия, как транзистор, лазер и ряд других, за которые 11 учёных центра были удостоены шести Нобелевских премий.</p>
<p>Материнская компания Alcatel-Lucent, переживающая сейчас далеко не лучший свой период, существенно урезает финансирование центра по тем проектам, которые не могут принести ей быструю коммерческую выгоду. Следствием такого положения дел стало сворачивание практически всех фундаментальных исследований, которые велись на базе Bell Labs с 30-х годов прошлого века. Фактически все задействованные в этих проектах сотрудники были вынуждены либо подыскать себе более надёжное место работы за пределами центра, либо перейти в другие его отделы, которые занимаются теми или иными прикладными проектами. После всех кадровых сокращений, растянувшихся на несколько лет, в отделе фундаментальных физических исследований центра в настоящий момент осталось всего четыре человека.<br />
<span id="more-90"></span><br />
Перепрофилирование научных проектов в русле приоритетных для материнской компании направлений полностью соответствует инновационной модели развития исследований, недавно принятой в Alcatel-Lucent, утверждает представитель этой компании Питер Бенедикт.</p>
<p>Однако инсайдеры рангом пониже не разделяют его уверенность и оптимистичный настрой. Владимир Аксюк, бывший сотрудник Bell Labs, ныне работающий в статусе приглашённого профессора в Национальном институте стандартов и технологий в Гэйзерсбурге, штат Мэриленд считает, что «компания попросту больше не может поддерживать исследовательские проекты. Пройдитесь по центру — и вы увидите совершенно пустые комнаты». «Почти все учёные ушли», — вторит ему Дик Слашер, другой бывший сотрудник Bell Labs, перешедший в Технологический институт в Атланте, штат Джорджия.</p>
<p>Сторонние эксперты также весьма критично отнеслись к известию о сворачивании основного массива фундаментальных исследований в этом крупнейшем центре науки, который более полувека служил ориентиром для учёных со всего мира. Такой шаг они оценили как «недальновидный», который ещё радикальным образом скажется на способности компании Alcatel-Lucent к созданию действительно инновационных разработок.</p>
<p>«Фундаментальная физика чрезвычайно важна для компьютерных технологий, — говорит Майк Лубелл, глава пресс-службы Американского физического общества. — Скажем, к открытию интегральных микросхем подвели бесчисленные маленькие достижения, годами накапливаемые в области физики».</p>
<p>Научный центр Bell Labs оставался одним из последних бастионов, где фундаментальные исследования поддерживались на уровне больших корпорации. Как известно, в последние десятилетия крупные компании стали фокусироваться на сугубо прикладных НИР и НИОКР в тех областях, в которых можно рассчитывать на быструю прибыль.</p>
<blockquote>
<p style="text-align:right;"><strong>Bell Labs (Bell Laboratories, прежние названия — AT&amp;T Bell Laboratories, Bell Telephone Laboratories)</strong> — крупный исследовательский центр в области телекоммуникаций, электронных и компьютерных систем. Создан в 1925 как исследовательский центр компании AT&amp;T. В 1995 году Bell Labs выкупила компания Lucent Technologies, которую в 2006 году приобрела французская Alcatel. В настоящее время является исследовательским центром корпорации Alcatel-Lucent.<br />
Среди сотрудников этого известного исследовательского центра — одиннадцать лауреатов Нобелевской премии. За время существования Bell Labs было получено более 27 000 патентов. Из наиболее известных открытий: транзистор (1947), радар, стереозапись, звуковое кино, передача телепрограммы на дальние расстояния, спутники связи и лазеры, солнечные элементы, операционная система Unix, языки программирования Си и С++, интеллектуальная сеть, ИКМ-аппаратура для передачи высококачественных аудио- и видеоданных (1948), сотовая телефония (1971), широкополосная коммутация пакетов и многое другое.</p>
</blockquote>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/lc0d3r.wordpress.com/90/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/lc0d3r.wordpress.com/90/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/lc0d3r.wordpress.com/90/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/lc0d3r.wordpress.com/90/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/lc0d3r.wordpress.com/90/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/lc0d3r.wordpress.com/90/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/lc0d3r.wordpress.com/90/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/lc0d3r.wordpress.com/90/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/lc0d3r.wordpress.com/90/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/lc0d3r.wordpress.com/90/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=lc0d3r.wordpress.com&blog=3938050&post=90&subd=lc0d3r&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://lc0d3r.wordpress.com/2009/05/27/bell_lab/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/3852e31b2e16f793e3a0f45319ee3d10?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">lc0d3r</media:title>
		</media:content>
	</item>
		<item>
		<title>Вычисления на графических картах. Часть 3 с Михаилом Горбуновым.</title>
		<link>http://lc0d3r.wordpress.com/2009/05/27/%d0%b2%d1%8b%d1%87%d0%b8%d1%81%d0%bb%d0%b5%d0%bd%d0%b8%d1%8f-%d0%bd%d0%b0-%d0%b3%d1%80%d0%b0%d1%84%d0%b8%d1%87%d0%b5%d1%81%d0%ba%d0%b8%d1%85-%d0%ba%d0%b0%d1%80%d1%82%d0%b0%d1%85-%d1%87%d0%b0%d1%81/</link>
		<comments>http://lc0d3r.wordpress.com/2009/05/27/%d0%b2%d1%8b%d1%87%d0%b8%d1%81%d0%bb%d0%b5%d0%bd%d0%b8%d1%8f-%d0%bd%d0%b0-%d0%b3%d1%80%d0%b0%d1%84%d0%b8%d1%87%d0%b5%d1%81%d0%ba%d0%b8%d1%85-%d0%ba%d0%b0%d1%80%d1%82%d0%b0%d1%85-%d1%87%d0%b0%d1%81/#comments</comments>
		<pubDate>Wed, 27 May 2009 23:38:21 +0000</pubDate>
		<dc:creator>lc0d3r</dc:creator>
				<category><![CDATA[GPU programming]]></category>
		<category><![CDATA[CUDA]]></category>
		<category><![CDATA[DirectX]]></category>
		<category><![CDATA[GPU]]></category>
		<category><![CDATA[Graphics]]></category>
		<category><![CDATA[msdn]]></category>

		<guid isPermaLink="false">http://lc0d3r.wordpress.com/?p=122</guid>
		<description><![CDATA[Михаил Горбунов в третьей части доклада показывает живые демонстрации, визуализирующие основные концепции вычислений общего назначения на современных видеокартах.


Оригинал: http://channel9.msdn.com/posts/mikcher/GPU-Algorithms-Part3/
Видео: mms://mschnlnine.wmod.llnwd.net/a1809/d1/ch9/0/2/3/8/5/4/GPUPart2_s_ch9.wmv
       <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=lc0d3r.wordpress.com&blog=3938050&post=122&subd=lc0d3r&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Михаил Горбунов в третьей части доклада показывает живые демонстрации, визуализирующие основные концепции вычислений общего назначения на современных видеокартах.</p>
<p><a href="//mschnlnine.wmod.llnwd.net/a1809/d1/ch9/9/9/5/8/5/4/GPUPart3_s_ch9.wmv"><img class="aligncenter" title="превью" src="http://mschnlnine.vo.llnwd.net/d1/ch9/9/9/5/8/5/4/GPUPart3_large_ch9.png" alt="" width="320" height="240" /></a></p>
<p><span id="more-122"></span><br />
Оригинал: http://channel9.msdn.com/posts/mikcher/GPU-Algorithms-Part3/<br />
Видео: mms://mschnlnine.wmod.llnwd.net/a1809/d1/ch9/0/2/3/8/5/4/GPUPart2_s_ch9.wmv</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/lc0d3r.wordpress.com/122/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/lc0d3r.wordpress.com/122/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/lc0d3r.wordpress.com/122/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/lc0d3r.wordpress.com/122/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/lc0d3r.wordpress.com/122/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/lc0d3r.wordpress.com/122/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/lc0d3r.wordpress.com/122/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/lc0d3r.wordpress.com/122/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/lc0d3r.wordpress.com/122/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/lc0d3r.wordpress.com/122/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=lc0d3r.wordpress.com&blog=3938050&post=122&subd=lc0d3r&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://lc0d3r.wordpress.com/2009/05/27/%d0%b2%d1%8b%d1%87%d0%b8%d1%81%d0%bb%d0%b5%d0%bd%d0%b8%d1%8f-%d0%bd%d0%b0-%d0%b3%d1%80%d0%b0%d1%84%d0%b8%d1%87%d0%b5%d1%81%d0%ba%d0%b8%d1%85-%d0%ba%d0%b0%d1%80%d1%82%d0%b0%d1%85-%d1%87%d0%b0%d1%81/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/3852e31b2e16f793e3a0f45319ee3d10?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">lc0d3r</media:title>
		</media:content>

		<media:content url="http://mschnlnine.vo.llnwd.net/d1/ch9/9/9/5/8/5/4/GPUPart3_large_ch9.png" medium="image">
			<media:title type="html">превью</media:title>
		</media:content>
	</item>
		<item>
		<title>Вычисления на графических картах. Часть 2 с Семеном Козловым.</title>
		<link>http://lc0d3r.wordpress.com/2009/05/27/gpu-programming-part2/</link>
		<comments>http://lc0d3r.wordpress.com/2009/05/27/gpu-programming-part2/#comments</comments>
		<pubDate>Wed, 27 May 2009 23:34:09 +0000</pubDate>
		<dc:creator>lc0d3r</dc:creator>
				<category><![CDATA[GPU programming]]></category>
		<category><![CDATA[CUDA]]></category>
		<category><![CDATA[DirectX]]></category>
		<category><![CDATA[GPU]]></category>
		<category><![CDATA[Graphics]]></category>
		<category><![CDATA[msdn]]></category>

		<guid isPermaLink="false">http://lc0d3r.wordpress.com/?p=120</guid>
		<description><![CDATA[Семен Козлов, разработчик в команде DirectX, во второй части доклада отвечает на вопросы аудитории про вычисления общего назначения на современных видеокартах.


Оригинал:  http://channel9.msdn.com/posts/mikcher/GPU-Algoritms-Part2/
Видео:  http://mschnlnine.wmod.llnwd.net/a1809/d1/ch9/0/2/3/8/5/4/GPUPart2_s_ch9.wmv
       <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=lc0d3r.wordpress.com&blog=3938050&post=120&subd=lc0d3r&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Семен Козлов, разработчик в команде DirectX, во второй части доклада отвечает на вопросы аудитории про вычисления общего назначения на современных видеокартах.</p>
<p><span id="more-120"></span></p>
<p style="text-align:center;"><a href="//mschnlnine.wmod.llnwd.net/a1809/d1/ch9/0/2/3/8/5/4/GPUPart2_s_ch9.wmv"><img class="aligncenter" title="превью" src="http://mschnlnine.vo.llnwd.net/d1/ch9/0/2/3/8/5/4/GPUPart2_large_ch9.png" alt="" width="320" height="240" /></a></p>
<p>Оригинал:  http://channel9.msdn.com/posts/mikcher/GPU-Algoritms-Part2/<br />
Видео:  http://mschnlnine.wmod.llnwd.net/a1809/d1/ch9/0/2/3/8/5/4/GPUPart2_s_ch9.wmv</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/lc0d3r.wordpress.com/120/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/lc0d3r.wordpress.com/120/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/lc0d3r.wordpress.com/120/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/lc0d3r.wordpress.com/120/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/lc0d3r.wordpress.com/120/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/lc0d3r.wordpress.com/120/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/lc0d3r.wordpress.com/120/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/lc0d3r.wordpress.com/120/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/lc0d3r.wordpress.com/120/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/lc0d3r.wordpress.com/120/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=lc0d3r.wordpress.com&blog=3938050&post=120&subd=lc0d3r&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://lc0d3r.wordpress.com/2009/05/27/gpu-programming-part2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/3852e31b2e16f793e3a0f45319ee3d10?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">lc0d3r</media:title>
		</media:content>

		<media:content url="http://mschnlnine.vo.llnwd.net/d1/ch9/0/2/3/8/5/4/GPUPart2_large_ch9.png" medium="image">
			<media:title type="html">превью</media:title>
		</media:content>
	</item>
	</channel>
</rss>