اشتراکها
اشتراکها
هفت راه برای افزایش سرعت Firefox
اشتراکها
استفاده از مرورگر فایرفاکس در دات نت
یکی از مواردی هم که ممکن است آزار دهنده باشد خطای سینتکسی است که در FireFox با زدن Ctrl+Shift+J قابل مشاهده خواهد بود.
نظرات مطالب
EF Code First #5
کلیک راست کن، گزینه Save Link As رو انتخاب کن (Firefox) یا لینکش رو توی IDM کپی و دانلود کن.
نظرات مطالب
فایرفاکس 3.5.6 و غیرفعال شدن افزونهها
منبع این مورد میزان مصرف حافظه، تجربیات شخصی بنده در کار با IE8 و همچنین فایرفاکس است.
+ Firefox Memory Hog را در گوگل جستجو کنید.
+ Firefox Memory Hog را در گوگل جستجو کنید.
- مباحث الگوی مخزن، در حالت کلی درست هستند؛ یک بحث انتزاعی، بدون درنظر گرفتن فناوری پیاده سازی کنندهی آن.
- در مورد EF به خصوص (در این مطلب)، DbSet و DbContext آن پیاده سازی کنندهی الگوهای Repository و Uow هستند ( و منکر آن نیستند ). به همین جهت عنوان میکنند که روی Repository آن، دوباره یک Repository درست نکنید. در بحث هم اشاره به «یک abstraction از abstraction دیگر» همین مطلب است.
اینترفیس IDbSet معروف در EF دقیقا یک abstraction است و بیانگر ساختار الگوی مخزن. کاملا هم قابلیت mocking دارد؛ از نگارش 6 به بعد EF البته (^ و ^ و ^).
- راه حلهای ارائه شده به دلیل اینکه Uow را تزریق نمیکنند مشکل دارند. اساسا هرگونه لایه بندی بدون تزریق وابستگیها مشکل دارد؛ نمیشود یک وهله از یک شیء را بین چندین کلاس درگیر به اشتراک گذاشت (مباحث مدیریت طول عمر در IoC Containerها). مثلا در راه حل آخر ارائه شده فقط آغاز و پایان اجرای یک متد از یک کنترلر مشخص تحت نظر هستند. واقعیت این است که تا اجرای یک اکشن متد به پایان برسد، در طول یک درخواست، پردازش referrer رسیده هم در کلاسی دیگر به موازت آن باید انجام شود (در یک HTTP Module مجزا) و امثال آن. در این حالت چون یک وهله از Uow به اشتراک گذاشته نشده، مدام باید وهله سازی شود؛ بجای اینکه از آن تا پایان درخواست، استفادهی مجدد شود. برای حل آن، در متن ذکر شده مطمئن شوید که «globally accessible» است. این مورد و راه حلهای استاتیک (مانند نحوهی فراخوانی MyApp آن) و singleton در برنامههای وب تا حد ممکن باید پرهیز شود. چون به معنای به اشتراک گذاری آن در بین تمام کاربران سایت. این مورد تخریب اطلاعات را به همراه خواهد داشت. چون DbContext جاری در حال استفاده توسط کاربر الف است و در همان زمان کاربر ب هم چون دسترسی عمومی به آن تعریف شده، مشغول به استفاده از آن خواهد شد. در این بین عملا تراکنش تعریف شده بیمعنا است چون اطلاعات آن خارج از حدود متدهای مدنظر توسط سایر کاربران تغییر کردهاند.
همچنین به دلیل عدم تزریق وابستگیها، پیاده سازیهای آن تعویض پذیر نیستند و قابلیت آزمایش واحد پایینی خواهند داشت. برای مثال در بحث mocking که مطرح شد، میتوانید بگویید بجای این متد خاص از کلاس اصلی، نمونهی آزمایشی من را استفاده کن.
- در مورد EF به خصوص (در این مطلب)، DbSet و DbContext آن پیاده سازی کنندهی الگوهای Repository و Uow هستند ( و منکر آن نیستند ). به همین جهت عنوان میکنند که روی Repository آن، دوباره یک Repository درست نکنید. در بحث هم اشاره به «یک abstraction از abstraction دیگر» همین مطلب است.
تصویری است از قرار دادن کرسر ماوس بر روی DbContext در VS.NET که به صراحت در آن از پیاده سازی الگوی مخزن یاد شده
اینترفیس IDbSet معروف در EF دقیقا یک abstraction است و بیانگر ساختار الگوی مخزن. کاملا هم قابلیت mocking دارد؛ از نگارش 6 به بعد EF البته (^ و ^ و ^).
- راه حلهای ارائه شده به دلیل اینکه Uow را تزریق نمیکنند مشکل دارند. اساسا هرگونه لایه بندی بدون تزریق وابستگیها مشکل دارد؛ نمیشود یک وهله از یک شیء را بین چندین کلاس درگیر به اشتراک گذاشت (مباحث مدیریت طول عمر در IoC Containerها). مثلا در راه حل آخر ارائه شده فقط آغاز و پایان اجرای یک متد از یک کنترلر مشخص تحت نظر هستند. واقعیت این است که تا اجرای یک اکشن متد به پایان برسد، در طول یک درخواست، پردازش referrer رسیده هم در کلاسی دیگر به موازت آن باید انجام شود (در یک HTTP Module مجزا) و امثال آن. در این حالت چون یک وهله از Uow به اشتراک گذاشته نشده، مدام باید وهله سازی شود؛ بجای اینکه از آن تا پایان درخواست، استفادهی مجدد شود. برای حل آن، در متن ذکر شده مطمئن شوید که «globally accessible» است. این مورد و راه حلهای استاتیک (مانند نحوهی فراخوانی MyApp آن) و singleton در برنامههای وب تا حد ممکن باید پرهیز شود. چون به معنای به اشتراک گذاری آن در بین تمام کاربران سایت. این مورد تخریب اطلاعات را به همراه خواهد داشت. چون DbContext جاری در حال استفاده توسط کاربر الف است و در همان زمان کاربر ب هم چون دسترسی عمومی به آن تعریف شده، مشغول به استفاده از آن خواهد شد. در این بین عملا تراکنش تعریف شده بیمعنا است چون اطلاعات آن خارج از حدود متدهای مدنظر توسط سایر کاربران تغییر کردهاند.
همچنین به دلیل عدم تزریق وابستگیها، پیاده سازیهای آن تعویض پذیر نیستند و قابلیت آزمایش واحد پایینی خواهند داشت. برای مثال در بحث mocking که مطرح شد، میتوانید بگویید بجای این متد خاص از کلاس اصلی، نمونهی آزمایشی من را استفاده کن.
نظرات اشتراکها
رایگان شدن بیش از ۷۰۰۰ دوره سایت Pluralsight
برنامهای برای دریافت لینکهای دانلود دورههای پلورالسایت
حدودا 23 روز دیگر تا پایان دسترسی رایگان به پلورالسایت باقی است. به همین جهت، برنامهای تهیه شد که توسط آن میتوانید لینکهای مستقیم دریافت فایلهای دورههای پلورالسایت را یافته و توسط دانلودمنیجر خود، آنها را دریافت کنید: PluralsightLinks.7z
روش استفاده:
- سورس کامل برنامه قرار داده شدهاست و برای اجرا، نیاز به NET Core 3.1. را دارد.
- فایل appsettings.json آنرا باز کنید. سپس در آن Username و Password ورود به سایت پلورالسایت خود را وارد کنید.
- سپس آرایهی CoursesToCheck را با فرمتی که مشاهده میکنید، بر اساس لینکهای اول صفحات دورههای مورد علاقهی خود تکمیل کنید.
و در آخر با کلیک بر روی فایل dotnet_run.bat، میتوانید برنامه را اجرا کرده و نتایج نهایی را در پوشهی Output تشکیل شده، مشاهده کنید. این نتایج به صورت فایلهای txt ذخیره میشوند که به سادگی قابلیت import در دانلودمنیجرها را دارند.
دو نکتهی مهم:
- لینکهای یافت شده، مدتدار هستند. بنابراین سریعتر نسبت به دریافت آنها اقدام کنید! بدیهی است در صورت منقضی شدن لینکها، باید مجددا لینکهای جدید را با اجرای مجدد برنامه، دریافت کنید.
- اگر با IP ایران میخواهید از این برنامه استفاده کنید، بلافاصله پس از لاگین، خطای 403 و عدم دسترسی را مشاهده خواهید کرد. برای رفع این مشکل، میتوانید DNS خود را به «شکن» تنظیم کنید؛ یعنی تنظیم DNS به 178.22.122.100 به صورت زیر:
حدودا 23 روز دیگر تا پایان دسترسی رایگان به پلورالسایت باقی است. به همین جهت، برنامهای تهیه شد که توسط آن میتوانید لینکهای مستقیم دریافت فایلهای دورههای پلورالسایت را یافته و توسط دانلودمنیجر خود، آنها را دریافت کنید: PluralsightLinks.7z
روش استفاده:
- سورس کامل برنامه قرار داده شدهاست و برای اجرا، نیاز به NET Core 3.1. را دارد.
- فایل appsettings.json آنرا باز کنید. سپس در آن Username و Password ورود به سایت پلورالسایت خود را وارد کنید.
- سپس آرایهی CoursesToCheck را با فرمتی که مشاهده میکنید، بر اساس لینکهای اول صفحات دورههای مورد علاقهی خود تکمیل کنید.
و در آخر با کلیک بر روی فایل dotnet_run.bat، میتوانید برنامه را اجرا کرده و نتایج نهایی را در پوشهی Output تشکیل شده، مشاهده کنید. این نتایج به صورت فایلهای txt ذخیره میشوند که به سادگی قابلیت import در دانلودمنیجرها را دارند.
دو نکتهی مهم:
- لینکهای یافت شده، مدتدار هستند. بنابراین سریعتر نسبت به دریافت آنها اقدام کنید! بدیهی است در صورت منقضی شدن لینکها، باید مجددا لینکهای جدید را با اجرای مجدد برنامه، دریافت کنید.
- اگر با IP ایران میخواهید از این برنامه استفاده کنید، بلافاصله پس از لاگین، خطای 403 و عدم دسترسی را مشاهده خواهید کرد. برای رفع این مشکل، میتوانید DNS خود را به «شکن» تنظیم کنید؛ یعنی تنظیم DNS به 178.22.122.100 به صورت زیر:
پس از این تغییر، چون IP قابل مشاهدهی سیستم شما توسط سایت پلورالسایت، تغییر میکند، مرحلهی لاگین و کار با سایت را بدون مشکل طی خواهید کرد.
به روز رسانیها:
- برنامه را کمی تغییر دادم تا خودش فایلها را هم یکی یکی دریافت کند؛ آهسته
و پیوسته، به همراه ایجاد پوشهها، به ازای هر ماژول دوره و نامگذاری
صحیح فایلهای ویدیوهای دریافتی: PluralsightLinks-V2.7z
- امکان دریافت زیرنویسهای هر ویدیو هم اضافه شد: PluralsightLinks-V5.7z
مطالب
معرفی ES 6
جاوا اسکریپت، پیاده سازی ECMA Script است (با تلفظ اکما اسکریپت) که به صورت مخفف به آن ES هم گفته میشود و ES 6، در حقیقت نگارش 6 این استاندارد است که به آن ECMA Script 2015 نیز میگویند (زمان نهایی شدن استاندارد آن سال 2015 است) و از زمان ارائهی جاوا اسکریپت، بزرگترین تغییر و تحول آن نیز محسوب میگردد. با ES 6 مواردی مانند کلاسها، برنامه نویسی تابعی (functional programming)، ماژولها و غیره اضافه شدهاند.
چرا باید ES 6 را آموخت؟
در طی 2 سال آینده، تمام فریم ورکهای جدید جاوا اسکریپتی، از بوت استرپ 4 تا AngularJS 2 تا Aurelia و غیره، همگی به ES 6 کوچ خواهند کرد (و این اتفاق هم اکنون در حال رخ دادن است). بنابراین به زودی بدون فراگیری و تسلط بر ES 6، در حوزهی وب، «بیسواد» محسوب خواهید شد و فراگیری آن یک «باید» است.
وضعیت پشتیبانی از ES 6 در مرورگرهای مختلف
برای مشاهدهی پیشرفتهای مرورگرهای کنونی در زمینهی پشتیبانی از ES 6، میتوان به صفحهی ES 6 compatibility table مراجعه کرد.
برای نمونه در حال حاضر، فایرفاکس بهترین پشتیبانی از ES 6 را ارائه میدهد (با پیاده سازی 85 درصد از قابلیتها) و بعد از آن مرورگر جدید مایکروسافت قرار دارد.
وضعیت IE 10,11 در این بین تغییری نخواهند کرد؛ زیرا پشتیبانی رسمی از تمام آنها به زودی خاتمه مییابد (در سه شنبه، ۲۲ دی ۱۳۹۴).
در همین صفحه، در ابتدای چارت، ستون current browser نیز قرار دارد. این ستون، وضعیت مرورگر جاری شما را از لحاظ درصد پیاده سازی قابلیتهای ES 6 نمایش میدهد.
اهمیت دریافت آخرین نگارشهای مرورگرها
با توجه به ES 6 compatibility table، اکثر مرورگرها در نسخههای شبانه و همچنین آزمایشی آنها، به مرور در حال افزودن قابلیتهای باقیماندهی ES 6 هستند. بنابراین اگر با فایرفاکس کار میکنید، نیاز است Firefox nightly builds را نصب کنید. اگر از مرورگرهای مایکروسافت استفاده میکنید، آخرین نگارش MS Edge بهترین پشتیبانی از ES 6 را ارائه میدهد و اگر از کروم استفاده میکنید، نگارشهای بتا و Dev آن را میتوانید دریافت کنید.
علاوه بر اینها، نگارشهای فعلی این مرورگرها نیز دارای امکانات آزمایشی هستند که میتوان آنها را به صورت دستی فعال کرد. برای مثال در مرورگر کروم، به آدرس chrome://flags مراجعه کنید و در صفحهی باز شده، کلمهی JavaScript را جستجو کنید. در اینجا نیاز است گزینهی «Enable Experimental JavaScript» را فعال کنید (بر روی لینک enable ذیل آن کلیک نمائید).
به این ترتیب قادر خواهید بود آخرین افزونههای ES 6 را در developer tools console آن اجرا کنید.
چنین تنظیمی به MS Edge نیز اضافه شدهاست. پس از اجرای آن، به آدرس about:flags مراجعه کنید:
در اینجا نیز میتوانید گزینهی «Enable experimental JavaScript features» را انتخاب کنید.
معرفی traceur-compiler
هرچند قابلیتهای فعلی آخرین نگارشهای مرورگرها برای اجرای بسیاری از امکانات ES 6 کفایت میکنند، اما اگر علاقمند به اجرای تمامی آنها هستید، میتوان از traceur-compiler گوگل نیز کمک گرفت (با تلفظ تریسر). این کامپایلر، قابلیتهای جدید ES 6 را تبدیل به نگارشهای فعلی قابل درک برای مرورگرهای قدیمیتر میکند. به این ترتیب امکان اجرای آزمایشات مرتبط با ES 6 را خواهید یافت.
روش استفادهی از آن هم به صورت ذیل است:
ابتدا نیاز است دو اسکریپت اصلی تریسر را به صفحه الحاق کنید. پس از آن نوع تگ اسکریپت را به module تنظیم کنید. در این بین قادر خواهید بود به تمامی امکانات ES 6 در مرورگر فعلی خود دسترسی داشته باشید.
چرا باید ES 6 را آموخت؟
در طی 2 سال آینده، تمام فریم ورکهای جدید جاوا اسکریپتی، از بوت استرپ 4 تا AngularJS 2 تا Aurelia و غیره، همگی به ES 6 کوچ خواهند کرد (و این اتفاق هم اکنون در حال رخ دادن است). بنابراین به زودی بدون فراگیری و تسلط بر ES 6، در حوزهی وب، «بیسواد» محسوب خواهید شد و فراگیری آن یک «باید» است.
وضعیت پشتیبانی از ES 6 در مرورگرهای مختلف
برای مشاهدهی پیشرفتهای مرورگرهای کنونی در زمینهی پشتیبانی از ES 6، میتوان به صفحهی ES 6 compatibility table مراجعه کرد.
برای نمونه در حال حاضر، فایرفاکس بهترین پشتیبانی از ES 6 را ارائه میدهد (با پیاده سازی 85 درصد از قابلیتها) و بعد از آن مرورگر جدید مایکروسافت قرار دارد.
وضعیت IE 10,11 در این بین تغییری نخواهند کرد؛ زیرا پشتیبانی رسمی از تمام آنها به زودی خاتمه مییابد (در سه شنبه، ۲۲ دی ۱۳۹۴).
در همین صفحه، در ابتدای چارت، ستون current browser نیز قرار دارد. این ستون، وضعیت مرورگر جاری شما را از لحاظ درصد پیاده سازی قابلیتهای ES 6 نمایش میدهد.
اهمیت دریافت آخرین نگارشهای مرورگرها
با توجه به ES 6 compatibility table، اکثر مرورگرها در نسخههای شبانه و همچنین آزمایشی آنها، به مرور در حال افزودن قابلیتهای باقیماندهی ES 6 هستند. بنابراین اگر با فایرفاکس کار میکنید، نیاز است Firefox nightly builds را نصب کنید. اگر از مرورگرهای مایکروسافت استفاده میکنید، آخرین نگارش MS Edge بهترین پشتیبانی از ES 6 را ارائه میدهد و اگر از کروم استفاده میکنید، نگارشهای بتا و Dev آن را میتوانید دریافت کنید.
علاوه بر اینها، نگارشهای فعلی این مرورگرها نیز دارای امکانات آزمایشی هستند که میتوان آنها را به صورت دستی فعال کرد. برای مثال در مرورگر کروم، به آدرس chrome://flags مراجعه کنید و در صفحهی باز شده، کلمهی JavaScript را جستجو کنید. در اینجا نیاز است گزینهی «Enable Experimental JavaScript» را فعال کنید (بر روی لینک enable ذیل آن کلیک نمائید).
به این ترتیب قادر خواهید بود آخرین افزونههای ES 6 را در developer tools console آن اجرا کنید.
چنین تنظیمی به MS Edge نیز اضافه شدهاست. پس از اجرای آن، به آدرس about:flags مراجعه کنید:
در اینجا نیز میتوانید گزینهی «Enable experimental JavaScript features» را انتخاب کنید.
معرفی traceur-compiler
هرچند قابلیتهای فعلی آخرین نگارشهای مرورگرها برای اجرای بسیاری از امکانات ES 6 کفایت میکنند، اما اگر علاقمند به اجرای تمامی آنها هستید، میتوان از traceur-compiler گوگل نیز کمک گرفت (با تلفظ تریسر). این کامپایلر، قابلیتهای جدید ES 6 را تبدیل به نگارشهای فعلی قابل درک برای مرورگرهای قدیمیتر میکند. به این ترتیب امکان اجرای آزمایشات مرتبط با ES 6 را خواهید یافت.
روش استفادهی از آن هم به صورت ذیل است:
<script src="https://google.github.io/traceur-compiler/bin/traceur.js"></script> <script src="https://google.github.io/traceur-compiler/src/bootstrap.js"></script> <script type="module"> // ES 6 </script>