Software Philosophy
3.45K subscribers
160 photos
41 videos
1.54K links
چکیده‌ای از مفاهیم به روز مهندسی نرم افزار برای مهندسین نرم‌افزار.
معماری نوین نرم‌افزار، تکنولوژی‌های برنامه نویسی جدید
Download Telegram
❇️ یادش بخیر روزی که تلگرام فیلتر شد.
🔆 گفتیم می‌مانیم و ماندید، بیشتر هم شدیم.
Forwarded from Software Philosophy
مقایسه ایران با مایکروسافت ۱۰ سال پیش! تلگرام را فیلتر کنیم؟

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

مشکل ما با بستری است که مردم در آن با یک #تکرار_می‌کنم رئیس جمهورشان را انتخاب کرده‌اند. مشکل اصلی ما این است که اگر مردم بتوانند در یک شبکه باز صحبت کنند چه کنیم؟ اگر در گروه‌ها یا کانال‌هایی عضو شوند که ما دوست نداریم چه کنیم؟ مشکل ما با طرز فکر مردم است که نمی‌توانیم آن را تحمل کنیم، پس ترجیح می‌دهیم آن را نبینیم! با فیلتر کردن هم این طرز فکر عوض نمی‌شود فقط تا مدتی دیده نمی‌شود.

از این لحاظ رویکرد ما خیلی شبیه مایکروسافت ۱۰ سال پیش است. مایکروسافتی که با دنیای open-source مخالف بود و سعی در نادیده گرفتن آن داشت تا جایی که به مرز حذف از بازار برنامه‌نویسی رسید. ولی آنها فهمیدند، خود را تغییر دادند، اوپن‌سورس بودن را درک کردند. به جای مقابله با آن شروع به استفاده از مزایای آن کردند و اکنون فعال‌ترین open-souce community در github هستند. و آرام آرام در حال بازگشت به بازار.

اگر تلگرام را تهدید می‌بینیم، به خاطر این است که «باز بودن« یا «open-source بودن» را تهدید می‌بینیم و باید به حال آن فکری کنیم. با فیلتر کردن ابزار، این طرز فکر از بین نمی‌رود، فقط تبدیل به حالت جنگجویانه‌ترش می‌شود و فیلتر کننده را از بین می‌برد.

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

اعتماد خود و بقیه را نمی‌توان با بسته نگه داشتن به دست آورد. باید در شفاف بودن و باز بودن ابتکار داشته باشیم تا اعتماد خلق کنیم. اگر بزرگ فکر نکنیم، کوچک می‌شویم. اگر کوچک فکر کنیم، بعد از مدتی وجود نخواهیم داشت.

نکته بعدی تکنولوژی blockchain است. قبل از آنکه باز هم دیر شود باید از الان روی آن کار کنیم. به جای اینکه از آن بترسیم باید آن را یاد بگیریم و از آن استفاده کنیم. من از آقای کورنگی، مدیرعامل MAPS متشکرم که سال پیش من را با این مفهوم آشنا کردند و باعث شدند مطالعاتی را در این زمینه شروع کنم. معتقدم باید از قدرت آینده‌بینی و آینده‌نگاری افرادی مثل ایشان نهایت استفاده را ببریم.

https://mehrandvd.me

⁉️ برای بحث و تبادل نظر فنی در مورد این پست، بر روی لینک زیر کلیک کنید:

https://ow.ly/wJ6i30jn1B4

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

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


___
در معماری نرم افزار گاهی نیاز است الگوهایی که دارای بیشترین قابلیت تست و همچنین نسبت به تغییرات خارجی دچار کمترین تغییرات هستند مورد استفاده قرار بگیرند . معماری Hexagonal(یا Ports and Adapter) یکی از این الگوهاست که مکانیزم‌هایی را برای تحقق این هدف بر مبنای تفکر DDD بیان می‌کند . لینک زیر در خصوص این معماری توضیحات مناسبی را ارائه می‌دهد :

https://blog.ndepend.com/hexagonal-architecture/

#شهریار_انتظام (https://ow.ly/qDN430nPiCg)

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

___
Forwarded from Iran Agile
🧩 داستانهای تحول چابک: این بار مایکروسافت.

چابکی برای پنج سال یک انقلاب پایین به بالا در مایکروسافت بود، ولی با اضافه شدن نادلا بعنوان مدیر عامل، این حرکت به طور کامل از بالا مورد حمایت قرار گرفت.

https://bit.ly/2JHhMYR

@iranagile
Forwarded from DotNetZoom (محمد جواد ابراهیمی)
🔰بررسی تغییرات جدید ASP.NET Core 3.0 Preview 3.0

🔸بهبود های Razor Components
قابلیت Razor Components این امکان رو بهمون میده که کامپوننت های UI سمت کاربر رو در سمت سرور بنویسیم توی پیش نمایش قبلی هم توی همین کانال در موردش صحبت کردیم. کلا چیز خیلی باحالیه و ظاهرا آینده خوبی داره؛ ماکروسافتم حسابی پشتش رو گرفته

توی این ورژن بهبود هایی در موردش انجام شده که مهمترین اونا :
1- قالب پیشفرض پروژه های Razor Component قبلا شامل 2تا پروژه توی یه سلوشن بود که الان شده یک پروژه که روی ASP Core هاست شده فقط

2-پسوند فایل های Razor Component قبلا .cshtml بود ولی الان شده .razor (درسته که توی هردوشون با Razor کد مینویسیم ولی کامپایلشون متفاوته). البته الان هم میشه با کانفیگ به حالت قبل برش گردوند

3- یکپارچه سازی Razor Component ها با قابلیت Endpoint Routing که خب بحثت مفصله

4- طرز رندر شدن Razor Component ها به این صورت که اول محتوای اون کامپوننت سمت سرور رندر میشه و به صورت html به مروگر کلاینت ارسال میشه. بعد اتصال SignalR برقرار میشه و محتوای اون رو بروزرسانی و interactive (قابل تعامل) میکنه
خوبی این روش اینه که اولا این کامپیوننت ها برای کاربرانی با سرعت کم سریع تر لود میشه و دوما چون کامپوننت ها به صورت html ایی رندر میشن، عملا توسط موتور های جستجو مثل گوگل قابل Crawrl و ایندکس گذاری میشن. دقیقا اون مشکل Server Side Redering که برای فریمورک های SPA هست رو برطرف کرده

5- امکان اضافه کردن و استفاده از Razor Component ها درون Razor Class Library ها

6- بهبود امکان Event Handling در Razor Component ها
توسط نوع EventCallback میتونین واسه Razor Component هاتون event های سمت سروری رو هندل کنین. مثلا یه button سمت کلاینت ایجاد کنین که onClick اش، یه متد سمت سروری رو صدا میزنه. تازه هم از متد های sync معمولی و هم از متد های async پشتیبانی میکنه
نمونه کدش رو پیشنهاد میکنم از لینک خود ماکروسافت ببینین

7- امکان اعتبار سنجی سمت کلاینت و سرور در Razor Component ها
توسط این امکان میتونین اعتبار سنجی هاتون رو بر اساس Data Annotation ها، هم سمت سرور و هم سمت کلاینت انجام بدین
بازم بهتره نمونه کدش رو توی لینک ماکروسافت ببینین

🔹امکان Runtime compilation
در راستای ایجاد یک framework مشترک برای ASP NET Core چندتا از پکیج ها حذف شدن از جمله (EF Core - Newtonsoft.Json و Roslyn) در نتیجه امکان Runtime compilation که به Roslyn وابسته است به صورت پیشفرض حذف شده از NET Core 3.0 ولی با افزودن یه پکیج و یه متد توی سرویس ها میتونین فعال اش کنین

🔸قالب جدیدی به نام Worker Service
توی تپملیت پروژه های قابل ایجاد، یه قالب جدیدی اضافه شده به نام Worker Service که توسط اون میتونین وظایف پس زمینه طولانی (long-running) رو انجام بدین که توی ویندوز، توسط Windows Service و توی لینوکس توسط Linux Daemon انجام میشه

🔹قالب پروژه Angular به Angular 7 اپدیت شد
به زودی و پیش از انتشار نسخه نهایی ASP NET Core ، این قالب به Angular 8 آپدیت خواهد شد

🔸امکان احراز هویت در قالب پروژه های SPA مانند Angular و React
امکان احراز هویت توسط Identity Server انجام میشه ولی با اضافه شدن یه سری اکسنشن متد، طرز کار باهاش خیلی ساده تر میشه و از این پس میتونین به راحتی توی پروژه های Angular تون ازش استفاده کنین
بازم بهتره نمونه کدش رو توی لینک ماکروسافت ببینین

🔹امکان استفاده از SignalR با Endpoint Routing
قابلیت Endpoint Routing که توضیحش مفصله و مزایای زیادی (که یکیش پرفرمنسی) هست رو داره. مزیت دیگه ای که اینجا به دردمون میخوره اینه که به جای اینکه شما Routing هاتون رو برای MVC، RazorPages و SignalR سر جاهای خاص خودشون و جدا از هم تعریف کنین، توسط این قابلیت میتونین، یکجا و درکنار هم دیگه تعریفشون کنین که خب مدیریتش رو هم ساده تر میکنه. مثال :
app.UseRouting(routes =>
{
routes.MapRazorPages();
routes.MapHub<ChatHub>("hubs/chat");
});
🔸اضافه شدن قابلیت Long Polling به SDK کلاینتی SignalR واسه Java
تعریفش معلومه دیگه... توضیح نمیخواد

🔹اضافه شدن قالب پروژه gRPC
این قالب امکان ایجاد سرویس های gRPC را توسط یک فریمورک gRPC را فراهم میکنه. خود gRPC یک فریمورک remote procedure call یا به اختصار RPC هست که با همکاری گوگل ساخته شده است
در کل خودمم از این قسمت چیز زیادی سردر نیاوردم. اگه کسی بلده، لطفا تقلب برسونه :دی

جهت اطلاعات بیشتر لینک زیر رو مطالعه کنین
https://devblogs.microsoft.com/aspnet/asp-net-core-updates-in-net-core-3-0-preview-3/
________________
@IranaAspMvc
#پست_مجدد این پست تا به حال نزدیک به ۸۸۰ بار مشاهده شده و به نظر می‌رسد برای خوانندگان جدید کانال جذاب باشد.
Forwarded from Software Philosophy
تقویم شمسی برای Xamarin

اگر با زمرین برنامه‌های موبایل به زبان فارسی تولید می‌کنید حتما هنگام استفاده از کنترل تاریخ با پیچیدگی‌های تقویم شخصی دست و پنجه نرم‌ کرده‌اید.

کنترل BitDatePicker که نحوه استفاده از آن در مقاله زیر توضیح داده‌شده‌است ویژگی‌های خیلی جذابی دارد که احتمالا تجربه کار شما با Xamarin را شیرین‌تر می‌کند. امکانات این کنترل عبارتند از:

• پشتیبانی از تمامی Calendar System هایی که noda time ساپورت می‌کند؛ اعم از شمسی، قمری، میلادی و ...
• پشتیبانی از تمامی Locale هایی که net. پشتیبانی می‌کند؛ اعم از فارسی، عربی، انگلیسی و ...
• قابلیت ارائه Template سفارشی شده برای UI
• سازگار شده با MVVM


https://www.dotnettips.info/post/2955/%D8%AA%D9%82%D9%88%DB%8C%D9%85-%D8%B4%D9%85%D8%B3%DB%8C-%D8%AF%D8%B1-xamarin-forms

⁉️ برای بحث و تبادل نظر فنی در مورد این پست، بر روی لینک زیر کلیک کنید:

https://ow.ly/npYc30nopkk

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

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


___
#پست_مجدد این پست تا به حال نزدیک به ۱۰۰۰ بار مشاهده شده و به نظر می‌رسد برای خوانندگان جدید کانال جذاب باشد.
Forwarded from Software Philosophy
در هر زبان و کتابخانه‌ی ابتدا باید با دقت ساختار پروژه خود را بچینیم تا در میانه راه لازم نباشد تغییرات خانه‌برانداز! روی ساختار پروژه اعمال کنیم.
در مورد react باید تصمیم بگیریم چه قطعه کدهایی قرار است component باشند. چه اطلاعاتی لازم است درstate نگهداری شوند و مسائل دیگری که ممکن است فقط خاص react نباشند.
در این مقاله یک دید جامع در مورد نحوه چیدن ساختار پروژه react به شما داده می‌شود.

https://www.graph.uk/insights/react-best-practices

#مریم_کمالی (https://ow.ly/9Wa430mFGeK)

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

___
Forwarded from Iran Agile
🔵 استفاده از OKR در سطح یک کشور

چندسالی هست که در کشور برای هر سال یک اسم یا شعار داریم. مثلا شعار امسال “رونق تولید” هست. از نظر من این فکر یا پرکتیس شعار فکر بسیار خوب و مترقی است و حتما مشاورانی هستند که به این نتیجه رسیده و اجرا می کنند، اما در عمل این روش خوب اجرا نمی شود. شاید همان مشاوران که ایده اینکار را داده‌اند، فکر خوبی داشتند ولی در عمل و دنیای واقعی نتیجه قابل توجهی از این پرکتیس دیده نمی شود.

حالا چرا این فکر خوبی هست؟
وقتی اندازه سازمان شما بزرگ باشد، وقتی اجزای سازمان با هم هماهنگ نباشند و … این هدف گذاری اختیاری نیست، بلکه مجبور به این کار هستید.

اصولا داشتن یک هدف، باعث ایجاد انسجام در سازمانهای مختلف بشود. همانند داخل یک سازمان، که معاونت و بخش های مختلف دچار فرهنگ سیلو می‌شوند، یعنی بخشی نگری را به کل نگری ترجیح می‌دهند و صرفا به فکر این هستند که گروه یا بخش آنها منافع بیشتری داشته باشد، حتی به قیمت ضرر کل سازمان. اما وجود یک هدف بالا دستی، باعث می‌شود این بخش‌های مختلف هماهنگ برای رسیدن کار کنند. همین بخشی نگری و فرهنگ سیلو را می‌توان بین وزارت خانه ها و ادارات و … مختلف دید، که عملا پاس کاری بین هم دارند و معمولا کسی مسوولیت را برعهده نمی گیرد.

چرا این پرکتیس خوب اجرا نمی شود یا تاثیر آنچنانی ندارد؟
داشتم فکر میکردم، دقیقا برای همین میتوانستند از روش OKR استفاده کنند.

1- یکی از مشکلات اصلی این پرکتیس این هست که خوب، چه زمانی می‌فهمیم ما رونق تولید داشتیم؟ یعنی خیلی ساده نتایج کلیدی آن چه باید باشد که ما درک کنیم که رسیدیم به این هدف یا نه؟ همین در پرکتیس OKR با عنوان Key Result شناخته می شود.
مثلا وقتی این تعداد شغل ایجاد شد؟ یا تولید ناخالص ملی اینقدر افزایش یافت؟ یا …

نتایج کلیدی حتما باید قابل سنجش و کمی باشند و بتوان نتایج را در هر لحظه درک کرد.
2- شاید یکی از دوستان دست اندرکار بگوید، ما نتایج رو معلوم کردیم، شما خبر ندارید… خوب خود این عیب اساسی است، در پرکتیس OKR اصل شفافیت بسیار مهم هست، یعنی خود هدف، نتایج کلیدی و اینکه چقدر ما به آن رسیدیم حتما باید برای همه شفاف باشد.
چرا همه؟ چون همه باید برای رسیدن به آن کمک کنند.

3- آیا ما در بازه های زمانی کوتاه نتایج بدست آمده را پایش کردیم؟ حداقل به نظر شخصی خودم نه. یا حداقل پارسال نسبت به هدف تعیین شده ما گزارش مشخصی ندیدیم. در پرکتیس OKR شما باید در بازه‌های زمانی کوتاه و در آخر دوره (مثلا سه ماه) نتایج رو بررسی و در صورت نیاز اقداماتی انجام بدهید. بخصوص در آخر دوره یک بررسی اساسی انجام می شود و درس آموخته های آن برای دوره های بعدی مورد استفاده قرار می گیرد.

توصیه به دست اندرکاران و مشاوران حوزه مربوطه (البته حتما همه دوستان استاد استراتژی و … هستند) این هست، خیلی ساده می توانند از پرکتیس ساده‌ای مثل OKR ایده‌هایی بگیرند و در راستای پیشرفت کشور اقدامات موثرتری انجام بدهند.

https://blog.scrum.ir/2019/04/okr-for-government

@iranagile
و بالاخره 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


___
Forwarded from Moien Tajik 💭
زمان مبحث خیلی بزرگ و پیچیده ای هست و اکثر ما تو ساخت بیشتر برنامه ها جوانب مختلفش رو نمیبینیم.

مواردی مثل UTC و Unix TIme و Offset و Leap و خیلی چیزای دیگه رو بدرستی نمیشناسیم.

فرق Instant و Duration و Interval و Period رو درست نمیدونیم. 🤷🏻‍♂️

بدون توجه به دونستن بعضی از این موارد میایم تاریخ هارو ذخیره میکنیم ، به هم تبدیل میکنم ، بهشون زمان های دیگه رو اضافه و کم میکنیم ; در حالی که همین کارهای بنظر ساده میتونن مشکل ساز بشن. ⚠️

بعنوان مثال اینکه اول به یک تاریخ ،ابتدا 3 روز و بعد 1 ماه اضافه کنیم و اینکه به همون تاریخ ، اول 1 ماه و بعد 3 روز اضافه کنیم باعث بوجود آمدن 2 تاریخ متفاوت میشه و نتایج یکسان نیست.

نمونه مثال در #C :

using NodaTime;

var start = new LocalDateTime(2017, 1, 27, 9, 0, 0);

var end1 = start + (Period.FromDays(3) + Period.FromMonths(1));

var end2 = (start + Period.FromDays(3)) + Period.FromMonths(1);

〰️〰️〰️

وقتی میگیم 1 ماه ، منظورمون 31 روز ، 30 روز یا 29 روزه ؟ سال های کبیسه تو تاریخ ها چطور محاسبه میشن ؟ جلو و عقب رفتن ساعت تو 6 ماه اول و دوم اونم فقط تو بعضی کشورها چطور حساب میشه ⁉️

این ها همه مباحثی هستن که موقع کار با زمان باید در نظر گرفته بشه. Reference های زیادی برای یادگیری این موارد هست و Library های زیادی مخصوص هر زبان براشون نوشته شده.

دوتا از این Reference ها رو میزارم که بهترینش کنفرانس Jon Skeet هست : kutt.it/time


و رفرنس بعدی ، این سوال در Stackoverflow هست که جواب های زیاد و کاملی از افراد مختلف گرفته :

https://stackoverflow.com/q/2532729/6661314
Forwarded from DotNetZoom (محمد جواد ابراهیمی)
🔰 یه نکته :
در مورد async فقط عملیات IO bound بهتره async بشن و اگه عملیات CPU bound رو async کنیم، عملا اون ازاد شدن ترد جاری رو نخواهیم داشت
حالا عملیات IO bound فقط میشن کار با Network و HDD و Database که بازم میشه همون هارد
نکته ای که وجود داره اینه که کلاس هایی متد MemoryStream که عملا فقط توی حافظه رم دیتا رو میریزند و می خونند، عملا متد های async شون، async واقعی نیستند و عملیات به صورت sync انجام میشه و نهایتا یه completed Task بازگردونده میشه. در واقع نه تنها هیچ منفعتی نداره بلکه یه سربار اضافی و غیر لازم هم داره

حالا دلیل اینکه پس چرا متد های async رو هم بهشون اضافه کردند، به خاطر اینه که کلاس MemoryStream از Stream ارث بری میکنه و چون توی اون کلاس متد های async وجود داره پس توی اینم پیاده سازی شده صرفا واسه یک دست بودن (والبته اکثر کلاس های Stream ایی عملیات های IO Bound دارن مثل FileStream و...)

https://stackoverflow.com/a/20805616
https://stackoverflow.com/a/47283540
___________
@IranAspMvc
#پست_مجدد این پست تا به حال نزدیک به ۴۰۰۰ بار مشاهده شده و به نظر می‌رسد برای خوانندگان جدید کانال جذاب باشد.
Forwarded from Software Philosophy
خداحافظی با خطای میلیون دلاری: NullReferenceException

پس تغییر جنجالی C# 8.0، یعنی اضافه شدن امکان Nullable Reference Types، دیگر متغییرهای Reference Type مقدار نال قبول نخواند کرد مگر نوعشان Nullable باشد.
‍‍‍‍‍‍```
Person p = null; // ERROR
Person? P = null; // OK
string s = null; //ERROR
string? s = null; OK
اینکه این ویژگی فعال باشد یا نه از طریق تنظیمات پروژه قابل تنظیم است.
این تغییر باعث می‌شود این خطای معروف از بین برود. از طرفی پروژه‌هایی که از قبل نوشته شده‌اند نیاز به تغییرات دارند. فرانک کروگر یکی از برنامه‌نویسانی است که یکی از برنامه‌های خود را کامل بازنویسی کرده و تجربیات خود را د به اشتراک گذاشته است. جدا از اینکه تجربیاتش بسیار خواندی هستند، در حین تبدیل به چالش‌هایی برخورده که نتیجه یکی از آنها پیشنهاد اضافه کردن var? به C# بوده که نتیجه‌گیری و کاربرد جالبی است.

https://praeclarum.org/2018/12/17/nullable-reference-types.html

⁉️ برای بحث و تبادل نظر فنی در مورد این پست، بر روی لینک زیر کلیک کنید:

https://ow.ly/paMV30nGBdD

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

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

___
Forwarded from tehran marketing school
دوره جدید تحلیلی بر شخصیت من


مناسب برای تمامی کسانی که می‌خواهند با شناخت بهتر خود، راه موفقیت بیشتر در کسب و کار و زندگی را پیدا کنند.

۲۴ ساعت آموزش

📞 برای ثبت نام و اطلاعات بیشتر میتوانید با شماره زیر تماس بگیرید:
02188677808

و یا به اینستاگرام زیر پیام دهید👇
https://www.instagram.com/tehranmarketing_school/

🔸مکان برگزاری کلاس ها, تهران, محدوده میدان ونک است


@tehran_marketing
روانشناسی برای بیزنس - تحلیلی بر شخصیت من

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

این مفاهیم در دنیای استارتاپ‌ها و تیم‌های برنامه‌نویسی خیلی کاربردی هستن و می‌تونه تاثیر زیادی روی موفقیت کسب و کار بذاره.

حالا مدرسه بازاریابی تصمیم گرفته دوباره این دوره رو برگزار کنه و اولین جلسش ۴ اردیبهشت شروع می‌شه. توصیه می‌کنم اگر می‌خواهید روابط بیزنسی موفق‌تری در تیمتون داشته باشین حتما شرکت کنید.

https://www.instagram.com/tehranmarketing_school/

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

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


___
#پست_مجدد این پست تا به حال نزدیک به ۱۴۰۰ بار مشاهده شده و به نظر می‌رسد برای خوانندگان جدید کانال جذاب باشد.
Forwarded from Software Philosophy
این روزها همه در مورد react صحبت می‌کنند و برنامه‌نویسان زیادی دوست دارند آن را یاد بگیرند اما سوالی که برای اکثر ما مطرح است این است که برای یادگیری react اول چه چیزهایی را باید بلد باشیم. این مقاله به شکلی بسیار گویا توضیح می‌دهد، برای اینکه در react استاد شوید چه مسیری را باید طی کنید.

https://github.com/adam-golab/react-developer-roadmap?utm_source=mybridge&utm_medium=blog&utm_campaign=read_more

#مریم_کمالی (https://ow.ly/9Wa430mFGeK)

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

___
توسعه دهندگان در ارتباط با 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


#شهریار_انتظام (https://ow.ly/qDN430nPiCg)

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

___