✅ رمزنگاری خودکار فیلدها در EF Core
بعلاوه بررسی قابلیت HasConversion و ValueConverter در EF Core
🔸مقاله زیر قابلیت جالبی (و البته خاصی) رو به نام ValueConverter ها در EF Core 2.1 (به بالا) معرفی میکنه، توسط این قابلیت دیتا های شما قبل از اینکه وارد دیتابیس بشه (مثلا Add و Update و...) این امکان رو به شما میده که تغییرش بدین؛ مثلا مقادیر enum تون رو به جای اینکه عددش توی دیتابیس ذخیره بشه، متن string اش ذخیره بشه.
این کار پشت صحنه و به صورت خودکار انجام میشه و نیازی نیست توی کد هاتون خودتون هندل اش کنین.
🔹همچنین موقع واکشی کردن اطلاعات، قبل از اینکه دیتا به دست شما برسه این امکان رو به شما میده که تغییرش بدین، مثلا همون متن string رو به enum مربوطه تبدیل کنین. این کار هم به صورت خودکار انجام میشه و نیازی نیست توی کوئری هاتون کد اضافه تری بنویسین.
🔸حالا وحید نصیری عزیز با استفاده از این ترفند اومده یه مثال زده. اومده یه ValueConverter نوشته که کارش Encrypt کردن متون قبل از Insert شدن و Decrypt کردن اون به هنگام واکشی هست. در نتیجه متون شما توی دیتابیس رمزنگاری شده ذخیره میشه، ولی وقتی توی برنامه کوئری میزنین، متن عادی (رمزگشایی شده) رو مشاهده میکنین.
🔹البته این صرفا یک مثال (خلاقانه) هست و به نظرم راه بهینه ای واسه رمزنگاری اطلاعات دیتابیس نباشه، توی SQLServer راه های اصولی تری مخصوص این قضیه وجود داره
https://www.dotnettips.info/post/3015
_______________
@IranAspMvc
بعلاوه بررسی قابلیت HasConversion و ValueConverter در EF Core
🔸مقاله زیر قابلیت جالبی (و البته خاصی) رو به نام ValueConverter ها در EF Core 2.1 (به بالا) معرفی میکنه، توسط این قابلیت دیتا های شما قبل از اینکه وارد دیتابیس بشه (مثلا Add و Update و...) این امکان رو به شما میده که تغییرش بدین؛ مثلا مقادیر enum تون رو به جای اینکه عددش توی دیتابیس ذخیره بشه، متن string اش ذخیره بشه.
این کار پشت صحنه و به صورت خودکار انجام میشه و نیازی نیست توی کد هاتون خودتون هندل اش کنین.
🔹همچنین موقع واکشی کردن اطلاعات، قبل از اینکه دیتا به دست شما برسه این امکان رو به شما میده که تغییرش بدین، مثلا همون متن string رو به enum مربوطه تبدیل کنین. این کار هم به صورت خودکار انجام میشه و نیازی نیست توی کوئری هاتون کد اضافه تری بنویسین.
🔸حالا وحید نصیری عزیز با استفاده از این ترفند اومده یه مثال زده. اومده یه ValueConverter نوشته که کارش Encrypt کردن متون قبل از Insert شدن و Decrypt کردن اون به هنگام واکشی هست. در نتیجه متون شما توی دیتابیس رمزنگاری شده ذخیره میشه، ولی وقتی توی برنامه کوئری میزنین، متن عادی (رمزگشایی شده) رو مشاهده میکنین.
🔹البته این صرفا یک مثال (خلاقانه) هست و به نظرم راه بهینه ای واسه رمزنگاری اطلاعات دیتابیس نباشه، توی SQLServer راه های اصولی تری مخصوص این قضیه وجود داره
https://www.dotnettips.info/post/3015
_______________
@IranAspMvc
.NET Tips
رمزنگاری خودکار فیلدها توسط Entity Framework Core
از EF Core 2.1 به بعد، قابلیت جدیدی تحت عنوان «تبدیلگرهای مقدار»، به آن اضافه شدهاست. برای مثال در EF Core، زمانیکه اطلاعات Enums، در بانک اطلاعاتی ذخیره میشوند، معادل عددی آنها درج خواهند شد. اگر علاقمند باشید تا بجای این مقادیر عددی دقیقا همان رشتهی…
🔰بررسی نتایج کلیدی نظرسنجی Stackoverflow 2019 (قسمت اول)
چند روز پیش نتایج نظرسنجی Stackoverflow 2019 منتشر شد
این نظرسنجی که بزرگترین و معتبر ترین نظرسنجی دلوپر هاست، نتایج جالبی داشته که مهمترین نتایج کلیدیش رو با هم بررسی خواهیم کرد
✅ محبوب ترین Framework ها:
🔸 فریمورک NET Core با 77% محبوبیت، محبوب ترین فریمورک شناخته شده است
این محبوبیت به معنای پر استفاده ترین نیست و به معنی دوست داشتنی ترین است، یعنی میزان علاقه به این فریمورک ها را نشان میدهد
درواقع اکثر افرادی که از این فریمورک ها استفاده میکنند راضی بوده و علاقمند به ادامه کار با آنها هستند
پس از آن Torch/PyTorch (فریمورک یادگیری عمیق پایتون) و Flutter (فریمورک گوگل برای توسعه اپ های موبایل به صورت Cross-platform) به ترتیب با اختلاف کمی جز محبوب ترین فریمورک ها هستند
🔹 از بین فریمورک های معروف، Cordova و Xamarin جز کم محبوبیت ترین ها شناخته شده است
به این معنی که کسانی که با این فریمورک ها برنامه نویسی میکنند، علاقه کمی به ادامه کار با اینها را دارند.
پس اگر از اینها استفاده میکنید یا تصمیم به یادگیری آنها دارید، شاید لازم باشه یه تجدید نظری بکنین
✅ محبوب ترین Database ها:
🔸 دیتابیس های Redis (برای سومین سال متوالی) و PostgreSQL و Elasticsearch به ترتیب با 71 و 69 و 63 درصد محبوب ترین دیتابیس ها شناخته شده اند و اکثر افراد علاقمند به ادامه کار با آنها هستند
دیتایس SQL Server نیز با 57% محبوبیت در میانه جدول قرار دارد!
🔹 در نقطه مقابل دیتابیس ها Couchbase و Oracle و Cassandra و MySQL به ترتیب جز کم محبوبیت ترین ها هستند و استفاده کنندگان، به ادامه کار با آنها علاقمند نیستند
با این اوصاف میشه گفت دوره پادشاهی این دیتابیس ها به پایان رسیده و در آینده نیز بیشتر خواهد رسید
✅ محبوب ترین پلفرم ها :
🔸 بعد از Linux (که بدیهی هست) Docker و Kubernetes به ترتیب با 77 و 76 درصد جز محبوب ترین پلتفرم ها شناخته شده اند
اگر هنوز به استفاده از اینها رو نیاوردید، مطمئن باشید آینده از آن شما نیست!
🔹 در نقطه مقابل با کمال تعجب WordPress کم محبوبیت ترین پلتفرم بوده! و این شاید زنگ خطری برای وردپرس کاران باشد
وردپرس هم اکنون هم پر استفاده ترین CMS دنیاست ولی کم محبوب بودن به معنی علاقمند نبودن به ادامه استفاده از اون هست، یعنی کاربرانش راضی نیستند و احتمالا در آینده استفاده ازش کاهش پیدا میکنه
✅ محبوب ترین محیط کدنویسی:
🔸 برای دومین سال متوالی Visual Studio Code با 50.7% محبوب ترین ابزار کد نویسی شناخته شد و پس از آن Visual Studio و NotePad++ به ترتیب با 31 با 30 درصد در صدر جدول قرار داشتند
این آمار بیشتر مربوط به برنامه نویسای وب بوده ولی برای برنامه نویسان موبایل هم، Visual Studio Code با اختلاف کمتر از 1 درصد در جایگاه دوم و پس از Android Studio قرار داد
✅ محبوب ترین سیستم عامل کدنویسی:
🔹 سیستم عامل Windows با اختلاف زیاد و با 47 درصد محبوبیت در صدر قرار دارد و پس از آن مک و لینوکس به ترتیب با 26 و 25 درصد در جایگان دوم و سوم
بر کسی پوشیده نیست که لینوکس بهترین سیستم عمل برای سرور بوده و هست ولی دلیل نمیشه برای محیط توسعه هم بهترین باشه، اینجاست که به این نتیجه میرسیم که هر چیز باید در جای خودش استفاده بشه
✅ پر درآمد ترین زبان ها:
🔸 زبان Clojure به طور میانگین با 90 هزار دلار درآمد سالانه، گران قیمت ترین زبان برنامه نویسی است و پس از آن F# و Go با درآمد سالانه 80 هزار دلار درجایگان بعدی قرار دارند
🔹 زبان C# نیز به طور میانگین، با درآمد سالانه 59 هزار دلار تقریبا در میانه جدول قرار دارد
🔸 زبان های Java و C و Assembly با درآمد سالانه 52 هزار دلار و زبان های HTML/CSS و JavaScript به ترتیب با 55 و 56 هزار دلار جز زبان های ارزان دنیا هستند
لازم به ذکره این نتایج مربوط به میانگین آمار جهانی بوده و در آمریکا تا حد زیادی متفاوت است
🔹 و در آخر زبان PHP با حدود 42 هزار دلار درآمد سالانه، کمترین درآمد رو داره
به نحوی که حتی توی لیست اصلی جا نشده ولی توی نمودار پایینای صفحه هست
https://insights.stackoverflow.com/survey/2019
_______________
@IranAspMvc
چند روز پیش نتایج نظرسنجی Stackoverflow 2019 منتشر شد
این نظرسنجی که بزرگترین و معتبر ترین نظرسنجی دلوپر هاست، نتایج جالبی داشته که مهمترین نتایج کلیدیش رو با هم بررسی خواهیم کرد
✅ محبوب ترین Framework ها:
🔸 فریمورک NET Core با 77% محبوبیت، محبوب ترین فریمورک شناخته شده است
این محبوبیت به معنای پر استفاده ترین نیست و به معنی دوست داشتنی ترین است، یعنی میزان علاقه به این فریمورک ها را نشان میدهد
درواقع اکثر افرادی که از این فریمورک ها استفاده میکنند راضی بوده و علاقمند به ادامه کار با آنها هستند
پس از آن Torch/PyTorch (فریمورک یادگیری عمیق پایتون) و Flutter (فریمورک گوگل برای توسعه اپ های موبایل به صورت Cross-platform) به ترتیب با اختلاف کمی جز محبوب ترین فریمورک ها هستند
🔹 از بین فریمورک های معروف، Cordova و Xamarin جز کم محبوبیت ترین ها شناخته شده است
به این معنی که کسانی که با این فریمورک ها برنامه نویسی میکنند، علاقه کمی به ادامه کار با اینها را دارند.
پس اگر از اینها استفاده میکنید یا تصمیم به یادگیری آنها دارید، شاید لازم باشه یه تجدید نظری بکنین
✅ محبوب ترین Database ها:
🔸 دیتابیس های Redis (برای سومین سال متوالی) و PostgreSQL و Elasticsearch به ترتیب با 71 و 69 و 63 درصد محبوب ترین دیتابیس ها شناخته شده اند و اکثر افراد علاقمند به ادامه کار با آنها هستند
دیتایس SQL Server نیز با 57% محبوبیت در میانه جدول قرار دارد!
🔹 در نقطه مقابل دیتابیس ها Couchbase و Oracle و Cassandra و MySQL به ترتیب جز کم محبوبیت ترین ها هستند و استفاده کنندگان، به ادامه کار با آنها علاقمند نیستند
با این اوصاف میشه گفت دوره پادشاهی این دیتابیس ها به پایان رسیده و در آینده نیز بیشتر خواهد رسید
✅ محبوب ترین پلفرم ها :
🔸 بعد از Linux (که بدیهی هست) Docker و Kubernetes به ترتیب با 77 و 76 درصد جز محبوب ترین پلتفرم ها شناخته شده اند
اگر هنوز به استفاده از اینها رو نیاوردید، مطمئن باشید آینده از آن شما نیست!
🔹 در نقطه مقابل با کمال تعجب WordPress کم محبوبیت ترین پلتفرم بوده! و این شاید زنگ خطری برای وردپرس کاران باشد
وردپرس هم اکنون هم پر استفاده ترین CMS دنیاست ولی کم محبوب بودن به معنی علاقمند نبودن به ادامه استفاده از اون هست، یعنی کاربرانش راضی نیستند و احتمالا در آینده استفاده ازش کاهش پیدا میکنه
✅ محبوب ترین محیط کدنویسی:
🔸 برای دومین سال متوالی Visual Studio Code با 50.7% محبوب ترین ابزار کد نویسی شناخته شد و پس از آن Visual Studio و NotePad++ به ترتیب با 31 با 30 درصد در صدر جدول قرار داشتند
این آمار بیشتر مربوط به برنامه نویسای وب بوده ولی برای برنامه نویسان موبایل هم، Visual Studio Code با اختلاف کمتر از 1 درصد در جایگاه دوم و پس از Android Studio قرار داد
✅ محبوب ترین سیستم عامل کدنویسی:
🔹 سیستم عامل Windows با اختلاف زیاد و با 47 درصد محبوبیت در صدر قرار دارد و پس از آن مک و لینوکس به ترتیب با 26 و 25 درصد در جایگان دوم و سوم
بر کسی پوشیده نیست که لینوکس بهترین سیستم عمل برای سرور بوده و هست ولی دلیل نمیشه برای محیط توسعه هم بهترین باشه، اینجاست که به این نتیجه میرسیم که هر چیز باید در جای خودش استفاده بشه
✅ پر درآمد ترین زبان ها:
🔸 زبان Clojure به طور میانگین با 90 هزار دلار درآمد سالانه، گران قیمت ترین زبان برنامه نویسی است و پس از آن F# و Go با درآمد سالانه 80 هزار دلار درجایگان بعدی قرار دارند
🔹 زبان C# نیز به طور میانگین، با درآمد سالانه 59 هزار دلار تقریبا در میانه جدول قرار دارد
🔸 زبان های Java و C و Assembly با درآمد سالانه 52 هزار دلار و زبان های HTML/CSS و JavaScript به ترتیب با 55 و 56 هزار دلار جز زبان های ارزان دنیا هستند
لازم به ذکره این نتایج مربوط به میانگین آمار جهانی بوده و در آمریکا تا حد زیادی متفاوت است
🔹 و در آخر زبان PHP با حدود 42 هزار دلار درآمد سالانه، کمترین درآمد رو داره
به نحوی که حتی توی لیست اصلی جا نشده ولی توی نمودار پایینای صفحه هست
https://insights.stackoverflow.com/survey/2019
_______________
@IranAspMvc
Stack Overflow
Stack Overflow Developer Survey 2019
Nearly 90,000 took this comprehensive, annual survey of people who code. Demographics. Most loved, dreaded and wanted technologies. Salary and careers.
🔰بررسی نتایج کلیدی نظرسنجی Stackoverflow 2019 (قسمت دوم)
🔸 بیش از نیمی از برنامه نویس ها، آخرین تغییر شغلیشون مال 2 سال گذشته بوده این یعنی اینکه معمولا نمیشه برنامه نویسا رو بیشتر از 2 سال یه جا نگه داشت
این نیاز به تنوع و تغییر شرکت دادن، توی برنامه نویسا خیلی معمول هست، دلیلشم اینه که برنامه نویسا معمولا دنبال یادگیری و چالش های جدید هستند و قاعدتا بعد یه مدت، چالش ها و فرصت های یادگیری یه تموم میشه و جذابیتش رو براشون از دست میده
🔹 57 درصد برنامه نویسا بهترین محیط برای کار کردن رو "اداره" میدونن و 33 درصدشونم "خونه"
به عنوان یه صاحب تجربه توی این بحث میتونم بگم شاید کار کردن توی خونه برای تنوع و یا کوتاه مدت مفید باشه ولی برای بلند مدت اصلا مناسب نیست
از معایبش میشه به کاهش بهره وری در بلند مدت و نیز کاهش شور و نشاط و سطح روابط اجتماعی به دلیل در ارتباط نبودن (یا کم بودن) با همکاران و دوستان هست
🔸 بیش نیمی از توسعه دهندگان (54 درصد) از تکنولوژی های Container ایی (مانند داکر) به ترتیب برای محیط های Development و Testing و Production خود استفاده می کنند
🔹 80 درصد توسعه دهندگان، از تکنولوژی های Blockchain ایی استفاده (یا پیاده سازی) نمی کنند و از اون افراد باقی مانده که اکثرا هندی هستند، 12 درصدشون برای مباحث غیر مالی (Non-currency) بهره میبرند
🔸 در کل اکثر برنامه نویسای دنیا (برعکس ایران متاسفانه) برای پروژه های خودشون از Unit Test می نویسند و نکته جالبش اینجاست که اکثر افرادی که در اینگونه شرکت ها (که Unit Test استفاده میکنند) استخدام هستند، کمی رضایت شغلی بیشتری دارند
🔹 اکثر برنامه نویسا برای تمرکز موقع کد نویسی ترجیح میدند آهنگ گوش کنند
گوناگونی سبک موزیک ها زیاده ولی به عنوان محبوب ترین ها میتوان به سبک های Rock، Metal، Electronic و نیزآهنگ های Classic و بدون کلام اشاره کرد
خلاصه که اگه خواستی بببینی طرف برنامه نویسه یا نه، ببین موقع کد نویسی موزیک گوش میده یا نه :))
🔸 بیشتری ساعت کاری برنامه نویسا مربوط به کشور های اروپای شرقی، هند و آمریکا هست که معمولا بیشتر از 44 ساعت در هفته کار می کنند و همین عامل نشون میده اونجا جای من نیست! :))
https://insights.stackoverflow.com/survey/2019
___________
@IranAspMvc
🔸 بیش از نیمی از برنامه نویس ها، آخرین تغییر شغلیشون مال 2 سال گذشته بوده این یعنی اینکه معمولا نمیشه برنامه نویسا رو بیشتر از 2 سال یه جا نگه داشت
این نیاز به تنوع و تغییر شرکت دادن، توی برنامه نویسا خیلی معمول هست، دلیلشم اینه که برنامه نویسا معمولا دنبال یادگیری و چالش های جدید هستند و قاعدتا بعد یه مدت، چالش ها و فرصت های یادگیری یه تموم میشه و جذابیتش رو براشون از دست میده
🔹 57 درصد برنامه نویسا بهترین محیط برای کار کردن رو "اداره" میدونن و 33 درصدشونم "خونه"
به عنوان یه صاحب تجربه توی این بحث میتونم بگم شاید کار کردن توی خونه برای تنوع و یا کوتاه مدت مفید باشه ولی برای بلند مدت اصلا مناسب نیست
از معایبش میشه به کاهش بهره وری در بلند مدت و نیز کاهش شور و نشاط و سطح روابط اجتماعی به دلیل در ارتباط نبودن (یا کم بودن) با همکاران و دوستان هست
🔸 بیش نیمی از توسعه دهندگان (54 درصد) از تکنولوژی های Container ایی (مانند داکر) به ترتیب برای محیط های Development و Testing و Production خود استفاده می کنند
🔹 80 درصد توسعه دهندگان، از تکنولوژی های Blockchain ایی استفاده (یا پیاده سازی) نمی کنند و از اون افراد باقی مانده که اکثرا هندی هستند، 12 درصدشون برای مباحث غیر مالی (Non-currency) بهره میبرند
🔸 در کل اکثر برنامه نویسای دنیا (برعکس ایران متاسفانه) برای پروژه های خودشون از Unit Test می نویسند و نکته جالبش اینجاست که اکثر افرادی که در اینگونه شرکت ها (که Unit Test استفاده میکنند) استخدام هستند، کمی رضایت شغلی بیشتری دارند
🔹 اکثر برنامه نویسا برای تمرکز موقع کد نویسی ترجیح میدند آهنگ گوش کنند
گوناگونی سبک موزیک ها زیاده ولی به عنوان محبوب ترین ها میتوان به سبک های Rock، Metal، Electronic و نیزآهنگ های Classic و بدون کلام اشاره کرد
خلاصه که اگه خواستی بببینی طرف برنامه نویسه یا نه، ببین موقع کد نویسی موزیک گوش میده یا نه :))
🔸 بیشتری ساعت کاری برنامه نویسا مربوط به کشور های اروپای شرقی، هند و آمریکا هست که معمولا بیشتر از 44 ساعت در هفته کار می کنند و همین عامل نشون میده اونجا جای من نیست! :))
https://insights.stackoverflow.com/survey/2019
___________
@IranAspMvc
Stack Overflow
Stack Overflow Developer Survey 2019
Nearly 90,000 took this comprehensive, annual survey of people who code. Demographics. Most loved, dreaded and wanted technologies. Salary and careers.
Forwarded from کدهک
🔰 بررسی نکات کلیدی نظرسنجی Stackoverflow 2019 (قسمت سوم)
🔸 حدود 65% برنامه نویسا یک بار یا بیشتر در سال توی پروژه های Open Source مشارکت (Contribute) می کنند
این نکته، اهمیت Contributing رو به خوبی نشون میده تا جایی که توی خارج یکی از مهمترین ترین عوامل اعتبار رزومه، همین میزان فعالیت های اوپن سورسی شخص هست
متاسفانه میزان Contribute برای پروژه های سی شارپی نسبت به زبان های دیگه مثل JavaScript و PHP و Java و ... خیلی کمتره و یکی از دلایل مهمش (به غیر از کم بودن پروژه های اوپن سورسی سی شارپی نسبت به بقیه زبان ها) اینه که ما سی شارپی ها هنوز فرهنگ اوپن سورسی بدرستی برامون جا نیافتاده
برعکس برنامه نویسای جاوااسکرپیت که هر ریپازیتوری دم دستشون میاد Star میدن، اکثر ما سی شارپی ها حتی نمیدونیم چطوری باید تو گیتهاب امتیاز(Star) بدیم! اگرم بدونیم هم یه جوری دستمون میلرزه انگار از ارث بابامون کم میکنه!
🔹 نزدیک به 70% برنامه نویسا، مدرک/تحصیلات کارشناسی و کارشناسی ارشد دارند و 62% هم تحصیلات دانشگاهی مرتبط دارند
اماااااا با اوضاع دانشگاه های ما (که خودتون بهتر میدونین ولازم به توضیح نیست، مخصوصا برای برنامه نویسی !) اگر جز این درصد ها نیستید به نظرم انتخاب درستی کردین 👍
🔸 یادگیری خودآموز با 85% و گذراندن دوره های آموزشی آنلاین با 60% محبوب ترین روش های یادگیری در بین برنامه نویسان هست
نتیجه ای که میشه از این مورد گرفت، اهمیت بسیار بالای یادگیری زبان انگیسی برای ما ایرانی ها، با توجه به کمبود آموزش های بروز و حرفه ای به زبان فارسی توی ایران هست (یعنی واقعا از نون شب بهمون واجب تره!)
🔹 91% برنامه نویسا مرد هستند. با توجه به نظرسنجی جادی، این آمار توی ایران هم همین حدوداست (89%)
متاسفانه میزان مشارکت بانوان در این حوزه به دلایل نا معلومی بسیار پایینه! بازم جای تقدیر داره که با 2 درصد اختلاف، از میانگین آمار جهانی بالاتریم!
🔸 در کل میزان مشارکت زنان کم بوده ولی یه نکته جالب اینکه میزان مشارکت زنان توی حوزه هایی مانند Data Science و Deep/Machine Learning و Design و Front-end Developer نسبت به حوزه هایی مانند و SysAdmin و Db Admins و DevOps بیشتر بوده
🔹 طبق یه تحلیل دیگه بر اساس جنسیت و میزان سابقه کار
50% برنامه نویسای مرد زیر 10 سال و 50% دیگشون بیشتر از 10 سال سابقه کار دارند
در حالی که 67% برنامه نویسای زن زیر 10 سال و تنها 33 درصدشون بیش از 10 سال سابقه کار دارند
این اکثر برنامه نویسای زن تا 10 سال سابقه کار دارند ولی بعد از 10، خیلی سریع تر از مردا ریزش پیدا کرده و ترک کار میکنن!
🔸 67% برنامه نویسا بین 20 تا 34 ساله هستند، که بیشتریشون هم 25 تا 29 ساله هستند (27%)
این یعنی "سن طلایی" برنامه نویسی بین 20 تا 34 سال، بعدش معمولا وارد سمت های دیگه مثل (مشاوره، مدیر پروژه/محصول و... میشن)
به توجه به چندتا آمار دیگه هم شاید بشه گفت که عمر مفید برنامه نویسی، کلا 15 سال هست، بعدش دیگه موتور تون مثل قبل کار نمیکنه!
پس اگه توی این رنج سنی هستین، بیشترین استفاده رو بکنین و اگر دارین به 35 سالگی یا 15 سال کاری نزدیک میشین بهتره کم کم به فکر تغییر سمت یا شغل باشین
🔹 اکثر برنامه نویسای هند و اروپای شرقی، جوان تر و کم تجربه هستند
در حالی که اکثر برنامه نویسای استرالیا، اروپای غربی و آمریکا، مسن تر و با تجربه تر هستند
پس اگه قصد مهاجرت به این کشور ها رو دارین بدونین که کجا ها بیشترین رقیب رو دارید (و شایدم بیشترین فرصت پیشرفت به دلیل همکار بودن با ادمای با تجربه)
🔸 شبکه های اجتماعی Reddit و YouTube بیشترین استفاده را در بین برنامه نویسا داره و Facebook جایگاه چهارم رو به خودش اختصاص داده
این در حالیه که برخلاف برنامه نویسا، مردم عادی بیشتر از Facebook استفاده میکنن و Reddit اصلا توی 10 تای برتر شون هم نیست. (خاصیم دیگه، عادی نیستیم! :دی)
🔹 60% برنامه نویسا، ارتباط حضوری و face-to-face رو ترجیح میدن
28% شون ارتباط آنلاین و چت رو ترجیح میدن
و تنها 11% شون ترجیح میدن کلا ارتباطی با بقیه برقرار نکنن
برنامه نویسا معمولا آدم های درونگرایی هستند، این درونگرایی (برعکس تصور بسیاری) خیلی هم خوبه، درونگرا ها توانایی هایی منحصر به فردی دارن از جمله ذهنی متفکر، تحلیلگر و دقیق و همین عامل باعث شده ما درونگرا ها به شدت مناسب این شغل باشیم
ولی خیلی خیلی مهمه که این درونگرایی باعث تضعیف روابط اجتماعی و یا بد تر از اون، ناتوانی در ارتباط با افراد نشه. پس باید حواسمون رو جمع کنیم که توی درونگرایی افراط نکنیممممم
https://insights.stackoverflow.com/survey/2019
_______________
@IranAspMvc
🔸 حدود 65% برنامه نویسا یک بار یا بیشتر در سال توی پروژه های Open Source مشارکت (Contribute) می کنند
این نکته، اهمیت Contributing رو به خوبی نشون میده تا جایی که توی خارج یکی از مهمترین ترین عوامل اعتبار رزومه، همین میزان فعالیت های اوپن سورسی شخص هست
متاسفانه میزان Contribute برای پروژه های سی شارپی نسبت به زبان های دیگه مثل JavaScript و PHP و Java و ... خیلی کمتره و یکی از دلایل مهمش (به غیر از کم بودن پروژه های اوپن سورسی سی شارپی نسبت به بقیه زبان ها) اینه که ما سی شارپی ها هنوز فرهنگ اوپن سورسی بدرستی برامون جا نیافتاده
برعکس برنامه نویسای جاوااسکرپیت که هر ریپازیتوری دم دستشون میاد Star میدن، اکثر ما سی شارپی ها حتی نمیدونیم چطوری باید تو گیتهاب امتیاز(Star) بدیم! اگرم بدونیم هم یه جوری دستمون میلرزه انگار از ارث بابامون کم میکنه!
🔹 نزدیک به 70% برنامه نویسا، مدرک/تحصیلات کارشناسی و کارشناسی ارشد دارند و 62% هم تحصیلات دانشگاهی مرتبط دارند
اماااااا با اوضاع دانشگاه های ما (که خودتون بهتر میدونین ولازم به توضیح نیست، مخصوصا برای برنامه نویسی !) اگر جز این درصد ها نیستید به نظرم انتخاب درستی کردین 👍
🔸 یادگیری خودآموز با 85% و گذراندن دوره های آموزشی آنلاین با 60% محبوب ترین روش های یادگیری در بین برنامه نویسان هست
نتیجه ای که میشه از این مورد گرفت، اهمیت بسیار بالای یادگیری زبان انگیسی برای ما ایرانی ها، با توجه به کمبود آموزش های بروز و حرفه ای به زبان فارسی توی ایران هست (یعنی واقعا از نون شب بهمون واجب تره!)
🔹 91% برنامه نویسا مرد هستند. با توجه به نظرسنجی جادی، این آمار توی ایران هم همین حدوداست (89%)
متاسفانه میزان مشارکت بانوان در این حوزه به دلایل نا معلومی بسیار پایینه! بازم جای تقدیر داره که با 2 درصد اختلاف، از میانگین آمار جهانی بالاتریم!
🔸 در کل میزان مشارکت زنان کم بوده ولی یه نکته جالب اینکه میزان مشارکت زنان توی حوزه هایی مانند Data Science و Deep/Machine Learning و Design و Front-end Developer نسبت به حوزه هایی مانند و SysAdmin و Db Admins و DevOps بیشتر بوده
🔹 طبق یه تحلیل دیگه بر اساس جنسیت و میزان سابقه کار
50% برنامه نویسای مرد زیر 10 سال و 50% دیگشون بیشتر از 10 سال سابقه کار دارند
در حالی که 67% برنامه نویسای زن زیر 10 سال و تنها 33 درصدشون بیش از 10 سال سابقه کار دارند
این اکثر برنامه نویسای زن تا 10 سال سابقه کار دارند ولی بعد از 10، خیلی سریع تر از مردا ریزش پیدا کرده و ترک کار میکنن!
🔸 67% برنامه نویسا بین 20 تا 34 ساله هستند، که بیشتریشون هم 25 تا 29 ساله هستند (27%)
این یعنی "سن طلایی" برنامه نویسی بین 20 تا 34 سال، بعدش معمولا وارد سمت های دیگه مثل (مشاوره، مدیر پروژه/محصول و... میشن)
به توجه به چندتا آمار دیگه هم شاید بشه گفت که عمر مفید برنامه نویسی، کلا 15 سال هست، بعدش دیگه موتور تون مثل قبل کار نمیکنه!
پس اگه توی این رنج سنی هستین، بیشترین استفاده رو بکنین و اگر دارین به 35 سالگی یا 15 سال کاری نزدیک میشین بهتره کم کم به فکر تغییر سمت یا شغل باشین
🔹 اکثر برنامه نویسای هند و اروپای شرقی، جوان تر و کم تجربه هستند
در حالی که اکثر برنامه نویسای استرالیا، اروپای غربی و آمریکا، مسن تر و با تجربه تر هستند
پس اگه قصد مهاجرت به این کشور ها رو دارین بدونین که کجا ها بیشترین رقیب رو دارید (و شایدم بیشترین فرصت پیشرفت به دلیل همکار بودن با ادمای با تجربه)
🔸 شبکه های اجتماعی Reddit و YouTube بیشترین استفاده را در بین برنامه نویسا داره و Facebook جایگاه چهارم رو به خودش اختصاص داده
این در حالیه که برخلاف برنامه نویسا، مردم عادی بیشتر از Facebook استفاده میکنن و Reddit اصلا توی 10 تای برتر شون هم نیست. (خاصیم دیگه، عادی نیستیم! :دی)
🔹 60% برنامه نویسا، ارتباط حضوری و face-to-face رو ترجیح میدن
28% شون ارتباط آنلاین و چت رو ترجیح میدن
و تنها 11% شون ترجیح میدن کلا ارتباطی با بقیه برقرار نکنن
برنامه نویسا معمولا آدم های درونگرایی هستند، این درونگرایی (برعکس تصور بسیاری) خیلی هم خوبه، درونگرا ها توانایی هایی منحصر به فردی دارن از جمله ذهنی متفکر، تحلیلگر و دقیق و همین عامل باعث شده ما درونگرا ها به شدت مناسب این شغل باشیم
ولی خیلی خیلی مهمه که این درونگرایی باعث تضعیف روابط اجتماعی و یا بد تر از اون، ناتوانی در ارتباط با افراد نشه. پس باید حواسمون رو جمع کنیم که توی درونگرایی افراط نکنیممممم
https://insights.stackoverflow.com/survey/2019
_______________
@IranAspMvc
Stack Overflow
Stack Overflow Developer Survey 2019
Nearly 90,000 took this comprehensive, annual survey of people who code. Demographics. Most loved, dreaded and wanted technologies. Salary and careers.
🔰 بررسی نکات کلیدی نظرسنجی Stackoverflow 2019 (قسمت چهارم-آخر)
و امااا مهم ترین نتیجه رو گذاشتم آخر کار بگم
قسمت اول در مورد محبوب ترین ها صحبت کردیم، این قسمت میخوایم در مورد پر استفاده ترین ها صحبت کنیم
از یه منظر، تفاوتشون مثل پراید و بنز میمونه، پراید (پر استفاده) تره و بازار بهتری داره ولی قطعا اگر حق انتخاب برابر داشتیم، ترجیحمون با بنز بود (محبوب تر)
پس محبوب ترین ها داره به ترجیحات و آینده نگری برنامه نویسا اشاره میکنه ولی پر استفاده ترین داره به واقعیت و بازار کار فعلی اشاره میکنه
✅ پر استفاده ترین زبان ها:
🔸 بعد از Javascript (که برای هفتمین سال متوالی پر استفاده ترین بوده) و HTML/CSS و SQL که در جایگاه دوم و سوم هستند، میرسیم به مهم هاش:
- زبان Python با 41.7% امیتاز در جایگاه 4 ام
- زبان Java با 41.1% امتیاز در جایگاه 5 ام
- زبان C# با 31% امتیاز در جایگاه 7 ام
- زبان PHP هم با 26% امتیاز در جایگاه 8 ام قرار داره
🔹 در مقایسه با پارسال
پایتون با 3 درصد افزایش از Java زده جلو و Java با 4 درصد کاهش ، جای خودش رو به اون داده. امروزه، پایتون بیشترین رشد استفاده را در بین زبان های دیگه داره ونیز از نظر محبوبیت، جایگاه دوم رو داره (بعد از Rust)
حالا که بحث محبوبیت شد جا داره بگم زبان Rust با 83درصدمحبوبیت (با 5% افزایش نسبت به پارسال) محبوب ترین زبان شناخته شده
بر خلاف افزایش 7درصدی محبوبیت زبان سی شارپ، استفاده از این زبان، 3 درصد کاهش پیدا کرده!
همچنین بر خلاف افزایش 4درصدی محبوبیت PHP، استفاده از این زبان با 4 درصد کاهش رو برو بوده
✅ پراستفاده ترین فریمورک وب:
🔸 بعد از jQuery که با 48% امیتاز جایگاه اول رو داره، فریمورک React با 31% امیتاز رتبه دوم و Angular با 30% امیتاز رتبه سوم رو کسب کردند. (فریمورک Vue هم 15% امتیاز)
نسبت به سال قبل، React رشد داشته و جایگاهشون توی جدول با Angular عوض شده
طبق این آمار، از لحاظ میزان استفاده توی دنیا، Angular و React، تقریبا با هم برابر هستند ولی Vue خیلی عقب تره. (البته طبق آمار سایت های دیگه React پر استفاده تر از Angular هست)
✅ پر استفاده ترین فریمورک:
اینجا برداشته همه فریمورک های back و front و موبایل و gaming و ... رو در کنار هم مقایسه کرده و انگار که قیمه ها رو ریخته باشه تو ماستا، نتایج قابل تفکیک و مقایسه دقیقی ازش در نمیاد
🔹بعد از NodeJs که با امیتاز 50% (برای چندین سال متوالی) در صدر جدول قرار داره، دات نت و دات نت کور به ترتیب با 37% و 23% امیتاز، در جایگاه دوم و سوم قرار دارند (که خب خوش به حال دات نتی ها)
🔸اما در مورد مقایسه میزان استفاده از Xamarin و React Native و بقیه رقیب هاش مثل Cordova و Flutter
توی قسمت اول که از نظر محبوبیت مقایسه کردیم، دیدیم که Flutter نسبت به بقیه خیلی محبوب تر بود ولی اینجا از لحاظ میزان استفاده نسبت به بقیه کمترینه (البته جدیدترین هم هست)
- اول React Native با 10% امیتاز
- بعد Cordova با 7% امیتاز
- و بعدش Xamarin با 6% امیتاز
- و در آخر Flutter با 3% امتیاز
🔹 محض اطلاع اونایی که عشق Deep Learning هستند، TensorFlow با 10% امتیاز پر استفاده تر از Torch/PyTorch با 3.3% امیتاز هست (یعنی 3 برابر اختلاف)
و باز هم این نتایج، بر خلاف نتایج میزان محبوبیت بود که در اون Torch/PyTorch محبوب تره
✅ پر استفاده ترین دیتابیس:
🔸 دیتابیس MySQL با امیتاز 54% و با اختلاف نسبتا زیاد، پر استفاده ترین هست
بعدش PostgreSQL با 34% در جایگاه دوم و سپس SQL Server با 32% در جایگاه سوم
دیتابیس Oracel خدابیامرز هم با 16.5% امتیاز در جایگاه 8 ام
🔹 درمقایسه با پارسال، میزان استفاده از MySQL حدود 4% کاهش داشته، میزان استفاده از SQL Server هم 9% کاهش پیدا کرده
در عوض دیتابیس های PostgreSQL با حدود 2% رشد، SQLite حدود 12%، دیتابیس Oracel حدود 5% و MariaDB (نسل بعدی MySQL) نزیک 3% رشد رو به همراه داشتند
🔰 نتیجه گیری:
پس همونطور که مشاهده کردین، آمار میزان استفاده، نتایج متفاوتی نسبت به میزان محبوبیت داره.
همونطور که گفتیم، میزان محبوبیت داره به آینده اشاره میکنه، ولی نه آینده خیلی نزدیک (شاید 3 تا 5 سال طول بکشه تا محبوب ترین ایتم الان بشه پر استفاده ترین آیتم اون موقع)
▪️ پس اگه بازار کار الان رو میخواین و دوست دارین خوب پول در بیارین، بچسبین به پر استفاده ترین ها
▪️اگه روی آینده تون میخواین سرمایه گذاری کنین، بچسبین به محبوب ترین ها
▪️و اگه میخواین هم خدا رو داشته باشین هم خرما رو و کمترین ریسک رو بکنین، بچسبین به اونایی که هم پر استفاده هستند و هم محبوب.
تاماااامممم
امیدوارم لذت برده باشین و براتون مفید واقع شده باشه، منم خداییش خیلی زحمت کشیدم واسه این 4تا پست، پس بی زحمت با ذکر یک صلوات بلند پسند، روح منو شاید کنین 😉🙃
@IranAspMvc
و امااا مهم ترین نتیجه رو گذاشتم آخر کار بگم
قسمت اول در مورد محبوب ترین ها صحبت کردیم، این قسمت میخوایم در مورد پر استفاده ترین ها صحبت کنیم
از یه منظر، تفاوتشون مثل پراید و بنز میمونه، پراید (پر استفاده) تره و بازار بهتری داره ولی قطعا اگر حق انتخاب برابر داشتیم، ترجیحمون با بنز بود (محبوب تر)
پس محبوب ترین ها داره به ترجیحات و آینده نگری برنامه نویسا اشاره میکنه ولی پر استفاده ترین داره به واقعیت و بازار کار فعلی اشاره میکنه
✅ پر استفاده ترین زبان ها:
🔸 بعد از Javascript (که برای هفتمین سال متوالی پر استفاده ترین بوده) و HTML/CSS و SQL که در جایگاه دوم و سوم هستند، میرسیم به مهم هاش:
- زبان Python با 41.7% امیتاز در جایگاه 4 ام
- زبان Java با 41.1% امتیاز در جایگاه 5 ام
- زبان C# با 31% امتیاز در جایگاه 7 ام
- زبان PHP هم با 26% امتیاز در جایگاه 8 ام قرار داره
🔹 در مقایسه با پارسال
پایتون با 3 درصد افزایش از Java زده جلو و Java با 4 درصد کاهش ، جای خودش رو به اون داده. امروزه، پایتون بیشترین رشد استفاده را در بین زبان های دیگه داره ونیز از نظر محبوبیت، جایگاه دوم رو داره (بعد از Rust)
حالا که بحث محبوبیت شد جا داره بگم زبان Rust با 83درصدمحبوبیت (با 5% افزایش نسبت به پارسال) محبوب ترین زبان شناخته شده
بر خلاف افزایش 7درصدی محبوبیت زبان سی شارپ، استفاده از این زبان، 3 درصد کاهش پیدا کرده!
همچنین بر خلاف افزایش 4درصدی محبوبیت PHP، استفاده از این زبان با 4 درصد کاهش رو برو بوده
✅ پراستفاده ترین فریمورک وب:
🔸 بعد از jQuery که با 48% امیتاز جایگاه اول رو داره، فریمورک React با 31% امیتاز رتبه دوم و Angular با 30% امیتاز رتبه سوم رو کسب کردند. (فریمورک Vue هم 15% امتیاز)
نسبت به سال قبل، React رشد داشته و جایگاهشون توی جدول با Angular عوض شده
طبق این آمار، از لحاظ میزان استفاده توی دنیا، Angular و React، تقریبا با هم برابر هستند ولی Vue خیلی عقب تره. (البته طبق آمار سایت های دیگه React پر استفاده تر از Angular هست)
✅ پر استفاده ترین فریمورک:
اینجا برداشته همه فریمورک های back و front و موبایل و gaming و ... رو در کنار هم مقایسه کرده و انگار که قیمه ها رو ریخته باشه تو ماستا، نتایج قابل تفکیک و مقایسه دقیقی ازش در نمیاد
🔹بعد از NodeJs که با امیتاز 50% (برای چندین سال متوالی) در صدر جدول قرار داره، دات نت و دات نت کور به ترتیب با 37% و 23% امیتاز، در جایگاه دوم و سوم قرار دارند (که خب خوش به حال دات نتی ها)
🔸اما در مورد مقایسه میزان استفاده از Xamarin و React Native و بقیه رقیب هاش مثل Cordova و Flutter
توی قسمت اول که از نظر محبوبیت مقایسه کردیم، دیدیم که Flutter نسبت به بقیه خیلی محبوب تر بود ولی اینجا از لحاظ میزان استفاده نسبت به بقیه کمترینه (البته جدیدترین هم هست)
- اول React Native با 10% امیتاز
- بعد Cordova با 7% امیتاز
- و بعدش Xamarin با 6% امیتاز
- و در آخر Flutter با 3% امتیاز
🔹 محض اطلاع اونایی که عشق Deep Learning هستند، TensorFlow با 10% امتیاز پر استفاده تر از Torch/PyTorch با 3.3% امیتاز هست (یعنی 3 برابر اختلاف)
و باز هم این نتایج، بر خلاف نتایج میزان محبوبیت بود که در اون Torch/PyTorch محبوب تره
✅ پر استفاده ترین دیتابیس:
🔸 دیتابیس MySQL با امیتاز 54% و با اختلاف نسبتا زیاد، پر استفاده ترین هست
بعدش PostgreSQL با 34% در جایگاه دوم و سپس SQL Server با 32% در جایگاه سوم
دیتابیس Oracel خدابیامرز هم با 16.5% امتیاز در جایگاه 8 ام
🔹 درمقایسه با پارسال، میزان استفاده از MySQL حدود 4% کاهش داشته، میزان استفاده از SQL Server هم 9% کاهش پیدا کرده
در عوض دیتابیس های PostgreSQL با حدود 2% رشد، SQLite حدود 12%، دیتابیس Oracel حدود 5% و MariaDB (نسل بعدی MySQL) نزیک 3% رشد رو به همراه داشتند
🔰 نتیجه گیری:
پس همونطور که مشاهده کردین، آمار میزان استفاده، نتایج متفاوتی نسبت به میزان محبوبیت داره.
همونطور که گفتیم، میزان محبوبیت داره به آینده اشاره میکنه، ولی نه آینده خیلی نزدیک (شاید 3 تا 5 سال طول بکشه تا محبوب ترین ایتم الان بشه پر استفاده ترین آیتم اون موقع)
▪️ پس اگه بازار کار الان رو میخواین و دوست دارین خوب پول در بیارین، بچسبین به پر استفاده ترین ها
▪️اگه روی آینده تون میخواین سرمایه گذاری کنین، بچسبین به محبوب ترین ها
▪️و اگه میخواین هم خدا رو داشته باشین هم خرما رو و کمترین ریسک رو بکنین، بچسبین به اونایی که هم پر استفاده هستند و هم محبوب.
تاماااامممم
امیدوارم لذت برده باشین و براتون مفید واقع شده باشه، منم خداییش خیلی زحمت کشیدم واسه این 4تا پست، پس بی زحمت با ذکر یک صلوات بلند پسند، روح منو شاید کنین 😉🙃
@IranAspMvc
🔥 داغ ترین خبر های دنیای دات نت🔥
ا✅ NET Core 3.0 Preivew 4 منتشر شد
https://devblogs.microsoft.com/dotnet/announcing-net-core-3-preview-4/
ا✅ ASP.NET Core 3.0 Preivew 4 منتشر شد
https://devblogs.microsoft.com/aspnet/asp-net-core-updates-in-net-core-3-0-preview-4/
ا✅ Entity Framework 3.0 Preivew 4 منتشر شد
https://devblogs.microsoft.com/dotnet/announcing-entity-framework-core-3-0-preview-4/
ا✅ NET Framework 4.8 منتشر شد
https://devblogs.microsoft.com/dotnet/announcing-the-net-framework-4-8/
ا✅ Blazor از حالت آزمایشی خارج شد
https://devblogs.microsoft.com/aspnet/blazor-now-in-official-preview/
به زودی جزئیاتشون رو با هم بررسی خواهیم کرد✌️
@IranAspMvc
ا✅ NET Core 3.0 Preivew 4 منتشر شد
https://devblogs.microsoft.com/dotnet/announcing-net-core-3-preview-4/
ا✅ ASP.NET Core 3.0 Preivew 4 منتشر شد
https://devblogs.microsoft.com/aspnet/asp-net-core-updates-in-net-core-3-0-preview-4/
ا✅ Entity Framework 3.0 Preivew 4 منتشر شد
https://devblogs.microsoft.com/dotnet/announcing-entity-framework-core-3-0-preview-4/
ا✅ NET Framework 4.8 منتشر شد
https://devblogs.microsoft.com/dotnet/announcing-the-net-framework-4-8/
ا✅ Blazor از حالت آزمایشی خارج شد
https://devblogs.microsoft.com/aspnet/blazor-now-in-official-preview/
به زودی جزئیاتشون رو با هم بررسی خواهیم کرد✌️
@IranAspMvc
✅ دوره API نویسی اصولی و حرفه ای در ASP.NET Core
در این دوره همه نکات مهم و پرکاربرد در API نویسی اصولی و حرفه ای در ASP Core بررسی شده اند.
همچنین سعی شده بهترین و محبوب ترین تکنولوژی ها، کتابخانه ها و ابزار ها داخل پروژه استفاده بشه.
ونیز Best Practice های پرفرمنسی و امنیتی بعلاوه تکنیک های پرکاربرد را بررسی و در قالب یک معماری حرفه ای و اصولی استفاده می کنیم.
برای دیدن سرفصل ها و دموی دوره به لینک زیر مراجعه کنید
🔹کد تخفیف 20 درصدی : dotnetzoom
🔸لینک خرید دوره
https://bit.ly/2Xo6NX2
در این دوره همه نکات مهم و پرکاربرد در API نویسی اصولی و حرفه ای در ASP Core بررسی شده اند.
همچنین سعی شده بهترین و محبوب ترین تکنولوژی ها، کتابخانه ها و ابزار ها داخل پروژه استفاده بشه.
ونیز Best Practice های پرفرمنسی و امنیتی بعلاوه تکنیک های پرکاربرد را بررسی و در قالب یک معماری حرفه ای و اصولی استفاده می کنیم.
برای دیدن سرفصل ها و دموی دوره به لینک زیر مراجعه کنید
🔹کد تخفیف 20 درصدی : dotnetzoom
🔸لینک خرید دوره
https://bit.ly/2Xo6NX2
خب دوستان مدت زمان 2ماه گذشته و الان جامعه آماری مناسبی واسه رای گیری در مورد دروه قبلی داریم.
حالا به نظرتون دوره API نویسی حرفه ای، خوب بود؟
لطفا فقط کسانی که دوره رو تهیه کردند رای بدن تا آمار واقعی بدست بیاد 🌹
حالا به نظرتون دوره API نویسی حرفه ای، خوب بود؟
لطفا فقط کسانی که دوره رو تهیه کردند رای بدن تا آمار واقعی بدست بیاد 🌹
Final Results
48%
👌 عالی
34%
👍 متوسط
18%
👎ضعیف
Forwarded from Software Philosophy
و بالاخره Blazor از نسخه آزمایشی خارج شد!
پروژه Blazor داستان جذابی دارد. حدود دو سال پیش Steve Sanderson یک پروژه تفریحی به نام Blazor در گیتهاب خود درست کرد و شروع به آزمایش ایده خود کرد.
اگر مدت زیادی است که در دنیای JavaScript هستید حتما نام فریمورک محبوب knockout.js را شنیدهاید. این فریمورک یکی از فریمورکهای کوچک و سبک بایندینگ است که هنوز هم در خیلی از محصولات استفاده میشود. خالق این پروژه نیز Steve Sanderson بود!
ایده Steve این بود: اجرای کدهای C# روی مرورگر با استفاده از WebAssembly و استفاده از Razor و اجرای آن روی مرورگر. بنابراین ترکیب Razor و Browser شد نام پروژه: Blazor. با زبان خیلی ساده میتوان گفت Blazor قرار است یک فریمورک مانند Angular یا React باشد ولی با زبان C#!
تنها پس از چند ماه این پروژه شخصی او توجه بسیاری را به خود جلب کرد تا حدی که مایکروسافت تصمیم گرفت این پروژه را به عنوان یک پروژه آزمایشی به ASP.NET GitHub Organization اضافه کند. در زمان نوشتن این مطلب این ریپو ۷۹۰۰ استار دارد.
امروز همزمان با ریلیز ASP.NET Core 3.0 Preview 4 این پروژه از حالت آزمایشی درآمد و رسما به داتنت کور اضافه شد. یک تصمیم مهم تغییر نام Razor Component به Server-side Blazor بود. بنابراین از این به بعد Blazor یک مدل واحد نوشتن برنامههای سمت کلاینت است با چندین مدل هاست شدن:
- Server-side Blazor: runs on the server via SignalR
- Client-side Blazor: runs client-side on WebAssembly
جالب است بدانید که شرکتهای DevExpress، Telerik و Syncfusion شروع به ساختن کامپوننتهای Blazor کردهاند و همین الان محصولاتی روی آن ساختهاند.
لینک زیر حاوی اطلاعات جزئیتری از برنامه ریلیز و امکانات این محصول است.
https://devblogs.microsoft.com/aspnet/blazor-now-in-official-preview/
⁉️ برای بحث و تبادل نظر فنی در مورد این پست، بر روی لینک زیر کلیک کنید:
https://ow.ly/Pnh030ouEX5
#مهران_داودی (https://ow.ly/GwIl309lFEm)
کانال تلگرام:
@SoftwarePhilosophy
___
پروژه Blazor داستان جذابی دارد. حدود دو سال پیش Steve Sanderson یک پروژه تفریحی به نام Blazor در گیتهاب خود درست کرد و شروع به آزمایش ایده خود کرد.
اگر مدت زیادی است که در دنیای JavaScript هستید حتما نام فریمورک محبوب knockout.js را شنیدهاید. این فریمورک یکی از فریمورکهای کوچک و سبک بایندینگ است که هنوز هم در خیلی از محصولات استفاده میشود. خالق این پروژه نیز Steve Sanderson بود!
ایده Steve این بود: اجرای کدهای C# روی مرورگر با استفاده از WebAssembly و استفاده از Razor و اجرای آن روی مرورگر. بنابراین ترکیب Razor و Browser شد نام پروژه: Blazor. با زبان خیلی ساده میتوان گفت Blazor قرار است یک فریمورک مانند Angular یا React باشد ولی با زبان C#!
تنها پس از چند ماه این پروژه شخصی او توجه بسیاری را به خود جلب کرد تا حدی که مایکروسافت تصمیم گرفت این پروژه را به عنوان یک پروژه آزمایشی به ASP.NET GitHub Organization اضافه کند. در زمان نوشتن این مطلب این ریپو ۷۹۰۰ استار دارد.
امروز همزمان با ریلیز ASP.NET Core 3.0 Preview 4 این پروژه از حالت آزمایشی درآمد و رسما به داتنت کور اضافه شد. یک تصمیم مهم تغییر نام Razor Component به Server-side Blazor بود. بنابراین از این به بعد Blazor یک مدل واحد نوشتن برنامههای سمت کلاینت است با چندین مدل هاست شدن:
- Server-side Blazor: runs on the server via SignalR
- Client-side Blazor: runs client-side on WebAssembly
جالب است بدانید که شرکتهای DevExpress، Telerik و Syncfusion شروع به ساختن کامپوننتهای Blazor کردهاند و همین الان محصولاتی روی آن ساختهاند.
لینک زیر حاوی اطلاعات جزئیتری از برنامه ریلیز و امکانات این محصول است.
https://devblogs.microsoft.com/aspnet/blazor-now-in-official-preview/
⁉️ برای بحث و تبادل نظر فنی در مورد این پست، بر روی لینک زیر کلیک کنید:
https://ow.ly/Pnh030ouEX5
#مهران_داودی (https://ow.ly/GwIl309lFEm)
کانال تلگرام:
@SoftwarePhilosophy
___
Microsoft News
Blazor now in official preview!
With this newest Blazor release we’re pleased to announce that Blazor is now in official preview! Blazor is no longer experimental and we are committing to ship it as a supported web UI framework including support for running client-side in the browser on…
🔰 چند نکته از NET Core SDK و Visual Studio
🔸 برای استفاده از ورژن های پیش نمایش (preview) دات نت کور در Visual Studio 2019 باید گزینه "Use Previews of the .NET Core SDK" را از مسیر زیر فعال کنید
🔹 ورژن های زیر از NET Core SDK بر روی Visual Studio 2017 کار نمی کند زیرا به MSBuild ورژن 16 نیاز دارد که با VS 2017 سازگاری ندارد و با Visual Studio 2019 اوکی هست
- ورژن های 2.2.2xx مانند 2.2.203
- ورژن های 2.1.6xx مانند 2.1.603
- ورژن های 3.0.1xx مانند 3.0.100
🔸 برای استفاده از آخرین آپدیت NET Core SDK 2.2 قابل نصب بر روی Viusal Studio 2017 باید حتما از ورژن 2.2.106 استفاده کنید
🔹 برای استفاده از آخرین آپدیت NET Core SDK 2.1 قابل نصب بر روی Viusal Studio 2017 باید حتما از ورژن 2.1.506 استفاده کنید
🔸 اگر با Visual Studio Code و یا JetBrains Rider کار کنید، هیچگاه متوجه وجود مسائل بالا نخواهید شد!
دلیلش اینه که هر نسخه از ویژوال استادیو ورژن MSBuild خودش رو داره و وقتی ما دکمه F5 رو میزنیم پروژه ها رو با اون build میکنه، در صوتی که اگر با دستور dotnet build توی command line بیلد میکرد هیچ مشکلی نداشت
از طرفی هر نسخه SDK یه range از عدد ورژن های MSBuild ایی که پشتیبانی میکنه رو تو خودش داره، ویژوال استادیو هم چک میکنه ببینه اون ورژن MSBuild لازم رو داره یا نه که اگه نه خطا میده
اما IDE های دیگه مثل VS Code و Rider از خودشون MSBuild ندارن و F5 رو میزنیم، پروژه رو با دستور dotnet build توی cmd بیلد میکنه، پس مشکلی نخواهند داشت
اطلاعات بیشتر:
https://github.com/dotnet/announcements/issues/108
_______________
@IranAspMvc
🔸 برای استفاده از ورژن های پیش نمایش (preview) دات نت کور در Visual Studio 2019 باید گزینه "Use Previews of the .NET Core SDK" را از مسیر زیر فعال کنید
Tools -> Options -> Projects and Solutions -> .NET Core -> Use Previews of the .NET Core SDK.تنظیم بالا در ورژن های بعدی VS 2019 به مسیر زیر انتقال می یابد
Tools -> Options -> Environment -> Preview Features🔹 اگر از ورژن های NET Core 3 SDK استفاده کنید نسخه زبان سی شارپ مورد استفاده در پروژه به صورت پیشفرض 8 خواهد بود
🔹 ورژن های زیر از NET Core SDK بر روی Visual Studio 2017 کار نمی کند زیرا به MSBuild ورژن 16 نیاز دارد که با VS 2017 سازگاری ندارد و با Visual Studio 2019 اوکی هست
- ورژن های 2.2.2xx مانند 2.2.203
- ورژن های 2.1.6xx مانند 2.1.603
- ورژن های 3.0.1xx مانند 3.0.100
🔸 برای استفاده از آخرین آپدیت NET Core SDK 2.2 قابل نصب بر روی Viusal Studio 2017 باید حتما از ورژن 2.2.106 استفاده کنید
🔹 برای استفاده از آخرین آپدیت NET Core SDK 2.1 قابل نصب بر روی Viusal Studio 2017 باید حتما از ورژن 2.1.506 استفاده کنید
🔸 اگر با Visual Studio Code و یا JetBrains Rider کار کنید، هیچگاه متوجه وجود مسائل بالا نخواهید شد!
دلیلش اینه که هر نسخه از ویژوال استادیو ورژن MSBuild خودش رو داره و وقتی ما دکمه F5 رو میزنیم پروژه ها رو با اون build میکنه، در صوتی که اگر با دستور dotnet build توی command line بیلد میکرد هیچ مشکلی نداشت
از طرفی هر نسخه SDK یه range از عدد ورژن های MSBuild ایی که پشتیبانی میکنه رو تو خودش داره، ویژوال استادیو هم چک میکنه ببینه اون ورژن MSBuild لازم رو داره یا نه که اگه نه خطا میده
اما IDE های دیگه مثل VS Code و Rider از خودشون MSBuild ندارن و F5 رو میزنیم، پروژه رو با دستور dotnet build توی cmd بیلد میکنه، پس مشکلی نخواهند داشت
اطلاعات بیشتر:
https://github.com/dotnet/announcements/issues/108
_______________
@IranAspMvc
GitHub
.NET Core SDK 2.2.2nn and 2.1.6nn do not work with Visual Studio 2017 · Issue #108 · dotnet/announcements
.NET Core SDK 2.2.2nn and 2.1.6nn do not work with Visual Studio 2017 .NET Core SDK 2.2.2nn and 2.1.6nn do not work with Visual Studio 2017. For example, 2.2.203 and 2.1.603 cause failures in Visua...
در راستای اجرای WinForms بر روی NET Core 3.0، ماکروسافت کنترل Chart را به NET Core 3.0 منتقل کرد
آدرس ریپازیتوری گیتهاب :
https://github.com/dotnet/winforms-datavisualization
نمونه Sample ها
https://github.com/dotnet/winforms-datavisualization/tree/master/sample/ChartSamples
آدرس پکیج :
https://www.nuget.org/packages/System.Windows.Forms.DataVisualization/
نکته: دیزاینر بصری (visual) برای تنظیم Chart فوق در Visual Studio 2019 هنوز در حال توسعه بوده و تکمیل نشده است لذا باید برای تغییر تنظیمات آن به صورت دستی کد نویسی کنید یا اینکه ابتدا تنظیم آن را در یک پروژه NET Framework انجادم دهید و سپس کد آن را به پروژه NET Core ایی خود منتقل کنید
@IranAspMvc
آدرس ریپازیتوری گیتهاب :
https://github.com/dotnet/winforms-datavisualization
نمونه Sample ها
https://github.com/dotnet/winforms-datavisualization/tree/master/sample/ChartSamples
آدرس پکیج :
https://www.nuget.org/packages/System.Windows.Forms.DataVisualization/
نکته: دیزاینر بصری (visual) برای تنظیم Chart فوق در Visual Studio 2019 هنوز در حال توسعه بوده و تکمیل نشده است لذا باید برای تغییر تنظیمات آن به صورت دستی کد نویسی کنید یا اینکه ابتدا تنظیم آن را در یک پروژه NET Framework انجادم دهید و سپس کد آن را به پروژه NET Core ایی خود منتقل کنید
@IranAspMvc
✅ پروژه gRPC ؛ نسل بعدی RESTful !
قبل از اینکه ببینیم gRPC چیه بهتره بدونم اصلا RPC چیه؟ RPC که مخفف Remote Procedure Call هست یه پروتکل واسه فراخوانی یه سرویس از یه برنامه داخل یه برنامه دیگه هست. یعنی برنامه A برای اینکه یه فانکشنی داخل برنامه B روی بتونه فراخوانی کنه از این پروتکل استفاده میکنه
پروژه gRPC درواقع یک فریمورک RPC سریع و قدرتمند هست که توسط گوگل و همکاری چندتا از شرکت های بزرگ دنیا درست شده.
توسط این فریمورک، کلاینت میتونه با سرور ارتباط برقرار کنه، یه API رو فراخوانی کنه و دیتای لازم بینشون رد و بدل بشه، چیزی مشابه RESTful ولی خیلی سریع تر، بهینه تر و ایمن تر؛ به دلایل زیر:
🔸 پروتکل gRPC به صورت پیشفرض واسه سریالایز کردن اطلاعات و پیام هایی که رد و بدل میشه از ProtocolBuffer استفاده میکنه که یه مکانیزم فوق سریع و قدرتمند برای سرایلایز کردن دیتا هست (یه کتابخانه با همین نام توسط گوگل نوشته شده و wrapper دات نتیش هم اسمش protobuf-net هست)
فرمت اطلاعات توی ProtocolBuffer به صورت باینری هست و از این بابت حجم اطلاعات کاهش پیدا میکنه در نتیجه اطلاعات قبل از ارسال فشرده میشن و ترافیک کمتر و درنتیجه سرعت بیشتری رو خواهیم داشت
🔹 یکی دیگه از خوبی های gRPC اینه که Schema (ساختار) متد های قابل فراخوانی سمت سرور به همراه پارامتر های ورودی و خروجی و ساختارشون رو برای کلاینت مشخص میکنه (مثل فایل swagger.json توی پروتکل Open API و ابزار Swagger)
یعنی کلاینت دقیقا میدونه چه کلاس ها و چه متد های در سمت سرور برای فراخوانی وجود داره و هر متد هم چه پارامتر هایی میگیره، ساختارشون چیه و چه خروجی ایی میده
🔸 نکته مثبت دیگه ای که داره اینکه قابلیت Bi-directional Streaming داره، یعنی در عین حال که کلاینت داره به سرور جریانی از داده ها (Stream) رو ارسال میکنه، همون لحظه سرور هم میتونه جریانی از داده ها رو برای کلاینت ارسال کنه (ارسال و دریافت همزمان اطلاعات) و این یعنی "ارتباط کاملا دو طرفه Stream ایی"
🔹 همچنین gRPC از پروتکل HTTP2 استفاده میکنه که هم سریعتر و هم ایمن تر از ورژن های قبلی HTTP هست
🔸 این پروتکل ارتباطی کاملا مستقل از زبان برنامه نویسی سمت کلاینت و سرور عمل میکنه درنتیجه مثلا کلاینت شما میتونه با Java نوشته بشه و سرور شما با سی شارپ یا هر زبان دیگه
اطلاعات بیشتر:
https://grpc.io
https://github.com/grpc/grpc
_______________
@IranAspMvc
قبل از اینکه ببینیم gRPC چیه بهتره بدونم اصلا RPC چیه؟ RPC که مخفف Remote Procedure Call هست یه پروتکل واسه فراخوانی یه سرویس از یه برنامه داخل یه برنامه دیگه هست. یعنی برنامه A برای اینکه یه فانکشنی داخل برنامه B روی بتونه فراخوانی کنه از این پروتکل استفاده میکنه
پروژه gRPC درواقع یک فریمورک RPC سریع و قدرتمند هست که توسط گوگل و همکاری چندتا از شرکت های بزرگ دنیا درست شده.
توسط این فریمورک، کلاینت میتونه با سرور ارتباط برقرار کنه، یه API رو فراخوانی کنه و دیتای لازم بینشون رد و بدل بشه، چیزی مشابه RESTful ولی خیلی سریع تر، بهینه تر و ایمن تر؛ به دلایل زیر:
🔸 پروتکل gRPC به صورت پیشفرض واسه سریالایز کردن اطلاعات و پیام هایی که رد و بدل میشه از ProtocolBuffer استفاده میکنه که یه مکانیزم فوق سریع و قدرتمند برای سرایلایز کردن دیتا هست (یه کتابخانه با همین نام توسط گوگل نوشته شده و wrapper دات نتیش هم اسمش protobuf-net هست)
فرمت اطلاعات توی ProtocolBuffer به صورت باینری هست و از این بابت حجم اطلاعات کاهش پیدا میکنه در نتیجه اطلاعات قبل از ارسال فشرده میشن و ترافیک کمتر و درنتیجه سرعت بیشتری رو خواهیم داشت
🔹 یکی دیگه از خوبی های gRPC اینه که Schema (ساختار) متد های قابل فراخوانی سمت سرور به همراه پارامتر های ورودی و خروجی و ساختارشون رو برای کلاینت مشخص میکنه (مثل فایل swagger.json توی پروتکل Open API و ابزار Swagger)
یعنی کلاینت دقیقا میدونه چه کلاس ها و چه متد های در سمت سرور برای فراخوانی وجود داره و هر متد هم چه پارامتر هایی میگیره، ساختارشون چیه و چه خروجی ایی میده
🔸 نکته مثبت دیگه ای که داره اینکه قابلیت Bi-directional Streaming داره، یعنی در عین حال که کلاینت داره به سرور جریانی از داده ها (Stream) رو ارسال میکنه، همون لحظه سرور هم میتونه جریانی از داده ها رو برای کلاینت ارسال کنه (ارسال و دریافت همزمان اطلاعات) و این یعنی "ارتباط کاملا دو طرفه Stream ایی"
🔹 همچنین gRPC از پروتکل HTTP2 استفاده میکنه که هم سریعتر و هم ایمن تر از ورژن های قبلی HTTP هست
🔸 این پروتکل ارتباطی کاملا مستقل از زبان برنامه نویسی سمت کلاینت و سرور عمل میکنه درنتیجه مثلا کلاینت شما میتونه با Java نوشته بشه و سرور شما با سی شارپ یا هر زبان دیگه
اطلاعات بیشتر:
https://grpc.io
https://github.com/grpc/grpc
_______________
@IranAspMvc
🔰 سوال یکی از دوستان و جواب کامل مهندس کرامتی درباره تاریخچه این تکنولوژی ها 👍
«سلام اقای کرامتی سوالی برای پیش اومده که دقیقا فرق بین web api ، signalr و gRPC در چیە ؟
و من چطور کاربرد اونارو توی پروژم تشخیص بدم ؟؟؟»
@IranAspMvc
«سلام اقای کرامتی سوالی برای پیش اومده که دقیقا فرق بین web api ، signalr و gRPC در چیە ؟
و من چطور کاربرد اونارو توی پروژم تشخیص بدم ؟؟؟»
@IranAspMvc
✅ یک تغییر مهم در ASP.NET Core 3.0 Preview 4
تغییرات این ورژن بیشتر مربوط به blazor بود که میتونین توی لینک ماکروسافت بخونینش ولی یه تغییر کوچیک اما مهم هم بین شون بود
از این پس به جای متد AddMvc توی ConfigureServices کلاس Startup سه تا متد دیگه اومده که بسته به نیازمون باید ازش استفاده کنیم.
- AddControllers
- AddControllersWithViews
- AddRazorPages
البته متد AddMvc توی این نسخه حذف نمیشه ولی احتمالش هست توی ورژن های بعدی حذف بشه.
🔸 اگه فقط میخواین API بنویسین یعنی به Controller نیاز دارین ولی به View یا Page نیاز ندارید باید از متد AddControllers استفاده کنید (پروژه Web API)
این متد موارد زیر رو اضافه میکنه :
موارد زیر قبلا توی AddMvc اضافه میشد ولی توی متد بالا دیگه اضافه نمیشه :
🔹 اگه یه سایت MVC به صورت معمولی میخواین بنویسین یعنی به هم به Controller و هم به View نیاز دارید باید از متد AddControllersWithViews استفاده کنید (پروژه MVC)
این متد موارد زیر رو اضافه میکنه :
موارد زیر قبلا توی AddMvc اضافه میشد ولی توی متد بالا دیگه اضافه نمیشه :
🔸 اگه یه سایت MVC به صورت Razor Pages میخواین بنویسین یعنی به هم به Controller و هم به Page نیاز دارید باید از متد AddRazorPages استفاده کنید (پروژه Razor Pages)
این متد موارد زیر رو اضافه میکنه :
موارد زیر قبلا توی AddMvc اضافه میشد ولی توی متد بالا دیگه اضافه نمیشه :
🔹 هدف این کار اینه که متد هایی متمرکز و بهینه شده (بدون موارد اضافه) برای هر کاربرد وجود داشته باشه تا با استفاده از اونها به جای AddMvc کلی سربار اضافه به پروژه تحمیل نکنیم
اطلاعات بیشتر:
https://devblogs.microsoft.com/aspnet/asp-net-core-updates-in-net-core-3-0-preview-4/
___________
@IranAspMvc
تغییرات این ورژن بیشتر مربوط به blazor بود که میتونین توی لینک ماکروسافت بخونینش ولی یه تغییر کوچیک اما مهم هم بین شون بود
از این پس به جای متد AddMvc توی ConfigureServices کلاس Startup سه تا متد دیگه اومده که بسته به نیازمون باید ازش استفاده کنیم.
- AddControllers
- AddControllersWithViews
- AddRazorPages
البته متد AddMvc توی این نسخه حذف نمیشه ولی احتمالش هست توی ورژن های بعدی حذف بشه.
🔸 اگه فقط میخواین API بنویسین یعنی به Controller نیاز دارین ولی به View یا Page نیاز ندارید باید از متد AddControllers استفاده کنید (پروژه Web API)
public void ConfigureServices(IServiceCollection services)
{
services.AddControllers();
}
این متد موارد زیر رو اضافه میکنه :
- Controllers
- Model Binding
- API Explorer (OpenAPI integration)
- Authorization [Authorize]
- CORS [EnableCors]
- Data Annotations validation [Required]
- Formatter Mappings (translate a file-extension to a content-type)
موارد زیر قبلا توی AddMvc اضافه میشد ولی توی متد بالا دیگه اضافه نمیشه :
- Antiforgery
- Temp Data
- Views
- Pages
- Tag Helpers
- Memory Cache
🔹 اگه یه سایت MVC به صورت معمولی میخواین بنویسین یعنی به هم به Controller و هم به View نیاز دارید باید از متد AddControllersWithViews استفاده کنید (پروژه MVC)
public void ConfigureServices(IServiceCollection services)
{
services.AddControllersWithViews();
}
این متد موارد زیر رو اضافه میکنه :
- Controllers
- Model Binding
- API Explorer (OpenAPI integration)
- Authorization [Authorize]
- CORS [EnableCors]
- Data Annotations validation [Required]
- Formatter Mappings (translate a file-extension to a content-type)
- Antiforgery
- Temp Data
- Views
- Tag Helpers
- Memory Cache
موارد زیر قبلا توی AddMvc اضافه میشد ولی توی متد بالا دیگه اضافه نمیشه :
- Pages
🔸 اگه یه سایت MVC به صورت Razor Pages میخواین بنویسین یعنی به هم به Controller و هم به Page نیاز دارید باید از متد AddRazorPages استفاده کنید (پروژه Razor Pages)
public void ConfigureServices(IServiceCollection services)
{
services.AddRazorPages();
}
این متد موارد زیر رو اضافه میکنه :
- Pages
- Controllers
- Model Binding
- Authorization [Authorize]
- Data Annotations validation [Required]
- Antiforgery
- Temp Data
- Views
- Tag Helpers
- Memory Cache
موارد زیر قبلا توی AddMvc اضافه میشد ولی توی متد بالا دیگه اضافه نمیشه :
- API Explorer (OpenAPI integration)
- CORS [EnableCors]
- Formatter Mappings (translate a file-extension to a content-type)
🔹 هدف این کار اینه که متد هایی متمرکز و بهینه شده (بدون موارد اضافه) برای هر کاربرد وجود داشته باشه تا با استفاده از اونها به جای AddMvc کلی سربار اضافه به پروژه تحمیل نکنیم
اطلاعات بیشتر:
https://devblogs.microsoft.com/aspnet/asp-net-core-updates-in-net-core-3-0-preview-4/
___________
@IranAspMvc
🔰 اگر به Microservices علاقمندید، احتمالاً این سخنرانی براتون جالب باشه
جیمی بوگارد (خالق AutoMapper و MediatR)، از تجربه پیادهسازی فاجعهبار این معماری در شرکت Dell میگه.
کاری که ۱۸ ماه طول کشیده و سرانجام در لانچ اولیه، هر ریکوئست حدود ۱۰ دقیقه طول میکشیده!!
https://www.youtube.com/watch?v=gfh-VCTwMw8
با تشکر از حامد سعیدی
@IranAspMvc
جیمی بوگارد (خالق AutoMapper و MediatR)، از تجربه پیادهسازی فاجعهبار این معماری در شرکت Dell میگه.
کاری که ۱۸ ماه طول کشیده و سرانجام در لانچ اولیه، هر ریکوئست حدود ۱۰ دقیقه طول میکشیده!!
https://www.youtube.com/watch?v=gfh-VCTwMw8
با تشکر از حامد سعیدی
@IranAspMvc
YouTube
Avoiding Microservice Megadisasters - Jimmy Bogard
You've spent months re-architecting your monolith into the new microservices vision. Everyone gathers around to flip the switch. You navigate to the first page...and nothing happens. Refresh...still nothing. The site is so slow, it won't respond for minutes.…
Forwarded from Software Philosophy
اگر بخواهیم امروز یک stack برای ۳ سال آینده انتخاب کنیم؟
در یکی از شرکتهایی که مشاور هستم سوال جالبی مطرح شده. قرار هست که برای ۳ سال آینده برنامهریزی فنی داشته باشیم و الان یک stack انتخاب کنیم که پروژههای آینده رو با اونها انجام بدیم. و خوب احتمالا ۳ سال بعد باز هم باید این تصمیم جدی رو دوباره بگیریم!
قرار شده هر کسی که پیشنهادی داره، پیشنهادش رو در قابل یک پروپوزال ارائه بده!
من تصمیم گرفتم این مستند رو روی گیتهاب درست کنم تا هم در اختیار همه باشه و هم بتونم از نظر همه شما استفاده کنم. اگر فکر میکنید در انتخاب stack تا حدودی شبیه هم فکر میکنیم خیلی خوشحال میشم تو تکمیلش بهم کمک کنین. تو گیتهاب نظراتتون رو به صورت issue مطرح کنین تا در موردشون بحث کنیم و یا حتی تغییراتی رو که به نظرتون میاد رو به صورت pull request بفرستید واسم.
https://github.com/mehrandvd/general-stack
⁉️ برای بحث و تبادل نظر فنی در مورد این پست، بر روی لینک زیر کلیک کنید:
https://ow.ly/DaUO30oz4z2
#مهران_داودی (https://ow.ly/GwIl309lFEm)
کانال تلگرام:
@SoftwarePhilosophy
___
در یکی از شرکتهایی که مشاور هستم سوال جالبی مطرح شده. قرار هست که برای ۳ سال آینده برنامهریزی فنی داشته باشیم و الان یک stack انتخاب کنیم که پروژههای آینده رو با اونها انجام بدیم. و خوب احتمالا ۳ سال بعد باز هم باید این تصمیم جدی رو دوباره بگیریم!
قرار شده هر کسی که پیشنهادی داره، پیشنهادش رو در قابل یک پروپوزال ارائه بده!
من تصمیم گرفتم این مستند رو روی گیتهاب درست کنم تا هم در اختیار همه باشه و هم بتونم از نظر همه شما استفاده کنم. اگر فکر میکنید در انتخاب stack تا حدودی شبیه هم فکر میکنیم خیلی خوشحال میشم تو تکمیلش بهم کمک کنین. تو گیتهاب نظراتتون رو به صورت issue مطرح کنین تا در موردشون بحث کنیم و یا حتی تغییراتی رو که به نظرتون میاد رو به صورت pull request بفرستید واسم.
https://github.com/mehrandvd/general-stack
⁉️ برای بحث و تبادل نظر فنی در مورد این پست، بر روی لینک زیر کلیک کنید:
https://ow.ly/DaUO30oz4z2
#مهران_داودی (https://ow.ly/GwIl309lFEm)
کانال تلگرام:
@SoftwarePhilosophy
___
GitHub
mehrandvd/general-stack
The question is as simple as this: Which stack to use for the next 3 years! - mehrandvd/general-stack
Forwarded from Software Philosophy
Media is too big
VIEW IN TELEGRAM
این ویدئوی ۱ دقیقهای، خلاصهای از سخنرانی تدکس مهران داودی هست. نسخه اصلی این TEDx Talk حدود ۱۸ دقیقه است. برای دیدن ویدئو کامل در صفحه رسمی تدکس در یوتیوب، میتونید لینکی که تو پیام زیر هست رو ببینید.
👇👇👇👇
👇👇👇👇
Forwarded from Software Philosophy
و بالاخره... اینم از سخنرانی تدکس من: «پروژه یک من جدید!».
تو تدکس در مورد نرونهای آینهای صحبت کردم و اینکه چطور این قسمت عجیب از مغز میتونه کمک کنه کارهای عجیبی رو انجام بدیم. کارهایی که به نظر خیلی نشدنی میان!
یکی از چیزهایی که انتقالش خیلی سخته، انتقال درده! خیلی سخته یه یکی توضیح بدی چطور درد میکنه! یه مفهوم بیربط دیگه هم هست که به نظر همینقدر سخته: انتقال مهارتهای کار تیمی! تو این TEDx Talk توضیح دادم که چطور یه قسمت از مغزمون به نام Mirror Neurons (که خیلی هم غافلیم ازش) میتونه کمک کنه این کارهای خیلی سخت رو، به حتی بدون صحبت کردن انجام بدیم!
یه قسمت از کلیپ هست که پام با محکککم میخوره به یه صندلی که تو صحنه هست که تو فیلم خیلی واضح نیفتاده. این رو گفتم که اون وسط نگین چی شد یه هو!
لینک ویدئوی کامل در صفحه رسمی تدکس در یوتیوب: https://www.youtube.com/watch?v=DfTuWdPV6JU
در صورت باز نشدن، این ویدئو در آپارات هم آپلود شده.
تو تدکس در مورد نرونهای آینهای صحبت کردم و اینکه چطور این قسمت عجیب از مغز میتونه کمک کنه کارهای عجیبی رو انجام بدیم. کارهایی که به نظر خیلی نشدنی میان!
یکی از چیزهایی که انتقالش خیلی سخته، انتقال درده! خیلی سخته یه یکی توضیح بدی چطور درد میکنه! یه مفهوم بیربط دیگه هم هست که به نظر همینقدر سخته: انتقال مهارتهای کار تیمی! تو این TEDx Talk توضیح دادم که چطور یه قسمت از مغزمون به نام Mirror Neurons (که خیلی هم غافلیم ازش) میتونه کمک کنه این کارهای خیلی سخت رو، به حتی بدون صحبت کردن انجام بدیم!
یه قسمت از کلیپ هست که پام با محکککم میخوره به یه صندلی که تو صحنه هست که تو فیلم خیلی واضح نیفتاده. این رو گفتم که اون وسط نگین چی شد یه هو!
لینک ویدئوی کامل در صفحه رسمی تدکس در یوتیوب: https://www.youtube.com/watch?v=DfTuWdPV6JU
در صورت باز نشدن، این ویدئو در آپارات هم آپلود شده.
YouTube
Mirroring Neurons: A "NEW ME" can change the world! | Mehran Davoudi | TEDxYouth@Tehran
We are living in the most strange country of the world. We have everything to be the best, but still we are not! Far far away, just because of one thing! We have the majority types of mines, majority types of planets and… Lack of "one thing" stops us from…
هفته دیگه 16 ام تا 19 ام کنفرانس Build ماکروسافت هست و برنامه هیجان انگیزی داریم تدارک میبینیم 🎉
پس منتظر خبرای خوب باشید✌️✌️✌️
@IranAspMvc
پس منتظر خبرای خوب باشید✌️✌️✌️
@IranAspMvc
❇️ بررسی قابلیت Endpoint Routing
🔸 مکانیزم مسیریابی به این صورته که ما Route هامون رو توی میدلور MVC توسط متد UseMvc تعریف میکنیم
و زمانی که یه Request به میدلور MVC میرسه، این میدلور بر اساس اطلاعات Url و Route های تعریف شده، اولین Route ایی که همخوانی داشته باشه رو انتخاب میکنه و مقادیر مسیر یابی (RouteValues) رو استخراج میکنه و بدین ترتیب میفهمه که کدوم Controller و Action رو باید فراخوانی کنه
🔹 توی Pipeline چون میدلور ها به صورت ترتیبی اجرا میشن تا زمانی که درخواست ما به میدلور MVC نرسه ما نمیتونیم از RouteValues استفاده کنیم
مشکل جایی پیش میاد که مثلا نیاز داریم واسه وبسایت های چند زبانه که بر اساس Url کار میکنند (مثلا fa/home/index) ما نیاز داریم قبل از رسیدن به میدلور MVC، زبان جاری (همون fa) رو توسط سیستم مسیریابی بخونیم و Culture برنامه رو تغییر بدیم ولی تا زمانی که به میدلور MVC نرسیم این کار امکان پذیر نیست
🔸 یک مثال دیگر آن استفاده از خاصیت EnableCorsAttribute (است که بر خلاف app.UseCors که مکانیزم CORS را به صورت سراسری اعمال میکند) میتوان آن را بر روی یک Action خاص اعمال کرد
از آنجایی که در مکانیزم مسیریابی قبلی، سیستم Routing بسیار وابسته به MVC است ما نمی تونیم قبل از رسیدن به میدلور MVC جلوی درخواست های غیر مجاز رو بگیریم، چرا که به Routing درسترسی نداریم و نمیدونیم کدوم Controller و Action قراره فراخوانی بشه
🔹 توی مکانیزم Endpoint Routing اما، وقتی یه درخواست میاد، همون ابتدا مشخص میشه که به کدوم Route مپ شده درنتیجه بقیه میدلور های قبل از میدلور MVC هم میتونن از سیستم Routing استفاده کرده و اطلاعات داخل Url رو درک کنن
🔸 این قابلیت در ASP Core 2.2 اوایل با نام Dispatcher معرفی شد که بعدا به Endpoint Routing تغییر نام پیدا کرد و به صورت پیشفرض توسط SetCompatibilityVersion ورژن Version_2_2 به بالا فعال میشه
🔹 برای استفاده از Endpoint Routing باید میدلور UseEndpointRouting رو اضافه کنید. کار این midlleware تشخیص Endpoint مورد نظر براساس Url درخواستی و Route های تعریف شده است و پس از آن شما میتوانید از مقادیر مسیریابی (RouteValues) استفاده کنید (حتی قبل از رسیدن به محل تعریف Route ها)
نحوه استفاده از این قابلیت در ASPNET Core 2.2 به صورت زیر است
لینک مقاله در دات نت تیپس:
https://www.dotnettips.info/post/3031
_______________
@IranAspMvc
🔸 مکانیزم مسیریابی به این صورته که ما Route هامون رو توی میدلور MVC توسط متد UseMvc تعریف میکنیم
و زمانی که یه Request به میدلور MVC میرسه، این میدلور بر اساس اطلاعات Url و Route های تعریف شده، اولین Route ایی که همخوانی داشته باشه رو انتخاب میکنه و مقادیر مسیر یابی (RouteValues) رو استخراج میکنه و بدین ترتیب میفهمه که کدوم Controller و Action رو باید فراخوانی کنه
🔹 توی Pipeline چون میدلور ها به صورت ترتیبی اجرا میشن تا زمانی که درخواست ما به میدلور MVC نرسه ما نمیتونیم از RouteValues استفاده کنیم
مشکل جایی پیش میاد که مثلا نیاز داریم واسه وبسایت های چند زبانه که بر اساس Url کار میکنند (مثلا fa/home/index) ما نیاز داریم قبل از رسیدن به میدلور MVC، زبان جاری (همون fa) رو توسط سیستم مسیریابی بخونیم و Culture برنامه رو تغییر بدیم ولی تا زمانی که به میدلور MVC نرسیم این کار امکان پذیر نیست
🔸 یک مثال دیگر آن استفاده از خاصیت EnableCorsAttribute (است که بر خلاف app.UseCors که مکانیزم CORS را به صورت سراسری اعمال میکند) میتوان آن را بر روی یک Action خاص اعمال کرد
از آنجایی که در مکانیزم مسیریابی قبلی، سیستم Routing بسیار وابسته به MVC است ما نمی تونیم قبل از رسیدن به میدلور MVC جلوی درخواست های غیر مجاز رو بگیریم، چرا که به Routing درسترسی نداریم و نمیدونیم کدوم Controller و Action قراره فراخوانی بشه
🔹 توی مکانیزم Endpoint Routing اما، وقتی یه درخواست میاد، همون ابتدا مشخص میشه که به کدوم Route مپ شده درنتیجه بقیه میدلور های قبل از میدلور MVC هم میتونن از سیستم Routing استفاده کرده و اطلاعات داخل Url رو درک کنن
🔸 این قابلیت در ASP Core 2.2 اوایل با نام Dispatcher معرفی شد که بعدا به Endpoint Routing تغییر نام پیدا کرد و به صورت پیشفرض توسط SetCompatibilityVersion ورژن Version_2_2 به بالا فعال میشه
🔹 برای استفاده از Endpoint Routing باید میدلور UseEndpointRouting رو اضافه کنید. کار این midlleware تشخیص Endpoint مورد نظر براساس Url درخواستی و Route های تعریف شده است و پس از آن شما میتوانید از مقادیر مسیریابی (RouteValues) استفاده کنید (حتی قبل از رسیدن به محل تعریف Route ها)
نحوه استفاده از این قابلیت در ASPNET Core 2.2 به صورت زیر است
// ASP.NET Core 2.2نکته : در ASPNET Core 3.0 متد UseEndpointRouting به UseRouting تغییر نام پیدا کرد و نیز تعریف Route (بهتره بگیم Endpoint ها) به شکل زیر تغییر پیدا کرده
public void Configure(IApplicationBuilder app)
{
app.UseEndpointRouting();
app.OtherMiddleware(); // Access to route values
app.UseMvc();
}
// ASP.NET Core 3.0برای غیر فعال کردن قابلیت Endpoint Routing میتوانید توسط MvcOptions.EnableEndpointRouting = false آن را غیرفعال کنید.
public void Configure(IApplicationBuilder app)
{
app.UseRouting();
app.OtherMiddleware();
app.UseEndpoints(endpoints =>
{
// Mapping of endpoints goes here:
endpoints.MapControllers()
endpoints.MapRazorPages()
endpoints.MapHub<MyChatHub>()
endpoints.MapGrpcService<MyCalculatorService>()
});
}
لینک مقاله در دات نت تیپس:
https://www.dotnettips.info/post/3031
_______________
@IranAspMvc