پکیج Windows Compatibility
فریم ورک ASP Core 2.1 دارای بیش از 30 هزار API است اما هنوز بخشی از کتابخانه های قدیمی دات نت به آن اضافه نشده است. دلیل اصلی آن هم پشتیبانی از سایر سیستم عامل هاست. مثلا کتابخانه های مربوط به Registery فقط در ویندوز کاربرد دارد و لینوکس و مک چنین سیستمی ندارند.
پکیج Windows Compatibility پشتیبانی از حدود 20 هزار API قدیمی دات نت را به core اضافه میکند. با این کتابخانه منتقل کردن پروژه های قدیمی ASP MVC به ASP Core راحت تر میشود. مثلا بسیاری از سایتها برای ویرایش عکس از Drawing استفاده می کنند و حالا می توانند بدون تغییر کد این بخش مستقیما به ASP Core مهاجرت کنند.
در واقع بخش عمده ای از سایتهای قدیمی را می توان فقط با کپی و پیست در مدت کوتاهی به ASP Core منتقل کرد.
به همراه این پکیج یک Analyzer هم با Roslyn پیاده شده است که هنگام کد نویسی سازگاری کد را با سیستم عامل لینوکس و مک بررسی می کند. اگر قصد ندارید پروژه ی خود را روی سرور لینوکس اجرا کنید می توانید با خیال راحت از این پکیج استفاده کنید در غیر این صورت باید به هشدارهای Analyzer توجه کنید.
نسخه ی Preview این پکیج در آدرس زیر قابل دسترسی است.
https://www.nuget.org/packages/Microsoft.Windows.Compatibility/2.0.0-preview2-26406-04
فریم ورک ASP Core 2.1 دارای بیش از 30 هزار API است اما هنوز بخشی از کتابخانه های قدیمی دات نت به آن اضافه نشده است. دلیل اصلی آن هم پشتیبانی از سایر سیستم عامل هاست. مثلا کتابخانه های مربوط به Registery فقط در ویندوز کاربرد دارد و لینوکس و مک چنین سیستمی ندارند.
پکیج Windows Compatibility پشتیبانی از حدود 20 هزار API قدیمی دات نت را به core اضافه میکند. با این کتابخانه منتقل کردن پروژه های قدیمی ASP MVC به ASP Core راحت تر میشود. مثلا بسیاری از سایتها برای ویرایش عکس از Drawing استفاده می کنند و حالا می توانند بدون تغییر کد این بخش مستقیما به ASP Core مهاجرت کنند.
در واقع بخش عمده ای از سایتهای قدیمی را می توان فقط با کپی و پیست در مدت کوتاهی به ASP Core منتقل کرد.
به همراه این پکیج یک Analyzer هم با Roslyn پیاده شده است که هنگام کد نویسی سازگاری کد را با سیستم عامل لینوکس و مک بررسی می کند. اگر قصد ندارید پروژه ی خود را روی سرور لینوکس اجرا کنید می توانید با خیال راحت از این پکیج استفاده کنید در غیر این صورت باید به هشدارهای Analyzer توجه کنید.
نسخه ی Preview این پکیج در آدرس زیر قابل دسترسی است.
https://www.nuget.org/packages/Microsoft.Windows.Compatibility/2.0.0-preview2-26406-04
www.nuget.org
Microsoft.Windows.Compatibility 2.0.0-preview2-26406-04
This Windows Compatibility Pack provides access to APIs that were previously available only for .NET Framework. It can be used from both .NET Core as well as .NET Standard.
7e3dbdb95b30650eabade0ac73a10b22d4dbe8b3
When using NuGet 3.x this package requires…
7e3dbdb95b30650eabade0ac73a10b22d4dbe8b3
When using NuGet 3.x this package requires…
کاربردهای Action Injection
روش همیشگی این است که وابستگی های کلاس را در سازنده ی کلاس تعریف می کنیم. اما روشهای دیگر تزریق وابستگی هم وجود دارد.
سیستم تزریق وابستگی که در خود ASP Core طراحی شده به شما امکان میدهد از روش Action Injection نیز استفاده کنید.
از آنجا که کنترلر در هر Request جدید دوباره نمونه سازی می شود هر چه از میزان وابستگی های سازنده کم کنیم کارایی سیستم افزایش میبابد.
در بعضی موارد از یک وابستگی فقط برای یک یا دو اکشن درون کنترلر استفاده می کنیم. اینجاست که می توانیم با Action Injection مستفیما آن درون متد مورد نظر تزریق کنیم و از بار سازنده کم کنیم.
روش همیشگی این است که وابستگی های کلاس را در سازنده ی کلاس تعریف می کنیم. اما روشهای دیگر تزریق وابستگی هم وجود دارد.
سیستم تزریق وابستگی که در خود ASP Core طراحی شده به شما امکان میدهد از روش Action Injection نیز استفاده کنید.
از آنجا که کنترلر در هر Request جدید دوباره نمونه سازی می شود هر چه از میزان وابستگی های سازنده کم کنیم کارایی سیستم افزایش میبابد.
در بعضی موارد از یک وابستگی فقط برای یک یا دو اکشن درون کنترلر استفاده می کنیم. اینجاست که می توانیم با Action Injection مستفیما آن درون متد مورد نظر تزریق کنیم و از بار سازنده کم کنیم.
نگاهی به owasp top 10
موسسه ی owasp هر 4 سال یکبار لیستی از مهمترین تهدیدات امنیتی اینترنت منتشر میکند. در مقایسه با 2013 هنوز هم Injection و Broken Authentication رتبه های اول و دوم خود را حفظ کرده اند. اما حملات XSS از رتبه ی سوم به هفتم نزول پیدا کرده است.
منظور از Injection دستکاری اطلاعات ارسالی به سرور است. هکر اطلاعات ارسالی را به نحوی تغییر میدهد که وقتی در سرور خوانده میشود رفتار آن را تغییر دهد. معمول ترین حمله دستکاری کوئری های SQL است که به راحتی روی سایتهایی که ORM ندارند کار میکند.
منظور از Broken Authentication سیستم تشخیص هویت غیر استاندارد است. بسیاری از برنامه نویسان خودشان دست به کار پیاده سازی این بخش میشوند و تصور می کنند تنها با قرار فرم ثبت نام سایت ایمن شده است اما هک کردن چنین سیستمهایی به راحتی صورت میگیرد. عدم وجود CAPTCHA و محدود نکردن دفعات خطای ورود دست هکر ها را برای Brute-force باز می گذارد.
در روش XSS هکر با استفاده از کوکی های مرورگر خودش را جای کاربر قرار میدهد و می تواند به اطلاعات ایمیل یا هر حساب کاربری دیگرش دسترسی پیدا کند.
تجربه ی هک شدن پیامرسان سروش نشان میدهد که وقتی ازرش اطلاعات یک سایت بالا میرود جزئی ترین مسائل می تواند منجر به تهدیدهای امنیتی مهم شود. یک اتفاق کوچک می تواند یک کسب و کار بدون پشتوانه را از هستی نابود کند.
موسسه ی owasp هر 4 سال یکبار لیستی از مهمترین تهدیدات امنیتی اینترنت منتشر میکند. در مقایسه با 2013 هنوز هم Injection و Broken Authentication رتبه های اول و دوم خود را حفظ کرده اند. اما حملات XSS از رتبه ی سوم به هفتم نزول پیدا کرده است.
منظور از Injection دستکاری اطلاعات ارسالی به سرور است. هکر اطلاعات ارسالی را به نحوی تغییر میدهد که وقتی در سرور خوانده میشود رفتار آن را تغییر دهد. معمول ترین حمله دستکاری کوئری های SQL است که به راحتی روی سایتهایی که ORM ندارند کار میکند.
منظور از Broken Authentication سیستم تشخیص هویت غیر استاندارد است. بسیاری از برنامه نویسان خودشان دست به کار پیاده سازی این بخش میشوند و تصور می کنند تنها با قرار فرم ثبت نام سایت ایمن شده است اما هک کردن چنین سیستمهایی به راحتی صورت میگیرد. عدم وجود CAPTCHA و محدود نکردن دفعات خطای ورود دست هکر ها را برای Brute-force باز می گذارد.
در روش XSS هکر با استفاده از کوکی های مرورگر خودش را جای کاربر قرار میدهد و می تواند به اطلاعات ایمیل یا هر حساب کاربری دیگرش دسترسی پیدا کند.
تجربه ی هک شدن پیامرسان سروش نشان میدهد که وقتی ازرش اطلاعات یک سایت بالا میرود جزئی ترین مسائل می تواند منجر به تهدیدهای امنیتی مهم شود. یک اتفاق کوچک می تواند یک کسب و کار بدون پشتوانه را از هستی نابود کند.
محبوبیت سرویس های ابری
وقتی از سرویس ابری استفاده میکنید بر مبنای میزان ترافیک هزینه پرداخت می کنید. هر مقدار که ترافیک سایت بالا میرود منابع بیشتری به سایت اختصاص داده میشود . هیچوقت سایت شما از دسترس خارج نمی شود. حتی لازم نیست پشت سیستم باشید و کاری انجام دهید. هر نوع تغییر در میزان دیسک ، رم یا هسته ی سرور با یک کلیک اتفاق می افتد.
فضاهای ابری از همه ی تکنولوژی ها پشتیبانی می کنند. فرقی نمیکند که لینوکس باشد یا ویندوز یا نوع دیتابیس چیست. فقط کافی است که سرویس مورد نظر را انتخاب کنید تا بتوانید شروع به کد نویسی کنید.
سرویس های ابری یکی از دلایل رشد سریع Docker و ابزاری مانند Kubernetes است و خودش یک بازار جدید را بوجود آورده است.
با سرویس ابری حفظ و نگه داری سایت ساده میشود و هزینه ی DevOps به مقدار چشمگیری کاهش پیدا میکند. برای توسعه ی سخت افزاری دیگر نیاز به متخصصین امنیت و شبکه ندارید.
ساتیا نادلا مدیر عامل مایکروسافت به خوبی ارزش سرویس های ابری را متوجه شد و در حال حاضر منابع زیادی را صرف سرویس ابری مایکروسافت یا همان Azure می کند. این بازار که برای مدتها در اختیار آمازون بود حالا یک سردمدار جدید دارد.
وقتی از سرویس ابری استفاده میکنید بر مبنای میزان ترافیک هزینه پرداخت می کنید. هر مقدار که ترافیک سایت بالا میرود منابع بیشتری به سایت اختصاص داده میشود . هیچوقت سایت شما از دسترس خارج نمی شود. حتی لازم نیست پشت سیستم باشید و کاری انجام دهید. هر نوع تغییر در میزان دیسک ، رم یا هسته ی سرور با یک کلیک اتفاق می افتد.
فضاهای ابری از همه ی تکنولوژی ها پشتیبانی می کنند. فرقی نمیکند که لینوکس باشد یا ویندوز یا نوع دیتابیس چیست. فقط کافی است که سرویس مورد نظر را انتخاب کنید تا بتوانید شروع به کد نویسی کنید.
سرویس های ابری یکی از دلایل رشد سریع Docker و ابزاری مانند Kubernetes است و خودش یک بازار جدید را بوجود آورده است.
با سرویس ابری حفظ و نگه داری سایت ساده میشود و هزینه ی DevOps به مقدار چشمگیری کاهش پیدا میکند. برای توسعه ی سخت افزاری دیگر نیاز به متخصصین امنیت و شبکه ندارید.
ساتیا نادلا مدیر عامل مایکروسافت به خوبی ارزش سرویس های ابری را متوجه شد و در حال حاضر منابع زیادی را صرف سرویس ابری مایکروسافت یا همان Azure می کند. این بازار که برای مدتها در اختیار آمازون بود حالا یک سردمدار جدید دارد.
پروژه Hello world با حداقل تنظیمات
وقتی یک پروژه ی ASP Core ایجاد می کنید حجم زیادی از تنظیمات به صورت پیشفرض به پروژه اضافه میشود. برای اینکه ساده ترین و سبکترین حالت الگوی MVC را در ASP Core پیاده کنید باید کمی به عقب برگردید و بعضی از دستورات را دستکاری کنید.
روش انجام این مراحل در پست زیر شرح داده شده است.
https://codehaks.github.io/2017/08/31/Bare-Minimum-Hello-world.html
وقتی یک پروژه ی ASP Core ایجاد می کنید حجم زیادی از تنظیمات به صورت پیشفرض به پروژه اضافه میشود. برای اینکه ساده ترین و سبکترین حالت الگوی MVC را در ASP Core پیاده کنید باید کمی به عقب برگردید و بعضی از دستورات را دستکاری کنید.
روش انجام این مراحل در پست زیر شرح داده شده است.
https://codehaks.github.io/2017/08/31/Bare-Minimum-Hello-world.html
سرویس هوش مصنوعی
هوش مصنوعی علاوه بر آنکه برنامه نویسی پیچیده ای دارد نیاز به حجم بسیار زیادی از اطلاعات دارد تا با تحلیل آن بتواند موارد جدید را تشخیص دهد. نگهداری و پردازش این حجم عظیم اطلاعات در سرورهای شخصی غیر ممکن است.
سرویس هوش مصنوعی مایکروسافت با ارائه ی یک API از طریق وب امکان استفاده از هوش مصنوعی را برای برنامه نویسان فراهم میکند.
سرویس پردازش عکس آن می تواند یک عکس دریافت کند و برای آن تگ انتخاب کند یا محتوای عکس را مشخص کند.
سرویس صدا می تواند صدای مخاطب را تشخیص دهد و آن را به متن تبدیل کند یا به زبان دیگر ترجمه کند.
سرویس دانش می تواند یک متن را دریافت کند و بر اساس آن یک سیستم پرسش و پاسخ ایجاد کند.
این سرویسها رایگان نیست و به همراه سرویس ابری عرضه میشود اما هر کدام می تواند یک برنامه ی ساده را به یک پروژه ی حرفه ای تبدیل کند.
هوش مصنوعی علاوه بر آنکه برنامه نویسی پیچیده ای دارد نیاز به حجم بسیار زیادی از اطلاعات دارد تا با تحلیل آن بتواند موارد جدید را تشخیص دهد. نگهداری و پردازش این حجم عظیم اطلاعات در سرورهای شخصی غیر ممکن است.
سرویس هوش مصنوعی مایکروسافت با ارائه ی یک API از طریق وب امکان استفاده از هوش مصنوعی را برای برنامه نویسان فراهم میکند.
سرویس پردازش عکس آن می تواند یک عکس دریافت کند و برای آن تگ انتخاب کند یا محتوای عکس را مشخص کند.
سرویس صدا می تواند صدای مخاطب را تشخیص دهد و آن را به متن تبدیل کند یا به زبان دیگر ترجمه کند.
سرویس دانش می تواند یک متن را دریافت کند و بر اساس آن یک سیستم پرسش و پاسخ ایجاد کند.
این سرویسها رایگان نیست و به همراه سرویس ابری عرضه میشود اما هر کدام می تواند یک برنامه ی ساده را به یک پروژه ی حرفه ای تبدیل کند.
دلایل رشد python
یکی از نقاط قوت python حجم بالای کتابخانه های آن در زمینه ی هوش مصنوعی و آموزش ماشین است. با توجه به علاقه ی روز افزون شرکتها به استفاده از هوش مصنوعی سریعترین و ساده ترین راه استفاده از پایتون است.
حتی خود مایکروسافت هم SDK مربوط به هوش مصنوعی خود به نام CNTK را فقط برای زبان پایتون عرضه کرده است.
زبان برنام نویسی R هم که برای هوش مصنوعی ، تحلیل داده و آموزش ماشین استفاده میشود رشد مشابهی مانند پایتون داشته است اما از آنجا یک زبان برنامه نویسی جامع نیست در نمودار آمار آن نشان داده نشده است.
به طور کلی رشد علوم داده و هوش مصنوعی دلیل اصلی محبوبت پایتون و R محسوب میشود.
یکی از نقاط قوت python حجم بالای کتابخانه های آن در زمینه ی هوش مصنوعی و آموزش ماشین است. با توجه به علاقه ی روز افزون شرکتها به استفاده از هوش مصنوعی سریعترین و ساده ترین راه استفاده از پایتون است.
حتی خود مایکروسافت هم SDK مربوط به هوش مصنوعی خود به نام CNTK را فقط برای زبان پایتون عرضه کرده است.
زبان برنام نویسی R هم که برای هوش مصنوعی ، تحلیل داده و آموزش ماشین استفاده میشود رشد مشابهی مانند پایتون داشته است اما از آنجا یک زبان برنامه نویسی جامع نیست در نمودار آمار آن نشان داده نشده است.
به طور کلی رشد علوم داده و هوش مصنوعی دلیل اصلی محبوبت پایتون و R محسوب میشود.
آشنایی با GraphQL
معمولا برای دسترسی به داده های یک وب سرویس باید آدرسهای مشخصی را صدا بزنید و روی اطلاعات دریافتی هم کنترلی ندارید. روش GraphQL می تواند جایگزین این سیستم شود و در قالب یک Query اطلاعات مورد نیاز را از سرور درخواست کند.
کتابخانه GraphQL در سرور قرار میگیرد و با یک آدرس اطلاعات وب سرویس را در اختیار کلاینت قرار می دهد. کلاینت در قالب json فرمت داده های مورد نیازش را مشخص می کند و فقط همان را از سرور دریافت میکند.
با GraphQL لازم نیست حجم زیادی از داده را از وب سرویس دریافت کنید و سپس فیلتر کنید. همچنین این ابزار قابلیت join کردن و تهیه ی گزارشهای تو در تو را هم دارد.
هرچند فیسبوک کتابخانه هایی برای استفاده در محیط #C و جاوا اسکریپت تهیه کرده اما GraphQL تنها یک ساختار و یک روش عرضه ی اطلاعات است و شرکتها می توانند آن را به شیوه ی مورد علاقه ی خود پیاده کنند.
معمولا برای دسترسی به داده های یک وب سرویس باید آدرسهای مشخصی را صدا بزنید و روی اطلاعات دریافتی هم کنترلی ندارید. روش GraphQL می تواند جایگزین این سیستم شود و در قالب یک Query اطلاعات مورد نیاز را از سرور درخواست کند.
کتابخانه GraphQL در سرور قرار میگیرد و با یک آدرس اطلاعات وب سرویس را در اختیار کلاینت قرار می دهد. کلاینت در قالب json فرمت داده های مورد نیازش را مشخص می کند و فقط همان را از سرور دریافت میکند.
با GraphQL لازم نیست حجم زیادی از داده را از وب سرویس دریافت کنید و سپس فیلتر کنید. همچنین این ابزار قابلیت join کردن و تهیه ی گزارشهای تو در تو را هم دارد.
هرچند فیسبوک کتابخانه هایی برای استفاده در محیط #C و جاوا اسکریپت تهیه کرده اما GraphQL تنها یک ساختار و یک روش عرضه ی اطلاعات است و شرکتها می توانند آن را به شیوه ی مورد علاقه ی خود پیاده کنند.