دسته بندی: برنامه نویسی - صفحه ۱

تفاوت Value type و Reference type

طبق انواع DataType های زبان C# دو تا از مهمترین اونا Value type ها و Reference typeها هستند که با نحوه ذخیره سازی در حافظه تفاوت پیدا میکنند. به طوری که Value Typeها در Stack ذخیره میشوند ولی Reference Typeها در Stack و Heap. اما یعنی چی؟

 

 

بذارید یه چیزی رو تعریف کنم، رفته بودم برای مصاحبه و ازم پرسیدند که فرق بین Value type و Reference type در زبان C# چیه منم که جمله بالا رو خوب تو ذهنم بود سریع گفتم و با مثال زدن Struct و Class تفاوت هارو گفتم ولی در عمل ازم خواستند تا مثالی رو حل کنم ولی خب نتونستم جواب بدم. خیلی برام جالب شد و رفتم اساسی راجع بهش خوندم و به نتایجی رسیدم که دیدم حیفه اینجا به اشتراک نذارم.

قوانین SOLID

مفهوم S.O.L.I.D در برنامه نویسی موضوعیه که دونستنش برای هر برنامه نویسی خیلی مهمه جوری که شیوه نوشتن کدهاتون رو کاملاً تغییر میده. در جلوتر مثال‌های حل شده با زبان C# هست اما نگران نباشید تمامی این قواعد رو میتوانید برای هر زبانی که مفاهیم اصلی شی گرایی را دارد، استفاده نمایید.


چرا باید مفاهیم S.O.L.I.D. رو یاد بگیریم؟

چیزی که این وسط برای همه پیش میاد اینه که میگن من مفاهیم شی گرایی رو بلدم و دیگه نیازی به قواعد S.O.L.I.D. ندارم که یاد بگیرم. بذارید این دو مسئله رو از هم جدا کنیم. اگه بخوام یه مثال ساده بزنم، برای یادگیری و استفاده از هر دو مسئله اینه که شما تمام ابزارهای چوب بری رو در اختیار داشته باشی و بگی که خب نیازی نیست که علم چوب بری هم یاد بگیرم.
با یادگیری برنامه نویسی شئ گرا، در حقیقت یاد میگیرد که چطوری از کلاس ها استفاده کنید، چگونه برای یک کلاس خصوصیت تعریف کنیم و...، اما اینکه بتونیم از این قابلیت‌ها در مسیر درست استفاده کنیم داستان فرق میکنه.
S.O.L.I.D. در واقع یک چهارچوب منظم رو برای ما ایجاد میکنه که مکمل شی گرایی است و با حرکت در این مسیر میتوانیم کدهای بهینه تری بنویسیم.

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

SOLID مخفف پنج عبارته زیر است:

1) S: Single Responsibility Principle
2) O: Open/Closed Principle
3) L: Liskov Substitution Principle
4) I: Interface Segregation Principle
5) D: Dependency Inversion Principle

تغییر اندازه عکس به همراه افزودن لوگو در دات نت

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

 

 

در مسئله ای که پیش رو داشتم وقتی تعداد عکسها زیاد بود به مشکل پر شدن RAM برخورد کردم و با استفاده از کتابخانه‌ای که در ادامه معرفی کردم و یکمی سفارشی سازی، مشکل را حل کردم.

 

تبدیل اول کلمه‌ها به حروف برزگ در SQL Server

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

declare @test nvarchar(max)
select @test = dbo.ProperCase(N'Amin''S mcHouse')
select @test as test 

خروجی:

Amin's McHouse

تبدیل اعداد انگلیسی به فارسی و برعکس در JS

بعضی وقتها در طراحی صفحات وب برای شما پیش میاد که شما باید اعدادی را نمایش دهید که تبدیل آنها در سمت سرور امکان پذیر نباشد.

به طور مثال وقتی که میخواهید یه سبد خریدی که در سمت کاربر (Client) را پیاده سازی کنید در این حالت شما هم به مقدار عددی به صورت انگلیسی نیاز دارید و هم میخواهید اعداد را به صورت فارسی نمایش دهید.

 

برای انجام این کار کافیست دو متدی که ادامه مطلب هست را در کدهای جاوا اسکریپت انتهایی صفحه اضافه کنید. هر دو متد ورودی به صورت رشته دریافت کرده و به صورت رشته آن را به شما برمیگرداند.

console.log(convertNumbers2English("۷۸۹")) //نمایش به صورت 789
console.log(convertNumbers2English("123")) //نمایش به صورت ۱۲۳

امین محمدی

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