Forwarded from Software Philosophy
مفاهیم Covariance و Contravariance یکی از مباحث مهم در زبانهای برنامهنویسی مدرن محسوب میشود. تسلط بر این مفاهیم به طراحان فریمورکها و پلتفرمها کمک میکند تصمیمهای مناسبتری در طراحی کلاسها داشته باشند.
از آنجایی این مفاهیم انتزاعی هستند، معمولا فهم آنها در وهله اول سخت به نظر میرسد. مقاله زیر با چند مثال قابل لمس این مفاهیم را به زبان سادهتری توضیح داده تا فهم آن لذتبخشتر و آسانتر شود.
http://mehrandvd.me/2016/06/18/covariant-and-contravariant/
#مهران_داودی
لینکدین:
https://ir.linkedin.com/in/mehrandvd
کانال تلگرام:
@SoftwarePhilosophy
___
از آنجایی این مفاهیم انتزاعی هستند، معمولا فهم آنها در وهله اول سخت به نظر میرسد. مقاله زیر با چند مثال قابل لمس این مفاهیم را به زبان سادهتری توضیح داده تا فهم آن لذتبخشتر و آسانتر شود.
http://mehrandvd.me/2016/06/18/covariant-and-contravariant/
#مهران_داودی
لینکدین:
https://ir.linkedin.com/in/mehrandvd
کانال تلگرام:
@SoftwarePhilosophy
___
Forwarded from فلسفه دیزاین
رُک باش، کلیشهها را بشکن
شاید تصور بسیاری از ما این باشد که نوع ادبیات زبان فارسی و مخصوصا فرهنگمان، ما را به این سمت و سو میبرد که بیش از حد مراقب جملات و رفتارمان، هنگام صحبت با همتیمیمان باشیم. اما این مشکلی جهانیست.
برایاینکه مخاطب ما ناراحت نشود مفهوم جملات صریحمان را به طور غیرمستقیم بیان میکنیم. طرف مقابلمان را در رودربایستی و ابهام قرار میدهیم تا شاید کمتر آزرده شود.
ممکن است در کوتاه مدت خودمان را از شرایط سخت مخالفتی، نجات داده باشیم ولی در طولانی مدت اثر مخربی دارد.
به عنوان مثال چیزی که می گوییم:
"مسیری را که انتخاب کردی دوست دارم، ولی فکر می کنم که ما باید بیشتر..."
چیزی که واقعا منظورمان است:
"مسیری را که انتخاب کردی را دوست ندارم"
یک پادگان را در نظر بگیرید. دستورات همیشه منظم، دقیق و بدون ابهام به صورت صریح بیان میشود. اگر آن وظیفه انجام نشود و یا ناقص انجام شود، لااقل خیالمان ازین بابت راحت است که ابهامی در تفهیمِ وظیفهی محوّله نبوده است و باید جایی دیگر، عیبیابی شود.
فضای دیزاینری هم مستثنی از صداقت و صراحت نباید باشد. چون در آخر نتیجهای جز بیراهگی، هزینههای گزاف و روابط بد اعضای تیم نخواهد داشت.
در دو مقالهی زیر با جزئیات بیشتر این شرایط نامفهوم و کلیشههایی که عادتمان شده است و خودمان از آنها بیخبریم آشنا میشویم و به تاثیرات مخرب آن پی میبریم:
۱- http://bit.ly/dxgn485-1
۲- http://bit.ly/dxgn485-2
(زمان حدودی مطالعه، ۱۰ دقیقه)
نویسنده: حسین میرزاده
#صداقت #کلیشه #محیط_کار
@Dexign فلسفه دیزاین
ــــــــ
شاید تصور بسیاری از ما این باشد که نوع ادبیات زبان فارسی و مخصوصا فرهنگمان، ما را به این سمت و سو میبرد که بیش از حد مراقب جملات و رفتارمان، هنگام صحبت با همتیمیمان باشیم. اما این مشکلی جهانیست.
برایاینکه مخاطب ما ناراحت نشود مفهوم جملات صریحمان را به طور غیرمستقیم بیان میکنیم. طرف مقابلمان را در رودربایستی و ابهام قرار میدهیم تا شاید کمتر آزرده شود.
ممکن است در کوتاه مدت خودمان را از شرایط سخت مخالفتی، نجات داده باشیم ولی در طولانی مدت اثر مخربی دارد.
به عنوان مثال چیزی که می گوییم:
"مسیری را که انتخاب کردی دوست دارم، ولی فکر می کنم که ما باید بیشتر..."
چیزی که واقعا منظورمان است:
"مسیری را که انتخاب کردی را دوست ندارم"
یک پادگان را در نظر بگیرید. دستورات همیشه منظم، دقیق و بدون ابهام به صورت صریح بیان میشود. اگر آن وظیفه انجام نشود و یا ناقص انجام شود، لااقل خیالمان ازین بابت راحت است که ابهامی در تفهیمِ وظیفهی محوّله نبوده است و باید جایی دیگر، عیبیابی شود.
فضای دیزاینری هم مستثنی از صداقت و صراحت نباید باشد. چون در آخر نتیجهای جز بیراهگی، هزینههای گزاف و روابط بد اعضای تیم نخواهد داشت.
در دو مقالهی زیر با جزئیات بیشتر این شرایط نامفهوم و کلیشههایی که عادتمان شده است و خودمان از آنها بیخبریم آشنا میشویم و به تاثیرات مخرب آن پی میبریم:
۱- http://bit.ly/dxgn485-1
۲- http://bit.ly/dxgn485-2
(زمان حدودی مطالعه، ۱۰ دقیقه)
نویسنده: حسین میرزاده
#صداقت #کلیشه #محیط_کار
@Dexign فلسفه دیزاین
ــــــــ
Medium
The lies we tell ourselves as designers
Or “beware of euphemisms.”
و اینک ۹ نکته پرفورمنسی برای Azure App Service
سرویس Azure App Service مهمترین سرویس Azure برای هاستینگ اپلیکیشنها است که امکانات scaling زیادی دارد. هر App Service جلوی خود یک Load Balancer دارد تا بتواند ترافیک را پخش و بالانس کند.
در مقاله زیر از Telerik، اسکات آلن ۹ نکته پرفورمنسی برای کار با App Service را توضیح داده که کمک میکنند اصطلاحا Even Faster شوید!!!
ما در «ملکرادار» دو تا از این تنظیمات رو انجام نداده بودیم که در حال بررسی هستیم تا اونها رو هم فعال کنیم.
https://www.telerik.com/blogs/nine-performance-tips-for-azure-app-services
#مهران_داودی (http://ow.ly/GwIl309lFEm)
کانال تلگرام:
@SoftwarePhilosophy
___
سرویس Azure App Service مهمترین سرویس Azure برای هاستینگ اپلیکیشنها است که امکانات scaling زیادی دارد. هر App Service جلوی خود یک Load Balancer دارد تا بتواند ترافیک را پخش و بالانس کند.
در مقاله زیر از Telerik، اسکات آلن ۹ نکته پرفورمنسی برای کار با App Service را توضیح داده که کمک میکنند اصطلاحا Even Faster شوید!!!
ما در «ملکرادار» دو تا از این تنظیمات رو انجام نداده بودیم که در حال بررسی هستیم تا اونها رو هم فعال کنیم.
https://www.telerik.com/blogs/nine-performance-tips-for-azure-app-services
#مهران_داودی (http://ow.ly/GwIl309lFEm)
کانال تلگرام:
@SoftwarePhilosophy
___
Telerik Blogs
Nine Performance Tips for Azure App Services
Squeezing every bit of performance from your application hosted in Azure App Services will help you save money and keep your customers happy.
Forwarded from DotNetZoom (محمد جواد ابراهیمی)
❇️ بررسی قابلیت 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
#پست_مجدد این پست تا به حال بیش از ۳۲۰۰ بار مشاهده شده و به نظر میرسد برای خوانندگان جدید کانال جذاب باشد
Forwarded from Software Philosophy
همیشه هر چیز خوبی، میتواند بد استفاده شود و نتیجه عکس دهد. این قضیه در مورد تکنولوژی هم صادق است. مقاله زیر توضیح میدهد که چه عادتهای اشتباهی هنگام کار با LINQ میتواند شما را به اشتباه بیندازد و باعث ایجاد کد بد شود.
یکی از خطرناکترین ویژگیهای LINQ این است که وقتی با آن کار میکنید احساس میکنید خیلی باهوشید که غالبا باعث میشود کد احمقانه و پیچیدهای با آن بنویسید. فهمیدن مفهوم Provider ها نیز مسئله مهمی است که باید با آن آشنا باشید.
مقاله زیر این نکات را شرح میدهد.
http://mehrandvd.me/2016/03/28/linq-the-bad-parts/
#مهران_داودی
لینکدین:
https://ir.linkedin.com/in/mehrandvd
کانال تلگرام:
@SoftwarePhilisophy
___
یکی از خطرناکترین ویژگیهای LINQ این است که وقتی با آن کار میکنید احساس میکنید خیلی باهوشید که غالبا باعث میشود کد احمقانه و پیچیدهای با آن بنویسید. فهمیدن مفهوم Provider ها نیز مسئله مهمی است که باید با آن آشنا باشید.
مقاله زیر این نکات را شرح میدهد.
http://mehrandvd.me/2016/03/28/linq-the-bad-parts/
#مهران_داودی
لینکدین:
https://ir.linkedin.com/in/mehrandvd
کانال تلگرام:
@SoftwarePhilisophy
___
#پست_مجدد این پست تا به حال بیش از ۱۳۰۰ بار مشاهده شده و به نظر میرسد برای خوانندگان جدید کانال جذاب باشد
Forwarded from Software Philosophy
در معماری نرم افزار گاهی نیاز است الگوهایی که دارای بیشترین قابلیت تست و همچنین نسبت به تغییرات خارجی دچار کمترین تغییرات هستند مورد استفاده قرار بگیرند . معماری Hexagonal(یا Ports and Adapter) یکی از این الگوهاست که مکانیزمهایی را برای تحقق این هدف بر مبنای تفکر DDD بیان میکند . لینک زیر در خصوص این معماری توضیحات مناسبی را ارائه میدهد :
https://blog.ndepend.com/hexagonal-architecture/
#شهریار_انتظام (http://ow.ly/qDN430nPiCg)
کانال تلگرام:
@SoftwarePhilosophy
___
https://blog.ndepend.com/hexagonal-architecture/
#شهریار_انتظام (http://ow.ly/qDN430nPiCg)
کانال تلگرام:
@SoftwarePhilosophy
___
NDepend Blog
Hexagonal Architecture: What Is It and How Does It Work? - NDepend Blog
Hexagonal architecture is a pattern for making better software. Learn how it works, including an explanation and examples.
Forwarded from فلسفه دیزاین
روشهایی برای مفیدتر بودن
آیا تا بهحال برایتان این اتفاق افتاده است که یک هفتهی مداوم روی یک ایده کار کنید و نتیجه خوبی نگیرید؟ و برعکس تنها با یک روز کار روی ایدهای دیگر نتیجه فوقالعادهای بگیرید؟ در چه زمان بیشترین بهرهوری را در کار خود داشتهاید؟
وقتی صحبت از افزایش بازدهی است اغلب اینگونه تصور میشود که باید بیشتر کار کنیم تا بتوانیم بازدهی بیشتری داشته باشیم. اما بر خلاف این تصور عمومی تعداد ساعت بیشتر کار کردن معیار مناسبی برای سنجش عملکرد ما نیست. همه میدانیم که ساعات محدودی در طول روز در اختیار ما است؛ با این وجود استراتژیهای متعددی برای بیشترین استفاده مفید از همین زمان محدود وجود دارد. رمز موفقیت تنها سخت کارکردن نیست بلکه هوشمندانه عملکردن است و هوشمندانه عملکردن یعنیاینکه باید در کنار کارکردن زمانی برای فراغت نیز به خودمان بدهیم.
تجربه ثابت کردهاست که در اغلب اوقات ما راهحلها را زمانی پیدا میکنیم که دقیقا در حال جستجوی روی آن موضوع نبودهایم. این مهم است که بدانیم بهرهوری ما یک روزه افزایش پیدا نمیکند و نیاز به سعی و تلاش دارد. برای رسیدن به موفقیت بیشتر و زندگی شادتر باید به خودمان زمان بدهیم و پتانسیلهای خود را بشناسیم تا براساس آن راهکارهای عملی برای بهبود بهرهوری و بالابردن سطح انرژی و زمان خود پیدا کنیم .
پس برای آشنایی بیشتر با چگونگی افزایش بازدهی و بهرهوری مقاله امروز را از دست ندهید.
https://medium.com/s/story/7-things-you-need-to-stop-doing-to-be-more-productive-backed-by-science-a988c17383a6
(زمان حدودی مطالعه، ۱۱ دقیقه)
نویسنده: نیما حکیمرابط
#اصول #بازدهی #بهرهوری
@Dexign فلسفه دیزاین
______
آیا تا بهحال برایتان این اتفاق افتاده است که یک هفتهی مداوم روی یک ایده کار کنید و نتیجه خوبی نگیرید؟ و برعکس تنها با یک روز کار روی ایدهای دیگر نتیجه فوقالعادهای بگیرید؟ در چه زمان بیشترین بهرهوری را در کار خود داشتهاید؟
وقتی صحبت از افزایش بازدهی است اغلب اینگونه تصور میشود که باید بیشتر کار کنیم تا بتوانیم بازدهی بیشتری داشته باشیم. اما بر خلاف این تصور عمومی تعداد ساعت بیشتر کار کردن معیار مناسبی برای سنجش عملکرد ما نیست. همه میدانیم که ساعات محدودی در طول روز در اختیار ما است؛ با این وجود استراتژیهای متعددی برای بیشترین استفاده مفید از همین زمان محدود وجود دارد. رمز موفقیت تنها سخت کارکردن نیست بلکه هوشمندانه عملکردن است و هوشمندانه عملکردن یعنیاینکه باید در کنار کارکردن زمانی برای فراغت نیز به خودمان بدهیم.
تجربه ثابت کردهاست که در اغلب اوقات ما راهحلها را زمانی پیدا میکنیم که دقیقا در حال جستجوی روی آن موضوع نبودهایم. این مهم است که بدانیم بهرهوری ما یک روزه افزایش پیدا نمیکند و نیاز به سعی و تلاش دارد. برای رسیدن به موفقیت بیشتر و زندگی شادتر باید به خودمان زمان بدهیم و پتانسیلهای خود را بشناسیم تا براساس آن راهکارهای عملی برای بهبود بهرهوری و بالابردن سطح انرژی و زمان خود پیدا کنیم .
پس برای آشنایی بیشتر با چگونگی افزایش بازدهی و بهرهوری مقاله امروز را از دست ندهید.
https://medium.com/s/story/7-things-you-need-to-stop-doing-to-be-more-productive-backed-by-science-a988c17383a6
(زمان حدودی مطالعه، ۱۱ دقیقه)
نویسنده: نیما حکیمرابط
#اصول #بازدهی #بهرهوری
@Dexign فلسفه دیزاین
______
Medium
7 Things You Need To Stop Doing To Be More Productive, Backed By Science
Work Hard, Work Smart
#پست_مجدد این پست تا به حال بیش از ۴۱۰۰ بار مشاهده شده و به نظر میرسد برای خوانندگان جدید کانال جذاب باشد
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/
⁉️ برای بحث و تبادل نظر فنی در مورد این پست، بر روی لینک زیر کلیک کنید:
http://ow.ly/Pnh030ouEX5
#مهران_داودی (http://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/
⁉️ برای بحث و تبادل نظر فنی در مورد این پست، بر روی لینک زیر کلیک کنید:
http://ow.ly/Pnh030ouEX5
#مهران_داودی (http://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…
“طراحی پایگاه داده تکاملی” عنوان مقاله ایست که مارتین فاولر و پرمید سادلچ با بررسی این رویکرد که "معماری سیستم باید از طریق تکرارهای مختلف نرم افزار تکامل یابد" نوشته شده است .
نحوه تعامل بین DBA ها و برنامه نویسان، استفاده از ورژن کنترلها، Database refactoring و .... همگی در این مقاله مورد بررسی قرار گرفتهاند :
https://www.martinfowler.com/articles/evodb.html
#شهریار_انتظام (http://ow.ly/qDN430nPiCg)
کانال تلگرام:
@SoftwarePhilosophy
___
نحوه تعامل بین DBA ها و برنامه نویسان، استفاده از ورژن کنترلها، Database refactoring و .... همگی در این مقاله مورد بررسی قرار گرفتهاند :
https://www.martinfowler.com/articles/evodb.html
#شهریار_انتظام (http://ow.ly/qDN430nPiCg)
کانال تلگرام:
@SoftwarePhilosophy
___
martinfowler.com
Evolutionary Database Design
Techniques to allow you to evolve the schema and contents of a production database
Forwarded from DotNetZoom (محمد جواد ابراهیمی)
🔰 #آیا_میدانستید
توی کنسول مروگر میتونین با دستور console.table، آرایه ها و لیست ها تون رو به صورت جدولی نشون بدین؟
مثال های بیشتر:
https://www.telerik.com/blogs/better-visualization-of-console-data-with-tables
__________
@IranAspMvc
توی کنسول مروگر میتونین با دستور console.table، آرایه ها و لیست ها تون رو به صورت جدولی نشون بدین؟
var exampleArray = [
"First item in the array",
"I'm the second item in this array",
"Obviously i'm the last item"
];
console.table(exampleArray);
مثال های بیشتر:
https://www.telerik.com/blogs/better-visualization-of-console-data-with-tables
__________
@IranAspMvc
#پست_مجدد این پست تا به حال بیش از ۴۳۰۰ بار مشاهده شده و به نظر میرسد برای خوانندگان جدید کانال جذاب باشد
Forwarded from Software Philosophy
چطور برنامهنویسی موازی را برای مادربزرگتان توضیح دهید!؟
برنامه نویسی موازی (Parallel Programming) و برنامه نویسی ناهمگام (Asynchronous Programming) مفاهیم نسبتا جدیدی در دنیای برنامهنویسی هستند که برای اغلب برنامهنویسان جدید است. همه در مورد آن شنیدهانم ولی اغلب واضح نیست که دقیقا چیست و چرا سخت است. یک مفهوم پایه برای درک این مفاهیم پایه Thread یا نخ است. نخها مفاهیمی هستند که وظیفه انجام کارها روی CPU را دارند. در دنیای ما انسانها کسانی هستند که کار انجام میدهند. مقاله زیر مفهوم «نخ» را به «انسان» شبیه دیدهاست و سعی کردهاست مفاهیم پیچیده دنیای برنامهنویسی را با مفاهیم ساده دنیای ما انسانها توضیح دهد.
http://mehrandvd.me/2016/04/18/parallel-programming-grandmother/
#مهران_داودی
لینکدین:
https://ir.linkedin.com/in/mehrandvd
کانال تلگرام:
@SoftwarePhilisophy
___
برنامه نویسی موازی (Parallel Programming) و برنامه نویسی ناهمگام (Asynchronous Programming) مفاهیم نسبتا جدیدی در دنیای برنامهنویسی هستند که برای اغلب برنامهنویسان جدید است. همه در مورد آن شنیدهانم ولی اغلب واضح نیست که دقیقا چیست و چرا سخت است. یک مفهوم پایه برای درک این مفاهیم پایه Thread یا نخ است. نخها مفاهیمی هستند که وظیفه انجام کارها روی CPU را دارند. در دنیای ما انسانها کسانی هستند که کار انجام میدهند. مقاله زیر مفهوم «نخ» را به «انسان» شبیه دیدهاست و سعی کردهاست مفاهیم پیچیده دنیای برنامهنویسی را با مفاهیم ساده دنیای ما انسانها توضیح دهد.
http://mehrandvd.me/2016/04/18/parallel-programming-grandmother/
#مهران_داودی
لینکدین:
https://ir.linkedin.com/in/mehrandvd
کانال تلگرام:
@SoftwarePhilisophy
___
Forwarded from فلسفه دیزاین
«پراگرسیو وباپ» یا PWA چیست؟
تکنولوژی PWA یا Progressive Web Apps یکی از پرطرفدارترین تغییرات تکنولوژی در وب است که در دنیای تکنولوژی وب برای خود امپراتوری بینظیری بوجود آورده است. این موضوع تعجب آور نیست زیرا پراگرسیو وب اپها توانستهاند رویای نصب تعداد زیادی برنامه بر روی گوشی کاربران را متصور سازند.
عبارت PWA اصطلاحی است که برای نشان دادن یک روش جدید توسعه نرمافزارها استفاده میشود. در این روش تلاش توسعه دهندگان در جهت ترکیب ویژگیهای مرورگرهای مدرن با مزایای استفاده از تلفن همراه میباشد. پراگرسیو وب اپها بر خلاف برنامههای سنتی، ترکیبی از صفحات وب و یک برنامه تلفن همراه میباشند.
از یک پراگرسیو وب اپ میتوان بهعنوان یک صفحه وب معمولی در یک مرورگر استفاده نمود و یا اگر کاربر تمایل داشته باشد میتواند با اضافه کردن کلید میانبر آن پراگرسیو وباپ به صفحه اصلی گوشی خود از آن استفاده نماید. در این حالت حتی میتوان کنترلهای UI مرورگر را پنهان کرده و برای کاربر حس تجربه کار با یک برنامه مستقل را ایجاد نمود.
از زمان معرفی PWAها، شرکتهای زیادی در استفاده از آنها پیش قدم شدهاند. مثلا توییتر PWA را بکار برد تا بتواند با بهره گیری از امکانات آن نسخه پیشفرض دسکتاپ خود را بازطراحی کند.
پراگرسیو وب اپها به دو دسته کلی ذیل تقسیم میشوند:
۱- وب سایتهایی که مانند اپلیکیشنها رفتار میکنند.
۲- اپلیکیشنهایی که تحت فضای وب هستند.
بر اساس توضیحات گوگل، انواع پراگرسیو وب اپها دارای ویژگیهای مشترکی نظیر قابلاطمینانبودن (Reliable)، سرعت عملداشتن (Fast) و ترغیبکنندگی (Engaging) هستند. بطور کلی تمرکز همه پراگرسیو وباپها بر کاربرد آسانتر برنامه و حذف هرگونه اصطکاکی است که جلوی سریعتر رسیدن کاربران به آنچه از برنامه میخواهند را میگیرد. ایده PWA موفق به پرکردن شکاف میان فضای وب و اپلیکیشنها شدهاست. با توجه به روشنبودن آینده پیشروی PWA و مزیتهای کاربردی آن، بنظر میرسد تمرکز بر ایننوع از برنامهها یکی از مباحث جذاب مورد توجه طراحان و توسعه دهندهگان دنیای وب میباشد.
نویسنده مقاله امروز که مطالعه آن را به شما پیشنهاد میکنم، به توضیح مفهوم Progressive Web App پرداخته و ویژگیهای آن را بررسی میکند.
مقاله امروز را از دست ندهید:
https://www.invisionapp.com/inside-design/whats-a-pwa/
(زمان حدودی مطالعه، ۱۱ دقیقه)
نویسنده: نیما حکیم رابط
#معرفی_مفاهیم #تکنولوژی #PWA
@Dexign فلسفه دیزاین
ـــــــــ
تکنولوژی PWA یا Progressive Web Apps یکی از پرطرفدارترین تغییرات تکنولوژی در وب است که در دنیای تکنولوژی وب برای خود امپراتوری بینظیری بوجود آورده است. این موضوع تعجب آور نیست زیرا پراگرسیو وب اپها توانستهاند رویای نصب تعداد زیادی برنامه بر روی گوشی کاربران را متصور سازند.
عبارت PWA اصطلاحی است که برای نشان دادن یک روش جدید توسعه نرمافزارها استفاده میشود. در این روش تلاش توسعه دهندگان در جهت ترکیب ویژگیهای مرورگرهای مدرن با مزایای استفاده از تلفن همراه میباشد. پراگرسیو وب اپها بر خلاف برنامههای سنتی، ترکیبی از صفحات وب و یک برنامه تلفن همراه میباشند.
از یک پراگرسیو وب اپ میتوان بهعنوان یک صفحه وب معمولی در یک مرورگر استفاده نمود و یا اگر کاربر تمایل داشته باشد میتواند با اضافه کردن کلید میانبر آن پراگرسیو وباپ به صفحه اصلی گوشی خود از آن استفاده نماید. در این حالت حتی میتوان کنترلهای UI مرورگر را پنهان کرده و برای کاربر حس تجربه کار با یک برنامه مستقل را ایجاد نمود.
از زمان معرفی PWAها، شرکتهای زیادی در استفاده از آنها پیش قدم شدهاند. مثلا توییتر PWA را بکار برد تا بتواند با بهره گیری از امکانات آن نسخه پیشفرض دسکتاپ خود را بازطراحی کند.
پراگرسیو وب اپها به دو دسته کلی ذیل تقسیم میشوند:
۱- وب سایتهایی که مانند اپلیکیشنها رفتار میکنند.
۲- اپلیکیشنهایی که تحت فضای وب هستند.
بر اساس توضیحات گوگل، انواع پراگرسیو وب اپها دارای ویژگیهای مشترکی نظیر قابلاطمینانبودن (Reliable)، سرعت عملداشتن (Fast) و ترغیبکنندگی (Engaging) هستند. بطور کلی تمرکز همه پراگرسیو وباپها بر کاربرد آسانتر برنامه و حذف هرگونه اصطکاکی است که جلوی سریعتر رسیدن کاربران به آنچه از برنامه میخواهند را میگیرد. ایده PWA موفق به پرکردن شکاف میان فضای وب و اپلیکیشنها شدهاست. با توجه به روشنبودن آینده پیشروی PWA و مزیتهای کاربردی آن، بنظر میرسد تمرکز بر ایننوع از برنامهها یکی از مباحث جذاب مورد توجه طراحان و توسعه دهندهگان دنیای وب میباشد.
نویسنده مقاله امروز که مطالعه آن را به شما پیشنهاد میکنم، به توضیح مفهوم Progressive Web App پرداخته و ویژگیهای آن را بررسی میکند.
مقاله امروز را از دست ندهید:
https://www.invisionapp.com/inside-design/whats-a-pwa/
(زمان حدودی مطالعه، ۱۱ دقیقه)
نویسنده: نیما حکیم رابط
#معرفی_مفاهیم #تکنولوژی #PWA
@Dexign فلسفه دیزاین
ـــــــــ
Invisionapp
What’s a progressive web app, and why should designers care? | Inside Design Blog
Web and app designers, it's time to meet PWAs, or progressive web apps: where your jobs combine.
#پست_مجدد این پست تا به حال بیش از ۵۴۰۰ بار مشاهده شده و به نظر میرسد برای خوانندگان جدید کانال جذاب باشد.
Forwarded from Software Philosophy
تجربه کاربری یا UX یکی از مفاهیمی است که تاثیر زیادی در محبوب شدن یک محصول دارد. مفهوم DX یا Developer Experience نیز مفهوم جدیدی است که تجربه یک برنامهنویس هنگام استفاده از یک پلتفرم یا فریمورک را بررسی میکند. چرا یک پلتفرم یا فریمورک محبوب میشود و دیگری نه؟ این سوالی است که عوامل زیادی در پاسخ دادن به آن موثر هستند. اینکه یک برنامه نویس هنگام کار با آن پلتفرم چه تجربهای احساس میکند یکی از عوامل مهم موفقیت یک پلتفرم است. در مقاله زیر مفهوم جدیدی به نام Dotability معرفی شده که میتوان به وسیله آن کتابخانهها و فریمورکهای مختلف را از لحاظ DX بررسی کرد.
http://mehrandvd.me/2016/05/31/developer-experience-dotability/
http://mehrandvd.me/2016/05/31/developer-experience-dotability/
#مهران_داودی
لینکدین:
https://ir.linkedin.com/in/mehrandvd
کانال تلگرام:
@SoftwarePhilosophy
___
http://mehrandvd.me/2016/05/31/developer-experience-dotability/
http://mehrandvd.me/2016/05/31/developer-experience-dotability/
#مهران_داودی
لینکدین:
https://ir.linkedin.com/in/mehrandvd
کانال تلگرام:
@SoftwarePhilosophy
___
Dot Philosophy
Developer Experience: Dotability - Dot Philosophy
Again, this famous 'X', as in UX. It's all about experience. The good experience is the key that makes a product valuable. We are always talking about user experience, but here in this post, I am going to talk about developer experience. As a developer, you…
این روزها بحث انتخاب بین ریاکت و انگولار داغ است هر کدام از آنها امکاناتی دارند که دیگری فاقد آنها است.
ریاکت یک کتابخانه است که توسط فیسبوک معرفی شده است ولی انگولار مجموعهای از کتابخانههاست که با هم کار میکنند.
در این مقاله نحوه انتخاب بین این دو و موجی که اخیرا در جهت استفاده از ریاکت ایجاد شده است بررسی شده است.
https://itnext.io/is-angular-dying-because-of-react-a8e885f09421
#مریم_کمالی (http://ow.ly/9Wa430mFGeK)
کانال تلگرام:
@SoftwarePhilosophy
___
ریاکت یک کتابخانه است که توسط فیسبوک معرفی شده است ولی انگولار مجموعهای از کتابخانههاست که با هم کار میکنند.
در این مقاله نحوه انتخاب بین این دو و موجی که اخیرا در جهت استفاده از ریاکت ایجاد شده است بررسی شده است.
https://itnext.io/is-angular-dying-because-of-react-a8e885f09421
#مریم_کمالی (http://ow.ly/9Wa430mFGeK)
کانال تلگرام:
@SoftwarePhilosophy
___
Medium
Is Angular dying because of React?
What’s happening with the future of web development
Forwarded from Software Philosophy
توسعه دهندگان در ارتباط با APIها همیشه با چالشهایی رودرو بودهاند مانند:
-Multiple Endpoints
- Over-fetching/Under-fetching Data
- API Versioning
این مشکلات باعث شد تا برخی متخصصین به دنبال روشهایی برای کاهش این چالشها باشند . GraphQL یکی از این راهکارهاست که در سال 2012 توسط facebook ارائه شد.
از نکات مهم این است که یک پرس و جو را به API خود ارسال کنید و دقیقا همان چیزی که نیاز دارید را دریافت کنید ، نه اطلاعات اضافه را که هر API ممکن است در خروجی خود ارسال کند. لینک زیر یک فیلم با عنوان: "Moving Existing "API From REST To GraphQL است که نگاه جالبی نسبت به موضوع دارد:
https://www.youtube.com/watch?v=broQmxQAMjM
#شهریار_انتظام (http://ow.ly/qDN430nPiCg)
کانال تلگرام:
@SoftwarePhilosophy
___
-Multiple Endpoints
- Over-fetching/Under-fetching Data
- API Versioning
این مشکلات باعث شد تا برخی متخصصین به دنبال روشهایی برای کاهش این چالشها باشند . GraphQL یکی از این راهکارهاست که در سال 2012 توسط facebook ارائه شد.
از نکات مهم این است که یک پرس و جو را به API خود ارسال کنید و دقیقا همان چیزی که نیاز دارید را دریافت کنید ، نه اطلاعات اضافه را که هر API ممکن است در خروجی خود ارسال کند. لینک زیر یک فیلم با عنوان: "Moving Existing "API From REST To GraphQL است که نگاه جالبی نسبت به موضوع دارد:
https://www.youtube.com/watch?v=broQmxQAMjM
#شهریار_انتظام (http://ow.ly/qDN430nPiCg)
کانال تلگرام:
@SoftwarePhilosophy
___
Forwarded from DotNetZoom (محمد جواد ابراهیمی)
✅ معرفی Windows Terminal
مایکروسافت در روز اول کنفرانس Build 2019 از برنامه ای به نام Windows Terminal پرده برداری کرد.
این برنامه، یک ترمینال مرکزی برای دسترسی به PowerShell و Cmd و WSL (کرنل Linux در Windows) است.
این برنامه گرافیک بهتری دارد و دارای قابلیت Multiple Tab - Theming and Styling - Emoji and GPU text-rendering - Syntax Highlight می باشد.
ویدیوی دموی برنامه (حتما ببینین) :
https://aka.ms/terminal-video
اطلاعات بیشتر :
https://devblogs.microsoft.com/commandline/introducing-windows-terminal/
مخزن پروژه در گیتهاب :
https://github.com/Microsoft/Terminal
_______________
@IranAspMvc
مایکروسافت در روز اول کنفرانس Build 2019 از برنامه ای به نام Windows Terminal پرده برداری کرد.
این برنامه، یک ترمینال مرکزی برای دسترسی به PowerShell و Cmd و WSL (کرنل Linux در Windows) است.
این برنامه گرافیک بهتری دارد و دارای قابلیت Multiple Tab - Theming and Styling - Emoji and GPU text-rendering - Syntax Highlight می باشد.
ویدیوی دموی برنامه (حتما ببینین) :
https://aka.ms/terminal-video
اطلاعات بیشتر :
https://devblogs.microsoft.com/commandline/introducing-windows-terminal/
مخزن پروژه در گیتهاب :
https://github.com/Microsoft/Terminal
_______________
@IranAspMvc