برچسب‌های نوشته ‘tips’

ایده‌های توییتری خود را قبل از اجرا تست کنید

اردیبهشت ۱۳م, ۱۳۸۹

twitterconsole هنگامی که کتاب توییتر را پیاده‌سازی می‌کردم برای تست بعضی حالت‌ها در فراخوانی API توییتر مجبور بودم برنامه را تغییر بدهم و مجدداً کامپایل و منتشر کنم. کمی بعد متوجه وجود سایت hurl شدم که کارش ایجاد HTTP Request است. به کمک این سایت به راحتی می‌توانید با ارسال درخواست HTTP و در صورت نیاز ست کردن header خروجی را در قالب مورد نظر (مثلاً json) بسته به آدرس درخواستی ببینید.

بخش توسعه دهندگان توییتر هم با الهام گرفتن از hurl اقدام به ایجاد کنسول API کرده است. در بخش کنسول می‌توانید توابع مختلف API توییتر را تست کنید و نتیجه درخواست خود را ببینید. اگر می‌خواهید برنامه‌ای مبتنی بر قابلیت‌های توییتر بنویسید یا ایده‌ای برای استفاده از توییتر در کسب و کار خود دارید، قبل از شروع می‌توانید از امکانات بخش کنسول API توییتر بهره بگیرید تا دید بهتری نسبت به ساختار برنامه و خروجی آن داشته باشید. برای استفاده از امکانات این بخش ابتدا باید اپلیکیشنی را ثبت کنید که به سادگی از طریق این فرم امکان‌پذیر است.

Problem Steps Recorder در ویندوز ۷

بهمن ۱۸م, ۱۳۸۸

توسعه دهندگان نرم افزار همواره با  خطاهای نرم افزاری روبرو هستند که باید رفع شوند. اغلب این خطاها بعد از اینکه برنامه در محیط واقعی و زیر دست کاربران واقعی سیستم نرم افزاری قرار می‌گیرد کشف می‌شوند. اما همیشه پیدا کردن شرایطی که باعث ایجاد خطا می‌شود ساده نیست.
این موضوع دلایلی مختلفی از جمله پیچیدگی نحوه عملکرد نرم افزارها در شرایط مختلف، ناآگاهی یا ناتوانی کاربران استفاده کننده در نرم افزار در توضیح خطای به وجود آمده یا شرایطی که باعث به وجود آمدن آن خطا شده و … می‌تواند داشته باشد.

ویندوز ۷ یک ویژگی جالب به نام  Problem Steps Recorderدارد که می‌تواند تمام حرکات کاربر را به صورت مجموعه‌ای از اسکرین شات‌ها به همراه توضیح ذخیره کند. در فایل خروجی این برنامه که به صورت MHTML هست امکان مشاهده مجموعه اکشن‌های کاربر به صورت اسلایدشو نیز وجود دارد.

Problem Step Recorder

برای استفاده از Problem Steps Recorder در منوی استارت عبارت psr را تایپ کرده و کلید Enter را بزنید. استفاده از این ویژگی به برنامه نویسان و توسعه دهندگان نرم افزار کمک می‌کند تا با شناخت بهتر از مجموعه‌ای اتفاقاتی که باعث بروز خطا در نرم افزار شده، سریعتر و بهتر کار دیباگ کردن را دنبال کنند.

پرسش‌های متداول درباره ASP.NET Membership

مرداد ۲۱م, ۱۳۸۸

توضیح: این یادداشت به تدریج تکمیل و به روز خواهد شد، لطفاً اگر سوال یا ابهامی در مورد نحوه کار با ASP.NET Membership داشتید کامنت بگذارید.

اغلب کسانی به تازگی با ASP.NET آشنا می‌شوند در استفاده از امکانات membership سوالات و مشکلاتی دارند که در این نوشته به برخی از آن‌ها نگاهی می‌اندازیم.

حذف ASPNETDB
به صورت پیش فرض وقتی شما از یکی از کنترل‌های مربوط به ASP.NET Membership مثلاً CreateUserWizard استفاده می‌کنید یک دیتابیس به نام ASPNETDB در پوشه App_Data ساخته می‌شود.
اگر می‌خواهید از دیتابیسی که خودتان ساخته‌اید برای کار با ASP.NET Membership استفاده کنید باید کارهای زیر را انجام بدهید:

۱-commnad prompt ویژوال استودیو را اجرا کنید و در آن دستور aspnet_regsql را بنویسید، در پنجره‌ای که باز می‌شود دیتابیسی که می‌خواهید از membership در آن استفاده کنید را مشخص کنید تا جداول و دیگر موارد مربوط به membership به آن اضافه شود. توضیحات بیشتر…

۲-یک Connection String در web.config خودتان برای دیتابیسی که ساخته‌اید ایجاد کنید.

<connectionStrings>
   <add name="MyConnection"   
   connectionString="Your_Connection_string"
   providerName="System.Data.SqlClient" />
</connectionStrings>

3-حالا باید به اجزای مختلف ASP.NET Membership بگویید که با استفاده از connection string ای که در مرحله قبل ساختید به دیتابیس شما متصل شوند. به عنوان مثال:

<membership defaultProvider="SqlProvider" userIsOnlineTimeWindow="20">
   <providers>
      <add name="SqlProvider"
       type="System.Web.Security.SqlMembershipProvider"
       connectionStringName="MyConnection" applicationName="/"/>
   </providers>
</membership>

این کار را می‌توانید برای دیگر اجزای membership‌ مثل rolemanager و profile هم انجام دهید.

پیدا کردن UserId

فرض کنید در وب سایت یا برنامه‌ای که در حال پیاده‌سازی آن هستید رابطه (relation) بین جداول ساخته شده توسط شما و جداول asp.net membership وجود دارد. معمولاً این رابطه با جدول aspnet_Users و با فیلد UserId است. حالا در برنامه‌تان باید به شکلی UserId را پیدا کنید. تابع زیر با گرفتن یک username به عنوان پارامتر userId آن کاربر را به شکل رشته برمی‌گرداند:

public string GetUserId(string userName)
{
  MembershipUser myObject = Membership.GetUser(userName);
  string UserID = myObject.ProviderUserKey.ToString();
  return UserID;
}

حذف Security Quesion‌ و Security Answer

حذف Security Question و Security Answer و همچنین تغییر قانون مربوط به کلمه عبور نیز از جمله سوالات متداول مربوط به ASP.NET Membership است. این کار را می‌توانید از طریق ویرایش provider ای که برای membership‌ در web.config تعریف کرده‌اید انجام دهید:

<membership defaultProvider="SqlProvider" userIsOnlineTimeWindow="20">
 <providers>
   <add name="SqlProvider"
    type="System.Web.Security.SqlMembershipProvider"
    connectionStringName="MyConnection"
    minRequiredPasswordLength="5"
    minRequiredNonalphanumericCharacters="0"
    requiresQuestionAndAnswer="false"
    applicationName="/"/>
 </providers>
</membership>

در مثال بالا membership برای کلمات عبوری با حداقل طول ۵ کاراکتر و بدون نیاز به کاراکترهای غیرحرف و عددی و همین‌طور برای عدم استفاده از Security Question و Security Answer تنظیم شده است.

ویرایش پروفایل کاربران دیگر

ویرایش پروفایل کاربر جاری به راحتی امکان پذیر است، اما برای ویرایش پروفایل دیگر کاربران می‌توانید از تابع زیر استفاده کنید. قبل از هر چیز فرض می‌کنیم دو property تحت عنوان‌های Name و Family به پروفایل در web.config اضافه کرده‌ایم:

<profile automaticSaveEnabled="false" enabled="true">
  <properties>
    <add name="Name"/>
    <add name="Family"/>
  </properties>
</profile>

تابع زیر username کاربر را به عنوان ورودی گرفته و تغییرات داده شده روی نام و نام خانوادگی کاربر(که قبلاً در web.config تعریف شده‌اند) را در پروفایل کاربر ثبت می‌کند، شما می‌توانید این تابع را با توجه به نیاز خود و فیلدهای پروفایلی که تعریف کرده‌اید سفارشی کنید:

private void UpdateProfile(string userName)
{
   ProfileCommon userProfile = Profile.GetProfile(userName);
   userProfile.Name = txtName.Text;
   userProfile.Family = txtFamily.Text;
   userProfile.Save();
}

با استفاده از کد بالا می‌توانید یک فرم ثبت‌نام سفارشی برای خودتان بسازید که شامل نام‌ کاربری، کلمه عبور، پست الکترونیک، نام و نام خانوادگی است. اگر پنج textbox برای هریک از این فیلدها داشته باشید کد شما برای اضافه کردن یک کاربر، به همراه نام و نام خانوادگی به شکل زیر خواهد بود:

private void Register()
{
 //Add User
 MembershipUser newUser =
  Membership.CreateUser(txtUsername.Text, txtPassword.Text, txtEmail.Text);
 Membership.UpdateUser(newUser);
 //Add Name and Family
 ProfileCommon userProfile = Profile.GetProfile(txtUsername.Text);
 userProfile.Name = txtName.Text;
 userProfile.Family = txtFamily.Text;
 userProfile.Save();
}