کدهک
1.93K subscribers
1.3K photos
7 videos
1 file
675 links
آموزشگاه تخصصی دات نت

https://codehaks.com

لینکدین :
https://www.linkedin.com/in/codehaks

یوتیوب:
https://www.youtube.com/@codehaksfa

ارتباط با مدیر :
Admin: @codehak
Email: ghods.hakim@hotmail.com
call: 09380146555
Download Telegram
منظور از Undefined Behavior اجرای عمیاتی است که در زبان برنامه نویسی نتیجه ی آن تعریف نشده است.

رفتار بعضی از زبانهای برنامه نویسی از جمله ++C و C در بعضی موارد تعریف نشده است که معمولا به باگ و حفره های امنیتی منجر میشود.

مثلا در زبان C وقتی اندیس بزرگتر از ابعاد ارایه خوانده میشود رفتار برنامه تعریف نشده است. فرض کامپایلر این است که چنین کدهایی هیچوقت نوشته نمی شوند!

رفتارهای تعریف نشده یکی از عوامل اصلی مشکلات امنیتی در سیستم عامل ها نیز هست از آنجا که برای پیاده سازی سیستم عامل از C و ++C استفاده شده است.
در دات نت اشیایی که کمتر از 85 کیلوبایت باشند در Small Object Heap ذخیره میشوند.

در SOH اطلاعات به صورت منظم و پشت سر هم ذخیره میشوند و برای تخصیص حافظه ی اشیای جدید از Next Object Pointer استفاده میشود که موقعیت جاری حافظه را در خود نگه میدارد.

وقتی در Garbage Collection حافظه ی یک شی مانند Object B پاکسازی میشود عملیات فشرده سازی روی SOH انجام میشود تا اشیای AوC کنار هم قرار گیرند و موقعیت NOP در محل جدید بدست آید.

عملیات فشرده سازی در SOH باعث کاهش پرفورمنس میشود همچنین کار کتابخانه هایی که با زبانهای Unmanaged مثل ++C نوشته شده اند را مخطل میکند. چون در زبان ++C محل حافظه قابل جابجایی خوکار نیست. به همین دلیل در #C کلمه ی کلیدی fixed جهت پین کردن حافظه استفاده میشود.

پین کردن حافظه از جابجا شدن آن توسط GC جلوگیری میکند و در کوتاه مدت پرفورمنس را افزایش میدهد. اما اگر برای مدت طولانی به کار گرفته شود در حافظه حفره های خالی ایجاد میکند و ممکن است به کرش کردن یا کاهش شدید پرفورمنس منجر شود.
Forwarded from کدهک
روش کار اپراتور "??" در سی شارپ

اگر متغیر سمت چپ اپراتور مقدار داشته باشد برگردانده میشود و اگر نال باشد مقدار سمت راست برگردانده میشود.
در نسخه ی 16.1 از ویژوال استودیو که به تازگی منتشر شده همه ی افزونه ها به صورت Async بارگذاری میشوند تا سرعت بالا آمدن VS افزایش پیدا کند.

ممکن است این تغییر باعث شود بعضی از افزونه های قدیمی دیگر کار نکنند. جهت حل مشکل می توانید تنظیمات ویژوال استودیو را مطابق تصویر تغییر دهید.
آیا زبانی که امروز با آن کدنویسی می کنید 10 سال آینده هم کاربرد خواهد داشت؟
Anonymous Poll
72%
بله
28%
خیر
قابلیت داینامیک تایپ در سی شارپ

زبانهای برنامه نویسی به دو دسته ی Static Type و Dynamic Type تقسیم میشوند. سی شارپ یک زبان Static Type است و باید نوع متغیرهای در زمان کامپایل تعریف شده باشد. در مقابل javascript یک زبان داینامیک تایپ است و نیاز به تعریف نوع متغیرها پیش از اجرا ندارد.

بعضی از زبانهای برنامه نویسی دارای قابلیتی هستند به نام Gradual Typing که امکان میدهد در زمان نیاز از Static Type به Dynamic Type تغییر وضعیت داد.

در سی شارپ میتوان با استفاده از کلمه ی کلیدی dynamic به حالت dynamic type سویچ کرد و بدون تعریف نوع متغیر کامپایل برنامه نویسی کرد.
قابلیت داینامیک سی شارپ در نسخه ی 4.0 اضافه شد و خیلی زود مورد استفاده قرار گرفت.

زبان برنامه نویسی IronPython با استفاده ی کتابخانه Dynamic Language Runtime دات نت و به طور کامل با سی شارپ پیاده شده است و امکان برنامه نویسی دات نت در زبان پایتون را فراهم میکند.

وقتی در ASP NET با ViewBag کار می کنید در حال استفاده از اشیای dynamic سی شارپ هستید.
Forwarded from برنامه نویس
سلام.

امشب یک دوستی در یکی از گروه های برنامه نویسی چنین سوالی مطرح کرد:

سلام . یه سوال از دوستان صاحب سبک . اگه بخاین به یه برنامه نویس جوان با توجه به تجربه خودتون یه نصیحتی کنین . مثلا اینکه طی دوره کاری چه کاری انجام بده چه کاری رو انجام نده یا چه کاری رو کی بهتره انجام بده . یا هرچی که خودتون صلاح میدونین . اون چیه ؟ خیلی عالی اگه منت بزارین و تجربه خودتون رو برای من و بقیه اشتراک بزارین .🙏

و این هم پاسخ من بعنوان یکی از اولین نفرات فعال در زمینه برنامه نویسی در ایران:

۱ و ۲ و ۳:
زبان انگلیسی ات رو کامل کامل کن. در هر ۴ مهارت گفتار، شنیدار، خواندن و نوشتن.
۴: مهارت ات رو در رشته مورد نظرت(بنا بر آنچه که تقاضا براش زیاده) تا بی نهایت افزایش بده.
۵: در پروژه های اوپن سورس مشارکت کن. بخصوص خارجی. اینطوری راحت بهت پیشنهاد کار میشه و درآمد دلاری پیدا می کنی‌.
۶: زیر بار حرف زور هیچ کس نرو. بعدا پشیمون میشی.
۷: وقتی درآمدت خوب شد سعی کن دچار سندرم تازه به دوران رسیده ها نشی. پس انداز کن. خونه و ماشین بخر. برای آینده ات سرمایه گذاری کن (به هر شکل ممکن).
۸: هیچ وقت در یادگیری توقف نکن و همیشه به روز باش.

#مهدی_کرامتی
@barnamenevis_net
@barnamenevis_org
Forwarded from کدهک
چگونه سی شارپ از نظر سرعت با ++C و Go رقابت میکند؟ چگونه وب سرور سریع بسازیم؟ نگاهی به تکنیکهای مقایسه رشته ها در دات نت

https://goo.gl/zjZJdf
یادگیری زبان دوم همیشه آسانتر از زبان اول است. دانش برنامه نویسی از زبانی به زبان دیگر منتقل میشود. الگوریتم های مرتب سازی و دیزاین پترنها همه جا یکسان هستند. اما وقتی روی یک پروژه ی واقعی کار می کنید فقط با یک متد یا یک الگوریتم سروکار ندارید. سوال اینجاست که آیا می شود به راحتی از یک زبان به زبان دیگر مهاجرت کرد؟



https://tinyurl.com/chks-new-lang
دوره کامل آموزش ASP NET Core

فروش مجموعه ی 28 ساعت آموزش تخصصی از مقدماتی تا پیشرفته به همراه یک سال اشتراک ویژه کدهک

https://tinyurl.com/bahar98
Forwarded from کدهک
چرا یونیتی بجای ++C از سی شارپ استفاده می کند؟
چطور یک وب سرور سریع با سی شارپ بسازیم؟
برنامه نویسی برداری چیست؟
https://goo.gl/5dYn7p
در زبان #C اینترفیسی به نام IDisposable وجود دارد که برای خالی کردن منابع مورد استفاده قرار میگیرد. تنها زمانی باید این اینترفیس را پیاده کنید که کلاس شما مستقیما با منابع مدیریت نشده کار می کند.

در دات نت عملیات های زیادی وجود دارد که برای اجرای آنها باید به سیستم عامل مراجعه کرد. مثلا زمانی که نیاز به خواندن یک فایل دارید هرچند یکی از دستورات دات نت را صدا می زنید اما در پس زمینه دات نت یکی از API های ویندوز را اجرا می کند. این API ها معمولا با C یا ++C نوشته شده اند و کد مدیریت شده به حساب نمی آیند.

برای پاکسازی خودکار حافظه ی مدیریت نشده بهترین روش استفاده از بلاک Using است.

وقتی یک منبع مدیریت نشده مثل فایل یا فونت را در محدوده ی Using قرار می دهید در آخر بلاک به دات نت اعلام می کنید که می تواند حافظه این بخش را پاک کند. در این حالت دات نت متد Dispose را صدا می زند و حافظه ی "مدیریت نشده" را مدیریت می کند.
Forwarded from برنامه نویس
💰 کد تخفیف 60% ویژه ثبت نام در سطح 3 دوره آموزش ASP.NET Core به مناسبت عید سعید فطر

به مناسبت عید فرخنده فطر، امکان ثبت نام در دوره های آموزشی ویدئویی ASP.NET Core سطح 3 با 60% تخفیف فراهم می باشد.

توجه: سطح 3 دوره آموزش ویدئویی ASP.NET Core در حال برگزاری می باشد و مابقی ویدئوهای دوره تا زمان انقضای کد تخفیف (جمعه 24 خرداد 98) در سایت قرار داده خواهد شد.

کد تخفیف: CoreL3
قابل استفاده برای ثبت نام 30 نفر
تاریخ انقضای کد تخفیف: جمعه 24 خرداد 1398 ساعت 12 شب

تنها محدودیت استفاده از این کد تخفیف این است که کاربران قبل از اقدام به استفاده از این کد تخفیف برای ثبت نام میبایست در حساب کاربری خود شماره موبایل شان را افزوده، و آدرس ایمیل شان را تایید کرده باشند. انجام این مراحل از طریق صفحه "مدیریت حساب کاربری" در کمتر از 1 دقیقه قابل انجام است.


مشخصات و سرفصل ها در صفحات مربوط به دوره ها قابل مشاهده می باشد:

barnamenevis.net/Home/Course/11?آموزش-ویدئویی-ASP.NET-Core-2.2-سطح-3

جهت اطلاع از کدهای تخفیف های بعدی در کانال ویژه سایت آموزش برنامه نویس عضو شوید:
@barnamenevis_net

https://barnamenevis.net
Forwarded from کدهک
چرا ASP NET Core را انتخاب کنیم؟

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

https://bit.ly/2J69i9R
فرق Concurrent با Parallel

برنامه نویسی Concurrent :

در این حالت دو یا چند عملیات را به صورت "همزمان" انجام میدهیم. منظور از همزمانی این است که عملیات ها ممکن است با هم شروع شوند و باهم به اتمام برسند اما لزوما در یک لحظه اجرا نمی شوند.
مثلا شما نمی توانید همزمان با غذا خوردن سوت بزنید.اما می توانید این دو کار را کنار هم انجام دهید!

برنامه نویسی Parallel :

در برنامه نویسی "موازی" ما چند کار را به صورت همزمان انجام میدهیم. این نوع برنامه نویسی فقط روی پردازنده های چند هسته ای ممکن است چون هر هسته در هر لحظه فقط می تواند یک خط کد را اجرا کند.

در پردازنده های تک هسته ای فقط امکان اجرای Concurrent وجود دارد.

اگر پردازنده چند هسته ای باشد برنامه ی Concurrent می تواند از هسته های مختلف کمک بگیرد اما لزوما به آنها احتیاج ندارد.
ویدیو :

آشنایی با کلمه ی کلیدی yield در سی شارپ

https://tinyurl.com/cdhks-yield
آشنایی با LiteDB

دیتابیس LiteDB از سیستم دخیره سازی Document استفاده میکند و به صورت متن باز توسعه داده میشود.

این دیتابیس از نظر دستورات و روش کار شباهت زیادی به MongoDB دارد ولی ساده تر و سبکتر است و بدون نیاز به سرور کار میکند. می توانید از LiteDB به صورت embed استفاده کنید. برای استفاده از این دیتابیس نیاز به Entity Framework یا ORM دیگری ندارید.

یکی از قابلیت های اصلی این دیتابیس امکان ذخیره سازی فایل است. در LiteDB بخش ویژه ای برای آپلود و دانلود فایل گنجانده شده که کار کردن با فایلها را ساده میکند. می توانید از LiteDB در کنار دیتابیس SQL Server برای مدیریت فایلها استفاده کنید.

پروژه دمو مدیریت فایل با LiteDB در ASP NET Core

https://tinyurl.com/cdhks-litedb
Forwarded from برنامه نویس
🔈 ضمن عرض تشکر از استقبال گسترده مخاطبین گرامی از دوره های آموزش ویدئویی ارائه شده توسط برنامه نویس، به اطلاع می رساند ظرفیت ثبت نام با استفاده از کدهای تخفیف قبلی اعلام شده برای دوره های ASP.NET MVC و ASP.NET Core به پایان رسیده است.

به جهت قدردانی از استقبال شما، کد تخفیف 50% جدیدی جهت ثبت نام در دوره های مذکور به شرح زیر تعریف شده و آماده استفاده است:

میزان تخفیف: 50%
کد تخفیف: Khordad98
فرصت استفاده تا: جمعه 31 خرداد 98، ساعت 12 شب
تعداد نفرات مجاز برای ثبت نام: 30 نفر

دوره های قابل ثبت نام با استفاده کد تخفیف فوق به شرح زیر می باشند:
آموزش ویدئویی ASP.NET Core 2.2 - سطح 1
آموزش ویدئویی ASP.NET Core 2.2 - سطح 2
آموزش ویدئویی ASP.NET Core 2.2 - سطح 3
آموزش ویدئویی ASP.NET MVC - سطح 1
کیت توسعه نرم افزار (SDK) + آموزش ویدئویی Permission Control System در ASP.NET MVC

#تخفیف
#برنامه_نویس
#دانلود
#پکیج
#ویدئوی_آموزشی

@barnamenevis_net
@barnamenevis_org
در این ویدیو 4 روش مختلف استخراج و فیلتر کردن داده های دیتابیس با استفاده از LINQ و Entity framework بررسی می کنیم و آنها را از نظر کارایی مقایسه می کنیم.

قصد داریم با استفاده از Expression Tree ها و Extension Method ها کدهای بهتری بنویسیم.

https://tinyurl.com/cdhks-linq-q