مایکروسافت لانچر ۶.۰ با امکاناتی فراوان از راه رسید
مایکروسافت جدیدترین بیلد پیشنمایش Windows 10 Insider را منتشر کرد که میتواند بهبود تجربهی تنظیمات صوتی را به همراه داشته باشد. علاوه بر این بیلد جدید، شرکت ردموندی مایکروسافت خبر از تکمیل طراحی نهایی اپلیکیشن Microsoft Launcher داد و اکنون آمادهی استفادهی کاربران است.
پس از چندین بیلد آزمایشی، سرانجام مایکروسافت لانچر ۶.۰ در دسترس تمام کاربرانی که این اپلیکیشن را روی گوشی اندرویدی خود نصب کردهاند قرار گرفت. علیرغم تغییرات بدیهی ظاهری، مایکروسافت این لانچر را بر مبنای یک پایه کد جدید طراحی کرده است که به توسعه دهندگان اجازهی استفاده از قابلیتهایی بیشتر از گذشته را میدهد.
صحبت از قابلیتها شد، Microsoft Launcher 6.0 شامل یک تم تیره جدید است که به صورت پیشفرض با تنظیمات تم تیره اندروید سازگاری دارد. همچنین، یک بخش خوراک خبری جدید شخصیسازی شده نیز به کاربران کمک میکند از تمام اتفاقاتی که در سراسر جهان رخ میدهد، مطلع شوند.
این لانچر اندرویدی از حالت لنداسکیپ کامل نیز پشتیبانی میکند و میتوانید به طور کامل آیکونها را باب سلیقهی خودتان دربیاورید. در نهایت، لازم به ذکر است که نسخه جدید لانچر مایکروسافت سریعتر از گذشته شده، کمتر از حافظه دستگاه استفاده میکند و در استفاده از باتری نیز خساست به خرج میدهد.
در هر صورت، اگر قصد دانلود این لانچر را دارید، باید گوشی شما به اندروید ۷ یا بالاتر از آن مجهز باشد. همچنین برخی از قابلیتهای آن شاید فقط روی گوشیهای مجهز به اندروید ۸ یا بالاتر فعال باشد.
https://www.phonearena.com/news/Download-Microsoft-Launcher-6-Android_id125969
مایکروسافت جدیدترین بیلد پیشنمایش Windows 10 Insider را منتشر کرد که میتواند بهبود تجربهی تنظیمات صوتی را به همراه داشته باشد. علاوه بر این بیلد جدید، شرکت ردموندی مایکروسافت خبر از تکمیل طراحی نهایی اپلیکیشن Microsoft Launcher داد و اکنون آمادهی استفادهی کاربران است.
پس از چندین بیلد آزمایشی، سرانجام مایکروسافت لانچر ۶.۰ در دسترس تمام کاربرانی که این اپلیکیشن را روی گوشی اندرویدی خود نصب کردهاند قرار گرفت. علیرغم تغییرات بدیهی ظاهری، مایکروسافت این لانچر را بر مبنای یک پایه کد جدید طراحی کرده است که به توسعه دهندگان اجازهی استفاده از قابلیتهایی بیشتر از گذشته را میدهد.
صحبت از قابلیتها شد، Microsoft Launcher 6.0 شامل یک تم تیره جدید است که به صورت پیشفرض با تنظیمات تم تیره اندروید سازگاری دارد. همچنین، یک بخش خوراک خبری جدید شخصیسازی شده نیز به کاربران کمک میکند از تمام اتفاقاتی که در سراسر جهان رخ میدهد، مطلع شوند.
این لانچر اندرویدی از حالت لنداسکیپ کامل نیز پشتیبانی میکند و میتوانید به طور کامل آیکونها را باب سلیقهی خودتان دربیاورید. در نهایت، لازم به ذکر است که نسخه جدید لانچر مایکروسافت سریعتر از گذشته شده، کمتر از حافظه دستگاه استفاده میکند و در استفاده از باتری نیز خساست به خرج میدهد.
در هر صورت، اگر قصد دانلود این لانچر را دارید، باید گوشی شما به اندروید ۷ یا بالاتر از آن مجهز باشد. همچنین برخی از قابلیتهای آن شاید فقط روی گوشیهای مجهز به اندروید ۸ یا بالاتر فعال باشد.
https://www.phonearena.com/news/Download-Microsoft-Launcher-6-Android_id125969
Phone Arena
Microsoft Launcher 6.0 now rolling out to everyone, here is what's new
After numerous beta builds, Microsoft Launcher 6.0 is now rolling to everyone who already has the app installed on their Android devices.
زبان GraphQL یک زبان «منبع باز» (Open Source) برای «دستکاری» (Manipulation) و «پرس و جوی» (Query) دادهها در واسطهای برنامهنویسی کاربردی محسوب میشود. یکی از ویژگیهای مهم زبان GraphQL، فراهم آوردن قابلیت دستکاری و پرس و جوی دادهها در «زمان اجرا» (Run Time) است. زبان GraphQL، در سال 2012 توسط فیسبوک توسعه داده شد و در سال 2015 در دسترس عموم قرار گرفت. نکته مهم در مورد زبان GraphQL، افزایش علاقه برنامهنویسان به این زبان در چند سال اخیر است. چنین امری، زبان GraphQL را به یکی از ترندهای برنامهنویسی تبدیل کرده است.
#Technical_Debt #Software_Engineering #معرفی_سایت
❇بدهی فنی (Technical Debt) چیست؟
بدهی فنی یکی از موارد کلیدی در موفقیت تجاری نرمافزارهای توسعهدادهشده است. این اصطلاح توسط وارد کانیگهام در سال ۱۹۹۲ ابداع شد. او چنین چیزی گفت: «انتشار اولین کد مثل بدهکار شدن است. کمی بدهی، سرعت توسعه را بهبود میبخشد؛ به شرطی که در اولین فرصت با بازنویسی کد، تسویه شود... خطر زمانی رخ میدهد که تسویه نشود. هر دقیقه که صرف کد نامطلوب شود به عنوان بهره تلقی میشود. تمامی یک سازمان مهندسی میتواند تحت بار بدهی این کد نامستحکم، به حالت توقف کشانده شود.»
🔸تشبیه بدهی فنی ارتباط نزدیکی با بدهی مالی دارد و مربوط به انتشار سریع یک چیز و در نتیجه بدهکار شدن است. بعداً باید این بدهی را با بهبود کیفیت، تسویه کنید و اگر این کار را نکنید مجبور به پرداخت نرخ بهره هستید چون بهرهوری شما کاهش پیدا میکند و توسعهتان کند میشود.
🔹دلایل بدهی فنی:
- فشار زمانی
- استفاده از یک فناوری جدید برای نخستین بار بدون درک درست از آن
- طراحی اشتباه به دلیل نداشتن شناخت صحیح از نیازمندی های حوزه ی کسب وکار
- پوسیدگی نرمافزار
🔸اما بدهی فنی همیشه بد نیست. در واقع بدهی فنی یک راهبرد است. چون میتوانیم با بدهکار شدن به سرعت به هدف کسب و کار برسیم. بهتر است چیزی را سریع بنویسید و به کاربر برسانید و ببینید که آیا برای کسی مفید است؟ اگر برای کسی مفید است آن وقت است که بدهی فنی را پرداخت میکنیم. اگر کد بینقصی برای عملکردی که نمیدانیم مفید است یا نه بنویسیم هدر دادن زمان است.
🔹این ها بخشی از صحبت های سوِن یوهان و ابرهارد ولف در مورد بدهی فنی از مجموعه پادکست های صوتی سایت SE Radio است که توسط سایت https://se-topics.ir/ به خوبی ترجمه و در اختیار توسعه دهندگان فارسی زبان قرار داده شده است.
این سایت از جمله سایت های خوب فارسی در حوزه ی مهندسی نرم افزار است و به تهیه ترجمه از پادکستهای صوتی و تصویری از افراد خبره در این حوزه می پردازد. همچنین در صورت تمایل می توانید به جمع مترجمان این سایت بپیوندید و در ترجمه ی پادکست ها با این سایت همکاری داشته باشید تا مقاله تان با ذکر نام خودتان بر روی سایت قرار گیرد.
🔰متن کامل مقاله:
https://se-topics.ir/topicview?id=54
🔰مطالعه ی بیشتر در مورد بدهی فنی:
https://www.infoq.com/articles/managing-technical-debt
___
❇بدهی فنی (Technical Debt) چیست؟
بدهی فنی یکی از موارد کلیدی در موفقیت تجاری نرمافزارهای توسعهدادهشده است. این اصطلاح توسط وارد کانیگهام در سال ۱۹۹۲ ابداع شد. او چنین چیزی گفت: «انتشار اولین کد مثل بدهکار شدن است. کمی بدهی، سرعت توسعه را بهبود میبخشد؛ به شرطی که در اولین فرصت با بازنویسی کد، تسویه شود... خطر زمانی رخ میدهد که تسویه نشود. هر دقیقه که صرف کد نامطلوب شود به عنوان بهره تلقی میشود. تمامی یک سازمان مهندسی میتواند تحت بار بدهی این کد نامستحکم، به حالت توقف کشانده شود.»
🔸تشبیه بدهی فنی ارتباط نزدیکی با بدهی مالی دارد و مربوط به انتشار سریع یک چیز و در نتیجه بدهکار شدن است. بعداً باید این بدهی را با بهبود کیفیت، تسویه کنید و اگر این کار را نکنید مجبور به پرداخت نرخ بهره هستید چون بهرهوری شما کاهش پیدا میکند و توسعهتان کند میشود.
🔹دلایل بدهی فنی:
- فشار زمانی
- استفاده از یک فناوری جدید برای نخستین بار بدون درک درست از آن
- طراحی اشتباه به دلیل نداشتن شناخت صحیح از نیازمندی های حوزه ی کسب وکار
- پوسیدگی نرمافزار
🔸اما بدهی فنی همیشه بد نیست. در واقع بدهی فنی یک راهبرد است. چون میتوانیم با بدهکار شدن به سرعت به هدف کسب و کار برسیم. بهتر است چیزی را سریع بنویسید و به کاربر برسانید و ببینید که آیا برای کسی مفید است؟ اگر برای کسی مفید است آن وقت است که بدهی فنی را پرداخت میکنیم. اگر کد بینقصی برای عملکردی که نمیدانیم مفید است یا نه بنویسیم هدر دادن زمان است.
🔹این ها بخشی از صحبت های سوِن یوهان و ابرهارد ولف در مورد بدهی فنی از مجموعه پادکست های صوتی سایت SE Radio است که توسط سایت https://se-topics.ir/ به خوبی ترجمه و در اختیار توسعه دهندگان فارسی زبان قرار داده شده است.
این سایت از جمله سایت های خوب فارسی در حوزه ی مهندسی نرم افزار است و به تهیه ترجمه از پادکستهای صوتی و تصویری از افراد خبره در این حوزه می پردازد. همچنین در صورت تمایل می توانید به جمع مترجمان این سایت بپیوندید و در ترجمه ی پادکست ها با این سایت همکاری داشته باشید تا مقاله تان با ذکر نام خودتان بر روی سایت قرار گیرد.
🔰متن کامل مقاله:
https://se-topics.ir/topicview?id=54
🔰مطالعه ی بیشتر در مورد بدهی فنی:
https://www.infoq.com/articles/managing-technical-debt
___
InfoQ
Managing Technical Debt
Technical Debt is widely regarded as a bad thing that should be paid back as soon as possible, however it can be a strategy that helps balance short-term wins and long-term productivity. The article describes different ways that a project could pay back Technical…
❇️روش های Audit!
https://bit.ly/2RrXDJe
ثبت وقایع کاربران یا لاگ تاریچه عملیاتی که هر کاربر در سیستم انجام داده (مثلا چه شخصی چه زمانی چه چیزی رو insert کرده یا update کرده یا delete) بعضا در نرم افزار های بزرگ جز موارد مهم به حساب میاد
🔸روش های مختلفی واسه این کار وجود داره
1- مدیریت این کار از طریق تریگر روی دیتابیس
2- استفاده از روش های Interception
3- استفاده از ActionFilter توی MVC
4- سفارشی سازی متد SaveChanges در EF و استفاده از ChangeTracker
و...
در اینجا لیست گلچین شده ای از منابع مورد نیاز برای روش های 3 و 4 رو داریم
کتابخانه های اماده ای برای اینکار وجود داره :
1- https://github.com/thepirat000/Audit.NET/tree/master/src/Audit.EntityFramework
2- https://entityframework-plus.net/audit
3- https://github.com/bilal-fazlani/tracker-enabled-dbcontext
اگه هم نیازتون رو برطرف نکرد میتونین خودتون پیاده سازی کنین که خیلی راحته (پیشنهاد میکنم حتما کدش رو بررسی کنید)
https://bit.ly/2Sxyv0T
اگه هم مثل روش بالا (لاگ تاریخچه تغییرات) مد نظرتون نیست و فقط لاگ تغییرات اخرین کاربر روی یک Entity با فیلد های InsertDate, UpdateDate, DeleteDate و... کفایت میکنه میتونین از کتابخونه زیر استفاده کنین
https://bit.ly/2RtGTRI
و باز هم اگر نیازتون رو برطرف نکرد، پیاده سازیش خیلی راحته
https://bit.ly/2CJOymE
یه روش دیگه هم از لاگ گیری فعالیت های کاربران توی Mvc هست که توسط ActionFilter بعد از هر اکشن ثبت میکنه کدوم کاربر با کدوم IP کدوم صفحه رو در چه زمانی درخواست کرده
1- https://bit.ly/1PyYOKi
2- https://bit.ly/1Sh3s4N
البته این موارد مربوط به EF6 و MVC5 هستند ولی مفهومشون توی EF Core / Asp Core یکیه و با انجام تغییرات نه چندان زیاد میتونین توی Core هم ازش استفاده کنین
___
https://bit.ly/2RrXDJe
ثبت وقایع کاربران یا لاگ تاریچه عملیاتی که هر کاربر در سیستم انجام داده (مثلا چه شخصی چه زمانی چه چیزی رو insert کرده یا update کرده یا delete) بعضا در نرم افزار های بزرگ جز موارد مهم به حساب میاد
🔸روش های مختلفی واسه این کار وجود داره
1- مدیریت این کار از طریق تریگر روی دیتابیس
2- استفاده از روش های Interception
3- استفاده از ActionFilter توی MVC
4- سفارشی سازی متد SaveChanges در EF و استفاده از ChangeTracker
و...
در اینجا لیست گلچین شده ای از منابع مورد نیاز برای روش های 3 و 4 رو داریم
کتابخانه های اماده ای برای اینکار وجود داره :
1- https://github.com/thepirat000/Audit.NET/tree/master/src/Audit.EntityFramework
2- https://entityframework-plus.net/audit
3- https://github.com/bilal-fazlani/tracker-enabled-dbcontext
اگه هم نیازتون رو برطرف نکرد میتونین خودتون پیاده سازی کنین که خیلی راحته (پیشنهاد میکنم حتما کدش رو بررسی کنید)
https://bit.ly/2Sxyv0T
اگه هم مثل روش بالا (لاگ تاریخچه تغییرات) مد نظرتون نیست و فقط لاگ تغییرات اخرین کاربر روی یک Entity با فیلد های InsertDate, UpdateDate, DeleteDate و... کفایت میکنه میتونین از کتابخونه زیر استفاده کنین
https://bit.ly/2RtGTRI
و باز هم اگر نیازتون رو برطرف نکرد، پیاده سازیش خیلی راحته
https://bit.ly/2CJOymE
یه روش دیگه هم از لاگ گیری فعالیت های کاربران توی Mvc هست که توسط ActionFilter بعد از هر اکشن ثبت میکنه کدوم کاربر با کدوم IP کدوم صفحه رو در چه زمانی درخواست کرده
1- https://bit.ly/1PyYOKi
2- https://bit.ly/1Sh3s4N
البته این موارد مربوط به EF6 و MVC5 هستند ولی مفهومشون توی EF Core / Asp Core یکیه و با انجام تغییرات نه چندان زیاد میتونین توی Core هم ازش استفاده کنین
___
♨️اپل فیس آیدی را به دنیای مک میآورد
چندین سالی میشود که اپل فیس آیدی را جایگزین تاچ آیدی در آیفونهای خود کرده و آپید پرو نیز به این فناوری مجهز شده است. حالا ظاهرا باید منتظر ورود آن به دنیای مک باشیم.
در حال حاضر مک بوک خود را میتوانید توسط پسورد یا تاچ آیدی آنلاک کنید، اما اخیرا 9to5Mac به کدی در نسخه بتای سیستم عامل مک او اس Big Sur دست پیدا کرده که نشان میدهد فیس آیدی احتمالا در آینده وارد کامپیوترهای اپل میشود.
به نظر میرسد کد موجود در این سیستم عامل به اسم رمز اپل برای دوربین TrueDepth اشاره دارد. این دوربین باعث میشود کاربران به فیس آیدی در محصولاتی مانند گوشیهای سری آیفون ۱۱ و آیپد پرو دست پیدا کند، البته مکهای کنونی و همچنین نسل جدید آیفون SE از چنین قابلیتی محروم هستند. در این کد عبارتهای «FaceDetect» و «BioCapture» نیز به چشم میخورند که از تشخیص چهره بیومتریک خبر میدهد.
در صورتی که فناوری تشخیص چهره به دنیای مک راه پیدا کند، میتوان با استفاده از آن قفل دستگاه را باز کرد و نرم افزارهای واقعیت افزوده از چهره کاربر یک نقشه تهیه میکنند. فیس آیدی در مک بوکها میتواند کاربرد زیادی داشته باشد، مخصوصا اگر از نسخه جدید سافاری استفاده کنید.
https://dgto.ir/1rya
چندین سالی میشود که اپل فیس آیدی را جایگزین تاچ آیدی در آیفونهای خود کرده و آپید پرو نیز به این فناوری مجهز شده است. حالا ظاهرا باید منتظر ورود آن به دنیای مک باشیم.
در حال حاضر مک بوک خود را میتوانید توسط پسورد یا تاچ آیدی آنلاک کنید، اما اخیرا 9to5Mac به کدی در نسخه بتای سیستم عامل مک او اس Big Sur دست پیدا کرده که نشان میدهد فیس آیدی احتمالا در آینده وارد کامپیوترهای اپل میشود.
به نظر میرسد کد موجود در این سیستم عامل به اسم رمز اپل برای دوربین TrueDepth اشاره دارد. این دوربین باعث میشود کاربران به فیس آیدی در محصولاتی مانند گوشیهای سری آیفون ۱۱ و آیپد پرو دست پیدا کند، البته مکهای کنونی و همچنین نسل جدید آیفون SE از چنین قابلیتی محروم هستند. در این کد عبارتهای «FaceDetect» و «BioCapture» نیز به چشم میخورند که از تشخیص چهره بیومتریک خبر میدهد.
در صورتی که فناوری تشخیص چهره به دنیای مک راه پیدا کند، میتوان با استفاده از آن قفل دستگاه را باز کرد و نرم افزارهای واقعیت افزوده از چهره کاربر یک نقشه تهیه میکنند. فیس آیدی در مک بوکها میتواند کاربرد زیادی داشته باشد، مخصوصا اگر از نسخه جدید سافاری استفاده کنید.
https://dgto.ir/1rya
دیجیاتو
اپل فیس آیدی را به دنیای مک میآورد
چندین سالی میشود که اپل فیس آیدی را جایگزین تاچ آیدی در آیفونهای خود کرده و آپید پرو نیز به این فناوری مجهز شده است....
از یک فستفود در فاصله ی 10 کیلومتری پیتزا سفارش میدهید. اگر پیتزا از قبل آماده ارسال باشد و پیک هم با سرعت 100 کیلومتر بر ساعت حرکت کند حداقل 6 دقیقه طول میکشد تا پیتزا به دست شما برسد و 12 دقیقه طول میکشد تا فستفود از تحویل باخبر شود.
تاخیر یا Latency : مدت زمانی که طول میکشد داده از نقطه ی A به B برسد Latency گفته میشود. از آنجا که فاصله همیشه وجود دارد تاخیر اجتناب ناپذیز است.
پهنای باند یا Bandwidth: پیک هربار فقط می تواند 5 پیتزا با خود حمل کند. اگر شما 20 پیتزا سفارش دهید باید 4 بار رفت و آمد کند.
در سال 1996 آقای Stuart Cheshire مقاله ای منتشر کرد با عنوان "Its latency stupid" و در آن مشکل شبکه های اینترنتی را Latency دانست و نه پهنای باند. همیشه میشود پهنای باند را افزایش داده اما نمی توان تاخیر زمانی بین دو نقطه را از بین برد.حتی اگر داده با سرعت نور حرکت کند همیشه تاخیر وجود دارد.
مشکل Latency چالش اصلی سرویس های Real-time مانند بازیهای آنلاین است. برای کاهش آن میتوان از سروری که در موقعیت فیزیکی نزدیک تری دارد استفاده کرد.
تاخیر یا Latency : مدت زمانی که طول میکشد داده از نقطه ی A به B برسد Latency گفته میشود. از آنجا که فاصله همیشه وجود دارد تاخیر اجتناب ناپذیز است.
پهنای باند یا Bandwidth: پیک هربار فقط می تواند 5 پیتزا با خود حمل کند. اگر شما 20 پیتزا سفارش دهید باید 4 بار رفت و آمد کند.
در سال 1996 آقای Stuart Cheshire مقاله ای منتشر کرد با عنوان "Its latency stupid" و در آن مشکل شبکه های اینترنتی را Latency دانست و نه پهنای باند. همیشه میشود پهنای باند را افزایش داده اما نمی توان تاخیر زمانی بین دو نقطه را از بین برد.حتی اگر داده با سرعت نور حرکت کند همیشه تاخیر وجود دارد.
مشکل Latency چالش اصلی سرویس های Real-time مانند بازیهای آنلاین است. برای کاهش آن میتوان از سروری که در موقعیت فیزیکی نزدیک تری دارد استفاده کرد.
قابلیت Nearby Share گوگل از مرداد در دسترس کاربران اندروید قرار میگیرد
قابلیت Nearby Share گوگل مشابه ایر دراپ در آی او اس، به کاربران اجازه به اشتراک گذاری فایلها میان دو گوشی اندرویدی را میدهد و حالا تاریخ عرضه احتمالی آن مشخص شده است.
به نظر میرسد که گوگل در مراحل پایانی تست و بررسی قابلیت به اشتراک گذاری Nearby Share قرار دارد و فاصله چندانی با انتشار نسخه نهایی آن نداریم. منابع خبری مطلع از این ویژگی، ارتباطی با مقامات رسمی گوگل ندارند اما صحبتها پیرامون این قابلیت به تازگی افزایش یافته و حالا ما بازهی زمانی احتمالی که قرار است این ویژگی جدید در اختیار کاربران اندروید قرار بگیرد را میدانیم.
طبق این گزارش قرار است از شروع ماه آگوست یعنی از اواسط مرداد ماه، کاربرانی که دارای گوشی های اندروید ۶ و بالاتر هستند، قادر به استفاده از آن باشند و اضافه شدن پشتیبانی از این ویژگی از طریق یک آپدیت انجام میگیرد. پیش از این نیز در مراحل تست نسخه بتای قابلیت Nearby Share گوگل، حداقل ورژن سیستم عامل برای پشتیبانی از این قابلیت به همین شکل اعلام شده بود و این احتمال حقیقی بودن گزارش را بالاتر میبرد.
مراحل تست نسخه بتا هنوز هم ادامه دارد و مدلهایی که از آن پشتیبانی میکنند، با دریافت یک نسخه بتا از سرویسهای گوگل پلی میتوانند آن را دریافت کنند. برخلاف دیگر ویژگیهای سطح پایین اندروید که بخشی از خود سیستم عامل به شمار میروند، قابلیت Nearby Share گوگل بخشی از فریم ورک محسوب میشود و به همین دلیل منطقی خواهد بود که تمام کاربران اندروید ۶ و نسخههای بعدی این سیستم عامل به راحتی از طریق یک پکیج بروزرسانی درون فروشگاه گوگل پلی، بتوانند آن را دریافت کنند.
https://www.gsmarena.com/google_nearby_share_could_be_coming_to_most_android_users_starting_august-news-44338.php
قابلیت Nearby Share گوگل مشابه ایر دراپ در آی او اس، به کاربران اجازه به اشتراک گذاری فایلها میان دو گوشی اندرویدی را میدهد و حالا تاریخ عرضه احتمالی آن مشخص شده است.
به نظر میرسد که گوگل در مراحل پایانی تست و بررسی قابلیت به اشتراک گذاری Nearby Share قرار دارد و فاصله چندانی با انتشار نسخه نهایی آن نداریم. منابع خبری مطلع از این ویژگی، ارتباطی با مقامات رسمی گوگل ندارند اما صحبتها پیرامون این قابلیت به تازگی افزایش یافته و حالا ما بازهی زمانی احتمالی که قرار است این ویژگی جدید در اختیار کاربران اندروید قرار بگیرد را میدانیم.
طبق این گزارش قرار است از شروع ماه آگوست یعنی از اواسط مرداد ماه، کاربرانی که دارای گوشی های اندروید ۶ و بالاتر هستند، قادر به استفاده از آن باشند و اضافه شدن پشتیبانی از این ویژگی از طریق یک آپدیت انجام میگیرد. پیش از این نیز در مراحل تست نسخه بتای قابلیت Nearby Share گوگل، حداقل ورژن سیستم عامل برای پشتیبانی از این قابلیت به همین شکل اعلام شده بود و این احتمال حقیقی بودن گزارش را بالاتر میبرد.
مراحل تست نسخه بتا هنوز هم ادامه دارد و مدلهایی که از آن پشتیبانی میکنند، با دریافت یک نسخه بتا از سرویسهای گوگل پلی میتوانند آن را دریافت کنند. برخلاف دیگر ویژگیهای سطح پایین اندروید که بخشی از خود سیستم عامل به شمار میروند، قابلیت Nearby Share گوگل بخشی از فریم ورک محسوب میشود و به همین دلیل منطقی خواهد بود که تمام کاربران اندروید ۶ و نسخههای بعدی این سیستم عامل به راحتی از طریق یک پکیج بروزرسانی درون فروشگاه گوگل پلی، بتوانند آن را دریافت کنند.
https://www.gsmarena.com/google_nearby_share_could_be_coming_to_most_android_users_starting_august-news-44338.php
GSMArena
Google Nearby Share could be coming to most Android users starting August
Support for Windows, macOS, Linux and ChromeOS are also on the roadmap.
هکرها اطلاعات ۷.۵ میلیون کاربر اپ بانکی دیجیتال «Dave» را در یک فروم عمومی منتشر کردند، اقدامی که باعث شده سازنده این برنامه، نقص امنیتی آن را تایید کند.
به گزارش ZDNet، این نقص امنیتی در حقیقت به شبکه شریک تجاری سابق آن، «Waydev» که یک پلتفرم تحلیلی مورد استفاده توسط تیمهای مهندسی است، مربوط میشود. سخنگوی Dave اعلام کرده:
«به علت رخنه امنیتی در Waydev، یکی از تامینکنندگان خدمات شخص ثالث سابق Dave، هکرها به برخی اطلاعات کاربران به صورت غیرمجاز دسترسی پیدا کردند.»
به گفته این کمپانی، هم اکنون هکرها به شبکه دسترسی ندارند و به کاربران قربانی نیز اطلاع داده شده است. پسوردهای اپلیکیشن Dave پس از اینکه در معرض خطر قرار گرفتند، ریست شدند:
«هنگامی که متوجه چنین موضوعی شدیم، به سرعت تحقیق درباره آن را آغاز کردیم و هم اکنون این پرونده با هماهنگی مقامات قانونی شامل FBI در جریان است. هکرها توانستهاند به برخی پسوردها دست پیدا کنند و بدنبال فروش اطلاعات مشتریان هستند.»
هم اکنون اطلاعات کاربران اپ بانکی Dave به صورت رایگان در دسترس قرار دارند و میتوان آنها را دانلود کرد، البته باید ابتدا عضو این فروم شد. این دیتا شامل اطلاعاتی مانند نام واقعی، شماره تلفن، ایمیل، تاریخ تولد و آدرس خانه میشود و در برخی آنها اطلاعات پرداخت و شماره تامین اجتماعی نیز به چشم میخورند که البته رمزگذاری شدهاند.
https://www.zdnet.com/article/tech-unicorn-dave-admits-to-security-breach-impacting-7-5-million-users/
به گزارش ZDNet، این نقص امنیتی در حقیقت به شبکه شریک تجاری سابق آن، «Waydev» که یک پلتفرم تحلیلی مورد استفاده توسط تیمهای مهندسی است، مربوط میشود. سخنگوی Dave اعلام کرده:
«به علت رخنه امنیتی در Waydev، یکی از تامینکنندگان خدمات شخص ثالث سابق Dave، هکرها به برخی اطلاعات کاربران به صورت غیرمجاز دسترسی پیدا کردند.»
به گفته این کمپانی، هم اکنون هکرها به شبکه دسترسی ندارند و به کاربران قربانی نیز اطلاع داده شده است. پسوردهای اپلیکیشن Dave پس از اینکه در معرض خطر قرار گرفتند، ریست شدند:
«هنگامی که متوجه چنین موضوعی شدیم، به سرعت تحقیق درباره آن را آغاز کردیم و هم اکنون این پرونده با هماهنگی مقامات قانونی شامل FBI در جریان است. هکرها توانستهاند به برخی پسوردها دست پیدا کنند و بدنبال فروش اطلاعات مشتریان هستند.»
هم اکنون اطلاعات کاربران اپ بانکی Dave به صورت رایگان در دسترس قرار دارند و میتوان آنها را دانلود کرد، البته باید ابتدا عضو این فروم شد. این دیتا شامل اطلاعاتی مانند نام واقعی، شماره تلفن، ایمیل، تاریخ تولد و آدرس خانه میشود و در برخی آنها اطلاعات پرداخت و شماره تامین اجتماعی نیز به چشم میخورند که البته رمزگذاری شدهاند.
https://www.zdnet.com/article/tech-unicorn-dave-admits-to-security-breach-impacting-7-5-million-users/
ZDNet
Tech unicorn Dave admits to security breach impacting 7.5 million users
Dave user data is now available for download on a public hacking forum.
✅ حرفه ای ترین سلوشن Logging در NETCore. با استفاده از Serilog و ElasticSearch و Kibana
#PerformanceTuning
کتابخانه های مختلفی برای لاگ کردن خطا ها در دات نت وجود داره، از جمله Elmah، NLog, Log4net و ...
کتابخانه Elmah بهترین انتخاب برای پروژه های کوچک و متوسطه، کار باهاش راحته و پنل ساده ای هم داره، ولی توی پروژه های بزرگ که تعداد لاگ ها خیلی زیاد میشه، دیگه Elmah جوابگو نیست، هم به خاطر سرعت کمش نسبت به بقیه کتابخانه ها و هم به خاطر پنل ضعیف اش که حتی یه سرچ هم نداره
در این شرایط راه های مختلفی هست مثل استفاده از سرویس های نگهداری لاگ Cloud-based مثل setrny.io , elmah.io و ...
راه حل بعدی استفاده از برنامه های مدیریت لاگ مثل Seq هستند که بر خلاف مورد قبلی، یک سرویس خارجی نیست و روی سرور خودتون لاگ ها رو نگهداری میکنه و داشبورد قدرتمندی برای سرچ و کوئری گرفتن در اختیارتون میذاره (ولی پولیه)
🔰 راه حل حرفه ای تر و البته رایگان، استفاده از Serilog و ElasticSearch و Kibana هست
🔸دیتابیس ElasticSearch در واقع یک دیتابیس NoSql و یک Search Engine (موتور جستجو) سورس باز و فوق سریع (بر پایه Lucene) هست که قابلیت جستجو و کوئری زدن زدن (به صورت full text search) با سرعت و قدرت بالا رو داره از اون برای نگهداری لاگ ها استفاده خواهیم کرد
🔹پنل Kibana هم یه پلاگین داشبور سورس باز و قدرتمند با امکانات زیاد برای نمایش اطلاعات دیتابیس Elastic هست و از اون برای نمایش خطا ها و جستجو کردن و نمودار گرفتن استفاده می کنیم
🔸 کتابخانه Serilog هم میشه گفت بهترین کتابخانه Logging هست. نسبت به NLog جدید تره و طراحی مدرن تری داره و میزان رشد محبوبیتش هم بیشتره؛ پس میشه گفت از NLog هم بهتره (البته خیلی اختلاف ندارند)
این کتابخونه قابلیت های زیادی داره که به لطف پلاگین های زیادی که برای Serilog وجود داره (اصطلاحا بهش میگن Sinks) براش فراهم شده و از لحاظ پرفرمنسی هم از NLog سریع تره.
🔹 تنها نکته مهم، استفاده از روش Structred Logging نسبت به حالت معمولی است. شاید فکر کنید دو دستور زیر هیچ تفاوتی نمیکنه!
مقالات آموزش این سلوشن :
https://bit.ly/2EAjpTh
https://bit.ly/2EBUYFc
https://bit.ly/2X7g1Xn
https://bit.ly/2Exvs3C
مخزن نمونه کد :
https://github.com/thecarlo/elastic-kibana-netcore-serilog
_____________
#PerformanceTuning
کتابخانه های مختلفی برای لاگ کردن خطا ها در دات نت وجود داره، از جمله Elmah، NLog, Log4net و ...
کتابخانه Elmah بهترین انتخاب برای پروژه های کوچک و متوسطه، کار باهاش راحته و پنل ساده ای هم داره، ولی توی پروژه های بزرگ که تعداد لاگ ها خیلی زیاد میشه، دیگه Elmah جوابگو نیست، هم به خاطر سرعت کمش نسبت به بقیه کتابخانه ها و هم به خاطر پنل ضعیف اش که حتی یه سرچ هم نداره
در این شرایط راه های مختلفی هست مثل استفاده از سرویس های نگهداری لاگ Cloud-based مثل setrny.io , elmah.io و ...
راه حل بعدی استفاده از برنامه های مدیریت لاگ مثل Seq هستند که بر خلاف مورد قبلی، یک سرویس خارجی نیست و روی سرور خودتون لاگ ها رو نگهداری میکنه و داشبورد قدرتمندی برای سرچ و کوئری گرفتن در اختیارتون میذاره (ولی پولیه)
🔰 راه حل حرفه ای تر و البته رایگان، استفاده از Serilog و ElasticSearch و Kibana هست
🔸دیتابیس ElasticSearch در واقع یک دیتابیس NoSql و یک Search Engine (موتور جستجو) سورس باز و فوق سریع (بر پایه Lucene) هست که قابلیت جستجو و کوئری زدن زدن (به صورت full text search) با سرعت و قدرت بالا رو داره از اون برای نگهداری لاگ ها استفاده خواهیم کرد
🔹پنل Kibana هم یه پلاگین داشبور سورس باز و قدرتمند با امکانات زیاد برای نمایش اطلاعات دیتابیس Elastic هست و از اون برای نمایش خطا ها و جستجو کردن و نمودار گرفتن استفاده می کنیم
🔸 کتابخانه Serilog هم میشه گفت بهترین کتابخانه Logging هست. نسبت به NLog جدید تره و طراحی مدرن تری داره و میزان رشد محبوبیتش هم بیشتره؛ پس میشه گفت از NLog هم بهتره (البته خیلی اختلاف ندارند)
این کتابخونه قابلیت های زیادی داره که به لطف پلاگین های زیادی که برای Serilog وجود داره (اصطلاحا بهش میگن Sinks) براش فراهم شده و از لحاظ پرفرمنسی هم از NLog سریع تره.
🔹 تنها نکته مهم، استفاده از روش Structred Logging نسبت به حالت معمولی است. شاید فکر کنید دو دستور زیر هیچ تفاوتی نمیکنه!
logger.Debug("UserName is : Ali");
logger.Debug("UserName is : {username}", "Ali");
ولی عملکرد این دو یکسان نبوده و خط دوم که به صورت Structred هست اطلاعات را به صورت جداگانه ضبط و ثبت میکنه درنتیجه در کنار متن خطا، یک فیلد به نام username با مقدار Ali نیز ذخیره میکنه که کار جستجو و کوئری زدن رو راحت تر میکنهمقالات آموزش این سلوشن :
https://bit.ly/2EAjpTh
https://bit.ly/2EBUYFc
https://bit.ly/2X7g1Xn
https://bit.ly/2Exvs3C
مخزن نمونه کد :
https://github.com/thecarlo/elastic-kibana-netcore-serilog
_____________
❇️ معرفی برترین کتابخانه های Task Scheduling (انجام کار های پس زمینه) در دات نت
برای این کار راه های مختلفی هست
1️⃣ کلاس Generic Host و BackgrounService :
در ساده ترین حالت توسط قابلیت های تو کار خود ASP Core میتونین اینکارو انجام بدین
https://www.dotnettips.info/post/2997
https://docs.microsoft.com/en-us/aspnet/core/fundamentals/host/hosted-services?view=aspnetcore-2.2
2️⃣ کتابخانه Coravel :
مزیت این کتابخانه اینه که DI رو به صورت داخلی ساپورت میکنه (بر خلاف FluentScheduler) [گزینه مورد علاقه خودم - ساده و سبک ولی مدرن]
https://github.com/jamesmh/coravel
https://docs.coravel.net
3️⃣ کتابخانه FluentScheduler
https://github.com/fluentscheduler/FluentScheduler
4️⃣ کتابخانه Hangfire :
بهترین گزینه برای پروژه های بزرگ (خیلی حرفه ای و full-feature هست)
یک پنل داشبوری برای نمایش لیست کار های زمان بندی شده به همراه وضعیتشون بهتون میده که میتونین تسک ها رو غیر فعال کنین یا گزارش ازشون بگیرین و...
https://www.hangfire.io/
https://github.com/HangfireIO/Hangfire
5️⃣ کتابخانه DNTScheduler.Core :
نویسنده این کتابخانه وحید نصیری عزیز هستش
https://github.com/VahidN/DNTScheduler.Core
https://www.dotnettips.info/post/1736
6️⃣کتابخانه Quartz.Net :
این کتابخانه port شده از معادل جاواییش هست و code quality خوبی نداره و طراحیش هم مدرن نیست (کلا پیشنهاد نمیکنم تا گزینه های بهتری هست)
https://www.quartz-scheduler.net/
https://github.com/quartznet/quartznet
✅ همه این کتابخانه ها از Cron پشتیبانی میکنن
در واقع Cron یه سینتکس دستوری واسه زمان بندی کار ها هست که قوائد خاص خودش رو داره (اسامی CronTab و CronJob هم از همین خانوادس)
مثلا برای اینکه یه تسک هر ۱۵ دقیقه یک بار انجام بشه، دستور Cron اش میشه
_____________
برای این کار راه های مختلفی هست
1️⃣ کلاس Generic Host و BackgrounService :
در ساده ترین حالت توسط قابلیت های تو کار خود ASP Core میتونین اینکارو انجام بدین
https://www.dotnettips.info/post/2997
https://docs.microsoft.com/en-us/aspnet/core/fundamentals/host/hosted-services?view=aspnetcore-2.2
2️⃣ کتابخانه Coravel :
مزیت این کتابخانه اینه که DI رو به صورت داخلی ساپورت میکنه (بر خلاف FluentScheduler) [گزینه مورد علاقه خودم - ساده و سبک ولی مدرن]
https://github.com/jamesmh/coravel
https://docs.coravel.net
3️⃣ کتابخانه FluentScheduler
https://github.com/fluentscheduler/FluentScheduler
4️⃣ کتابخانه Hangfire :
بهترین گزینه برای پروژه های بزرگ (خیلی حرفه ای و full-feature هست)
یک پنل داشبوری برای نمایش لیست کار های زمان بندی شده به همراه وضعیتشون بهتون میده که میتونین تسک ها رو غیر فعال کنین یا گزارش ازشون بگیرین و...
https://www.hangfire.io/
https://github.com/HangfireIO/Hangfire
5️⃣ کتابخانه DNTScheduler.Core :
نویسنده این کتابخانه وحید نصیری عزیز هستش
https://github.com/VahidN/DNTScheduler.Core
https://www.dotnettips.info/post/1736
6️⃣کتابخانه Quartz.Net :
این کتابخانه port شده از معادل جاواییش هست و code quality خوبی نداره و طراحیش هم مدرن نیست (کلا پیشنهاد نمیکنم تا گزینه های بهتری هست)
https://www.quartz-scheduler.net/
https://github.com/quartznet/quartznet
✅ همه این کتابخانه ها از Cron پشتیبانی میکنن
در واقع Cron یه سینتکس دستوری واسه زمان بندی کار ها هست که قوائد خاص خودش رو داره (اسامی CronTab و CronJob هم از همین خانوادس)
مثلا برای اینکه یه تسک هر ۱۵ دقیقه یک بار انجام بشه، دستور Cron اش میشه
*/15 * * * *
توی سایت زیر که یک محیط تعاملی برای نوشتن دستور Cron هست میتونین با قوائد و مثال هاش بیشتر آشنا بشین_____________
❇️ سری آموزش DevOps for ASP.NET Developers (زبان اصلی زیر نویس دار)
از پایین ویدئو گزینه [Subtitle/captions] میتوانید زیرنویس آن را فعال کنید
1️⃣ What is DevOps
2️⃣ Source Control
3️⃣ Work Item Tracking
4️⃣ Continuous Integration
5️⃣ Unit Testing
6️⃣ Release Pipelines
7️⃣ Templates and Scaffolding Tools
8️⃣ Azure DevOps Integration with GitHub
____________
از پایین ویدئو گزینه [Subtitle/captions] میتوانید زیرنویس آن را فعال کنید
1️⃣ What is DevOps
2️⃣ Source Control
3️⃣ Work Item Tracking
4️⃣ Continuous Integration
5️⃣ Unit Testing
6️⃣ Release Pipelines
7️⃣ Templates and Scaffolding Tools
8️⃣ Azure DevOps Integration with GitHub
____________
Docs
DevOps For ASP.NET Developers Pt.1 - What is DevOps?
DevOps is the union of people, process, and products to enable continuous delivery of value to our end users. Azure DevOps is everything you need to turn an idea into a working piece of software.In this first episode of the DevOps for ASP.NET Developers series…
🔰 یک نکته پرفرمنسی درباره Logging
🔸استفاده از تامین کننده Console برای Logging در حین ارائه نهایی (Production) به شدت باعث کند شدن و کاهش کارآیی برنامه خواهد شد. بهتر است این تامین کننده را صرفا در محیط Development تنظیم کنید (مانند تصویر)
🔹اگر از WebHost.CreateDefaultBuilder استفاده میکنید، به صورت پیشفرض سه تامین کننده Console و Debug و EventSource ثبت خواهند شد پس لازم است ابتدا آن ها را توسط متد ClearProviders حذف کنید
#PerformanceTuning
_________
🔸استفاده از تامین کننده Console برای Logging در حین ارائه نهایی (Production) به شدت باعث کند شدن و کاهش کارآیی برنامه خواهد شد. بهتر است این تامین کننده را صرفا در محیط Development تنظیم کنید (مانند تصویر)
🔹اگر از WebHost.CreateDefaultBuilder استفاده میکنید، به صورت پیشفرض سه تامین کننده Console و Debug و EventSource ثبت خواهند شد پس لازم است ابتدا آن ها را توسط متد ClearProviders حذف کنید
#PerformanceTuning
_________
۱۲ نکته در مورد Debugging در ویژوال استودیو:
در این پست فرض بر این است که خواننده اصول اولیه دیباگ کردن با ویژوال استودیو را می داند.
در صورتی که تسلط کامل بر روی این ۱۲ نکته داشته باشید، می توانید با کیفیت بالایی کد های خود را دیباگ کنید.
مواردی که در این پست به آن پرداخته شده است:
✅ 1) Run to Cursor : Ctrl+F10
✅ 2) Run through here with a mouse click
✅ 3) Set next statement to here : holding the key Ctrl
✅ 4) Data breakpoint: Break when value changes
✅ 5) Conditional breakpoint
✅ 6) Trace breakpoint
✅ 7) Track Objects that Are Out-Of-Scope : Make Object ID
✅ 8) View values returned by functions :
Debug > Windows > Autos
✅ 9) Reattach To Process: Shift+Alt+P
✅ 10) No-Side-Effect evaluation in Immediate Window and in the Watch Window
✅ 11) Show Threads in Source
✅ 12) Debug source code decompiled from IL code
جزئیات کامل را میتوانید در لینک زیر مطالعه کنید:
https://blog.ndepend.com/12-visual-studio-debugging-productivity-tips/
_
در این پست فرض بر این است که خواننده اصول اولیه دیباگ کردن با ویژوال استودیو را می داند.
در صورتی که تسلط کامل بر روی این ۱۲ نکته داشته باشید، می توانید با کیفیت بالایی کد های خود را دیباگ کنید.
مواردی که در این پست به آن پرداخته شده است:
✅ 1) Run to Cursor : Ctrl+F10
✅ 2) Run through here with a mouse click
✅ 3) Set next statement to here : holding the key Ctrl
✅ 4) Data breakpoint: Break when value changes
✅ 5) Conditional breakpoint
✅ 6) Trace breakpoint
✅ 7) Track Objects that Are Out-Of-Scope : Make Object ID
✅ 8) View values returned by functions :
Debug > Windows > Autos
✅ 9) Reattach To Process: Shift+Alt+P
✅ 10) No-Side-Effect evaluation in Immediate Window and in the Watch Window
✅ 11) Show Threads in Source
✅ 12) Debug source code decompiled from IL code
جزئیات کامل را میتوانید در لینک زیر مطالعه کنید:
https://blog.ndepend.com/12-visual-studio-debugging-productivity-tips/
_
NDepend
12 Visual Studio Debugging Productivity Tips - NDepend
The top 12 Visual Studio debugging productivity tips illustrated with some GIFs. Learn these tips now and boost your debugging sessions.
⚫️ مایکروسافت به دنبال تصاحب TikTok
به نظر می رسد سال 2020 سال اتفاقات شگفت انگیزی باشد. طبق آخرین شایعات منتشر شده پس از دستور ترامپ ریاست جمهوری ایالات متحده، به نظر می رسد مایکروسافت به دنبال تصاحب TikTok از طریق کمیته سرمایه گذاری امریکا باشد.
طبق گزارش بلومبرگ، برنامه چینی محبوب TikTok بر روی تلفن های همراه میلیون ها امریکایی نصب شده ، موجب نگرانی های امنیتی در دولت ایالات متحده شده است. منابع تایید شده ای می گویند مایکروسافت در حال مذاکره برای خرید تیک تاک است.
به نظر می رسد سال 2020 سال اتفاقات شگفت انگیزی باشد. طبق آخرین شایعات منتشر شده پس از دستور ترامپ ریاست جمهوری ایالات متحده، به نظر می رسد مایکروسافت به دنبال تصاحب TikTok از طریق کمیته سرمایه گذاری امریکا باشد.
طبق گزارش بلومبرگ، برنامه چینی محبوب TikTok بر روی تلفن های همراه میلیون ها امریکایی نصب شده ، موجب نگرانی های امنیتی در دولت ایالات متحده شده است. منابع تایید شده ای می گویند مایکروسافت در حال مذاکره برای خرید تیک تاک است.
✅ این Mock یا Mocking چیه؟!!
#سوال_درخواستی
🔸 در واقع Mock کردن (Mocking) یک تکنیک تست نویسی است که در آن قسمتی از کد را با یک پیاده سازی دلخواه جایگزین میکنیم و از آن برای شبیه سازی یک عملیات واقعی استفاده میشه.
🔹 معمولا ماک کردن زمانی استفاده میشه که یک متد یا کلاس، وابستگی یا وابستگی هایی داره که توی تستمون تداخل ایجاد میکنه.
🔸 مثلا فرض کنید یک سرویسی رو میخواین تست کنین که داخلش از سرویس SmsSender استفاده شده (یعنی به سرویس SmsSender وابستگی داره)، درنتیجه هربار که اون تست رو انجام میدید یه SMS هم ارسال میکنه که خب لازم نیست
در این صورت میایم و سرویس SmsSender رو ماک میکنیم که دیگه Sms ارسال نکنه ولی true رو برگردونه (به این معنی که درست کار کرده)
🔹 این باعث میشه ما بتونیم عملکرد (functionality) همون متد رو تست کنیم به جای اینکه تست مون را درگیر و وابسته به عوامل ثالث (مثل ارسال SMS) کنیم
🔰حالا چه وقتایی معمولا ماک استفاده میشه؟
1️⃣ وابستگی ما در دسترس نباشه
مثلا سرویس شما قراره یه اطلاعاتی رو از وب سرویس بخونه، خب اگه اینترنت قط باشه، تا بالاترن سطح سرویس هامون که به این وابسته بوده fail میشه، پس میایم ماک اش میکنیم و میگیم با فرض اینکه وب سرویس در دسترسه و داره درست اطلاعات رو بر میگردونه، حالا برو ببینم خودت چند مرده حلاجی؟!
2️⃣ وابستگی ما کند باشه
مثلا یه تست برای انجام شدنش نیاز به یه کوئری به دیتابیس داره که 60 ثانیه زمان میبره، پس میایم و ادامه ماجرا ...
3️⃣ وابستگی ما باید توی تست رفتارش عوض بشه
مثل همین مثال سرویس SmsSender
4️⃣ و چندین سناریو دیگه ...
🔰 بهترین کتابخانه های Mocking در دات نت این ها هستند
1️⃣ Moq
2️⃣ NSubstitute
3️⃣ FakeItEasy
🔰حالا یه سوالی که پیش میاد اینه که این کتابخانه های Mocking چطوری کار میکنن؟!
اساس کار این ابزار ها به 2 صورت هست
1️⃣ بر اساس interface :
که عملا توی runtime، یک کلاس الکی درست میکنن که از interface شما ارث بری کرده و بهتون اجازه میده که پیاده سازی متد هاش رو تغییر بدین
2️⃣ بر اساس virtual :
در این روش متد هایی که میخواین قابل mock شدن باشن باید virtual تعریف بشن، در این صورت میاد و توی runtime یک کلاس ایجاد میکنه که از کلاس مورد نظر شما ارث بری کرده ولی متد های virtual اش رو override (بازنویسی) کرده و بهتون اجازه میده که پیاده سازی متد هاش رو تغییر بدین
_________
#سوال_درخواستی
🔸 در واقع Mock کردن (Mocking) یک تکنیک تست نویسی است که در آن قسمتی از کد را با یک پیاده سازی دلخواه جایگزین میکنیم و از آن برای شبیه سازی یک عملیات واقعی استفاده میشه.
🔹 معمولا ماک کردن زمانی استفاده میشه که یک متد یا کلاس، وابستگی یا وابستگی هایی داره که توی تستمون تداخل ایجاد میکنه.
🔸 مثلا فرض کنید یک سرویسی رو میخواین تست کنین که داخلش از سرویس SmsSender استفاده شده (یعنی به سرویس SmsSender وابستگی داره)، درنتیجه هربار که اون تست رو انجام میدید یه SMS هم ارسال میکنه که خب لازم نیست
در این صورت میایم و سرویس SmsSender رو ماک میکنیم که دیگه Sms ارسال نکنه ولی true رو برگردونه (به این معنی که درست کار کرده)
🔹 این باعث میشه ما بتونیم عملکرد (functionality) همون متد رو تست کنیم به جای اینکه تست مون را درگیر و وابسته به عوامل ثالث (مثل ارسال SMS) کنیم
🔰حالا چه وقتایی معمولا ماک استفاده میشه؟
1️⃣ وابستگی ما در دسترس نباشه
مثلا سرویس شما قراره یه اطلاعاتی رو از وب سرویس بخونه، خب اگه اینترنت قط باشه، تا بالاترن سطح سرویس هامون که به این وابسته بوده fail میشه، پس میایم ماک اش میکنیم و میگیم با فرض اینکه وب سرویس در دسترسه و داره درست اطلاعات رو بر میگردونه، حالا برو ببینم خودت چند مرده حلاجی؟!
2️⃣ وابستگی ما کند باشه
مثلا یه تست برای انجام شدنش نیاز به یه کوئری به دیتابیس داره که 60 ثانیه زمان میبره، پس میایم و ادامه ماجرا ...
3️⃣ وابستگی ما باید توی تست رفتارش عوض بشه
مثل همین مثال سرویس SmsSender
4️⃣ و چندین سناریو دیگه ...
🔰 بهترین کتابخانه های Mocking در دات نت این ها هستند
1️⃣ Moq
2️⃣ NSubstitute
3️⃣ FakeItEasy
🔰حالا یه سوالی که پیش میاد اینه که این کتابخانه های Mocking چطوری کار میکنن؟!
اساس کار این ابزار ها به 2 صورت هست
1️⃣ بر اساس interface :
که عملا توی runtime، یک کلاس الکی درست میکنن که از interface شما ارث بری کرده و بهتون اجازه میده که پیاده سازی متد هاش رو تغییر بدین
2️⃣ بر اساس virtual :
در این روش متد هایی که میخواین قابل mock شدن باشن باید virtual تعریف بشن، در این صورت میاد و توی runtime یک کلاس ایجاد میکنه که از کلاس مورد نظر شما ارث بری کرده ولی متد های virtual اش رو override (بازنویسی) کرده و بهتون اجازه میده که پیاده سازی متد هاش رو تغییر بدین
_________
GitHub
GitHub - devlooped/moq: The most popular and friendly mocking framework for .NET
The most popular and friendly mocking framework for .NET - devlooped/moq
❇️ آموزش استفاده از Container در NET Core. (زبان اصلی زیر نویس دار)
از پایین ویدئو گزینه [Subtitle/captions] میتوانید زیرنویس آن را فعال کنید
[00:44] - What are some of advantages of containers?
[01:14] - How do containers compare to other hosting options?
[04:14] - Demo of Visual Studio tooling for containers
[07:06] - Deploying your container to Azure
Useful Links
Azure Container Service (AKS)
Azure Container Registry
.NET Core Docker container images
ASP.NET Core Docker container images
Create a Free Account (Azure)
_____________
از پایین ویدئو گزینه [Subtitle/captions] میتوانید زیرنویس آن را فعال کنید
[00:44] - What are some of advantages of containers?
[01:14] - How do containers compare to other hosting options?
[04:14] - Demo of Visual Studio tooling for containers
[07:06] - Deploying your container to Azure
Useful Links
Azure Container Service (AKS)
Azure Container Registry
.NET Core Docker container images
ASP.NET Core Docker container images
Create a Free Account (Azure)
_____________
Docs
.NET Core and Containers
On this episode of On.NET, Microsoft Cloud Developer Advocate, Jeremy Likness, is joined by Microsoft Most Valuable Professional (MVP), Josh Lane, to discuss .NET Core and Containers. Josh and Jeremy discuss what containers are and how they fit into modern…
#اطلاعیه_SciSharp
دوستان عزیز همانطور که میدانید زبان سطح بالای Python که دارای فریمورک های زیادی است و بیشتر این فریمورک ها مربوط به ( هوش مصنوعی و زیر مجموعه های آن مانند یادگیری ماشین - بینایی ماشین - و... ) است.
حالا یه تیمی از که طریق مایکروسافت وظیفه دارند تمامی این فریمورک هارو Port کنند در سی شارپ با حداقل ۹۹ درصد شباهت در کد ها و تابع ها و ....
این اکوسیستم SciSharp Stack نام دارد.
که تا الان چند فریمورک قوی مانند Tensorflow و Keras و NumPy و Catalyst NLP رو تا الان Portکردند، و هر اپدیتی که از طرف این فرویمورک های اصلی بشود، این پکیج های nuget هم آپدیت میشوند.
درخواست این تیم این است که اطلاع داده بشه به همه که همچین چیزی وجود داره.
کتابخانه ها و فریمورک های دیگر هم در دست ساخت هستش مثل PyTorch و Pandas و Matplotlib و....
https://scisharp.github.io/SciSharp/
خوبیش اینه که ۹۹ درصد کدها شبیه هم هستند و برای مثال با دیدن یک آموزش Tensorflow در پایتون میتونید تو سی شارپ هم با Tensorflow کار کنید.( البته صد در صد به جبر خطی و ... نیاز دارید برای کارهای حرفه ای ).
دوستان عزیز همانطور که میدانید زبان سطح بالای Python که دارای فریمورک های زیادی است و بیشتر این فریمورک ها مربوط به ( هوش مصنوعی و زیر مجموعه های آن مانند یادگیری ماشین - بینایی ماشین - و... ) است.
حالا یه تیمی از که طریق مایکروسافت وظیفه دارند تمامی این فریمورک هارو Port کنند در سی شارپ با حداقل ۹۹ درصد شباهت در کد ها و تابع ها و ....
این اکوسیستم SciSharp Stack نام دارد.
که تا الان چند فریمورک قوی مانند Tensorflow و Keras و NumPy و Catalyst NLP رو تا الان Portکردند، و هر اپدیتی که از طرف این فرویمورک های اصلی بشود، این پکیج های nuget هم آپدیت میشوند.
درخواست این تیم این است که اطلاع داده بشه به همه که همچین چیزی وجود داره.
کتابخانه ها و فریمورک های دیگر هم در دست ساخت هستش مثل PyTorch و Pandas و Matplotlib و....
https://scisharp.github.io/SciSharp/
خوبیش اینه که ۹۹ درصد کدها شبیه هم هستند و برای مثال با دیدن یک آموزش Tensorflow در پایتون میتونید تو سی شارپ هم با Tensorflow کار کنید.( البته صد در صد به جبر خطی و ... نیاز دارید برای کارهای حرفه ای ).
scisharp.github.io
SciSharp STACK
A .NET based Open Source Ecosystem for Data Science, Machine Learning and AI
👍2
✅ مقایسه پرفرمنس gRPC و REST
طبق این بنچمارک میتونین ببینین که توی درخواست های سبک ( مثل یه GET ساده با دیتای کم حجم) gRPC و REST تفاوتی خاصی با هم ندارن
ولی توی درخواست های سنگین (که حجم دیتای انتقالی زیاد باشه) :
🔸توی حالت GET (دریافت اطلاعات) gRPC بیش از 7 برابر سریع تر از REST عمل میکنه
🔹وتوی حالت POST (ارسال اطلاعات) gRPC بیش از 11 برابر سریع تر از REST عمل میکنه
🔸دلیل اصلی این سرعت بسیار بالا اینه که gRPC از Protocol Buffers برای سریالایز و فشرده سازی اطلاعات استفاده میکنه و نیز به صورت پیشفرض از HTTP/2 و استفاده میکنه که اون هم یه مکانیزم فشرده سازی داره
🔹برای کار با gRPC در حالت عادی باید از CLI مخصوص اون "protoc" برای کامپایل و تولید کلاس های سرویس از روی فایل های "proto." استفاده کنید. ولی با Visual Studio میتونین همین کار رو کامپایلر built-in اش راحت تر انجام بدین
🔸جمع بندی اینکه gRPC میتونه گزینه بسیار خوبی برای ارتباطات بیین Micro-service ها باشه
لینک مقاله و ریپازیتوری گیتهاب این بنچمارک
Evaluating Performance of REST vs. gRPC
Github Repository
________________
طبق این بنچمارک میتونین ببینین که توی درخواست های سبک ( مثل یه GET ساده با دیتای کم حجم) gRPC و REST تفاوتی خاصی با هم ندارن
ولی توی درخواست های سنگین (که حجم دیتای انتقالی زیاد باشه) :
🔸توی حالت GET (دریافت اطلاعات) gRPC بیش از 7 برابر سریع تر از REST عمل میکنه
🔹وتوی حالت POST (ارسال اطلاعات) gRPC بیش از 11 برابر سریع تر از REST عمل میکنه
🔸دلیل اصلی این سرعت بسیار بالا اینه که gRPC از Protocol Buffers برای سریالایز و فشرده سازی اطلاعات استفاده میکنه و نیز به صورت پیشفرض از HTTP/2 و استفاده میکنه که اون هم یه مکانیزم فشرده سازی داره
🔹برای کار با gRPC در حالت عادی باید از CLI مخصوص اون "protoc" برای کامپایل و تولید کلاس های سرویس از روی فایل های "proto." استفاده کنید. ولی با Visual Studio میتونین همین کار رو کامپایلر built-in اش راحت تر انجام بدین
🔸جمع بندی اینکه gRPC میتونه گزینه بسیار خوبی برای ارتباطات بیین Micro-service ها باشه
لینک مقاله و ریپازیتوری گیتهاب این بنچمارک
Evaluating Performance of REST vs. gRPC
Github Repository
________________
❇️ اگه میخواین مفهوم Hash و Salt رو درک کنین
فیلم زیر از جادی خیلی باحال توضیحش میده
🔰 نقل قول از جادی :
"به نظر من، هشها از قشنگیهای دنیای کامپیوتر و برنامه نویسی. فانکشنهایی که میتونن اطلاعات رو به ترکیبی از بیت های دیگه با طول ثابت تبدیل کنن و نتیجه شون هم همیشه برای ورودی ثابت، ثابته. این ایده درخشان منتیج به نتایج خیلی جالبی هم شده. مثلا فرض کنین می خواین بدونین آیا فایلی که دانلود کردین سالمه یا نه. یا می خواین کلی دیتا رو جایی بریزین و سریع پیداشون کنین. یا از اون جالبتر، می خواین به یکی پشت تلفن بگین «یه عدد در نظر بگیر» و بعد عدد رو حدس بزنین و مطمئن باشین که تقلبی نمی تونه اتفاق بیافته یا حتی رمزارز بسازین. همه اینجاها، هش کار گشا است فهمیدنش برای یک برنامه نویس خوب واجبه. "
1️⃣ https://www.aparat.com/v/1YjmV/
2️⃣ https://www.aparat.com/v/PmYpu/
3️⃣ https://www.aparat.com/v/Yg02q/
___________
فیلم زیر از جادی خیلی باحال توضیحش میده
🔰 نقل قول از جادی :
"به نظر من، هشها از قشنگیهای دنیای کامپیوتر و برنامه نویسی. فانکشنهایی که میتونن اطلاعات رو به ترکیبی از بیت های دیگه با طول ثابت تبدیل کنن و نتیجه شون هم همیشه برای ورودی ثابت، ثابته. این ایده درخشان منتیج به نتایج خیلی جالبی هم شده. مثلا فرض کنین می خواین بدونین آیا فایلی که دانلود کردین سالمه یا نه. یا می خواین کلی دیتا رو جایی بریزین و سریع پیداشون کنین. یا از اون جالبتر، می خواین به یکی پشت تلفن بگین «یه عدد در نظر بگیر» و بعد عدد رو حدس بزنین و مطمئن باشین که تقلبی نمی تونه اتفاق بیافته یا حتی رمزارز بسازین. همه اینجاها، هش کار گشا است فهمیدنش برای یک برنامه نویس خوب واجبه. "
1️⃣ https://www.aparat.com/v/1YjmV/
2️⃣ https://www.aparat.com/v/PmYpu/
3️⃣ https://www.aparat.com/v/Yg02q/
___________
آپارات - سرویس اشتراک ویدیو
هش (یک از سه) - درک مفهوم
هش ها مفهوم مهمی در برنامه نویسی هستن و منم دوستشون دارم. پس بیاین معرفی شون کنیم، بگیم چی هستن و به چه دردی می خورن.