نظرات مطالب
پیاده سازی عملیات CRUD با استفاده از پروتکل OData
ممنون جناب خلیلی بابت مقاله خوبتون
چند سوال:
1. مزیت این روش نسبت به روش‌های سرویس عادی؟
2. آیا می‌توان گفت کاربر خاصی به متدی دسترسی داشته باشد؟
3. احراز هویت در این روش همانند روش webApi می‌باشد؟ حتی در استفاده از JQ نیز پاسخگو می‌باشد؟
ممنون

نظرات مطالب
مدیریت سفارشی سطوح دسترسی کاربران در MVC
 بنظر شما اگر بجای احراز هویت پیش فرض در MVC یا همان FormAuthentication پس از لاگین کاربر اطلاعات موجودیت آن را در session ای بریزیم و بعد  در جاهای مختلف برنامه از آن استفاده کنیم مثلا هر جا که لازم بود type کاربر را بدست آورد که مثلا مشتری یا نماینده یا مدیر  است دیگر لازم نیست متد GetUserById را صدازد و بار بر روی سیستم را افزایش داد آیا روش بنده صحیح است از لحاظ performance و  امنیت؟ 
نظرات مطالب
سفارشی سازی ASP.NET Core Identity - قسمت سوم - نرمال سازها و اعتبارسنج‌ها
سلام وقت بخیر
من یک کاربر با ایمیل abc@gmail.com درج کردم
برای تست خواستم با a_bc@gmail.com لاگین کنم: 
متد FindByNameAsync ، کاربر را شناسایی می‌کند، ولی متد FindByEmailAsync متوجه نشده و null برمیگرداند.
سوال اولم اینکه چرا FindByEmailAsync  از وجود ایمیل مطلع نمی‌شود و باید چه کار کرد که متوجه بشود؟ (یعنی وقتی متد  FindByEmailAsync  با مقدار a_bc@gmail.com صدا زده شد این متد کاربر ثبت شده با ایمیل abc@gmail.com را برگرداند)
توضیح: اینکه من ایمیل و نام کاربری رو یکی تعریف کردم.(email == username)
سوال دوم اینکه، اگر بخواهیم نام کاربری و ایمیل یکی باشد، نیاز هست که حتما UserName و فیلد نرمال شده آن در دیتابیس تعریف شده باشند؟
نظرات مطالب
اعمال تزریق وابستگی‌ها به مثال رسمی ASP.NET Identity
- مثال را به روز کردم تا خطاهای حاصل را بهتر دریافت کنید.
- کلمه عبور و سایر تنظیمات آن باید لحاظ شوند و گرنه موفق به ثبت اطلاعات نخواهید شد.
- نحوه‌ی استخراج اطلاعات DbEntityValidationException  
نظرات مطالب
مروری بر چند تجربه‌ی کاری با SQLite
آقا وحید سلام.
من برنلمه شرکت elcom نسخه Pro با سریال را تهیه کردم و حسابی تستش کردم.
حق با من بود برنامه‌ای نیست که بتونه کلمه عبور Access 2007 را بلافاصله پیدا کنه.این برنامه هم که مدعی این کار بود از تکنیک جستجو،حدس،و کتابخانه برای پیدا کردن کلمه عبور استفاده میکنه که البته سرعت باورنکردنی داره ولی اگر شما کلمه عبور بالای 6 حرف در نظر بگیرید یا برای اطمینان 100% از پیدا نشدن کلمه عبور آن را فارسی در نظر بگیرید این برنامه هم کاری نمیتونه انجام بده و یا حداقل از حوصله شما خارج خواهد شد.
بازخوردهای پروژه‌ها
کلمه عبور ورود به برنامه
با سلام و احترام
خواهشمند است کلمه عبور برای ورود به سیستم را در بخش راهنمایی‌های پروژه اضافه کنید.

با تشکر
مطالب
حذف تگ‌های زاید دریافتی از متون MS-Word

یکی از مشکلاتی که من همیشه با کاربران عادی دارم بحث انتقال مطالب از Word مایکروسافت به ادیتورهای WYSWING تحت وب است. برای مثال شما سایت پویایی را درست کرده‌اید که کاربران می‌توانند مطالب آنرا ویرایش یا کم و زیاد کنند.
اگر مطلب از ابتدا در این نوع ادیتورها تایپ و آماده شود هیچ مشکلی وجود نخواهد داشت چون خروجی اکثر آنها استاندارد است، اما متاسفانه خروجی وب word بسیار مشکل‌زا است (copy/paste معمولی مطالب آن در یک ادیتور تحت وب) و خصوصا برای نمایش تایپ فارسی در وب اصلا مناسب نیست. یعنی هیچ الزامی وجود ندارد که اندازه فونت‌ها در متن نهایی نمایش داده شده در وب یکسان باشند یا خطوط در هم فرو نروند و یا عدم تناسب اندازه قلم متن صفحه با قلم استفاده شده در CSS‌ سایت (که شکل ناهماهنگ و غیرحرفه‌ای را حاصل خواهد کرد) و امثال آن. اینجاست که کار شما زیر سؤال می‌رود! "این برنامه درست کار نمیکنه! متن من به‌هم ریخته شده و امثال این"
این کاربر عادی عموما یک تایپیست است یا یک منشی که به او گفته شده است شما از امروز موظفید مطالبی را در این سایت قرار دهید. بنابراین این کاربر حتما از word استفاده خواهد کرد (برای پیش نویس مطالب). همچنین عموما هم مرورگر "سازمانی" مورد استفاده، هنوز که هنوز است همان IE6 است (در اکثر شرکت‌ها و خصوصا ادارات) و مهم نیست که الان آخرین نگارش IE یا فایرفاکس و تمام هیاهوهای مربوطه به کجا ختم شده‌اند. حتما باید سایت با IE6 هم سازگار باشد. بنابراین از برنامه IE tester غافل نشوید.
و دست آخر شما هم نمی‌توانید به کاربر عادی ثابت کنید که این خروجی وب word اصلا استاندارد نیست (حتما کار شما است که مشکل دارد نه شرکت معظم مایکروسافت!). یا اینکه به آنها بگوئید اصلا مجاز نیستید در وب همانند یک فایل word از چندین نوع قلم مختلف فارسی غیراستاندارد استفاده کنید چون ممکن است کاربری این نوع قلم مورد استفاده شما را نداشته باشد و نمایش نهایی به هم ریخته‌تر از آنی خواهد بود که شما فکرش را می‌کنید! یا اینکه با استفاده از این روش حجم نهایی صفحه حداقل 50 کیلو بایت بیشتر خواهد شد (بدلیل حجم بالای تگ‌های زاید word) و نباید کاربران دایال آپ را فراموش کرد.
مدتی در اینباره جستجو کردم و نتیجه حاصل این بود که تمامی روش‌ها به یک مورد ختم می‌شود: حذف تگ‌های غیراستاندارد word هنگام دریافت مطلب و پیش از ذخیره سازی آن در دیتابیس
یک سری از ادیتورهای متنی تحت وب مانند FCK editor این قابلیت را به صورت خودکار اضافه کرده‌اند و حتی اگر کاربر متنی را از word در آنها Paste کند پیغامی را در همین رابطه دریافت خواهد کرد (شکل زیر) و البته کاربر می‌تواند گزینه لغو یا خیر را نیز انتخاب کند و دوباره همان وضعیت قبل تکرار خواهد شد. (یا حتی دکمه مخصوص کپی از word را هم به نوار ابزار خود اضافه کرده‌اند)



برای این منظور تابع زیر تهیه شده‌است که من همواره از آن استفاده می‌کنم و تا به امروز مشکل پاسخ پس دادن به کاربران عادی را به این صورت حل کرده‌ام!
این تابع تمامی تگ‌های اضافی و غیراستاندارد word متن دریافتی از یک ادیتور WYSWING را حذف می‌کند و به این صورت متن نهایی نمایش داده شده در سایت، تابع CSS مورد استفاده در سایت خواهد شد و نه حجم بالایی از تگ‌های غیراستاندارد word. (ممکن است کاربر در ابتدا کمی جا بخورد ولی مهم نیست! سایت باید استاندارد نمایشی خودش را از CSS آن دریافت کند و نه از تگ‌های word)

using System.Text.RegularExpressions;
/// <summary>
/// Removes all FONT and SPAN tags, and all Class and Style attributes.
/// Designed to get rid of non-standard Microsoft Word HTML tags.
/// </summary>
public static string CleanMSWordHtml(string html)
{
try
{
// start by completely removing all unwanted tags
html = Regex.Replace(html, @"<[/]?(font|span|xml|del|ins|[ovwxp]:\w )[^>]*?>", "", RegexOptions.IgnoreCase);
// then run another pass over the html (twice), removing unwanted attributes
html = Regex.Replace(html, @"<([^>]*)(?:class|lang|style|size|face|[ovwxp]:\w )=(?:'[^']*'|""[^""]*""|[^\s>] )([^>]*)>", "<$1$2>", RegexOptions.IgnoreCase);
html = Regex.Replace(html, @"<([^>]*)(?:class|lang|style|size|face|[ovwxp]:\w )=(?:'[^']*'|""[^""]*""|[^\s>] )([^>]*)>", "<$1$2>", RegexOptions.IgnoreCase);
return RemoveHTMLComments(html);
}
catch
{
return html;
}
}

public static string RemoveHTMLComments(string html)
{
try
{
Regex _Regex = new Regex("((<!-- )((?!<!-- ).)*( -->))(\r\n)*", RegexOptions.Singleline);
return _Regex.Replace(html, string.Empty);
}
catch
{
return html;
}
}

متد RemoveHTMLComments را عمدا جدا قرار دادم تا مشخص‌تر باشد. پس از تمیزکاری اولیه، ممکن است دسته‌گل‌های تیم مایکروسافت به صورت کامنت باقی بمانند که باید آنها را هم تمیز کرد! :)

اشتراک‌ها
وب اپلیکیشن پیش‌ رونده (PWA)

یکی از مهترین ترندهای این روزها وب اپلیکیشن‌های پیش رونده یا PWA هست. به طور خلاصه PWA این امکان رو برای ما فراهم میکنه تا ویژگی‌های یک اپلیکیشن Native رو با وب سایت خودمون ترکیب کنیم تا تجربه‌ی بی‌نظیر و یکپارچه‌ای رو در اختیار کاربر قرار بدیم. 

وب اپلیکیشن پیش‌ رونده (PWA)
نظرات مطالب
بهینه سازی برنامه‌های وب ASP.NET برای موتورهای جستجو (SEO)
- ابتدا یک پروفایل Google analytics ایجاد کنید و سپس اسکریپت آن‌‌را به سایت خودتان اضافه کنید.
- چند روز بعد که به آمار آن مراجعه کنید، می‌توانید لیست جستجوهای گوگل منتهی به سایت خودتان را به همراه واژه‌های کلیدی مرتبط، گزارش گیری کنید.


- بر اساس این واژه‌های کلیدی، برای محصولات خودتان برچسب درست کنید یا آن‌ها را گروه بندی کنید. گوگل بر این اساس در دفعات آتی، نتایج جستجوی دقیق‌تری را به کاربران ارائه می‌دهد.