WPF (Windows Presentation Foundation)
ابزار دیگه ای که ازش برای ساخت برنامه های ویندوزی استفاده میکنیم WPF هست
این مورد نسبت به ویندوز فرم به مراتب ساختار بهتر و با کیفیت داره
ویندوز فرم به صورت پیشفرض از کتابخانه های پیش فرض ویندوز مثل GDI+/GDU و مبتنی بر CPU هست ینی از قدرت CPU استفاده میکنه در حالی که WPF از کارت گرافیک(GPU) استفاده میکنه
توی ویندوز فرم دست شما برای تغییرات اساسی رابط کاربری(User Interfacr) خیلی بسته هست و اگر بخواید یه زمانی ساختار ظاهری رو تغییر بدید نیاز دارید که دانش خوبی از لایه های زیرین ویندوز فرم داشته باشید
اما در پروژه های WPF شما از زبان XAML استفاده میکنید. ساختار این زبان مشابه HTML و کلا زبان های Markup Language داره و اگر با این زبان ها کار کرده باشید براتون خیلی آشنا خواهد بود
🧩از لحاظ گرافیکی ویندوز فرم مبتنی بر پیکسل هست و اگر زوم بشه روی مواردی که توی فرم وجود دارن کیفیت خودشون رو از دست میدن در حالی که WPF به صورت Vector-Based یا بر اساس بردار هست و هر چقدر هم که زوم بشه کیفیت روی حالت قبلی خودش ماندگار هست
🎯مزیت بعدی WPF این هستش که شما اگر بخواید به دیتاها دسترسی داشته باشید کار بسیار راحتی دارید چرا که ساختار پروژه به حالتی هست که شما میتونید به راحت ترین حالت ممکن انجام بدید
💡از معماری MVVM استفاده میکنه که شامل بخش های Models،View،ViewModel هست که هر کدوم از این بخش ها عملکرد خاص خودشون رو دارن
🔥1
.NET MAUI(.NET Multi-platform App UI)
تا قبل از معرفی .NET MAUI زامارین فرم وجود داشت اما صرفا قابلیت ساخت برنامه های اندرویدی و IOS وجود داشت اما بزرگترین مشکلی که در آن وجود داشت حجم بالای خروجی بود
از سال 2022 که .NET MAUI معرفی شد با زبان سی شارپ هم میشه برنامه های کراس پلتفرم ساخت . کراس پلتفرم به این معنی هست که شما میتونید یک بار کدنویسی انجام بدید و روی دستگاه های مختلف خروجی بگیرید
یه شعار خیلی جالب هم داره و اونم اینه که:
هر جا که داتنت میرود، MAUI نیز میرود
ساختار پروژه های .NET MAUI به این شکله:
1️⃣کد واحد(Single Codebase):
به این معنی هست که منطق کلی برنامه یا اصطلاحا Bussines Logic، مدل ها و ارتباط(Call) با API همشون یکی هست
2️⃣لایه انتزاعی و کنترل های بومی(Native Controlers):
توی این بخش دقیقا اون کاربر تبدیل انجام میشه
یه چیزی توی این بخش وجود داره به اسم Handler( قبلا با نام Renders شناخته میشد) که بر اساس پلتفرم اون کار رو انجام میده
مثلا وقتی شما یک دکمه ای رو تعریف میکنید هندلر توی محیط های مختلف کارهای مختلفی انجام میده :
توی اندروید تبدیل به یه AppCompatButton میشه، توی IOS تبدیل به یک UIButton میشه و توی ویندوز هم تبدیل به یه WinUI
ینی برای هر کدوم کنترل های مربوط به خودش رو ایجاد و مدیریت میکنه
توی این بخش ابزارها مشترک هستن ینی فرضا شما توی برنامه اندرویدی تون از GPS استفاده کردید یا دسترسی به مخاطبین یا هر قابلیت دیگه ای داشتید حالا از همون توی IOS یا پروژه ویندوزی هم میتونید استفاده کنید
3️⃣معماری پروژه
معماری پروژه ها این شکلی:
📁پوشه Windows,Android,IOS,Mac : این چند تا پوشه کدهایی داخلشون هست که فقط مختص خود همون پروژه هست که اصطلاحا بهش پیادهسازیهای خاص پلتفرم (Platform-Specific Implementations) گفته میشه
📁پوشه Resources:منابع یا فایل هایی که بین پلتفرم ها مشترکه مثل آیکون،فونت،تصاویر،استایل ها و....
📍فایل App.xaml.cs و App.xml: ظاهر کلی برنامه اینجا تعریف میشه و همینطور منطق اولیه برنامه
📍فایل MainPage.xaml و MainPage.xaml.cs : منطق اصلی برنامه اینجا نوشته میشه
و میشه ازش خروجی مناسب هر پلتفرم گرفت
#انواع_پروژه
🔥1
Win UI(Windows UI Library)
احتمالا اسم Win UI رو کمتر شنیدید اما به جرئت یکی از ابزارهای خیلی خوب برای ساخت برنامه های ویندوزی هست که توی سال 2022 به عنوان بخشی از .NET 6 معرفی شد
🛠ابزار Win UI مشابه WPF و MAUI از XAML برای بخش طراحی استفاده میکنه
احتمالا دیگه همه مون از ویندوز 10 استفاده کردیم برنامه های خود ویندوز ساختار متفاوت تری داشتن چرا؟ چون اون ها با UWP یا Universal Windows Platform ساخته شده بودن
و قبلا توی نسخه های قبلی دات نت و ویژوال استودیو این مورد پشتیبانی میشد اما چون استفاده چندانی ازش نمیشد به همین خاطر منسوخ شد
اما مایکروسافت اومد روش یه حرکت زد و Win UI رو به عنوان یه لایه اضافی به UWP اضافه کرد که اونجا با نام Win UI 2.X شناخته میشد
و بعد نسخه 3 Win UI معرفی شد که دیگه نهایتا این ابزار به مرحله Release یا انتشار رسید
و توی ویندوز 11 رسما ازش استفاده شد که نمونش همین اپلیکیشن های پیشفرض ویندوز هست
📒دسترسی به دیتا یا داده ها خیلی راحت تر هست حتی نسبت به WPF و خیلی روند کار رو ساده تر کرده
#انواع_پروژه
شاید سوال شه خب چه منفعتی داره این که من اینجا محتوا منتشر کنم؟
جدا از اینکه میشه دوستان خوبی رو پیدا کرد دلیل دومش اینه وقتی یه چیزی بلدی و به بقیه یاد میدی اون چیزایی که یاد گرفتی توی ذهنت تثبیت میشه و خیلی نسبت به قبل عمیق تر میشی
و از اون طرف هم شاید بخوام حرکات شیطانی در وَکنم💀😂
جدا از اینکه میشه دوستان خوبی رو پیدا کرد دلیل دومش اینه وقتی یه چیزی بلدی و به بقیه یاد میدی اون چیزایی که یاد گرفتی توی ذهنت تثبیت میشه و خیلی نسبت به قبل عمیق تر میشی
و از اون طرف هم شاید بخوام حرکات شیطانی در وَکنم💀😂
😐1
.NET Class Library
کلاس لایبرری یکی از معروف ترین و پر کاربردترین نوع پروژه در سی شارپ هست فرض کنید توی یکی از پروژه هاتون اومدید یه کدی نوشتید و حالا میخواید جاهای دیگه ای هم اضافه اش کنید اگر بخواید عادی این کار رو انجام بدید باید کد ها رو دوباره بنویسید
هدفش چیه؟ یه فایلی ایجاد شه که منطق کلی برنامه رو از UI جدا کنه ینی کلاس ها،متدها و منطق تجاری(Bussines Logic) این چیزا داخلشه
کاربردهاش:
📒جداسازی نگرانی ها(Seperation Concers): مثلا احراز هویت،ارتباط با دیتابیس و... که منطق پیچیده یا Complexity Logic هستن رو از رابط کاربری جدا کنه
⚙️قابلیت استفاده مجدد: خب همونطور که از قبل اشاره کردیم میتونید جاهای مختلف استفاده کنید
مثلا زرین پال برای پروژه هایی که بر اساس دات نت هستن یه Class Library ایجاد کرده و انتشار داده که هر برنامه نویس دات نت میتونه ازش توی هر پروژه ای مثل وین فرم،wpf یا ASP.NET Core استفاده کنه
🔧تولید پکیج های Nuget: شاید شما هم بخواید مثل اکثر پکیج هایی که توی Nuget Package Manger هست کدی که نوشتید رو اونجا قرار بدید در چنین حالتی نوع پروژه شما باید از نوعClass Library باشه
ناگفته نمونه که خروجی Class Library فرمت dll یا Dynamic Library Link هست
#انواع_پروژه
یکی از مشکلاتی که داخل قریب به اکثرمون وجود داره و از جمله خود منم به این مورد دچارم و دارم بهترش میکنم
اینه که فرضا میریم منطق کار رو یاد میگیریم چجوریه اما وقتی میخوایم کد بزنیم متوجه میشیم هیچی بلد نیستیم و حس کمبود اعتماد به نفس میگیریم
ولی شاه کلید درست کردن این موضوع اینه " مهندسی نرم افزار" یاد بگیری
همین درسی که توی کارشناسی نرم افزار میخونیم و بهش بی توجهی میکنیم دقیقا چیزیه که ما باید این درس رو بلعیده باشیم
حالا اگر یکی رشتش کلا نرم افزار نبوده ولی علاقه داشته به برنامه نویسی سر جای خودش ولی اونی که رشتش نرم افزار بوده ازش بعیده همچین درس مهمی بلد نباشه
تو وقتی بیای روی کاغذ بنویسی یا توی هر نرم افزار نوت برداری و ببینی که چی میخوای انجام بدی ساختارش رو بیرون بکشی کارت خیلی راحت میشه
فرضا یه سایتی داری میخوای اول بررسی کنی که نقش کاربر چیه بر اساس اون بره داخل داشبورد
خب میای کار رو در میاری که اول قراره چی انجام بشه:
خب وقتی این شکلی تو بدونی که داری چی کار میکنی انگیزه نمیگیری؟ صد در صد
و بر اساس کاری که میخوای انجام بدی متوجه میشی که باید از if استفاده کنی یا switch و چون میدونی که توی نسخه های قبلی سی شارپ ما فقط میتونستیم روی داده های عددی switch رو اعمال کنیم پس میایم از روش جایگزینش ینی switch expression استفاده میکنیم که با عبارت های lambda چک میکنیم شرط رو و در نهایت بر اساس اون اتفاق نتیجه رو در خروجی نمایش میدیم
پس این جوری خیلی به مراتب راحت تر میشه کار رو جمع کرد
اینه که فرضا میریم منطق کار رو یاد میگیریم چجوریه اما وقتی میخوایم کد بزنیم متوجه میشیم هیچی بلد نیستیم و حس کمبود اعتماد به نفس میگیریم
ولی شاه کلید درست کردن این موضوع اینه " مهندسی نرم افزار" یاد بگیری
همین درسی که توی کارشناسی نرم افزار میخونیم و بهش بی توجهی میکنیم دقیقا چیزیه که ما باید این درس رو بلعیده باشیم
حالا اگر یکی رشتش کلا نرم افزار نبوده ولی علاقه داشته به برنامه نویسی سر جای خودش ولی اونی که رشتش نرم افزار بوده ازش بعیده همچین درس مهمی بلد نباشه
تو وقتی بیای روی کاغذ بنویسی یا توی هر نرم افزار نوت برداری و ببینی که چی میخوای انجام بدی ساختارش رو بیرون بکشی کارت خیلی راحت میشه
فرضا یه سایتی داری میخوای اول بررسی کنی که نقش کاربر چیه بر اساس اون بره داخل داشبورد
خب میای کار رو در میاری که اول قراره چی انجام بشه:
عنوان سناریو: ورود به سیستم (Login)
نقش اصلی: کاربر
پیششرط: کاربر قبلاً در سیستم ثبتنام کرده باشد
جریان اصلی (مراحل انجام کار):
کاربر وارد صفحه ورود میشود.
اطلاعات ورود (نام کاربری و رمز عبور) را وارد میکند.
سیستم اطلاعات را بررسی و تأیید میکند.
سیستم نقش کاربر را بررسی میکند.
اگر نقش کاربر «مدیر» باشد → او را به صفحهی مدیریت هدایت میکند.
اگر نقش کاربر «فروشنده» باشد → وارد داشبورد فروشنده میشود.
اگر نقش کاربر «کاربر عادی» باشد → به صفحهی مخصوص کاربران معمولی میرود.
جریان استثنا (حالات خاص):
اگر رمز عبور اشتباه باشد → پیام خطا نمایش داده میشود.
اگر کاربر غیرفعال باشد → اجازه ورود داده نمیشود.
خب وقتی این شکلی تو بدونی که داری چی کار میکنی انگیزه نمیگیری؟ صد در صد
و بر اساس کاری که میخوای انجام بدی متوجه میشی که باید از if استفاده کنی یا switch و چون میدونی که توی نسخه های قبلی سی شارپ ما فقط میتونستیم روی داده های عددی switch رو اعمال کنیم پس میایم از روش جایگزینش ینی switch expression استفاده میکنیم که با عبارت های lambda چک میکنیم شرط رو و در نهایت بر اساس اون اتفاق نتیجه رو در خروجی نمایش میدیم
پس این جوری خیلی به مراتب راحت تر میشه کار رو جمع کرد
👍2
در مزخرف کد زدن هوش های مصنوعی همین بس که یه کار خیلی ساده رو میپیچونن در حالی که خودت خیلی ساده تر میتونستی موضوع رو حلش کنی
تا وقتی ساختار کلی زبان یا فریم ورک رو بلد نباشی تو هر چی دوست داری بهش بگو فلان کار کنه
حتی اگر به اون درجه ای برسه که بتونه کامل انجام بده هم تو باید اون زبان رو بلد باشی
تا وقتی ساختار کلی زبان یا فریم ورک رو بلد نباشی تو هر چی دوست داری بهش بگو فلان کار کنه
حتی اگر به اون درجه ای برسه که بتونه کامل انجام بده هم تو باید اون زبان رو بلد باشی
Forwarded from DevTwitter | توییت برنامه نویسی
میخوام دو تا از عجیب ترین Http status code هایی که وجود داشته و داره رو بگم
احتمالا درمورد Http Status Code 418 شنیده باشین.
418 (I'm a teapot)
داره میگه من قوری ام! جالب تر از اینکه چرا وجود داره و میگه من قوری ام اینه که به طور رسمی این http status code تو RFC 2324 ثبت شده!
این یکی رسمی نیست اصلا ولی تو Twitter API v1 ازش استفاده شده بود.
420 (Enhance your calm)
برای اینکه بگن آقا زیاد داری درخواست میفرستی از این استفاده میکردن
بعدا چون تو استاندارد نبود تو v1.1 اومدن تبدیلش کردن به 429 (Too many requests).
@DevTwitter | <Ali Valizadeh/>
احتمالا درمورد Http Status Code 418 شنیده باشین.
418 (I'm a teapot)
داره میگه من قوری ام! جالب تر از اینکه چرا وجود داره و میگه من قوری ام اینه که به طور رسمی این http status code تو RFC 2324 ثبت شده!
این یکی رسمی نیست اصلا ولی تو Twitter API v1 ازش استفاده شده بود.
420 (Enhance your calm)
برای اینکه بگن آقا زیاد داری درخواست میفرستی از این استفاده میکردن
بعدا چون تو استاندارد نبود تو v1.1 اومدن تبدیلش کردن به 429 (Too many requests).
@DevTwitter | <Ali Valizadeh/>
یه ویدیو ضبط کردم راجع به لایسنس های مختلف نرم افزاری ( پروژه های اوپن سورس ) و در کنارش دو تا مفهوم Sequence Length و Context Window در هوش مصنوعی
به زودی قرارش میدم توی کانال
این ویدیو در اصل واسه یه دوره آموزش هوش مصنوعی دیپ سیک هست ولی خیلی به کارتون میاد و با انواع لایسنس ها آشنا میشید
به زودی قرارش میدم توی کانال
این ویدیو در اصل واسه یه دوره آموزش هوش مصنوعی دیپ سیک هست ولی خیلی به کارتون میاد و با انواع لایسنس ها آشنا میشید
کانال توسعه دهندگان سی شارپ
https://t.me/hassanrafatjoo
کانال شخصی من میتونید دنبال کنید دوستان
Media is too big
VIEW IN TELEGRAM
آشنایی با مبحث اوپن سورس و لایسنس های نرم افزاری Permissive و Copy-Left
اینجا کامل با مجوزهایی مثل GPL که یکی از معروف ترین ها هست آشنا میشید
اینجا کامل با مجوزهایی مثل GPL که یکی از معروف ترین ها هست آشنا میشید
Forwarded from Linuxor ?
کل علم مهندسی نرم افزار بر پایه تکامل تدریجی و تکرار برای بهبود ساخته شده، یعنی شما یه چیزی میسازین به مرور هی بهتر و سازگار ترش میکنید. (کل شرکت های بزرگ هم همینکارو میکنن)
حالا سوال پیش میآد، یکی میگه من علم مهندسی نرم افزار رو کلا قبول ندارم میخوام یه چیز ابرقهرمان بسازم که تکاملی نباشه و یهویی یه چیز قوی باشه آیا ممکنه؟ جواب بله ممکنه، چون مهندسی نرم افزار الزاما بهینه ترین مسیر رو نرفته یعنی این علمی که داریم الان بهترین مسیرش نیست، ولی اینکه شما بتونید رندوم یه چیز بهینه تر ازش پیدا کنید کار عملا سختیه، ولی ممکنه.
برای مثال یه تیم شاید 10 سال برای تولید یه برنامه آموزش زبان با چت کردن وقت گذاشته باشن و کلی الگوریتم براش نوشته باشن و یه چیز حرفه ای و قابلیت گفتگوی حرفه ای ساخته باشن، اما امروز یه نفر یه هفته ای همین کارو با LLM ها مشابهش رو بسازه. ولی دقت کنید همیشه شانس باهاتون یار نیست و LLM هم ممکنه وجود نداشته باشه.
@Linuxor
حالا سوال پیش میآد، یکی میگه من علم مهندسی نرم افزار رو کلا قبول ندارم میخوام یه چیز ابرقهرمان بسازم که تکاملی نباشه و یهویی یه چیز قوی باشه آیا ممکنه؟ جواب بله ممکنه، چون مهندسی نرم افزار الزاما بهینه ترین مسیر رو نرفته یعنی این علمی که داریم الان بهترین مسیرش نیست، ولی اینکه شما بتونید رندوم یه چیز بهینه تر ازش پیدا کنید کار عملا سختیه، ولی ممکنه.
برای مثال یه تیم شاید 10 سال برای تولید یه برنامه آموزش زبان با چت کردن وقت گذاشته باشن و کلی الگوریتم براش نوشته باشن و یه چیز حرفه ای و قابلیت گفتگوی حرفه ای ساخته باشن، اما امروز یه نفر یه هفته ای همین کارو با LLM ها مشابهش رو بسازه. ولی دقت کنید همیشه شانس باهاتون یار نیست و LLM هم ممکنه وجود نداشته باشه.
@Linuxor
بسیار به خودتون از نظر سلامتی جسمی و ذهنی اهمیت بدید تا دچار فرسودگی ذهنی و شغلی نشید
تا یه جایی ذهن آدم خوب جواب میده
حتما ورزش کنید-خوب بخوابید،تغذیه تون رو بهش اهمیت بدید-کمتر از شبکه های اجتماعی استفاده کنید و سعی کنید بیشتر به لحاظ فنی و مهارت های نرم خودتون رو بهتر کنید
چند روزی هست که واقعا نای کار کردن رو ندارم و زود خسته میشم
هر از چند گاهی یه چکاپ برید تا از وضعیت سلامتی خودتون مطلع بشید
گاهی وقتا زندگی ماشینی خسته کننده تر از چیزی هست که تصورش رو داریم
مراقب خودتون باشید🤍❤️
تا یه جایی ذهن آدم خوب جواب میده
حتما ورزش کنید-خوب بخوابید،تغذیه تون رو بهش اهمیت بدید-کمتر از شبکه های اجتماعی استفاده کنید و سعی کنید بیشتر به لحاظ فنی و مهارت های نرم خودتون رو بهتر کنید
چند روزی هست که واقعا نای کار کردن رو ندارم و زود خسته میشم
هر از چند گاهی یه چکاپ برید تا از وضعیت سلامتی خودتون مطلع بشید
گاهی وقتا زندگی ماشینی خسته کننده تر از چیزی هست که تصورش رو داریم
مراقب خودتون باشید🤍❤️
👍1
استاد دانشگاه شدن واقعا برا بعضی زیاده
معدود درس های دانشگاه توی صنعت به کار میاد صرفا واسه اینه به لحاظ تحلیلی یکمی تفکر ما رو بهتر کنه
معدود درس های دانشگاه توی صنعت به کار میاد صرفا واسه اینه به لحاظ تحلیلی یکمی تفکر ما رو بهتر کنه
وگرنه اکثر دروس هیچ کاربردی ندارن
از ما نمیخوان که براشون مدار منطقی طراحی کنیم
از ما نمیخوان براشون ساختمان گسسته توضیح بدیم
از ما کار واقعی و پروژه میخوان
بازار کار واقعی چالش های صحبت کردن با کارفرما داره،چالش های بحث مالی داره که کارفرما بخواد برای کارش هزینه کنه
بازار کار واقعی نمیگه شما نمره فلان درست چند شدی
تاثیر 100 درصدی توی موضوع نداره
از ما نمیخوان که براشون مدار منطقی طراحی کنیم
از ما نمیخوان براشون ساختمان گسسته توضیح بدیم
از ما کار واقعی و پروژه میخوان
بازار کار واقعی چالش های صحبت کردن با کارفرما داره،چالش های بحث مالی داره که کارفرما بخواد برای کارش هزینه کنه
بازار کار واقعی نمیگه شما نمره فلان درست چند شدی
تاثیر 100 درصدی توی موضوع نداره
Forwarded from آخرین کد نویس
فردا روز بزرگ داتنتیهاست!
مایکروسافت قراره NET 10. رو منتشر کنه 🎉
نسخهای که کلی قابلیت جدید، بهبود عملکرد و آیندهی داتنت رو با خودش میاره 💪
آماده باشید برای شروع یه فصل تازه در دنیای NET. 🔥
مایکروسافت قراره NET 10. رو منتشر کنه 🎉
نسخهای که کلی قابلیت جدید، بهبود عملکرد و آیندهی داتنت رو با خودش میاره 💪
آماده باشید برای شروع یه فصل تازه در دنیای NET. 🔥
❤2😢1
Forwarded from tech-afternoon (Amin Mesbahi)
تا دقایق دیگه، رویداد ۳ روزه NET Conf 2025. شروع میشه و داتنت ۱۰ به صورت رسمی ارائه میشه.
مشاهده زنده رویداد
https://www.dotnetconf.net
💬 اگر دوست داشتید در مورد قابلیتهای مورد انتظار یا حتی مورد نفرتتون 😁 بگید!
مشاهده زنده رویداد
https://www.dotnetconf.net
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1