DotNetZoom
2.97K subscribers
342 photos
18 videos
36 files
606 links
DotNetZoom
💎 Everything about .NET

ارتباط با مدیر و تبلیغات آگهی استخدام:
@mjebrahimi

لینک گروه ASPNET Core:
https://t.iss.one/+ufG25x7lVFgyYTNk
Download Telegram
Singleton Pattern
روش های مختلفی برای پیاده سازی
Singleton وجود دارد ولی بهترین روش برای الگوی Singleton در برنامه های چند کاربره مثل وب، استفاده از نوع Lazy موجود در دات نت 4 به بالا است
به صورت زیر
public sealed class Singleton
{
private static readonly Lazy<Singleton> lazy = new Lazy<Singleton>(() => new Singleton(), LazyThreadSafetyMode.ExecutionAndPublication);

public static Singleton Instance => lazy.Value;

private Singleton() { }
}
زیرا:
1- کاملا lazy بوده و فقط به هنگام اولین درخواست، مقدار مورد نظر ساخته می شود و نه قبل از آن
2- کاملا thread-safe است به لطف قابلیت LazyThreadSafetyMode.ExecutionAndPublication
3- بسیار سبک تر از روش های مشابه است و نسبت به آنها از پرفرمنس بیشتری برخوردار است

لینک های زیر توضیحات خوبی درباره این موضوع ارائه میدهد

روش های مختلف پیاده سازی Singleton Pattern در سی شارپ
https://csharpindepth.com/Articles/General/Singleton.aspx
پشتیبانی توکار از ایجاد کلاس‌های Singleton از دات نت 4 به بعد
https://www.dotnettips.info/post/1897/
دات نت 4 و کلاس Lazy
https://www.dotnettips.info/post/423

اگر به thread-safe بودن نیاز ندارید (مثلا در برنامه های Desktop) میتوانید از LazyThreadSafetyMode.None استفاده کنید و نیز به دلیل عدم مدیریت مباحث همزمانی، از پرفرمنس بیشتری برخوردار شوید

همچنین روش دیگری وجود دارد که کاملا lazy نیست (فقط فیلد instance به صورت lazy است) ولی بدون استفاده از lock، قابلیت thread-safe بودن را داراست و پرفرمنس به مراتب بهتری نسبت به بقیه روش ها دارد.
public sealed class Singleton
{
private static readonly Singleton instance = new Singleton();

// Explicit static constructor to tell C# compiler
// not to mark type as beforefieldinit
static Singleton() { }

private Singleton() { }

public static Singleton Instance => instance;
}
نکته این روش تعریف سازنده استاتیک در کلاس است، این کار باعث میشود کامپایلر سی شارپ،کلاس مورد نظر را به صورت "beforefieldinit" نشانه گذاری نکند یا به عبارتی باعث میشود تمام فیلد های آن کلاس "الزاما قبل از سازنده مقداردهی شوند". پس در صورتی که کلاس مورد نظر new شود (در مثال ما ممکن نیست زیرا سازنده پیشفرض آن private تعریف شده است). یا اینکه یکی از member های کلاس، مثلا Instance property آن جایی رفرنس داده شده باشد(استفاده شده باشد). در این صورت مقدار دهی فیلد های آن قبل از سازنده کلاس به صورت کاملا thread-safe اجرا می شود.

@IranAspMvc
کتابخانه مجموعه ابزار های زبان فارسی برای Javascript

قابلیت ها :
Convert Persian words to the number and vice versa.
Add and remove commas to numbers.
Convert Persian numbers to Arabic or English numbers and vice versa.
Validation of Iranian National Number(code-e Melli).
Get the city and province name by national code.
Bank number validation.
Get the name of the bank by bank account number.
Validation of the correctness of the text of the Persian language and clear the Arabic letters in the Persian text.
Fix Persian characters in URL.

ریپازیتوری گیتهاب :
https://github.com/ali-master/persian-tools/

@IranAspMvc
مدیریت بهتر Tab های Visual Studio با TabsStudio
https://goo.gl/9U8to6

یک افزونه عالی برای مدیریت تب های ویژوال استادیو با امکان گروه بندی، نشانه گذاری و رنگ بندی تب ها و...
این افزونه پولی هست و نسخه رایگان نداره ولی دارای یک نسخه آزمایشی یک ماهه هست

نیاز به توضیح اضافه نداره فقط کافیه لینک زیر رو مشاهده کنین
لینک دمو:
https://tabsstudio.com/documentation/screenshots.html

لینک وبسایت:
https://tabsstudio.com/

@IranAspMvc
تجربه یک Debugging فوق العاده با OzCode
https://goo.gl/Z9RTmi

این افزونه قابلیت های بسیار زیاد و فوق العاده کاربردی داره که باعث میشه Debugging رو به یک تجربه لذت بخش تبدیل کنه
این افزونه پولی هست و نسخه رایگان نداره ولی دارای یک نسخه آزمایشی یک ماهه هست

نیاز به توضیح اضافه نداره فقط کافیه لینک زیر رو مشاهده کنین
لینک افزونه و دمو:
https://marketplace.visualstudio.com/items?itemName=CodeValueLtd.OzCode

لینک وبسایت:
https://www.oz-code.com/

@IranAspMvc
Forwarded from عکس نگار
رویداد آموزشی دات نت تاک با موضوع Testing

لینک ثبت نام:
https://evnd.co/uJy0e
زمان : پنج شنبه 15شهریور، ساعت 17:00 تا 20:00
مکان : تهران ،چهار راه ولیعصر، کوچه بالاور، برج فناوری امیرکبیر، طبقه اول

دات نت تاک (گفتگویی از جنس دات نت) :
رویداد DotNetTalk دات نت تاک فرصتی است که در آن ضمن آشنایی با یکدیگر و شبکه سازی، به بحث تبادل نظر و یادگیری درباره موضوعات مختلف برنامه نویسی می پردازیم.

موضوع این جلسه : Testing

یکی از موارد مهمی که شرکت ها و حتی برنامه نویس ها به اون توجه لازم رو ندارند، مبحث "تست" هست. رعایت اصول طراحی و نوشن تست باعث میشه اولا برنامه ای تولید کنین که احتمال وقوع باگ درش کمتر هست، درنتیجه هم اعتماد خودتون به برنامه تون بیشتر میشه و هم اعتماد مشتری شما.
دوما توسعه و نگهداری کد هاتون در بلند خیلی راحت تر و سریع تر اتفاق بیافته.
اما چرا با وجود اینکه میدونیم تست چیز خوبیه، ولی اکثرمون بهش عمل نمیکنیم!؟ چه چیزی باعث شده از تست نویسی فرار کنیم؟
اگه هنوز به اهمیت تست نویسی پی نبردین یا شایدم پی بردین ولی بلد نیستن اصولی و صحیح بنویسین، این رویداد رو از دست ندین :)

توی این جلسه به موارد زیر میپردازیم :
- چرا باید تست بنویسیم
- چرا تمایلی به تست نویسی نداریم؟!
- باید ها و نباید های طراحی و نوشتن تست
- چطور علمی و اصولی تست بسازیم؟
- کار با فریمورک های محبوب تست خودکار
- کجا ها از mocking؟ و چگونه؟
- سایر ابزارهای مطرح در نگهداری و سازماندهی خودکار تست ها

میزبان این جلسه : فینوا
حامیان رسانه ای : فینوا - اوکس تیم

از این که با حضوتون، بار علمی رویداد رو افزایش میدهید سپاس گذاریم

لینک ثبت نام:
https://evnd.co/uJy0e
به خواب رفتن در دو دقیقه به روش سربازان ارتش آمریکا

https://jadi.net/2018/09/go-to-sleep-in-2-mins/

بعضی ها خیلی راحت می‌خوابن. تا سرشون به بالشت می رسه نفسشون منظم می شه و خوابشون می بره. بعضی ها اما در طول شب غلت می‌زنن و منتظر خواب می مونن. اگر شما تو دسته دوم هستین یا کسی که براتون خیلی مهمه جزو اونهایی است که به سختی به خواب می ره، یه خبر خوب براتون دارم! تکنیک ارتش آمریکا که به همه اجازه می ده تقریبا در ۲ دقیقه خوابشون ببره!

این روش در ارتش آمریکا استفاده می‌شده و می‌شه تا به سربازها اجازه بده در شرایط نامناسب هم به راحتی به خواب برن تا موقع بیدار شدن سر حال باشن. این روش اولین بار در کتاب «ریلکس باش و پیروز شو: کارایی قهرمانانه» در ۱۹۸۱ معرفی می‌شد ولی تازه دوباره کشف شده و پیشنهاد می‌شه.

روش اینطوریه:

۱. عضلات صورت رو ریلکس کنین، از جمله زبان و فک و عضلات پیشنونی و لپ و اطراف صورت. این ریلکس کردن می تونه در دو سه مرحله اتفاق بیافته و در هر مرحله آدم تعجب می کنه که «اون فلان عضله هنوز سفت بود!»
۲. شونه ها رو آویزون کنین و تا جایی که می شه از سرتون فاصله بدین. بعد هم بازوها و دست ها رو
۳. نفستون رو بیرون بدین و سینه رو ریلکس کنین و بعدش هم پاها رو. از رون ها شروع کنین و پایین برین
۴. ده ثانیه در مغزتون به یکی از سه موضوع زیر فکر کنین:

1️⃣ توی یک قایق پارویی یک نفره لم دادین و در یک دریاچه آرام هستین و آسمون آبی بالای سرتونه
2️⃣ در یک ننوی سیاه در یک اتاق کاملا تاریک لم دادین
3️⃣ با خودتون بگین «به چیزی فکر نکن، به چیزی فکر نکن، به چیزی فکر نکن» و برای ده ثانیه به آرومی تکرارش کنین.

ادعا می‌شه که بعد از شش هفته تمرین به این شیوه، ۹۶٪ آدم‌ها می تونن در دو دقیقه به خواب برن! خلاصه اش هم اینه که برای خواب به سه چیز نیاز داریم: جای مناسب، بدن ریلکس و فکر خالی.

امیدوارم حسابی روت جواب بده (:

کانال @jadinet
رویداد آنلاین کدنویسی پروژه به همراه Test خودکار

سلام دوستان. پنجشنبه این هفته یه رویداد آنلاین خواهیم داشت روی
https://www.twitch.tv
ساعت 17:30 الی 20:30 که تو اون پروژه Api دارای تست خودکار رو از صفر تا صد می زنیم. پروژه به زبان CSharp خواهد بود و با توجه به امکان ارسال آنلاین پیام، می تونید روی نحوه پیشبرد کد نظراتتون رو اعلام کنید.

سایت twitch (تویچ) یه بستر به اشتراک گذاری اسکرین مانیتور به صورت زنده هست
یعنی هر کسی میتونه کاری که داره میکنه و توی مانیتورش میبینه رو به اشتراک بگذاره تا بقیه هم ببینن، مثلا موقع کدنویسی میتونیم ازش استفاده کنیم بعد یه لینک بهمون میده که اون رو میدیم به دوستامون و اونا میتونن کد نویسی ما رو ببینن
حالا واسه 5 شنبه این هفته، 22 شهریور میخوایم یه پروژه پیاده سازی اصول تست نویسی و تست خودکار رو انجام بدیم و دوستان میتونن به صورت زنده مشاهده کنن و سوالاتشون رو هم بپرسن
البته بحث Testing خیلی گستردس و تو این ویدئو فقط بخش کوچیکی از این مبحث بزرگ توضیح داده میشه از جمله
Unit Test
Integration Test
Unitgration Test
Mocking/Fake
Automated Testing

لینک آنلاین رویداد توی گروه زیر اطلاع رسانی میشه پس اگه میخواین تو رویداد بالا شرکت کنین گروه زیر رو دنبال کنین
امیدوارم شاهد حضور تمامی شما عزیزان باشیم. با سپاس 🙏

https://t.iss.one/joinchat/BEv5CU9blY4GxuUfoerElA
_______________
@IranAspMvc
DotNetZoom pinned «رویداد آنلاین کدنویسی پروژه به همراه Test خودکار سلام دوستان. پنجشنبه این هفته یه رویداد آنلاین خواهیم داشت روی https://www.twitch.tv ساعت 17:30 الی 20:30 که تو اون پروژه Api دارای تست خودکار رو از صفر تا صد می زنیم. پروژه به زبان CSharp خواهد بود و با توجه…»
روز برنامه نویس مبارک✌️ 🌹🌸🌷🌺

امیدوارم بهترین روز سالتون و بی باگ ترین روز کدنویسیتون باشه
@IranAspMvc
Forwarded from TondTech
بیانیه جمعی از #برنامه_نویسان به مناسبت روز #برنامه_نویس
خطاب به : #کارفرما یان، همکاران و #دولت محترم.
متن کامل بیانیه را در بلاگ تندتک بخوانید:
l.tondtech.ir/2cf16
#تندتک
@tondTech
This media is not supported in your browser
VIEW IN TELEGRAM
#زنگ_تفریح
دوس دارم وقتی یه باگ الکی میده یه همچین بلایی سرش بیارم 😐😅
@IranAspMvc
Forwarded from Software Philosophy
پلتفرم Twitch یکی از استارتاپ‌های معروف و جذاب با داستانی عجیب برای برنامه‌نویسان است. هدف اولیه این استارتاپ Game Streaming است، یعنی gamer ها هنگام بازی کردن دسکتاپ خود را share می‌کنند تا follower هایشان بتوانند نحوه بازی کردن آنها را ببینند.
یکی از اتفاقات جالبی که در این پلتفرم افتاده، استفاده خاص برنامه‌نویسان است. اخیرا برنامه‌نویسانی شروع به استفاده از از این پلتفرم کرده‌اند و هنگامی که برنامه‌نویسی می‌کنند دسکتاپ خود را شیر می‌کنند و مفاهیمی را از این طریق آموزش می‌دهند.

در همین راستا ما نیز در Software Philosophy تصمیم گرفتیم رویدادهایی را در Twitch برگزار کنیم.
اولین رویداد در تاریخ ۱۳۹۷/۰۷/۱۰ (سه‌شنبه) ساعت ۷:۰۰ تا ۸:۰۰ با موضوع زیر برگزار می‌شود:
Concurrency: Parallel vs. Asynchronous


برای مشاهده این رویداد روی لینک زیر کلیک کنید و کانال ما را در twitch فالو کنید.

https://www.twitch.tv/softwarephilosophy/

#مهران_داودی (https://ow.ly/GwIl309lFEm)

کانال تلگرام:
@SoftwarePhilosophy


___
Forwarded from Software Philosophy
اولین ورک‌شاپ کانال Software Philosophy روی پلتفرم Twitch سه‌شنبه ۱۳۹۷/۰۷/۱۰ ساعت ۷ تا ۸. روی این لینک کلیک کنید: https://www.twitch.tv/softwarephilosophy/

@SoftwarePhilosophy
DotNetZoom pinned a photo
Forwarded from Software Philosophy
اولین ورک‌شاپ کانال Software Philosophy روی پلتفرم Twitch سه‌شنبه ۱۳۹۷/۰۷/۱۰ ساعت ۷ تا ۸. روی این لینک کلیک کنید: https://www.twitch.tv/softwarephilosophy/

@SoftwarePhilosophy
Software Philosophy - Concurrency - 2018-10-02.mkv
203.5 MB
فیلم آموزش انلاین در سایت تویچ
موضوع : Parallel and Asynchronous Programming
ارائه : مهران داودی @mehrandvd
فلسفه نرم افزار https://t.iss.one/SoftwarePhilosophy
#آیا_میدانستید

آیا میدانستید حلقه for سریع تر از list.ForEach یا اصلاحا ForEach Lambda است؟

آیا میدانستید حلقه list.ForEach سریع تر از foreach است؟ زیرا list.ForEach داخل خود از for استفاده میکند ولی foreach داخل خود از مکانسیم Enumerator Iteration که به مراتب سنگین تر است، استفاده میکند.

آیا میدانستید حلقه for که مقدار count آن توسط یک متغیر خوانده شود سریع تر از حلقه for ایی است که مقدار count خود را از list.Count میخواند؟ زیرا سرعت خواندن متد get یک property زمانبر تر از خواندن مقدار یک متغیر است.
مثال :
var count = list.Count;
for (int i = 0; i < count ; i++) { }
از روش زیر سریع تر است
for (int i = 0; i < list.Count ; i++) { }
نتیجه :
در تست انجام شده، سرعت اجرای حلقه ها روی 100 میلیون آیتم به ترتیب زیر است
1- حلقه for که از متغیر count میخواند (زمان : 378 میلی ثانیه)
2- حلقه for که از خاصیت list.Count میخواند (زمان : 415 میلی ثانیه)
3- حلقه list.ForEach یا اصطلاحا ForEach Lambda (زمان : 650 میلی ثانیه)
4- حلقه foreach (زمان : 1136 میلی ثانیه)

همانطور که مشاهده میکنید تفاوت این ها آنقدر محسوس نیست که سرعت پروژه را کاهش دهد.
درنتیجه بهتر از کدی را بنویسید که «تمیز» تر است.

@IranAspMvc
ظاهرا مایکروسافت بزرگترین شرکت اوپن سورس جهان شده؛ با آزاد کردن ۶۰هزار پتنتش

https://jadi.net/2018/10/microsoft-joined-oin/

لینوس توروالدز خالق لینوکس یکبار گفته بود که اگر روزی مایکروسافت برای لینوکس برنامه بنویسه، اون پیروز شده. حالا نه فقط مایکروسافت ادیتوری مثل vscode رو در دنیای لینوکس هم منتشر کرده و نه فقط اجازه می ده فضای لینوکسی به سیستم عامل خودش راه پیدا کنه، که این هفته اعلام کرد که عضو شبکه اختراع آزاد شده (OIN یا هر ترجمه دقیق دیگه ای که داره). این کنسرسیوم کارش اینه که پتنت‌های آزاد هر شرکت رو در اختیار بقیه شرکت‌ها بذاره در مقابل اینکه پتنت‌های بقیه شرکت‌ها هم برای این شرکت‌ها آزاد بشه.

شبکه Open Invention Network حدود ۲۶۵۰ عضو که توشن اسم‌هایی مثل گوگل، آی بی ام، ردهت و سوزه به چشم می‌خورن. مدیر عامل این شبکه اعلام کرده که «مایکروسافت هر چیزی که داره رو آورده. چه تکنولوژی قدیمی‌ترش مثل اندروید و کرنل لینوکس و اوپن استک و چه تکنولوژی‌های جدیدترش مثل LF Energy و هایپرلجر و همه قبلی‌ها و بعدی‌هاشون».

تعداد پتنت‌هایی که مایکروسافت آورده حدود ۶۰هزار تا است و خوبه یادمون باشه که درآمد مایکروسافت فقط از پتنت‌های اندروید حدود ۳.۴ میلیارد دلار در سال ۲۰۱۴ بوده. معلومه که همه شک شدن. مایکروسافت مدعی است که دچار یک تغییر فلسفی بنیادی شده و از جایی که با جامعه آزاد دوست نبوده در حرکت به سمت اون است و با این کار نشون داده که این حرکت جدی و مصممه. مدیر اجرایی مایکروسافت می‌گه که دنبال بهتر کردن وضعیت توسعه دهنده‌ها است و کاری نداره که اونها رو لینوکس کار می کنن یا ویندوز و از دات نت استفاده می کنن یا جاوا.

این تغییر مدتی طولانی است که در شرکت مایکروسافت دیده می شه و دلیلش هم به احتمال زیاد درک این مساله است که دنیای آینده دنیای باز است. جایی که واقعا ایده ها رقابت می کنن و کسانی که در دنیای باز باشن، دسترسی بیشتری به ایده‌های متنوع و همچنین دسترسی بیشتری به خلاقیت خواهند داشت. اتفاق بسیار بزرگیه و من هم هنوز بهش شک دارم؛ هی فکر میکنم شاید جایی از خبر رو نفهمیدم یا نکته پنهانی داره که من نمی دونم. اما به هرحال به نظر می رسه مایکروسافت بیشتر از ۶۰هزار پتنتش رو از این به بعد برای دنیای آزاد، رایگان کرده.