<?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>Блог маленького, но очень отважного программиста &#187; Перевод</title>
	<atom:link href="http://xo66ut.ru/archives/tag/perevod/feed" rel="self" type="application/rss+xml" />
	<link>http://xo66ut.ru</link>
	<description>PHP, MySQL, Javascript, JQuery, ExtJS, UML, и другие интернетости...…</description>
	<lastBuildDate>Tue, 04 Oct 2011 08:40:28 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>5 Распространенных мифов о Javascript</title>
		<link>http://xo66ut.ru/archives/383</link>
		<comments>http://xo66ut.ru/archives/383#comments</comments>
		<pubDate>Wed, 05 May 2010 11:36:39 +0000</pubDate>
		<dc:creator>Xo66uT</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Перевод]]></category>
		<category><![CDATA[ActionScript]]></category>
		<category><![CDATA[ООП]]></category>

		<guid isPermaLink="false">http://xo66ut.ru/?p=383</guid>
		<description><![CDATA[
Несмотря на то, что Javascript это один из самых популярных языков в мире, он до сих пор недооценивается и является непонятным для многих людей. Ситуация улучшилась в течении последних нескольких лет, но следующие мифы до сих пор блуждают по просторам web.
1. Javascript == Java
Разработчик из Соединенного Королевства (UK) Jeremy Keith, придумал такое определение этому мифу:
Java [...]]]></description>
			<content:encoded><![CDATA[<p><img style="padding: 10px; border: 0pt none;" title="javascript" src="http://xo66ut.ru/wp-content/uploads/2010/05/javascript.jpg" alt="Мифы о Javascript" width="320" height="194" /><br />
Несмотря на то, что Javascript это один из самых популярных языков в мире, он до сих пор недооценивается и является непонятным для многих людей. Ситуация улучшилась в течении последних нескольких лет, но следующие мифы до сих пор блуждают по просторам web.<span id="more-383"></span></p>
<h2>1. <strong>Javascript</strong> == Java</h2>
<p>Разработчик из Соединенного Королевства (UK) <em>Jeremy Keith</em>, придумал такое определение этому мифу:</p>
<blockquote><p><strong>Java </strong>это такой же <strong>Javascript</strong>, как <strong>ham</strong> (ветчина) и <strong>hamster </strong>(хомяк).</p></blockquote>
<p>Схожи только имена, но <strong>Java </strong>и <strong>JavaScript </strong>не связаны между собой.  Есть целый ряд поверхностных сходств, но такие же сходства можно найти и в других любых двух языках, имеющих C-подобный синтаксис.</p>
<p>Первоначально язык <strong>Javascript </strong>назывался <strong>Mocha</strong>, в какой-то момент стал <strong>LiveScript</strong>, и наконец стал называться <strong>Javascript </strong>в тот момент, когда язык <strong>Java </strong>был провозглашен спасителем жизни, вселенной и всего остального. Название всего лишь маркетинговых ход компании <strong>Netscape </strong>и ничего более.</p>
<h2>2. <strong>Javascript </strong>&#8220;игрушечный&#8221; язык.</h2>
<p>Часть &#8220;script&#8221; в названии языка, создаем обманчивое впечатление, что это урезанная, макро версия <strong>Java. </strong>Это не так. Во всяком случае, популярные &#8220;фичи&#8221; <strong>JavaScript,</strong> такие как <strong>замыкания </strong>и <strong>лямбда-функции </strong>в настоящее время оказали влияние на другие языки, такие как <strong>PHP</strong>, <strong>C#</strong> и наконец сам <strong>Java</strong>.</p>
<p><strong>Javascript </strong>наиболее часто встречается в виде встроенного в браузер интерпретатора, но это не означает, что он менее мощный в отличие от компилируемых языков программирования.</p>
<h2>3. <strong>Javascript </strong>есть только в браузерах.</h2>
<p>Большинство людей используют <strong>Javascript </strong>в качестве языка встроенного в браузер, но его (как и другие языки основанные на стандарте ECMAScript ) можно найти во многих других местах, таких например как:</p>
<ul>
<li>Браузер <strong>Mozilla Firefox</strong> и почтовый клиент <strong>Thunderbird </strong>используют <strong>Javascript </strong>для некоторых прикладных процессов.</li>
<li><strong>Flash ActionScript</strong> основан на<strong> Javascript.</strong></li>
<li><strong>PDF </strong>файлы могут содержать встроенный <strong>Javascript</strong>.</li>
<li>Множество десктоп виджетов от <strong>Microsoft </strong>и <strong>Apple </strong>используют <strong>Javascript</strong>.</li>
<li><strong>OpenOffice.org</strong> обеспечаивает поддержку <strong>Javascript</strong>.</li>
<li><strong>webOS</strong>, используемый в мобильных устройствах <strong>Palm</strong>, применяет <strong>Javascript</strong>, как язык для приложений.</li>
<li><strong>Javascript </strong>может быть использован для создания приложений в <strong>Gnome </strong>и в качестве скриптового языка в <strong>Windows</strong>.</li>
</ul>
<p><strong>Javascript </strong>пока не имеет полноценной серверной реализации, хотя несколько десятков хороших реализаций существует. День, когда мы сможем использовать <strong>Javascript </strong>и для серверной и для клиентской части когда-нибудь наступит, но непонятно, как скоро.</p>
<h2>4. <strong>Javascript</strong> до сих пор не отлажен и имеет множество багов.</h2>
<p>Эти дни давно уже стали преданием. Все производители браузеров соблюдают стандарт <strong>ECMAScript </strong>и очень редко можно встретить дополнительные фунции в <strong>Javascript</strong>.</p>
<p>Тем не менее реализация в браузерах не всегда одинакова: различные особенности манипуляции DOM объектами, особенности обработки событий, и причуды браузера могут доставить не мало головной боли при разработке. Это не вина самого языка, это проблема браузеров, через которые <strong>Javascript </strong> получает доступ к его, браузера, объектам.</p>
<h2>5. <strong>Javascript</strong> не Объектно-ориентированный язык.</h2>
<p>Путаница возникает оттого, что <strong>Javascript </strong>не<strong> </strong>использует привычные способы организации объектов. Отсутствие ключевого слово &#8220;<em>class</em>&#8221; заставляет разработчиков думать, что <strong>Javascript </strong>это функциональный язык программирования.</p>
<p><strong>Javascript </strong>предлагает модель прототипов. Это действительно потрясающе, вы можете писать, как функциональный код, так и организовывать код в классический объект с частными методами и свойствами.</p>
<p>Кроме того, все в <strong>Javascript </strong>является объектами, даже типы данных и функции. А как вам такое:</p>
<pre class="brush: jscript;">
var x = new Number(123);
var opp = &quot;oops&quot;.substr(0,3);
var f = function() { return function() { alert(&quot;hello!&quot;); }; };
</pre>
<p>Как насчет передачи функции в виде параметра:</p>
<pre class="brush: jscript;">
var Add = function(a, b) { return a + b; };
function Calculate(func, a, b) {
	return func(a, b);
}
var s = Calculate(Add, 1, 2); // s = 3
</pre>
<p>Или вы хотите расширить собственные типы ?</p>
<pre class="brush: jscript;">
// reverse any string
String.prototype.Reverse = function() {
	return this.split(&quot;&quot;).reverse().join(&quot;&quot;);
};
var h1 = &quot;Hello!&quot;;
var h2 = h1.Reverse(); // !olleH
</pre>
<p><strong>Javascript </strong>на первый взгляд может показаться непонятным, но вы поймете его элегантность и мощь, когда опять будете программировать на своем основном языке.</p>
<p>Вы все еще верите в эти мифы ?</p>
<p><em>Источник: <a href="http://www.sitepoint.com/blogs/2010/04/27/5-common-javascript-myths/" target="_blank">http://www.sitepoint.com/</a></em></p>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 349px; width: 1px; height: 1px; overflow: hidden;">JavaScript</div>
<img src="http://xo66ut.ru/?ak_action=api_record_view&id=383&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://xo66ut.ru/archives/383/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Раширение классов в ExtJS</title>
		<link>http://xo66ut.ru/archives/275</link>
		<comments>http://xo66ut.ru/archives/275#comments</comments>
		<pubDate>Fri, 23 Apr 2010 07:12:51 +0000</pubDate>
		<dc:creator>Xo66uT</dc:creator>
				<category><![CDATA[ExtJS]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Перевод]]></category>
		<category><![CDATA[Ext.extend]]></category>
		<category><![CDATA[xtype]]></category>

		<guid isPermaLink="false">http://xo66ut.ru/?p=275</guid>
		<description><![CDATA[Цель.
Давайте добавим функциональности к Ext.form.Combobox, сделаем так, чтобы перед каждым элементом списка отображалась иконка.

Давайте назовем наш плагин Ext.ux.IconCombo, а также зарегистрируем для него xtype iconcombo.

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

iconcombo.html: HTML код приложения, которое будет содержать наш плагин. Чтобы сделать этот пример более простым, этот файл также будет [...]]]></description>
			<content:encoded><![CDATA[<h2>Цель.</h2>
<p>Давайте добавим функциональности к Ext.form.Combobox, сделаем так, чтобы перед каждым элементом списка отображалась иконка.<br />
<a href="http://xo66ut.ru/wp-content/uploads/2010/04/IconComboExt2.png"><img class="aligncenter size-full wp-image-346" title="IconComboExt2" src="http://xo66ut.ru/wp-content/uploads/2010/04/IconComboExt2.png" alt="ExtJS Combobox" width="175" height="97" /></a></p>
<p>Давайте назовем наш плагин <strong>Ext.ux.IconCombo</strong>, а также зарегистрируем для него <strong>xtype</strong> <strong>iconcombo</strong>.</p>
<p><span id="more-275"></span></p>
<h2>Создаем файлы.</h2>
<p>Наш первый шаг заключается в том, чтобы подготовить файлы для нашего плагина.</p>
<ul>
<li><strong>iconcombo.html</strong>: HTML код приложения, которое будет содержать наш плагин. Чтобы сделать этот пример более простым, этот файл также будет содержать Javascript код и CSS. В реальном приложении нужно хранить отдельно код и стили.</li>
<li><strong>Ext.ux.IconCombo.js: </strong>Javascript код нашего плагина.</li>
</ul>
<h2>iconcombo.html</h2>
<pre class="brush: xml;">
&lt;html&gt;
&lt;head&gt;
    &lt;meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html; charset=utf-8&quot;&gt;
    &lt;link rel=&quot;stylesheet&quot; type=&quot;text/css&quot; href=&quot;../extjs-2.0/resources/css/ext-all.css&quot;&gt;
    &lt;script type=&quot;text/javascript&quot; src=&quot;../extjs-2.0/adapter/ext/ext-base.js&quot;&gt;&lt;/script&gt;
    &lt;script type=&quot;text/javascript&quot; src=&quot;../extjs-2.0/ext-all-debug.js&quot;&gt;&lt;/script&gt;
    &lt;script type=&quot;text/javascript&quot; src=&quot;Ext.ux.IconCombo.js&quot;&gt;&lt;/script&gt;

    &lt;style type=&quot;text/css&quot;&gt;
    .ux-flag-us {
        background-image:url(../img/flags/us.png) ! important;
    }
    .ux-flag-de {
        background-image:url(../img/flags/de.png) ! important;
    }
    .ux-flag-fr {
        background-image:url(../img/flags/fr.png) ! important;
    }
    .ux-icon-combo-icon {
        background-repeat: no-repeat;
        background-position: 0 50%;
        width: 18px;
        height: 14px;
    }

    /* X-BROWSER-WARNING: this is not being honored by Safari */
    .ux-icon-combo-input {
        padding-left: 25px;
    }

    .x-form-field-wrap .ux-icon-combo-icon {
        top: 3px;
        left: 5px;
    }
    .ux-icon-combo-item {
        background-repeat: no-repeat ! important;
        background-position: 3px 50% ! important;
        padding-left: 24px ! important;
    }
    &lt;/style&gt;

    &lt;script type=&quot;text/javascript&quot;&gt;
Ext.BLANK_IMAGE_URL = '../extjs-2.0/resources/images/default/s.gif';
Ext.onReady(function() {
    var win = new Ext.Window({
        title:'Icon Combo Ext 2.0 Extension Class Example',
        width:400,
        height:300,
        layout:'form',
        bodyStyle:'padding:10px',
        labelWidth:70,
        defaults:{anchor:'100%'},
        items:[{
            xtype:'iconcombo',
            fieldLabel:'IconCombo',
            store: new Ext.data.SimpleStore({
                    fields: ['countryCode', 'countryName', 'countryFlag'],
                    data: [
                        ['US', 'United States', 'ux-flag-us'],
                        ['DE', 'Germany', 'ux-flag-de'],
                        ['FR', 'France', 'ux-flag-fr']
                    ]
            }),
            valueField: 'countryCode',
            displayField: 'countryName',
            iconClsField: 'countryFlag',
            triggerAction: 'all',
            mode: 'local'
        }]
    });
    win.show();
});
    &lt;/script&gt;
    &lt;title&gt;Icon Combo Ext 2.0 Extension Class Example&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;/body&gt;
&lt;/html&gt;
</pre>
<p>Этот файл помимо html разметки содержит функцию фасад &#8211; <strong>onReady</strong>, которая создает окно с формой, а на ней единственный элемент наш iconcombo. Будьте внимательны, в этом примере реальной формы не создается (тега &lt;form&gt; нет). Хранилище (<strong>store</strong>) iconcombo содержит уже заполненые данные для тестирования.</p>
<p>Вам необходимо изменить пути к файлам ExtJS, если он установлен в другом месте.</p>
<p>Вам, возможно, также понадобится поменять пути к изображениям флагов.</p>
<h2>Ext.ux.IconCombo.js</h2>
<pre class="brush: jscript;">
// vim: ts=4:sw=4:nu:fdc=2:nospell
/**
  * Ext.ux.IconCombo Extension Class for Ext 2.x Library
  *
  * @author  Ing. Jozef Sakalos
  * @version $Id: Ext.ux.IconCombo.js 617 2007-12-20 11:29:56Z jozo $
  *
  * @class Ext.ux.IconCombo
  * @extends Ext.form.ComboBox
  */
Ext.ux.IconCombo = Ext.extend(Ext.form.ComboBox, {
    initComponent:function() {

        // call parent initComponent
        Ext.ux.IconCombo.superclass.initComponent.call(this);

    } // end of function initComponent
});

// register xtype
Ext.reg('iconcombo', Ext.ux.IconCombo);

// end of file
</pre>
<p>Первый шаг в расширении класса, это создание дополнения, которое не изменяет функциональности родительского класса. Таким образом мы можем быть уверены, что родительский класс отлично работает, и добавленный нами функционал не затронет его работу.</p>
<p>Javascript файл выше делает именно это.</p>
<h2>Теория.</h2>
<p>Чтобы расширить класс в ExtJS мы не должны создавать функцию-конструктор. Нам просто нужно присвоить значение возвращаемое функцией <strong>Ext.extend</strong> при ее вызове в нашем пространстве имен. <strong>Ext.extend</strong> получает в качестве аргументов родительский класс и конфиг (функционал расширения) в качестве второго аргумента, и возвращает наш класс-раширение.</p>
<p>Все что мы раньше делали в конструкторе в старых версиях Ext 1.x, теперь делается в методе <strong>initComponent</strong>, который мы перезаписываем в родительском классе. <strong>initComponent </strong>это метод-конструктор родительского класса.</p>
<p>Тем не менее метод <strong>initComponent </strong>родительского класса содержит полезный код, который должен быть выполнен. Вы можете посмотреть как мы вызываем метод <strong>initComponent </strong>родительского класса в приведенном выше коде. Модель вызова метода родителя, одинакова для все функции, которые мы переопределяем в классе.</p>
<p>Регистрации <strong>xtype </strong>для нашего расширения не является обязательной, но это очень удобно, вы можете вызывать расширение просто набрав несколько символов имени его <strong>xtype</strong>. То есть точно также, как показано в этом примере.</p>
<h2>Приступим.</h2>
<p>Пока все хорошо. Теперь если открыть <strong>iconcombo.html</strong>, вы должны увидеть стандартный <strong>combobox</strong> с тремя значениями и выбранной Германией. Пока конечно же никаких иконок.</p>
<p>Теперь пришло время поработать. Добавьте следующие строки в <strong>Ext.ux.IconCombo.js </strong>перед вызовом родительского метода <strong>initComponent</strong>:</p>
<pre class="brush: jscript;">
Ext.apply(this, {
            tpl:  '&lt;tpl for=&quot;.&quot;&gt;'
                + '&lt;divst0&quot;&gt;'{' + this.iconClsField + '}&quot;&gt;'
                + '{' + this.displayField + '}'
                + '&lt;/div&gt;&lt;/tpl&gt;'
        });
</pre>
<p>В этом коде мы переопределяем стандартные элементы <strong>combobox </strong>нашими, которые будут использовать css класс <strong>iconClsField.</strong></p>
<p>Отлично, готовы протестировать ? Обновите страницу, круто да ?</p>
<p>Замечательно у нас красивые значки при открытии списка, но мы также хотим видеть флаг, когда <strong>combobox </strong>закрыт, не так ли ?</p>
<p>Добавьте следующий код после окончания кода метода <strong>initComponent</strong>:</p>
<pre class="brush: jscript;">
onRender:function(ct, position) {
        // call parent onRender
        Ext.ux.IconCombo.superclass.onRender.call(this, ct, position);

        // adjust styles
        this.wrap.applyStyles({position:'relative'});
        this.el.addClass('ux-icon-combo-input');

        // add div for icon
        this.icon = Ext.DomHelper.append(this.el.up('div.x-form-field-wrap'), {
            tag: 'div', style:'position:absolute'
        });
    }, // end of function onRender

    setIconCls:function() {
        var rec = this.store.query(this.valueField, this.getValue()).itemAt(0);
        if(rec) {
            this.icon.className = 'ux-icon-combo-icon ' + rec.get(this.iconClsField);
        }
    }, // end of function setIconCls

    setValue: function(value) {
        Ext.ux.IconCombo.superclass.setValue.call(this, value);
        this.setIconCls();
    } // end of function setValue
</pre>
<p>Вызов события <strong>onRender </strong>сначала вызывает родительский метод <strong>onRender</strong>, а потом добавляет стили и div&#8217;ы с иконками.</p>
<p>Мы также добавляем метод <strong>setIconCls </strong>и перезаписываем родительский метод <strong>setValue. </strong>Конечно мы хотим, чтобы родительский метод <strong>setValue </strong>тоже выполнился, поэтому мы сначала вызываем его, а потом выполняем наш метод <strong>setIconCls.</strong></p>
<h2>Окончание.</h2>
<p>Теперь последние испытание: перезагрузите страницы. Если вы при копировании примера не сделали ошибок вы получили новое расширение <strong>Ext.ux.IconCombo</strong>. Конечно<strong> </strong>можно еще усовершенствовать наше расширение, но это только лишь пример, как раcширять классы в ExtJS.</p>
<h2>Окончательный код.</h2>
<p>Вот полный код того, что у нас получилось:</p>
<pre class="brush: jscript;">
// vim: ts=4:sw=4:nu:fdc=2:nospell
/**
  * Ext.ux.IconCombo Extension Class for Ext 2.x Library
  *
  * @author  Ing. Jozef Sakalos
  * @version $Id: Ext.ux.IconCombo.js 617 2007-12-20 11:29:56Z jozo $
  *
  * @class Ext.ux.IconCombo
  * @extends Ext.form.ComboBox
  */
Ext.ux.IconCombo = Ext.extend(Ext.form.ComboBox, {
    initComponent:function() {

        Ext.apply(this, {
            tpl:  '&lt;tpl for=&quot;.&quot;&gt;'
                + '&lt;divst0&quot;&gt;'{' + this.iconClsField + '}&quot;&gt;'
                + '{' + this.displayField + '}'
                + '&lt;/div&gt;&lt;/tpl&gt;'
        });

        // call parent initComponent
        Ext.ux.IconCombo.superclass.initComponent.call(this);

    }, // end of function initComponent

    onRender:function(ct, position) {
        // call parent onRender
        Ext.ux.IconCombo.superclass.onRender.call(this, ct, position);

        // adjust styles
        this.wrap.applyStyles({position:'relative'});
        this.el.addClass('ux-icon-combo-input');

        // add div for icon
        this.icon = Ext.DomHelper.append(this.el.up('div.x-form-field-wrap'), {
            tag: 'div', style:'position:absolute'
        });
    }, // end of function onRender

    setIconCls:function() {
        var rec = this.store.query(this.valueField, this.getValue()).itemAt(0);
        if(rec) {
            this.icon.className = 'ux-icon-combo-icon ' + rec.get(this.iconClsField);
        }
    }, // end of function setIconCls

    setValue: function(value) {
        Ext.ux.IconCombo.superclass.setValue.call(this, value);
        this.setIconCls();
    } // end of function setValue
});

// register xtype
Ext.reg('iconcombo', Ext.ux.IconCombo);

// end of file
</pre>
<p><em>Источник: <a href="http://www.extjs.com/learn/Tutorial:Extending_Ext2_Class" target="_blank">http://www.extjs.com/learn/Tutorial:Extending_Ext2_Class.</a></em></p>
<img src="http://xo66ut.ru/?ak_action=api_record_view&id=275&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://xo66ut.ru/archives/275/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Сегодня был анонсирован выход Silverlight 4</title>
		<link>http://xo66ut.ru/archives/224</link>
		<comments>http://xo66ut.ru/archives/224#comments</comments>
		<pubDate>Wed, 18 Nov 2009 23:44:30 +0000</pubDate>
		<dc:creator>Xo66uT</dc:creator>
				<category><![CDATA[Silverlight]]></category>
		<category><![CDATA[Интересное в Сети]]></category>
		<category><![CDATA[Новости]]></category>
		<category><![CDATA[Перевод]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Google Chrome]]></category>
		<category><![CDATA[Silverlight 4]]></category>

		<guid isPermaLink="false">http://xo66ut.ru/?p=224</guid>
		<description><![CDATA[На конференции Microsoft Professional Developer (PDC), Scott Guthrie анонсировал Silverlight 4 Beta.
Я попытался кратко перевести список изменений анонсированных здесь.

Итак, что нового в Silverlight 4:

Редактирование, появилось неограниченное редактирование компонентов. Поддержка RIA сервисов.
API для печати.
Обработка правого клика мыши.
Легкое взаимодействие с Веб-камерой и микрофоном.
Управление с помощью колеса прокрутки мыши.
Добавлен элемент управления RichTextControl. Полноценный компонент для расширенного редактирования текста.
Подсказки [...]]]></description>
			<content:encoded><![CDATA[<p>На конференции Microsoft Professional Developer (PDC), Scott Guthrie анонсировал<strong> </strong><a href="http://silverlight.net/"><strong>Silverlight</strong></a><strong> 4 Beta</strong>.</p>
<p>Я попытался кратко перевести список изменений анонсированных <a href="http://timheuer.com/blog/archive/2009/11/18/whats-new-in-silverlight-4-complete-guide-new-features.aspx?utm_source=Twitter-timheuer#tools" target="_blank">здесь</a>.</p>
<p><span id="more-224"></span></p>
<p>Итак, что нового в <strong>Silverlight</strong><strong> 4</strong>:</p>
<ul>
<li>Редактирование, появилось неограниченное редактирование компонентов. Поддержка RIA сервисов.</li>
<li>API для печати.</li>
<li>Обработка правого клика мыши.</li>
<li>Легкое взаимодействие с Веб-камерой и микрофоном.</li>
<li>Управление с помощью колеса прокрутки мыши.</li>
<li>Добавлен элемент управления RichTextControl. Полноценный компонент для расширенного редактирования текста.</li>
<li>Подсказки в и ссылки для  моделей данных.</li>
<li>Добавлена Clipboard Api, для работы с буфером обмена данными.</li>
<li>Добавление HTML контента через компонент WebBrowser</li>
<li>Для обеспечения безопасности добавлена возможность указать права приложению вне браузера (Silverlight out of browser)</li>
<li>Приложение получило возможность работать с файловой системой.</li>
<li>Приложение может взаимодействовать через COM интерфейс, т.е. с программами пакета офис.</li>
<li>API для создания подсказок и оповещений.</li>
<li>Механизм авторизации пользователя при web запросах.</li>
<li>Изменения в политике взаимодействия с сервером crossdomain.xml. Если приложение является доверенным файл больше не нужен.</li>
<li>В полноэкранном режиме стали доступны все клавиши. Раньше это было не так.</li>
<li>Новое свойство TextTrimming для TextInput, обрезание текста по ширине.</li>
<li>ViewBox стал полноценным элементом управления.</li>
<li>Появился управляющий элемент позволяющий писать текст справа на лево.</li>
<li>Полноценная поддержка PlayReady, включая поддержку кодека H.264</li>
<li>Появился элемент позволяющий отслеживать перетаскивание файлов на приложение.</li>
<li>Добавлен класс IDataErrorInfo для ошибок компонетов приложения при ассинхроной работе с данными на сервере.</li>
<li>Появилась возможность настроить прямые зависимости между объектами.</li>
<li>Добавлены параметры для прямой манипуляции с данными <span style="text-decoration: underline;"><em>StringFormat, TargetNullValue, FallbackValue.</em></span></li>
<li>Поддержка <span style="text-decoration: underline;"><em>Managed Extensibility Framework (MEF), </em></span>которую нужно рассматривать подробнее.<em><br />
</em></li>
<li>Существенно улучшен компонент <span style="text-decoration: underline;"><em>DataGrid.</em></span></li>
<li>Добавлены новые параметры взаимодействия с интерфейсом BeforeLoaded, Loaded and Unloaded.</li>
<li>Появилась возможность прописывать стили управляющим элементам.</li>
<li>Анонсированна полноценная поддержка браузера Google Chrome.</li>
</ul>
<p>С появлением Silverlight 4 у Adobe Flash не останется практически никаких приимуществ перед silverlight, все что есть в технологии Flash будет так же и в Silverlight 4.</p>
<p>Уже сейчас доступна Silverlight 4 Beta на www.silverlight.net. Релиз первая половина 2010</p>
<img src="http://xo66ut.ru/?ak_action=api_record_view&id=224&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://xo66ut.ru/archives/224/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>HTML 5 и Видео в Электронной почте</title>
		<link>http://xo66ut.ru/archives/192</link>
		<comments>http://xo66ut.ru/archives/192#comments</comments>
		<pubDate>Sat, 17 Oct 2009 12:07:41 +0000</pubDate>
		<dc:creator>Xo66uT</dc:creator>
				<category><![CDATA[Интересное в Сети]]></category>
		<category><![CDATA[Новости]]></category>
		<category><![CDATA[Перевод]]></category>
		<category><![CDATA[HTML5]]></category>
		<category><![CDATA[Будущее]]></category>

		<guid isPermaLink="false">http://xo66ut.ru/?p=192</guid>
		<description><![CDATA[
Наблюдая за стремительным развитием HTML5, мы не обращаем внимания на то, как развивается HTML в электронных письмах. Хотя многие тонкости HTML5 все еще в стадии разработки, Firefox, Safari, Opera и Chrome уже предложили поддержку большей части новой технологий.
Особый интерес у меня был к HTML5 тегу &#60;video&#62; .  Этот тег должен был решать проблему со встроенной [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><img class="aligncenter" title="HTML5" src="http://t3n.de/news/wp-content/uploads/2009/09/html5-300x146.png" alt="" width="300" height="146" /></p>
<p>Наблюдая за стремительным развитием HTML5, мы не обращаем внимания на то, как развивается HTML в электронных письмах. Хотя многие тонкости HTML5 все еще в стадии разработки, Firefox, Safari, Opera и Chrome уже предложили поддержку большей части новой технологий.</p>
<p>Особый интерес у меня был к HTML5 тегу &lt;video&gt; .  Этот тег должен был решать проблему со встроенной поддержки видео, с помощью одного кодека, во всех браузерах, без необходимости использования плагинов, таких как Flash. Хотя идея использовать универсальный кодек кажется утопичной, есть проект, который предлагает использовать тег &lt;video&gt; в браузерах, которые его поддерживают, а в остальных просто скрывать содержимое этого тега.</p>
<p><span id="more-192"></span></p>
<h2>Современные подходы использования видео в электронной почте.</h2>
<p>Это не первый раз, когда нам приходится внимательно смотреть на поддержку видео в электронной почте. В наших предыдущих исследованиях мы искали подход, который позволил бы встраивать видео в почтовые клиенты, которые поддерживают тег &lt;video&gt;, а для тех, которые этого не делают, показывать интерактивные изображения (что бы затем воспроизводить видео в браузере).</p>
<p>Результаты нас разочаровали. Только Apple Mail поддерживает достойное воспроизведения видео с помощью Flash, и все равно не было способа обеспечить альтернативное отображение содежимого для тех, у кого Flash отсутствует. Я считаю, что в этом-то и заключается основная проблема. Если видео не отображается, то надо показывать альтернативное содержимое. Поскольку большинство почтовых клиентов использую тег &lt;object&gt; для вставки видео, было не возможно вывести альтернативное содержимое.</p>
<p>Должно быть какое-то решение проблемы, возможно HTML5 смог бы решить ее. Как оказалось я был наполовину прав.</p>
<h2>Простой подход с использованием HTML5</h2>
<p>Используя продукт Kroc Camen &#8220;Видео для всех&#8221;, как отправную точку, я быстро понял, что подход для браузера должен быть другим нежели для почтовых клиентов.</p>
<p>Техника Kroc представляла собой многоуровневую поддержку. Таким образом, если HTML5 &lt;video&gt; не доступен, вы можете использовать возврат к QuickTime или Flash и почти всегда  видео будет гарантировано работать. Поскольку нам известно, что Flash и QuickTime повсеместно заблокировали в электронной почте, я отбросил это простое решение.</p>
<p>Из-за войны форматов, о которой я упоминал ранее, вы должны предоставить свои видеоматериалы, как H.264 (для поддержки Apple и Google) и Ogg Theora (для поддержки Mozilla и Opera). В электронной почте все несколько иначе. Единственным популярным почтовым клиентом, использующим Gecko (движок Firefox) является Thunderbird, который сейчас не поддерживает HTML5 отображения видео. Таким образом, ни Flash / Quicktime, ни Ogg Theora нам не годится. Если большинство ваших адресатов выбирали бы веб-версию писем, тогда вы могли бы рассмотреть возможность добавить видео для получателей с помощью Firefox.</p>
<h2>Окончательный код</h2>
<p>После удаления всех параметров видео, вот конечный код, который дал наилучшие результаты.<br />
<code><br />
&lt;video width="640" height="360" poster="fallback.jpg" controls="controls"&gt;<br />
&lt;source src="http://mysite.com/videoname.mp4" type="video/mp4" /&gt;<br />
&lt;a href="http://mysite.com/"&gt;&lt;img src="fallback.jpg" width="640" height="360" /&gt;&lt;/a&gt;<br />
&lt;/video&gt;<br />
</code></p>
<p>Как вы видите, вы предоставляете альтернативу в виде изображения (которое удобно загружается, как превью для фильма, перед просмотром электронной почты для клиентов, которые поддерживают видео) в теге &lt;video&gt; вместе с шириной и высотой видео. Вместе с тегом &lt;video&gt; вы подключаете кодированное видео с помощью H.264 используя тег &lt;source&gt;, помня, что вы должны поставить ссылку на существующий файл на вашем сервере.</p>
<p>Наконец, мы добавляем альтернативное содержание, которое нужно будет отображать в любом почтовом клиенте, который не поддерживает HTML5 тег &lt;video&gt;. Это, как правило, интерактивные скриншоты из видео, при нажатии на которые, видео будет играть в браузере.</p>
<h2>Результаты</h2>
<p>Работая на Mac, моя первая остановка была на Apple Mail. Видео отображалось прекрасно. Далее мой iPhone, который замечательно проигрывал видео с помощью встроенного почтового клиента.</p>
<p>Тогда я обратился к популярным веб-клиентам электронной почты &#8211; Yahoo!, Gmail и Hotmail. К сожалению, оказалось, что веб-клиенты отключают проигрывание HTML5 видео. Хотя это было разочарованием, не все оказалось так плохо. На месте видео я был в состоянии отображать альтернативное содержимое. В данном случае это было кликабельное изображение, с которого я мог поставить ссылку на видео, находящееся на моем сайте. Этого никогда не было раньше, поэтому было большим успехом.</p>
<p>Поэтому я стал проверять дальше, и получил такие же результаты на десктопных e-mail клиентах ПК. Видео не прогрывается, но появляется альтернативное содержимое во всех клиентах, которые я тестировал. Здесь полные результаты моего тестирования.</p>
<div id="attachment_210" class="wp-caption alignleft" style="width: 540px"><img class="size-full wp-image-210" title="Результаты тестирование видео в различных e-mail клиентах" src="http://xo66ut.ru/wp-content/uploads/2009/10/e-mail_clients.jpg" alt="Результаты тестирование видео в различных e-mail клиентах" width="530" height="455" /><p class="wp-caption-text">Результаты тестирование видео в различных e-mail клиентах</p></div>
<h2>Посмотрите это в действии</h2>
<p>Чтобы вы поняли, как выглядит HTML5 видео в различных популярных e-mail клиентах, вот несколько скриншотов.</p>
<h2>Apple Mail 4</h2>
<p>Когда я открыл письмо в Apple Mail, альтернативное изображение, которое я указал в атрибутах, было показано в то время когда фильм начал потоковое вещание. Через несколько секунд появились управляющие элементы видео, и я мог увидеть progress bar и начать его смотреть.</p>
<p><img class="aligncenter" title="Apple Mail 4" src="http://i3.campaignmonitor.com/uploads/images/apple-mail-video2.jpg" alt="" width="530" height="505" /></p>
<h2>iPhone 3.1.2</h2>
<p>IPhone не поддерживает потоковое видео в браузере или почтовом клиенте, вместо этого вы нажимаете на ссылку с превью изображения и можете оперативно посмотреть ролик. При клике на изображение они загружается в QuickTime Player&#8217;s iPhone. После просмотра ролика вас перемещают обратно к просмотру письма.</p>
<p><img class="aligncenter" title="iPhone 3.1.2" src="http://i3.campaignmonitor.com/uploads/images/iphone-video.jpg" alt="" width="320" height="480" /></p>
<h2>Outlook 2007</h2>
<p>Как и все почтовые клиенты, не поддерживающие видео HTML5, Outlook 2007 отображает альтернативное содержимое, которое мы указываем в рамках видео-тегов. Это может быть любой HTML, какой вам нравится, и не ограничивается только одним изображением. В большинстве случаев, это вероятно будет скриншот из фильма и, возможно, значок для проигрывания, чтобы побудить получателя, нажать на изображение и посмотреть видео в своем браузере.</p>
<p><img class="aligncenter" title="Outlook 2007" src="http://i3.campaignmonitor.com/uploads/images/outlook-2007-video.jpg" alt="" width="530" height="521" /></p>
<p>Результат был тот же для всех почтовых клиентов, которые не поддержали HTML5 видео, что делает это способ удобным для всех получателей (Мы не знаем, какой почтовый клиент у получателя, но нам это и не нужно, письмо везде будет выглядеть одиннаково).</p>
<h2>Должны ли мы использовать этот метод?</h2>
<p>Во-первых, я думаю, такой подход является наилучшим вариантом для видео, в том числе по электронной почте. Тот факт, что можно сделать альтернативное содержимое, которое работает в каждом почтовом клиенте, большой плюс. Этого не дает никакой другой способ, насколько мне известно. Возможным ограничением является то, что сейчас это работает только для получателей использующих продукты Apple. (Видео проигрывается напрямую. только в клиентах Apple).</p>
<p>Принятие решение о пригодности данного подхода сводится к анализу списка получателей вашей почты. Например, 50% наших клиентов, ежемесячно читающих наш бюллетень, используют один из почтовых клиентов Apple. Если бы мы хотели включить видео в письмо, использование данного подхода будет означать, что половина наших абонентов смогут посмотреть видео прямо в почтовом клиенте, а другая половина будет видеть превью изображение, кликнув на которое, они могут посмотреть ролик в своем браузере.</p>
<p>Нужно ли отправлять видео по почте, это конечно же другой вопрос, но его мы будем решать уже в будующих постах. Я не получил возможность проверить эту технику в каждом почтовом клиенте, и я буду рад увидеть результаты в Palm Pre (только потому, что как и iPhone, он также использует Webkit). Я также буду рад услышать мнение каждого об рассматриваемом здесь способе, конечно, если вы считаете, что он полезен.</p>
<p><em>Источник: <a href="http://www.campaignmonitor.com/blog/post/2905/html5-and-video-in-email/ " target="_blank">http://www.campaignmonitor.com/blog/post/2905/html5-and-video-in-email/</a></em></p>
<img src="http://xo66ut.ru/?ak_action=api_record_view&id=192&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://xo66ut.ru/archives/192/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Семь практических советов, как начать программировать на Ruby on Rails</title>
		<link>http://xo66ut.ru/archives/58</link>
		<comments>http://xo66ut.ru/archives/58#comments</comments>
		<pubDate>Tue, 26 May 2009 10:17:37 +0000</pubDate>
		<dc:creator>Xo66uT</dc:creator>
				<category><![CDATA[Интересное в Сети]]></category>
		<category><![CDATA[Перевод]]></category>
		<category><![CDATA[Программирование на Ruby]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[ООП]]></category>

		<guid isPermaLink="false">http://xo66ut.ru/?p=58</guid>
		<description><![CDATA[Наткнулся на интересную статью Seven Practical Tips to Getting Started With Ruby on Rails. Собственно вот они.

Выучить и начать использовать паттерн MVC для вашего текущего языка программирования.
Изучение MVC паттерна довольно обескураживающая задача, даже не думайте изучать новый язык или фреймворк параллельно с этим. Изучение фреймворка языка, на котором вы сейчас программируете, поможет облегчить вам работу. [...]]]></description>
			<content:encoded><![CDATA[<p>Наткнулся на интересную статью <a href="http://speckyboy.com/2009/05/19/seven-practical-tips-to-getting-started-with-ruby-on-rails/" target="_blank">Seven Practical Tips to Getting Started With Ruby on Rails.</a> Собственно вот они.<span id="more-58"></span></p>
<ol>
<li><strong>Выучить и начать использовать паттерн MVC для вашего текущего языка программирования</strong>.<br />
Изучение MVC паттерна довольно обескураживающая задача, даже не думайте изучать новый язык или фреймворк параллельно с этим. Изучение фреймворка языка, на котором вы сейчас программируете, поможет облегчить вам работу. К примеру, если вы PHP программист, почему бы не попробовать изучить CakePHP фреймворк, или если вы используете Python, вы можете попробовать изучить Django. Когда вы получите представление о том, как работает паттерн MVC, переход к другому фреймворку, использующему этот паттерн, будет намного легче.</li>
<li><strong>Изучить язык Ruby</strong>.<br />
Потратьте немного времени на изучение основ Ruby. Ruby это очень интересный язык, и вы станнете более опытным и востребованным программистом изучив его. Ruby кросплатформенный объектно-ориентированный язык программирования с продвинутыми возможностями.</li>
<li><strong>Приобрести книгу</strong>.<br />
Примечательно, что купив книгу, у вас появляется желание ее читать. Может это оттого, что вы потратили на нее некоторую сумму денег и чувствуете ответственность.<br />
Чтение небольших статей в интернете, может дать вам только частичное представление, как в целом работает Ruby on Rails. Да и еще, я понимаю, что это звучит немного иронично, но всегда помните о том, что это Интернет статьи. Я не хочу сказать, что Интернет статьи это плохо, просто их надо использовать в связке с отсортированным и собранным воедино материалом &#8211; <strong>книгой</strong>.</li>
<li><strong>Установить Ruby on Rails и поиграться с ним</strong>.<br />
Этого никогда не бывает достаточно. Чтение всех книг в мире не сможет сравниться с практическим использованием Ruby. Практическая работа запоминается лучше и более глубоко в человеческой голове. Использование книг и практической работы в связке друг с другом дает удивительный результат. Устанавливайте Rails и начинайте.</li>
<li><strong>Получить мотивацию</strong>.<br />
Есть куча вещей которые заставят вас поволноваться на Rails. Работа с БД, разделение логики работы и представления, условности в настройках, установка на web сервер. Я могу продолжать&#8230; Решение этих и других не менее интересных проблем, будут мотивировать вас изучить Rails.</li>
<li><strong>Предложить начальству использовать Ruby на работе</strong>.<br />
Это может быть сложным, но нужно попробовать. Если вы расскажете вашему боссу о приимуществах Rails, то он ,возможно, подумает над его использованием. Некоторые компании боятся использовать Open Source технологии, потому что это несет в себе некоторый риск. Конечно, это абсурд, но будьте готовы привести пару доводов в защиту. Если ничего не получится, не расстраивайтесь, пусть они опять спустят их деньги на еще один ненужный фреймворк.</li>
<li><strong>Наконец, поставьте себе цель написать что-нибудь на Ruby</strong>.<br />
Создание сайта-блога, будет полезным для изучения основ Ruby и Rails. Я сделал так сам, таким образом сильно ускорив процесс изучения. Большой плюс этого, что вы сможете потом использовать свой блог для описания того, что и как  вы изучили.</li>
</ol>
<img src="http://xo66ut.ru/?ak_action=api_record_view&id=58&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://xo66ut.ru/archives/58/feed</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
	</channel>
</rss>

