متدهای الحاقی - Extension Methods
مجموعهی DotNetAnalyzers
همانطور که میدانید در چند سال اخیر استفاده از فرمت json برای فایلهای کانفیگ بسیار رایج شده است. در این مورد یک توییت جالب همه را به چالش کشید: «خواهش میکنم از json برای کانفیگ فایلها استفاده نکنید، تو json نمیشه کامنت نوشت و بدون کامنت مدیریت کانفیگها خیلی سخته». این نکته برای من خیلی جالب بود. به نظر میرسد فرمت json برای فایلهال کانفیگ چالشهایی دارد.
لینک زیر یک فرمت جدید رو که اسمش Human Json یا Hjson هست را معرفی کرده که نه تنها مشکل کامنت را ندارد، بلکه خیلی مشکلات دیگر که هنوز به آن فکر نشده بود را هم ندارد! جالبه که کتابخانههایی هم برای این استاندارد نوشته شده که استفاده از اون رو در بیشتر زبانهای محبوب مانند Java, C#, JavaScript, Mono, Ruby, Python, Noder.js, PHP, Go و زبانهای دیگر ساده میکند.
قطعاً بارها پیش آمده است برای اینکه بهتر یاد بگیرید، پروژهای برای خود تعریف کنید تا یک پکیج یا اتفاق آماده را از نو بنویسید و طی آن تجریبات خوبی به دست آوردید. این مخزن شاید بهترین منبع برای این هدف باشد.
پینوشت: به نظر میرسد دوستان علاقهمند به C# و .Net در این مخزن به اندازه کافی مشارکت نداشتهاند. در صورتی که مطالب خوبی را میشناسید، حتماً به این مخزن اضافه کنید.
اینها مشکلات web deploy است:
-با IIS 6 آنچنان سازگار نیست و IIS7 را طلب میکند. (با روش فوق سرور شما آپاچی هم باشد کار میکند)
-بحث rollback با webdelpoy اصلا معنی ندارد. اما با سورس کنترل به سادگی انجام میشود. فرض کنید الان به اشتباه یک سری کار به مخزن SVN ارسال شده. بلافاصله هم با روش فوق در ریشه سایت قرار گرفته. اصطلاحا revert به نگارش پایدار قبلی در SVN بسیار ساده است.
+ تمام مزیتهای ورژن کنترل را هم لحاظ کنید. با روش فوق دقیقا مشخص است چه کسانی روی فایلها کار کردهاند و چه زمانی. تاریخچه ارسالها موجود است. امکان حرکت بین نگارشهای مختلف و سوئیچ بین آنها معنا پیدا میکند و ...
- روش فوق نیاز آنچنانی به داشتن دسترسی بالا روی سرور ندارد.
به همین جهت برای کار حرفهای با web deploy از برنامه team city و یک سری مخلفات دیگر استفاده میکنند. یک سری 5 قسمتی رو اینجا میتونید پیدا کنید: (+)
و پس از مطالعه به این نتیجه خواهید رسید که روش فوق پایدارتر و دردسر کمتری دارد. حتی روی یک سرور لینوکسی هم قابل پیاده سازی است
یک نکتهی تکمیلی: به روز رسانی کتابخانهی UAParser
در این مطلب از کتابخانهی UAParser استفاده شد. این کتابخانه، چندسالی است که بهروز نشده؛ البته چون نیازی نبوده! در اصل، این کتابخانه از فایل yaml مخصوصی که به صورت جاسازی شده (embedded) در آن قرار دارد، برای شناسایی مرورگرها استفاده میکند (مفهوم استفاده از متد ()Parser.GetDefault همین مورد است). بنابراین یا باید خودتان این فایل yaml را دستی به روز کرده (کار مخزن کد فعال UAParser-Core، فقط همین یک مورد است) و سپس کتابخانه را مجددا کامپایل و استفاده کنید و یا میتوانید محتویات فایل yaml ذکر شده را دریافت و سپس با استفاده از متد Parser.FromYaml این کتابخانه، اطلاعات جدید دریافتی را پردازش و استفاده کنید؛ مانند UAParserService.