<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss 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:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>whirlwind</title>
	
	<link>http://whirlwind.in.ua</link>
	<description>шось про програмування, Linux і все таке</description>
	<lastBuildDate>Sat, 01 Oct 2011 18:26:25 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/Whirlwind-uk" /><feedburner:info uri="whirlwind-uk" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
		<title>Прискіпливість</title>
		<link>http://feedproxy.google.com/~r/Whirlwind-uk/~3/JL1GsjFORJo/</link>
		<comments>http://whirlwind.in.ua/2011/10/%d0%bf%d1%80%d0%b8%d1%81%d0%ba%d1%96%d0%bf%d0%bb%d0%b8%d0%b2%d1%96%d1%81%d1%82%d1%8c/#comments</comments>
		<pubDate>Sat, 01 Oct 2011 18:26:25 +0000</pubDate>
		<dc:creator>whirlwind</dc:creator>
				<category><![CDATA[Життя]]></category>
		<category><![CDATA[Apple]]></category>
		<category><![CDATA[Steve Jobs]]></category>

		<guid isPermaLink="false">http://whirlwind.in.ua/?p=312</guid>
		<description><![CDATA[Кроспост на розробці
Думаю, усі читали розповідь про іконку для програм Google у iPhone. Однак, виявляється, Стів Джобс завжди надавав великого значення найменшим деталям своєї системи. Ось історія, що сталась під час роботи над першими Макінтошами (оригінал):
Кріс Еспіноза (Chris Espinosa) був одним з найперших і наймолодших працівників &#8212; він приєднався до компанії коли йому було 14. [...]]]></description>
			<content:encoded><![CDATA[<p>Кроспост на <a href="http://www.rozrobka.com/blog/apple/1229.html">розробці</a></p>
<p><img src="http://www.rozrobka.com/uploads/images/00/00/64/2011/10/01/1741a304eb.gif"  align="left"  alt="" /><i>Думаю, усі читали <a href="https://plus.google.com/u/0/107117483540235115863/posts/gcSStkKxXTw">розповідь </a>про іконку для програм Google у iPhone. Однак, виявляється, Стів Джобс завжди надавав великого значення найменшим деталям своєї системи. Ось історія, що сталась під час роботи над першими Макінтошами (<a href="http://www.folklore.org/StoryView.py?project=Macintosh&#038;story=Calculator_Construction_Set.txt">оригінал</a>):</i></p>
<p>Кріс Еспіноза (Chris Espinosa) був одним з найперших і наймолодших працівників &#8212; він приєднався до компанії коли йому було 14. У 1978 році він лишив Apple, поступивши до коледжу у Берклі, однак продовжував виконувати певні завдання у якості позаштатного робітника. Так, наприклад, він написав довідникові матеріали до Apple II.</p>
<p>Влітку 1981 року Стів Джобс умовив Кріса кинути коледж та повернутися до роботи над Маками у повну силу. Основним аргументом було те, що навчання ще можна буде продовжити коли-небудь потім, а Макінтош треба завершити зараз. Кріс кинув коледж та з серпня 1981 став головним технічним письменником (manager of documentation for the Macintosh).<br />
<span id="more-312"></span><br />
Нам була вкрай необхідна технічна документація, бо вже через кілька місяців планувалось залучення до роботи сторонніх розробників. Найбільш важливою частиною системи Macintosh була <a href="http://en.wikipedia.org/wiki/QuickDraw">графічна бібліотека QuickDraw</a>, тому Кріс вирішив почати з неї.</p>
<p>Для того, щоб краще зрозуміти роботу графічної системи, Кріс зібрався написати невелику демонстраційну програму. Йому дуже подобалась ідея створення віджетів робочого столу (&#8221;<a href="http://www.folklore.org/StoryView.py?story=Desk_Ornaments.txt">desktop ornaments</a>&#8220;). Для реалізації цієї ідеї було вирішено написати віджет-калькулятор.</p>
<p>Через якийсь час програму було написано. Кріс був цілком задоволений тим, як вона виглядала, однак останнє слово мав сказати сам Стів Джобс &#8212; він слідкував за розвитком естетики системи.</p>
<p>Під час демонстрації ми зібрались навколо і, затамувавши подих, чекали на реакцію Стіва. &#8220;Що ж, для початку непогано&#8221; &#8212; промовив він. &#8220;Але в цілому це відстій. Фоновий колір занадто темний, деякі лінії не тієї товщини, кнопки завеликі&#8221;. Кріс пообіцяв Стіву, що вдосконалюватиме програму, доки її не буде погоджено.</p>
<p>Наступні кілька днів пройшли так: Кріс втілював вимоги Стіва, однак той щоразу прискіпувався до чогось іншого. Програму доводилось переробляти, узгоджувати і знову переробляти.<br />
<img src="http://www.rozrobka.com/uploads/images/00/00/64/2011/10/01/c7eb9f9bcb.png"  align="right"  alt="" /><br />
Нарешті Крісу це набридло. Він вирішив спробувати інший підхід &#8212; &#8220;нехай Стів сам зробить, що йому треба&#8221;. Для кожної вимоги щодо інтерфейсу калькулятора було створено відповідну менюшку. Можна було обирати товщину ліній, розмір кнопок, фон та інші речі.</p>
<p>Побачивши нову розробку, Стів одразу ж почав гратися з параметрами. Через десять хвилин він таки скомпонував щось таке, що його влаштувало. Кількома місяцями пізніше ми зробили реальну програму-калькулятор відповідно до цього дизайну. Ця програма пробула <a href="http://guides.macrumors.com/Calculator">стандартним калькулятором</a> для Макінтошу багато років аж до появи OS 9.</p>
]]></content:encoded>
			<wfw:commentRss>http://whirlwind.in.ua/2011/10/%d0%bf%d1%80%d0%b8%d1%81%d0%ba%d1%96%d0%bf%d0%bb%d0%b8%d0%b2%d1%96%d1%81%d1%82%d1%8c/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://whirlwind.in.ua/2011/10/%d0%bf%d1%80%d0%b8%d1%81%d0%ba%d1%96%d0%bf%d0%bb%d0%b8%d0%b2%d1%96%d1%81%d1%82%d1%8c/</feedburner:origLink></item>
		<item>
		<title>Чому компіляція програм на C++ займає так багато часу?</title>
		<link>http://feedproxy.google.com/~r/Whirlwind-uk/~3/_bAcwWwoJFE/</link>
		<comments>http://whirlwind.in.ua/2011/07/cpp-compilation-spee/#comments</comments>
		<pubDate>Mon, 18 Jul 2011 14:51:52 +0000</pubDate>
		<dc:creator>whirlwind</dc:creator>
				<category><![CDATA[C/C++]]></category>
		<category><![CDATA[c++]]></category>
		<category><![CDATA[C++0X]]></category>

		<guid isPermaLink="false">http://whirlwind.in.ua/?p=308</guid>
		<description><![CDATA[
Переклад статті &#8220;C++ Compilation Speed&#8220;. Кроспост на розробці
Люди часто скаржаться на те, що написаний на C++ код вимагає надто багато часу для компіляції. Настільки багато, що іноді повну збірку великих проєктів доводиться відкладати на ніч. 
Повільна компіляція  навіть стала однією з причин появи мови Go. Я уже досить давно займаюсь розробкою компіляторів і ця [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.rozrobka.com/uploads/images/00/00/64/2011/07/18/bd1db8d88f.png"  align="right"  alt="" /></p>
<p><i>Переклад статті &#8220;<a href="http://drdobbs.com/blogs/cpp/228701711">C++ Compilation Speed</a>&#8220;. Кроспост на <a href="http://www.rozrobka.com/blog/tools/1191.html">розробці</a></i></p>
<p>Люди часто скаржаться на те, що написаний на C++ код вимагає надто багато часу для компіляції. Настільки багато, що іноді повну збірку великих проєктів доводиться відкладати на ніч. </p>
<p>Повільна компіляція  навіть стала однією з <a href="http://golang.org/doc/go_faq.html">причин</a> появи мови Go. Я уже досить давно займаюсь розробкою компіляторів і ця проблема не давала мені спокою. Чому все так довго? Розробники компіляторів C++ &#8212; професіонали своєї справи, тому, скоріше за все, причину слід шукати у самій мові програмування. Швидкість роботи різних компіляторів дуже відрізняється, але програми, написані на інших мовах програмування, компілюються однозначно швидше.</p>
<p>Я займаюсь розробкою компіляторів для C++ з 1987. Комп’ютери у ті часи були значно повільніші, ніж зараз, і проблема швидкості компіляції стояла дуже гостро. Чимало часу було витрачено на профілювання на дослідження причин повільної<br />
роботи.<br />
<span id="more-308"></span><br />
Отже, основними причинами є:</p>
<p>1. Сім фаз трансляції. Вони перераховані у <a href="http://whirlwind.in.ua/2009/01/standards_c_cpp/">стандарті C++98</a>, пункт 2.1:</p>
<ul>
<li>Конвертування <a href="http://alenacpp.blogspot.com/2006/02/blog-post.html">триграфів</a> та кодів символів</li>
<li>Обробка екранованих символів</li>
<li>Виділення частин, що підлягають обробці (preprocessing tokens, C++98, пункт 2.4)</li>
<li>Виконання директив препроцесора; розгортання макросів;</li>
<li>Читання підключених (<tt>#include</tt>) файлів та пропускання їх чераз попередні фази.</li>
<li>Конвертування символів всередині строкових та символьних констант</li>
<li>Поєднання строкових констант</li>
<li>Виділення мовних одиниць (ідентифікаторів, операторів, ключових слів тощо; англ <i>tokens</i>, C++98 2.6)</li>
</ul>
<p>Деякі фази можна комбінувати, але все одно вихідний код доводиться проходити не менше трьох разів. Принаймі, мені ніколи не вдавалося впоратись менше, ніж за три проходи. Водночас, для правильно спроектованих мов досить лише одного проходу. </p>
<p>У C++0X ситуація стала ще гірше: там додали так звані &#8220;чисті&#8221; рядки (<a href="http://en.wikipedia.org/wiki/C%2B%2B0x#New_string_literals">raw string literals</a>) всередині яких триграфи та екрановані за допомогою &#8216;\&#8217; символи мають бути збережені. </p>
<p>У C++0x Standard 2.14.5-4 наведено наступний приклад:</p>
<p><code>const char *p = R"(a\ b c)"; assert(std::strcmp(p, "a\\\nb\nc") == 0);</code> </p>
<p>2. Кожна фаза залежить від результатів попередньої. Наприклад, немає надійного способу виділення і пошуку підключених файлів, для того щоб асинхронно їх читати. Також компілятор не може глянути вперед, щоб визначити, чи знаходиться даний конкретний триграф всередині чистого рядка. Усі триграфи потрібно конвертувати, при цьому запам’ятавши їх позиції на випадок, якщо щось треба буде повернути назад. Єдиний можливий спосіб розпаралелити процес компіляції &#8212; на найвищому рівні, як це робить make з опцією -j.</p>
<p>3. <tt>#include</tt> передбачає саме вставку тексту, а не результатів обробки, тому компілятору доводиться весь час<br />
обробляти ті самі файли, якщо їх було включено повторно (навіть якщо там був #ifdef). Можливо, десь у стандарті і була згадка про те, що це необов’язково, але я не знаю жодного компілятора, який би так працював.</p>
<p>4. Зазвичай люди включають усі можливі заголовочні файли, що додає компілятору купу зайвої роботи. Підключення стандартної бібліотеки, наприклад, означає, що до вашого коду буде додано ще 37687 рядків з 74 файлів (це не враховуючи повторні включення). Шаблони та розповсюдження ідей <a href="http://uk.wikipedia.org/wiki/%D0%A3%D0%B7%D0%B0%D0%B3%D0%B0%D0%BB%D1%8C%D0%BD%D0%B5%D0%BD%D0%B5_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D1%83%D0%B2%D0%B0%D0%BD%D0%BD%D1%8F">узагальненого програмування</a> ще більш погіршують ситуацію.</p>
<p>5. Значення будь-якої синтаксичної та семантичної одиниці залежить від коду, що був до неї. Немає жодного елементу, незалежного від контексту. Відповідно, немає можливості проводити попередню обробку заголовочних файлів &#8212; для цього треба обробити інші підключені файли. Хедери можуть мати інший зміст, коли їх підключають повторно (ця особливість іноді використовується)</p>
<p>6. Через причину, вказану у попередньому пункті, компілятор не може використати результат обробки підключеного файлу для компіляції інших одиниць трансляції (<i>одиниця трансляції</i> &#8212; це один cpp-файл; в результаті його обробки eтворюється один об’єктний файл. Згодом з купи об’єктних файлів лінкер ліпить програму) з таким самим #include. Завжди доводиться усе повторювати спочатку.</p>
<p>7. Оскільки різні одиниці трансляції компілюються окремо, часто вживані однакові шаблони генеруються багато разів. Лінкер потім прибирає увесь код, що дублюється, але краще було б взагалі не витрачати час на його генерування.</p>
<p>Прекомпільовані заголовочні файли (precompiled headers) частково вирішують вказані проблеми, але при цьому порушуються вимоги стандарту. Наприклад, передбачається, що при повторному включенні хедер матиме той самий зміст (що насправді не гарантується, варто про це пам’ятати).</p>
<p>Буде дуже важко виправити усі ці вади і при цьому не порушити сумісність з уже написаним кодом. Можливо, вдасться чогось досягти у стандарті, що прийде на зміну C++0X, але це буде ще років через десять. </p>
<p>А поки що все дуже сумно. Експортовані шаблони (<a href="http://en.wikipedia.org/wiki/C%2B%2B#Exported_templates">export templates</a>) застаріли і не підтримуються, прекомпільовані хедери не відповідають стандарту, imports не затверджені у C++0X&#8230; Тому єдиним дієвим способом прискорення є використання <i>make -j</i>.</p>
]]></content:encoded>
			<wfw:commentRss>http://whirlwind.in.ua/2011/07/cpp-compilation-spee/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://whirlwind.in.ua/2011/07/cpp-compilation-spee/</feedburner:origLink></item>
		<item>
		<title>Порядок завантаження динамічних бібліотек у Linux</title>
		<link>http://feedproxy.google.com/~r/Whirlwind-uk/~3/WOxECqa9pSo/</link>
		<comments>http://whirlwind.in.ua/2011/03/loading-so-in-linux/#comments</comments>
		<pubDate>Sat, 19 Mar 2011 12:14:04 +0000</pubDate>
		<dc:creator>whirlwind</dc:creator>
				<category><![CDATA[linux]]></category>

		<guid isPermaLink="false">http://whirlwind.in.ua/?p=304</guid>
		<description><![CDATA[Бувають іноді такі ситуації, коли треба запустити програму так, щоб вона підхопила якусь специфічну версію динамічних бібліотек замість тих, що стандартно встановлені у системі. 
Уявіть, наприклад, що ви тестер і маєте перевірити роботу програми з усіма можливими версіями Qt від 4.4.3 аж до 4.7 . Або вам просто хочеться у новенькій убунті вести розробку під [...]]]></description>
			<content:encoded><![CDATA[<p>Бувають іноді такі ситуації, коли треба запустити програму так, щоб вона підхопила якусь специфічну версію динамічних бібліотек замість тих, що стандартно встановлені у системі. </p>
<p>Уявіть, наприклад, що ви тестер і маєте перевірити роботу програми з усіма можливими версіями Qt від 4.4.3 аж до 4.7 . Або вам просто хочеться у новенькій убунті вести розробку під якусь стародавню систему, у якій нічого більшого ніж 4.4.3 немає. У цьому пості я спробую зібрати докупи усю інформацію, яка знадобиться для вирішення таких ситуацій.</p>
<p>Коли бінарному файлу потрібно буде завантажити динамічну бібліотеку, то її шукатимуть у наступних місцях:</p>
<p>1) За значенням RPATH бібліотеки, у якій було знайдено залежність (якщо ця залежність у бібліотеці)<br />
2) За значенням RPATH виконуваного файлу<br />
3) у директоріях, перелічених у змінній оточення LD_LIBRARY_PATH<br />
4) За значенням RUNPATH виконуваного файлу.<br />
5) /etc/ld.so.cache &#8212; кеш бібліотек, сформований ldconfig<br />
6) у стандартних директоріях, призначених для зберігання бібліотек (/lib та /usr/lib)</p>
<p><span id="more-304"></span></p>
<h4>RPATH</h4>
<p>RPATH &#8212; це список каталогів, розділений двокрапкою. Лінкер записує його у певне місце виконуваного файлу (або динамічної бібліотеки).</p>
<p>Дізнатися значення RPATH можна за допомогою команди <i>readelf</i>:</p>
<p><code>bear@bear-VB:~$ readelf -d /usr/bin/qtcreator | grep RPATH<br />
 0x0000000f (RPATH)                      Library rpath: [$ORIGIN/../lib/qtcreator]</code></p>
<p>Тут <i>$ORIGIN</i> &#8212; директорія, у якій лежить виконуваний файл. </p>
<p>Так же само можна подивитися значення RPATH для динамічних бібліотек</p>
<p><code>bear@bear-VB:~$ readelf -d /usr/lib/qtcreator/libExtensionSystem.so.1.0.0 | grep RPATH<br />
 0x0000000f (RPATH)                      Library rpath: [$ORIGIN/../lib/qtcreator]<br />
</code></p>
<p>Під час компіляції значення RPATH можна встановити за допомогою опції <i>-rpath</i></p>
<p><code>bear@bear-VB:~/temp/dlp/cprog$ gcc cmain.c -o cprog -Wl,-rpath,/home/beardog/lib/<br />
bear@bear-VB:~/temp/dlp/cprog$ readelf -d cprog | grep RPATH<br />
 0x0000000f (RPATH)                      Library rpath: [/home/beardog/lib/]</code></p>
<p>Крім того, в Debian та його нащадках є програма <i>chrpath</i>, призначена спеціально для того, щоб переглядати та змінювати RPATH. Типу</p>
<p><code>bear@bear-VB:~/temp/dlp/cprog$ chrpath -l ./cprog<br />
./cprog: RPATH=/home/beardog/lib/<br />
bear@bear-VB:~/temp/dlp/cprog$ chrpath -r /home/bd/lib ./cprog<br />
./cprog: RPATH=/home/beardog/lib/<br />
./cprog: new RPATH: /home/bd/lib<br />
bear@bear-VB:~/temp/dlp/cprog$ chrpath -l ./cprog<br />
./cprog: RPATH=/home/bd/lib</code></p>
<p>В принципі, використовувати RPATH у реальних системах <a href="http://wiki.debian.org/RpathIssue">не рекомендують</a>, хоча для деяких не дуже складних ситуацій цей варіант може виявитися найкращим.</p>
<h4>LD_LIBRARY_PATH</h4>
<p>LD_LIBRARY_PATH &#8212; змінна оточення, що містить список директорій, розділених двокрапкою. У реальних системах її також <a href="http://xahlee.org/UnixResource_dir/_/ldpath.html">не рекомендують</a> (ще <a href="http://blogs.sun.com/ali/entry/avoiding_ld_library_path_the">тут</a>) використовувати, однак для розробки і тестування цей спосіб є найзручнішим. Очевидна перевага &#8212; можливість налаштувати запуск конкретної програми, не змінюючи при цьому саму програму і процес її створення.</p>
<p>Є можливість не встановлювати змінну оточення, а передавати безпосередньо завантажувачу як опцію командного рядка. Типу<br />
<code>bear@bear-VB:~$ /lib/ld-linux.so.2 --library-path /home/bearbog/lib /bin/echo ssss<br />
ssss</code></p>
<h4>RUNPATH </h4>
<p>В принципі, RUNPATH &#8212; це ще один варіант RPATH, просто з міркувань безпеки його перенесли на крок назад. </p>
<p>Для читання можна використовувати той же <i>readelf</i>. Для встановлення під час створення програми треба передати лінкеру ті ж опції, що й для RPATH, і ще додати <a href="http://blog.flameeyes.eu/2009/05/29/fool-proof">&#8211;enable-new-dtags</a>. Особисто я так і не зрозумів, що робить ця опція; скоріше за все, буде одночасно встановлено і RPATH, і RUNPATH.</p>
<p><code>bear@bear-VB:~/temp/dlp/cprog$ gcc cmain.c -o cprog2 -Wl,-rpath,/home/bd2/lib/,--enable-new-dtags<br />
bear@bear-VB:~/temp/dlp/cprog$ readelf -d cprog2 | grep -e "RPATH" -e "RUNPATH"<br />
 0x0000000f (RPATH)                      Library rpath: [/home/bd2/lib/]<br />
 0x0000001d (RUNPATH)                    Library runpath: [/home/bd2/lib/]</code></p>
<h4>Кеш бібліотек.</h4>
<p>Це якраз той спосіб, що зазвичай використовується у більшості дистрибутивів. Суть у тому, що є такий собі файл <i>/etc/ld.so.cache</i>; він містить інформацію про місцезнаходження усіх динамічних бібліотек, що знаходяться у системі. </p>
<p>Формується цей файл утилітою <i>ldconfig</i>. Теоретично, під час кожного запуску системи <i>ldconfig </i>має читати з текстового файлу <i>/etc/ld.so.conf</i> список директорій, у яких можуть знаходитись бібліотеки, переглядає їх і запам’ятовує, шо де лежить. Насправді все трохи складніше: <i>/etc/ld.so.conf</i> містить лише інструкцію про те, що шляхи до бібліотек потрібно взяти з текстових файлів, що знаходяться у <i>/etc/ld.so.conf.d/</i>. Ось як це виглядає в Убунті:</p>
<p><code>bear@bear-VB:~/temp$ cat /etc/ld.so.conf<br />
include /etc/ld.so.conf.d/*.conf<br />
bear@bear-VB:~/temp$ ls  /etc/ld.so.conf.d/<br />
GL.conf  i686-linux-gnu.conf  libasound2.conf  libc.conf<br />
bear@bear-VB:~/temp$ cat  /etc/ld.so.conf.d/i686-linux-gnu.conf<br />
# Multiarch support<br />
/lib/i686-linux-gnu<br />
/usr/lib/i686-linux-gnu<br />
bear@bear-VB:~/temp$ cat  /etc/ld.so.conf.d/libasound2.conf<br />
/usr/lib/alsa-lib<br />
</code></p>
<p><i>ldconfig -p</i> виводить список усіх зареєстрованих бібліотек.</p>
<p><code>bear@bear-VB:~/temp/dlp/cprog$ ldconfig -p | grep QtXml.so<br />
	libQtXml.so.4 (libc6) => /usr/lib/libQtXml.so.4<br />
	libQtXml.so (libc6) => /usr/lib/libQtXml.so</code></p>
<p>Очевидно, що основним недоліком <i>ldconfig</i> є те, що налаштування відбувається одночасно для всієї системи. Взагалі це добре, але якщо треба запустити одночасно пару програм з різними версіями бібліотек, доводиться шукати інші шляхи. </p>
<h4>Інші речі, про які треба знати</h4>
<p>Існує ряд змінних оточення, що можуть суттєво вплинути на поведінку завантажувача. Частина<br />
з них перелічена у <a href="http://linux.die.net/man/8/ld-linux">man ld-linux</a>, частина у <a href="http://linux.die.net/man/8/ld.so">man ld.so</a>, частина ще десь . Наприклад, якщо задати змінну LD_RUN_PATH, то її значення буде використано замість RPATH виконуваного файлу (не перевіряв, можливо, це відбуватиметься лише у випадку, коли rpath для виконуваного файлу не задавався).</p>
<p>Змінна LD_PRELOAD (а також, можливо, файл <i>/etc/ld.so.preload</i>) може містити список бібліотек (файлів, а не директорій, як у попередніх випадках), які обов’язково мають бути завантажені до початку виконування бінарного файлу. Між іншим, саме таким чином рекомендують використовувати <a href="http://google-perftools.googlecode.com/svn/trunk/doc/heap_checker.html">гугловий профайлер</a> </p>
<p>LD_DEBUG може приймати значення &#8220;all&#8221;, &#8220;files&#8221; або &#8220;help&#8221;. Коли вона встановлена, /lib/ld-linux.so.2 починає видавати купу всякої інформації про те, які бібліотеки було завантажено для даного файлу.</p>
<p>Ще слід пам’ятати, що для <i>set-user-ID/set-group-ID binaries</i> (грубо кажучи, &#8220;програми, запущені з-під sudo&#8221;) більшість змінних оточення буде проігноровано.</p>
]]></content:encoded>
			<wfw:commentRss>http://whirlwind.in.ua/2011/03/loading-so-in-linux/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://whirlwind.in.ua/2011/03/loading-so-in-linux/</feedburner:origLink></item>
		<item>
		<title>Створення інонки для Symbian-програм</title>
		<link>http://feedproxy.google.com/~r/Whirlwind-uk/~3/KwBljyGy4Jg/</link>
		<comments>http://whirlwind.in.ua/2010/11/how-to-create-an-icon-for-symbian-application/#comments</comments>
		<pubDate>Thu, 18 Nov 2010 19:29:20 +0000</pubDate>
		<dc:creator>whirlwind</dc:creator>
				<category><![CDATA[Життя]]></category>
		<category><![CDATA[QT]]></category>
		<category><![CDATA[Symbian]]></category>

		<guid isPermaLink="false">http://whirlwind.in.ua/2010/11/%d1%81%d1%82%d0%b2%d0%be%d1%80%d0%b5%d0%bd%d0%bd%d1%8f-%d1%96%d0%bd%d0%be%d0%bd%d0%ba%d0%b8-%d0%b4%d0%bb%d1%8f-symbian-%d0%bf%d1%80%d0%be%d0%b3%d1%80%d0%b0%d0%bc/</guid>
		<description><![CDATA[Резервний кроспост з розробки
Доброго вечора, любі хлопчатка і дівчатка, зара я вам розкажу, як задавати іконки для ваших програм під Symbian.
На перший погляд, усе дуже просто. Треба лише додати у pro-файл рядок типу такого:
ICON = images/my_icon.svg
Але не варто розслаблятися, фінські хлопці приготували кілька неприємних сюрпризів.

Іконка може бути лише у форматі SVG. Всякі там PNG, JPEG [...]]]></description>
			<content:encoded><![CDATA[<p><em>Резервний кроспост з <a href="http://www.rozrobka.com/blog/qt/903.html">розробки</a></em></p>
<p>Доброго вечора, любі хлопчатка і дівчатка, зара я вам розкажу, як задавати іконки для ваших програм під Symbian.</p>
<p>На перший погляд, усе дуже просто. Треба лише додати у pro-файл рядок типу такого:<br />
<code>ICON = images/my_icon.svg</code><br />
Але не варто розслаблятися, фінські хлопці приготували кілька неприємних сюрпризів.<br />
<span id="more-301"></span><br />
Іконка може бути лише у <a href="http://uk.wikipedia.org/wiki/Scalable_Vector_Graphics">форматі SVG</a>. Всякі там PNG, JPEG та інші бітмапи не допускаються. Більше того, це має бути не просто svg, а SVG-T (також відомий як SVG Tiny). Фактично це підмножина тегів основного стандарту, існує воно у двох варіантах: <a href="http://www.w3.org/TR/SVGMobile/">1.1</a> та <a href="http://www.w3.org/TR/SVGMobile12/">1.2</a>. Який з цих варіантів підтримується нокієськими телефонами &#8212; не ясно, цілком можливо, що це залежить від моделі телефону. У нокії на сайті є <a href="http://www.forum.nokia.com/info/sw.nokia.com/id/25c0c03a-0a54-473d-983a-e2775cb2f00d/S60_Platform_Introduction_to_SVG-T_Graphics_v1_0_en.pdf.html">документ</a>, присвячений цьому, але він дуже-дуже старий.</p>
<p>Якщо у вас є якісь зображення png або jpeg, можете спробувати їх переконвертувати у svg. Інструкції <a href="http://developer.qt.nokia.com/forums/viewthread/1806/">тут</a>,  <a href="http://www.leonardorisuleo.info/blog/2009/11/how-to-use-png-as-symbian-application-icon-instead-of-svg/">тут</a> і ще <a href="http://stackoverflow.com/questions/1861382/convert-png-to-svg">ось тут</a>, успіх не гарантується. Конвертування векторного малюнка у растровий &#8212; взагалі досить складна задача.</p>
<p>Дуже мало програм вміють працювати з SVG. Ось вони:</p>
<ul>
<li> <a href="http://www.adobe.com/ru/products/creativesuite/">Adobe Creative Suite</a> &#8212; уміє конвертувати та зберігати у потрібному форматі. Коштує дофіга бабла </li>
<li> <a href="http://inkscape.org/">Inkscape</a> &#8212; опенсорсний. Виглядає підозріло, експортувати у <b>SVG-T не вміє</b>. Крім того, шматочки цієї програми у кращих опенсорсних традиціях існують окремо у вигляді клонів, бібліотек, утиліт командного рядка тощо. </li>
<li><a href="http://mpaja.com/frontpage/SVG_Pony">SVG Pony</a> &#8212; невеличка утилітка, призначена спеціально для створення іконок під Symbian. Уміє все, коштує десять євро</li>
<li>У старих версіях середовищ розробки для Symbian були якісь засоби для конвертування. Але у новій Nokia Qt SDK їх уже немає   </li>
<li> <a href="http://homepage.ntlworld.com/mark.harman/comp_image2svgt.html">Ось</a> ще якась програма, призначена для конвертування. Не пробував. </li>
<li>а ще можна самому все написати у текстовому редакторі. Врешті решт, svg &#8211; це всього лише xml з досить простим синтаксисом. </li>
</ul>
<p>Важливо: ваш svg <b>повинен рендеритися у розмір 44х44</b>. Наприклад там мають бути атрибути <code>width="44px" height="44px"</code> або щось типу того. Інакше можливі <a href="http://wiki.forum.nokia.com/index.php/How_to_create_application_icon%28SVG%29_in_S60_3rd_edition#Tips">невідомі баги</a>.</p>
<p>Крім того, треба пам’ятати, що <b>Symbian кешує іконки</b>, і цей кеш майже не оновлюється. Щоб протестувати нову іконку, вам доведеться: </p>
<ul>
<li>відключити телефон від комп’ютера (не факт що це обов’язково, але &#8230;)</li>
<li> видалити стару версію програми</li>
<li> вимкнути телефон. Батарею можна не виймати</li>
<li> увімкнути телефон і встановити нову версію програми.</li>
</ul>
<p>Якщо іконку для програми не задати, вона буде створена автоматично. Виглядає як шматочок пазлу з квадратиком у нижньому правому кутку. Якщо у svg будуть якісь проблеми (помилки), замість іконки скоріш за все буде пусте місце.</p>
]]></content:encoded>
			<wfw:commentRss>http://whirlwind.in.ua/2010/11/how-to-create-an-icon-for-symbian-application/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://whirlwind.in.ua/2010/11/how-to-create-an-icon-for-symbian-application/</feedburner:origLink></item>
		<item>
		<title>Оновлення flash</title>
		<link>http://feedproxy.google.com/~r/Whirlwind-uk/~3/LiWE7Vj7IgE/</link>
		<comments>http://whirlwind.in.ua/2010/10/%d0%be%d0%bd%d0%be%d0%b2%d0%bb%d0%b5%d0%bd%d0%bd%d1%8f-flash/#comments</comments>
		<pubDate>Fri, 01 Oct 2010 11:54:06 +0000</pubDate>
		<dc:creator>whirlwind</dc:creator>
				<category><![CDATA[Життя]]></category>
		<category><![CDATA[flash]]></category>
		<category><![CDATA[usability]]></category>

		<guid isPermaLink="false">http://whirlwind.in.ua/2010/10/%d0%be%d0%bd%d0%be%d0%b2%d0%bb%d0%b5%d0%bd%d0%bd%d1%8f-flash/</guid>
		<description><![CDATA[Скріншот:

Кнопки намальовані з глюками, слова перенесені чортзна як &#8212; з цим все ще можна примиритися.
Але якого біса там на одній формі кнопка &#8220;Нагадати пізніше&#8221; та чекбокс &#8220;Не нагадувати зовсім&#8221;? I що буде, коли відмітити чекбокс,  а потім вийти з діалогу, натиснувши цю кнопку?
]]></description>
			<content:encoded><![CDATA[<p>Скріншот:</p>
<p><a href="http://tinypic.com?ref=1e12pz" target="_blank"><img src="http://i53.tinypic.com/1e12pz.png" border="0" alt="Image and video hosting by TinyPic"/></a></p>
<p>Кнопки намальовані з глюками, слова перенесені чортзна як &#8212; з цим все ще можна примиритися.</p>
<p>Але якого біса там на одній формі кнопка &#8220;Нагадати пізніше&#8221; та чекбокс &#8220;Не нагадувати зовсім&#8221;? I що буде, коли відмітити чекбокс,  а потім вийти з діалогу, натиснувши цю кнопку?</p>
]]></content:encoded>
			<wfw:commentRss>http://whirlwind.in.ua/2010/10/%d0%be%d0%bd%d0%be%d0%b2%d0%bb%d0%b5%d0%bd%d0%bd%d1%8f-flash/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://whirlwind.in.ua/2010/10/%d0%be%d0%bd%d0%be%d0%b2%d0%bb%d0%b5%d0%bd%d0%bd%d1%8f-flash/</feedburner:origLink></item>
		<item>
		<title>Правило 90:9:1</title>
		<link>http://feedproxy.google.com/~r/Whirlwind-uk/~3/8IFHknUQUAE/</link>
		<comments>http://whirlwind.in.ua/2010/08/rule-90-9-1/#comments</comments>
		<pubDate>Fri, 20 Aug 2010 06:57:03 +0000</pubDate>
		<dc:creator>whirlwind</dc:creator>
				<category><![CDATA[Життя]]></category>
		<category><![CDATA[інтернет]]></category>

		<guid isPermaLink="false">http://whirlwind.in.ua/?p=298</guid>
		<description><![CDATA[Резервний кроспост з розробки
Правило одного проценту, також відоме, як &#8220;принцип 90-9-1&#8220;, стверджує, що всі користувачі інтернету діляться на три групи:

90% &#8212; споживачі контенту
9% &#8212; люди, що коментують та редагують контент
і лише 1% &#8212; люди, які ствоюють новий контент


Важливий практичний висновок з правила полягає в тому, що для формування в інтернеті іміджу для того чи іншого [...]]]></description>
			<content:encoded><![CDATA[<p><em>Резервний кроспост з <a href="http://www.rozrobka.com/blog/765.html">розробки</a></em></p>
<p>Правило одного проценту, також відоме, як &#8220;принцип <a href="http://www.90-9-1.com/">90-9-1</a>&#8220;, стверджує, що всі користувачі інтернету діляться на три групи:</p>
<ul>
<li>90% &#8212; споживачі контенту</li>
<li>9% &#8212; люди, що коментують та редагують контент</li>
<li>і лише 1% &#8212; люди, які ствоюють новий контент</li>
</ul>
<p><img align="center" alt=" " src="http://www.communityguy.com/Image/pyramid.png" /></p>
<p>Важливий практичний висновок з правила полягає в тому, що для формування в інтернеті іміджу для того чи іншого бренду досить <s>заплатити бабла</s>зацікавити невелику групу активних людей. Саме так, наприклад, зробив Samsung, <a href="http://www.wired.co.uk/news/archive/2010-07/23/samsung-galaxy-s-iphone">запропонувавши</a> британським блогерам поміняти айфони на смартфони Galaxy S.<br />
<span id="more-298"></span><br />
Також не слід забувати, що принцип діє і в протилежну сторону. Якщо вам хочеться оцінити ставлення людей до якогось проекту/явища, не слід довіряти окремим публікаціям чи коментарям &#8212; вони представляють лише 1% можливої аудиторії.</p>
<p>Насправді, 90-9-1 &#8212; досить умовні цифри. Вони походять з досліджень часів Usenet; очевидно, що з тих часів все неодноразово змінювалось.</p>
<p>Розподіл 1:100 дуже чітко підтверджується статистикою Вікіпедії. У проекті  <a href="http://en.wikipedia.org/wiki/Special:Statistics">135 тисяч</a>  активних користувачів (таких, які виконали хоч одну правку за місяць), при цьому за день проект отримує <a href="http://wikistics.falsikon.de/latest/wikipedia/en/">15 мільонів</a>  відвідувачів. </p>
<p><a href="http://www.useit.com/alertbox/participation_inequality.html">Стверджується</a>, що в 2005-2006 роках налічувалось <a href="http://www.useit.com/alertbox/internet_growth.html">1.1 більйон</a>  користувачів інтернету; лише <a href="http://www.sifry.com/alerts/archives/000436.html">5% вели блоги</a>, і лише 0.1% створювали новий допис кожного дня. Таким чином, правило виглядало як 95-5-0.1. З поширенням <i>Web 2.0</i> ситуація <a href="http://magia3e.wordpress.com/2009/08/20/1990-of-social-media-truism-or-fallacy/">змінилась</a> : лише 63% австралійців були пасивними користувачами, натомість 45% мають як мінімум профіль у соціальних мережах і 16% беруть участь в обговореннях.</p>
<p>Ще трохи інформації за темою:</p>
<ul>
<li><a href="http://en.wikipedia.org/wiki/90-9-1_principle">стаття</a>  у Вікіпедії</li>
<li>критичний <a href="http://www.feverbee.com/2009/08/9091.html">допис </a> </li>
<li><a href="http://lithosphere.lithium.com/t5/Building-Community-the-Platform/The-90-9-1-Rule-in-Reality/ba-p/5463">дослідження</a>  користувачів якоїсь CMS.  
	</li>
<li><a href="http://www.washingtonpost.com/wp-dyn/content/article/2009/04/21/AR2009042103786.html">історія</a> про збирання грошей на благодійність у Facebook</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://whirlwind.in.ua/2010/08/rule-90-9-1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://whirlwind.in.ua/2010/08/rule-90-9-1/</feedburner:origLink></item>
		<item>
		<title>Курс лекцій по Qt</title>
		<link>http://feedproxy.google.com/~r/Whirlwind-uk/~3/z-1devnzMZ0/</link>
		<comments>http://whirlwind.in.ua/2010/08/lection-qt/#comments</comments>
		<pubDate>Tue, 17 Aug 2010 19:39:13 +0000</pubDate>
		<dc:creator>whirlwind</dc:creator>
				<category><![CDATA[C/C++]]></category>
		<category><![CDATA[програмування]]></category>
		<category><![CDATA[nokia]]></category>
		<category><![CDATA[QT]]></category>

		<guid isPermaLink="false">http://whirlwind.in.ua/2010/08/%d0%ba%d1%83%d1%80%d1%81-%d0%bb%d0%b5%d0%ba%d1%86%d1%96%d0%b9-%d0%bf%d0%be-qt/</guid>
		<description><![CDATA[
На сайті Qt викладено курс лекцій, присвячений цьому чудовому фреймворку. Всього заплановано десять лекцій, наразі готові лише чотири:

Основні поняття Qt, демонстрація роботи з бібліотекою
Об&#8217;єктна модель Qt, поняття сигналів та слотів
Віджети та лейаути 
	
Типи даних та файлів 
	

До кожної теми підготовано набір слайдів, приблизний текст лекції та приклади. І ще є щось типу завдання на лабораторну [...]]]></description>
			<content:encoded><![CDATA[<p><img align="right" alt=" " src="http://qt.nokia.com/images/learning/qt-in-education/granholt26.05.201013.45.55.png" /><br />
На сайті Qt викладено <a href="http://qt.nokia.com/services-partners/qt-in-education/qt-in-education-course-material">курс лекцій</a>, присвячений цьому чудовому фреймворку. Всього заплановано десять лекцій, наразі готові лише чотири:</p>
<ul>
<li>Основні поняття Qt, демонстрація роботи з бібліотекою</li>
<li>Об&#8217;єктна модель Qt, поняття сигналів та слотів</li>
<li>Віджети та лейаути 
	</li>
<li>Типи даних та файлів 
	</li>
</ul>
<p>До кожної теми підготовано набір слайдів, приблизний текст лекції та приклади. І ще є щось типу завдання на лабораторну роботу. </p>
<p>Все англійською мовою, звісно.</p>
]]></content:encoded>
			<wfw:commentRss>http://whirlwind.in.ua/2010/08/lection-qt/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://whirlwind.in.ua/2010/08/lection-qt/</feedburner:origLink></item>
		<item>
		<title>Безкоштовні малюнки</title>
		<link>http://feedproxy.google.com/~r/Whirlwind-uk/~3/Kcptn1gqwQ0/</link>
		<comments>http://whirlwind.in.ua/2010/05/free-icons/#comments</comments>
		<pubDate>Thu, 27 May 2010 19:17:23 +0000</pubDate>
		<dc:creator>whirlwind</dc:creator>
				<category><![CDATA[Життя]]></category>
		<category><![CDATA[free]]></category>
		<category><![CDATA[iconza]]></category>

		<guid isPermaLink="false">http://whirlwind.in.ua/?p=293</guid>
		<description><![CDATA[Я раніше думав, що Іконза &#8212; найкраще джерело іконок для програм. Аж поки нещодавно не потрапив сюди: http://icons.mysitemyway.com/ . Там величезні набори безкоштовних іконок. Буквально по кілька сотень штук &#8212; знайдеться усе, чого душа побажає. І до того ж самі набори стандартні. Приклад: раз і два
Ще один сайт з іконками , не такий багатий, але [...]]]></description>
			<content:encoded><![CDATA[<p>Я раніше думав, що <a href="http://iconza.ru/">Іконза</a> &#8212; найкраще джерело іконок для програм. Аж поки нещодавно не потрапив сюди: http://icons.mysitemyway.com/ . Там величезні набори безкоштовних іконок. Буквально по кілька сотень штук &#8212; знайдеться усе, чого душа побажає. І до того ж самі набори стандартні. Приклад: <a href="http://icons.mysitemyway.com/magic-marker-icons-sports-hobbies/">раз</a> і <a href="http://icons.mysitemyway.com/amber-glossy-chrome-icons-sports-hobbies/">два</a></p>
<p>Ще один <a href="http://www.iconspedia.com/">сайт з іконками</a> , не такий багатий, але там є пошук. І ще один, для любителів svg: http://www.openclipart.org/</p>
<p>І ще пара сайтів с текстурами:<br />
 &#8211; <a href="http://www.texturelovers.com/">тут</a> просто якісні малюнки<br />
 &#8211; а <a href="http://www.spiralgraphics.biz/packs/terrain_desert_barren/index.htm">тут</a> надзвичайно багато малюнків, які можна викладати плиткою </p>
<p>На завершення &#8212; невеличкий приклад, щоб порівняти зручність та багатство різних ресурсів. Треба було мені тут знайти зображення пісочного годинника (hourglass). Порівняйте результати:<br />
&#8211; хвалений <a href="http://browse.deviantart.com/?qh=&#038;section=&#038;q=hourglass">deviantart</a> видає купу всякого непотребу<br />
&#8211; <a href="http://www.iconspedia.com/search/hourglass/">iconspedia</a> трохи краще<br />
&#8211; найкращий результат у <a href="http://www.openclipart.org/search/?query=hourglass">openclipart.org</a></p>
]]></content:encoded>
			<wfw:commentRss>http://whirlwind.in.ua/2010/05/free-icons/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://whirlwind.in.ua/2010/05/free-icons/</feedburner:origLink></item>
		<item>
		<title>Типу гумор</title>
		<link>http://feedproxy.google.com/~r/Whirlwind-uk/~3/fjXAthFK4j0/</link>
		<comments>http://whirlwind.in.ua/2010/04/%d1%82%d0%b8%d0%bf%d1%83-%d0%b3%d1%83%d0%bc%d0%be%d1%80/#comments</comments>
		<pubDate>Thu, 22 Apr 2010 18:26:20 +0000</pubDate>
		<dc:creator>whirlwind</dc:creator>
				<category><![CDATA[Життя]]></category>
		<category><![CDATA[гумор]]></category>

		<guid isPermaLink="false">http://whirlwind.in.ua/2010/04/%d1%82%d0%b8%d0%bf%d1%83-%d0%b3%d1%83%d0%bc%d0%be%d1%80/</guid>
		<description><![CDATA[
Це Київ, метро &#8220;Майдан Незалежності&#8221;.
Хоча, варто зазначити, що у себе на сайті вони слово embedded пишуть правильно

]]></description>
			<content:encoded><![CDATA[<p><img src="http://whirlwind.in.ua/images/gl_board.png"/></p>
<p>Це Київ, метро &#8220;Майдан Незалежності&#8221;.</p>
<p>Хоча, варто зазначити, що у себе на сайті вони слово <b>embedded</b> пишуть правильно</p>
<p><img src="http://whirlwind.in.ua/images/gl_banner.png"/></p>
]]></content:encoded>
			<wfw:commentRss>http://whirlwind.in.ua/2010/04/%d1%82%d0%b8%d0%bf%d1%83-%d0%b3%d1%83%d0%bc%d0%be%d1%80/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://whirlwind.in.ua/2010/04/%d1%82%d0%b8%d0%bf%d1%83-%d0%b3%d1%83%d0%bc%d0%be%d1%80/</feedburner:origLink></item>
		<item>
		<title>Відкритий лист FSF до Google</title>
		<link>http://feedproxy.google.com/~r/Whirlwind-uk/~3/sff5FakHAPU/</link>
		<comments>http://whirlwind.in.ua/2010/02/fsf-to-google/#comments</comments>
		<pubDate>Sun, 28 Feb 2010 11:27:17 +0000</pubDate>
		<dc:creator>whirlwind</dc:creator>
				<category><![CDATA[Життя]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[YouTube]]></category>

		<guid isPermaLink="false">http://whirlwind.in.ua/?p=287</guid>
		<description><![CDATA[Дорогий Google,
Після придбання On2 під вашим контролем опинилися найбільший в світі відеосайт(YouTube) та всі патенти, що стосуються нового високопродуктивного відеокодека &#8211; VP8. Задумайтесь, скільки всього можна було б досягти, якби випустити кодек VP8 під відкритою royalty-free ліцензією, і одночасно почати використовувати його на YouTube? Це могло б покласти кінець залежності вебу від закритого патентами пропрієтарного [...]]]></description>
			<content:encoded><![CDATA[<p>Дорогий Google,</p>
<p>Після придбання On2 під вашим контролем опинилися найбільший в світі відеосайт(YouTube) та всі патенти, що стосуються нового високопродуктивного відеокодека &#8211; VP8. Задумайтесь, скільки всього можна було б досягти, якби випустити кодек VP8 під відкритою royalty-free ліцензією, і одночасно почати використовувати його на YouTube? Це могло б покласти кінець залежності вебу від закритого патентами пропрієтарного програмного забезпечення(Flash).</p>
<p>Для вільного світу було б непогано, якби ви не поводились з цією технологією як собака на сіні, хай навіть це й могло б принести вам якісь короткострокові вигоди. Звільнення VP8 без нав’язування його користувачам YouTube &#8211; це просто втрата можливості та удар по вільним браузерам, таким як Firefox. Закликаємо вас вчинити правильно. Звільніть VP8 та почніть використовувати його на YouTube!</p>
<p><strong>Блискучі перспективи</strong></p>
<p>Світ отримав би новий вільний формат, без усяких патентів. Глядачі, редактори відео, розробники програм та пристроїв, коротше, абсолютно усі, змогли б вільно створювати і розповсюджувати відео без усяких патентів, виплат та заборон. Наявний на сьогодні відеоформат Ogg Theora може забезпечити пристойну якість відео, таку ж саму, як і його пропрієтарний аналог H.264 (див. порівняння), і ми не відмовляємось від своїх рекомендацій щодо нього. Однак, раз уж ви придбали VP8, який покриває усі наші потреби, то їжаку зрозуміло, що його таки слід використовувати на YouTube.</p>
<p>У вас є нагода зробити вільний формат глобальним стандартом. YouTube &#8211; найбільший відеосайт; імовірно, там можна знайти будь-який відеоролик, який колись було зроблено. Навіть якщо YouTube запропонує цей кодек як опцію, це вже дозволить залучити до розробки більшу частину виробників пристроїв та програм.</p>
<p>Але <em>пропонування</em> вільного формату &#8211; це лише мала частина ваших можливостей. Насправді, ви могли б стимулювати користувачів використовувати вільні формати. Для цього є багато способів. Найкраще для нас було б, аби ви почали використовувати вільні формати та HTML замість Flash, пропонуючи користувачам застарілих браузерів плагіни (звісно, це має бути вільне ПЗ). Apple відмовляється від використання Flash у iPhone та iPad (хоча, за неприйнятними для нас мотивами(DRM)), і це змушує веб-девелоперів робити безфлешові альтернативи своїх сайтів. Ви можете так само вчинити з YouTube, і це стане останнім цвяхом у труну Flash.</p>
<p>Та навіть не скромніші дії теж можуть принести значну користь. Можна було б зацікавити користувачів, видаючи відео високої якості у вільних форматах. Або агресивно пропонувати користувачам оновити браузер (замість того, щоб оновлювати Flash). Такі кроки дозволили б швидко збільшити частину браузерів, що підтримують вільні формати. Вона б досягла 50%, і, крім, того, ще б зросла кількість людей, які ніколи не встановлюють собі Flash.</p>
<p>Якщо ви дійсно підтримуєте вільне програмне забезпечення та вільний веб (рух, якому, зокрема, і ви завдячуєте своїм успіхом) ви маєте щось зробити, щоб замінити Flash його вільними аналогами. Патентовані відеокодеки вже нанесли невимовної шкоди вебу та його користувачам, це продовжуватиметься. Патентні програми ускладнюють релізацю їх підтримки у браузерах, тому роздутий та недолугий пропрієтарний формат (Flash) став де-факто стандартом. Допоки ми не перейдемо на вільні формати, загроза патентного судового переслідування та ліцензійних виплат висітиме над кожним виробником ПЗ, творцем відео, розробниками фреймворків та корпоративними користувачами &#8211; і над вами теж.</p>
<p>Ви можете використовувати придбання On2 для розв’язання своїх власних проблем, але це буде стратегічною помилкою. Без звільнення VP8 так і залишиться просто ще одним відеокодеком. А яка користь від використання ще одного патентованого кодеку у браузері? Віддати його усім &#8211; ось що вирішить проблему. Ряд організацій, як Xiph, Mozilla, Wikimedia, FSF, та навіть і On2, вже оцінили необхідність вільних патентів і багато чого зробили для їх розвитку. Тепер черга за вами. А якщо ви так не зробите, то ми знатимемо, що ваша мета &#8211; аж ніяк не свобода користувачів, а просто домінування Google усюди.</p>
<p>Закликаємо вас вчинити правильно. Звільніть VP8 та запровадьте його на YouTube!</p>
<p><a href="http://www.fsf.org/blogs/community/google-free-on2-vp8-for-youtube">Оригінал</a></p>
]]></content:encoded>
			<wfw:commentRss>http://whirlwind.in.ua/2010/02/fsf-to-google/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://whirlwind.in.ua/2010/02/fsf-to-google/</feedburner:origLink></item>
	</channel>
</rss>

