<?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/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Snippets code from my daily experience</title>
	<atom:link href="https://dafizilla.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>https://dafizilla.wordpress.com</link>
	<description>Just another unnecessary code resource blog</description>
	<lastBuildDate>Sat, 10 Dec 2011 10:13:13 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<site xmlns="com-wordpress:feed-additions:1">887576</site><cloud domain='dafizilla.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>https://s0.wp.com/i/buttonw-com.png</url>
		<title>Snippets code from my daily experience</title>
		<link>https://dafizilla.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="https://dafizilla.wordpress.com/osd.xml" title="Snippets code from my daily experience" />
	<atom:link rel='hub' href='https://dafizilla.wordpress.com/?pushpress=hub'/>
	<item>
		<title>Open and save Firebug command line text with ViewSourceWith</title>
		<link>https://dafizilla.wordpress.com/2011/12/10/open-and-save-firebug-command-line-text-with-viewsourcewith/</link>
					<comments>https://dafizilla.wordpress.com/2011/12/10/open-and-save-firebug-command-line-text-with-viewsourcewith/#comments</comments>
		
		<dc:creator><![CDATA[dafi]]></dc:creator>
		<pubDate>Sat, 10 Dec 2011 10:11:30 +0000</pubDate>
				<category><![CDATA[firebug]]></category>
		<category><![CDATA[viewsourcewith]]></category>
		<guid isPermaLink="false">http://dafizilla.wordpress.com/?p=1101</guid>

					<description><![CDATA[I spend much time using the Firebug command line set in multiple lines view, I edit javascript code or run little not automated tests copying and pasting code to the Firebug command line window. Copy and paste doesn&#8217;t really fits my needs, I prefer to edit javascript files from my preferred editor (i.e. KomodoEdit) than [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>I spend much time using the <a href="http://getfirebug.com/">Firebug</a> command line set in multiple lines view, I edit javascript code or run little not automated tests copying and pasting code to the Firebug command line window.</p>
<p>Copy and paste doesn&#8217;t really fits my needs, I prefer to edit javascript files from my preferred editor (i.e. KomodoEdit) than run them on Firebug especially if code consists of many lines (more than dozen) so I&#8217;ve added to Firebug the ability to open and save files extending <a href="https://addons.mozilla.org/en-US/firefox/addon/dafizilla-viewsourcewith/">ViewSourceWith</a></p>
<p><a href="https://dafizilla.wordpress.com/wp-content/uploads/2011/12/schermata-12-2455906-alle-10-43-27.png"><img data-attachment-id="1102" data-permalink="https://dafizilla.wordpress.com/2011/12/10/open-and-save-firebug-command-line-text-with-viewsourcewith/schermata-12-2455906-alle-10-43-27/" data-orig-file="https://dafizilla.wordpress.com/wp-content/uploads/2011/12/schermata-12-2455906-alle-10-43-27.png" data-orig-size="742,185" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;}" data-image-title="Firebug with Open and Save button" data-image-description="" data-image-caption="" data-medium-file="https://dafizilla.wordpress.com/wp-content/uploads/2011/12/schermata-12-2455906-alle-10-43-27.png?w=300" data-large-file="https://dafizilla.wordpress.com/wp-content/uploads/2011/12/schermata-12-2455906-alle-10-43-27.png?w=742" class="aligncenter size-full wp-image-1102" title="Firebug with Open and Save button" src="https://dafizilla.wordpress.com/wp-content/uploads/2011/12/schermata-12-2455906-alle-10-43-27.png?w=742&#038;h=185" alt="" width="742" height="185" srcset="https://dafizilla.wordpress.com/wp-content/uploads/2011/12/schermata-12-2455906-alle-10-43-27.png 742w, https://dafizilla.wordpress.com/wp-content/uploads/2011/12/schermata-12-2455906-alle-10-43-27.png?w=150&amp;h=37 150w, https://dafizilla.wordpress.com/wp-content/uploads/2011/12/schermata-12-2455906-alle-10-43-27.png?w=300&amp;h=75 300w" sizes="(max-width: 742px) 100vw, 742px" /></a>Now it&#8217;s possible to open/save files directly from Firebug but the most important feature allows to open the file both on your editor and on firebug then any saving done is reloaded automatically.</p>
<p>A better example, you open the file &#8216;hello.js&#8217; both on your editor and firebug using the new &#8216;Open&#8217; button, you edit the text from your editor <strong>and save</strong> then switch to Firebug console window and immediately the text is updated with last saved version from the editor.</p>
<p>VSW with Firebug support isn&#8217;t officially released but if you are interested in testing it you can download <a href="http://sourceforge.net/projects/dafizilla/files/viewsourcewith/viewsourcewith-0.9a1.xpi/download">ViewSourceWith 0.9a1</a></p>
]]></content:encoded>
					
					<wfw:commentRss>https://dafizilla.wordpress.com/2011/12/10/open-and-save-firebug-command-line-text-with-viewsourcewith/feed/</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1101</post-id>
		<media:content url="https://0.gravatar.com/avatar/051784bd50151c7fa1c7e1ee28c7fc84b822545090c48b6c69fccce109248f58?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">dafi</media:title>
		</media:content>

		<media:content url="https://dafizilla.wordpress.com/wp-content/uploads/2011/12/schermata-12-2455906-alle-10-43-27.png" medium="image">
			<media:title type="html">Firebug with Open and Save button</media:title>
		</media:content>
	</item>
		<item>
		<title>Signing extensions, McCoy, Spock, Uhura and private keys</title>
		<link>https://dafizilla.wordpress.com/2011/09/19/signing-extensions-mccoy-spock-uhura-and-private-keys/</link>
		
		<dc:creator><![CDATA[dafi]]></dc:creator>
		<pubDate>Mon, 19 Sep 2011 17:15:08 +0000</pubDate>
				<category><![CDATA[Uncategorized]]></category>
		<guid isPermaLink="false">http://dafizilla.wordpress.com/?p=1091</guid>

					<description><![CDATA[I&#8217;ve written many extensions in these years and not all are present on AMO, many extensions are hosted on customers servers and are updated using signed update.rdf files. Production environments require automated tasks to create and maintain update and I&#8217;ve always used command line tools to pack XPI files and generate corresponding update.rdf files. I&#8217;ve [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>I&#8217;ve written many extensions in these years and not all are present on AMO, many extensions are hosted on customers servers and are updated using signed update.rdf files.</p>
<p>Production environments require automated tasks to create and maintain update and I&#8217;ve always used command line tools to pack XPI files and generate corresponding update.rdf files.</p>
<p>I&#8217;ve always used <a href="https://developer.mozilla.org/en/McCoy">McCoy</a> + <a href="https://dafizilla.wordpress.com/2007/11/02/firefox-3-dr-mccoy-and-mr-spock/">Spock</a> on from linux boxes to achieve these results.</p>
<p>A customer asked me to migrate the env from Ubuntu 64bit to OSX Lion so I&#8217;ve decided to drop Spock in favor of <a href="http://www.softlights.net/projects/mxtools/uhura.html">Uhura</a> that uses only Perl scripts to sign extensions and doesn&#8217;t need a McCoy profile.</p>
<p>The problem was to migrate private keys generated with McCoy and use them with Uhura, the binary version (v0.5) available from McCoy web page doesn&#8217;t allow to export private keys but the code present on mercurial has this feature</p>
<pre> hg clone <a href="http://hg.mozilla.org/projects/mccoy" rel="nofollow">http://hg.mozilla.org/projects/mccoy</a></pre>
<p>so I&#8217;ve compiled it and exported all my private keys in a couple of minutes.</p>
<p>Ok a couple of minutes <strong>plus</strong> 6/7 hours to compile McCoy, the <a href="https://developer.mozilla.org/en/Build_Documentation">Mozilla build process</a> is documented very very well but I&#8217;m lazy and stupid so compiling McCoy and Mozilla necessary files required me a bit of time.</p>
<p>If you need to export private keys from McCoy you can download my compiled version for Linux i686 from <a href="https://sourceforge.net/projects/dafizilla/files/McCoy/">here</a>, if you need a version for Windows or OSX I&#8217;m sorry but you must compile yourself.</p>
<pre></pre>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1091</post-id>
		<media:content url="https://0.gravatar.com/avatar/051784bd50151c7fa1c7e1ee28c7fc84b822545090c48b6c69fccce109248f58?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">dafi</media:title>
		</media:content>
	</item>
		<item>
		<title>Off topic post about XUL, Apple, Google and Open Source</title>
		<link>https://dafizilla.wordpress.com/2010/11/30/off-topic-post-about-xul-apple-google-and-open-source/</link>
					<comments>https://dafizilla.wordpress.com/2010/11/30/off-topic-post-about-xul-apple-google-and-open-source/#comments</comments>
		
		<dc:creator><![CDATA[dafi]]></dc:creator>
		<pubDate>Tue, 30 Nov 2010 07:41:19 +0000</pubDate>
				<category><![CDATA[Uncategorized]]></category>
		<guid isPermaLink="false">http://dafizilla.wordpress.com/?p=1083</guid>

					<description><![CDATA[I don&#8217;t write about XUL since a long time, this is due to the fact I&#8217;m spending all my free time writing a Cocoa application for Mac (no iPhone). I don&#8217;t like Apple policies, and I don&#8217;t like its &#8220;app store&#8221; vision, so why I&#8217;m writing a Mac app? In last months I saw Google [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>I don&#8217;t write about XUL since a long time, this is due to the fact I&#8217;m spending all my free time writing a Cocoa application for Mac (no iPhone).</p>
<p>I don&#8217;t like Apple policies, and I don&#8217;t like its &#8220;app store&#8221; vision, so why I&#8217;m writing a Mac app?</p>
<p>In last months I saw Google Chrome be adopted in many places (dropping Firefox), I saw Google Android growing its market share, I saw the <em><strong>&#8220;fascist&#8221;</strong></em> Apple policy go ahead like a <a href="http://en.wikipedia.org/wiki/Panzer">panzer</a> division and this isn&#8217;t the web I love.</p>
<p>I don&#8217;t like the technically limited Google Chrome browser and I don&#8217;t like the &#8220;bells and whistles&#8221; java based Android OS.</p>
<p>I believe in the Mozilla&#8217;s motto &#8220;Make the web a better place&#8221; but I need to gain from my (low) skill because I&#8217;m a person and I need to eat at least one time per day.</p>
<p>I love the Gecko architecture but it&#8217;s very difficult (al least for me) monetize my XUL/XPCOM know-how so why not to make a new experience?</p>
<p>I can invest some months to learn Cocoa (its learning curve is high) and create another unuseful duplicated old-designed app ready to be refused-then-hopefully-approved on the future Mac Store.</p>
<p>Firefox 4 is closer to be released (IMHO), the beta 8 is simply fantastic but people continue to switch to Chrome only because it&#8217;s <em>faster</em>, if you ask to normal users why they use Chrome they will say &#8220;because it&#8217;s faster&#8221;, bleah NO COMMENT.</p>
<p>Developers say &#8220;Webkit Developers Tools is like Firebug&#8221; then I reply &#8220;are you sure?&#8221;, Firebug has tons of features you don&#8217;t know, RTFM!</p>
<p>I&#8217;ve a couple of feature requests for <a href="https://addons.mozilla.org/it/firefox/addon/394/">ViewSourceWith</a> and <a href="https://addons.mozilla.org/it/firefox/addon/1852/">Table2Clipboard</a> so I hope to close XCode ugly editor to launch my Komodo Edit and start again to work on my preferred <span style="text-decoration:underline;"><em><strong>platform</strong></em></span>, the Mozilla platform!</p>
]]></content:encoded>
					
					<wfw:commentRss>https://dafizilla.wordpress.com/2010/11/30/off-topic-post-about-xul-apple-google-and-open-source/feed/</wfw:commentRss>
			<slash:comments>3</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1083</post-id>
		<media:content url="https://0.gravatar.com/avatar/051784bd50151c7fa1c7e1ee28c7fc84b822545090c48b6c69fccce109248f58?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">dafi</media:title>
		</media:content>
	</item>
		<item>
		<title>Firefox 4, packed XPI files and extensions test environments</title>
		<link>https://dafizilla.wordpress.com/2010/09/26/firefox-4-packed-xpi-files-and-extensions-test-environments/</link>
					<comments>https://dafizilla.wordpress.com/2010/09/26/firefox-4-packed-xpi-files-and-extensions-test-environments/#comments</comments>
		
		<dc:creator><![CDATA[dafi]]></dc:creator>
		<pubDate>Sun, 26 Sep 2010 07:50:16 +0000</pubDate>
				<category><![CDATA[extension]]></category>
		<category><![CDATA[firefox]]></category>
		<category><![CDATA[gecko]]></category>
		<guid isPermaLink="false">http://dafizilla.wordpress.com/?p=1061</guid>

					<description><![CDATA[My test environment is simple Create an XPI file with all files unzipped (no jar file inside) Install the XPI on a separated (and clean) profile, this is applicable to any Gecko application: Firefox, Thunderbird, Komodo, SeaMonkey 2.x Run unit tests or use the extension If some test fails I edit code (xul, js, css) [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>My test environment is simple</p>
<ol>
<li>Create an XPI file with all files unzipped (no jar file inside)</li>
<li>Install the XPI on a separated (and clean) profile, this is applicable to any Gecko application: Firefox, Thunderbird, Komodo, SeaMonkey 2.x</li>
<li>Run unit tests or use the extension</li>
<li>If some test fails I edit code (xul, js, css) directly on installed files</li>
<li>Move edited files on main code build tree</li>
<li>Repeat the process starting from 1.</li>
</ol>
<p>Any developer uses its own approach, someone prefers to edit the chrome.manifest to point to files on specific directories, someone uses other enterprise-big-team oriented ways.</p>
<p>No matters the approach you use under Gecko 2.0 (ie Firefox 4.0) the <a href="http://blog.mozilla.com/addons/2010/09/23/changes-to-how-extensions-are-installed-in-firefox-4/">XPI file will not unpacked by default</a>, this can complicate your development process but the solution is easy.</p>
<h3>em:unpack</h3>
<p>Add to your install.rdf the following line and everything comes back (more details <a href="https://developer.mozilla.org/en/Install_Manifests#unpack">here</a>)</p>
<pre class="brush: xml; title: ; notranslate">
&lt;em:unpack&gt;true&lt;/em:unpack&gt;
</pre>
<p>My dev environment has two XPI creation tasks, <strong>debug</strong> and <strong>dist</strong> so it&#8217;s easy to insert &lt;em:unpack/&gt; only when necessary (debug mode in my case)</p>
<h3>RTFM</h3>
<p>Please visit often <a href="https://developer.mozilla.org/en/Firefox_4_for_developers">Firefox 4 for developers</a> (better to follow the feed) because FF4 is a little/big awesome revolution and extensions can be affected in many ways.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://dafizilla.wordpress.com/2010/09/26/firefox-4-packed-xpi-files-and-extensions-test-environments/feed/</wfw:commentRss>
			<slash:comments>4</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1061</post-id>
		<media:content url="https://0.gravatar.com/avatar/051784bd50151c7fa1c7e1ee28c7fc84b822545090c48b6c69fccce109248f58?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">dafi</media:title>
		</media:content>
	</item>
		<item>
		<title>Sunday thought: Discarding localizations from extensions</title>
		<link>https://dafizilla.wordpress.com/2010/08/29/sunday-thought-discarding-localizations-from-extensions/</link>
					<comments>https://dafizilla.wordpress.com/2010/08/29/sunday-thought-discarding-localizations-from-extensions/#comments</comments>
		
		<dc:creator><![CDATA[dafi]]></dc:creator>
		<pubDate>Sun, 29 Aug 2010 10:30:56 +0000</pubDate>
				<category><![CDATA[extension]]></category>
		<category><![CDATA[localization]]></category>
		<category><![CDATA[sunday_thought]]></category>
		<guid isPermaLink="false">http://dafizilla.wordpress.com/?p=1049</guid>

					<description><![CDATA[XUL is so flexible that creating localized extensions is incredible easy, adding new languages is simple and the developer effort is very low. So adding locales is technically trivial but having locales updated can have a dramatic impact on release process. Everything is based on voluntary contribution and this is simply awesome but very often [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>XUL is so flexible that creating localized extensions is incredible easy, adding new languages is simple and the developer effort is very low.</p>
<p>So adding locales is technically trivial but having locales updated can have a dramatic impact on release process.</p>
<p>Everything is based on voluntary contribution and this is simply awesome but very often localizers stop translation without tell anything, other translators can&#8217;t respect deadlines, this is voluntary activity so if they can&#8217;t do it means simply they can&#8217;t do!</p>
<p>I&#8217;m very sad but I&#8217;ve decided to drop localizations inclusion from my extensions I leave only my mother tongue and obviously English.</p>
<h3>Epic fails</h3>
<p>A short list of attempts I&#8217;ve done to obtain completed locales but without success</p>
<ul>
<li>Contacting localizers asking to complete localization without receiving reply (bad citizens???)</li>
<li>Searching other people to continue translations</li>
<li>Asking translations for less than ten strings per release (including accesskeys and key)</li>
<li>Setting long deadlines (two/three weeks) discarding periods closer to holidays (summer/winter)</li>
</ul>
<h3>Technical workarounds</h3>
<p>I know there are many ways to have an incomplete locale using en-US for missing strings, (read <a href="http://www.softwareishard.com/blog/firebug/firebug-16-switch-to-the-default-locale/?utm_source=feedburner&amp;utm_medium=feed&amp;utm_campaign=Feed%3A+SoftwareIsHard+%28Software+is+hard%29&amp;utm_content=Google+Reader">Firebug lesson</a>) but I really dislike mixed locales and I&#8217;m a zero-or-one man so complete locales go inside XPI, incomplete locales not bundled!</p>
<h3>I surrender</h3>
<p>So finally I&#8217;ve decided to stop locales inclusion, I will continue to write code compliant with locale rules (eg no hard coded strings) because it&#8217;s easy and really useful.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://dafizilla.wordpress.com/2010/08/29/sunday-thought-discarding-localizations-from-extensions/feed/</wfw:commentRss>
			<slash:comments>9</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1049</post-id>
		<media:content url="https://0.gravatar.com/avatar/051784bd50151c7fa1c7e1ee28c7fc84b822545090c48b6c69fccce109248f58?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">dafi</media:title>
		</media:content>
	</item>
		<item>
		<title>nsIProcess now works with Unicode</title>
		<link>https://dafizilla.wordpress.com/2010/07/24/nsiprocess-now-works-with-unicode/</link>
					<comments>https://dafizilla.wordpress.com/2010/07/24/nsiprocess-now-works-with-unicode/#comments</comments>
		
		<dc:creator><![CDATA[dafi]]></dc:creator>
		<pubDate>Sat, 24 Jul 2010 16:55:49 +0000</pubDate>
				<category><![CDATA[nsIProcess]]></category>
		<category><![CDATA[unicode]]></category>
		<guid isPermaLink="false">http://dafizilla.wordpress.com/?p=1043</guid>

					<description><![CDATA[In the past I&#8217;ve spoken about my problems passing Unicode arguments to nsIProcess.run(), due to these problems I&#8217;ve created the IWinProcess component. Yesterday I&#8217;ve discovered that Firefox 4.0b2 is shipped with a revisited nsIProcess implementation containing two new awesome scriptable methods: runw() and runwAsync() (the &#8216;w&#8217; stays for wide string). These methods have identical run() [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>In the <a href="https://dafizilla.wordpress.com/2008/10/08/nsiprocess-windows-and-unicode/">past</a> I&#8217;ve spoken about my problems passing Unicode arguments to nsIProcess.run(), due to these problems I&#8217;ve created the <a href="http://dafizilla.svn.sourceforge.net/viewvc/dafizilla/trunk/xpcom/src/winprocess/">IWinProcess</a> component.</p>
<p>Yesterday I&#8217;ve discovered that Firefox 4.0b2 is shipped with a revisited nsIProcess implementation containing two new awesome <em>scriptable</em> methods: <a href="http://mxr.mozilla.org/mozilla-central/source/xpcom/threads/nsIProcess.idl#55">runw()</a> and <a href="http://mxr.mozilla.org/mozilla-central/source/xpcom/threads/nsIProcess.idl#69">runwAsync()</a> (the &#8216;w&#8217; stays for wide string).</p>
<p>These methods have identical run() and runAsync() signatures but they accept UTF-16 strings as arguments.</p>
<p>I&#8217;ve modified my extension to call runw() instead of run() and everything worked like a charm, also the process name (ie the program to launch) can contain Unicode characters, this is a rare case but run() never worked with similar insane scenarios (IWinProcess supports Unicode also on program name).</p>
<p>New methods are very welcomed considering IWinProcess needs to be modified to work with the new <a href="https://developer.mozilla.org/en/XPCOM/XPCOM_changes_in_Gecko_2.0">XPCOM Registration</a> mechanism and I&#8217;ve not enough energies/time/skill to make it compatible with Gecko 2.x.</p>
<p>IWinProcess can be dropped in flavor of native runw()/runwAsync() but to be sure I prefer to wait news from Gecko team and I hope to see soon the <a href="https://developer.mozilla.org/en/nsIProcess">nsIProcess page on MDN</a> documenting these new methods.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://dafizilla.wordpress.com/2010/07/24/nsiprocess-now-works-with-unicode/feed/</wfw:commentRss>
			<slash:comments>6</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1043</post-id>
		<media:content url="https://0.gravatar.com/avatar/051784bd50151c7fa1c7e1ee28c7fc84b822545090c48b6c69fccce109248f58?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">dafi</media:title>
		</media:content>
	</item>
		<item>
		<title>A survey on Safari 5, Chrome and Firefox extensions API</title>
		<link>https://dafizilla.wordpress.com/2010/06/10/a-survey-on-safari-5-chrome-and-firefox-extensions-api/</link>
					<comments>https://dafizilla.wordpress.com/2010/06/10/a-survey-on-safari-5-chrome-and-firefox-extensions-api/#comments</comments>
		
		<dc:creator><![CDATA[dafi]]></dc:creator>
		<pubDate>Thu, 10 Jun 2010 13:28:56 +0000</pubDate>
				<category><![CDATA[chrome]]></category>
		<category><![CDATA[firefox]]></category>
		<category><![CDATA[jetpack]]></category>
		<category><![CDATA[safari]]></category>
		<guid isPermaLink="false">http://dafizilla.wordpress.com/?p=1012</guid>

					<description><![CDATA[A couple of hours after Safari 5 publication I&#8217;ve received an email asking me to port Table2Clipboard to Safari, after two days I&#8217;ve received five emails asking to port on Safari both Table2Clipboard and ViewSourceWith. The same happens with Google Chrome, people asks to migrate extensions to their new favorites browsers but this is in [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>A couple of hours after <a href="http://www.apple.com/safari/">Safari</a> 5 publication I&#8217;ve received an email asking me to port Table2Clipboard to Safari, after two days I&#8217;ve received five emails asking to port on Safari both <a href="https://addons.mozilla.org/en-US/firefox/addon/1852/">Table2Clipboard</a> and <a href="https://addons.mozilla.org/en-US/firefox/addon/394">ViewSourceWith</a>.</p>
<p>The same happens with Google <a href="http://www.google.com/chrome">Chrome</a>, people asks to migrate extensions to their new favorites browsers but this is in many cases very difficult or impossible.</p>
<p>Giorgio was very clear on his post <a href="http://hackademix.net/2010/06/08/before-you-ask-no-noscript-on-safari/">&#8220;Before you ask… (No NoScript on Safari)&#8221;</a> and NoScript is infinitely more important and popular than my bonsai extensions.</p>
<p>Now I want to summarize what it is possible to do on Chrome and Safari and what isn&#8217;t possible to do <em>from an extension developer point of view</em>.</p>
<p>Keep in mind that from an extension developer perspective <span style="text-decoration:underline;"><strong>Firefox is a platform</strong></span>, Safari and Chrome are applications with minimal support for pluggable code.</p>
<p>Minimal support doesn&#8217;t mean you can&#8217;t create great extensions but it means you are very limited in <strong>advanced</strong> topics like web page listeners, clipboard, file and network system access and many other programming areas.</p>
<p><a href="http://jetpackgallery.mozillalabs.com/">Jetpack</a> from my point of view is closer to <a href="https://developer.mozilla.org/en/The_Mozilla_platform">Mozilla Platform</a> than WebKit/Chrome extensions framework so for simplicity when I speak about Firefox I include Jetpack (please apologize me for this simplistic and superficial classification)</p>
<p>Below you find a table with extensions capabilities supported by browsers at time I wrote this post.</p>
<p>It comes from my needs to implements extensions on Chrome and Safari, it is incomplete and anybody is welcomed to help me to complete or correct it.</p>
<table style="border:1px solid #000;">
<tbody>
<tr style="background-color:#9ecfe0;">
<td rowspan="3">Content DOM Modification (eg injection)</td>
<td>Firefox</td>
<td>Yes</td>
</tr>
<tr style="background-color:#9ecfe0;">
<td>Chrome</td>
<td>Yes</td>
</tr>
<tr style="background-color:#9ecfe0;">
<td>Safari</td>
<td>Yes</td>
</tr>
<tr style="background-color:#9ecfe0;">
<td colspan="3">Accessing to web pages to modify or simply traverse the DOM is the main browser activity and it is fully accessible from extensions<br />
Chrome and Safari introduce the concept of JS (and CSS) injection to separate access to content DOM from extension DOM, Firefox is like the wild fast west you can do (almost) anything</td>
</tr>
<tr>
<td rowspan="3">Tabs and Windows Access</td>
<td>Firefox</td>
<td>Yes</td>
</tr>
<tr>
<td>Chrome</td>
<td>Yes</td>
</tr>
<tr>
<td>Safari</td>
<td>Yes</td>
</tr>
<tr>
<td colspan="3">Enumerating, inserting and closing windows and tabs are common tasks, both Safari 5 and Chrome have very well designed APIs.<br />
Firefox API is too low level (XPCOM from JS) but luckily <a href="https://developer.mozilla.org/en/FUEL">FUEL</a> simplifies all these operations, Jetpack has a very handy API.<br />
On Safari I was unable to find APIs to listen tabs creation and destruction, Chrome has very well documented APIs to do that.</td>
</tr>
<tr style="background-color:#9ecfe0;">
<td rowspan="3">Tabs Customization</td>
<td>Firefox</td>
<td>Yes</td>
</tr>
<tr style="background-color:#9ecfe0;">
<td>Chrome</td>
<td>No</td>
</tr>
<tr style="background-color:#9ecfe0;">
<td>Safari</td>
<td>No</td>
</tr>
<tr style="background-color:#9ecfe0;">
<td colspan="3">The UI widget tab is available only on Firefox thanks to XUL. If you want to colorize tabs or add operations to context menu you simply can&#8217;t on Chrome and Safari, this is by design.<br />
This is a very advanced topic and extensions can live without this feature but new UI ideas must repose in peace for ever.</td>
</tr>
<tr>
<td rowspan="3">Browser UI Widgets Customization</td>
<td>Firefox</td>
<td>Yes</td>
</tr>
<tr>
<td>Chrome</td>
<td>Partial by design</td>
</tr>
<tr>
<td>Safari</td>
<td>Partial by design</td>
</tr>
<tr>
<td colspan="3">Firefox has no constraints, Chrome allows to add icons on address bar (page actions), Chrome and Safari allow to add toolbar buttons, Safari allows to add context menu items, too.<br />
At this time the context menu is accessible from APIs in Chrome only from an experimental API</td>
</tr>
<tr style="background-color:#9ecfe0;">
<td rowspan="3">Clipboard Support</td>
<td>Firefox</td>
<td>Yes</td>
</tr>
<tr style="background-color:#9ecfe0;">
<td>Chrome</td>
<td>Partial</td>
</tr>
<tr style="background-color:#9ecfe0;">
<td>Safari</td>
<td>No</td>
</tr>
<tr style="background-color:#9ecfe0;">
<td colspan="3">Is clipboard support an advanced topic? I&#8217;m not sure.<br />
Chrome clipboard support is strange, it only allows to copy full tab content and text selection, the text selection can be copied using the trick document.doCommand(&#8216;copy&#8217;) so not a real API exists.Developers can&#8217;t copy their own strings but only content already present on web pages.</p>
<p>Firefox allows to copy strings from code and the advanced usage permits to choose the flavors, for example plain text and HTML code.</p>
<p>Table2Clipboard is easy to port on other browsers (95% is DOM content code) but how can I copy to clipboard my own generated strings? Sadly I can&#8217;t</td>
</tr>
<tr>
<td rowspan="3">File System Access</td>
<td>Firefox</td>
<td>Yes</td>
</tr>
<tr>
<td>Chrome</td>
<td>No</td>
</tr>
<tr>
<td>Safari</td>
<td>No</td>
</tr>
<tr>
<td colspan="3">For security reasons Chrome doesn&#8217;t allow to open local files (at least from simple APIs), this sounds reasonable but can be very limiting for advanced usage. Chrome (and maybe Safari) can communicate with the file system writing NSAPI Plugins this is more complicated than using a native Javascript API but it sounds consistent with security constraints.</p>
<p>I consider ridiculous that Chrome doesn&#8217;t allow to access to file:// pages from extensions</td>
</tr>
<tr style="background-color:#9ecfe0;">
<td rowspan="3">Run OS local applications</td>
<td>Firefox</td>
<td>Yes</td>
</tr>
<tr style="background-color:#9ecfe0;">
<td>Chrome</td>
<td>No</td>
</tr>
<tr style="background-color:#9ecfe0;">
<td>Safari</td>
<td>No</td>
</tr>
<tr style="background-color:#9ecfe0;">
<td colspan="3">Running local applications from extensions follows the same rules of &#8216;File System Access&#8217; and same solutions (ie NSAPI Plugins)</td>
</tr>
<tr>
<td rowspan="3">HTTP low level Access</td>
<td>Firefox</td>
<td>Yes</td>
</tr>
<tr>
<td>Chrome</td>
<td>No</td>
</tr>
<tr>
<td>Safari</td>
<td>No</td>
</tr>
<tr>
<td colspan="3">I think this lack on Chrome/Safari makes almost impossible to implement efficients web pages inspections as done by NoScript</td>
</tr>
<tr style="background-color:#9ecfe0;">
<td rowspan="3">XMLHttpRequest and Cross-domain</td>
<td>Firefox</td>
<td>Yes</td>
</tr>
<tr style="background-color:#9ecfe0;">
<td>Chrome</td>
<td>Yes</td>
</tr>
<tr style="background-color:#9ecfe0;">
<td>Safari</td>
<td>Yes</td>
</tr>
<tr style="background-color:#9ecfe0;">
<td colspan="3">Any modern web application uses XMLHttpRequest but with Cross-domain Restrictions, from extensions all browsers allow to make Cross-domain calls</td>
</tr>
</tbody>
</table>
<h3>Safari is less extensible than Chrome</h3>
<p>Safari extension API set at this time is very limited also when compared with Chrome, as mentioned above this doesn&#8217;t mean all extensions are toys but the user experience can be limited and the developer creativity is seriously damaged.</p>
<h3>Treat extensions developers as first class developers</h3>
<p>I think extension developers must be able to do same things the application developers can do, obviously security constraints are welcomed but please don&#8217;t kill developer freedom in name of an opaque concept of security.</p>
<p>Is the browser less or more secure without <a href="https://addons.mozilla.org/en-US/firefox/addon/1865/">AdBlockPlus</a> or <a href="https://addons.mozilla.org/en-US/firefox/addon/722/">NoScript</a>?</p>
]]></content:encoded>
					
					<wfw:commentRss>https://dafizilla.wordpress.com/2010/06/10/a-survey-on-safari-5-chrome-and-firefox-extensions-api/feed/</wfw:commentRss>
			<slash:comments>11</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1012</post-id>
		<media:content url="https://0.gravatar.com/avatar/051784bd50151c7fa1c7e1ee28c7fc84b822545090c48b6c69fccce109248f58?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">dafi</media:title>
		</media:content>
	</item>
		<item>
		<title>Porting Table2Clipboard to Jetpack</title>
		<link>https://dafizilla.wordpress.com/2010/01/12/porting-table2clipboard-to-jetpack/</link>
					<comments>https://dafizilla.wordpress.com/2010/01/12/porting-table2clipboard-to-jetpack/#comments</comments>
		
		<dc:creator><![CDATA[dafi]]></dc:creator>
		<pubDate>Tue, 12 Jan 2010 18:54:07 +0000</pubDate>
				<category><![CDATA[jetpack]]></category>
		<category><![CDATA[table2clipboard]]></category>
		<guid isPermaLink="false">http://dafizilla.wordpress.com/?p=998</guid>

					<description><![CDATA[I&#8217;ve written many Jepacks to solve little annoying problems mainly related to urls and tabs. JetColorTab, the 50 Line code contest&#8217;s winner born to solve a need without installing full features extensions. In these days the Mozilla community (and me) has debated about the future of Jetpack and XUL and many people says &#8220;a big [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>I&#8217;ve written many Jepacks to solve little annoying problems mainly related to <a href="http://jetpackgallery.mozillalabs.com/jetpacks/259">urls</a> and <a href="http://jetpackgallery.mozillalabs.com/jetpacks/164">tabs</a>.</p>
<p><a href="http://jetpackgallery.mozillalabs.com/jetpacks/198">JetColorTab</a>, the <a href="http://mozillalabs.com/blog/2010/01/jetpack-50-line-code-challenge-winner-is-crowned/">50 Line code contest&#8217;s winner</a> born to solve a need without installing full features extensions.</p>
<p>In these days the Mozilla community (and me) has debated about the future of Jetpack and XUL and many people says &#8220;a big number of extensions can be written simply using standard DOM and HTML&#8221;</p>
<p>This sentence intrigued me so I&#8217;ve tried to rewrite <a href="https://addons.mozilla.org/it/firefox/addon/1852">Table2Clipboard</a> (T2C) for Jetpack, T2C makes a simple operation, it copies HTML selection also <a href="https://developer.mozilla.org/En/DOM/Range">DOMRange</a> to clipboard preserving the format and many other aspects.</p>
<p>After 30 minutes the porting was completed (excluding the UI not yet rewritten) so <em>heavily DOM oriented extensions can be easily ported to Jetpack</em> but some XUL code remains.</p>
<p>Extensions like NoScript or AdBlockPlus today are very hard (impossible??) to move to Jetpack and hopefully this is not necessary because XUL sits near to us for a long time <img src="https://s0.wp.com/wp-content/mu-plugins/wpcom-smileys/twemoji/2/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<h3>Little fixes to T2C required</h3>
<ul>
<li>Jetpack version 0.6.2 doesn&#8217;t allow (or at least I&#8217;m not able) to use modules so while waiting for <a href="https://wiki.mozilla.org/Labs/Jetpack/JEP/25">CommonJS</a> comes to Jetpack it is necessary to copy all scripts into the main jetpack file</li>
<li>HTMLTableElement, HTMLTableCellElement, HTMLTableRowElement are not &#8220;visible&#8221; so expressions like
<pre class="brush: jscript; title: ; notranslate">
if (a instanceof HTMLTableElement) {}
</pre>
<p>don&#8217;t work but this isn&#8217;t a problem because the code can be written more efficiently</p>
<pre class="brush: jscript; title: ; notranslate">
if (a.localName == &quot;TABLE&quot;) {}
</pre>
</li>
<li>gContextMenu.target can be replaced by the standard Jetpack context.node, the parameter context is passed for example to beforeShow()</li>
</ul>
<h3>Where XUL is necessary and improvements required</h3>
<ul>
<li>Jetpack allows to obtain the text or HTML selection using jetpack.selection but it doesn&#8217;t expose the focusNode so I used jetpack.tabs.focused.contentWindow.getSelection() (i.e. XUL nsISelection)</li>
<li>XUL clipboard supports flavors but under Jetpack you can set only one at time, so you can&#8217;t add text version plus html version of same content, I think the &#8216;set&#8217; method should have an &#8216;add&#8217; mate</li>
<li>T2C needs to access to CSS using ownerDocument.defaultView.getComputedStyle</li>
<li>T2C uses the inIDOMUtils, it should be great if this interface become available from Jetpack</li>
</ul>
<p>Jetpack Table2Clipboard can be downloaded from the <a href="http://jetpackgallery.mozillalabs.com/jetpacks/286">Jetpack Gallery</a></p>
]]></content:encoded>
					
					<wfw:commentRss>https://dafizilla.wordpress.com/2010/01/12/porting-table2clipboard-to-jetpack/feed/</wfw:commentRss>
			<slash:comments>3</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">998</post-id>
		<media:content url="https://0.gravatar.com/avatar/051784bd50151c7fa1c7e1ee28c7fc84b822545090c48b6c69fccce109248f58?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">dafi</media:title>
		</media:content>
	</item>
		<item>
		<title>Sunday thought: Please don&#8217;t kill XUL</title>
		<link>https://dafizilla.wordpress.com/2010/01/10/sunday-thought-please-dont-kill-xul/</link>
					<comments>https://dafizilla.wordpress.com/2010/01/10/sunday-thought-please-dont-kill-xul/#comments</comments>
		
		<dc:creator><![CDATA[dafi]]></dc:creator>
		<pubDate>Sun, 10 Jan 2010 14:33:59 +0000</pubDate>
				<category><![CDATA[sunday_thought]]></category>
		<category><![CDATA[xul]]></category>
		<guid isPermaLink="false">http://dafizilla.wordpress.com/?p=991</guid>

					<description><![CDATA[After reading the Mike Connor&#8217;s blog post and the Firebug&#8217;s post blog I realized XUL developers are closer to a revolution. I have only a few questions in my mind and my stupid answers. Q: Is it really so difficult to write XUL extensions? A: For me no and I&#8217;m not a so clever person! [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>After reading the Mike Connor&#8217;s <a href="http://steelgryphon.com/blog/2010/01/09/on-personas-and-themes/">blog post</a> and the Firebug&#8217;s <a href="http://blog.getfirebug.com/2010/01/09/firefox-ending-support-for-extensions/">post blog</a> I realized XUL developers are closer to a revolution.</p>
<p>I have only a few questions in my mind and my stupid answers.</p>
<p>Q: Is it really so difficult to write XUL extensions?</p>
<p>A: For me no and I&#8217;m not a so clever person! OK there is a learning curve but every complete (non strictly complex) system requires to study, to learn and to compare itself with other people. Please don&#8217;t  confuse <strong>&#8220;rich&#8221;</strong> with <strong>&#8220;complicated</strong>&#8220;.</p>
<p>Q: We really need new addons ecosystem?</p>
<p>A: Maybe we need a lightweight ecosystem but XUL is the right way, Jetpack sounds good but today it is strongly tied to the browser, this will change when Jetpack for Thunderbird will be published.</p>
<p>I love Jetpack believe me <img src="https://s0.wp.com/wp-content/mu-plugins/wpcom-smileys/twemoji/2/72x72/1f609.png" alt="😉" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<p>Jetpack suffers from its so called &#8220;JQuery oriented syntax&#8221;.</p>
<p>I don&#8217;t like the sentence &#8220;JQuery oriented syntax&#8221; simply because doesn&#8217;t exists a &#8220;JQuery syntax&#8221;. JQuery uses Javascript closure syntax construct, I admit sometime it is very ugly and code tends to became <em>naturally obfuscated</em></p>
<p>Are we sure &#8220;JQuery oriented syntax&#8221; is really so simple for newbies?</p>
<p>I agree with Daniel Gazman <a href="http://www.glazman.org/weblog/dotclear/index.php?post/2010/01/07/Jetpack">blog post</a>, solution can be worst than the problem.</p>
<p>Q: Is restarting the browser after an addon installation so terrible?</p>
<p>A: I want my Operating System doesn&#8217;t require to me to restart after an update but I don&#8217;t care if my browser must be restarted after an addon installation/update. People are so lazy, people are so stupid? They accept OS <strong>reboots</strong> but suffer browser <strong>restart</strong><strong>s</strong>? This is really a strange world!</p>
<p>Q: Is the problem related to Google Chrome success?</p>
<p>A: I don&#8217;t like so much Google Chrome, ok its startup time is amazing, then? What other feature is so fantastic? I&#8217;m a programmer and maybe I don&#8217;t see &#8220;commercial&#8221; related problem.</p>
<p>Maybe someone forgets that &#8220;Firefox is a platform&#8221;, Firefox isn&#8217;t a simple browser.</p>
<p>You can reuse your XUL <strong>platform</strong> know-how to create extensions for other applications; Thunderbird, Komodo, Songbird, Prism (my favorites four XUL applications)</p>
<p>You can create standalone applications using the XUL <strong>platform</strong>, too.</p>
<p>You can use extensions also on your mobile phone thanks to Fennec.</p>
<p>Please apologize me for my bad English and my rant</p>
]]></content:encoded>
					
					<wfw:commentRss>https://dafizilla.wordpress.com/2010/01/10/sunday-thought-please-dont-kill-xul/feed/</wfw:commentRss>
			<slash:comments>10</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">991</post-id>
		<media:content url="https://0.gravatar.com/avatar/051784bd50151c7fa1c7e1ee28c7fc84b822545090c48b6c69fccce109248f58?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">dafi</media:title>
		</media:content>
	</item>
		<item>
		<title>How to programmatically change XUL tree&#8217;s pseudo-classes</title>
		<link>https://dafizilla.wordpress.com/2010/01/08/how-to-programmatically-change-xul-trees-pseudo-classes/</link>
					<comments>https://dafizilla.wordpress.com/2010/01/08/how-to-programmatically-change-xul-trees-pseudo-classes/#comments</comments>
		
		<dc:creator><![CDATA[dafi]]></dc:creator>
		<pubDate>Fri, 08 Jan 2010 14:45:12 +0000</pubDate>
				<category><![CDATA[extension]]></category>
		<category><![CDATA[nsITreeView]]></category>
		<category><![CDATA[xul]]></category>
		<guid isPermaLink="false">http://dafizilla.wordpress.com/?p=968</guid>

					<description><![CDATA[I encountered the following problem: Change font and color for XUL tree based on user input. The user chooses the font and picks the color from a dialog and the tree widget is immediately redrawn with the new styles. Changing styles for XUL trees requires the implementation of a nsITreeView, some nsIAtomService manipulation and some [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>I encountered the following problem: <em>Change font and color for XUL tree based on user input. The user chooses the font and picks the color from a dialog and the tree widget is immediately redrawn with the new styles.</em></p>
<p>Changing styles for XUL trees requires the implementation of a <a href="https://developer.mozilla.org/en/XPCOM_Interface_Reference/nsITreeView">nsITreeView</a>, some nsIAtomService manipulation and some <a href="https://developer.mozilla.org/en/CSS_Reference/Mozilla_Extensions">Mozilla CSS Extensions</a>, definitively a bit verbose but enough simple after a dozen of attempts :P.</p>
<p>The Mozilla CSS tree extensions are mainly pseudo-classes that can&#8217;t be modified from code, so you need to create a CSS text snippet with new values and then &#8220;reload&#8221; it.</p>
<p>Reloading CSS files can be accomplished using the <a href="https://developer.mozilla.org/en/Using_the_Stylesheet_Service">nsIStyleSheetService</a> service, it only requires a <a href="https://developer.mozilla.org/en/XPCOM_Interface_Reference/nsIURI">nsIURI</a> pointing to the CSS resource.</p>
<p>Based on the scenario described above the styles are generated at runtime so I need to create a CSS style representation and stores it for example on a temp file. The styles don&#8217;t really need to be persisted on disk so why do I need to create an unuseful file?</p>
<p>Well using the &#8220;data:&#8221; protocol it is possible to encode the generated CSS string and pass to nsIURI the data uri without needs to create temporary files as shown below.</p>
<pre class="brush: jscript; title: ; notranslate">
function applyUserStyles(cssStyles) {
    // myTreeChildren is the CSS class name used for the tree
    // obviously can be parametrized
    var css = '.myTreeChildren::-moz-tree-cell-text {' + cssStyles + '}';
    var data = 'data:text/css;charset=utf-8,' + encodeURI(css);
    var sss = Components.classes[&quot;@mozilla.org/content/style-sheet-service;1&quot;]
                .getService(Components.interfaces.nsIStyleSheetService);
    var ios = Components.classes[&quot;@mozilla.org/network/io-service;1&quot;]
                .getService(Components.interfaces.nsIIOService);
    var u = ios.newURI(data, null, null);
    if (sss.sheetRegistered(u, sss.USER_SHEET)) {
        sss.unregisterSheet(u, sss.USER_SHEET);
    }
    sss.loadAndRegisterSheet(u, sss.USER_SHEET);
}
 </pre>
<p>Maybe a simpler solution exists and my code is the worst way to proceed, if you know a better way please tell me <img src="https://s0.wp.com/wp-content/mu-plugins/wpcom-smileys/twemoji/2/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
]]></content:encoded>
					
					<wfw:commentRss>https://dafizilla.wordpress.com/2010/01/08/how-to-programmatically-change-xul-trees-pseudo-classes/feed/</wfw:commentRss>
			<slash:comments>3</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">968</post-id>
		<media:content url="https://0.gravatar.com/avatar/051784bd50151c7fa1c7e1ee28c7fc84b822545090c48b6c69fccce109248f58?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">dafi</media:title>
		</media:content>
	</item>
	</channel>
</rss>
