<?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>.wpal &#187; перевод</title>
	<atom:link href="http://blog.web2.com.ua/category/perevod/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.web2.com.ua</link>
	<description>web, programming and linux</description>
	<lastBuildDate>Fri, 20 May 2011 13:29:04 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.2</generator>
		<item>
		<title>Перевод: 25 возможностей, подсказок и техник HTML5 которые вы должны знать</title>
		<link>http://blog.web2.com.ua/2010/10/22/perevod-25-vozmozhnostej-podskazok-i-texnik-html5-kotorye-vy-dolzhny-znat/</link>
		<comments>http://blog.web2.com.ua/2010/10/22/perevod-25-vozmozhnostej-podskazok-i-texnik-html5-kotorye-vy-dolzhny-znat/#comments</comments>
		<pubDate>Fri, 22 Oct 2010 07:54:58 +0000</pubDate>
		<dc:creator>wert2all</dc:creator>
				<category><![CDATA[javascript]]></category>
		<category><![CDATA[web]]></category>
		<category><![CDATA[верстка]]></category>
		<category><![CDATA[перевод]]></category>
		<category><![CDATA[html5]]></category>
		<category><![CDATA[tips]]></category>
		<category><![CDATA[translate]]></category>

		<guid isPermaLink="false">http://blog.web2.com.ua/?p=997</guid>
		<description><![CDATA[Перевод статьи &#8220;28 HTML5 Features, Tips, and Techniques you Must Know&#8220;. Это индустрия движется быстро, очень быстро! Если вы будете не внимательны, то останетесь не у дел. Итак, если вы слегка оконфужены предстоящими изменениями в HTML5, то эта статья может стать основой для вещей, которые вы должны знать. 1. Новый Doctype Всё ещё используете этот [...]]]></description>
			<content:encoded><![CDATA[<p>Перевод статьи &#8220;<a href="http://net.tutsplus.com/tutorials/html-css-techniques/25-html5-features-tips-and-techniques-you-must-know/" target="_blank">28 HTML5 Features, Tips, and Techniques you Must Know</a>&#8220;.</p>
<p>Это индустрия движется быстро, очень быстро! Если вы будете не внимательны, то останетесь не у дел. Итак, если вы слегка оконфужены предстоящими изменениями в HTML5, то эта статья может стать основой для вещей, которые вы должны знать.<span id="more-997"></span></p>
<h2>1. Новый Doctype</h2>
<p>Всё ещё используете этот надоедливый, не запоминаемый XHTML doctype?</p>
<pre>&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;</pre>
<p>Если это так, то почему? Переходите на новый HTML5 doctype. Вы будете жить долго , как бы сказал Douglas Quaid.</p>
<pre>&lt;!DOCTYPE html&gt;</pre>
<p>На самом деле, Вы знаете, что это даже не столь важно для HTML5? Тем не менее, он используется в текущих и старых браузерах, которые требуют указания <code>doctype</code>. Браузеры, которые не понимают этот doctype будут просто прорисовывать содержание разметки в стандартном режиме. По этому, не стоит беспокоится, а просто принять новый doctype.</p>
<h2>2. Елемент Figure</h2>
<p>Рассмотрим разметку для рисунка:</p>
<pre>&lt;img src="path/to/image" alt="About image" /&gt;
&lt;p&gt;Image of Mars. &lt;/p&gt;</pre>
<p>К сожалению, нет легкого и семантического пути для указания подписи к рисунку, которая завёрнута в тэг &lt;p&gt;. В HTML5 это исправлено с помощью элемента <code>&lt;figure&gt;</code>. В сочетании с тэгом <code>&lt;figcaption&gt;</code>, мы можем семантически ассоциировать подписи соответственным рисункам.</p>
<pre>&lt;figure&gt;
        &lt;img src="path/to/image" alt="About image" /&gt;
        &lt;figcaption&gt;
                &lt;p&gt;This is an image of something interesting. &lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;</pre>
<h2>3. &lt;small&gt; переопределен</h2>
<p>Не так давно я использовал <code>&lt;small&gt;</code> для создания подзаголовков, которые тесно связаны с логотипом. Это полезный презентационный элемент; тем не менее, теперь это будет не корректным использованием. Элемент <code>small</code> был переопределён, отныне более уместен он для указания мелкого шрифта. Более корректно, согласно новому определению HTML5, его использовать для обрамления информации о авторских правах в футтере вашего сайта.</p>
<blockquote><p>Элемент <code>small</code> теперь означает «маленький шрифт».</p></blockquote>
<h2>4. Никаких <code>Type</code> для Script и Link</h2>
<p>Вы, возможно, всё ещё добавляете атрибут <code>type</code> к тэгам <code>link</code> и <code>script</code>.</p>
<pre>&lt;link rel="stylesheet" href="path/to/stylesheet.css" type="text/css" /&gt;
&lt;script type="text/javascript" src="path/to/script.js"&gt;&lt;/script&gt;</pre>
<p>Теперь это не требуется. Теперь подразумевается, что оба этих тэга ссылаются на CSS и скрипты соответственно. Таким образом, можно удалить атрибут <code>type</code>.</p>
<pre>&lt;link rel="stylesheet" href="path/to/stylesheet.css" /&gt;
&lt;script src="path/to/script.js"&gt;&lt;/script&gt;</pre>
<h2>5. To Quote or Not to Quote</h2>
<p>…Вот в чём вопрос. Помните же, что HTML5 не XHTML. Вы не должны оборачивать ваши атрибуты в кавычки, если вы это не хотите. Вы можете не закрывать тэги. Что уж говорить, нет ничего плохого в этом, коль вам так комфортнее. Как по мне, то это хорошо.</p>
<pre>&lt;p id=someId&gt; Start the reactor.</pre>
<p>Можете думать иначе. Если вы предпочитаете более структурированные документы, то можете лепить эти кавычки.</p>
<h2>6. Делайте Ваш контент редактируемым</h2>
<p style="text-align: center;"><a href="http://blog.web2.com.ua/wp-content/uploads/contenteditable.png"><img class="size-full wp-image-998 aligncenter" title="contenteditable" src="http://blog.web2.com.ua/wp-content/uploads/contenteditable.png" alt="" width="254" height="149" /></a></p>
<p>Новые браузеры поддерживают модный новый атрибут элементов <code>contenteditable</code>. Как говорит его название, он позволяет редактировать пользователем текст внутри его, включая и дочерние элементы. Это можно использовать в многих целях, включая приложение, столь простое, как список дел, которое к тому же может использовать локальное хранилище.</p>
<pre>&lt;!DOCTYPE html&gt;

&lt;html lang="en"&gt;
&lt;head&gt;
        &lt;meta charset="utf-8"&gt;
        &lt;title&gt;untitled&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;
        &lt;h2&gt; To-Do List &lt;/h2&gt;
     &lt;ul contenteditable="true"&gt;
                &lt;li&gt; Break mechanical cab driver. &lt;/li&gt;
                &lt;li&gt; Drive to abandoned factory
                &lt;li&gt; Watch video of self &lt;/li&gt;
         &lt;/ul&gt;
&lt;/body&gt;
&lt;/html&gt;</pre>
<p>Или, как мы уже знаем с предыдущей подсказки, мы можем написать так:</p>
<pre>&lt;ul contenteditable=true&gt;</pre>
<h2>7. Email Inputs</h2>
<p>Если указать в атрибуте <code>type</code> значение  “email” в поле формы, мы укажем браузеру, что значение поля может быть только правильным адресом электронной почты. Всё правильно: скоро будет встроенная валидация форм! Мы не можем полагаться на это на все 100% по понятным причинам. Старые браузеры не понимают тип «email» и будут воспринимать его как простой текст.</p>
<pre>&lt;!DOCTYPE html&gt;

&lt;html lang="en"&gt;
&lt;head&gt;
        &lt;meta charset="utf-8"&gt;
        &lt;title&gt;untitled&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;
        &lt;form action="" method="get"&gt;
                &lt;label for="email"&gt;Email:&lt;/label&gt;
                &lt;input id="email" name="email" type="email" /&gt;

                &lt;button type="submit"&gt; Submit Form &lt;/button&gt;
        &lt;/form&gt;
&lt;/body&gt;
&lt;/html&gt;</pre>
<p style="text-align: center;"><a href="http://blog.web2.com.ua/wp-content/uploads/email_validation.png"><img class="size-full wp-image-999 aligncenter" title="email_validation" src="http://blog.web2.com.ua/wp-content/uploads/email_validation.png" alt="" width="346" height="73" /></a></p>
<p>Следует упомянуть, что текущие браузеры слегка ненадёжны, когда дело доходит до того, какие элементы и атрибуты они поддерживают, а какие &#8211; нет. Например, Opera кажется поддерживает валидацию email только когда указан атрибут <code>name</code>. Тем не менее, она не поддерживает атрибут <code>placeholder</code>, который мы рассмотрим в следующей главе. Резюмируя: не стоит зависеть от этой валидации форм пока&#8230; Но можно использовать!</p>
<h2>8. Placeholder`ы</h2>
<p>Раньше мы должны были использовать JavaScript для создания placeholder`ов в текстовых полях. Конечно, мы можем просто инициализировать атрибут <code>value</code> как мы бы хотели, но потом, когда пользователь сотрёт этот текст и кликнет за границей поля, оно останется пустым. Атрибут <code>placeholder</code> исправляет положение.</p>
<pre>&lt;input name="email" type="email" placeholder="doug@givethesepeopleair.com" /&gt;</pre>
<p>Опять же, поддержка атрибута сомнительна в лучших браузерах, однако, это будет исправляться от релиза к релизу. По этому, если браузеры, такие как Firefox и Opera, сейчас не поддерживают <code>placeholder</code>, не стоит переживать по этому поводу.</p>
<p><a href="http://blog.web2.com.ua/wp-content/uploads/validation.png"><img class="size-full wp-image-1000 aligncenter" title="validation" src="http://blog.web2.com.ua/wp-content/uploads/validation.png" alt="" width="400" height="400" /></a></p>
<h2>9. Локальное хранилище</h2>
<p>Благодаря локальному хранилищу (официально ещё не HTML5, но сгруппировано для удобства), мы можем заставить продвинутые браузеры «вспомнить», что мы собирали даже когда браузер был закрыт или обновлена страница.<br />
<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="480" height="385" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube.com/v/h0uZIljjElo?fs=1&amp;hl=ru_RU&amp;rel=0" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="480" height="385" src="http://www.youtube.com/v/h0uZIljjElo?fs=1&amp;hl=ru_RU&amp;rel=0" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<blockquote><p>“localStorage устанавливает поля для домена. Даже когда вы закроете ваш браузер, откроете и вернётесь на тот сайт, браузер вспомнит поля с localStorage.”<br />
-<a href="http://www.quirksmode.org/blog/archives/2009/06/html5_storage_t.html">QuirksBlog</a></p></blockquote>
<p>Пока, очевидно, это не поддерживается всеми браузерами, но можно ожидать, что, скоре всего, поддержка появится в Internet Explorer 8, Safari 4 и Firefox 3.5. Отметим, что старые браузеры могут не поддерживать локальное хранилище, поэтому следует проверить на существование window.localStorage.</p>
<p style="text-align: center;"><a href="http://blog.web2.com.ua/wp-content/uploads/20100409-cp7baa12xdc53tmuytg4kaqqe6.jpg"></a><a href="http://blog.web2.com.ua/wp-content/uploads/20100409-cp7baa12xdc53tmuytg4kaqqe6.jpg"><img class="alignnone size-medium wp-image-1001" title="20100409-cp7baa12xdc53tmuytg4kaqqe6" src="http://blog.web2.com.ua/wp-content/uploads/20100409-cp7baa12xdc53tmuytg4kaqqe6-400x82.jpg" alt="" width="400" height="82" /></a></p>
<h2>10. Семантические <code>Header</code> и <code>Footer</code></h2>
<p>В прошлом те дни, когда:</p>
<pre>&lt;div id="header"&gt;
        ...
&lt;/div&gt;

&lt;div id="footer"&gt;
        ...
&lt;/div&gt;</pre>
<p>Тэг div по своей природе, не имеет семантической составляющей — даже когда присуствует аттрибут <code>id</code>. Теперь в HTML5 есть возможность использовать <code>&lt;header&gt;</code> и <code>&lt;footer&gt;</code> елементы. Теперь структура, которая представлена выше, можно заменить на :</p>
<pre>&lt;header&gt;
        ...
&lt;/header&gt;

&lt;footer&gt;
        ...
&lt;/footer&gt;</pre>
<blockquote><p>Это также позволяет иметь несколько елементов <code>header</code> и <code>footer</code> в ваших проектах.</p></blockquote>
<p>Постарайтесь не путать эти  элементы с “header-ом” and “footer-ом” вашего сайта. Они просто ссылаются на своё содержимое. Например, его можно использовать для вывода мета-информации в посте блога. Это применимо и для  <code>header</code>.</p>
<h2>11. Больше возможностей с формами HTML5</h2>
<p>Давайте узнаем о полезных возможностях форм HTML5 с помощью этого короткого видео-урока.<br />
<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="640" height="385" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube.com/v/spjOAFGxOP0?fs=1&amp;hl=ru_RU&amp;rel=0" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="640" height="385" src="http://www.youtube.com/v/spjOAFGxOP0?fs=1&amp;hl=ru_RU&amp;rel=0" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<h2>12. Internet Explorer и HTML5</h2>
<p>К сожалению, этот чёртов Internet Explorer  требует немного костылей, дабы заставить его понимать новые HTML5 элементы.</p>
<blockquote><p>Все элементы, по-умолчанию, имеют свойство <code>display</code><code>:</code><code>inline</code>.</p></blockquote>
<p>В целях обеспечения правильного отображения новых элементов HTML5 как блочных, следует указать такой стиль:</p>
<pre>header, footer, article, section, nav, menu, hgroup {
   display: block;
}</pre>
<p>К сожелению, Internet Explorer будет продолжать игнорировать эти стили, потому что не имеет понятия, что это, как элемент <code>header</code> например. К счастью, это легко исправить:</p>
<pre>document.createElement("article");
document.createElement("footer");
document.createElement("header");
document.createElement("hgroup");
document.createElement("nav");
document.createElement("menu");</pre>
<p>Как ни странно, но код как будто выстреливает в Internet Explorer. Чтобы упростить этот процесс, Remy Sharp <a href="http://remysharp.com/2009/01/07/html5-enabling-script/">создал скрипт</a>, как правило, называющийся «костылём» для HTML5. Он исправляет и некоторые проблемы с печатью.</p>
<pre>&lt;!--[if IE]&gt;
&lt;script src="http://html5shim.googlecode.com/svn/trunk/html5.js"&gt;&lt;/script&gt;
&lt;![endif]--&gt;</pre>
<h2>13. hgroup</h2>
<p>Представте, что в шапке ( header ) моего сайта есть название моего сайта, сразу под заголовком. По этому я могу использовать тэги <code>&lt;h1&gt;</code> и <code>&lt;h2&gt;</code>, соответственно, создать разметку, которая бы легко семантически указывала на их отношения. Кроме того, использование тэгов h2  принесёт много проблем, с точки зрения иерархии, когда дело дойдёт до отображения их в других частях сайта. Использовав элемент <code>hgroup,</code> можно группировать эти заголовки вместе, не переживая за схему документа.</p>
<pre>&lt;header&gt;
        &lt;hgroup&gt;
                &lt;h1&gt; Recall Fan Page &lt;/h1&gt;
                &lt;h2&gt; Only for people who want the memory of a lifetime. &lt;/h2&gt;
        &lt;/hgroup&gt;
&lt;/header&gt;</pre>
<h2>14.  Атрибут required</h2>
<p>Формы имеют новый атрибут <code>required</code>, который, разумеется, указывает, что данное поле ввода input обязательное. В зависимости от вашего стиля кодирования, этот атрибут вы можете описать одним с двух способов:</p>
<pre>&lt;input type="text" name="someInput" required&gt;</pre>
<p>Или более структурированным методом.</p>
<pre>&lt;input type="text" name="someInput" required="required"&gt;</pre>
<p>Любой метод будет работать. Благодаря этому коду, в браузерах, которые поддерживают этот атрибут, форма не может быть отправлена, если текстовое поле “someInput” пустое. Ниже простеньки пример; также мы добавили атрибут placeholder так как нет причины этого не делать:</p>
<pre>&lt;form method="post" action=""&gt;
        &lt;label for="someInput"&gt; Your Name: &lt;/label&gt;
        &lt;input type="text" id="someInput" name="someInput" placeholder="Douglas Quaid" required&gt;
        &lt;button type="submit"&gt;Go&lt;/button&gt;
&lt;/form&gt;</pre>
<p style="text-align: center;"><a href="http://blog.web2.com.ua/wp-content/uploads/placeholder_required.png"><img class="size-full wp-image-1008 aligncenter" title="placeholder_required" src="http://blog.web2.com.ua/wp-content/uploads/placeholder_required.png" alt="" width="263" height="41" /></a></p>
<p>Если поле ввода оставить пустым и попробовать отправить форму, то оно подсветится.</p>
<h2>15. Атрибут Autofocus</h2>
<p>Опять же, с приходом HTML5, потребность в JavaScript для решения этой проблемы отпала.   Если определённое текстовое поле должно быть выделенным или с фокусом ввода, можно использовать атрибут <code>autofocus</code>.</p>
<pre>&lt;input type="text" name="someInput" placeholder="Douglas Quaid" required autofocus&gt;</pre>
<p>Хотя я лично предпочитаю более XHTML-ый подход (используя кавычки и т. д.), записывая  <code>"autofocus=autofocus"</code>, но чувствую себя немножечко странно. Таким образом, ми будем придерживаться подхода с использованием одного слова.</p>
<h2>16. Поддержка аудио</h2>
<p>Не надо больше полагаться на сторонние плагины, чтобы играть аудио. В HTML5 предлагается использовать элемент <code>&lt;audio&gt;</code>. Ну, по крайней мере, в конце концов, не надо беспокоится о плагинах. Пока только несколько браузеров поддерживают <code>&lt;audio&gt;</code>. В то же время, хорошая практика использовать некоторые формы обратной совместимости.</p>
<pre>&lt;audio autoplay="autoplay" controls="controls"&gt;
        &lt;source src="file.ogg" /&gt;
        &lt;source src="file.mp3" /&gt;
        &lt;a href="#"&gt;Download file&lt;/a&gt;
&lt;/audio&gt;</pre>
<p>Mozilla и Webkit не полностью ещё готовы, когда заходит речь о поддержке аудио. Firefox хочет видеть файл .ogg, когда как Webkit-браузеры хорошо работают с .mp3. Это значит, по крайней мере сейчас, что вы должны сделать 2 версии аудиофайла.</p>
<p>Когда Safari загружает страницу, то не понимает формат .ogg и пропустит его, и, соответственно, дойдёт до mp3-версии. Прошу заметить, что IE, как всегда, не поддерживает этого и Opera 10 и ниже может работать только с wav-файлами.</p>
<h2>17. Поддержка видео</h2>
<p>Так же, как и <code>&lt;audio&gt;</code> элемент, в HTML5 есть видео! На самом деле, совсем недавно  <a href="http://apiblog.youtube.com/2010/07/new-way-to-embed-youtube-videos.html">YouTube анонсировали  поддержку нового HTML5 видео</a> для брузеров, которые его поддерживают. К сожалению, опять же из-за того, что спецификация HTML5 не указывет кодек для видео, это ложится на плечи браузера. В том время, пока Safari и Internet Explorer 9 поддерживают видео в H.264 формате (который Flash-прееры могут проигрывать), Firefox и  Opera остановились на открытых форматах Theora и Vorbis. Как следствие, для показа видео  HTML5 следует поддерживать оба формата.</p>
<pre>&lt;video controls preload&gt;
        &lt;source src="cohagenPhoneCall.ogv" type="video/ogg; codecs='vorbis, theora'" /&gt;
        &lt;source src="cohagenPhoneCall.mp4" type="video/mp4; 'codecs='avc1.42E01E, mp4a.40.2'" /&gt;
        &lt;p&gt; Your browser is old. &lt;a href="cohagenPhoneCall.mp4"&gt;Download this video instead.&lt;/a&gt; &lt;/p&gt;
&lt;/video&gt;</pre>
<blockquote><p>Chrome корректно отображает видео, кодированное обеими, “ogg” и «mp4»,  форматами.</p></blockquote>
<p>Есть несколько вещей, которые стоит отметить.</p>
<ol>
<li>Мы, технически, можем 	и не указывать атрибут <code>type</code>; 	тем не менее, если он не указан, браузер 	должен выяснить тип сам. Поберегите 	нервы и укажите его сами.</li>
<li>Не все браузеры 	поддерживают элемент video. Под элементом 	<code>source</code> надо указать ссылку 	на закачку или встроить Flash-плеер. Всё 	зависит от вас.</li>
<li>Атрибуты <code>controls</code> и 	<code>preload</code> будут рассмотрены 	в следующих друх главах.</li>
</ol>
<h2>18. Preload видео</h2>
<p>Атрибут <code>preload</code> не совсем то, что вы могли подумать. Хотя,  сначала вы должны решить хотите вы или не хотите, чтобы браузер начинал предварительно загружать видео. Важно это? Пожалуй, если пользователь попал на страницу, которая предназначена для показа видео, вы точно должны заставить браузер предварительно загружать его и сохранить пользователю время. Видео может загружаться предварительно установкой <code>preload="preload"</code>, или просто <code>preload</code>. Я предпочитаю второй вариант — меньше лишнего.</p>
<pre>&lt;video preload&gt;</pre>
<h2>19.  Вывод кнопок управления</h2>
<p>Если  вы внимательно следите за каждой главой этой статьи, вы могли заметить что видео выше в виде простой картинки, без каких либо средств для управления. Чтобы показать их, следует указать атрибут <code>controls</code> в обьекте <code>video</code>.</p>
<pre>&lt;video preload controls&gt;</pre>
<p style="text-align: center;"><a href="http://blog.web2.com.ua/wp-content/uploads/video.jpg"><img class="size-medium wp-image-1009 aligncenter" title="video" src="http://blog.web2.com.ua/wp-content/uploads/video-400x189.jpg" alt="" width="400" height="189" /></a></p>
<p>Заметьте, что каждый браузер по разному их рисует.</p>
<h2>20. Регулярные выражения</h2>
<p>Как часто вы находили в себе  желание быстренько вставить регулярное выражение для проверки значения какого-то текстового поля. Спасибо новому атрибуту <code>pattern</code>, мы можем вставлять регулярные выражения прямо в разметку.</p>
<pre>&lt;form action="" method="post"&gt;
        &lt;label for="username"&gt;Create a Username: &lt;/label&gt;
        &lt;input type="text"
           name="username"
           id="username"
           placeholder="4 &lt;&gt; 10"
           pattern="[A-Za-z]{4,10}"
           autofocus
           required&gt;
        &lt;button type="submit"&gt;Go &lt;/button&gt;
&lt;/form&gt;</pre>
<p>Если вы хоть как-то знакомы с регулярами, вы поймёте этот шаблон: <code>[A-Za-z]{4,10}</code> принимает только буквы в верхнам и нижнем регистре. Эта сторока должна быть минимум 4 символа и максимум 10.</p>
<p>Заметьте, что мы может обьединять эти замечательные выражения!</p>
<h2>21. Определение поддержки атрибутов</h2>
<p>Какой смысл от всех этих атрибутов, когда мы не знаем, поддержывает ли браузер их? Ну, резонный вопрос: но есть несколько способов выяснить это. Мы рассмотрим два. Первый — использовать чудесную библиотеку <a href="http://modernizr.com/">Modernizr</a>. Кроме того, мы можем создавать и анализировать эти елементы, чтобы определить способность браузеров понимать их. Например, в предыдущем примере, если мы хотим определить, может ли браузер реализовать атрибут <code>pattern</code>, может добавить кусок кода на JavaScript:</p>
<pre>alert( 'pattern' in document.createElement('input') ) // boolean;</pre>
<p>По сути, это популярный метод определения совместимости браузеров. Библиотека jQuery использует этот трюк. Выше, мы создали новый обьект <code>input</code> и определили, может ли браузер поддерживать <code>pattern</code>. Если это так, то браузер будет использывать эту функциональность. Иначе — се ля ви ).</p>
<pre>&lt;script&gt;
if (!'pattern' in document.createElement('input') ) {
        // do client/server side validation
}
&lt;/script&gt;</pre>
<p><em>Имейте ввиду, что это зависит от JavaScript!</em></p>
<h2>22. Елемент Mark</h2>
<p>Думайте о <code>&lt;mark&gt;</code> как о маркере. Строка, обрамлённая этим тэгом, должна быть связана с текущим действием пользователя.  Например, если я искал “Open your Mind” в блоге, я мог бы, с помощью некоторого Javascript-а, обернуть строку поиска в тэг <code>&lt;mark&gt;</code>.</p>
<pre>&lt;h3&gt; Search Results &lt;/h3&gt;
&lt;p&gt; They were interrupted, just after Quato said, &lt;mark&gt;"Open your Mind"&lt;/mark&gt;. &lt;/p&gt;</pre>
<h2>23. Когда же использовать &lt;div&gt;</h2>
<p>Некоторые теряются в сомнениях, когда же мы должны использовать обычный и привычный <code>div</code>. Теперь у нас есть <code>header</code>, <code>article</code>, <code>section </code><code>и</code> <code>footer</code>, когда же тогда исползовать …<code>div</code>? Непременно.</p>
<blockquote><p><code>Div </code>следует использовать, когда нет подходящего елемента.</p></blockquote>
<p>Например, если вы обнаружили, что надо обернуть кусок кода для позиционирования, <code>&lt;div&gt;</code> как раз кстати. Тем не менее, если вы собираетесь обернуть новый пост в блог или, возможно, список ссылок в подвале сайта, то следует подумать о <code>&lt;article&gt;</code> и <code>&lt;nav&gt;</code> соотведственно. Это более семантически правильно.</p>
<h2>24. Что уже сейчас использовать</h2>
<p>Рассказывая, что HTML5 <a href="http://blogs.techrepublic.com.com/programming-and-development/?p=718">не будет готов полностью до </a><a href="http://blogs.techrepublic.com.com/programming-and-development/?p=718">2022</a>, многие не используют его, что является большой ошибкой. В самом деле, есть несколько полезностей HTML5, которые можно использовать прямо сейчас! Простой и чистый код — это всегда хорошо. В сегодняшнем видео я покажу несколько примеров.<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="480" height="385" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube.com/v/HzCkSv3s0-k?fs=1&amp;hl=ru_RU&amp;rel=0" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="480" height="385" src="http://www.youtube.com/v/HzCkSv3s0-k?fs=1&amp;hl=ru_RU&amp;rel=0" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<p><!-- p { margin-bottom: 0.21cm; }h2 { margin-bottom: 0.21cm; page-break-after: avoid; }h2.western { font-family: "Times New Roman",serif; font-size: 18pt; font-weight: bold; }h2.cjk { font-family: "Arial"; font-size: 18pt; font-weight: bold; }h2.ctl { font-family: "Arial"; font-size: 18pt; font-weight: bold; }strong { font-weight: bold; } --></p>
<h2>25. Что же не является HTML5</h2>
<p>Люди могут быть прощены за то, что  удивительные JavaScript подходы сгруппированы в всеобъемлющей HTML5. Эй, даже Apple за эту идею! (тоже мне, авторитет. Прим.пер). Для не-разработчиков, кому не всё равно: это лёгкий путь для внедрения web-стандартов. Но для нас важно понять, что такое <strong>не</strong> HTML5.</p>
<ol>
<li><strong>SVG: </strong>Не HTML5. 	Ему, по меньшей мере, лет 5.</li>
<li><strong>CSS3: </strong>Не HTML5. 	Это…CSS.</li>
<li><strong>Client Storage: </strong>Не 	HTML5. Это было в одной связке, но исключено, 	потому что многие переживали, что идея 	становится слишком сложной. Это теперь 	имеет свою собственную спецификацию.</li>
<li><strong>Web Sockets: </strong>Не HTML5. Опять же, 	имеет свою спецификацию.</li>
</ol>
<p>Не смотря на различия, все эти технологии можно сгруппировать в один современный web-стэк. В самом деле, многие с этих спецификаций курируются одними и теми же людьми.</p>
<h2>Заключение</h2>
<p><!-- p { margin-bottom: 0.21cm; } -->Спасибо за прочтение! Мы рассмотрели многое, но всё же это просто вершки от того, что  может HTML5. Надеюсь, этот обзор был вам полезен!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.web2.com.ua/2010/10/22/perevod-25-vozmozhnostej-podskazok-i-texnik-html5-kotorye-vy-dolzhny-znat/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Что нового в PHP 5.3?</title>
		<link>http://blog.web2.com.ua/2009/07/22/chto-novogo-v-php-5-3/</link>
		<comments>http://blog.web2.com.ua/2009/07/22/chto-novogo-v-php-5-3/#comments</comments>
		<pubDate>Wed, 22 Jul 2009 13:22:28 +0000</pubDate>
		<dc:creator>wert2all</dc:creator>
				<category><![CDATA[php]]></category>
		<category><![CDATA[перевод]]></category>
		<category><![CDATA[программирование]]></category>

		<guid isPermaLink="false">http://blog.web2.com.ua/?p=847</guid>
		<description><![CDATA[Так как вышел PHP 5.3, то многие не знают, что же их ждёт в будущем. А приплыло многое. Вот по этому и перевёл статью с sitepoint.com. Кому не нравится перевод или нашли ошибку, то добро пожаловать на вики, где каждый может внести поправку в перевод. Что нового в PHP 5.3? By Ben Balbo PHP шестой [...]]]></description>
			<content:encoded><![CDATA[<p><em>Так как вышел PHP 5.3, то многие не знают, что же их ждёт в будущем. А приплыло многое. Вот по этому и перевёл <a href="http://www.sitepoint.com/print/whats-new-php-5-3/">статью</a> с sitepoint.com.</em></p>
<p><em>Кому не нравится перевод или нашли ошибку, то добро пожаловать на <a href="http://wpal.wikispaces.com/Whats+new+PHP+5.3+--+%D0%A7%D1%82%D0%BE+%D0%BD%D0%BE%D0%B2%D0%BE%D0%B3%D0%BE+%D0%B2+PHP+5.3%3F" target="_blank">вики</a>, где каждый может внести поправку в перевод.</em><span id="more-847"></span></p>
<h1>Что нового в PHP 5.3?</h1>
<h4>By <a href="http://www.sitepoint.com/articlelist/496">Ben Balbo</a></h4>
<p><strong>PHP шестой версии уже не за горами, но для нетерпеливых разработчиков, есть хорошая новость — много возможностей, которые планировались в PHP 6, были портированы в PHP 5.3, финальный релиз которого планируется в первой половине этого года (прим. переводчика: не так то оно случилось, только вот недавно вышел <img src='http://blog.web2.com.ua/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  ).</strong></p>
<p>Эта новость, возможно, также будет хорошо воспринята теми, кто хотел бы воспользоваться новыми возможностями, но хостинг-провайдеры некоторое время не будут обновлять PHP до версии 6 — хостинг-провайдеры обычно оттягивают серьезные обновления версий программ пока выполняется их тестирование ( читать как: пока стабильность сначала не будет проверена где-нибудь в другом месте). Множество хостеров, возможно, отсрочат обновление своих услуг до версии 6.1. А маленькие обновления с 5.2.x до 5.3, возможно, будут маленьким препятствием для большинства хостинг компаний.</p>
<p>Эта статья показывает новые возможности , приводит примеры их возможного использования и предусматривает демонстрационный код чтобы вы поняли и работали с минимум суеты. Здесь не описывается как установить PHP 5.3 — последний возможный <a href="http://snaps.php.net/">релиз</a> [2] для разработчиков . Если вам хочется попробовать код с этой статьи, вы должны установить PHP 5.3, когда <a href="http://www.sitepoint.com/examples/php5/PHPdemos.zip">скачаете архив исходных кодов</a> [3]. <a href="http://phpmelb.org/index.php?option=com_content&amp;view=article&amp;id=69&amp;Itemid=1">Статью о установке PHP 5.3</a> [4] вы можете найти на сайте Melbourne PHP Users Group.</p>
<h2>Пространства имён</h2>
<p>Перед тем, как PHP стал объектно-ориентированным, многие разработчики приложений используют многословные имена функций для того, чтобы избежать повторений имён. Например, в WordPress используются имена функций wp_update_post и wp_create_user. Префикс wp_ означает, что функция относится к WordPress и снижает шанс столкновений имён с существующими функциями.</p>
<p>В объектно-ориентированном мире столкновение имён попадается редко. Рассмотрим следующий пример кода, который базируется в фиктивном движке для блогинга:</p>
<pre><code>&lt;?php
class User {
  public function set( $attribute, $value ) {
    ...
  }
  public function save() {
    ...
  }
}

$user = new User();
$user-&gt;set('fullname', 'Ben Balbo');
$user-&gt;save();</code></pre>
<p>В примере, метод save() не совпадает ни с одним другим методом , так как находится в классе User. Всё же есть потенциальная проблема: класс User может быть уже определён в какой-то другой части системы, если, например, приложение запускается вместе с системой управления контентом ( content management system — CMS ).</p>
<p>Решением этой проблемы — использовать новый оператор namespaces. Исходя с вышеописанного кода, обратимся к следующему примеру:</p>
<pre><code>&lt;?php
namespace MyCompany::Blog;

class User {

       public function set( $attribute, $value ) {
               $this-&gt;$attribute = $value;
       }

       public function save() {
               echo '&lt;p&gt;Blog user ' . $this-&gt;fullname . ' saved&lt;/p&gt;';
       }

}

&lt;?php
$user = new MyCompany::Blog::User();
$user-&gt;set('fullname', 'Ben Balbo');
$user-&gt;save();</code></pre>
<p>На первый взгляд, преимущество предложенного пространства для наших функций могуть быть не очевидны — прежде всего мы просто изменили MyCompany_Blog_User на MyCompany::Blog::User. Тем не мение, мы можем сейчас создать класс User для CMS [5], используя другое пространство имён:</p>
<pre><code>&lt;?php
namespace MyCompany::CMS;

class User {

       public function set( $attribute, $value ) {
               $this-&gt;$attribute = $value;
       }

       public function save() {
               echo '&lt;p&gt;CMS user ' . $this-&gt;fullname . ' saved&lt;/p&gt;';
       }

}</code></pre>
<p>Теперь мы можем использовать классы MyCompany::Blog::User и MyCompany::CMS::User.</p>
<h2>Ключевое слово <em>use</em></h2>
<p>Адресация классов, используя полные имена, по прежнему длинная, и если вы используете много классов с пространства имён MyCompany::Blog, вы не хотели бы набирать этот путь к классу каждый раз. Тогда ключевое слово use вам в руки. Ваше приложение, скорое всего, будет использовать различные классы в любой момент времени. Предположим, пользователь создаёт новую запись:</p>
<pre><code>&lt;?php
use MyCompany::Blog;
$user = new Blog::User();
$post = new Blog::Post();
$post-&gt;setUser( $user );
$post-&gt;setTitle( $title );
$post-&gt;setBody( $body );
$post-&gt;save();</code></pre>
<p>Слово use не ограничивается определением пространства имён в текущем действии. Вы также можете использовать его для импортирования одного класса в ваш файл, как ниже:</p>
<pre><code>&lt;?php
use MyCompany::Blog::User;
$user = new User();</code></pre>
<h2>Алиасы пространства имён</h2>
<p>Ранее, я говорил, что одним из преимуществ namespacing, является возможность определения более чем на одного класса с таким же именем в разных пространствах имен. Несомненно, будут случаи, когда эти два класса используют один и тот же скрипт. Мы могли бы импортировать пространства имён, однако, у нас есть возможность импортировать просто эти классы. Чтобы сделать это, мы можем использовать псевдонимы для пространства имён, например, так:</p>
<pre><code>&lt;?php
use MyCompany::Blog::User as BlogUser;
use MyCompany::CMS::User as CMSUser;

$bloguser = new BlogUser();
$bloguser-&gt;set('fullname', 'John Doe');
$bloguser-&gt;save();

$cmsuser = new CMSUser();
$cmsuser-&gt;set('fullname', 'John Doe');
$cmsuser-&gt;save();</code></pre>
<h2>Констанкты классов</h2>
<p>Константы теперь возможно определить на уровне классов! Имейте ввиду, что константы классов доступны, когда вы импортируете пространства имён, но вы не можете импортировать константу в себя. Вот пример того, как вы могли бы использовать их:</p>
<pre><code>&lt;?php
namespace MyCompany;

class Blog {
       const VERSION = '1.0.0';
}

&lt;?php
echo '&lt;p&gt;Blog bersion ' . MyCompany::Blog::VERSION . '&lt;/p&gt;';

use MyCompany::Blog;
echo '&lt;p&gt;Blog version ' . Blog::VERSION . '&lt;/p&gt;';

use MyCompany::Blog::VERSION as Foo;
echo '&lt;p&gt;Blog version ' . Foo . '&lt;/p&gt;';</code></pre>
<p>Вывод:</p>
<pre><code>Blog bersion 1.0.0
Blog version 1.0.0
Blog version Foo</code></pre>
<h2>Функции в пространстве имён</h2>
<p>Использование статических методов класса протестует против использования функций в объектно-ориентированном мире, в котором мы живём. Тем не менее, коль вам нужно добавить функцию в ваш пакет, это тоже по силам пространству имён ( namespacing )!</p>
<p>Вот пример</p>
<pre><code>&lt;?php
namespace bundle;
function foo() { echo '&lt;p&gt;This is the bundled foo&lt;/p&gt;'; }
foo(); // Это выведет 'This is the bundled foo'

&lt;?php
function foo() { echo '&lt;p&gt;This is the global foo&lt;/p&gt;'; }
require( 'lib/bundle.class.php');
bundle::foo(); // Это выведет 'This is the bundled foo'
foo(); // Вывод: 'This is the global foo'</code></pre>
<h2>Глобальное пространство имён</h2>
<p>Глобальное пространство имён — это важное возмещение, когда вы в ладах с функциями. В предыдущем примере, Вы заметите, что нет прямого пути вызова глобальной функции foo с основного кода (function from within the bundle code).</p>
<p>Метод для решения вызовов функций — это использовать текущее пространство имён (The default method of resolving calls to functions is to use the current namespace). Если функцию нельзя найти, то она будет искать найдена, то будут рассматриваться внутренние функции по имени. Автоматически будут искаться функции в других пространствах имён.</p>
<p>Для вызова глобальной функции foo с внутреннего связующего пространства имён, нам следует указать глобальное пространство имён напрямую. Делается это с помощью двоеточия:</p>
<pre><code>&lt;?php
namespace bundle;
function foo() { echo '&lt;p&gt;This is the bundled foo&lt;/p&gt;'; }
foo(); // This prints 'This is the bundled foo'
::foo(); // This prints 'This is the global foo'</code></pre>
<h2>Автозагрузка классов в пространстве</h2>
<p>Если вы описали магическую функцию <em>_autoload</em> для подключения файлов с описанием классов при запросе, тогда вы, возможно, используете каталог, с которого подключаются все ваши файлы с классами. До использования пространств имён, этого было бы достаточно, так как каждый класс имеет уникальное имя. Теперь, можно иметь много классов с одним именем.</p>
<p>К счастью, функция <em>_autoload</em> будет получать полную ссылку на класс в пространстве имён. Значит, вы могли бы получать такой вызов:</p>
<pre><code>__autoload( 'MyCompany::Blog::User' );</code></pre>
<p>Теперь вы можете с помощью оператора замены, преобразить двоеточие в другие символы. Наиболее ожидаемой заменой может быть символ разделения директорий:</p>
<pre><code>function __autoload( $classname ) {
       $classname = strtolower( $classname );
       $classname = str_replace( '::', DIRECTORY_SEPARATOR, $classname );
       require_once( dirname( __FILE__ ) . '/' . $classname . '.class.php' );
}</code></pre>
<p>Результатом будет подключение файла./classes/mycompany/blog/user.class.php.</p>
<h2>Позднее статическое связывание</h2>
<p>Позднее статическое связывание предоставляет возможность родительскому классу использовать статический метод, который был переопределён дочерним классом. Вы могли бы подумать, что это было поведение по-умолчанию, но подумайте над нижеупомянутом примере:</p>
<pre><code>&lt;?php

class ParentClass {

       static public function say( $str ) {
               self::do_print( $str );
       }

       static public function do_print( $str ) {
               echo "&lt;p&gt;Parent says $str&lt;/p&gt;";
       }

}

class ChildClass extends ParentClass {

       static public function do_print( $str ) {
               echo "&lt;p&gt;Child says $str&lt;/p&gt;";
       }

}

ChildClass::say( 'Hello' );</code></pre>
<p>Вы возможно ожидаете, что скрипт вернёт &#8220;Child says Hello&#8221;. Хотя я понимаю, почему вы могли бы так подумать, но вы будете разочарованы, когда уведите &#8220;Parent says Hello&#8221;.</p>
<p>Причина этого в том, что ссылки <em>self::</em> и <em>_CLASS_</em> принимают решение в классе, в котором эта конструкция используется. В PHP 5.3 теперь есть конструкция <em>static::</em>, которая решает какой класс вызван во время выполнения программы:</p>
<pre>        <code>static public function say( $str ) {
               static::do_print( $str );
       }</code></pre>
<p>С добавлением <em>static::</em>, сценарий вернёт строку &#8220;Child says Hello&#8221;.</p>
<h2>_callstatic</h2>
<p>До сих пор PHP поддерживает несколько чудесных методов в классе, известные вам как <em>_set</em>, <em>_get</em> и <em>_call</em>. В PHP 5.3 появился метод <em>_callstatic</em>, который работает так же как и метод <em>_call</em>, но занимается статическим контентом. В других словах, метод действует в непризнанных статических вызовах напрямую в классе.</p>
<p>Пример ниже показывает эту идею:</p>
<pre><code>&lt;?php

class Factory {

       static function GetDatabaseHandle() {
               echo '&lt;p&gt;Returns a database handle&lt;/p&gt;';
       }

       static function __callstatic( $methodname, $args ) {
               echo '&lt;p&gt;Unknown static method &lt;strong&gt;' . $methodname . '&lt;/strong&gt;' .
                       ' called with parameters:&lt;/p&gt;';
               echo '&lt;pre&gt;' . print_r( $args, true ) . '&lt;/pre&gt;';
       }
}

Factory::GetDatabaseHandle();
Factory::CreateUser();
Factory::CreateBlogPost( 'Author', 'Post Title', 'Post Body' );</code></pre>
<h2>Переменные статические вызовы</h2>
<p>Когда статический член или метод не статический? Тогда это динамическая ссылка конечно!</p>
<p>Ещё раз, это возможность, которая приносит объектную функциональность в ваши классы. К дополнению к переменным и вызовов переменных методов, у вас есть переменные статические вызовы. Возмём класс Factory с предыдущего раздела. Вы можете получить такой же результат с помощью этого кода:</p>
<pre><code>$classname = 'Factory';
$methodname = 'CreateUser';
$classname::$methodname();

$methodname = 'CreateBlogPost';
$author = 'Author';
$posttitle = 'Post Title';
$postbody = 'Post Body';

$classname::$methodname( $author, $posttitle, $postbody );</code></pre>
<p>Вы можете создать динамические пространства имён примерно так:</p>
<pre><code>&lt;?php
require_once( 'lib/autoload.php' );

$class = 'MyCompany::Blog::User';
$user = new $class();
$user-&gt;set('fullname', 'Ben Balbo');
$user-&gt;save();</code></pre>
<p>Эти маленькие штрихи могут сделать ваш код более читаемым и даст вам полную гибкость в объектно-ориентированном смысле.</p>
<h2>Родной драйвер MySQL</h2>
<p>До версии 5.3, любые соединения с MySQL обычно происходили в связке с libmysql &#8211; клиентской библиотекой MySQL.</p>
<p>Родной драйвер для PHP 5.3 был разработан с нуля для PHP и Zend Engine, который будет иметь несколько преимуществ. Наиболее очевидным есть то, что драйвер специфичен для PHP и по-этому оптимизирован под Zend Engine. Он предоставляет клиент с маленьким footprint и быстрым временем выполнения.</p>
<p>Во-вторых, родной драйвер даёт возможность использовать планировщик памяти Zend Engine и будет подчинятся настройкам параметров ограничения памяти PHP.</p>
<p>Родной драйвер будет лицензирован под лицензией PHP дабы избежать проблем с лицензированием.</p>
<h2>Дополнительные функции OpenSSH</h2>
<p>Если вам когда нибудь приходилось выполнять какие-то OpenSSL инструкции в ваших сценариях (например генерацию ключи Diffie Hellman или шифровать содержимое), вы либо должны выполнить эту операцию от имени пользователя или передать запрос в системный вызов.</p>
<p>Патч для функциональности OpenSSL в PHP 5.3 предоставляет дополнительные функции, которые нужны для выполнения этих операций через библиотеку OpenSSL, которые не только делает вашу жизнь проще и ваши приложения быстрее, но и позволяет многократно использовать проверенный код.</p>
<p>Это будет хорошая новость для тех, кто, что в настоящее время работает с OpenID.</p>
<h2>Улучшения поддержки параметров командной строки</h2>
<p>Надеюсь, Вы уже поняли тот факт, что PHP не просто язык сценариев для Web. Версия PHP для запуска с командной строки, выполняется за средой веб-сервера и полезен для автоматизации процессов системы и приложений.</p>
<p>Например, функция PHP getopt() has been around for a while (!!!), но была ограничена на некоторых системах: в большинстве случаев, она не работала в Windows.</p>
<p>Начиная с PHP 5.3 функция getopt() не зависит от системы. Ура!</p>
<h2>XSLT профайлинг</h2>
<p>XSLT &#8211; это сложный зверь, и большинство пользователей этого шаблонного механизма знакомы с опциями профайлинга xsltproc. Начиная с 5.3 вы можете заниматься профайлингом ваших сценарием без этого инструмента. Этот фрагмент из примера[4], который сопровождает эту статью, дает представление о том, каким образом мы могли бы использовать это:</p>
<pre><code>$doc = new DOMDocument();
$xsl = new XSLTProcessor();

$doc-&gt;load('./lib/collection.xsl');
$xsl-&gt;importStyleSheet($doc);

$doc-&gt;load('./lib/collection.xml');
$xsl-&gt;setProfiling("/tmp/xslt-profiling.txt");
echo $xsl-&gt;transformToXML($doc);

echo '&lt;h2&gt;Profile report&lt;/h2&gt;';
echo '&lt;pre&gt;' . file_get_contents( '/tmp/xslt-profiling.txt' ) . '&lt;/pre&gt;';</code></pre>
<p>Результат профайлинга мог бы выглядеть где-то так:</p>
<pre><code>number    match    name   mode     Calls   Tot  100us  Avg
0         collection                    1       4       4
1         cd                            2       1       0

          Total                         3       5</code></pre>
<h2>Новые уровни ошибок</h2>
<p>PHP, конечно, имеет несколько каламбуров. Например, почему E_ALL не содержит все уровни ошибок?</p>
<p>Ну сейчас уже делает! Да, E_STRICT теперь часть E_ALL.</p>
<p>Кроме того, пока E_STRICT используется для информирования функциональности, которая может быть не рекомендуемой в ближайшем будущем, как, например, определения абстрактного статического метода, то в PHP 5.3 эти 2 ошибки делятся на E_DEPRECATED на E_STRICT соответственно, что больше подходит по смыслу.</p>
<h2>Другие мелкие улучшения</h2>
<p>Вот горсточка улучшений, которые появились в PHP 5.3, которые малы даже для параграфа, или были не стабильны во время написания этой статьи:</p>
<ul>
<li>Sqlite3 поддерживается расширением 	ext/sqlite</li>
<li>В DirectoryIterator SPL реализован ArrayAccess</li>
<li>2 новых функции: 	<em>array_replace</em> и <em>array_replace_recursive.</em> Пока 	эти функции не определены под PHP 5.3, но 	в коде на C, который их реализует, с виду 	их функциональность похожа на 	<em>array_merge()</em>. Одно исключение составляет 	функция <em>array_replace()</em>, которая будет 	обновлять значения в первом массиве, 	когда значения ключей в обоих массивах 	одинаковые. Значения ключей, которые 	есть в втором массиве, но нет в первом, 	будут игнорироваться.</li>
</ul>
<h2>Резюме</h2>
<p>PHP 5.3 содержит много функциональности, которые намечались только в PHP 6, дабы стать маленьким обновлением для большого релиза, который каждый PHP разработчик должен знать. Мы затронули большинство возможностей в этой статье, привели несколько примеров кода, который показывает как вы можете использовать эти возможности.</p>
<p>Не забудьте <a href="http://www.sitepoint.com/examples/php5/PHPdemos.zip">скачать код, супуствующий этой заметке</a> [12], и быть в курсе событий</p>
<p>[1] <a href="http://snaps.php.net/">http://snaps.php.net/</a><br />
[2] <a href="http://www.sitepoint.com/examples/php5/PHPdemos.zip">http://www.sitepoint.com/examples/php5/PHPdemos.zip</a><br />
[3] <a href="http://phpmelb.org/index.php?option=com_content&amp;view=article&amp;id=69&amp;Itemid=1">http://phpmelb.org/index.php?option=com_content&amp;view=article&amp;id=69&amp;Itemid=1</a><br />
[4] <a href="http://www.sitepoint.com/examples/php5/PHPdemos.zip">http://www.sitepoint.com/examples/php5/PHPdemos.zip</a><br />
[5] <a href="http://www.sitepoint.com/examples/php5/PHPdemos.zip">http://www.sitepoint.com/examples/php5/PHPdemos.zip</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.web2.com.ua/2009/07/22/chto-novogo-v-php-5-3/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Скорость и использование памяти yum и ZYpp</title>
		<link>http://blog.web2.com.ua/2008/06/14/skorost-i-ispolzovanie-pamyati-yum-i-zypp/</link>
		<comments>http://blog.web2.com.ua/2008/06/14/skorost-i-ispolzovanie-pamyati-yum-i-zypp/#comments</comments>
		<pubDate>Sat, 14 Jun 2008 15:11:31 +0000</pubDate>
		<dc:creator>wert2all</dc:creator>
				<category><![CDATA[openSuse]]></category>
		<category><![CDATA[Sneak Peeks]]></category>
		<category><![CDATA[перевод]]></category>
		<category><![CDATA[memory usage]]></category>
		<category><![CDATA[performance]]></category>
		<category><![CDATA[yum]]></category>
		<category><![CDATA[zypp]]></category>
		<category><![CDATA[zypper]]></category>

		<guid isPermaLink="false">http://blog.web2.com.ua/?p=637</guid>
		<description><![CDATA[Вот на носу выход openSUSE 11.0. В этой версии был сильно оптимизирован zypper &#8211; средство управления пакетами openSUSE. Эта программа всегда вызивала нарекания пользователей и, даже я, который уже наверно года 4-5 с openSUSE, не пользуюсь им почти никогда. Основная проблема &#8211; скорость. Когда начинаешь что-то им делать &#8211; это ужас. То он кеш грузит, [...]]]></description>
			<content:encoded><![CDATA[<p>Вот на носу выход openSUSE 11.0. В этой версии был сильно оптимизирован zypper &#8211; средство управления пакетами openSUSE. Эта программа всегда вызивала нарекания пользователей и, даже я, который уже наверно года 4-5 с openSUSE, не пользуюсь им почти никогда. Основная проблема &#8211; скорость. Когда начинаешь что-то им делать &#8211; это ужас. То он кеш грузит, то он решил от фонаря обновить  репозитории, когда ставишь пакет с необновляемой репы. Очень сложно с ним мирится и боротся.</p>
<p>Но когда я попробывал 11, то сразу бросилась в глаза скорость работы. Теперь всё происходило мгновенно! Вот и видео подтверждение:</p>
<p style="text-align: center;"><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="425" height="344" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="src" value="http://www.youtube.com/v/XB3o4Skka5Q&amp;hl=ru" /><embed type="application/x-shockwave-flash" width="425" height="344" src="http://www.youtube.com/v/XB3o4Skka5Q&amp;hl=ru"></embed></object></p>
<p>И это чистейшая правда. Вот и <a href="http://duncan.mac-vicar.com/blog/archives/309" target="_blank">тест провели</a>, а я попробую перевести.<span id="more-637"></span></p>
<hr />Michael Zucchi <a href="http://blogs.gnome.org/zucchi/2008/05/10/linux-is-bloated/" target="_blank">жалуется</a> на использование памяти yum и винит в этом python.</p>
<blockquote><p>Yum таки не вкусняшка. Включивши питон, я так и не сумел запустить yum. Ух ты 120 MB на виртуальной машине, чтобы установить несколько пакетов. Неплохо, учитывая 128 MB на основной машине. Гавняно.</p>
<p>Хм, я должен попробовать xubuntu &#8211; или это будет таким же дрянным и вздутым и загубленым питоном poo?</p></blockquote>
<p>Поскольку все наши усилия были направлены на то, чтобы сделать ZYpp быстрее, путём обьединения и интеграции  Michael Schroeder’s вместе Michael Matz, который смног сделал в solv файлах и  для хранения данных,то  мне никогда не  хотелось сделать “быстрое сравнение” о  использовании памяти или скорости. Так давайте уже взглянем.</p>
<p>Вот мои репозитарии:</p>
<pre><code>Software configuration management (openSUSE_10.3)
10.3 - Main Repository (NON-OSS)
10.3 - Packman
openSUSE-10.3-Updates
Virtualization:VirtualBox
home:dgollub
KDE:KDE3
Mozilla based projects (openSUSE_10.3)
ZYPP SVN Builds (openSUSE_10.3)
ZYPP SVN Builds (openSUSE_10.3)
home:prusnak
10.3 - VideoLan
openSUSE.org tools (openSUSE_10.3)
SUSE Feature Tracking Tool (openSUSE_10.3)
psmt's Home Project (openSUSE_10.3)
openSUSE:10.3
Duncan Mac-Vicar SUSE rpms (openSUSE_10.3)
Latest YaST svn snapshots (openSUSE_10.3)
building/openSUSE_10.3</code></pre>
<p>Во всех этих репозитариях приблизительно 41 тис. пакетов.</p>
<p>Что я сделал, так это создал символическую ссылку для каталопа пакетов yum, чтобы они использовали одни репозитарии.</p>
<pre><code># rm -rf /etc/yum.repos.d/
# ln -s /etc/zypp/repos.d /etc/yum.repos.d</code></pre>
<p><span style="text-decoration: line-through;">*NOTE:* I tested with yum 3.2.4. I know 3.2.14 is available, but that is what I had installed when doing the test. After doing this tests I upgraded to 3.2.14 but it did not accept my .repo file because the character “:” in repo names. However the changelog of yum since 3.2.4 shows: If using latest yum would invalidate this numbers (not as in 1 second, but as in an order of magnitude), let me know and I will repeat them when I make them work with my repo files.</span> (не переводил, зачеркнули же. Говорится о версиях, и чего не на новых&#8230; )</p>
<p><strong>Update 14.05.2008 : Я добавил yum 3.2.14. Тем не менее его производительность даже хуже, но не использование памяти.</strong></p>
<p><strong>Update 15.05.2008 : добавлены цифры дял smart 0.52</strong></p>
<p>libzypp  &#8211; тот который лежит в factory уже несколько дней: 4.21.1.</p>
<p>yum и ZYpp ведут себя по-разному, yum скачивает и парсит файлы filelists.xml и other.xml, а мы их игнорируем. Так что, я пропустил часть загрузки мета данных и засёк время построения кэша.</p>
<pre><code># yum clean dbcache
...
19 sqlite files removed</code>

# time yum makecache
...
Metadata Cache Created

real    9m41.036s
user    2m34.766s
sys     0m11.545s</pre>
<p>Почти 10 минут. В это время включен разбор двух больших файлов, которые мы прогнорировали.  Я запустил его ещё раз, нажавши Ctrl+C, когда yum закончил обрабатывать первичные данные, как это делает zypp.</p>
<pre># time yum makecache
...
Exiting on user cancel

real    4m6.730s
user    0m34.058s
sys     0m3.080s</pre>
<p>И очередь ZYpp:</p>
<pre># time zypper ref -B
...
All repositories have been refreshed.

real    0m18.472s
user    0m16.029s
sys     0m2.024s</pre>
<p>Таким образом Yum требует технически в 13 раз больше времени чем ZYpp (если рассматривать одинакувую работу), но пользователь ждёт в 30 раз больше.</p>
<p>Теперь установка пакетов. Это означает время от вопроса &#8220;Продолжить (да/нет)&#8221; до приглашения оболочки.</p>
<pre># time yum install fate
...
Is this ok [y/N]: n
Exiting on user Command
Complete!

real    0m19.143s
user    0m14.057s
sys     0m1.920s</pre>
<p>А ZYpp</p>
<pre># time zypper in fate
...
Continue? [YES/no]: n

real    0m9.796s
user    0m8.509s
sys     0m0.624s</pre>
<p>На этом этапе ZYpp всего в два раза быстрее Yum. Всего <img src='http://blog.web2.com.ua/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>Что же нас ждёть, когда захочется обновить пакеты?</p>
<pre># time yum upgrade
...
real    0m45.152s
user    0m36.894s
sys     0m7.476s</pre>
<p>(Замечание: yum даже не нашёл ничего для обновления).</p>
<pre># time zypper update
...
Continue? [YES/no]: n

real    0m8.988s
user    0m7.820s
sys     0m0.596s</pre>
<p>yum нужно в 4 раза больше времени чем ZYpp, чтобы определить работу для обновления.</p>
<p><strong>Update 14.05.2008 :  сравнивал  update с upgrade, я исправил это в диаграме. Тем не менее, у меня небыло данных для update в старом yum.</strong></p>
<ul class="picture">
<li><a href="http://blog.web2.com.ua/wp-content/uploads/pub.png"><img class="alignnone size-medium wp-image-638" title="summary" src="http://blog.web2.com.ua/wp-content/uploads/pub-400x146.png" alt="" width="400" height="146" /></a></li>
<li>Резюме.</li>
</ul>
<p>Теперь, сколько памяти каждому с них требуется? Для этого я просто проверил установку одного пакета используя valgrind massif, профайлера кучи (heap profiler).</p>
<ul class="picture">
<li><a href="http://blog.web2.com.ua/wp-content/uploads/yum-in-massif.png"><img class="alignnone size-medium wp-image-639" title="yum-in-massif" src="http://blog.web2.com.ua/wp-content/uploads/yum-in-massif-400x265.png" alt="" width="400" height="265" /></a></li>
<li>Использование памяти Yum</li>
<li><a href="http://blog.web2.com.ua/wp-content/uploads/zypper-in-massif.png"><img class="alignnone size-medium wp-image-640" title="zypper-in-massif" src="http://blog.web2.com.ua/wp-content/uploads/zypper-in-massif-400x265.png" alt="" width="400" height="265" /></a></li>
<li>Использование памяти ZYpp</li>
<li><a href="http://blog.web2.com.ua/wp-content/uploads/yum-3214-massif.png"><img class="alignnone size-medium wp-image-641" title="yum-3214-massif" src="http://blog.web2.com.ua/wp-content/uploads/yum-3214-massif-400x264.png" alt="" width="400" height="264" /></a></li>
<li><strong>Update 14.05.2008 : диаграмма использования памяти yum 3.2.14</strong></li>
<li><a href="http://blog.web2.com.ua/wp-content/uploads/smart-in-massif.png"><img class="alignnone size-medium wp-image-642" title="smart-in-massif" src="http://blog.web2.com.ua/wp-content/uploads/smart-in-massif-400x266.png" alt="" width="400" height="266" /></a></li>
<li><strong>Update 15.05.2008 : </strong><strong>диаграмма использования памяти</strong><strong> smart 0.52</strong></li>
</ul>
<p>Ви можете сделать вывод, что ZYpp потребляет чуть больше 20M, в то время как yum использует больше 180M памяти, тоесть в 9 раз больше. <strong>Обновлено 14.05.2008 : yum 3.2.14  использует  приблизительно 160 в худший момент времени.</strong></p>
<ul class="picture">
<li><a href="http://blog.web2.com.ua/wp-content/uploads/pub_install.png"><img class="alignnone size-medium wp-image-643" title="pub_install" src="http://blog.web2.com.ua/wp-content/uploads/pub_install-400x284.png" alt="" width="400" height="284" /></a></li>
</ul>
<p>Мне было бы интерестно поссмотреть и на использование процессора, но это уже позже. Что вы думаете об этом?</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.web2.com.ua/2008/06/14/skorost-i-ispolzovanie-pamyati-yum-i-zypp/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>10 привычек хорошего иcпользования UNIX</title>
		<link>http://blog.web2.com.ua/2008/04/03/10-privyichek-horoshego-ispolzovaniya-unix/</link>
		<comments>http://blog.web2.com.ua/2008/04/03/10-privyichek-horoshego-ispolzovaniya-unix/#comments</comments>
		<pubDate>Thu, 03 Apr 2008 08:25:11 +0000</pubDate>
		<dc:creator>wert2all</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[перевод]]></category>

		<guid isPermaLink="false">http://blog.web2.com.ua/?p=570</guid>
		<description><![CDATA[Где-то примерно такого названия статья попалась на сайте developerWorks IBM. Приссмотрелся, кажется UNIX tips: Learn 10 good UNIX usage habits интересна и, возможно, поможет не только новичку в *nix. Как говорил мой одноклассник (&#8220;снэмал не я&#8221;) перевод мой, не бэйте больна. Вступление Когда вы часто используете систему, вы склоняетесь к использованию шаблонов. Иногда, вы привыкаете [...]]]></description>
			<content:encoded><![CDATA[<p><img class="short" src="http://blog.web2.com.ua/wp-content/uploads/ibm-logo.gif" alt="IBM Logo" /><em>Где-то примерно такого названия статья попалась на сайте developerWorks IBM. Приссмотрелся, кажется <a class="new" href="http://www.ibm.com/developerworks/aix/library/au-badunixhabits.html" target="_blank">UNIX tips: Learn 10 good UNIX usage habits</a> интересна и, возможно, поможет не только новичку в *nix. Как говорил мой одноклассник (&#8220;снэмал не я&#8221;) перевод мой, не бэйте больна. <img src='http://blog.web2.com.ua/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </em><span id="more-570"></span></p>
<h2>Вступление</h2>
<p>Когда вы часто используете систему, вы склоняетесь к использованию шаблонов. Иногда, вы привыкаете делать что-то не лутшим возможным образом. Иногда, вы даже перебираете примеры плохой практики, которые ведут к суматохе и неуклюжести. Один из лутших способов исправление этих недостатков заключается в том, чтобы добросовесно подобрать хорошие привычки, корорые препятствуют плохому. Эта статья предлагает 10 ценных привычек командной строки UNIX, которые помогут избежать часто используемых изьянов и сделают вашу работу в коммандной строке более продуктивной. Каждая привычка более подробно описана ниже в списке хороших практик.</p>
<h2>Усвойте 10 хороших привычек</h2>
<p>Вод этот список:</p>
<ol>
<li>Делайте дерево каталогов в одну строку</li>
<li>Изменяйте каталог &#8211; не переносите архив</li>
<li>Обьеденяйте ваши комманды с управляемымы операторами</li>
<li>Заключайте переменный в кавычки с осторожностью.</li>
<li>Используйте управляющие последовательности (escape sequences) для управления длинным вводом</li>
<li>Группируйте ваши комманды в список</li>
<li>Используйте xargs вне find</li>
<li>Знайте, когда &#8220;grep&#8221; следует делать подсчет и когда он должен шагнуть в сторону <em>(не могу нормально перевести &#8220;it should step aside.&#8221;)</em></li>
<li>Находите некоторые поля в выводе, не только строки <em>(тоже как-то коряво)</em></li>
<li>Перестаньте туннелировать cat (Stop piping cats). <em>(просто жесть!)</em></li>
</ol>
<h2>Делайте дерево каталогов в одну строку</h2>
<p>На листинге 1 показано одину с самых распространённых плохих привычек в UNIX: создание каталогов по-очереди.</p>
<p><strong>Листинг 1. Пример №1: Создание дерева каталогов по-одному</strong></p>
<pre>~ $ <strong>mkdir tmp</strong>
~ $ <strong>cd tmp</strong>
~/tmp $ <strong>mkdir a</strong>
~/tmp $ <strong>cd a</strong>
~/tmp/a $ <strong>mkdir b</strong>
~/tmp/a $ <strong>cd b</strong>
~/tmp/a/b/ <strong>$ mkdir c</strong>
~/tmp/a/b/ $ <strong>cd c
</strong>~/tmp/a/b/c $</pre>
<p>Именно по-этому быстрее всего использовать опцию -p команды mkdir и сделать все родительские каталоги вместе с их детьми одной коммандой. Но даже администраторы, которые знают об этой опции, всё ещё содают по-одной директории. Это стоит вашего времени, чтобы добросовестно выработать хорошую привычку:</p>
<p><strong>Листинг 2. Пример №1: Создание дерева одной командой</strong></p>
<pre>~ $ <strong>mkdir -p tmp/a/b/c</strong></pre>
<p>Вы можете использовать даную опцию, чтобы создать весь комплекс каталогов, которые часто всего используется в скриптах, а не просто иерархию. Например:</p>
<p><strong>Листинг 3. Пример №1: Создание комплекса каталогов одной командой</strong></p>
<pre>~ $<strong> mkdir -p project/{lib/ext,bin,src,doc/{html,info,pdf},demo/stat/a}</strong></pre>
<p>В прошлом, единственным оправданием для определения директории по отдельности было, что реализация mkdir не поддерживает этот вариант, но это не верно в большинстве систем. IBM, AIX ®, mkdir, GNU mkdir и другие, которые поддерживают Единую Спецификацию UNIX (Single UNIX Specification) теперь имеют эту опцию.</p>
<p>Для нескольких систем, которые до сих пор не имеют этой поддержки, можно использывать скрипт <code>mkdirhier</code> (смотрите в <a href="http://www.ibm.com/developerworks/aix/library/au-badunixhabits.html#resources">Resources</a>), который является обёрткой для <code>mkdir</code> с этой опцией:</p>
<p><strong>Листинг 3. Пример №1: Создание комплекса каталогов одной командой</strong></p>
<pre>~ $<strong> mkdirhier project/{lib/ext,bin,src,doc/{html,info,pdf},demo/stat/a}</strong></pre>
<h2>Изменяйте каталог &#8211; не переносите архив</h2>
<p>Другим плохим шаблоном является перенос .tar-архива в определённую директорию чтобы расспаковать. Вам не нужно этого делать. Вы можете расспаковать архив в любую директорию, которую пожелаете, с поммощью опции -С. Используйте опцию -С с именем каталога, когда расспаковываете архив:</p>
<p><strong>Листинг 4. Пример №2: Использование опции -С при расспаковке архива</strong></p>
<pre>~ $<strong> tar xvf -C tmp/a/b/c newarc.tar.gz</strong></pre>
<p>Привычка использывать -С является предпочительной, чем перемещение архива для расспаковки, изменение каталога и только потом расспаковка содержания архива &#8211; особенно если архив принадлежит ещё кому-то.</p>
<h2>Обьеденяйте ваши комманды с управляемымы операторами</h2>
<p>Вы, наверное, уже знаете, что в большинстве команднsх оболочек (shell), можно объединить команды в одной командной строке, поставив точку с запятой (;) между ними. Точка с запятой &#8211; это <em>упрапляющий оператор</em> shell (shell control operator), и хотя она полезна для связывания вместе несколько дискретных команд в одну командную строку, она не работает для всего. Например, предположим что вы используете точку с запятой для обьединения двух комманд, в которых правильно выполнение второй команды польностью зависит от успешного выполнения первой. Если первая команда не выполнилась так, как вы ожидали, то вторая команда всё равно выполнится, что неправильно. Вместо этого, используйте больше подходящие управляющие команды (некоторые с них описаны в этой статье). С тех пор, когда ваш shell их поддерживает, они стоят того, чтобы стать привычкой в использовании.</p>
<h3>Выполнить команду, только если другая вернула нулевой статус</h3>
<p>Используйте управляющий оператор &amp;&amp; для обьединения двух комманд, чтобы вторая выполнилась только тогда, когда первая вернула <em>только</em> нулевой статус завершения (zero exit status). Другими словами, первая успешно выполнилась &#8211; вторая запустилась. Если же первая команда дала сбой, то вторая не запустится вообще. Например:</p>
<p><strong>Листинг 5. Пример №3. Обьединение команд управляющими операторами</strong></p>
<pre>~ $ <strong>cd tmp/a/b/c &amp;&amp; tar xvf ~/archive.tar</strong></pre>
<p>В этом примере архив ~/archive.tar расспакуется в каталог tmp/a/b/c, если только каталог существует. Если же каталога не существует, то команда <strong>tar</strong> даже не запустится.</p>
<h3>Выполнить команду, только если другая вернула не нулевой статус возврата</h3>
<p>Похожый оператор || обьединяет две команды, и запуск второй будет тогда, первая командв вернула не нулевой код возврата. Другими словами, когда первая команда успешна, то вторая <em>не выполнится</em>. Если произойдёт сбой первой команды, то <em>выполнится</em> вторая.Этот оператор часто используется для проверки существования каталога и создани его, если его нет:</p>
<p><strong>Листинг 6. Пример №3: </strong><strong>Обьединение команд управляющими операторами</strong></p>
<pre>~ $ <strong>cd tmp/a/b/c || mkdir -p tmp/a/b/c</strong></pre>
<p>Ви может также обьединять управляющие конструкции, описаные в этой части.</p>
<p><strong>Листинг 7. Пример №3: Пример, обьединяющий управляющие операторы</strong></p>
<pre>~ $ <strong>cd tmp/a/b/c || mkdir -p tmp/a/b/c &amp;&amp; tar xvf -C tmp/a/b/c ~/archive.tar</strong></pre>
<h2>Заключайте переменный в кавычки с осторожностью.</h2>
<p>Всегда будьте внимательны с shell expansion и именами переменных. Вцелом, вложить вызовы переменных в двойные кавычки хорошая идея, если только у вас есть веские причины не делать этого. Точно так же, если у Вас алфавитно-цифровым название переменной следует непосредственно за текстом, убедитесь , что заключили название переменной в фигурные скобки ({}), чтобы отличить её от ближайшего текста. Иначе, интерпритатор shell примет следуемый текст за имя переменной и, скорее всего, вернёт пустой результат. Листинг 8 содержит примеры разного квотирования переменных и их последствия.</p>
<p><strong>Листинг 8. Пример №4: Квотирование и не квотирование переменных<br />
</strong></p>
<pre>~ $ <strong>~ $ ls tmp/
a b
~ $ VAR="tmp/*"
~ $ echo $VAR
tmp/a tmp/b
~ $ echo "$VAR"
tmp/*
~ $ echo $VARa</strong>

<strong>~ $ echo "$VARa"</strong>

<strong>~ $ echo "${VAR}a"
tmp/*a
~ $ echo ${VAR}a
tmp/a
~ $</strong></pre>
<h2>Используйте управляющие последовательности (escape sequences) для управления длинным вводом</h2>
<p>Вы уже, наверное, видели примеры кода, в котором backslash (\) продолжает длинную строку в следующей, и вы знаете, что большинство shell-оболочек рассматривают ваш ввод последовательных строк, присоединённых косой чертой, как одину длинную команду. Тем не менее, Вы не сможете воспользоваться этой функцией в командной строке, как часто, как вам хочется. Backslash особенно удобен, если ваш терминал не поддерживает multi-line wrapping должным образом или когда командная строка меньше чем обычно ( например, когда у вас длинный путь в приглашении). Backslash также полезен для лучшего понимания длинных строк, как показано на следующем примере:</p>
<p><strong>Листинг 9. Пример №5: Использование / для длинного ввода</strong></p>
<pre>~ $ <strong><span class="boldcode">cd tmp/a/b/c || \</span>
&gt; <span class="boldcode">mkdir -p tmp/a/b/c &amp;&amp; \</span>
&gt; <span class="boldcode">tar xvf -C tmp/a/b/c ~/archive.tar</span></strong></pre>
<p>Кроме того, следующие строки также работают:</p>
<p><strong>Листинг 10. Пример №5: альтернативный пример использования / для длинного ввода</strong></p>
<pre>~ $ <strong><span class="boldcode">cd tmp/a/b/c \</span>
&gt; <span class="boldcode">                || \</span>
&gt; <span class="boldcode">mkdir -p tmp/a/b/c \</span>
&gt; <span class="boldcode">                   &amp;&amp; \</span>
&gt; <span class="boldcode">tar xvf -C tmp/a/b/c ~/archive.tar</span></strong></pre>
<p>Однако, вы разделяете вводимую строку на несколько, а shell всегда рассматривает её одну, потому что он всегда обрезает все слэшы и пробелы .</p>
<p><strong>Примечание:</strong> В большенстве коммандных оболочек, когда вы нажмёте клавишу &#8220;Вверх&#8221;, текущая многострочная строка превратится в одну длинную.</p>
<h2>Группируйте ваши комманды в список</h2>
<p>Большинство командных оболочек имеют возможность группировать набор комманд в списки, таким образом чтобы вы могли передать их общий вывод в поток ( a pipeline) или переправить любые с потоков в одно место. Вы можете вообще делать это, управляя списком команд в подоболочке (subshell) или управляя списком команд в текущей командной оболочке.</p>
<h3>Запуск списка команд в подоболочке (subshell)</h3>
<p>Используйне одиночные скобки для указания списка команд в одной граппе. Это запустит команды в новом subshell и позволит вам передавать или собрать вывод, как показано в следующем примере:</p>
<p><strong>Листинг 11. Пример №6: Запуск списка комманд в подоболочке</strong></p>
<pre><strong>~ $ <span class="boldcode">( cd tmp/a/b/c/ || mkdir -p tmp/a/b/c &amp;&amp; \</span>
&gt; <span class="boldcode">VAR=$PWD; cd ~; tar xvf -C $VAR archive.tar ) \</span>
&gt; <span class="boldcode">| mailx admin -S "Archive contents"</span></strong></pre>
<p>В этом примере, содержание архива расспаковывается в <em>tmp/a/b/c/</em>,  а вывод из группы команд, в том числе перечень извлеченных файлов, отправляется по почте на адрес <strong>admin</strong>.</p>
<p>Использование подоболочки предпочительнее, когда вы в списке комманд переопределяете переменные окружения и не хотите, чтобы эти определения применились к текущей оболочке.</p>
<h3>Запуск списка команд в текущей оболочке</h3>
<p>Используйте фигурные скобки ({}) для указания списка команд группы для запуска в <em>текущей</em> оболочке. Убедитесь, что есть пробелы между скобками и командами или shell может неправильно их интерпритировать. Также, убедитесь, что последняя команда в гуппе заканчивается точкой с запятой, как в следующем примере:</p>
<p><strong>Листинг 12. Пример №6: Запуск списка комманд в текущеё оболочке<br />
</strong></p>
<pre><strong>~ $ <span class="boldcode">{ cp ${VAR}a . &amp;&amp; chown -R guest.guest a &amp;&amp; \</span>
&gt; <span class="boldcode">tar cvf newarchive.tar a; } | mailx admin -S "New archive"</span></strong></pre>
<h2>Используйте xargs вне find</h2>
<p>Используйте инструмент <code>xargs как фильтр, для эфективного использования результатов вывода команды</code><code> <em>find</em></code>. Общим принцыпом этого является, что запуск <strong>find</strong> предоставит список файлов, удовлитворяущих некоторым критериям. Этот список передается в xargs, который затем запускает некоторые другие полезные команды с этим спиком файлов как аргумент, как в следующем примере:</p>
<p><strong>Листинг 13. Пример класического использования xargs<br />
</strong></p>
<pre><strong>~ $ <span class="boldcode">find <em>some-file-criteria some-file-path</em> | \</span>
&gt; <span class="boldcode">xargs <em>some-great-command-that-needs-filename-arguments</em></span></strong></pre>
<p>Однако, не думайте, что <strong>xargs</strong> выступает помощиком <strong>find</strong>; это &#8211; один из тех недостаточно использованных инструментов, который, когда использование войдёт в привычку, вы захотите применять к всему, в том числе в следующих целях.</p>
<h3>Получение списка, разделённого пробелами</h3>
<p>В этом простом вызове, xargs выступает как фильтр, который получает ввод как список (каждый член с новой строки). Утилита вставляет членов списка в одну строку, разделённую пробелами:</p>
<p><strong>Листинг 14. Пример вывода xargs<br />
</strong></p>
<pre><strong>~ $ <span class="boldcode">xargs</span>
<span class="boldcode">a</span>
<span class="boldcode">b</span>
<span class="boldcode">c</span>
<span class="boldcode"><em>Control-D</em></span>
a b c
~ $</strong></pre>
<p>Вы можете послать вывод любой утилыты, которая выводит имена файлов, через <strong>xargs</strong> для получения аргументов для утилиты, получающей имена файлов, как в следующем примере:</p>
<p><strong>Листинг 15. Пример использования xargs<br />
</strong></p>
<pre class="displaycode"><strong>~/tmp $ <span class="boldcode">ls -1 | xargs</span>
December_Report.pdf README a archive.tar mkdirhier.sh
~/tmp $ <span class="boldcode">ls -1 | xargs file</span>
December_Report.pdf: PDF document, version 1.3
README: ASCII text
a: directory
archive.tar: POSIX tar archive
mkdirhier.sh: Bourne shell script text executable
~/tmp $</strong></pre>
<p>Команда xargs может большее, чем прохождение по именам файлов. Успользуйте её для получения текста в одну строку:</p>
<p><strong>Листинг 16. </strong><strong>Пример №7: Использование </strong><strong>xargs для вывода текста в одну строку<br />
</strong></p>
<pre><strong>~/tmp $ <span class="boldcode">ls -l | xargs</span>
-rw-r--r-- 7 joe joe 12043 Jan 27 20:36 December_Report.pdf -rw-r--r-- 1 \
root root 238 Dec 03 08:19 README drwxr-xr-x 38 joe joe 354082 Nov 02 \
16:07 a -rw-r--r-- 3 joe joe 5096 Dec 14 14:26 archive.tar -rwxr-xr-x 1 \
joe joe 3239 Sep 30 12:40 mkdirhier.sh
~/tmp $</strong></pre>
<h3>Будьте осторожны с xargs</h3>
<p>Технически, существуют редкие ситуации, в которой вы могли бы получить неприятности при использовании xargs. По-умолчанию, символ конца файла &#8211; подчёркивание (_);если этот символ отправлен как единственный входящий аргумент, всё, что после него &#8211; игнорируется. В качестве меры предосторожности используйте -е флаг, который, без аргументов, отключает строку конца файла полностью.</p>
<h2>Знайте, когда &#8220;grep&#8221; следует делать подсчет и когда он должен шагнуть в сторону</h2>
<p>Избегайте отправки <strong>grep</strong> в канал (piping)  <strong>wc -l</strong>, чтобы подсчитать количество строк вывода. Опция grep -c выводит количество строк, которые подпадают под шаблон, и основном быстрее чем канал на wc, как в следующем примере:</p>
<p><strong>Листинг 17. </strong><strong>Пример №8: Подсчёт строк с использование grep и без</strong></p>
<pre class="displaycode"><strong>~ $ <span class="boldcode">time grep and tmp/a/longfile.txt | wc -l</span>
2811

real    0m0.097s
user    0m0.006s
sys     0m0.032s
~ $ <span class="boldcode">time grep -c and tmp/a/longfile.txt</span>
2811

real    0m0.013s
user    0m0.006s
sys     0m0.005s
~ $ </strong></pre>
<p>С добавлением фактора скорости, опция <code>-c</code> является лучшим способом сделать подсчёт. В ситуации с многими файлами, <code>grep</code> с параметром <code>-c</code> возвращает количество строк для каждого файла, по одному на строку, в это время как pipe с <code>wc</code> возвращает общее количество для всех файлов.</p>
<p>Однако, независимо от скорости работы, этот пример демонстрирует другую распространенную ошибоку, которую следует избегать. Эти методы подсчёта возвращают <em>количество строк, которые содержат подходящий шаблон</em> &#8211; и если это то, что вы ищете, то это прекрасно. Но, в случае, когда строки имеют множественные образцы вложений шаблона, этот метод не даст правильное количество <em>найденых</em> образцов. Для подсчёта количества использований, используйте <code><strong>wc</strong> в конце концов</code>. Сначала, запустите команду <strong><code>grep</code></strong> с опцией <code>-o</code>, если ваша версия уё поддерживает. Этот параметр выводит <em>только</em> подходящий шаблон, один на строку, но не саму строку. Но вы не можете использовать её в вместе с параметром <code>-c</code> option, так что используйте <strong><code>wc -l</code></strong> для подсчёта строк, как показано в примере:</p>
<p><strong>Листинг 18. </strong><strong>Пример №8: Подсчёт подходящих шаблонов<br />
</strong></p>
<pre class="displaycode"><strong>~ $ <span class="boldcode">grep -o and tmp/a/longfile.txt | wc -l</span>
3402
~ $</strong></pre>
<p>В этом случае, вызов <strong>wc</strong> немножко быстрее, чем второй вызов <strong>grep</strong> с пустым шаблоном и подсчётом количества строк(как <strong>grep -c</strong>).</p>
<h2>Находите некоторые поля в выводе, не только строки</h2>
<p>Инструмент awk предпочтителен, чем grep, когда Вы хотите найти соответствия в только определенной области строк вывода и не только где-нибудь в строках.</p>
<p>В этом простейшем примере показано, как получить список только тех файлов, которые изменялись в декабре:</p>
<p><strong>Листинг 19. </strong><strong>Пример №9: Использование grep для поиска в спецефических полях<br />
</strong></p>
<pre class="displaycode"><strong>~/tmp $ <span class="boldcode">ls -l /tmp/a/b/c | grep Dec</span>
-rw-r--r--  7 joe joe  12043 Jan 27 20:36 December_Report.pdf
-rw-r--r--  1 root root  238 Dec 03 08:19 README
-rw-r--r--  3 joe joe   5096 Dec 14 14:26 archive.tar
~/tmp $</strong></pre>
<p>В этом примере, grep вывод строки в которых, время изменения в Dec, а так же хорошо выводит и файлы с именем Dec. Ведь, файл, такой как December_Report.pdf, подходит, даже если его изменяля в январе. Это возможно не то, что вы хотели. Для нахождения по шаблону в особенном поле, лучше использовать <strong><code>awk</code></strong>,  где относительный оператор соответствует точной области, как в примере:</p>
<p><strong>Листинг 20. </strong><strong>Пример №9: Использование awk для поиска в спецефических полях<br />
</strong></p>
<pre class="displaycode"><strong>~/tmp $ <span class="boldcode">ls -l | awk '$6 == "Dec"'</span>
-rw-r--r--  3 joe joe   5096 Dec 14 14:26 archive.tar
-rw-r--r--  1 root root  238 Dec 03 08:19 README
~/tmp $</strong></pre>
<p>Смотрите <a href="http://www.ibm.com/developerworks/aix/library/au-badunixhabits.html#resources">Ресурсы</a> для лучшего понимания <code>awk</code>.</p>
<h2>Перестаньте туннелировать cat</h2>
<p>Одна с основных-но-общих ошибочного использования grep связана с отправкой в канал вывода cat в grep для поиска строки в файле. Это абсолбтно излишне и пустая трата времени, потому как утилиты, такие как <code>grep</code>, получают имя файла как аргумент. Вам просто ненадо использовать <code>cat в этом случае, как и в примере</code>:</p>
<p><strong>Листинг 21. </strong><strong>Пример №10: Использование grep с использованием cat и без<br />
</strong></p>
<pre class="displaycode"><strong>~ $ <span class="boldcode">time cat tmp/a/longfile.txt | grep and</span>
2811

real    0m0.015s
user    0m0.003s
sys     0m0.013s
~ $ <span class="boldcode">time grep and tmp/a/longfile.txt</span>
2811

real    0m0.010s
user    0m0.006s
sys     0m0.004s</strong>
~ $</pre>
<p>Эта ошибка относится к множеству средств. Поэтому большинство инструментов принимают стандартный ввод в качестве аргумента с использованием дефиса (-), даже аргумент за использование <strong>cat</strong> для множественной вставки файлов в <strong>stdin</strong> часто не действительный. В дествительности, это только необходимо для связки с каналом нескольких фильтрующих параметров <strong>cat</strong>.</p>
<h2>Вывод: Перенимайте хорошие привычки</h2>
<p>Очень хорошо получить привычки командной строки для чего-то плохого в использовании. Вредные привычки замедляют вас и часто приводят к неожиданным ошибкам. Эта статья представляет 10 новых привычек, которые могут помочь Вам отказаться от многих из наиболее распространенных ошибок. Принятие этих хороших привычек является позитивным шагом на пути к улутшении навыков владения командной строки UNIX.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.web2.com.ua/2008/04/03/10-privyichek-horoshego-ispolzovaniya-unix/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>KDE 4 rev 790000: Улучшеная стабильность и производительность</title>
		<link>http://blog.web2.com.ua/2008/04/02/kde-4-rev-790000-uluchshenaya-stabilnost-i-proizvoditelnost/</link>
		<comments>http://blog.web2.com.ua/2008/04/02/kde-4-rev-790000-uluchshenaya-stabilnost-i-proizvoditelnost/#comments</comments>
		<pubDate>Wed, 02 Apr 2008 11:11:09 +0000</pubDate>
		<dc:creator>wert2all</dc:creator>
				<category><![CDATA[KDE4]]></category>
		<category><![CDATA[перевод]]></category>

		<guid isPermaLink="false">http://blog.web2.com.ua/?p=568</guid>
		<description><![CDATA[Что-то давно я не писал о KDE и ничего не переводил. И вот сегодня подсмотрел на ЛОР с новостью о новом обзоре KDE 4 rev 790000: Better stability and performance и решил перевести. Благо, что там мало и, вместе с тем, много полезного. Это другая ревизия разрабатываемой ветки среды KDE 4. Многие из вас спрашивали, [...]]]></description>
			<content:encoded><![CDATA[<p>Что-то давно я не писал о KDE  и ничего не переводил. И вот сегодня подсмотрел на ЛОР с новостью о новом обзоре <a class="new" title="Permanent Link: KDE 4 rev 790000: Better stability and performance" rel="bookmark" href="http://polishlinux.org/kde/kde-4-rev-790000-better-stability-and-performance/" target="_blank">KDE 4 rev 790000: Better stability and performance</a> и решил перевести. Благо, что там мало и, вместе с тем, много полезного.</p>
<p><strong>Это другая ревизия разрабатываемой ветки среды KDE 4. Многие из вас спрашивали, почему так долго я не опубликовывал эту статью. Я просто ждал ревизии 790000, вот и всё. Я надеюсь, что Ваше любопытство будет удовлетворено, так как было много изменений, чтобы описать на сей раз. Я приложил все усилия.</strong><span id="more-568"></span></p>
<p><em>Author: <a class="new" href="http://jarzebski.pl/" target="_blank">Korneliusz Jarzebski</a></em></p>
<ul class="picture">
<li><img class="alignnone" src="http://blog.web2.com.ua/wp-content/uploads/8b984dd5c3c66a698799e211d0aeec7d.jpg" alt="" /></li>
</ul>
<h2>Desktop</h2>
<p><strong>Апплет Device notifier</strong> известен и ценится пользователями. Он предназначен для отслеживания 	 	присоединенных устройств использую фреймворк <strong>Solid</strong> . В этот раз была добавлена очень полезная возможность.  Я говорю о быстром отключении устройства по клику на иконку <strong>Eject/Достать</strong>.</p>
<ul class="picture">
<li><a href="http://www.jarzebski.pl/admin/store/publish/kde4_790000_device.jpg" target="_blank"><img src="http://blog.web2.com.ua/wp-content/uploads/kde4_790000_device.jpg" alt="" /></a></li>
<li>Устройства/Достать (Devices / Eject)</li>
</ul>
<p>В репозитарии <strong>KDE 4</strong> вы пока сможете найти старую копию <strong>Qt 4.4</strong>, но если вы установите одну с последних сборок этой библиотеки, то получите возможность устанавливать любые апплеты, подготовленные для <strong>Mac OS X</strong>. Конечно, эта возможность пока ещё очень нова и не стабильна и не ждите большой производительность от этого. В будущем можно ожидать лучших результатов.</p>
<ul class="picture">
<li><a href="http://www.jarzebski.pl/admin/store/fm_thumbs/cf4e8116393fc07d1aaa793fd49ba85a.jpg"><img src="http://blog.web2.com.ua/wp-content/uploads/6b3278e4e4043387aadc7f9fd2eacd02.jpg" alt="" /></a></li>
<li>Добавление нового апплета Plasma</li>
<li><a href="http://www.jarzebski.pl/admin/store/publish/kde4_790000_plasma_add_type.jpg"><img src="http://blog.web2.com.ua/wp-content/uploads/97c11809ce883d6a62007d25a00b2f3b.jpg" alt="" /></a></li>
<li>Установка нового апплета с файла</li>
</ul>
<p>Чтобы просто посмотреть, можно ли их использовать, я установил несколько апплетов <strong>Mac OS X</strong>. Пока они, кажется, способны  показываться на рабочем столе.</p>
<ul class="picture">
<li><a href="http://www.jarzebski.pl/admin/store/publish/kde4_790000_plasma_dashboard.jpg"><img src="http://blog.web2.com.ua/wp-content/uploads/80f7ac5d5dc1a3323f9452493e1d29471.jpg" alt="" /></a></li>
<li>Апплеты Mac OS X</li>
</ul>
<p>Так же доступна загрузка новых тем для <strong>Plasma</strong> с сайта <a class="http" href="http://www.kde-look.org/" target="_blank">kde-look.org</a>.</p>
<ul class="picture">
<li><a href="http://www.jarzebski.pl/admin/store/publish/kde4_790000_plasma_download.jpg"><img src="http://blog.web2.com.ua/wp-content/uploads/d729011226069d50cbca6a4793ef6c39.jpg" alt="" /></a></li>
<li>Загрузка тем Plasma</li>
<li><a href="http://www.jarzebski.pl/admin/store/fm_thumbs/0073d0bc8e2e843eba00a40ec0580d93.jpg"><img src="http://blog.web2.com.ua/wp-content/uploads/77233382743576f93c419693ca987c94.jpg" alt="" /></a></li>
<li>Выбор темы Plasma</li>
</ul>
<p>В Pager добавлена опция показа иконки работающего приложения на виртуальных десктопах.</p>
<ul class="picture">
<li><a href="http://www.jarzebski.pl/admin/store/publish/kde4_790000_pager.jpg"><img src="http://blog.web2.com.ua/wp-content/uploads/kde4_790000_pager.jpg" alt="" /></a></li>
<li>Pager</li>
</ul>
<p>Некоторые люди жалуются на невозможность добавления новой панели. Ну это добавлено, так что никаких больше жалоб!</p>
<ul class="picture">
<li><a href="http://www.jarzebski.pl/admin/store/publish/kde4_790000_add_panel.jpg"><img src="http://blog.web2.com.ua/wp-content/uploads/kde4_790000_add_panel.jpg" alt="" /></a></li>
<li>Добавление новой панели</li>
<li><a href="http://www.jarzebski.pl/admin/store/fm_thumbs/bb931bb8a2f777aab9a305a318cab2b7.jpg"><img src="http://blog.web2.com.ua/wp-content/uploads/dec5552ccffde1650e41b3985e0ea22b.jpg" alt="" width="480" height="300" /></a></li>
<li>Desktop с двумя панелями</li>
</ul>
<h2>Dolphin</h2>
<p>Файл-менеджер по-умолчанию в KDE 4 приятно меня удивил. Изменения заметны. Когда выбрать проссмотр файла, добавляеется необыкновенного виде фрейм. Так же в приятные изменения постигли панель информации о файле и добавлена возможность комментирования файла. Наиболее важным нововведением является (как я думаю) добавления облака тегов, известное с  Web 2.0 порталов.</p>
<ul class="picture">
<li><a href="http://www.jarzebski.pl/admin/store/fm_thumbs/3a5420e9efca5ef250292ece5a1c309b.jpg"><img src="http://blog.web2.com.ua/wp-content/uploads/7ed2410747600354ddbcd824492027fe.jpg" alt="" width="480" height="328" /></a></li>
<li>Dolphin</li>
<li><a href="http://www.jarzebski.pl/admin/store/publish/kde4_790000_dolphin_add_comment.jpg"><img src="http://blog.web2.com.ua/wp-content/uploads/kde4_790000_dolphin_add_comment.jpg" alt="" /></a></li>
<li>Комментирование</li>
<li><a href="http://www.jarzebski.pl/admin/store/fm_thumbs/2d98c92b8a0c1e158d56ae737ca41e92.jpg"><img src="http://blog.web2.com.ua/wp-content/uploads/c52d6278a26609b1ecff47ebfec40dea.jpg" alt="" /></a></li>
<li>Информация о файле</li>
</ul>
<h2>Konqueror</h2>
<p>Я запустил Konqueror только для того, чтобы проверить как он проходит тест <a class="http" href="http://acid3.acidtests.org/" target="_blank">Acid3</a>.</p>
<ul class="picture">
<li><a rel="lightbox[]" href="http://www.jarzebski.pl/admin/store/publish/kde4_790000_acid3.jpg"><img src="http://blog.web2.com.ua/wp-content/uploads/1403058d567f29ec23c67f5f33460306.jpg" alt="" width="480" height="359" /></a></li>
</ul>
<p>Совсем неплохо. Скоро можно ожидать 100% совместимости, хотя, с WebKit, движок Konqueror исправлен в Safari для прохождения теста Acid.</p>
<p>Я не заметил каких-либо существенных изменений. Внизу окна я заметил кнопки и полосу прокрутки, которые, я надеюсь, должны изменять масштаб выводимых элементов. Эта возможность пока не работает или я не понял для чего они.</p>
<h2>Oxygen, Bespin</h2>
<p>Часто на некоторых скриншотах сравнивают текущую тему <strong>Oxygen</strong> с <strong>Bespin</strong>.</p>
<ul class="picture">
<li><a href="http://www.jarzebski.pl/admin/store/publish/kde4_790000_oxygen.jpg"><img src="http://blog.web2.com.ua/wp-content/uploads/f36cd410e102b9f7b5ae9cd77f37ab30.jpg" alt="" /></a></li>
<li>Стиль Oxygen</li>
<li><a href="http://www.jarzebski.pl/admin/store/publish/kde4_790000_bespin.jpg"><img src="http://blog.web2.com.ua/wp-content/uploads/a4f67d7199d9533f2be722be90a98bb9.jpg" alt="" /></a></li>
<li>Стиль Bespin</li>
<li><a href="http://www.jarzebski.pl/admin/store/fm_thumbs/f0e8f461f6327a57fa0c03b167c09557.jpg"><img src="http://blog.web2.com.ua/wp-content/uploads/49b645bdf3fa936822ce2cfbf95cb65b.jpg" alt="" width="480" height="329" /></a></li>
<li>Dolphin / Bespin</li>
</ul>
<h2>Plasma</h2>
<p>Новые плагины Plasma появляются почти каждый день, и я покажу некоторые крутые и интересные. Первый апплет, который мне понравился &#8211; это <strong>Folder View</strong>, который просто показывает содержимое домашней директории.</p>
<ul class="picture">
<li><a href="http://www.jarzebski.pl/admin/store/publish/kde4_790000_plasma_folderview.jpg"><img src="http://blog.web2.com.ua/wp-content/uploads/d2cc3754ab11f93025c7f7e7276f6f49.jpg" alt="" /></a></li>
<li>Folder View</li>
</ul>
<p><strong>Picture Frame</strong> может теперь показывать картинки дня с выбранных (и поддерживаемых) web-сайтов.</p>
<ul class="picture">
<li><a href="http://www.jarzebski.pl/admin/store/fm_thumbs/efd9c92aeac32f71ffe05fc638f27657.jpg"><img src="http://blog.web2.com.ua/wp-content/uploads/9ea2a04f61b765c052d37d7f055e92e1.jpg" alt="" /></a></li>
<li>Picture Frame</li>
</ul>
<p>Ещё несколько интересных плагина я нашёл: <strong>Kate Session Applet</strong> и <strong>Konqueror Profiles Applet</strong>,  которые позволяют быстро запустить эти программы с пре-установленными настройками.</p>
<ul class="picture">
<li><a rel="lightbox[]" href="http://www.jarzebski.pl/admin/store/publish/kde4_790000_plasma_katesessionaplet.jpg"><img src="http://blog.web2.com.ua/wp-content/uploads/kde4_790000_plasma_katesessionaplet.jpg" alt="" /></a></li>
<li>Kate Session Applet</li>
<li><a rel="lightbox[]" href="http://www.jarzebski.pl/admin/store/publish/kde4_790000_plasma_konqprofapp.jpg"><img src="http://blog.web2.com.ua/wp-content/uploads/kde4_790000_plasma_konqprofapp.jpg" alt="" /></a></li>
<li>Konqueror Profiles Applet</li>
</ul>
<p><strong>В KDE 4</strong> уже много апплетов для показа <strong>RSS фидов</strong>. Некоторые с них занимают много места на экране, так как пробуют присоединить все добавленные каналы к одному. <strong>RSSNow</strong> &#8211; один с наиболее интересных апплетов, поскольку он отображает сообщения один за другим, группируя их сервисы.</p>
<ul class="picture">
<li><a rel="lightbox[]" href="http://www.jarzebski.pl/admin/store/fm_thumbs/b6a0f7e516cb4aafe8c1c9313f3f65af.jpg"><img src="http://blog.web2.com.ua/wp-content/uploads/676e45260da37852447fe9272a4733fa.jpg" alt="" width="480" /></a></li>
<li>RSSNow</li>
</ul>
<p>Другой апплет, которым я бы хотел поделится с вами &#8211; это <strong>System Command</strong>. Оно просто позволяет выполнять команды как в традиционной консоле.</p>
<ul class="picture">
<li><a rel="lightbox[]" href="http://www.jarzebski.pl/admin/store/publish/kde4_790000_plasma_systemcommand.jpg"><img src="http://blog.web2.com.ua/wp-content/uploads/b885111653665a9bb506a5a8ab95aae7.jpg" alt="" /></a></li>
<li>System Command</li>
</ul>
<p>И последний… <strong>World Clock</strong>. Я надеюсь, пояснений не требует.</p>
<ul class="picture">
<li><a href="http://blog.web2.com.ua/wp-content/uploads/kde4_790000_plasma_worldclock.jpg"><img class="alignnone size-medium wp-image-604" title="kde4_790000_plasma_worldclock" src="http://blog.web2.com.ua/wp-content/uploads/kde4_790000_plasma_worldclock-400x201.jpg" alt="" width="400" height="201" /></a></li>
<li>World Clock</li>
</ul>
<h2>KGet</h2>
<p><strong>KGet</strong> теперь богат историей закачек, которая может выводиться разными способами. Если честно, то я не на 100% уверен, что эта возможность была раньше. Я только сейчас заметил её.</p>
<ul class="picture">
<li><a href="http://blog.web2.com.ua/wp-content/uploads/51f8c46f85b1fc37a10726c3ee4a5707.jpg"><img class="alignnone size-medium wp-image-605" title="51f8c46f85b1fc37a10726c3ee4a5707" src="http://blog.web2.com.ua/wp-content/uploads/51f8c46f85b1fc37a10726c3ee4a5707-400x230.jpg" alt="" width="400" height="230" /></a></li>
<li>KGet</li>
<li><a href="http://www.jarzebski.pl/admin/store/publish/kde4_790000_kget_advanced.jpg"><img src="http://blog.web2.com.ua/wp-content/uploads/19294b63d21e8d95b94c2f6e479c060c.jpg" alt="" /></a></li>
<li>Продвинутые настройки</li>
<li><a href="http://www.jarzebski.pl/admin/store/fm_thumbs/1c82ce802652aa5835be1df582ae8b7d.jpg"><img src="http://blog.web2.com.ua/wp-content/uploads/ce6698e8927940a8086aeecd5f68a063.jpg" alt="" /></a></li>
<li>История закачек</li>
<li><a href="http://www.jarzebski.pl/admin/store/publish/kde4_790000_kget_history2.jpg"><img src="http://blog.web2.com.ua/wp-content/uploads/16876693925ed9ad2e82fe6e0744d0bd.jpg" alt="" /></a></li>
<li>Другой вид истории</li>
</ul>
<h2>KWin</h2>
<p>Один с специальных эффектов <strong>KWin</strong> позволяет лучше конфигурировать оттенки окон. Теперь можно выбирать цвет, за исключением ранее настроеных вариантов.</p>
<ul class="picture">
<li><a href="http://www.jarzebski.pl/admin/store/publish/kde4_790000_kwin_shadow.jpg"><img src="http://blog.web2.com.ua/wp-content/uploads/kde4_790000_kwin_shadow.jpg" alt="" /></a></li>
<li>KWin : настройки теней<em><br />
</em></li>
</ul>
<h2>KDE Info Center</h2>
<p><strong>В KDE Info Center</strong> добавлена информация о процессоре используя <strong>Solid</strong>.</p>
<ul class="picture">
<li><a href="http://www.jarzebski.pl/admin/store/publish/kde4_790000_proc_info.jpg"><img src="http://blog.web2.com.ua/wp-content/uploads/9463a04a61d9e44b2f340dd59b42a0c0.jpg" alt="" width="480" height="326" /></a></li>
<li>Информация о процессоре</li>
</ul>
<h2>System Settings</h2>
<p>Апплет настроек тоже притерпел некоторую шлифовку и новые возможности. Одна с лучших &#8211; это новая панель <strong>Autostart</strong>.</p>
<ul class="picture">
<li><a href="http://blog.web2.com.ua/wp-content/uploads/7d56df5049e0c568a57169265dd474df.jpg"><img class="alignnone size-medium wp-image-611" title="7d56df5049e0c568a57169265dd474df" src="http://blog.web2.com.ua/wp-content/uploads/7d56df5049e0c568a57169265dd474df-400x296.jpg" alt="" width="400" height="296" /></a></li>
<li>Продвинутые настройки<em><br />
</em></li>
</ul>
<p>Используя их, мы можем указать скрипт или программу, которая будет запускатся при запуске KDE, а также точное время когда она должна запустится.</p>
<ul class="picture">
<li><a href="http://www.jarzebski.pl/admin/store/fm_thumbs/34447b01f510579d986527ffcfb70a59.jpg"><img src="http://blog.web2.com.ua/wp-content/uploads/33021799d7a1d9e10a0a1b300921fa16.jpg" alt="" /></a></li>
<li>Autostart</li>
</ul>
<p>Из любопытства я установил две новые темы указателей мыши с <strong>Oxygen</strong>. Я сомневался в них раньше, боясь дополнительных TODO, которые они могли бы вызвать. Указатели пока не в официальном репозитарии <strong>KDE 4</strong>.</p>
<ul class="picture">
<li><a href="http://www.jarzebski.pl/admin/store/fm_thumbs/3b2512f76e1672f11bebd1394ccbc0dd.jpg"><img src="http://blog.web2.com.ua/wp-content/uploads/86d10ccd844f281a75353a86d232fb46.jpg" alt="" /></a></li>
<li>Указатели мыши</li>
<li><a href="http://www.jarzebski.pl/admin/store/publish/kde4_790000_cursors_2.jpg"><img src="http://blog.web2.com.ua/wp-content/uploads/kde4_790000_cursors_2.jpg" alt="" /></a></li>
<li>Указатели Oxygen</li>
</ul>
<p>Хороша также и  версия нового полноекранного <strong>Splash Screen</strong>.</p>
<ul class="picture">
<li><a href="http://www.jarzebski.pl/admin/store/fm_thumbs/dd6cb0a4b80c54018e2f00b9dd7998e9.jpg"><img src="http://blog.web2.com.ua/wp-content/uploads/019fabc131a6915a3661866cdf549af9.jpg" alt="" width="480" height="389" /></a></li>
<li>Splash Screen</li>
</ul>
<h2>Amarok</h2>
<p>Больше визуальных изменений в Amarok, все снова и снова! Не только поправлен вид, но и исменено поведение. Можно заметить, что стиль Amarok такой же как и аплетов Plasma, новый progress bar и возможность скрить/показать альбомы в плейлисте.</p>
<ul class="picture">
<li><a href="http://www.jarzebski.pl/admin/store/fm_thumbs/71ba72e2f115b66f1e07b30851814875.jpg"><img src="http://blog.web2.com.ua/wp-content/uploads/45e3f27f41cf21b3b8ce0905f43e0fc7.jpg" alt="" /></a></li>
<li>Amarok</li>
</ul>
<p>Много хороших изменений в модуле <strong>last.fm</strong>. Теперь мы можем использовать каналы друзей, наши собственные каналы и выбрать любой музыкальный жанр из длинного списка меток.</p>
<ul class="picture">
<li><a href="http://blog.web2.com.ua/wp-content/uploads/887f3345f7fbaaf684b474002754b065.jpg"><img class="alignnone size-medium wp-image-619" title="887f3345f7fbaaf684b474002754b065" src="http://blog.web2.com.ua/wp-content/uploads/887f3345f7fbaaf684b474002754b065-400x261.jpg" alt="" width="400" height="261" /></a></li>
<li>Last.fm</li>
</ul>
<h2>DigiKam</h2>
<p>Мы недавно рассказали о DigiKam в другой статье: <a class="new" href="http://polishlinux.org/kde/kde-4-tour-digikam-010/" target="_blank">KDE 4 Тур: digiKam 0.10</a>. Единственное изменение, замеченое мной с тех пор, &#8211; это изменение диалогового окна загрузки фотографий с цифровой камеры.</p>
<ul class="picture">
<li><a href="http://www.jarzebski.pl/admin/store/fm_thumbs/d2bb017506a29f8476d8fac036174b29.jpg"><img src="http://blog.web2.com.ua/wp-content/uploads/b5f0310c8b75a8c68c400ad708b60a1f.jpg" alt="" /></a></li>
<li>DigiKam</li>
<li><a href="http://www.jarzebski.pl/admin/store/fm_thumbs/c340c9b33a53c13c423b657825174524.jpg"><img src="http://blog.web2.com.ua/wp-content/uploads/136555882e3fe78ed2359a77440eaea3.jpg" alt="" width="480" height="422" /></a></li>
<li>Получение фото<em><br />
</em></li>
<li><a href="http://www.jarzebski.pl/admin/store/fm_thumbs/1121fe456dae933b9d4990e03d189f4b.jpg"><img src="http://blog.web2.com.ua/wp-content/uploads/1a91072fe5d97d72fabf2ed6cc679dc6.jpg" alt="" /></a></li>
<li>Информация о камере<em><br />
</em></li>
</ul>
<h2>Таймер выключения/Shutdown timer</h2>
<p>При выходе с  KDE 4, внизу экрана появляется таймер, показывая остающееся время до выхода или выключения.</p>
<ul class="picture">
<li><a href="http://www.jarzebski.pl/admin/store/publish/kde4_790000_logout.jpg"><img src="http://blog.web2.com.ua/wp-content/uploads/kde4_790000_logout.jpg" alt="" /></a></li>
<li>Выход</li>
</ul>
<h2>Стабильность и производительность</h2>
<p>Учитывая, что предыдущие ревизии были удивительно нестабильным, то я могу честно назвать этот релиз одним из самых стабильных с испытаных мною. Я получил только один crash и производительность была более чем удовлитворительна. Теперь я могу быть полностью уверен, когда выйдет ставильная ветка <strong>KDE 4.1</strong>,  я точно попрощаюсь с моим старым добрым <strong>KDE 3.5</strong>.</p>
<p><em>Оригинал этой статьи опубликован в блоге <a class="extlink" href="http://jarzebski.pl/" target="_blank">/dev/jarzebski</a>. </em></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.web2.com.ua/2008/04/02/kde-4-rev-790000-uluchshenaya-stabilnost-i-proizvoditelnost/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Функция отмены последнего действия (Undo) &#8211; это просто(Вторая часть): Срочные события</title>
		<link>http://blog.web2.com.ua/2007/11/09/funktsiya-otmenyi-poslednego-deystviya-undo-eto-prostovtoraya-chast-srochnyie-sobyitiya/</link>
		<comments>http://blog.web2.com.ua/2007/11/09/funktsiya-otmenyi-poslednego-deystviya-undo-eto-prostovtoraya-chast-srochnyie-sobyitiya/#comments</comments>
		<pubDate>Fri, 09 Nov 2007 13:12:12 +0000</pubDate>
		<dc:creator>wert2all</dc:creator>
				<category><![CDATA[javascript]]></category>
		<category><![CDATA[интернет]]></category>
		<category><![CDATA[перевод]]></category>
		<category><![CDATA[Undo]]></category>

		<guid isPermaLink="false">http://blog.web2.com.ua/2007/11/09/funktsiya-otmenyi-poslednego-deystviya-undo-eto-prostovtoraya-chast-srochnyie-sobyitiya/</guid>
		<description><![CDATA[Это вторая часть серии &#8220;Функция отмены &#8211; это просто&#8221;. Если вы их пропустили, то прочитайте первую часть [ перевод ]. В предыдущий раз рассматривали метод очереди событий, как полностью клиентскую реализацию лёгкой многоуровневой функции отмены. Я упоминал о паре обмолвок: это не работает в многопользовательской среде и не работает в время-зависимых событиях, как отправка email. [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://blog.web2.com.ua/wp-content/uploads/undo.jpg" alt="undo.jpg" class="short" />Это вторая часть серии &#8220;Функция отмены &#8211; это просто&#8221;. Если вы их пропустили, то прочитайте <a href="http://humanized.com/weblog/2007/09/14/undo-made-easy-with-ajax-part-1/" title="part 1" class="new" target="_blank">первую часть</a> [ <a href="http://blog.web2.com.ua/2007/09/24/funktsiya-otmenyi-poslednego-deystviya-undo-eto-prosto-chast-1/" title="перевод">перевод</a> ].</p>
<p>В предыдущий раз рассматривали метод очереди событий, как полностью клиентскую реализацию лёгкой многоуровневой функции отмены. Я упоминал о паре обмолвок: это не работает в многопользовательской среде и не работает в время-зависимых событиях, как отправка email. Я пропустил существенную оговорку, на которой обратил внимание один с моих читателей, Alexander Botero-Lowry: два таба, в которых открыта одна и та же страница, не синхронизируются. Я написал, как это решить с помощью <a href="http://www.humanized.com/weblog/2007/09/21/undo-made-easy-with-ajax-part-15" class="new" target="_blank">cookies</a> [ <a href="http://blog.web2.com.ua/2007/09/27/funktsiya-otmenyi-poslednego-deystviya-undo-eto-prosto-chast-15/" title="перевод" id="v2o-">перевод</a> ].<span id="more-448"></span></p>
<p>На этот раз, давайте взглянем на решение Отмены для срочных действий.  В методе очереди событий, мы могли бы подождать, пока событие &#8220;onunload&#8221;  синхронизирует действия пользователя на стороне клиента с серверной стороной. Для срочных действий, таких как отправка email, у нас нет такой роскоши. Хуже всего, что email &#8211; это не push-технология. Отправивши раз email по диким трубам Internet, оно уже не может быть не отправленным.<a href="#s">*</a> Для несчастных, которые нажали “отправить” и лишь потом осознали, что переслали томное любовное письмо своему боссу, остаётся надеяться на перебои с электроэнергией и спам-фильтры. Учитывая, как часто спам проходит последние мои фильтры, перспективы не столь хороши.</p>
<p>Электронные письма нужно отправлять вскоре после того, как пользователь нажал на &#8220;Отправить&#8221; и операцию отправки нельзя отменить. Что мы можем сделать?</p>
<p>Для решения данной проблемы мы должны обратится к интерфейсу на основе времени. Как правило, интерфейсы на основе времени  не в состоянии быть действительно годным к употреблению, потому что расчёт времени, в действительности, неправильный. Для некоторых людей оно слишком быстро, для других &#8211; медленно. Даже ваше собственное восприятие изменений времени основанно на вашей умственной нагрузке. Когда вы о о чём-то сильно думаете, вы не замечаете течение времени:  что было слишком медленно прежде, теперь будет слишком быстрым. Старая поговорка: &#8220;Время летит, когда вы веселитесь&#8221; действительна для пользовательского интерфейса. Хорошим примером недостатка интерфейса на основе времени можно увидеть в наборе текста в мобильных телефонах, но эта тема подождёт до следующей заметки.</p>
<p>Когда посылается письмо, как правило в период “<a href="http://www.askoxford.com/concise_oed/ohnosecond?view=uk" class="new" target="_blank">‘о, НЕТ! секунду</a>“— доли секунды после нажатия &#8220;отправить&#8221; — вы понимаете, что отправили письмо на неправильный адрес. Желание не посылать электронную почту, которую послали час назад, происходит, но с намного меньшей частотой. Таким образом, решение на основе времени, когда пользователь может не послать письмо, имеет смысл только на коротком промежутке времени: back-end может просто отложить посылку письма на 30-60 секунд и, если пользователь захочет отменить отправку на протяжении нормального периода времени,  back-end уберёт с очереди email и письмо не отправится.</p>
<p>Теперь, я не особенно счастлив с поддержкой интерфейса на основе времени, но я зажат ограничениями. С одной стороны, отправка электронной почты в реальном мире, действие, которое невозможно отменить. С другой стороны, письма надо отправлять живчиком. Функция отмены для срочных событий не является канонической проблемой и единственное решение, которое я вижу &#8211; это компромисс (если кто-то знает другое решение, я весь во внимании!). В целом, многие ситуации, в которой мы, как проектировщики, попадали с непроходимыми препятствиями. Лучшее, что мы можем сделать  &#8211; разрабатывать системы, которые заботятся о наиболее вероятно использованных случаях, и позволяет пользователям изящно вернуться из наиболее распространенных ошибок. Undo на основе времени не решит всех  недостатков отмены отправки письма ( это не будет помогать с ночными электронными письмами, Вы обнаружите, что послали следующим утром), но он будет ловить большинство ошибочно отправленных писем (ошибки типа “‘о, нет!’ секунду!”  и вариант “Я-нажал-на-кнопку-случайно”). И это поймает намного больше ошибочных писем, чем банальное оповещение. Оказалось, что Paul Buchheit, создатель Gmail, <a href="http://paulbuchheit.blogspot.com/2007/06/quick-all-actions-should-have-undo.html" class="new" target="_blank">тоже так думает</a>. Как жаль, что это не было реализовано— это низковисячие фрукты, которые могли бы дать Gmail больший перевес в его превосходстве.</p>
<p>Не так то и много там этого метода. Для реализации его в стиле Ajax, вам просто понадобится mutex и таймер. Когда время истекает (или при переходе со страницы), письмо будет отправлено. Более продвинутый способ предполагает установление флага на сервере наряду с серверным обратным отсчётом. В сложной частью всего этого дело заключается в том, чтобы указать время, оставшееся таким образом, чтобы не запугать пользователей. Например, обратный отсчёт времени вызывает внутреннее чувство паники:<br />
<iframe style="border: medium none ; overflow: hidden; width: 500px; height: 500px;" src="http://humanized.com/weblog/images/resources/undo/email_count_down.html" ></iframe><br />
Не хорошее чувство, неправда-ли? Взамен, медленное затухание работает лучше:<br />
<iframe style="border: medium none ; overflow: hidden; width: 500px; height: 500px;" src="http://humanized.com/weblog/images/resources/undo/email_fade_out.html" ></iframe><br />
Обратный отсчет, который не начинает считать в обратном порядке до последних 10 секунд, мог бы также работать. Это прекрасная задача &#8211; разработать механизмы красивого отображения лимита времени для отмены. Поделитесь своими мыслями в разделе комментариев. Бонусы за предложения любого вида!</p>
<p id="result_box" dir="ltr">В следующий раз я буду говорить о некоторых искусных, более надежных методах введения Отмены с помощью Ajax.</p>
<p id="footnote" style="border-top: 1px dotted #888888; color: #888888; font-size: 80%">*<a title="s" name="s"></a><br />
Есть определенные решения &#8211; хотя и не очень &#8211; для этой проблемы. Для примера, письмо может состоять только с одного вложенного рисунка в виде текста. Если картинка хранится на вашем сервере, тогда для отмены отправки email, вы просто удаляете или меняете рисунок. Это эффективно не отправит контент письма (если уже не отправило). Так что кто-то будет знать только то, что вы отправили сообщение (с темой), но не содержание.</p>
<p><strong>Перевод: </strong><a href="http://humanized.com/weblog/2007/10/22/undo_with_ajax_2/" class="new" target="_blank">Undo Made Easy with Ajax (Part 2): Time-Sensitive Actions</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.web2.com.ua/2007/11/09/funktsiya-otmenyi-poslednego-deystviya-undo-eto-prostovtoraya-chast-srochnyie-sobyitiya/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Присматриваемся  к openSUSE 10.3: Виртуализация</title>
		<link>http://blog.web2.com.ua/2007/10/17/prismatrivaemsya-k-opensuse-103-virtualizatsiya/</link>
		<comments>http://blog.web2.com.ua/2007/10/17/prismatrivaemsya-k-opensuse-103-virtualizatsiya/#comments</comments>
		<pubDate>Wed, 17 Oct 2007 06:58:33 +0000</pubDate>
		<dc:creator>wert2all</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[openSuse]]></category>
		<category><![CDATA[Sneak Peeks]]></category>
		<category><![CDATA[перевод]]></category>
		<category><![CDATA[virtualisation]]></category>

		<guid isPermaLink="false">http://blog.web2.com.ua/2007/10/17/prismatrivaemsya-k-opensuse-103-virtualizatsiya/</guid>
		<description><![CDATA[Некоторые изменения в openSUSE 10.3 гарантируют, что если вы интересуетесь каким-то типом, ныне пополярной, виртуализации, то openSUSE как раз для вас. От Xen до VirtualBox, QEMU и KVM — они все есть в новой версии. Сегодня мы будем обсуждать некоторые с этих нововведений и разговаривать с Frank Kohler, Project-менеджером по виртуализации в SUSE, который поможет [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://blog.web2.com.ua/wp-content/uploads/opensuse.jpg" alt="opensuse logo" class="short" />Некоторые изменения в openSUSE 10.3 гарантируют, что если вы интересуетесь   каким-то типом, ныне пополярной, виртуализации, то openSUSE как раз для вас.  От Xen до VirtualBox, QEMU и KVM — они все есть в новой версии. Сегодня мы  будем обсуждать некоторые с этих нововведений и разговаривать с <em>Frank Kohler</em>, Project-менеджером по виртуализации в  SUSE, который поможет  нам узнать немножечко больше.<span id="more-426"></span></p>
<h2>Виртуализация: Она доступна</h2>
<p><a href="http://en.wikipedia.org/wiki/Virtualisation" class="new">Виртуализация</a> относится к любому виду австракции физического &#8220;железа&#8221; (physical hardware) или компьютерных ресурсов. openSUSE 10.3 будет содержать несколько эмуляторов, более подходящие модули ядра и, конечно, Xen; так давайте рассмотрим их. С некоторых справочником и HOWTO по виртуализации можете взглянуть на <a href="http://en.opensuse.org/HOWTOs#Virtualisation" class="new">HOWTOs#Virtualisation</a>на wiki openSUSE.</p>
<h4>VirtualBox</h4>
<p><a href="http://en.wikipedia.org/wiki/Virtualisation" class="new">VirtualBox</a> &#8211; прекрасный новый open-source продукт с большим наборов возможностей и <a href="http://www.virtualbox.org/wiki/End-user_documentation" class="new">отличной документацией</a>. Имея прекрасные возможности в корпоративном сегменте, для рядового пользователя может быть прекрасной утилитой для проверки новых релизоы или live-CD с openSUSE и даже других операционных систем и дистрибутивов в целом.</p>
<p>Ниже вы можете увидеть VirtualBox, запущеный на openSUSE 10.3 RC1:</p>
<ul class="picture">
<li><a href="http://blog.web2.com.ua/wp-content/uploads/virtualbox.png" target="_blank"><img src="http://blog.web2.com.ua/wp-content/uploads/virtualbox_small.png" /></a></li>
</ul>
<p>Как вы видете,  интерфейс прост и дружественен. Если вам нужна помощь по установке VirtualBox  &#8211; взгляните на wiki <a href="http://opensuse.org/VirtualBox" class="new">openSUSE.org/VirtualBox</a>.</p>
<h4>   Xen 3.1</h4>
<p>openSUSE является также основой для других дистрибутивов Linux; наиболее известными являются SUSE Linux Enterprise Server (SLES) и Desktop (SLED). Это означает, что openSUSE получил все <a href="http://www.novell.com/products/server/virtualization.html" class="new">корпоративные возможности виртуализации Xen</a>, такие как:</p>
<ul>
<li>     Полная поддержка виртуализации Xen 3.1 на 32 &#8211; и 64-битные x86 архитектуры, возможность пребывания 32-разрядных гостевых виртуальных машин на 64-битных серверах.</li>
<li>     Поддержку паравиртуализации и полной виртуализации на одном сервере, увеличеную как Intel VT, так и AMD Virtualization (AMD-V) возможностями процессора.</li>
<li>     Полностью графические средсва (так и с консоли) управления виртуальными машинами для простого администрирования и настройки VM, а так же инструменты для установки  VM и поддержки всего жизненного цикла виртуальной машины.</li>
</ul>
<p>Однако, это не всё, а даже <em>больше</em>. В новый <a href="http://www.virtualization.info/2007/05/release-xen-31.html">Xen 3.1</a> включено и другие возможности, в частности решения проблем гостевых HVM : т.e. улучшения поддержки сохранения/восстановления/ мигрирования операций виртуальных машин, не поддающихся паравиртуализации (т.е. Windows). Ниже вы можете увидеть openSUSE 10.3, запущеном в Xen:</p>
<ul class="picture">
<li>   <a href="http://blog.web2.com.ua/wp-content/uploads/xen-netware.png" target="_blank"><img src="http://blog.web2.com.ua/wp-content/uploads/xen-netware_small.png" /></a></li>
<li><a href="http://blog.web2.com.ua/wp-content/uploads/xen-103.png" target="_blank"><img src="http://blog.web2.com.ua/wp-content/uploads/xen-103_small.png" /></a></li>
</ul>
<h4>   VM YaST Module</h4>
<p>Чтобы помочь в установке и настройке Xen, openSUSE будет иметь модуль <em>Install Hypervisor and Tools</em> (в пакете <em>yast2-vm</em>), которыйвыполнит множество работ за вас:</p>
<ul class="picture">
<li>   <a href="http://blog.web2.com.ua/wp-content/uploads/yast2-xen.png" target="_blank"><img src="http://blog.web2.com.ua/wp-content/uploads/yast2-xen_small.png" /></a></li>
</ul>
<p>Когда установка закончится, у вас появится 2 YaST-модуля для создание виртуальных машин и управления ими:</p>
<ul class="picture">
<li>   <img src="http://blog.web2.com.ua/wp-content/uploads/yast2-vms.png" /></li>
</ul>
<h4>   Kernel-based Virtual Machine (KVM)</h4>
<p>Также в этом релизе будет последняя инфраструктура виртуализации на базе ядра Linux &#8211; <a href="http://kvm.qumranet.com/kvmwiki" class="new">KVM</a>. KVM рассматривается как экспериментальня возможность, но она прогрессирует очень быстро. В последних версия говорят о <a href="http://kerneltrap.org/node/8148" class="new">лучшей производительности</a> и поддержке Windows Vista.</p>
<p>Модуль ядра в настоящее время работеет с модифицированой версией QEMU, так же доступном в openSUSE. Чтобы заставить эго работать, смотрите <a href="http://en.opensuse.org/KVM" class="new">openSUSE.org/KVM</a>.</p>
<h4>   More kernel modules: PARAVIRT-OPS &amp; VMI</h4>
<p>Релиз также будет включать важные модули ядра <em>paravirt-ops</em> и <em>vmi</em>  для <a href="http://www.linux-watch.com/news/NS4068384009.html" class="new">улутшения производительности</a> в <em>vmware</em>.<br />
<strong> Перевод:</strong> <a href="http://news.opensuse.org/?p=371" class="new" title="Sneak Peeks at openSUSE 10.3: Virtualisation">Sneak Peeks at openSUSE 10.3: Virtualisation</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.web2.com.ua/2007/10/17/prismatrivaemsya-k-opensuse-103-virtualizatsiya/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Присматриваемся к openSUSE 10.3: Установка в один клик</title>
		<link>http://blog.web2.com.ua/2007/09/30/prismatrivaemsya-k-opensuse-103-ustanovka-v-odin-klik/</link>
		<comments>http://blog.web2.com.ua/2007/09/30/prismatrivaemsya-k-opensuse-103-ustanovka-v-odin-klik/#comments</comments>
		<pubDate>Sun, 30 Sep 2007 05:34:46 +0000</pubDate>
		<dc:creator>wert2all</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[openSuse]]></category>
		<category><![CDATA[Sneak Peeks]]></category>
		<category><![CDATA[usability]]></category>
		<category><![CDATA[перевод]]></category>
		<category><![CDATA[]]></category>
		<category><![CDATA[install]]></category>

		<guid isPermaLink="false">http://blog.web2.com.ua/2007/09/30/prismatrivaemsya-k-opensuse-103-ustanovka-v-odin-klik/</guid>
		<description><![CDATA[Сегодня мы рассмотрим новую технологию One-Click Install, цель которой упростить управление пакетами для пользователей. Мы увидим, как она интегрирована с openSUSE Build Service и поговорим с Benjamin Weber, автором и мейнтейнером One-Click Install. One-Click Install: Установка ПО без лишних хлопот openSUSE содержит тысячи пакетов, которые часто разбросаны по разных репозитариях. Такие репозитарии как Packman, Guru’s [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://blog.web2.com.ua/wp-content/uploads/opensuse.jpg" alt="opensuse logo" class="short" />Сегодня мы рассмотрим новую технологию One-Click Install, цель которой упростить управление пакетами для пользователей. Мы увидим, как она интегрирована с  openSUSE Build Service и поговорим с  Benjamin Weber, автором и мейнтейнером  One-Click Install.<span id="more-403"></span></p>
<h2>One-Click Install: Установка ПО без лишних хлопот</h2>
<p>openSUSE содержит тысячи пакетов, которые часто разбросаны по разных репозитариях. Такие репозитарии как <a href="http://packman.links2linux.org/" class="new">Packman</a>, <a href="http://linux01.gwdg.de/%7Epbleser/" class="new">Guru’s RPM</a> и, конечно, <a href="http://opensuse.org/Build_Service" class="new">openSUSE Build Service</a>, снабжают тисячами пакетов для пользователей openSUSE. Однако, проблема в поиске пакетов, добавлении репозитария и наконец установке его. Это может быть надоедливым процессом, особенно,  намеренно используете много пакетов с разных репозитариев (тоесть, в Build Service).</p>
<p><a href="http://en.opensuse.org/Standards/One_Click_Install" class="new">One Click Install</a> решает эти проблемы.</p>
<p>В openSUSE 10.3, если вы ищете, чтобы установить приложение, в openSUSE Build Service, вы можете использовать новую <a href="http://software.opensuse.org/search">web front-end</a> для поиска, просмотра и установки приложения в один клик мышкой. Для примера, поиск Filelight (приложение для визуализации использования дискового пространства на вашем компьютере) в  openSUSE Factory показан ниже:</p>
<ul class="picture">
<li><a href="http://blog.web2.com.ua/wp-content/uploads/search-filelight.png" target="_blank"><img src="http://blog.web2.com.ua/wp-content/uploads/search-filelight_small.png" /></a></li>
</ul>
<p>После нажатия на <em>1-Click Install, </em> Вы попадете в  мастер, который будет руководить простым процессом установки приложения. Он автоматически добавит репозитарий и установит пакет. Этот процесс показан ниже:</p>
<ul class="picture">
<li><a href="http://blog.web2.com.ua/wp-content/uploads/one-click-install-1.png" target="_blank"><img src="http://blog.web2.com.ua/wp-content/uploads/one-click-install-1_small.png" /></a></li>
<li><a href="http://blog.web2.com.ua/wp-content/uploads/one-click-install-2.png" target="_blank"><img src="http://blog.web2.com.ua/wp-content/uploads/one-click-install-2_small.png" /></a></li>
<li><a href="http://blog.web2.com.ua/wp-content/uploads/one-click-install-3.png" target="_blank"><img src="http://blog.web2.com.ua/wp-content/uploads/one-click-install-3_small.png" /></a></li>
<li><a href="http://blog.web2.com.ua/wp-content/uploads/one-click-install-4.png"><img src="http://blog.web2.com.ua/wp-content/uploads/one-click-install-4_small.png" /></a></li>
<li><a href="http://blog.web2.com.ua/wp-content/uploads/one-click-install-5.png" target="_blank"><img src="http://blog.web2.com.ua/wp-content/uploads/one-click-install-5_small.png" /></a></li>
<li><a href="http://blog.web2.com.ua/wp-content/uploads/one-click-install-6.png" target="_blank"><img src="http://blog.web2.com.ua/wp-content/uploads/one-click-install-6_small.png" /></a></li>
</ul>
<p>Все это можно <em>прямо сейчас</em> испытать,  предполагая, что вы запускаете на openSUSE 10.3 Beta 1 или на  текущей openSUSE Factory с помощью Konqueror. Чтобы получить тот же эффект на Firefox, прочитайте <a href="http://dev.beryl-project.org/%7Ecyberorg/suse/49/one-click-install-opensuse-build-service/" class="new">это описание</a>.</p>
<p>Эту возможность можно будет использовать в будущем и на <a href="http://opensuse-community.org/">openSUSE-Community.org</a>.   <a href="http://packages.opensuse-community.org/" class="new">Поиск ПО</a> тоже скоро будет иметь <a href="http://benjiweber.co.uk:8080/webpin/index-test.jsp" class="new">обновлённую версию</a> с возможностью One-Click Install. Ниже еще раз пример поиска <em>filelight</em>:</p>
<ul class="picture">
<li><a href="http://blog.web2.com.ua/wp-content/uploads/software-search-install.png"><img src="http://blog.web2.com.ua/wp-content/uploads/software-search-install_small.png" /></a></li>
</ul>
<p>Нажав на одну из этих ссылок, вы так же попадете в простой мастер, как указано выше.</p>
<p><strong>Перевод:</strong> <a href="http://news.opensuse.org/?p=133" rel="bookmark" title="Permanent Link: Sneak Peeks at openSUSE 10.3: 1-Click Install" class="new">Sneak Peeks at openSUSE 10.3: 1-Click Install</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.web2.com.ua/2007/09/30/prismatrivaemsya-k-opensuse-103-ustanovka-v-odin-klik/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Присматриваемся к openSUSE 10.3: Значительное улучшение время загрузки</title>
		<link>http://blog.web2.com.ua/2007/09/29/prismatrivaemsya-k-opensuse-103-znachitelnoe-uluchshenie-vremya-zagruzki/</link>
		<comments>http://blog.web2.com.ua/2007/09/29/prismatrivaemsya-k-opensuse-103-znachitelnoe-uluchshenie-vremya-zagruzki/#comments</comments>
		<pubDate>Sat, 29 Sep 2007 10:24:47 +0000</pubDate>
		<dc:creator>wert2all</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[openSuse]]></category>
		<category><![CDATA[Sneak Peeks]]></category>
		<category><![CDATA[перевод]]></category>

		<guid isPermaLink="false">http://blog.web2.com.ua/2007/09/29/prismatrivaemsya-k-opensuse-103-znachitelnoe-uluchshenie-vremya-zagruzki/</guid>
		<description><![CDATA[openSUSE 10.3 будет заполнен многими улучшениями и новыми интересными технологиями. Чтобы позволить Вам узнать, над чем упорно трудились разработчики негласно за прошлые несколько месяцев, мы предлагаем Вам небольшой ряд заметок: Sneak Peeks at openSUSE 10.3. Сегодня мы рассмотрим новые усовершенствования времени загрузки в openSUSE. openSUSE 10.3 будет включать некоторые большие усовершенствования в init boot скриптах, [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://blog.web2.com.ua/wp-content/uploads/opensuse.jpg" alt="opensuse logo" class="short" /> openSUSE 10.3 будет заполнен многими улучшениями и новыми интересными технологиями. Чтобы позволить Вам узнать,  над чем упорно трудились разработчики  негласно за прошлые несколько месяцев, мы предлагаем Вам небольшой ряд заметок: Sneak Peeks at openSUSE 10.3. Сегодня мы рассмотрим новые усовершенствования времени загрузки в openSUSE.<span id="more-416"></span></p>
<p>openSUSE 10.3 будет включать некоторые большие усовершенствования в init boot скриптах, которые уменьшат время, которое ваш компьютер будет затрачивать на загрузку. Это результат многих разных тестов и исследований (задокументировано <a href="http://opensuse.org/Boottime" class="new">тут</a> и <a href="http://opensuse.org/Boot_time" class="new">тут</a>); первый раунд усовершенствований был уже представлен и будет готов в заключительном релизе.</p>
<h2 class="western">Тесты и дождливые дни</h2>
<p>Некоторые тесты выполнял Frank Ruell, включая использование <a href="http://en.opensuse.org/Fcache-howto" class="new">патч ядра fcache </a>, замену Ubuntu SysV init <a href="http://en.opensuse.org/Ubuntu_and_Upstart" class="new">upstart</a> и ext3 block remapper. Это мотивировало <a href="http://news.opensuse.org/?p=112" class="new">Stephan Kulow</a>, сейчас  Project Manager&#8217;а openSUSE, начать работать над этим <a href="http://www.kdedevelopers.org/node/2840" class="new">одного дождливого вик-энда</a>. Результаты чрезвычайно впечатляющие, поэтому мы запустили некоторые дополнительные тесты с bootchart, чтобы  получить конкретные цифры.</p>
<p>Все результаты ниже получены на Sony Vaio VGN-FE11S с установкой по-умолчанию, локальными пользователями и IP  сконфигурирован через  DHCP. Загрузка openSUSE 10.2, к  сожалению, довольно медленна. Понадобилось 55 секунд, чтобы загрузится с экрана загрузчика (GRUB) к окну логина (везде использован KDM); в <a href="http://news.opensuse.org/?p=106" target="_blank" class="new">openSUSE 10.3 Beta 1</a> на это потрачено всего 27секунд!</p>
<p>Ниже приведены соответствующие графики загрузки:</p>
<ul class="picture">
<li><a href="http://blog.web2.com.ua/wp-content/uploads/bootchart-27.png" target="_blank"><img src="http://blog.web2.com.ua/wp-content/uploads/bootchart-27_small.png" /></a></li>
<li><a href="http://blog.web2.com.ua/wp-content/uploads/bootchart-kdm.png" target="_blank"><img src="http://blog.web2.com.ua/wp-content/uploads/bootchart-kdm_small.png" /></a></li>
</ul>
<p><strong>Перевод</strong>: <a href="http://news.opensuse.org/?p=104" rel="bookmark" title="Permanent Link to Sneak Peeks at openSUSE 10.3: Greatly Improved Boot Time" class="new">Sneak Peeks at openSUSE 10.3: Greatly Improved Boot Time</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.web2.com.ua/2007/09/29/prismatrivaemsya-k-opensuse-103-znachitelnoe-uluchshenie-vremya-zagruzki/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Присматриваемся к openSUSE 10.3: Однодисковая инсталляция и поддержка мультимедиа</title>
		<link>http://blog.web2.com.ua/2007/09/28/prismatrivaemsya-k-opensuse-103-odnodiskovaya-installyatsiya-i-podderzhka-multimedia/</link>
		<comments>http://blog.web2.com.ua/2007/09/28/prismatrivaemsya-k-opensuse-103-odnodiskovaya-installyatsiya-i-podderzhka-multimedia/#comments</comments>
		<pubDate>Fri, 28 Sep 2007 21:15:16 +0000</pubDate>
		<dc:creator>wert2all</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Novell]]></category>
		<category><![CDATA[openSuse]]></category>
		<category><![CDATA[Sneak Peeks]]></category>
		<category><![CDATA[перевод]]></category>
		<category><![CDATA[]]></category>
		<category><![CDATA[instalation]]></category>
		<category><![CDATA[multimedia]]></category>

		<guid isPermaLink="false">http://blog.web2.com.ua/2007/09/28/prismatrivaemsya-k-opensuse-103-odnodiskovaya-installyatsiya-i-podderzhka-multimedia/</guid>
		<description><![CDATA[Уже сегодня 28 сентября, и если внимательно приссмотреться к плану выпуска openSUSE 10.3, то можно заметить, что сегодня выпущен релиз, но для внутреннего использования. А вот что будет в этом релизе? Я уже писал чуточку, маленькие выжимки с плана, но этого маловато. А вот на новосном сайте openSUSE иногда появляются заметочки с описанием. И вот [...]]]></description>
			<content:encoded><![CDATA[<blockquote><p><img src="http://blog.web2.com.ua/wp-content/uploads/opensuse.jpg" alt="opensuse logo" class="short" />Уже сегодня 28 сентября, и если внимательно приссмотреться к <a href="http://en.opensuse.org/Roadmap/10.3" target="_blank" class="new">плану выпуска openSUSE 10.3</a>, то можно заметить, что сегодня выпущен релиз, но для внутреннего использования. А вот что будет в этом релизе? Я <a href="http://blog.web2.com.ua/2007/05/12/planyi-vyipuska/" target="_blank" class="new">уже писал чуточку</a>, маленькие выжимки с плана, но этого маловато. А вот на <a href="http://news.opensuse.org/?p=265" target="_blank" class="new">новосном сайте openSUSE</a> иногда появляются заметочки с описанием. И вот первый перевод нового в этом релизе.</p></blockquote>
<p><span id="more-396"></span></p>
<h2>Присматриваемся к openSUSE 10.3: однодисковая инсталляция и поддержка мультимедиа</h2>
<p>В openSUSE 10.3 ожидается многие изменения в выборе устройств инсталляции; наиболее важным с которых является установка с одного CD для KDE и одного CD для GNOME. Поддержка мультимедиа в дистрибутиве тоже будет улучшена поддержкой  MP3 из «коробки» для Banshee и <a href="http://opensuse.org/Amarok" class="new">Amarok</a>. Сегодня мы представляем вам специальную двойную историю о этих нововведениях и  будем разговаривать <a href="http://en.opensuse.org/User:Sprudel24" class="new">Michael Löffler</a>, продукт-менеджером openSUSE, чтобы лучше это понять.</p>
<h2>Изменения в источниках установки</h2>
<h4>Однодисковая установка</h4>
<p>В прошлом, релизы openSUSE изначально представлялись свыше пяти open source software (OSS) CD-дисками, одним необязательным non-oss дополнительным CD  или одним DVD, который включал все эти диски. Однако, вам надо было только 3 с 5 первых OSS дисков для установки по-умолчанию с KDE и GNOME, и это не рассматривалось как идеальный сценарий. DVD предоставлял все нужные пакеты и и давал возможность пользователю выбрать рабочую среду, но он был 3.7 GB, что может быть лишними хлопотами для загрузки на маленькой скорости.</p>
<p>Итак, что же изменилось? Теперь 5 OSS CD-дисков были полностью убраны и заменены на 2 новых CD:</p>
<ul>
<li>1 OSS CD для полной установки с KDE;</li>
<li>1 OSS CD для полной установки с GNOME.</li>
</ul>
<p>Они могут быть совмещены с всё-ещё существующим non-OSS CD, чтобы предоставить вам дополнительное мультимедийное и проприетарное ПО, если вы в нём нуждаетесь. На этом диске находится только английский язык, но инсталлятор будет устанавливать все нужные пакеты с языками для вас, если вы выберете другой язык и включите опцию, о которой поговорим сейчас.</p>
<h4 class="western">Добавление репозиториев перед установкой</h4>
<p>Необычайно приятная возможность в инсталяторе openSUSE 10.3  &#8211; новая возможность добавления репозитария <em>до</em> установки. openSUSE всегда имел установку по умолчанию для каждой настольной среды, но также установщик давал вам возможность выбрать, какие пакеты вы хотели установить.</p>
<p align="center"><img src="http://blog.web2.com.ua/wp-content/uploads/more-repos1.png" /></p>
<p>Теперь вы имеете больше выбора, когда вы выберете “Add Online Repositories Before Installation” («Добавить репозитарий перед установкой»)  (в окне “Install/Upgrade”). Это даст вам возможность добавить OSS, не-OSS и DEBUG репозитарии перед установкой любого пакета! Вы имеете  доступ к тысячи пакетов и всё до установки. Ваша новая установка начнется точно с того программного обеспечения, которое вы заходите, следовательно лишает лишних хлопот по проделыванию этого позже.</p>
<h4>Установка по сети “Просто Работает”!</h4>
<p>Пользователи, пользующиеся установкой по сети будут рады узнать, что ненадо больше  мучатся с набор разной информации, такой как IP-адресс. Установка  “просто работает” и может быть использована любым пользователем. Это предложение для тех пользователей, которые хотят устанавливать <em>только</em> то ПО, которое им нужно.</p>
<h4>Один DVD: KDE, GNOME и множество другого</h4>
<p>Дальше-больше, DVD все еще имеется для тех, кто хочет иметь  выбор с обеих рабочих сред, а также многое другое дополнительное программное обеспечение. Он также доступен для x86, x86_64 <em>и</em> PPC.</p>
<h2 class="western">Мультимедийные кодеки</h2>
<p>openSUSE постоянно пытается улучшить удобства «из коробки» для всех пользователей. Чтобы узнать еще больше о том, что пользователи считают нужным, openSUSE сделало обследование и в нем приняло участие свыше 27000 человек. Результаты этого исследования, конечно,  <a href="http://lists.opensuse.org/opensuse-project/2007-05/msg00043.html" class="new">может просмотреть каждый</a> (прим. пер. или мой вольный перевод) и оно показало, что больше 69% пользователей сочли поддержку мультимедиа важной или очень важной. Эти жалобы не остались без внимания.</p>
<h4>Amarok с поддержкой MP3</h4>
<p><a href="http://opensuse.org/Amarok"><img src="http://blog.web2.com.ua/wp-content/uploads/amarok.png" align="left" /></a>В openSUSE 10.3, Amarok — популярный KDE аудио-проигрыватель — будет иметь поддержку MP3  прямо с не-OSS репозитария или работать «из коробки» на DVD. Спасибо плагину <em>yauap</em> Gstreamer, доступный на <a href="http://fluendo.com/" class="new" target="_blank">Fluendo</a>. Это значительный шаг вперед для всех пользователей KDE или Amarok приверженцам в openSUSE.</p>
<h4>Инсталятор кодеков openSUSE</h4>
<p>Вы могли бы думать, что будет с пользователями, которые сделали простую  установку с одного диска KDE и не захотели добавлять репозитарии по умолчанию. Добавление не-OSS репозитария всегда вариант, но самое интуитивное решение для большинства пользователей компьютеров. Это не прошло незамеченным и решение этого  &#8211;  <em>openSUSE Codec Installer</em>.</p>
<p>Теперь, с полностью OSS установкой, если вы попробуете проиграть MP3 (в Amarok <em>или</em><em> Banshee</em>) , вы получите красивое маленькое диалоговое окно, что Вы пытаетесь играть звуковой файл, который в настоящее время не поддерживается:</p>
<p align="center"><img src="http://blog.web2.com.ua/wp-content/uploads/amarok-mp31.png" /></p>
<p>Как вы можете видеть, оно даёт возможность установить дополнительный кодек обеспечивающий поддержку MP3. Эта ссылка сопроводит вас туда, где вам просто необходимо лишь нажать на одну ссылку, используя <a href="http://news.opensuse.org/?p=133" class="new">One-Click-Install</a> (<a href="http://blog.web2.com.ua/2007/09/30/prismatrivaemsya-k-opensuse-103-ustanovka-v-odin-klik/" target="_blank">перевод</a>) установит кодек Fluendo GStreamer для вас (нет возможности в RC1, но будет в финальном релизе) и даст возможность играть MP3 сразу! Кроме того, оно также содержит ссылки на сайт сообщества, который дает консультации по другим свободных форматах и предлагает решения для других мультимедийных программ:</p>
<p align="center"><a href="http://software.opensuse.org/codecs?client_version=10.3.1&amp;lang=en_GB.UTF-8&amp;os_release=openSUSE%2010.3%20%28i586%29&amp;kernel=2.6.22.5-23-default&amp;gstreamer=gstreamer010-0.10.13-30&amp;xine=libxine1-1.1.8-0.pm.0"><img src="http://blog.web2.com.ua/wp-content/uploads/community-repos1.png" /></a></p>
<h4>Banshee</h4>
<p>В openSUSE 10.2 пользователям была предоставлена поддержка MP3, если они используют Helix Banshee, но в openSUSE 10.3 вы можете использовать один и тот же кодек Fluendo MP3 в вашей обычной Banshee!</p>
<p align="center"><img src="http://blog.web2.com.ua/wp-content/uploads/helix-banshee.png" /></p>
<h2>Попробуйте!</h2>
<p>Вы можете проверить это все  ( за исключением 1-click install для кодеков Amarok), взяв  <a href="http://news.opensuse.org/?p=305" class="new" target="_blank">openSUSE 10.3 Release Candidate</a> уже сейчас.</p>
<p><strong>Перевод:</strong> <a href="http://news.opensuse.org/?p=325" rel="bookmark" title="Permanent Link: Sneak Peeks at openSUSE 10.3: 1-CD Installation &amp; Multimedia support" class="new">Sneak Peeks at openSUSE 10.3: 1-CD Installation &amp; Multimedia support</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.web2.com.ua/2007/09/28/prismatrivaemsya-k-opensuse-103-odnodiskovaya-installyatsiya-i-podderzhka-multimedia/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

