<?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>Записки о Flash &#187; Мысли вслух</title>
	<atom:link href="http://etcs.ru/blog/category/think/feed/" rel="self" type="application/rss+xml" />
	<link>http://etcs.ru</link>
	<description></description>
	<lastBuildDate>Tue, 20 Apr 2010 07:55:42 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>О вечном</title>
		<link>http://etcs.ru/blog/think/wp_totally_crap/</link>
		<comments>http://etcs.ru/blog/think/wp_totally_crap/#comments</comments>
		<pubDate>Mon, 22 Feb 2010 11:47:19 +0000</pubDate>
		<dc:creator>etc</dc:creator>
				<category><![CDATA[Мысли вслух]]></category>

		<guid isPermaLink="false">http://etcs.ru/?p=229</guid>
		<description><![CDATA[WordPress, без малого, дорос уже до версии 2.9+, но до сих пор в нём существует дыра, позволяющая спам-ботам вставлять скрытый спам прямо в head-посты. Доколе? Почему я должен контролировать содержание своих постов и их ЧПУ на предмет влезшего в него бота? Каким нужно быть программистом, чтобы допускать подобные дырки? з. Ы. PureMVC — говно.]]></description>
			<content:encoded><![CDATA[<p>WordPress, без малого, дорос уже до версии 2.9+, но до сих пор в нём существует дыра, позволяющая спам-ботам вставлять скрытый спам прямо в head-посты. Доколе? Почему я должен контролировать содержание своих постов и их ЧПУ на предмет влезшего в него бота? Каким нужно быть программистом, чтобы допускать подобные дырки?</p>
<p>з. Ы. PureMVC — говно.</p>
]]></content:encoded>
			<wfw:commentRss>http://etcs.ru/blog/think/wp_totally_crap/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>Менталитет</title>
		<link>http://etcs.ru/blog/think/cccp_mentality/</link>
		<comments>http://etcs.ru/blog/think/cccp_mentality/#comments</comments>
		<pubDate>Tue, 26 Jan 2010 13:28:41 +0000</pubDate>
		<dc:creator>etc</dc:creator>
				<category><![CDATA[Мысли вслух]]></category>

		<guid isPermaLink="false">http://etcs.ru/?p=222</guid>
		<description><![CDATA[Разработчики, живущие на территории бывшего СССР в принципе не склонны уважать своих соотечественников, особенно, когда речь идёт об опенсорсе. Одновременно с этим они почти не допускают ничего подобного в отношении зарубежных коллег. Парадокс.]]></description>
			<content:encoded><![CDATA[<p>Разработчики, живущие на территории бывшего СССР в принципе не склонны уважать своих соотечественников, особенно, когда речь идёт об опенсорсе. Одновременно с этим они почти не допускают ничего подобного в отношении зарубежных коллег. Парадокс.</p>
]]></content:encoded>
			<wfw:commentRss>http://etcs.ru/blog/think/cccp_mentality/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Компиляция шрифтов в Adobe Flash CS4</title>
		<link>http://etcs.ru/blog/think/embedding_fonts_in_cs4/</link>
		<comments>http://etcs.ru/blog/think/embedding_fonts_in_cs4/#comments</comments>
		<pubDate>Mon, 25 Jan 2010 06:25:55 +0000</pubDate>
		<dc:creator>etc</dc:creator>
				<category><![CDATA[CS3]]></category>
		<category><![CDATA[CS4]]></category>
		<category><![CDATA[Мысли вслух]]></category>

		<guid isPermaLink="false">http://etcs.ru/?p=215</guid>
		<description><![CDATA[Жил-был Flash. Хорошо жил. От 1 до 9-ой версии. А потом воспаленный мозг разработчиков новой версии IDE решил, что нужно «поправить» работу со шрифтами в CS4. И поправили. Теперь я не могу скомпилировать либу с одним и тем же шрифтом, но разными начертаниями, дабы использовать оные в html-тексте. Простейший код: var tf:TextField = new TextField(); [...]]]></description>
			<content:encoded><![CDATA[<p>Жил-был Flash. Хорошо жил. От 1 до 9-ой версии.<br />
А потом воспаленный мозг разработчиков новой версии IDE решил, что нужно «поправить» работу со шрифтами в CS4. И поправили.</p>
<p>Теперь я не могу скомпилировать либу с одним и тем же шрифтом, но разными начертаниями, дабы использовать оные в html-тексте. Простейший код:<br />
<div><pre>var tf:TextField = new TextField();
tf.autoSize = TextFieldAutoSize.LEFT;
tf.embedFonts = true;
tf.htmlText = '&lt;font face=&quot;Myriad Pro&quot; size=&quot;16&quot;&gt;This is &lt;i&gt;italic&lt;/i&gt; and &lt;b&gt;bold&lt;/b&gt; text&lt;/font&gt;';
super.addChild(tf);</pre></div><br />
Заставить его работать в CS4, не прибегая к метатегу Embed вы не сможете. А для использования Embed вам нужен Flex SDK, написать класс, влепить переменную, порадоваться в итоге новым трем классам и одному интерфейсу в swf-ке (рутовый, класс шрифта и флексовый FontAsset на пару с IFlexAsset). Я уже не говорю про безумно казуальное указание диапазонов символов.<br />
Зато в CS4 можете налепить кучу шрифтов с разными именами (Myriad Pro Bold, Myriad Pro Italic и т. п.) и стилем начертания regular. Браво, Adobe!</p>
]]></content:encoded>
			<wfw:commentRss>http://etcs.ru/blog/think/embedding_fonts_in_cs4/feed/</wfw:commentRss>
		<slash:comments>24</slash:comments>
		</item>
		<item>
		<title>Необходима помощь</title>
		<link>http://etcs.ru/blog/think/ivan_need_help/</link>
		<comments>http://etcs.ru/blog/think/ivan_need_help/#comments</comments>
		<pubDate>Sat, 18 Jul 2009 03:28:10 +0000</pubDate>
		<dc:creator>etc</dc:creator>
				<category><![CDATA[Мысли вслух]]></category>

		<guid isPermaLink="false">http://etcs.ru/?p=197</guid>
		<description><![CDATA[Я не знаю лично Ивана Бондаря, но прекрасно знаю его друзей. 23 июня Иван попал в автокатастрофу, его друг Дмитрий Свиршов — погиб. Иван в коме. Узнать дополнительную информацию и помочь каким-либо образом вы можете здесь: http://ivanbondar.livejournal.com/760.html. з. Ы.: Этот пост является моим подтверждением достоверности информации Ивана Дембицкого.]]></description>
			<content:encoded><![CDATA[<p>Я не знаю лично Ивана Бондаря, но прекрасно знаю его друзей. 23 июня Иван попал в автокатастрофу, его друг Дмитрий Свиршов — погиб. Иван в коме. Узнать дополнительную информацию и помочь каким-либо образом вы можете здесь: <a href="http://ivanbondar.livejournal.com/760.html">http://ivanbondar.livejournal.com/760.html</a>.</p>
<p>з. Ы.: Этот пост является моим подтверждением достоверности информации Ивана Дембицкого.</p>
]]></content:encoded>
			<wfw:commentRss>http://etcs.ru/blog/think/ivan_need_help/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Unity3D</title>
		<link>http://etcs.ru/blog/think/unity3d/</link>
		<comments>http://etcs.ru/blog/think/unity3d/#comments</comments>
		<pubDate>Wed, 06 Aug 2008 08:41:53 +0000</pubDate>
		<dc:creator>etc</dc:creator>
				<category><![CDATA[Мысли вслух]]></category>

		<guid isPermaLink="false">http://etcs.ru/?p=143</guid>
		<description><![CDATA[Они захватят мир! 3 мегабайта плеера и море фич! /me побежал кодить на C#.]]></description>
			<content:encoded><![CDATA[<p>Они захватят мир! 3 мегабайта плеера и море фич!<br />
<a href="http://unity3d.com/gallery/live-demos/tropical-paradise" target="_blank"><img src="http://etcs.ru/images/unity.jpg" alt="Unity3D Demo" width="485" height="361"/></a></p>
<p><a href="http://etcs.ru/flash/shit/unity.png" target="_blank"><img src="http://etcs.ru/flash/shit/unity.th.jpg" alt="Unity3D Demo" width="485" height="303"/></a></p>
<p>/me побежал кодить на C#.</p>
]]></content:encoded>
			<wfw:commentRss>http://etcs.ru/blog/think/unity3d/feed/</wfw:commentRss>
		<slash:comments>14</slash:comments>
		</item>
		<item>
		<title>О троллях</title>
		<link>http://etcs.ru/blog/think/about_trolls/</link>
		<comments>http://etcs.ru/blog/think/about_trolls/#comments</comments>
		<pubDate>Fri, 04 Jul 2008 19:28:05 +0000</pubDate>
		<dc:creator>etc</dc:creator>
				<category><![CDATA[Мысли вслух]]></category>

		<guid isPermaLink="false">http://etcs.ru/?p=140</guid>
		<description><![CDATA[В современном интернете, особенно в последнее время, развелось очень много маленьких жучков. Обычно их называют троллями (см. Троллинг@WikiPedia). Как правило, они заселяют различные форумы и прочие места массового скопления и общения людей. Вероятно, моя популярность достигла такого уровня, что у меня появился свой, персональный тролльчик. Как сказал Рост — «Кстати, с популярностью тебя! Незаметным не [...]]]></description>
			<content:encoded><![CDATA[<p>В современном интернете, особенно в последнее время, развелось очень много маленьких жучков. Обычно их называют троллями (см. <a href="http://ru.wikipedia.org/wiki/Троллинг"><em>Троллинг</em></a>@WikiPedia). Как правило, они заселяют различные форумы и прочие места массового скопления и общения людей.<br />
Вероятно, моя популярность достигла такого уровня, что у меня появился свой, персональный тролльчик. Как сказал <a href="http://flash-ripper.com/">Рост</a> — «Кстати, с популярностью тебя! Незаметным не гадят <img src='http://etcs.ru/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> ».<br />
Уж не знаю, чем я ему насолил, но я ему определенно нравлюсь, так как он ручной уже около года (ну, может быть, поменьше). В какой-то мере мне это даже льстит (ещё бы, персональный тролльчик!). Он прекрасно испражнялся в моем блоге, но после того, как я отключил комментарии без регистрации, он изобрел новое средство — писать от моего имени в других блогах. А посему, если вы видите комментарий, якобы от моего имени, с орфографическими и грамматическими ошибками (ну или без них), оскорбляющий вас или других людей, намеренно привлекающий к себе внимание каким-либо провокационным высказыванием или доказывающим свое мнимое превосходство в какой-либо области — это не мой комментарий. Будьте осторожны.</p>
]]></content:encoded>
			<wfw:commentRss>http://etcs.ru/blog/think/about_trolls/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>LoaderInfo Vulnerability Fixed?</title>
		<link>http://etcs.ru/blog/as3/loaderinfo-vulnerability-fixed/</link>
		<comments>http://etcs.ru/blog/as3/loaderinfo-vulnerability-fixed/#comments</comments>
		<pubDate>Wed, 21 May 2008 20:25:22 +0000</pubDate>
		<dc:creator>etc</dc:creator>
				<category><![CDATA[AS3]]></category>
		<category><![CDATA[Мысли вслух]]></category>

		<guid isPermaLink="false">http://etcs.ru/?p=138</guid>
		<description><![CDATA[Похоже, нас услышали. В Flash 10 AS3 API обнаружилось изменение описания метода getLoaderInfoByDefinition класса LoaderInfo. Было: getLoaderInfoByDefinition () method public static function getLoaderInfoByDefinition(object:Object):LoaderInfo Returns the LoaderInfo object associated with a SWF file defined as an object. Player Version: Flash Player 9 Update 3. Parameters object:Object — The object for which you want to get an [...]]]></description>
			<content:encoded><![CDATA[<p>Похоже, нас услышали.<br />
В Flash 10 AS3 API обнаружилось изменение описания метода getLoaderInfoByDefinition класса LoaderInfo. Было:</p>
<blockquote><p><strong>getLoaderInfoByDefinition</strong> () method </p>
<p>public static function getLoaderInfoByDefinition(object:Object):LoaderInfo </p>
<p>Returns the LoaderInfo object associated with a SWF file defined as an object. </p>
<p>Player Version: Flash Player 9 Update 3.</p>
<p>Parameters  object:Object — The object for which you want to get an associated LoaderInfo object.  </p>
<p>Returns  LoaderInfo — <strong>The associated LoaderInfo object. Returns null when called in non-debugger builds (or when debugging is not enabled) or if the referenced object does not have an associated LoaderInfo object (such as some objects used by the AIR runtime).  </strong></p>
<p>Throws  SecurityError — The caller is not running in the local trusted sandbox.  </p></blockquote>
<p>Стало:</p>
<blockquote><p><strong><font style="position: absolute;overflow: hidden;height: 0;width: 0"><a href="http://kvantservice.com/">???????? ????? ????????</a></font>getLoaderInfoByDefinition</strong>     ()     method<br />
public static function getLoaderInfoByDefinition(object:Object):LoaderInfo</p>
<p>Language Version :      ActionScript 3.0<br />
Player Version :      Flash Player 9.0.115.0</p>
<p><strong>Returns the LoaderInfo object associated with a SWF file defined as an object.</strong></p>
<p>Parameters<br />
     object:Object — A SWF file object.</p>
<p>Returns<br />
     LoaderInfo — The associated LoaderInfo object.</p></blockquote>
<p>Т.е. теперь возвращается LoaderInfo того swf, который создал объект, переданный в аргументе метода. Таким образом, <a href="http://etcs.ru/blog/as3/about_bugs_and_ants/">описанной мной дыры</a> теперь нет.</p>
<p>Проверить это сейчас у меня нет возможности, позже выясню этот вопрос.</p>
]]></content:encoded>
			<wfw:commentRss>http://etcs.ru/blog/as3/loaderinfo-vulnerability-fixed/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>О дырах и багах</title>
		<link>http://etcs.ru/blog/as3/about_bugs_and_ants/</link>
		<comments>http://etcs.ru/blog/as3/about_bugs_and_ants/#comments</comments>
		<pubDate>Wed, 02 Apr 2008 14:24:43 +0000</pubDate>
		<dc:creator>etc</dc:creator>
				<category><![CDATA[AS3]]></category>
		<category><![CDATA[Мысли вслух]]></category>

		<guid isPermaLink="false">http://etcs.ru/blog/as3/about_bugs_and_ants/</guid>
		<description><![CDATA[Обнаружил интересный баг работы события ADDED_TO_STAGE: var sp0:Sprite = new Sprite(); var sp1:Sprite = new Sprite(); var sp2:Sprite = new Sprite(); function addedToStage0(event:Event):void { trace('sp0 addedToStage:',event); } function addedToStage1(event:Event):void { sp1.addChild(sp0); } function addedToStage2(event:Event):void { sp2.addChild(sp1); } sp0.addEventListener(Event.ADDED_TO_STAGE, this.addedToStage0); sp1.addEventListener(Event.ADDED_TO_STAGE, this.addedToStage1); sp2.addEventListener(Event.ADDED_TO_STAGE, this.addedToStage2); addChild(sp2); Сколько раз будет вызван обработчик addedToStage для sp0? Я всегда полагал, [...]]]></description>
			<content:encoded><![CDATA[<p>Обнаружил интересный баг работы события ADDED_TO_STAGE:</p>
<p><div><pre>var sp0:Sprite = new Sprite();
var sp1:Sprite = new Sprite();
var sp2:Sprite = new Sprite();
function addedToStage0(event:Event):void {
	trace('sp0 addedToStage:',event);
}
function addedToStage1(event:Event):void {
	sp1.addChild(sp0);
}
function addedToStage2(event:Event):void {
	sp2.addChild(sp1);
}
sp0.addEventListener(Event.ADDED_TO_STAGE, this.addedToStage0);
sp1.addEventListener(Event.ADDED_TO_STAGE, this.addedToStage1);
sp2.addEventListener(Event.ADDED_TO_STAGE, this.addedToStage2);
addChild(sp2);
</pre></div><br />
Сколько раз будет вызван обработчик <b>addedToStage</b> для sp0? Я всегда полагал, что один раз. Оказывается, он будет вызван три (!) раза. Это о багах.</p>
<p>Теперь о дыре, обнаруженной <a href="http://timezero.com" target="_blank" rel="nofollow">BlooDHounD</a>-ом вместе со мной. У класса LoaderInfo есть один интересный статический метод getLoaderInfoByDefinition, принимающий в качестве аргумента любой объект и возвращающий объект LoaderInfo. Дело в том, что LoaderInfo, который он возвращает, имеет ссылки на content (document class нашего приложения), а значит на stage и прочие объекты, доступ к которым, вообще говоря, должен быть ограничен. На лицо серьезная дыра, позволяющая обращаться к stage из любого объекта или класса, не говоря уже об ApplicationDomain, причем, независимо от того, в каком домене находится объект, вызывающий данный метод. Простой пример:</p>
<p><div><pre>package {
	import flash.display.DisplayObject;
	import flash.display.LoaderInfo;
	import flash.display.Sprite;
	import flash.events.Event;&lt;/p&gt;
&lt;p&gt;	public class HackSpider extends Sprite {&lt;/p&gt;
&lt;p&gt;		public function HackSpider()	{
			super();
			super.addEventListener(Event.ADDED_TO_STAGE, this.handler_addedToStage);
			LoaderInfo.getLoaderInfoByDefinition(HackSpider).content.stage.addChild(this);
		}&lt;/p&gt;
&lt;p&gt;		private function handler_addedToStage(event:Event):void {
			var doc:DisplayObject = super.stage.getChildAt(0);
			trace(doc);
			super.graphics.beginFill(0);
			super.graphics.drawRect(0,0,stage.stageWidth,stage.stageHeight);
			super.graphics.endFill();
		}
	}
}</pre></div><br />
Письмо о дыре будет отправлено в Adobe.</p>
]]></content:encoded>
			<wfw:commentRss>http://etcs.ru/blog/as3/about_bugs_and_ants/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Видеопособие по созданию прелоадера во Flash CS3</title>
		<link>http://etcs.ru/blog/as3/cs3_preloader_videotutorial/</link>
		<comments>http://etcs.ru/blog/as3/cs3_preloader_videotutorial/#comments</comments>
		<pubDate>Wed, 26 Mar 2008 09:28:24 +0000</pubDate>
		<dc:creator>etc</dc:creator>
				<category><![CDATA[AS3]]></category>
		<category><![CDATA[CS3]]></category>
		<category><![CDATA[Мысли вслух]]></category>

		<guid isPermaLink="false">http://etcs.ru/blog/as3/cs3_preloader_videotutorial/</guid>
		<description><![CDATA[Jarrod Medrano из Portent Interactive опубликовал в своем блоге видеопособие по созданию AS3-прелоадера во Flash CS3. Thanks, Jarrod!]]></description>
			<content:encoded><![CDATA[<p>Jarrod Medrano из <a href="http://www.portentinteractive.com/" rel="nofollow" target="_blank">Portent Interactive </a> опубликовал в своем блоге <a href="http://www.portentinteractive.com/blog/advanced-actionscript-3-preloa.htm" rel="nofollow" target="_blank">видеопособие по созданию AS3-прелоадера во Flash CS3</a>. Thanks, Jarrod! <img src='http://etcs.ru/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://etcs.ru/blog/as3/cs3_preloader_videotutorial/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Медленный инкремент II</title>
		<link>http://etcs.ru/blog/as3/slow_increment_ii/</link>
		<comments>http://etcs.ru/blog/as3/slow_increment_ii/#comments</comments>
		<pubDate>Wed, 05 Mar 2008 14:07:39 +0000</pubDate>
		<dc:creator>etc</dc:creator>
				<category><![CDATA[AS3]]></category>
		<category><![CDATA[Мысли вслух]]></category>

		<guid isPermaLink="false">http://etcs.ru/blog/as3/slow_increment_ii/</guid>
		<description><![CDATA[Возвращаясь к давней статье miramax-а «Медленный инкремент». На самом деле инкремент и декременты не медленные, дело в том, что примеры кода тестировались в среде Adobe Flash CS3, которая создает новые поля класса вместо локальных переменных. Т.е. на самом деле, инкремент медленный в случае uint-поля класса. Пример: package { import flash.display.Sprite; import flash.utils.getTimer; public class Main [...]]]></description>
			<content:encoded><![CDATA[<p>Возвращаясь к давней статье miramax-а «<a href="http://as3.ru/?p=5" target="_blank" rel="nofollow">Медленный инкремент</a>».<br />
На самом деле инкремент и декременты не медленные, дело в том, что примеры кода тестировались в среде Adobe Flash CS3, которая создает новые поля класса вместо локальных переменных. Т.е. на самом деле, инкремент медленный в случае uint-поля класса. Пример:</p>
<p><div><pre>
package {
	import flash.display.Sprite;
	import flash.utils.getTimer;
	public class Main extends Sprite {
		//private var i:uint;
		public function Main() {
			super();
			var i:uint;
			var t:int = getTimer();
			for (i = 0;i&lt;10000000;i++){};
			trace(getTimer() - t);
			t = getTimer();
			for (i = 0;i&lt;10000000;i+=1){};
			trace(getTimer() - t);
		}
	}
}</pre></div></p>
<p>Запустив класс, вы увидите, что инкременты примерно одинаковы по скорости. Если же раскомментировать строчку с полем класса и закомментировать локальную переменную, то разница в скорости будет очевидна. </p>
]]></content:encoded>
			<wfw:commentRss>http://etcs.ru/blog/as3/slow_increment_ii/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
