<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2titles.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.mytoolbox.ir/~d/styles/itemtitles.css"?><rss xmlns:blogChannel="http://backend.userland.com/blogChannelModule" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:pingback="http://madskills.com/public/xml/rss/module/pingback/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:creativeCommons="http://backend.userland.com/creativeCommonsRssModule" version="2.0">
  <channel>
    <title>جعبه ابزار</title>
    <description>اینترنت دات نت</description>
    <link>http://mytoolbox.ir/blog/</link>
    <docs>http://www.rssboard.org/rss-specification</docs>
    <generator>BlogEngine.NET 1.5.0.7</generator>
    <language>en-US</language>
    <blogChannel:blogRoll>http://mytoolbox.ir/blog/opml.axd</blogChannel:blogRoll>
    <blogChannel:blink>http://www.dotnetblogengine.net/syndication.axd</blogChannel:blink>
    <dc:title>جعبه ابزار</dc:title>
    <geo:lat>0.000000</geo:lat>
    <geo:long>0.000000</geo:long>
    <feedburner:info xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" uri="mytoolbox" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><creativeCommons:license>http://creativecommons.org/licenses/by-nc-nd/3.0/</creativeCommons:license><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.mytoolbox.ir/mytoolbox" /><feedburner:emailServiceId xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">mytoolbox</feedburner:emailServiceId><feedburner:feedburnerHostname xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">http://feedburner.google.com</feedburner:feedburnerHostname><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://add.my.yahoo.com/rss?url=http%3A%2F%2Ffeeds.mytoolbox.ir%2Fmytoolbox" src="http://us.i1.yimg.com/us.yimg.com/i/us/my/addtomyyahoo4.gif">Subscribe with My Yahoo!</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://www.newsgator.com/ngs/subscriber/subext.aspx?url=http%3A%2F%2Ffeeds.mytoolbox.ir%2Fmytoolbox" src="http://www.newsgator.com/images/ngsub1.gif">Subscribe with NewsGator</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://feeds.my.aol.com/add.jsp?url=http%3A%2F%2Ffeeds.mytoolbox.ir%2Fmytoolbox" src="http://o.aolcdn.com/favorites.my.aol.com/webmaster/ffclient/webroot/locale/en-US/images/myAOLButtonSmall.gif">Subscribe with My AOL</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://www.bloglines.com/sub/http://feeds.mytoolbox.ir/mytoolbox" src="http://www.bloglines.com/images/sub_modern11.gif">Subscribe with Bloglines</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://www.netvibes.com/subscribe.php?url=http%3A%2F%2Ffeeds.mytoolbox.ir%2Fmytoolbox" src="http://www.netvibes.com/img/add2netvibes.gif">Subscribe with Netvibes</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://fusion.google.com/add?feedurl=http%3A%2F%2Ffeeds.mytoolbox.ir%2Fmytoolbox" src="http://buttons.googlesyndication.com/fusion/add.gif">Subscribe with Google</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://www.pageflakes.com/subscribe.aspx?url=http%3A%2F%2Ffeeds.mytoolbox.ir%2Fmytoolbox" src="http://www.pageflakes.com/ImageFile.ashx?instanceId=Static_4&amp;fileName=ATP_blu_91x17.gif">Subscribe with Pageflakes</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://www.plusmo.com/add?url=http%3A%2F%2Ffeeds.mytoolbox.ir%2Fmytoolbox" src="http://plusmo.com/res/graphics/fbplusmo.gif">Subscribe with Plusmo</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://www.thefreedictionary.com/_/hp/AddRSS.aspx?http%3A%2F%2Ffeeds.mytoolbox.ir%2Fmytoolbox" src="http://img.tfd.com/hp/addToTheFreeDictionary.gif">Subscribe with The Free Dictionary</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://www.bitty.com/manual/?contenttype=rssfeed&amp;contentvalue=http%3A%2F%2Ffeeds.mytoolbox.ir%2Fmytoolbox" src="http://www.bitty.com/img/bittychicklet_91x17.gif">Subscribe with Bitty Browser</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://www.newsalloy.com/?rss=http%3A%2F%2Ffeeds.mytoolbox.ir%2Fmytoolbox" src="http://www.newsalloy.com/subrss3.gif">Subscribe with NewsAlloy</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://www.live.com/?add=http%3A%2F%2Ffeeds.mytoolbox.ir%2Fmytoolbox" src="http://tkfiles.storage.msn.com/x1piYkpqHC_35nIp1gLE68-wvzLZO8iXl_JMledmJQXP-XTBOLfmQv4zhj4MhcWEJh_GtoBIiAl1Mjh-ndp9k47If7hTaFno0mxW9_i3p_5qQw">Subscribe with Live.com</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://mix.excite.eu/add?feedurl=http%3A%2F%2Ffeeds.mytoolbox.ir%2Fmytoolbox" src="http://image.excite.co.uk/mix/addtomix.gif">Subscribe with Excite MIX</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://download.attensa.com/app/get_attensa.html?feedurl=http%3A%2F%2Ffeeds.mytoolbox.ir%2Fmytoolbox" src="http://www.attensa.com/blogs/attensa/WindowsLiveWriter/BadgeredintoBadges_10C02/attensa_feed_button5.gif">Subscribe with Attensa for Outlook</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://www.webwag.com/wwgthis.php?url=http%3A%2F%2Ffeeds.mytoolbox.ir%2Fmytoolbox" src="http://www.webwag.com/images/wwgthis.gif">Subscribe with Webwag</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://www.podcastready.com/oneclick_bookmark.php?url=http%3A%2F%2Ffeeds.mytoolbox.ir%2Fmytoolbox" src="http://www.podcastready.com/images/podcastready_button.gif">Subscribe with Podcast Ready</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://www.flurry.com/pushRssFeed.do?r=fb&amp;url=http%3A%2F%2Ffeeds.mytoolbox.ir%2Fmytoolbox" src="http://www.flurry.com/images/flurry_rss_logo2.gif">Subscribe with Flurry</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://www.wikio.com/subscribe?url=http%3A%2F%2Ffeeds.mytoolbox.ir%2Fmytoolbox" src="http://www.wikio.com/shared/img/add2wikio.gif">Subscribe with Wikio</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://www.dailyrotation.com/index.php?feed=http%3A%2F%2Ffeeds.mytoolbox.ir%2Fmytoolbox" src="http://www.dailyrotation.com/rss-dr2.gif">Subscribe with Daily Rotation</feedburner:feedFlare><item>
      <title>خودتان را در گوگل بهتر نشان دهید</title>
      <description>&lt;p&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: left; border-top: 0px; border-right: 0px; padding-top: 0px" title="Personal-Branding-Google" border="0" alt="Personal-Branding-Google" align="left" src="http://mytoolbox.ir/blog/image.axd?picture=Personal-Branding-Google.jpg" width="280" height="183" /&gt;وبلاگ نویس هستید؟    &lt;br /&gt;به دنبال پرسنال برندینگ هستید؟    &lt;br /&gt;می‌خواهید نتایج جستجوی گوگل برای پست‌های وبلاگ شما و حتی پست‌هایی که به عنوان مهمان در وبلاگ‌های دیگر مینویسید، متفاوت از دیگران باشد؟ علاوه بر عنوان لینک و توضیح،&amp;#160; تصویر و نام شما هم در نتایج جستجوی گوگل نشان داده شود؟&lt;/p&gt;  &lt;p&gt;در این مطلب با روشی بسیار ساده آشنا خواهید شد که نتیجه آن برای شما بسیار ارزشمند خواهد بود. نتیجه ای که به صورت زیر در جستجوی گوگل خواهد بود:&lt;/p&gt;  &lt;p&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="خودتان را در گوگل بهتر نشان دهید" border="0" alt="خودتان را در گوگل بهتر نشان دهید" src="http://mytoolbox.ir/blog/image.axd?picture=google-snippet1.png" width="529" height="105" /&gt;&lt;/p&gt;  &lt;p&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="خودتان را در گوگل بهتر نشان دهید" border="0" alt="خودتان را در گوگل بهتر نشان دهید" src="http://mytoolbox.ir/blog/image.axd?picture=google-snippet2.png" width="537" height="116" /&gt;&lt;/p&gt;  &lt;p&gt;برای اینکه پست‌های شما هم به این صورت نشان داده شود مراحل زیر را به دقت دنبال کنید:&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;مرحله اول:      &lt;br /&gt;&lt;/strong&gt;وارد اکانت گوگل پلاس خود شوید و از منوی آن، به قسمت Profile بروید. آدرس URL این صفحه رو کپی کنید و در جایی داشته باشید چون در مراحل بعدی این آدرس رو کار داریم.     &lt;br /&gt;این آدرس در واقع آدرس پروفایل گوگل پلاس شما هست. مثلا گوگل پلاس من این آدرس رو داره:     &lt;br /&gt;&lt;a title="https://plus.google.com/111643348585332847204" href="https://plus.google.com/111643348585332847204"&gt;https://plus.google.com/111643348585332847204&lt;/a&gt;     &lt;br /&gt;خیلی واضح هست که شما باید اکانت گوگل پلاس داشته باشید برای این مرحله و کلا برای انجام این کار!&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;مرحله دوم:&lt;/strong&gt;     &lt;br /&gt;در همون اکانت گوگل پلاس، بخش Profileروی دکمه Edit Profile کلیک کنید و در قسمت Contributor to تمامی وبلاگ‌هایی که در آنها نویسنده هستید را وارد کنید. مهم نیست وبلاگ خودتان باشد یا هر وبلاگی که به عنوان نویسنده در آن فعالیت دارید. در نهایت تغییرات رو save کنید و مطمئن شوید این لینک ها را در پروفایل خودتون میبینید.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;مرحله سوم:&lt;/strong&gt;     &lt;br /&gt;به انتهای آدرس پروفایل خودتون که از مرحله یک باید داشته باشید یک علامت سوال گذاشته و این عبارت رو اضافه کنید: rel=author&lt;/p&gt;  &lt;p&gt;مثلا برای پروفایل من به ایت صورت خواهد بود:    &lt;br /&gt;&lt;a title="https://plus.google.com/111643348585332847204?rel=author" href="https://plus.google.com/111643348585332847204?rel=author"&gt;https://plus.google.com/111643348585332847204&lt;strong&gt;?rel=author&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;مرحله چهارم:&lt;/strong&gt;     &lt;br /&gt;یک لینک با آدرس مرحله سوم رو در تمام پست‌هایی که نوشتید و خواهید نوشت اضافه کنید. اگر وبلاگ خود شما هست، میتوانید در ستون های کناری وبلاگ این لینک را اضافه کنید که خود به خود در تمامی صفحات اضافه میشود. اگر وبلاگ برای شما نیست و شما نویسنده مهمان هستید با وبلاگ گروهی هست، آخر پست هایی که مینویسید این لینک را اضافه کنید. دقت کنید این سایت‌ها باید در پروفایل گوگل پلاس شما ثبت شده باشند.     &lt;br /&gt;لینک میتوانید به شکل زیر باشد:&lt;/p&gt;  &lt;div dir="rtl" class="coder"&gt;   &lt;p&gt;&amp;lt;a href=&amp;quot;&lt;a href="https://plus.google.com/111643348585332847204?rel=author&amp;quot;"&gt;https://plus.google.com/111643348585332847204?rel=author&amp;quot;&lt;/a&gt;&amp;gt;       &lt;br /&gt;پروفایل گوگل+       &lt;br /&gt;&amp;lt;/a&amp;gt;&lt;/p&gt; &lt;/div&gt;  &lt;p&gt;در راهنمای گوگل گفته شده به کلمه Google لینک داده شود و در برخی مطالب غیر رسمی گفته شده که در متن لینک علامت + وجود داشته باشد.&amp;#160; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;مرحله پنجم:&lt;/strong&gt;     &lt;br /&gt;گوگل تغییرات انجام شده شمارو به صورت آنی متوجه نمی‌شود. در واقع باید تا دفعه بعدی که خزنده های گوگل به سایت شما سر میزنند صبر کنید. ممکن است 2 3 روزی طول بکشد. بعد از چند روز به آدرس زیر بروید و سایت خود رو چک کنید:     &lt;br /&gt;&lt;a title="http://www.google.com/webmasters/tools/richsnippets" href="http://www.google.com/webmasters/tools/richsnippets"&gt;http://www.google.com/webmasters/tools/richsnippets&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;اگر همه مراحل را درست رفته باشید، نتیجه چیزی شبیه به این هست:&lt;/p&gt;  &lt;p align="center"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="نتیجه موفقیت آمیز" border="0" alt="نتیجه موفقیت آمیز" src="http://mytoolbox.ir/blog/image.axd?picture=google-snippet3.png" width="534" height="149" /&gt;&lt;/p&gt;  &lt;p&gt;حالا باید صبر کنید تا نتایج گوگل تغییر پیدا کند. از یک هفته تا یکی دو ماه ممکن است طول بکشد تا فرمت نتایج جستجوس گوگل برای پست‌های شما بهبود پیدا کند. نتایج وبلاگ &lt;a title="وبلاگ جعبه ابزار" href="http://mytoolbox.ir/blog/"&gt;جعبه ابزار&lt;/a&gt; حدود یک ماه طول کشید تا به صورت کنونی بهبود یابد.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;div class="cr"&gt;این مطلب به صورت اختصاصی برای &lt;a title="وبلاگ جعبه ابزار" href="http://mytoolbox.ir/blog" target="_blank"&gt;وبلاگ جعبه ابزار&lt;/a&gt; نوشته شده است. استفاده از این مطلب به شرط ذکر منبع، آزاد می‌باشد.&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/mytoolbox/~4/0Ry2xp5p21k" height="1" width="1"/&gt;</description>
      <link>http://mytoolbox.ir/blog/post/google-search-personal-branding.aspx</link>
      <author>me</author>
      <comments>http://mytoolbox.ir/blog/post/google-search-personal-branding.aspx#comment</comments>
      <guid>http://mytoolbox.ir/blog/post.aspx?id=640a52dd-2476-4693-8c48-15beb09b7e6a</guid>
      <pubDate>Sat, 19 May 2012 13:10:59 +0400</pubDate>
      <category>Web</category>
      <category>Business</category>
      <dc:publisher>me</dc:publisher>
      <pingback:server>http://mytoolbox.ir/blog/pingback.axd</pingback:server>
      <pingback:target>http://mytoolbox.ir/blog/post.aspx?id=640a52dd-2476-4693-8c48-15beb09b7e6a</pingback:target>
      <slash:comments>2</slash:comments>
      <trackback:ping>http://mytoolbox.ir/blog/trackback.axd?id=640a52dd-2476-4693-8c48-15beb09b7e6a</trackback:ping>
      <wfw:comment>http://mytoolbox.ir/blog/post/google-search-personal-branding.aspx#comment</wfw:comment>
      <wfw:commentRss>http://mytoolbox.ir/blog/syndication.axd?post=640a52dd-2476-4693-8c48-15beb09b7e6a</wfw:commentRss>
    </item>
    <item>
      <title>خرید و فروش در کسب و کارهای کوچک و بزرگ</title>
      <description>&lt;p&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: 0px 15px 10px 0px; padding-left: 0px; padding-right: 0px; display: inline; float: left; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="big-fish-little-fish-735454" border="0" alt="big-fish-little-fish-735454" align="left" src="http://mytoolbox.ir/blog/image.axd?picture=big-fish-little-fish-735454.jpg" width="280" height="200" /&gt;دیروز خبری رو در مورد خریده شدن Instagram توسط فیسبوک شنیدم. این خبر اون قدر برام عجیب نبود اما چیزی که جالب بود برام عکس‌العمل و صحبت‌ های کاربران این سرویس چه در ایران چه در خارج ایران بود. نیازی نیست برای این حرفها جستجو کنید و ببینید چه گفته شده. تقریبا تمام آنها تو این حال و هوا بود: اینستاگرام به گند کشیده شد. و یا اینستاگرام به زودی به خاک سپرده خواهد شد.&lt;/p&gt;  &lt;p&gt;به جزییات این معامله کاری نداریم. میتوانید مطلب زیر را بخوانید:    &lt;br /&gt;&lt;a title="فیسبوک اینستاگرام را با قیمت ۱ میلیارد دلار خرید" href="http://weblogina.com/news/facebook-buying-instagram-for-1-billion/" rel="nofollow" target="_blank"&gt;فیسبوک اینستاگرام را با قیمت ۱ میلیارد دلار خرید.&lt;/a&gt;     &lt;br /&gt;مطلبی که در ادامه خواهید خواند در مورد این مدل معاملات به صورت کلی هست.&lt;/p&gt;  &lt;p&gt;به طور کلی در دنیای کسب و کار چه در قدیم چه در حال حاضر، خرید شرکت‌های کوچک تر توسط شرکت‌های بزرگتر بسیار معمول هست و اصلا نکته عجیبی نیست و البته این هم کاملا مشخص هست که هر کدام از این خرید و فروش ها، دلیلی منطقی پشت آن وجود دارد. رقمهای این معاملات اون قدر بالا هستند که کسی برای سرگرمی از حساب شرکت خودش نخواد چنین خرجی کنه. &lt;/p&gt;  &lt;p&gt;اما هدف از این خرید و فروش چیست؟    &lt;br /&gt;شاید هیچ شرکتی به صورت صد در صد واضح بیان نکنه که برای چی فلان شرکت کوچک تر رو خریده اما تجربه و تاریخ نشون داده که یه سری دلایل تقریبا مشترک در اکثر این خریدها وجود داره.&lt;/p&gt;  &lt;div style="text-align: center; direction: rtl" class="box"&gt;تبلیغات: &lt;a title="Order Smashing Book in Iran" href="http://mytoolbox.ir/blog/page/The-Smashing-Book.aspx" target="_blank"&gt;فروش ویژه تعداد محدود The Smashing Book در ایران؛ کلیک کنید. &lt;/a&gt;&lt;/div&gt;  &lt;h3&gt;&amp;#160; &lt;br /&gt;توسعه کسب و کار و افزایش درآمد&lt;/h3&gt;  &lt;p&gt;شرکت‌های بزرگ وقتی نیاز به توسعه پیدا میکنند، به علت هزینه‌های بالا، مایل به اختراع دوباره چرخ نیستند. بلکه در بازار به دنبال گروهی میگردند که هدف انها را تا جایی به پیش برده باشه و با خریداری اون شرکت کوچک و به کار گیری و ادامه توسعه فعالیت آنها، هم در هزینه ها صرفه جویی کرده هم در زمان.    &lt;br /&gt;این مدل، در بیزینس های غیر از IT مثل کارخونه ها و شرکت های صنعتی بسیار مرسوم هست. در شرکتهای مرتبط به IT نیز این خریدها بسیار رواج دارد و به علت پایین بودن سطح معامله ها خیلی از خبرهای آنها داغ نمیشوند و کمتر به گوش میرسند. اما کمپانی‌هایی مثل مایکروسافت و گوگل و آمازون در طول سال از این مدل خریدها زیاد دارند.&lt;/p&gt;  &lt;p&gt;همچنین برخی خریدها هم برمیگردد به پتانسیلی که در کسب درآمدِ بیزینس کوچکتر دیده شده. شرکت بزرگتر با ابزار مناسب و تیم فروش و بازاریابی با تجربه تر می‌تواند با خرید شرکت‌های مربوطه، پتانسیل درآمدزایی آن‌ها رو شکوفا کند و آن را تبدیل به یکی از راه‌های درآمد شرکت کند.&lt;/p&gt;  &lt;p&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: 5px 0px 0px 15px; padding-left: 0px; padding-right: 0px; display: inline; float: right; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="AOL - TechCrunch" border="0" alt="AOL - TechCrunch" align="right" src="http://mytoolbox.ir/blog/image.axd?picture=aol-tc-225_1.jpg" width="191" height="151" /&gt;نمونه‌ای از این خریدها برمی‌گردد به سالها پیش که یاهو به سراغ Delicious رفت و این شرکت را خریداری کرد که البته بعد از آن به دلایلی نتوانست به کسب موفقیتی در این زمینه برسد.&lt;/p&gt;  &lt;p&gt;چندی پیش هم شرکت AOL وبسایت TechCrunch رو خرید. گفته می‌شود AOL در حال سرمایه‌گذاری بر روی مبحث Web Content هست و برای آینده وب، برنامه‌هایی دارد و البته وبلاگهای بزرگ در زمینه تکنولوژی هم درآمد خوبی دارند . در این زمینه هم سرمایه گذاری خوبی کرده است.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;تکنولوژی‌های جدید و اختراعات ثبت شده&lt;/h3&gt;  &lt;p&gt;وقتی شرکتی در جهت رسیدن به اهدافش نیاز به تکنولوژی و یا ابزاری پیدا میکنه که در انحصار اشخاص و یا شرکت‌های دیگری هست، یا باید خودش دست به کار بشه و مورد مشابهی رو بسازه و یا اون انحصار رو خریداری کنه. با یک دو دو تا چهار تا معلوم میشه کدوم به صرفه تر هست و شرکت تصمیم خودش رو میگیره. به علت هزینه‌های بالای تحقیق و توسعه و امکان عقب موندن از رقبا در بازار، خرید تکنولوژی و انحصار اکثرا اتفاق میوفته. اتفاقا بازار داغی هم داره. با توجه به قوانین copyright و سختگیری بسیار زیاد در آن، شرکت‌های کوچک زیادی هستند که با آینده نگری و تیزهوشی، امکان نیاز فلان شرکت بزرگ به یک تکنولوژی یا محصول و اختراع&amp;#160; به خصوص را پیش بینی کرده و با تولید و ثبت اون مورد به نام خودشون، در هنگام فروش این انحصار به شرکت بزرگتر، پول زیادی به دست می‌آورند.&lt;/p&gt;  &lt;p align="center"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="invention" border="0" alt="invention" src="http://mytoolbox.ir/blog/image.axd?picture=invention_960385.jpg" width="289" height="180" /&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;یکی&lt;/em&gt; از دلایل خریده شدن فرندفید توسط فیسبوک، همین نکته بود. فیسبوک به دنبال تکنولوژی به روز رسانی به صورت Real Time بود و در آن زمان فرندفید این تکنولوژی را با همت مهندسین خودش توسعه داده بود و ثبت کرده بود و خیلی هم خوب کار میکرد. بعد از این خرید، فیس بوک هم از این تکنولوژی بر روی سرورهای خودش در حال استفاده هست.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;نیروی کار &lt;/h3&gt;  &lt;p&gt;گروهی از مهندس‌ها و مدیران جوان توی یک استارت آپ دور هم جمع شدند و دارن کارهای موفقی انجام میدن. شرکت بزرگتری احساس میکنه که به این گروه نیاز داره. نه به یک شخص به خصوص، بلگه به کل تیم آنها. تنها راهی که به نظر میرسه، خریدن کل استارت آپ این گروه کوچک هست. خریدی که در آن قید میشود که این تیم باید به شرکت بزرگ‌تر بپیوندند. &lt;/p&gt;  &lt;p&gt;این مورد چند وقت پیش برای Posterous اتفاق افتاد. توییتر این کمپانی رو خرید و حدود 30 مهندس و مدیری که در این شرکت کار میکردند را به استخدام خودش درآورد. در واقع به نوعی بر روی یک تیم خلاق و پرانرژی سرمایه‌گذاری کرده و امیدوار هست که با تزریق این انرژی به شرکت، به اهداف خودش برسه.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;حذف و از بین بردن رقیب&lt;/h3&gt;  &lt;p&gt;شرکت‌های بزرگ همواره مراقب بازار خود و رقبای خود هستند. در زیر ذره بین آنها، در کنار شناسایی فرصت‌ها در این بازار، تهدیدها نیز بسیار مورد توجه هستند. تهدیدهایی که از طرف رقبای اصلی یه وجود می‌آید را نمیتوان با خرید آن شرکت جبران کرد. مثلا دور از واقعیت و حتی خنده دار هست کخ مایکروسافت اقدام به خرید گوگل کند. در این قسمت از بازار، یعنی بخش رقبای غول و بزرگ، استراتژی های مختلفی برای رقابت وجود دارد. &lt;/p&gt;  &lt;p&gt;اما شرکت‌های کوچک‌تر که سهم کمی از بازار دارند اما پتانسیل بزرگ شدن در آنها دیده می‌شود، کم و بیش با پیشنهادات شرکت‌های بزرگ مواجه می‌شوند. البته آنها میدانند که این پیشنهادات در جهت خرید شرکت کوچک آنها برای از بین بردن کسب و کار آنها و حذف از بازار هست. بنابراین پیشنهاد باید مناسب باشد تا صاحبین کسب و کار کوچک راضی شوند. &lt;/p&gt;  &lt;p align="center"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="TwitterPosterous" border="0" alt="TwitterPosterous" src="http://mytoolbox.ir/blog/image.axd?picture=TwitterPosterous.jpg" width="300" height="225" /&gt;&lt;/p&gt;  &lt;p&gt;نمونه بارز این مدل خریدها، زمانی بود که توییتر سیستم تبلیغاتی خود را بر مبنای توییت های تبلیغاتی در وب‌سایتش طرح ریزی کرده بود. برای این که این تبلیغات دیده شوند، کاربرها باید از طریق وبسایت توییتر از این سرویس استفاده میکردند.    &lt;br /&gt;بنابراین رابط کاربری خودش رو طراحی مجدد کرد تا کاربرها رو تشویق کنه که از وبسایت استفاده کنند. اما TweetDeck به عنوان یکی از پرطرفدارترین و پرکاربردترین نرم‌افزارهای مرتبط با توییتر، یک مانع بسیار بزرگ برای شرکت بود تا کاربران را به سمت استفاده از وب بکشاند. پس با یک پیشنهاد عالی، TweetDeck را خرید و بالافاصله یک نسخه بسیار کم قابلیت تر از زمان قبل ارائه داد و تقریبا نرم افزار محبوب توییت‌دک را از بین برد.&lt;/p&gt;  &lt;p&gt;البته استارت آپ های زیادی هم وجود دارند که صرفا برای خریده شدن توسط شرکت‌های بزرگ ایجاد می‌شوند. آنها بخشی از خدمات کوچکترِ شرکت‌های بزرگ را نشانه میگیرند و آن خدمات کوچک را با کیفیتی بالا ارائه می‌دهند به امید آنکه روزی به چشم رقیب وچک، با پتانسیل بالا، دیده شوند و با فروش شرکت خود، پولدار شوند!&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;البته دلایل دیگری هم برای این گونه معاملات وجود دارد. مثلا وقتی استارت آپ نمیتواند هزینه های خود را پرداخت کند یا باید تعطیل کند و یا در محافلی اعلام رقبت برای فروش سرویس، ایده و یا محصول خود کند. بدین ترتیب میتواند مشتریی را برای استارت آپ دست و پا کند.&lt;/p&gt;  &lt;p&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: 10px 15px 0px 0px; padding-left: 0px; padding-right: 0px; display: inline; float: left; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="Instagram_logo" border="0" alt="Instagram_logo" align="left" src="http://mytoolbox.ir/blog/image.axd?picture=Instagram_logo.jpg" width="200" height="200" /&gt;به هر حال همیشه خبر نهایی فقط درج می‌شود. در پشت پرده چه خبر بوده، شاید برای همیشه بین آن دو شرکت باقی بماند. &lt;/p&gt;  &lt;p&gt;برگردیم به Instagram. به نظر خود من، این خرید برای حذف Instagram به عنوان رقیب نبوده و فیسبوک میتواند با توجه به کاربران و تولید محتوا و ترافیک بسیار زیاد در اینستاگرام با توسعه این سرویس و اعمال استراتژی های کسب درآمد، هزینه این خرید را در چند سال جبران کرده و آن را به یکی از منابع درآمدزایی خودش تبدیل کنه و البته گنجاندن و ارتباط دادن این سرویس با سرویس‌های خودش هم محتمل هست.&lt;/p&gt;  &lt;p&gt;به نظر شما دلیل این خرید چی بوده؟&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/mytoolbox/~4/o8pCimT7c7k" height="1" width="1"/&gt;</description>
      <link>http://mytoolbox.ir/blog/post/startup-being-acquired-by-large-corporations.aspx</link>
      <author>me</author>
      <comments>http://mytoolbox.ir/blog/post/startup-being-acquired-by-large-corporations.aspx#comment</comments>
      <guid>http://mytoolbox.ir/blog/post.aspx?id=365fd669-f6f7-47e6-9542-9ed2839ee7b4</guid>
      <pubDate>Tue, 10 Apr 2012 14:38:57 +0400</pubDate>
      <category>Business</category>
      <dc:publisher>me</dc:publisher>
      <pingback:server>http://mytoolbox.ir/blog/pingback.axd</pingback:server>
      <pingback:target>http://mytoolbox.ir/blog/post.aspx?id=365fd669-f6f7-47e6-9542-9ed2839ee7b4</pingback:target>
      <slash:comments>1</slash:comments>
      <trackback:ping>http://mytoolbox.ir/blog/trackback.axd?id=365fd669-f6f7-47e6-9542-9ed2839ee7b4</trackback:ping>
      <wfw:comment>http://mytoolbox.ir/blog/post/startup-being-acquired-by-large-corporations.aspx#comment</wfw:comment>
      <wfw:commentRss>http://mytoolbox.ir/blog/syndication.axd?post=365fd669-f6f7-47e6-9542-9ed2839ee7b4</wfw:commentRss>
    </item>
    <item>
      <title>آغاز سال نود و یک و عیدی و چند کلمه صحبت</title>
      <description>&lt;h3&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: 0px 10px 0px 0px; padding-left: 0px; padding-right: 0px; display: inline; float: left; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="7sin" border="0" alt="7sin" align="left" src="http://mytoolbox.ir/blog/image.axd?picture=7sin.jpg" width="300" height="214" /&gt;این هم از سال نود&lt;/h3&gt;  &lt;p&gt;خوب بود یا بد بود، تموم شد. امیدوارم به هر حال سال بعد، بهتر از امسال باشه برای من و همه شما و همه بقیه.    &lt;br /&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;عیدی&lt;/h3&gt;  &lt;p&gt;وبلاگ جعبه ابزار یک پیشنهاد ویژه به مناسبت نوروز داره که البته یک عیدیِ همینجوری نیست. یک تخفیف ویژه بر روی فقط 4 سری کتاب اسمشینگ هست که باقی مونده. اول پیشنهاد رو میگم بعدش توضیحاتی در مورد این کتابها.&lt;/p&gt;  &lt;p&gt;اگر شما از 4 نفر اولی باشید که دو کتاب &lt;a href="http://mytoolbox.ir/blog/page/The-Smashing-Book.aspx"&gt;The Smashing Book&lt;/a&gt; و &lt;a href="http://mytoolbox.ir/blog/post/Smashing-WordPress.aspx"&gt;The Smashing Wordpress&lt;/a&gt; رو از الان به بعد سفارش بدهند، هزینه خیلی استثنایی رو بابت این 2 کتاب ارزشمند پرداخت خواهید کرد. &lt;/p&gt;  &lt;p align="center"&gt;&lt;a href="http://mytoolbox.ir/blog/page/The-Smashing-Book.aspx"&gt;&lt;strong&gt;The Smashing Book&lt;/strong&gt;&lt;/a&gt;&lt;strong&gt; و &lt;/strong&gt;&lt;a href="http://mytoolbox.ir/blog/post/Smashing-WordPress.aspx"&gt;&lt;strong&gt;The Smashing Wordpress&lt;/strong&gt;&lt;/a&gt;&lt;strong&gt;      &lt;br /&gt;فقط 55 هزار تومان!&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;این دو کتاب با هم در جعبه ابزار به قیمت پشت جلد و با نرخ دلار رسمی حدود 85 هزار تومن فروخته میشد ولی دیگه این آخرشه و دیگه گفتیم عیدی بدیم! &lt;img style="border-bottom-style: none; border-left-style: none; border-top-style: none; border-right-style: none" class="wlEmoticon wlEmoticon-winkingsmile" alt="Winking smile" src="http://mytoolbox.ir/blog/image.axd?picture=wlEmoticon-winkingsmile.png" /&gt;&amp;#160;&lt;a href="http://mytoolbox.ir/blog/contact.aspx"&gt;زودتر از بقیه تماس بگیرید&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;چند کلمه صحبت در مورد کتاب های اسمشینگ&lt;/h3&gt;  &lt;p&gt;کتاب اسمشینگ که از نظر محتوا فوق العاده با ارزش هست، نسخه 2 رو پارسال و نسخه 3 رو هم برای امسال آماده کرده. هر کدوم موضوع مخصوص به خودشون رو دارن و اینجوری نیست که شماره 2 و&amp;#160; 3 چون بعد از 1 اومدن، پس کتاب 1 دیگه به درد نمیخوره. خیر اینجوری نیست. از سایت خودش میتونید فهرست کتاب ها رو ببینید.&lt;/p&gt;  &lt;p&gt;خیلی تماس و email داشتم در مورد اینکه کتابهای اسمشینگ جدید چه زمانی آماده میشه برای فروش. گفتم اینجا پاسخ بدم که با شرایط موجود، از طرف این وبلاگ، تقریبا هیچ وقت! با توجه به نرخ ارز، کتابها خیلی خیلی گرون در میان. تقریبا دونه ای صد هزار تومن و هزینه بسیار سنگینی میشه. این یه طرف، از طرف دیگه مشکلاتی که در گمرک پست با اونها مواجه شدیم برای چند سری آخر کتاب اسمشینگ 1، کلا دیدیم فعلا از عهده ما خارج هست و این 4 سری کتاب هم که به فروش برسه، تقریبا پرونده فروش کتاب های ارجینال اسمشینگ در این وبلاگ بسته خواهد شد.&lt;/p&gt;  &lt;p&gt;خود ما هم از این قضیه خیلی ناراحت هستیم و هر روشی رو بلد بودیم امتحان کردیم اما نتونستیم راهی برای رسوندن کتابها با قیمت خوب و بدون دردسر، به شما، پیدا کنیم. امیدواریم مسایل و مشکلات موجود حل بشه و ما هم در ایران بتونیم کتابهای ارجینال و با کیفیت رو با قیمت خوب، تهیه کنیم.    &lt;br /&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;چند کلمه صحبت در مورد اینجا&lt;/h3&gt;  &lt;p&gt;برای سال جدید، تو فکر چند مورد هستیم:&lt;/p&gt;  &lt;p&gt;اول از همه در فکر تغییر مدل پست هایی که در این وبلاگ زده میشه.    &lt;br /&gt;پست های غیر فنی و غیر آموزشی که بیشتر حالت نقد و بررسی و تجربه های شخصی و تحلیل و این مدل ها دارند. پست های آموزشی اگه بخوان با کیفیت باشن، زمان زیادی رو طلب میکنند. ما هم که دیگه پا به سن گذاشتیم و زمان کلا کم میاریم. هر چند خودم خیلی پست های آموزشیی که مینویسم رو دوست دارم. چه تعریف از خود باشه چه نباشه :دی&lt;/p&gt;  &lt;p&gt;بعدش هم طراحی وبلاگ تغییر پیدا میکنه. همینجوری، محض تنوع &lt;img style="border-bottom-style: none; border-left-style: none; border-top-style: none; border-right-style: none" class="wlEmoticon wlEmoticon-openmouthedsmile" alt="Open-mouthed smile" src="http://mytoolbox.ir/blog/image.axd?picture=wlEmoticon-openmouthedsmile.png" /&gt;&lt;/p&gt;  &lt;p&gt;و در آخر اینکه سعی میکنم پست های اموزشی، بیشتر در راستای اون سوالاتی باشه که گاهی از طرف شما برای من email میشه. بنابراین میخواهید در مورد چیزی بیشتر بدونید؟ بپرسید. سعی میکنم در موردش بنویسم. البته کاملا روشن هست که در مورد همه سوال ها و درخواست امکان پست زدن تو وبلاگ نیست. اما جمله معروف “تا جایی که در توان هست” اینجا کاربرد داره.&lt;/p&gt;  &lt;p&gt;نوروز 91 مبارکتون باشه و سال خوبی رو داشته باشید.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/mytoolbox/~4/MN_l643mtVI" height="1" width="1"/&gt;</description>
      <link>http://mytoolbox.ir/blog/post/Nowruz-91.aspx</link>
      <author>me</author>
      <comments>http://mytoolbox.ir/blog/post/Nowruz-91.aspx#comment</comments>
      <guid>http://mytoolbox.ir/blog/post.aspx?id=68f18238-b7ad-45f9-9a07-cd772b1aca51</guid>
      <pubDate>Wed, 14 Mar 2012 12:42:42 +0400</pubDate>
      <category>Off Topic</category>
      <dc:publisher>me</dc:publisher>
      <pingback:server>http://mytoolbox.ir/blog/pingback.axd</pingback:server>
      <pingback:target>http://mytoolbox.ir/blog/post.aspx?id=68f18238-b7ad-45f9-9a07-cd772b1aca51</pingback:target>
      <slash:comments>3</slash:comments>
      <trackback:ping>http://mytoolbox.ir/blog/trackback.axd?id=68f18238-b7ad-45f9-9a07-cd772b1aca51</trackback:ping>
      <wfw:comment>http://mytoolbox.ir/blog/post/Nowruz-91.aspx#comment</wfw:comment>
      <wfw:commentRss>http://mytoolbox.ir/blog/syndication.axd?post=68f18238-b7ad-45f9-9a07-cd772b1aca51</wfw:commentRss>
    </item>
    <item>
      <title>استفاده از تمپلیت در جی کوئری</title>
      <description>&lt;p&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px 10px 10px 0px; padding-left: 0px; padding-right: 0px; display: inline; float: left; border-top: 0px; border-right: 0px; padding-top: 0px" title="jqeury templates" border="0" alt="jqeury templates" align="left" src="http://mytoolbox.ir/blog/image.axd?picture=jqeury-templates.png" width="279" height="199" /&gt;یکی از استفاده‌های بسیار پرکاربرد از jQuery، کار با دیتا و خوندن و نوشتن اون هست و معمولا این اطلاعات از درخواست‌های AJAX مانند به دست میاد. در مورد این که چجوری میشه اطلاعات رو از طریق AJAX و jQuery گرفت، راه های زیادی وجود داره که به چند نمونه &lt;a href="http://mytoolbox.ir/blog/post/jQuery-Cross-Domain-RSS-Reader.aspx"&gt;قبلا&lt;/a&gt; اشاره شده است.&lt;/p&gt;  &lt;p&gt;این بار میخواهیم در مورد اینکه این اطلاعات رو چگونه شکل بدیم و در صفحه وب نشون بدیم، یه روش خیلی خوب و کارآمد رو یاد بگیریم و اون چیزی نیست جز استفاده از Template در جی کوئری. یعنی به جای استفاده از حلقه های تو در تو، یک قالب کلی میسازیم و دیتا رو به اون قالب میریزیم و یک لیستی از اطلاعات مورد نظر رو در صفحه وب نشون میدیم.&lt;/p&gt;  &lt;p&gt;پلاگینی با عنوان &lt;a href="https://github.com/jquery/jquery-tmpl" target="_blank"&gt;jQuery Template&lt;/a&gt; وجود داره که با کمک اون خیلی ساده میشه از قابلیت طراحی یک قالب برای نشون دادن دیتا از اون استفاده کرد. هر چند این پلاگین در حالت بتا قرار داره و &lt;a href="http://www.borismoore.com/2011/10/jquery-templates-and-jsviews-roadmap.html" target="_blank"&gt;اعلام شده&lt;/a&gt; که دیگه روش کار نمیشه و ممکن هست در آینده از طرف تیم jQuery یک پلاگین کامل‌تر و سریع‌تر معرفی بشه، اما به هر حال این پلاگین خیلی خوب کار میکنه و خیلی از کارها رو راه با سادگی راه میندازه. پس اگر در یک پروژه نسبتا بزرگ با مشکلاتی از این پلاگین مواجه شدید، یا باید برای ورژن جایگزین صبر کنید یا توی سورس این پلاگین دست ببرید و مشکلتون رو حل کنید.&lt;/p&gt;  &lt;div style="text-align: center; direction: rtl" class="box"&gt;تبلیغات: &lt;a title="Order Smashing Book in Iran" href="http://mytoolbox.ir/blog/page/The-Smashing-Book.aspx" target="_blank"&gt;فروش ویژه تعداد محدود The Smashing Book در ایران؛ کلیک کنید. &lt;/a&gt;&lt;/div&gt;  &lt;p&gt;&lt;strong&gt;شروع کار&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;برای شروع کار باید پلاگین Template رو دانلود کنید و یا میتونید مستقیم از CDN مایکروسافت استفاده کنید. برای دانلود روی لینک رایت کلیک کنید و&amp;#160; Save link as یا Save target as یا … بزنید.&lt;/p&gt;  &lt;p&gt;برای استفاده در پروژه:    &lt;br /&gt;&lt;a href="http://ajax.microsoft.com/ajax/jquery.templates/beta1/jquery.tmpl.min.js"&gt;http://ajax.microsoft.com/ajax/jquery.templates/beta1/jquery.tmpl.min.js&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;سورس:    &lt;br /&gt;&lt;a href="http://ajax.microsoft.com/ajax/jquery.templates/beta1/jquery.tmpl.js"&gt;http://ajax.microsoft.com/ajax/jquery.templates/beta1/jquery.tmpl.js&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;و البته خود کتابخونه jQuery هم که فراموش نمیشه.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;خواندن دیتا:&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;فرض میکنیم اطلاعات مورد نظر را از یک منبعی خوانده‌ایم و در این مثال این اطلاعات رو به صورت static به یک متغیر پاس میدهیم.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&amp;#160;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;استفاده از تمپلیت:&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;در این مثال به صورت خیلی ساده اطلاعات خوانده شده را با استفاده از تمپلیتی که ساخته‌ایم، نمایش میدهیم:&lt;/p&gt;  &lt;div dir="rtl" class="coder"&gt;   &lt;p&gt;&amp;lt;html&amp;gt;&lt;/p&gt;    &lt;p&gt;&amp;lt;head&amp;gt;      &lt;br /&gt;&amp;lt;meta content=&amp;quot;text/html; charset=utf-8&amp;quot; http-equiv=&amp;quot;Content-Type&amp;quot; /&amp;gt;       &lt;br /&gt;&amp;lt;title&amp;gt;jQuery Template&amp;lt;/title&amp;gt;       &lt;br /&gt;&lt;strong&gt;&amp;lt;script type=&amp;quot;text/javascript&amp;quot; src=&amp;quot;jquery-1.7.1.min.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;        &lt;br /&gt;&amp;lt;script type=&amp;quot;text/javascript&amp;quot; src=&amp;quot;jquery.tmpl.min.js&amp;quot; &amp;gt;&amp;lt;/script&amp;gt;&lt;/strong&gt;       &lt;br /&gt;&amp;lt;/head&amp;gt;&lt;/p&gt;    &lt;p&gt;&amp;lt;body&amp;gt;      &lt;br /&gt;&amp;lt;input type=&amp;quot;button&amp;quot; value=&amp;quot;load&amp;quot; id=&amp;quot;btn&amp;quot; /&amp;gt;       &lt;br /&gt;&lt;strong&gt;&amp;lt;div id=&amp;quot;result&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;/strong&gt;&lt;/p&gt;    &lt;p&gt;     &lt;br /&gt;&amp;lt;script id=&amp;quot;template1&amp;quot; &lt;strong&gt;type=&amp;quot;text/x-jquery-tmpl&amp;quot;&lt;/strong&gt;&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;ul&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;li&amp;gt;&amp;lt;strong&amp;gt;${Name}&amp;lt;/strong&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;br/&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ${Job}       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/li&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/ul&amp;gt;       &lt;br /&gt;&amp;lt;/script&amp;gt;&lt;/p&gt;    &lt;p&gt;     &lt;br /&gt;&amp;lt;script type=&amp;quot;text/javascript&amp;quot;&amp;gt;&lt;/p&gt;    &lt;p&gt;&amp;#160;&amp;#160;&amp;#160; //در مثال واقعی، این مقدار توسط درخواست ای‌جکس برگردانده میشود      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; var mydata = [       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; { Name: &amp;quot;Farshad&amp;quot;, Job: &amp;quot;Designer&amp;quot; },       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; { Name: &amp;quot;Amir&amp;quot;, Job: &amp;quot;Marketing&amp;quot; },       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; { Name: &amp;quot;Ali&amp;quot;, Job: &amp;quot;Developer&amp;quot; }       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; ];       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; $(function(){       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; $(&amp;quot;#btn&amp;quot;).live(&amp;quot;click&amp;quot;,function() {       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;strong&gt;$(&amp;quot;#template1&amp;quot;).tmpl(mydata)&lt;/strong&gt;.appendTo(&amp;quot;#result&amp;quot;);       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; });       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; })&lt;/p&gt;    &lt;p&gt;&amp;lt;/script&amp;gt;&lt;/p&gt;    &lt;p&gt;&amp;lt;/body&amp;gt;&lt;/p&gt;    &lt;p&gt;&amp;lt;/html&amp;gt;      &lt;br /&gt;&lt;/p&gt; &lt;/div&gt;  &lt;p&gt;با کلیک کردن بر روی دکمه، اطلاعات ما که 3 مقدار 2 تایی هست، توسط tmpl به داخل Template که در یک بلاگ &amp;lt;script&amp;gt; با ID مشخص نوشته شده است، ریخته میشود و توسط appendTo به بخشی از html که مورد دلخواه هست، اضافه میشود.&lt;/p&gt;  &lt;p&gt;در داخل تمپلیت دقت کنید که دیتا به چه صورت صدا زده شده و باقی موارد هم که html میباشد. نتیجه کار به صورت زیر هست:&lt;/p&gt;  &lt;p align="center"&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: 10px 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="jquery templates" border="0" alt="jquery templates" src="http://mytoolbox.ir/blog/image.axd?picture=jquerytemplates.png" width="484" height="286" /&gt;&lt;/p&gt;  &lt;p&gt;به همین سادگی میشه به اطلاعات خام، شکل و فرمت داد و کد تمیزتری رو هم داشت. به این ترتیب از توابعی مثل each هم نیازی نیست استفاده بشه.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;چند نکته:&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;یک:    &lt;br /&gt;اگر اطلاعاتی که میخواهید نمایش داده شود، حاوی کدهای اچ تی ام ال بود، باید از {{html}} استفاده کنید تا اطلاعات به صورت encode نشده نمایش داده شود.&lt;/p&gt;  &lt;div dir="rtl" class="coder"&gt;   &lt;p&gt;&amp;lt;script id=&amp;quot;template1&amp;quot; type=&amp;quot;text/x-jquery-tmpl&amp;quot;&amp;gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;ul&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;li&amp;gt;&amp;lt;strong&amp;gt;${Name}&amp;lt;/strong&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;br/&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;font color="#0000ff"&gt;&lt;strong&gt;${{html Description}}          &lt;br /&gt;&lt;/strong&gt;&lt;/font&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/li&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/ul&amp;gt;       &lt;br /&gt;&amp;lt;/script&amp;gt;&lt;/p&gt;    &lt;p&gt;     &lt;br /&gt;&amp;lt;script type=&amp;quot;text/javascript&amp;quot;&amp;gt;&lt;/p&gt;    &lt;p&gt;&amp;#160;&amp;#160;&amp;#160; //در مثال واقعی، این مقدار توسط درخواست ای‌جکس برگردانده میشود      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; var mydata = [       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; { Name: &amp;quot;Farshad&amp;quot;, &lt;strong&gt;&lt;font color="#0000ff"&gt;Description: &amp;quot;&amp;lt;em&amp;gt;Designer&amp;lt;/em&amp;gt;&amp;lt;br /&amp;gt;...&amp;quot;&lt;/font&gt;&lt;/strong&gt; },       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; { Name: &amp;quot;Amir&amp;quot;, &lt;strong&gt;&lt;font color="#0000ff"&gt;Description: &amp;quot;&amp;lt;img src='...' /&amp;gt;&amp;quot;&lt;/font&gt;&lt;/strong&gt; }       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; ];&lt;/p&gt;    &lt;p&gt;&amp;#160;&amp;#160;&amp;#160; // ادامه مثل قبل      &lt;br /&gt;&lt;/p&gt; &lt;/div&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;دو:    &lt;br /&gt;اگر اطلاعات شما دارای چند مقدار برای یک گروه بود، باید از {{each}} استفاده کنید.&lt;/p&gt;  &lt;div dir="rtl" class="coder"&gt;   &lt;p&gt;&amp;lt;script id=&amp;quot;template1&amp;quot; type=&amp;quot;text/x-jquery-tmpl&amp;quot;&amp;gt;      &lt;br /&gt;&amp;lt;ul&amp;gt;       &lt;br /&gt;&amp;lt;li&amp;gt;&amp;lt;strong&amp;gt;${Name}&amp;lt;/strong&amp;gt;       &lt;br /&gt;&amp;lt;br/&amp;gt;       &lt;br /&gt;&lt;font color="#0000ff"&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;strong&gt;&lt;font color="#0000ff"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {{each Job}}          &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ${$value.&lt;em&gt;Title&lt;/em&gt;} &amp;lt;br/&amp;gt;           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {{/each}}&lt;/font&gt;&lt;/strong&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/p&gt;    &lt;p&gt;&amp;lt;/li&amp;gt;      &lt;br /&gt;&amp;lt;/ul&amp;gt;       &lt;br /&gt;&amp;lt;/script&amp;gt;&lt;/p&gt;    &lt;p&gt;     &lt;br /&gt;&amp;lt;script type=&amp;quot;text/javascript&amp;quot;&amp;gt;&lt;/p&gt;    &lt;p&gt;var mydata = [      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; { Name: &amp;quot;Farshad&amp;quot;,       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;strong&gt;Job: [{ &lt;font color="#0000ff"&gt;Title&lt;/font&gt;: &amp;quot;Designer&amp;quot;},{ &lt;font color="#0000ff"&gt;Title&lt;/font&gt;: &amp;quot;Graphist&amp;quot;}]&lt;/strong&gt;&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; },       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; { Name: &amp;quot;Amir&amp;quot;,&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;strong&gt;Job: [{Title: &amp;quot;Marketing&amp;quot;},{Title: &amp;quot;Sales&amp;quot;}]&amp;#160; &lt;br /&gt;&lt;/strong&gt;&amp;#160;&amp;#160;&amp;#160; }       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; ];&lt;/p&gt;    &lt;p&gt;// ادامه مثل قبل      &lt;br /&gt;&lt;/p&gt; &lt;/div&gt;  &lt;p&gt;نتیجه:&lt;/p&gt;  &lt;p align="center"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="jquery templates" border="0" alt="jquery templates" src="http://mytoolbox.ir/blog/image.axd?picture=jquerytemplates2.png" width="381" height="260" /&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;سه:    &lt;br /&gt;شما میتوانید از &lt;a href="http://jquery.github.com/jquery-tmpl/demos/step-by-step/0_tmpl-read-only/3_if-else-tag.html" target="_blank"&gt;عبارتهای شرطی&lt;/a&gt; و همچنین &lt;a href="http://jquery.github.com/jquery-tmpl/demos/step-by-step/0_tmpl-read-only/6_hierarchical-data.html" target="_blank"&gt;Template های تو در تو&lt;/a&gt; هم استفاده کنید. &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;پی نوشت:    &lt;br /&gt;این مطلب به پیشنهاد یکی از خوانندگان وبلاگ جعبه ابزار نوشته شد. شما هم اگر در مورد مطلب به خصوصی که کمتر به زبان فارسی به اون پرداخته شده، دوست دارید بیشتر بدونید، مطرح کنید. &lt;img style="border-bottom-style: none; border-left-style: none; border-top-style: none; border-right-style: none" class="wlEmoticon wlEmoticon-smile" alt="Smile" src="http://mytoolbox.ir/blog/image.axd?picture=wlEmoticon-smile.png" /&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;div class="cr"&gt;این مطلب به صورت اختصاصی برای &lt;a title="وبلاگ جعبه ابزار" href="http://mytoolbox.ir/blog" target="_blank"&gt;وبلاگ جعبه ابزار&lt;/a&gt; نوشته شده است. استفاده از این مطلب به شرط ذکر منبع، آزاد می‌باشد.&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/mytoolbox/~4/pq9d_sWqBJI" height="1" width="1"/&gt;</description>
      <link>http://mytoolbox.ir/blog/post/jquery-template.aspx</link>
      <author>me</author>
      <comments>http://mytoolbox.ir/blog/post/jquery-template.aspx#comment</comments>
      <guid>http://mytoolbox.ir/blog/post.aspx?id=c74039f8-e9fa-4b6e-886e-aeb53383a698</guid>
      <pubDate>Sat, 31 Dec 2011 16:15:32 +0400</pubDate>
      <category>jQuery</category>
      <dc:publisher>me</dc:publisher>
      <pingback:server>http://mytoolbox.ir/blog/pingback.axd</pingback:server>
      <pingback:target>http://mytoolbox.ir/blog/post.aspx?id=c74039f8-e9fa-4b6e-886e-aeb53383a698</pingback:target>
      <slash:comments>10</slash:comments>
      <trackback:ping>http://mytoolbox.ir/blog/trackback.axd?id=c74039f8-e9fa-4b6e-886e-aeb53383a698</trackback:ping>
      <wfw:comment>http://mytoolbox.ir/blog/post/jquery-template.aspx#comment</wfw:comment>
      <wfw:commentRss>http://mytoolbox.ir/blog/syndication.axd?post=c74039f8-e9fa-4b6e-886e-aeb53383a698</wfw:commentRss>
    </item>
    <item>
      <title>همایش روز جهانی کاربردپذیری 1390 در تهران</title>
      <description>&lt;p&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: 4px 10px 0px 0px; padding-left: 0px; padding-right: 0px; display: inline; float: left; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="همایش روز جهانی کاربردپذیری 1390 در تهران" border="0" alt="همایش روز جهانی کاربردپذیری 1390 در تهران" align="left" src="http://mytoolbox.ir/blog/image.axd?picture=wud1390.jpg" width="264" height="150" /&gt;همایش روز جهانی کاربردپذیری امسال یعنی سال 1390 هم به مانند پارسال، همزمان با بسیاری از کشورهای دنیا، در تهران نیز برگزار شد. این مراسم از ساعت 9 صبح در دانشگاه علم و فرهنگ تهران شروع شد و تقریبا تا ساعت 5:30 بعد از ظهر ادامه داشت. برای اطلاعات بیشتر در مورد برنامه مراسم، حامیان و سخنران ها میتوانید به وب‌سایت &lt;a href="http://usabilityday.ir/2011"&gt;روز جهانی کاربردپذیری&lt;/a&gt; سر بزنید.&lt;/p&gt;  &lt;p&gt;در مورد همایش و گزارشهای مربوط به برگزاری، دوستان دیگری نوشته اند که میتوانید لینکهای این گزارش ها رو در &lt;a href="https://www.facebook.com/pages/Tisa-Interactive/237901379587120"&gt;صفحه فیس بوک&lt;/a&gt; دنبال کنید. من در این پست قصد دارم به چند مورد و نکته در مورد این همایش اشاره کنم. &lt;/p&gt;  &lt;div style="text-align: center; direction: rtl" dir="rtl" class="box"&gt;تبلیغات: &lt;a title="Order Smashing Book in Iran" href="http://mytoolbox.ir/blog/page/The-Smashing-Book.aspx" target="_blank"&gt;فروش ویژه تعداد محدود The Smashing Book در ایران؛ کلیک کنید. &lt;/a&gt;&lt;/div&gt;  &lt;p&gt;&lt;strong&gt;امسال نسبت به پارسال&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;مراسم امسال با حضور تقریبا 140 نفر برگزار گردید که نسبت به پارسال حدودا 2 برابر شده بود. مدت زمان برنامه هم نسبت به پارسال 4 ساعتی افزایش داشت.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://mytoolbox.ir/blog/image.axd?picture=wud1390-1.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: 10px 10px 0px 0px; padding-left: 0px; padding-right: 0px; display: inline; float: left; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="wud1390-1" border="0" alt="wud1390-1" align="left" src="http://mytoolbox.ir/blog/image.axd?picture=wud1390-1_thumb.jpg" width="329" height="233" /&gt;&lt;/a&gt;موضوعات ارائه شده هم امسال حرفه ای تر و پخته تر بودند. مباحث صرفا مربوط به طراحی وب نبود. در برخی مطالب به بررسی مستقیم وبسایتهای موجود به صورت مستقیم پرداخته شد و حتی موضوعاتی مثل کاربردپذیری در حمل و نقل نیز از موارد مثبت بود تا نشان دهد کاربردپذیری تنها در طراحی وب نیست و بسیار گسترده تر و جامع میباشد.&lt;/p&gt;  &lt;p&gt;مراسم امسال با حمایت دانشگاه علم و فرهنگ تهران و در فضای دانشگاه، جو علمی و آکادمیک تری داشت و همچنین از امکانات نسبتا جدید و نادری در همایش های برگزار شده در این سطح، استفاده شد. امکاناتی همچون پخش یکی از ارائه ها به صورت ویدئوکست از طرف جناب آقای دکتر بازرگان از دانشگاه ژنو که به دلیل شرکت در مراسم مشابه در خارج از کشور موفق به حضور در ایران نشدند و برنامه خودشون رو به صورت ضبط شده برای ما ارسال کردند.&lt;/p&gt;  &lt;p&gt;همچنین همایش با همکاری تیم وبلاگینا به صورت مستقیم هم به صورت &lt;a href="http://live.weblogina.com/%DA%AF%D8%B2%D8%A7%D8%B1%D8%B4-%D8%B2%D9%86%D8%AF%D9%87-%D8%B1%D9%88%D8%B2-%D8%AC%D9%87%D8%A7%D9%86%DB%8C-%DA%A9%D8%A7%D8%B1%D8%A8%D8%B1%D8%AF%D9%BE%D8%B0%DB%8C%D8%B1%DB%8C/"&gt;وبلاگ نویسی زنده&lt;/a&gt; و هم به صورت رادیو اینترنتی پخش شد و مخاطبان زیادی در زمان برگزاری، از طریق وبلاگینا با همایش در ارتباط بودند.&lt;/p&gt;  &lt;p&gt;بهتر شدن سطح و مدل ارائه ها هم از نکات مثبت بود. ارائه هایی که با HTML5/CSS3/Javascript ساخته شده بودند و ارائه هایی که از فیلم و صدا بهره گرفته بودند.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;حمایت از همایش&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;بسیار خوشحال هستیم که امسال شرکتهای بزرگی با حمایت خودشون از این همایش باعث بهتر برگزار شدن برنامه شدند. همایش امسال با همت شرکت نوپای &lt;a href="http://tisainteractive.ir/"&gt;تیسا اینتراکتیو&lt;/a&gt; که فعالیت خود را در زمینه کاربردپذیری و تجربه کاربری شروع کرده است و در آینده در موردش بیشتر خواهیم شنید و با همکاری دانشگاه علم و فرهنگ تهران، برگزار شد.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://chargoon.com/news/90-08-usability-day"&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: 0px 10px 0px 0px; padding-left: 0px; padding-right: 0px; display: inline; float: left; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="wud1390-3" border="0" alt="wud1390-3" align="left" src="http://mytoolbox.ir/blog/image.axd?picture=wud1390-3.jpg" width="312" height="254" /&gt;شرکت چارگون&lt;/a&gt; که حالا خود را&amp;#160; نخستین شرکت حوزه فناوری اطلاعات در کشور میداند که به صورت رسمی دارای بخش مستقل UX می‌باشد، یکی از حامیان اصلی همایش امسال بود. چارگون در کنار برنامه حمایتی خود از مراسم، چند فرصت شغلی مرتبط به مباحث تجربه کاربری را نیز برای شرکت کنندگان فراهم آورده بود و علاقه مندان با ملاقات با مسوولین شرکت میتوانستند اطلاعات بیشتری به دست بیاورند. &lt;a href="http://rubako.ir/studio/"&gt;شرکت روباکو&lt;/a&gt; و &lt;a href="http://www.hamkharid.com/"&gt;وب سایت همخرید&lt;/a&gt; و &lt;a href="http://www.datisdesign.com/"&gt;داتیس دیزاین&lt;/a&gt; نیز از دیگر حامیان اصلی این مراسم بودند. با مراجعه به &lt;a href="http://usabilityday.ir/2011/#sponsors"&gt;بخش حامیان همایش&lt;/a&gt;، با شرکت ها و وبسایتهای دیگری که از ما حمایت کردند، بیشتر آشنا بشوید.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;مشکلات مطرح شده&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;در مورد همایش، دوستان به مواردی به عنوان انتقاد و پیشنهاد اشاره کردند که تعدادی از مواردی که بیشتر به اون اشاره شده رو در موردش توضیح میدم:&lt;/p&gt;  &lt;p&gt;&lt;em&gt;- زمان طولانی برگزاری      &lt;br /&gt;- تعداد زیاد ارائه ها       &lt;br /&gt;- سطح ارائه ها&lt;/em&gt;     &lt;br /&gt;اصولا ماهیت این برنامه به این صورت هست که سالانه افرادی که در این زمینه تحقیق کرده اند و علاقه مند هستند، از قبل در همایش ثبت نام میکنند و در صورت انتخاب شدن، میان و موضوع رو ارائه میدهند. برنامه در اکثر کشورهای جهان از صبح تا عصر هست و چون حالت ارائه ها تنها به صورت معرفی، اشاره و بررسی میباشد، تعداد سخنرانی ها زیاد و زمان هر کدام کم میباشد. برنامه اصلی همایش به صورت برنامه آموزشی نیست و در برخی کشورها البته کارگاه های آموزشی در کنار سالن اصلی، برقرار بود. به طور مثال یک نگاه به &lt;a href="http://www.wud-berlin.de/programm"&gt;برنامه برگزاری روز جهانی کاربردپذیری در برلین آلمان&lt;/a&gt; بندازید.     &lt;br /&gt;مبحث کاربردپذیری در ایران مخصوصا بین طراحان و توسعه دهندکان وب، مدت زمان زیادی نیست که وارد شده است و امیدواریم برای برنامه سال بعد متقاضیان برای سخنرانی آنقدر باشند که از بین آنها، بهترین‌ها را انتخاب کنیم. &lt;/p&gt;  &lt;p&gt;&lt;em&gt;- تبلیغات سخنران ها در ارائه ها&lt;/em&gt;     &lt;br /&gt;بیایید بی انصاف نباشیم. تحت تاثیر جو هم قرار نگیریم. مدیر وبسایتی که جلوی بیش از 100 نفر از وبسایت خودش انتقاد میکنه و مشکلات سایت رو از نظر کاربردپذیری خیلی واضح و مستقیم بیان و بررسی میکنه، و یا کسی که به موفق شدن وب‌سایت خودش به علت رعایت یک سری اصول کاربردپذیری اشاره میکنه، باید گفت اومده که فقط تبلیغات کنه؟ در بزرگترین کنفرانسهای برگزار شده در سطح دنیا هم این مرسوم هست که سخنران ها در مورد اپلیکیشن و یا وبسایت خوشون، مرتبط با موضوع، صحبت کنند. &lt;/p&gt;  &lt;p&gt;شما هم برای همایش‌های بعدی همین روش را استفاده کنید. مطمئن باشید یک ارائه صرفا تئوری و علمی برای شرکت کننده ها جداب نیست. در لا به لای ارائه خودتون، مثال بزنید. مثال در دنیای واقعی. وب‌سایت خودتون میتونه مورد مثال قرار بگیره؟ پس وب‌سایت خودتون رو مثال بزنید. &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;و در آخر&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;ممنون از همه شما که در این همایش شرکت داشتید. حمایت کردید. نوشتید. email فرستادید و همچنان هم میفرستید. امیدواریم در همایش‌های آینده باز هم با حمایت شما، برنامه های بهتر و قوی تری را در کنار شما داشته باشیم. برای آگاه شدن از برنامه ها و همایش های آینده، &lt;a href="http://tisainteractive.ir/"&gt;تیسا اینتراکتیو&lt;/a&gt; را با استفاده از روشهایی که در &lt;a href="http://tisainteractive.ir/"&gt;وب سایت&lt;/a&gt; گفته شده، دنبال کنید. از طریق لینک تماس این وبلاگ هم همواره میتونید با من در تماس باشید.&lt;/p&gt;  &lt;p&gt;انتقادهای شما همیشه برای کسانی که به فکر پیشرفت هستند، با ارزش است. اما انتقادهایی (بهتر است بگوییم بی احترامی ها، لودگی ها و مسخره بازی ها) که از روی قصد و غرض و جوسازی از طرف اشخاصی صورت بگیرد، نه تنها ارزشی ندارد، بلکه باعث کاهش هر چه بیشتر اعتبار و ارزش شخص توهین کننده هم خواهد شد. این مطلب را هم بخوانید بد نیست: &lt;a href="http://www.parhamb.net/2011/11/time-travel-for-web"&gt;ساعت حرکت وب&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/mytoolbox/~4/NrrYkO0OONc" height="1" width="1"/&gt;</description>
      <link>http://mytoolbox.ir/blog/post/world-usability-day-2011.aspx</link>
      <author>me</author>
      <comments>http://mytoolbox.ir/blog/post/world-usability-day-2011.aspx#comment</comments>
      <guid>http://mytoolbox.ir/blog/post.aspx?id=d5fb3ccd-de2e-411b-bb9d-cc01e3e88b8b</guid>
      <pubDate>Sat, 26 Nov 2011 12:55:22 +0400</pubDate>
      <category>Off Topic</category>
      <dc:publisher>me</dc:publisher>
      <pingback:server>http://mytoolbox.ir/blog/pingback.axd</pingback:server>
      <pingback:target>http://mytoolbox.ir/blog/post.aspx?id=d5fb3ccd-de2e-411b-bb9d-cc01e3e88b8b</pingback:target>
      <slash:comments>6</slash:comments>
      <trackback:ping>http://mytoolbox.ir/blog/trackback.axd?id=d5fb3ccd-de2e-411b-bb9d-cc01e3e88b8b</trackback:ping>
      <wfw:comment>http://mytoolbox.ir/blog/post/world-usability-day-2011.aspx#comment</wfw:comment>
      <wfw:commentRss>http://mytoolbox.ir/blog/syndication.axd?post=d5fb3ccd-de2e-411b-bb9d-cc01e3e88b8b</wfw:commentRss>
    </item>
    <item>
      <title>پایان فصل اول یا شروع فصل دوم؟</title>
      <description>&lt;h3 dir="rtl"&gt;یک سال گذشت&lt;/h3&gt;  &lt;p dir="rtl"&gt;&lt;img style="border-right-width: 0px; margin: 0px 10px 10px 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="من تنبل نیستم" border="0" alt="من تنبل نیستم" align="left" src="http://mytoolbox.ir/blog/image.axd?picture=im-not-lazy.png" width="180" height="180" /&gt; تقریبا یک سال و خورده‌ای گذشت. از چی؟ بماند. شاید از اون زمان که اینجا بیشتر مینوشتم. شاید هم از اون زمان که فلان شد و شاید هم از تولد سال قبل خودم. در این یک سال گذشته مشغولیت های زیادی برای من ایجاد شد. از پیدا کردن دوستان جدید، سفرهای پی در پی و تا وارد شدن در فعالیت های کاری و تخصصی جدید و شروع کسب و کارهای تازه. همین بهونه ها کافی بود تا کمتر بنویسم و به “جعبه ابزار” نرسم. &lt;/p&gt;  &lt;p dir="rtl"&gt;&amp;#160;&lt;/p&gt;  &lt;h3 dir="rtl"&gt;شروع فصل دوم&lt;/h3&gt;  &lt;p dir="rtl"&gt;وقتی دیدم سریال قهوه تلخ تغییر مسیر داد و با ایجاد یک وقفه، تصمیم به ساخت سری جدید گرفت، من هم به فکرم رسید بیام اینجا و با سری جدیدی از نوشته ها دوباره “جعبه ابزار” رو زنده کنم و البته دیشب هم متوجه شدم سریال ستایش هم وارد بازی های فصلی شده تازه فصل اولش به پایان رسید، تصمیم قطعی تر شد تا فصل دوم “جعبه ابزار” رو شروع کنم! اگر ستایش چیزی کمتر از سریال های چند فصلی 24 و لاست و اینا نداره، من هم چیزی از ستایش (البته سریال ستایش) کمتر ندارم. پس اگه اونا میتوانند، ما هم میتوانیم!&lt;/p&gt;  &lt;p dir="rtl"&gt;&amp;#160;&lt;/p&gt;  &lt;h3 dir="rtl"&gt;برنامه های آینده&lt;/h3&gt;  &lt;p dir="rtl"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; margin: 0px 10px 10px 0px; display: inline; border-top: 0px; border-right: 0px" title="Whats-new" border="0" alt="Whats-new" align="left" src="http://mytoolbox.ir/blog/image.axd?picture=Whats-new.jpg" width="180" height="187" /&gt; البته فصل دوم به این زودی هم شروع نخواهد شد! برنامه اجرایی &lt;a title="همایش روز جهانی کاربردپذیری" href="http://usability.ir/2011" rel="nofollow" target="_blank"&gt;همایش روز جهانی کاربردپذیری&lt;/a&gt; که امسال برای دومین سال پیاپی در تهران روز 19 آبان برگزار خواهد شد خیلی از وقت آزادم رو گرفته و تا روز همایش به عنوان دبیر اجرایی این همایش، مشغول کارهاش خواهم بود. در مورد مراسم امسال، بعد از اجرای همایش مطالبی رو خواهم نوشت. بعد از این برنامه قصد دارم به اینجا رسیدگی کنم. از طراحی ظاهری گرفته تا آپگرید کردن کد وبلاگ به جدیدترین ورژن BlogEngine.Net و اضافه کردن بخشهای شخصی به کد و ساختارش. &lt;/p&gt;  &lt;p dir="rtl"&gt;اما در نوشتن و نوع مطالب هم تغییر خواهیم داشت. قصد دارم مقداری (نه زیاد نه کم!) از نوشتن مطالب فنی فاصله بگیرم و مقداری هم در مورد مطالب پایه، علمی، تجربیات و مسایل مربوط به مدیریتِ قسمتِ آنلاین کسب و کارها بنویسم. چیزهایی که تجربه کردم، در موردش خوندم و یا نگاه و نظری نسبت بهشون دارم. کلا چند قسمت جدید تو برنامه هام هست که به اینجا اضافه کنم. امیدوارم با یه برنامه ریزی و زمان بندی خوب بتونم به همشون برسم.&lt;/p&gt;  &lt;p dir="rtl"&gt;اول تو فکرم بود که در اینجا همچنان به مباحثی که قبلا داشته پرداخته شه و در وبلاگ جدیدی در مورد موضوعات جدید بنویسم اما وقتی به این نکته فکر کردم که در هر دو حالت نویسنده یک نفر هست، چرا باید جدا شه؟ با یک دسته بندی درست و جداسازی مطالب، خواننده این وبلاگ میتونه صرفا مطالبی که علاقه مند هست رو بخونه و کاری به بقیه مطالب نداشته باشه. بنابراین سعی خواهم کرد که اضافه شدن بخشهای جدید، تاثیر منفی در تجربه خوبِ خوانندگان قبلی نداشته باشه.&lt;/p&gt;  &lt;p dir="rtl"&gt;اگر پیشنهادی، انتقادی و کلا نظری دارید در رابطه با شروع فصل دوم، چه در کامنتهای اینجا، چه به صورت خصوصی تر، با &lt;a title="تماس با جعبه ابزار" href="contact.aspx"&gt;Email&lt;/a&gt;، خوشحال میشم با “جعبه ابزار” در ارتباط باشید.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/mytoolbox/~4/_QNe1SKn4ac" height="1" width="1"/&gt;</description>
      <link>http://mytoolbox.ir/blog/post/second-season.aspx</link>
      <author>me</author>
      <comments>http://mytoolbox.ir/blog/post/second-season.aspx#comment</comments>
      <guid>http://mytoolbox.ir/blog/post.aspx?id=b4e8e024-31e3-47be-8972-ff8e19d147fd</guid>
      <pubDate>Sat, 29 Oct 2011 16:43:57 +0400</pubDate>
      <category>Off Topic</category>
      <dc:publisher>me</dc:publisher>
      <pingback:server>http://mytoolbox.ir/blog/pingback.axd</pingback:server>
      <pingback:target>http://mytoolbox.ir/blog/post.aspx?id=b4e8e024-31e3-47be-8972-ff8e19d147fd</pingback:target>
      <slash:comments>3</slash:comments>
      <trackback:ping>http://mytoolbox.ir/blog/trackback.axd?id=b4e8e024-31e3-47be-8972-ff8e19d147fd</trackback:ping>
      <wfw:comment>http://mytoolbox.ir/blog/post/second-season.aspx#comment</wfw:comment>
      <wfw:commentRss>http://mytoolbox.ir/blog/syndication.axd?post=b4e8e024-31e3-47be-8972-ff8e19d147fd</wfw:commentRss>
    </item>
    <item>
      <title>SQLCE and ASP.Net</title>
      <description>&lt;h3 align="justify"&gt;SQLCE چیست؟&lt;/h3&gt;  &lt;p align="justify"&gt;ُSQL Compact Edition نسخه ای بسیار ابتدایی اما پرقدرت از SQL Server میباشد که به صورت یک فایل جداگانه عمل میکند و نیاز به نصب SQL Server ندارد. این دیتابیس فقط یک فایل با پسوند sdf هست و برای اجرا نیاز به دات نت فریمورک دارد. برای استفاده از این دییتابیس باید توجه داشت که به هیچ وجه توانایی های SQL Server رو نداره و محدودیتهایی در کانکشنهای همزمان داره.    &lt;br /&gt;بنابراین به هیچ وجه در اپلیکیشن های متوسط تا بزرگ نباید استفاده شه چون اصلا نتیجه مطلوبی نداره. اما اگر نرم افزار گسترده نیست و استفاده خیلی کم و کاربران محدود داره میشه به سادگی از SQLCE استفاده کرد. برای استفاده از این دیتابیس فقط کافی هست ابزارهای مربوطه رو که شامل VS2010 SP1 و SQL Compact Tools هست رو نصب کنید. از &lt;a title="WebPI" href="http://mytoolbox.ir/blog/post/Microsoft-web.aspx" rel="tag" target="_blank"&gt;WebPI&lt;/a&gt; استفاده کنید. &lt;/p&gt;  &lt;p align="justify"&gt;&amp;#160;&lt;/p&gt;  &lt;h3 align="justify"&gt;استفاده از SQLCE در ASP.Net&lt;/h3&gt;  &lt;p align="justify"&gt;به دلیل محدودیتهایی که این دیتابیس داره، به صورت پیشفرض استفاده از SQLCE در پروژه های ASP.Net غیر فعال هست و اگر بخواهید به این دیتابیس متصل بشید معمولا با خطای زیر مواجه خواهید شد:&lt;/p&gt;  &lt;p align="center"&gt;System.Data.&lt;strong&gt;SqlServerCe&lt;/strong&gt;.SqlCeException: Access to the database file is not allowed&lt;/p&gt;  &lt;p align="justify"&gt;بنابراین برای استفاده از SQLCE باید در ابتدای اجرا شدن اپلیکشین به دات نت فریمورک بفهمونیم که میخواهیم از این دیتابیس استفاده کنیم و از محدودیتها هم با خبر هستیم! برای این کار باید در global.asax و در قسمت Application_Start عبارت زیر را وارد کنیم:&lt;/p&gt;  &lt;div align="justify"&gt;   &lt;div class="coder"&gt;AppDomain.CurrentDomain.SetData(&amp;quot;SQLServerCompactEditionUnderWebHosting&amp;quot;, true)&lt;/div&gt; &lt;/div&gt;  &lt;p align="justify"&gt;نکته دیگری که باید به آن توجه کنید تنظیمات مربوط به سطح دسترسی و&amp;#160; Permission در سرور میزبانی سایت شما هست که باید Write Permission برای فایل sdf وجود داشته باشد.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/mytoolbox/~4/qg7EanGvnCQ" height="1" width="1"/&gt;</description>
      <link>http://mytoolbox.ir/blog/post/Use-SQLCE-ASP.aspx</link>
      <author>me</author>
      <comments>http://mytoolbox.ir/blog/post/Use-SQLCE-ASP.aspx#comment</comments>
      <guid>http://mytoolbox.ir/blog/post.aspx?id=f43a4595-e5da-4186-8de1-5fdbe307ae84</guid>
      <pubDate>Tue, 27 Sep 2011 13:06:09 +0400</pubDate>
      <category>ASP.Net</category>
      <category>SQL</category>
      <dc:publisher>me</dc:publisher>
      <pingback:server>http://mytoolbox.ir/blog/pingback.axd</pingback:server>
      <pingback:target>http://mytoolbox.ir/blog/post.aspx?id=f43a4595-e5da-4186-8de1-5fdbe307ae84</pingback:target>
      <slash:comments>7</slash:comments>
      <trackback:ping>http://mytoolbox.ir/blog/trackback.axd?id=f43a4595-e5da-4186-8de1-5fdbe307ae84</trackback:ping>
      <wfw:comment>http://mytoolbox.ir/blog/post/Use-SQLCE-ASP.aspx#comment</wfw:comment>
      <wfw:commentRss>http://mytoolbox.ir/blog/syndication.axd?post=f43a4595-e5da-4186-8de1-5fdbe307ae84</wfw:commentRss>
    </item>
    <item>
      <title>روشی بهتر برای استفاده از کتابخانه جی کوئری در دات نت</title>
      <description>&lt;div style="text-align: right; font-family: tahoma; direction: rtl; font-size: 13px"&gt;   &lt;h3&gt;جی کوئری در پروژه شما&lt;/h3&gt;    &lt;p&gt;&lt;img style="border-right-width: 0px; margin: 0px 10px 10px 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="جی کوئری در پروژه شما" border="0" alt="جی کوئری در پروژه شما" align="left" src="http://mytoolbox.ir/blog/image.axd?picture=jqeury-asp-net.png" width="222" height="219" /&gt; استفاده از کتابخانه‌های جاوا اسکریپتی در طراحی‌های رابط کاربری در زمان حاضر بسیار معمول و فراگیر شده و از بین تمام این کتابخانه‌ها، جی کوئری بیشترین طرفدار رو به خودش اختصاص داده. همین معروف شدن باعث شده تا جی کوئری آپدیت های ماهیانه داشته باشه و همواره در جهت بیشتر کردن قابلیتهاش و از بین بردن مشکلاتش، نسخه های جدید رو خیلی زود به زود ایجاد کنه.&lt;/p&gt;    &lt;p&gt;به این علت که در ورژن‌‎های جدیدتر جی کوئری، علاوه بر اضافه شدن امکانات بیشتر، بر روی سرعت و مشکلات ورژن قبلی هم کار میشه و بهبود پیدا میکنه، بهتر است همواره در پروژه‌های خودتون آخرین ورژن جی کوئری رو استفاده کنید. رعایت این مورد نه تنها در مورد خود فایل اصلی جی کوئری مفید هست بلکه در مورد پلاگین‌های نوشته شده برای jQuery نیز باید قابل توجه قرار بگیره و همیشه از آخرین ورژن استفاده بشه. &lt;/p&gt;    &lt;p&gt;در یک پروژه وب، ممکن هست تعداد زیادی از فایلهای جاوا اسکریپت مورد استفاده قرار بگیره که شامل تعداد زیادی از پلاگین‌ها باشه و البته&amp;#160; فایلهایی که توسط خود طراح نوشته شده. در این حالت برای تغییر فایلها به فایلهای جدیدتر باید به سورس صفحات رفت و آدرس دهی به فایل جدید رو انجام داد. هم زمان بر هست هم ممکن است در این بین یه سری صفحات هم فراموش شود.&lt;/p&gt;    &lt;div dir="rtl" class="boxcaption" align="center"&gt;تبلیغات: &lt;a title="Order Smashing Book in Iran" href="http://mytoolbox.ir/blog/page/The-Smashing-Book.aspx" target="_blank"&gt;سفارش خرید The Smashing Book در ایران؛ کلیک کنید.&lt;/a&gt;&lt;/div&gt;    &lt;p&gt;مشکل دیگری که در پروژه ممکن هست به اون بر بخورید این هست که در طراحی از user control ها و master page های متعدد استفاده کرده باشید و در هر کدوم هم کدهای جی کوئری باشه. در این حالت شما باید در این قسمت ها تک تک چک کنید آیا کتابخونه جی کوئری لود شده یا نه. اگر لود نشده، با آدرس دهی به فایلش، اون رو لود کنید و کد نویسی کنید. &lt;/p&gt;    &lt;p align="center"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; margin: 10px 0px; display: inline; border-top: 0px; border-right: 0px" title="MasterPageStructure" border="0" alt="MasterPageStructure" src="http://mytoolbox.ir/blog/image.axd?picture=MasterPageStructure.png" width="452" height="274" /&gt; &lt;/p&gt;    &lt;p&gt;در ASP.Net 4.0 این مشکل برطرف شده و میتوان به سادگی تمام این نگرانی‌ها و مشکلات رو برطرف کرد. در واقع نحوه کار سیستم به زبون خیلی ساده این هست: شما فقط میگی که من جی کوئری نیاز دارم. بقیه کارها رو خود فریمورک انجام داده و چک میکنه که قبلا تو سورس صفحه اسکریپت لود شده، اگه نشده لود میکنه و اگر چند تا لود شده بود و از چند جا این درخواست صدا زده شده بود، یک بار فقط به این حرف گوش میکنه. از طرف دیگه چون یک بار فقط اسکریپت‌ها رو برای فریمورک تعریف میکنیم، کافیست برای تغییرات فایلها و ورژن های جدید، تنها یک بار این تعریف رو ویرایش کنیم.&lt;/p&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt;    &lt;h3&gt;مرحله اول، تعریف:&lt;/h3&gt;    &lt;p&gt;در global.asax در قسمت Application_Start کد زیر را مینویسیم:&lt;/p&gt;    &lt;div class="coder"&gt;     &lt;p&gt;Dim mydefinition = New ScriptResourceDefinition        &lt;br /&gt;mydefinition.Path = &amp;quot;~/Scripts/jquery-1.6.2.min.js&amp;quot;         &lt;br /&gt;mydefinition.DebugPath = &amp;quot;~/Scripts/jquery-1.6.2.js&amp;quot;         &lt;br /&gt;mydefinition.CdnPath = &amp;quot;&lt;a href="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.6.2.min.js&amp;quot;"&gt;http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.6.2.min.js&amp;quot;&lt;/a&gt;         &lt;br /&gt;mydefinition.CdnDebugPath = &amp;quot;&lt;a href="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.6.2.js&amp;quot;"&gt;http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.6.2.js&amp;quot;&lt;/a&gt;&lt;/p&gt;      &lt;p&gt;ScriptManager.ScriptResourceMapping.AddDefinition(&amp;quot;jquery&amp;quot;, mydefinition)&lt;/p&gt;   &lt;/div&gt;    &lt;p&gt;در این کد ابتدا یک آبجکت از نوع ScriptResourceDefinition میسازیم. این آبجکت قرار هست به فریمورک بفهماند که یک سری تعریف جدید برای یک اسکریپت توسط ما داره انجام میشه.&lt;/p&gt;    &lt;p&gt;چهار ویژگی رو به این آبجکت نسبت میدیم. اولی و دومی مسیر فیزیکی به اسکریپت در حالتهای فشرده (برای لود شدن سریع در وبسایت نسخه نهایی) و غیر فشرده (برای دیباگ کردن اسکریپت‌ها زمان توسعه وبسایت) هست و سومی و چهارمی هم مثل دو مورد اول اما مسیر از CDN تعریف میشه. تعریف آدرس‌های اسکریپت از CDN اجباری نیست. ممکن هست اصلا اسکریپت مورد استفاده در CDN موجود نباشه! (&lt;a title="در مورد CDN بیشتر بخوانید" href="http://mytoolbox.ir/blog/post/Use-jQuery-CDN-from-Microsoft-or-Google.aspx" rel="tag" target="_blank"&gt;در مورد CDN بیشتر بخوانید&lt;/a&gt;) &lt;/p&gt;    &lt;p&gt;در این مثال تعریف (Definition) رو داریم برای jquery انجام میدیم. شما برای هر فایل جاوا اسکریپتی که داشتید میتونید این کد رو استفاده کنید. حالا یا jQuery UI هست یا Plugin ها و یا کدهای دستی خودتون. فرقی نداره.&lt;/p&gt;    &lt;p&gt;در نهایت این تعریف جدید رو با نام انتخابی jquery به ScriptManager اضافه میکنیم. ScriptManager وظیفه مدیریت جاوااسکریپت ها رو در فریمورک داره. اسکریپتهای مربوط به Microsoft Ajax رو به صورت پیشفرض در خودش داره و الان هم ما یک تعریف جدید به اسم jQuery رو به اون فهموندیم. این کد در Application_Start نوشته شده تا در تمام پروژه برقرار باشه.&lt;/p&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt;    &lt;h3&gt;مرحله دوم، نحوه استفاده:&lt;/h3&gt;    &lt;p&gt;برای استفاده از تعریفی که انجام دادیم در یک وب فرم که هم میتونه مسترپیج باشه یا یوزرکنترل یا صفحه aspx به صورت زیر عمل میکنیم:&lt;/p&gt;    &lt;div class="coder"&gt;     &lt;p&gt;&amp;lt;asp:ScriptManager LoadScriptsBeforeUI=&amp;quot;false&amp;quot; &lt;/p&gt;      &lt;p&gt;EnableCdn=&amp;quot;true&amp;quot; AjaxFrameworkMode=&amp;quot;Disabled&amp;quot; ID=&amp;quot;sm1&amp;quot; runat=&amp;quot;server&amp;quot;&amp;gt; &lt;/p&gt;      &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Scripts&amp;gt;&lt;/p&gt;      &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;asp:ScriptReference ScriptMode=&amp;quot;Release&amp;quot;&amp;#160; Name=&amp;quot;jquery&amp;quot;/&amp;gt; &lt;/p&gt;      &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/Scripts&amp;gt;&lt;/p&gt;      &lt;p&gt;&amp;lt;/asp:ScriptManager&amp;gt;&lt;/p&gt;   &lt;/div&gt;    &lt;p&gt;ابتدا با تگ asp:scriptmanager شروع میکنیم. یه سری ویژگی‌هایی که برای این تگ باید بدانیم و رعایت کنیم، موارد زیر هست:&lt;/p&gt;    &lt;p&gt;LoadScriptsBeforeUI: این ویژگی باعث میشود تا اسکریپت ها در انتهای صفحه نوشته شوند. این کار برای بالا رفتن سرعت لود صفحه توصیه شده است.&lt;/p&gt;    &lt;p&gt;AjaxFrameworkMode: اگر از قابلیت‌های Microsoft Ajax استفاده نمیکنید، مقدار آن را برابر Disabled قرار دهید تا از لود شدن اسکریپت‌های اضافی جلوگیری بشه. در این مثال ما نیازی به مایکروسافت ای جکس نداریم.&lt;/p&gt;    &lt;p&gt;EnableCdn: اگر میخواهید از CDN برای لود شدن اسکریپت استفاده کنید مقدار آن را true قرار دهید. دقت کنید که در زمان توسعه و طراحی پروژه ممکن هست شما به اینترنت متصل نباشید پس حواستون باشه که مقدارش باید false باشه!&lt;/p&gt;    &lt;p&gt;بعد از این با استفاده از asp:ScriptReference هر تعداد تعریف و Definition که قبلا انجام دادیم رو لود میکنیم. بدیهی هست اگر 2 عدد Definition رو میخوایم صدا بزنیم، از این تگ دو باز استفاده میکنیم ;-)&lt;/p&gt;    &lt;p&gt;این تگ 2 تا قابلیت مهم داره که باید مقداردهی کنیم:&lt;/p&gt;    &lt;p&gt;Name: نام Definition که قبلا تعریف کردیم. در مثال ما این نام برابر jquery هست.&lt;/p&gt;    &lt;p&gt;ScriptMode: هنگام تعریف، 2 مسیر رو مشخص کردیم. یکی برای اسکریپت با حجم کم و یکی با حجم اصلی. حجم کم زمانی مورد استفاده قرار میگیرد که ویژگی ScriptMode در حالت Release باشه. در غیر این صورت از مسیری که برای Debug تعریف کردیم استفاده میشه. پس در زمان Develop کردن پروژه که نیاز به دیباگ کردن داریم، این ویژگی رو کاری نداریم یا مقدارش رو Debug میدیم و هنگامی که پروژه قرار هست آپلود بشه و استفاده نهایی بشه ازش، یادتون نره مقدار ScriptMode رو Release وارد کنید.&lt;/p&gt;    &lt;p&gt;بدین ترتیب در هنگام لود شدن صفحه، ScriptManager وظیفه لود شدن اسکریپتهای شما رو بر عهده میگیره و شما نگران چند بار لود شدن یک اسکریپت و تغییر مسیر فایل و نام فایل اسکریپت در آینده نخواهید بود.&lt;/p&gt;    &lt;div dir="rtl" class="cr"&gt;این مطلب به صورت اختصاصی برای &lt;a title="وبلاگ جعبه ابزار" href="http://mytoolbox.ir/blog" target="_blank"&gt;وبلاگ جعبه ابزار&lt;/a&gt; نوشته شده است. استفاده از این مطلب به شرط ذکر منبع، آزاد می‌باشد.&lt;/div&gt; &lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/mytoolbox/~4/eQCNdQln04M" height="1" width="1"/&gt;</description>
      <link>http://mytoolbox.ir/blog/post/jquery-asp-net.aspx</link>
      <author>me</author>
      <comments>http://mytoolbox.ir/blog/post/jquery-asp-net.aspx#comment</comments>
      <guid>http://mytoolbox.ir/blog/post.aspx?id=95ba25d4-d054-4c50-9adb-01912726d6fa</guid>
      <pubDate>Sun, 03 Jul 2011 14:26:34 +0400</pubDate>
      <category>ASP.Net</category>
      <category>jQuery</category>
      <dc:publisher>me</dc:publisher>
      <pingback:server>http://mytoolbox.ir/blog/pingback.axd</pingback:server>
      <pingback:target>http://mytoolbox.ir/blog/post.aspx?id=95ba25d4-d054-4c50-9adb-01912726d6fa</pingback:target>
      <slash:comments>7</slash:comments>
      <trackback:ping>http://mytoolbox.ir/blog/trackback.axd?id=95ba25d4-d054-4c50-9adb-01912726d6fa</trackback:ping>
      <wfw:comment>http://mytoolbox.ir/blog/post/jquery-asp-net.aspx#comment</wfw:comment>
      <wfw:commentRss>http://mytoolbox.ir/blog/syndication.axd?post=95ba25d4-d054-4c50-9adb-01912726d6fa</wfw:commentRss>
    </item>
    <item>
      <title>اُپن آی دی به زبان ساده</title>
      <description>&lt;h3&gt;OpenID چیست؟&lt;/h3&gt;  &lt;p&gt;&lt;img style="border-right-width: 0px; margin: 0px 10px 10px 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="openid-logo" border="0" alt="openid-logo" align="left" src="http://mytoolbox.ir/blog/image.axd?picture=openid-logo.png" width="324" height="124" /&gt; اگر شما هم از اون دسته یوزرهای اینترنت باشید که دوست دارید هرجایی سرک بکشید و اونجا رو فتح کنید، میشه نتیجه گرفت شما حتما بیشتر از یک نام کاربری (یا همون username) و یا کلمه عبور (یا همون password) رو به خاطر سپردید.&lt;/p&gt;  &lt;p&gt;برای استفاده از سایت ها و سرویس های اینترنتی، اکثرا باید در اون ها ثبت نام کنید تا یک حساب کاربری برای شما ساخته بشه. با زیاد شدن سایتها، فرم هایی که باید پر کنید هم بیشتر میشه اونقدر که دیگه از حفظ کردن یا یادداشت کردن یوزر و پسورد هاتون خسته میشید.&lt;/p&gt;  &lt;p&gt;- کاش یه پسوردی داشتم که به همه سایتها میخورد!&lt;/font&gt; &lt;/p&gt;  &lt;p align="right"&gt;&lt;em&gt;- خوب یه پسورد انتخاب کن و برای همه سایتهایی که ثبت نام میکنی از همون استفاده کن.. &lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;img style="border-right-width: 0px; margin: 0px 0px 10px 25px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="21" border="0" alt="21" align="right" src="http://mytoolbox.ir/blog/image.axd?picture=21.png" width="120" height="133" /&gt;- اگر روزی خواستم پسورد رو عوض کنم چی؟ برم تو تک تک سایتها و عوضش کنم؟&lt;/font&gt; &lt;/p&gt;  &lt;p align="right"&gt;&lt;em&gt;- … &lt;/em&gt;&lt;/p&gt;  &lt;p&gt;- حتی username هم که امکان داره نتونم تو همه سایت ها یکسان انتخاب کنم. ممکنه اون اسم کاربری که من تو 2 3 تا سایت قبلی داشتم، تو این سایت جدید یکی دیگه قبلا انتخاب کرده باشه. پس باید یادم بمونه که تو هر سایتی با چه یوزری ثبت نام کردم.&lt;/p&gt; &lt;/font&gt;  &lt;p&gt;اُپن آی دی OpenID به زبون خیلی ساده، همون شاه کلیدی هست که شما برای وارد شدن به تمام سرویس های مورد علاقه خودتون، بهش نیاز دارید. یعنی یک بار یک فرم ثبت نام را پر میکنید، نام کاربری و کلمه عبور میسازید و دارای یک OpenID میشوید. از این به بعد از همین اطلاعات برای ورود به سایتها، استفاده میکنید.&lt;/p&gt;  &lt;p&gt;کل قضیه به همین سادگی حل نمیشه. مشکل اینجاست که سایتی که شما قصد ورود با OpenID دارید، باید استفاده از OpenID رو پشتیبانی کنه. خوشبختانه سایتهای زیادی به پشتیبانی از اُپن آی دی پیوستند و روز به روز هم بیشتر خواهند شد.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;از کجا OpenID بگیریم؟&lt;/h3&gt;  &lt;p&gt;اگر شما در یکی از سرویس ها و سایت های زیر اکانت دارید، شما دارای یک OpenID هستید!    &lt;br /&gt;- یاهو     &lt;br /&gt;- گوگل (جی میل)     &lt;br /&gt;- مایکروسافت لایو     &lt;br /&gt;- وردپرس     &lt;br /&gt;- بلاگر     &lt;br /&gt;- فلیکر     &lt;br /&gt;- &lt;a title="OpenID Providers" href="http://en.wikipedia.org/wiki/OpenID_providers" rel="nofollow" target="_blank"&gt;لیست تقریبا کاملی از OpenID Providers&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;چرا ؟&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;برای حمایت از پروژه OpenID نیاز به مشارکت شرکتهایی بود که میلیونها اکانت بر روی آنها ثبت شده بود. بدین ترتیب با پیوستن مثلا یاهو و گوگل به حمایت کنندگان OpenID، تمامی کاربران آنها به این جمع افزوده میشدند. یعنی برای کاربران آنها، نیازی به ساخت یک OpenID نیست و همون اکانتی که در یاهو و گوگل دارند، OpenID آنها خواهد شد و میتونند با استفاده از اون در هر سایتی که این قابلیت رو داره لاگین کنند.&lt;/p&gt;  &lt;p&gt;البته در کنار این شرکتها، سایتهایی مثل MyOpenID نیز ساخته شد که بعد از ثبت نام در این سایت، شما صاحب یک OpenID میشوید. البته MyOpenID که یکی از اولین و بزرگترین سرویس دهنده های OpenID به صورت مستقل هست، به کاربرای ایرانی سرویس نمیده و سایتش برای ما لود نمیشه. پس ما هم ازش استفاده نمیکنیم تا ورشکست شه :دی&lt;/p&gt;  &lt;p align="center"&gt;&lt;img style="border-right-width: 0px; margin: 10px 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="logo_soup" border="0" alt="logo_soup" src="http://mytoolbox.ir/blog/image.axd?picture=logo_soup.png" width="559" height="185" /&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;تعاریف و مفاهیم در OpenID&lt;/h3&gt;  &lt;p&gt;به سایت هایی که سرویس OpenID به کاربراشون میدن، اصطلاحا &lt;strong&gt;OpenID Provider&lt;/strong&gt; گفته میشه. شرکتهایی که در بالاتر گفته شد همه Provider هستند که مفهومش این هست که اگر در این سایتها اکانت داشته باشید، همون اکانت رو به عنوان اُپن آی دی میتونید استفاده کنید.     &lt;br /&gt;به غیر از Provider ها که از پروتکل OpenID پشتیبانی میکنند، سایتهایی مثل Facebook نیز از مدل های خاص خودشون استفاده میکنند برای اینکه به یوزرهاشون اجازه بدهند که وارد سایتهای دیگه از طریق اکانت خودشون بشوند.&lt;/p&gt;  &lt;p&gt;یه سایتهایی که استفاده از OpenID رو برای کاربراشون فراهم میکنند، اصطلاحا &lt;strong&gt;Relying Party&lt;/strong&gt; گفته میشه. لیست این سایتها بسیار زیاد هست. شما هم اگر کمی از برنامه نویسی سررشته داشته باشید، میتونید برای سایت خودتون به کاربراتون اجازه استفاده از OpenID بدید. برای مثال سایت &lt;a title="داناترین" href="http://www.danatarin.com/account/signin/" rel="nofollow" target="_blank"&gt;داناترین&lt;/a&gt; رو میتونید ببینید که از تعداد زیادی Provider پشتیبانی میکنه.&amp;#160; &lt;/p&gt;  &lt;p&gt;از هر Provider که OpenID گرفته باشید، در کنار یک username و password که در اون سایت دارید، آدرس اینترنتی مخصوص OpenID رو هم باید داشته باشید. این آدرس اینترنتی در واقع همان OpenID شما هست.&lt;/p&gt;  &lt;p&gt;این اصطلاحات رو در یک مثال خلاصه میکنم:    &lt;br /&gt;فرض کنید شما در Yahoo اکانت دارید. مهم نیست این اکانت برای 10 سال پیش باشه یا اخیرا ساخته شده باشه. در این حالت:     &lt;br /&gt;OpenID Provider شما Yahoo هست.     &lt;br /&gt;آدرس اینترنتی که باید داشته باشید برای این OpenID برابر است با: http://me.yahoo.com&lt;font color="#555555"&gt; &lt;/font&gt;این آدرس، &lt;strong&gt;تنها&lt;/strong&gt; اطلاعات مورد نیاز برای ورود به یک Relying Party هست. &lt;strong&gt;فقط و فقط همین آدرس&lt;/strong&gt;. &lt;/p&gt;  &lt;p&gt;دقت کنید برای استفاده از OpenID در یک Relying Party شما &lt;strong&gt;نباید&lt;/strong&gt; username و password مربوط به OpenID خودتون رو در سایت مذکور وارد کنید. با وارد کردن آدرس اینترنتی مربوط به Provider خودتون، سایت Relying Party شما رو میفرسته به Provider و در اونجا باید لاگین کنید! اگر گیج کننده بود مثال زیر رو ببینید:&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;مثال:      &lt;br /&gt;&lt;/strong&gt;برای ورود به سایت Mytoolbox.ir نیاز به پر کردن فرم ثبت نام دارید (این تنها یک مثال هست و واقعیت ندارد!)&amp;#160; اما خوشبختانه این سایت از OpenID پشتیبانی میکند. (یه اصلاح، mytoolbox.ir یک OpenID Relying Party هست). شما اکانت یاهو دارید. بنابراین میتوانید از این قابلیت استفاده کرده و بدون اینکه در mytoolbox.ir ثبت نام کنید، با اطلاعات OpenID وارد سایت شوید. &lt;/p&gt;  &lt;p&gt;سایت در قسمت لاگین، یک بخشی دارد که از شما میخواهد OpenID خود را وارد کنید. در این قسمت شما &lt;strong&gt;نباید&lt;/strong&gt; email و یا پسورد yahoo رو بنویسید و باید از آدرسی که یاهو اعلام کرده برای استفاده از OpenID، استفاده کنید. بنابراین شما در این قسمت تایپ میکنید: me.yahoo.com و دکمه submit را میزنید.&lt;/p&gt;  &lt;p align="center"&gt;&lt;img style="border-right-width: 0px; margin: 10px 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="openid-login" border="0" alt="openid-login" src="http://mytoolbox.ir/blog/image.axd?picture=openid-login.png" width="349" height="119" /&gt;&amp;#160; &lt;/p&gt;  &lt;p align="right"&gt;در این مرحله شما به سایت Yahoo انتقال پیدا میکنید، دیگه اثری از سایت mytoolbox.ir نیست. سایت یاهو از شما درخواست میکنه که لاگین کنید.&amp;#160; باز هم این نکته رو توجه کنید: شما user و password رو فقط در خود Provider باید وارد کنید و نه در سایت دیگری! بعد از لاگین، یاهو به شما اعلام میکند که فلان سایت قصد دارد از این اکانت شما به عنوان اپن آی دی استفاده کند و شما باید موافقت کنید. بعد از این شما به سایت اصلی یعنی&amp;#160; mytoolbox.ir منتقل شده و از نظر این سایت یک کاربری هستید که به سایت وارد شده است. حالا در پشت پرده از نظر برنامه نویسی چه اتفاقاتی میوفتد، بماند.&lt;/p&gt;  &lt;p align="center"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; margin: 10px 0px; display: inline; border-top: 0px; border-right: 0px" title="yahoo-openid" border="0" alt="yahoo-openid" src="http://mytoolbox.ir/blog/image.axd?picture=yahoo-openid.png" width="510" height="352" /&gt;&lt;/p&gt;  &lt;p&gt;حالا صدها سایت دیگر رو هم در نظر بگیرید که Relying Party باشند. شما به همین صورت با OpenID یاهو میتونید وارد همه این سایتها شده بدون اینکه برای هر کدوم جداگونه فرم ثبت نام پر کنید.&lt;/p&gt;  &lt;p&gt;برگردیم به مثال &lt;a title="داناترین" href="http://www.danatarin.com/account/signin/" rel="nofollow" target="_blank"&gt;داناترین&lt;/a&gt;؛ همین طور که میبینید، icon مربوط به اکثر Provider های معروف در صفحه لاگین وجود داره و روی هر کدوم که کلیک کنید، به صورت خودکار منتقل میشوید به&amp;#160; آدرس مربوط به اون Provider و با این روش، کار یوزر بسیار راحت شده و حتی نیازی به حفظ کردن آدرس اُپن آی دی خودش رو نداره.&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;h3&gt;   &lt;br /&gt;چند نکته امنیتی در استفاده از OpenID&lt;/h3&gt;  &lt;p&gt;&lt;strong&gt;یک:      &lt;br /&gt;&lt;/strong&gt;وقتی شما در سایتی از OpenID استفاده میکنید، در واقع به اون سایت، اجازه دادید که به اطلاعات اکانت OpenID شما دسترسی داشته باشد. البته نگران نباشید! منظور از اطلاعات، کلمه عبور و یا متن email های شما نیست. منظور اطلاعات ابتدایی مثل آدرس Email و نام و کشور و این گونه اطلاعات هست.     &lt;br /&gt;البته طبق پروتوکل OpenID، هر گونه اطلاعاتی که یک Provider قرار هست در اختیار سایت Relying Party قرار بده، به شما اعلام میشه و از شما اجازه گرفته میشه. به تصویر بالا دوباره دقت کنید. یاهو اعلام کرده که آدرس email من رو با سایت &lt;a title="داناترین" href="http://danatarin.com" rel="nofollow" target="_blank"&gt;داناترین&lt;/a&gt; میخواد به اشتراک بگذاره. این لیست ممکن هست در مواردی شامل نام و تاریخ تولد و محل تولد و این گونه مسایل باشه. بستگی به این داره که درخواست relying party برای چه مشخصاتی بوده.&lt;/p&gt;  &lt;p&gt;بنابراین وقتی از OpenID استفاده میکنید، دقت کنید که چه اطلاعاتی از شما قرار هست به اشتراک گذاشته بشه و نسبت به قابل اطمینان بودن سایت مورد نظر، آن را قبول یا رد کنید. دقت کنید یک وبسایت میتواند به این صورت، اطلاعات شخصی شما را شکار کند و با شما وارد یک رقابت از نوع مهندسی اجتماعی بشود!&lt;/p&gt;  &lt;p&gt;در تصویر زیر مشخص هست که علاوه بر email، اطلاعات دیگری نیز قرار هست با Relying Party به اشتراک گذاشته شود:&lt;/p&gt;  &lt;p align="center"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; margin: 10px 0px; display: inline; border-top: 0px; border-right: 0px" title="google-profile" border="0" alt="google-profile" src="http://mytoolbox.ir/blog/image.axd?picture=google-profile.png" width="550" height="270" /&gt; &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;دو:&lt;/strong&gt;     &lt;br /&gt;شاید برای دفعه چندم باشه که در همین مطلب به این مساله اشاره میکنم، اما باور کنید! مساله مهمی هست و بارها دیده شده که کاربران اشتباه میکنند. زمانی که از OpenID استفاده میکنید، سایت واسطه به هیچ وجه از شما نام کاربری و کلمه عبور نمیپرسد. اگر قرار هست از اکانت Gmail به عنوان OpenID استفاده کنید، تنها کافیست در سایت مورد نظر روی لوگوی Google کلیک کنید. شما به سایت Google منتقل میشوید و در آنجا باید لاگین کنید و از username و password خودتون استفاده کنید.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;سه:      &lt;br /&gt;&lt;/strong&gt;در این میان مراقب صفحات تقلبی و ساختگی باشید. ممکن است شما روی Google کلیک کنید و خوشحال باشید که الان در صفحه لاگین کردن Google هستید، اما شاید در یک صفحه ساختگی باشید که تنها شبیه گوگل راحی شده تا شما گول بخورید و نام کاربری و کلمه عبور خودتون رو تقدیم سایت مثلا زرنگ کنید. خوب! سعی کنید با نگاه انداختن به آدرس وبسایتی که در اون هستید، مطمئن باشید که در گوگل هستید و گول نخورید.&lt;/p&gt;  &lt;p align="center"&gt;&lt;img style="border-right-width: 0px; margin: 10px 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="google-openid" border="0" alt="google-openid" src="http://mytoolbox.ir/blog/image.axd?picture=google-openid.png" width="637" height="182" /&gt; &lt;/p&gt;  &lt;div dir="rtl" class="cr"&gt;این مطلب به صورت اختصاصی برای &lt;a title="وبلاگ جعبه ابزار" href="http://mytoolbox.ir/blog" target="_blank"&gt;وبلاگ جعبه ابزار&lt;/a&gt; نوشته شده است. استفاده از این مطلب به شرط ذکر منبع، آزاد می‌باشد.&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/mytoolbox/~4/_dz_TnjEyvI" height="1" width="1"/&gt;</description>
      <link>http://mytoolbox.ir/blog/post/what-is-openid.aspx</link>
      <author>me</author>
      <comments>http://mytoolbox.ir/blog/post/what-is-openid.aspx#comment</comments>
      <guid>http://mytoolbox.ir/blog/post.aspx?id=d8f20ac3-6581-4b8a-af5a-7d7980997a26</guid>
      <pubDate>Mon, 02 May 2011 16:58:01 +0400</pubDate>
      <category>Internet</category>
      <category>Web</category>
      <dc:publisher>me</dc:publisher>
      <pingback:server>http://mytoolbox.ir/blog/pingback.axd</pingback:server>
      <pingback:target>http://mytoolbox.ir/blog/post.aspx?id=d8f20ac3-6581-4b8a-af5a-7d7980997a26</pingback:target>
      <slash:comments>4</slash:comments>
      <trackback:ping>http://mytoolbox.ir/blog/trackback.axd?id=d8f20ac3-6581-4b8a-af5a-7d7980997a26</trackback:ping>
      <wfw:comment>http://mytoolbox.ir/blog/post/what-is-openid.aspx#comment</wfw:comment>
      <wfw:commentRss>http://mytoolbox.ir/blog/syndication.axd?post=d8f20ac3-6581-4b8a-af5a-7d7980997a26</wfw:commentRss>
    </item>
    <item>
      <title>روز جهانی کاربردپذیری</title>
      <description>&lt;p dir="rtl"&gt;&lt;img style="border-right-width: 0px; margin: 0px 10px 10px 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="worldusabilityday" border="0" alt="worldusabilityday" align="left" src="http://mytoolbox.ir/blog/image.axd?picture=worldusabilityday_thumb.png" width="250" height="56" /&gt; واژه &amp;quot;کاربردپذیری&amp;quot; معادل کلمه Usability انتخاب شده که در حالت کلی، به مفهوم قابلیت استفاده از امکانات هر وسیله و محصولی می‌باشد. به صورت خیلی خلاصه به صورت &amp;quot;میزان سهولت کاربری یک ابزار&amp;quot; هم بیان شده است. البته کاربردپذیری ابعاد بسیار وسیعی داره از سخت افزار تا نرم افزار. از طراحی کنترل تلویزیون تا طراحی صفحات وب. مباحث و شاخه های بسیار زیادی داره و خودش یک نوع تخصص به شمار میاد.&lt;/p&gt;  &lt;p dir="rtl"&gt;هر ساله، روزی به عنوان &lt;a title="روز جهانی کاربردپذیری" href="http://www.worldusabilityday.org/" rel="nofollow" target="_blank"&gt;روز جهانی کاربردپذیری&lt;/a&gt; با شعار &amp;quot;زندگی را آسان کنید!&amp;quot; معرفی شده است که در کشورهای مختلف برنامه های گوناگونی از جمله سمینار و همایش و کارگاه های آموزشی، برگزار میشه و امسال برای اولین بار با تلاش و پیگیری پرهام باغستانی، در تاریخ 20 آبان، 5 شنبه، این مراسم همراه با کل دنیا، در ایران هم برگزار میشه.&lt;/p&gt;  &lt;p dir="rtl" align="center"&gt;&lt;a href="http://mytoolbox.ir/blog/image.axd?picture=map.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="map" border="0" alt="map" src="http://mytoolbox.ir/blog/image.axd?picture=map_thumb.jpg" width="486" height="274" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p dir="rtl"&gt;مراسم &lt;a title="روز جهانی کاربردپذیری در ایران" href="http://www.usability.ir/2010/" target="_blank"&gt;روز جهانی کاربردپذیری در ایران&lt;/a&gt; روز 20 آبان 1389 از ساعت 10 الی 14در محل فرهنگسرای رسانه واقع در تهران، میدان ولیعصر ، بلوار کشاورز برگزار خواهد شد. در این مراسم در مورد مسایل مختلفی از Usability توسط دوستان صحبت خواهد شد که البته بیشتر در مورد کاربردپذیری در وب، بازاریابی و مباحث کلی و پایه خواهد بود. من هم در مورد &amp;quot;آزمون‌های کاربرد پذیری در وب&amp;quot; صحبت خواهم کرد و سعی میکنم در آینده، در مورد این مبحث آزمونها که در بین اکثر طراحان و وبمسترهای سایتهای ایرانی متاسفانه بدون توجه به حالت خودش رها شده، در وبلاگ هم بیشتر بنویسم. به علت کم بودن زمان، در روز مراسم، تنها به صورت معرفی مانند و آشنایی با مفاهیم و روشهای تست، در این مورد خواهم گفت.&lt;/p&gt;  &lt;p dir="rtl"&gt;&lt;strong&gt;شرکت برای تمامی علاقه مندان آزاد هست&lt;/strong&gt; و نیازی به ثبت نام در جایی نیست. ما هم از شما دعوت میکنیم که در این مراسم شرکت داشته باشید. &lt;/p&gt;  &lt;p dir="rtl"&gt;&lt;a title="وب سایت روز جهانی کاربردپذیری" href="http://www.worldusabilityday.org/world-usability-day-2010-iran" rel="nofollow" target="_blank"&gt;وب سایت روز جهانی کاربردپذیری و اعلام رسمی برنامه در ایران&lt;/a&gt;&lt;/p&gt;  &lt;p dir="rtl"&gt;&lt;a title="روز جهانی کاربردپذیری در ایران" href="http://www.usability.ir/2010/" target="_blank"&gt;وب سایت روز جهانی کاربردپذیری در ایران و اعلام اسامی سخنرانان و اطلاعات تکمیلی&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/mytoolbox/~4/6PzZvk9YzsE" height="1" width="1"/&gt;</description>
      <link>http://mytoolbox.ir/blog/post/world-usability-day-2010.aspx</link>
      <author>me</author>
      <comments>http://mytoolbox.ir/blog/post/world-usability-day-2010.aspx#comment</comments>
      <guid>http://mytoolbox.ir/blog/post.aspx?id=53859124-8ea1-4f91-835d-82e1d8b4a055</guid>
      <pubDate>Sat, 06 Nov 2010 15:43:09 +0400</pubDate>
      <category>Off Topic</category>
      <dc:publisher>me</dc:publisher>
      <pingback:server>http://mytoolbox.ir/blog/pingback.axd</pingback:server>
      <pingback:target>http://mytoolbox.ir/blog/post.aspx?id=53859124-8ea1-4f91-835d-82e1d8b4a055</pingback:target>
      <slash:comments>5</slash:comments>
      <trackback:ping>http://mytoolbox.ir/blog/trackback.axd?id=53859124-8ea1-4f91-835d-82e1d8b4a055</trackback:ping>
      <wfw:comment>http://mytoolbox.ir/blog/post/world-usability-day-2010.aspx#comment</wfw:comment>
      <wfw:commentRss>http://mytoolbox.ir/blog/syndication.axd?post=53859124-8ea1-4f91-835d-82e1d8b4a055</wfw:commentRss>
    </item>
    <item>
      <title>سومین جشنواره وب‌سایتهای ایران</title>
      <description>&lt;h3 dir="rtl"&gt;پیش گفتار(!):&lt;/h3&gt;  &lt;p dir="rtl"&gt;&lt;a title="سومین جشنواره وب سایت های ایران" href="http://www.webaward.ir/" rel="nofollow" target="_blank"&gt;&lt;img style="border-right-width: 0px; margin: 0px 10px 10px 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="جشنواره وب‌سایتهای ایران" border="0" alt="جشنواره وب‌سایتهای ایران" align="left" src="http://mytoolbox.ir/blog/image.axd?picture=webaward3_1.png" width="354" height="217" /&gt;&lt;/a&gt; جشنواره وب‌سایتهای ایران، به هر ترتیبی که بود، با همه مشکلاتی که داشت، به روزهای پایانی خودش داره میرسه. من به عنوان دبیر علمی جشنواره، فعالیت داشتم و میخوام در این پست در مورد برخی مسایلی که با اونها روبرو شدم، بنویسم. مطالب متفاوتی که فکر میکنم برای برخی دوستان که منتقد این جشنواره بودند، خوب باشه و اونهایی که در جریان مطالب نبودند، باخبر بشوند. ضمنا اسامی کاندیدهای نهایی رو هم میتونید در &lt;a title="کاندیدهای سومین جشنواره وب ایران" href="http://www.webaward.ir/candidates/" rel="nofollow" target="_blank"&gt;اینجا&lt;/a&gt; مشاهده کنید. این لیست، فقط اسامی سایتهایی هست که کاندید و یا به قولی نامرد دریافت عنوانِ بهترین در گروه خودشون شده‌اند. این لیست به برندگان جشنواره ارتباطی ندارد. و همونطور که در ادامه خواهم گفت، ممکن است یک گروه هیچ برنده‌ای در نهایت نداشته باشد! &lt;/p&gt;  &lt;p dir="rtl"&gt;&amp;#160;&lt;/p&gt;  &lt;h3 dir="rtl"&gt;ثبت نام در جشنواره&lt;/h3&gt;  &lt;p dir="rtl"&gt;مهمترین نکته در جشنواره‌ای که در مورد انتخاب بهترین وب‌سایت‌های ایرانی هست، چه چیزی به غیر از وب‌سایتهای کاندید برای کسب این مقام میتونه باشه؟ تقریبا (فعلا برای شروع) هیچ چیز! بنابراین جشنواره با اعلام عمومی مبنی بر اینکه شما میتوانید سایت خود را کاملا رایگان (باید هم رایگان باشد اما به ادامه توجه کنید) در سیستمی که به این منظور طراحی شده ثبت کنید. اضافه کردن سایت شما در لیست سایتهای شرکت کننده در جشنواره خیلی آسون و سریع انجام میشد. فرم مشخصات رو پر میکردید و وبسایتهای خودتون رو یکی یکی وارد کرده و برای هر کدام یک گروه (مثلا سایت اجتماعی یا سرویس دهنده بلاگ یا علمی) انتخاب میکردید و تمام. &lt;/p&gt;  &lt;div style="text-align: center; direction: rtl" dir="rtl" class="box"&gt;تبلیغات: &lt;a title="Order Smashing Book in Iran" href="http://mytoolbox.ir/blog/page/The-Smashing-Book.aspx" target="_blank"&gt;سفارش خرید The Smashing Book در ایران؛ کلیک کنید. &lt;/a&gt;&lt;/div&gt;  &lt;h3 dir="rtl"&gt;&amp;#160; &lt;br /&gt;اعلان عمومی؟&lt;/h3&gt;  &lt;p dir="rtl"&gt;این جشنواره از طرف هیچ شرکت و یا سازمان بزرگ و نیمه بزرگ و کوچکی برگزار نشد. از دبیر اجرایی گرفته تا داورها و شرکت کننده ها، درصد زیادی به صورت شخصی به این جشنواره ملحق شدند، بنابراین کاملا واضح هست که بودجه‌ای از ابتدا وجود نداشت. بدون بودجه هم امکان تبلیغات وسیع و گسترده برای شرکت در جشنواره نبود.&lt;/p&gt;  &lt;p dir="rtl"&gt;خبر آغاز به کار کردن جشنواره و امکان درج وب‌سایت ها برای شرکت در آن، تنها با کمک دوستان وبلاگ نویسی انجام شد که بدون دریافت هیچ مبلغی مبنی بر تبلیغات و تنها به خاطر علاقه و شاید احساس مسوولیت، با نوشتن پست های محتلف و قرار دادن بنرهای تبلیغاتی جشنواره در وبلاگ خودشون، از جشنواره حمایت میکردند. این کار شایسته تقدیر هست. این بنرها در &lt;a title="جشنواره وب ایران" href="http://www.webaward.ir/sponsor/" rel="license" target="_blank"&gt;سایت جشنواره&lt;/a&gt; در سایزهای مختلف موجود بود و به سادگی میشد استفاده کرد.&lt;/p&gt;  &lt;p dir="rtl"&gt;&lt;img style="border-right-width: 0px; margin: 0px 10px 10px 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="جشنواره وب" border="0" alt="جشنواره وب" align="left" src="http://mytoolbox.ir/blog/image.axd?picture=image_3.png" width="150" height="100" /&gt;در همین هنگام که وبمسترها سایتهای خودشون رو در سیستم وارد میکردند، یک اعلان عمومی برای همکاری در داوری سایتهای داده شد که هر شخصی که فعالیتی داشته، دانشی داشته در زمینه وب، باید و اعلام کنه که مایل به همکاری در سیستم داوری هست. برخی هم شخصا توسط خودم یا خود شایان (دبیر اجرایی) به این مجموعه دعوت کردیم. در نهایت این پروسه چند ماه طول کشید تا موفق شدیم 37 نفر رو در &lt;a title="جشنواره وب" href="http://www.webaward.ir/academy/" rel="nofollow" target="_blank"&gt;لیست داوران&lt;/a&gt; داشته باشیم. علت انتخاب تعداد زیاد داوران هم بالا رفتن تعداد رأی ها و در نتیجه دقیق تر بودن نتایج هست. یک کار جالبی که انجام شد، ساخته شدن یک بنر جدید بود با عنوان &amp;quot;من داور جشنواره هستم&amp;quot; که در مدت کوتاهی در وبلاگ بعضی از داورها دیده شد. این حرکت بسیار جالبی بود. &lt;/p&gt;  &lt;p dir="rtl"&gt;اما در روی دیگر سکه، آیا میشه دلخور بود و گله کرد از کسانی که وبلاگ داشتند و از جشنواره حمایت نکردند؟ آیا شرکت در یک کار غیر انتفاعی، فرقی ندارد حمایت از فلان موسسه یا حمایت از فلان جشنواره، کار سختی هست؟ آیا انتظار پرداخت هزینه برای گذاشتن تبلیغ جشنواره رو در وبلاگ خودشون داشتند؟ کسانی که بعد از اومدن لیست کاندیدها فقط و فقط در حال انتقاد هستند، در زمانی که میتوانستند کمک کنند، سرگرم چه کاری بودند که حواسشون به این طرف نبوده؟ اگر میگویید چرا کیفیت برخی گروه های پایین هست، ایا اون موقع که نیاز بود به اطلاع رسانی، شما کمکی کردید؟ البته دقت کنید، &lt;strong&gt;منظور من این نیست که همه باید حمایت میکردند، بیشتر آنهایی مد نظر هست که میتوانستند و نکردند و حالا فقط ساز مخالف میزنند&lt;/strong&gt;.&lt;/p&gt;  &lt;p dir="rtl"&gt;کمک در اطلاع رسانی به کنار، من شخصا بسیار گله مند شدم از کسانی که خود را از قدیمی ها و بزرگان وبسایت ها و وبلاگهای فارسی میدونند ولی اونقدر به خودشون زحمت ندادند که در این جشنواره شرکت کنند. اگر دلیل شرکت نکردن این سایت ها این بود که جشنواره رو کوچکتر از خود میدیدند، خوب میومدن و بزرگواری میکردن و منت میگذاشتند و جشنواره رو رونق میبخشیدند با حضور سایت بزرگشون! من فکر نمیکنم هیچ دلیل منطقی وجود نداشته باشه (به غیر از موارد خیلی خیلی خیلی خاص) که بشه این چشم و هم چشمی و لوس بازی و خودبزرگ بینی برخی از وبمسترهای سایت های ایرانی رو توجیه کرد. &lt;/p&gt;  &lt;h3 dir="rtl"&gt;&lt;strong&gt;     &lt;br /&gt;کمکهای مالی&lt;/strong&gt;&lt;/h3&gt;  &lt;p dir="rtl"&gt;یکی دیگر از مشکلات جشنواره کمبود منابع مالی بود. ما ممنون هستیم از تمام دوستان و شرکت هایی که به صورت donate و یا با دادن مبالغ بالاتر، اسپانسر جشنواره شدند، اما برای روشن شدن اذهان عمومی باید گفته بشه که کل مبالغ جمع شده، برای برگزاری یک مراسم اختتامیه ساده هم کافی نیست.    &lt;br /&gt;البته امیدواریم که بتونیم بک سالن با محلی رو برای دعوت یک سری از دوستان فراهم کنیم و با پذیرایی و اهدای جوایز به سایت های برتر، این جشنواره رو به خوبی تموم کنیم، اما هنوز دو دو تا 4 تای ما به نتیجه ای نرسیده. بنابراین انتظار 3 روز مراسم با شکوه رو نداشته باشید.     &lt;br /&gt;&amp;#160;&lt;/p&gt;  &lt;h3 dir="rtl"&gt;داوری نهایی و انتخاب کاندیدا ها&lt;/h3&gt;  &lt;p dir="rtl"&gt;سیستم داوری به این صورت بود که هر کدام از داوران وارد پنل مدیریتی جشنواره میشدند و به اکانتی که در اختیارشون قرار داده شده بود، لاگین میکردند و وارد پنل رای گیری میشدند. در این مرحله، سایتها در گروه های مختلف وجود داشتند که داورها به توجه به معیارهای موجود، از 0 تا 10 به این سایتها نمره میدادند.&lt;/p&gt;  &lt;p dir="rtl" align="center"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="davari" border="0" alt="davari" src="http://mytoolbox.ir/blog/image.axd?picture=davari.png" width="452" height="222" /&gt; &lt;/p&gt;  &lt;p dir="rtl"&gt;بگذریم از داورانی که تنها اسم آنها در لیست بود و هیچ گاه به سیستم وارد نشدند، کار داوری بسیار کند پیش رفت و به جایی رسیده بود که خواهش میکردیم از داورها که هر چه زودتر امتیاز خودشون رو به سایت ها اعلام کنند. بعد از اتمام دوره داوری اولیه، در هر گروه، کاندیداهای نهایی توسط دبیر علمی اون بخش اعلام شد و بعد از تایید شدن توسط دبیر علمی و اجرایی جشنواره، در سایت جشنواره &lt;a title="کاندیدهای سومین جشنواره وب ایران" href="http://www.webaward.ir/candidates/" rel="nofollow" target="_blank"&gt;قرار گرفت&lt;/a&gt;.&lt;/p&gt;  &lt;p dir="rtl"&gt;در برخی گروه ها شرکت کننده به حد نصاب نرسید و&amp;#160; اون بخش رو حذف کردیم. در برخی گروه ها با وجود شرکت کنندگان کم (حتی 1 شرکت کننده به تنهایی در یک گروه هم داشتیم !) به علت اینکه وب سایتی وجود داشت بسیار خوب، که شایسته تقدیر میتوانست باشد، برای همین در پایان جشنواره از این سایتها تقدیر میشه اما چون در گروه خودشون، رقیبی نداشتند، از شرکت در مسابقه حذف شدند. در چند گروه هم هیچ کدام از وب سایت های کاندید شده مستحق دریافت عنوان &amp;quot;بهترین&amp;quot; نخواهند بود، برای همین &lt;strong&gt;در برخی گروه ها برنده نهایی نخواهیم داشت.&lt;/strong&gt; امیدوارم در دوره های بعد با شرکت کردن سایت های بیشتر، کیفیت کاندیداها و برنده‌ها هم بالاتر برود.&lt;/p&gt;  &lt;p dir="rtl"&gt;بحث در این زمینه بسیار هست که البته بیشتر جنبه درد دل خواهد داشت یا شاید غر زدن و یا شاید افسوس خیلی چیزها رو خوردن. اما ما امیدواریم و تلاش میکنیم که روز به روز بهتر باشیم. منظورم از ما، همه کاربران اینترنت و صاحبین وب سایت ها هست. جشنواره وب تنها یک بهونه هست برای پیدا کردن تجربه های جدید، دوستان جدید و شناختن خیلی ها. البته این جشنواره چند تا سکته خفیف هم برای دبیر اجرایی داشت که به خیر گذشت :دی    &lt;br /&gt;&amp;#160;&lt;/p&gt;  &lt;h3 dir="rtl"&gt;نقاط ضعف و کمبودها&lt;/h3&gt;  &lt;p dir="rtl"&gt;کمبودها و اشتباهات و نقاط ضعف رو لیست نمیکنم چون خیلی بود و دوستان هم انتقادات خودشون رو نوشتند و ما هم با تایید بیشتر آنها، جز اینکه بگوییم توانایی دست اندر کاران در برگزاری جشنواره سال به سال بهتر خواهد شد، پاسخ دیگری نداریم. ضمنا امسال به نسبت سالهای قبل پوشش خبری جشنواره، مخصوصا بعد از اعلام کاندیداها، بسیار بهتر بود و میشه گفت حتی عالی بود که این خودش میتونه جای امیدواری باشه برای سالهای بعد. از تمامی دوستانی که خبر اعلام نتایج رو در سایتشون قرار دادند و کاندیدهایی که در سایت و وبلاگ خودشون به این مساله اشاره کردند، تشکر میکنیم.&lt;/p&gt;  &lt;p dir="rtl"&gt;در آخر: این پست رو به عنوان نوشته های یک نفر با قیافه حق به جانب نخونید. با قبول تمامی کمبودهایی که وجود داشت فقط خواستم یه جورایی اون روی سکه رو هم بنویسم. نه به خاطر تقابل با بقیه که انتقاد کردند، بلکه به خاطر کامل شدن گزارش ها و مطالب مربوط به جشنواره امسال.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/mytoolbox/~4/ByIQrOFZu2U" height="1" width="1"/&gt;</description>
      <link>http://mytoolbox.ir/blog/post/webaward-3rd.aspx</link>
      <author>me</author>
      <comments>http://mytoolbox.ir/blog/post/webaward-3rd.aspx#comment</comments>
      <guid>http://mytoolbox.ir/blog/post.aspx?id=8eae9839-678e-41d3-99d7-7df93508e687</guid>
      <pubDate>Tue, 28 Sep 2010 18:04:21 +0400</pubDate>
      <category>Off Topic</category>
      <dc:publisher>me</dc:publisher>
      <pingback:server>http://mytoolbox.ir/blog/pingback.axd</pingback:server>
      <pingback:target>http://mytoolbox.ir/blog/post.aspx?id=8eae9839-678e-41d3-99d7-7df93508e687</pingback:target>
      <slash:comments>13</slash:comments>
      <trackback:ping>http://mytoolbox.ir/blog/trackback.axd?id=8eae9839-678e-41d3-99d7-7df93508e687</trackback:ping>
      <wfw:comment>http://mytoolbox.ir/blog/post/webaward-3rd.aspx#comment</wfw:comment>
      <wfw:commentRss>http://mytoolbox.ir/blog/syndication.axd?post=8eae9839-678e-41d3-99d7-7df93508e687</wfw:commentRss>
    </item>
    <item>
      <title>Smashing WordPress</title>
      <description>&lt;h3 dir="rtl"&gt;کتاب وردپرس اسمشینگ و سفارش در ایران&lt;/h3&gt;  &lt;div style="text-align: center; direction: rtl" dir="rtl" class="box"&gt;برای سفارش کتاب، با جعبه ابزار &lt;a title="تماس" href="http://mytoolbox.ir/blog/contact.aspx" target="_blank"&gt;تماس&lt;/a&gt; بگیرید. &lt;/div&gt; &lt;img style="border-bottom: 0px; border-left: 0px; margin: 10px 10px 10px 0px; display: inline; border-top: 0px; border-right: 0px" title="smashing wordpress" border="0" alt="smashingwordpress" align="left" src="http://mytoolbox.ir/blog/image.axd?picture=smashingwordpress11.png" width="304" height="395" /&gt;       &lt;p dir="rtl"&gt;وردپرس یکی از نام آشناترین سیستم های وبلاگ و CMS در ایران هست که طراحان بسیاری رو به خودش مشغول کرده. استفاده اصولی و روی برنامه از وردپرس چه در حالت وبلاگ چه در حالت استفاده از یک CMS&amp;#160; ساده، یکی از مهمترین مسایلی هست که باید به اون توجه بشه. &lt;/p&gt;  &lt;p dir="rtl"&gt;&lt;a title="کتاب اسمشینگ ورپرس" href="http://www.wiley.com/WileyCDA/WileyTitle/productCd-0470684151,descCd-tableOfContents.html" rel="nofollow" target="_blank"&gt;کتاب اسمشینگ وردپرس&lt;/a&gt; یکی از بهترین منابع WordPress هست که میتونه به طراحان و توسعه دهندگان کمک بسیاری بکنه. با توجه به هسته قوی وردپرس، کمتر نیاز به دستکاری کدهای هسته این سیستم میشه. بنابراین بیشترین توجه به سمت طراحی و توسعه این سیستم در بخش UI هست. این کتاب تمرکز اصلی رو در طراحی وردپرس گذاشته که در کنار اون شما رو با تمامی مسایل و نکاتی که در برنامه نویسی هم ممکنه به اون برخورد کنید، آشنا میکنه. نیازی نیست یک برنامه نویس حرفه ای PHP باشید. در این کتاب به ساده ترین شکل ممکن، دستورات و سینتکس های ضروری که باید بدونید رو به شما آموزش میده.&lt;/p&gt;  &lt;p dir="rtl"&gt;کتاب اسمشینگ وردپرس دوم کتاب چاپی از &lt;a title="مجله اسمشینگ" href="http://www.smashingmagazine.com/" rel="nofollow" target="_blank"&gt;مجله اسمشینگ&lt;/a&gt; هست که جعبه ابزار هم بعد از فروش موفق &lt;a title="کتاب اسمشینگ" href="http://mytoolbox.ir/blog/page/The-Smashing-Book.aspx" target="_blank"&gt;کتاب اسمشینگ&lt;/a&gt; در همین وبلاگ، این کتاب رو هم برای تعداد بسیار محدود برای فروش آماده کرده است. کتاب به همون صورت چاپ اصلی از انتشارات WILEY هست که کیفیت بسیار بالایی داره و خوندن این کتاب رو لذت بخش تر میکنه. برای سفارش کتاب Smashing WordPress, Beyond the Blog و همینطور کتاب The Smashing Book، با جعبه ابزار &lt;a title="تماس" href="http://mytoolbox.ir/blog/contact.aspx"&gt;تماس&lt;/a&gt; بگیرید.&lt;/p&gt;  &lt;p dir="rtl"&gt;در ادامه سرفصل های کتاب رو میتونید ببینید. مطالب بسیاری رو در این کتاب میتونید بخونید و یاد بگیرید:&lt;/p&gt;  &lt;p dir="rtl"&gt;&lt;strong&gt;بخش اول: مقدمات ضروری در وردپرس&lt;/strong&gt;&lt;/p&gt;  &lt;p dir="rtl"&gt;فصل اول:    &lt;br /&gt;- نصب وردپرس     &lt;br /&gt;- انتقال وردپرس به دایرکتوری های دیگر     &lt;br /&gt;- آماده سازی دیتابیس     &lt;br /&gt;- بک آپ گیری از وردپرس     &lt;br /&gt;- انتقال وردپرس به هاست دیگر     &lt;br /&gt;- بالابردن امنیت در نصب وردپرس&lt;/p&gt;  &lt;p dir="rtl"&gt;فصل دوم:    &lt;br /&gt;- وردپرس و سینتکس پی اچ پی     &lt;br /&gt;- معرفی پوسته و قالب     &lt;br /&gt;- استفاده از Template Tags     &lt;br /&gt;- معرفی تگ include     &lt;br /&gt;- فرستادن پارامتر به Template Tags     &lt;br /&gt;- شرط در تگ ها&lt;/p&gt;  &lt;p dir="rtl"&gt;فصل سوم:    &lt;br /&gt;- معرفی حلقه ها در وردپرس     &lt;br /&gt;- استفاده از Loop های تکی و جندتایی     &lt;br /&gt;- ایجاد فیلدهای دلخواه&lt;/p&gt;  &lt;p dir="rtl"&gt;&amp;#160;&lt;/p&gt;  &lt;p dir="rtl"&gt;&lt;strong&gt;بخش دوم: طراحی و توسعه Theme در وردپرس&lt;/strong&gt;&lt;/p&gt;  &lt;p dir="rtl"&gt;فصل چهارم:    &lt;br /&gt;- مقدمات theme     &lt;br /&gt;- فایلهای موردنیاز در Template     &lt;br /&gt;- Widget     &lt;br /&gt;- Comments     &lt;br /&gt;- Core Theme     &lt;br /&gt;- آماده سازی نهایی Theme     &lt;br /&gt;- بررسی دقیق یک Theme ساخته شده به صورت عملی&lt;/p&gt;  &lt;p dir="rtl"&gt;فصل پنجم:    &lt;br /&gt;- Child Themes     &lt;br /&gt;- نکاتی در مورد Semantic theme     &lt;br /&gt;- ارث بری در طراحی     &lt;br /&gt;- مدیریت همزمان چندین وبسایت توسط Child Themes     &lt;br /&gt;- معرفی Theme Framework&lt;/p&gt;  &lt;p dir="rtl"&gt;فصل ششم:    &lt;br /&gt;- طراحی حرفه ای     &lt;br /&gt;- تکنیک های CSS     &lt;br /&gt;- پشتیبانی از زبان های مختلف در Theme     &lt;br /&gt;- نکات SEO     &lt;br /&gt;- طراحی Conditional     &lt;br /&gt;- استفاده از Taxonomies     &lt;br /&gt;- صفحه Theme Option&lt;/p&gt;  &lt;p dir="rtl"&gt;   &lt;br /&gt;&lt;strong&gt;بخش سوم: طراحی و توسعه پلاگین ها در وردپرس&lt;/strong&gt;&lt;/p&gt;  &lt;p dir="rtl"&gt;فصل هفتم:    &lt;br /&gt;- مقدمات Plugin     &lt;br /&gt;- استفاده از پلاگین     &lt;br /&gt;- ساخت Template Tag     &lt;br /&gt;- توابع مورد استفاده     &lt;br /&gt;- پشتیبانی Widget     &lt;br /&gt;- استفاده از دیتابیس در پلاگین     &lt;br /&gt;- نکات مهم در طراحی نهایی پلاگین ها و در دسترس همه قراردادن&lt;/p&gt;  &lt;p dir="rtl"&gt;فصل هشتم:    &lt;br /&gt;- چه موقع باید از پلاگین استفاده کرد     &lt;br /&gt;- سرعت در وردپرس و پلاگین ها     &lt;br /&gt;- استفاده از functions.php     &lt;br /&gt;- برنامه ریزی برای یک سایت وردپرسی&lt;/p&gt;  &lt;p dir="rtl"&gt;&amp;#160;&lt;/p&gt;  &lt;p dir="rtl"&gt;&lt;strong&gt;بخش چهارم: وردپرس، فراتر از وبلاگ&lt;/strong&gt;&lt;/p&gt;  &lt;p dir="rtl"&gt;فصل نهم:    &lt;br /&gt;- استفاده از وردپرس به عنوان CMS     &lt;br /&gt;- موارد مهم و قابل توجه     &lt;br /&gt;- Static Pages &amp;amp; News Content     &lt;br /&gt;- استفاده مناسب از Widget ها     &lt;br /&gt;- مدیریت Menu     &lt;br /&gt;- استفاده از مطالب غیر وردپرسی&lt;/p&gt;  &lt;p dir="rtl"&gt;فصل دهم:    &lt;br /&gt;- استفاده های به خصوص از وردپرس     &lt;br /&gt;- سایت کاریابی     &lt;br /&gt;- سایت FAQ     &lt;br /&gt;- استفاده از E-Commerce در وردپرس     &lt;br /&gt;- سایت شخصی     &lt;br /&gt;- سایت Link Directory     &lt;br /&gt;- گالری     &lt;br /&gt;- هر چه که میخواهید، میتوانید با وردپرس بسازید!&lt;/p&gt;  &lt;p dir="rtl"&gt;فصل یازدهم:    &lt;br /&gt;- پلاگین های مهم و ضروری برای وردپرس     &lt;br /&gt;- Content Focused     &lt;br /&gt;- Media     &lt;br /&gt;- Admin     &lt;br /&gt;- Comment Management     &lt;br /&gt;- Social Network     &lt;br /&gt;- Subscription     &lt;br /&gt;- Mobile     &lt;br /&gt;- SEO     &lt;br /&gt;- Code &amp;amp; Output&lt;/p&gt;  &lt;p dir="rtl"&gt;&amp;#160;&lt;/p&gt;  &lt;p dir="rtl"&gt;&lt;strong&gt;بخش پنجم: جعبه ابزار وردپرس (مجموعه ای از نکات)&lt;/strong&gt;&lt;/p&gt;  &lt;p dir="rtl"&gt;فصل دوازدهم:    &lt;br /&gt;- نکات ریز در طراحی     &lt;br /&gt;- Tags     &lt;br /&gt;- Menu     &lt;br /&gt;- Ads     &lt;br /&gt;- 404     &lt;br /&gt;- Javascript&lt;/p&gt;  &lt;p dir="rtl"&gt;فصل سیزدهم:    &lt;br /&gt;- قابلیت های بیشتر     &lt;br /&gt;- Tabbed Box     &lt;br /&gt;- RSS     &lt;br /&gt;- Email     &lt;br /&gt;- Login     &lt;br /&gt;- Print&lt;/p&gt;  &lt;p dir="rtl"&gt;فصل چهاردهم:    &lt;br /&gt;- کار با تصاویر در وردپرس     &lt;br /&gt;- گالری     &lt;br /&gt;- استایلها     &lt;br /&gt;- مثال برای یک سرویس image sharing&lt;/p&gt;  &lt;p dir="rtl"&gt;فصل پانزدهم:    &lt;br /&gt;- Social web     &lt;br /&gt;- توییتر     &lt;br /&gt;- life stream     &lt;br /&gt;- ارسال به شبکه های اجتماعی     &lt;br /&gt;- کار با comments&lt;/p&gt;  &lt;p dir="rtl"&gt;با توجه به محدود بودن تعداد این کتاب برای فروش، به درخواست ها به ترتیب دریافت اونها رسیدگی میشه. بنابراین اگر قصد خرید دارید همین الان سفارش دهید و این کتاب را توسط پست در مدت حداکثر 48 ساعت دریافت کنید. &lt;a title="وبلاگ جعبه ابزار" href="http://mytoolbox.ir/blog" target="_blank"&gt;وبلاگ جعبه ابزار&lt;/a&gt; نمایندگی فروش محصولات &lt;a title="مجله اسمشینگ" href="http://www.smashingmagazine.com/" rel="nofollow" target="_blank"&gt;مجله اسمشینگ&lt;/a&gt; را دارد بنابراین با سفارش از ما، منصفانه ترین قیمت خرید را خواهید داشت.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/mytoolbox/~4/tj5etmtJmjY" height="1" width="1"/&gt;</description>
      <link>http://mytoolbox.ir/blog/post/Smashing-WordPress.aspx</link>
      <author>me</author>
      <comments>http://mytoolbox.ir/blog/post/Smashing-WordPress.aspx#comment</comments>
      <guid>http://mytoolbox.ir/blog/post.aspx?id=3e438998-acb2-47e8-8716-f6ba755e8678</guid>
      <pubDate>Sat, 04 Sep 2010 11:31:58 +0400</pubDate>
      <category>Books</category>
      <dc:publisher>me</dc:publisher>
      <pingback:server>http://mytoolbox.ir/blog/pingback.axd</pingback:server>
      <pingback:target>http://mytoolbox.ir/blog/post.aspx?id=3e438998-acb2-47e8-8716-f6ba755e8678</pingback:target>
      <slash:comments>32</slash:comments>
      <trackback:ping>http://mytoolbox.ir/blog/trackback.axd?id=3e438998-acb2-47e8-8716-f6ba755e8678</trackback:ping>
      <wfw:comment>http://mytoolbox.ir/blog/post/Smashing-WordPress.aspx#comment</wfw:comment>
      <wfw:commentRss>http://mytoolbox.ir/blog/syndication.axd?post=3e438998-acb2-47e8-8716-f6ba755e8678</wfw:commentRss>
    </item>
    <item>
      <title>بانکداری الکترونیکی: رقابت یا رفاقت</title>
      <description>&lt;h3 dir="rtl"&gt;سکانس اول&lt;/h3&gt;  &lt;p dir="rtl"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; margin: 0px 10px 10px 0px; display: inline; border-top: 0px; border-right: 0px" title="بانکداری الکترونیکی" border="0" alt="بانکداری الکترونیکی" align="left" src="http://mytoolbox.ir/blog/image.axd?picture=POSMagnetik.jpg" width="250" height="201" /&gt; مکان: یک اداره دولتی     &lt;br /&gt;زمان: ساعت 9 صبح&lt;/p&gt;  &lt;p dir="rtl"&gt;تقریبا 4 ساعت و نیم طول کشید تا بعد از یک عالم کاغذ بازی های بی معنی و بالا پایین رفتن 6 طبقه به صورت مداوم، یک قبضی به من داده شد تا پولی را برای آنها واریز کنم. تازه فهمیدم که چقدر خوش خیال بودم که فکر میکردم اینجا واحد حسابداریی دارد که دستگاه کارت خوان هم داره و میتونم همینجا پول رو واریز کنم. بنابراین پیش به سوی بانک ملی.&lt;/p&gt;  &lt;p dir="rtl"&gt; &lt;/p&gt;  &lt;h3 dir="rtl"&gt;سکانس دوم&lt;/h3&gt;  &lt;p dir="rtl"&gt;مکان: بانک ملی    &lt;br /&gt;زمان: ساعت 1:30 ظهر&lt;/p&gt;  &lt;p dir="rtl"&gt;مثل یک شهروند خوب و شیک، رفتم به سمت دستگاه نوبت دهی بانک و دکمه نوبت رو فشار دادم. اتفاقی نیوفتاد. یه بار دیگه، جوابی نداد. احساس کردم من رو یه طوری دارن نگاه میکنن همه. دقت که کردم دیدم سیستم کار نمیکنه و باید رفت و توی صف هفت هشت نفره منتظر موند. تو این فاصله میشد فیش واریزی رو پر کرد و من هم این کار رو انجام دادم تا وقتی نوبتم میرسه سریع کارم انجام شه و کسانی که تو صف هستند معطلِ من نمونند.&lt;/p&gt;  &lt;p dir="rtl"&gt;تا داشت نوبت من میشد از توی کیفم کارت صادرات رو درآوردم تا آماده شم. چیزی که تو ذهنم بود این بود که با اون دستگاه کارت خوانی که جلوی کارمند بانک بود، و با توجه به متصل بودن بانکها از طریق شبکه شتاب، میتونم با کارت بانک صادراتم پول رو برداشت کنم و به این حساب در بانک ملی واریز کنم. اما آقایی که اون طرف پیشخون بود نظر دیگه ای داشت.&lt;/p&gt;  &lt;p dir="rtl"&gt;آقا این دستگاه فقط برای بانک ملی هست و نمیشه بقیه رو خوند که.. گفتم که مگه همه به هم وصل نیست؟ با هم تکرار کرداین دستگاه فقط برای بانک خودمون هست. گفتم چی کار کنم؟ گفت برو دم در از خودپرداز پول نقد بگیر، بیار اینجا نقد رو، برات واریز کنم. &lt;/p&gt;  &lt;p dir="rtl"&gt;من هم به صورتی کاملا متعجب و البته تا حدی عصبانی به سمت خود پرداز بیرون بانک رفتم تا پول نقد بگیرم. تو همین فاصله کوتاه به این فکر بودم که آیا باید برای اینکه از خدمات بانکداری الکترونیکی برخوردار باشم باید تمام در تمام بانکها حسب و کارت بانکی داشته باشم؟ &lt;/p&gt;  &lt;p dir="rtl"&gt;به خودپرداز که رسیدم حدود 10 نفری رو در صف دیدم. گرم بود و من هم خسته از پله نوردی. نوبت من که رسید کارت صادرات رو به خودپرداز دادم و رمز زدم و برداشت وجه کردم و حدود 1 دقیقه با پیغام منتظر بمانید مواجه شدم و در نهایت چیزی نصیبم نشد جز پیغامی که به من گفت امکان اتصال نیست. با امید به اینکه این خودپرداز هم مثل دستگاه کارت خوان تو بانک، فقط مختص همین بانک نیست، کارت سامان رو هم گفتم یه امتحانی بکنم. نتیجه همون بود.&lt;/p&gt;  &lt;p dir="rtl"&gt;برگشتم به داخل بانک و گفتم که خودپرداز بهم پول نداد و یک راه حل رویای در اختیار من گذاشته شد. &amp;quot;برو بانک های دیگه رو امتحان کن.&amp;quot; پرسیدم صادرات کجاست؟ گفتند یه دونه کنار میدون هست. (میدون تا اینجا که من هستم 15 دقیقه پیاده راه داره!) دوباره پرسیدم بانک سامان چی؟ بعد از مدتی ساکت موندنِایشون انگار که این اسم رو تازه شنیدند، گفتند این طرفا فکر نکنم این بانک رو گیر بیاری.&lt;/p&gt;  &lt;p dir="rtl"&gt;&amp;#160;&lt;/p&gt;  &lt;h3 dir="rtl"&gt;سکانس سوم&lt;/h3&gt;  &lt;p dir="rtl"&gt;مکان: نامعلوم، متغیر، در جستجو    &lt;br /&gt;زمان: ساعت 2:10 ظهر&lt;/p&gt;  &lt;p dir="rtl"&gt;&lt;img style="border-right-width: 0px; margin: 0px 10px 10px 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="نامعلوم، متغیر، در جستجو" border="0" alt="نامعلوم، متغیر، در جستجو" align="left" src="http://mytoolbox.ir/blog/image.axd?picture=search-clipart.jpg" width="200" height="168" /&gt; خیلی عجیب بود برام که دو تا بانک ملی در فاصله 2 کوچه از هم رو دیدم. اما فایده ای نداشت. دومی هم به من پولی نداد. تابلوی صادرات رو از دور میدیدم و سعی میکردم با سریعتر راه رفتن زودتر بهش برسم. منتظر موندم تو صف تا نوبتم بشه. مبلغ رو 400 هزار تومان اتنخاب کردم. چون باید حدود 380 پول واریز میکردم. پیغام داد مبلغ زیاد هست. 350؟ زیاد هست. 300؟ اوه بالاخره دارم صدای شمرده شدن اسکناس رو میشنوم. خوشحالیم زیاد طول نکشید وقتی دیدم همه رو 2000 تومنی به من داد.&lt;/p&gt;  &lt;p dir="rtl"&gt;چاره‌ای نداشتم جز اینکه به سمت بانک دیگه‌ای حرکت کنم تا بقیه پول رو بگیرم. با وجود 150 عدد اسکناس 2000 تومانی، کیفم رو هم به زور بسته بودم و با توجه به اینکه سارقین در کمین هستند، محکم گرفته بودمش. به بانک های مختلفی سر زدم. فایده ای نداشت. اما بالاخره یه صادرات دیگه پیدا کردم. خودپرداز شیکی داشت و من این مدلی ندیده بودم. منو ها دیزانشون فرق کرده بود و یک صدای راهنما هم پخش میشد از دستگاه! &lt;/p&gt;  &lt;p dir="rtl"&gt;یه پیغامی بهم داد تو این مایه ها: &amp;quot;شما سقف روزانه رو برداشت کردید و اجازه برداشت بیشتر ندارید.&amp;quot; هوم.. سقف برداشت از خودپرداز 300 هزار تومن هست؟ نمیدونستم.. &lt;/p&gt;  &lt;p dir="rtl"&gt;دو حالت پیش میاد. یا این قانون هست که خوب فکر نمیکنم این قانون با توجه به شرایط من توجیهی داشته باشه. برای اینکه پول رو در بانک دیگه ای واریز کنم، مجبور به گرفتن وجه نقد از بانک دیگه ای هستم. بانک دوم هم به من بیشتر از یه مقداری در روز نمیده. بنابراین؟&lt;/p&gt;  &lt;p dir="rtl"&gt;حالت دوم این هست که این محدودیت رو بانک برای من تعیین کرده باشه. در این صورت من که یادم نمیاد چنین فرمی رو پر کرده باشم و امضا کرده باشم یا جایی از من خواسته شده باشه که برای خودم سقف برداشت مهین کنم یا حداقل اینکه مسوول بانک موقع تحویل کارت به من این حرف رو به من زده باشه. من که یادم نمیاد!&lt;/p&gt;  &lt;p dir="rtl"&gt;با نا امیدی تمام گفتم که یه شانس دوباره به این کارت سامان بدم و با کمال تعجب، خودپردازِ شیک به من پول داد و 5000 تومانی هم داد. دستش درد نکنه.&lt;/p&gt;  &lt;p dir="rtl"&gt;&amp;#160;&lt;/p&gt;  &lt;h3 dir="rtl"&gt;سکانس چهارم&lt;/h3&gt;  &lt;p dir="rtl"&gt;&lt;img style="border-right-width: 0px; margin: 0px 10px 10px 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="دوان دوان به سمت بانک و اداره " border="0" alt="دوان دوان به سمت بانک و اداره " align="left" src="http://mytoolbox.ir/blog/image.axd?picture=tired_runner-758794.jpg" width="200" height="163" /&gt; مکان: دوان دوان به سمت بانک و اداره     &lt;br /&gt;زمان: ساعت 3:20 ظهر&lt;/p&gt;  &lt;p dir="rtl"&gt;دیدم رو درش زده ساعت کار تا 3:30 و این خیلی خوب بود چون میتونستم فیش رو واریز کنم. بعد از انجام این کار در همون حالت خستگی با حداکثر سرعتی که میتونستم به اداره ای رسیدم که باید این رسید بانکی رو تحویل میدادم. نگهبان اجازه ورود رو به من نداد و گفت تعطیل شده. فردا بیا. من موندم و یک رسید بانکی و فکر اینکه فردا دوباره باید از کار بزنم و این همه راه تا اینجا بیام.&lt;/p&gt;  &lt;p dir="rtl"&gt;&amp;#160;&lt;/p&gt;  &lt;h3 dir="rtl"&gt;نتیجه گیری و چند مطلب&lt;/h3&gt;  &lt;p dir="rtl"&gt;از حق نگذریم، بانکداری الکترونیکی در ایران پیشرفت خوبی داشته و همونطور که با توجه به فرهنگ موجود در جامعه انتظار میرفت، خیلی آروم هم داره پیش میره. اما شاید در این میان، همچنان زیرساخت ها نیاز به تقویت بیشتری داشته باشند. هر چند رقابت میان بانک ها برای خدمات بهتر و در نتیجه جذب مشتری بیشتر، همیشه وجود داشته و خواهد داشت، اما این رقابت باید به نفع منِ مشتری باشد.&lt;/p&gt;  &lt;p dir="rtl"&gt;سیستم یکپارچه بانکی باید در جهت رفاقت بانکها باشه. بسترسازی مناسب و اتصال درست و بی نقص تمامی بانکهای کشور به یک شبکه کاملا قابل اطمینان و قابل اتکاء در نهایت تماما به نفع مردم، ادارات و شرکتها خواهد بود و بالاخره بالا رفتن راندمان کلی در جامعه (البته به نوبه خود)&amp;#160; را نتیجه خواهد داد. این برای من اصلا قابل قبول نیست که از طریق اینترنت بانک صادرات من قابلیت این رو ندارم که به شماره کارتی پول واریز کنم و فعلا تنها امکان واریز پول از طریق اینترنت بانک صادرات، پر کردن فرم ساتنا به صورت آنلاین بوده که بعد از آن تا ساعاتی بعد این فرم رو یک اپراتور به صورت دستی برای شما انتقال دهد. من اسم این رو خدمات الکترونیکی نمیگذارم.&lt;/p&gt;  &lt;p dir="rtl"&gt;&lt;img style="border-right-width: 0px; margin: 10px auto; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="samanbank" border="0" alt="samanbank" src="http://mytoolbox.ir/blog/image.axd?picture=samanbank.png" width="504" height="319" /&gt;&lt;/p&gt;  &lt;p dir="rtl"&gt;در بین بانکهای موجود، هر چند بانک سامان باز هم برای بهتر شدن جا داره (هم از نظر طراحی و هم از نظر یکپارچه تر شدن خدمات اینترنی)، اما میتونم بگم تنها بانکی هست که &lt;strong&gt;از نظر من&lt;/strong&gt;، به معنای واقعی داره خدمات بانکداری اینترنتی رو برای مردم فراهم میکنه.&lt;/p&gt;  &lt;p dir="rtl"&gt;&amp;#160;&lt;/p&gt;  &lt;p dir="rtl"&gt;مطلب بعدی در مورد مسایل مالی در سازمان هاست که شاید ترس از ایجاد فساد مالی در اداره ها، یکی از بزرگترین دلایلی باشه که ادارات دولتی کارهای بانکی رو به سمت بانک ها میفرستند و خودشون رو درگیر گرفتن پول از مردم نمیکنند. شاید هم مسایل حقوقی و قانونی در این مساله وجود داره که از سواد من خارج هست. من از دید یک شهروند به این قضیه نگاه میکنم و میتونم بگم اگر به هر صورتی بشه هم مسایل مالی و هم اداری رو در همون سازمان و اداره مربوطه حل کرد، مستقیم یا غیر مستقیم میشه در وضعیت ترافیک، آلودگی، اعصاب مردم و تلف شدن وقت، بهبود و پیشرفت مثبت ایجاد کرد. نمونه موفقی که در این زمینه میشه عنوان کرد، پلیس +10 هست که هرچند همچنان برخی فیش های بانکی رو باید به بانک رفت، اما نسبت به گذشته سیستم خیلی بهتر و سریعتری ایجاد شد. شما برای گرفتن پاسپورت نیازی به رفتن به شهرآرا دیگه ندارید. کافیه یه پلیس +10 در محل خودتون پیدا کنید.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/mytoolbox/~4/WBT0-MAUmtk" height="1" width="1"/&gt;</description>
      <link>http://mytoolbox.ir/blog/post/connected-ebanking.aspx</link>
      <author>me</author>
      <comments>http://mytoolbox.ir/blog/post/connected-ebanking.aspx#comment</comments>
      <guid>http://mytoolbox.ir/blog/post.aspx?id=d9a7a7d4-84e0-43a8-b71f-ab67a10eea13</guid>
      <pubDate>Tue, 31 Aug 2010 14:50:30 +0400</pubDate>
      <category>Off Topic</category>
      <dc:publisher>me</dc:publisher>
      <pingback:server>http://mytoolbox.ir/blog/pingback.axd</pingback:server>
      <pingback:target>http://mytoolbox.ir/blog/post.aspx?id=d9a7a7d4-84e0-43a8-b71f-ab67a10eea13</pingback:target>
      <slash:comments>14</slash:comments>
      <trackback:ping>http://mytoolbox.ir/blog/trackback.axd?id=d9a7a7d4-84e0-43a8-b71f-ab67a10eea13</trackback:ping>
      <wfw:comment>http://mytoolbox.ir/blog/post/connected-ebanking.aspx#comment</wfw:comment>
      <wfw:commentRss>http://mytoolbox.ir/blog/syndication.axd?post=d9a7a7d4-84e0-43a8-b71f-ab67a10eea13</wfw:commentRss>
    </item>
    <item>
      <title>Donut Caching &amp; Substitution Control</title>
      <description>&lt;h3 dir="rtl"&gt;آپدیت بخشی از کل یک صفحۀ کش شده در دات نت&lt;/h3&gt;  &lt;p dir="rtl" align="right"&gt;&lt;img style="border-right-width: 0px; margin: 0px 0px 10px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Donut Caching" border="0" alt="Donut Caching" align="left" src="http://mytoolbox.ir/blog/image.axd?picture=homero-simpson-wallpaper-homer-1024.jpg" width="210" height="219" /&gt; هر زمانی که یک صفحه داینامبک از وب سرور درخواست میشود، بخشهایی از سرور وارد کار شده و این صفحه را برای ارسال به سمت سیستم بازدیدکننده، آماده میکنند. اگر در زمانی کوتاه، درخواست‌های زیادی برای این صفحه به سرور ارسال بشه (مثلا در یک وبسایت پربازدید و با ترافیک بالا) سرور دچار لود زیادی میسه، چون یک صفحه رو چندبن بار در دقیقه و حتی ثانیه باید پردازش کنه و به سمت درخواست کننده‌ها بفرسته و نتیجه کند شدن وب خواهد بود. برای برداشتن این بار از روی سرور و بهبود سرعت پاسخ دهی سرور و همچنین بهتر لود شدن صفحات وب، استفاده از تکنولوژیهای Caching بسیار مهم هست.&lt;/p&gt;  &lt;p dir="rtl"&gt;کش کردن یک صفحه وب به مفهوم ذخیره کردن این صفحه بر روی حافظه سرور هست بنابراین یک بار در زمان مشخص مثلا 1 دقیقه این صفحه توسط سرور پردازش شده و به طور پیش فرض در حافظه سرور (میتوان روی هارد و یا حتی دیتابیس هم ذخیره کرد) باقی می‌ماند و بعد از این تا 1 دقیقه هر درخواستی که برای اون صفحه بشه دیگه سرور درگیر پردازش نمیشه و صفحه آماده از حافظه به کلاینت فرستاده میشه. بعد از یک دقیقه دوباره با اولین درخواست، این صفحه ایجاد شده و دوباره همین روند ادامه پیده میکنه.&lt;/p&gt;  &lt;p dir="rtl"&gt;مشکلی که ممکن هست پیش بیاد اینه که در صفحه‌ای که Cache کردیم، قسمتی وجود داره که نیاز داریم همیشه به روز باشه و در هر درخواستی که از این صفحه به سرور فرستاده میشه، قسمتی از این صفحه بدون کش شدن، به روز رسانی بشه. مثلا در قسمتی از صفحه قرار هست تغییرات قیمت رو در شرایطی داشته باشیم که این قیمت ها مثلا هر یک ثانیه تغییر میکنند بنابراین هر بار که صفحه درخواست میشه تقریبا میشه گفت که قیمتهای جدیدی برای نشون دادن هست.    &lt;br /&gt;حالا اگر تمام صفحه کش شده باشه به مدت 5 دقیقه و در این زمان بازدید کننده ای به سایت بیاد و یا این صفحه را refresh کنه، همون قیمت های ذخیره شده رو میبینه و آپدیت های جدید رو از دست میده تا زمانی که دوره کش (Cache Duration) به پایان برسه و صفحه دوباره کش بشه. در این حالت نیاز داریم که این یک قسمت در سرور کش نشود و هر درخواستی که به این صفحه میرسه، تمام صفحه از کش خونده بشه به جر این بخشی که تعیین شده و قرار هست قیمت ها رو هر دفعه از جایی بخونه و هربار کد مربوط به این قسمت باید دوباره پردازش بشه.     &lt;br /&gt;در واقع دلیل اینکه به این روش کش کردن، دونات گفته میشه همین هست که مانند دونات که در وسط اون قسمتی جدا و خالی هست، در وب هم میخواهیم قسمتی از صفحه رو جدا کرده و اون رو طوری که میخواهیم نشان دهیم جدای از بقیه صفحه که بدون پردازش، از کش سرور خوانده می‌شود.&lt;/p&gt;  &lt;p dir="rtl"&gt;برای این کار در ASP.Net باید از کنترل Substitution استفاده کنید. این کنترل نام یک تابع را از شما میگیرد که شما باید این تابع را در کد خودتون تعریف کرده باشید و 3 نکته زیر حتما رعایت شده باشند:&lt;/p&gt;  &lt;p dir="rtl"&gt;- این تابع باید به صورت Static در سی شارپ یا Shared در وی بی دات نت باشد.    &lt;br /&gt;- این تابع باید یک مقدار String برگشت دهد.     &lt;br /&gt;- این تابع باید httpcontext را به عنوان ورودی داشته باشد.&lt;/p&gt;  &lt;p dir="rtl"&gt;در مثال زیر، زمان کش شدن برای کل صفحه 60 ثانیه تنظیم شده. بنابراین لیبلی که قرار هست در هر page load زمان رو نشون بده، تنها هر 60 ثانیه زمان جدید رو نشون میده و در طول یک دقیقه، ساعتی رو نشون میده که بار اول اون زمان در سرور کش شده بود. در کنار این label یک کنترل sabstitution وجود داره که توسط تابع GetTime زمان رو در هر بار Refresh بدون توجه به کش بودن، در صفحه نشون میده.&lt;/p&gt;  &lt;div class="coder"&gt;   &lt;p&gt;&amp;lt;%@ Page Language=&amp;quot;VB&amp;quot; %&amp;gt;      &lt;br /&gt;&lt;span style="color: #ff0000"&gt;&amp;lt;%@ OutputCache Duration=&amp;quot;60&amp;quot; VaryByParam=&amp;quot;None&amp;quot; %&amp;gt;&lt;/span&gt;       &lt;br /&gt;&amp;lt;script runat=&amp;quot;server&amp;quot;&amp;gt;       &lt;br /&gt;&lt;span style="color: #000000"&gt;&amp;#160;&amp;#160;&amp;#160; Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)        &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; cachedlbl.Text = Now.ToLongTimeString()         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; End Sub         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: #ff0000"&gt;Shared Function GetTime(ByVal context As HttpContext) As String        &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Return Now.ToLongTimeString()         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; End Function         &lt;br /&gt;&lt;/span&gt;&amp;lt;/script&amp;gt;       &lt;br /&gt;&amp;lt;html xmlns=&amp;quot;http://www.w3.org/1999/xhtml&amp;quot;&amp;gt;       &lt;br /&gt;&amp;lt;head runat=&amp;quot;server&amp;quot;&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;title&amp;gt;Donut Caching&amp;lt;/title&amp;gt;       &lt;br /&gt;&amp;lt;/head&amp;gt;       &lt;br /&gt;&amp;lt;body&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;form id=&amp;quot;form1&amp;quot; runat=&amp;quot;server&amp;quot;&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;p&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Cached:&amp;lt;br /&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;asp:Label runat=&amp;quot;server&amp;quot; ID=&amp;quot;cachedlbl&amp;quot;&amp;gt;&amp;lt;/asp:Label&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/p&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;p&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Not-Cached:&amp;lt;br /&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;asp:Substitution runat=&amp;quot;server&amp;quot; ID=&amp;quot;subcontrol&amp;quot;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #ff0000"&gt;MethodName=&amp;quot;GetTime&amp;quot;&lt;/span&gt; /&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/p&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/form&amp;gt;       &lt;br /&gt;&amp;lt;/body&amp;gt;       &lt;br /&gt;&amp;lt;/html&amp;gt;&lt;/p&gt; &lt;/div&gt;  &lt;p&gt;محدودیتی که sunstitution control داره اینه که شما فقط میتونید خروجی متنی داشته باشید یعنی html و جاوااسکریپت رو جایگزین کنید در صفحه و امکان استفاده از کنترل‌های ASP.Net نیست. مثلا اگر قرار هست قسمتی که LoginView وجود داره رو از کل صفحه کش شده جدا کنید، باید با کد نویسی این کار رو انجام بدید و به نسبت اینکه بازدیدکننده وارد سایت شده یا نه، متن و html مورد نظر رو در تابع پاس داده شده به&amp;#160; substitutoin خروجی بگیرید. شما دیگه امکان استفاده از تگ &amp;lt;asp:loginview runat=server&amp;gt; رو ندارید.&lt;/p&gt;  &lt;div dir="rtl" class="cr"&gt;این مطلب به صورت اختصاصی برای &lt;a title="وبلاگ جعبه ابزار" href="http://mytoolbox.ir/blog" target="_blank"&gt;وبلاگ جعبه ابزار&lt;/a&gt; نوشته شده است. استفاده از این مطلب به شرط ذکر منبع، آزاد می‌باشد.&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/mytoolbox/~4/utxedzyT_ss" height="1" width="1"/&gt;</description>
      <link>http://mytoolbox.ir/blog/post/Dunot-Caching-Substitution-Control.aspx</link>
      <author>me</author>
      <comments>http://mytoolbox.ir/blog/post/Dunot-Caching-Substitution-Control.aspx#comment</comments>
      <guid>http://mytoolbox.ir/blog/post.aspx?id=c41f55ed-53ab-43e5-b4e1-d05c6e1eb4f2</guid>
      <pubDate>Mon, 05 Jul 2010 12:54:00 +0400</pubDate>
      <category>ASP.Net</category>
      <dc:publisher>me</dc:publisher>
      <pingback:server>http://mytoolbox.ir/blog/pingback.axd</pingback:server>
      <pingback:target>http://mytoolbox.ir/blog/post.aspx?id=c41f55ed-53ab-43e5-b4e1-d05c6e1eb4f2</pingback:target>
      <slash:comments>12</slash:comments>
      <trackback:ping>http://mytoolbox.ir/blog/trackback.axd?id=c41f55ed-53ab-43e5-b4e1-d05c6e1eb4f2</trackback:ping>
      <wfw:comment>http://mytoolbox.ir/blog/post/Dunot-Caching-Substitution-Control.aspx#comment</wfw:comment>
      <wfw:commentRss>http://mytoolbox.ir/blog/syndication.axd?post=c41f55ed-53ab-43e5-b4e1-d05c6e1eb4f2</wfw:commentRss>
    </item>
    <item>
      <title>Microsoft .Net Installation Compatibility Mode Error</title>
      <description>&lt;h3&gt;خطای ناسازگاری ورژن ویندوز در نصب دات نت&lt;/h3&gt;  &lt;p&gt;&lt;img style="border-right-width: 0px; margin: 0px 10px 0px 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="خطای ناسازگاری ورژن ویندوز در نصب دات نت" border="0" alt="خطای ناسازگاری ورژن ویندوز در نصب دات نت" align="left" src="http://mytoolbox.ir/blog/image.axd?picture=wind.png" width="272" height="144" /&gt; مدتی هست که نسخه نهایی دات نت 4 و ویژوال استودیو 2010 از طرف مایکروسافت ارائه شده. دات نت 4 رو میتونید از &lt;a title="Microsoft .NET Framework 4 (Standalone Installer)" href="http://www.microsoft.com/downloads/details.aspx?displaylang=en&amp;amp;FamilyID=0a391abd-25c1-4fc0-919f-b21f31ab88b7" rel="nofollow" target="_blank"&gt;این آدرس&lt;/a&gt; دانلود کرده و نصب کنید و برای ویژوال استودیو میتونید از نسخه Express که رایگان هست در &lt;a title="Visual Studio 2010 Express Edition" href="http://www.microsoft.com/express/Web/" rel="nofollow" target="_blank"&gt;این آدرس&lt;/a&gt; استفاده کنید. البته برای دانلود راحت تر این نرم افزارها بهتر هست که از &lt;a title="مایکروسافت وب پلتفرم به زبان ساده" href="http://mytoolbox.ir/blog/post/Microsoft-web.aspx" rel="tag" target="_blank"&gt;مایکروسافت وب پلتفرم&lt;/a&gt; استفاده کنید.&lt;/p&gt;  &lt;p&gt;در هنگام نصب دات نت و یا ویژوال استودیو ممکن هست به یک پیغام خطا مثل شکل زیر برسید. این خطا به شما این رو میگه که ستاپ برنامه در حالت سازگاری با ویندوزهای قبلی داره اجرا میشه (Compatibility Mode) و دات نت امکان این گونه اجرا شدن رو نداره. شاید اولین چیزی که به فکرتون برسه، رایت کلیک کردن روی فایل ستاپ و رفتن به proprties قسمت Compatibilities باشه. اما شما زیاد خوش شانس نخواهید بود، چون همه چیز در حالت نرمال قرار داره و گزینه Run this program in compatibility mode هیچ تیکی نخورده. پس اشکال از کجاست؟ بعد از چند هفته پیگیری این مطلب تونستم راه حل اون رو پیدا کنم.&lt;/p&gt;  &lt;p align="center"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="خطای ناسازگاری ورژن ویندوز در نصب دات نت" border="0" alt="خطای ناسازگاری ورژن ویندوز در نصب دات نت" src="http://mytoolbox.ir/blog/image.axd?picture=error.png" width="504" height="466" /&gt; &lt;/p&gt;  &lt;p align="right"&gt;&amp;#160;&lt;/p&gt;  &lt;p align="right"&gt;برای رفع این اشکال باید به سمت رجیستری در ویندوز برید. روی Start کلیک کرده و بعد از اون گزینه Run رو بزنید. اونجا تایپ کنید &lt;strong&gt;regedit&lt;/strong&gt; و ok را بزنید. برنامه رجیستری ویندوز که باز شد، به ترتیب زیر، جلو بروید:&lt;/p&gt;  &lt;p align="right"&gt;&amp;#160;&lt;/p&gt;  &lt;p dir="ltr" align="left"&gt;HKEY_LOCAL_MACHINE –&amp;gt; SOFTWARE –&amp;gt; Microsoft –&amp;gt; Windows NT –&amp;gt; CurrentVersion –&amp;gt;    &lt;br /&gt;Image File Execution Options –&amp;gt; setup.exe –&amp;gt; &lt;strong&gt;HighVersionLie-{6B64DE21-0F4C-4479-9D6C-0FBCA496BCDC}&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;روی گزینه آخر یعنی HighVersionLie - 6B64DE21-0F4C-4479-9D6C-0FBCA496BCDC رایت کلیک کرده و rename رو انتخاب کنید و اول اون مثلا یه حرف A بگذارید. هر کاری میکنید، طوری باشه که بعدا یادتون باشه اسم اول چی بود! پس همین بهتره که یه چیزی اول اسم اضافه کنید. با تغییر نام این مورد، مشکل شما حل میشه و ستاپ دات نت یا ویژوال استودیو با موفقیت انجام میشه.&lt;/p&gt;  &lt;p align="center"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="خطای ناسازگاری ورژن ویندوز در نصب دات نت" border="0" alt="خطای ناسازگاری ورژن ویندوز در نصب دات نت" src="http://mytoolbox.ir/blog/image.axd?picture=installed.png" width="454" height="429" /&gt; &lt;/p&gt;  &lt;p&gt;بعد از نصب، عبارت تغییر یافته در رجیستری رو به حالت اول برگردونید.&lt;/p&gt;  &lt;div dir="rtl" class="cr"&gt;این مطلب به صورت اختصاصی برای &lt;a title="وبلاگ جعبه ابزار" href="http://mytoolbox.ir/blog" target="_blank"&gt;وبلاگ جعبه ابزار&lt;/a&gt; نوشته شده است. استفاده از این مطلب به شرط ذکر منبع، آزاد می‌باشد. &lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/mytoolbox/~4/XEBAbeWFzw0" height="1" width="1"/&gt;</description>
      <link>http://mytoolbox.ir/blog/post/Microsoft-Net-Installation-Compatibility-Mode-Error.aspx</link>
      <author>me</author>
      <comments>http://mytoolbox.ir/blog/post/Microsoft-Net-Installation-Compatibility-Mode-Error.aspx#comment</comments>
      <guid>http://mytoolbox.ir/blog/post.aspx?id=dac6b374-ec62-43a1-9e92-3d662c10c244</guid>
      <pubDate>Tue, 25 May 2010 13:31:58 +0400</pubDate>
      <category>ASP.Net</category>
      <dc:publisher>me</dc:publisher>
      <pingback:server>http://mytoolbox.ir/blog/pingback.axd</pingback:server>
      <pingback:target>http://mytoolbox.ir/blog/post.aspx?id=dac6b374-ec62-43a1-9e92-3d662c10c244</pingback:target>
      <slash:comments>19</slash:comments>
      <trackback:ping>http://mytoolbox.ir/blog/trackback.axd?id=dac6b374-ec62-43a1-9e92-3d662c10c244</trackback:ping>
      <wfw:comment>http://mytoolbox.ir/blog/post/Microsoft-Net-Installation-Compatibility-Mode-Error.aspx#comment</wfw:comment>
      <wfw:commentRss>http://mytoolbox.ir/blog/syndication.axd?post=dac6b374-ec62-43a1-9e92-3d662c10c244</wfw:commentRss>
    </item>
    <item>
      <title>Google Bookmarks Plugin with jQuery</title>
      <description>&lt;h3&gt;افزونه وب گوگل بوکمارک توسط جی کوئری &lt;/h3&gt;  &lt;p dir="rtl" align="justify"&gt;&lt;img style="border-right-width: 0px; margin: 0px 10px 10px 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="listbookmark" border="0" alt="listbookmark" align="left" src="http://mytoolbox.ir/blog/image.axd?picture=listbookmark.png" width="244" height="156" /&gt; گوگل در سرویس بوکمارک خودش، اخیرا تغییراتی داده که مورد استقبال کاربران اینترنت به خصوص طرفداران سرویس های گوگل، قرار گرفته و برخی حتی از Delicious و سرویس های مشابه دیگر به سرویس بوکمارک گوگل نقل مکان پیدا کردند.&lt;/p&gt;  &lt;p dir="rtl" align="justify"&gt;هرچند از نظر شخصی خودم، از این سرویس به اون سرویس پریدن جالب نیست همیشه ولی به هر حال، تست سرویس‌های جدید برای عقب نموندن از دنیای وب تقریبا لازم هست. البته من سرویس Delicious رو فعلا ترجیح میدم، مگر اینکه گوگل بوکمارک امکاناتی رو ارائه بده که بیشتر به دردم بخوره!&lt;/p&gt;  &lt;p dir="rtl" align="justify"&gt;در سرویس گوگل بوکمارک شما میتونید لیست هایی رو به صورت مجزا ایجاد کنید و هر کدوم رو با یک سری از افراد دیگه به اشتراک بگذارید و یا به طور کلی به اون لیست دسترسی عمومی یعنی public بدید و لینک اون لیست رو به دوستانتون بدید تا از بوکمارکهای شما استفاده کنند.&lt;/p&gt;  &lt;p dir="rtl" align="center"&gt;&lt;img style="border-right-width: 0px; margin: 10px 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="googlebookmakrs" border="0" alt="googlebookmakrs" src="http://mytoolbox.ir/blog/image.axd?picture=googlebookmakrs.png" width="504" height="293" /&gt; &lt;/p&gt;  &lt;p dir="rtl" align="justify"&gt;جالب اینجاست که گوگل فعلا هیچ سرویسی رو برای استفاده از یک لیست پابلیک، در خارج از گوگل، ارائه نداده! یه چیزی مثل RSS یا یه API که ابن کارو انجام بده. شاید در آینده این کار رو بکنه ولی تا این تاریخ که این مطلب نوشته میشه، چنین چیزی وجود نداره.&lt;/p&gt;  &lt;p dir="rtl" align="justify"&gt;تو قسمتهای مختلف گوگل بوکمارک که چرخی میزدم، متوجه شدم گوگل خودش داره از یه API برای بوکمارک استفاده میکنه؛ پس منم دست به کار شدم و گفتم اگه گوگل بتونه، چرا ما نتونیم؟ :دی پلاگینی رو با jQuery نوشتم که بتونید لیست پابلیک خودتون رو در وبلاگ خودتون قرار بدید. شاید براتون به دردبخور باشه. در ساخت این پلاگین برای اینکه بتونم فرمت jsonp داشته باشم، از Yahoo Pipes استفاده کردم. (&lt;a title="در مورد jsonp بیشتر بخوانید." href="http://mytoolbox.ir/blog/post/Cross-Domain-Javascript.aspx" target="_blank"&gt;در مورد jsonp بیشتر بخوانید.&lt;/a&gt;)&lt;/p&gt;  &lt;p dir="rtl" align="justify"&gt;برای شروع کار، لازم به ذکر نیست اما کتابخونه اصلی جی‌کوئری فراموش نشه. بعد از اون نیاز دارید لینک کامل لیست خودتون رو که میخواید در وبلاگ داشته باشید، در کد جاوا اسکریپت در متغیر &lt;strong&gt;publiclisturl &lt;/strong&gt;وارد کنید. دقت کنید این لیست باید public باشد.&lt;/p&gt;  &lt;p dir="rtl" align="justify"&gt;مثال زیر کد کامل رو برای خوندن بوکمارک ها نشون میده. در این مثال از Google CDN برای کتابخونه اصلی jQuery استفاده شده. (&lt;a title="در مورد CDN بیشتر بخوانید." href="http://mytoolbox.ir/blog/post/Use-jQuery-CDN-from-Microsoft-or-Google.aspx" target="_blank"&gt;در مورد CDN بیشتر بخوانید.&lt;/a&gt;)&lt;/p&gt;  &lt;div class="coder"&gt;   &lt;p&gt;&amp;lt;!DOCTYPE html PUBLIC &amp;quot;-//W3C//DTD XHTML 1.0 Transitional//EN&amp;quot; &amp;quot;&lt;a href="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&amp;quot;"&gt;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&amp;quot;&lt;/a&gt;&amp;gt;       &lt;br /&gt;&amp;lt;html xmlns=&amp;quot;&lt;a href="http://www.w3.org/1999/xhtml&amp;quot;"&gt;http://www.w3.org/1999/xhtml&amp;quot;&lt;/a&gt;&amp;gt; &lt;/p&gt;    &lt;p&gt;&amp;lt;head&amp;gt;      &lt;br /&gt;&amp;lt;meta content=&amp;quot;text/html; charset=utf-8&amp;quot; http-equiv=&amp;quot;Content-Type&amp;quot; /&amp;gt;       &lt;br /&gt;&amp;lt;title&amp;gt;Google Bookmarks&amp;lt;/title&amp;gt; &lt;/p&gt;    &lt;p&gt;&amp;lt;script src=&amp;quot;&lt;a href="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js&amp;quot;"&gt;http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js&amp;quot;&lt;/a&gt; type=&amp;quot;text/javascript&amp;quot;&amp;gt;&amp;lt;/script&amp;gt; &lt;/p&gt;    &lt;p&gt;&amp;lt;script src=&amp;quot;jgooglebm.js&amp;quot; type=&amp;quot;text/javascript&amp;quot;&amp;gt;&amp;lt;/script&amp;gt; &lt;/p&gt;    &lt;p&gt;&amp;lt;style type=&amp;quot;text/css&amp;quot;&amp;gt;      &lt;br /&gt;#bookmarks {       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; direction:rtl;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; width:280px;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; margin:0 auto;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; text-align:right;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; font-family:Tahoma;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; font-size:12px;       &lt;br /&gt;}       &lt;br /&gt;#bookmarks .error {       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; color:red;       &lt;br /&gt;}       &lt;br /&gt;#bookmarks .listname {       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; font-weight:bold;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; margin-bottom:5px;       &lt;br /&gt;}       &lt;br /&gt;#bookmarks .listdesc{       &lt;br /&gt;}       &lt;br /&gt;#bookmarks ul {       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; list-style:none;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; padding-right:10px;       &lt;br /&gt;}       &lt;br /&gt;#bookmarks ul li{       &lt;br /&gt;margin-bottom:5px; &lt;/p&gt;    &lt;p&gt;}      &lt;br /&gt;#bookmarks ul li a{ &lt;/p&gt;    &lt;p&gt;}      &lt;br /&gt;&amp;lt;/style&amp;gt;       &lt;br /&gt;&amp;lt;/head&amp;gt; &lt;/p&gt;    &lt;p&gt;&amp;lt;body&amp;gt;      &lt;br /&gt;&amp;lt;script type=&amp;quot;text/javascript&amp;quot;&amp;gt;       &lt;br /&gt;var publiclisturl = &amp;quot;&lt;a href="http://www.google.com/bookmarks/l#!threadID=GdAVWPWBGuOk%2FBDdge3woQ0Y7Lnvok&amp;quot;;"&gt;http://www.google.com/bookmarks/l#!threadID=GdAVWPWBGuOk%2FBDdge3woQ0Y7Lnvok&amp;quot;;&lt;/a&gt;&lt;/p&gt;    &lt;p&gt;$(function() {      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; $(&amp;quot;#bookmarks&amp;quot;).html(&amp;quot;کمی صبر کنید..&amp;quot;);       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; $.Gbookmarks(publiclisturl, function(data) { &lt;/p&gt;    &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; if (!data) {      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; $(&amp;quot;#bookmarks&amp;quot;).empty();       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; $(&amp;quot;&amp;lt;div/&amp;gt;&amp;quot;).attr(&amp;quot;class&amp;quot;,&amp;quot;error&amp;quot;).append(&amp;quot;خطایی رخ داده است&amp;quot;).appendTo(&amp;quot;#bookmarks&amp;quot;);       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; return false;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; var ownername = data.owner.name;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; var listname = data.title;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; var listdescription = data.description;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; $(&amp;quot;#bookmarks&amp;quot;).empty();       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; $(&amp;quot;&amp;lt;div/&amp;gt;&amp;quot;).attr(&amp;quot;class&amp;quot;,&amp;quot;listname&amp;quot;).append(listname).appendTo(&amp;quot;#bookmarks&amp;quot;);       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; $(&amp;quot;&amp;lt;div/&amp;gt;&amp;quot;).attr(&amp;quot;class&amp;quot;,&amp;quot;listdesc&amp;quot;).append(listdescription).appendTo(&amp;quot;#bookmarks&amp;quot;);       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; $(&amp;quot;&amp;lt;ul/&amp;gt;&amp;quot;).appendTo(&amp;quot;#bookmarks&amp;quot;);       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; $.each(data.threadResults, function(i,item){       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; $(&amp;quot;&amp;lt;li/&amp;gt;&amp;quot;).append(       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; $(&amp;quot;&amp;lt;a/&amp;gt;&amp;quot;).attr(&amp;quot;href&amp;quot;,item.url).append(item.title)       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ).appendTo(&amp;quot;#bookmarks ul&amp;quot;);       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; });       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }); &lt;/p&gt;    &lt;p&gt;});      &lt;br /&gt;&amp;lt;/script&amp;gt; &lt;/p&gt;    &lt;p&gt;&amp;lt;div id=&amp;quot;bookmarks&amp;quot;&amp;gt;&amp;lt;/div&amp;gt; &lt;/p&gt;    &lt;p&gt;&amp;lt;/body&amp;gt; &lt;/p&gt;    &lt;p&gt;&amp;lt;/html&amp;gt;&lt;/p&gt; &lt;/div&gt;  &lt;p dir="rtl" align="justify"&gt;فایل jgooglebm.js پلاگینی هست که توسط خودم نوشته شده و در جی‌کوئری توسط نام Gbookmarks فراخونی میشه و بوکمارکهای گوگل رو خونده و نتایج را در متغیر data به تابعی که در این پلاگین میسازید با فرمت json میفرسته. در کد نوشته شده، مقادیری که نیاز دارید کاملا مشخص شده. شما حتی میتونید بدون هیچ گونه دستکاری در این کد، اون رو کاملا copy paste کرده و فقط استایل های مربوط به اون رو تغییر بدید. برای این مثال، من از یک استایل بسیار ساده استفاده کردم که هدف فقط نشون دادن چگونگی این کار بوده. نتیجه کار به صورت زیر هست:&lt;/p&gt;  &lt;p dir="rtl" align="center"&gt;&amp;#160;&lt;img style="border-right-width: 0px; margin: 10px 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="listbookmarkexample" border="0" alt="listbookmarkexample" src="http://mytoolbox.ir/blog/image.axd?picture=listbookmarkexample.png" width="347" height="309" /&gt; &lt;/p&gt;  &lt;p dir="rtl" align="justify"&gt;شما با copy paste کردن دقیقا همین کد و اجرای اون درسیستم خودتون، میتونید نتیجه رو ببینید. لیست بوکمارک‌هایی که لود میشه به صورت آرمایشی برای همین مثال ساخته شده. تنها کاری که باید انجام بدید دانلود پلاگین جی‌کوئری هست که از آدرس زیر دانلود کنید. روی لینک رایت کلیک کرده و گرینه save target as رو انتخاب کنید. سپس فایل دانلود شده را از حالت زیپ خارج کرده تا به فایل jgooglebm.js برسید. سپس این فایل رو در کنار فایل html که با کد بالا ساختید قرار بدید.&lt;/p&gt;  &lt;p dir="rtl" align="justify"&gt;&lt;a title="پلاگینِ وب گوگل بوکمارک برای جی‌کوئری" href="http://mytoolbox.ir/blog/files/jgooglebm.zip" target="_blank"&gt;پلاگینِ وب گوگل بوکمارک برای جی‌کوئری&lt;/a&gt;&lt;/p&gt;  &lt;p dir="rtl" align="justify"&gt;تنها تنظیماتی که باید روی این کد اعمال کنید تا از آن در وبلاگ خودتون استفاده کنید، قرار دادن لینک لیست بوکمارک‌های موردنظر در متغیر &lt;strong&gt;publiclisturl&lt;/strong&gt; هست و بعد از اون تغییر استایل‌ها متناسب با طراحی وبلاگ شما. به همین سادگی.&lt;/p&gt;  &lt;div dir="rtl" class="cr"&gt;این مطلب به صورت اختصاصی برای &lt;a title="وبلاگ جعبه ابزار" href="http://mytoolbox.ir/blog" target="_blank"&gt;وبلاگ جعبه ابزار&lt;/a&gt; نوشته شده است. استفاده از این مطلب به شرط ذکر منبع، آزاد می‌باشد. &lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/mytoolbox/~4/2nlsAZegSa0" height="1" width="1"/&gt;</description>
      <link>http://mytoolbox.ir/blog/post/Google-Bookmarks-Plugin-with-jQuery.aspx</link>
      <author>me</author>
      <comments>http://mytoolbox.ir/blog/post/Google-Bookmarks-Plugin-with-jQuery.aspx#comment</comments>
      <guid>http://mytoolbox.ir/blog/post.aspx?id=a5b8668a-209f-4c45-a02a-711f39bf19b8</guid>
      <pubDate>Sun, 28 Mar 2010 15:28:34 +0400</pubDate>
      <category>jQuery</category>
      <dc:publisher>me</dc:publisher>
      <pingback:server>http://mytoolbox.ir/blog/pingback.axd</pingback:server>
      <pingback:target>http://mytoolbox.ir/blog/post.aspx?id=a5b8668a-209f-4c45-a02a-711f39bf19b8</pingback:target>
      <slash:comments>25</slash:comments>
      <trackback:ping>http://mytoolbox.ir/blog/trackback.axd?id=a5b8668a-209f-4c45-a02a-711f39bf19b8</trackback:ping>
      <wfw:comment>http://mytoolbox.ir/blog/post/Google-Bookmarks-Plugin-with-jQuery.aspx#comment</wfw:comment>
      <wfw:commentRss>http://mytoolbox.ir/blog/syndication.axd?post=a5b8668a-209f-4c45-a02a-711f39bf19b8</wfw:commentRss>
    </item>
    <item>
      <title>jQuery Plugins</title>
      <description>&lt;h3 dir="rtl"&gt;پلاگین در جی کوئری&lt;/h3&gt;  &lt;p dir="rtl" align="justify"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; margin: 0px 10px 10px 0px; display: inline; border-top: 0px; border-right: 0px" title="jqeuryplugins" border="0" alt="jqeuryplugins" align="left" src="http://mytoolbox.ir/blog/image.axd?picture=jqeuryplugins_1.png" width="264" height="200" /&gt; استفاده از پلاگین‌ها یکی از امکانات جی‌کوئری هستند که باعث فراگیر شدن جی‌کوئری با سرعت زیاد شدند. امکان استفاده از کدهای آماده و نوشته شده توسط اشخاص دیگر و به اصطلاح پلاگین های آماده، استفاده از این کتابخونه جاوا اسکریپتی رو بسیار ساده و لذت بخش کرده‌است. پلاگین‌ها مجموعه‌ای از کدهای جاوا اسکریپت هستند که برای هدفی به خصوص نوشته شده‌اند و می‌توان از آنها به سادگی استفاده کرد بدون اینکه در مورد چگونگی عملکرد آنها نیازی باشد که چیزی بدانیم.&lt;/p&gt;  &lt;p dir="rtl" align="justify"&gt;البته از همان ابتدای کار، سایت jQuery محلی رو برای معرفی پلاگین‌های نوشته شده، معرفی کرد و همین باعث شد تا تمامی پلاگین‌ها به سادگی قابل دسترس باشند و بتوان کدهایی که نیاز داریم رو به سادگی با جشتجو و دسته بندیی که انجام شده پیدا کنیم. این مساله هم کمک بسیار زیادی در پراستفاده بودن jQuery در دنیای طراحی وب امروز شد. مجموعه‌ای از پلاگین‌های جی‌کوئری با بیش از 4000 پلاگین رو در &lt;a title="jQuery Plugins" href="http://plugins.jquery.com/" target="_blank"&gt;این لینک&lt;/a&gt; میتونید ببینید. &lt;/p&gt;  &lt;div align="center" class="boxcaption" dir="rtl"&gt;تبلیغات: &lt;a target="_blank" href="http://mytoolbox.ir/blog/page/The-Smashing-Book.aspx" title="Order Smashing Book in Iran"&gt;سفارش خرید The Smashing Book در ایران؛ کلیک کنید.&lt;/a&gt;&lt;/div&gt;  &lt;p dir="rtl" align="justify"&gt;&lt;strong&gt;استفاده از پلاگین در jQuery      &lt;br /&gt;&lt;/strong&gt;استفاده از پلاگین‌ها در جی‌کوئری بسیار ساده هست و می‌توان آن را مرحله به مرحله به صورت زیر نشون داد:&lt;/p&gt;  &lt;p dir="rtl" align="justify"&gt;1. پیدا کردن پلاگین مورد نظر با استفاده از جستجو در سایت &lt;a title="jQuery Plugins" href="http://plugins.jquery.com/" target="_blank"&gt;پلاگین‌های جی‌کوئری&lt;/a&gt; و یا در سرچ انجین‌های اینترنت مثل بینگ و گوگل و یاهو.&lt;/p&gt;  &lt;p dir="rtl" align="justify"&gt;2. دانلود کردن فایل js مربوط به پلاگین. توجه کنید در برخی موارد ممکن است این پلاگین در یک CDN پیوست شده باشه و دیگر نیازی با دانلود کردن اون نیست و فقط باید از آدرس اینترنتی اون CDN استفاده کنید. (&lt;a title="در مورد CDN بیشتر بخوانید" href="http://mytoolbox.ir/blog/post/Use-jQuery-CDN-from-Microsoft-or-Google.aspx" target="_blank"&gt;در مورد CDN بیشتر بخوانید&lt;/a&gt;.)&lt;/p&gt;  &lt;p dir="rtl" align="justify"&gt;3. اضافه کردن پلاگین به سورس html با استفاده از تگ &amp;lt;script&amp;gt;. دقت کنید که این پلاگین بعد از کتابخونه اصلی jQuery به سورس اضافه بشه.&lt;/p&gt;  &lt;p dir="rtl" align="justify"&gt;4. تنظیمات مربوط به پلاگین و کدهایی که برای کار کردن این پلاگین در jQuery باید نوشت. تمامی این اطلاعات رو میتونید از همونجایی که پلاگین رو دانلود کردید، پیدا کنید. سازندگان پلاگین در سایت خود یا در مطلبی که مربوط به اون پلاگین نوشته شده، در اکثر موارد نحوه استفاده از پلاگین رو هم به همراه مثال، نوشته‌اند.&lt;/p&gt;  &lt;p dir="rtl" align="justify"&gt;در ادامه این پست یک پلاگین را معرفی کرده و نحوه استفاده از اون توضیح داده خواهد شد. سعی میشه که در ادامه مطالب در موضوع jQuery در جعبه ابزار، پلاگین‌های کاربردی و مفید معرفی بشه.&lt;/p&gt;  &lt;p dir="rtl" align="justify"&gt;&lt;strong&gt;پلاگین فید خوان      &lt;br /&gt;&lt;/strong&gt;در &lt;a title="خواندن آر اِس اِس فید سایتهای دیگر با استفاده از جی کوئری" href="http://mytoolbox.ir/blog/post/jQuery-Cross-Domain-RSS-Reader.aspx" target="_blank"&gt;پست قبلی&lt;/a&gt; دیدید که چگونه با استفاده از یک API از گوگل، تونستیم RSS Feed سایت دیگری را به JSONP تبدیل کرده و با jQuery بخوانیم. در ادامه پلاگینی معرفی میشه که فقط کافی هست اون رو در سورس html اضافه کرده و با دستورالعملی که در ادامه خواهید دید، از اون در خواندن فید های دیگر استفاده کنید.&lt;/p&gt;  &lt;p dir="rtl" align="justify"&gt;نسخه اصلی این پلاگین که jGFeed نام داره رو میتونید از &lt;a title="jGFeed" href="http://jquery-howto.blogspot.com/2009/05/google-feeds-api-jquery-plugin.html" target="_blank"&gt;آدرس اصلی&lt;/a&gt; سازنده اون دانلود کنید. البته شما میتونید این پلاگین رو بعد از اعمال یک سری تغییرات برای Error Handling بهتر و استفاده ساده تر، از سایت جعبه ابزار دانلود کنید. برای دانلود این پلاگین، روی لینک زیر کلیک کنید و فایل دانلود شده را از حالت زیپ خارج کنید.     &lt;br /&gt;&lt;a title="پلاگین فیدخوان برای جی‌کوئری" href="http://mytoolbox.ir/blog/files/jgfeed.zip" target="_blank"&gt;پلاگین فیدخوان برای جی‌کوئری، بر اساس پلاگین اصلی jGFeed&lt;/a&gt;&lt;/p&gt;  &lt;p dir="rtl" align="justify"&gt;سپس این پلاگین را به همراه کتابخونه اصلی jQuery در سورس html اضافه کنید. مثال &lt;a title="خواندن آر اِس اِس فید سایتهای دیگر با استفاده از جی کوئری" href="http://mytoolbox.ir/blog/post/jQuery-Cross-Domain-RSS-Reader.aspx" target="_blank"&gt;پست قبلی&lt;/a&gt; رو با استفاده از پلاگین، به صورت زیر تغییر بدید: (در این مثال از RSS Feed مربوط به سایت &lt;a title="iDevCenter" href="http://www.idevcenter.com" target="_blank"&gt;iDevCenter&lt;/a&gt; برای پیشفرض استفاده شده‌است.)&lt;/p&gt;  &lt;div class="coder"&gt;   &lt;p&gt;&amp;lt;!DOCTYPE html PUBLIC &amp;quot;-//W3C//DTD XHTML 1.0 Strict//EN&amp;quot; &amp;quot;&lt;a href="http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd&amp;quot;"&gt;http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd&amp;quot;&lt;/a&gt;&amp;gt;       &lt;br /&gt;&amp;lt;html xmlns=&amp;quot;&lt;a href="http://www.w3.org/1999/xhtml&amp;quot;"&gt;http://www.w3.org/1999/xhtml&amp;quot;&lt;/a&gt;&amp;gt;       &lt;br /&gt;&amp;lt;head&amp;gt;       &lt;br /&gt;&amp;lt;meta content=&amp;quot;text/html; charset=utf-8&amp;quot; http-equiv=&amp;quot;Content-Type&amp;quot; /&amp;gt;       &lt;br /&gt;&amp;lt;title&amp;gt;jQuery Feed Reader Plugin&amp;lt;/title&amp;gt;       &lt;br /&gt;&amp;lt;script src=&amp;quot;&lt;a href="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js&amp;quot;"&gt;http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js&amp;quot;&lt;/a&gt; type=&amp;quot;text/javascript&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;       &lt;br /&gt;&amp;lt;script src=&amp;quot;jgfeed.js&amp;quot; type=&amp;quot;text/javascript&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;       &lt;br /&gt;&amp;lt;/head&amp;gt;       &lt;br /&gt;&amp;lt;body&amp;gt;       &lt;br /&gt;&amp;lt;script type=&amp;quot;text/javascript&amp;quot;&amp;gt;       &lt;br /&gt;$(function() {       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; $(&amp;quot;#getfeed&amp;quot;).click(function() {       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; $(&amp;quot;#feeds&amp;quot;).text(&amp;quot;loading...&amp;quot;);       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; var feedcount =4 ;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; $.jGFeed($(&amp;quot;#feedinput&amp;quot;).val(), feedcount, function(feeds){       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; // کنترل خطا       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; if(!feeds){       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; // خطایی رخ داده       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; $(&amp;quot;#feeds&amp;quot;).html(&amp;quot;ERROR!&amp;quot;);       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; return false;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; // اطلاعات فید به درستی برگشت داده شده       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; var webtitle;//Website title       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; webtitle = feeds.title;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; var weblink;//Website Link       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; weblink = feeds.link;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; $(&amp;quot;#feeds&amp;quot;).html(&amp;quot;&amp;lt;div&amp;gt;&amp;lt;b&amp;gt;&amp;lt;a href=\&amp;quot;&amp;quot; + weblink + &amp;quot;\&amp;quot;&amp;gt;&amp;quot; + webtitle + &amp;quot;&amp;lt;/a&amp;gt;&amp;lt;/b&amp;gt;&amp;lt;/div&amp;gt;&amp;quot;);       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; for(var i=0; i&amp;lt;feeds.entries.length; i++){       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; var entry = feeds.entries[i];       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; $(&amp;quot;#feeds&amp;quot;).append(&amp;quot;&amp;lt;div&amp;gt;&amp;lt;a href=\&amp;quot;&amp;quot; + entry.link + &amp;quot;\&amp;quot;&amp;gt;&amp;quot; + entry.title + &amp;quot;&amp;lt;/a&amp;gt;&amp;lt;/div&amp;gt;&amp;quot; );       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;    &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; });      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; });       &lt;br /&gt;});       &lt;br /&gt;&amp;lt;/script&amp;gt;       &lt;br /&gt;&amp;lt;div&amp;gt;       &lt;br /&gt;&amp;lt;input id=&amp;quot;feedinput&amp;quot; style=&amp;quot;width:300px;&amp;quot; type=&amp;quot;text&amp;quot;       &lt;br /&gt;value=&amp;quot;&lt;a href="http://www.idevcenter.com/links/upcoming/feed/&amp;quot;/"&gt;http://www.idevcenter.com/links/upcoming/feed/&amp;quot;/&lt;/a&gt;&amp;gt;       &lt;br /&gt;&amp;lt;br /&amp;gt;       &lt;br /&gt;&amp;lt;input type=&amp;quot;button&amp;quot; value=&amp;quot;Load&amp;quot; id=&amp;quot;getfeed&amp;quot; /&amp;gt;       &lt;br /&gt;&amp;lt;hr /&amp;gt;       &lt;br /&gt;&amp;lt;div id=&amp;quot;feeds&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;       &lt;br /&gt;&amp;lt;/div&amp;gt;       &lt;br /&gt;&amp;lt;/body&amp;gt;       &lt;br /&gt;&amp;lt;/html&amp;gt;&lt;/p&gt; &lt;/div&gt;  &lt;p dir="rtl" align="justify"&gt;در این مثال از Google CDN استفاده شده (&lt;a title="در مورد CDN بیشتر بخوانید" href="http://mytoolbox.ir/blog/post/Use-jQuery-CDN-from-Microsoft-or-Google.aspx" target="_blank"&gt;در مورد CDN بیشتر بخوانید&lt;/a&gt;.) و فایل پلاگین jgfeed.js هم بعد از آن به سورس اضافه شده. اگر در مثال دقت کنید، از دستور jGFeed استفاده شده که در واقع این دستور از پلاگین به کد جی‌کوئری ارسال میشود.&lt;/p&gt;  &lt;p dir="rtl" align="justify"&gt;برای اینکه سادگی استفاده از پلاگین رو ببینید، به کد زیر دقت کنید که تنها نشان دهنده استفاده از پلاگین هست:&lt;/p&gt;  &lt;div class="coder"&gt;$.jGFeed(feedurl, feedcount, function(feeds){    &lt;br /&gt;// کنترل خطا در متغیر و خواندن و نوشتن آن     &lt;br /&gt;}&lt;/div&gt;  &lt;p dir="rtl" align="justify"&gt;در واقع در مثالی که زده شد، برنامه کامل نوشته شد، اما اصل قضیه دستور jGFeed هست که به آن 2 مقدار آدرس فید و تعداد فید رو پاس میدیم و این پلاگین به ما مقدار feeds رو برمیگردونه. اگر feeds برابر false باشد یعنی خطایی رخ داده، مثلا آدرس فید اشتباه است.&lt;/p&gt;  &lt;p dir="rtl" align="justify"&gt;اگر مقدار feeds برابر false نباشد، بنابراین حاوی فید مورد نظر به فرمت JSON هست که میتوان آن را به هر شکل و فرمتی خواند و نوشت که یک نمونه آن در کد بالا گفته شد. در واقع، انتظار نداشته باشید با استفاده از پلاگین، از نوشتن کد جی‌کوئری بی‌نیاز هستید. می‌بینید که در این مثال بعد از استفاده از پلاگین حدود 15 خط دستورات JQuery نوشته شده. البته پلاگین مربوط به این مثال، یک نمونه ساده بود و برخی پلاگین‌ها کدهای بسیار سنگینی دارند که فوق العاده کار رو راحت تر و سریعتر میکنند.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;div dir="rtl" class="cr"&gt;این مطلب به صورت اختصاصی برای &lt;a title="وبلاگ جعبه ابزار" href="http://mytoolbox.ir/blog" target="_blank"&gt;وبلاگ جعبه ابزار&lt;/a&gt; نوشته شده است. استفاده از این مطلب به شرط ذکر منبع، آزاد می‌باشد. &lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/mytoolbox/~4/kw8asal4Y-0" height="1" width="1"/&gt;</description>
      <link>http://mytoolbox.ir/blog/post/jQuery-Plugins.aspx</link>
      <author>me</author>
      <comments>http://mytoolbox.ir/blog/post/jQuery-Plugins.aspx#comment</comments>
      <guid>http://mytoolbox.ir/blog/post.aspx?id=23ecf5f4-f23c-4a83-ade8-6157a492dc6d</guid>
      <pubDate>Tue, 09 Mar 2010 16:05:00 +0400</pubDate>
      <category>jQuery</category>
      <dc:publisher>me</dc:publisher>
      <pingback:server>http://mytoolbox.ir/blog/pingback.axd</pingback:server>
      <pingback:target>http://mytoolbox.ir/blog/post.aspx?id=23ecf5f4-f23c-4a83-ade8-6157a492dc6d</pingback:target>
      <slash:comments>19</slash:comments>
      <trackback:ping>http://mytoolbox.ir/blog/trackback.axd?id=23ecf5f4-f23c-4a83-ade8-6157a492dc6d</trackback:ping>
      <wfw:comment>http://mytoolbox.ir/blog/post/jQuery-Plugins.aspx#comment</wfw:comment>
      <wfw:commentRss>http://mytoolbox.ir/blog/syndication.axd?post=23ecf5f4-f23c-4a83-ade8-6157a492dc6d</wfw:commentRss>
    </item>
    <item>
      <title>jQuery Cross Domain RSS Reader</title>
      <description>&lt;h3 dir="rtl" align="justify"&gt;خواندن آر اِس اِس فید سایتهای دیگر با استفاده از جی کوئری&lt;/h3&gt;  &lt;p dir="rtl" align="justify"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; margin: 0px 10px 10px 0px; display: inline; border-top: 0px; border-right: 0px" title="jqueryrss" border="0" alt="jqueryrss" align="left" src="http://mytoolbox.ir/blog/image.axd?picture=jqueryrss.png" width="292" height="161" /&gt; در سری مطالب قبلی، چگونگی استفاده از فرمت XML و متد JSONP برای خواندن فایلهای موجود در سایتهای دیگر از طریق جاوا اسکریپت را دیدیم. برای کار با JSONP نیاز هست که سرور مورد نظر از این روش پشتیبانی کند. حالا فرض کنید می‌خواهید RSS Feed سایتهای انتخاب شده رو در وبلاگ یا وب‌سایت خودتون نشون بدید. البته با استفاده از جاوا اسکریپت در سمت کلاینت! &lt;/p&gt;  &lt;p dir="rtl" align="justify"&gt;به صورت مستقیم نمیتونید آدرس یک RSS Feed را در صفحه خود بخوانید مگر اینکه اون فید، مربوط به دامین خودتون باشه. در اکثر موارد هم سایتهای مختلف برای تشکیل خروجی RSS خودشون از JSONP پشتیبانی نمیکنند. پس چه باید کرد؟ &lt;/p&gt;  &lt;div dir="rtl" class="boxcaption" align="center"&gt;تبلیغات: &lt;a title="Order Smashing Book in Iran" href="http://mytoolbox.ir/blog/page/The-Smashing-Book.aspx" target="_blank"&gt;سفارش خرید The Smashing Book در ایران؛ کلیک کنید.&lt;/a&gt;&lt;/div&gt;  &lt;p dir="rtl" align="justify"&gt;ارسال درخواست به سایتها و دامین‌های دیگر از طرف برنامه نویسی سمت سرور مثل ASP.Net مشکلات حالت جاوا اسکریپت را ندارد و محدود نیست. بنابراین برای خواندن RSS های دیگران، میتوانیم با برنامه سمت سرور، آنها را بخوانیم و سپس مطالب خوانده شده را به سمت کلاینت منتقل کنیم. در واقع در این روش، از سایت خود به عنوان یک واسطه بین جاوااسکریپت و سایت مورد نظر استفاده میکنیم و در سمت کلاینت، فرمت XML را که از سرور و دامین خودمان رسیده میخوانیم، بنابراین دیگر محدودیت Cross Domain وجود ندارد. &lt;/p&gt;  &lt;p dir="rtl" align="justify"&gt;علاوه بر روش بالا، میتوان از Google API هم استفاده کرد. یکی از API های گوگل، فید خوان گوگل هست که در واقع یک پیوندی هست بین شما و RSS Feed سایت مورد نظر؛ یعنی همان کار واسطه را انجام میدهد. کاری که API فید خوان گوگل انجام میدهد بسیار مورد پسند jQuery هست چرا که از JSONP پشتیبانی میکند و فقط کافیست به آدرس مشخص شده از این API، از جی کوئری یک درخواست getJSON داده شود تا گوگل فید را در سرور خودش خوانده و نتیجه را با فرمت JSON برای ما می‌فرستد.&lt;/p&gt;  &lt;p dir="rtl" align="justify"&gt;برای استفاده از این API فقط کافیست یک درخواست به آدرس زیر فرستاده شود. به جای آدرس فید نوشته شده، شما هر آدرسی که بنویسید، فید مورد نظر را با فرمت تبدیل شده به JSON تحویل میگیرید. برای تعیین تعداد فیدهای برگشتی هم باید متغیر num رو تغییر بدید. در این مطلب، از RSS Feed سایت &lt;a title="iDevCenter" href="http://www.idevcenter.com/" rel="nofollow" target="_blank"&gt;iDevCenter&lt;/a&gt;، قسمت &lt;a title="iDevCenter" href="http://www.idevcenter.com/links/upcoming/" rel="nofollow" target="_blank"&gt;لینکهای تازه ارسال شده&lt;/a&gt;، برای مثال استفاده میشه و درخواست 2 مقدار شده است:&lt;/p&gt;  &lt;div class="coder"&gt;   &lt;p&gt;&lt;a href="http://ajax.googleapis.com/ajax/services/feed/load?v=1.0&amp;amp;callback=?&amp;amp;q=http://www.idevcenter.com/links/upcoming/feed/&amp;amp;num=2"&gt;http://ajax.googleapis.com/ajax/services/feed/load?        &lt;br /&gt;v=1.0&amp;amp;callback=?&amp;amp;q=http://www.idevcenter.com/links/upcoming/feed/&amp;amp;num=2&lt;/a&gt;&lt;/p&gt; &lt;/div&gt;  &lt;p dir="rtl" align="justify"&gt;این آدرس رو اگر در مرورگر خودتون بنویسید، پیغام خطا میگیرید. چون برای تابع برگشتی JSONP اسم تعیین نشده (متغیر callback) و به جای آن ؟ گذاشته شده. به جای علامت سوال، هر اسمی که دوست دارید بنویسید و نتیجه رو مشاهده کنید. این که چرا از ؟ استفاده میشه، در ادامه متوجه خواهید شد.&lt;/p&gt;  &lt;p dir="rtl" align="justify"&gt;حالا با jQuery یک درخواست به این آدرس میدهیم. در جی‌کوئری تابع getJSON برای گرفتن پاسخ به فرمت JSON استفاده میشود به این صورت که آدرس مورد نظر را به آن پاس داده و نامی برای تابع برگشتی از JSONP تعیین نمیکنیم (callback) و علامت سوال ؟ به جای آن میگذاریم. علت استفاده از ؟ این است که برای سادگی کار، خود jQuery در هر درخواستی که ارسال میکند یک نام به صورت تصادفی برای این تابع انتخاب کند و ما دیگر درگیر نام تابع نشویم.&lt;/p&gt;  &lt;p dir="rtl" align="justify"&gt;برای خواندن این تابع، چون نام آن را نمیدونیم، از این روش استفاده میشه که در خود getJSON یک تابع را به صورت داینامیک و بدون اسم تعریف کرده و برای آن یک ورودی در نظر میگیریم. به این صورت، جی‌کوئری خودش میاد یه تابع با اسم رندوم درست میکنه، اون رو به جای ؟ پاس میده و بعد تابع برگشتی رو مرتبط میکنه با این تابع بدون اسمی که نوشتیم و مقدار بازگشتی با فرمت JSON به ورودی این تابع پاس داده میشه:&lt;/p&gt;  &lt;div class="coder"&gt;   &lt;p&gt;var googleapi = &amp;quot;&lt;a href="http://ajax.googleapis.com/ajax/services/feed/load?v=1.0&amp;amp;callback=?&amp;amp;"&gt;http://ajax.googleapis.com/ajax/services/feed/load?v=1.0&amp;amp;callback=?&amp;amp;&lt;/a&gt;&amp;quot;;       &lt;br /&gt;var feedurl = &amp;quot;&lt;a href="http://www.idevcenter.com/links/upcoming/feed/"&gt;http://www.idevcenter.com/links/upcoming/feed/&lt;/a&gt;&amp;quot;;       &lt;br /&gt;var num = 2       &lt;br /&gt;var fullurl = googleapi + &amp;quot;q=&amp;quot; + feedurl + &amp;quot;&amp;amp;num=&amp;quot; + num;       &lt;br /&gt;$.getJSON(fullurl, function(&lt;strong&gt;data&lt;/strong&gt;){ &lt;/p&gt;    &lt;p&gt;&amp;#160;&amp;#160;&amp;#160; //data is the RSS Feed converted to JSON      &lt;br /&gt;}&lt;/p&gt; &lt;/div&gt;  &lt;p dir="rtl" align="justify"&gt;یک نمونه فرمت JSON رو که از گوگل API برمیگرده و توسط jQuery در متغیر data قرار داده میشه، در کد زیر ببینید. به نام تابع که به صورت رندوم توسط jQuery ایجاد شده دقت کنید.&lt;/p&gt;  &lt;div class="coder"&gt;   &lt;p&gt;&lt;strong&gt;jsonp1267359064813&lt;/strong&gt;(       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; {&amp;quot;responseData&amp;quot;:       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&amp;quot;feed&amp;quot;:       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&amp;quot;title&amp;quot;:&amp;quot;iDevCenter Upcoming Links&amp;quot;,       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;quot;link&amp;quot;:&amp;quot;&lt;a href="http://www.idevcenter.com/links/upcoming/&amp;quot;"&gt;http://www.idevcenter.com/links/upcoming/&amp;quot;&lt;/a&gt;,       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;quot;entries&amp;quot;:[       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;quot;title&amp;quot;:&amp;quot;\u202bسیستم\u200cهای متن\u200cباز مشابه StackOverflow&amp;quot;,       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;quot;link&amp;quot;:&amp;quot;&lt;a href="http://www.idevcenter.com/link/1156/&amp;quot;"&gt;http://www.idevcenter.com/link/1156/&amp;quot;&lt;/a&gt;,       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;quot;author&amp;quot;:&amp;quot;lajevardi&amp;quot;,       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;quot;publishedDate&amp;quot;:&amp;quot;Fri, 26 Feb 2010 03:19:08 -0800&amp;quot;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; },       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;quot;title&amp;quot;:&amp;quot;\u202bطراحی برنامه یا سایت تحت وب با استفاده از فونت های ویندوز&amp;quot;,       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;quot;link&amp;quot;:&amp;quot;&lt;a href="http://www.idevcenter.com/link/1153/&amp;quot;"&gt;http://www.idevcenter.com/link/1153/&amp;quot;&lt;/a&gt;,       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;quot;author&amp;quot;:&amp;quot;hajloo&amp;quot;,       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;quot;publishedDate&amp;quot;:&amp;quot;Thu, 25 Feb 2010 00:34:11 -0800&amp;quot;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ]       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; },       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;quot;responseDetails&amp;quot;: null,       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;quot;responseStatus&amp;quot;: 200       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; }       &lt;br /&gt;)&lt;/p&gt; &lt;/div&gt;  &lt;p dir="rtl" align="justify"&gt;هر چه که داخل تابع &lt;strong&gt;jsonp1267359064813 &lt;/strong&gt;برمیگردد، توسط جی کوئری، به متغیر data که در تابع getJSON معرفی کردیم، پاس داده می‌شود. مقدار data در واقع همون RSS Feed سایت idevcenter هست که توسط سویس گوگل به JSON تبدیل میشه و به تابع ما پاس داده میشه. بنابراین در حال حاضر، اطلاعاتی که نیاز داشتیم رو داریم، حالا باید اون رو بخونیم و در صفحه بنویسیم.&lt;/p&gt;  &lt;p dir="rtl" align="justify"&gt;خوندن فرمت JSON در جاوااسکریپت خیلی ساده هست. فقط کافیه ساختار درختی JSON رو شناسایی کنید و سپس به صورت سلسله مراتبی، به قسمت های مختلفش دست پیدا کنید. مثلا برای رسیدن به آدرس وب سایت مربوط به فید، باید این مسیر را طی کنید: responseData.feed.link و برای رسیدن به عنوان مورد دوم در فید ها به این صورت responseData.feed.entries[1].title عمل میکنیم.&lt;/p&gt;  &lt;p dir="rtl" align="justify"&gt;در JSON آرایه ها در [ ] قرار میگیرند و entries هم یک آرایه از فید های سایت هست که در این مثال تعداد 2 فید برگشت داده شده است. برای بیشتر شدن فید های ارسالی، مقدار num را در API گوگل تغییر بدهید. برای خواندن entries از یک حلقه for استفاده میکنیم و مقادیر هر فید رو در قسمتی از html که تعیین کردیم مینویسیم. &lt;/p&gt;  &lt;div class="coder"&gt;   &lt;p&gt;for(var i=0; i&amp;lt;responseData.feed.entries.length; i++){      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; var entry = responseData.feed.entries[i];       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; var feedtitle = entry.title;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; var feedlink= entry.link;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; var feeddate= entry.publishedDate;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; // add variables to html&lt;/p&gt;    &lt;p&gt;}&lt;/p&gt; &lt;/div&gt;  &lt;p dir="rtl" align="justify"&gt;در مدل کار ما، تمامی این اطلاعات با فرمت JSON داخل متغیر data ریخته میشود. بنابراین شروع ساختار JSON از data میشود. در زیر کد کامل این مثال رو میتونید ببینید. در این مثال، از Google CDN برای استفاده از JQuery استفاده شده. (&lt;a title="در مورد CDN بیشتر بخوانید" href="http://mytoolbox.ir/blog/post/Use-jQuery-CDN-from-Microsoft-or-Google.aspx" target="_blank"&gt;در مورد CDN بیشتر بخوانید&lt;/a&gt;) &lt;/p&gt;  &lt;div class="coder"&gt;   &lt;p&gt;&amp;lt;!DOCTYPE html PUBLIC &amp;quot;-//W3C//DTD XHTML 1.0 Strict//EN&amp;quot; &amp;quot;&lt;a href="http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd&amp;quot;"&gt;http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd&amp;quot;&lt;/a&gt;&amp;gt;       &lt;br /&gt;&amp;lt;html xmlns=&amp;quot;&lt;a href="http://www.w3.org/1999/xhtml&amp;quot;"&gt;http://www.w3.org/1999/xhtml&amp;quot;&lt;/a&gt;&amp;gt; &lt;/p&gt;    &lt;p&gt;&amp;lt;head&amp;gt;      &lt;br /&gt;&amp;lt;meta content=&amp;quot;text/html; charset=utf-8&amp;quot; http-equiv=&amp;quot;Content-Type&amp;quot; /&amp;gt;       &lt;br /&gt;&amp;lt;title&amp;gt;jQuery RSS Reader&amp;lt;/title&amp;gt;       &lt;br /&gt;&amp;lt;script type=&amp;quot;text/javascript&amp;quot; src=&amp;quot;&lt;a href="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js&amp;quot;"&gt;http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js&amp;quot;&lt;/a&gt;&amp;gt;&amp;lt;/script&amp;gt;       &lt;br /&gt;&amp;lt;/head&amp;gt; &lt;/p&gt;    &lt;p&gt;&amp;lt;body&amp;gt;      &lt;br /&gt;&amp;lt;script type=&amp;quot;text/javascript&amp;quot;&amp;gt;       &lt;br /&gt;$(function() {       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; var googleapi = &amp;quot;&lt;a href="http://ajax.googleapis.com/ajax/services/feed/load?v=1.0&amp;amp;callback=?&amp;amp;&amp;quot;;"&gt;http://ajax.googleapis.com/ajax/services/feed/load?v=1.0&amp;amp;callback=?&amp;amp;&amp;quot;;&lt;/a&gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; var feedurl = &amp;quot;&lt;a href="http://www.idevcenter.com/links/upcoming/feed/&amp;quot;;"&gt;http://www.idevcenter.com/links/upcoming/feed/&amp;quot;;&lt;/a&gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; var num = 5       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; var fullurl = googleapi + &amp;quot;q=&amp;quot; + feedurl + &amp;quot;&amp;amp;num=&amp;quot; + num;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; $.getJSON(fullurl, function(data){       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; //Website title       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; var webtitle;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; webtitle = data.responseData.feed.title;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; //Website Link       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; var weblink;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; weblink = data.responseData.feed.link; &lt;/p&gt;    &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; $(&amp;quot;#feeds&amp;quot;).html(&amp;quot;&amp;lt;div&amp;gt;&amp;lt;b&amp;gt;&amp;lt;a href=\&amp;quot;&amp;quot; + weblink + &amp;quot;\&amp;quot;&amp;gt;&amp;quot; + webtitle + &amp;quot;&amp;lt;/a&amp;gt;&amp;lt;/b&amp;gt;&amp;lt;/div&amp;gt;&amp;quot;);      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; for(var i=0; i&amp;lt;data.responseData.feed.entries.length; i++){       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; var entry = data.responseData.feed.entries[i];       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; $(&amp;quot;#feeds&amp;quot;).append(&amp;quot;&amp;lt;div&amp;gt;&amp;lt;a href=\&amp;quot;&amp;quot; + entry.link + &amp;quot;\&amp;quot;&amp;gt;&amp;quot; + entry.title + &amp;quot;&amp;lt;/a&amp;gt;&amp;lt;/div&amp;gt;&amp;quot; );       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; }); &lt;/p&gt;    &lt;p&gt;});      &lt;br /&gt;&amp;lt;/script&amp;gt; &lt;/p&gt;    &lt;p&gt;&amp;lt;div id=&amp;quot;feeds&amp;quot;&amp;gt;      &lt;br /&gt;&amp;lt;/div&amp;gt; &lt;/p&gt;    &lt;p&gt;&amp;lt;/body&amp;gt; &lt;/p&gt;    &lt;p&gt;&amp;lt;/html&amp;gt;&lt;/p&gt; &lt;/div&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;div dir="rtl" class="cr"&gt;این مطلب به صورت اختصاصی برای &lt;a title="وبلاگ جعبه ابزار" href="http://mytoolbox.ir/blog" target="_blank"&gt;وبلاگ جعبه ابزار&lt;/a&gt; نوشته شده است. استفاده از این مطلب به شرط ذکر منبع، آزاد می‌باشد.     &lt;p&gt;&lt;/p&gt; &lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/mytoolbox/~4/S1n01oRQDpY" height="1" width="1"/&gt;</description>
      <link>http://mytoolbox.ir/blog/post/jQuery-Cross-Domain-RSS-Reader.aspx</link>
      <author>me</author>
      <comments>http://mytoolbox.ir/blog/post/jQuery-Cross-Domain-RSS-Reader.aspx#comment</comments>
      <guid>http://mytoolbox.ir/blog/post.aspx?id=44e8651e-7ad2-4556-8d81-a6b8ececc576</guid>
      <pubDate>Sun, 28 Feb 2010 16:19:34 +0400</pubDate>
      <category>jQuery</category>
      <dc:publisher>me</dc:publisher>
      <pingback:server>http://mytoolbox.ir/blog/pingback.axd</pingback:server>
      <pingback:target>http://mytoolbox.ir/blog/post.aspx?id=44e8651e-7ad2-4556-8d81-a6b8ececc576</pingback:target>
      <slash:comments>17</slash:comments>
      <trackback:ping>http://mytoolbox.ir/blog/trackback.axd?id=44e8651e-7ad2-4556-8d81-a6b8ececc576</trackback:ping>
      <wfw:comment>http://mytoolbox.ir/blog/post/jQuery-Cross-Domain-RSS-Reader.aspx#comment</wfw:comment>
      <wfw:commentRss>http://mytoolbox.ir/blog/syndication.axd?post=44e8651e-7ad2-4556-8d81-a6b8ececc576</wfw:commentRss>
    </item>
    <item>
      <title>Cross Domain Javascript</title>
      <description>&lt;h3 dir="rtl" align="justify"&gt;ایجاد ارتباط در وب از طریق جاوا اسکریپت بین دامین‌های متفاوت&lt;/h3&gt;  &lt;p dir="rtl" align="justify"&gt;&lt;img style="border-right-width: 0px; margin: 0px 10px 10px 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="mytoolbox-ir-crossdomainjavascript" border="0" alt="mytoolbox-ir-crossdomainjavascript" align="left" src="http://mytoolbox.ir/blog/image.axd?picture=mytoolbox-ir-crossdomainjavascript.png" width="302" height="133" /&gt; &lt;/p&gt;  &lt;p dir="rtl" align="justify"&gt;به علت یک سری مسایل امنیتی و امکان استفاده های نادرست و غیرقانونی، مرورگرهای اینترنتی از طریق جاوا اسکریپت و به اصطلاح به صورت کلاینت ساید، مجاز به خواندن فرمت XML از سرور های دیگر نیستند و فقط میتوانند فایلهای XML موجود در همان آدرس سایتی را بخوانند که خودشان در آن دامین قرار دارند. &lt;/p&gt;  &lt;p dir="rtl" align="justify"&gt;مثلا اگر در صفحه mytoolbox.ir/blog/FeedReader.html با استفاده از جاوا اسکریپت و ای‌جکس، درخواستی برای msn.com/test/test.xml بفرستیم، پیغام خطا برای مرورگر ما برگشت خواهد خورد با این عنوان که اجازه دسترسی به text.xml را در دامین msn.com نداریم و از FeedReader.html فقط میتوان به فایلهای XML موجود در آدرس mytoolbox.ir بدون پیغام خطا، درخواست داد.&lt;/p&gt;  &lt;div dir="rtl" class="boxcaption" align="center"&gt;تبلیغات: &lt;a title="Order Smashing Book in Iran" href="http://mytoolbox.ir/blog/page/The-Smashing-Book.aspx" target="_blank"&gt;سفارش خرید The Smashing Book در ایران؛ کلیک کنید.&lt;/a&gt;&lt;/div&gt;  &lt;p dir="rtl" align="justify"&gt;در شکل زیر، همونطور که مشخص شده، یک فایل در آدرس localhost اجرا شده و درخواستی رو برای mytoolbox.ir فرستاده؛ این ارتباط موفقیت آمیز بوده (200 OK) اما هیچ اطلاعاتی به localhost فرستاده نمیشود و در واقع یک فایل xml خالی فرستاده شده که کلاینت هم در خوندن اون دچار مشکل شده و پیغام خطا میده که چیزی در فایل درخواستی نیست.&lt;/p&gt;  &lt;p dir="rtl"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; margin-left: 0px; border-left-width: 0px; margin-right: 0px" title="خواندن آر اِس اِس فید سایت‌های دیگر با استفاده از جی کوئری" border="0" alt="خواندن آر اِس اِس فید سایت‌های دیگر با استفاده از جی کوئری" src="http://mytoolbox.ir/blog/image.axd?picture=crossdomainxmlrequest-mytoolbox_1.png" width="684" height="510" /&gt; &lt;/p&gt;  &lt;p dir="rtl" align="justify"&gt;همونطور که میدونید، RSS Feed هم به فرمت XML هست. بنابراین اگر بخواهیم فید وبسایت و یا وبلاگ دیگری را در سایت خودمون به کتر ببریم، با توجه به محدودیت فوق، این کار امکان پذیر نیست. قبل‌تر در جعبه ابزار نحوه خواندن فایلهای XML با جی‌کوئری را دیدید (&lt;a title="تجزیه و تحلیل ایکس اِم اِل در جی‌کوئری" href="http://mytoolbox.ir/blog/post/Parse-XML-in-jQuery.aspx" target="_blank"&gt;تجزیه و تحلیل ایکس اِم اِل در جی‌کوئری&lt;/a&gt;). همونطور که اونجا هم اشاره شد، این روش برای وقتی هست که فایل XML روی سرور خود شما قرار گرفته باشد.&lt;/p&gt;  &lt;p dir="rtl" align="justify"&gt;بر خلاف حالت کلاینت ساید، ارسال درخواست به سرورهای دیگر از طریق برنامه نویسی سمت سرور مثل ASP.Net و PHP، هیچ مشکلی ندارد و در صورت اجازه دسترسی به منابع سایتی مکه به آن درخواست میدهیم، پاسخ مناسب به سرور ما خواهد رسید. بنابریان به صورت سرورساید به سادگی و بدون مشکل می‌شود RSS سایتهای دیگر رو خواند و استفاده کرد.&lt;/p&gt;  &lt;p dir="rtl" align="justify"&gt;اهمیت استفاده از جاوا اسکریپت و AJAX (بخوانیم ای جکس!) در طراحی های مدرن و به اصطلاح Web2.0 برخی مواقع شما رو مجبور می‌کنه که از تکنیکی برای خواندن فید و XML در کلاینت استفاده کنید. برای این کار، روشی به اسم &lt;strong&gt;JSONP&lt;/strong&gt; ابداع شده است.&lt;/p&gt;  &lt;p dir="rtl" align="justify"&gt;&lt;strong&gt;JSONP چیست؟      &lt;br /&gt;&lt;/strong&gt;با توجه به مطالب بالا فهمیدیم که domain1 نمی‌تواند با domain2 انتقال اطلاعات در جاوا اسکریپت داشته باشد. اما آیا به این فکر نیوفتادید که پس CDN ها چطور کار میکنند؟ (&lt;a title="در مورد CDN بیشتر بدانید" href="http://mytoolbox.ir/blog/post/Use-jQuery-CDN-from-Microsoft-or-Google.aspx" target="_blank"&gt;در مورد CDN بیشتر بدانید&lt;/a&gt;.) در محدودیت ارتباط مرورگرها یک استثنا وجود داره و اون هم تگ اسکریپت &amp;lt;script&amp;gt; هست. تگ اسکریپت میتواند توسط src به یک فایل در دامین دیگری اشاره کند و آن فایل را بخواند.&lt;/p&gt;  &lt;p dir="rtl" align="justify"&gt;بنابراین از همین روش میتوان محدودیت موجود را دور زد. سناریوی زیر را بخاونید تا کامل متوجه موضوع شوید؛ در این متن، mytoolbox.ir میخواهد با جاوا اسکریپت، RSS Feed سایت msn.com را بخواند:&lt;/p&gt;  &lt;p dir="rtl" align="justify"&gt;&lt;strong&gt;اول&lt;/strong&gt;: سایت msn.com یک آدرس رو معرفی میکند مثلا msn.com/feed/load.aspx و آن را در اختیار اشخاصی قرار میدهد که قصد دارند با جاوااسکریپت به فید دسترسی داشته باشند. پاسخ این فایل، همان مقادیر فید به صورت متنی خواهد بود.     &lt;br /&gt;&lt;strong&gt;دوم:&lt;/strong&gt; سایت mytoolbox.ir آدرس فوق را در یک تگ اسکریپت به کار می‌برد به این صورت:&lt;/p&gt;  &lt;div class="coder"&gt;   &lt;p&gt;&amp;lt;script src=http://msn.com/feed/load.aspx&amp;quot; type=&amp;quot;text/javascript&amp;quot;&amp;gt;      &lt;br /&gt;&amp;lt;/script&amp;gt;&lt;/p&gt; &lt;/div&gt;  &lt;p dir="rtl" align="justify"&gt;&lt;strong&gt;طرح مشکل:&lt;/strong&gt; در حال حاضر، با اجرای صفحه حاوی اسکریپت، فید از سایت msn.com دانلود میشود اما چگونه باید به آن دسترسی داشته باشیم؟ در جاوا اسکریپت برای گرفتن مقادیر لود شده از یک فایل دیگر، باید از AJAX استفاده کنیم. اما دیدیم که در این مورد با AJAX اجازه نداریم این کار را بکنیم، پس با تکنیک کنونی باید چه کرد؟ &lt;/p&gt;  &lt;p dir="rtl" align="justify"&gt;راه حل: برای رفع این مشکل، msn.com اطلاعات خودش را به صورت یک تابع جاوااسکریپت برمی‌گرداند. یعنی در این مثال، اگر load.aspx را در مرورگر اینترتی ببینیم، به صورت زیر هست: (دقت کنید این مثال به صورت شماتیک قصد دارد موضوع رو بیان کند، بنابراین فرمت اطلاعات برگشتی خارج از بحث میباشد و فقط به صورت شماتیک data مینویسیم.)&lt;/p&gt;  &lt;div class="coder"&gt;   &lt;p&gt;ReadData(&amp;quot;data data data ...&amp;quot;)&lt;/p&gt; &lt;/div&gt;  &lt;p dir="rtl" align="justify"&gt;در واقع پاسخ، یک تابع با یک مقدار ورودی هست. بنابراین با تعریف این تابع، میتوانیم بعد از لود شدن این مقدار در تگ اسکریپت، به جاوا اسکریپت بفهمانیم که حالا با این تابع چی کار کند. بنابراین مشکل حل میشود!&lt;/p&gt;  &lt;p dir="rtl" align="justify"&gt;&lt;strong&gt;سوم:&lt;/strong&gt; تعریف تابع بازگشتی از msn.com در صفحه مورد نظر در mytoolbox.ir :&lt;/p&gt;  &lt;div class="coder"&gt;   &lt;p&gt;&amp;lt;script src=http://msn.com/feed/load.aspx&amp;quot; type=&amp;quot;text/javascript&amp;quot;&amp;gt;      &lt;br /&gt;&amp;lt;/script&amp;gt;&lt;/p&gt;    &lt;p&gt;&amp;lt;script type=&amp;quot;text/javascript&amp;quot;&amp;gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; function ReadData(f) {       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; // do anything with f, for example:       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; // alert(f)       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; }       &lt;br /&gt;&amp;lt;/script&amp;gt;&lt;/p&gt; &lt;/div&gt;  &lt;p dir="rtl" align="justify"&gt;حالا وقتی اطالاعات از سرور msn.com لود شد، در واقع تابع ReadData صدا زده میشود که در آن گفته‌ایم مثلا این فید ارسالی را با فلان فرمت در فلان جای صفحه بنویسد. بدین ترتیب مشکل خواندن از دامین های دیگر، به این صورت حل می‌شود. به این مدل &lt;strong&gt;JSONP&lt;/strong&gt; گفته میشود.&lt;/p&gt;  &lt;p dir="rtl" align="justify"&gt;&lt;strong&gt;چرا به اسمِ JSONP ؟      &lt;br /&gt;&lt;/strong&gt;در انتقال اطلاعات بین منابع مختلف، یکی از فرمتهای رایج XML هست، اما فرمت و ساختارهای دیگری هم وجود دارد. یکی از این فرمت ها که بسیار هم طرفداران پیدا کرده و روز به روز رواج بیشتری پبدا میکنه، فرمت JSON هست. این فرمت بیشتر در انتقال اطلاعات بین یک زبان سمت سرور مثل ASP.Net و برنامه نویسی سمت کلاینت یعنی جاوا اسکریپت استفاده میشود. شاید دلیلش این باشه که خوندن JSON (تلفظ: جِی سان) در جاوا اسکریپت خیلی ساده تز خوندن XML هست و نکته بعدی اینکه حجم فایلهای JSON در اکثر موارد مخصوصا زمانی که اطلاعات در حال انتقال حجم زیادی داشته باشند، نسبت به فرمت XML، کم حجم تر هست. (&lt;a title="در مورد JSON بیشتر بدانید" href="http://www.json.org/json-fa.html" target="_blank"&gt;در مورد JSON بیشتر بدانید&lt;/a&gt;)     &lt;br /&gt;نمونه کد JSON بازگشتی از تکنیک JSONP به صورت زیر می‌باشد. دقت کنید که کد اصلی JSON از خط دوم شروع میشود و myfunc نام تابع جاوا اسکریپت هست.&lt;/p&gt;  &lt;div class="coder"&gt;   &lt;p&gt;&amp;#160; myfunc(      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;quot;wesbite&amp;quot;:&amp;quot;&lt;a href="http://mytoolbox.ir"&gt;http://mytoolbox.ir&lt;/a&gt;&amp;quot;,       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;quot;language&amp;quot;:&amp;quot;Persian&amp;quot;,&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;quot;post&amp;quot;: {       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;quot;title&amp;quot;:&amp;quot;Cross Domain Javascript&amp;quot;,       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;quot;date&amp;quot;:&amp;quot;25 Feb 2010&amp;quot;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }       &lt;br /&gt;&amp;#160; );&lt;/p&gt; &lt;/div&gt;  &lt;p dir="rtl" align="justify"&gt;تکنیک ذکر شده برای ایجاد ارتباط بین دامین های مختلف در سمت کلاینت، اولین بار که مطرح شد در مورد انتقال اطلاعات در فرمت JSON بود که توسط سرویس های یاهو استفاده شد. برای همین اسم این روش رو هم JSON with Padding و به اختصار JSONP نامیده شد. و البته این تکنیک با هر فرمتی میتونه اعمال شه چرا که در روش پیاده سازی این تکنیک، هیچ محدودیتی برای اطلاعات منتقل شده وجود ندارد، چه XML باشد چه JSON چه یک خط متن!&lt;/p&gt;  &lt;p dir="rtl" align="justify"&gt;به دلیل استفاده سرویس‌های بزرگ در اینترنت از فرمت JSON در انتقال اطلاعات به وسیله API های خودشون، تقریبا این فرمت در حال همه گیر شدن هست و یه جورایی داره استاندارد میشه و البته شخصا عقیده ندارم که JSON بتونه جای XML رو بگیره. حداقل اینکه مایکروسافت همچنان از فرمت XML در سرویس‌های دات نت مثل WCF و XAML استفاده میکنه.&lt;/p&gt;  &lt;p dir="rtl" align="justify"&gt;کتابخونه jQuery برای سهولت کار، از JSONP پشتیبانی می‌کند و شما نیازی نیست به صورت دستی اقدام به پیاده سازی تکنیک ذکر شده در این مطلب، کنید. در مورد نحوه استفاده از JSONP در jQuery در مطالب آینده جعبه ابزار خواهم نوشت.&lt;/p&gt;  &lt;p dir="rtl" align="justify"&gt;مطلب آخر این که توجه کنید، برای استفاده از تکنیک JSONP، سروری که شما به آن درخواست میفرستید، باید از این تکنیک پشتیبانی کنه وگرنه سروری که به اون درخواست داده‌ایم اگر منظور ما رو از درخواست JSONP متوجه نشود، پاسخ مناسب رو به ما نخواهد داد. از کجا بفهمیم از JSONP پشتیبانی میکند؟ در 99% موارد میشه گفت اگر سرویسی پاسخ خود به درخواست رسیده رو به فرمت JSON بدهد، از JSONP پشتیبانی میکند.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;*این مطالب از خودم میباشد! اگر در اون مورد اشتباهی میبینید، ممنون میشم که اعلام کنید و استفاده از این مطلب آزاد هست و اگر دوست دارید با انصاف باشید، منبع رو هم ذکر کنید.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/mytoolbox/~4/LEe0U6WgQK0" height="1" width="1"/&gt;</description>
      <link>http://mytoolbox.ir/blog/post/Cross-Domain-Javascript.aspx</link>
      <author>me</author>
      <comments>http://mytoolbox.ir/blog/post/Cross-Domain-Javascript.aspx#comment</comments>
      <guid>http://mytoolbox.ir/blog/post.aspx?id=203361a5-524a-4e5c-b89f-b29ee6824631</guid>
      <pubDate>Wed, 24 Feb 2010 15:42:39 +0400</pubDate>
      <category>Web 2.0</category>
      <dc:publisher>me</dc:publisher>
      <pingback:server>http://mytoolbox.ir/blog/pingback.axd</pingback:server>
      <pingback:target>http://mytoolbox.ir/blog/post.aspx?id=203361a5-524a-4e5c-b89f-b29ee6824631</pingback:target>
      <slash:comments>62</slash:comments>
      <trackback:ping>http://mytoolbox.ir/blog/trackback.axd?id=203361a5-524a-4e5c-b89f-b29ee6824631</trackback:ping>
      <wfw:comment>http://mytoolbox.ir/blog/post/Cross-Domain-Javascript.aspx#comment</wfw:comment>
      <wfw:commentRss>http://mytoolbox.ir/blog/syndication.axd?post=203361a5-524a-4e5c-b89f-b29ee6824631</wfw:commentRss>
    </item>
    <item>
      <title>Parse XML in jQuery</title>
      <description>&lt;h3 dir="rtl" align="justify"&gt;تجزیه و تحلیل ایکس اِم اِل در جی‌کوئری&lt;/h3&gt;  &lt;p dir="rtl" align="justify"&gt;&lt;a href="http://mytoolbox.ir/blog/image.axd?picture=image_1.png"&gt;&lt;img style="border-right-width: 0px; margin: 0px 10px 10px 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" align="left" src="http://mytoolbox.ir/blog/image.axd?picture=image_thumb.png" width="292" height="161" /&gt;&lt;/a&gt; یکی از فرمت‌های رایج در انتقال اطلاعات، فرمت &lt;a title="تعریف ایکس ام ال در ویکی پدیا" href="http://fa.wikipedia.org/wiki/%D8%A7%DA%A9%D8%B3%E2%80%8C%D8%A7%D9%85%E2%80%8C%D8%A7%D9%84" rel="nofollow" target="_blank"&gt;XML&lt;/a&gt; می‌باشد که با ساختاری مرتب و منظم می‌تواند اطلاعات طبقه‌بندی و دسته‌بندی شده را در خودش نگهداری کند. به علت همین نظمی که در ساختار XML وجود داره، به راحتی میشه که اطلاعات اون رو در جایی دیگر استفاده کرد.&lt;/p&gt;  &lt;p dir="rtl" align="justify"&gt;یکی از بارزترین مثالهایی که میشه از استفاده از فرمت XML در انتقال اطلاعات دنیای وب، عنوان کرد، RSS Feed هست. RSS در واقع شکلی از XML به همراه ساختار استاندارد و ثابت می‌باشد که همین تعریف ساختار یکسان برای اون باعث میشه تا کاربردپذیری اون در وب بسیار بالا باشه. مثلا شما اگر یک برنامه بنویسید که RSS Feed یک سایت رو بخونه، میتونید مطمئن باشید که این برنامه شما هر RSS Feed رو میتونه بخونه چون ساختار این فایلها یکسان هستند. &lt;/p&gt;  &lt;p dir="rtl" align="justify"&gt;اگر بخواهید از مطالب موجود در آر اِس اِسِ بخشی از سایت خودتون مثلا وبلاگ سایت، در قسمتی دیگر از سایت استفاده کنید، به طور مثال در قسمت محصولات سایت شرکتی، بخواهید که چند پست آخری که در وبلاگ شرکت نوشته‌شده نمایش داده بشه، دو راه پیش رو دارید:&lt;/p&gt;  &lt;p dir="rtl" align="justify"&gt;راه اول استفاده از برنامه‌نویسی سمت سرور برای سایت شماست. برای این کار شما اول نیاز به داشتن دسترسی به سورس سایت و هاست سایت دارید. بعد از فراهم شدن این امکانات، میتوانید RSS وبلاگ را از طریق برنامه نویسی سمت سرور مثلا با استفاده از تکنیک Linq to XML خوانده و به شکل دلخواه بنویسید.&lt;/p&gt;  &lt;p dir="rtl" align="justify"&gt;در حالتی که امکانات بیشتری نیاز دارید، باید با ساختار دیتابیس وبلاگ و یا نحوه دسترسی به اطلاعات اون رو از طریق کدنویسی آشنا باشید. مثلا با ASP.Net از دیتابیس وبلاگ (و یا لایه دیتا و یا هر الگوی دیگری که در کدنویسی دارید) پست های آخر رو بخونید و اونها رو توسط مثلا یک Repeater در وب فرم خودتون قرار بدید. مثلا شما از بلاگ انجین دات نت و یا وردپرس برای وبلاگ شرکت در کنار سایت اصلی اون، استفاده کرده‌اید. برای اینکه در سمت سرور بتونید به پست های وردپرس دسترسی داشته باشید، نیاز به شناخت از API وردپرس و یا هر سیستمی که از اون استفاده کردید، دارید.&lt;/p&gt;  &lt;p dir="rtl" align="justify"&gt;راه دوم استفاده از جاوا اسکریپت و در واقع استفاده از برنامه نویسی سمت کلاینت و البته برای سهولت کار استفاده از jQuery هست. ممکن است مدل طراحی رابط کاربری شما، نیازمند استفاده از jQuery باشد و یا اصلا دسترسی به هاست نداشته باشید و یا دچار محدودیت‌هایی که در روش اول گقته شد، باشید. به هر حال، هر دلیلی که هست، شما نیاز به خواندن RSS به وسیله جاوا اسکریپت در سمت کلاینت دارید.    &lt;br /&gt;&amp;#160;&lt;/p&gt;  &lt;p dir="rtl" align="justify"&gt;&lt;strong&gt;خواندن XML در jQuery&lt;/strong&gt;&lt;/p&gt;  &lt;p dir="rtl" align="justify"&gt;همونطور که اشاره شد، RSS هم از فرمت XML استفاده میکنه، پس نحوه خواندن XML در jQuery ، خواندن RSS هم در برمیگیره. خواندن فایلهای XML در jQuery بر خلاف جاوا اسکریپت معمولی، بسیار ساده هست. فایل info.xml را به صورت زیر را در نظر بگیرید:&lt;/p&gt;  &lt;div class="coder"&gt;   &lt;p&gt;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;      &lt;br /&gt;&amp;lt;products&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;product&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;productname&amp;gt;Product one&amp;lt;/productname&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;productprice&amp;gt;100&amp;lt;/productprice&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/product&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;product&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;productname&amp;gt;Product two&amp;lt;/productname&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;productprice&amp;gt;200&amp;lt;/productprice&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/product&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;product&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;productname&amp;gt;Product three&amp;lt;/productname&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;productprice&amp;gt;300&amp;lt;/productprice&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/product&amp;gt;       &lt;br /&gt;&amp;lt;/products&amp;gt;&lt;/p&gt; &lt;/div&gt;  &lt;p dir="rtl" align="justify"&gt;برای خواندن مطالب این فایل، ابتدا نیاز به دسترسی به این فایل رو داریم. بنابراین یک درخواست برای دسترسی به این فایل به سرور ارسال میکنیم؛ البته document.ready که نشان دهنده آغاز jQuery هست رو فراموش نمی‌کنیم:&lt;/p&gt;  &lt;div class="coder"&gt;   &lt;p&gt;$(document).ready(function() { &lt;/p&gt;    &lt;p&gt;&amp;#160;&amp;#160; $.ajax({      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; type: &amp;quot;GET&amp;quot;,       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; url: &amp;quot;info.xml&amp;quot;,       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; dataType: &amp;quot;xml&amp;quot;,       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; success: ReadXML       &lt;br /&gt;&amp;#160;&amp;#160; });&lt;/p&gt;    &lt;p&gt;});&lt;/p&gt; &lt;/div&gt;  &lt;p dir="rtl" align="justify"&gt;با استفاده از دستور ajax در jQuery، درخواستی را به سرور ارسال می‌کنیم تا فایلی که در url مشخص شده است به ما بازگرداند. چون اطلاعاتی را به سرور منتقل نمیکنیم و هدف فقط خواندن هست از متد GET استفاده کرده و نوع مقدار بازگشتی هم که xml هست، توسط dataType مشخص می‌کنیم و نکته مهم اینکه باید به jQuery، تابعی که قرار است اطلاعات رسیده از سرور رو تجزیه تحلیل کنه، معرفی کنیم. در این مثال، فایل info.xml از سرور گرفته میشود و اطلاعات داخل آن به تابع ReadXML پاس داده می‌شود.&lt;/p&gt;  &lt;p dir="rtl" align="justify"&gt;در این مرحله تمام کار ما با تابع ReadXML خواهد بود. این تابع رو به صورت زیر تعریف میکنیم:&lt;/p&gt;  &lt;div class="coder"&gt;   &lt;p&gt;function ReadXML(xmldata) { &lt;/p&gt;    &lt;p&gt;&amp;#160;&amp;#160;&amp;#160; $(xmldata).find(&amp;quot;product&amp;quot;).each(function() {&lt;/p&gt;    &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; $(&amp;quot;#fromxml&amp;quot;).append('&amp;lt;p&amp;gt;' + 'Name: '      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; + $(this).find(&amp;quot;productname&amp;quot;).text()       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; + '&amp;lt;br /&amp;gt;Price: '       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; + $(this).find(&amp;quot;productprice&amp;quot;).text()       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; + '&amp;lt;/p&amp;gt;'); &lt;/p&gt;    &lt;p&gt;&amp;#160;&amp;#160;&amp;#160; });      &lt;br /&gt;}&lt;/p&gt; &lt;/div&gt;  &lt;p dir="rtl" align="justify"&gt;تابع ReadXML داری یک ورودی به اسم xmldata هست که در واقع همان مطالب info.xml هست که از طریق ajax (بخوانیم اِی‌جکس و نخوانیم آژاکس) به تابع پاس داده میشود و من هم اسم اون رو xmldata&amp;#160; گذاشتم. شما هر اسمی خواستید بگذارید! &lt;/p&gt;  &lt;p dir="rtl" align="justify"&gt;سادگی کار با xml در jQuery از اینجا شروع می‌شود که با استفاده از find تگ تگرار شونده رو پیدا میکنیم که در مثال ما product هست. بعد از پیدا کردن تگ تکرارشونده که در واقع همان سرفصل اطلاعات xml هستند، با استفاده از each، یک تابع را به هرکدام از این product ها که در فایل هستند نسبت می‌دهیم. تابع each را مثل یک حلقه for در برنامه‌نویسی تصور کنید که ابتدا و انتهای آن در این مثال از اولین تگ product هست تا آخرین.&lt;/p&gt;  &lt;p dir="rtl" align="justify"&gt;سپس برای خواندن اطلاعات زیرشاخه‌های هر product باز هم از find استفاده میکنیم با نسبت دادن آن به this که this در این مثال برمی‌گردد به آبجکتی که این تابع برای آن نوشته میشود یعنی product و در نهایت با استفاده از قابلیت text مقدار داخل تگهای داخلی را میخوانیم و با استفاده از append به قسمتی از صفحه که تعیین شده، اضافه میکنیم. با استفاده از each، این پروسه برای تمامی product های موجود در فایل، تکرار میشود و در نهایت به هدف خود میرسیم.&lt;/p&gt;  &lt;blockquote&gt;   &lt;p dir="rtl" align="justify"&gt;نکته: اگر از IE استفاده میکنید، به دلایل نا معلومی، وقتی فایل html نهایی را از روی هارد خود به صورت لوکال باز میکنید، این روش جواب نمیدهد. البته اگر روی وب سرور، چه در لوکال خودتون چه روی اینترنت، امتحان کنید، همه چیز به درستی کار خواهد کرد. برای تست لوکال اگر با فایل html کار میکنید و میخواهید با اجرا کردن فایل با کلیک، کد را تست کنید از فایرفاکس استفاده کنید. اگر هم که از php یا asp و یا هر فرمت تحت سرور دیگری استفاده میکنید که خوب مجبورید فایل رو از طریق وب سرور ببینید و در این صورت اصلا مشکلی شما رو تهدید نمیکنه! &lt;/p&gt; &lt;/blockquote&gt;  &lt;p dir="rtl" align="justify"&gt;همه چیز با هم به صورت زیر خواهد شد:&lt;/p&gt;  &lt;div class="coder"&gt;   &lt;p&gt;&amp;lt;html xmlns=&amp;quot;http://www.w3.org/1999/xhtml&amp;quot;&amp;gt;      &lt;br /&gt;&amp;lt;head&amp;gt;       &lt;br /&gt;&amp;lt;meta http-equiv=&amp;quot;Content-Type&amp;quot; content=&amp;quot;text/html; charset=utf-8&amp;quot; /&amp;gt;       &lt;br /&gt;&amp;lt;title&amp;gt;Read XML with jQuery&amp;lt;/title&amp;gt;       &lt;br /&gt;&amp;lt;script type=&amp;quot;text/javascript&amp;quot; src=&amp;quot;&lt;strong&gt;&lt;em&gt;path_to_jquery&lt;/em&gt;&lt;/strong&gt;&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;       &lt;br /&gt;&amp;lt;script type=&amp;quot;text/javascript&amp;quot;&amp;gt;       &lt;br /&gt;$(document).ready(function() { &lt;/p&gt;    &lt;p&gt;$(&amp;quot;#fromxml&amp;quot;).text(&amp;quot;loading...&amp;quot;); &lt;/p&gt;    &lt;p&gt;$.ajax({      &lt;br /&gt;&amp;#160;&amp;#160; type: &amp;quot;GET&amp;quot;,       &lt;br /&gt;&amp;#160;&amp;#160; url: &amp;quot;info.xml&amp;quot;,       &lt;br /&gt;&amp;#160;&amp;#160; dataType: &amp;quot;xml&amp;quot;,       &lt;br /&gt;&amp;#160;&amp;#160; success: ReadXML       &lt;br /&gt;}); &lt;/p&gt;    &lt;p&gt;function ReadXML(xmldata) {      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; $(&amp;quot;#fromxml&amp;quot;).empty();       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; $(xmldata).find(&amp;quot;product&amp;quot;).each(function() {       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; $(&amp;quot;#fromxml&amp;quot;).append('&amp;lt;p&amp;gt;' + 'Name: '       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; + $(this).find(&amp;quot;productname&amp;quot;).text()       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; + '&amp;lt;br /&amp;gt;Price: '       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; + $(this).find(&amp;quot;productprice&amp;quot;).text()       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; + '&amp;lt;/p&amp;gt;');       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; });       &lt;br /&gt;} &lt;/p&gt;    &lt;p&gt;});      &lt;br /&gt;&amp;lt;/script&amp;gt;       &lt;br /&gt;&amp;lt;/head&amp;gt;       &lt;br /&gt;&amp;lt;body&amp;gt;       &lt;br /&gt;&amp;lt;div id=&amp;quot;fromxml&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;       &lt;br /&gt;&amp;lt;/body&amp;gt;       &lt;br /&gt;&amp;lt;/html&amp;gt;&lt;/p&gt;    &lt;p&gt;&lt;/p&gt; &lt;/div&gt;  &lt;p dir="rtl" align="justify"&gt;اگر به کد کامل دقت کرده باشید،&amp;#160; قبل از ارسال ajax، عبارتی در formxml نوشته میشود تا کاربر در هنگام دیدن این صفحه، متوجه شود که در قسمتی از صفحه، اطلاعاتی در حال لود شدن هست؛ و البته در نهایت، در تابع ReadXML یعنی وقتی که پاسخ درخواست رسیده است، اول formxml زا با استفاده از روش empty خالی میکنیم و سپس اطلاعات خوانده شده و به شکل دلخواه درآمده را در آن قسمت اضافه میکنیم.&lt;/p&gt;  &lt;p dir="rtl" align="justify"&gt;در ضمن برای استفاده از کتابخونه اصلی jQuery که در مثال به صورت &lt;strong&gt;&lt;em&gt;path_to_jquery &lt;/em&gt;&lt;/strong&gt;آمده است، آدرس دهی مناسب رو یا از روی فایلهای خودتان و یا از طریق &lt;a title="افزایش سرعت لود شدن jQuery با استفاده از CDN" href="http://mytoolbox.ir/blog/post/Use-jQuery-CDN-from-Microsoft-or-Google.aspx" target="_blank"&gt;CDN&lt;/a&gt; انجام دهید. این نکته رو برای این یادآوری کردم چون اگر همین کد را copy-paste کنید، کار نخواهد کرد :دی&lt;/p&gt;  &lt;p dir="rtl" align="justify"&gt;به همین ترتیب می‌توان RSS را هم در قسمتی از صفحه وب اضافه کرد. تنها تفاوت با نمونه کد نوشته شده، نام تگ های موجود در RSS هست که به سادگی میتوان آن ها را در کد نوشته شده، جایگزین کرد. مثلا در RSS، تگ تکرار شونده item هست و تگ های داخلی اون هم تگ هایی مثل title، description و link هست که این تگ ها رو به سادگی با دیدن سورس RSS سایت خودتون میتونید پیدا کنید.&lt;/p&gt;  &lt;blockquote&gt;   &lt;p dir="rtl" align="justify"&gt;نکته: در جاوا اسکریپت به علت رعایت مسائل امنیتی، فقط و فقط درخواست ajax باید از فایلهای موجود در دامین مشابه با جایی که درخواست دهنده هست، صورت بپذیرد. مثلا از mytoolbox.ir &lt;strong&gt;نمی‌توان&lt;/strong&gt; به styles.ir درخواست فایل RSS را توسط jQuery داد.&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p dir="rtl" align="justify"&gt;برای استفاده از jQuery یرای درخواست های بین دو سایت با دامین مختلف که به اصطلاح به اون Cross Domain گفته میشه، راه های دیگری وجود دارد که در پست های آینده جعبه ابزار به اونها اشاره خواهد شد؛ پس منتظر باشید.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p dir="rtl" align="justify"&gt;*این مطالب از خودم میباشد! اگر در اون مورد اشتباهی میبینید، ممنون میشم که اعلام کنید و استفاده از این مطلب آزاد هست و اگر دوست دارید با انصاف باشید، منبع رو هم ذکر کنید.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/mytoolbox/~4/P55cBvzd7mo" height="1" width="1"/&gt;</description>
      <link>http://mytoolbox.ir/blog/post/Parse-XML-in-jQuery.aspx</link>
      <author>me</author>
      <comments>http://mytoolbox.ir/blog/post/Parse-XML-in-jQuery.aspx#comment</comments>
      <guid>http://mytoolbox.ir/blog/post.aspx?id=b3acc34b-d3ea-4a94-b146-28d9db242ddb</guid>
      <pubDate>Sat, 20 Feb 2010 16:57:36 +0400</pubDate>
      <category>jQuery</category>
      <dc:publisher>me</dc:publisher>
      <pingback:server>http://mytoolbox.ir/blog/pingback.axd</pingback:server>
      <pingback:target>http://mytoolbox.ir/blog/post.aspx?id=b3acc34b-d3ea-4a94-b146-28d9db242ddb</pingback:target>
      <slash:comments>34</slash:comments>
      <trackback:ping>http://mytoolbox.ir/blog/trackback.axd?id=b3acc34b-d3ea-4a94-b146-28d9db242ddb</trackback:ping>
      <wfw:comment>http://mytoolbox.ir/blog/post/Parse-XML-in-jQuery.aspx#comment</wfw:comment>
      <wfw:commentRss>http://mytoolbox.ir/blog/syndication.axd?post=b3acc34b-d3ea-4a94-b146-28d9db242ddb</wfw:commentRss>
    </item>
  </channel>
</rss>

