راه اندازی گواهی SSL رایگان با Let's Encrypt

۱۳۹۵/۰۹/۰۴ ۷:۳۰ Salar Khalilzadeh https://plus.google.com/105397214522932500988 منتشر شده در تاریخ : ۱۳۹۵/۰۹/۰۴ دسته بندی : 0

Let's Encrypt سرویس رایگان صدور گواهی نامه های SSL هست که توسط چند شرکت و دانشگاه از جمله سیسکو و Mozilla راه اندازی شده و هدف آن حذف مشکلات صدور گواهی نامه های دیجیتالی SSL و در دسترسی قرار دادن این گواهی برای همگان هست. همانطور که می دانید صدور گواهی نامه های SSL هزینه بر بوده و نصب و راه اندازی آن هم دردسر های خودش را دارد ولی در ادامه مشاهده می کنید که به راحتی هر چه تمام تر با یک ابزار کمکی و سرویس Let's Encrypt این کار را انجام می دهیم.

در حالت کلی ویژگی های عمده سرویس Let's Encrypt را اینگونه میشود لیست کرد
  • کاملا رایگان می باشد
  • اجازه تولید خودکار گواهی نامه ها با استفاده از API
  • 3 ماهه بودن گواهی نامه ها
  • وبسایت دریافت کننده گواهی باید به اینترنت متصل باشد
  • فایل به خصوصی در محل سایت قرار میگیرد که توسط آن، سرویس گواهی صحت گواهی صادر شده را کنترل می کند
  • امکان صدورمجدد گواهی هر زمانی، حتی اگر تاریخ انقضا نرسیده باشد
از ابتدا ابزارهای اصلی Let's Encrypt برای لینوکس توسعه داده شده بود ولی پس از باثبات شدن نسبی API های این سرویس شاهده تولید ابزارهای ویندوز توسط علاقه مندان شدیم.

LetsEncrypt-Win-Simple
برای راه اندازی Let's Encrypt بر روی سرور مجازی و شخصی، من قصد دارم که از ابزار LetsEncrypt-Win-Simple استفاده کنم. این ابزار که از خط فرمان ساده ای بهره میگیره و چندین مزایا داره. از جمله مزایای آن
  • سادگی و خودکار بودن همه عملیات
  • شناسایی گواهی نامه های قدیمی Let'sEncrypt و جایگزین کردن آنها
  • استفاده از Task Scheduler ویندوز برای صدور مجدد گواهی ها
 چند نکته در مورد این ابزار وجود دارد و آنها اینکه، برای انجام خودکارعملیات ، ابزار باید روی سرور محل نصب وبسایت اجرا شود؛ همچنین سرور سایت مورد نظر از طریق اینترنت در دسترس باشد.

برای شروع نرم افزار را از آدرس پروژه LetsEncrypt-Win-Simple دریافت کرده و اجرا نمایید.

همانطور که در تصویر مشخص هست، نرم افزار چندین انتخاب را در اختیار قرار می دهد.
گزینه اول W، راهتترین روش هست که همه کارها را به  صورت خودکار انجام میدهد. پس از انتخاب W باید وبسایت IIS مورد نظر را که با شماره لیست مشخص شده است انتخاب کنید و بقیه عملیات خودکار انجام می شود. سوالی هم در پایان عملیات همانند تصویر زیر پرسیده می شود که همانظورکه درویژگی های این ابزار دکر شد، مربوط به افزودن task برای صدور مجدد گواهی در زمان انقضا به صورت خودکار می شود.

گزینه F همه این کارها را با استفاده از اتصال به سرویس FTP وبساتتان که با اتصال به آن توسط نام کاربری و کلمه عبوری که پرسیده خواهد شد انجام میدهد.
با استفاده از گزینه M می توانید گواهی نامه را برای وبسات مورد نظر از هر جایی تولید کنید (عدم نیاز به اجرا شدن برنامه درسرور)، ولی در این صورت مراحل نصب خودکار گواهی نامه و همچنین تنظیم Task Scheduler را نخواهید داشت. و در آخر هم باید فایل ها و پوشه well-known که جهت تایید هویت سایت درخواست کننده گواهی نامه تولید می شود را نیز دستی کپی کنید. و البته فراموش نشود که هر 3 ماه همین کار راباید تکرار کنید. این روش برای زمانی مناسب هست که سایت شما در یک هاست اشتراکی است و هیچ امکانی برای خودکار سازی عملیات ندارید.

نکته مهم: در پایان این قسمت نکته ای لازم به ذکراست. پشتیبانی از SNI مخفف Server Name Indication پس از IIS 2012 اضافه شد و این گزینه این اجازه را می دهد که برای هر IP آدرس بیش از یک گواهی نامه صادر شود. همانطور که درتصویر زیر مشاهده می کنید این گزینه پیش فرض انتخاب شده است و با توجه به اینکه برای آدرس هر ساب دامین والبته www هم گواهی نامه جداگانه ای باید تولید شود وجود گزینه SNI لازم و مهم است. تنها مشکلی که وجود دارد عدم پشتیبانی از این ویژگی در نسخه های قدیمی IE در ویندوز XP هست، که اگر این پشتیبانی برای شما مهم می باشد، مجبور خواهید بود که این گزینه را غیر فعال کرده و برای هر IP فقط یک گواهینامه استفاده کنید.


و در آخر تبریک میگم، شما هم به جمع دارندگان گواهی SSL پیوستید :)

ابزار Certify
این ابزار هم یک محیط گرافیکی (GUI) را برای مدیریت گواهی نامه های Let'sEncrypt فراهم می کند. متاسفانه هنوزاین ابزار به مرحله نهایی نرسیده و ظاهرا بدون ایراد نمی باشد. همچنین برای دریافت آن نیاز به عضویت در خبرنامه سایت را دارید.


نصب و راه اندازی در هاست های اشتراکی
از آنجایی که مدت زمان گواهی نامه های Let's Encrypt محدود به 3 ماه می باشد، همین مسئله مشکلاتی رو برای نصب روی هاستینگ های اشتراکی دارد و باید برای تجدید خودکار گواهی ها ابزارهایی در دسترس باشد. برای همین منظور با یک جستجوی سریع در گوگل نتایج زیر بدست آمد.

البته قبل از لیست کردن نتایج، مجددا ذکر کنم که همانطور که در بالا اشاره شد، می توانید گواهی نامه ها را دستی برای سایت خود صادر کرده و نصب نمایید.

برای کنترل پنل Plesk افزونه Let's Encrypt Plesk Extensions وجود دارد که باید توسط مدیر سرور بر روی کنترل پنل نصب شود.
برای کنترل پنل cPanel چندین افزونه رایگان و پولی وجود دارد که البته قبلا باید توسط مدیرسرورشما نصب شده باشد. ازمیان آنها پلاگین letsencrypt-cpanel رایگان می باشد. از همان لینک پیش نیاز ها رو هم میتوانید مشاهده کنید.

جهت مطالعه بیشتر

 

معرفی کتابخانه توابع کمکی Kendo UI

۱۳۹۵/۰۷/۲۴ ۷:۰۰ Salar Khalilzadeh https://plus.google.com/105397214522932500988 منتشر شده در تاریخ : ۱۳۹۵/۰۷/۲۴ دسته بندی : ، ، ، 0

مجموع کامپوننت های Kendo زندگی رو برای خیلی از ما برنامه نویسان راحت کرده (حتی اگه براش پول نداده باشیم :) ). مانند بقیه کامپوننت ها وقتی عمیقا وارد استفاده از یک ابزار و یا کامپوننت می شوید هست که یک سری مشکلات خودشان را نشان می دهند. حتی بعضی کارها هم تکراری و خسته کننده می شود. مثلا ممکن است برای خواندن اطلاعات یک رکورد انتخابی چند خط کد تکراری رو در کل پروژه مکررا بنویسید. اینجاست که به فکر جمع آوری این کد ها افتاده و اصلاحا مشغول Refactoring کد های پر استفاده می شوید. برای سی شارپ و جاوااسکریپت، مقدار زیادی توابع کمکی وجود دارد که خیلی نیازها رو رفع می کنند. چطور می شد که مجموع توابع کمکی آماده برای kendo هم بود؟

kendoHelpers To The Rescue

کتابخته Salar.kendoHelpers مجموع توابع جاواسکریپتی هست که برای راحت کردن انجام بعضی وظایف هنگام کار با مجموع کامپوننتهای kendo تهیه و جمع آوری شده است.
منطق استفاده از این کتابخانه بسیار ساده بوده و توابع در گروه های مختلف با نام هر کامپوننت جمع آوری شده است. 
برای مثال کامپوننت Grid که دارای بیشترین توابع است درkendoHelpers.grid قرار دارد.

استفاده از این توابع خیلی راحت می باشد، مثلا:

// دریافت گرید
var grid = $('#SampleGrid').data('kendoGrid');

// فراخوانی توابع کتابخانه
var dataItem = kendoHelpers.grid.getSelectedDataItem(grid);

// و انجام بقیه کارهایتان
if (dataItem != null){
    // dataItem.MyId = ...
}

لیست همه توابع و توضیحات آنها را در صفحه github می توانید مشاده کنید. صفحه پروژه kendoHelpers

برای افزودن این توابع به پروژه خود می توانید تک فایل kendoHelpers.js را پروژه اضافه کرده و یا پکیج NuGet را نصب کنید:

PM> Install-Package Salar.kendoHelpers

خوشحال خواهم شد توابع خود را به کتابخانه اضافه کنید.
Github, NuGet

 

مقایسه تغییرات نسخه های مختلف فایل با ویژوال استودیو

۱۳۹۵/۰۷/۲۲ ۲۱:۳۰ Salar Khalilzadeh https://plus.google.com/105397214522932500988 منتشر شده در تاریخ : ۱۳۹۵/۰۷/۲۲ دسته بندی : 0

از نسخه 2012 به بعد امکانات بسیار کاربردی به Visual Studio اضافه شده است. یکی از امکاناتی که شاید کمتر مورد توجه قرار گرفته و البته بسیار کاربردی است، امکان مقایسه دو نسخه از یک فایل متنی در جهت یافتن تغییرات اعمال شده است.

اگر از یکی از source control ها استفاده می کنید مطمئنا همین الان هم دارید از این ویژگی استفاده می کنید، با انجام دستور Compare.

در تصویر زیر تغییرات دو فایل را می توانید مشاهده کنید:


محدودیتی که این ویژگی دارد این است که فایل باید داخل پروژه بوده و تحت کنترل source control باشد.
ولی راه دیگری هم برای مقایسه دو فایل وجود دارد. با استفاده Command Window و اجرای دستور زیر می توانید هر دوفایلی رو حتی اگر در پروژه نباشند مقایسه کرد.

برای باز کردن Command Window کلید Ctrl+Alt+A استفاده کنید. دستور مورد نظر Tools.DiffFiles است که به عنوان ورودی دو فایل را میگیرد.
برای مثال:

Tools.DiffFiles e:\BoisMemberInfo1.cs e:\BoisMemberInfo2.cs

به همین راحتی.
در صورتی که ویژوال استودیو بسته است، می توان با دستور زیر ویژوال استودیو رو باز کرده و تغییرات فایلها را آنی مشاده کرد.

devenv.exe /diff e:\BoisMemberInfo1.cs e:\BoisMemberInfo2.cs

و سر انجام در صورتی که نیاز به قابلیت های بیشتری دارید(مثلا مقایسه تغییرات یک فولدر) در این صورت نرم افزار WinMerge رو پیشنهاد می کنم.

 

تغییر فونت فارسی ویندوز 7 و اصلاح فونت پیش فرض

۱۳۹۳/۰۹/۰۳ ۲۱:۴۴ Salar Khalilzadeh https://plus.google.com/105397214522932500988 منتشر شده در تاریخ : ۱۳۹۳/۰۹/۰۳ دسته بندی : ، 4

فونت پیش فرض ویندوز 7 برای فارسی خوانایی خیلی کمی دارد. قبلا فونت پیش فرض در ویندوز XP فونت Tahoma بود که خوانایی قابل قبولی داشت ولی این فونت به Segoe UI در ویندوز 7 و 8 تغییر یافته. متاسفانه در ویندوز 7 این فونت جدید هنوز دارای رسم الخط فارسی و عربی نبوده و همین باعث می شد که خوانایی آیکون ها و فولدر ها با نام فارسی بسیار کم باشد.
همانطور که قبلا در پستی در مورد نسخه جدید فونت توضیح دادم این فونت در ویندوز 8 اصلاح شده و اکنون خوانایی قابل قبولی را دارد. برای استفاده از آن کافی است که نسخه جدید را دانلود کرده و نصب کنید.
 

دانلود آخرین نسخه فونت Segoe UI | لینک Mirror

جهت نصب فایلهای فونت ها را از حالت فشرده خارج کنید، بر روی آنها کلیک راست کرده و گزینه Install را بزنید. پیغامی مبنی بر جایگزینی فونت موجود دریافت خواهید کرد که گزینه Yes را انتخاب کنید. و یا راهنمای نصب فونت را مطالعه کنید.

 

بهینه سازی URL ها در MVC با lowercase-dashed-routing

۱۳۹۳/۰۸/۲۸ ۱۹:۱۹ Salar Khalilzadeh https://plus.google.com/105397214522932500988 منتشر شده در تاریخ : ۱۳۹۳/۰۸/۲۸ دسته بندی : ، ، 0

مقدمه
آدرس های صفحات در وب یا اصلاحا URL به خاطر مسئله بهینه سازی های مربوط به موتور های جستجو اهمیت زیادی دارند. در همین راستا MVC هم به صورت پیش فرض آدرس های خوانایی رو تولید می کند. مانند example.com/Articles/TheSamplePage
با توجه به باز بودن بستر MVC می توان پا را فراتر از این هم نهاد و بهینه سازی بیشتری را نیز انجام داد. اما چطور؟
در آدرسی که ذکر شد چند اشکال خیلی کوچک وجود دارد. مهترین آن ترکیب حروف بزرگ و کوچک است. چطور میشود اگر کسی آدرس لینک را با حروف کوچک به صفحه ما لینک کند. حتی اگر این تغییر در بزرگی حروف حتی در یک کلمه باشد و بقیه حروف دقیقا برابر باشند. این می تواند باعث اشکال شده و موتور گوگل را به اشتباه انداخته و همان صفحه در دو نسخه متفاوت شناسایی بشود و نتیجه آن هم کاهش رنکینگ صفحه است.
اشکال دیگر مربوط میشود به شناسایی کلمات کلیدی در داخل URL که خود جزو موارد مهم در هنگام اندیس گذاری صفحات توسط موتور های جستجو است. با توجه به ترکیب حروف بزرگ و کوچک ممکن است که موتور جسجو به درستی نتواند کلمات مورد نظر ما را شناسایی کند.
راه حل همه این موارد که البته بسیار هم مرسوم است استفاده از حروف کوچک همراه با جداکردن کلمات در یک جمله طولانی با استفاده از خط تیره می باشد. برای مثال آدرس صفحه ای که ذکر شد به این صورت خواهد شد: site.com/articles/the-sample-page

معرفی
برای انجام راه حلی که ذکر آن رفت کتابخانه lowercase-dashed-routing توسعه داده شده است. استفاده از این ابزار بسیار آسان بوده و فقط کافی است که به جای کافیگ های قبلی routing از این کتابخانه استفاده نمایید.
نسخه ابتدایی این کتابخانه که توسط نویسنده اصلی آن طراحی شده بود دارای چندین اشکال اساسی بود که استفاده از آن را تقریبا غیر قابل توجیه می کرد.
در نسخه ای که مشاهده می کنید همه مشکلات آن را رفع کرده ام و تقریبا مشکلی باقی نمانده.
سورس های lowercase-dashed-routing

دانلود و نصب
جهت نصب این کتابخانه از دستور زیر در nuget استفاده کنید.
Install-Package LowercaseDashedRouteExt 
یا فایل رفرنس را خودتان دستی اضافه نمایید. صفحه دانلود مستقیم

نمونه مثال و استفاده
استفاده از این کتابخانه بسیار ساده است، به عنوان اولین کار باید تنظیمات روتینگ رو در فایل RouteConfig عوض کنید. یک نمونه ساده از تنظیم پیش فرض:
routes.Add(new LowercaseDashedRoute("{controller}/{action}/{id}",
    new RouteValueDictionary(
        new { controller = "Home", action = "Index", id = UrlParameter.Optional }),
        new DashedRouteHandler()
    )
);

در صورتی که از Areaها استفاده می کنید، باید از کافیگ زیر در درون تابع RegisterArea مربوط به XxxAreaRegistration.cs استفاده کنید:
var route = new LowercaseDashedRoute("AreaName/{controller}/{action}/{id}",
    new RouteValueDictionary(
        new
        {
            controller = "Home",
            action = "Index",
            id = UrlParameter.Optional
        }),
    new DashedRouteHandler(),
    this, context);
context.Routes.Add("AreaName_default", route);

در صورتی که از ذکر صریح Namespace استفاده می کنید، فقط یک آرگومان اضافی باید ارسال کنید:
routes.Add(new LowercaseDashedRoute("{controller}/{action}/{id}",
       new RouteValueDictionary(
           new { controller = "Home", action = "Index", id = UrlParameter.Optional }),
       new DashedRouteHandler(),
       new[] { "SampleProject.Controllers" }
));
لینک های پروژه
صفحه پروژه lowercase-dashed-routing
صفحه دانلود فایلهای کامپایل شده
صفحه مربوط به NuGet