<?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>نوشته های یک برنامه نویس</title>
	<atom:link href="http://salarblog.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://salarblog.wordpress.com</link>
	<description>نوشته های فنی و شخصی من پیرامون هرچه به ذهنم می رسه</description>
	<lastBuildDate>Sat, 28 Nov 2009 17:22:08 +0000</lastBuildDate>
	<generator>http://wordpress.com/</generator>
	<language>fa</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<cloud domain='salarblog.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://www.gravatar.com/blavatar/a0c0c85d87ed6df1037f5940bdfca9d2?s=96&#038;d=http://s.wordpress.com/i/buttonw-com.png</url>
		<title>نوشته های یک برنامه نویس</title>
		<link>http://salarblog.wordpress.com</link>
	</image>
			<item>
		<title>دو ویژگی CSS برای زبانهای راست به چپ از جمله فارسی</title>
		<link>http://salarblog.wordpress.com/2009/11/28/text-align-new-values/</link>
		<comments>http://salarblog.wordpress.com/2009/11/28/text-align-new-values/#comments</comments>
		<pubDate>Sat, 28 Nov 2009 17:11:22 +0000</pubDate>
		<dc:creator>Salar</dc:creator>
				<category><![CDATA[FireFox]]></category>
		<category><![CDATA[Web Development]]></category>
		<category><![CDATA[آموزشی]]></category>
		<category><![CDATA[CSS 3]]></category>
		<category><![CDATA[CSS 3 Features]]></category>
		<category><![CDATA[CSS3]]></category>
		<category><![CDATA[Google Chrome]]></category>
		<category><![CDATA[Safari]]></category>
		<category><![CDATA[WebKit]]></category>

		<guid isPermaLink="false">http://salarblog.wordpress.com/?p=826</guid>
		<description><![CDATA[اخیرا در ورژن جدید فایرفاکس (3.6) دو مقدار از ویژگی text-align که جزو استاندارد CSS 3 هستند، پشتیبانی شده است. این دو ویژگی از آن جهت می تونه مهم باشه که برای طراحی سایتهایی با پشتیانی هر دو زبانهای راست به چپ و چپ به راست، کار طراح وب رو بسیار آسان می کنه.
این دو [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=salarblog.wordpress.com&blog=4422419&post=826&subd=salarblog&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>اخیرا در ورژن جدید فایرفاکس (3.6) دو مقدار از ویژگی <a href="https://developer.mozilla.org/en/CSS/text-align" target="_blank">text-align</a> که جزو استاندارد <a href="http://salarblog.wordpress.com/2008/10/05/css3-new-features-part1/">CSS 3</a> هستند، پشتیبانی شده است. این دو ویژگی از آن جهت می تونه مهم باشه که برای طراحی سایتهایی با پشتیانی هر دو زبانهای راست به چپ و چپ به راست، کار طراح وب رو بسیار آسان می کنه.</p>
<p>این دو مقدار برای ویژگی <a href="https://developer.mozilla.org/en/CSS/text-align" target="_blank">text-align</a> عبارتند از:</p>
<p><span style="color:#800000;"><strong>start</strong></span>: تعیین خواهد کرد که متون در سمت آغاز نوشته با توجه به جهت به کار رفته تراز شوند. به عبارت بهتر در صورتی که مقدار direction که به عنصر مورد نظر اعمال می شود برابر با ltr باشه، مقدار start دقیقا همانند left عمل خواهد کرد و متون به سمت چپ تراز خواهند شد. در صورتی هم که مقدار direction برابر با rtl باشد، مقدار start دقیقا همانند right عمل خواهد کرد و متون به سمت راست تراز خواهند شد.</p>
<p>به مثالهای زیر توجه کنید:</p>
<pre>&lt;html&gt;
&lt;body style="direction:ltr"&gt;
&lt;p style="text-align:start"&gt;Left side of page.&lt;/p&gt;
&lt;/body&gt;
&lt;/html&gt;</pre>
<p>متن در سمت چپ قرار می گیرد.</p>
<pre>&lt;html&gt;
&lt;body style="direction:rtl"&gt;
&lt;p style="text-align:start"&gt;Right side of page.&lt;/p&gt;
&lt;/body&gt;
&lt;/html&gt;</pre>
<p>متن در سمت راست قرار می گیرد.</p>
<p><span style="color:#800000;"><strong>end</strong></span>: تعیین خواهد کرد که متون در سمت آخر صفحه یا نوشته با توجه به جهت به کار رفته تراز شوند. به عبارت بهتر در صورتی که مقدار direction که به عنصر مورد نظر هاعمال می شود برابر با ltr باش، مقدار end دقیقا همانند right عمل خواهد کرد و متون به سمت راست تراز خواهند شد. برای مقدار rtl نیز عکس این مطلب اعمال خواهد شد.</p>
<p>همانطور که مطمئنن متوجه شدید عملکرد این دو مقدار بستگی به مقدار direction دارد. این مورد باعث خواهد شد که بدون نیاز به نوشتن کدهای اضافی برای css به راحتی مقصود خود رو اعمال کنید.</p>
<p><span style="color:#800000;"><strong>پشتیبانی مرورگرها از start و end</strong></span></p>
<p>به علت نسبتا جدید بودن این دو مقدار مرورگرهای کمی از آنها پشتبانی می کنند. در این میان فقط سه مرور Firefox, safari و chrome این دو مورد رو پیاده سازی کرده اند.</p>
<p>مرورگرهای safari و chrome به علت داشتن موتور مشترک Webkit از نسخه 525 به بعد آن پستیانی به عمل می آورند. به عبارت بهتر Safari نسخه 3.1 و chrome نسخه 1<br />
مرورگر Firefox مقدار start رو از نسخه 1 و مقدار end رو از نسخه 3.6 به بعد پیاده سازی کرده است.</p>
<p><a href="https://developer.mozilla.org/en/CSS/text-align" target="_blank">اطلاعات بیشتر در مورد text-align</a></p>
Posted in FireFox, Web Development, آموزشی Tagged: CSS 3, CSS 3 Features, CSS3, FireFox, Google Chrome, Safari, WebKit <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/salarblog.wordpress.com/826/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/salarblog.wordpress.com/826/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/salarblog.wordpress.com/826/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/salarblog.wordpress.com/826/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/salarblog.wordpress.com/826/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/salarblog.wordpress.com/826/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/salarblog.wordpress.com/826/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/salarblog.wordpress.com/826/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/salarblog.wordpress.com/826/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/salarblog.wordpress.com/826/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=salarblog.wordpress.com&blog=4422419&post=826&subd=salarblog&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://salarblog.wordpress.com/2009/11/28/text-align-new-values/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/4fb98f744efee7bbacd63835ad92cd4e?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">salarblog</media:title>
		</media:content>
	</item>
		<item>
		<title>Closure Tools</title>
		<link>http://salarblog.wordpress.com/2009/11/18/closure-tools/</link>
		<comments>http://salarblog.wordpress.com/2009/11/18/closure-tools/#comments</comments>
		<pubDate>Wed, 18 Nov 2009 16:58:15 +0000</pubDate>
		<dc:creator>Salar</dc:creator>
				<category><![CDATA[FireFox]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[اخبار فناوری]]></category>
		<category><![CDATA[معرفی]]></category>
		<category><![CDATA[Closure Compiler]]></category>
		<category><![CDATA[Closure Inspector]]></category>
		<category><![CDATA[Closure Library]]></category>
		<category><![CDATA[Closure Templates]]></category>
		<category><![CDATA[Closure Tools]]></category>
		<category><![CDATA[Firebug]]></category>

		<guid isPermaLink="false">http://salarblog.wordpress.com/?p=816</guid>
		<description><![CDATA[




مدتی نزدیک به دو هفته است که گوگل یکی از پروژه های موفق خودش رو که پشت تعدادی از سرویس هایش یعنی Gmail ، Docs و Maps قرار دارد  رو اوپن سورس کرده.
Closure Tools مجوعه ای از ابزار ها است که برای توسعه دهندگان وب در نظر گرفته شده است. این مجوعه شامل موارد زیر [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=salarblog.wordpress.com&blog=4422419&post=816&subd=salarblog&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><div class="mceTemp">
<dl class="wp-caption  alignright">
<dt class="wp-caption-dt"><img class="size-full wp-image-818" title="Closure Tools" src="http://salarblog.files.wordpress.com/2009/11/closure.png?w=82&#038;h=82" alt="Closure Tools" width="82" height="82" /></dt>
</dl>
</div>
<p>مدتی نزدیک به دو هفته است که گوگل یکی از پروژه های موفق خودش رو که پشت تعدادی از سرویس هایش یعنی Gmail ، Docs و Maps قرار دارد  رو اوپن سورس کرده.</p>
<p><a href="http://code.google.com/closure/" target="_blank">Closure Tools</a> مجوعه ای از ابزار ها است که برای توسعه دهندگان وب در نظر گرفته شده است. این مجوعه شامل موارد زیر است.</p>
<p><strong><a href="http://code.google.com/closure/compiler" target="_blank"><span style="color:#800000;">Closure Compiler</span></a></strong></p>
<p>بهینه ساز یا فشرده ساز کد های جاوا اسکریپت هست. این ابزار با شناسایی کدهای بی استفاده و حذف آنها قوی تر از سایر فشرده ساز ها ظاهر شده. بی جهت نیست که اسم کامپایلر رو انتخاب کردن. این ابزار همچنین کد رو تا حد زیادی فشرده می کنه. این کار با استفاده از تغییر نام متغیرهای داخلی و پارامترها انجام میشه. همچنین امکاناتی مانند بررسی وجود باگ های احتمالی و تشخیص خطاها ،  در کد نویسی صحیح جاوا اسکریپت بسیار کمک خواهد کرد.</p>
<p>برای امتحان این ابزار به صورت آنلاین به اینجا مراجعه کنید:</p>
<p><a href="http://closure-compiler.appspot.com/home" target="_blank"><span style="color:#800000;">http://closure-compiler.appspot.com/home</span></a></p>
<p>توجه کنید که هیچ یک از لینکها برای ایران باز نخواهد شد و از روشهای معمول برای رفع این مشکل استفاده کنید.</p>
<p><a href="http://code.google.com/closure/compiler/docs/inspector.html" target="_blank"><span style="color:#800000;"><strong>Closure Inspector</strong></span></a></p>
<p>یک افزونه فایرفاکس هست که به افزونه <a href="http://www.getfirebug.com/" target="_blank">Firebug</a> اضافه می شه. کار اصلی این افزونه ایجاد امکان دیباگ کردن کدهای جاوا اسکریپتی که obfuscated شده هستند است. همچنین این ابزار اماکاتی مانند source mapping و stack trace پیشرفته تر و امکان unit test رو به فایرفاکس شما اضافه خواهد کرد.</p>
<p>برای رفع اشکال کد های اکثر سایتها این ابزار یک کارگشای حرفه ای برای شما خواهد بود.</p>
<p><strong><a href="http://code.google.com/closure/library" target="_blank"><span style="color:#800000;">Closure Library</span></a></strong></p>
<p>کتابخانه ای استاندارد شده توسط گوگل برای جاوا اسکریپت هست. این کتابختانه امکانات زیادی مانند طراحی رابط کاربر ، unit testing ، کار با rich-text و تبادل داده ها با سرور و غیره رو فراهم می کنه.</p>
<p>برای کار با کتابخانه حتما <a href="http://closure-library.googlecode.com/svn/trunk/closure/goog/docs/index.html" target="_blank">مستندات</a> اون رو مطالعه کنید.</p>
<p><a href="http://code.google.com/closure/templates" target="_blank"><strong><span style="color:#800000;">Closure Templates</span></strong></a></p>
<p>ابزار یا فریم ورکی هست که امکان تولید کد های html دینامیک رو فراهم می کنه. این ابزار هم برای Java و هم برای Javascript پیاده سازی شده است. در صورتی که به صورد دینامیک با جاوا اسکریپت ظاهر صحات رو تغییر می دید این قالب ها کار شما رو سریع تر خواهند کرد.</p>
Posted in FireFox, Google, معرفی, اخبار فناوری Tagged: Closure Compiler, Closure Inspector, Closure Library, Closure Templates, Closure Tools, Firebug, FireFox, Google <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/salarblog.wordpress.com/816/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/salarblog.wordpress.com/816/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/salarblog.wordpress.com/816/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/salarblog.wordpress.com/816/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/salarblog.wordpress.com/816/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/salarblog.wordpress.com/816/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/salarblog.wordpress.com/816/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/salarblog.wordpress.com/816/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/salarblog.wordpress.com/816/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/salarblog.wordpress.com/816/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=salarblog.wordpress.com&blog=4422419&post=816&subd=salarblog&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://salarblog.wordpress.com/2009/11/18/closure-tools/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/4fb98f744efee7bbacd63835ad92cd4e?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">salarblog</media:title>
		</media:content>

		<media:content url="http://salarblog.files.wordpress.com/2009/11/closure.png" medium="image">
			<media:title type="html">Closure Tools</media:title>
		</media:content>
	</item>
		<item>
		<title>بررسی وجود پیاده سازی محتویات MasterPage</title>
		<link>http://salarblog.wordpress.com/2009/10/25/test-if-masterpage-contents-implemented/</link>
		<comments>http://salarblog.wordpress.com/2009/10/25/test-if-masterpage-contents-implemented/#comments</comments>
		<pubDate>Sun, 25 Oct 2009 18:47:22 +0000</pubDate>
		<dc:creator>Salar</dc:creator>
				<category><![CDATA[ASP.NET]]></category>
		<category><![CDATA[Web Development]]></category>
		<category><![CDATA[dotNET Framework]]></category>
		<category><![CDATA[آموزشی]]></category>
		<category><![CDATA[.NET]]></category>
		<category><![CDATA[dotNET]]></category>
		<category><![CDATA[MasterPage]]></category>
		<category><![CDATA[ContentPlaceHolder]]></category>
		<category><![CDATA[ContentTemplates]]></category>

		<guid isPermaLink="false">http://salarblog.wordpress.com/?p=806</guid>
		<description><![CDATA[شاید در استفاده از MasterPage ها زمانی پیش آمده باشد که لازم شده وجود پیاده سازی یک ContentPlaceHolder را در صفحه خاص رو بررسی کنید. مثلا زمانی رو در نظر بگیرید که در صفحه خاصی نباید بلوک خلاصه محتویات صفحه یا لینکها نمایش داده شود و این کادر نیز در MasterPage پیاده سازی شده است.
پس [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=salarblog.wordpress.com&blog=4422419&post=806&subd=salarblog&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>شاید در استفاده از MasterPage ها زمانی پیش آمده باشد که لازم شده وجود پیاده سازی یک ContentPlaceHolder را در صفحه خاص رو بررسی کنید. مثلا زمانی رو در نظر بگیرید که در صفحه خاصی نباید بلوک خلاصه محتویات صفحه یا لینکها نمایش داده شود و این کادر نیز در MasterPage پیاده سازی شده است.</p>
<p>پس روشی باید به کار گیرید که آن کادر در آن صفحه به خصوص نمایش داده نشود. متاسفانه در دات نت روشی برای این کار در نظر گرفته نشده است؛ لااقل هیچ متد عمومی برای این کار وجود ندارد.</p>
<p>خوشبختانه ویژگی داخلی و مخفی در کلاس MasterPage وجود دارد به نام ContentTemplates که لیستی از ContentPlaceHolder هست که توسط صفحه جاری پیاده سازی شده است. کاری که لازم است استفاده از قدرت Reflection دات نت هست تا به آن ویژگی دسترسی پیدا کنیم.</p>
<p>همراه با این باید ContentPlaceHolder برای وجود کنترل در داخلی خودش هم بررسی بشه. تابع زیر برای همین کار هست:</p>
<pre>public static bool HasNonEmptyControls(ContentPlaceHolder cph)
{
    if (cph.Controls.Count == 0)
    {
        return false;
    }
    else if (cph.Controls.Count == 1)
    {
        LiteralControl c = cph.Controls[0] as LiteralControl;

        if (string.IsNullOrEmpty(c.Text) || IsWhiteSpace(c.Text))
            return false;
    }

    return true;
}

static bool IsWhiteSpace(string s)
{
    for (int i = 0; i &lt; s.Length; i++)
        if (!char.IsWhiteSpace(s[i]))
            return false;

    return true;
}</pre>
<p>در ادامه تابع اصلی منظور ما که وجود پیاده سازی از یک ContentPlaceHolder به خصوص رو بررسی خواهد کرد:</p>
<pre>static readonly Type _masterType = typeof(MasterPage);
static readonly PropertyInfo _contentTemplatesProp = _masterType.GetProperty("ContentTemplates", BindingFlags.GetProperty | BindingFlags.NonPublic | BindingFlags.Instance);

public static bool HasContentPageContent(ContentPlaceHolder cph)
{
    IDictionary templates = null;
    MasterPage master = cph.Page.Master;

    while (templates == null &amp;&amp; master != null)
    {
        templates = (IDictionary)_contentTemplatesProp.GetValue(master, null);
        master = master.Master;
    }

    if (templates == null)
        return false;

    bool isSpecified = false;

    foreach (string key in templates.Keys)
    {
        if (key == cph.ID)
        {
            isSpecified = true;

            break;
        }
    }

    return isSpecified;
}</pre>
<p>همانطور که از کد مشخصه با بدست آوردن ویژگی ContentTemplates که یک لسیت دیکشنری است وجود ContentPlaceHolder مورد نظر رو بررسی می کنیم.</p>
<p>و سر انجام ترکیبی از این دو تابع جهت بدست آوردن نتیجه مطلوب:</p>
<pre>public static bool HasContentOrControls(ContentPlaceHolder cph)
{
    return HasNonEmptyControls(cph) || HasContentPageContent(cph);
}</pre>
<p>و تمام. به راحتی می توانید از این تابع استفاده کنید. مانند نمونه زیر:</p>
<pre>&lt;%if (HasContentOrControls(plhOptions)){ %&gt;
&lt;div id="options"&gt;
 &lt;div&gt;
 &lt;h2&gt;
 &lt;asp:ContentPlaceHolder ID="plhOptionsTitle" runat="server" /&gt;
 &lt;/h2&gt;
 &lt;asp:ContentPlaceHolder ID="plhOptions" runat="server" /&gt;
 &lt;/div&gt;
&lt;/div&gt;
&lt;%}%&gt;</pre>
<p>همانطور که در این مثال مشاهده می کنید، فقط در صورتی که plhOptions در صفحه پیاده سازی شده باشد کادر مربوط به آن همراه با محتویات بخش plhOptionsTitle نمایش داده خواهند شد.</p>
<p><a href="http://programcsharp.com/blog/archive/2009/01/22/test-if-masterpage-contentplaceholder-has-content-or-is-empty.aspx" target="_blank">منبع</a></p>
<p>خوش باشید.</p>
Posted in ASP.NET, dotNET Framework, Web Development, آموزشی Tagged: .NET, ASP.NET, ContentPlaceHolder, ContentTemplates, dotNET, MasterPage <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/salarblog.wordpress.com/806/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/salarblog.wordpress.com/806/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/salarblog.wordpress.com/806/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/salarblog.wordpress.com/806/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/salarblog.wordpress.com/806/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/salarblog.wordpress.com/806/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/salarblog.wordpress.com/806/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/salarblog.wordpress.com/806/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/salarblog.wordpress.com/806/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/salarblog.wordpress.com/806/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=salarblog.wordpress.com&blog=4422419&post=806&subd=salarblog&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://salarblog.wordpress.com/2009/10/25/test-if-masterpage-contents-implemented/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/4fb98f744efee7bbacd63835ad92cd4e?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">salarblog</media:title>
		</media:content>
	</item>
		<item>
		<title>رفع باگ موجود در CookieContainer</title>
		<link>http://salarblog.wordpress.com/2009/10/16/fixing-cookiecontainer-bug/</link>
		<comments>http://salarblog.wordpress.com/2009/10/16/fixing-cookiecontainer-bug/#comments</comments>
		<pubDate>Fri, 16 Oct 2009 16:51:00 +0000</pubDate>
		<dc:creator>Salar</dc:creator>
				<category><![CDATA[ASP.NET]]></category>
		<category><![CDATA[Web Development]]></category>
		<category><![CDATA[Bug]]></category>
		<category><![CDATA[Cookie]]></category>
		<category><![CDATA[CookieContainer]]></category>
		<category><![CDATA[Domain]]></category>
		<category><![CDATA[dotNET]]></category>
		<category><![CDATA[dotNET Framework 4.0]]></category>

		<guid isPermaLink="false">http://salarblog.wordpress.com/?p=795</guid>
		<description><![CDATA[قبلا نوشته بودم که  ماکروسافت قراره باگی رو که در کلاس CookieContainer هست رو رفع کنه، که اون باگ باعث 7 ماه سرگردانی من شده است. خبر خوبی بود، اما اگر به سایت ماکروسافت که لینکش رو گذاشته بودم مراجعه کنید می بینید که هیچ وصله ای قرار نیست برای دات نت 2 منتشر [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=salarblog.wordpress.com&blog=4422419&post=795&subd=salarblog&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p><a href="http://salarblog.wordpress.com/2009/07/31/microsoft-hotfix-for-my-7-month-effort/" target="_blank">قبلا نوشته بودم</a> که  ماکروسافت قراره باگی رو که در کلاس CookieContainer هست رو رفع کنه، که اون باگ باعث 7 ماه سرگردانی من شده است. خبر خوبی بود، اما اگر به سایت ماکروسافت که لینکش رو گذاشته بودم مراجعه کنید می بینید که هیچ وصله ای قرار نیست برای دات نت 2 منتشر بشه. و این یعنی اینکه همچنان با مشکل باید دست و پنجه نرم کنیم!</p>
<p>به هر حال در ادامه می خوام علت بروز مشکل و راه حل اون رو با زحمت بسیار و <a href="http://dot-net-expertise.blogspot.com/" target="_blank">همکاری یه نفر دیگه</a> بدست اومده رو بررسی کنم.</p>
<ul>
<li><span style="color:#800000;"><strong>مقدمه ای در مورد Domain در کوکی ها<br />
</strong></span></li>
</ul>
<p>تمام مشکل حول محور نحوه مدیریت domain در کلاس Cookiecontainer بر میگرده. پس میخوام مختصر توضیحی در مورد دامین در کوکی ها بدم.</p>
<p>در مبحث کار با کوکی ها با تنظیم مقدار domain می توانید تعیین کنید که کوکی برای کدام دامنه یا زیر دامنه ها قابل دسترسی باشد.</p>
<p>یک مثال ساده مانند زیر هست؛ در این مثال  کوکی با نام Hello رو برای دامین site.org ثبت می کنیم:</p>
<p><code>Hello=cookieValue value; domain=site.org; path=/</code></p>
<p>توجه کنید که این کوکی فقط به دامین site.org ثبت شده و فقط برای آن قابل مشاهده خواهد بود. هیچ زیر دامنه ای مانند www.site.org نمی تواند این کوکی رو مشاهده کند. برای اینکه کوکی به زیر دامنه های سایت site.org هم قابل دسترسی باشه باید یک نقطه (.) به اول دامنه اضافه کنیم. مانند این نمونه:</p>
<p><code>Hello=cookieValue value; domain=.site.org; path=/</code></p>
<p>با این کار این کوکی به تمامی زیر دامنه ها قابل مشاهده خواهد بود.</p>
<p>همچنین توجه کنید که این قانون به کوکی های خود زیر دامنه ها هم اعمال میشه. برای مثال کوکی زیر فقط برای sub.site.org قابل مشاهده خواهد بود:</p>
<p><code>Hello=cookieValue value; domain=sub.site.org; path=/</code></p>
<p>و کوکی زیر، هم برای دامنه اصلی و هم برای تمامی زیر دامنه های آن قابل مشاهده خواهد بود:</p>
<p><code>Hello=cookieValue value; domain=.sub.site.org; path=/</code></p>
<ul>
<li><span style="color:#800000;"><strong>بررسی مشکل</strong></span></li>
</ul>
<p>قبل از اینکه به مشکل بپردازم لازمه بدونید که کلاس CookieContainer برای مدیریت و نگهداری کوکی های برای ارسال درخواست های وب توسط HttpWebRequest مورد استفاده قرار میگیره. و به علت مشکلی که داره بعضا باعث اشکالات عجیب و نامشخص می شه.</p>
<p>احتمالا تا حالا متوجه شدید که مشکل کلاس CookieContainer در نحوه مدیریت نقطه (.) هایی هست که در ابتدای دامین قرار می گیره و به شیوه اعمال اونها تاثیر میذاره.</p>
<p>برای نمونه مشکل زمانی اتفاق می افته که یک کوکی رو به آدرس site.org ثبت کنید و درخواست خودتون رو آدرس www.site.org ارسال کنید.<br />
طبق مقدمه انتظار میره که هیچ کوکی ارسال نشه ولی برخلاف انتطار کوکی مزبور ارسال خواهد شد.  متن  کوکی این مثال:</p>
<p><code>Hello=CookieValue value; domain=site.org; path=/</code></p>
<p>همچینین مشکل دیگر و البته بدتر زمانی هست که کوکی رو به آدرس www.site.org ثبت کنید و درخواست خودتون رو به آدرس www.site.org ارسال کنید. انتظار می ره که کوکی به سلامتی ارسال بشه ولی در کمال ناباوری هیچ کوکی ارسال نخواهد شد. متن  کوکی این مثال:</p>
<p><code>Hello=CookieValue value; domain=www.site.org; path=/</code></p>
<p>علت بروز مشکل به یک سری پیچیدگیهای اضافی که ماکروسافت در پیاده سازی این کلاس اعمال کرده بر می گرده.</p>
<ul>
<li><strong><span style="color:#800000;">نحوه رفع باگ</span></strong></li>
</ul>
<p>مشکل اصلی به نحوه پیاده سازی یکی از متد ها داخلی و پنهان کلاس CookieContainer بر می گرده. در نتییجه توابعی که از اون تابع  استفاده می کنند این مشکل زو خواهند داشت. متاسفانه همه سه تابعی که برای افزودن کوکی قابل دسترسی هستند از مشکل رنج می برند! این سه تابع و توضیح مختصر در مورد اونها:</p>
<ul>
<li>Add(Uri,Cookie) این تابع کوکی را اضافه کرده و به مسیر تعیین شده ارتباط میدهد</li>
<li>Add(Cookie) این تابع کوکی رو اضافه کرده و دامینهای قابل اعمال رو از دامین کوکی تعیین می کنه</li>
<li>SetCookies(CookieHeader) این تابع کوکی که به صورت هدر کوکی ارسال شده رو تولید کرده و اضافه می کنه.</li>
</ul>
<p>راه حل قطعی که تا کنون با همکاری دوستم تونستیم پیدا کنیم تغییر کلید های دسترسی به کوکی و اضافه کردن کلید های مفقود شده به صورت دستی با استفاده از امکانات Reflection دات نت.</p>
<p>به صورت خلاصه تابع زیر برای رفع این نقیصه نوشته شده. این تابع رو همراه با یک سری تمهیدات باید به کار ببرد که در ادامه توضیح خواهد داد:</p>
<pre>private static Type _cookieContainerType = Type.GetType("System.Net.CookieContainer, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089");
private static Type _pathListType = Type.GetType("System.Net.PathList, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089");
///&lt;summary&gt;
/// This method is aimed to fix a goddamn CookieContainer issue,
/// It adds missed path for cookies which are not started with dot.
/// This is a dirty hack
///&lt;/summary&gt;
///&lt;remarks&gt;
/// This method is only for .NET 2.0 which is used by .NET 3.0 and 3.5 too.
/// The issue will be fixed in .NET 4, I hope!
///&lt;/remarks&gt;
/// Many thanks to CallMeLaNN "dot-net-expertise.blogspot.com" to complete this method
private void BugFix_AddDotCookieDomain(CookieContainer cookieContainer)
{
	Hashtable table = (Hashtable)_cookieContainerType.InvokeMember("m_domainTable",
									 System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.GetField | System.Reflection.BindingFlags.Instance,
									 null,
									 cookieContainer,
									 new object[] { });

	ArrayList keys = new ArrayList(table.Keys);

	object pathList1;
	object pathList2;

	SortedList sortedList1;
	SortedList sortedList2;
	ArrayList pathKeys;

	CookieCollection cookieColl1;
	CookieCollection cookieColl2;

	foreach (string key in keys)
	{
		if (key[0] == '.')
		{
			string nonDotKey = key.Remove(0, 1);
			// Dont simply code like this:
			// table[nonDotKey] = table[key];
			// instead code like below:

			// This codes will copy all cookies in dot domain key into nondot domain key.

			pathList1 = table[key];
			pathList2 = table[nonDotKey];
			if (pathList2 == null)
			{
				pathList2 = Activator.CreateInstance(_pathListType); // Same as PathList pathList = new PathList();
				lock (cookieContainer)
				{
					table[nonDotKey] = pathList2;
				}
			}

			// merge the PathList, take cookies from table[keyObj] copy into table[nonDotKey]
			sortedList1 = (SortedList)_pathListType.InvokeMember("m_list", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.GetField | System.Reflection.BindingFlags.Instance, null, pathList1, new object[] { });
			sortedList2 = (SortedList)_pathListType.InvokeMember("m_list", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.GetField | System.Reflection.BindingFlags.Instance, null, pathList2, new object[] { });

			pathKeys = new ArrayList(sortedList1.Keys);

			foreach (string pathKey in pathKeys)
			{

				cookieColl1 = (CookieCollection)sortedList1[pathKey];
				cookieColl2 = (CookieCollection)sortedList2[pathKey];
				if (cookieColl2 == null)
				{
					cookieColl2 = new CookieCollection();
					sortedList2[pathKey] = cookieColl2;
				}

				foreach (Cookie c in cookieColl1)
				{
					lock (cookieColl2)
					{
						cookieColl2.Add(c);
					}
				}
			}
		}
	}
}
</pre>
<p>جزئیات نحوه کار این متد زیاد مهم نخواهد بود پس از ذکر آنها خودداری می کنم.</p>
<p><strong><span style="color:#800000;">شیوه به کار گیری:</span></strong></p>
<p>نکته خیلی خیلی مهم این هست که از هیچ کدام از توابع Add(Uri,Cookie)  و SetCookies(CookieHeader) نباید استفاده کنید. مشکلاتی این دو تابع ایجاد می کنند غیر قابل اصلاح است.</p>
<p>تنها تابع مجاز برای استفاده <strong>Add(Cookie)</strong> جها اضافه کردن کوکی های به کلاس CookieContainer است.</p>
<p>و سر انجام اینکه تابع BugFix_AddDotCookieDomain رو زمانی باید فراخوانی کنید که کارتان با کلاس CookieContainer به پایان رسیده و آماده ارسال درخواست هستید.</p>
<p>این تابع تمام مشکلات ذکر شده در بالا را رفع خواهد کرد.</p>
<p><strong><span style="color:#800000;">نکته پایانی</span></strong></p>
<p>تنها موردی که باقی ماند که نیاز اساسی به یه راه حل داره تابع SetCookies هست. چون این تابع با هدر ها کار می کنه ممکنه که به اون نیاز پیدا کنید. متاسفانه همونطور که گفتم مشکل مربوط به SetCookies هنوز رفع نشده و من و دوستم به دنبال راه حلی برای این مورد هستیم.</p>
<ul>
<li><strong><span style="color:#800000;">لینکهای مرتبط</span></strong></li>
</ul>
<p><a href="http://groups.google.com/group/asproxy/browse_thread/thread/272159fa947d7016" target="_blank">بحث طولانی من و دوستم که منجر به رسیدن به این راه حل شد</a></p>
<p><a href="http://salarblog.wordpress.com/2009/07/31/microsoft-hotfix-for-my-7-month-effort/" target="_blank">وصله ماکروسافت برای رفع مشکل 7 ماهه من</a></p>
<p><a href="https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=478521" target="_blank">پاسخ ماکروسافت به این مشکل</a></p>
Posted in ASP.NET, Web Development Tagged: Bug, Cookie, CookieContainer, Domain, dotNET, dotNET Framework 4.0 <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/salarblog.wordpress.com/795/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/salarblog.wordpress.com/795/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/salarblog.wordpress.com/795/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/salarblog.wordpress.com/795/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/salarblog.wordpress.com/795/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/salarblog.wordpress.com/795/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/salarblog.wordpress.com/795/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/salarblog.wordpress.com/795/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/salarblog.wordpress.com/795/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/salarblog.wordpress.com/795/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=salarblog.wordpress.com&blog=4422419&post=795&subd=salarblog&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://salarblog.wordpress.com/2009/10/16/fixing-cookiecontainer-bug/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/4fb98f744efee7bbacd63835ad92cd4e?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">salarblog</media:title>
		</media:content>
	</item>
		<item>
		<title>FeedDemon V3</title>
		<link>http://salarblog.wordpress.com/2009/10/07/feeddemon-v3/</link>
		<comments>http://salarblog.wordpress.com/2009/10/07/feeddemon-v3/#comments</comments>
		<pubDate>Wed, 07 Oct 2009 15:56:10 +0000</pubDate>
		<dc:creator>Salar</dc:creator>
				<category><![CDATA[Delphi]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[معرفی]]></category>
		<category><![CDATA[Feed]]></category>
		<category><![CDATA[FeedDemon]]></category>
		<category><![CDATA[خوراک]]></category>

		<guid isPermaLink="false">http://salarblog.wordpress.com/?p=788</guid>
		<description><![CDATA[سایر امکانات این نرم افزار به طور خلاصه شامل :

 به اشتراک گذاری فیدها، در این نسخه بهبود زیادی کرده.
 نمایش مسیر اصلی آدرسهای کوتاه شده با TinyUrl
 برچسب گذاری لینک ها و فیدها
 Watch ها که امکان جمع آوری مطالبی مرتبط با کلمات کلیدی تعیین شده رو فراهم می کنه. در این نسخه بهبود [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=salarblog.wordpress.com&blog=4422419&post=788&subd=salarblog&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><div id="attachment_789" class="wp-caption alignright" style="width: 90px"><img class="size-full wp-image-789" title="Feed Demon" src="http://salarblog.files.wordpress.com/2009/10/feeddemon.png?w=80&#038;h=80" alt="Feed Demon" width="80" height="80" /></dt>
</dl>
</div>
<p><a href="http://www.feeddemon.com/" target="_blank">FeedDemon</a> ابزاری جهت خواندن و مدیریت فید یا خوراک ها هست. نسخه جدید این نرم افزار مدتی هست که منتشر شده. این نسخه نسبت به نسخه قبلی پیشرفت های قابل ملاحظه ای پیدا کرده. ویژگی قابل توجه این نسخه امکان هماهنگ کردن نرم افزار با سرویس Google Reader هست. یعنی می تونید به حساب خودتون از طریق این نرم افزار دسترسی پیدا کنید، بدون نیاز به یازکردن مرورگر و رفتن به صفخه google reader و از خواندن فید ها لذت ببرید. در مقابل حجم و سربار کمی که داره امکانات قابل توجهی رو ارائه می کنه.</p>
<div class="mceTemp mceIEcenter">
<dl class="wp-caption  aligncenter">
<dt class="wp-caption-dt"><a href="http://www.newsgator.com/images/screens/fd3home.png"><img class="size-full wp-image-790" title="FeedDemonHome" src="http://salarblog.files.wordpress.com/2009/10/feeddemonhome.png?w=464&#038;h=373" alt="Feed Demon" width="464" height="373" /></a><p class="wp-caption-text">Feed Demon</p></div>
<p>سایر امکانات این نرم افزار به طور خلاصه شامل :</p>
<ul>
<li> به اشتراک گذاری فیدها، در این نسخه بهبود زیادی کرده.</li>
<li> نمایش مسیر اصلی آدرسهای کوتاه شده با TinyUrl</li>
<li> برچسب گذاری لینک ها و فیدها</li>
<li> Watch ها که امکان جمع آوری مطالبی مرتبط با کلمات کلیدی تعیین شده رو فراهم می کنه. در این نسخه بهبود زیادی کرده.</li>
<li> جستجو: امکان جستجو در میاد فیدها با گزینه های فراوان</li>
<li> پادکست: امکان دانلود خودکار پادکستها و انتقال آنها به وسایل قابل حملتان</li>
</ul>
<p>به نظر من این ابزار بسیار کارایی برایتان برای خواندن فیدها خواهد بود، حتی بهتر از بقیه ، پس حتما اون رو امتحان کنید.</p>
<p><a href="http://www.newsgator.com/download/FeedDemon/FeedDemonInstall.exe" target="_blank"><strong><span style="color:#800000;">دریافت FeedDemon</span></strong></a></p>
<p><a href="http://www.newsgator.com/individuals/feeddemon/default.aspx" target="_blank">وبسایت</a></p>
<p><a href="http://farasun.wordpress.com/about/rssfeed/" target="_blank">فید چیست؟</a></p>
<p>* پ.ن: جالبه بدونید که این نرم افزار با Delphi و SQLite توسعه داده شده.</p>
Posted in Delphi, Google, معرفی Tagged: Feed, FeedDemon, خوراک <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/salarblog.wordpress.com/788/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/salarblog.wordpress.com/788/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/salarblog.wordpress.com/788/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/salarblog.wordpress.com/788/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/salarblog.wordpress.com/788/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/salarblog.wordpress.com/788/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/salarblog.wordpress.com/788/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/salarblog.wordpress.com/788/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/salarblog.wordpress.com/788/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/salarblog.wordpress.com/788/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=salarblog.wordpress.com&blog=4422419&post=788&subd=salarblog&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://salarblog.wordpress.com/2009/10/07/feeddemon-v3/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/4fb98f744efee7bbacd63835ad92cd4e?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">salarblog</media:title>
		</media:content>

		<media:content url="http://salarblog.files.wordpress.com/2009/10/feeddemon.png" medium="image">
			<media:title type="html">Feed Demon</media:title>
		</media:content>

		<media:content url="http://salarblog.files.wordpress.com/2009/10/feeddemonhome.png" medium="image">
			<media:title type="html">FeedDemonHome</media:title>
		</media:content>
	</item>
		<item>
		<title>رفع غلط های املایی سایت با Firefox</title>
		<link>http://salarblog.wordpress.com/2009/09/10/spell-check-your-website-with-firefox/</link>
		<comments>http://salarblog.wordpress.com/2009/09/10/spell-check-your-website-with-firefox/#comments</comments>
		<pubDate>Thu, 10 Sep 2009 20:01:12 +0000</pubDate>
		<dc:creator>Salar</dc:creator>
				<category><![CDATA[FireFox]]></category>
		<category><![CDATA[Web Development]]></category>
		<category><![CDATA[برنامه نویسی]]></category>
		<category><![CDATA[Spell Check]]></category>

		<guid isPermaLink="false">http://salarblog.wordpress.com/?p=780</guid>
		<description><![CDATA[در طراحی یک سایت موفق نداشتن غلط املایی در میان حروف خیلی مهم است. تا جایی که ممکنه باعث بشه خواننده رو از وبسایت زده کنه.
در این روشی که معرفی می کنم هیچ کاری لازم نیست انجام بدید فقط کد زیر رو در نوار آدرس سایتتون وارد کنید. توجه کنید که مرورگر باید Firefox باشه [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=salarblog.wordpress.com&blog=4422419&post=780&subd=salarblog&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>در طراحی یک سایت موفق نداشتن غلط املایی در میان حروف خیلی مهم است. تا جایی که ممکنه باعث بشه خواننده رو از وبسایت زده کنه.</p>
<p>در این روشی که معرفی می کنم هیچ کاری لازم نیست انجام بدید فقط کد زیر رو در نوار آدرس سایتتون وارد کنید. توجه کنید که مرورگر باید Firefox باشه (روی opera 10 امتحان کردم و جواب داد):</p>
<p><code>javascript:document.body.contentEditable='true'; document.designMode='on'; void 0<br />
</code></p>
<p>توجه کنید که این کد یک خط هست و به خاطر اینکه در یک خط جا نشده اینطوری نشون داده می شه. با این کار صفحه به طور کامل قابل ویرایش خواهد شد و زیر خطاهای املایی خط کشیده خواهد شد. با کلیک روی این خطاها می تونید لیست عبارات صحیح رو مشاهده کنید.</p>
<div id="attachment_784" class="wp-caption alignnone" style="width: 520px"><img class="size-full wp-image-784" title="ff-spellcheck" src="http://salarblog.files.wordpress.com/2009/09/ff-spellcheck2.png?w=510&#038;h=279" alt="Firefox Spell Checking Website" width="510" height="279" /><p class="wp-caption-text">Firefox is spell checking a website</p></div>
<p>در حقیقت این کد تمام صفحه رو در حالت ویرایش قرار میده، در این صورت هست که فایرفاکس و مرورگر های جدید اقدام به یافتم غلط های املایی می کنند.</p>
<p><strong>نکته: </strong>برای اینکه این غلط یابی برای فارسی درست کار کنه باید دیکشنری فارسی فایرفاکس رو نصب کنید. <a href="https://addons.mozilla.org/en-US/firefox/addon/7583" target="_blank"><span style="color:#800000;">اینجا</span></a>.</p>
<p>این نکته رو مدتی بود که دیده بودم، و اخیرا لازمم شد دنبالش گشتم و اینجا هم خواستم که شما هم استفاده کنید. این هم <a href="http://urbanoalvarez.es/blog/2008/09/14/use-firefox-to-spell-check-your-website/" target="_blank">وبلاگ منبع</a>.</p>
Posted in FireFox, Web Development, برنامه نویسی Tagged: FireFox, Spell Check <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/salarblog.wordpress.com/780/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/salarblog.wordpress.com/780/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/salarblog.wordpress.com/780/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/salarblog.wordpress.com/780/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/salarblog.wordpress.com/780/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/salarblog.wordpress.com/780/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/salarblog.wordpress.com/780/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/salarblog.wordpress.com/780/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/salarblog.wordpress.com/780/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/salarblog.wordpress.com/780/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=salarblog.wordpress.com&blog=4422419&post=780&subd=salarblog&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://salarblog.wordpress.com/2009/09/10/spell-check-your-website-with-firefox/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/4fb98f744efee7bbacd63835ad92cd4e?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">salarblog</media:title>
		</media:content>

		<media:content url="http://salarblog.files.wordpress.com/2009/09/ff-spellcheck2.png" medium="image">
			<media:title type="html">ff-spellcheck</media:title>
		</media:content>
	</item>
		<item>
		<title>بدست آوردن سطح دسترسی Administrator در ویندوز</title>
		<link>http://salarblog.wordpress.com/2009/09/06/uac-administrator-privilege/</link>
		<comments>http://salarblog.wordpress.com/2009/09/06/uac-administrator-privilege/#comments</comments>
		<pubDate>Sun, 06 Sep 2009 16:56:24 +0000</pubDate>
		<dc:creator>Salar</dc:creator>
				<category><![CDATA[آموزشی]]></category>
		<category><![CDATA[Administrator]]></category>
		<category><![CDATA[Seven]]></category>
		<category><![CDATA[Vista]]></category>
		<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">http://salarblog.wordpress.com/?p=765</guid>
		<description><![CDATA[به هر حال شرایطی را در نظر بگیرید که به هر حال دسترسی به این منابع مورد نیاز باشد. در این صورت چند راه حل برای دستیابی به مجوز administrator وجود دارد.
راه حل اول- اولین و ساده ترین راه این است که از کاربر بخواهید با راست کلیک کردن بر روی برنامه شما و انتخاب [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=salarblog.wordpress.com&blog=4422419&post=765&subd=salarblog&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><div class="wp-caption alignright" style="width: 95px"><img class="size-full wp-image-769" title="VistaUAC" src="http://salarblog.files.wordpress.com/2009/09/vistauac.png?w=85&#038;h=101" alt="VistaUAC" width="85" height="101" /></dt>
</dl>
</div>
<p>از ویندوز ویستا به بعد و همچنین در ویندوز 7 مدیریت UAC قوانین سخت گیرانه ای رو برای سطح دسترسی کاربر و برنامه های کاربر به منابع سیسیتم و سیستم عامل در نظر گرفته است. این قوانین شامل اجرای تمامی برنامه ها در سطح دسترسی کاربر معمولی است و به همه آنها اعمال می شود. یعنی اگر کاربر فعلی دسترسی administrator داشته باشد باز هم برنامه های اجرا شد توسط آن با سطح user معمولی اجرا خواهد شد.</p>
<p>این سیاست که البته مدتهاست  لینوکس از آن استفاده می کنه سبب خواهد شد بدافزارها نتوانند به راحتی به سیستم دسترسی داشته باشند. همچنین کنترل دسترسی نرم افزارها به منابع سیستم راحتتر خواهد بود.</p>
<p>این سیاست در ویندوزهای جدید ممکن است مشکلاتی رو برای برنامه های کاربردی پیش بیاره که از جمله عدم دسترسی نوشتن و بعضا خواندن  برخی منابع سیستم است. توجه کنید که برنامه های عادی هیچ گاه نیاز دسترسی به منابع حیاتی سیستم نخواهد داشت. این مورد باید یک اصل در طراحی نرم افزارهای خود قرار بدید. مانند زمانی که دسترسی بی مورد به بخش های حساس ریجستری و یا شاخه ویندوز.</p>
<div class="mceTemp mceIEcenter">
<dl class="wp-caption  aligncenter">
<dt class="wp-caption-dt"><img class="size-full wp-image-774" title="UAC-prompt" src="http://salarblog.files.wordpress.com/2009/09/uac-prompt.png?w=453&#038;h=255" alt="UAC-prompt" width="453" height="255" /><p class="wp-caption-text">UAC</p></div>
<p>به هر حال شرایطی را در نظر بگیرید که به هر حال دسترسی به این منابع مورد نیاز باشد. در این صورت چند راه حل برای دستیابی به مجوز administrator وجود دارد.</p>
<p><span style="color:#800000;"><strong>راه حل اول</strong></span>- اولین و ساده ترین راه این است که از کاربر بخواهید با راست کلیک کردن بر روی برنامه شما و انتخاب Run as Administrator به برنامه این سطح دسترسی را بدهد. این راه حل مناسب و کاربر پسندی نخواهد بود.</p>
<p><span style="color:#800000;"><strong>راه حل دوم</strong></span>- در صورتی که از Visual Studio استفاده می کنید، دومین راه حل همراه با نسخه 2008 آن عرضه شده. این مورد بر این اساس هست که برنامه ها در صورتی که از یک manifest خاص استفاده کنند، ویندوز تشخیص خواهد داد که آن برنامه نیاز به مجوز admin دارد و این مورد توسط درخواستی از کاربر اعلام خواهد شد.</p>
<p>به این منظور نیاز به یک Application Manifest خواهد بود. برای افزودن آن به پروژه روی نام پروژه کلیک راست کرده و Add -&gt; New Item رو انتخاب کنید. از این پنجره آیتم Application Manifest File رو انتخاب کنید. فایلی با نام app.manifest به پروژه اضافه خواهد شد. محتویات این فایل مانند زیر است:</p>
<pre>&lt;?xml version="1.0" encoding="utf-8"?&gt;
&lt;asmv1:assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1" xmlns:asmv1="urn:schemas-microsoft-com:asm.v1" xmlns:asmv2="urn:schemas-microsoft-com:asm.v2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"&gt;
 &lt;assemblyIdentity version="1.0.0.0" name="MyApplication.app"/&gt;
 &lt;trustInfo xmlns="urn:schemas-microsoft-com:asm.v2"&gt;
 &lt;security&gt;
 &lt;requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3"&gt;
 &lt;requestedExecutionLevel level="asInvoker" uiAccess="false" /&gt;
 &lt;/requestedPrivileges&gt;
 &lt;/security&gt;
 &lt;/trustInfo&gt;
&lt;/asmv1:assembly&gt;</pre>
<p>تنها قسمت مهم برای ما requestedExecutionLevel هست که درخواست مجوز مورد نیاز رو مشخص می کنه. در ادامه آن، مقدار level نشان دهنده مجوز درخواستی است. این مقدار شامل موارد زیر است:</p>
<p><span style="color:#800000;"><strong>asInvoker</strong></span>: حالت پیش فرض سیستم که همان کاربر معمولی خواهد بود.</p>
<p><span style="color:#800000;"><strong>requireAdministrator</strong></span>: درخواست مجوز admin را مطرح می کنه. این درخواست باید برآورده بشه و برنامه حتما باید با این مجوز اجرا بشه در غیر اینصورت و درصورت عدم پذیرش کاربر برنامه اجرا نخواهد شد.</p>
<p><strong><span style="color:#800000;">highestAvailable</span></strong>: درخواست بالاترین مجوز قابل دسترسی را مطرح می کند. دقت کنید که تفاوت این گزینه با requireAdministrator در این است که در صورتیکه امکان اجرای برنامه با دسترسی های پایین تری مانند PowerUser وجود باشد این انتخاب به کاربر واگذار خواهد شد. همچنین ممکن است که در این گزینه فقط کلمه عبور برای دسترسی های کمی بالاتر درخواست شود.</p>
<p>پس یکی از موارد requireAdministrator یا highestAvailable را با توجه به نیاز خود انتحاب کنید و فایل مذکور رو تغییر بدید. همچنین در بخش assemblyIdentity اطلاعات برنامه شما قرار دارد که تغییر آن اختیاری است.</p>
<p>در نهایت فایل app.manifest به این صورت خواهد بود:</p>
<pre>&lt;?xml version="1.0" encoding="utf-8"?&gt;
&lt;asmv1:assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1" xmlns:asmv1="urn:schemas-microsoft-com:asm.v1" xmlns:asmv2="urn:schemas-microsoft-com:asm.v2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"&gt;
 &lt;assemblyIdentity version="1.0.0.0" name="SalarBlog.AdministratorElevate.app"/&gt;
 &lt;trustInfo xmlns="urn:schemas-microsoft-com:asm.v2"&gt;
 &lt;security&gt;
 &lt;requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3"&gt;

 &lt;requestedExecutionLevel level="requireAdministrator" uiAccess="false" /&gt;

 &lt;/requestedPrivileges&gt;
 &lt;/security&gt;
 &lt;/trustInfo&gt;
&lt;/asmv1:assembly&gt;</pre>
<p><span style="color:#800000;"><strong>راه حل سوم</strong></span>- این دو مورد روشهایی بودند که قبل از اجرای برنامه اتفاق می افتادند. در صورتی که در شرایطی لازم باشه که دسترسی از درون برنامه تعیین بشه موارد فوق موثر نخواهند بود.</p>
<p>در روش شوم این مشکل حل شده و پس از بررسی سطح دسترسی اقدام به درخواست آن خواهیم کرد. البته همچنان برای درخواست دسترسی نیاز خواهد بود تا برنامه دوباره اجرا شود.</p>
<p>ابتدا لازم است تا سطح دسترسی کاربر فعلی را بررسی کنیم:</p>
<pre>public static bool AdministratorIsInRole()
{
 return new WindowsPrincipal(WindowsIdentity.GetCurrent())
 .IsInRole(WindowsBuiltInRole.Administrator);
}</pre>
<p>در این تابع موجز دسترسی Administrator بررسی شده است. سپس با استفاده از تابع ShellExecute ویندوز و پارامترهای آن درخواست اجرا را مشخص می کنیم:</p>
<pre>public static void Elevate()
{
 ShellExecute(IntPtr.Zero, "runas",
 Application.ExecutablePath + "", "", "", 1);
}

[DllImport("shell32.dll")]
private static extern void ShellExecute(IntPtr intPtr, string p, string p3, string p4, string p5, int p6);</pre>
<p>و سرانجام کافی هست تا اینها را یکجا و در کد برنامه قرار دهید. برنامه نهایی مانند زیر خواهد بود:</p>
<pre>using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;
using System.Security.Principal;
using System.Runtime.InteropServices;

namespace AdminElvate
{
 static class Program
 {

 [STAThread]
 static void Main()
 {
 if (!AdministratorIsInRole())
 {
 Elevate();
 return;
 }

 Application.EnableVisualStyles();
 Application.SetCompatibleTextRenderingDefault(false);
 Application.Run(new Form1());
 }

 static bool AdministratorIsInRole()
 {
 return new WindowsPrincipal(WindowsIdentity.GetCurrent())
 .IsInRole(WindowsBuiltInRole.Administrator);
 }
 static void Elevate()
 {
 ShellExecute(IntPtr.Zero, "runas",
 Application.ExecutablePath + "", "", "", 1);
 }

 [DllImport("shell32.dll")]
 private static extern void ShellExecute(IntPtr intPtr, string p, string p3, string p4, string p5, int p6);

 }
}</pre>
<p>و تمام. این کد رو می تونید در تمام قسمتهای برنامه استفاده کنید، ولی به هر حال برای بدست آوردن مجوز بالاتر باید برنامه مجددا اجرا بشه.</p>
Posted in آموزشی Tagged: Administrator, Seven, Vista, Windows <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/salarblog.wordpress.com/765/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/salarblog.wordpress.com/765/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/salarblog.wordpress.com/765/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/salarblog.wordpress.com/765/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/salarblog.wordpress.com/765/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/salarblog.wordpress.com/765/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/salarblog.wordpress.com/765/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/salarblog.wordpress.com/765/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/salarblog.wordpress.com/765/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/salarblog.wordpress.com/765/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=salarblog.wordpress.com&blog=4422419&post=765&subd=salarblog&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://salarblog.wordpress.com/2009/09/06/uac-administrator-privilege/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/4fb98f744efee7bbacd63835ad92cd4e?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">salarblog</media:title>
		</media:content>

		<media:content url="http://salarblog.files.wordpress.com/2009/09/vistauac.png" medium="image">
			<media:title type="html">VistaUAC</media:title>
		</media:content>

		<media:content url="http://salarblog.files.wordpress.com/2009/09/uac-prompt.png" medium="image">
			<media:title type="html">UAC-prompt</media:title>
		</media:content>
	</item>
		<item>
		<title>CKEditor 3.0</title>
		<link>http://salarblog.wordpress.com/2009/08/24/ckeditor-3/</link>
		<comments>http://salarblog.wordpress.com/2009/08/24/ckeditor-3/#comments</comments>
		<pubDate>Mon, 24 Aug 2009 19:24:11 +0000</pubDate>
		<dc:creator>Salar</dc:creator>
				<category><![CDATA[Web Development]]></category>
		<category><![CDATA[معرفی]]></category>
		<category><![CDATA[CKEditor]]></category>
		<category><![CDATA[FCKeditor]]></category>

		<guid isPermaLink="false">http://salarblog.wordpress.com/?p=757</guid>
		<description><![CDATA[




نسخه جدید ویرایشگر آنلاین FCKeditor عرضه شد. این ویرایشگر اخیرا به CKEditor تغییر نام پیدا کرده و از این به بعد به این نام عرضه خواهد شد. این تغییر نام با توجه به یک نظر سنجی و نظرات کاربران در مورد مشکل داشتن نام این ابزار بوده!
در این نسخه که تغییرات بسیار زیادی صورت گرفته [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=salarblog.wordpress.com&blog=4422419&post=757&subd=salarblog&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><div class="mceTemp">
<dl class="wp-caption   alignright">
<dt class="wp-caption-dt"><img class="size-full wp-image-758" title="CKEditor" src="http://salarblog.files.wordpress.com/2009/08/ckeditor.png?w=174&#038;h=63" alt="CKEditor" width="174" height="63" /></dt>
</dl>
</div>
<p>نسخه جدید ویرایشگر آنلاین FCKeditor عرضه شد. این ویرایشگر اخیرا به CKEditor تغییر نام پیدا کرده و از این به بعد به این نام عرضه خواهد شد. این تغییر نام با توجه به یک نظر سنجی و نظرات کاربران در مورد مشکل داشتن نام این ابزار بوده!</p>
<p>در این نسخه که تغییرات بسیار زیادی صورت گرفته که می شه گفت اگر از نسخه های FCKEditor استفاده می کردید باید اونها رو کنار بذارید. سرعت بارگذاری این ویرایشگر بهبود قابل ملاحظه کرده. قابلیت تغییر رنگ و پوسته بهتر و پشتیبانی بهتر از زبانهای راست به چپ نیز از سایر امکانات این ویرایشگر هست. API کاربردی این ابزار تغییرات بسیاری کرده که لازمه حتما به مستندات اون مراجعه کنید.</p>
<ul>
<li><a href="http://docs.fckeditor.net/" target="_blank">مشاهده مستندات</a></li>
<li><a href="http://ckeditor.com/demo" target="_blank"> نسخه نمایشی از تمامی امکانات</a></li>
</ul>
<p><a href="http://ckeditor.com/download" target="_blank"><span style="color:#800000;"><strong>دریافت CKEditor 3.0</strong></span></a></p>
Posted in معرفی, Web Development Tagged: CKEditor, FCKeditor <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/salarblog.wordpress.com/757/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/salarblog.wordpress.com/757/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/salarblog.wordpress.com/757/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/salarblog.wordpress.com/757/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/salarblog.wordpress.com/757/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/salarblog.wordpress.com/757/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/salarblog.wordpress.com/757/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/salarblog.wordpress.com/757/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/salarblog.wordpress.com/757/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/salarblog.wordpress.com/757/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=salarblog.wordpress.com&blog=4422419&post=757&subd=salarblog&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://salarblog.wordpress.com/2009/08/24/ckeditor-3/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/4fb98f744efee7bbacd63835ad92cd4e?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">salarblog</media:title>
		</media:content>

		<media:content url="http://salarblog.files.wordpress.com/2009/08/ckeditor.png" medium="image">
			<media:title type="html">CKEditor</media:title>
		</media:content>
	</item>
		<item>
		<title>ویروس در برنامه های دلفی 4 تا 7</title>
		<link>http://salarblog.wordpress.com/2009/08/21/delphi-4-7-virus-infected/</link>
		<comments>http://salarblog.wordpress.com/2009/08/21/delphi-4-7-virus-infected/#comments</comments>
		<pubDate>Fri, 21 Aug 2009 14:30:52 +0000</pubDate>
		<dc:creator>Salar</dc:creator>
				<category><![CDATA[Delphi]]></category>
		<category><![CDATA[اخبار فناوری]]></category>
		<category><![CDATA[ویروس]]></category>

		<guid isPermaLink="false">http://salarblog.wordpress.com/?p=753</guid>
		<description><![CDATA[در صورتی که هنوز از یکی از نسخه های دلفی 4 تا 7 استفاده می کنید پس این مطلب رو دنبال کنید. اخیرا اخباری مبنی به آلوده شدن برنامه های نوشته شده با دلفی پخش شده که نشان می ده ویروسی دلفی را هدف قرار داده. این ویروس با هدف قرار دادن کتابخانه دلفی باعث [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=salarblog.wordpress.com&blog=4422419&post=753&subd=salarblog&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>در صورتی که هنوز از یکی از نسخه های دلفی 4 تا 7 استفاده می کنید پس این مطلب رو دنبال کنید. اخیرا اخباری مبنی به آلوده شدن برنامه های نوشته شده با دلفی پخش شده که نشان می ده ویروسی دلفی را هدف قرار داده. این ویروس با هدف قرار دادن کتابخانه دلفی باعث آلوده شدن تمام برنامه ی کامپایل شده با آن نسخه می شه.</p>
<p>این ویروس که در روسیه کشف شده ابتدا وجود نسخه ای از دلفی رو در سیستم جستجو کرده و بعد فایل SysConst.dcu را با استفاده از کامپایل مجدد نسخه آلوده، جایگزین می کنه. این یونیت که در تمام برنامه های دلفی اضافه می شه ، در صورت آلوده بودن سبب انتشار ویروس توسط برنامه شما خواهد شد.</p>
<p>این ویروس خطرناک نیست و کار خاصی به غیر از انتشار خودش انجام نمی ده. اسم این ویروس W32/Induc-A هست و اطلاعات اون رو<a href="http://www.heise.de/security/Virus-infiziert-Entwicklungsumgebung-Update--/news/meldung/143679" target="_blank"> اینجا میتونید مشاهده کنید</a>.</p>
<p>بهتره که ویروس کش ها تون رو به روز کنید و پس از حذف ویروس، می تونید فایلی با نام SysConst.bak رو که ویروس از روی فایل اصلی ساخته برگردونید. در این صورت احتمالا مشکل شما حل خواهد شد.</p>
<p>همچنین بخوانید:<br />
<a title="Permanent Link to A Tempest in a Teapot or something more sinister?" rel="bookmark" href="http://blogs.embarcadero.com/abauer/2009/08/20/38892" target="_blank">A Tempest in a Teapot or something more sinister</a><br />
<a title="Permanent Link to Delphi developer virus exposes weakness in anti-virus defences" href="http://www.itwriting.com/blog/1717-delphi-developer-virus-exposes-weakness-in-anti-virus-defences.html" target="_blank">Delphi developer virus exposes weakness in anti-virus defences </a><br />
<a href="http://blog.marcocantu.com/blog/more_delphi_vurus_alert.html" target="_blank">More on the Delphi Virus Alert</a></p>
Posted in Delphi, اخبار فناوری Tagged: Delphi, ویروس <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/salarblog.wordpress.com/753/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/salarblog.wordpress.com/753/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/salarblog.wordpress.com/753/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/salarblog.wordpress.com/753/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/salarblog.wordpress.com/753/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/salarblog.wordpress.com/753/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/salarblog.wordpress.com/753/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/salarblog.wordpress.com/753/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/salarblog.wordpress.com/753/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/salarblog.wordpress.com/753/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=salarblog.wordpress.com&blog=4422419&post=753&subd=salarblog&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://salarblog.wordpress.com/2009/08/21/delphi-4-7-virus-infected/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/4fb98f744efee7bbacd63835ad92cd4e?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">salarblog</media:title>
		</media:content>
	</item>
		<item>
		<title>چرخش متون و اشیای صفحه با CSS 3</title>
		<link>http://salarblog.wordpress.com/2009/08/10/css-3-rotate-feature/</link>
		<comments>http://salarblog.wordpress.com/2009/08/10/css-3-rotate-feature/#comments</comments>
		<pubDate>Mon, 10 Aug 2009 19:10:08 +0000</pubDate>
		<dc:creator>Salar</dc:creator>
				<category><![CDATA[Web Development]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[CSS 3]]></category>
		<category><![CDATA[CSS 3 Features]]></category>
		<category><![CDATA[Rotate]]></category>
		<category><![CDATA[transform]]></category>

		<guid isPermaLink="false">http://salarblog.wordpress.com/?p=744</guid>
		<description><![CDATA[یکی دیگر از ویژگیهایی که به CSS 3 اضافه شده امکان چرخش دادن به اشیا و متون در جهت دلخواه است.
این چرخش با ویژگی جدیدی با نام transform معرفی شده. هنوز این ویژگی نهایی نشده و ممکنه که در آینده تغییراتی در اون به وجود بیاد و زاویه های دیگری غیر از درجه رو هم [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=salarblog.wordpress.com&blog=4422419&post=744&subd=salarblog&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>یکی دیگر از ویژگیهایی که به CSS 3 اضافه شده امکان چرخش دادن به اشیا و متون در جهت دلخواه است.<br />
این چرخش با ویژگی جدیدی با نام transform معرفی شده. هنوز این ویژگی نهایی نشده و ممکنه که در آینده تغییراتی در اون به وجود بیاد و زاویه های دیگری غیر از درجه رو هم پشتیبانی کنه، اما فعلا با این تعریف کنونی مرورگرهای Firefox 3.5 ، Chrome و Safari از اون پشتیبانی می کنند.<br />
این ویژگی قدرت عمل زیادی به طراحان وب خواهد داد و با استفاده ترکیبی ازاین ویژگی می توان انیمیشن های مختلفی برای سایت ایجاد کرد.<br />
دستور این ویژگی به این صورت است:<br />
<code>transform: rotate;</code><br />
که مقدار rotate یا چرخش به صورت <span dir="ltr">rotate(Xdeg)</span> وارد میشه. مانند این نمونه:<br />
<code>transform: rotate(-90deg);</code></p>
<ul>
<li><strong><span style="color:#800000;">به کار گیری</span></strong></li>
</ul>
<p>همانطور که گفتن این ویژگی در Firefox 3.5 ، Chrome و Safari پستیبانی میشه. کاری شبیه این رو می شه با استفاده از فیلترهای مخصوص IE در آن مرورگر انجام داد.</p>
<p>برای استفاده در Firefox طبق معمول باید پسوند <span dir="ltr">-moz</span> رو به ویژگی اضافه کنید، برای مرورگر Chrome و safari نیز <span dir="ltr">-webkit</span> لازم خواهد بود. مانند زیر:<br />
<code>-webkit-transform: rotate(-90deg);<br />
-moz-transform: rotate(-90deg);</code><br />
برای مرورگر IE هم از فیلترها برای شبیه سازی عملکردی مانند این استفاده کنید:<br />
<code>filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3);</code></p>
<ul>
<li><strong><span style="color:#800000;">نمونه های انجام شده</span></strong></li>
</ul>
<p><a href="http://css-tricks.com/css3-clock/" target="_blank">ساعت با جاوا اسکریپت و این ویژگی</a></p>
<p><a href="http://css-tricks.com/date-display-with-sprites/" target="_blank">نمایش تاریخ میلای در کنار متون</a></p>
<p><a href="http://snook.ca/archives/html_and_css/css-text-rotation" target="_blank">تاریخ میلادی به سبک دیگر</a> (منبع این پست)</p>
<p><a href="http://www.marcofolio.net/webdesign/creating_a_polaroid_photo_viewer_with_css3_and_jquery.html" target="_blank">نمایش دهنده گالری عکس با ترکیبی از JQuery و این ویژگی(safari)</a></p>
<ul>
<li><span style="color:#800000;"><strong>مطالب مرتبط</strong></span></li>
</ul>
<p><a title="خواندن ویژگیهای جدید در CSS 3 بخش اول" rel="bookmark" href="../2008/10/05/css3-new-features-part1/">ویژگیهای جدید در CSS 3 بخش اول</a></p>
<p><a title="خواندن ویژگیهای جدید در CSS 3 بخش دوم" rel="bookmark" href="../2008/10/15/css3-new-features-part2/">ویژگیهای جدید در CSS 3 بخش دوم</a></p>
<p><a title="خواندن راهنمای سریع و مرجع کامل Html و CSS" rel="bookmark" href="../2009/02/10/sitepoint-html-css-reference/">راهنمای سریع و مرجع کامل Html و CSS</a></p>
<p><a title="خواندن افزونه فایرفاکس: تشخیص تغییرات DOM و CSS در صفحات وب" rel="bookmark" href="../2009/04/18/firediff-to-track-dom-and-css-changes/">افزونه فایرفاکس: تشخیص تغییرات DOM و CSS در صفحات وب</a></p>
Posted in Web Development Tagged: CSS, CSS 3, CSS 3 Features, Rotate, transform <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/salarblog.wordpress.com/744/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/salarblog.wordpress.com/744/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/salarblog.wordpress.com/744/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/salarblog.wordpress.com/744/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/salarblog.wordpress.com/744/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/salarblog.wordpress.com/744/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/salarblog.wordpress.com/744/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/salarblog.wordpress.com/744/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/salarblog.wordpress.com/744/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/salarblog.wordpress.com/744/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=salarblog.wordpress.com&blog=4422419&post=744&subd=salarblog&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://salarblog.wordpress.com/2009/08/10/css-3-rotate-feature/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/4fb98f744efee7bbacd63835ad92cd4e?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">salarblog</media:title>
		</media:content>
	</item>
	</channel>
</rss>