i ++ – Telegram
80 subscribers
55 photos
15 videos
17 files
61 links
Yourself ++
Download Telegram
#SOLID
#code
#clean_code
یه مروری بکنیم روی اصول SOLID که بسی مهم و کاربردیه توی کد زدن:)


Single-Responsibility Principle
هر کلاس یا ماژول فقط و فقط یک دلیل برای تغییر باشد داشته باشه. یعنی هر کلاس تنها مسئول یک و فقط یک کار هست و سعی کنه اون کار رو خوب انجام بده:)
فایده‌هایی که داره:‌ کد رو ماژولار میکنه و بخش‌های مختلف رو جدا می‌کنه از هم و دیباگ رو هم حتی راحت تر میکنه. تست پذیری بسی بهتر میشه و در نهایت تغییر یک قسمت از یک کد تاثیر روی بقیه کد نمیذاره.
پس هر جا دیدیم یه کلاسی داره دو تا یا چند تا کار رو با هم انجام میده خیلی سریع میشکنیمش به چند تا کلاس:))

Open-Closed Principle
میگه که open for extensions but close for modifications. وقتی کدی میزنیم باید بتونیم رفتار کد رو گسترش بدیم بدون اینکه تغییری در کد‌های موجود بدیم. یعنی در واقع فیچر ها رو با اضافه کردن کد و کلاس‌های جدید بدیم نه اینکه با تغییر کد و کلاس‌های قبلی.
اینطور کد زدن کد رو استیبل تر نگه‌میداره و قابل پیش‌بینی تر و احتمال ایجاد باگ رو کمتر میکنه. مثلا ایفمالیزیشن کد زدن باعث میشه کدمون open-close نباشه و برای اضافه کردن یه شرط جدید، هربار باید اون ایفمالیزیشن رو عوضش کرد.


Liskov Substitution Principle
این اصل میگه فرزند‌ها باید بتونن جایگزین پدر‌ها بشن!!!:))
درد واقع هر شی فرعی یا فرزند باید بتونه بجای نمونه‌ای از نوع پایه خود بدون تاثیر بر صحت برنامه، استفاده بشه. این اصل ما رو مطمئن می‌کنه وقتی که داریم با نوع شئ های مختلفی کار می‌کنیم، رفتار کد تغییری نکنه. برای رعایت این اصل، همیشه باید مطمئن بشیم که هر کلااس فرزند، رفتاری شبیه پدرش داره. (توضیحش سخته ولی همینه تقریبا:) )
فایده‌هایی که داره: maintainable, flexibility, scalability, robustness

Interface Segregation Principle
یک کلاس نباید مجبور باشه اینترفیسی پیاده‌سازی کنه که استفاده نمی‌کنه. یک کلاس باید فقط اینترفیسی پیاده‌سازی کنه که نیاز داره و داره ازش استفاده می‌کنه.
باعث میشه وابستگی و کاپلنیگ توی کد کم بشه. بس اینترفیس‌هایی هم که استفاده می‌کنیم ممکنه شکسته بشه و به چند تا اینترفیس تبدیل بشه. لذا خوبه که سعی کنیم اینترفیس‌های کوچیکی تعریف کنیم.
خوبی های زیادی هم داره دیگه:))
عوض کردن رفتار یه کلاس تاثیری دیگه نمیذاره روی بقیه کلاس‌ها و رفتار‌ها و میدونیم دقیقا کجا رو باید تغییر بدیم برا یه کلاس

Dependency Inversion Principle

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

یه سری لینک که می‌تونه کمک کنه کلا تو این زمینه:
لینک ۱
لینک ۲
لینک ۳
اینم یه نمونه کد که تو سه تا فایل بررسی کرده. اصلا اصول رعایت نشده، رعایت نشده، رعایت شده:))
1🔥1
#linux
#copy
#paste
#terminal
#xsel

بالاخره یکی یه راه قشنگ گفت برا کار کردن تو ترمینال با کلیپبرد:)

لینک

پ ن: این داشمون هم عالیه... یه جورایی جادی خارجیاس:)
🔥1👨‍💻1
#تجربه
#تدریس



اگه یه روز خواستم تدریس کنم.... ده ها روش تدریس دیدم که نباید اونطوری باشم:))
یه لیستی از باید ها و نباید ها تو درس دادن و یاد دادن میخوام بنویسم (آپدیت میشه به مرور) :))

1. به هیچ وجه تن صدای ثابتی نباید داشت... ملت خوابشون میبره
2. شدیدا نیازه انرژی بذاری... تدریس بدون انرژی به درد عمه گرامی هم نمیخوره:)
3. زبون مخاطب ها رو بفهم و با زبون خودشون بهشون درس بده
4. هیچوقت مثال رو هوا نزن! اگه مثال میزنی دقیق باشه مثالا که کامل حس بده... تو خود مثال، مثال نباشه باز! :))
5. امممم مممم ااااااا کردن ممنوع:))
6. شدیدا تسلط کافی و لازم روی مبحث نیازه و با گچ و تخته و تابلو برا حس دادن به مخاطب استفاده بشه
7. اگه کد زدن داره مبحث شده چند خط کد زده بشه که کامل ملت حس بگیرن نسبت به کار و ترسشون بریزه:)
8. اسلاید خالی و کد خالی توضیح دادن و رد شدن و فقط خوندن از روش... تدریس نکنی سنگین تره
9. تجربه های عملی از چیزی ک درس میدی داشته باشی و بگی به ملت... باید مخاطب بفهمه چیزی ک دداره میخونه به درد میخوره و به چه دردایی میخوره:))
10. اهمیت بده به سوال ملت... بحث کن و قانع کن اگه بلدی:)
11. مفهوم یاد بده نه نمونه:)
12. فقط درس خالی نده... هر از گاهی تجربه بگو... مثال بزن... از شکست ها و پیروزی ها بگو... حتی شعر بخون و از رمان هایی ک خوندی صحبت کن:)
#directx
#gpu

Microsoft DirectX
is a collection of application programming interfaces (APIs) for handling tasks related to multimedia, especially game programming and video, on Microsoft platforms. Originally, the names of these APIs all began with "Direct", such as Direct3D, DirectDraw, DirectMusic, DirectPlay, DirectSound, and so forth. The name DirectX was coined as a shorthand term for all of these APIs (the X standing in for the particular API names) and soon became the name of the collection. When Microsoft later set out to develop a gaming console, the X was used as the basis of the name Xbox to indicate that the console was based on DirectX technology.[3] The X initial has been carried forward in the naming of APIs designed for the Xbox such as XInput and the Cross-platform Audio Creation Tool (XACT), while the DirectX pattern has been continued for Windows APIs such as Direct2D and DirectWrite.
#کتاب
#رمان
#چشمهایش
#بزرگ_علوی

خب تموم شد اینم:)
چند تا کلید واژه بگم ازش برا خودم:
چشم، فرنگیس، استاد ماکان، نقاشی، فرنگ، ایران، زندان، سرهنگ آرام، درد، مبارزه، سیاست،...

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

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

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


ولی خب حداقل یه بار خوندنش میتونه جذاب باشه... :)


"این چشم ها مال من نیست... "
👍21🔥1
#کتاب
#رشد
#العصر
#صفایی‌حائری
#ع_ص

کتاب رشد
از علی صفایی حائری

کتاب یه تفسیر از سوره عصر هست که خب با یه رویکرد جدید و دید تازه به قضیه نگاه کرده و حرفای تازه ای داره برای تشنه‌ها:)

کتاب با رشد و تکامل شروع میشه. یه عمری فکر میکردم که رشد کردن یه جورایی هدفیه که آدم باید بدوعه دنبالش و به این رسیده بودم، یعنی همون نوید ++:) ولی یه نکته جالب و جدیدی که تو این کتاب بهش بر خوردم این بود که رشد خالی خالی فایده نداره...یعنی درسته که تایید کرده بود رشد کردن هدف هست ولی در چه جهتی؟ در واقع زمانی رشد کردن ارزش داره که در جهتی باشه که اون جهت هم درست‌ترین جهت ممکنه!:) "رشد، رهبری کردن استعداد‌های تکامل یافته است."

حالا اینا رو میاد میذاره کنار شدت عظیم استعداد‌های آدم! آدم رو بینهایت خطاب می‌کنه و راه بینهایتی براش می‌بینه و در عین حال وقت بسی کم!:(

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

حالا وقتی قبول کنی که یه آدم بینهایتی هستی، واضحه که کی ضرر کردی:) وقتی توی همون فرصت کم چند ۱۰ ساله، ازشون استفاده نکنی. پس توی معامله‌ها و بازار‌های زندگی باید بدونی با کی معامله کنی و خودتو (سرمایه‌هاتو) به کی بفروشی و از کی بخری!:)

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


وَالْعَصْرِ ﴿۱﴾
إِنَّ الْإِنْسَانَ لَفِي خُسْرٍ ﴿۲﴾
إِلَّا الَّذِينَ آمَنُوا وَعَمِلُوا الصَّالِحَاتِ وَتَوَاصَوْا بِالْحَقِّ وَتَوَاصَوْا بِالصَّبْرِ ﴿۳﴾

سوگند به عصر (۱)
كه واقعا انسان دستخوش زيان است (۲)
مگر كسانى كه گرويده و كارهاى شايسته كرده و همديگر را به حق سفارش و به شكيبايى توصيه كرده‏ اند (۳)


پ ن: خوندن کتاب کمتر از ۲ ساعت وقت میگیره:)
👍4👏2🤡1
i ++
#کتاب #رشد #العصر #صفایی‌حائری #ع_ص کتاب رشد از علی صفایی حائری کتاب یه تفسیر از سوره عصر هست که خب با یه رویکرد جدید و دید تازه به قضیه نگاه کرده و حرفای تازه ای داره برای تشنه‌ها:) کتاب با رشد و تکامل شروع میشه. یه عمری فکر میکردم که رشد کردن یه جورایی…
#شعر
#سعدی

به جهان خرم از آنم که جهان خرم از اوست
عاشقم بر همه عالم که همه عالم از اوست

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

نه فلک راست مسلم نه ملک را حاصل
آنچه در سر سویدای بنی‌آدم از اوست

به حلاوت بخورم زهر که شاهد ساقیست
به ارادت ببرم درد که درمان هم از اوست

زخم خونینم اگر به نشود به باشد
خنک آن زخم که هر لحظه مرا مرهم از اوست

غم و شادی بر عارف چه تفاوت دارد
ساقیا باده بده شادی آن کاین غم از اوست

پادشاهی و گدایی بر ما یکسان است
که بر این در همه را پشت عبادت خم از اوست

سعدیا گر بکند سیل فنا خانهٔ عمر
دل قوی دار که بنیاد بقا محکم از اوست
❤‍🔥21
#csharp
#dotnet
#aspire

dotnet Aspire

.NET Aspire is an opinionated, cloud ready stack for building observable, production ready, distributed applications.​ .NET Aspire is delivered through a collection of NuGet packages that handle specific cloud-native concerns. Cloud-native apps often consist of small, interconnected pieces or microservices rather than a single, monolithic code base. Cloud-native apps generally consume a large number of services, such as databases, messaging, and caching.

A distributed application is one that uses computational resources across multiple nodes, such as containers running on different hosts. Such nodes must communicate over network boundaries to deliver responses to users. A cloud-native app is a specific type of distributed app that takes full advantage of the scalability, resilience, and manageability of cloud infrastructures.


لینک1

پ ن: عملا کلود ها رو ریخته تو کد:)) بجا اینکه سرویس های مختلفی بیاری بالا و توی کد بیای کانکت بشی بهشون و فلان و بهمان... میای توی کد میگی برام یه دیتابیس بیار بالا و استفاده میکنی ازش:)) و چیزی ک من ازش فهمیدم کلا اورکستریشن رو هم میاره توی لایه کد و خیلی راحت به برنامه نویس اجازه منیج کردنشو میده:) و همچنین :
When added to your Program.cs file, the preceding code handles the following concerns:

OpenTelemetry: Sets up formatted logging, runtime metrics, built-in meters, and tracing for ASP.NET Core, gRPC, and HTTP. For more information, see .NET Aspire telemetry.
Default health checks: Adds default health check endpoints that tools can query to monitor your app. For more information, see .NET app health checks in C#.
Service discovery: Enables service discovery for the app and configures HttpClient accordingly.
🍾1
#oracle
#database
#CDB
#DPB

#part_1
درباره CDBو PDB در Oracle
قسمت اول

A container is a collection of schemas, objects, and related structures in a multitenant container database (CDB). Within a CDB, each container has a unique ID and name.
A CDB includes zero, one, or many customer-created pluggable databases (PDBs) and application containers. A PDB is a portable collection of schemas, schema objects, and nonschema objects that appears to an Oracle Net client as a separate database. An application container is an optional, user-created CDB component that stores data and metadata for one or more application back ends. A CDB includes zero or more application containers.

A PDB is a user-created set of schemas, objects, and related structures that appears logically to a client application as a separate database.
Every PDB is owned by SYS, regardless of which user created the PDB. SYS is a common user in the CDB, which means that this user that has the same identity in the root and in every existing and future PDB within the CDB.

ادامه دارد...(شاید:) )

لینک
لینک