<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>آرایه &#187; tips</title>
	<atom:link href="http://www.saeedifard.com/tag/tips/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.saeedifard.com</link>
	<description>نوشته‌ های حامد سعیدی فرد درباره فناوری اطلاعات و کارآفرینی</description>
	<lastBuildDate>Thu, 02 Feb 2012 06:47:22 +0000</lastBuildDate>
	<language>fa</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>ایده&#8204;های توییتری خود را قبل از اجرا تست کنید</title>
		<link>http://www.saeedifard.com/1389/02/twitter-api-console/</link>
		<comments>http://www.saeedifard.com/1389/02/twitter-api-console/#comments</comments>
		<pubDate>Mon, 03 May 2010 18:53:10 +0000</pubDate>
		<dc:creator>حامد سعیدی فرد</dc:creator>
				<category><![CDATA[برنامه نویسی]]></category>
		<category><![CDATA[tips]]></category>
		<category><![CDATA[twitter]]></category>

		<guid isPermaLink="false">http://www.saeedifard.com/1389/02/twitter-api-console/</guid>
		<description><![CDATA[هنگامی که کتاب توییتر را پیاده‌سازی می‌کردم برای تست بعضی حالت‌ها در فراخوانی API توییتر مجبور بودم برنامه را تغییر بدهم و مجدداً کامپایل و منتشر کنم. کمی بعد متوجه وجود سایت hurl شدم که کارش ایجاد HTTP Request است. به کمک این سایت به راحتی می‌توانید با ارسال درخواست HTTP و در صورت نیاز [...]<p><hr />
<script type="text/javascript" src="http://anetwork.ir/showad/?adwidth=468&adheight=60&aduser=1293700559"></script>
</p>
]]></description>
			<content:encoded><![CDATA[<p dir="rtl" align="justify"><img title="twitterconsole" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; margin: 5px 15px 5px 5px; border-right-width: 0px" height="149" alt="twitterconsole" src="http://www.saeedifard.com/wp-content/uploads/2010/05/twitterconsole.png" width="194" align="left" border="0" /> هنگامی که <a rel="nofollow" href="http://tb.itkav.com/" target="_blank">کتاب توییتر</a> را پیاده‌سازی می‌کردم برای تست بعضی حالت‌ها در فراخوانی API توییتر مجبور بودم برنامه را تغییر بدهم و مجدداً کامپایل و منتشر کنم. کمی بعد متوجه وجود سایت <a rel="nofollow" href="http://hurl.it/" target="_blank">hurl</a> شدم که کارش ایجاد HTTP Request است. به کمک این سایت به راحتی می‌توانید با ارسال درخواست HTTP و در صورت نیاز ست کردن header خروجی را در قالب مورد نظر (مثلاً json) بسته به آدرس درخواستی ببینید.</p>
<p dir="rtl" align="justify">بخش توسعه دهندگان توییتر هم با الهام گرفتن از hurl اقدام به ایجاد <a rel="nofollow" href="http://dev.twitter.com/console" target="_blank">کنسول API</a> کرده است. در بخش کنسول می‌توانید توابع مختلف API توییتر را تست کنید و نتیجه درخواست خود را ببینید. اگر می‌خواهید برنامه‌ای مبتنی بر قابلیت‌های توییتر بنویسید یا ایده‌ای برای استفاده از توییتر در کسب و کار خود دارید، قبل از شروع می‌توانید از امکانات بخش کنسول API توییتر بهره بگیرید تا دید بهتری نسبت به ساختار برنامه و خروجی آن داشته باشید. برای استفاده از امکانات این بخش ابتدا باید اپلیکیشنی را ثبت کنید که به سادگی از طریق <a rel="nofollow" href="http://dev.twitter.com/apps/new" target="_blank">این فرم</a> امکان‌پذیر است.</p>
<p><hr />
<script type="text/javascript" src="http://anetwork.ir/showad/?adwidth=468&adheight=60&aduser=1293700559"></script>
</p>
]]></content:encoded>
			<wfw:commentRss>http://www.saeedifard.com/1389/02/twitter-api-console/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Problem Steps Recorder در ویندوز ۷</title>
		<link>http://www.saeedifard.com/1388/11/windows-7-problem-steps-recorder/</link>
		<comments>http://www.saeedifard.com/1388/11/windows-7-problem-steps-recorder/#comments</comments>
		<pubDate>Sun, 07 Feb 2010 16:22:11 +0000</pubDate>
		<dc:creator>حامد سعیدی فرد</dc:creator>
				<category><![CDATA[نرم افزار]]></category>
		<category><![CDATA[tips]]></category>
		<category><![CDATA[windows 7]]></category>

		<guid isPermaLink="false">http://www.saeedifard.com/1388/11/windows-7-problem-steps-recorder/</guid>
		<description><![CDATA[توسعه دهندگان نرم افزار همواره با  خطاهای نرم افزاری روبرو هستند که باید رفع شوند. اغلب این خطاها بعد از اینکه برنامه در محیط واقعی و زیر دست کاربران واقعی سیستم نرم افزاری قرار می‌گیرد کشف می‌شوند. اما همیشه پیدا کردن شرایطی که باعث ایجاد خطا می‌شود ساده نیست. این موضوع دلایلی مختلفی از جمله [...]<p><hr />
<script type="text/javascript" src="http://anetwork.ir/showad/?adwidth=468&adheight=60&aduser=1293700559"></script>
</p>
]]></description>
			<content:encoded><![CDATA[<p>توسعه دهندگان نرم افزار همواره با  خطاهای نرم افزاری روبرو هستند که باید رفع شوند. اغلب این خطاها بعد از اینکه برنامه در محیط واقعی و زیر دست کاربران واقعی سیستم نرم افزاری قرار می‌گیرد کشف می‌شوند. اما همیشه پیدا کردن شرایطی که باعث ایجاد خطا می‌شود ساده نیست.<br />
این موضوع دلایلی مختلفی از جمله پیچیدگی نحوه عملکرد نرم افزارها در شرایط مختلف، ناآگاهی یا ناتوانی کاربران استفاده کننده در نرم افزار در توضیح خطای به وجود آمده یا شرایطی که باعث به وجود آمدن آن خطا شده و … می‌تواند داشته باشد.</p>
<p>ویندوز ۷ یک ویژگی جالب به نام  Problem Steps Recorderدارد که می‌تواند تمام حرکات کاربر را به صورت مجموعه‌ای از اسکرین شات‌ها به همراه توضیح ذخیره کند. در فایل خروجی این برنامه که به صورت MHTML هست امکان مشاهده مجموعه اکشن‌های کاربر به صورت اسلایدشو نیز وجود دارد.</p>
<p style="text-align: center;"><img class="aligncenter" style="display: inline; border: 0px;" title="Problem Step Recorder" src="http://www.saeedifard.com/wp-content/uploads/2010/02/psr.png" border="0" alt="Problem Step Recorder" width="442" height="69" /></p>
<p>برای استفاده از Problem Steps Recorder در منوی استارت عبارت psr را تایپ کرده و کلید Enter را بزنید. استفاده از این ویژگی به برنامه نویسان و توسعه دهندگان نرم افزار کمک می‌کند تا با شناخت بهتر از مجموعه‌ای اتفاقاتی که باعث بروز خطا در نرم افزار شده، سریعتر و بهتر کار دیباگ کردن را دنبال کنند.</p>
<p><hr />
<script type="text/javascript" src="http://anetwork.ir/showad/?adwidth=468&adheight=60&aduser=1293700559"></script>
</p>
]]></content:encoded>
			<wfw:commentRss>http://www.saeedifard.com/1388/11/windows-7-problem-steps-recorder/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>پرسش&#8204;های متداول درباره ASP.NET Membership</title>
		<link>http://www.saeedifard.com/1388/05/asp-net-membership-faq/</link>
		<comments>http://www.saeedifard.com/1388/05/asp-net-membership-faq/#comments</comments>
		<pubDate>Wed, 12 Aug 2009 09:21:48 +0000</pubDate>
		<dc:creator>حامد سعیدی فرد</dc:creator>
				<category><![CDATA[برنامه نویسی]]></category>
		<category><![CDATA[asp.net]]></category>
		<category><![CDATA[membership]]></category>
		<category><![CDATA[profile]]></category>
		<category><![CDATA[rolemanager]]></category>
		<category><![CDATA[tips]]></category>
		<category><![CDATA[web.config]]></category>

		<guid isPermaLink="false">http://www.saeedifard.com/1388/05/asp-net-membership-faq/</guid>
		<description><![CDATA[توضیح: این یادداشت به تدریج تکمیل و به روز خواهد شد، لطفاً اگر سوال یا ابهامی در مورد نحوه کار با ASP.NET Membership داشتید کامنت بگذارید. اغلب کسانی به تازگی با ASP.NET آشنا می‌شوند در استفاده از امکانات membership سوالات و مشکلاتی دارند که در این نوشته به برخی از آن‌ها نگاهی می‌اندازیم. حذف ASPNETDB [...]<p><hr />
<script type="text/javascript" src="http://anetwork.ir/showad/?adwidth=468&adheight=60&aduser=1293700559"></script>
</p>
]]></description>
			<content:encoded><![CDATA[<blockquote>
<p align="justify"><strong>توضیح: </strong>این یادداشت به تدریج تکمیل و به روز خواهد شد، لطفاً اگر سوال یا ابهامی در مورد نحوه کار با ASP.NET Membership داشتید کامنت بگذارید.</p>
</blockquote>
<p align="justify">اغلب کسانی به تازگی با ASP.NET آشنا می‌شوند در استفاده از امکانات membership سوالات و مشکلاتی دارند که در این نوشته به برخی از آن‌ها نگاهی می‌اندازیم.</p>
<p align="justify"><strong>حذف ASPNETDB<br />
</strong>به صورت پیش فرض وقتی شما از یکی از کنترل‌های مربوط به ASP.NET Membership مثلاً CreateUserWizard استفاده می‌کنید یک دیتابیس به نام ASPNETDB در پوشه App_Data ساخته می‌شود.<br />
اگر می‌خواهید از دیتابیسی که خودتان ساخته‌اید برای کار با ASP.NET Membership استفاده کنید باید کارهای زیر را انجام بدهید:</p>
<p align="justify">۱-commnad prompt ویژوال استودیو را اجرا کنید و در آن دستور aspnet_regsql را بنویسید، در پنجره‌ای که باز می‌شود دیتابیسی که می‌خواهید از membership در آن استفاده کنید را مشخص کنید تا جداول و دیگر موارد مربوط به membership به آن اضافه شود. <a rel="nofollow" href="http://hyperweb.wordpress.com/2007/03/11/%D8%B3%D8%B1%D9%88%DB%8C%D8%B3%D9%87%D8%A7%DB%8C-aspnet-20-%D8%AF%D8%B1-sql-server-2000/" target="_blank">توضیحات بیشتر…</a></p>
<p align="justify">۲-یک Connection String در web.config خودتان برای دیتابیسی که ساخته‌اید ایجاد کنید.</p>
<pre class="code" style="text-align: left; direction: ltr"><span style="color: blue">&lt;</span><span style="color: #a31515">connectionStrings</span><span style="color: blue">&gt;
   &lt;</span><span style="color: #a31515">add </span><span style="color: red">name</span><span style="color: blue">=</span>"<span style="color: blue">MyConnection</span>"   <span style="color: red">
   connectionString</span><span style="color: blue">=</span>"Your_Connection_string"
   <span style="color: red">providerName</span><span style="color: blue">=</span>"<span style="color: blue">System.Data.SqlClient</span>" <span style="color: blue">/&gt;
&lt;/</span><span style="color: #a31515">connectionStrings</span><span style="color: blue">&gt;</span></pre>
<p align="justify">3-حالا باید به اجزای مختلف ASP.NET Membership بگویید که با استفاده از connection string ای که در مرحله قبل ساختید به دیتابیس شما متصل شوند. به عنوان مثال:</p>
<pre class="code" style="text-align: left; direction: ltr"><span style="color: blue">&lt;</span><span style="color: #a31515">membership </span><span style="color: red">defaultProvider</span><span style="color: blue">=</span>"<span style="color: blue">SqlProvider</span>" <span style="color: red">userIsOnlineTimeWindow</span><span style="color: blue">=</span>"<span style="color: blue">20</span>"<span style="color: blue">&gt;
   &lt;</span><span style="color: #a31515">providers</span><span style="color: blue">&gt;
      </span><span style="color: blue">&lt;</span><span style="color: #a31515">add </span><span style="color: red">name</span><span style="color: blue">=</span>"<span style="color: blue">SqlProvider</span>"
       <span style="color: red">type</span><span style="color: blue">=</span>"<span style="color: blue">System.Web.Security.SqlMembershipProvider</span>"
       <span style="color: red">connectionStringName</span><span style="color: blue">=</span>"<span style="color: blue">MyConnection</span>" <span style="color: red">applicationName</span><span style="color: blue">=</span>"<span style="color: blue">/</span>"<span style="color: blue">/&gt;
   &lt;/</span><span style="color: #a31515">providers</span><span style="color: blue">&gt;
&lt;/</span><span style="color: #a31515">membership</span><span style="color: blue">&gt;</span></pre>
<p align="justify">این کار را می‌توانید برای دیگر اجزای membership‌ مثل rolemanager و profile هم انجام دهید.</p>
<p align="justify"><strong>پیدا کردن UserId</strong></p>
<p><strong> </strong>فرض کنید در وب سایت یا برنامه‌ای که در حال پیاده‌سازی آن هستید رابطه (relation) بین جداول ساخته شده توسط شما و جداول asp.net membership وجود دارد. معمولاً این رابطه با جدول aspnet_Users و با فیلد UserId است. حالا در برنامه‌تان باید به شکلی UserId را پیدا کنید. تابع زیر با گرفتن یک username به عنوان پارامتر userId آن کاربر را به شکل رشته برمی‌گرداند:</p>
<pre class="code" style="text-align: left; direction: ltr"><span style="color: blue">public string </span>GetUserId(<span style="color: blue">string </span>userName)
{
  <span style="color: #2b91af">MembershipUser </span>myObject = <span style="color: #2b91af">Membership</span>.GetUser(userName);
  <span style="color: blue">string </span>UserID = myObject.ProviderUserKey.ToString();
  <span style="color: blue">return </span>UserID;
}</pre>
<p align="justify"><strong>حذف Security Quesion‌ و Security Answer</strong></p>
<p><strong> </strong>حذف Security Question و Security Answer و همچنین تغییر قانون مربوط به کلمه عبور نیز از جمله سوالات متداول مربوط به ASP.NET Membership است. این کار را می‌توانید از طریق ویرایش provider ای که برای membership‌ در web.config تعریف کرده‌اید انجام دهید:</p>
<pre class="code" style="text-align: left; direction: ltr"><span style="color: blue">&lt;</span><span style="color: #a31515">membership </span><span style="color: red">defaultProvider</span><span style="color: blue">=</span>"<span style="color: blue">SqlProvider</span>" <span style="color: red">userIsOnlineTimeWindow</span><span style="color: blue">=</span>"<span style="color: blue">20</span>"<span style="color: blue">&gt;
 &lt;</span><span style="color: #a31515">providers</span><span style="color: blue">&gt;
   </span><span style="color: blue">&lt;</span><span style="color: #a31515">add </span><span style="color: red">name</span><span style="color: blue">=</span>"<span style="color: blue">SqlProvider</span>"
    <span style="color: red">type</span><span style="color: blue">=</span>"<span style="color: blue">System.Web.Security.SqlMembershipProvider</span>"
    <span style="color: red">connectionStringName</span><span style="color: blue">=</span>"<span style="color: blue">MyConnection</span>"
    <span style="color: red">minRequiredPasswordLength</span><span style="color: blue">=</span>"<span style="color: blue">5</span>"
    <span style="color: red">minRequiredNonalphanumericCharacters</span><span style="color: blue">=</span>"<span style="color: blue">0</span>"
    <span style="color: red">requiresQuestionAndAnswer</span><span style="color: blue">=</span>"<span style="color: blue">false</span>"
    <span style="color: red">applicationName</span><span style="color: blue">=</span>"<span style="color: blue">/</span>"<span style="color: blue">/&gt;
 &lt;/</span><span style="color: #a31515">providers</span><span style="color: blue">&gt;
&lt;/</span><span style="color: #a31515">membership</span><span style="color: blue">&gt;</span></pre>
<p align="justify"><strong> </strong></p>
<p align="justify">در مثال بالا membership برای کلمات عبوری با حداقل طول ۵ کاراکتر و بدون نیاز به کاراکترهای غیرحرف و عددی و همین‌طور برای عدم استفاده از Security Question و Security Answer تنظیم شده است.</p>
<p align="justify"><strong>ویرایش پروفایل کاربران دیگر</strong></p>
<p><strong> </strong>ویرایش پروفایل کاربر جاری به راحتی امکان پذیر است، اما برای ویرایش پروفایل دیگر کاربران می‌توانید از تابع زیر استفاده کنید. قبل از هر چیز فرض می‌کنیم دو property تحت عنوان‌های Name و Family به پروفایل در web.config اضافه کرده‌ایم:</p>
<pre class="code" style="text-align: left; direction: ltr"><span style="color: blue">&lt;</span><span style="color: #a31515">profile</span> <span style="color: red">automaticSaveEnabled</span><span style="color: blue">=</span>"<span style="color: blue">false</span>" <span style="color: red">enabled</span><span style="color: blue">=</span>"<span style="color: blue">true</span>"<span style="color: blue">&gt;
  </span><span style="color: blue">&lt;</span><span style="color: #a31515">properties</span><span style="color: blue">&gt;
    &lt;</span><span style="color: #a31515">add </span><span style="color: red">name</span><span style="color: blue">=</span>"<span style="color: blue">Name</span>"<span style="color: blue">/&gt;
    &lt;</span><span style="color: #a31515">add </span><span style="color: red">name</span><span style="color: blue">=</span>"<span style="color: blue">Family</span>"<span style="color: blue">/&gt;
  &lt;/</span><span style="color: #a31515">properties</span><span style="color: blue">&gt;
&lt;/</span><span style="color: #a31515">profile</span><span style="color: blue">&gt;</span></pre>
<p align="justify">تابع زیر username کاربر را به عنوان ورودی گرفته و تغییرات داده شده روی نام و نام خانوادگی کاربر(که قبلاً در web.config تعریف شده‌اند) را در پروفایل کاربر ثبت می‌کند، شما می‌توانید این تابع را با توجه به نیاز خود و فیلدهای پروفایلی که تعریف کرده‌اید سفارشی کنید:</p>
<pre class="code" style="text-align: left; direction: ltr"><span style="color: blue">private void </span>UpdateProfile(<span style="color: blue">string </span>userName)
{
   <span style="color: #2b91af">ProfileCommon </span>userProfile = Profile.GetProfile(userName);
   userProfile.Name = txtName.Text;
   userProfile.Family = txtFamily.Text;
   userProfile.Save();
}</pre>
<p align="justify">با استفاده از کد بالا می‌توانید یک فرم ثبت‌نام سفارشی برای خودتان بسازید که شامل نام‌ کاربری، کلمه عبور، پست الکترونیک، نام و نام خانوادگی است. اگر پنج textbox برای هریک از این فیلدها داشته باشید کد شما برای اضافه کردن یک کاربر، به همراه نام و نام خانوادگی به شکل زیر خواهد بود:</p>
<pre class="code" style="text-align: left; direction: ltr"><span style="color: blue">private void </span>Register()
{
<span style="color: green"> //Add User
 </span><span style="color: #2b91af">MembershipUser </span>newUser =
  <span style="color: #2b91af">Membership</span>.CreateUser(txtUsername.Text, txtPassword.Text, txtEmail.Text);
 <span style="color: #2b91af">Membership</span>.UpdateUser(newUser);
 <span style="color: green">//Add Name and Family
 </span><span style="color: #2b91af">ProfileCommon </span>userProfile = Profile.GetProfile(txtUsername.Text);
 userProfile.Name = txtName.Text;
 userProfile.Family = txtFamily.Text;
 userProfile.Save();
}</pre>
<p><hr />
<script type="text/javascript" src="http://anetwork.ir/showad/?adwidth=468&adheight=60&aduser=1293700559"></script>
</p>
]]></content:encoded>
			<wfw:commentRss>http://www.saeedifard.com/1388/05/asp-net-membership-faq/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>

