<?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/"
	>

<channel>
	<title>Embedded Systems in Ukraine</title>
	<atom:link href="http://embedded.in.ua/feed/" rel="self" type="application/rss+xml" />
	<link>http://embedded.in.ua</link>
	<description>Погружение в мир встроенных систем и пользовательских интерфейсов.</description>
	<lastBuildDate>Sun, 08 Aug 2010 07:51:39 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Закон Линуса</title>
		<link>http://embedded.in.ua/2009/12/28/zakon-linusa/</link>
		<comments>http://embedded.in.ua/2009/12/28/zakon-linusa/#comments</comments>
		<pubDate>Mon, 28 Dec 2009 14:14:43 +0000</pubDate>
		<dc:creator>SEMPER</dc:creator>
				<category><![CDATA[c programming]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[usability]]></category>
		<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://usability.in.ua/?p=96</guid>
		<description><![CDATA[Закон Линуса (англ. Linus&#8217;s Law) — любое из двух известных эмпирических наблюдений, названных в честь Линуса Торвальдса, создателя ядра Linux. Согласно Эрику Рэймонду, закон Линуса гласит, что «при достаточном количестве глаз баги выплывают на поверхность» (англ. “given enough eyeballs, all bugs are shallow”); или, более формально, «при достаточном количестве бета-тестеров и сотрудников, почти любая проблема будет [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">Закон Линуса (англ. Linus&#8217;s Law) — любое из двух известных эмпирических наблюдений, названных в честь Линуса Торвальдса, создателя ядра Linux. Согласно Эрику Рэймонду, закон Линуса гласит, что «при достаточном количестве глаз баги выплывают на поверхность» (англ. “given enough eyeballs, all bugs are shallow”); или, более формально, «при достаточном количестве бета-тестеров и сотрудников, почти любая проблема будет быстро обнаружена и окажется для кого-то очевидной». Рэймонд сформулировал это правило в четвёртой части своего эссе «Собор и Базар».</p>
<p><span id="more-96"></span></p>
<p style="text-align: justify;">Сам Линус Торвальдс под законом Линуса имеет в виду свои размышления о причинах развития человеческого общества, которые он изначально опубликовал в автобиографии Just for Fun. В предисловии к книге Химанена «Хакерская этика» (The Hacker Ethic), Торвальдс предложил более короткую формулировку закона:</p>
<blockquote style="text-align: justify;"><p>Закон Линуса гласит, что все наши мотивации можно разделить на три основные категории. И что более важно, прогресс означает прохождение через те же три категории, как «фазы» в процессе эволюции, то есть перемещение из категории в следующую категорию. Эти категории, по порядку — «выживание», «социальная жизнь» и «развлечение».</p></blockquote>
<p style="text-align: justify;">Такой вариант закона Линуса похож на пирамиду потребностей по Маслоу, который можна сформулировать так:</p>
<p style="text-align: justify;">По мере удовлетворения низлежащих потребностей, все более актуальными становятся потребности более высокого уровня, но это вовсе не означает, что место предыдущей потребности занимает новая, только когда прежняя удовлетворена полностью.</p>
<p style="text-align: justify;">Также Торвальдс, в одном из своих сообщений в список рассылки GNOME, написал, что «закон Линуса» — «не следует писать, что у вашей программы есть какая-то опция, если её невозможно изменить через пользовательский интерфейс».</p>
<p style="text-align: justify;">И еще одно извесное его выражение: «Теория и практика иногда сталкиваются. Когда это случается, теория проигрывает. Всегда.»</p>
<div id="_mcePaste" style="overflow: hidden; position: absolute; left: -10000px; top: 89px; width: 1px; height: 1px;">
<ul>
<li>Торвальдс, в одном из своих сообщений в <a title="Рассылка электронной почты" href="http://ru.wikipedia.org/wiki/%D0%A0%D0%B0%D1%81%D1%81%D1%8B%D0%BB%D0%BA%D0%B0_%D1%8D%D0%BB%D0%B5%D0%BA%D1%82%D1%80%D0%BE%D0%BD%D0%BD%D0%BE%D0%B9_%D0%BF%D0%BE%D1%87%D1%82%D1%8B">список рассылки</a> <a title="GNOME" href="http://ru.wikipedia.org/wiki/GNOME">GNOME</a>, написал, что «закон Линуса (№76 из 271)» — <em>«не следует писать, что у вашей программы есть какая-то опция, если её невозможно изменить через пользовательский интерфейс»</em>.<sup><a href="http://ru.wikipedia.org/wiki/%D0%97%D0%B0%D0%BA%D0%BE%D0%BD_%D0%9B%D0%B8%D0%BD%D1%83%D1%81%D0%B0#cite_note-5">[6]</a></sup></li>
<li>«Теория и практика иногда сталкиваются. Когда это случается, теория проигрывает. Всегда.»</li>
</ul>
</div>
]]></content:encoded>
			<wfw:commentRss>http://embedded.in.ua/2009/12/28/zakon-linusa/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>C мёртв, да здравствует С!!!</title>
		<link>http://embedded.in.ua/2009/11/05/c-myortv-da-zdravstvuet-s/</link>
		<comments>http://embedded.in.ua/2009/11/05/c-myortv-da-zdravstvuet-s/#comments</comments>
		<pubDate>Thu, 05 Nov 2009 01:31:19 +0000</pubDate>
		<dc:creator>SEMPER</dc:creator>
				<category><![CDATA[c programming]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[С]]></category>

		<guid isPermaLink="false">http://usability.in.ua/?p=58</guid>
		<description><![CDATA[Является ли язык С мёртвым? Для сегодняшних студентов изучение языка С чем-то схоже с изучением латыни. Да, язык С это история, но это далеко не мёртвый язык. С по прежнему является доминирующим и быстро развивающимся языком программирования, в частности в части разработки программного обеспечения для встраиваемых систем. На следующей диаграмме собрана статистика использования С разработчиками [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">Является ли язык С мёртвым? Для сегодняшних студентов изучение языка С чем-то схоже с изучением латыни. Да, язык С это история, но это далеко не мёртвый язык. С по прежнему является доминирующим и быстро развивающимся языком программирования, в частности в части разработки программного обеспечения для встраиваемых систем.</p>
<p style="text-align: justify;"><span id="more-58"></span></p>
<p style="text-align: justify;">На следующей диаграмме собрана статистика использования С разработчиками встраиваемых систем в сравнении с другими популярными языками.</p>
<p style="text-align: left;"><img class="aligncenter size-full wp-image-65" title="0001" src="http://usability.in.ua/wp-content/0001.jpg" alt="0001" width="400" height="156" /></p>
<p style="text-align: justify;">Разрыв в диаграммах сделан потому, что формулировка вопроса, который задавался разработчикам, изменялась. До 2005-го года вопрос звучал как «Какие именно языки из ниже приведённых вы использовали на протяжении последних 12-ти месяцев для разработки ПО для встраиваемых систем», а в 2005-м году формулировка изменилась на «Мои последние embedded проекты написаны на ____». До 2005-го года вопрос предусматривал возможность нескольких ответов, то есть предусматривалось, что респонденты могли сделать выбор двух и более языков.</p>
<p style="text-align: justify;">Наибольшее влияние наявности выбора одного и более вариантов ответа можно проследить по статистике использования ассемблера. До 2005-го года мы можем видеть уровень порядка 62%, что выглядит, по меньшей мере, странно. Объяснение довольно простое: большинство проектов требуют незначительных вставок ассемблерного кода.</p>
<p style="text-align: justify;">После 2005-го года всё стало на свои места: уровень ассемблера упал до 8% в 2005-м году и до 5% в 2009-м.</p>
<p style="text-align: justify;">Если же вернуться к нашей сегодняшней теме – языку С, то мы можем наблюдать его доминирование на протяжении всех 13-ти лет. Также интересно отметить тенденцию к росту использования С за счёт ассемблера и С++.</p>
<p style="text-align: justify;">Также нельзя не обратить внимание на статистику использования С++, который набирал популярность с конца 90-х годов с пиком в 2001-м, и медленное падение его доли в дальнейшем.</p>
<p style="text-align: justify;">Суть в том, что разработчики встраиваемых систем не собираются отказываться от использования С в своих проектах. И на то есть несколько причин. Во-первых, это наявность компиляторов для подавляющего большинства 8-ми, 16-ти и 32х разрядных процессоров. Во-вторых, С предусматривает идеальное сочетание средств для работы как на низком, так и на высоком уровне, что делает его идеальной кандидатурой, для написания, например, драйверов. Даже в будущем, когда язык С будет терять его популярность, его знание всё равно будет цениться…</p>
<p style="text-align: justify;">Конечно, язык С не сможет выжить, если количество людей, которые его используют будет сокращаться. На данный момент происходит противоположное явление. Около 98% процессоров, которые производяться ежегодно – это процессоры для встраиваемых систем. А ежегодное производство процессоров имеет долгосрочную тенденцию к росту.</p>
<p><img class="aligncenter size-full wp-image-66" title="0002" src="http://usability.in.ua/wp-content/0002.jpg" alt="0002" width="400" height="211" /></p>
<p style="text-align: justify;">На этой диаграмме отображена зависимость объема производства процессоров от индекса NASDAQ.</p>
<p style="text-align: justify;">Во-первых, очень интересна зависимость сама по себе, а также то, что за последние 15 лет производство выросло более чем в два раза.</p>
<p style="text-align: justify;">Отдельно стоит остановиться на том, что сейчас есть тенденция к тому, что в ВУЗах всё меньше уделяется внимания языку С и всё чаще программисты изучают язык С уже на работе. Эта тенденция менее актуальна для постсоветского пространства, и более актуальна для ВУЗов США и Европы, но, тем не менее, рано или поздно это может стать прорехой в системе образования.</p>
<p style="text-align: justify;">В заключение, можно сказать «С умер, да здравствует С!». Иными словами, этот язык, хоть и практически перестал использоваться для написания прикладного ПО для х86/х64 процессоров, но это с лихвой компенсировано использованием его при разработке ПО встраиваемых систем, доля которых продолжает активно расти.</p>
<p style="text-align: justify;">По мотивам: <a href="http://www.embedded.com/design/218600142">www.embedded.com</a></p>
]]></content:encoded>
			<wfw:commentRss>http://embedded.in.ua/2009/11/05/c-myortv-da-zdravstvuet-s/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ARM + Xilinx = FPGA + AMBA(new) + Cortex</title>
		<link>http://embedded.in.ua/2009/11/03/armxilinxfpgaambanewcortex/</link>
		<comments>http://embedded.in.ua/2009/11/03/armxilinxfpgaambanewcortex/#comments</comments>
		<pubDate>Tue, 03 Nov 2009 00:34:44 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[arm]]></category>
		<category><![CDATA[embedded]]></category>

		<guid isPermaLink="false">http://usability.in.ua/?p=54</guid>
		<description><![CDATA[На прошлой недели было объявлено про сделку между ARM and Xilinx: Xilinx лицензировал Cortex. Две компании ведут разработку следующего поколения  шины AMBA. Почему столько лет Xilinx не лицензировала архитектуру процессоров ARM как делали многие её конкуренты? Ответ, скорее всего заключается в разработке спецификации шины AMBA следующего поколения, которую Xilinx называет &#8220;оптимизированный стандарт шины для FPGA.&#8221;  В компании Xilinx, понимали, [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify; ">На прошлой недели было объявлено про сделку между <a href="http://www.arm.com/">ARM</a> and <a href="http://www.xilinx.com/">Xilinx</a>: Xilinx лицензировал Cortex. Две компании ведут разработку следующего поколения  шины AMBA.</p>
<p style="text-align: justify; "><img class="aligncenter size-full wp-image-55" title="ARM_Xilinx_Logo" src="http://usability.in.ua/wp-content/uploads/ARM_Xilinx_Logo.jpg" alt="ARM_Xilinx_Logo" width="441" height="89" /></p>
<p style="text-align: justify; ">Почему столько лет Xilinx не лицензировала архитектуру процессоров ARM как делали многие её конкуренты? Ответ, скорее всего заключается в разработке спецификации шины AMBA следующего поколения, которую Xilinx называет &#8220;оптимизированный стандарт шины для FPGA.&#8221;  В компании Xilinx, понимали, что без новой шины, они не смогут выжать весь потенциал из архитектуры ARM. Использование ядра Cortex позволит также решить для Xilinx проблему высокого энергопотребления FPGA.</p>
<p style="text-align: justify; ">По понятным причинам, Xilinx не разглашает какое именно ядро будет использовано в их FPGA, и даже в каком ядре может появиться лицензированное ядро: в мейнстрим продукте Spartan или в топ линейке Virtex.</p>
<p style="text-align: justify; ">Скорее всего из новой спецификации AMBA получат выгоду все разработчики использующие процессоры ARM. Новая спецификация позволит минимизировать внутрение соеденения FPGA, что позволит улучшить архитектуру не только FPGA с ядром ARM, но и архитектуру тралиционных FPGA с IP.</p>
<p style="text-align: justify; ">Стоит заметить, что Xilinx и ARM не единственные компании, которые задействованы в разработке грядущей спецификации AMBA, также в нее вовлечены такие титаны индустрии как Cadence, Denali, Mentor Graphics и Synopsys.</p>
]]></content:encoded>
			<wfw:commentRss>http://embedded.in.ua/2009/11/03/armxilinxfpgaambanewcortex/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Код: насколько он хорош? И сколько он стоит?</title>
		<link>http://embedded.in.ua/2009/11/01/kod-naskolko-on-xorosh/</link>
		<comments>http://embedded.in.ua/2009/11/01/kod-naskolko-on-xorosh/#comments</comments>
		<pubDate>Sun, 01 Nov 2009 17:16:14 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Новости]]></category>

		<guid isPermaLink="false">http://usability.in.ua/?p=50</guid>
		<description><![CDATA[Согласно Adams, N.E., &#8220;Optimizing preventive service of software product,&#8221; IBM Journal of Research and Development, выявление трети ошибок всего програмного обеспечения потребуют пять тысячь лет его выполнения. Тестирование програмного обеспечения предназначено для доказательства наличия в нем ошибок, а не их отсутствия. Для написания критически безопасного кода необходимо уделять больше внимания его разроботки и тестированию, что влечет [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">Согласно Adams, N.E., <a href="http://domino.watson.ibm.com/tchjr/journalindex.nsf/0/65f3d36c9b9dc0cd85256bfa0067f5ae?OpenDocument">&#8220;Optimizing preventive service of software product,&#8221;</a> IBM Journal of Research and Development, выявление трети ошибок всего програмного обеспечения потребуют пять тысячь лет его выполнения.</p>
<p style="text-align: justify;">Тестирование програмного обеспечения предназначено для доказательства наличия в нем ошибок, а не их отсутствия. Для написания критически безопасного кода необходимо уделять больше внимания его разроботки и тестированию, что влечет за собой его существенное удорожание.</p>
<p style="text-align: justify;">Большинство кода для встроенных систем имеют стоимость около $20-40  за строчку кода (расценки для американского рынка) . Об этом можно прочитать в статье David A. Wheeler &#8220;<a href="http://www.dwheeler.com/sloc/redhat71-v1/redhat71sloc.html" target="_blank">More Than a Gigabuck: Estimating GNU/Linux&#8217;s Size</a>&#8220;.  Формальное же, математическое, доказательство отсутствия ошибок в коде может поднять стоимость до <a href="http://embedded.com/design/220900551" target="_blank">$700 за строчку</a></p>
<p style="text-align: justify;">Для микроядра <a href="http://ertos.nicta.com.au/research/sel4/" target="_blank">Secure Embedded L4</a>, состоящего из 7,500 строчек С кода, было <a href="http://nicta.com.au/news/current/world-first_research_breakthrough_promises_safety-critical_software_of_unprecedented_reliability" target="_blank">математически доказано отсутствие ошибок</a> с использованием 10,000 промежуточных теорем в более чем 200,000 строчек формального доказательства. Это доказательство было проверено на компьютере, с помощью интерактивной программы доказательства теорем <a href="http://www.cl.cam.ac.uk/research/hvg/Isabelle/" target="_blank">Isabelle</a>.</p>
<p style="text-align: justify;">“Proving the correctness of 7,500 lines of C code in an operating system&#8217;s kernel is a unique achievement, which should eventually lead to software that meets currently unimaginable standards of reliability.”</p>
<p style="text-align: justify;">Посчитать количесвто строчек кода нет так просто, а тем кто хочет это сделать, могу посоветовать почитать статью на Википедии &#8220;<a href="http://ru.wikipedia.org/wiki/%D0%9A%D0%BE%D0%BB%D0%B8%D1%87%D0%B5%D1%81%D1%82%D0%B2%D0%BE_%D1%81%D1%82%D1%80%D0%BE%D0%BA_%D0%BA%D0%BE%D0%B4%D0%B0" target="_blank">Количество строк кода</a>&#8220;. А для операционной системы Линукс существует замечательная утилита <a href="http://www.dwheeler.com/sloccount/" target="_blank">SLOCCount</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://embedded.in.ua/2009/11/01/kod-naskolko-on-xorosh/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>mbed: Web 2.0 прототипирование</title>
		<link>http://embedded.in.ua/2009/09/24/mbed-web-20-prototipirovanie/</link>
		<comments>http://embedded.in.ua/2009/09/24/mbed-web-20-prototipirovanie/#comments</comments>
		<pubDate>Thu, 24 Sep 2009 18:03:49 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[embedded]]></category>

		<guid isPermaLink="false">http://usability.in.ua/?p=45</guid>
		<description><![CDATA[Компании NXP и ARM объявили на конференции Embedded Systems (ESC), которая проходит в Бостоне, о запуске нового проекта, который позволяет выполнять быстрое прототипирование на основе отладочной платы с процессорами на основе ядра Cortex M3 &#8211; NXP LPC2368 или NXP LPC1768.  Интегрированная среда разработки реализована в браузере. Для создания программы необходимо авторизироваться на сайте, создать новый проект, [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">Компании <a href="http://www.nxp.com/" target="_blank">NXP</a> и <a href="http://www.arm.com/" target="_blank">ARM</a> объявили на конференции <a href="http://esc-boston.techinsightsevents.com/" target="_blank">Embedded Systems (ESC)</a>, которая проходит в Бостоне, о запуске нового проекта, который позволяет выполнять быстрое прототипирование на основе отладочной платы с процессорами на основе ядра Cortex M3 &#8211; NXP LPC2368 или NXP LPC1768.  Интегрированная среда разработки реализована в браузере. Для создания программы необходимо авторизироваться на сайте, создать новый проект, выполнить компиляцию, загрузить с сайта созданный конфигурационный файл, подключить плату к копьютеру через USB и записать на нее загруженный образ. И перегрузить.</p>
<p style="text-align: justify;">Для написания програм используеться библиотека mbed C/C++, которая основана на <a href="http://www.onarm.com/download/download389.asp" target="_blank">ARM Cortex Microcontroller Software Interface Standard (CMSIS)</a> и предоставляет высокоуровневый подход к конфигурации микроконтроллера на основе API.</p>
<p style="text-align: justify;">Сайт <a href="http://mbed.org/" target="_blank">Mbed.org</a> в настоящее время уже доступен. На нем можно получить дополнительную информацию и оформить предварительный заказ  на отладочную плату mbed на основе микроконтроллера NXP LPC1768. Стоимость платы при преварительном заказе составляет около $60.</p>
]]></content:encoded>
			<wfw:commentRss>http://embedded.in.ua/2009/09/24/mbed-web-20-prototipirovanie/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>35 забавных комментариев</title>
		<link>http://embedded.in.ua/2009/04/29/35-zabavnyx-kommentariev/</link>
		<comments>http://embedded.in.ua/2009/04/29/35-zabavnyx-kommentariev/#comments</comments>
		<pubDate>Wed, 29 Apr 2009 06:26:20 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Новости]]></category>

		<guid isPermaLink="false">http://usability.in.ua/?p=32</guid>
		<description><![CDATA[Stackoverflow недавно был поднят вопрос от том, какой самый лучший комментарий в исходном коде встречали респонденты. Всего было дано 534 ответа. Я хотел бы привести некоторые, которые мне просто понравились, без учета их полезности. sometimes I believe compiler ignores all my comment Dear maintainer: Once you are done trying to &#8216;optimize&#8217; this routine, and have [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;"><a href="http://stackoverflow.com" target="_blank">Stackoverflow</a> недавно был поднят вопрос от том, какой <a href="http://stackoverflow.com/questions/184618?sort=votes&amp;page=1#sort-top" target="_blank">самый лучший комментарий</a> в исходном коде встречали респонденты. Всего было дано 534 ответа. Я хотел бы привести некоторые, которые мне просто понравились, без учета их полезности.<span id="more-32"></span></p>
<blockquote><p>sometimes I believe compiler ignores all my comment</p></blockquote>
<blockquote><p>Dear maintainer:<br />
Once you are done trying to &#8216;optimize&#8217; this routine,<br />
and have realized what a terrible mistake that was,<br />
please increment the following counter as a warning<br />
to the next guy:<br />
total_hours_wasted_here = 16</p></blockquote>
<blockquote><p>drunk, fix later</p></blockquote>
<blockquote><p>Magic. Do not touch.</p></blockquote>
<blockquote><p>When I wrote this, only God and I understood what<br />
I was doing. Now, God only knows</p></blockquote>
<blockquote><p>I&#8217;m sorry.</p></blockquote>
<blockquote><p>You are not meant to understand this</p></blockquote>
<blockquote><p>I am not sure why this works<br />
but it fixes the problem</p></blockquote>
<blockquote><p>I am not sure if we need this,<br />
but too scared to delete</p></blockquote>
<blockquote><p>Dear future me. Please forgive me</p></blockquote>
<blockquote><p>I can&#8217;t even begin to express how sorry I am</p></blockquote>
<blockquote><p>I am not responsible of this code</p></blockquote>
<blockquote><p>They made me write it, against my will</p></blockquote>
<blockquote><p>I have to find a better job</p></blockquote>
<blockquote><p>If you&#8217;re reading this, that means you have been<br />
put in charge of my previous project<br />
I am so, so sorry for you. God speed</p></blockquote>
<blockquote><p>TODO: Fix this.  Fix what?</p></blockquote>
<blockquote><p>Mr. Compiler, please do not read this</p></blockquote>
<blockquote><p>if i ever see this again i&#8217;m going<br />
to start bringing guns to work</p></blockquote>
<blockquote><p>This comment is self explanatory.</p></blockquote>
<blockquote><p>this comment included for the benefit of<br />
anyone grepping for swearwords: shit.</p></blockquote>
<blockquote><p>NOT FIT FOR HUMAN CONSUMPTION</p></blockquote>
<blockquote><p>Houston, we have a problem</p></blockquote>
<blockquote><p>This code was written by a genius so don&#8217;t<br />
try to understand it with your tiny little brain.</p></blockquote>
<blockquote><p>If I from the future read this<br />
I&#8217;ll back in time and kill myself.</p></blockquote>
<blockquote><p>If you are reading this,<br />
please place a checkmark here [  ]</p></blockquote>
<blockquote><p>My lawyer told me not to reveal</p></blockquote>
<blockquote><p>no comments for you<br />
it was hard to write so it should be hard to read</p></blockquote>
<blockquote><p>I&#8217;m sorry, but our princess is in another castle.<br />
but the &#8220;real&#8221; solution is much more complicated</p></blockquote>
<blockquote><p>Honest this works</p></blockquote>
<blockquote><p>HACK ! COPY/PASTE this and look for another job</p></blockquote>
<blockquote><p>I wish (boss name) could do this by him self</p></blockquote>
<blockquote><p>Sorry dirty code</p></blockquote>
<blockquote><p>This condition can&#8217;t happen. Call the police or something</p></blockquote>
<blockquote><p>why the f*** we have to move this here to make it work</p></blockquote>
<blockquote><p>Do not continue reading if you dont want to die</p></blockquote>
<blockquote><p>*** AAAAAHAHAHAH!!  What is this??</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://embedded.in.ua/2009/04/29/35-zabavnyx-kommentariev/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Тонкости использования модификатора volatile</title>
		<link>http://embedded.in.ua/2009/01/20/tonkosti-ispolzovaniya-modifikatora-volatile/</link>
		<comments>http://embedded.in.ua/2009/01/20/tonkosti-ispolzovaniya-modifikatora-volatile/#comments</comments>
		<pubDate>Tue, 20 Jan 2009 17:06:24 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[c programming]]></category>
		<category><![CDATA[embedded]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[tips&tricks]]></category>

		<guid isPermaLink="false">http://usability.in.ua/?p=10</guid>
		<description><![CDATA[Ваш код работает, пока Вы не включили оптимизацию? Ваш код работает только когда отключены прерывания? Ваш драйвер работает как психованный? Задачи работают в изоляции, но не работают в одновременно? Возможно, при оптимизации компилятор посчитал необходимым изменить фрагмент кода основываясь на том, что не нашел кода, который изменят определенный объект. Примером такой ситуации может служить работа [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">Ваш код работает, пока Вы не включили оптимизацию? Ваш код работает только когда отключены прерывания? Ваш драйвер работает как психованный? Задачи работают в изоляции, но не работают в одновременно? Возможно, при оптимизации компилятор посчитал необходимым изменить фрагмент кода основываясь на том, что не нашел кода, который изменят определенный объект. Примером такой ситуации может служить работа с регистрами устройства отображенными в память, работа с общими объектами в много-потоковых программах.<span id="more-10"></span></p>
<p style="text-align: justify;">Приведу пример. Нажатие кнопки устанавливает единицу в восьмом бите регистра REG1. Этот регистр отображен в память по адресу 0&#215;02140040. Допустим, что для упрощения работы вы решили использовать макрос, который указывает на эту область памяти:</p>
<p>[cc lang="c" tab_size="2" lines="40"]<br />
#define REG1(*( int32_t *) 0&#215;02140040)<br />
[/cc]</p>
<p>Тогда организация ожидания нажатия кнопки будет выглядеть таким образом:</p>
<p>[cc lang="c" tab_size="2" lines="40"]<br />
while ((REG1 &amp; 0х100) == 0);<br />
[/cc]</p>
<p>При оптимизации компилятор может предположить, что в теле цикла значение REG1 не меняется и, следовательно, незачем постоянно проверять условие. Вот что из этого может получиться:</p>
<p>[cc lang="c" tab_size="2" lines="40"]<br />
while ((REG1 &amp; 0х100) == 0) for (;;);<br />
[/cc]</p>
<p style="text-align: justify;">Об этой и других проблемах, которые могут возникнуть читайте в статье <em>Dan Saks </em><a href="http://www.embedded.com/columns/programmingpointers/170701302?_requestid=119675" target="_blank">Use volatile judiciously.</a> В ней описаны возможные ошибки при включенной оптимизации и методы их решения.</p>
<p style="text-align: justify;">До появления модификатора <strong>volatile</strong> программистам приходилось помещать код драйвера в отдельный файл, компилировать его без оптимизации и потом компилировать все остальные файлы с включенной оптимизацией. Некоторые компиляторы имели возможность использования pragma, что позволяло отключить оптимизацию для части кода. С появлением модификатора <span style="font-weight: normal; "><strong>volatile</strong></span><span style="font-weight: normal; ">, появилась возможность отключать оптимизацию только для необходимых объектов. </span></p>
<p style="text-align: justify;">Если вам интересно, тогда прочитайте статью <em>Nigel Jones</em> <a href="http://www.embedded.com/columns/beginerscorner/9900209?_requestid=275238" target="_blank"><span style="color: #000000; text-decoration: none;"><span style="color: #000000; text-decoration: none;">Introduction to the Volatile Keyword</span></span></a>.  Там простыми словами описан синтаксис и случаи применения модификатора <strong>volatile</strong>, с примерами ошибок при работе с регистрами периферийных устройств, обработчиками прерываний и много-потоковыми программами.</p>
<p style="text-align: justify;">Интересная заметка <em>Ian Lance Taylor</em> об <a href="http://www.airs.com/blog/archives/154" target="_blank"><span style="color: #000000; text-decoration: none;"><span style="color: #000000; text-decoration: none;">использовании модификатора </span></span></a><a href="http://www.airs.com/blog/archives/154" target="_blank"><span style="color: #000000; text-decoration: none;"><span style="color: #000000; text-decoration: none;">volatile</span></span></a> в языке програмирования С. Правда в ней опускается метод использования <strong>volatile</strong> для много-потоковых программ, поэтому в догонку статья Andrei Alexandrescu - <a href="http://www.ddj.com/cpp/184403766" target="_blank"><span style="color: #000000; text-decoration: none;"><span style="color: #000000; text-decoration: none;">volatile &#8211; Multithreaded Programmer&#8217;s Best Friend</span></span></a>.</p>
<p style="text-align: justify;">Разобравшись с использованием <strong>volatile</strong> ознакомьтесь со статьей <em>Dan Saks</em> <a href="http://www.embedded.com/columns/programmingpointers/174300478?_requestid=275250" target="_blank"><span style="color: #000000; text-decoration: none;"><span style="color: #000000; text-decoration: none;">Place volatile accurately</span></span></a>, где описана проблема с которой вы можете столкнуться используя указатели на регистры отображенные в память.</p>
]]></content:encoded>
			<wfw:commentRss>http://embedded.in.ua/2009/01/20/tonkosti-ispolzovaniya-modifikatora-volatile/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Что такое usability?</title>
		<link>http://embedded.in.ua/2008/07/17/chto-takoe-usability/</link>
		<comments>http://embedded.in.ua/2008/07/17/chto-takoe-usability/#comments</comments>
		<pubDate>Thu, 17 Jul 2008 15:22:58 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[usability]]></category>

		<guid isPermaLink="false">http://usability.in.ua/?p=3</guid>
		<description><![CDATA[Международный стандарт ISO 9241-11 определяет юзабилити как степень, в которой продукт может быть использован пользователями для достижения точно определенных целей с действенностью, эффективностью и удовлетворённостью в заданном контексте использования. Юзабилити означает что люди, которые используют продукт, могут легко и быстро выполнить собственные задачи. Это определение основывается на четырех принципах: (1) юзабилити означает концентрирование на пользователях; [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;"><!--[endif]-->Международный стандарт ISO 9241-11 определяет юзабилити как степень, в которой продукт может быть использован пользователями для достижения точно определенных целей с действенностью, эффективностью и удовлетворённостью в заданном контексте использования.<span id="more-3"></span></p>
<p style="text-align: justify;">Юзабилити означает что люди, которые используют продукт, могут легко и быстро выполнить собственные задачи. Это определение основывается на четырех принципах: (1) юзабилити означает концентрирование на пользователях; (2) люди используют продукт для повышения продуктивности; (3) пользователи являются занятыми людьми, которые пытаются выполнить свои задачи; (4) пользователи принимают решение о простоте использования продукта. &#8211; Janice (Ginny) Redish and Joseph Dumas, <em>A Practical Guide to Usability Testing</em>, 1999, p. 4</p>
<p style="text-align: justify;">После всего, юзабилити просто обеспечивает хорошую работу продукта и заботится о том, чтобы человек со средними (или даже ниже среднего) возможностями и опытом мог использовать продукт &#8211; будет это вэб-сайт, реактивный самолет или дверь &#8211; по назначению и без отчаянного разочарования. &#8211; Steve Krug, <em>Don&#8217;t Make Me Think, </em>2000, p. 5</p>
<p style="text-align: justify;">Юзабилити начинается с философии &#8211; веры в то, что дизайн соответствует желаниям пользователя и ориентирован на создание идеального user experience &#8211; но это отдельный процесс и методология, которая приводит к достижению действительной цели юзабилити. Новый процесс создания юзабилити продукта начинается с определения того, кто будет использовать продукт, понимание их целей и желаний, и выбор правильной техники для ответа на вопрос: &#8220;Насколько хорошо наш продукт соответствует юзабилити требованиям для наших пользователей?&#8221; &#8211; <a href="http://www.wqusability.com/articles/getting-started.html">Whitney Quesenbery</a>.</p>
<p style="text-align: justify;">Важно понимать, что юзабилити это не простое, одномерное свойство пользовательского интерфейса. Юзабилити имеет множество компонент и традиционно ассоциируется с пятью свойствами: обучаемостью, эффективностью, достопамятностью, погрешностью, удовлетворенностью. &#8211; Jakob Nielsen, <em>Usability Engineering</em>, 1993, p. 26.</p>
<p style="text-align: justify;">Юзабилити &#8211; измеряемая характеристика, которая присутствует в большей или меньшей степени, и описывает эффективность пользовательского взаимодействия с продуктом. Также можно предположить что это как легко научиться продукту и как легко его использовать. &#8211; <a href="http://www.userdesign.com/usability.html">Jeff Axup, UserDesign</a>.</p>
<p style="text-align: justify;">Юзабилити (англ. usability — дословно «пользуемость», «возможность быть используемым») — понятие в микроэргономике, обозначающее общую степень удобства предмета при использовании; термин схож с термином «эргономичность», однако имеет иную область распространения и отличается нюансами определения. Применительно к компьютерной технике термином юзабилити называют концепцию разработки пользовательских интерфейсов программного обеспечения, ориентированную на максимальное психологическое и эстетическое удобство для пользователя. Ныне термин «юзабилити» всё чаще используется как синоним слова «эргономичность» в контексте таких продуктов, как бытовая электроника или средства связи. В более широком значении он может также употребляться для определения степени эффективности выполнения механическими объектами и инструментами — такими, например, как дверная ручка или молоток — предписанных им функций. Таким образом, наиболее адекватным переводом слова «usability» будет «удобство и простота использования, применения», и даже «практичность». <a href="http://ru.wikipedia.org/wiki/%D0%AE%D0%B7%D0%B0%D0%B1%D0%B8%D0%BB%D0%B8%D1%82%D0%B8">Материал из Википедии — свободной энциклопедии</a>.</p>
<p style="text-align: justify;">На мой взгляд, практичность в русском языке имеет <a href="http://slovari.yandex.ru/art.xml?encpage=ushakov&amp;art=ushakov//ushakov/16-3/us370204.htm">несколько другое значение.</a></p>
<p style="text-align: justify;">Практичность &#8211; совокупность свойств инструмента, влияющих на эффективность его использования в конкретной предметной деятельности, и выражающихся: в применимости этого инструмента; в легкости его освоения и использования; в воспроизводимости полученных навыков; в низкой частоте ошибок; в субъективном удовольствии и других факторах. <a href="http://slovari.yandex.ru/dict/glossary/article/1802/180_2002.HTM?text=usability">Яндекс. Словари.</a></p>
<p style="text-align: justify;">Юзабилити это качественное свойство, которое определяется тем, насколько легко использовать пользовательский интерфейс. Слово &#8220;юзабилити&#8221; также относиться к методам улучшения простоты использования, которые качественное применяются в процессе создания продукта. <a href="http://www.useit.com/alertbox/20030825.html">Usability 101: Introduction to Usability</a>.</p>
<p style="text-align: justify;">Юзабилити означает создание продуктов и систем, более простых в использовании, и более тесное соответствие с необходимостями и требованиями пользователя. <a href="http://www.usabilitynet.org/management/b_what.htm">Usability Net.</a></p>
<p style="text-align: justify;">Юзабилити это подход к разработке продукта, который включает прямую связь с пользователем во время цикла разработки для сокращения стоимости и создания продуктов и инструментов, которые отвечают требованиям пользователя. <a href="http://www.upassoc.org/usability_resources/about_usability/definitions_of_usability.html">What is Usability?</a></p>
]]></content:encoded>
			<wfw:commentRss>http://embedded.in.ua/2008/07/17/chto-takoe-usability/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
